brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.7 KiB · 918242e Raw
208 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -verify-machineinstrs -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=regallocfast -o - %s | FileCheck -check-prefix=GCN %s3# RUN: llc -verify-machineinstrs -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -passes=regallocfast -o - %s | FileCheck -check-prefix=GCN %s4 5---6name: self_loop_single_def_use7tracksRegLiveness: true8machineFunctionInfo:9  isEntryFunction: true10  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'11  stackPtrOffsetReg: '$sgpr32'12body:             |13  ; GCN-LABEL: name: self_loop_single_def_use14  ; GCN: bb.0:15  ; GCN-NEXT:   successors: %bb.1(0x80000000)16  ; GCN-NEXT:   liveins: $vgpr0_vgpr117  ; GCN-NEXT: {{  $}}18  ; GCN-NEXT:   SI_SPILL_V64_SAVE killed $vgpr0_vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)19  ; GCN-NEXT: {{  $}}20  ; GCN-NEXT: bb.1:21  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)22  ; GCN-NEXT: {{  $}}23  ; GCN-NEXT:   $vgpr0_vgpr1 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)24  ; GCN-NEXT:   renamable $vgpr2 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec25  ; GCN-NEXT:   GLOBAL_STORE_DWORD renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec26  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec27  ; GCN-NEXT: {{  $}}28  ; GCN-NEXT: bb.2:29  ; GCN-NEXT:   S_ENDPGM 030  bb.0:31    liveins: $vgpr0_vgpr132    %0:vreg_64 = COPY $vgpr0_vgpr133 34  bb.1:35    %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec36    GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec37    S_CBRANCH_EXECZ %bb.1, implicit $exec38 39  bb.2:40    S_ENDPGM 041 42...43 44---45name: self_loop_multi_def46tracksRegLiveness: true47machineFunctionInfo:48  isEntryFunction: true49  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'50  stackPtrOffsetReg: '$sgpr32'51body:             |52  ; GCN-LABEL: name: self_loop_multi_def53  ; GCN: bb.0:54  ; GCN-NEXT:   successors: %bb.1(0x80000000)55  ; GCN-NEXT:   liveins: $vgpr0_vgpr156  ; GCN-NEXT: {{  $}}57  ; GCN-NEXT:   SI_SPILL_V64_SAVE killed $vgpr0_vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)58  ; GCN-NEXT: {{  $}}59  ; GCN-NEXT: bb.1:60  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)61  ; GCN-NEXT: {{  $}}62  ; GCN-NEXT:   $vgpr0_vgpr1 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)63  ; GCN-NEXT:   renamable $vgpr2 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec64  ; GCN-NEXT:   GLOBAL_STORE_DWORD renamable $vgpr0_vgpr1, renamable $vgpr2, 0, 0, implicit $exec65  ; GCN-NEXT:   renamable $vgpr2 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec66  ; GCN-NEXT:   GLOBAL_STORE_DWORD renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec67  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec68  ; GCN-NEXT: {{  $}}69  ; GCN-NEXT: bb.2:70  ; GCN-NEXT:   S_ENDPGM 071 72  bb.0:73    liveins: $vgpr0_vgpr174    %0:vreg_64 = COPY $vgpr0_vgpr175 76  bb.1:77    %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec78    GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec79    %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec80    GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec81    S_CBRANCH_EXECZ %bb.1, implicit $exec82 83  bb.2:84    S_ENDPGM 085 86...87 88# There's a single def inside the self loop, but it's also a use.89 90---91name: self_loop_def_use_same_inst92tracksRegLiveness: true93machineFunctionInfo:94  isEntryFunction: true95  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'96  stackPtrOffsetReg: '$sgpr32'97body:             |98  ; GCN-LABEL: name: self_loop_def_use_same_inst99  ; GCN: bb.0:100  ; GCN-NEXT:   successors: %bb.1(0x80000000)101  ; GCN-NEXT:   liveins: $vgpr0_vgpr1102  ; GCN-NEXT: {{  $}}103  ; GCN-NEXT:   SI_SPILL_V64_SAVE killed $vgpr0_vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)104  ; GCN-NEXT: {{  $}}105  ; GCN-NEXT: bb.1:106  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)107  ; GCN-NEXT: {{  $}}108  ; GCN-NEXT:   $vgpr0_vgpr1 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)109  ; GCN-NEXT:   renamable $vgpr2 = V_ADD_U32_e32 1, undef $vgpr0, implicit $exec110  ; GCN-NEXT:   SI_SPILL_V32_SAVE $vgpr2, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)111  ; GCN-NEXT:   GLOBAL_STORE_DWORD renamable $vgpr0_vgpr1, renamable $vgpr2, 0, 0, implicit $exec112  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec113  ; GCN-NEXT: {{  $}}114  ; GCN-NEXT: bb.2:115  ; GCN-NEXT:   S_ENDPGM 0116  bb.0:117    liveins: $vgpr0_vgpr1118    %0:vreg_64 = COPY $vgpr0_vgpr1119 120  bb.1:121    %1:vgpr_32 = V_ADD_U32_e32 1, undef %1, implicit $exec122    GLOBAL_STORE_DWORD %0, %1, 0, 0, implicit $exec123    S_CBRANCH_EXECZ %bb.1, implicit $exec124 125  bb.2:126    S_ENDPGM 0127 128...129 130---131name: self_loop_def_after_use132tracksRegLiveness: true133machineFunctionInfo:134  isEntryFunction: true135  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'136  stackPtrOffsetReg: '$sgpr32'137body:             |138  ; GCN-LABEL: name: self_loop_def_after_use139  ; GCN: bb.0:140  ; GCN-NEXT:   successors: %bb.1(0x80000000)141  ; GCN-NEXT:   liveins: $vgpr0_vgpr1142  ; GCN-NEXT: {{  $}}143  ; GCN-NEXT:   SI_SPILL_V64_SAVE killed $vgpr0_vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)144  ; GCN-NEXT: {{  $}}145  ; GCN-NEXT: bb.1:146  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)147  ; GCN-NEXT: {{  $}}148  ; GCN-NEXT:   $vgpr0_vgpr1 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)149  ; GCN-NEXT:   GLOBAL_STORE_DWORD renamable $vgpr0_vgpr1, undef renamable $vgpr0, 0, 0, implicit $exec150  ; GCN-NEXT:   renamable $vgpr0 = V_ADD_U32_e64 1, 1, 0, implicit $exec151  ; GCN-NEXT:   SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)152  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec153  ; GCN-NEXT: {{  $}}154  ; GCN-NEXT: bb.2:155  ; GCN-NEXT:   S_ENDPGM 0156  bb.0:157    liveins: $vgpr0_vgpr1158    %0:vreg_64 = COPY $vgpr0_vgpr1159 160  bb.1:161    GLOBAL_STORE_DWORD %0, undef %1, 0, 0, implicit $exec162    %1:vgpr_32 = V_ADD_U32_e64 1, 1, 0, implicit $exec163    S_CBRANCH_EXECZ %bb.1, implicit $exec164 165  bb.2:166    S_ENDPGM 0167 168...169 170---171name: self_loop_single_subreg_def_use172tracksRegLiveness: true173machineFunctionInfo:174  isEntryFunction: true175  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'176  stackPtrOffsetReg: '$sgpr32'177body:             |178  ; GCN-LABEL: name: self_loop_single_subreg_def_use179  ; GCN: bb.0:180  ; GCN-NEXT:   successors: %bb.1(0x80000000)181  ; GCN-NEXT:   liveins: $vgpr0_vgpr1182  ; GCN-NEXT: {{  $}}183  ; GCN-NEXT:   SI_SPILL_V64_SAVE killed $vgpr0_vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)184  ; GCN-NEXT: {{  $}}185  ; GCN-NEXT: bb.1:186  ; GCN-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)187  ; GCN-NEXT: {{  $}}188  ; GCN-NEXT:   $vgpr0_vgpr1 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)189  ; GCN-NEXT:   undef renamable $vgpr3 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit-def dead $vgpr2_vgpr3190  ; GCN-NEXT:   GLOBAL_STORE_DWORD renamable $vgpr0_vgpr1, undef renamable $vgpr1, 0, 0, implicit $exec191  ; GCN-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec192  ; GCN-NEXT: {{  $}}193  ; GCN-NEXT: bb.2:194  ; GCN-NEXT:   S_ENDPGM 0195  bb.0:196    liveins: $vgpr0_vgpr1197    %0:vreg_64 = COPY $vgpr0_vgpr1198 199  bb.1:200    undef %1.sub1:vreg_64 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec201    GLOBAL_STORE_DWORD %0, undef %1.sub1, 0, 0, implicit $exec202    S_CBRANCH_EXECZ %bb.1, implicit $exec203 204  bb.2:205    S_ENDPGM 0206 207...208