@@ -425,6 +425,160 @@ body: |
425425
426426 ...
427427
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+
428582---
429583name : local_stack_alloc__s_add_i32__literal_offsets_live_scc
430584tracksRegLiveness : true
0 commit comments