forked from OSchip/llvm-project
Add a new icmp+select optz'n. Also shows off the load(cst) folding added in
r140966. llvm-svn: 140969
This commit is contained in:
parent
9b0f5688b9
commit
99fb091f65
|
@ -482,10 +482,16 @@ Instruction *InstCombiner::visitSelectInstWithICmp(SelectInst &SI,
|
|||
if (SimplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, TD) == TrueVal ||
|
||||
SimplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, TD) == TrueVal)
|
||||
return ReplaceInstUsesWith(SI, FalseVal);
|
||||
if (SimplifyWithOpReplaced(TrueVal, CmpLHS, CmpRHS, TD) == FalseVal ||
|
||||
SimplifyWithOpReplaced(TrueVal, CmpRHS, CmpLHS, TD) == FalseVal)
|
||||
return ReplaceInstUsesWith(SI, FalseVal);
|
||||
} else if (Pred == ICmpInst::ICMP_NE) {
|
||||
if (SimplifyWithOpReplaced(TrueVal, CmpLHS, CmpRHS, TD) == FalseVal ||
|
||||
SimplifyWithOpReplaced(TrueVal, CmpRHS, CmpLHS, TD) == FalseVal)
|
||||
return ReplaceInstUsesWith(SI, TrueVal);
|
||||
if (SimplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, TD) == TrueVal ||
|
||||
SimplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, TD) == TrueVal)
|
||||
return ReplaceInstUsesWith(SI, TrueVal);
|
||||
}
|
||||
|
||||
// NOTE: if we wanted to, this is where to detect integer MIN/MAX
|
||||
|
|
|
@ -799,3 +799,13 @@ define i1 @test60(i32 %x, i1* %y) nounwind {
|
|||
; CHECK: @test60
|
||||
; CHECK: select
|
||||
}
|
||||
|
||||
@glbl = constant i32 10
|
||||
define i32 @test61(i32* %ptr) {
|
||||
%A = load i32* %ptr
|
||||
%B = icmp eq i32* %ptr, @glbl
|
||||
%C = select i1 %B, i32 %A, i32 10
|
||||
ret i32 %C
|
||||
; CHECK: @test61
|
||||
; CHECK: ret i32 10
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue