- User Since
- May 31 2019, 2:34 AM (85 w, 3 d)
Fri, Jan 15
I remember running into issues where analyzeBranch didn't know about LOL instructions. Thanks for updating it.
Nice and clean 👍🏻
Thu, Jan 14
Merge with if statement below
Wed, Jan 13
Punctuation and check for entry block
Tue, Jan 12
Fix erroneous format of a comment
Mon, Jan 11
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
Fri, Jan 8
LGTM. Have you noticed any performance changes with this?
Thu, Jan 7
Wed, Jan 6
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.
Nov 13 2020
Nov 12 2020
Clean up tests
Check for VPR use rather than predicate, pass VCMP as argument to ReplaceVCMPWithVPT, make nullptr the default VCMP value and remove impossible VPST vase.
Nov 11 2020
Add more tests and check for instructions between the VCMP and VPST that use vpr.
Nov 10 2020
Nov 9 2020
LGTM! Will we need to make similar change for the combination that happens in the LowOverheadLoops pass as well?
Nov 6 2020
Don't merge a VCMP and a preceeding VPST.
Add a check for the VPR def at the VPST.
Nov 2 2020
Clean up the test.
The TP at the end of the name somewhat implies that this is only for tail predication, would it make sense to change t2DoLoopStart to take the extra register?
Oct 30 2020
The code that this change depends on has been reverted so I will close this and re-visit it once those changes have been re-worked.
The code that this change depends on has been reverted so I will delay close this and re-visit it once those changes have been re-worked.
Thanks for the review. I will delay working on this until @dmgreen 's lr patch is in as it affect fix this.
Oct 20 2020
Oct 19 2020
Oct 16 2020
Rebase on top of https://reviews.llvm.org/D89549 and format code.