@@ -207,3 +207,122 @@ body: |
207
207
%3:_(<4 x s32>) = G_FADD %0, %2(<4 x s32>)
208
208
$q0 = COPY %3(<4 x s32>)
209
209
...
210
+ ---
211
+ name : saddl_v8i8_v8i32
212
+ tracksRegLiveness : true
213
+ body : |
214
+ bb.1:
215
+ liveins: $d0, $d1
216
+
217
+ ; CHECK-LABEL: name: saddl_v8i8_v8i32
218
+ ; CHECK: liveins: $d0, $d1
219
+ ; CHECK-NEXT: {{ $}}
220
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
221
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
222
+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY]](<8 x s8>)
223
+ ; CHECK-NEXT: [[SEXT1:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY1]](<8 x s8>)
224
+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s32>) = G_ADD [[SEXT]], [[SEXT1]]
225
+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[ADD]](<8 x s32>)
226
+ ; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
227
+ ; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
228
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
229
+ %0:_(<8 x s8>) = COPY $d0
230
+ %1:_(<8 x s8>) = COPY $d1
231
+ %2:_(<8 x s32>) = G_SEXT %0(<8 x s8>)
232
+ %3:_(<8 x s32>) = G_SEXT %1(<8 x s8>)
233
+ %4:_(<8 x s32>) = G_ADD %2, %3
234
+ %5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
235
+ $q0 = COPY %5(<4 x s32>)
236
+ $q1 = COPY %6(<4 x s32>)
237
+ RET_ReallyLR implicit $q0, implicit $q1
238
+ ...
239
+
240
+ ---
241
+ name : uaddl_v8i8_v8i32
242
+ tracksRegLiveness : true
243
+ body : |
244
+ bb.1:
245
+ liveins: $d0, $d1
246
+
247
+ ; CHECK-LABEL: name: uaddl_v8i8_v8i32
248
+ ; CHECK: liveins: $d0, $d1
249
+ ; CHECK-NEXT: {{ $}}
250
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
251
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
252
+ ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY]](<8 x s8>)
253
+ ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY1]](<8 x s8>)
254
+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s32>) = G_ADD [[ZEXT]], [[ZEXT1]]
255
+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[ADD]](<8 x s32>)
256
+ ; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
257
+ ; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
258
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
259
+ %0:_(<8 x s8>) = COPY $d0
260
+ %1:_(<8 x s8>) = COPY $d1
261
+ %2:_(<8 x s32>) = G_ZEXT %0(<8 x s8>)
262
+ %3:_(<8 x s32>) = G_ZEXT %1(<8 x s8>)
263
+ %4:_(<8 x s32>) = G_ADD %2, %3
264
+ %5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
265
+ $q0 = COPY %5(<4 x s32>)
266
+ $q1 = COPY %6(<4 x s32>)
267
+ RET_ReallyLR implicit $q0, implicit $q1
268
+ ...
269
+
270
+ ---
271
+ name : ssubl_v8i8_v8i32
272
+ tracksRegLiveness : true
273
+ body : |
274
+ bb.1:
275
+ liveins: $d0, $d1
276
+
277
+ ; CHECK-LABEL: name: ssubl_v8i8_v8i32
278
+ ; CHECK: liveins: $d0, $d1
279
+ ; CHECK-NEXT: {{ $}}
280
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
281
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
282
+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY]](<8 x s8>)
283
+ ; CHECK-NEXT: [[SEXT1:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY1]](<8 x s8>)
284
+ ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(<8 x s32>) = G_SUB [[SEXT]], [[SEXT1]]
285
+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[SUB]](<8 x s32>)
286
+ ; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
287
+ ; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
288
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
289
+ %0:_(<8 x s8>) = COPY $d0
290
+ %1:_(<8 x s8>) = COPY $d1
291
+ %2:_(<8 x s32>) = G_SEXT %0(<8 x s8>)
292
+ %3:_(<8 x s32>) = G_SEXT %1(<8 x s8>)
293
+ %4:_(<8 x s32>) = G_SUB %2, %3
294
+ %5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
295
+ $q0 = COPY %5(<4 x s32>)
296
+ $q1 = COPY %6(<4 x s32>)
297
+ RET_ReallyLR implicit $q0, implicit $q1
298
+ ...
299
+
300
+ ---
301
+ name : usubl_v8i8_v8i32
302
+ tracksRegLiveness : true
303
+ body : |
304
+ bb.1:
305
+ liveins: $d0, $d1
306
+
307
+ ; CHECK-LABEL: name: usubl_v8i8_v8i32
308
+ ; CHECK: liveins: $d0, $d1
309
+ ; CHECK-NEXT: {{ $}}
310
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
311
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
312
+ ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY]](<8 x s8>)
313
+ ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY1]](<8 x s8>)
314
+ ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(<8 x s32>) = G_SUB [[ZEXT]], [[ZEXT1]]
315
+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[SUB]](<8 x s32>)
316
+ ; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
317
+ ; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
318
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
319
+ %0:_(<8 x s8>) = COPY $d0
320
+ %1:_(<8 x s8>) = COPY $d1
321
+ %2:_(<8 x s32>) = G_ZEXT %0(<8 x s8>)
322
+ %3:_(<8 x s32>) = G_ZEXT %1(<8 x s8>)
323
+ %4:_(<8 x s32>) = G_SUB %2, %3
324
+ %5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
325
+ $q0 = COPY %5(<4 x s32>)
326
+ $q1 = COPY %6(<4 x s32>)
327
+ RET_ReallyLR implicit $q0, implicit $q1
328
+ ...
0 commit comments