@@ -201,3 +201,275 @@ body: |
201
201
%2:vcc(s1) = COPY %1
202
202
S_ENDPGM 0, implicit %2
203
203
...
204
+
205
+ ---
206
+ name : copy_sgpr_64_to_s1
207
+ legalized : true
208
+
209
+ body : |
210
+ bb.0:
211
+ liveins: $sgpr4_sgpr5
212
+ ; CHECK-LABEL: name: copy_sgpr_64_to_s1
213
+ ; CHECK: liveins: $sgpr4_sgpr5
214
+ ; CHECK-NEXT: {{ $}}
215
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5
216
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
217
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
218
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[CONST1]], [[CONST2]]
219
+ %0:_(s1) = COPY $sgpr4_sgpr5
220
+ %1:_(s32) = G_ZEXT %0:_(s1)
221
+ ...
222
+
223
+ ---
224
+ name : copy_sgpr_32_to_s1
225
+ legalized : true
226
+
227
+ body : |
228
+ bb.0:
229
+ liveins: $sgpr0
230
+ ; CHECK-LABEL: name: copy_sgpr_32_to_s1
231
+ ; CHECK: liveins: $sgpr0
232
+ ; CHECK-NEXT: {{ $}}
233
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0
234
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
235
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
236
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[CONST1]], [[CONST2]]
237
+ %0:_(s1) = COPY $sgpr0
238
+ %1:_(s32) = G_ZEXT %0:_(s1)
239
+ ...
240
+
241
+ ---
242
+ name : copy2_sgpr_64_to_s1
243
+ legalized : true
244
+
245
+ body : |
246
+ bb.0:
247
+ liveins: $sgpr4_sgpr5, $sgpr6_sgpr7
248
+ ; CHECK-LABEL: name: copy2_sgpr_64_to_s1
249
+ ; CHECK: liveins: $sgpr4_sgpr5, $sgpr6_sgpr7
250
+ ; CHECK-NEXT: {{ $}}
251
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5
252
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY $sgpr6_sgpr7
253
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
254
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
255
+ ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[CONST1]], [[CONST2]]
256
+ ; CHECK-NEXT: [[CONST3:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
257
+ ; CHECK-NEXT: [[CONST4:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
258
+ ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY2]](s1), [[CONST3]], [[CONST4]]
259
+ %0:_(s1) = COPY $sgpr4_sgpr5
260
+ %1:_(s1) = COPY $sgpr6_sgpr7
261
+ %2:_(s32) = G_ZEXT %0:_(s1)
262
+ %3:_(s32) = G_ZEXT %1:_(s1)
263
+ ...
264
+
265
+ ---
266
+ name : copy2_sgpr_32_to_s1
267
+ legalized : true
268
+
269
+ body : |
270
+ bb.0:
271
+ liveins: $sgpr0, $sgpr1
272
+ ; CHECK-LABEL: name: copy2_sgpr_32_to_s1
273
+ ; CHECK: liveins: $sgpr0, $sgpr1
274
+ ; CHECK-NEXT: {{ $}}
275
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr0
276
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY $sgpr1
277
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
278
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
279
+ ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[CONST1]], [[CONST2]]
280
+ ; CHECK-NEXT: [[CONST3:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
281
+ ; CHECK-NEXT: [[CONST4:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
282
+ ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY2]](s1), [[CONST3]], [[CONST4]]
283
+ %0:_(s1) = COPY $sgpr0
284
+ %1:_(s1) = COPY $sgpr1
285
+ %2:_(s32) = G_ZEXT %0:_(s1)
286
+ %3:_(s32) = G_ZEXT %1:_(s1)
287
+ ...
288
+
289
+ ---
290
+ name : copy_sgpr_64_and_sgpr_32_to_s1
291
+ legalized : true
292
+
293
+ body : |
294
+ bb.0:
295
+ liveins: $sgpr6, $sgpr4_sgpr5
296
+ ; CHECK-LABEL: name: copy_sgpr_64_and_sgpr_32_to_s1
297
+ ; CHECK: liveins: $sgpr6, $sgpr4_sgpr5
298
+ ; CHECK-NEXT: {{ $}}
299
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5
300
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr6
301
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
302
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
303
+ ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY1]](s1), [[CONST1]], [[CONST2]]
304
+ ; CHECK-NEXT: [[CONST3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1
305
+ ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s32) = G_AND [[COPY2]], [[CONST3]]
306
+ %0:_(s1) = COPY $sgpr4_sgpr5
307
+ %2:_(s32) = COPY $sgpr6
308
+ %7:_(s32) = G_ZEXT %0:_(s1)
309
+ %5:_(s32) = G_CONSTANT i32 1
310
+ %4:_(s32) = G_AND %2:_, %5:_
311
+ ...
312
+
313
+ ---
314
+ name : copy_sgpr_64_to_s1_vgpr
315
+ legalized : true
316
+
317
+ body : |
318
+ bb.0:
319
+ liveins: $sgpr4_sgpr5
320
+ ; CHECK-LABEL: name: copy_sgpr_64_to_s1_vgpr
321
+ ; CHECK: liveins: $sgpr4_sgpr5
322
+ ; CHECK-NEXT: {{ $}}
323
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s1) = COPY $sgpr4_sgpr5
324
+ ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[COPY]](s1)
325
+ %0:vgpr(s1) = COPY $sgpr4_sgpr5
326
+ %1:_(s32) = G_ZEXT %0:vgpr(s1)
327
+ ...
328
+
329
+ ---
330
+ name : copy_sgpr_32_to_s1_vgpr
331
+ legalized : true
332
+
333
+ body : |
334
+ bb.0:
335
+ liveins: $sgpr0
336
+ ; CHECK-LABEL: name: copy_sgpr_32_to_s1_vgpr
337
+ ; CHECK: liveins: $sgpr0
338
+ ; CHECK-NEXT: {{ $}}
339
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s1) = COPY $sgpr0
340
+ ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:vgpr(s32) = G_ZEXT [[COPY]](s1)
341
+ %0:vgpr(s1) = COPY $sgpr0
342
+ %1:_(s32) = G_ZEXT %0:vgpr(s1)
343
+ ...
344
+
345
+ ---
346
+ name : copy_sgpr_64_to_s1_vcc
347
+ legalized : true
348
+
349
+ body : |
350
+ bb.0:
351
+ liveins: $sgpr4_sgpr5
352
+ ; CHECK-LABEL: name: copy_sgpr_64_to_s1_vcc
353
+ ; CHECK: liveins: $sgpr4_sgpr5
354
+ ; CHECK-NEXT: {{ $}}
355
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr4_sgpr5
356
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
357
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
358
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[CONST1]], [[CONST2]]
359
+ %0:vcc(s1) = COPY $sgpr4_sgpr5
360
+ %1:_(s32) = G_ZEXT %0:vcc(s1)
361
+ ...
362
+
363
+ ---
364
+ name : copy_sgpr_32_to_s1_vcc
365
+ legalized : true
366
+
367
+ body : |
368
+ bb.0:
369
+ liveins: $sgpr0
370
+ ; CHECK-LABEL: name: copy_sgpr_32_to_s1_vcc
371
+ ; CHECK: liveins: $sgpr0
372
+ ; CHECK-NEXT: {{ $}}
373
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vcc(s1) = COPY $sgpr0
374
+ ; CHECK-NEXT: [[CONST1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1
375
+ ; CHECK-NEXT: [[CONST2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0
376
+ ; CHECK-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY]](s1), [[CONST1]], [[CONST2]]
377
+ %0:vcc(s1) = COPY $sgpr0
378
+ %1:_(s32) = G_ZEXT %0:vcc(s1)
379
+ ...
380
+
381
+ ---
382
+ name : copy_virt_reg_to_s1
383
+ legalized : true
384
+
385
+ body : |
386
+ bb.0:
387
+ liveins: $vgpr0
388
+ ; CHECK-LABEL: name: copy_virt_reg_to_s1
389
+ ; CHECK: liveins: $vgpr0
390
+ ; CHECK-NEXT: {{ $}}
391
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
392
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
393
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s1) = COPY [[TRUNC]](s1)
394
+ %0:_(s32) = COPY $vgpr0
395
+ %1:_(s1) = G_TRUNC %0
396
+ %2:_(s1) = COPY %1
397
+ ...
398
+
399
+ ---
400
+ name : copy_virt_reg_to_s1_vgpr
401
+ legalized : true
402
+
403
+ body : |
404
+ bb.0:
405
+ liveins: $vgpr0
406
+ ; CHECK-LABEL: name: copy_virt_reg_to_s1_vgpr
407
+ ; CHECK: liveins: $vgpr0
408
+ ; CHECK-NEXT: {{ $}}
409
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
410
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
411
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s1) = COPY [[TRUNC]](s1)
412
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s1) = COPY [[COPY2]](s1)
413
+ %0:_(s32) = COPY $vgpr0
414
+ %1:_(s1) = G_TRUNC %0
415
+ %2:vgpr(s1) = COPY %1
416
+ %3:_(s1) = COPY %2
417
+ ...
418
+
419
+
420
+ ---
421
+ name : copy_virt_reg_to_s1_vcc
422
+ legalized : true
423
+
424
+ body : |
425
+ bb.0:
426
+ liveins: $vgpr0
427
+ ; CHECK-LABEL: name: copy_virt_reg_to_s1_vcc
428
+ ; CHECK: liveins: $vgpr0
429
+ ; CHECK-NEXT: {{ $}}
430
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
431
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
432
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
433
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[COPY2]](s1)
434
+ %0:_(s32) = COPY $vgpr0
435
+ %1:_(s1) = G_TRUNC %0
436
+ %2:vcc(s1) = COPY %1
437
+ %3:_(s1) = COPY %2
438
+ ...
439
+
440
+ ---
441
+ name : copy_s1_to_sgpr_64
442
+ legalized : true
443
+
444
+ body : |
445
+ bb.0:
446
+ liveins: $vgpr0
447
+ ; CHECK-LABEL: name: copy_s1_to_sgpr_64
448
+ ; CHECK: liveins: $vgpr0
449
+ ; CHECK-NEXT: {{ $}}
450
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
451
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
452
+ ; CHECK-NEXT: $sgpr4_sgpr5 = COPY [[TRUNC]](s1)
453
+ %0:_(s32) = COPY $vgpr0
454
+ %1:_(s1) = G_TRUNC %0
455
+ $sgpr4_sgpr5 = COPY %1
456
+ ...
457
+
458
+ ---
459
+ name : copy_s1_to_sgpr_32
460
+ legalized : true
461
+
462
+ body : |
463
+ bb.0:
464
+ liveins: $vgpr0
465
+ ; CHECK-LABEL: name: copy_s1_to_sgpr_32
466
+ ; CHECK: liveins: $vgpr0
467
+ ; CHECK-NEXT: {{ $}}
468
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
469
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
470
+ ; CHECK-NEXT: $sgpr0 = COPY [[TRUNC]](s1)
471
+ %0:_(s32) = COPY $vgpr0
472
+ %1:_(s1) = G_TRUNC %0
473
+ $sgpr0 = COPY %1
474
+ ...
475
+
0 commit comments