aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/CmpInstAnalysis.cpp
AgeCommit message (Collapse)AuthorFilesLines
2019-01-19Update the file headers across all of the LLVM projects in the monorepoChandler Carruth1-4/+3
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
2018-12-04[CmpInstAnalysis] fix function signature for ICmp code to predicate; NFCSanjay Patel1-10/+10
The old function underspecified the return type, took an unused parameter, and had a misleading name. llvm-svn: 348292
2018-12-03[CmpInstAnalysis] fix formatting; NFCSanjay Patel1-4/+4
There are potential improvements to the structure of this API raised by D54994, but remove some cosmetic blemishes before making any functional changes. llvm-svn: 348149
2017-09-01[InstCombine][InstSimplify] Teach decomposeBitTestICmp to look through ↵Craig Topper1-3/+10
truncate instructions This patch teaches decomposeBitTestICmp to look through truncate instructions on the input to the compare. If a truncate is found it will now return the pre-truncated Value and appropriately extend the APInt mask. This allows some code to be removed from InstSimplify that was doing this functionality. This allows InstCombine's bit test combining code to match a pre-truncate Value with the same Value appear with an 'and' on another icmp. Or it allows us to combine a truncate to i16 and a truncate to i8. This also required removing the type check from the beginning of getMaskedTypeForICmpPair, but I believe that's ok because we still have to find two values from the input to each icmp that are equal before we'll do any transformation. So the type check was really just serving as an early out. There was one user of decomposeBitTestICmp that didn't want to look through truncates, so I've added a flag to prevent that behavior when necessary. Differential Revision: https://reviews.llvm.org/D37158 llvm-svn: 312382
2017-08-14[InstSimplify] Teach decomposeBitTestICmp to handle non-canonical comparesCraig Topper1-0/+28
This adds support non-canonical compare predicates. InstSimplify can't rely on canonicalization to have occurred. Differential Revision: https://reviews.llvm.org/D36646 llvm-svn: 310893
2017-08-14Recommit r310869, "[InstSimplify][InstCombine] Modify the interface of ↵Craig Topper1-0/+109
decomposeBitTestICmp and use it in the InstSimplify" This recommits r310869, with the moved files and no extra changes. Original commit message: This addresses a fixme in InstSimplify about using decomposeBitTest. This also fixes InstSimplify to handle ugt and ult compares too. I've modified the interface a little to return only the APInt version of the mask that InstSimplify needs. InstCombine now has a small wrapper routine to create a Constant out of it. I've also dropped the returning of 0 since InstSimplify doesn't need that. So InstCombine creates a zero constant itself. I also had to make decomposeBitTest support vectors since InstSimplify needs that. As InstSimplify can't use something from the Transforms library, I've moved the CmpInstAnalysis code to the Analysis library. Differential Revision: https://reviews.llvm.org/D36593 llvm-svn: 310889
2017-08-14Revert r310870 "[InstCombine][InstSimplify] 'git add' two files that moved ↵Craig Topper1-137/+0
in r310869." An extra change crept in here. llvm-svn: 310872
2017-08-14[InstCombine][InstSimplify] 'git add' two files that moved in r310869.Craig Topper1-0/+137
llvm-svn: 310870