- User Since
- May 31 2019, 2:34 AM (107 w, 6 d)
That makes sense to me. It's worth adding a new node if it will help improve lowering for other instructions too. LGTM!
Mon, Jun 21
Fri, Jun 18
Remove FracBits == ScalarBits - 1 check and add more tests
Thu, Jun 17
Remove !IsUnsigned check and TODO
Wed, Jun 16
Tue, Jun 15
Rename tryFMUL, use isa instead of dyn_cast and add more negative factor tests
Mon, Jun 14
Check if the VDUP operand is constant and do clang-format.
Rebase and check if FracBits == ScalarBits - 1 when not unsigned.
Wed, Jun 9
Looks good to me. It's up to you if you would like to add a comment as mentioned in my reply.
Move to a function, add IsUnsigned check to fp inf, check bitcast element size, remove IEEEdouble(), make sure FracBits <= ScalarBits, add llvm_unreachable, move test file and use arm_aapcs_vfpcc.
Tue, Jun 8
Sweet, looks good.
Wed, Jun 2
May 20 2021
We're go for committing after fixing the little nitpick in the comment :)
Abandoning this for now as the code and logic this is based on has been improved and updated. I'll revisit it if it ends up still being an issue.
Nice correction, LGTM
Apr 29 2021
Mar 25 2021
Nice idea. LGTM
Sorry for not looking at this earlier. It looks like a really good improvement.
Jan 15 2021
I remember running into issues where analyzeBranch didn't know about LOL instructions. Thanks for updating it.
Nice and clean 👍🏻
Jan 14 2021
Merge with if statement below
Jan 13 2021
Punctuation and check for entry block
Jan 12 2021
Fix erroneous format of a comment
Jan 11 2021
Check for new forwards LE branches and address feedback
Thanks for that Sjoerd, I agree with your examples and comments. I have changed the approach back to check for new backwards WLSs as before.
Change the validation approach back to what it was before
Jan 8 2021
LGTM. Have you noticed any performance changes with this?
Jan 7 2021
Jan 6 2021
Use MachineLoopInfo. I have removed the fallthrough fixing test since it seems to be impossible to create the needed fallthrough and keep it as a valid MachineLoop.
Dec 15 2020
Use INITIALIZE_PASS technique
Dec 14 2020
Fix incorrect branch opcodes
Move pass order and add copyright header
Looks good to me!
Dec 10 2020
Dec 8 2020
Rename and move earlier in the pipeline.
Dec 3 2020
Dec 2 2020
Inline canMoveBasicBlock, update BB offsets and make fixFallthrough a lambda.
Use BBUtils to get BB offsets, loop over terminators instead of instructions and other clean-up.
Yeah MBP moves the loop blocks (preheader, body etc.) closer together but unfortunately moves the WLSs branch target above the WLS. So it does some good things but also some bad things. After looking at MBP I thought it would be simpler to make a target pass rather than juggle things around in MBP that could end up affecting other targets.
- I know we don't nest WLSTPs for profitability reasons, but in theory we could. Not sure we need to check this though. But in general my impression is that some more test can be added, but perhaps you were still working on that.
I wasn't sure if it was possible or not, but thought I'd add the checks in there just in case. I'm OK with removing them if they definitely are unnecessary. I'm also working on testing a nested while loop, can you think of any other tests I should add?
- I am wondering if some cost-modeling is required. For example, if the iteration count is very low, would that change things?
That is a good idea. It would be good to get an idea of the cycles saved by converting the while loop into a LOL compared to those needed by the branches that replace fallthrough.
Dec 1 2020
Nov 25 2020
Very nice change, looks good to me.
Nov 20 2020
Nov 19 2020
Fix test ordering. This is an NFC so I will commit with the previous approval.
Nov 18 2020
Nov 17 2020
Use std::any_of and hasVPRUse.
Add another test case and format
Nov 16 2020
Get VPR def when merging across blocks rather than keeping a pointer to the VCMP.