diff options
author | Sanjay Patel <spatel@rotateright.com> | 2019-11-01 12:07:09 -0400 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2019-11-01 12:08:50 -0400 |
commit | 21a518f7fb60bda07f0f3e9dce57f3a34e318610 (patch) | |
tree | decc824e52b3bbe86d80e04e63bc4616b9380900 | |
parent | a3f4745428814d71dec66f83ee3431abd962a3e8 (diff) | |
download | bcm5719-llvm-21a518f7fb60bda07f0f3e9dce57f3a34e318610.tar.gz bcm5719-llvm-21a518f7fb60bda07f0f3e9dce57f3a34e318610.zip |
[InstCombine] regenerate test checks; NFC
Avoid subsequent test noise from improved CHECK-LABEL matching.
-rw-r--r-- | llvm/test/Transforms/InstCombine/clamp-to-minmax.ll | 94 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/minmax-fold.ll | 186 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/minmax-fp.ll | 68 |
3 files changed, 162 insertions, 186 deletions
diff --git a/llvm/test/Transforms/InstCombine/clamp-to-minmax.ll b/llvm/test/Transforms/InstCombine/clamp-to-minmax.ll index 49b5160ba24..401b0710e7a 100644 --- a/llvm/test/Transforms/InstCombine/clamp-to-minmax.ll +++ b/llvm/test/Transforms/InstCombine/clamp-to-minmax.ll @@ -3,8 +3,7 @@ ; (X < C1) ? C1 : MIN(X, C2) define float @clamp_float_fast_ordered_strict_maxmin(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_ordered_strict_maxmin( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_ordered_strict_maxmin( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp fast olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast oge float [[MIN]], 1.000000e+00 @@ -20,8 +19,7 @@ define float @clamp_float_fast_ordered_strict_maxmin(float %x) { ; (X <= C1) ? C1 : MIN(X, C2) define float @clamp_float_fast_ordered_nonstrict_maxmin(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_ordered_nonstrict_maxmin( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_ordered_nonstrict_maxmin( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp fast olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast oge float [[MIN]], 1.000000e+00 @@ -37,8 +35,7 @@ define float @clamp_float_fast_ordered_nonstrict_maxmin(float %x) { ; (X > C1) ? C1 : MAX(X, C2) define float @clamp_float_fast_ordered_strict_minmax(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_ordered_strict_minmax( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_ordered_strict_minmax( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp fast ogt float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], float [[X]], float 1.000000e+00 ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast ole float [[MAX]], 2.550000e+02 @@ -54,8 +51,7 @@ define float @clamp_float_fast_ordered_strict_minmax(float %x) { ; (X >= C1) ? C1 : MAX(X, C2) define float @clamp_float_fast_ordered_nonstrict_minmax(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_ordered_nonstrict_minmax( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_ordered_nonstrict_minmax( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp fast ogt float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], float [[X]], float 1.000000e+00 ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast ole float [[MAX]], 2.550000e+02 @@ -74,8 +70,7 @@ define float @clamp_float_fast_ordered_nonstrict_minmax(float %x) { ; (X < C1) ? C1 : MIN(X, C2) define float @clamp_float_fast_unordered_strict_maxmin(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_unordered_strict_maxmin( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_unordered_strict_maxmin( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp fast oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast oge float [[MIN]], 1.000000e+00 @@ -91,8 +86,7 @@ define float @clamp_float_fast_unordered_strict_maxmin(float %x) { ; (X <= C1) ? C1 : MIN(X, C2) define float @clamp_float_fast_unordered_nonstrict_maxmin(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_unordered_nonstrict_maxmin( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_unordered_nonstrict_maxmin( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp fast oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast oge float [[MIN]], 1.000000e+00 @@ -108,8 +102,7 @@ define float @clamp_float_fast_unordered_nonstrict_maxmin(float %x) { ; (X > C1) ? C1 : MAX(X, C2) define float @clamp_float_fast_unordered_strict_minmax(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_unordered_strict_minmax( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_unordered_strict_minmax( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp fast ole float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast ole float [[MAX]], 2.550000e+02 @@ -125,8 +118,7 @@ define float @clamp_float_fast_unordered_strict_minmax(float %x) { ; (X >= C1) ? C1 : MAX(X, C2) define float @clamp_float_fast_unordered_nonstrict_minmax(float %x) { -; -; CHECK-LABEL: @clamp_float_fast_unordered_nonstrict_minmax( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_fast_unordered_nonstrict_minmax( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp fast ole float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast ole float [[MAX]], 2.550000e+02 @@ -145,7 +137,7 @@ define float @clamp_float_fast_unordered_nonstrict_minmax(float %x) { ; (X > 1.0) ? min(x, 255.0) : 1.0 ; That did not match because select was in inverse order. define float @clamp_test_1(float %x) { -; CHECK-LABEL: @clamp_test_1( +; CHECK-LABEL: define {{[^@]+}}@clamp_test_1( ; CHECK-NEXT: [[INNER_CMP_INV:%.*]] = fcmp fast oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[INNER_SEL:%.*]] = select i1 [[INNER_CMP_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast oge float [[INNER_SEL]], 1.000000e+00 @@ -163,7 +155,7 @@ define float @clamp_test_1(float %x) { ; Like @clamp_test_1 but HighConst < LowConst define float @clamp_negative_wrong_const(float %x) { -; CHECK-LABEL: @clamp_negative_wrong_const( +; CHECK-LABEL: define {{[^@]+}}@clamp_negative_wrong_const( ; CHECK-NEXT: [[INNER_CMP_INV:%.*]] = fcmp fast oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[INNER_SEL:%.*]] = select i1 [[INNER_CMP_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[OUTER_CMP:%.*]] = fcmp fast ugt float [[X]], 5.120000e+02 @@ -179,7 +171,7 @@ define float @clamp_negative_wrong_const(float %x) { ; Like @clamp_test_1 but both are min define float @clamp_negative_same_op(float %x) { -; CHECK-LABEL: @clamp_negative_same_op( +; CHECK-LABEL: define {{[^@]+}}@clamp_negative_same_op( ; CHECK-NEXT: [[INNER_CMP_INV:%.*]] = fcmp fast oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[INNER_SEL:%.*]] = select i1 [[INNER_CMP_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[OUTER_CMP:%.*]] = fcmp fast ult float [[X]], 1.000000e+00 @@ -198,7 +190,7 @@ define float @clamp_negative_same_op(float %x) { ; First, check that we don't do bad things in the presence of signed zeros define float @clamp_float_with_zero1(float %x) { -; CHECK-LABEL: @clamp_float_with_zero1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_with_zero1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp fast olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole float [[X]], 0.000000e+00 @@ -213,7 +205,7 @@ define float @clamp_float_with_zero1(float %x) { } define float @clamp_float_with_zero2(float %x) { -; CHECK-LABEL: @clamp_float_with_zero2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_with_zero2( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp fast olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt float [[X]], 0.000000e+00 @@ -235,8 +227,7 @@ define float @clamp_float_with_zero2(float %x) { ; (X < C1) ? C1 : MIN(X, C2) define float @clamp_float_ordered_strict_maxmin1(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_strict_maxmin1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_strict_maxmin1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt float [[X]], 1.000000e+00 @@ -251,8 +242,7 @@ define float @clamp_float_ordered_strict_maxmin1(float %x) { } define float @clamp_float_ordered_strict_maxmin2(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_strict_maxmin2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_strict_maxmin2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt float [[X]], 1.000000e+00 @@ -268,8 +258,7 @@ define float @clamp_float_ordered_strict_maxmin2(float %x) { ; (X <= C1) ? C1 : MIN(X, C2) define float @clamp_float_ordered_nonstrict_maxmin1(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_nonstrict_maxmin1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_nonstrict_maxmin1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole float [[X]], 1.000000e+00 @@ -284,8 +273,7 @@ define float @clamp_float_ordered_nonstrict_maxmin1(float %x) { } define float @clamp_float_ordered_nonstrict_maxmin2(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_nonstrict_maxmin2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_nonstrict_maxmin2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole float [[X]], 1.000000e+00 @@ -301,8 +289,7 @@ define float @clamp_float_ordered_nonstrict_maxmin2(float %x) { ; (X > C1) ? C1 : MAX(X, C2) define float @clamp_float_ordered_strict_minmax1(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_strict_minmax1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_strict_minmax1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ogt float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], float [[X]], float 1.000000e+00 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt float [[X]], 2.550000e+02 @@ -317,8 +304,7 @@ define float @clamp_float_ordered_strict_minmax1(float %x) { } define float @clamp_float_ordered_strict_minmax2(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_strict_minmax2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_strict_minmax2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp ole float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt float [[X]], 2.550000e+02 @@ -334,8 +320,7 @@ define float @clamp_float_ordered_strict_minmax2(float %x) { ; (X >= C1) ? C1 : MAX(X, C2) define float @clamp_float_ordered_nonstrict_minmax1(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_nonstrict_minmax1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_nonstrict_minmax1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ogt float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], float [[X]], float 1.000000e+00 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge float [[X]], 2.550000e+02 @@ -350,8 +335,7 @@ define float @clamp_float_ordered_nonstrict_minmax1(float %x) { } define float @clamp_float_ordered_nonstrict_minmax2(float %x) { -; -; CHECK-LABEL: @clamp_float_ordered_nonstrict_minmax2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_ordered_nonstrict_minmax2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp ole float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge float [[X]], 2.550000e+02 @@ -370,8 +354,7 @@ define float @clamp_float_ordered_nonstrict_minmax2(float %x) { ; (X < C1) ? C1 : MIN(X, C2) define float @clamp_float_unordered_strict_maxmin1(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_strict_maxmin1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_strict_maxmin1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult float [[X]], 1.000000e+00 @@ -386,8 +369,7 @@ define float @clamp_float_unordered_strict_maxmin1(float %x) { } define float @clamp_float_unordered_strict_maxmin2(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_strict_maxmin2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_strict_maxmin2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult float [[X]], 1.000000e+00 @@ -403,8 +385,7 @@ define float @clamp_float_unordered_strict_maxmin2(float %x) { ; (X <= C1) ? C1 : MIN(X, C2) define float @clamp_float_unordered_nonstrict_maxmin1(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_nonstrict_maxmin1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_nonstrict_maxmin1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp olt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], float [[X]], float 2.550000e+02 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule float [[X]], 1.000000e+00 @@ -419,8 +400,7 @@ define float @clamp_float_unordered_nonstrict_maxmin1(float %x) { } define float @clamp_float_unordered_nonstrict_maxmin2(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_nonstrict_maxmin2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_nonstrict_maxmin2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp oge float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2_INV]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule float [[X]], 1.000000e+00 @@ -436,8 +416,7 @@ define float @clamp_float_unordered_nonstrict_maxmin2(float %x) { ; (X > C1) ? C1 : MAX(X, C2) define float @clamp_float_unordered_strict_minmax1(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_strict_minmax1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_strict_minmax1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ogt float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], float [[X]], float 1.000000e+00 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt float [[X]], 2.550000e+02 @@ -452,8 +431,7 @@ define float @clamp_float_unordered_strict_minmax1(float %x) { } define float @clamp_float_unordered_strict_minmax2(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_strict_minmax2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_strict_minmax2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp ole float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt float [[X]], 2.550000e+02 @@ -469,8 +447,7 @@ define float @clamp_float_unordered_strict_minmax2(float %x) { ; (X >= C1) ? C1 : MAX(X, C2) define float @clamp_float_unordered_nonstrict_minmax1(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_nonstrict_minmax1( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_nonstrict_minmax1( ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ogt float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], float [[X]], float 1.000000e+00 ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge float [[X]], 2.550000e+02 @@ -485,8 +462,7 @@ define float @clamp_float_unordered_nonstrict_minmax1(float %x) { } define float @clamp_float_unordered_nonstrict_minmax2(float %x) { -; -; CHECK-LABEL: @clamp_float_unordered_nonstrict_minmax2( +; CHECK-LABEL: define {{[^@]+}}@clamp_float_unordered_nonstrict_minmax2( ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp ole float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge float [[X]], 2.550000e+02 @@ -502,7 +478,7 @@ define float @clamp_float_unordered_nonstrict_minmax2(float %x) { ;; Check casts behavior define float @ui32_clamp_and_cast_to_float(i32 %x) { -; CHECK-LABEL: @ui32_clamp_and_cast_to_float( +; CHECK-LABEL: define {{[^@]+}}@ui32_clamp_and_cast_to_float( ; CHECK-NEXT: [[LO_CMP:%.*]] = icmp eq i32 [[X:%.*]], 0 ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X]], 255 ; CHECK-NEXT: [[MIN1:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 255 @@ -519,7 +495,7 @@ define float @ui32_clamp_and_cast_to_float(i32 %x) { } define float @ui64_clamp_and_cast_to_float(i64 %x) { -; CHECK-LABEL: @ui64_clamp_and_cast_to_float( +; CHECK-LABEL: define {{[^@]+}}@ui64_clamp_and_cast_to_float( ; CHECK-NEXT: [[LO_CMP:%.*]] = icmp eq i64 [[X:%.*]], 0 ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i64 [[X]], 255 ; CHECK-NEXT: [[MIN1:%.*]] = select i1 [[TMP1]], i64 [[X]], i64 255 @@ -536,7 +512,7 @@ define float @ui64_clamp_and_cast_to_float(i64 %x) { } define float @mixed_clamp_to_float_1(i32 %x) { -; CHECK-LABEL: @mixed_clamp_to_float_1( +; CHECK-LABEL: define {{[^@]+}}@mixed_clamp_to_float_1( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 255 ; CHECK-NEXT: [[SI_MIN:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i32 [[SI_MIN]], 1 @@ -554,7 +530,7 @@ define float @mixed_clamp_to_float_1(i32 %x) { } define i32 @mixed_clamp_to_i32_1(float %x) { -; CHECK-LABEL: @mixed_clamp_to_i32_1( +; CHECK-LABEL: define {{[^@]+}}@mixed_clamp_to_i32_1( ; CHECK-NEXT: [[FLOAT_MIN_CMP:%.*]] = fcmp ogt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[FLOAT_MIN:%.*]] = select i1 [[FLOAT_MIN_CMP]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[I32_MIN:%.*]] = fptosi float [[FLOAT_MIN]] to i32 @@ -573,7 +549,7 @@ define i32 @mixed_clamp_to_i32_1(float %x) { } define float @mixed_clamp_to_float_2(i32 %x) { -; CHECK-LABEL: @mixed_clamp_to_float_2( +; CHECK-LABEL: define {{[^@]+}}@mixed_clamp_to_float_2( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 255 ; CHECK-NEXT: [[SI_MIN:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i32 [[SI_MIN]], 1 @@ -590,7 +566,7 @@ define float @mixed_clamp_to_float_2(i32 %x) { } define i32 @mixed_clamp_to_i32_2(float %x) { -; CHECK-LABEL: @mixed_clamp_to_i32_2( +; CHECK-LABEL: define {{[^@]+}}@mixed_clamp_to_i32_2( ; CHECK-NEXT: [[FLOAT_MIN_CMP:%.*]] = fcmp ogt float [[X:%.*]], 2.550000e+02 ; CHECK-NEXT: [[FLOAT_MIN:%.*]] = select i1 [[FLOAT_MIN_CMP]], float 2.550000e+02, float [[X]] ; CHECK-NEXT: [[I32_MIN:%.*]] = fptosi float [[FLOAT_MIN]] to i32 diff --git a/llvm/test/Transforms/InstCombine/minmax-fold.ll b/llvm/test/Transforms/InstCombine/minmax-fold.ll index 47588565c5c..2832741afc3 100644 --- a/llvm/test/Transforms/InstCombine/minmax-fold.ll +++ b/llvm/test/Transforms/InstCombine/minmax-fold.ll @@ -3,7 +3,7 @@ ; This is the canonical form for a type-changing min/max. define i64 @t1(i32 %a) { -; CHECK-LABEL: @t1( +; CHECK-LABEL: define {{[^@]+}}@t1( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[A:%.*]], 5 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i32 [[A]], i32 5 ; CHECK-NEXT: [[TMP3:%.*]] = sext i32 [[TMP2]] to i64 @@ -17,7 +17,7 @@ define i64 @t1(i32 %a) { ; Check this is converted into canonical form, as above. define i64 @t2(i32 %a) { -; CHECK-LABEL: @t2( +; CHECK-LABEL: define {{[^@]+}}@t2( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[A:%.*]], 5 ; CHECK-NEXT: [[NARROW:%.*]] = select i1 [[TMP1]], i32 [[A]], i32 5 ; CHECK-NEXT: [[TMP2:%.*]] = sext i32 [[NARROW]] to i64 @@ -31,7 +31,7 @@ define i64 @t2(i32 %a) { ; Same as @t2, with flipped operands and zext instead of sext. define i64 @t3(i32 %a) { -; CHECK-LABEL: @t3( +; CHECK-LABEL: define {{[^@]+}}@t3( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[A:%.*]], 5 ; CHECK-NEXT: [[NARROW:%.*]] = select i1 [[TMP1]], i32 [[A]], i32 5 ; CHECK-NEXT: [[TMP2:%.*]] = zext i32 [[NARROW]] to i64 @@ -45,7 +45,7 @@ define i64 @t3(i32 %a) { ; Same again, with trunc. define i32 @t4(i64 %a) { -; CHECK-LABEL: @t4( +; CHECK-LABEL: define {{[^@]+}}@t4( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i64 [[A:%.*]], 5 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i64 [[A]], i64 5 ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[TMP2]] to i32 @@ -59,7 +59,7 @@ define i32 @t4(i64 %a) { ; Same as @t3, but with mismatched signedness between icmp and zext. define i64 @t5(i32 %a) { -; CHECK-LABEL: @t5( +; CHECK-LABEL: define {{[^@]+}}@t5( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A:%.*]], 5 ; CHECK-NEXT: [[NARROW:%.*]] = select i1 [[TMP1]], i32 [[A]], i32 5 ; CHECK-NEXT: [[TMP2:%.*]] = zext i32 [[NARROW]] to i64 @@ -72,7 +72,7 @@ define i64 @t5(i32 %a) { } define float @t6(i32 %a) { -; CHECK-LABEL: @t6( +; CHECK-LABEL: define {{[^@]+}}@t6( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[A:%.*]], 0 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i32 [[A]], i32 0 ; CHECK-NEXT: [[TMP3:%.*]] = sitofp i32 [[TMP2]] to float @@ -85,7 +85,7 @@ define float @t6(i32 %a) { } define i16 @t7(i32 %a) { -; CHECK-LABEL: @t7( +; CHECK-LABEL: define {{[^@]+}}@t7( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[A:%.*]], -32768 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i32 [[A]], i32 -32768 ; CHECK-NEXT: [[TMP3:%.*]] = trunc i32 [[TMP2]] to i16 @@ -102,7 +102,7 @@ define i16 @t7(i32 %a) { ; which led to a canonicalization fight between different ; parts of instcombine. define i32 @t8(i64 %a, i32 %b) { -; CHECK-LABEL: @t8( +; CHECK-LABEL: define {{[^@]+}}@t8( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i64 [[A:%.*]], -32767 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i64 [[A]], i64 -32767 ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[TMP2]] to i32 @@ -124,7 +124,7 @@ define i32 @t8(i64 %a, i32 %b) { ; Ensure this doesn't get converted to a min/max. define i64 @t9(i32 %a) { -; CHECK-LABEL: @t9( +; CHECK-LABEL: define {{[^@]+}}@t9( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A:%.*]], -1 ; CHECK-NEXT: [[TMP2:%.*]] = sext i32 [[A]] to i64 ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i64 [[TMP2]], i64 4294967295 @@ -137,7 +137,7 @@ define i64 @t9(i32 %a) { } define float @t10(i32 %x) { -; CHECK-LABEL: @t10( +; CHECK-LABEL: define {{[^@]+}}@t10( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X:%.*]], 255 ; CHECK-NEXT: [[R1:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP2:%.*]] = sitofp i32 [[R1]] to float @@ -150,7 +150,7 @@ define float @t10(i32 %x) { } define float @t11(i64 %x) { -; CHECK-LABEL: @t11( +; CHECK-LABEL: define {{[^@]+}}@t11( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i64 [[X:%.*]], 255 ; CHECK-NEXT: [[R1:%.*]] = select i1 [[TMP1]], i64 [[X]], i64 255 ; CHECK-NEXT: [[TMP2:%.*]] = sitofp i64 [[R1]] to float @@ -165,7 +165,7 @@ define float @t11(i64 %x) { ; Reuse the first 2 bitcasts as the select operands. define <4 x i32> @bitcasts_fcmp_1(<2 x i64> %a, <2 x i64> %b) { -; CHECK-LABEL: @bitcasts_fcmp_1( +; CHECK-LABEL: define {{[^@]+}}@bitcasts_fcmp_1( ; CHECK-NEXT: [[T0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x float> ; CHECK-NEXT: [[T1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <4 x float> ; CHECK-NEXT: [[T2:%.*]] = fcmp olt <4 x float> [[T1]], [[T0]] @@ -185,7 +185,7 @@ define <4 x i32> @bitcasts_fcmp_1(<2 x i64> %a, <2 x i64> %b) { ; Switch cmp operand order. define <4 x i32> @bitcasts_fcmp_2(<2 x i64> %a, <2 x i64> %b) { -; CHECK-LABEL: @bitcasts_fcmp_2( +; CHECK-LABEL: define {{[^@]+}}@bitcasts_fcmp_2( ; CHECK-NEXT: [[T0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x float> ; CHECK-NEXT: [[T1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <4 x float> ; CHECK-NEXT: [[T2:%.*]] = fcmp olt <4 x float> [[T0]], [[T1]] @@ -205,7 +205,7 @@ define <4 x i32> @bitcasts_fcmp_2(<2 x i64> %a, <2 x i64> %b) { ; Integer cmp should have the same transforms. define <4 x float> @bitcasts_icmp(<2 x i64> %a, <2 x i64> %b) { -; CHECK-LABEL: @bitcasts_icmp( +; CHECK-LABEL: define {{[^@]+}}@bitcasts_icmp( ; CHECK-NEXT: [[T0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32> ; CHECK-NEXT: [[T1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <4 x i32> ; CHECK-NEXT: [[T2:%.*]] = icmp slt <4 x i32> [[T1]], [[T0]] @@ -224,7 +224,7 @@ define <4 x float> @bitcasts_icmp(<2 x i64> %a, <2 x i64> %b) { ; SMIN(SMIN(X, 11), 92) -> SMIN(X, 11) define i32 @test68(i32 %x) { -; CHECK-LABEL: @test68( +; CHECK-LABEL: define {{[^@]+}}@test68( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 11 ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 11 ; CHECK-NEXT: ret i32 [[COND]] @@ -237,7 +237,7 @@ define i32 @test68(i32 %x) { } define <2 x i32> @test68vec(<2 x i32> %x) { -; CHECK-LABEL: @test68vec( +; CHECK-LABEL: define {{[^@]+}}@test68vec( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 11, i32 11> ; CHECK-NEXT: [[COND:%.*]] = select <2 x i1> [[TMP1]], <2 x i32> [[X]], <2 x i32> <i32 11, i32 11> ; CHECK-NEXT: ret <2 x i32> [[COND]] @@ -251,7 +251,7 @@ define <2 x i32> @test68vec(<2 x i32> %x) { ; MIN(MIN(X, 24), 83) -> MIN(X, 24) define i32 @test69(i32 %x) { -; CHECK-LABEL: @test69( +; CHECK-LABEL: define {{[^@]+}}@test69( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X:%.*]], 24 ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 24 ; CHECK-NEXT: ret i32 [[COND]] @@ -265,7 +265,7 @@ define i32 @test69(i32 %x) { ; SMAX(SMAX(X, 75), 36) -> SMAX(X, 75) define i32 @test70(i32 %x) { -; CHECK-LABEL: @test70( +; CHECK-LABEL: define {{[^@]+}}@test70( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X:%.*]], 75 ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 75 ; CHECK-NEXT: ret i32 [[COND]] @@ -279,7 +279,7 @@ define i32 @test70(i32 %x) { ; MAX(MAX(X, 68), 47) -> MAX(X, 68) define i32 @test71(i32 %x) { -; CHECK-LABEL: @test71( +; CHECK-LABEL: define {{[^@]+}}@test71( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[X:%.*]], 68 ; CHECK-NEXT: [[COND:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 68 ; CHECK-NEXT: ret i32 [[COND]] @@ -293,7 +293,7 @@ define i32 @test71(i32 %x) { ; SMIN(SMIN(X, 92), 11) -> SMIN(X, 11) define i32 @test72(i32 %x) { -; CHECK-LABEL: @test72( +; CHECK-LABEL: define {{[^@]+}}@test72( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 11 ; CHECK-NEXT: [[RETVAL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 11 ; CHECK-NEXT: ret i32 [[RETVAL]] @@ -306,7 +306,7 @@ define i32 @test72(i32 %x) { } define <2 x i32> @test72vec(<2 x i32> %x) { -; CHECK-LABEL: @test72vec( +; CHECK-LABEL: define {{[^@]+}}@test72vec( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 11, i32 11> ; CHECK-NEXT: [[RETVAL:%.*]] = select <2 x i1> [[TMP1]], <2 x i32> [[X]], <2 x i32> <i32 11, i32 11> ; CHECK-NEXT: ret <2 x i32> [[RETVAL]] @@ -320,7 +320,7 @@ define <2 x i32> @test72vec(<2 x i32> %x) { ; MIN(MIN(X, 83), 24) -> MIN(X, 24) define i32 @test73(i32 %x) { -; CHECK-LABEL: @test73( +; CHECK-LABEL: define {{[^@]+}}@test73( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X:%.*]], 24 ; CHECK-NEXT: [[RETVAL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 24 ; CHECK-NEXT: ret i32 [[RETVAL]] @@ -334,7 +334,7 @@ define i32 @test73(i32 %x) { ; SMAX(SMAX(X, 36), 75) -> SMAX(X, 75) define i32 @test74(i32 %x) { -; CHECK-LABEL: @test74( +; CHECK-LABEL: define {{[^@]+}}@test74( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X:%.*]], 75 ; CHECK-NEXT: [[RETVAL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 75 ; CHECK-NEXT: ret i32 [[RETVAL]] @@ -348,7 +348,7 @@ define i32 @test74(i32 %x) { ; MAX(MAX(X, 47), 68) -> MAX(X, 68) define i32 @test75(i32 %x) { -; CHECK-LABEL: @test75( +; CHECK-LABEL: define {{[^@]+}}@test75( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[X:%.*]], 68 ; CHECK-NEXT: [[RETVAL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 68 ; CHECK-NEXT: ret i32 [[RETVAL]] @@ -366,7 +366,7 @@ define i32 @test75(i32 %x) { ; (X <s C1) ? C1 : SMIN(X, C2) ==> SMAX(SMIN(X, C2), C1) define i32 @clamp_signed1(i32 %x) { -; CHECK-LABEL: @clamp_signed1( +; CHECK-LABEL: define {{[^@]+}}@clamp_signed1( ; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[X:%.*]], 255 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[MIN]], 15 @@ -383,7 +383,7 @@ define i32 @clamp_signed1(i32 %x) { ; (X >s C1) ? C1 : SMAX(X, C2) ==> SMIN(SMAX(X, C2), C1) define i32 @clamp_signed2(i32 %x) { -; CHECK-LABEL: @clamp_signed2( +; CHECK-LABEL: define {{[^@]+}}@clamp_signed2( ; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[X:%.*]], 15 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 15 ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[MAX]], 255 @@ -400,7 +400,7 @@ define i32 @clamp_signed2(i32 %x) { ; (X >s C1) ? SMIN(X, C2) : C1 ==> SMAX(SMIN(X, C2), C1) define i32 @clamp_signed3(i32 %x) { -; CHECK-LABEL: @clamp_signed3( +; CHECK-LABEL: define {{[^@]+}}@clamp_signed3( ; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[X:%.*]], 255 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[MIN]], 15 @@ -417,7 +417,7 @@ define i32 @clamp_signed3(i32 %x) { ; (X <s C1) ? SMAX(X, C2) : C1 ==> SMIN(SMAX(X, C1), C2) define i32 @clamp_signed4(i32 %x) { -; CHECK-LABEL: @clamp_signed4( +; CHECK-LABEL: define {{[^@]+}}@clamp_signed4( ; CHECK-NEXT: [[CMP2:%.*]] = icmp sgt i32 [[X:%.*]], 15 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 15 ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[MAX]], 255 @@ -434,7 +434,7 @@ define i32 @clamp_signed4(i32 %x) { ; (X <u C1) ? C1 : UMIN(X, C2) ==> UMAX(UMIN(X, C2), C1) define i32 @clamp_unsigned1(i32 %x) { -; CHECK-LABEL: @clamp_unsigned1( +; CHECK-LABEL: define {{[^@]+}}@clamp_unsigned1( ; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i32 [[X:%.*]], 255 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[MIN]], 15 @@ -451,7 +451,7 @@ define i32 @clamp_unsigned1(i32 %x) { ; (X >u C1) ? C1 : UMAX(X, C2) ==> UMIN(UMAX(X, C2), C1) define i32 @clamp_unsigned2(i32 %x) { -; CHECK-LABEL: @clamp_unsigned2( +; CHECK-LABEL: define {{[^@]+}}@clamp_unsigned2( ; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i32 [[X:%.*]], 15 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 15 ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[MAX]], 255 @@ -468,7 +468,7 @@ define i32 @clamp_unsigned2(i32 %x) { ; (X >u C1) ? UMIN(X, C2) : C1 ==> UMAX(UMIN(X, C2), C1) define i32 @clamp_unsigned3(i32 %x) { -; CHECK-LABEL: @clamp_unsigned3( +; CHECK-LABEL: define {{[^@]+}}@clamp_unsigned3( ; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i32 [[X:%.*]], 255 ; CHECK-NEXT: [[MIN:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 255 ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[MIN]], 15 @@ -485,7 +485,7 @@ define i32 @clamp_unsigned3(i32 %x) { ; (X <u C1) ? UMAX(X, C2) : C1 ==> UMIN(UMAX(X, C2), C1) define i32 @clamp_unsigned4(i32 %x) { -; CHECK-LABEL: @clamp_unsigned4( +; CHECK-LABEL: define {{[^@]+}}@clamp_unsigned4( ; CHECK-NEXT: [[CMP2:%.*]] = icmp ugt i32 [[X:%.*]], 15 ; CHECK-NEXT: [[MAX:%.*]] = select i1 [[CMP2]], i32 [[X]], i32 15 ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[MAX]], 255 @@ -503,7 +503,7 @@ define i32 @clamp_unsigned4(i32 %x) { ; loop because of reverse cmp transformation: ; (icmp sgt smin(PositiveA, B) 0) -> (icmp sgt B 0) define i32 @clamp_check_for_no_infinite_loop1(i32 %i) { -; CHECK-LABEL: @clamp_check_for_no_infinite_loop1( +; CHECK-LABEL: define {{[^@]+}}@clamp_check_for_no_infinite_loop1( ; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 [[I:%.*]], 255 ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[CMP1]], i32 [[I]], i32 255 ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[SEL1]], 0 @@ -519,7 +519,7 @@ define i32 @clamp_check_for_no_infinite_loop1(i32 %i) { ; Check that there is no infinite loop in case of: ; (icmp slt smax(NegativeA, B) 0) -> (icmp slt B 0) define i32 @clamp_check_for_no_infinite_loop2(i32 %i) { -; CHECK-LABEL: @clamp_check_for_no_infinite_loop2( +; CHECK-LABEL: define {{[^@]+}}@clamp_check_for_no_infinite_loop2( ; CHECK-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[I:%.*]], -255 ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[CMP1]], i32 [[I]], i32 -255 ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[SEL1]], 0 @@ -536,7 +536,7 @@ define i32 @clamp_check_for_no_infinite_loop2(i32 %i) { ; Check that there is no infinite loop because of reverse cmp transformation: ; (icmp slt smax(PositiveA, B) 2) -> (icmp eq B 1) define i32 @clamp_check_for_no_infinite_loop3(i32 %i) { -; CHECK-LABEL: @clamp_check_for_no_infinite_loop3( +; CHECK-LABEL: define {{[^@]+}}@clamp_check_for_no_infinite_loop3( ; CHECK-NEXT: [[I2:%.*]] = icmp sgt i32 [[I:%.*]], 1 ; CHECK-NEXT: [[I3:%.*]] = select i1 [[I2]], i32 [[I]], i32 1 ; CHECK-NEXT: br i1 true, label [[TRUELABEL:%.*]], label [[FALSELABEL:%.*]] @@ -567,7 +567,7 @@ falselabel: ; The next 3 min tests should canonicalize to the same form...and not infinite loop. define double @PR31751_umin1(i32 %x) { -; CHECK-LABEL: @PR31751_umin1( +; CHECK-LABEL: define {{[^@]+}}@PR31751_umin1( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X:%.*]], 2147483647 ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 2147483647 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[SEL]] to double @@ -580,7 +580,7 @@ define double @PR31751_umin1(i32 %x) { } define double @PR31751_umin2(i32 %x) { -; CHECK-LABEL: @PR31751_umin2( +; CHECK-LABEL: define {{[^@]+}}@PR31751_umin2( ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X:%.*]], 2147483647 ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 [[X]], i32 2147483647 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[SEL]] to double @@ -593,7 +593,7 @@ define double @PR31751_umin2(i32 %x) { } define double @PR31751_umin3(i32 %x) { -; CHECK-LABEL: @PR31751_umin3( +; CHECK-LABEL: define {{[^@]+}}@PR31751_umin3( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X:%.*]], 2147483647 ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 2147483647 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[SEL]] to double @@ -608,7 +608,7 @@ define double @PR31751_umin3(i32 %x) { ; The next 3 max tests should canonicalize to the same form...and not infinite loop. define double @PR31751_umax1(i32 %x) { -; CHECK-LABEL: @PR31751_umax1( +; CHECK-LABEL: define {{[^@]+}}@PR31751_umax1( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[X:%.*]], -2147483648 ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 -2147483648 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[SEL]] to double @@ -621,7 +621,7 @@ define double @PR31751_umax1(i32 %x) { } define double @PR31751_umax2(i32 %x) { -; CHECK-LABEL: @PR31751_umax2( +; CHECK-LABEL: define {{[^@]+}}@PR31751_umax2( ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[X:%.*]], -2147483648 ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 [[X]], i32 -2147483648 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[SEL]] to double @@ -634,7 +634,7 @@ define double @PR31751_umax2(i32 %x) { } define double @PR31751_umax3(i32 %x) { -; CHECK-LABEL: @PR31751_umax3( +; CHECK-LABEL: define {{[^@]+}}@PR31751_umax3( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[X:%.*]], -2147483648 ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 -2147483648 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[SEL]] to double @@ -649,7 +649,7 @@ define double @PR31751_umax3(i32 %x) { ; The icmp/select form a canonical smax, so don't hide that by folding the final bitcast into the select. define float @bitcast_scalar_smax(float %x, float %y) { -; CHECK-LABEL: @bitcast_scalar_smax( +; CHECK-LABEL: define {{[^@]+}}@bitcast_scalar_smax( ; CHECK-NEXT: [[BCX:%.*]] = bitcast float [[X:%.*]] to i32 ; CHECK-NEXT: [[BCY:%.*]] = bitcast float [[Y:%.*]] to i32 ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[BCX]], [[BCY]] @@ -668,7 +668,7 @@ define float @bitcast_scalar_smax(float %x, float %y) { ; FIXME: Create a canonical umax by bitcasting the select. define float @bitcast_scalar_umax(float %x, float %y) { -; CHECK-LABEL: @bitcast_scalar_umax( +; CHECK-LABEL: define {{[^@]+}}@bitcast_scalar_umax( ; CHECK-NEXT: [[BCX:%.*]] = bitcast float [[X:%.*]] to i32 ; CHECK-NEXT: [[BCY:%.*]] = bitcast float [[Y:%.*]] to i32 ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[BCX]], [[BCY]] @@ -686,7 +686,7 @@ define float @bitcast_scalar_umax(float %x, float %y) { ; The icmp/select form a canonical smin, so don't hide that by folding the final bitcast into the select. define <8 x float> @bitcast_vector_smin(<8 x float> %x, <8 x float> %y) { -; CHECK-LABEL: @bitcast_vector_smin( +; CHECK-LABEL: define {{[^@]+}}@bitcast_vector_smin( ; CHECK-NEXT: [[BCX:%.*]] = bitcast <8 x float> [[X:%.*]] to <8 x i32> ; CHECK-NEXT: [[BCY:%.*]] = bitcast <8 x float> [[Y:%.*]] to <8 x i32> ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <8 x i32> [[BCX]], [[BCY]] @@ -705,7 +705,7 @@ define <8 x float> @bitcast_vector_smin(<8 x float> %x, <8 x float> %y) { ; FIXME: Create a canonical umin by bitcasting the select. define <8 x float> @bitcast_vector_umin(<8 x float> %x, <8 x float> %y) { -; CHECK-LABEL: @bitcast_vector_umin( +; CHECK-LABEL: define {{[^@]+}}@bitcast_vector_umin( ; CHECK-NEXT: [[BCX:%.*]] = bitcast <8 x float> [[X:%.*]] to <8 x i32> ; CHECK-NEXT: [[BCY:%.*]] = bitcast <8 x float> [[Y:%.*]] to <8 x i32> ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <8 x i32> [[BCX]], [[BCY]] @@ -722,7 +722,7 @@ define <8 x float> @bitcast_vector_umin(<8 x float> %x, <8 x float> %y) { ; Check that we look through cast and recognize min idiom. define zeroext i8 @look_through_cast1(i32 %x) { -; CHECK-LABEL: @look_through_cast1( +; CHECK-LABEL: define {{[^@]+}}@look_through_cast1( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 511 ; CHECK-NEXT: [[RES1:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 511 ; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[RES1]] to i8 @@ -737,7 +737,7 @@ define zeroext i8 @look_through_cast1(i32 %x) { ; Check that we look through cast but min is not recognized. define zeroext i8 @look_through_cast2(i32 %x) { -; CHECK-LABEL: @look_through_cast2( +; CHECK-LABEL: define {{[^@]+}}@look_through_cast2( ; CHECK-NEXT: [[CMP1:%.*]] = icmp slt i32 [[X:%.*]], 510 ; CHECK-NEXT: [[X_TRUNC:%.*]] = trunc i32 [[X]] to i8 ; CHECK-NEXT: [[RES:%.*]] = select i1 [[CMP1]], i8 [[X_TRUNC]], i8 -1 @@ -750,7 +750,7 @@ define zeroext i8 @look_through_cast2(i32 %x) { } define <2 x i8> @min_through_cast_vec1(<2 x i32> %x) { -; CHECK-LABEL: @min_through_cast_vec1( +; CHECK-LABEL: define {{[^@]+}}@min_through_cast_vec1( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 510, i32 511> ; CHECK-NEXT: [[RES1:%.*]] = select <2 x i1> [[TMP1]], <2 x i32> [[X]], <2 x i32> <i32 510, i32 511> ; CHECK-NEXT: [[TMP2:%.*]] = trunc <2 x i32> [[RES1]] to <2 x i8> @@ -763,7 +763,7 @@ define <2 x i8> @min_through_cast_vec1(<2 x i32> %x) { } define <2 x i8> @min_through_cast_vec2(<2 x i32> %x) { -; CHECK-LABEL: @min_through_cast_vec2( +; CHECK-LABEL: define {{[^@]+}}@min_through_cast_vec2( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 511, i32 511> ; CHECK-NEXT: [[RES1:%.*]] = select <2 x i1> [[TMP1]], <2 x i32> [[X]], <2 x i32> <i32 511, i32 511> ; CHECK-NEXT: [[TMP2:%.*]] = trunc <2 x i32> [[RES1]] to <2 x i8> @@ -781,7 +781,7 @@ define <2 x i8> @min_through_cast_vec2(<2 x i32> %x) { ; min(min(a, b), min(b, c)) --> min(min(a, b), c) define i32 @common_factor_smin(i32 %a, i32 %b, i32 %c) { -; CHECK-LABEL: @common_factor_smin( +; CHECK-LABEL: define {{[^@]+}}@common_factor_smin( ; CHECK-NEXT: [[CMP_AB:%.*]] = icmp slt i32 [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[MIN_AB:%.*]] = select i1 [[CMP_AB]], i32 [[A]], i32 [[B]] ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[MIN_AB]], [[C:%.*]] @@ -800,7 +800,7 @@ define i32 @common_factor_smin(i32 %a, i32 %b, i32 %c) { ; max(max(a, b), max(c, b)) --> max(max(a, b), c) define <2 x i32> @common_factor_smax(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c) { -; CHECK-LABEL: @common_factor_smax( +; CHECK-LABEL: define {{[^@]+}}@common_factor_smax( ; CHECK-NEXT: [[CMP_AB:%.*]] = icmp sgt <2 x i32> [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[MAX_AB:%.*]] = select <2 x i1> [[CMP_AB]], <2 x i32> [[A]], <2 x i32> [[B]] ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt <2 x i32> [[MAX_AB]], [[C:%.*]] @@ -819,7 +819,7 @@ define <2 x i32> @common_factor_smax(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c) { ; min(min(b, c), min(a, b)) --> min(min(b, c), a) define <2 x i32> @common_factor_umin(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c) { -; CHECK-LABEL: @common_factor_umin( +; CHECK-LABEL: define {{[^@]+}}@common_factor_umin( ; CHECK-NEXT: [[CMP_BC:%.*]] = icmp ult <2 x i32> [[B:%.*]], [[C:%.*]] ; CHECK-NEXT: [[MIN_BC:%.*]] = select <2 x i1> [[CMP_BC]], <2 x i32> [[B]], <2 x i32> [[C]] ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i32> [[MIN_BC]], [[A:%.*]] @@ -838,7 +838,7 @@ define <2 x i32> @common_factor_umin(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c) { ; max(max(b, c), max(b, a)) --> max(max(b, c), a) define i32 @common_factor_umax(i32 %a, i32 %b, i32 %c) { -; CHECK-LABEL: @common_factor_umax( +; CHECK-LABEL: define {{[^@]+}}@common_factor_umax( ; CHECK-NEXT: [[CMP_BC:%.*]] = icmp ugt i32 [[B:%.*]], [[C:%.*]] ; CHECK-NEXT: [[MAX_BC:%.*]] = select i1 [[CMP_BC]], i32 [[B]], i32 [[C]] ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[MAX_BC]], [[A:%.*]] @@ -857,7 +857,7 @@ define i32 @common_factor_umax(i32 %a, i32 %b, i32 %c) { declare void @extra_use(i32) define i32 @common_factor_umax_extra_use_lhs(i32 %a, i32 %b, i32 %c) { -; CHECK-LABEL: @common_factor_umax_extra_use_lhs( +; CHECK-LABEL: define {{[^@]+}}@common_factor_umax_extra_use_lhs( ; CHECK-NEXT: [[CMP_BC:%.*]] = icmp ugt i32 [[B:%.*]], [[C:%.*]] ; CHECK-NEXT: [[MAX_BC:%.*]] = select i1 [[CMP_BC]], i32 [[B]], i32 [[C]] ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[MAX_BC]], [[A:%.*]] @@ -876,7 +876,7 @@ define i32 @common_factor_umax_extra_use_lhs(i32 %a, i32 %b, i32 %c) { } define i32 @common_factor_umax_extra_use_rhs(i32 %a, i32 %b, i32 %c) { -; CHECK-LABEL: @common_factor_umax_extra_use_rhs( +; CHECK-LABEL: define {{[^@]+}}@common_factor_umax_extra_use_rhs( ; CHECK-NEXT: [[CMP_BA:%.*]] = icmp ugt i32 [[B:%.*]], [[A:%.*]] ; CHECK-NEXT: [[MAX_BA:%.*]] = select i1 [[CMP_BA]], i32 [[B]], i32 [[A]] ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 [[MAX_BA]], [[C:%.*]] @@ -895,7 +895,7 @@ define i32 @common_factor_umax_extra_use_rhs(i32 %a, i32 %b, i32 %c) { } define i32 @common_factor_umax_extra_use_both(i32 %a, i32 %b, i32 %c) { -; CHECK-LABEL: @common_factor_umax_extra_use_both( +; CHECK-LABEL: define {{[^@]+}}@common_factor_umax_extra_use_both( ; CHECK-NEXT: [[CMP_BC:%.*]] = icmp ugt i32 [[B:%.*]], [[C:%.*]] ; CHECK-NEXT: [[MAX_BC:%.*]] = select i1 [[CMP_BC]], i32 [[B]], i32 [[C]] ; CHECK-NEXT: [[CMP_BA:%.*]] = icmp ugt i32 [[B]], [[A:%.*]] @@ -920,7 +920,7 @@ define i32 @common_factor_umax_extra_use_both(i32 %a, i32 %b, i32 %c) { ; This would assert. Don't assume that earlier min/max types match a possible later min/max. define float @not_min_of_min(i8 %i, float %x) { -; CHECK-LABEL: @not_min_of_min( +; CHECK-LABEL: define {{[^@]+}}@not_min_of_min( ; CHECK-NEXT: [[CMP1_INV:%.*]] = fcmp fast oge float [[X:%.*]], 1.000000e+00 ; CHECK-NEXT: [[MIN1:%.*]] = select i1 [[CMP1_INV]], float 1.000000e+00, float [[X]] ; CHECK-NEXT: [[CMP2_INV:%.*]] = fcmp fast oge float [[X]], 2.000000e+00 @@ -939,7 +939,7 @@ define float @not_min_of_min(i8 %i, float %x) { } define i32 @add_umin(i32 %x) { -; CHECK-LABEL: @add_umin( +; CHECK-LABEL: define {{[^@]+}}@add_umin( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 [[X:%.*]], 27 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 27 ; CHECK-NEXT: [[R:%.*]] = add nuw nsw i32 [[TMP2]], 15 @@ -952,7 +952,7 @@ define i32 @add_umin(i32 %x) { } define i32 @add_umin_constant_limit(i32 %x) { -; CHECK-LABEL: @add_umin_constant_limit( +; CHECK-LABEL: define {{[^@]+}}@add_umin_constant_limit( ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[X:%.*]], 0 ; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP1]], i32 41, i32 42 ; CHECK-NEXT: ret i32 [[R]] @@ -967,7 +967,7 @@ define i32 @add_umin_constant_limit(i32 %x) { ; TODO: assert that instsimplify always gets this? define i32 @add_umin_simplify(i32 %x) { -; CHECK-LABEL: @add_umin_simplify( +; CHECK-LABEL: define {{[^@]+}}@add_umin_simplify( ; CHECK-NEXT: ret i32 42 ; %a = add nuw i32 %x, 42 @@ -980,7 +980,7 @@ define i32 @add_umin_simplify(i32 %x) { ; TODO: assert that instsimplify always gets this? define i32 @add_umin_simplify2(i32 %x) { -; CHECK-LABEL: @add_umin_simplify2( +; CHECK-LABEL: define {{[^@]+}}@add_umin_simplify2( ; CHECK-NEXT: ret i32 42 ; %a = add nuw i32 %x, 43 @@ -992,7 +992,7 @@ define i32 @add_umin_simplify2(i32 %x) { ; Negative test define i32 @add_umin_wrong_pred(i32 %x) { -; CHECK-LABEL: @add_umin_wrong_pred( +; CHECK-LABEL: define {{[^@]+}}@add_umin_wrong_pred( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp slt i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1007,7 +1007,7 @@ define i32 @add_umin_wrong_pred(i32 %x) { ; Negative test define i32 @add_umin_wrong_wrap(i32 %x) { -; CHECK-LABEL: @add_umin_wrong_wrap( +; CHECK-LABEL: define {{[^@]+}}@add_umin_wrong_wrap( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1022,7 +1022,7 @@ define i32 @add_umin_wrong_wrap(i32 %x) { ; Negative test define i32 @add_umin_extra_use(i32 %x, i32* %p) { -; CHECK-LABEL: @add_umin_extra_use( +; CHECK-LABEL: define {{[^@]+}}@add_umin_extra_use( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 15 ; CHECK-NEXT: store i32 [[A]], i32* [[P:%.*]], align 4 ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A]], 42 @@ -1037,7 +1037,7 @@ define i32 @add_umin_extra_use(i32 %x, i32* %p) { } define <2 x i16> @add_umin_vec(<2 x i16> %x) { -; CHECK-LABEL: @add_umin_vec( +; CHECK-LABEL: define {{[^@]+}}@add_umin_vec( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ult <2 x i16> [[X:%.*]], <i16 225, i16 225> ; CHECK-NEXT: [[TMP2:%.*]] = select <2 x i1> [[TMP1]], <2 x i16> [[X]], <2 x i16> <i16 225, i16 225> ; CHECK-NEXT: [[R:%.*]] = add nuw nsw <2 x i16> [[TMP2]], <i16 15, i16 15> @@ -1050,7 +1050,7 @@ define <2 x i16> @add_umin_vec(<2 x i16> %x) { } define i37 @add_umax(i37 %x) { -; CHECK-LABEL: @add_umax( +; CHECK-LABEL: define {{[^@]+}}@add_umax( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i37 [[X:%.*]], 37 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i37 [[X]], i37 37 ; CHECK-NEXT: [[R:%.*]] = add nuw i37 [[TMP2]], 5 @@ -1063,7 +1063,7 @@ define i37 @add_umax(i37 %x) { } define i37 @add_umax_constant_limit(i37 %x) { -; CHECK-LABEL: @add_umax_constant_limit( +; CHECK-LABEL: define {{[^@]+}}@add_umax_constant_limit( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i37 [[X:%.*]], 1 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i37 [[X]], i37 1 ; CHECK-NEXT: [[R:%.*]] = add nuw i37 [[TMP2]], 81 @@ -1079,7 +1079,7 @@ define i37 @add_umax_constant_limit(i37 %x) { ; TODO: assert that instsimplify always gets this? define i37 @add_umax_simplify(i37 %x) { -; CHECK-LABEL: @add_umax_simplify( +; CHECK-LABEL: define {{[^@]+}}@add_umax_simplify( ; CHECK-NEXT: [[A:%.*]] = add i37 [[X:%.*]], 42 ; CHECK-NEXT: ret i37 [[A]] ; @@ -1093,7 +1093,7 @@ define i37 @add_umax_simplify(i37 %x) { ; TODO: assert that instsimplify always gets this? define i32 @add_umax_simplify2(i32 %x) { -; CHECK-LABEL: @add_umax_simplify2( +; CHECK-LABEL: define {{[^@]+}}@add_umax_simplify2( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 57 ; CHECK-NEXT: ret i32 [[A]] ; @@ -1106,7 +1106,7 @@ define i32 @add_umax_simplify2(i32 %x) { ; Negative test define i32 @add_umax_wrong_pred(i32 %x) { -; CHECK-LABEL: @add_umax_wrong_pred( +; CHECK-LABEL: define {{[^@]+}}@add_umax_wrong_pred( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1121,7 +1121,7 @@ define i32 @add_umax_wrong_pred(i32 %x) { ; Negative test define i32 @add_umax_wrong_wrap(i32 %x) { -; CHECK-LABEL: @add_umax_wrong_wrap( +; CHECK-LABEL: define {{[^@]+}}@add_umax_wrong_wrap( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1136,7 +1136,7 @@ define i32 @add_umax_wrong_wrap(i32 %x) { ; Negative test define i32 @add_umax_extra_use(i32 %x, i32* %p) { -; CHECK-LABEL: @add_umax_extra_use( +; CHECK-LABEL: define {{[^@]+}}@add_umax_extra_use( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 15 ; CHECK-NEXT: store i32 [[A]], i32* [[P:%.*]], align 4 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A]], 42 @@ -1151,7 +1151,7 @@ define i32 @add_umax_extra_use(i32 %x, i32* %p) { } define <2 x i33> @add_umax_vec(<2 x i33> %x) { -; CHECK-LABEL: @add_umax_vec( +; CHECK-LABEL: define {{[^@]+}}@add_umax_vec( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt <2 x i33> [[X:%.*]], <i33 235, i33 235> ; CHECK-NEXT: [[TMP2:%.*]] = select <2 x i1> [[TMP1]], <2 x i33> [[X]], <2 x i33> <i33 235, i33 235> ; CHECK-NEXT: [[R:%.*]] = add nuw <2 x i33> [[TMP2]], <i33 5, i33 5> @@ -1164,7 +1164,7 @@ define <2 x i33> @add_umax_vec(<2 x i33> %x) { } define i8 @PR14613_umin(i8 %x) { -; CHECK-LABEL: @PR14613_umin( +; CHECK-LABEL: define {{[^@]+}}@PR14613_umin( ; CHECK-NEXT: [[U7:%.*]] = call i8 @llvm.uadd.sat.i8(i8 [[X:%.*]], i8 15) ; CHECK-NEXT: ret i8 [[U7]] ; @@ -1177,7 +1177,7 @@ define i8 @PR14613_umin(i8 %x) { } define i8 @PR14613_umax(i8 %x) { -; CHECK-LABEL: @PR14613_umax( +; CHECK-LABEL: define {{[^@]+}}@PR14613_umax( ; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i8 [[X:%.*]], -16 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i8 [[X]], i8 -16 ; CHECK-NEXT: [[U7:%.*]] = add nsw i8 [[TMP2]], 15 @@ -1192,7 +1192,7 @@ define i8 @PR14613_umax(i8 %x) { } define i32 @add_smin(i32 %x) { -; CHECK-LABEL: @add_smin( +; CHECK-LABEL: define {{[^@]+}}@add_smin( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 27 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 27 ; CHECK-NEXT: [[R:%.*]] = add nsw i32 [[TMP2]], 15 @@ -1205,7 +1205,7 @@ define i32 @add_smin(i32 %x) { } define i32 @add_smin_constant_limit(i32 %x) { -; CHECK-LABEL: @add_smin_constant_limit( +; CHECK-LABEL: define {{[^@]+}}@add_smin_constant_limit( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[X:%.*]], 2147483646 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 2147483646 ; CHECK-NEXT: [[R:%.*]] = add nsw i32 [[TMP2]], -3 @@ -1221,7 +1221,7 @@ define i32 @add_smin_constant_limit(i32 %x) { ; TODO: assert that instsimplify always gets this? define i32 @add_smin_simplify(i32 %x) { -; CHECK-LABEL: @add_smin_simplify( +; CHECK-LABEL: define {{[^@]+}}@add_smin_simplify( ; CHECK-NEXT: [[R:%.*]] = add nsw i32 [[X:%.*]], -3 ; CHECK-NEXT: ret i32 [[R]] ; @@ -1235,7 +1235,7 @@ define i32 @add_smin_simplify(i32 %x) { ; TODO: assert that instsimplify always gets this? define i32 @add_smin_simplify2(i32 %x) { -; CHECK-LABEL: @add_smin_simplify2( +; CHECK-LABEL: define {{[^@]+}}@add_smin_simplify2( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], -3 ; CHECK-NEXT: ret i32 [[A]] ; @@ -1248,7 +1248,7 @@ define i32 @add_smin_simplify2(i32 %x) { ; Negative test define i32 @add_smin_wrong_pred(i32 %x) { -; CHECK-LABEL: @add_smin_wrong_pred( +; CHECK-LABEL: define {{[^@]+}}@add_smin_wrong_pred( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1263,7 +1263,7 @@ define i32 @add_smin_wrong_pred(i32 %x) { ; Negative test define i32 @add_smin_wrong_wrap(i32 %x) { -; CHECK-LABEL: @add_smin_wrong_wrap( +; CHECK-LABEL: define {{[^@]+}}@add_smin_wrong_wrap( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp slt i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1278,7 +1278,7 @@ define i32 @add_smin_wrong_wrap(i32 %x) { ; Negative test define i32 @add_smin_extra_use(i32 %x, i32* %p) { -; CHECK-LABEL: @add_smin_extra_use( +; CHECK-LABEL: define {{[^@]+}}@add_smin_extra_use( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 15 ; CHECK-NEXT: store i32 [[A]], i32* [[P:%.*]], align 4 ; CHECK-NEXT: [[C:%.*]] = icmp slt i32 [[A]], 42 @@ -1293,7 +1293,7 @@ define i32 @add_smin_extra_use(i32 %x, i32* %p) { } define <2 x i16> @add_smin_vec(<2 x i16> %x) { -; CHECK-LABEL: @add_smin_vec( +; CHECK-LABEL: define {{[^@]+}}@add_smin_vec( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <2 x i16> [[X:%.*]], <i16 225, i16 225> ; CHECK-NEXT: [[TMP2:%.*]] = select <2 x i1> [[TMP1]], <2 x i16> [[X]], <2 x i16> <i16 225, i16 225> ; CHECK-NEXT: [[R:%.*]] = add nsw <2 x i16> [[TMP2]], <i16 15, i16 15> @@ -1306,7 +1306,7 @@ define <2 x i16> @add_smin_vec(<2 x i16> %x) { } define i37 @add_smax(i37 %x) { -; CHECK-LABEL: @add_smax( +; CHECK-LABEL: define {{[^@]+}}@add_smax( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i37 [[X:%.*]], 37 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i37 [[X]], i37 37 ; CHECK-NEXT: [[R:%.*]] = add nuw nsw i37 [[TMP2]], 5 @@ -1319,7 +1319,7 @@ define i37 @add_smax(i37 %x) { } define i8 @add_smax_constant_limit(i8 %x) { -; CHECK-LABEL: @add_smax_constant_limit( +; CHECK-LABEL: define {{[^@]+}}@add_smax_constant_limit( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i8 [[X:%.*]], -127 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i8 [[X]], i8 -127 ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[TMP2]], 125 @@ -1335,7 +1335,7 @@ define i8 @add_smax_constant_limit(i8 %x) { ; TODO: assert that instsimplify always gets this? define i8 @add_smax_simplify(i8 %x) { -; CHECK-LABEL: @add_smax_simplify( +; CHECK-LABEL: define {{[^@]+}}@add_smax_simplify( ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[X:%.*]], 126 ; CHECK-NEXT: ret i8 [[R]] ; @@ -1349,7 +1349,7 @@ define i8 @add_smax_simplify(i8 %x) { ; TODO: assert that instsimplify always gets this? define i8 @add_smax_simplify2(i8 %x) { -; CHECK-LABEL: @add_smax_simplify2( +; CHECK-LABEL: define {{[^@]+}}@add_smax_simplify2( ; CHECK-NEXT: [[A:%.*]] = add nsw i8 [[X:%.*]], 127 ; CHECK-NEXT: ret i8 [[A]] ; @@ -1362,7 +1362,7 @@ define i8 @add_smax_simplify2(i8 %x) { ; Negative test define i32 @add_smax_wrong_pred(i32 %x) { -; CHECK-LABEL: @add_smax_wrong_pred( +; CHECK-LABEL: define {{[^@]+}}@add_smax_wrong_pred( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1377,7 +1377,7 @@ define i32 @add_smax_wrong_pred(i32 %x) { ; Negative test define i32 @add_smax_wrong_wrap(i32 %x) { -; CHECK-LABEL: @add_smax_wrong_wrap( +; CHECK-LABEL: define {{[^@]+}}@add_smax_wrong_wrap( ; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 15 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i32 [[A]], 42 ; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A]], i32 42 @@ -1392,7 +1392,7 @@ define i32 @add_smax_wrong_wrap(i32 %x) { ; Negative test define i32 @add_smax_extra_use(i32 %x, i32* %p) { -; CHECK-LABEL: @add_smax_extra_use( +; CHECK-LABEL: define {{[^@]+}}@add_smax_extra_use( ; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 15 ; CHECK-NEXT: store i32 [[A]], i32* [[P:%.*]], align 4 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i32 [[A]], 42 @@ -1407,7 +1407,7 @@ define i32 @add_smax_extra_use(i32 %x, i32* %p) { } define <2 x i33> @add_smax_vec(<2 x i33> %x) { -; CHECK-LABEL: @add_smax_vec( +; CHECK-LABEL: define {{[^@]+}}@add_smax_vec( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt <2 x i33> [[X:%.*]], <i33 235, i33 235> ; CHECK-NEXT: [[TMP2:%.*]] = select <2 x i1> [[TMP1]], <2 x i33> [[X]], <2 x i33> <i33 235, i33 235> ; CHECK-NEXT: [[R:%.*]] = add nuw nsw <2 x i33> [[TMP2]], <i33 5, i33 5> @@ -1420,7 +1420,7 @@ define <2 x i33> @add_smax_vec(<2 x i33> %x) { } define i8 @PR14613_smin(i8 %x) { -; CHECK-LABEL: @PR14613_smin( +; CHECK-LABEL: define {{[^@]+}}@PR14613_smin( ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i8 [[X:%.*]], 40 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i8 [[X]], i8 40 ; CHECK-NEXT: [[U7:%.*]] = add nsw i8 [[TMP2]], 15 @@ -1435,7 +1435,7 @@ define i8 @PR14613_smin(i8 %x) { } define i8 @PR14613_smax(i8 %x) { -; CHECK-LABEL: @PR14613_smax( +; CHECK-LABEL: define {{[^@]+}}@PR14613_smax( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i8 [[X:%.*]], 40 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], i8 [[X]], i8 40 ; CHECK-NEXT: [[U7:%.*]] = add nuw i8 [[TMP2]], 15 diff --git a/llvm/test/Transforms/InstCombine/minmax-fp.ll b/llvm/test/Transforms/InstCombine/minmax-fp.ll index ee1fc7a2214..87983918c3b 100644 --- a/llvm/test/Transforms/InstCombine/minmax-fp.ll +++ b/llvm/test/Transforms/InstCombine/minmax-fp.ll @@ -3,7 +3,7 @@ ; This is the canonical form for a type-changing min/max. define double @t1(float %a) { -; CHECK-LABEL: @t1( +; CHECK-LABEL: define {{[^@]+}}@t1( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 5.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 5.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fpext float [[TMP1]] to double @@ -17,7 +17,7 @@ define double @t1(float %a) { ; Check this is converted into canonical form, as above. define double @t2(float %a) { -; CHECK-LABEL: @t2( +; CHECK-LABEL: define {{[^@]+}}@t2( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 5.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 5.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fpext float [[TMP1]] to double @@ -31,7 +31,7 @@ define double @t2(float %a) { ; Same again, with trunc. define float @t4(double %a) { -; CHECK-LABEL: @t4( +; CHECK-LABEL: define {{[^@]+}}@t4( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge double [[A:%.*]], 5.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], double 5.000000e+00, double [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fptrunc double [[TMP1]] to float @@ -45,7 +45,7 @@ define float @t4(double %a) { ; different values, should not be converted. define double @t5(float %a) { -; CHECK-LABEL: @t5( +; CHECK-LABEL: define {{[^@]+}}@t5( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult float [[A:%.*]], 5.000000e+00 ; CHECK-NEXT: [[TMP2:%.*]] = fpext float [[A]] to double ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], double [[TMP2]], double 5.001000e+00 @@ -61,7 +61,7 @@ define double @t5(float %a) { ; So the compare constant may be treated as +0.0, and we sink the fpext. define double @t6(float %a) { -; CHECK-LABEL: @t6( +; CHECK-LABEL: define {{[^@]+}}@t6( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 0.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 0.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fpext float [[TMP1]] to double @@ -77,7 +77,7 @@ define double @t6(float %a) { ; So the compare constant may be treated as -0.0, and we sink the fpext. define double @t7(float %a) { -; CHECK-LABEL: @t7( +; CHECK-LABEL: define {{[^@]+}}@t7( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 0.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float -0.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fpext float [[TMP1]] to double @@ -92,7 +92,7 @@ define double @t7(float %a) { ; min(min(x, 0.0), 0.0) --> min(x, 0.0) define float @fmin_fmin_zero_mismatch(float %x) { -; CHECK-LABEL: @fmin_fmin_zero_mismatch( +; CHECK-LABEL: define {{[^@]+}}@fmin_fmin_zero_mismatch( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt float [[X:%.*]], 0.000000e+00 ; CHECK-NEXT: [[MIN2:%.*]] = select i1 [[TMP1]], float [[X]], float 0.000000e+00 ; CHECK-NEXT: ret float [[MIN2]] @@ -107,7 +107,7 @@ define float @fmin_fmin_zero_mismatch(float %x) { ; max(max(x, -0.0), -0.0) --> max(x, -0.0) define float @fmax_fmax_zero_mismatch(float %x) { -; CHECK-LABEL: @fmax_fmax_zero_mismatch( +; CHECK-LABEL: define {{[^@]+}}@fmax_fmax_zero_mismatch( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt float [[X:%.*]], -0.000000e+00 ; CHECK-NEXT: [[MAX11:%.*]] = select i1 [[TMP1]], float [[X]], float -0.000000e+00 ; CHECK-NEXT: ret float [[MAX11]] @@ -120,7 +120,7 @@ define float @fmax_fmax_zero_mismatch(float %x) { } define i64 @t8(float %a) { -; CHECK-LABEL: @t8( +; CHECK-LABEL: define {{[^@]+}}@t8( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 5.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 5.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fptoui float [[TMP1]] to i64 @@ -133,7 +133,7 @@ define i64 @t8(float %a) { } define i8 @t9(float %a) { -; CHECK-LABEL: @t9( +; CHECK-LABEL: define {{[^@]+}}@t9( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 0.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 0.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fptosi float [[TMP1]] to i8 @@ -147,7 +147,7 @@ define i8 @t9(float %a) { ; Either operand could be NaN, but fast modifier applied. define i8 @t11(float %a, float %b) { -; CHECK-LABEL: @t11( +; CHECK-LABEL: define {{[^@]+}}@t11( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp fast oge float [[B:%.*]], [[A:%.*]] ; CHECK-NEXT: [[DOTV:%.*]] = select i1 [[DOTINV]], float [[A]], float [[B]] ; CHECK-NEXT: [[TMP1:%.*]] = fptosi float [[DOTV]] to i8 @@ -162,7 +162,7 @@ define i8 @t11(float %a, float %b) { ; Either operand could be NaN, but nnan modifier applied. define i8 @t12(float %a, float %b) { -; CHECK-LABEL: @t12( +; CHECK-LABEL: define {{[^@]+}}@t12( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp nnan oge float [[B:%.*]], [[A:%.*]] ; CHECK-NEXT: [[DOTV:%.*]] = select i1 [[DOTINV]], float [[A]], float [[B]] ; CHECK-NEXT: [[TMP1:%.*]] = fptosi float [[DOTV]] to i8 @@ -177,7 +177,7 @@ define i8 @t12(float %a, float %b) { ; Float and int values do not match. define i8 @t13(float %a) { -; CHECK-LABEL: @t13( +; CHECK-LABEL: define {{[^@]+}}@t13( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult float [[A:%.*]], 1.500000e+00 ; CHECK-NEXT: [[TMP2:%.*]] = fptosi float [[A]] to i8 ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP1]], i8 [[TMP2]], i8 1 @@ -191,7 +191,7 @@ define i8 @t13(float %a) { ; %a could be -0.0, but it doesn't matter because the conversion to int is the same for 0.0 or -0.0. define i8 @t14(float %a) { -; CHECK-LABEL: @t14( +; CHECK-LABEL: define {{[^@]+}}@t14( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp oge float [[A:%.*]], 0.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 0.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fptosi float [[TMP1]] to i8 @@ -204,7 +204,7 @@ define i8 @t14(float %a) { } define i8 @t14_commute(float %a) { -; CHECK-LABEL: @t14_commute( +; CHECK-LABEL: define {{[^@]+}}@t14_commute( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt float [[A:%.*]], 0.000000e+00 ; CHECK-NEXT: [[TMP2:%.*]] = select i1 [[TMP1]], float [[A]], float 0.000000e+00 ; CHECK-NEXT: [[TMP3:%.*]] = fptosi float [[TMP2]] to i8 @@ -217,7 +217,7 @@ define i8 @t14_commute(float %a) { } define i8 @t15(float %a) { -; CHECK-LABEL: @t15( +; CHECK-LABEL: define {{[^@]+}}@t15( ; CHECK-NEXT: [[DOTINV:%.*]] = fcmp nsz oge float [[A:%.*]], 0.000000e+00 ; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[DOTINV]], float 0.000000e+00, float [[A]] ; CHECK-NEXT: [[TMP2:%.*]] = fptosi float [[TMP1]] to i8 @@ -230,7 +230,7 @@ define i8 @t15(float %a) { } define double @t16(i32 %x) { -; CHECK-LABEL: @t16( +; CHECK-LABEL: define {{[^@]+}}@t16( ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], 0 ; CHECK-NEXT: [[CST:%.*]] = sitofp i32 [[X]] to double ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], double [[CST]], double 5.000000e-01 @@ -243,7 +243,7 @@ define double @t16(i32 %x) { } define double @t17(i32 %x) { -; CHECK-LABEL: @t17( +; CHECK-LABEL: define {{[^@]+}}@t17( ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X:%.*]], 2 ; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[TMP1]], i32 [[X]], i32 2 ; CHECK-NEXT: [[TMP2:%.*]] = sitofp i32 [[SEL1]] to double @@ -256,7 +256,7 @@ define double @t17(i32 %x) { } define float @fneg_fmax(float %x, float %y) { -; CHECK-LABEL: @fneg_fmax( +; CHECK-LABEL: define {{[^@]+}}@fneg_fmax( ; CHECK-NEXT: [[COND:%.*]] = fcmp nnan olt float [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: [[MAX_V:%.*]] = select i1 [[COND]], float [[X]], float [[Y]] ; CHECK-NEXT: [[MAX:%.*]] = fneg float [[MAX_V]] @@ -270,7 +270,7 @@ define float @fneg_fmax(float %x, float %y) { } define <2 x float> @fsub_fmax(<2 x float> %x, <2 x float> %y) { -; CHECK-LABEL: @fsub_fmax( +; CHECK-LABEL: define {{[^@]+}}@fsub_fmax( ; CHECK-NEXT: [[COND_INV:%.*]] = fcmp nnan nsz ogt <2 x float> [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: [[MAX_V:%.*]] = select <2 x i1> [[COND_INV]], <2 x float> [[Y]], <2 x float> [[X]] ; CHECK-NEXT: [[MAX:%.*]] = fsub <2 x float> <float -0.000000e+00, float -0.000000e+00>, [[MAX_V]] @@ -284,7 +284,7 @@ define <2 x float> @fsub_fmax(<2 x float> %x, <2 x float> %y) { } define <2 x double> @fsub_fmin(<2 x double> %x, <2 x double> %y) { -; CHECK-LABEL: @fsub_fmin( +; CHECK-LABEL: define {{[^@]+}}@fsub_fmin( ; CHECK-NEXT: [[COND:%.*]] = fcmp nnan ogt <2 x double> [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: [[MAX_V:%.*]] = select <2 x i1> [[COND]], <2 x double> [[X]], <2 x double> [[Y]] ; CHECK-NEXT: [[MAX:%.*]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[MAX_V]] @@ -298,7 +298,7 @@ define <2 x double> @fsub_fmin(<2 x double> %x, <2 x double> %y) { } define double @fneg_fmin(double %x, double %y) { -; CHECK-LABEL: @fneg_fmin( +; CHECK-LABEL: define {{[^@]+}}@fneg_fmin( ; CHECK-NEXT: [[COND_INV:%.*]] = fcmp nnan nsz olt double [[X:%.*]], [[Y:%.*]] ; CHECK-NEXT: [[MAX_V:%.*]] = select i1 [[COND_INV]], double [[Y]], double [[X]] ; CHECK-NEXT: [[MAX:%.*]] = fneg double [[MAX_V]] @@ -312,7 +312,7 @@ define double @fneg_fmin(double %x, double %y) { } define float @maxnum_ogt_fmf_on_select(float %a, float %b) { -; CHECK-LABEL: @maxnum_ogt_fmf_on_select( +; CHECK-LABEL: define {{[^@]+}}@maxnum_ogt_fmf_on_select( ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz float @llvm.maxnum.f32(float [[A:%.*]], float [[B:%.*]]) ; CHECK-NEXT: ret float [[TMP1]] ; @@ -322,7 +322,7 @@ define float @maxnum_ogt_fmf_on_select(float %a, float %b) { } define <2 x float> @maxnum_oge_fmf_on_select(<2 x float> %a, <2 x float> %b) { -; CHECK-LABEL: @maxnum_oge_fmf_on_select( +; CHECK-LABEL: define {{[^@]+}}@maxnum_oge_fmf_on_select( ; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz <2 x float> @llvm.maxnum.v2f32(<2 x float> [[A:%.*]], <2 x float> [[B:%.*]]) ; CHECK-NEXT: ret <2 x float> [[TMP1]] ; @@ -332,7 +332,7 @@ define <2 x float> @maxnum_oge_fmf_on_select(<2 x float> %a, <2 x float> %b) { } define float @maxnum_ogt_fmf_on_fcmp(float %a, float %b) { -; CHECK-LABEL: @maxnum_ogt_fmf_on_fcmp( +; CHECK-LABEL: define {{[^@]+}}@maxnum_ogt_fmf_on_fcmp( ; CHECK-NEXT: [[COND:%.*]] = fcmp nnan nsz ogt float [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select i1 [[COND]], float [[A]], float [[B]] ; CHECK-NEXT: ret float [[F]] @@ -343,7 +343,7 @@ define float @maxnum_ogt_fmf_on_fcmp(float %a, float %b) { } define <2 x float> @maxnum_oge_fmf_on_fcmp(<2 x float> %a, <2 x float> %b) { -; CHECK-LABEL: @maxnum_oge_fmf_on_fcmp( +; CHECK-LABEL: define {{[^@]+}}@maxnum_oge_fmf_on_fcmp( ; CHECK-NEXT: [[COND:%.*]] = fcmp nnan ninf nsz oge <2 x float> [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select <2 x i1> [[COND]], <2 x float> [[A]], <2 x float> [[B]] ; CHECK-NEXT: ret <2 x float> [[F]] @@ -354,7 +354,7 @@ define <2 x float> @maxnum_oge_fmf_on_fcmp(<2 x float> %a, <2 x float> %b) { } define float @maxnum_no_nsz(float %a, float %b) { -; CHECK-LABEL: @maxnum_no_nsz( +; CHECK-LABEL: define {{[^@]+}}@maxnum_no_nsz( ; CHECK-NEXT: [[COND:%.*]] = fcmp ogt float [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select nnan i1 [[COND]], float [[A]], float [[B]] ; CHECK-NEXT: ret float [[F]] @@ -365,7 +365,7 @@ define float @maxnum_no_nsz(float %a, float %b) { } define float @maxnum_no_nnan(float %a, float %b) { -; CHECK-LABEL: @maxnum_no_nnan( +; CHECK-LABEL: define {{[^@]+}}@maxnum_no_nnan( ; CHECK-NEXT: [[COND:%.*]] = fcmp oge float [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select nsz i1 [[COND]], float [[A]], float [[B]] ; CHECK-NEXT: ret float [[F]] @@ -376,7 +376,7 @@ define float @maxnum_no_nnan(float %a, float %b) { } define float @minnum_olt_fmf_on_select(float %a, float %b) { -; CHECK-LABEL: @minnum_olt_fmf_on_select( +; CHECK-LABEL: define {{[^@]+}}@minnum_olt_fmf_on_select( ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz float @llvm.minnum.f32(float [[A:%.*]], float [[B:%.*]]) ; CHECK-NEXT: ret float [[TMP1]] ; @@ -386,7 +386,7 @@ define float @minnum_olt_fmf_on_select(float %a, float %b) { } define <2 x float> @minnum_ole_fmf_on_select(<2 x float> %a, <2 x float> %b) { -; CHECK-LABEL: @minnum_ole_fmf_on_select( +; CHECK-LABEL: define {{[^@]+}}@minnum_ole_fmf_on_select( ; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz <2 x float> @llvm.minnum.v2f32(<2 x float> [[A:%.*]], <2 x float> [[B:%.*]]) ; CHECK-NEXT: ret <2 x float> [[TMP1]] ; @@ -396,7 +396,7 @@ define <2 x float> @minnum_ole_fmf_on_select(<2 x float> %a, <2 x float> %b) { } define float @minnum_olt_fmf_on_fcmp(float %a, float %b) { -; CHECK-LABEL: @minnum_olt_fmf_on_fcmp( +; CHECK-LABEL: define {{[^@]+}}@minnum_olt_fmf_on_fcmp( ; CHECK-NEXT: [[COND:%.*]] = fcmp nnan nsz olt float [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select i1 [[COND]], float [[A]], float [[B]] ; CHECK-NEXT: ret float [[F]] @@ -407,7 +407,7 @@ define float @minnum_olt_fmf_on_fcmp(float %a, float %b) { } define <2 x float> @minnum_ole_fmf_on_fcmp(<2 x float> %a, <2 x float> %b) { -; CHECK-LABEL: @minnum_ole_fmf_on_fcmp( +; CHECK-LABEL: define {{[^@]+}}@minnum_ole_fmf_on_fcmp( ; CHECK-NEXT: [[COND:%.*]] = fcmp nnan ninf nsz ole <2 x float> [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select <2 x i1> [[COND]], <2 x float> [[A]], <2 x float> [[B]] ; CHECK-NEXT: ret <2 x float> [[F]] @@ -418,7 +418,7 @@ define <2 x float> @minnum_ole_fmf_on_fcmp(<2 x float> %a, <2 x float> %b) { } define float @minnum_no_nsz(float %a, float %b) { -; CHECK-LABEL: @minnum_no_nsz( +; CHECK-LABEL: define {{[^@]+}}@minnum_no_nsz( ; CHECK-NEXT: [[COND:%.*]] = fcmp olt float [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select nnan i1 [[COND]], float [[A]], float [[B]] ; CHECK-NEXT: ret float [[F]] @@ -429,7 +429,7 @@ define float @minnum_no_nsz(float %a, float %b) { } define float @minnum_no_nnan(float %a, float %b) { -; CHECK-LABEL: @minnum_no_nnan( +; CHECK-LABEL: define {{[^@]+}}@minnum_no_nnan( ; CHECK-NEXT: [[COND:%.*]] = fcmp ole float [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: [[F:%.*]] = select nsz i1 [[COND]], float [[A]], float [[B]] ; CHECK-NEXT: ret float [[F]] |