- User Since
- Apr 24 2016, 5:50 PM (160 w, 3 d)
Apr 2 2019
But MSP430 has interrupts and they are similar to threads in some ways. For example if I need to increment some shared counter, I would like it to be done in a single instruction. That way if some interrupt triggers at the same time it would not corrupt the value, because a single instruction can not be split. I had to use inline assembly to make such kind of counter, because volatile doesn't optimize to a single instruction in debug builds, only in release.
Oct 25 2018
Now looks good, thank you.
Oct 24 2018
I've tested this patch with asan and it found some stack-use-after-scope. Can you please take a look?
Jul 2 2018
Explicit check for __aeabi_lmul
I've added a RUN line in overflow-intrinsic-optimizations.ll test, and it will cause the same exact assertion if tested without the fix. So I think adding another test would be redundant.
Sep 19 2017
ping, please review
Aug 30 2017
Aug 23 2017
Aug 16 2017
Fixed an issue with i8 not being promoted to i16 in case we fall back
Should I add the tests for this change?
Moved the algorithm into SelectionDAG
Added an option to limit the number of operations
Aug 1 2017
Jul 31 2017
Good catch, I accidentally used i8 type instead of i16 and didn't notice, sorry.
The correct code is rather large indeed (27 ops), so I'll add the option, and set the default limit to 12.
Do you need to worry about codesize here? Lowering something like "a * 0x3333" to an inline sequence like this is going to generate a lot of code.
This looks like target-independent code
Jul 30 2017
Jun 28 2017
Jun 23 2017
shall we support only EABI or... 2 different ABIs?
May 31 2017
May 30 2017
MSP430 was fixed, it should pass the tests now.
May 23 2017
I'd just like a test for the -mhwmult command line option as well as the -mattr version.
May 18 2017
May 11 2017
LGTM, thank you @awygle
May 8 2017
Also MSP430_BUILTIN has the same id (93) as AMDGPU_HS
Sorry, I didn't notice this earlier, your previous revision (97399) had hwmult tests, but latest revision (98033) doesn't have them anymore.
May 6 2017
Looks good to me. Will do more tests on a real hardware
May 5 2017
this code produces a lot of warnings:
Apr 25 2017
Removed the comment.
Apr 24 2017
Mar 2 2017
Looks good, Thank you.
Mar 1 2017
Looks like D29916 broke this patch. Also CanLowerReturn should be marked with override to prevent compile warnings.
Feb 17 2017
@asl can you please commit this change?
Feb 4 2017
I can confirm that now it's passing the tests
Sorry, not the vararg test, but this 3 tests:
This new revision is not good. It crashes on CodeGen/MSP430/vararg.ll test.
As I see it, CurrentArgIndex is overloaded with two (or more) tasks, so the code is confusing. Maybe it would be better if CurrentArgIndex was just a counter, and the other conditions can be handled by introducing boolean flags, for example.
Whitespace is gone, thank you.
Also I did some testing: compiled llvm with expensive checks on and address sanitizer, found no issues.
Compiled a non-trivial program and ran it on CC430 MCU, it worked fine.
So this patch LGTM
Sorry for being pedantic, but your new diff adds a lot of trailing spaces to the code.
Feb 2 2017
This change looks good, but I don't have any rights to accept it, sorry. We'll have to wait for aKor to review it, you can try to ask him on irc if you see him.
Jan 24 2017
Dec 5 2016
Nov 30 2016
I don't have access to svn, so please commit it for me.
Nov 28 2016
Added an assertion, and also getting the size in bits from TopHalf directly
Check if types are different before truncate
Nov 27 2016
Nov 7 2016
Oct 27 2016
I didn't make this change in my diff.
I think there is something wrong with the last line in the commit, looks like line ending is missing
Oct 22 2016
If anyone has svn access, please commit.
Added test for thumbv7em (Cortex-M4) target.
Oct 21 2016
Oct 5 2016
Update for API changes.
Aug 27 2016
Rename AllVRegsAllocated to NoVRegs.
Aug 19 2016
Aug 17 2016
Please review this diff.
Aug 13 2016
Updated diff due to API changes.
Jun 19 2016
Jun 11 2016
My thoughts on block renumbering:
- It happens only once per function in common case
- In a rare case when we need some branches to be expanded, block offsets are updated manually in the loop, so blocks are not renumbered
- In extremely rare case when both successors are out of range, only then blocks are renumbered and remeasured.
Jun 6 2016
May 30 2016
Constants are moved inside isInRange function, BlockOffsets is now local and is passed as a reference to other functions, correctBlockOffsets function is merged with measureFunction.
Hi! Any luck getting this diff reviewed? Is there some way I can help?
May 19 2016
please review this change.