208 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -march=amdgcn -verify-machineinstrs -mcpu=gfx1100 -mattr=+real-true16 -run-pass=prologepilog -o - %s | FileCheck -check-prefix=EXPANDED %s3# RUN: llc -march=amdgcn -verify-machineinstrs -mcpu=gfx1250 -mattr=+real-true16 -run-pass=prologepilog -o - %s | FileCheck -check-prefix=SRAMECC-EXPANDED %s4 5---6name: spill_restore_vgpr167tracksRegLiveness: true8stack:9 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }10 - { id: 1, name: '', type: spill-slot, offset: 4, size: 4, alignment: 4 }11machineFunctionInfo:12 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr313 stackPtrOffsetReg: $sgpr3214 hasSpilledVGPRs: true15body: |16 ; EXPANDED-LABEL: name: spill_restore_vgpr1617 ; EXPANDED: bb.0:18 ; EXPANDED-NEXT: successors: %bb.1(0x80000000)19 ; EXPANDED-NEXT: {{ $}}20 ; EXPANDED-NEXT: S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi1621 ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_hi16, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.1, align 4, addrspace 5)22 ; EXPANDED-NEXT: S_NOP 0, implicit renamable $vgpr0_lo1623 ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_lo16, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.0, align 4, addrspace 5)24 ; EXPANDED-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc25 ; EXPANDED-NEXT: {{ $}}26 ; EXPANDED-NEXT: bb.1:27 ; EXPANDED-NEXT: successors: %bb.2(0x80000000)28 ; EXPANDED-NEXT: {{ $}}29 ; EXPANDED-NEXT: S_NOP 130 ; EXPANDED-NEXT: {{ $}}31 ; EXPANDED-NEXT: bb.2:32 ; EXPANDED-NEXT: $vgpr0_lo16 = SCRATCH_LOAD_SHORT_D16_SADDR_t16 $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.0, align 4, addrspace 5)33 ; EXPANDED-NEXT: $vgpr0_hi16 = SCRATCH_LOAD_SHORT_D16_SADDR_t16 $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.1, align 4, addrspace 5)34 ; EXPANDED-NEXT: S_NOP 0, implicit killed renamable $vgpr0_lo16, implicit killed renamable $vgpr0_hi1635 ;36 ; SRAMECC-EXPANDED-LABEL: name: spill_restore_vgpr1637 ; SRAMECC-EXPANDED: bb.0:38 ; SRAMECC-EXPANDED-NEXT: successors: %bb.1(0x80000000)39 ; SRAMECC-EXPANDED-NEXT: {{ $}}40 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi1641 ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_hi16, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.1, align 4, addrspace 5)42 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit renamable $vgpr0_lo1643 ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_lo16, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.0, align 4, addrspace 5)44 ; SRAMECC-EXPANDED-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc45 ; SRAMECC-EXPANDED-NEXT: {{ $}}46 ; SRAMECC-EXPANDED-NEXT: bb.1:47 ; SRAMECC-EXPANDED-NEXT: successors: %bb.2(0x80000000)48 ; SRAMECC-EXPANDED-NEXT: {{ $}}49 ; SRAMECC-EXPANDED-NEXT: S_NOP 150 ; SRAMECC-EXPANDED-NEXT: {{ $}}51 ; SRAMECC-EXPANDED-NEXT: bb.2:52 ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.0, align 4, addrspace 5)53 ; SRAMECC-EXPANDED-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec54 ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.1, align 4, addrspace 5)55 ; SRAMECC-EXPANDED-NEXT: $vgpr0_hi16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec56 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit killed renamable $vgpr0_lo16, implicit killed renamable $vgpr0_hi1657 bb.0:58 successors: %bb.1(0x80000000)59 S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi1660 SI_SPILL_V16_SAVE killed $vgpr0_hi16, %stack.1, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.1, addrspace 5)61 S_NOP 0, implicit renamable $vgpr0_lo1662 SI_SPILL_V16_SAVE killed $vgpr0_lo16, %stack.0, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.0, addrspace 5)63 S_CBRANCH_SCC1 %bb.1, implicit undef $scc64 bb.1:65 successors: %bb.2(0x80000000)66 S_NOP 167 bb.2:68 $vgpr0_lo16 = SI_SPILL_V16_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s16) from %stack.0, addrspace 5)69 $vgpr0_hi16 = SI_SPILL_V16_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s16) from %stack.1, addrspace 5)70 S_NOP 0, implicit killed renamable $vgpr0_lo16, implicit killed renamable $vgpr0_hi1671...72 73---74name: spill_restore_vgpr16_middle_of_block75tracksRegLiveness: true76stack:77 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }78 - { id: 1, name: '', type: spill-slot, offset: 4, size: 4, alignment: 4 }79machineFunctionInfo:80 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr381 stackPtrOffsetReg: $sgpr3282 hasSpilledVGPRs: true83body: |84 ; EXPANDED-LABEL: name: spill_restore_vgpr16_middle_of_block85 ; EXPANDED: bb.0:86 ; EXPANDED-NEXT: successors: %bb.1(0x80000000)87 ; EXPANDED-NEXT: {{ $}}88 ; EXPANDED-NEXT: S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi1689 ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_hi16, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.1, align 4, addrspace 5)90 ; EXPANDED-NEXT: S_NOP 0, implicit renamable $vgpr0_lo1691 ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_lo16, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.0, align 4, addrspace 5)92 ; EXPANDED-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc93 ; EXPANDED-NEXT: {{ $}}94 ; EXPANDED-NEXT: bb.1:95 ; EXPANDED-NEXT: successors: %bb.2(0x80000000)96 ; EXPANDED-NEXT: {{ $}}97 ; EXPANDED-NEXT: S_NOP 198 ; EXPANDED-NEXT: {{ $}}99 ; EXPANDED-NEXT: bb.2:100 ; EXPANDED-NEXT: S_NOP 1101 ; EXPANDED-NEXT: $vgpr0_lo16 = SCRATCH_LOAD_SHORT_D16_SADDR_t16 $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.0, align 4, addrspace 5)102 ; EXPANDED-NEXT: $vgpr0_hi16 = SCRATCH_LOAD_SHORT_D16_SADDR_t16 $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.1, align 4, addrspace 5)103 ; EXPANDED-NEXT: S_NOP 0, implicit killed renamable $vgpr0_lo16, implicit killed renamable $vgpr0_hi16104 ;105 ; SRAMECC-EXPANDED-LABEL: name: spill_restore_vgpr16_middle_of_block106 ; SRAMECC-EXPANDED: bb.0:107 ; SRAMECC-EXPANDED-NEXT: successors: %bb.1(0x80000000)108 ; SRAMECC-EXPANDED-NEXT: {{ $}}109 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi16110 ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_hi16, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.1, align 4, addrspace 5)111 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit renamable $vgpr0_lo16112 ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_lo16, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.0, align 4, addrspace 5)113 ; SRAMECC-EXPANDED-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc114 ; SRAMECC-EXPANDED-NEXT: {{ $}}115 ; SRAMECC-EXPANDED-NEXT: bb.1:116 ; SRAMECC-EXPANDED-NEXT: successors: %bb.2(0x80000000)117 ; SRAMECC-EXPANDED-NEXT: {{ $}}118 ; SRAMECC-EXPANDED-NEXT: S_NOP 1119 ; SRAMECC-EXPANDED-NEXT: {{ $}}120 ; SRAMECC-EXPANDED-NEXT: bb.2:121 ; SRAMECC-EXPANDED-NEXT: S_NOP 1122 ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.0, align 4, addrspace 5)123 ; SRAMECC-EXPANDED-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec124 ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.1, align 4, addrspace 5)125 ; SRAMECC-EXPANDED-NEXT: $vgpr0_hi16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec126 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit killed renamable $vgpr0_lo16, implicit killed renamable $vgpr0_hi16127 bb.0:128 successors: %bb.1(0x80000000)129 S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi16130 SI_SPILL_V16_SAVE killed $vgpr0_hi16, %stack.1, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.1, addrspace 5)131 S_NOP 0, implicit renamable $vgpr0_lo16132 SI_SPILL_V16_SAVE killed $vgpr0_lo16, %stack.0, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.0, addrspace 5)133 S_CBRANCH_SCC1 %bb.1, implicit undef $scc134 bb.1:135 successors: %bb.2(0x80000000)136 S_NOP 1137 bb.2:138 S_NOP 1139 $vgpr0_lo16 = SI_SPILL_V16_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s16) from %stack.0, addrspace 5)140 $vgpr0_hi16 = SI_SPILL_V16_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s16) from %stack.1, addrspace 5)141 S_NOP 0, implicit killed renamable $vgpr0_lo16, implicit killed renamable $vgpr0_hi16142...143 144---145name: spill_restore_vgpr16_end_of_block146tracksRegLiveness: true147stack:148 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }149 - { id: 1, name: '', type: spill-slot, offset: 4, size: 4, alignment: 4 }150machineFunctionInfo:151 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3152 stackPtrOffsetReg: $sgpr32153 hasSpilledVGPRs: true154body: |155 ; EXPANDED-LABEL: name: spill_restore_vgpr16_end_of_block156 ; EXPANDED: bb.0:157 ; EXPANDED-NEXT: successors: %bb.1(0x80000000)158 ; EXPANDED-NEXT: {{ $}}159 ; EXPANDED-NEXT: S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi16160 ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_hi16, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.1, align 4, addrspace 5)161 ; EXPANDED-NEXT: S_NOP 0, implicit renamable $vgpr0_lo16162 ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_lo16, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.0, align 4, addrspace 5)163 ; EXPANDED-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc164 ; EXPANDED-NEXT: {{ $}}165 ; EXPANDED-NEXT: bb.1:166 ; EXPANDED-NEXT: successors: %bb.2(0x80000000)167 ; EXPANDED-NEXT: {{ $}}168 ; EXPANDED-NEXT: S_NOP 1169 ; EXPANDED-NEXT: {{ $}}170 ; EXPANDED-NEXT: bb.2:171 ; EXPANDED-NEXT: $vgpr0_lo16 = SCRATCH_LOAD_SHORT_D16_SADDR_t16 $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.0, align 4, addrspace 5)172 ; EXPANDED-NEXT: $vgpr0_hi16 = SCRATCH_LOAD_SHORT_D16_SADDR_t16 $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.1, align 4, addrspace 5)173 ;174 ; SRAMECC-EXPANDED-LABEL: name: spill_restore_vgpr16_end_of_block175 ; SRAMECC-EXPANDED: bb.0:176 ; SRAMECC-EXPANDED-NEXT: successors: %bb.1(0x80000000)177 ; SRAMECC-EXPANDED-NEXT: {{ $}}178 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi16179 ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_hi16, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.1, align 4, addrspace 5)180 ; SRAMECC-EXPANDED-NEXT: S_NOP 0, implicit renamable $vgpr0_lo16181 ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_SADDR_t16 killed $vgpr0_lo16, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s16) into %stack.0, align 4, addrspace 5)182 ; SRAMECC-EXPANDED-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc183 ; SRAMECC-EXPANDED-NEXT: {{ $}}184 ; SRAMECC-EXPANDED-NEXT: bb.1:185 ; SRAMECC-EXPANDED-NEXT: successors: %bb.2(0x80000000)186 ; SRAMECC-EXPANDED-NEXT: {{ $}}187 ; SRAMECC-EXPANDED-NEXT: S_NOP 1188 ; SRAMECC-EXPANDED-NEXT: {{ $}}189 ; SRAMECC-EXPANDED-NEXT: bb.2:190 ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.0, align 4, addrspace 5)191 ; SRAMECC-EXPANDED-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec192 ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s16) from %stack.1, align 4, addrspace 5)193 ; SRAMECC-EXPANDED-NEXT: $vgpr0_hi16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec194 bb.0:195 successors: %bb.1(0x80000000)196 S_NOP 0, implicit-def renamable $vgpr0_lo16, implicit-def renamable $vgpr0_hi16197 SI_SPILL_V16_SAVE killed $vgpr0_hi16, %stack.1, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.1, addrspace 5)198 S_NOP 0, implicit renamable $vgpr0_lo16199 SI_SPILL_V16_SAVE killed $vgpr0_lo16, %stack.0, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.0, addrspace 5)200 S_CBRANCH_SCC1 %bb.1, implicit undef $scc201 bb.1:202 successors: %bb.2(0x80000000)203 S_NOP 1204 bb.2:205 $vgpr0_lo16 = SI_SPILL_V16_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s16) from %stack.0, addrspace 5)206 $vgpr0_hi16 = SI_SPILL_V16_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s16) from %stack.1, addrspace 5)207...208