32 changes: 8 additions & 24 deletions llvm/test/CodeGen/X86/pr33349.ll
Original file line number Diff line number Diff line change
Expand Up @@ -11,36 +11,28 @@ target triple = "x86_64-unknown-linux-gnu"
; KNL-NEXT: vpslld $31, %xmm0, %xmm0
; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0
; KNL-NEXT: kshiftrw $2, %k0, %k1
; KNL-NEXT: kshiftrw $1, %k1, %k2
; KNL-NEXT: kmovw %k1, %eax
; KNL-NEXT: testb $1, %al
; KNL-NEXT: fld1
; KNL-NEXT: fldz
; KNL-NEXT: fld %st(0)
; KNL-NEXT: fcmovne %st(2), %st
; KNL-NEXT: kmovw %k2, %eax
; KNL-NEXT: testb $1, %al
; KNL-NEXT: testb $2, %al
; KNL-NEXT: fld %st(1)
; KNL-NEXT: fcmovne %st(3), %st
<<<<<<< HEAD
; KNL-NEXT: kmovw %k0, %eax
=======
; KNL-NEXT: kshiftrw $1, %k0, %k1
; KNL-NEXT: kmovw %k1, %eax
>>>>>>> parent of 239ab16ec121 ([X86] combineCMP - attempt to simplify KSHIFTR mask element extractions when just comparing against zero)
; KNL-NEXT: testb $1, %al
; KNL-NEXT: fld %st(2)
; KNL-NEXT: fcmovne %st(4), %st
; KNL-NEXT: kmovw %k0, %eax
; KNL-NEXT: testb $1, %al
; KNL-NEXT: testb $2, %al
; KNL-NEXT: fxch %st(3)
; KNL-NEXT: fcmovne %st(4), %st
; KNL-NEXT: fstp %st(4)
; KNL-NEXT: fxch %st(3)
; KNL-NEXT: fstpt (%rdi)
; KNL-NEXT: fxch %st(1)
; KNL-NEXT: fstpt 10(%rdi)
; KNL-NEXT: fxch %st(1)
; KNL-NEXT: fstpt (%rdi)
; KNL-NEXT: fxch %st(1)
; KNL-NEXT: fstpt 30(%rdi)
; KNL-NEXT: fstpt 20(%rdi)
; KNL-NEXT: vzeroupper
Expand All @@ -51,36 +43,28 @@ target triple = "x86_64-unknown-linux-gnu"
; SKX-NEXT: vpslld $31, %xmm0, %xmm0
; SKX-NEXT: vpmovd2m %xmm0, %k0
; SKX-NEXT: kshiftrb $2, %k0, %k1
; SKX-NEXT: kshiftrb $1, %k1, %k2
; SKX-NEXT: kmovd %k1, %eax
; SKX-NEXT: testb $1, %al
; SKX-NEXT: fld1
; SKX-NEXT: fldz
; SKX-NEXT: fld %st(0)
; SKX-NEXT: fcmovne %st(2), %st
; SKX-NEXT: kmovd %k2, %eax
; SKX-NEXT: testb $1, %al
; SKX-NEXT: testb $2, %al
; SKX-NEXT: fld %st(1)
; SKX-NEXT: fcmovne %st(3), %st
<<<<<<< HEAD
; SKX-NEXT: kmovd %k0, %eax
=======
; SKX-NEXT: kshiftrb $1, %k0, %k1
; SKX-NEXT: kmovd %k1, %eax
>>>>>>> parent of 239ab16ec121 ([X86] combineCMP - attempt to simplify KSHIFTR mask element extractions when just comparing against zero)
; SKX-NEXT: testb $1, %al
; SKX-NEXT: fld %st(2)
; SKX-NEXT: fcmovne %st(4), %st
; SKX-NEXT: kmovd %k0, %eax
; SKX-NEXT: testb $1, %al
; SKX-NEXT: testb $2, %al
; SKX-NEXT: fxch %st(3)
; SKX-NEXT: fcmovne %st(4), %st
; SKX-NEXT: fstp %st(4)
; SKX-NEXT: fxch %st(3)
; SKX-NEXT: fstpt (%rdi)
; SKX-NEXT: fxch %st(1)
; SKX-NEXT: fstpt 10(%rdi)
; SKX-NEXT: fxch %st(1)
; SKX-NEXT: fstpt (%rdi)
; SKX-NEXT: fxch %st(1)
; SKX-NEXT: fstpt 30(%rdi)
; SKX-NEXT: fstpt 20(%rdi)
; SKX-NEXT: retq
Expand Down
19 changes: 2 additions & 17 deletions llvm/test/CodeGen/X86/pr34177.ll
Original file line number Diff line number Diff line change
Expand Up @@ -49,35 +49,20 @@ define void @test(<4 x i64> %a, <4 x x86_fp80> %b, ptr %c) local_unnamed_addr {
; AVX512VL-LABEL: test:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %k0
<<<<<<< HEAD
; AVX512VL-NEXT: kshiftrb $2, %k0, %k1
; AVX512VL-NEXT: kmovd %k0, %eax
; AVX512VL-NEXT: testb $2, %al
=======
; AVX512VL-NEXT: kshiftrb $1, %k0, %k1
; AVX512VL-NEXT: kshiftrb $2, %k0, %k2
; AVX512VL-NEXT: kmovd %k0, %eax
; AVX512VL-NEXT: testb $1, %al
>>>>>>> parent of 239ab16ec121 ([X86] combineCMP - attempt to simplify KSHIFTR mask element extractions when just comparing against zero)
; AVX512VL-NEXT: fld1
; AVX512VL-NEXT: fldz
; AVX512VL-NEXT: fld %st(0)
; AVX512VL-NEXT: fcmovne %st(2), %st
; AVX512VL-NEXT: kmovd %k1, %eax
; AVX512VL-NEXT: testb $1, %al
; AVX512VL-NEXT: fld %st(1)
; AVX512VL-NEXT: fcmovne %st(3), %st
<<<<<<< HEAD
; AVX512VL-NEXT: kmovd %k1, %eax
; AVX512VL-NEXT: testb $2, %al
=======
; AVX512VL-NEXT: kshiftrb $1, %k2, %k0
; AVX512VL-NEXT: kmovd %k0, %eax
; AVX512VL-NEXT: testb $1, %al
>>>>>>> parent of 239ab16ec121 ([X86] combineCMP - attempt to simplify KSHIFTR mask element extractions when just comparing against zero)
; AVX512VL-NEXT: fld %st(2)
; AVX512VL-NEXT: fcmovne %st(4), %st
; AVX512VL-NEXT: kmovd %k2, %eax
; AVX512VL-NEXT: testb $1, %al
; AVX512VL-NEXT: fxch %st(3)
; AVX512VL-NEXT: fcmovne %st(4), %st
Expand All @@ -92,10 +77,10 @@ define void @test(<4 x i64> %a, <4 x x86_fp80> %b, ptr %c) local_unnamed_addr {
; AVX512VL-NEXT: fstpt 10(%rdi)
; AVX512VL-NEXT: fxch %st(1)
; AVX512VL-NEXT: fadd %st, %st(0)
; AVX512VL-NEXT: fstpt (%rdi)
; AVX512VL-NEXT: fadd %st, %st(0)
; AVX512VL-NEXT: fstpt 20(%rdi)
; AVX512VL-NEXT: fadd %st, %st(0)
; AVX512VL-NEXT: fstpt (%rdi)
; AVX512VL-NEXT: fadd %st, %st(0)
; AVX512VL-NEXT: fstpt 60(%rdi)
; AVX512VL-NEXT: fadd %st, %st(0)
; AVX512VL-NEXT: fstpt 40(%rdi)
Expand Down
3 changes: 1 addition & 2 deletions llvm/test/Transforms/Attributor/nofpclass.ll
Original file line number Diff line number Diff line change
Expand Up @@ -600,8 +600,7 @@ define half @assume_fcmp_fabs_with_other_fabs_assume_fallback(half %arg) {
; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR16]]
; CHECK-NEXT: [[UNRELATED_FABS:%.*]] = fcmp oeq half [[FABS]], 0xH0000
; CHECK-NEXT: call void @llvm.assume(i1 noundef [[UNRELATED_FABS]]) #[[ATTR16]]
; CHECK-NEXT: [[IS_SUBNORMAL:%.*]] = fcmp olt half [[FABS]], 0xH0400
; CHECK-NEXT: call void @llvm.assume(i1 noundef [[IS_SUBNORMAL]]) #[[ATTR16]]
; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR16]]
; CHECK-NEXT: call void @extern.use.f16(half nofpclass(nan inf norm) [[ARG]])
; CHECK-NEXT: call void @extern.use.f16(half nofpclass(nan inf nzero sub norm) [[FABS]])
; CHECK-NEXT: ret half [[ARG]]
Expand Down
8 changes: 2 additions & 6 deletions llvm/test/Transforms/InstCombine/fcmp.ll
Original file line number Diff line number Diff line change
Expand Up @@ -718,9 +718,7 @@ define i1 @is_signbit_clear_nonzero(double %x) {

define i1 @is_signbit_set_simplify_zero(double %x) {
; CHECK-LABEL: @is_signbit_set_simplify_zero(
; CHECK-NEXT: [[S:%.*]] = call double @llvm.copysign.f64(double 0.000000e+00, double [[X:%.*]])
; CHECK-NEXT: [[R:%.*]] = fcmp ogt double [[S]], 0.000000e+00
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 false
;
%s = call double @llvm.copysign.f64(double 0.0, double %x)
%r = fcmp ogt double %s, 0.0
Expand All @@ -731,9 +729,7 @@ define i1 @is_signbit_set_simplify_zero(double %x) {

define i1 @is_signbit_set_simplify_nan(double %x) {
; CHECK-LABEL: @is_signbit_set_simplify_nan(
; CHECK-NEXT: [[S:%.*]] = call double @llvm.copysign.f64(double 0xFFFFFFFFFFFFFFFF, double [[X:%.*]])
; CHECK-NEXT: [[R:%.*]] = fcmp ogt double [[S]], 0.000000e+00
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 false
;
%s = call double @llvm.copysign.f64(double 0xffffffffffffffff, double %x)
%r = fcmp ogt double %s, 0.0
Expand Down
12 changes: 4 additions & 8 deletions llvm/test/Transforms/InstCombine/is_fpclass.ll
Original file line number Diff line number Diff line change
Expand Up @@ -2444,8 +2444,7 @@ define <2 x i1> @test_class_fneg_fabs_posinf_negnormal_possubnormal_negzero_nan_

define i1 @test_class_is_zero_nozero_src(float nofpclass(zero) %arg) {
; CHECK-LABEL: @test_class_is_zero_nozero_src(
; CHECK-NEXT: [[CLASS:%.*]] = fcmp oeq float [[ARG:%.*]], 0.000000e+00
; CHECK-NEXT: ret i1 [[CLASS]]
; CHECK-NEXT: ret i1 false
;
%class = call i1 @llvm.is.fpclass.f32(float %arg, i32 96)
ret i1 %class
Expand Down Expand Up @@ -2578,8 +2577,7 @@ define i1 @test_class_is_neginf_or_nopinf_src(float nofpclass(pinf) %arg) {

define i1 @test_class_is_neginf_noninf_src(float nofpclass(ninf) %arg) {
; CHECK-LABEL: @test_class_is_neginf_noninf_src(
; CHECK-NEXT: [[CLASS:%.*]] = fcmp oeq float [[ARG:%.*]], 0xFFF0000000000000
; CHECK-NEXT: ret i1 [[CLASS]]
; CHECK-NEXT: ret i1 false
;
%class = call i1 @llvm.is.fpclass.f32(float %arg, i32 4)
ret i1 %class
Expand All @@ -2604,8 +2602,7 @@ define i1 @test_class_is_posinf_noninf_src(float nofpclass(ninf) %arg) {

define i1 @test_class_is_posinf_nopinf_src(float nofpclass(pinf) %arg) {
; CHECK-LABEL: @test_class_is_posinf_nopinf_src(
; CHECK-NEXT: [[CLASS:%.*]] = fcmp oeq float [[ARG:%.*]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[CLASS]]
; CHECK-NEXT: ret i1 false
;
%class = call i1 @llvm.is.fpclass.f32(float %arg, i32 512)
ret i1 %class
Expand Down Expand Up @@ -2733,8 +2730,7 @@ define i1 @test_class_is_nan_assume_uno(float %x) {
; CHECK-LABEL: @test_class_is_nan_assume_uno(
; CHECK-NEXT: [[ORD:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
; CHECK-NEXT: call void @llvm.assume(i1 [[ORD]])
; CHECK-NEXT: [[CLASS:%.*]] = fcmp uno float [[X]], 0.000000e+00
; CHECK-NEXT: ret i1 [[CLASS]]
; CHECK-NEXT: ret i1 true
;
%ord = fcmp uno float %x, 0.0
call void @llvm.assume(i1 %ord)
Expand Down
126 changes: 114 additions & 12 deletions llvm/test/Transforms/InstSimplify/floating-point-compare.ll
Original file line number Diff line number Diff line change
Expand Up @@ -656,8 +656,7 @@ define i1 @assume_nan_ord(float %x) {
; CHECK-LABEL: @assume_nan_ord(
; CHECK-NEXT: [[UNO:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
; CHECK-NEXT: call void @llvm.assume(i1 [[UNO]])
; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[X]], 1.000000e+00
; CHECK-NEXT: ret i1 [[CMP]]
; CHECK-NEXT: ret i1 false
;
%uno = fcmp uno float %x, 0.0
call void @llvm.assume(i1 %uno)
Expand All @@ -681,8 +680,7 @@ define i1 @assume_nan_uno(float %x) {
; CHECK-LABEL: @assume_nan_uno(
; CHECK-NEXT: [[UNO:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
; CHECK-NEXT: call void @llvm.assume(i1 [[UNO]])
; CHECK-NEXT: [[CMP:%.*]] = fcmp uno float [[X]], 1.000000e+00
; CHECK-NEXT: ret i1 [[CMP]]
; CHECK-NEXT: ret i1 true
;
%uno = fcmp uno float %x, 0.0
call void @llvm.assume(i1 %uno)
Expand Down Expand Up @@ -1525,10 +1523,7 @@ define i1 @fcmp_olt_0_assumed_oge_zero(float %x) {
define i1 @ogt_zero_fabs_select_negone_or_pinf(i1 %cond) {
; CHECK-LABEL: @ogt_zero_fabs_select_negone_or_pinf(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND:%.*]], float -1.000000e+00, float 0x7FF0000000000000
; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[SELECT]])
; CHECK-NEXT: [[ONE:%.*]] = fcmp ogt float [[FABS]], 0.000000e+00
; CHECK-NEXT: ret i1 [[ONE]]
; CHECK-NEXT: ret i1 true
;
entry:
%select = select i1 %cond, float -1.0, float 0x7FF0000000000000
Expand All @@ -1540,10 +1535,7 @@ entry:
define i1 @ogt_zero_fabs_select_one_or_ninf(i1 %cond) {
; CHECK-LABEL: @ogt_zero_fabs_select_one_or_ninf(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND:%.*]], float 1.000000e+00, float 0xFFF0000000000000
; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[SELECT]])
; CHECK-NEXT: [[ONE:%.*]] = fcmp ogt float [[FABS]], 0.000000e+00
; CHECK-NEXT: ret i1 [[ONE]]
; CHECK-NEXT: ret i1 true
;
entry:
%select = select i1 %cond, float 1.0, float 0xFFF0000000000000
Expand All @@ -1552,6 +1544,114 @@ entry:
ret i1 %one
}

; Make sure we recognize fcmp < 0 is recognized as impossible here when simplifying the fcmp
define float @fast_square_must_be_positive_ieee(float %arg, float %arg1) {
; CHECK-LABEL: @fast_square_must_be_positive_ieee(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[I:%.*]] = fmul float [[ARG:%.*]], [[ARG]]
; CHECK-NEXT: [[I2:%.*]] = fmul float [[ARG1:%.*]], [[ARG1]]
; CHECK-NEXT: [[I3:%.*]] = fadd float [[I2]], [[I]]
; CHECK-NEXT: ret float [[I3]]
;
bb:
%i = fmul float %arg, %arg
%i2 = fmul float %arg1, %arg1
%i3 = fadd float %i2, %i
%i4 = fcmp olt float %i3, 0.000000e+00
%i5 = select i1 %i4, float 0.000000e+00, float %i3
ret float %i5
}

; Make sure we recognize fcmp < 0 is recognized as impossible here when simplifying the fcmp
define float @fast_square_must_be_positive_ieee_nnan(float %arg, float %arg1) {
; CHECK-LABEL: @fast_square_must_be_positive_ieee_nnan(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[I:%.*]] = fmul float [[ARG:%.*]], [[ARG]]
; CHECK-NEXT: [[I2:%.*]] = fmul float [[ARG1:%.*]], [[ARG1]]
; CHECK-NEXT: [[I3:%.*]] = fadd float [[I2]], [[I]]
; CHECK-NEXT: ret float [[I3]]
;
bb:
%i = fmul float %arg, %arg
%i2 = fmul float %arg1, %arg1
%i3 = fadd float %i2, %i
%i4 = fcmp nnan olt float %i3, 0.000000e+00
%i5 = select i1 %i4, float 0.000000e+00, float %i3
ret float %i5
}

; Make sure we recognize fcmp < 0 is recognized as impossible here when simplifying the fcmp
define float @fast_square_must_be_positive_daz(float %arg, float %arg1) #0 {
; CHECK-LABEL: @fast_square_must_be_positive_daz(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[I:%.*]] = fmul float [[ARG:%.*]], [[ARG]]
; CHECK-NEXT: [[I2:%.*]] = fmul float [[ARG1:%.*]], [[ARG1]]
; CHECK-NEXT: [[I3:%.*]] = fadd float [[I2]], [[I]]
; CHECK-NEXT: ret float [[I3]]
;
bb:
%i = fmul float %arg, %arg
%i2 = fmul float %arg1, %arg1
%i3 = fadd float %i2, %i
%i4 = fcmp olt float %i3, 0.000000e+00
%i5 = select i1 %i4, float 0.000000e+00, float %i3
ret float %i5
}

; Make sure we recognize fcmp < 0 is recognized as impossible here when simplifying the fcmp
define float @fast_square_must_be_positive_daz_nnan(float %arg, float %arg1) #0 {
; CHECK-LABEL: @fast_square_must_be_positive_daz_nnan(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[I:%.*]] = fmul float [[ARG:%.*]], [[ARG]]
; CHECK-NEXT: [[I2:%.*]] = fmul float [[ARG1:%.*]], [[ARG1]]
; CHECK-NEXT: [[I3:%.*]] = fadd float [[I2]], [[I]]
; CHECK-NEXT: ret float [[I3]]
;
bb:
%i = fmul float %arg, %arg
%i2 = fmul float %arg1, %arg1
%i3 = fadd float %i2, %i
%i4 = fcmp nnan olt float %i3, 0.000000e+00
%i5 = select i1 %i4, float 0.000000e+00, float %i3
ret float %i5
}

; Make the compare to negative constant is folded out
define float @must_be_olt_negative_constant_daz(float %arg, float %arg1) #0 {
; CHECK-LABEL: @must_be_olt_negative_constant_daz(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[I:%.*]] = fmul float [[ARG:%.*]], [[ARG]]
; CHECK-NEXT: [[I2:%.*]] = fmul float [[ARG1:%.*]], [[ARG1]]
; CHECK-NEXT: [[I3:%.*]] = fadd float [[I2]], [[I]]
; CHECK-NEXT: ret float [[I3]]
;
bb:
%i = fmul float %arg, %arg
%i2 = fmul float %arg1, %arg1
%i3 = fadd float %i2, %i
%i4 = fcmp olt float %i3, -1.0
%i5 = select i1 %i4, float 0.000000e+00, float %i3
ret float %i5
}

; Make the compare to negative constant is folded out
define float @must_be_olt_negative_constant_daz_nnan(float %arg, float %arg1) #0 {
; CHECK-LABEL: @must_be_olt_negative_constant_daz_nnan(
; CHECK-NEXT: bb:
; CHECK-NEXT: [[I:%.*]] = fmul float [[ARG:%.*]], [[ARG]]
; CHECK-NEXT: [[I2:%.*]] = fmul float [[ARG1:%.*]], [[ARG1]]
; CHECK-NEXT: [[I3:%.*]] = fadd float [[I2]], [[I]]
; CHECK-NEXT: ret float [[I3]]
;
bb:
%i = fmul float %arg, %arg
%i2 = fmul float %arg1, %arg1
%i3 = fadd float %i2, %i
%i4 = fcmp nnan olt float %i3, -1.0
%i5 = select i1 %i4, float 0.000000e+00, float %i3
ret float %i5
}

declare <2 x double> @llvm.fabs.v2f64(<2 x double>)
declare <2 x float> @llvm.fabs.v2f32(<2 x float>)
declare <2 x float> @llvm.maxnum.v2f32(<2 x float>, <2 x float>)
Expand All @@ -1571,3 +1671,5 @@ declare double @llvm.sqrt.f64(double)
declare double @llvm.copysign.f64(double, double)
declare half @llvm.fabs.f16(half)
declare void @llvm.assume(i1 noundef)

attributes #0 = { "denormal-fp-math"="preserve-sign,preserve-sign" }
38 changes: 7 additions & 31 deletions llvm/test/Transforms/InstSimplify/known-never-infinity.ll
Original file line number Diff line number Diff line change
Expand Up @@ -753,11 +753,7 @@ define i1 @isKnownNeverInfinity_cos(double %x) {
define i1 @isKnownNeverInfinity_log(double %x) {
; CHECK-LABEL: define i1 @isKnownNeverInfinity_log
; CHECK-SAME: (double [[X:%.*]]) {
; CHECK-NEXT: [[X_CLAMP_ZERO:%.*]] = call double @llvm.maxnum.f64(double [[X]], double 0.000000e+00)
; CHECK-NEXT: [[A:%.*]] = fadd ninf double [[X_CLAMP_ZERO]], 1.000000e+00
; CHECK-NEXT: [[E:%.*]] = call double @llvm.log.f64(double [[A]])
; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 true
;
%x.clamp.zero = call double @llvm.maxnum.f64(double %x, double 0.0)
%a = fadd ninf double %x.clamp.zero, 1.0
Expand All @@ -769,10 +765,7 @@ define i1 @isKnownNeverInfinity_log(double %x) {
define i1 @isNotKnownNeverInfinity_log_maybe_negative(double %x) {
; CHECK-LABEL: define i1 @isNotKnownNeverInfinity_log_maybe_negative
; CHECK-SAME: (double [[X:%.*]]) {
; CHECK-NEXT: [[X_NOT_INF:%.*]] = fadd ninf double [[X]], 1.000000e+00
; CHECK-NEXT: [[E:%.*]] = call double @llvm.log.f64(double [[X_NOT_INF]])
; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 true
;

%x.not.inf = fadd ninf double %x, 1.0
Expand Down Expand Up @@ -812,11 +805,7 @@ define i1 @isKnownNeverNegInfinity_log_maybe_0(double %x) {
define i1 @isKnownNeverInfinity_log10(double %x) {
; CHECK-LABEL: define i1 @isKnownNeverInfinity_log10
; CHECK-SAME: (double [[X:%.*]]) {
; CHECK-NEXT: [[X_CLAMP_ZERO:%.*]] = call double @llvm.maxnum.f64(double [[X]], double 0.000000e+00)
; CHECK-NEXT: [[A:%.*]] = fadd ninf double [[X_CLAMP_ZERO]], 1.000000e+00
; CHECK-NEXT: [[E:%.*]] = call double @llvm.log10.f64(double [[A]])
; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 true
;
%x.clamp.zero = call double @llvm.maxnum.f64(double %x, double 0.0)
%a = fadd ninf double %x.clamp.zero, 1.0
Expand All @@ -828,10 +817,7 @@ define i1 @isKnownNeverInfinity_log10(double %x) {
define i1 @isNotKnownNeverInfinity_log10_maybe_negative(double %x) {
; CHECK-LABEL: define i1 @isNotKnownNeverInfinity_log10_maybe_negative
; CHECK-SAME: (double [[X:%.*]]) {
; CHECK-NEXT: [[X_NOT_INF:%.*]] = fadd ninf double [[X]], 1.000000e+00
; CHECK-NEXT: [[E:%.*]] = call double @llvm.log10.f64(double [[X_NOT_INF]])
; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 true
;

%x.not.inf = fadd ninf double %x, 1.0
Expand Down Expand Up @@ -871,11 +857,7 @@ define i1 @isKnownNeverNegInfinity_log10_maybe_0(double %x) {
define i1 @isKnownNeverInfinity_log2(double %x) {
; CHECK-LABEL: define i1 @isKnownNeverInfinity_log2
; CHECK-SAME: (double [[X:%.*]]) {
; CHECK-NEXT: [[X_CLAMP_ZERO:%.*]] = call double @llvm.maxnum.f64(double [[X]], double 0.000000e+00)
; CHECK-NEXT: [[A:%.*]] = fadd ninf double [[X_CLAMP_ZERO]], 1.000000e+00
; CHECK-NEXT: [[E:%.*]] = call double @llvm.log2.f64(double [[A]])
; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 true
;
%x.clamp.zero = call double @llvm.maxnum.f64(double %x, double 0.0)
%a = fadd ninf double %x.clamp.zero, 1.0
Expand All @@ -887,10 +869,7 @@ define i1 @isKnownNeverInfinity_log2(double %x) {
define i1 @isNotKnownNeverInfinity_log2_maybe_negative(double %x) {
; CHECK-LABEL: define i1 @isNotKnownNeverInfinity_log2_maybe_negative
; CHECK-SAME: (double [[X:%.*]]) {
; CHECK-NEXT: [[X_NOT_INF:%.*]] = fadd ninf double [[X]], 1.000000e+00
; CHECK-NEXT: [[E:%.*]] = call double @llvm.log2.f64(double [[X_NOT_INF]])
; CHECK-NEXT: [[R:%.*]] = fcmp une double [[E]], 0x7FF0000000000000
; CHECK-NEXT: ret i1 [[R]]
; CHECK-NEXT: ret i1 true
;

%x.not.inf = fadd ninf double %x, 1.0
Expand Down Expand Up @@ -1057,10 +1036,7 @@ define i1 @not_ninf_fabs_select_nzero_or_pinf(i1 %cond) {
; CHECK-LABEL: define i1 @not_ninf_fabs_select_nzero_or_pinf
; CHECK-SAME: (i1 [[COND:%.*]]) {
; CHECK-NEXT: entry:
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float -0.000000e+00, float 0x7FF0000000000000
; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[SELECT]])
; CHECK-NEXT: [[ONE:%.*]] = fcmp one float [[FABS]], 0xFFF0000000000000
; CHECK-NEXT: ret i1 [[ONE]]
; CHECK-NEXT: ret i1 true
;
entry:
%select = select i1 %cond, float -0.000000e+00, float 0x7FF0000000000000
Expand Down