@@ -154,3 +154,120 @@ body: |
154
154
%3:_(s64) = G_SEXT %2
155
155
$x1 = COPY %3
156
156
...
157
+ ---
158
+ name : sext_trunc_nsw_nuw_vector
159
+ body : |
160
+ bb.0:
161
+ liveins: $w0, $w1
162
+ ; CHECK-LABEL: name: sext_trunc_nsw_nuw_vector
163
+ ; CHECK: liveins: $w0, $w1
164
+ ; CHECK-NEXT: {{ $}}
165
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
166
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
167
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
168
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
169
+ ; CHECK-NEXT: %bv0:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
170
+ ; CHECK-NEXT: $q0 = COPY %bv0(<4 x s32>)
171
+ %0:_(s32) = COPY $w0
172
+ %1:_(s32) = COPY $w1
173
+ %2:_(s32) = COPY $w2
174
+ %3:_(s32) = COPY $w3
175
+ %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)
176
+ %t:_(<4 x s16>) = nsw nuw G_TRUNC %bv0
177
+ %s:_(<4 x s32>) = G_SEXT %t
178
+ $q0 = COPY %s
179
+ ...
180
+ ---
181
+ name : zext_trunc_vector
182
+ body : |
183
+ bb.0:
184
+ liveins: $w0, $w1
185
+ ; CHECK-LABEL: name: zext_trunc_vector
186
+ ; CHECK: liveins: $w0, $w1
187
+ ; CHECK-NEXT: {{ $}}
188
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
189
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
190
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
191
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
192
+ ; CHECK-NEXT: %bv0:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
193
+ ; CHECK-NEXT: %t:_(<4 x s16>) = G_TRUNC %bv0(<4 x s32>)
194
+ ; CHECK-NEXT: %z:_(<4 x s32>) = G_ZEXT %t(<4 x s16>)
195
+ ; CHECK-NEXT: $q0 = COPY %z(<4 x s32>)
196
+ %0:_(s32) = COPY $w0
197
+ %1:_(s32) = COPY $w1
198
+ %2:_(s32) = COPY $w2
199
+ %3:_(s32) = COPY $w3
200
+ %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)
201
+ %t:_(<4 x s16>) = G_TRUNC %bv0
202
+ %z:_(<4 x s32>) = G_ZEXT %t
203
+ $q0 = COPY %z
204
+ ...
205
+ ---
206
+ name : zext_trunc_nsw_vector
207
+ body : |
208
+ bb.0:
209
+ liveins: $w0, $w1
210
+ ; CHECK-LABEL: name: zext_trunc_nsw_vector
211
+ ; CHECK: liveins: $w0, $w1
212
+ ; CHECK-NEXT: {{ $}}
213
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
214
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
215
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
216
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
217
+ ; CHECK-NEXT: %bv0:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
218
+ ; CHECK-NEXT: %t:_(<4 x s16>) = nsw G_TRUNC %bv0(<4 x s32>)
219
+ ; CHECK-NEXT: %z:_(<4 x s32>) = G_ZEXT %t(<4 x s16>)
220
+ ; CHECK-NEXT: $q0 = COPY %z(<4 x s32>)
221
+ %0:_(s32) = COPY $w0
222
+ %1:_(s32) = COPY $w1
223
+ %2:_(s32) = COPY $w2
224
+ %3:_(s32) = COPY $w3
225
+ %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)
226
+ %t:_(<4 x s16>) = nsw G_TRUNC %bv0
227
+ %z:_(<4 x s32>) = G_ZEXT %t
228
+ $q0 = COPY %z
229
+ ...
230
+ ---
231
+ name : zext_trunc_nuw_vector2
232
+ body : |
233
+ bb.0:
234
+ liveins: $w0, $w1
235
+ ; CHECK-LABEL: name: zext_trunc_nuw_vector2
236
+ ; CHECK: liveins: $w0, $w1
237
+ ; CHECK-NEXT: {{ $}}
238
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
239
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
240
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
241
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
242
+ ; CHECK-NEXT: %bv0:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)
243
+ ; CHECK-NEXT: $q0 = COPY %bv0(<4 x s32>)
244
+ %0:_(s32) = COPY $w0
245
+ %1:_(s32) = COPY $w1
246
+ %2:_(s32) = COPY $w2
247
+ %3:_(s32) = COPY $w3
248
+ %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)
249
+ %t:_(<4 x s16>) = nuw G_TRUNC %bv0
250
+ %z:_(<4 x s32>) = G_ZEXT %t
251
+ $q0 = COPY %z
252
+ ...
253
+ ---
254
+ name : zext_trunc_nuw_vector_wrong_type
255
+ body : |
256
+ bb.0:
257
+ liveins: $w0, $w1
258
+ ; CHECK-LABEL: name: zext_trunc_nuw_vector_wrong_type
259
+ ; CHECK: liveins: $w0, $w1
260
+ ; CHECK-NEXT: {{ $}}
261
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
262
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
263
+ ; CHECK-NEXT: %bv0:_(<2 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64)
264
+ ; CHECK-NEXT: %t:_(<2 x s16>) = nuw G_TRUNC %bv0(<2 x s64>)
265
+ ; CHECK-NEXT: %z:_(<2 x s32>) = G_ZEXT %t(<2 x s16>)
266
+ ; CHECK-NEXT: $d0 = COPY %z(<2 x s32>)
267
+ %0:_(s64) = COPY $x0
268
+ %1:_(s64) = COPY $x1
269
+ %bv0:_(<2 x s64>) = G_BUILD_VECTOR %0:_(s64), %1:_(s64)
270
+ %t:_(<2 x s16>) = nuw G_TRUNC %bv0
271
+ %z:_(<2 x s32>) = G_ZEXT %t
272
+ $d0 = COPY %z
273
+ ...
0 commit comments