@@ -425,6 +425,160 @@ body: |
425
425
426
426
...
427
427
428
+ ---
429
+ name : local_stack_alloc__s_add_i32__reg_offsets
430
+ tracksRegLiveness : true
431
+ stack :
432
+ - { id: 0, size: 64, alignment: 4 }
433
+ machineFunctionInfo :
434
+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
435
+ frameOffsetReg : ' $sgpr33'
436
+ stackPtrOffsetReg : ' $sgpr32'
437
+ body : |
438
+ bb.0:
439
+ liveins: $sgpr4, $sgpr5
440
+ ; GFX803-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets
441
+ ; GFX803: liveins: $sgpr4, $sgpr5
442
+ ; GFX803-NEXT: {{ $}}
443
+ ; GFX803-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
444
+ ; GFX803-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
445
+ ; GFX803-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def dead $scc
446
+ ; GFX803-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
447
+ ; GFX803-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], %stack.0, implicit-def dead $scc
448
+ ; GFX803-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
449
+ ; GFX803-NEXT: SI_RETURN
450
+ ;
451
+ ; GFX900-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets
452
+ ; GFX900: liveins: $sgpr4, $sgpr5
453
+ ; GFX900-NEXT: {{ $}}
454
+ ; GFX900-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
455
+ ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
456
+ ; GFX900-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def dead $scc
457
+ ; GFX900-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
458
+ ; GFX900-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], %stack.0, implicit-def dead $scc
459
+ ; GFX900-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
460
+ ; GFX900-NEXT: SI_RETURN
461
+ ;
462
+ ; GFX940-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets
463
+ ; GFX940: liveins: $sgpr4, $sgpr5
464
+ ; GFX940-NEXT: {{ $}}
465
+ ; GFX940-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
466
+ ; GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
467
+ ; GFX940-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def dead $scc
468
+ ; GFX940-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
469
+ ; GFX940-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], %stack.0, implicit-def dead $scc
470
+ ; GFX940-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
471
+ ; GFX940-NEXT: SI_RETURN
472
+ ;
473
+ ; GFX10-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets
474
+ ; GFX10: liveins: $sgpr4, $sgpr5
475
+ ; GFX10-NEXT: {{ $}}
476
+ ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
477
+ ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
478
+ ; GFX10-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def dead $scc
479
+ ; GFX10-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
480
+ ; GFX10-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], %stack.0, implicit-def dead $scc
481
+ ; GFX10-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
482
+ ; GFX10-NEXT: SI_RETURN
483
+ ;
484
+ ; GFX12-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets
485
+ ; GFX12: liveins: $sgpr4, $sgpr5
486
+ ; GFX12-NEXT: {{ $}}
487
+ ; GFX12-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
488
+ ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
489
+ ; GFX12-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def dead $scc
490
+ ; GFX12-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
491
+ ; GFX12-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], %stack.0, implicit-def dead $scc
492
+ ; GFX12-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
493
+ ; GFX12-NEXT: SI_RETURN
494
+ %0:sreg_32 = COPY $sgpr4
495
+ %1:sreg_32 = COPY $sgpr5
496
+
497
+ %2:sreg_32 = S_ADD_I32 %0, %stack.0, implicit-def dead $scc
498
+ INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:SREG_32 */, %2
499
+ %3:sreg_32 = S_ADD_I32 %1, %stack.0, implicit-def dead $scc
500
+ INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:SREG_32 */, %3
501
+ SI_RETURN
502
+
503
+ ...
504
+
505
+ ---
506
+ name : local_stack_alloc__s_add_i32__reg_offsets_commute
507
+ tracksRegLiveness : true
508
+ stack :
509
+ - { id: 0, size: 64, alignment: 4 }
510
+ machineFunctionInfo :
511
+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
512
+ frameOffsetReg : ' $sgpr33'
513
+ stackPtrOffsetReg : ' $sgpr32'
514
+ body : |
515
+ bb.0:
516
+ liveins: $sgpr4, $sgpr5
517
+ ; GFX803-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets_commute
518
+ ; GFX803: liveins: $sgpr4, $sgpr5
519
+ ; GFX803-NEXT: {{ $}}
520
+ ; GFX803-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
521
+ ; GFX803-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
522
+ ; GFX803-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY]], implicit-def dead $scc
523
+ ; GFX803-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
524
+ ; GFX803-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY1]], implicit-def dead $scc
525
+ ; GFX803-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
526
+ ; GFX803-NEXT: SI_RETURN
527
+ ;
528
+ ; GFX900-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets_commute
529
+ ; GFX900: liveins: $sgpr4, $sgpr5
530
+ ; GFX900-NEXT: {{ $}}
531
+ ; GFX900-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
532
+ ; GFX900-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
533
+ ; GFX900-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY]], implicit-def dead $scc
534
+ ; GFX900-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
535
+ ; GFX900-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY1]], implicit-def dead $scc
536
+ ; GFX900-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
537
+ ; GFX900-NEXT: SI_RETURN
538
+ ;
539
+ ; GFX940-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets_commute
540
+ ; GFX940: liveins: $sgpr4, $sgpr5
541
+ ; GFX940-NEXT: {{ $}}
542
+ ; GFX940-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
543
+ ; GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
544
+ ; GFX940-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY]], implicit-def dead $scc
545
+ ; GFX940-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
546
+ ; GFX940-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY1]], implicit-def dead $scc
547
+ ; GFX940-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
548
+ ; GFX940-NEXT: SI_RETURN
549
+ ;
550
+ ; GFX10-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets_commute
551
+ ; GFX10: liveins: $sgpr4, $sgpr5
552
+ ; GFX10-NEXT: {{ $}}
553
+ ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
554
+ ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
555
+ ; GFX10-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY]], implicit-def dead $scc
556
+ ; GFX10-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
557
+ ; GFX10-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY1]], implicit-def dead $scc
558
+ ; GFX10-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
559
+ ; GFX10-NEXT: SI_RETURN
560
+ ;
561
+ ; GFX12-LABEL: name: local_stack_alloc__s_add_i32__reg_offsets_commute
562
+ ; GFX12: liveins: $sgpr4, $sgpr5
563
+ ; GFX12-NEXT: {{ $}}
564
+ ; GFX12-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4
565
+ ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr5
566
+ ; GFX12-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY]], implicit-def dead $scc
567
+ ; GFX12-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_]]
568
+ ; GFX12-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY1]], implicit-def dead $scc
569
+ ; GFX12-NEXT: INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:VGPR_32 */, [[S_ADD_I32_1]]
570
+ ; GFX12-NEXT: SI_RETURN
571
+ %0:sreg_32 = COPY $sgpr4
572
+ %1:sreg_32 = COPY $sgpr5
573
+
574
+ %2:sreg_32 = S_ADD_I32 %stack.0, %0, implicit-def dead $scc
575
+ INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:SREG_32 */, %2
576
+ %3:sreg_32 = S_ADD_I32 %stack.0, %1, implicit-def dead $scc
577
+ INLINEASM &"; use $0", 1 /* sideeffect attdialect */, 2228233 /* reguse:SREG_32 */, %3
578
+ SI_RETURN
579
+
580
+ ...
581
+
428
582
---
429
583
name : local_stack_alloc__s_add_i32__literal_offsets_live_scc
430
584
tracksRegLiveness : true
0 commit comments