[llvm] 400587b - [InstCombine] improve auto-generated test checks by matching function signature; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed May 11 05:49:22 PDT 2022


Author: Sanjay Patel
Date: 2022-05-11T08:47:05-04:00
New Revision: 400587ba0c8b14537e5b52190ee2fc869f2f9728

URL: https://github.com/llvm/llvm-project/commit/400587ba0c8b14537e5b52190ee2fc869f2f9728
DIFF: https://github.com/llvm/llvm-project/commit/400587ba0c8b14537e5b52190ee2fc869f2f9728.diff

LOG: [InstCombine] improve auto-generated test checks by matching function signature; NFC

Without this, miscompiles go undetected here as shown in D125352.

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/sub-minmax.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/sub-minmax.ll b/llvm/test/Transforms/InstCombine/sub-minmax.ll
index 059013cf304f..832c723be715 100644
--- a/llvm/test/Transforms/InstCombine/sub-minmax.ll
+++ b/llvm/test/Transforms/InstCombine/sub-minmax.ll
@@ -1,4 +1,4 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature
 ; RUN: opt < %s -passes=instcombine -S | FileCheck %s
 
 declare i5 @llvm.umin.i5(i5, i5)
@@ -11,9 +11,10 @@ declare i8 @llvm.umax.i8(i8, i8)
 declare i8 @llvm.umin.i8(i8, i8)
 
 define i32 @max_na_b_minux_na(i32 %A, i32 %B) {
-; CHECK-LABEL: @max_na_b_minux_na(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@max_na_b_minux_na
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B]])
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 0, [[TMP1]]
 ; CHECK-NEXT:    ret i32 [[X]]
 ;
@@ -25,9 +26,10 @@ define i32 @max_na_b_minux_na(i32 %A, i32 %B) {
 }
 
 define i32 @na_minus_max_na_b(i32 %A, i32 %B) {
-; CHECK-LABEL: @na_minus_max_na_b(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_na_b
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B]])
 ; CHECK-NEXT:    ret i32 [[TMP1]]
 ;
   %not = xor i32 %A, -1
