brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.6 KiB · adba762 Raw
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