llvm/test/Transforms/InstCombine/pr27332.ll
David Majnemer a3f79ea75b [InstCombine] Don't transform compares of calls to functions named fabs{f,l,}
InstCombine wants to optimize compares of calls to fabs with zero.
However, we didn't have the necessary legality checking to verify that
the function call had the same behavior as fabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266452 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-15 17:21:03 +00:00

24 lines
666 B
LLVM

; RUN: opt -instcombine -S -o - < %s | FileCheck %s
declare <4 x float> @llvm.fabs.v4f32(<4 x float>)
define <4 x i1> @test1(<4 x float> %V) {
entry:
%abs = call <4 x float> @llvm.fabs.v4f32(<4 x float> %V)
%cmp = fcmp olt <4 x float> %abs, zeroinitializer
ret <4 x i1> %cmp
}
; CHECK-LABEL: define <4 x i1> @test1(
; CHECK: ret <4 x i1> zeroinitializer
declare float @fabsf()
define i1 @test2() {
%call = call float @fabsf()
%cmp = fcmp olt float %call, 0.000000e+00
ret i1 %cmp
}
; CHECK-LABEL: define i1 @test2(
; CHECK: %[[call:.*]] = call float @fabsf()
; CHECK: %[[cmp:.*]] = fcmp olt float %[[call]], 0.000000e+00
; CHECK: ret i1 %[[cmp]]