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)
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
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]]
;
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]]
;
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
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
; X <= -0.0 ? (0.0 - X) : X --> fabs(X)
-define float @select_fcmp_nnan_ole_negzero(float %x) {
+define <2 x float> @select_fcmp_nnan_ole_negzero(<2 x float> %x) {
; CHECK-LABEL: @select_fcmp_nnan_ole_negzero(
-; CHECK-NEXT: [[TMP1:%.*]] = call nnan float @llvm.fabs.f32(float [[X:%.*]])
-; CHECK-NEXT: ret float [[TMP1]]
-;
- %lezero = fcmp nnan ole float %x, -0.0
- %negx = fsub float 0.0, %x
- %fabs = select i1 %lezero, float %negx, float %x
- ret float %fabs
+; CHECK-NEXT: [[LEZERO:%.*]] = fcmp nnan ole <2 x float> [[X:%.*]], <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 <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)
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
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
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
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
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
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
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
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
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
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
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>
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
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
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>
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
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) {
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
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
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
}
; 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
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
}
; 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