mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 13:11:39 +01:00
77f3549d90
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. llvm-svn: 266452
24 lines
666 B
LLVM
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]]
|