From c84b48ec29afb4ee4ee313578274694055896f9c Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Sun, 25 Mar 2018 17:48:20 +0000 Subject: [PATCH] [InstSimplify, InstCombine] add/update tests with FP +0.0 vector with undef; NFC llvm-svn: 328455 --- .../InstCombine/X86/X86FsubCmpCombine.ll | 251 +++++++++------------ llvm/test/Transforms/InstCombine/and-fcmp.ll | 213 ++++++++--------- llvm/test/Transforms/InstCombine/fabs.ll | 18 +- llvm/test/Transforms/InstCombine/fast-math.ll | 9 + llvm/test/Transforms/InstCombine/fcmp-special.ll | 47 ++-- llvm/test/Transforms/InstCombine/or-fcmp.ll | 205 +++++++++-------- llvm/test/Transforms/InstSimplify/fast-math.ll | 27 +++ .../InstSimplify/floating-point-arithmetic.ll | 17 +- 8 files changed, 423 insertions(+), 364 deletions(-) diff --git a/llvm/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll b/llvm/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll index 22d7bb2..abb2d840 100644 --- a/llvm/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll +++ b/llvm/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll @@ -5,229 +5,202 @@ define i8 @sub_compare_foldingPD128_safe(<2 x double> %a, <2 x double> %b){ ; CHECK-LABEL: @sub_compare_foldingPD128_safe( -; CHECK-NEXT: entry: ; CHECK-NEXT: [[SUB_SAFE:%.*]] = fsub <2 x double> [[A:%.*]], [[B:%.*]] -; CHECK-NEXT: [[TMP0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[SUB_SAFE]], <2 x double> zeroinitializer, i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i1> [[TMP0]], <2 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[SUB_SAFE]], <2 x double> zeroinitializer, i32 5) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <2 x i1> [[T0]], <2 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.safe = fsub <2 x double> %a, %b - %0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> %sub.safe, <2 x double> zeroinitializer, i32 5) - %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> %sub.safe, <2 x double> zeroinitializer, i32 5) + %t1 = shufflevector <2 x i1> %t0, <2 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } - define i8 @sub_compare_foldingPD128(<2 x double> %a, <2 x double> %b){ ; CHECK-LABEL: @sub_compare_foldingPD128( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[A:%.*]], <2 x double> [[B:%.*]], i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i1> [[TMP0]], <2 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[A:%.*]], <2 x double> [[B:%.*]], i32 5) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <2 x i1> [[T0]], <2 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.i = fsub ninf <2 x double> %a, %b - %0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> %sub.i, <2 x double> zeroinitializer, i32 5) - %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> %sub.i, <2 x double> zeroinitializer, i32 5) + %t1 = shufflevector <2 x i1> %t0, <2 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } +define i8 @sub_compare_foldingPD128_undef_elt(<2 x double> %a, <2 x double> %b){ +; CHECK-LABEL: @sub_compare_foldingPD128_undef_elt( +; CHECK-NEXT: [[SUB_I:%.*]] = fsub ninf <2 x double> [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: [[T0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[SUB_I]], <2 x double> , i32 5) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <2 x i1> [[T0]], <2 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] +; + %sub.i = fsub ninf <2 x double> %a, %b + %t0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> %sub.i, <2 x double> , i32 5) + %t1 = shufflevector <2 x i1> %t0, <2 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 +} define i8 @sub_compare_foldingPD256(<4 x double> %a, <4 x double> %b){ ; CHECK-LABEL: @sub_compare_foldingPD256( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> [[A:%.*]], <4 x double> [[B:%.*]], i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i1> [[TMP0]], <4 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> [[A:%.*]], <4 x double> [[B:%.*]], i32 5) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <4 x i1> [[T0]], <4 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.i1 = fsub ninf <4 x double> %a, %b - %0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> %sub.i1, <4 x double> zeroinitializer, i32 5) - %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> %sub.i1, <4 x double> zeroinitializer, i32 5) + %t1 = shufflevector <4 x i1> %t0, <4 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } - define i8 @sub_compare_foldingPD512(<8 x double> %a, <8 x double> %b){ ; CHECK-LABEL: @sub_compare_foldingPD512( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> [[A:%.*]], <8 x double> [[B:%.*]], i32 11, i32 4) -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x i1> [[TMP0]] to i8 -; CHECK-NEXT: ret i8 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> [[A:%.*]], <8 x double> [[B:%.*]], i32 11, i32 4) +; CHECK-NEXT: [[T1:%.*]] = bitcast <8 x i1> [[T0]] to i8 +; CHECK-NEXT: ret i8 [[T1]] ; -entry: %sub.i2 = fsub ninf <8 x double> %a, %b - %0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> %sub.i2, <8 x double> zeroinitializer, i32 11, i32 4) - %1 = bitcast <8 x i1> %0 to i8 - ret i8 %1 + %t0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> %sub.i2, <8 x double> zeroinitializer, i32 11, i32 4) + %t1 = bitcast <8 x i1> %t0 to i8 + ret i8 %t1 } - define i8 @sub_compare_foldingPS128(<4 x float> %a, <4 x float> %b){ ; CHECK-LABEL: @sub_compare_foldingPS128( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> [[A:%.*]], <4 x float> [[B:%.*]], i32 12) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i1> [[TMP0]], <4 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> [[A:%.*]], <4 x float> [[B:%.*]], i32 12) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <4 x i1> [[T0]], <4 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.i3 = fsub ninf <4 x float> %a, %b - %0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> %sub.i3, <4 x float> zeroinitializer, i32 12) - %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> %sub.i3, <4 x float> zeroinitializer, i32 12) + %t1 = shufflevector <4 x i1> %t0, <4 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } - define i8 @sub_compare_foldingPS256(<8 x float> %a, <8 x float> %b){ ; CHECK-LABEL: @sub_compare_foldingPS256( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> [[A:%.*]], <8 x float> [[B:%.*]], i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x i1> [[TMP0]] to i8 -; CHECK-NEXT: ret i8 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> [[A:%.*]], <8 x float> [[B:%.*]], i32 5) +; CHECK-NEXT: [[T1:%.*]] = bitcast <8 x i1> [[T0]] to i8 +; CHECK-NEXT: ret i8 [[T1]] ; -entry: %sub.i4 = fsub ninf <8 x float> %a, %b - %0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> %sub.i4, <8 x float> zeroinitializer, i32 5) - %1 = bitcast <8 x i1> %0 to i8 - ret i8 %1 + %t0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> %sub.i4, <8 x float> zeroinitializer, i32 5) + %t1 = bitcast <8 x i1> %t0 to i8 + ret i8 %t1 } - define i16 @sub_compare_foldingPS512(<16 x float> %a, <16 x float> %b){ ; CHECK-LABEL: @sub_compare_foldingPS512( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> [[A:%.*]], <16 x float> [[B:%.*]], i32 11, i32 4) -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <16 x i1> [[TMP0]] to i16 -; CHECK-NEXT: ret i16 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> [[A:%.*]], <16 x float> [[B:%.*]], i32 11, i32 4) +; CHECK-NEXT: [[T1:%.*]] = bitcast <16 x i1> [[T0]] to i16 +; CHECK-NEXT: ret i16 [[T1]] ; -entry: %sub.i5 = fsub ninf <16 x float> %a, %b - %0 = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> %sub.i5, <16 x float> zeroinitializer, i32 11, i32 4) - %1 = bitcast <16 x i1> %0 to i16 - ret i16 %1 + %t0 = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> %sub.i5, <16 x float> zeroinitializer, i32 11, i32 4) + %t1 = bitcast <16 x i1> %t0 to i16 + ret i16 %t1 } - - define i8 @sub_compare_folding_swapPD128(<2 x double> %a, <2 x double> %b){ ; CHECK-LABEL: @sub_compare_folding_swapPD128( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[B:%.*]], <2 x double> [[A:%.*]], i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i1> [[TMP0]], <2 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> [[B:%.*]], <2 x double> [[A:%.*]], i32 5) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <2 x i1> [[T0]], <2 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.i = fsub ninf <2 x double> %a, %b - %0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> zeroinitializer, <2 x double> %sub.i, i32 5) - %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double> zeroinitializer, <2 x double> %sub.i, i32 5) + %t1 = shufflevector <2 x i1> %t0, <2 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } - define i8 @sub_compare_folding_swapPD256(<4 x double> %a, <4 x double> %b){ ; CHECK-LABEL: @sub_compare_folding_swapPD256( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> [[B:%.*]], <4 x double> [[A:%.*]], i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i1> [[TMP0]], <4 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> [[B:%.*]], <4 x double> [[A:%.*]], i32 5) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <4 x i1> [[T0]], <4 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.i = fsub ninf <4 x double> %a, %b - %0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> zeroinitializer, <4 x double> %sub.i, i32 5) - %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> zeroinitializer, <4 x double> %sub.i, i32 5) + %t1 = shufflevector <4 x i1> %t0, <4 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } - define i8 @sub_compare_folding_swapPD256_undef(<4 x double> %a, <4 x double> %b) { ; CHECK-LABEL: @sub_compare_folding_swapPD256_undef( -; CHECK-NEXT: entry: ; CHECK-NEXT: [[TMP:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> undef, <4 x double> zeroinitializer, i32 5) -; CHECK-NEXT: [[TMP0:%.*]] = shufflevector <4 x i1> [[TMP]], <4 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x i1> [[TMP0]] to i8 -; CHECK-NEXT: ret i8 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = shufflevector <4 x i1> [[TMP]], <4 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T1:%.*]] = bitcast <8 x i1> [[T0]] to i8 +; CHECK-NEXT: ret i8 [[T1]] ; -entry: %sub.i1 = fsub ninf <4 x double> undef, undef %tmp = call <4 x i1> @llvm.x86.avx512.mask.cmp.pd.256(<4 x double> %sub.i1, <4 x double> zeroinitializer, i32 5) - %0 = shufflevector <4 x i1> %tmp, <4 x i1> zeroinitializer, <8 x i32> - %1 = bitcast <8 x i1> %0 to i8 - ret i8 %1 + %t0 = shufflevector <4 x i1> %tmp, <4 x i1> zeroinitializer, <8 x i32> + %t1 = bitcast <8 x i1> %t0 to i8 + ret i8 %t1 } - define i8 @sub_compare_folding_swapPD512(<8 x double> %a, <8 x double> %b){ ; CHECK-LABEL: @sub_compare_folding_swapPD512( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> [[B:%.*]], <8 x double> [[A:%.*]], i32 11, i32 4) -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x i1> [[TMP0]] to i8 -; CHECK-NEXT: ret i8 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> [[B:%.*]], <8 x double> [[A:%.*]], i32 11, i32 4) +; CHECK-NEXT: [[T1:%.*]] = bitcast <8 x i1> [[T0]] to i8 +; CHECK-NEXT: ret i8 [[T1]] ; -entry: %sub.i = fsub ninf <8 x double> %a, %b - %0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> zeroinitializer, <8 x double> %sub.i, i32 11, i32 4) - %1 = bitcast <8 x i1> %0 to i8 - ret i8 %1 + %t0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> zeroinitializer, <8 x double> %sub.i, i32 11, i32 4) + %t1 = bitcast <8 x i1> %t0 to i8 + ret i8 %t1 } - define i8 @sub_compare_folding_swapPS128(<4 x float> %a, <4 x float> %b){ ; CHECK-LABEL: @sub_compare_folding_swapPS128( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> [[B:%.*]], <4 x float> [[A:%.*]], i32 12) -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i1> [[TMP0]], <4 x i1> zeroinitializer, <8 x i32> -; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i1> [[TMP1]] to i8 -; CHECK-NEXT: ret i8 [[TMP2]] +; CHECK-NEXT: [[T0:%.*]] = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> [[B:%.*]], <4 x float> [[A:%.*]], i32 12) +; CHECK-NEXT: [[T1:%.*]] = shufflevector <4 x i1> [[T0]], <4 x i1> zeroinitializer, <8 x i32> +; CHECK-NEXT: [[T2:%.*]] = bitcast <8 x i1> [[T1]] to i8 +; CHECK-NEXT: ret i8 [[T2]] ; -entry: %sub.i = fsub ninf <4 x float> %a, %b - %0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> zeroinitializer, <4 x float> %sub.i, i32 12) - %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> - %2 = bitcast <8 x i1> %1 to i8 - ret i8 %2 + %t0 = call <4 x i1> @llvm.x86.avx512.mask.cmp.ps.128(<4 x float> zeroinitializer, <4 x float> %sub.i, i32 12) + %t1 = shufflevector <4 x i1> %t0, <4 x i1> zeroinitializer, <8 x i32> + %t2 = bitcast <8 x i1> %t1 to i8 + ret i8 %t2 } - define i8 @sub_compare_folding_swapPS256(<8 x float> %a, <8 x float> %b){ ; CHECK-LABEL: @sub_compare_folding_swapPS256( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> [[B:%.*]], <8 x float> [[A:%.*]], i32 5) -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <8 x i1> [[TMP0]] to i8 -; CHECK-NEXT: ret i8 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> [[B:%.*]], <8 x float> [[A:%.*]], i32 5) +; CHECK-NEXT: [[T1:%.*]] = bitcast <8 x i1> [[T0]] to i8 +; CHECK-NEXT: ret i8 [[T1]] ; -entry: %sub.i = fsub ninf <8 x float> %a, %b - %0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> zeroinitializer, <8 x float> %sub.i, i32 5) - %1 = bitcast <8 x i1> %0 to i8 - ret i8 %1 + %t0 = call <8 x i1> @llvm.x86.avx512.mask.cmp.ps.256(<8 x float> zeroinitializer, <8 x float> %sub.i, i32 5) + %t1 = bitcast <8 x i1> %t0 to i8 + ret i8 %t1 } - define i16 @sub_compare_folding_swapPS512(<16 x float> %a, <16 x float> %b){ ; CHECK-LABEL: @sub_compare_folding_swapPS512( -; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> [[B:%.*]], <16 x float> [[A:%.*]], i32 11, i32 4) -; CHECK-NEXT: [[TMP1:%.*]] = bitcast <16 x i1> [[TMP0]] to i16 -; CHECK-NEXT: ret i16 [[TMP1]] +; CHECK-NEXT: [[T0:%.*]] = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> [[B:%.*]], <16 x float> [[A:%.*]], i32 11, i32 4) +; CHECK-NEXT: [[T1:%.*]] = bitcast <16 x i1> [[T0]] to i16 +; CHECK-NEXT: ret i16 [[T1]] ; -entry: %sub.i = fsub ninf <16 x float> %a, %b - %0 = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> zeroinitializer, <16 x float> %sub.i, i32 11, i32 4) - %1 = bitcast <16 x i1> %0 to i16 - ret i16 %1 + %t0 = call <16 x i1> @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> zeroinitializer, <16 x float> %sub.i, i32 11, i32 4) + %t1 = bitcast <16 x i1> %t0 to i16 + ret i16 %t1 } declare <2 x i1> @llvm.x86.avx512.mask.cmp.pd.128(<2 x double>, <2 x double>, i32) diff --git a/llvm/test/Transforms/InstCombine/and-fcmp.ll b/llvm/test/Transforms/InstCombine/and-fcmp.ll index 7119ac1..d2c1f13 100644 --- a/llvm/test/Transforms/InstCombine/and-fcmp.ll +++ b/llvm/test/Transforms/InstCombine/and-fcmp.ll @@ -3,7 +3,7 @@ define i1 @PR1738(double %x, double %y) { ; CHECK-LABEL: @PR1738( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %x, %y +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp1 = fcmp ord double %x, 0.0 @@ -12,10 +12,21 @@ define i1 @PR1738(double %x, double %y) { ret i1 %and } +define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) { +; CHECK-LABEL: @PR1738_vec_undef( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <2 x double> [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: ret <2 x i1> [[TMP1]] +; + %cmp1 = fcmp ord <2 x double> %x, + %cmp2 = fcmp ord <2 x double> %y, + %or = and <2 x i1> %cmp1, %cmp2 + ret <2 x i1> %or +} + define i1 @PR15737(float %a, double %b) { ; CHECK-LABEL: @PR15737( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float %a, 0.000000e+00 -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %b, 0.000000e+00 +; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00 +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00 ; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP1]] ; CHECK-NEXT: ret i1 [[AND]] ; @@ -27,8 +38,8 @@ define i1 @PR15737(float %a, double %b) { define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) { ; CHECK-LABEL: @t9( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ord <2 x float> %a, zeroinitializer -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> %b, zeroinitializer +; CHECK-NEXT: [[CMP:%.*]] = fcmp ord <2 x float> [[A:%.*]], zeroinitializer +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer ; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]] ; CHECK-NEXT: ret <2 x i1> [[AND]] ; @@ -40,7 +51,7 @@ define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) { define i1 @fcmp_ord_nonzero(float %x, float %y) { ; CHECK-LABEL: @fcmp_ord_nonzero( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float %x, %y +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp1 = fcmp ord float %x, 1.0 @@ -51,7 +62,7 @@ define i1 @fcmp_ord_nonzero(float %x, float %y) { define <3 x i1> @fcmp_ord_nonzero_vec(<3 x float> %x, <3 x float> %y) { ; CHECK-LABEL: @fcmp_ord_nonzero_vec( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <3 x float> %x, %y +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord <3 x float> [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: ret <3 x i1> [[TMP1]] ; %cmp1 = fcmp ord <3 x float> %x, @@ -82,7 +93,7 @@ define i1 @auto_gen_1(double %a, double %b) { define i1 @auto_gen_2(double %a, double %b) { ; CHECK-LABEL: @auto_gen_2( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oeq double %a, %b @@ -113,7 +124,7 @@ define i1 @auto_gen_4(double %a, double %b) { define i1 @auto_gen_5(double %a, double %b) { ; CHECK-LABEL: @auto_gen_5( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ogt double %a, %b @@ -134,7 +145,7 @@ define i1 @auto_gen_6(double %a, double %b) { define i1 @auto_gen_7(double %a, double %b) { ; CHECK-LABEL: @auto_gen_7( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b @@ -145,7 +156,7 @@ define i1 @auto_gen_7(double %a, double %b) { define i1 @auto_gen_8(double %a, double %b) { ; CHECK-LABEL: @auto_gen_8( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b @@ -156,7 +167,7 @@ define i1 @auto_gen_8(double %a, double %b) { define i1 @auto_gen_9(double %a, double %b) { ; CHECK-LABEL: @auto_gen_9( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b @@ -207,7 +218,7 @@ define i1 @auto_gen_13(double %a, double %b) { define i1 @auto_gen_14(double %a, double %b) { ; CHECK-LABEL: @auto_gen_14( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp olt double %a, %b @@ -228,7 +239,7 @@ define i1 @auto_gen_15(double %a, double %b) { define i1 @auto_gen_16(double %a, double %b) { ; CHECK-LABEL: @auto_gen_16( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -249,7 +260,7 @@ define i1 @auto_gen_17(double %a, double %b) { define i1 @auto_gen_18(double %a, double %b) { ; CHECK-LABEL: @auto_gen_18( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -260,7 +271,7 @@ define i1 @auto_gen_18(double %a, double %b) { define i1 @auto_gen_19(double %a, double %b) { ; CHECK-LABEL: @auto_gen_19( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -271,7 +282,7 @@ define i1 @auto_gen_19(double %a, double %b) { define i1 @auto_gen_20(double %a, double %b) { ; CHECK-LABEL: @auto_gen_20( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -302,7 +313,7 @@ define i1 @auto_gen_22(double %a, double %b) { define i1 @auto_gen_23(double %a, double %b) { ; CHECK-LABEL: @auto_gen_23( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -313,7 +324,7 @@ define i1 @auto_gen_23(double %a, double %b) { define i1 @auto_gen_24(double %a, double %b) { ; CHECK-LABEL: @auto_gen_24( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -324,7 +335,7 @@ define i1 @auto_gen_24(double %a, double %b) { define i1 @auto_gen_25(double %a, double %b) { ; CHECK-LABEL: @auto_gen_25( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -335,7 +346,7 @@ define i1 @auto_gen_25(double %a, double %b) { define i1 @auto_gen_26(double %a, double %b) { ; CHECK-LABEL: @auto_gen_26( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -346,7 +357,7 @@ define i1 @auto_gen_26(double %a, double %b) { define i1 @auto_gen_27(double %a, double %b) { ; CHECK-LABEL: @auto_gen_27( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -367,7 +378,7 @@ define i1 @auto_gen_28(double %a, double %b) { define i1 @auto_gen_29(double %a, double %b) { ; CHECK-LABEL: @auto_gen_29( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -378,7 +389,7 @@ define i1 @auto_gen_29(double %a, double %b) { define i1 @auto_gen_30(double %a, double %b) { ; CHECK-LABEL: @auto_gen_30( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -389,7 +400,7 @@ define i1 @auto_gen_30(double %a, double %b) { define i1 @auto_gen_31(double %a, double %b) { ; CHECK-LABEL: @auto_gen_31( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -400,7 +411,7 @@ define i1 @auto_gen_31(double %a, double %b) { define i1 @auto_gen_32(double %a, double %b) { ; CHECK-LABEL: @auto_gen_32( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -411,7 +422,7 @@ define i1 @auto_gen_32(double %a, double %b) { define i1 @auto_gen_33(double %a, double %b) { ; CHECK-LABEL: @auto_gen_33( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -422,7 +433,7 @@ define i1 @auto_gen_33(double %a, double %b) { define i1 @auto_gen_34(double %a, double %b) { ; CHECK-LABEL: @auto_gen_34( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -433,7 +444,7 @@ define i1 @auto_gen_34(double %a, double %b) { define i1 @auto_gen_35(double %a, double %b) { ; CHECK-LABEL: @auto_gen_35( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -454,7 +465,7 @@ define i1 @auto_gen_36(double %a, double %b) { define i1 @auto_gen_37(double %a, double %b) { ; CHECK-LABEL: @auto_gen_37( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -475,7 +486,7 @@ define i1 @auto_gen_38(double %a, double %b) { define i1 @auto_gen_39(double %a, double %b) { ; CHECK-LABEL: @auto_gen_39( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -496,7 +507,7 @@ define i1 @auto_gen_40(double %a, double %b) { define i1 @auto_gen_41(double %a, double %b) { ; CHECK-LABEL: @auto_gen_41( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -517,7 +528,7 @@ define i1 @auto_gen_42(double %a, double %b) { define i1 @auto_gen_43(double %a, double %b) { ; CHECK-LABEL: @auto_gen_43( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -528,7 +539,7 @@ define i1 @auto_gen_43(double %a, double %b) { define i1 @auto_gen_44(double %a, double %b) { ; CHECK-LABEL: @auto_gen_44( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -559,7 +570,7 @@ define i1 @auto_gen_46(double %a, double %b) { define i1 @auto_gen_47(double %a, double %b) { ; CHECK-LABEL: @auto_gen_47( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -570,7 +581,7 @@ define i1 @auto_gen_47(double %a, double %b) { define i1 @auto_gen_48(double %a, double %b) { ; CHECK-LABEL: @auto_gen_48( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -601,7 +612,7 @@ define i1 @auto_gen_50(double %a, double %b) { define i1 @auto_gen_51(double %a, double %b) { ; CHECK-LABEL: @auto_gen_51( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -612,7 +623,7 @@ define i1 @auto_gen_51(double %a, double %b) { define i1 @auto_gen_52(double %a, double %b) { ; CHECK-LABEL: @auto_gen_52( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -623,7 +634,7 @@ define i1 @auto_gen_52(double %a, double %b) { define i1 @auto_gen_53(double %a, double %b) { ; CHECK-LABEL: @auto_gen_53( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -634,7 +645,7 @@ define i1 @auto_gen_53(double %a, double %b) { define i1 @auto_gen_54(double %a, double %b) { ; CHECK-LABEL: @auto_gen_54( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -655,7 +666,7 @@ define i1 @auto_gen_55(double %a, double %b) { define i1 @auto_gen_56(double %a, double %b) { ; CHECK-LABEL: @auto_gen_56( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -666,7 +677,7 @@ define i1 @auto_gen_56(double %a, double %b) { define i1 @auto_gen_57(double %a, double %b) { ; CHECK-LABEL: @auto_gen_57( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -677,7 +688,7 @@ define i1 @auto_gen_57(double %a, double %b) { define i1 @auto_gen_58(double %a, double %b) { ; CHECK-LABEL: @auto_gen_58( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -698,7 +709,7 @@ define i1 @auto_gen_59(double %a, double %b) { define i1 @auto_gen_60(double %a, double %b) { ; CHECK-LABEL: @auto_gen_60( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -709,7 +720,7 @@ define i1 @auto_gen_60(double %a, double %b) { define i1 @auto_gen_61(double %a, double %b) { ; CHECK-LABEL: @auto_gen_61( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -720,7 +731,7 @@ define i1 @auto_gen_61(double %a, double %b) { define i1 @auto_gen_62(double %a, double %b) { ; CHECK-LABEL: @auto_gen_62( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -731,7 +742,7 @@ define i1 @auto_gen_62(double %a, double %b) { define i1 @auto_gen_63(double %a, double %b) { ; CHECK-LABEL: @auto_gen_63( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -742,7 +753,7 @@ define i1 @auto_gen_63(double %a, double %b) { define i1 @auto_gen_64(double %a, double %b) { ; CHECK-LABEL: @auto_gen_64( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -753,7 +764,7 @@ define i1 @auto_gen_64(double %a, double %b) { define i1 @auto_gen_65(double %a, double %b) { ; CHECK-LABEL: @auto_gen_65( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -804,7 +815,7 @@ define i1 @auto_gen_69(double %a, double %b) { define i1 @auto_gen_70(double %a, double %b) { ; CHECK-LABEL: @auto_gen_70( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -815,7 +826,7 @@ define i1 @auto_gen_70(double %a, double %b) { define i1 @auto_gen_71(double %a, double %b) { ; CHECK-LABEL: @auto_gen_71( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -826,7 +837,7 @@ define i1 @auto_gen_71(double %a, double %b) { define i1 @auto_gen_72(double %a, double %b) { ; CHECK-LABEL: @auto_gen_72( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -837,7 +848,7 @@ define i1 @auto_gen_72(double %a, double %b) { define i1 @auto_gen_73(double %a, double %b) { ; CHECK-LABEL: @auto_gen_73( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -848,7 +859,7 @@ define i1 @auto_gen_73(double %a, double %b) { define i1 @auto_gen_74(double %a, double %b) { ; CHECK-LABEL: @auto_gen_74( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -859,7 +870,7 @@ define i1 @auto_gen_74(double %a, double %b) { define i1 @auto_gen_75(double %a, double %b) { ; CHECK-LABEL: @auto_gen_75( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -870,7 +881,7 @@ define i1 @auto_gen_75(double %a, double %b) { define i1 @auto_gen_76(double %a, double %b) { ; CHECK-LABEL: @auto_gen_76( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -881,7 +892,7 @@ define i1 @auto_gen_76(double %a, double %b) { define i1 @auto_gen_77(double %a, double %b) { ; CHECK-LABEL: @auto_gen_77( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -902,7 +913,7 @@ define i1 @auto_gen_78(double %a, double %b) { define i1 @auto_gen_79(double %a, double %b) { ; CHECK-LABEL: @auto_gen_79( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -923,7 +934,7 @@ define i1 @auto_gen_80(double %a, double %b) { define i1 @auto_gen_81(double %a, double %b) { ; CHECK-LABEL: @auto_gen_81( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -934,7 +945,7 @@ define i1 @auto_gen_81(double %a, double %b) { define i1 @auto_gen_82(double %a, double %b) { ; CHECK-LABEL: @auto_gen_82( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -945,7 +956,7 @@ define i1 @auto_gen_82(double %a, double %b) { define i1 @auto_gen_83(double %a, double %b) { ; CHECK-LABEL: @auto_gen_83( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -956,7 +967,7 @@ define i1 @auto_gen_83(double %a, double %b) { define i1 @auto_gen_84(double %a, double %b) { ; CHECK-LABEL: @auto_gen_84( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -967,7 +978,7 @@ define i1 @auto_gen_84(double %a, double %b) { define i1 @auto_gen_85(double %a, double %b) { ; CHECK-LABEL: @auto_gen_85( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -978,7 +989,7 @@ define i1 @auto_gen_85(double %a, double %b) { define i1 @auto_gen_86(double %a, double %b) { ; CHECK-LABEL: @auto_gen_86( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -989,7 +1000,7 @@ define i1 @auto_gen_86(double %a, double %b) { define i1 @auto_gen_87(double %a, double %b) { ; CHECK-LABEL: @auto_gen_87( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -1000,7 +1011,7 @@ define i1 @auto_gen_87(double %a, double %b) { define i1 @auto_gen_88(double %a, double %b) { ; CHECK-LABEL: @auto_gen_88( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -1011,7 +1022,7 @@ define i1 @auto_gen_88(double %a, double %b) { define i1 @auto_gen_89(double %a, double %b) { ; CHECK-LABEL: @auto_gen_89( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -1022,7 +1033,7 @@ define i1 @auto_gen_89(double %a, double %b) { define i1 @auto_gen_90(double %a, double %b) { ; CHECK-LABEL: @auto_gen_90( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -1053,7 +1064,7 @@ define i1 @auto_gen_92(double %a, double %b) { define i1 @auto_gen_93(double %a, double %b) { ; CHECK-LABEL: @auto_gen_93( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1064,7 +1075,7 @@ define i1 @auto_gen_93(double %a, double %b) { define i1 @auto_gen_94(double %a, double %b) { ; CHECK-LABEL: @auto_gen_94( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1075,7 +1086,7 @@ define i1 @auto_gen_94(double %a, double %b) { define i1 @auto_gen_95(double %a, double %b) { ; CHECK-LABEL: @auto_gen_95( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1086,7 +1097,7 @@ define i1 @auto_gen_95(double %a, double %b) { define i1 @auto_gen_96(double %a, double %b) { ; CHECK-LABEL: @auto_gen_96( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1097,7 +1108,7 @@ define i1 @auto_gen_96(double %a, double %b) { define i1 @auto_gen_97(double %a, double %b) { ; CHECK-LABEL: @auto_gen_97( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1108,7 +1119,7 @@ define i1 @auto_gen_97(double %a, double %b) { define i1 @auto_gen_98(double %a, double %b) { ; CHECK-LABEL: @auto_gen_98( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1119,7 +1130,7 @@ define i1 @auto_gen_98(double %a, double %b) { define i1 @auto_gen_99(double %a, double %b) { ; CHECK-LABEL: @auto_gen_99( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1130,7 +1141,7 @@ define i1 @auto_gen_99(double %a, double %b) { define i1 @auto_gen_100(double %a, double %b) { ; CHECK-LABEL: @auto_gen_100( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1141,7 +1152,7 @@ define i1 @auto_gen_100(double %a, double %b) { define i1 @auto_gen_101(double %a, double %b) { ; CHECK-LABEL: @auto_gen_101( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1152,7 +1163,7 @@ define i1 @auto_gen_101(double %a, double %b) { define i1 @auto_gen_102(double %a, double %b) { ; CHECK-LABEL: @auto_gen_102( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1163,7 +1174,7 @@ define i1 @auto_gen_102(double %a, double %b) { define i1 @auto_gen_103(double %a, double %b) { ; CHECK-LABEL: @auto_gen_103( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1174,7 +1185,7 @@ define i1 @auto_gen_103(double %a, double %b) { define i1 @auto_gen_104(double %a, double %b) { ; CHECK-LABEL: @auto_gen_104( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1265,7 +1276,7 @@ define i1 @auto_gen_112(double %a, double %b) { define i1 @auto_gen_113(double %a, double %b) { ; CHECK-LABEL: @auto_gen_113( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1276,7 +1287,7 @@ define i1 @auto_gen_113(double %a, double %b) { define i1 @auto_gen_114(double %a, double %b) { ; CHECK-LABEL: @auto_gen_114( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1287,7 +1298,7 @@ define i1 @auto_gen_114(double %a, double %b) { define i1 @auto_gen_115(double %a, double %b) { ; CHECK-LABEL: @auto_gen_115( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1298,7 +1309,7 @@ define i1 @auto_gen_115(double %a, double %b) { define i1 @auto_gen_116(double %a, double %b) { ; CHECK-LABEL: @auto_gen_116( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1309,7 +1320,7 @@ define i1 @auto_gen_116(double %a, double %b) { define i1 @auto_gen_117(double %a, double %b) { ; CHECK-LABEL: @auto_gen_117( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1320,7 +1331,7 @@ define i1 @auto_gen_117(double %a, double %b) { define i1 @auto_gen_118(double %a, double %b) { ; CHECK-LABEL: @auto_gen_118( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1331,7 +1342,7 @@ define i1 @auto_gen_118(double %a, double %b) { define i1 @auto_gen_119(double %a, double %b) { ; CHECK-LABEL: @auto_gen_119( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1352,7 +1363,7 @@ define i1 @auto_gen_120(double %a, double %b) { define i1 @auto_gen_121(double %a, double %b) { ; CHECK-LABEL: @auto_gen_121( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1363,7 +1374,7 @@ define i1 @auto_gen_121(double %a, double %b) { define i1 @auto_gen_122(double %a, double %b) { ; CHECK-LABEL: @auto_gen_122( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1374,7 +1385,7 @@ define i1 @auto_gen_122(double %a, double %b) { define i1 @auto_gen_123(double %a, double %b) { ; CHECK-LABEL: @auto_gen_123( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1385,7 +1396,7 @@ define i1 @auto_gen_123(double %a, double %b) { define i1 @auto_gen_124(double %a, double %b) { ; CHECK-LABEL: @auto_gen_124( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1396,7 +1407,7 @@ define i1 @auto_gen_124(double %a, double %b) { define i1 @auto_gen_125(double %a, double %b) { ; CHECK-LABEL: @auto_gen_125( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1407,7 +1418,7 @@ define i1 @auto_gen_125(double %a, double %b) { define i1 @auto_gen_126(double %a, double %b) { ; CHECK-LABEL: @auto_gen_126( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1418,7 +1429,7 @@ define i1 @auto_gen_126(double %a, double %b) { define i1 @auto_gen_127(double %a, double %b) { ; CHECK-LABEL: @auto_gen_127( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1429,7 +1440,7 @@ define i1 @auto_gen_127(double %a, double %b) { define i1 @auto_gen_128(double %a, double %b) { ; CHECK-LABEL: @auto_gen_128( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1440,7 +1451,7 @@ define i1 @auto_gen_128(double %a, double %b) { define i1 @auto_gen_129(double %a, double %b) { ; CHECK-LABEL: @auto_gen_129( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1451,7 +1462,7 @@ define i1 @auto_gen_129(double %a, double %b) { define i1 @auto_gen_130(double %a, double %b) { ; CHECK-LABEL: @auto_gen_130( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1462,7 +1473,7 @@ define i1 @auto_gen_130(double %a, double %b) { define i1 @auto_gen_131(double %a, double %b) { ; CHECK-LABEL: @auto_gen_131( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1473,7 +1484,7 @@ define i1 @auto_gen_131(double %a, double %b) { define i1 @auto_gen_132(double %a, double %b) { ; CHECK-LABEL: @auto_gen_132( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1484,7 +1495,7 @@ define i1 @auto_gen_132(double %a, double %b) { define i1 @auto_gen_133(double %a, double %b) { ; CHECK-LABEL: @auto_gen_133( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b @@ -1495,7 +1506,7 @@ define i1 @auto_gen_133(double %a, double %b) { define i1 @auto_gen_134(double %a, double %b) { ; CHECK-LABEL: @auto_gen_134( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP1]] ; %cmp = fcmp true double %a, %b diff --git a/llvm/test/Transforms/InstCombine/fabs.ll b/llvm/test/Transforms/InstCombine/fabs.ll index 87ab0bd..cc08e56 100644 --- a/llvm/test/Transforms/InstCombine/fabs.ll +++ b/llvm/test/Transforms/InstCombine/fabs.ll @@ -277,15 +277,17 @@ define double @select_fcmp_nnan_ole_zero(double %x) { ; X <= -0.0 ? (0.0 - X) : X --> fabs(X) -define float @select_fcmp_nnan_ole_negzero(float %x) { +define <2 x float> @select_fcmp_nnan_ole_negzero(<2 x float> %x) { ; CHECK-LABEL: @select_fcmp_nnan_ole_negzero( -; CHECK-NEXT: [[TMP1:%.*]] = call nnan float @llvm.fabs.f32(float [[X:%.*]]) -; CHECK-NEXT: ret float [[TMP1]] -; - %lezero = fcmp nnan ole float %x, -0.0 - %negx = fsub float 0.0, %x - %fabs = select i1 %lezero, float %negx, float %x - ret float %fabs +; CHECK-NEXT: [[LEZERO:%.*]] = fcmp nnan ole <2 x float> [[X:%.*]], +; CHECK-NEXT: [[NEGX:%.*]] = fsub <2 x float> , [[X]] +; CHECK-NEXT: [[FABS:%.*]] = select <2 x i1> [[LEZERO]], <2 x float> [[NEGX]], <2 x float> [[X]] +; CHECK-NEXT: ret <2 x float> [[FABS]] +; + %lezero = fcmp nnan ole <2 x float> %x, + %negx = fsub <2 x float> , %x + %fabs = select <2 x i1> %lezero, <2 x float> %negx, <2 x float> %x + ret <2 x float> %fabs } ; X > 0.0 ? X : (0.0 - X) --> fabs(X) diff --git a/llvm/test/Transforms/InstCombine/fast-math.ll b/llvm/test/Transforms/InstCombine/fast-math.ll index a2ca21f..868208f 100644 --- a/llvm/test/Transforms/InstCombine/fast-math.ll +++ b/llvm/test/Transforms/InstCombine/fast-math.ll @@ -233,6 +233,15 @@ define float @fneg2(float %x) { ret float %sub } +define <2 x float> @fneg2_vec_undef(<2 x float> %x) { +; CHECK-LABEL: @fneg2_vec_undef( +; CHECK-NEXT: [[SUB:%.*]] = fsub nsz <2 x float> , [[X:%.*]] +; CHECK-NEXT: ret <2 x float> [[SUB]] +; + %sub = fsub nsz <2 x float> , %x + ret <2 x float> %sub +} + ; ========================================================================= ; ; Testing-cases about div diff --git a/llvm/test/Transforms/InstCombine/fcmp-special.ll b/llvm/test/Transforms/InstCombine/fcmp-special.ll index 565da96..1966ee0 100644 --- a/llvm/test/Transforms/InstCombine/fcmp-special.ll +++ b/llvm/test/Transforms/InstCombine/fcmp-special.ll @@ -3,7 +3,7 @@ define i1 @oeq_self(double %arg) { ; CHECK-LABEL: @oeq_self( -; CHECK-NEXT: [[TMP:%.*]] = fcmp ord double %arg, 0.000000e+00 +; CHECK-NEXT: [[TMP:%.*]] = fcmp ord double [[ARG:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[TMP]] ; %tmp = fcmp oeq double %arg, %arg @@ -14,7 +14,7 @@ define i1 @oeq_self(double %arg) { define i1 @une_self(double %x) { ; CHECK-LABEL: @une_self( -; CHECK-NEXT: [[TMP:%.*]] = fcmp uno double %x, 0.000000e+00 +; CHECK-NEXT: [[TMP:%.*]] = fcmp uno double [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[TMP]] ; %tmp = fcmp une double %x, %x @@ -26,7 +26,7 @@ define i1 @une_self(double %x) { define i1 @ord_zero(float %x) { ; CHECK-LABEL: @ord_zero( -; CHECK-NEXT: [[F:%.*]] = fcmp ord float %x, 0.000000e+00 +; CHECK-NEXT: [[F:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[F]] ; %f = fcmp ord float %x, 0.0 @@ -35,7 +35,7 @@ define i1 @ord_zero(float %x) { define i1 @ord_nonzero(double %x) { ; CHECK-LABEL: @ord_nonzero( -; CHECK-NEXT: [[F:%.*]] = fcmp ord double %x, 0.000000e+00 +; CHECK-NEXT: [[F:%.*]] = fcmp ord double [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[F]] ; %f = fcmp ord double %x, 3.0 @@ -44,7 +44,7 @@ define i1 @ord_nonzero(double %x) { define i1 @ord_self(float %x) { ; CHECK-LABEL: @ord_self( -; CHECK-NEXT: [[F:%.*]] = fcmp ord float %x, 0.000000e+00 +; CHECK-NEXT: [[F:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[F]] ; %f = fcmp ord float %x, %x @@ -53,7 +53,7 @@ define i1 @ord_self(float %x) { define i1 @uno_zero(double %x) { ; CHECK-LABEL: @uno_zero( -; CHECK-NEXT: [[F:%.*]] = fcmp uno double %x, 0.000000e+00 +; CHECK-NEXT: [[F:%.*]] = fcmp uno double [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[F]] ; %f = fcmp uno double %x, 0.0 @@ -62,7 +62,7 @@ define i1 @uno_zero(double %x) { define i1 @uno_nonzero(float %x) { ; CHECK-LABEL: @uno_nonzero( -; CHECK-NEXT: [[F:%.*]] = fcmp uno float %x, 0.000000e+00 +; CHECK-NEXT: [[F:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[F]] ; %f = fcmp uno float %x, 3.0 @@ -71,7 +71,7 @@ define i1 @uno_nonzero(float %x) { define i1 @uno_self(double %x) { ; CHECK-LABEL: @uno_self( -; CHECK-NEXT: [[F:%.*]] = fcmp uno double %x, 0.000000e+00 +; CHECK-NEXT: [[F:%.*]] = fcmp uno double [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: ret i1 [[F]] ; %f = fcmp uno double %x, %x @@ -80,7 +80,7 @@ define i1 @uno_self(double %x) { define <2 x i1> @ord_zero_vec(<2 x double> %x) { ; CHECK-LABEL: @ord_zero_vec( -; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x double> %x, zeroinitializer +; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x double> [[X:%.*]], zeroinitializer ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp ord <2 x double> %x, zeroinitializer @@ -89,7 +89,7 @@ define <2 x i1> @ord_zero_vec(<2 x double> %x) { define <2 x i1> @ord_nonzero_vec(<2 x float> %x) { ; CHECK-LABEL: @ord_nonzero_vec( -; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x float> %x, zeroinitializer +; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x float> [[X:%.*]], zeroinitializer ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp ord <2 x float> %x, @@ -98,7 +98,7 @@ define <2 x i1> @ord_nonzero_vec(<2 x float> %x) { define <2 x i1> @ord_self_vec(<2 x double> %x) { ; CHECK-LABEL: @ord_self_vec( -; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x double> %x, zeroinitializer +; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x double> [[X:%.*]], zeroinitializer ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp ord <2 x double> %x, %x @@ -107,7 +107,7 @@ define <2 x i1> @ord_self_vec(<2 x double> %x) { define <2 x i1> @uno_zero_vec(<2 x float> %x) { ; CHECK-LABEL: @uno_zero_vec( -; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x float> %x, zeroinitializer +; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x float> [[X:%.*]], zeroinitializer ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp uno <2 x float> %x, zeroinitializer @@ -116,7 +116,7 @@ define <2 x i1> @uno_zero_vec(<2 x float> %x) { define <2 x i1> @uno_nonzero_vec(<2 x double> %x) { ; CHECK-LABEL: @uno_nonzero_vec( -; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x double> %x, zeroinitializer +; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x double> [[X:%.*]], zeroinitializer ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp uno <2 x double> %x, @@ -125,7 +125,7 @@ define <2 x i1> @uno_nonzero_vec(<2 x double> %x) { define <2 x i1> @uno_self_vec(<2 x float> %x) { ; CHECK-LABEL: @uno_self_vec( -; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x float> %x, zeroinitializer +; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x float> [[X:%.*]], zeroinitializer ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp uno <2 x float> %x, %x @@ -137,13 +137,30 @@ define <2 x i1> @uno_self_vec(<2 x float> %x) { define <2 x i1> @uno_vec_with_nan(<2 x double> %x) { ; CHECK-LABEL: @uno_vec_with_nan( -; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x double> %x, +; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x double> [[X:%.*]], ; CHECK-NEXT: ret <2 x i1> [[F]] ; %f = fcmp uno <2 x double> %x, ret <2 x i1> %f } +define <2 x i1> @uno_vec_with_undef(<2 x double> %x) { +; CHECK-LABEL: @uno_vec_with_undef( +; CHECK-NEXT: [[F:%.*]] = fcmp uno <2 x double> [[X:%.*]], zeroinitializer +; CHECK-NEXT: ret <2 x i1> [[F]] +; + %f = fcmp uno <2 x double> %x, + ret <2 x i1> %f +} + +define <2 x i1> @ord_vec_with_undef(<2 x double> %x) { +; CHECK-LABEL: @ord_vec_with_undef( +; CHECK-NEXT: [[F:%.*]] = fcmp ord <2 x double> [[X:%.*]], zeroinitializer +; CHECK-NEXT: ret <2 x i1> [[F]] +; + %f = fcmp ord <2 x double> %x, + ret <2 x i1> %f +} ; TODO: This could be handled in InstSimplify. define i1 @nnan_ops_to_fcmp_ord(float %x, float %y) { diff --git a/llvm/test/Transforms/InstCombine/or-fcmp.ll b/llvm/test/Transforms/InstCombine/or-fcmp.ll index 1c10424..fd46718 100644 --- a/llvm/test/Transforms/InstCombine/or-fcmp.ll +++ b/llvm/test/Transforms/InstCombine/or-fcmp.ll @@ -3,7 +3,7 @@ define i1 @PR1738(double %x, double %y) { ; CHECK-LABEL: @PR1738( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %x, %y +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp1 = fcmp uno double %x, 0.0 @@ -12,9 +12,20 @@ define i1 @PR1738(double %x, double %y) { ret i1 %or } +define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) { +; CHECK-LABEL: @PR1738_vec_undef( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno <2 x double> [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: ret <2 x i1> [[TMP1]] +; + %cmp1 = fcmp uno <2 x double> %x, + %cmp2 = fcmp uno <2 x double> %y, + %or = or <2 x i1> %cmp1, %cmp2 + ret <2 x i1> %or +} + define i1 @fcmp_uno_nonzero(float %x, float %y) { ; CHECK-LABEL: @fcmp_uno_nonzero( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno float %x, %y +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno float [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp1 = fcmp uno float %x, 1.0 @@ -25,7 +36,7 @@ define i1 @fcmp_uno_nonzero(float %x, float %y) { define <3 x i1> @fcmp_uno_nonzero_vec(<3 x float> %x, <3 x float> %y) { ; CHECK-LABEL: @fcmp_uno_nonzero_vec( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno <3 x float> %x, %y +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno <3 x float> [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: ret <3 x i1> [[TMP1]] ; %cmp1 = fcmp uno <3 x float> %x, @@ -46,7 +57,7 @@ define i1 @auto_gen_0(double %a, double %b) { define i1 @auto_gen_1(double %a, double %b) { ; CHECK-LABEL: @auto_gen_1( -; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp oeq double %a, %b @@ -57,7 +68,7 @@ define i1 @auto_gen_1(double %a, double %b) { define i1 @auto_gen_2(double %a, double %b) { ; CHECK-LABEL: @auto_gen_2( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oeq double %a, %b @@ -68,7 +79,7 @@ define i1 @auto_gen_2(double %a, double %b) { define i1 @auto_gen_3(double %a, double %b) { ; CHECK-LABEL: @auto_gen_3( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ogt double %a, %b @@ -79,7 +90,7 @@ define i1 @auto_gen_3(double %a, double %b) { define i1 @auto_gen_4(double %a, double %b) { ; CHECK-LABEL: @auto_gen_4( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ogt double %a, %b @@ -90,7 +101,7 @@ define i1 @auto_gen_4(double %a, double %b) { define i1 @auto_gen_5(double %a, double %b) { ; CHECK-LABEL: @auto_gen_5( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ogt double %a, %b @@ -101,7 +112,7 @@ define i1 @auto_gen_5(double %a, double %b) { define i1 @auto_gen_6(double %a, double %b) { ; CHECK-LABEL: @auto_gen_6( -; CHECK-NEXT: [[CMP:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp oge double %a, %b @@ -112,7 +123,7 @@ define i1 @auto_gen_6(double %a, double %b) { define i1 @auto_gen_7(double %a, double %b) { ; CHECK-LABEL: @auto_gen_7( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b @@ -123,7 +134,7 @@ define i1 @auto_gen_7(double %a, double %b) { define i1 @auto_gen_8(double %a, double %b) { ; CHECK-LABEL: @auto_gen_8( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b @@ -134,7 +145,7 @@ define i1 @auto_gen_8(double %a, double %b) { define i1 @auto_gen_9(double %a, double %b) { ; CHECK-LABEL: @auto_gen_9( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b @@ -145,7 +156,7 @@ define i1 @auto_gen_9(double %a, double %b) { define i1 @auto_gen_10(double %a, double %b) { ; CHECK-LABEL: @auto_gen_10( -; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp olt double %a, %b @@ -156,7 +167,7 @@ define i1 @auto_gen_10(double %a, double %b) { define i1 @auto_gen_11(double %a, double %b) { ; CHECK-LABEL: @auto_gen_11( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp olt double %a, %b @@ -167,7 +178,7 @@ define i1 @auto_gen_11(double %a, double %b) { define i1 @auto_gen_12(double %a, double %b) { ; CHECK-LABEL: @auto_gen_12( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp olt double %a, %b @@ -178,7 +189,7 @@ define i1 @auto_gen_12(double %a, double %b) { define i1 @auto_gen_13(double %a, double %b) { ; CHECK-LABEL: @auto_gen_13( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp olt double %a, %b @@ -189,7 +200,7 @@ define i1 @auto_gen_13(double %a, double %b) { define i1 @auto_gen_14(double %a, double %b) { ; CHECK-LABEL: @auto_gen_14( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp olt double %a, %b @@ -200,7 +211,7 @@ define i1 @auto_gen_14(double %a, double %b) { define i1 @auto_gen_15(double %a, double %b) { ; CHECK-LABEL: @auto_gen_15( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ole double %a, %b @@ -211,7 +222,7 @@ define i1 @auto_gen_15(double %a, double %b) { define i1 @auto_gen_16(double %a, double %b) { ; CHECK-LABEL: @auto_gen_16( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -222,7 +233,7 @@ define i1 @auto_gen_16(double %a, double %b) { define i1 @auto_gen_17(double %a, double %b) { ; CHECK-LABEL: @auto_gen_17( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -233,7 +244,7 @@ define i1 @auto_gen_17(double %a, double %b) { define i1 @auto_gen_18(double %a, double %b) { ; CHECK-LABEL: @auto_gen_18( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -244,7 +255,7 @@ define i1 @auto_gen_18(double %a, double %b) { define i1 @auto_gen_19(double %a, double %b) { ; CHECK-LABEL: @auto_gen_19( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -255,7 +266,7 @@ define i1 @auto_gen_19(double %a, double %b) { define i1 @auto_gen_20(double %a, double %b) { ; CHECK-LABEL: @auto_gen_20( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b @@ -266,7 +277,7 @@ define i1 @auto_gen_20(double %a, double %b) { define i1 @auto_gen_21(double %a, double %b) { ; CHECK-LABEL: @auto_gen_21( -; CHECK-NEXT: [[CMP:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp one double %a, %b @@ -277,7 +288,7 @@ define i1 @auto_gen_21(double %a, double %b) { define i1 @auto_gen_22(double %a, double %b) { ; CHECK-LABEL: @auto_gen_22( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -288,7 +299,7 @@ define i1 @auto_gen_22(double %a, double %b) { define i1 @auto_gen_23(double %a, double %b) { ; CHECK-LABEL: @auto_gen_23( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -299,7 +310,7 @@ define i1 @auto_gen_23(double %a, double %b) { define i1 @auto_gen_24(double %a, double %b) { ; CHECK-LABEL: @auto_gen_24( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -310,7 +321,7 @@ define i1 @auto_gen_24(double %a, double %b) { define i1 @auto_gen_25(double %a, double %b) { ; CHECK-LABEL: @auto_gen_25( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -321,7 +332,7 @@ define i1 @auto_gen_25(double %a, double %b) { define i1 @auto_gen_26(double %a, double %b) { ; CHECK-LABEL: @auto_gen_26( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -332,7 +343,7 @@ define i1 @auto_gen_26(double %a, double %b) { define i1 @auto_gen_27(double %a, double %b) { ; CHECK-LABEL: @auto_gen_27( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b @@ -343,7 +354,7 @@ define i1 @auto_gen_27(double %a, double %b) { define i1 @auto_gen_28(double %a, double %b) { ; CHECK-LABEL: @auto_gen_28( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ord double %a, %b @@ -354,7 +365,7 @@ define i1 @auto_gen_28(double %a, double %b) { define i1 @auto_gen_29(double %a, double %b) { ; CHECK-LABEL: @auto_gen_29( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -365,7 +376,7 @@ define i1 @auto_gen_29(double %a, double %b) { define i1 @auto_gen_30(double %a, double %b) { ; CHECK-LABEL: @auto_gen_30( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -376,7 +387,7 @@ define i1 @auto_gen_30(double %a, double %b) { define i1 @auto_gen_31(double %a, double %b) { ; CHECK-LABEL: @auto_gen_31( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -387,7 +398,7 @@ define i1 @auto_gen_31(double %a, double %b) { define i1 @auto_gen_32(double %a, double %b) { ; CHECK-LABEL: @auto_gen_32( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -398,7 +409,7 @@ define i1 @auto_gen_32(double %a, double %b) { define i1 @auto_gen_33(double %a, double %b) { ; CHECK-LABEL: @auto_gen_33( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -409,7 +420,7 @@ define i1 @auto_gen_33(double %a, double %b) { define i1 @auto_gen_34(double %a, double %b) { ; CHECK-LABEL: @auto_gen_34( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -420,7 +431,7 @@ define i1 @auto_gen_34(double %a, double %b) { define i1 @auto_gen_35(double %a, double %b) { ; CHECK-LABEL: @auto_gen_35( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -431,7 +442,7 @@ define i1 @auto_gen_35(double %a, double %b) { define i1 @auto_gen_36(double %a, double %b) { ; CHECK-LABEL: @auto_gen_36( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ueq double %a, %b @@ -442,7 +453,7 @@ define i1 @auto_gen_36(double %a, double %b) { define i1 @auto_gen_37(double %a, double %b) { ; CHECK-LABEL: @auto_gen_37( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -453,7 +464,7 @@ define i1 @auto_gen_37(double %a, double %b) { define i1 @auto_gen_38(double %a, double %b) { ; CHECK-LABEL: @auto_gen_38( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -464,7 +475,7 @@ define i1 @auto_gen_38(double %a, double %b) { define i1 @auto_gen_39(double %a, double %b) { ; CHECK-LABEL: @auto_gen_39( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -475,7 +486,7 @@ define i1 @auto_gen_39(double %a, double %b) { define i1 @auto_gen_40(double %a, double %b) { ; CHECK-LABEL: @auto_gen_40( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -486,7 +497,7 @@ define i1 @auto_gen_40(double %a, double %b) { define i1 @auto_gen_41(double %a, double %b) { ; CHECK-LABEL: @auto_gen_41( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -517,7 +528,7 @@ define i1 @auto_gen_43(double %a, double %b) { define i1 @auto_gen_44(double %a, double %b) { ; CHECK-LABEL: @auto_gen_44( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b @@ -528,7 +539,7 @@ define i1 @auto_gen_44(double %a, double %b) { define i1 @auto_gen_45(double %a, double %b) { ; CHECK-LABEL: @auto_gen_45( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ugt double %a, %b @@ -539,7 +550,7 @@ define i1 @auto_gen_45(double %a, double %b) { define i1 @auto_gen_46(double %a, double %b) { ; CHECK-LABEL: @auto_gen_46( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -550,7 +561,7 @@ define i1 @auto_gen_46(double %a, double %b) { define i1 @auto_gen_47(double %a, double %b) { ; CHECK-LABEL: @auto_gen_47( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -561,7 +572,7 @@ define i1 @auto_gen_47(double %a, double %b) { define i1 @auto_gen_48(double %a, double %b) { ; CHECK-LABEL: @auto_gen_48( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -572,7 +583,7 @@ define i1 @auto_gen_48(double %a, double %b) { define i1 @auto_gen_49(double %a, double %b) { ; CHECK-LABEL: @auto_gen_49( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -593,7 +604,7 @@ define i1 @auto_gen_50(double %a, double %b) { define i1 @auto_gen_51(double %a, double %b) { ; CHECK-LABEL: @auto_gen_51( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -614,7 +625,7 @@ define i1 @auto_gen_52(double %a, double %b) { define i1 @auto_gen_53(double %a, double %b) { ; CHECK-LABEL: @auto_gen_53( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -625,7 +636,7 @@ define i1 @auto_gen_53(double %a, double %b) { define i1 @auto_gen_54(double %a, double %b) { ; CHECK-LABEL: @auto_gen_54( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b @@ -636,7 +647,7 @@ define i1 @auto_gen_54(double %a, double %b) { define i1 @auto_gen_55(double %a, double %b) { ; CHECK-LABEL: @auto_gen_55( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp uge double %a, %b @@ -647,7 +658,7 @@ define i1 @auto_gen_55(double %a, double %b) { define i1 @auto_gen_56(double %a, double %b) { ; CHECK-LABEL: @auto_gen_56( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -658,7 +669,7 @@ define i1 @auto_gen_56(double %a, double %b) { define i1 @auto_gen_57(double %a, double %b) { ; CHECK-LABEL: @auto_gen_57( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -669,7 +680,7 @@ define i1 @auto_gen_57(double %a, double %b) { define i1 @auto_gen_58(double %a, double %b) { ; CHECK-LABEL: @auto_gen_58( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -720,7 +731,7 @@ define i1 @auto_gen_62(double %a, double %b) { define i1 @auto_gen_63(double %a, double %b) { ; CHECK-LABEL: @auto_gen_63( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -731,7 +742,7 @@ define i1 @auto_gen_63(double %a, double %b) { define i1 @auto_gen_64(double %a, double %b) { ; CHECK-LABEL: @auto_gen_64( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -742,7 +753,7 @@ define i1 @auto_gen_64(double %a, double %b) { define i1 @auto_gen_65(double %a, double %b) { ; CHECK-LABEL: @auto_gen_65( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b @@ -753,7 +764,7 @@ define i1 @auto_gen_65(double %a, double %b) { define i1 @auto_gen_66(double %a, double %b) { ; CHECK-LABEL: @auto_gen_66( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ult double %a, %b @@ -764,7 +775,7 @@ define i1 @auto_gen_66(double %a, double %b) { define i1 @auto_gen_67(double %a, double %b) { ; CHECK-LABEL: @auto_gen_67( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -775,7 +786,7 @@ define i1 @auto_gen_67(double %a, double %b) { define i1 @auto_gen_68(double %a, double %b) { ; CHECK-LABEL: @auto_gen_68( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -796,7 +807,7 @@ define i1 @auto_gen_69(double %a, double %b) { define i1 @auto_gen_70(double %a, double %b) { ; CHECK-LABEL: @auto_gen_70( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -807,7 +818,7 @@ define i1 @auto_gen_70(double %a, double %b) { define i1 @auto_gen_71(double %a, double %b) { ; CHECK-LABEL: @auto_gen_71( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -818,7 +829,7 @@ define i1 @auto_gen_71(double %a, double %b) { define i1 @auto_gen_72(double %a, double %b) { ; CHECK-LABEL: @auto_gen_72( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -839,7 +850,7 @@ define i1 @auto_gen_73(double %a, double %b) { define i1 @auto_gen_74(double %a, double %b) { ; CHECK-LABEL: @auto_gen_74( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -850,7 +861,7 @@ define i1 @auto_gen_74(double %a, double %b) { define i1 @auto_gen_75(double %a, double %b) { ; CHECK-LABEL: @auto_gen_75( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -871,7 +882,7 @@ define i1 @auto_gen_76(double %a, double %b) { define i1 @auto_gen_77(double %a, double %b) { ; CHECK-LABEL: @auto_gen_77( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b @@ -882,7 +893,7 @@ define i1 @auto_gen_77(double %a, double %b) { define i1 @auto_gen_78(double %a, double %b) { ; CHECK-LABEL: @auto_gen_78( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp ule double %a, %b @@ -893,7 +904,7 @@ define i1 @auto_gen_78(double %a, double %b) { define i1 @auto_gen_79(double %a, double %b) { ; CHECK-LABEL: @auto_gen_79( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -924,7 +935,7 @@ define i1 @auto_gen_81(double %a, double %b) { define i1 @auto_gen_82(double %a, double %b) { ; CHECK-LABEL: @auto_gen_82( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -935,7 +946,7 @@ define i1 @auto_gen_82(double %a, double %b) { define i1 @auto_gen_83(double %a, double %b) { ; CHECK-LABEL: @auto_gen_83( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -966,7 +977,7 @@ define i1 @auto_gen_85(double %a, double %b) { define i1 @auto_gen_86(double %a, double %b) { ; CHECK-LABEL: @auto_gen_86( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -997,7 +1008,7 @@ define i1 @auto_gen_88(double %a, double %b) { define i1 @auto_gen_89(double %a, double %b) { ; CHECK-LABEL: @auto_gen_89( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -1008,7 +1019,7 @@ define i1 @auto_gen_89(double %a, double %b) { define i1 @auto_gen_90(double %a, double %b) { ; CHECK-LABEL: @auto_gen_90( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b @@ -1019,7 +1030,7 @@ define i1 @auto_gen_90(double %a, double %b) { define i1 @auto_gen_91(double %a, double %b) { ; CHECK-LABEL: @auto_gen_91( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp une double %a, %b @@ -1040,7 +1051,7 @@ define i1 @auto_gen_92(double %a, double %b) { define i1 @auto_gen_93(double %a, double %b) { ; CHECK-LABEL: @auto_gen_93( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1061,7 +1072,7 @@ define i1 @auto_gen_94(double %a, double %b) { define i1 @auto_gen_95(double %a, double %b) { ; CHECK-LABEL: @auto_gen_95( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1082,7 +1093,7 @@ define i1 @auto_gen_96(double %a, double %b) { define i1 @auto_gen_97(double %a, double %b) { ; CHECK-LABEL: @auto_gen_97( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1113,7 +1124,7 @@ define i1 @auto_gen_99(double %a, double %b) { define i1 @auto_gen_100(double %a, double %b) { ; CHECK-LABEL: @auto_gen_100( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1134,7 +1145,7 @@ define i1 @auto_gen_101(double %a, double %b) { define i1 @auto_gen_102(double %a, double %b) { ; CHECK-LABEL: @auto_gen_102( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1155,7 +1166,7 @@ define i1 @auto_gen_103(double %a, double %b) { define i1 @auto_gen_104(double %a, double %b) { ; CHECK-LABEL: @auto_gen_104( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b @@ -1166,7 +1177,7 @@ define i1 @auto_gen_104(double %a, double %b) { define i1 @auto_gen_105(double %a, double %b) { ; CHECK-LABEL: @auto_gen_105( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[CMP]] ; %cmp = fcmp uno double %a, %b @@ -1177,7 +1188,7 @@ define i1 @auto_gen_105(double %a, double %b) { define i1 @auto_gen_106(double %a, double %b) { ; CHECK-LABEL: @auto_gen_106( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1188,7 +1199,7 @@ define i1 @auto_gen_106(double %a, double %b) { define i1 @auto_gen_107(double %a, double %b) { ; CHECK-LABEL: @auto_gen_107( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1199,7 +1210,7 @@ define i1 @auto_gen_107(double %a, double %b) { define i1 @auto_gen_108(double %a, double %b) { ; CHECK-LABEL: @auto_gen_108( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1210,7 +1221,7 @@ define i1 @auto_gen_108(double %a, double %b) { define i1 @auto_gen_109(double %a, double %b) { ; CHECK-LABEL: @auto_gen_109( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1221,7 +1232,7 @@ define i1 @auto_gen_109(double %a, double %b) { define i1 @auto_gen_110(double %a, double %b) { ; CHECK-LABEL: @auto_gen_110( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1232,7 +1243,7 @@ define i1 @auto_gen_110(double %a, double %b) { define i1 @auto_gen_111(double %a, double %b) { ; CHECK-LABEL: @auto_gen_111( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1253,7 +1264,7 @@ define i1 @auto_gen_112(double %a, double %b) { define i1 @auto_gen_113(double %a, double %b) { ; CHECK-LABEL: @auto_gen_113( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1264,7 +1275,7 @@ define i1 @auto_gen_113(double %a, double %b) { define i1 @auto_gen_114(double %a, double %b) { ; CHECK-LABEL: @auto_gen_114( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1275,7 +1286,7 @@ define i1 @auto_gen_114(double %a, double %b) { define i1 @auto_gen_115(double %a, double %b) { ; CHECK-LABEL: @auto_gen_115( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1286,7 +1297,7 @@ define i1 @auto_gen_115(double %a, double %b) { define i1 @auto_gen_116(double %a, double %b) { ; CHECK-LABEL: @auto_gen_116( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1297,7 +1308,7 @@ define i1 @auto_gen_116(double %a, double %b) { define i1 @auto_gen_117(double %a, double %b) { ; CHECK-LABEL: @auto_gen_117( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1308,7 +1319,7 @@ define i1 @auto_gen_117(double %a, double %b) { define i1 @auto_gen_118(double %a, double %b) { ; CHECK-LABEL: @auto_gen_118( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b @@ -1319,7 +1330,7 @@ define i1 @auto_gen_118(double %a, double %b) { define i1 @auto_gen_119(double %a, double %b) { ; CHECK-LABEL: @auto_gen_119( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b diff --git a/llvm/test/Transforms/InstSimplify/fast-math.ll b/llvm/test/Transforms/InstSimplify/fast-math.ll index 4fdff7a..491658a 100644 --- a/llvm/test/Transforms/InstSimplify/fast-math.ll +++ b/llvm/test/Transforms/InstSimplify/fast-math.ll @@ -195,6 +195,24 @@ define <2 x float> @fsub_0_0_x_vec_undef2(<2 x float> %a) { } ; fadd nsz X, 0 ==> X + +define <2 x float> @fadd_zero_nsz_vec(<2 x float> %x) { +; CHECK-LABEL: @fadd_zero_nsz_vec( +; CHECK-NEXT: ret <2 x float> [[X:%.*]] +; + %r = fadd nsz <2 x float> %x, zeroinitializer + ret <2 x float> %r +} + +define <2 x float> @fadd_zero_nsz_vec_undef(<2 x float> %x) { +; CHECK-LABEL: @fadd_zero_nsz_vec_undef( +; CHECK-NEXT: [[R:%.*]] = fadd nsz <2 x float> [[X:%.*]], +; CHECK-NEXT: ret <2 x float> [[R]] +; + %r = fadd nsz <2 x float> %x, + ret <2 x float> %r +} + define float @nofold_fadd_x_0(float %a) { ; CHECK-LABEL: @nofold_fadd_x_0( ; CHECK-NEXT: [[NO_ZERO1:%.*]] = fadd ninf float [[A:%.*]], 0.000000e+00 @@ -239,6 +257,15 @@ define double @frem_zero_by_x(double %x) { ret double %r } +define <2 x double> @frem_poszero_by_x_vec_undef(<2 x double> %x) { +; CHECK-LABEL: @frem_poszero_by_x_vec_undef( +; CHECK-NEXT: [[R:%.*]] = frem nnan <2 x double> , [[X:%.*]] +; CHECK-NEXT: ret <2 x double> [[R]] +; + %r = frem nnan <2 x double> , %x + ret <2 x double> %r +} + ; -0 % X -> -0 ; nsz is not necessary - frem result always has the sign of the dividend diff --git a/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll b/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll index 94179a6..4c5b5f0 100644 --- a/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll +++ b/llvm/test/Transforms/InstSimplify/floating-point-arithmetic.ll @@ -62,12 +62,21 @@ define float @fsub_-0_0_x(float %a) { } ; fsub X, 0 ==> X -define float @fsub_x_0(float %a) { +define float @fsub_x_0(float %x) { ; CHECK-LABEL: @fsub_x_0( -; CHECK-NEXT: ret float [[A:%.*]] +; CHECK-NEXT: ret float [[X:%.*]] ; - %ret = fsub float %a, 0.0 - ret float %ret + %r = fsub float %x, 0.0 + ret float %r +} + +define <2 x float> @fsub_x_0_vec_undef(<2 x float> %x) { +; CHECK-LABEL: @fsub_x_0_vec_undef( +; CHECK-NEXT: [[R:%.*]] = fsub <2 x float> [[X:%.*]], +; CHECK-NEXT: ret <2 x float> [[R]] +; + %r = fsub <2 x float> %x, + ret <2 x float> %r } ; fadd X, -0 ==> X -- 2.7.4