@@ -23,6 +23,18 @@ define i1 @icmp_ne_common_op00(i1 %c, i6 %x, i6 %y, i6 %z) {
23
23
ret i1 %r
24
24
}
25
25
26
+ define i1 @icmp_ne_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
27
+ ; CHECK-LABEL: @icmp_ne_samesign_common(
28
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
29
+ ; CHECK-NEXT: [[R:%.*]] = icmp ne i6 [[X:%.*]], [[R_V]]
30
+ ; CHECK-NEXT: ret i1 [[R]]
31
+ ;
32
+ %cmp1 = icmp samesign ne i6 %x , %y
33
+ %cmp2 = icmp ne i6 %x , %z
34
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
35
+ ret i1 %r
36
+ }
37
+
26
38
define i1 @icmp_ne_common_op01 (i1 %c , i3 %x , i3 %y , i3 %z ) {
27
39
; CHECK-LABEL: @icmp_ne_common_op01(
28
40
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i3 [[Y:%.*]], i3 [[Z:%.*]]
@@ -71,6 +83,18 @@ define i1 @icmp_eq_common_op00(i1 %c, i5 %x, i5 %y, i5 %z) {
71
83
ret i1 %r
72
84
}
73
85
86
+ define i1 @icmp_eq_samesign_common (i1 %c , i5 %x , i5 %y , i5 %z ) {
87
+ ; CHECK-LABEL: @icmp_eq_samesign_common(
88
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i5 [[Y:%.*]], i5 [[Z:%.*]]
89
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i5 [[X:%.*]], [[R_V]]
90
+ ; CHECK-NEXT: ret i1 [[R]]
91
+ ;
92
+ %cmp1 = icmp eq i5 %x , %y
93
+ %cmp2 = icmp samesign eq i5 %x , %z
94
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
95
+ ret i1 %r
96
+ }
97
+
74
98
define <5 x i1 > @icmp_eq_common_op01 (<5 x i1 > %c , <5 x i7 > %x , <5 x i7 > %y , <5 x i7 > %z ) {
75
99
; CHECK-LABEL: @icmp_eq_common_op01(
76
100
; CHECK-NEXT: [[R_V:%.*]] = select <5 x i1> [[C:%.*]], <5 x i7> [[Y:%.*]], <5 x i7> [[Z:%.*]]
@@ -134,6 +158,18 @@ define i1 @icmp_slt_common(i1 %c, i6 %x, i6 %y, i6 %z) {
134
158
ret i1 %r
135
159
}
136
160
161
+ define i1 @icmp_slt_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
162
+ ; CHECK-LABEL: @icmp_slt_samesign_common(
163
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
164
+ ; CHECK-NEXT: [[R:%.*]] = icmp ult i6 [[X:%.*]], [[R_V]]
165
+ ; CHECK-NEXT: ret i1 [[R]]
166
+ ;
167
+ %cmp1 = icmp samesign ult i6 %x , %y
168
+ %cmp2 = icmp slt i6 %x , %z
169
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
170
+ ret i1 %r
171
+ }
172
+
137
173
define i1 @icmp_sgt_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
138
174
; CHECK-LABEL: @icmp_sgt_common(
139
175
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
@@ -146,6 +182,18 @@ define i1 @icmp_sgt_common(i1 %c, i6 %x, i6 %y, i6 %z) {
146
182
ret i1 %r
147
183
}
148
184
185
+ define i1 @icmp_sgt_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
186
+ ; CHECK-LABEL: @icmp_sgt_samesign_common(
187
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
188
+ ; CHECK-NEXT: [[R:%.*]] = icmp ugt i6 [[X:%.*]], [[R_V]]
189
+ ; CHECK-NEXT: ret i1 [[R]]
190
+ ;
191
+ %cmp1 = icmp samesign ugt i6 %x , %y
192
+ %cmp2 = icmp sgt i6 %x , %z
193
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
194
+ ret i1 %r
195
+ }
196
+
149
197
define i1 @icmp_sle_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
150
198
; CHECK-LABEL: @icmp_sle_common(
151
199
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
@@ -158,6 +206,18 @@ define i1 @icmp_sle_common(i1 %c, i6 %x, i6 %y, i6 %z) {
158
206
ret i1 %r
159
207
}
160
208
209
+ define i1 @icmp_sle_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
210
+ ; CHECK-LABEL: @icmp_sle_samesign_common(
211
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
212
+ ; CHECK-NEXT: [[R:%.*]] = icmp sge i6 [[X:%.*]], [[R_V]]
213
+ ; CHECK-NEXT: ret i1 [[R]]
214
+ ;
215
+ %cmp1 = icmp sle i6 %y , %x
216
+ %cmp2 = icmp samesign ule i6 %z , %x
217
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
218
+ ret i1 %r
219
+ }
220
+
161
221
define i1 @icmp_sge_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
162
222
; CHECK-LABEL: @icmp_sge_common(
163
223
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
@@ -170,6 +230,18 @@ define i1 @icmp_sge_common(i1 %c, i6 %x, i6 %y, i6 %z) {
170
230
ret i1 %r
171
231
}
172
232
233
+ define i1 @icmp_sge_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
234
+ ; CHECK-LABEL: @icmp_sge_samesign_common(
235
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
236
+ ; CHECK-NEXT: [[R:%.*]] = icmp sle i6 [[X:%.*]], [[R_V]]
237
+ ; CHECK-NEXT: ret i1 [[R]]
238
+ ;
239
+ %cmp1 = icmp sge i6 %y , %x
240
+ %cmp2 = icmp samesign uge i6 %z , %x
241
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
242
+ ret i1 %r
243
+ }
244
+
173
245
define i1 @icmp_slt_sgt_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
174
246
; CHECK-LABEL: @icmp_slt_sgt_common(
175
247
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
@@ -182,6 +254,18 @@ define i1 @icmp_slt_sgt_common(i1 %c, i6 %x, i6 %y, i6 %z) {
182
254
ret i1 %r
183
255
}
184
256
257
+ define i1 @icmp_slt_sgt_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
258
+ ; CHECK-LABEL: @icmp_slt_sgt_samesign_common(
259
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
260
+ ; CHECK-NEXT: [[R:%.*]] = icmp ult i6 [[X:%.*]], [[R_V]]
261
+ ; CHECK-NEXT: ret i1 [[R]]
262
+ ;
263
+ %cmp1 = icmp samesign ult i6 %x , %y
264
+ %cmp2 = icmp sgt i6 %z , %x
265
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
266
+ ret i1 %r
267
+ }
268
+
185
269
define i1 @icmp_sle_sge_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
186
270
; CHECK-LABEL: @icmp_sle_sge_common(
187
271
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
@@ -194,6 +278,18 @@ define i1 @icmp_sle_sge_common(i1 %c, i6 %x, i6 %y, i6 %z) {
194
278
ret i1 %r
195
279
}
196
280
281
+ define i1 @icmp_sle_sge_samesign_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
282
+ ; CHECK-LABEL: @icmp_sle_sge_samesign_common(
283
+ ; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
284
+ ; CHECK-NEXT: [[R:%.*]] = icmp sge i6 [[X:%.*]], [[R_V]]
285
+ ; CHECK-NEXT: ret i1 [[R]]
286
+ ;
287
+ %cmp1 = icmp sle i6 %y , %x
288
+ %cmp2 = icmp samesign uge i6 %x , %z
289
+ %r = select i1 %c , i1 %cmp1 , i1 %cmp2
290
+ ret i1 %r
291
+ }
292
+
197
293
define i1 @icmp_ult_common (i1 %c , i6 %x , i6 %y , i6 %z ) {
198
294
; CHECK-LABEL: @icmp_ult_common(
199
295
; CHECK-NEXT: [[R_V:%.*]] = select i1 [[C:%.*]], i6 [[Y:%.*]], i6 [[Z:%.*]]
0 commit comments