449 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=prologepilog -o - %s | FileCheck %s3 4---5name: save_inactive_lanes_non_csr_vgpr6alignment: 17tracksRegLiveness: true8noPhis: true9isSSA: false10noVRegs: true11hasFakeUses: false12tracksDebugUserValues: true13frameInfo:14 maxAlignment: 115 isCalleeSavedInfoValid: true16machineFunctionInfo:17 maxKernArgAlign: 118 frameOffsetReg: '$sgpr33'19 stackPtrOffsetReg: '$sgpr32'20 returnsVoid: false21 occupancy: 1622 sgprForEXECCopy: '$sgpr105'23 isWholeWaveFunction: true24body: |25 bb.0:26 ; CHECK-LABEL: name: save_inactive_lanes_non_csr_vgpr27 ; CHECK: liveins: $vgpr028 ; CHECK-NEXT: {{ $}}29 ; CHECK-NEXT: $sgpr0 = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec30 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr0, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)31 ; CHECK-NEXT: $exec_lo = S_MOV_B32 -132 ; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 14, implicit $exec33 ; CHECK-NEXT: $exec_lo = S_XOR_B32 $sgpr0, -1, implicit-def $scc34 ; CHECK-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr, implicit $vgpr0(tied-def 0) :: (load (s32) from %stack.0, addrspace 5)35 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $sgpr036 ; CHECK-NEXT: SI_RETURN implicit killed $vgpr037 renamable $sgpr0 = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec38 $vgpr0 = V_MOV_B32_e32 14, implicit $exec39 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $sgpr0, implicit killed $vgpr040 41...42---43name: save_all_lanes_csr_vgpr44alignment: 145tracksRegLiveness: true46noPhis: true47isSSA: false48noVRegs: true49hasFakeUses: false50tracksDebugUserValues: true51frameInfo:52 maxAlignment: 153 isCalleeSavedInfoValid: true54machineFunctionInfo:55 maxKernArgAlign: 156 frameOffsetReg: '$sgpr33'57 stackPtrOffsetReg: '$sgpr32'58 returnsVoid: false59 occupancy: 1660 sgprForEXECCopy: '$sgpr105'61 isWholeWaveFunction: true62body: |63 bb.0:64 ; CHECK-LABEL: name: save_all_lanes_csr_vgpr65 ; CHECK: liveins: $vgpr4066 ; CHECK-NEXT: {{ $}}67 ; CHECK-NEXT: $sgpr0 = S_OR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec68 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr40, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)69 ; CHECK-NEXT: $vgpr40 = V_MOV_B32_e32 14, implicit $exec70 ; CHECK-NEXT: $vgpr40 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)71 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $sgpr072 ; CHECK-NEXT: SI_RETURN73 renamable $sgpr0 = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec74 $vgpr40 = V_MOV_B32_e32 14, implicit $exec75 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $sgpr076 77...78---79name: save_csr_sgpr_to_non_csr_vgpr80alignment: 181tracksRegLiveness: true82noPhis: true83isSSA: false84noVRegs: true85hasFakeUses: false86tracksDebugUserValues: true87frameInfo:88 maxAlignment: 189 isCalleeSavedInfoValid: true90machineFunctionInfo:91 maxKernArgAlign: 192 frameOffsetReg: '$sgpr33'93 stackPtrOffsetReg: '$sgpr32'94 returnsVoid: false95 occupancy: 1696 sgprForEXECCopy: '$sgpr105'97 isWholeWaveFunction: true98body: |99 bb.0:100 liveins: $sgpr20, $vgpr191101 ; CHECK-LABEL: name: save_csr_sgpr_to_non_csr_vgpr102 ; CHECK: liveins: $sgpr20, $vgpr191, $vgpr192103 ; CHECK-NEXT: {{ $}}104 ; CHECK-NEXT: $vcc_lo = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec105 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr192, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)106 ; CHECK-NEXT: $exec_lo = S_MOV_B32 -1107 ; CHECK-NEXT: $vgpr192 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr192108 ; CHECK-NEXT: $sgpr20 = S_MOV_B32 14, implicit $exec109 ; CHECK-NEXT: $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr192, 0110 ; CHECK-NEXT: $exec_lo = S_XOR_B32 $vcc_lo, -1, implicit-def $scc111 ; CHECK-NEXT: $vgpr192 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)112 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $vcc_lo113 ; CHECK-NEXT: SI_RETURN114 $vgpr192 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr192115 renamable $vcc_lo = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec116 $sgpr20 = S_MOV_B32 14, implicit $exec117 $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr192, 0118 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $vcc_lo119 120...121---122name: save_csr_sgpr_to_csr_vgpr123alignment: 1124tracksRegLiveness: true125noPhis: true126isSSA: false127noVRegs: true128hasFakeUses: false129tracksDebugUserValues: true130frameInfo:131 maxAlignment: 1132 isCalleeSavedInfoValid: true133machineFunctionInfo:134 maxKernArgAlign: 1135 frameOffsetReg: '$sgpr33'136 stackPtrOffsetReg: '$sgpr32'137 returnsVoid: false138 occupancy: 16139 sgprForEXECCopy: '$sgpr105'140 isWholeWaveFunction: true141body: |142 bb.0:143 liveins: $sgpr20, $vgpr191144 ; CHECK-LABEL: name: save_csr_sgpr_to_csr_vgpr145 ; CHECK: liveins: $sgpr20, $vgpr191146 ; CHECK-NEXT: {{ $}}147 ; CHECK-NEXT: $vcc_lo = S_OR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec148 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr191, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)149 ; CHECK-NEXT: $vgpr191 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr191150 ; CHECK-NEXT: $sgpr20 = S_MOV_B32 14, implicit $exec151 ; CHECK-NEXT: $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr191, 0152 ; CHECK-NEXT: $vgpr191 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)153 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $vcc_lo154 ; CHECK-NEXT: SI_RETURN155 $vgpr191 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr191156 renamable $vcc_lo = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec157 $sgpr20 = S_MOV_B32 14, implicit $exec158 $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr191, 0159 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $vcc_lo160 161...162---163name: vgpr_and_sgpr_csr164alignment: 1165tracksRegLiveness: true166noPhis: true167isSSA: false168noVRegs: true169hasFakeUses: false170tracksDebugUserValues: true171liveins:172 - { reg: '$vgpr0' }173 - { reg: '$vgpr1' }174frameInfo:175 maxAlignment: 4176 isCalleeSavedInfoValid: true177machineFunctionInfo:178 maxKernArgAlign: 1179 hasSpilledSGPRs: true180 frameOffsetReg: '$sgpr33'181 stackPtrOffsetReg: '$sgpr32'182 returnsVoid: false183 occupancy: 16184 spillPhysVGPRs:185 - '$vgpr191'186 wwmReservedRegs:187 - '$vgpr191'188 isWholeWaveFunction: true189body: |190 bb.0:191 liveins: $sgpr20, $vgpr0, $vgpr1, $vgpr191192 193 ; CHECK-LABEL: name: vgpr_and_sgpr_csr194 ; CHECK: liveins: $sgpr20, $vgpr0, $vgpr1, $vgpr40, $vgpr49195 ; CHECK-NEXT: {{ $}}196 ; CHECK-NEXT: $vcc_lo = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec197 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr0, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)198 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr49, $sgpr32, 8, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.2, addrspace 5)199 ; CHECK-NEXT: $exec_lo = S_MOV_B32 -1200 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr40, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.1, addrspace 5)201 ; CHECK-NEXT: $vgpr0 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr0202 ; CHECK-NEXT: S_NOP 0, implicit-def $vgpr40, implicit-def $sgpr20203 ; CHECK-NEXT: S_NOP 0, implicit-def $vgpr49, implicit-def $sgpr40204 ; CHECK-NEXT: $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr0, 0205 ; CHECK-NEXT: $vgpr40 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.1, addrspace 5)206 ; CHECK-NEXT: $exec_lo = S_XOR_B32 $vcc_lo, -1, implicit-def $scc207 ; CHECK-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)208 ; CHECK-NEXT: $vgpr49 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 8, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.2, addrspace 5)209 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $vcc_lo210 ; CHECK-NEXT: SI_RETURN211 $vgpr191 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr191212 renamable $vcc_lo = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec213 S_NOP 0, implicit-def $vgpr40, implicit-def $sgpr20214 S_NOP 0, implicit-def $vgpr49, implicit-def $sgpr40215 $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr191, 0216 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $vcc_lo217 218...219---220name: split_orig_exec221alignment: 1222tracksRegLiveness: true223noPhis: true224isSSA: false225noVRegs: true226hasFakeUses: false227tracksDebugUserValues: true228liveins:229 - { reg: '$vgpr0' }230 - { reg: '$vgpr1' }231frameInfo:232 maxAlignment: 4233 isCalleeSavedInfoValid: true234machineFunctionInfo:235 maxKernArgAlign: 1236 hasSpilledSGPRs: true237 frameOffsetReg: '$sgpr33'238 stackPtrOffsetReg: '$sgpr32'239 returnsVoid: false240 occupancy: 16241 spillPhysVGPRs:242 - '$vgpr191'243 wwmReservedRegs:244 - '$vgpr191'245 isWholeWaveFunction: true246body: |247 bb.0:248 liveins: $sgpr20, $vgpr0, $vgpr1, $vgpr191249 250 ; CHECK-LABEL: name: split_orig_exec251 ; CHECK: liveins: $sgpr20, $vgpr0, $vgpr1, $vgpr40, $vgpr49252 ; CHECK-NEXT: {{ $}}253 ; CHECK-NEXT: $vcc_lo = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec254 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr0, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)255 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr49, $sgpr32, 8, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.2, addrspace 5)256 ; CHECK-NEXT: $exec_lo = S_MOV_B32 -1257 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr40, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.1, addrspace 5)258 ; CHECK-NEXT: $vgpr0 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr0259 ; CHECK-NEXT: S_NOP 0, implicit-def $vgpr40, implicit-def $sgpr20260 ; CHECK-NEXT: $sgpr3 = COPY $vcc_lo261 ; CHECK-NEXT: S_NOP 0, implicit-def $vgpr49, implicit-def $sgpr40262 ; CHECK-NEXT: $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr0, 0263 ; CHECK-NEXT: $vgpr40 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.1, addrspace 5)264 ; CHECK-NEXT: $exec_lo = S_XOR_B32 $sgpr3, -1, implicit-def $scc265 ; CHECK-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)266 ; CHECK-NEXT: $vgpr49 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 8, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.2, addrspace 5)267 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $sgpr3268 ; CHECK-NEXT: SI_RETURN269 $vgpr191 = SI_SPILL_S32_TO_VGPR killed $sgpr20, 0, $vgpr191270 renamable $vcc_lo = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec271 S_NOP 0, implicit-def $vgpr40, implicit-def $sgpr20272 $sgpr3 = COPY $vcc_lo273 S_NOP 0, implicit-def $vgpr49, implicit-def $sgpr40274 $sgpr20 = SI_RESTORE_S32_FROM_VGPR $vgpr191, 0275 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $sgpr3276 277...278---279name: vgpr_superregs280alignment: 1281tracksRegLiveness: true282noPhis: true283isSSA: false284noVRegs: true285hasFakeUses: false286tracksDebugUserValues: true287frameInfo:288 maxAlignment: 1289 isCalleeSavedInfoValid: true290machineFunctionInfo:291 maxKernArgAlign: 1292 frameOffsetReg: '$sgpr33'293 stackPtrOffsetReg: '$sgpr32'294 returnsVoid: false295 occupancy: 16296 sgprForEXECCopy: '$sgpr105'297 isWholeWaveFunction: true298body: |299 bb.0:300 ; CHECK-LABEL: name: vgpr_superregs301 ; CHECK: liveins: $vgpr0, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr40, $vgpr41, $vgpr42302 ; CHECK-NEXT: {{ $}}303 ; CHECK-NEXT: $sgpr0 = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec304 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr0, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)305 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr2, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.1, addrspace 5)306 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr3, $sgpr32, 8, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.2, addrspace 5)307 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr4, $sgpr32, 12, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.3, addrspace 5)308 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr5, $sgpr32, 16, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.4, addrspace 5)309 ; CHECK-NEXT: $exec_lo = S_MOV_B32 -1310 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr40, $sgpr32, 20, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.5, addrspace 5)311 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr41, $sgpr32, 24, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.6, addrspace 5)312 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr42, $sgpr32, 28, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.7, addrspace 5)313 ; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 14, implicit $exec314 ; CHECK-NEXT: S_NOP 0, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit-def $vgpr40_vgpr41_vgpr42315 ; CHECK-NEXT: $vgpr40 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 20, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.5, addrspace 5)316 ; CHECK-NEXT: $vgpr41 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 24, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.6, addrspace 5)317 ; CHECK-NEXT: $vgpr42 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 28, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.7, addrspace 5)318 ; CHECK-NEXT: $exec_lo = S_XOR_B32 $sgpr0, -1, implicit-def $scc319 ; CHECK-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr, implicit $vgpr0(tied-def 0) :: (load (s32) from %stack.0, addrspace 5)320 ; CHECK-NEXT: $vgpr2 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.1, addrspace 5)321 ; CHECK-NEXT: $vgpr3 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 8, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.2, addrspace 5)322 ; CHECK-NEXT: $vgpr4 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 12, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.3, addrspace 5)323 ; CHECK-NEXT: $vgpr5 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 16, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.4, addrspace 5)324 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $sgpr0325 ; CHECK-NEXT: SI_RETURN implicit killed $vgpr0326 renamable $sgpr0 = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec327 $vgpr0 = V_MOV_B32_e32 14, implicit $exec328 S_NOP 0, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit-def $vgpr40_vgpr41_vgpr42329 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $sgpr0, implicit killed $vgpr0330 331...332---333name: dont_restore_used_vgprs334alignment: 1335tracksRegLiveness: true336noPhis: true337isSSA: false338noVRegs: true339hasFakeUses: false340tracksDebugUserValues: true341liveins:342 - { reg: '$vgpr0' }343 - { reg: '$vgpr20' }344 - { reg: '$vgpr40' }345frameInfo:346 maxAlignment: 1347 isCalleeSavedInfoValid: true348machineFunctionInfo:349 maxKernArgAlign: 1350 frameOffsetReg: '$sgpr33'351 stackPtrOffsetReg: '$sgpr32'352 returnsVoid: false353 occupancy: 16354 sgprForEXECCopy: '$sgpr105'355 isWholeWaveFunction: true356body: |357 bb.0:358 liveins: $vgpr0, $vgpr20, $vgpr40359 360 ; CHECK-LABEL: name: dont_restore_used_vgprs361 ; CHECK: liveins: $vgpr0, $vgpr20, $vgpr40362 ; CHECK-NEXT: {{ $}}363 ; CHECK-NEXT: $sgpr0 = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec364 ; CHECK-NEXT: S_NOP 0, implicit $vgpr0, implicit $vgpr20, implicit $vgpr40365 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $sgpr0366 ; CHECK-NEXT: SI_RETURN implicit killed $vgpr0367 renamable $sgpr0 = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec368 S_NOP 0, implicit $vgpr0, implicit $vgpr20, implicit $vgpr40369 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $sgpr0, implicit killed $vgpr0370 371...372---373name: multiple_blocks374alignment: 1375tracksRegLiveness: true376noPhis: true377isSSA: false378noVRegs: true379hasFakeUses: false380tracksDebugUserValues: true381liveins:382 - { reg: '$vgpr0' }383 - { reg: '$vgpr1' }384frameInfo:385 maxAlignment: 1386 isCalleeSavedInfoValid: true387machineFunctionInfo:388 maxKernArgAlign: 1389 frameOffsetReg: '$sgpr33'390 stackPtrOffsetReg: '$sgpr32'391 returnsVoid: false392 occupancy: 16393 sgprForEXECCopy: '$sgpr105'394 isWholeWaveFunction: true395body: |396 ; CHECK-LABEL: name: multiple_blocks397 ; CHECK: bb.0:398 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)399 ; CHECK-NEXT: liveins: $vgpr0, $vgpr1400 ; CHECK-NEXT: {{ $}}401 ; CHECK-NEXT: $vcc_lo = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec402 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr0, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)403 ; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr1, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.1, addrspace 5)404 ; CHECK-NEXT: $exec_lo = S_MOV_B32 -1405 ; CHECK-NEXT: $sgpr1 = S_MOV_B32 $exec_lo406 ; CHECK-NEXT: V_CMPX_EQ_U32_nosdst_e64 $vgpr0, $vgpr1, implicit-def $exec, implicit $exec407 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec408 ; CHECK-NEXT: S_BRANCH %bb.1409 ; CHECK-NEXT: {{ $}}410 ; CHECK-NEXT: bb.1:411 ; CHECK-NEXT: successors: %bb.2(0x80000000)412 ; CHECK-NEXT: liveins: $vcc_lo, $sgpr1, $vgpr0, $vgpr1413 ; CHECK-NEXT: {{ $}}414 ; CHECK-NEXT: renamable $vgpr1 = V_ADD_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec415 ; CHECK-NEXT: {{ $}}416 ; CHECK-NEXT: bb.2:417 ; CHECK-NEXT: liveins: $vcc_lo, $sgpr1, $vgpr0, $vgpr1418 ; CHECK-NEXT: {{ $}}419 ; CHECK-NEXT: $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr1, implicit-def $scc420 ; CHECK-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr0, $vcc_lo, implicit $exec421 ; CHECK-NEXT: $exec_lo = S_XOR_B32 $vcc_lo, -1, implicit-def $scc422 ; CHECK-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr, implicit $vgpr0(tied-def 0) :: (load (s32) from %stack.0, addrspace 5)423 ; CHECK-NEXT: $vgpr1 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.1, addrspace 5)424 ; CHECK-NEXT: $exec_lo = S_MOV_B32 $vcc_lo425 ; CHECK-NEXT: SI_RETURN implicit $vgpr0426 bb.0:427 successors: %bb.1, %bb.2428 liveins: $vgpr0, $vgpr1429 430 renamable $vcc_lo = SI_WHOLE_WAVE_FUNC_SETUP implicit-def dead $exec, implicit $exec431 $sgpr1 = S_MOV_B32 $exec_lo432 V_CMPX_EQ_U32_nosdst_e64 $vgpr0, $vgpr1, implicit-def $exec, implicit $exec433 S_CBRANCH_EXECZ %bb.2, implicit $exec434 S_BRANCH %bb.1435 436 bb.1:437 liveins: $vcc_lo, $sgpr1, $vgpr0, $vgpr1438 439 renamable $vgpr1 = V_ADD_U32_e64 $vgpr0, $vgpr1, 0, implicit $exec440 441 bb.2:442 liveins: $vcc_lo, $sgpr1, $vgpr0, $vgpr1443 444 $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr1, implicit-def $scc445 renamable $vgpr0 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr0, $vcc_lo, implicit $exec446 SI_WHOLE_WAVE_FUNC_RETURN killed renamable $vcc_lo, implicit $vgpr0447 448...449