mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-30 15:10:33 +00:00
Implement "strength reduction" of X <= C and X >= C
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11735 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fb54b2b744
commit
45aaafef49
@ -1369,6 +1369,15 @@ Instruction *InstCombiner::visitSetCondInst(BinaryOperator &I) {
|
||||
if (I.getOpcode() == Instruction::SetLE) // A <= MAX-1 -> A != MAX
|
||||
return BinaryOperator::create(Instruction::SetNE, Op0, AddOne(CI));
|
||||
}
|
||||
|
||||
// If we still have a setle or setge instruction, turn it into the
|
||||
// appropriate setlt or setgt instruction. Since the border cases have
|
||||
// already been handled above, this requires little checking.
|
||||
//
|
||||
if (I.getOpcode() == Instruction::SetLE)
|
||||
return BinaryOperator::create(Instruction::SetLT, Op0, AddOne(CI));
|
||||
if (I.getOpcode() == Instruction::SetGE)
|
||||
return BinaryOperator::create(Instruction::SetGT, Op0, SubOne(CI));
|
||||
}
|
||||
|
||||
// Test to see if the operands of the setcc are casted versions of other
|
||||
|
Loading…
Reference in New Issue
Block a user