@@ -38,8 +40,9 @@ define i32 @na_minus_max_na_b(i32 %A, i32 %B) {
 }
 
 define i5 @sub_umin(i5 %a, i5 %b) {
-; CHECK-LABEL: @sub_umin(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i5 @llvm.usub.sat.i5(i5 [[A:%.*]], i5 [[B:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@sub_umin
+; CHECK-SAME: (i5 [[A:%.*]], i5 [[B:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i5 @llvm.usub.sat.i5(i5 [[A]], i5 [[B]])
 ; CHECK-NEXT:    ret i5 [[TMP1]]
 ;
   %umin = call i5 @llvm.umin.i5(i5 %a, i5 %b)
@@ -48,8 +51,9 @@ define i5 @sub_umin(i5 %a, i5 %b) {
 }
 
 define <2 x i8> @sub_umin_commute_vec(<2 x i8> %a, <2 x i8> %b) {
-; CHECK-LABEL: @sub_umin_commute_vec(
-; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[B:%.*]], <2 x i8> [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@sub_umin_commute_vec
+; CHECK-SAME: (<2 x i8> [[A:%.*]], <2 x i8> [[B:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[B]], <2 x i8> [[A]])
 ; CHECK-NEXT:    ret <2 x i8> [[TMP1]]
 ;
   %umin = call <2 x i8> @llvm.umin.v2i8(<2 x i8> %b, <2 x i8> %a)
@@ -58,9 +62,10 @@ define <2 x i8> @sub_umin_commute_vec(<2 x i8> %a, <2 x i8> %b) {
 }
 
 define i5 @sub_umin_uses(i5 %a, i5 %b, i5* %p) {
-; CHECK-LABEL: @sub_umin_uses(
-; CHECK-NEXT:    [[UMIN:%.*]] = call i5 @llvm.umin.i5(i5 [[A:%.*]], i5 [[B:%.*]])
-; CHECK-NEXT:    store i5 [[UMIN]], i5* [[P:%.*]], align 1
+; CHECK-LABEL: define {{[^@]+}}@sub_umin_uses
+; CHECK-SAME: (i5 [[A:%.*]], i5 [[B:%.*]], i5* [[P:%.*]]) {
+; CHECK-NEXT:    [[UMIN:%.*]] = call i5 @llvm.umin.i5(i5 [[A]], i5 [[B]])
+; CHECK-NEXT:    store i5 [[UMIN]], i5* [[P]], align 1
 ; CHECK-NEXT:    [[R:%.*]] = sub i5 [[A]], [[UMIN]]
 ; CHECK-NEXT:    ret i5 [[R]]
 ;
@@ -71,9 +76,10 @@ define i5 @sub_umin_uses(i5 %a, i5 %b, i5* %p) {
 }
 
 define i5 @sub_umin_no_common_op(i5 %a, i5 %b, i5 %c) {
-; CHECK-LABEL: @sub_umin_no_common_op(
-; CHECK-NEXT:    [[UMIN:%.*]] = call i5 @llvm.umin.i5(i5 [[A:%.*]], i5 [[B:%.*]])
-; CHECK-NEXT:    [[R:%.*]] = sub i5 [[C:%.*]], [[UMIN]]
+; CHECK-LABEL: define {{[^@]+}}@sub_umin_no_common_op
+; CHECK-SAME: (i5 [[A:%.*]], i5 [[B:%.*]], i5 [[C:%.*]]) {
+; CHECK-NEXT:    [[UMIN:%.*]] = call i5 @llvm.umin.i5(i5 [[A]], i5 [[B]])
+; CHECK-NEXT:    [[R:%.*]] = sub i5 [[C]], [[UMIN]]
 ; CHECK-NEXT:    ret i5 [[R]]
 ;
   %umin = call i5 @llvm.umin.i5(i5 %a, i5 %b)
@@ -82,9 +88,10 @@ define i5 @sub_umin_no_common_op(i5 %a, i5 %b, i5 %c) {
 }
 
 define i32 @max_b_na_minus_na(i32 %A, i32 %B) {
-; CHECK-LABEL: @max_b_na_minus_na(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@max_b_na_minus_na
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B]])
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 0, [[TMP1]]
 ; CHECK-NEXT:    ret i32 [[X]]
 ;
@@ -96,9 +103,10 @@ define i32 @max_b_na_minus_na(i32 %A, i32 %B) {
 }
 
 define i32 @na_minus_max_b_na(i32 %A, i32 %B) {
-; CHECK-LABEL: @na_minus_max_b_na(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_b_na
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[B:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[NOT]], i32 [[B]])
 ; CHECK-NEXT:    ret i32 [[TMP1]]
 ;
   %not = xor i32 %A, -1
@@ -110,8 +118,9 @@ define i32 @na_minus_max_b_na(i32 %A, i32 %B) {
 
 
 define i32 @max_na_bi_minux_na(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @max_na_bi_minux_na(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI:%.*]], i32 [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@max_na_bi_minux_na
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 0, [[TMP1]]
 ; CHECK-NEXT:    ret i32 [[X]]
 ;
@@ -124,8 +133,9 @@ define i32 @max_na_bi_minux_na(i32 %A, i32 %Bi) {
 }
 
 define i32 @na_minus_max_na_bi(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @na_minus_max_na_bi(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI:%.*]], i32 [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_na_bi
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    ret i32 [[TMP1]]
 ;
   %B =  xor i32 %Bi, -1
@@ -137,8 +147,9 @@ define i32 @na_minus_max_na_bi(i32 %A, i32 %Bi) {
 }
 
 define i32 @max_bi_na_minus_na(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @max_bi_na_minus_na(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI:%.*]], i32 [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@max_bi_na_minus_na
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 0, [[TMP1]]
 ; CHECK-NEXT:    ret i32 [[X]]
 ;
@@ -151,8 +162,9 @@ define i32 @max_bi_na_minus_na(i32 %A, i32 %Bi) {
 }
 
 define i32 @na_minus_max_bi_na(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @na_minus_max_bi_na(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI:%.*]], i32 [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_bi_na
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.usub.sat.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    ret i32 [[TMP1]]
 ;
   %B =  xor i32 %Bi, -1
@@ -165,8 +177,9 @@ define i32 @na_minus_max_bi_na(i32 %A, i32 %Bi) {
 
 
 define i32 @max_na_bi_minux_na_use(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @max_na_bi_minux_na_use(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[A:%.*]], i32 -32)
+; CHECK-LABEL: define {{[^@]+}}@max_na_bi_minux_na_use
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[A]], i32 -32)
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i32 [[TMP1]], -1
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[A]], [[TMP1]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP2]])
@@ -181,8 +194,9 @@ define i32 @max_na_bi_minux_na_use(i32 %A, i32 %Bi) {
 }
 
 define i32 @na_minus_max_na_bi_use(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @na_minus_max_na_bi_use(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[A:%.*]], i32 -32)
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_na_bi_use
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[A]], i32 -32)
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i32 [[TMP1]], -1
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[TMP1]], [[A]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP2]])
@@ -197,8 +211,9 @@ define i32 @na_minus_max_na_bi_use(i32 %A, i32 %Bi) {
 }
 
 define i32 @max_bi_na_minus_na_use(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @max_bi_na_minus_na_use(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI:%.*]], i32 [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@max_bi_na_minus_na_use
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i32 [[TMP1]], -1
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[A]], [[TMP1]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP2]])
@@ -214,8 +229,9 @@ define i32 @max_bi_na_minus_na_use(i32 %A, i32 %Bi) {
 }
 
 define i32 @na_minus_max_bi_na_use(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @na_minus_max_bi_na_use(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI:%.*]], i32 [[A:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_bi_na_use
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i32 [[TMP1]], -1
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[TMP1]], [[A]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP2]])
@@ -232,8 +248,9 @@ define i32 @na_minus_max_bi_na_use(i32 %A, i32 %Bi) {
 
 
 define i32 @max_na_bi_minux_na_use2(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @max_na_bi_minux_na_use2(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@max_na_bi_minux_na_use2
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
 ; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umin.i32(i32 [[NOT]], i32 31)
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[TMP1]], [[NOT]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP1]])
@@ -250,8 +267,9 @@ define i32 @max_na_bi_minux_na_use2(i32 %A, i32 %Bi) {
 }
 
 define i32 @na_minus_max_na_bi_use2(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @na_minus_max_na_bi_use2(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_na_bi_use2
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
 ; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umin.i32(i32 [[NOT]], i32 31)
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[NOT]], [[TMP1]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP1]])
@@ -268,9 +286,10 @@ define i32 @na_minus_max_na_bi_use2(i32 %A, i32 %Bi) {
 }
 
 define i32 @max_bi_na_minus_na_use2(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @max_bi_na_minus_na_use2(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI:%.*]], i32 [[A]])
+; CHECK-LABEL: define {{[^@]+}}@max_bi_na_minus_na_use2
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i32 [[TMP1]], -1
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[A]], [[TMP1]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP2]])
@@ -288,9 +307,10 @@ define i32 @max_bi_na_minus_na_use2(i32 %A, i32 %Bi) {
 }
 
 define i32 @na_minus_max_bi_na_use2(i32 %A, i32 %Bi) {
-; CHECK-LABEL: @na_minus_max_bi_na_use2(
-; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A:%.*]], -1
-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI:%.*]], i32 [[A]])
+; CHECK-LABEL: define {{[^@]+}}@na_minus_max_bi_na_use2
+; CHECK-SAME: (i32 [[A:%.*]], i32 [[BI:%.*]]) {
+; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[A]], -1
+; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.umax.i32(i32 [[BI]], i32 [[A]])
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i32 [[TMP1]], -1
 ; CHECK-NEXT:    [[X:%.*]] = sub i32 [[TMP1]], [[A]]
 ; CHECK-NEXT:    call void @use32(i32 [[TMP2]])
@@ -308,8 +328,9 @@ define i32 @na_minus_max_bi_na_use2(i32 %A, i32 %Bi) {
 }
 
 define i8 @umin_not_sub(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_not_sub(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_not_sub
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i8 [[TMP1]], -1
 ; CHECK-NEXT:    [[SUBX:%.*]] = sub i8 [[TMP1]], [[X]]
 ; CHECK-NEXT:    [[SUBY:%.*]] = sub i8 [[TMP1]], [[Y]]
@@ -329,8 +350,9 @@ define i8 @umin_not_sub(i8 %x, i8 %y) {
 }
 
 define i8 @umin_not_sub_rev(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_not_sub_rev(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_not_sub_rev
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[TMP2:%.*]] = xor i8 [[TMP1]], -1
 ; CHECK-NEXT:    [[SUBX:%.*]] = sub i8 [[X]], [[TMP1]]
 ; CHECK-NEXT:    [[SUBY:%.*]] = sub i8 [[Y]], [[TMP1]]
@@ -350,9 +372,10 @@ define i8 @umin_not_sub_rev(i8 %x, i8 %y) {
 }
 
 define void @umin3_not_all_ops_extra_uses_invert_subs(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @umin3_not_all_ops_extra_uses_invert_subs(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Z:%.*]])
-; CHECK-NEXT:    [[TMP2:%.*]] = call i8 @llvm.umax.i8(i8 [[Y:%.*]], i8 [[TMP1]])
+; CHECK-LABEL: define {{[^@]+}}@umin3_not_all_ops_extra_uses_invert_subs
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Z]])
+; CHECK-NEXT:    [[TMP2:%.*]] = call i8 @llvm.umax.i8(i8 [[Y]], i8 [[TMP1]])
 ; CHECK-NEXT:    [[TMP3:%.*]] = xor i8 [[TMP2]], -1
 ; CHECK-NEXT:    [[XMIN:%.*]] = sub i8 [[TMP2]], [[X]]
 ; CHECK-NEXT:    [[YMIN:%.*]] = sub i8 [[TMP2]], [[Y]]
@@ -387,10 +410,11 @@ define void @umin3_not_all_ops_extra_uses_invert_subs(i8 %x, i8 %y, i8 %z) {
 ; Min/Max(Y, ~X) - ~X -> X - ~Min/Max(X, ~Y)
 
 define i8 @umin_not_sub_intrinsic_commute0(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_not_sub_intrinsic_commute0(
-; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@umin_not_sub_intrinsic_commute0
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[NY]])
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y]])
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[M:%.*]] = xor i8 [[TMP1]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
 ; CHECK-NEXT:    [[SUBX:%.*]] = sub i8 [[TMP1]], [[X]]
@@ -406,10 +430,11 @@ define i8 @umin_not_sub_intrinsic_commute0(i8 %x, i8 %y) {
 }
 
 define i8 @umax_not_sub_intrinsic_commute1(i8 %x, i8 %y) {
-; CHECK-LABEL: @umax_not_sub_intrinsic_commute1(
-; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@umax_not_sub_intrinsic_commute1
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[NY]])
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umin.i8(i8 [[X:%.*]], i8 [[Y]])
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umin.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[M:%.*]] = xor i8 [[TMP1]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
 ; CHECK-NEXT:    [[SUBX:%.*]] = sub i8 [[TMP1]], [[X]]
@@ -425,10 +450,11 @@ define i8 @umax_not_sub_intrinsic_commute1(i8 %x, i8 %y) {
 }
 
 define i8 @smin_not_sub_intrinsic_commute2(i8 %x, i8 %y) {
-; CHECK-LABEL: @smin_not_sub_intrinsic_commute2(
-; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@smin_not_sub_intrinsic_commute2
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[NY]])
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smax.i8(i8 [[X:%.*]], i8 [[Y]])
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[M:%.*]] = xor i8 [[TMP1]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
 ; CHECK-NEXT:    [[SUBX:%.*]] = sub i8 [[X]], [[TMP1]]
@@ -444,10 +470,11 @@ define i8 @smin_not_sub_intrinsic_commute2(i8 %x, i8 %y) {
 }
 
 define i8 @smax_not_sub_intrinsic_commute3(i8 %x, i8 %y) {
-; CHECK-LABEL: @smax_not_sub_intrinsic_commute3(
-; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@smax_not_sub_intrinsic_commute3
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[NY]])
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smin.i8(i8 [[X:%.*]], i8 [[Y]])
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smin.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[M:%.*]] = xor i8 [[TMP1]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
 ; CHECK-NEXT:    [[SUBX:%.*]] = sub i8 [[X]], [[TMP1]]
@@ -465,10 +492,11 @@ define i8 @smax_not_sub_intrinsic_commute3(i8 %x, i8 %y) {
 ; negative test - don't increase instruction count
 
 define i8 @umin_not_sub_intrinsic_uses(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_not_sub_intrinsic_uses(
-; CHECK-NEXT:    [[NX:%.*]] = xor i8 [[X:%.*]], -1
+; CHECK-LABEL: define {{[^@]+}}@umin_not_sub_intrinsic_uses
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[NX:%.*]] = xor i8 [[X]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[NX]])
-; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y:%.*]], -1
+; CHECK-NEXT:    [[NY:%.*]] = xor i8 [[Y]], -1
 ; CHECK-NEXT:    call void @use8(i8 [[NY]])
 ; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[NX]], i8 [[NY]])
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
@@ -486,8 +514,9 @@ define i8 @umin_not_sub_intrinsic_uses(i8 %x, i8 %y) {
 }
 
 define i8 @umax_sub_op0(i8 %x, i8 %y) {
-; CHECK-LABEL: @umax_sub_op0(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umax_sub_op0
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %u = call i8 @llvm.umax.i8(i8 %y, i8 %x)
@@ -496,8 +525,9 @@ define i8 @umax_sub_op0(i8 %x, i8 %y) {
 }
 
 define <2 x i8> @umax_sub_op0_vec_commute(<2 x i8> %x, <2 x i8> %y) {
-; CHECK-LABEL: @umax_sub_op0_vec_commute(
-; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umax_sub_op0_vec_commute
+; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[X]], <2 x i8> [[Y]])
 ; CHECK-NEXT:    ret <2 x i8> [[TMP1]]
 ;
   %u = call <2 x i8> @llvm.umax.v2i8(<2 x i8> %x, <2 x i8> %y)
@@ -506,8 +536,9 @@ define <2 x i8> @umax_sub_op0_vec_commute(<2 x i8> %x, <2 x i8> %y) {
 }
 
 define i8 @umax_sub_op0_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @umax_sub_op0_use(
-; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umax_sub_op0_use
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    call void @use8(i8 [[U]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 [[U]], [[Y]]
 ; CHECK-NEXT:    ret i8 [[R]]
@@ -519,8 +550,9 @@ define i8 @umax_sub_op0_use(i8 %x, i8 %y) {
 }
 
 define i8 @umax_sub_op1(i8 %x, i8 %y) {
-; CHECK-LABEL: @umax_sub_op1(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umax_sub_op1
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 0, [[TMP1]]
 ; CHECK-NEXT:    ret i8 [[R]]
 ;
@@ -530,8 +562,9 @@ define i8 @umax_sub_op1(i8 %x, i8 %y) {
 }
 
 define <2 x i8> @umax_sub_op1_vec_commute(<2 x i8> %x, <2 x i8> %y) {
-; CHECK-LABEL: @umax_sub_op1_vec_commute(
-; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umax_sub_op1_vec_commute
+; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[X]], <2 x i8> [[Y]])
 ; CHECK-NEXT:    [[R:%.*]] = sub <2 x i8> zeroinitializer, [[TMP1]]
 ; CHECK-NEXT:    ret <2 x i8> [[R]]
 ;
@@ -541,8 +574,9 @@ define <2 x i8> @umax_sub_op1_vec_commute(<2 x i8> %x, <2 x i8> %y) {
 }
 
 define i8 @umax_sub_op1_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @umax_sub_op1_use(
-; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umax_sub_op1_use
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    call void @use8(i8 [[U]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y]], [[U]]
 ; CHECK-NEXT:    ret i8 [[R]]
@@ -554,8 +588,9 @@ define i8 @umax_sub_op1_use(i8 %x, i8 %y) {
 }
 
 define i8 @umin_sub_op1(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_sub_op1(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_sub_op1
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %u = call i8 @llvm.umin.i8(i8 %y, i8 %x)
@@ -564,8 +599,9 @@ define i8 @umin_sub_op1(i8 %x, i8 %y) {
 }
 
 define i8 @umin_sub_op1_commute(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_sub_op1_commute(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_sub_op1_commute
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %u = call i8 @llvm.umin.i8(i8 %x, i8 %y)
@@ -574,8 +610,9 @@ define i8 @umin_sub_op1_commute(i8 %x, i8 %y) {
 }
 
 define i8 @umin_sub_op0(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_sub_op0(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_sub_op0
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 0, [[TMP1]]
 ; CHECK-NEXT:    ret i8 [[R]]
 ;
@@ -585,8 +622,9 @@ define i8 @umin_sub_op0(i8 %x, i8 %y) {
 }
 
 define i8 @umin_sub_op0_commute(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_sub_op0_commute(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_sub_op0_commute
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 0, [[TMP1]]
 ; CHECK-NEXT:    ret i8 [[R]]
 ;
@@ -596,8 +634,9 @@ define i8 @umin_sub_op0_commute(i8 %x, i8 %y) {
 }
 
 define i8 @umin_sub_op1_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_sub_op1_use(
-; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_sub_op1_use
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    call void @use8(i8 [[U]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y]], [[U]]
 ; CHECK-NEXT:    ret i8 [[R]]
@@ -609,8 +648,9 @@ define i8 @umin_sub_op1_use(i8 %x, i8 %y) {
 }
 
 define i8 @umin_sub_op0_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @umin_sub_op0_use(
-; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@umin_sub_op0_use
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    call void @use8(i8 [[U]])
 ; CHECK-NEXT:    [[R:%.*]] = sub i8 [[U]], [[Y]]
 ; CHECK-NEXT:    ret i8 [[R]]
@@ -627,8 +667,9 @@ define i8 @umin_sub_op0_use(i8 %x, i8 %y) {
 ;
 
 define i8 @
diff _add_smin(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_smin(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_smin
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %a = add i8 %x, %y
@@ -638,8 +679,9 @@ define i8 @
diff _add_smin(i8 %x, i8 %y) {
 }
 
 define i8 @
diff _add_smax(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_smax(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_smax
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smin.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %a = add i8 %x, %y
@@ -649,8 +691,9 @@ define i8 @
diff _add_smax(i8 %x, i8 %y) {
 }
 
 define i8 @
diff _add_umin(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_umin(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_umin
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %a = add i8 %x, %y
@@ -660,8 +703,9 @@ define i8 @
diff _add_umin(i8 %x, i8 %y) {
 }
 
 define i8 @
diff _add_umax(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_umax(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_umax
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
 ;
   %a = add i8 %x, %y
@@ -671,8 +715,9 @@ define i8 @
diff _add_umax(i8 %x, i8 %y) {
 }
 
 define i8 @
diff _add_smin_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_smin_use(
-; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.smin.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_smin_use
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.smin.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smax.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
@@ -685,8 +730,9 @@ define i8 @
diff _add_smin_use(i8 %x, i8 %y) {
 }
 
 define i8 @
diff _add_use_smax(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_use_smax(
-; CHECK-NEXT:    [[A:%.*]] = add i8 [[X:%.*]], [[Y:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_use_smax
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[A:%.*]] = add i8 [[X]], [[Y]]
 ; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.smin.i8(i8 [[Y]], i8 [[X]])
 ; CHECK-NEXT:    call void @use8(i8 [[A]])
 ; CHECK-NEXT:    ret i8 [[TMP1]]
@@ -699,8 +745,9 @@ define i8 @
diff _add_use_smax(i8 %x, i8 %y) {
 }
 
 define i8 @
diff _add_use_umin_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @
diff _add_use_umin_use(
-; CHECK-NEXT:    [[A:%.*]] = add i8 [[X:%.*]], [[Y:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@
diff _add_use_umin_use
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]]) {
+; CHECK-NEXT:    [[A:%.*]] = add i8 [[X]], [[Y]]
 ; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[X]], i8 [[Y]])
 ; CHECK-NEXT:    [[S:%.*]] = sub i8 [[A]], [[M]]
 ; CHECK-NEXT:    call void @use8(i8 [[A]])
@@ -720,9 +767,10 @@ define i8 @
diff _add_use_umin_use(i8 %x, i8 %y) {
 ;
 
 define i8 @sub_add_umin(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @sub_add_umin(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[Z:%.*]])
-; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y]], i8 [[Z]])
+; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X]]
 ; CHECK-NEXT:    ret i8 [[S]]
 ;
   %a = add i8 %x, %y
@@ -732,9 +780,10 @@ define i8 @sub_add_umin(i8 %x, i8 %y, i8 %z) {
 }
 
 define i8 @sub_add_umin_commute_umin(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @sub_add_umin_commute_umin(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[Z:%.*]])
-; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_commute_umin
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Z]], i8 [[Y]])
+; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X]]
 ; CHECK-NEXT:    ret i8 [[S]]
 ;
   %a = add i8 %x, %y
@@ -744,9 +793,10 @@ define i8 @sub_add_umin_commute_umin(i8 %x, i8 %y, i8 %z) {
 }
 
 define i8 @sub_add_umin_commute_add(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @sub_add_umin_commute_add(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[Z:%.*]])
-; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_commute_add
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y]], i8 [[Z]])
+; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X]]
 ; CHECK-NEXT:    ret i8 [[S]]
 ;
   %a = add i8 %y, %x
@@ -756,9 +806,10 @@ define i8 @sub_add_umin_commute_add(i8 %x, i8 %y, i8 %z) {
 }
 
 define i8 @sub_add_umin_commute_add_umin(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @sub_add_umin_commute_add_umin(
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Y:%.*]], i8 [[Z:%.*]])
-; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_commute_add_umin
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[Z]], i8 [[Y]])
+; CHECK-NEXT:    [[S:%.*]] = add i8 [[TMP1]], [[X]]
 ; CHECK-NEXT:    ret i8 [[S]]
 ;
   %a = add i8 %y, %x
@@ -768,9 +819,10 @@ define i8 @sub_add_umin_commute_add_umin(i8 %x, i8 %y, i8 %z) {
 }
 
 define <2 x i8> @sub_add_umin_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
-; CHECK-LABEL: @sub_add_umin_vec(
-; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[Y:%.*]], <2 x i8> [[Z:%.*]])
-; CHECK-NEXT:    [[S:%.*]] = add <2 x i8> [[TMP1]], [[X:%.*]]
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_vec
+; CHECK-SAME: (<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]], <2 x i8> [[Z:%.*]]) {
+; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[Y]], <2 x i8> [[Z]])
+; CHECK-NEXT:    [[S:%.*]] = add <2 x i8> [[TMP1]], [[X]]
 ; CHECK-NEXT:    ret <2 x i8> [[S]]
 ;
   %a = add <2 x i8> %x, %y
@@ -782,9 +834,10 @@ define <2 x i8> @sub_add_umin_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) {
 ; negative test
 
 define i8 @sub_add_umin_mismatch(i8 %x, i8 %y, i8 %z, i8 %t) {
-; CHECK-LABEL: @sub_add_umin_mismatch(
-; CHECK-NEXT:    [[A:%.*]] = add i8 [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[T:%.*]], i8 [[Z:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_mismatch
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]], i8 [[T:%.*]]) {
+; CHECK-NEXT:    [[A:%.*]] = add i8 [[X]], [[Y]]
+; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[T]], i8 [[Z]])
 ; CHECK-NEXT:    [[S:%.*]] = sub i8 [[A]], [[M]]
 ; CHECK-NEXT:    ret i8 [[S]]
 ;
@@ -795,9 +848,10 @@ define i8 @sub_add_umin_mismatch(i8 %x, i8 %y, i8 %z, i8 %t) {
 }
 
 define i8 @sub_add_umin_use_a(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @sub_add_umin_use_a(
-; CHECK-NEXT:    [[A:%.*]] = add i8 [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[Z:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_use_a
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[A:%.*]] = add i8 [[X]], [[Y]]
+; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[Z]])
 ; CHECK-NEXT:    [[S:%.*]] = sub i8 [[A]], [[M]]
 ; CHECK-NEXT:    call void @use8(i8 [[A]])
 ; CHECK-NEXT:    ret i8 [[S]]
@@ -810,9 +864,10 @@ define i8 @sub_add_umin_use_a(i8 %x, i8 %y, i8 %z) {
 }
 
 define i8 @sub_add_umin_use_m(i8 %x, i8 %y, i8 %z) {
-; CHECK-LABEL: @sub_add_umin_use_m(
-; CHECK-NEXT:    [[A:%.*]] = add i8 [[X:%.*]], [[Y:%.*]]
-; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[Z:%.*]])
+; CHECK-LABEL: define {{[^@]+}}@sub_add_umin_use_m
+; CHECK-SAME: (i8 [[X:%.*]], i8 [[Y:%.*]], i8 [[Z:%.*]]) {
+; CHECK-NEXT:    [[A:%.*]] = add i8 [[X]], [[Y]]
+; CHECK-NEXT:    [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[Y]], i8 [[Z]])
 ; CHECK-NEXT:    [[S:%.*]] = sub i8 [[A]], [[M]]
 ; CHECK-NEXT:    call void @use8(i8 [[M]])
 ; CHECK-NEXT:    ret i8 [[S]]


        


More information about the llvm-commits mailing list