Support FNeg in SpeculativeExecution pass

Differential Revision: https://reviews.llvm.org/D61910

llvm-svn: 360692
This commit is contained in:
Cameron McInally 2019-05-14 16:51:18 +00:00
parent 19ae9d010d
commit 7c5c0c9fe5
2 changed files with 17 additions and 2 deletions

View File

@ -240,6 +240,7 @@ static unsigned ComputeSpeculationCost(const Instruction *I,
case Instruction::FMul:
case Instruction::FDiv:
case Instruction::FRem:
case Instruction::FNeg:
case Instruction::ICmp:
case Instruction::FCmp:
return TTI.getUserCost(I);

View File

@ -30,10 +30,10 @@ b:
ret void
}
; CHECK-LABEL: @ifThen_fneg(
; CHECK-LABEL: @ifThen_binary_fneg(
; CHECK: fsub float -0.0
; CHECK: br i1 true
define void @ifThen_fneg() {
define void @ifThen_binary_fneg() {
br i1 true, label %a, label %b
a:
@ -44,6 +44,20 @@ b:
ret void
}
; CHECK-LABEL: @ifThen_unary_fneg(
; CHECK: fneg float
; CHECK: br i1 true
define void @ifThen_unary_fneg() {
br i1 true, label %a, label %b
a:
%x = fneg float undef
br label %b
b:
ret void
}
; CHECK-LABEL: @ifThen_fmul(
; CHECK: fmul
; CHECK: br i1 true