User Details
- User Since
- Jun 12 2017, 12:15 PM (328 w, 6 d)
Oct 27 2021
Other than inline comments, LGTM.
Aug 26 2021
Jul 20 2021
Jul 9 2021
Jul 7 2021
Do we also need a LIT testcase for this under llvm/test/CodeGen/ARC?
Oct 28 2019
@hiraditya This is very similar to the PartialInlining pass based on PSI that can outline multiple cold regions in a function, something I implemented a couple of years ago. Is there a chance we can merge these two passes into one?
Oct 2 2019
Apr 13 2019
Aug 3 2018
Nov 29 2017
@nemanjai Good eye, but actually there's already an option disable partial inlining somewhere else (options to enable and disable are in different files, go figure). Defined in 'lib/Transforms/IPO/PartialInlining.cpp', called '-disable-partial-inlining'.
Nov 26 2017
Nov 21 2017
- Added new multi-outlined-region testcase.
- Removed unnecessary traces and moved useful ones to 'ifndef NDEBUG' macro.
- Modified/added ORE messages according to suggestions.
- General clean-up using clang-format.
Nov 7 2017
Nov 6 2017
- Added testcase.
- Remove the requirement for a conditional branch as the terminator of the entry block, for multi-region outlining specifically.
Nov 1 2017
Oct 31 2017
Updated based on latest comments. Still missing testcase that I'm working on currently. Will update patch when ready.
Oct 25 2017
Oct 24 2017
Oct 19 2017
Oct 11 2017
- Updated code based on review comments.
- Also added check for candidate region outputs. If cold region has an output (ie. a live exit variable) then we could be blocking some code motion in the caller after it has been outlined.
- Also added code to mark outlined functions/callsites with coldCC.
Oct 10 2017
Oct 5 2017
@trentxintong Hello, this change is actually causing the assert to trigger in 15 SPEC2006 benchmarks on PPC64LE with '-O3 -mcpu=pwr8 -m64 -fprofile-use -flto=thin'. Failures are during the link step.
@trentxintong Hello, this change is actually causing the assert to trigger in 15 SPEC2006 benchmarks on PPC64LE with '-O3 -mcpu=pwr8 -m64 -fprofile-use -flto=thin'. Failures are during the link step.
Oct 4 2017
Add new testcase to make sure plugin-opt is passed to gold linker to enable new pass manager.
Oct 3 2017
Oct 2 2017
Sep 25 2017
Aug 30 2017
- Removed extract element patterns as changes from 'https://reviews.llvm.org/D34032' generate better code in terms of total cycles. Also it catches more cases than the vextractu[hb] instructions, as it's only beneficial when operating on dword[1] of the vector register.
Changed my mind, removed changes related to this comment:
Aug 29 2017
Note that I was able to re-implement Nemanja's suggestion of generalizing the case when both inputs are the same vector because the registers used in code-gen are now consistent. Not sure if it was a real problem that I saw previously, or a transient issue that was fixed with newer levels of LLVM.
- Refactored NFCs to another patch to be committed.
- Made changes to remove restriction on only recognizing shuffles of halfword element 3 (4 in LE mode) when both input vectors are the same vector. That is, we can now recognize all single element shuffles in this situation.
Aug 23 2017
@nemanjai @kbarton I believe the code sequences that 'https://reviews.llvm.org/D34032' generate have equal or less than the number of cycles these 'vextractu[h|b] + mfvsrd' sequences. Also, they are more general and can handle more cases. Therefore I don't think the extract portion of this patch is useful anymore. However, the insertelement patterns are still good to have IMO.
Jul 21 2017
Jun 26 2017
- Added breaks to stop searching for the pattern once I've found a candidate.
- I'll open a separate item to address Nemenja's comments as I will not get a chance to do another enchancement.
Jun 23 2017
Jun 21 2017
- Addressed comments about my comments (grammar, periods, etc).
- Removed irrelevant comments in PPCISelLowering.h
Jun 19 2017
- Added -O0 to LIT tests to test corner case of undef 2nd operand of vector shuffle.
- Refactored VINSERTH code to avoid boolean parameters and return value.
- Merged loops for 2nd operand undefined case and both operands defined.
Jun 15 2017
- Added comments and demangled function names for LIT tests
- Added period to comment
- Fixed issue when one operand of the shufflevector is 'undef', in which case the PPCISDs we generate will use only the defined one.
- Initialize 'Swap' boolean