8
8
define i16 @smax_smin (i16 %x ) {
9
9
; CHECK-LABEL: define i16 @smax_smin(
10
10
; CHECK-SAME: i16 [[X:%.*]]) {
11
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.smin .i16(i16 [[X]], i16 255 )
12
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smax .i16(i16 [[MIN ]], i16 -1 )
11
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.smax .i16(i16 [[X]], i16 -1 )
12
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smin .i16(i16 [[TMP1 ]], i16 255 )
13
13
; CHECK-NEXT: ret i16 [[MAX]]
14
14
;
15
15
%min = call i16 @llvm.smin.i16 (i16 %x , i16 255 )
@@ -20,8 +20,8 @@ define i16 @smax_smin(i16 %x) {
20
20
define i16 @umax_umin (i16 %x ) {
21
21
; CHECK-LABEL: define i16 @umax_umin(
22
22
; CHECK-SAME: i16 [[X:%.*]]) {
23
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.umin .i16(i16 [[X]], i16 255 )
24
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax .i16(i16 [[MIN ]], i16 63 )
23
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.umax .i16(i16 [[X]], i16 63 )
24
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umin .i16(i16 [[TMP1 ]], i16 255 )
25
25
; CHECK-NEXT: ret i16 [[MAX]]
26
26
;
27
27
%min = call i16 @llvm.umin.i16 (i16 %x , i16 255 )
@@ -32,8 +32,8 @@ define i16 @umax_umin(i16 %x) {
32
32
define i16 @smax_smin_commute0 (i16 %x ) {
33
33
; CHECK-LABEL: define i16 @smax_smin_commute0(
34
34
; CHECK-SAME: i16 [[X:%.*]]) {
35
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.smin .i16(i16 [[X]], i16 127 )
36
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smax .i16(i16 [[MIN ]], i16 -128 )
35
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.smax .i16(i16 [[X]], i16 -128 )
36
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smin .i16(i16 [[TMP1 ]], i16 127 )
37
37
; CHECK-NEXT: ret i16 [[MAX]]
38
38
;
39
39
%min = call i16 @llvm.smin.i16 (i16 %x , i16 127 )
@@ -44,8 +44,8 @@ define i16 @smax_smin_commute0(i16 %x) {
44
44
define i16 @umax_umin_commute0 (i16 %x ) {
45
45
; CHECK-LABEL: define i16 @umax_umin_commute0(
46
46
; CHECK-SAME: i16 [[X:%.*]]) {
47
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.umin .i16(i16 [[X]], i16 255 )
48
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax .i16(i16 [[MIN ]], i16 127 )
47
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.umax .i16(i16 [[X]], i16 127 )
48
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umin .i16(i16 [[TMP1 ]], i16 255 )
49
49
; CHECK-NEXT: ret i16 [[MAX]]
50
50
;
51
51
%min = call i16 @llvm.umin.i16 (i16 %x , i16 255 )
@@ -56,8 +56,8 @@ define i16 @umax_umin_commute0(i16 %x) {
56
56
define i16 @smax_smin_commute1 (i16 %x ) {
57
57
; CHECK-LABEL: define i16 @smax_smin_commute1(
58
58
; CHECK-SAME: i16 [[X:%.*]]) {
59
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.smin .i16(i16 [[X]], i16 127 )
60
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smax .i16(i16 [[MIN ]], i16 -128 )
59
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.smax .i16(i16 [[X]], i16 -128 )
60
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smin .i16(i16 [[TMP1 ]], i16 127 )
61
61
; CHECK-NEXT: ret i16 [[MAX]]
62
62
;
63
63
%min = call i16 @llvm.smin.i16 (i16 127 , i16 %x )
@@ -68,8 +68,8 @@ define i16 @smax_smin_commute1(i16 %x) {
68
68
define i16 @umax_umin_commute1 (i16 %x ) {
69
69
; CHECK-LABEL: define i16 @umax_umin_commute1(
70
70
; CHECK-SAME: i16 [[X:%.*]]) {
71
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.umin .i16(i16 [[X]], i16 255 )
72
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax .i16(i16 [[MIN ]], i16 127 )
71
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.umax .i16(i16 [[X]], i16 127 )
72
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umin .i16(i16 [[TMP1 ]], i16 255 )
73
73
; CHECK-NEXT: ret i16 [[MAX]]
74
74
;
75
75
%min = call i16 @llvm.umin.i16 (i16 255 , i16 %x )
@@ -80,8 +80,8 @@ define i16 @umax_umin_commute1(i16 %x) {
80
80
define i16 @smax_smin_commute2 (i16 %x ) {
81
81
; CHECK-LABEL: define i16 @smax_smin_commute2(
82
82
; CHECK-SAME: i16 [[X:%.*]]) {
83
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.smin .i16(i16 [[X]], i16 127 )
84
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smax .i16(i16 [[MIN ]], i16 -128 )
83
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.smax .i16(i16 [[X]], i16 -128 )
84
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smin .i16(i16 [[TMP1 ]], i16 127 )
85
85
; CHECK-NEXT: ret i16 [[MAX]]
86
86
;
87
87
%min = call i16 @llvm.smin.i16 (i16 %x , i16 127 )
@@ -92,8 +92,8 @@ define i16 @smax_smin_commute2(i16 %x) {
92
92
define i16 @umax_umin_commute2 (i16 %x ) {
93
93
; CHECK-LABEL: define i16 @umax_umin_commute2(
94
94
; CHECK-SAME: i16 [[X:%.*]]) {
95
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.umin .i16(i16 [[X]], i16 255 )
96
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax .i16(i16 [[MIN ]], i16 127 )
95
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.umax .i16(i16 [[X]], i16 127 )
96
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umin .i16(i16 [[TMP1 ]], i16 255 )
97
97
; CHECK-NEXT: ret i16 [[MAX]]
98
98
;
99
99
%min = call i16 @llvm.umin.i16 (i16 %x , i16 255 )
@@ -104,8 +104,8 @@ define i16 @umax_umin_commute2(i16 %x) {
104
104
define i16 @smax_smin_commute3 (i16 %x ) {
105
105
; CHECK-LABEL: define i16 @smax_smin_commute3(
106
106
; CHECK-SAME: i16 [[X:%.*]]) {
107
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.smin .i16(i16 [[X]], i16 127 )
108
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smax .i16(i16 [[MIN ]], i16 -128 )
107
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.smax .i16(i16 [[X]], i16 -128 )
108
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.smin .i16(i16 [[TMP1 ]], i16 127 )
109
109
; CHECK-NEXT: ret i16 [[MAX]]
110
110
;
111
111
%min = call i16 @llvm.smin.i16 (i16 %x , i16 127 )
@@ -116,8 +116,8 @@ define i16 @smax_smin_commute3(i16 %x) {
116
116
define i16 @umax_umin_commute3 (i16 %x ) {
117
117
; CHECK-LABEL: define i16 @umax_umin_commute3(
118
118
; CHECK-SAME: i16 [[X:%.*]]) {
119
- ; CHECK-NEXT: [[MIN :%.*]] = call i16 @llvm.umin .i16(i16 [[X]], i16 255 )
120
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax .i16(i16 [[MIN ]], i16 127 )
119
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i16 @llvm.umax .i16(i16 [[X]], i16 127 )
120
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umin .i16(i16 [[TMP1 ]], i16 255 )
121
121
; CHECK-NEXT: ret i16 [[MAX]]
122
122
;
123
123
%min = call i16 @llvm.umin.i16 (i16 %x , i16 255 )
@@ -128,8 +128,8 @@ define i16 @umax_umin_commute3(i16 %x) {
128
128
define <2 x i16 > @smax_smin_v2i16 (<2 x i16 > %x ) {
129
129
; CHECK-LABEL: define <2 x i16> @smax_smin_v2i16(
130
130
; CHECK-SAME: <2 x i16> [[X:%.*]]) {
131
- ; CHECK-NEXT: [[MIN :%.*]] = call <2 x i16> @llvm.smin .v2i16(<2 x i16> [[X]], <2 x i16> splat (i16 127 ))
132
- ; CHECK-NEXT: [[MAX:%.*]] = call <2 x i16> @llvm.smax .v2i16(<2 x i16> [[MIN ]], <2 x i16> splat (i16 -128 ))
131
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call <2 x i16> @llvm.smax .v2i16(<2 x i16> [[X]], <2 x i16> splat (i16 -128 ))
132
+ ; CHECK-NEXT: [[MAX:%.*]] = call <2 x i16> @llvm.smin .v2i16(<2 x i16> [[TMP1 ]], <2 x i16> splat (i16 127 ))
133
133
; CHECK-NEXT: ret <2 x i16> [[MAX]]
134
134
;
135
135
%min = call <2 x i16 > @llvm.smin.v2i16 (<2 x i16 > %x , <2 x i16 > splat (i16 127 ))
@@ -140,8 +140,8 @@ define <2 x i16> @smax_smin_v2i16(<2 x i16> %x) {
140
140
define <2 x i16 > @umax_umin_v2i16 (<2 x i16 > %x ) {
141
141
; CHECK-LABEL: define <2 x i16> @umax_umin_v2i16(
142
142
; CHECK-SAME: <2 x i16> [[X:%.*]]) {
143
- ; CHECK-NEXT: [[MIN :%.*]] = call <2 x i16> @llvm.umin .v2i16(<2 x i16> [[X]], <2 x i16> splat (i16 255 ))
144
- ; CHECK-NEXT: [[MAX:%.*]] = call <2 x i16> @llvm.umax .v2i16(<2 x i16> [[MIN ]], <2 x i16> splat (i16 127 ))
143
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call <2 x i16> @llvm.umax .v2i16(<2 x i16> [[X]], <2 x i16> splat (i16 127 ))
144
+ ; CHECK-NEXT: [[MAX:%.*]] = call <2 x i16> @llvm.umin .v2i16(<2 x i16> [[TMP1 ]], <2 x i16> splat (i16 255 ))
145
145
; CHECK-NEXT: ret <2 x i16> [[MAX]]
146
146
;
147
147
%min = call <2 x i16 > @llvm.umin.v2i16 (<2 x i16 > %x , <2 x i16 > splat (i16 255 ))
@@ -251,8 +251,7 @@ define i16 @umax_umin_i16_limits(i16 %x) {
251
251
define i16 @min_smax_smin_nested (i16 %x ) {
252
252
; CHECK-LABEL: define i16 @min_smax_smin_nested(
253
253
; CHECK-SAME: i16 [[X:%.*]]) {
254
- ; CHECK-NEXT: [[MIN1:%.*]] = call i16 @llvm.smin.i16(i16 [[X]], i16 255)
255
- ; CHECK-NEXT: [[TMP1:%.*]] = call i16 @llvm.smax.i16(i16 [[MIN1]], i16 -128)
254
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i16 @llvm.smax.i16(i16 [[X]], i16 -128)
256
255
; CHECK-NEXT: [[MIN2:%.*]] = call i16 @llvm.smin.i16(i16 [[TMP1]], i16 127)
257
256
; CHECK-NEXT: ret i16 [[MIN2]]
258
257
;
@@ -265,8 +264,7 @@ define i16 @min_smax_smin_nested(i16 %x) {
265
264
define i16 @umax_umin_nested (i16 %x ) {
266
265
; CHECK-LABEL: define i16 @umax_umin_nested(
267
266
; CHECK-SAME: i16 [[X:%.*]]) {
268
- ; CHECK-NEXT: [[MIN1:%.*]] = call i16 @llvm.umin.i16(i16 [[X]], i16 255)
269
- ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax.i16(i16 [[MIN1]], i16 63)
267
+ ; CHECK-NEXT: [[MAX:%.*]] = call i16 @llvm.umax.i16(i16 [[X]], i16 63)
270
268
; CHECK-NEXT: [[MIN2:%.*]] = call i16 @llvm.umin.i16(i16 [[MAX]], i16 127)
271
269
; CHECK-NEXT: ret i16 [[MIN2]]
272
270
;
0 commit comments