[llvm] r328455 - [InstSimplify, InstCombine] add/update tests with FP +0.0 vector with undef; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 25 10:48:20 PDT 2018


Author: spatel
Date: Sun Mar 25 10:48:20 2018
New Revision: 328455

URL: http://llvm.org/viewvc/llvm-project?rev=328455&view=rev
Log:
[InstSimplify, InstCombine] add/update tests with FP +0.0 vector with undef; NFC

Modified:
    llvm/trunk/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll
    llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll
    llvm/trunk/test/Transforms/InstCombine/fabs.ll
    llvm/trunk/test/Transforms/InstCombine/fast-math.ll
    llvm/trunk/test/Transforms/InstCombine/fcmp-special.ll
    llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll
    llvm/trunk/test/Transforms/InstSimplify/fast-math.ll
    llvm/trunk/test/Transforms/InstSimplify/floating-point-arithmetic.ll

Modified: llvm/trunk/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll Sun Mar 25 10:48:20 2018
@@ -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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+  %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> <double 0.000000e+00, double undef>, i32 5)
+; CHECK-NEXT:    [[T1:%.*]] = shufflevector <2 x i1> [[T0]], <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+; 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> <double 0.0, double undef>, i32 5)
+  %t1 = shufflevector <2 x i1> %t0, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-  %1 = bitcast <8 x i1> %0 to i8
-  ret i8 %1
+  %t0 = shufflevector <4 x i1> %tmp, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+; 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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-  %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> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
+  %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)

Modified: llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll Sun Mar 25 10:48:20 2018
@@ -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, <double 0.0, double undef>
+  %cmp2 = fcmp ord <2 x double> %y, <double undef, double 0.0>
+  %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
 
 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, fl
 
 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, <float 1.0, float 2.0, float 3.0>
@@ -82,7 +93,7 @@ define i1 @auto_gen_1(double %a, double
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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

Modified: llvm/trunk/test/Transforms/InstCombine/fabs.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/fabs.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/fabs.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/fabs.ll Sun Mar 25 10:48:20 2018
@@ -277,15 +277,17 @@ define double @select_fcmp_nnan_ole_zero
 
 ; 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]]
+; CHECK-NEXT:    [[LEZERO:%.*]] = fcmp nnan ole <2 x float> [[X:%.*]], <float -0.000000e+00, float -0.000000e+00>
+; CHECK-NEXT:    [[NEGX:%.*]] = fsub <2 x float> <float 0.000000e+00, float undef>, [[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 float %x, -0.0
-  %negx = fsub float 0.0, %x
-  %fabs = select i1 %lezero, float %negx, float %x
-  ret float %fabs
+  %lezero = fcmp nnan ole <2 x float> %x, <float -0.0, float -0.0>
+  %negx = fsub <2 x float> <float 0.0, float undef>, %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)

Modified: llvm/trunk/test/Transforms/InstCombine/fast-math.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/fast-math.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/fast-math.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/fast-math.ll Sun Mar 25 10:48:20 2018
@@ -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> <float undef, float 0.000000e+00>, [[X:%.*]]
+; CHECK-NEXT:    ret <2 x float> [[SUB]]
+;
+  %sub = fsub nsz <2 x float> <float undef, float 0.0>, %x
+  ret <2 x float> %sub
+}
+
 ; =========================================================================
 ;
 ;   Testing-cases about div

Modified: llvm/trunk/test/Transforms/InstCombine/fcmp-special.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/fcmp-special.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/fcmp-special.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/fcmp-special.ll Sun Mar 25 10:48:20 2018
@@ -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 doubl
 
 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, <float 3.0, float 5.0>
@@ -98,7 +98,7 @@ define <2 x i1> @ord_nonzero_vec(<2 x fl
 
 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 doubl
 
 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
 
 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, <double 3.0, double 5.0>
@@ -125,7 +125,7 @@ define <2 x i1> @uno_nonzero_vec(<2 x do
 
 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
 
 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, <double 3.000000e+00, double 0x7FF00000FFFFFFFF>
+; CHECK-NEXT:    [[F:%.*]] = fcmp uno <2 x double> [[X:%.*]], <double 3.000000e+00, double 0x7FF00000FFFFFFFF>
 ; CHECK-NEXT:    ret <2 x i1> [[F]]
 ;
   %f = fcmp uno <2 x double> %x, <double 3.0, double 0x7FF00000FFFFFFFF>
   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, <double 3.0, double undef>
+  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, <double 0.0, double undef>
+  ret <2 x i1> %f
+}
 ; TODO: This could be handled in InstSimplify.
 
 define i1 @nnan_ops_to_fcmp_ord(float %x, float %y) {

Modified: llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll Sun Mar 25 10:48:20 2018
@@ -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, <double 0.0, double undef>
+  %cmp2 = fcmp uno <2 x double> %y, <double undef, double 0.0>
+  %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, fl
 
 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, <float 1.0, float 2.0, float 3.0>
@@ -46,7 +57,7 @@ define i1 @auto_gen_0(double %a, double
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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, doubl
 
 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

Modified: llvm/trunk/test/Transforms/InstSimplify/fast-math.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/fast-math.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstSimplify/fast-math.ll (original)
+++ llvm/trunk/test/Transforms/InstSimplify/fast-math.ll Sun Mar 25 10:48:20 2018
@@ -195,6 +195,24 @@ define <2 x float> @fsub_0_0_x_vec_undef
 }
 
 ; 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:%.*]], <float 0.000000e+00, float undef>
+; CHECK-NEXT:    ret <2 x float> [[R]]
+;
+  %r = fadd nsz <2 x float> %x, <float 0.0, float undef>
+  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> <double 0.000000e+00, double undef>, [[X:%.*]]
+; CHECK-NEXT:    ret <2 x double> [[R]]
+;
+  %r = frem nnan <2 x double> <double 0.0, double undef>, %x
+  ret <2 x double> %r
+}
+
 ; -0 % X -> -0
 ; nsz is not necessary - frem result always has the sign of the dividend
 

Modified: llvm/trunk/test/Transforms/InstSimplify/floating-point-arithmetic.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/floating-point-arithmetic.ll?rev=328455&r1=328454&r2=328455&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstSimplify/floating-point-arithmetic.ll (original)
+++ llvm/trunk/test/Transforms/InstSimplify/floating-point-arithmetic.ll Sun Mar 25 10:48:20 2018
@@ -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:%.*]], <float undef, float 0.000000e+00>
+; CHECK-NEXT:    ret <2 x float> [[R]]
+;
+  %r = fsub <2 x float> %x, <float undef, float 0.0>
+  ret <2 x float> %r
 }
 
 ; fadd X, -0 ==> X




More information about the llvm-commits mailing list