mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-13 14:46:53 +00:00
Add trivial optimizations for select instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12317 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9f24a077bd
commit
3d69f46d64
@ -108,6 +108,7 @@ namespace {
|
||||
Instruction *visitSetCondInst(BinaryOperator &I);
|
||||
Instruction *visitShiftInst(ShiftInst &I);
|
||||
Instruction *visitCastInst(CastInst &CI);
|
||||
Instruction *visitSelectInst(SelectInst &CI);
|
||||
Instruction *visitCallInst(CallInst &CI);
|
||||
Instruction *visitInvokeInst(InvokeInst &II);
|
||||
Instruction *visitPHINode(PHINode &PN);
|
||||
@ -1931,6 +1932,20 @@ Instruction *InstCombiner::visitCastInst(CastInst &CI) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
|
||||
if (ConstantBool *C = dyn_cast<ConstantBool>(SI.getCondition()))
|
||||
if (C == ConstantBool::True)
|
||||
return ReplaceInstUsesWith(SI, SI.getTrueValue());
|
||||
else {
|
||||
assert(C == ConstantBool::False);
|
||||
return ReplaceInstUsesWith(SI, SI.getFalseValue());
|
||||
}
|
||||
// Other transformations are possible!
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// CallInst simplification
|
||||
//
|
||||
Instruction *InstCombiner::visitCallInst(CallInst &CI) {
|
||||
|
Loading…
Reference in New Issue
Block a user