From: Cameron McInally Date: Tue, 14 May 2019 16:51:18 +0000 (+0000) Subject: Support FNeg in SpeculativeExecution pass X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ddde212471a439a16817b717f33300f136ede2af;p=llvm Support FNeg in SpeculativeExecution pass Differential Revision: https://reviews.llvm.org/D61910 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360692 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/SpeculativeExecution.cpp b/lib/Transforms/Scalar/SpeculativeExecution.cpp index 79d2a52b393..f9d027eb4a3 100644 --- a/lib/Transforms/Scalar/SpeculativeExecution.cpp +++ b/lib/Transforms/Scalar/SpeculativeExecution.cpp @@ -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); diff --git a/test/Transforms/SpeculativeExecution/spec-fp.ll b/test/Transforms/SpeculativeExecution/spec-fp.ll index efab8ab704c..181ce3757d4 100644 --- a/test/Transforms/SpeculativeExecution/spec-fp.ll +++ b/test/Transforms/SpeculativeExecution/spec-fp.ll @@ -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