75
75
body : |
76
76
bb.0:
77
77
; GFX8-LABEL: name: fold_s_add_i32__fi_imm_copy_to_virt_vgpr
78
- ; GFX8: [[V_ADD_CO_U32_e32_ :%[0-9]+]]:vgpr_32 = nuw V_ADD_CO_U32_e32 64, %stack.0, implicit-def dead $vcc , implicit $exec
79
- ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e32_ ]]
78
+ ; GFX8: [[V_ADD_CO_U32_e64_ :%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = nuw V_ADD_CO_U32_e64 64, %stack.0, 0 , implicit $exec
79
+ ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e64_ ]]
80
80
;
81
81
; GFX9-LABEL: name: fold_s_add_i32__fi_imm_copy_to_virt_vgpr
82
82
; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = nuw V_ADD_U32_e64 64, %stack.0, 0, implicit $exec
98
98
body : |
99
99
bb.0:
100
100
; GFX8-LABEL: name: fold_s_add_i32__imm_fi_copy_to_virt_vgpr
101
- ; GFX8: [[V_ADD_CO_U32_e32_ :%[0-9]+]]:vgpr_32 = nuw V_ADD_CO_U32_e32 64, %stack.0, implicit-def dead $vcc , implicit $exec
102
- ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e32_ ]]
101
+ ; GFX8: [[V_ADD_CO_U32_e64_ :%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = nuw V_ADD_CO_U32_e64 64, %stack.0, 0 , implicit $exec
102
+ ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e64_ ]]
103
103
;
104
104
; GFX9-LABEL: name: fold_s_add_i32__imm_fi_copy_to_virt_vgpr
105
105
; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = nuw V_ADD_U32_e64 64, %stack.0, 0, implicit $exec
@@ -202,8 +202,8 @@ body: |
202
202
; GFX8: liveins: $sgpr8
203
203
; GFX8-NEXT: {{ $}}
204
204
; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr8
205
- ; GFX8-NEXT: [[V_ADD_CO_U32_e32_ :%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[COPY]], %stack.0, implicit-def dead $vcc , implicit $exec
206
- ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e32_ ]]
205
+ ; GFX8-NEXT: [[V_ADD_CO_U32_e64_ :%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY]], %stack.0, 0 , implicit $exec
206
+ ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e64_ ]]
207
207
;
208
208
; GFX9-LABEL: name: fold_s_add_i32__mov_fi_reg_copy_to_virt_vgpr
209
209
; GFX9: liveins: $sgpr8
@@ -239,8 +239,8 @@ body: |
239
239
; GFX8: liveins: $sgpr8
240
240
; GFX8-NEXT: {{ $}}
241
241
; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr8
242
- ; GFX8-NEXT: [[V_ADD_CO_U32_e32_ :%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[COPY]], %stack.0, implicit-def dead $vcc , implicit $exec
243
- ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e32_ ]]
242
+ ; GFX8-NEXT: [[V_ADD_CO_U32_e64_ :%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY]], %stack.0, 0 , implicit $exec
243
+ ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e64_ ]]
244
244
;
245
245
; GFX9-LABEL: name: fold_s_add_i32__reg_copy_mov_fi_to_virt_vgpr
246
246
; GFX9: liveins: $sgpr8
@@ -337,8 +337,8 @@ body: |
337
337
; GFX8: liveins: $sgpr8
338
338
; GFX8-NEXT: {{ $}}
339
339
; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr8
340
- ; GFX8-NEXT: [[V_ADD_CO_U32_e32_ :%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[COPY]], %stack.0, implicit-def dead $vcc , implicit $exec
341
- ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e32_ ]]
340
+ ; GFX8-NEXT: [[V_ADD_CO_U32_e64_ :%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY]], %stack.0, 0 , implicit $exec
341
+ ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e64_ ]]
342
342
;
343
343
; GFX9-LABEL: name: fold_s_add_i32__fi_reg_copy_to_virt_vgpr
344
344
; GFX9: liveins: $sgpr8
@@ -371,8 +371,8 @@ body: |
371
371
; GFX8: liveins: $sgpr8
372
372
; GFX8-NEXT: {{ $}}
373
373
; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr8
374
- ; GFX8-NEXT: [[V_ADD_CO_U32_e32_ :%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[COPY]], %stack.0, implicit-def dead $vcc , implicit $exec
375
- ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e32_ ]]
374
+ ; GFX8-NEXT: [[V_ADD_CO_U32_e64_ :%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY]], %stack.0, 0 , implicit $exec
375
+ ; GFX8-NEXT: SI_RETURN implicit [[V_ADD_CO_U32_e64_ ]]
376
376
;
377
377
; GFX9-LABEL: name: fold_s_add_i32__reg_fi_copy_to_virt_vgpr
378
378
; GFX9: liveins: $sgpr8
@@ -392,3 +392,146 @@ body: |
392
392
%2:vgpr_32 = COPY %1
393
393
SI_RETURN implicit %2
394
394
...
395
+
396
+ ---
397
+ name : fold_s_or_b32__mov_fi_const_copy_to_virt_vgpr
398
+ tracksRegLiveness : true
399
+ stack :
400
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
401
+ body : |
402
+ bb.0:
403
+ ; CHECK-LABEL: name: fold_s_or_b32__mov_fi_const_copy_to_virt_vgpr
404
+ ; CHECK: [[V_OR_B32_e32_:%[0-9]+]]:vgpr_32 = V_OR_B32_e32 128, %stack.0, implicit $exec
405
+ ; CHECK-NEXT: SI_RETURN implicit [[V_OR_B32_e32_]]
406
+ %0:sreg_32 = S_MOV_B32 %stack.0
407
+ %1:sreg_32 = S_OR_B32 %0, 128, implicit-def dead $scc
408
+ %2:vgpr_32 = COPY %1
409
+ SI_RETURN implicit %2
410
+ ...
411
+
412
+ ---
413
+ name : fold_s_or_b32__const_copy_mov_fi_to_virt_vgpr
414
+ tracksRegLiveness : true
415
+ stack :
416
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
417
+ body : |
418
+ bb.0:
419
+ ; CHECK-LABEL: name: fold_s_or_b32__const_copy_mov_fi_to_virt_vgpr
420
+ ; CHECK: [[V_OR_B32_e32_:%[0-9]+]]:vgpr_32 = V_OR_B32_e32 128, %stack.0, implicit $exec
421
+ ; CHECK-NEXT: SI_RETURN implicit [[V_OR_B32_e32_]]
422
+ %0:sreg_32 = S_MOV_B32 %stack.0
423
+ %1:sreg_32 = S_OR_B32 128, %0, implicit-def dead $scc
424
+ %2:vgpr_32 = COPY %1
425
+ SI_RETURN implicit %2
426
+ ...
427
+
428
+ ---
429
+ name : fold_s_or_b32__fi_imm_copy_to_virt_vgpr
430
+ tracksRegLiveness : true
431
+ stack :
432
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
433
+ body : |
434
+ bb.0:
435
+ ; CHECK-LABEL: name: fold_s_or_b32__fi_imm_copy_to_virt_vgpr
436
+ ; CHECK: %1:vgpr_32 = disjoint V_OR_B32_e64 64, %stack.0, implicit $exec
437
+ ; CHECK-NEXT: SI_RETURN implicit %1
438
+ %0:sreg_32 = disjoint S_OR_B32 %stack.0, 64, implicit-def dead $scc
439
+ %1:vgpr_32 = COPY %0
440
+ SI_RETURN implicit %1
441
+ ...
442
+
443
+ ---
444
+ name : fold_s_or_b32__imm_fi_copy_to_virt_vgpr
445
+ tracksRegLiveness : true
446
+ stack :
447
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
448
+ body : |
449
+ bb.0:
450
+ ; CHECK-LABEL: name: fold_s_or_b32__imm_fi_copy_to_virt_vgpr
451
+ ; CHECK: %1:vgpr_32 = disjoint V_OR_B32_e64 64, %stack.0, implicit $exec
452
+ ; CHECK-NEXT: SI_RETURN implicit %1
453
+ %0:sreg_32 = disjoint S_OR_B32 64, %stack.0, implicit-def dead $scc
454
+ %1:vgpr_32 = COPY %0
455
+ SI_RETURN implicit %1
456
+ ...
457
+
458
+ ---
459
+ name : fold_s_and_b32__fi_imm_copy_to_virt_vgpr
460
+ tracksRegLiveness : true
461
+ stack :
462
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
463
+ body : |
464
+ bb.0:
465
+ ; CHECK-LABEL: name: fold_s_and_b32__fi_imm_copy_to_virt_vgpr
466
+ ; CHECK: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 64, %stack.0, implicit $exec
467
+ ; CHECK-NEXT: SI_RETURN implicit [[V_AND_B32_e64_]]
468
+ %0:sreg_32 = S_AND_B32 %stack.0, 64, implicit-def dead $scc
469
+ %1:vgpr_32 = COPY %0
470
+ SI_RETURN implicit %1
471
+ ...
472
+
473
+ ---
474
+ name : fold_s_and_b32__fi_const_copy_to_virt_vgpr
475
+ tracksRegLiveness : true
476
+ stack :
477
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
478
+ body : |
479
+ bb.0:
480
+ ; CHECK-LABEL: name: fold_s_and_b32__fi_const_copy_to_virt_vgpr
481
+ ; CHECK: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 128, %stack.0, implicit $exec
482
+ ; CHECK-NEXT: SI_RETURN implicit [[V_AND_B32_e32_]]
483
+ %0:sreg_32 = S_AND_B32 %stack.0, 128, implicit-def dead $scc
484
+ %1:vgpr_32 = COPY %0
485
+ SI_RETURN implicit %1
486
+ ...
487
+
488
+ ---
489
+ name : fold_s_mul_i32__fi_imm_copy_to_virt_vgpr
490
+ tracksRegLiveness : true
491
+ stack :
492
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
493
+ body : |
494
+ bb.0:
495
+ ; CHECK-LABEL: name: fold_s_mul_i32__fi_imm_copy_to_virt_vgpr
496
+ ; CHECK: [[V_MUL_LO_U32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_LO_U32_e64 64, %stack.0, implicit $exec
497
+ ; CHECK-NEXT: SI_RETURN implicit [[V_MUL_LO_U32_e64_]]
498
+ %0:sreg_32 = S_MUL_I32 %stack.0, 64, implicit-def dead $scc
499
+ %1:vgpr_32 = COPY %0
500
+ SI_RETURN implicit %1
501
+ ...
502
+
503
+ ---
504
+ name : fold_s_mul_i32__fi_reg_copy_to_virt_vgpr
505
+ tracksRegLiveness : true
506
+ stack :
507
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
508
+ body : |
509
+ bb.0:
510
+ liveins: $sgpr4
511
+ ; CHECK-LABEL: name: fold_s_mul_i32__fi_reg_copy_to_virt_vgpr
512
+ ; CHECK: liveins: $sgpr4
513
+ ; CHECK-NEXT: {{ $}}
514
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
515
+ ; CHECK-NEXT: [[V_MUL_LO_U32_e64_:%[0-9]+]]:vgpr_32 = V_MUL_LO_U32_e64 [[COPY]], %stack.0, implicit $exec
516
+ ; CHECK-NEXT: SI_RETURN implicit [[V_MUL_LO_U32_e64_]]
517
+ %0:sreg_32 = COPY $sgpr4
518
+ %1:sreg_32 = S_MUL_I32 %stack.0, %0, implicit-def dead $scc
519
+ %2:vgpr_32 = COPY %1
520
+ SI_RETURN implicit %2
521
+ ...
522
+
523
+ ---
524
+ name : fold_s_and_b32__mov_fi_const_copy_to_virt_vgpr
525
+ tracksRegLiveness : true
526
+ stack :
527
+ - { id: 0, size: 16384, alignment: 4, local-offset: 0 }
528
+ body : |
529
+ bb.0:
530
+ ; CHECK-LABEL: name: fold_s_and_b32__mov_fi_const_copy_to_virt_vgpr
531
+ ; CHECK: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 128, %stack.0, implicit $exec
532
+ ; CHECK-NEXT: SI_RETURN implicit [[V_AND_B32_e32_]]
533
+ %0:sreg_32 = S_MOV_B32 %stack.0
534
+ %1:sreg_32 = S_AND_B32 %0, 128, implicit-def dead $scc
535
+ %2:vgpr_32 = COPY %1
536
+ SI_RETURN implicit %2
537
+ ...
0 commit comments