brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.8 KiB · 9e38919 Raw
213 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -mtriple=amdgcn--amdpal -mcpu=gfx1010 -start-before=rename-independent-subregs -mattr=+wavefrontsize64 -stop-before=amdgpu-mark-last-scratch-load %s -o - | FileCheck -check-prefix=REG_ALLOC %s3# RUN: llc -mtriple=amdgcn--amdpal -mcpu=gfx1010 -start-before=rename-independent-subregs -mattr=+wavefrontsize64 -stop-after=machine-cp %s -o - | FileCheck -check-prefix=DEAD_INST_DEL %s4 5---6name: _amdgpu_cs_main7tracksRegLiveness: true8body: |9  ; REG_ALLOC-LABEL: name: _amdgpu_cs_main10  ; REG_ALLOC: bb.0:11  ; REG_ALLOC-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)12  ; REG_ALLOC-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr10, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr1113  ; REG_ALLOC-NEXT: {{  $}}14  ; REG_ALLOC-NEXT:   renamable $vgpr11_vgpr12_vgpr13_vgpr14 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr3, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)15  ; REG_ALLOC-NEXT:   renamable $vgpr12_vgpr13_vgpr14_vgpr15 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr2, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)16  ; REG_ALLOC-NEXT:   renamable $vgpr5_vgpr6_vgpr7_vgpr8 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr0, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)17  ; REG_ALLOC-NEXT:   renamable $vgpr6_vgpr7_vgpr8_vgpr9 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr4, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)18  ; REG_ALLOC-NEXT:   KILL killed renamable $vgpr419  ; REG_ALLOC-NEXT:   KILL killed renamable $vgpr220  ; REG_ALLOC-NEXT:   KILL killed renamable $vgpr021  ; REG_ALLOC-NEXT:   KILL killed renamable $vgpr322  ; REG_ALLOC-NEXT:   KILL killed renamable $sgpr8_sgpr9_sgpr10_sgpr1123  ; REG_ALLOC-NEXT:   renamable $sgpr8 = V_READFIRSTLANE_B32 killed $vgpr11, implicit $exec24  ; REG_ALLOC-NEXT:   renamable $sgpr9 = V_READFIRSTLANE_B32 killed $vgpr12, implicit $exec25  ; REG_ALLOC-NEXT:   renamable $sgpr6_sgpr7 = V_CMP_NE_U32_e64 killed $vgpr1, 0, implicit $exec26  ; REG_ALLOC-NEXT:   S_CMP_EQ_U64 killed renamable $sgpr8_sgpr9, killed renamable $sgpr2_sgpr3, implicit-def $scc27  ; REG_ALLOC-NEXT:   renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit $scc28  ; REG_ALLOC-NEXT:   renamable $vgpr0 = IMPLICIT_DEF29  ; REG_ALLOC-NEXT:   $exec = S_MOV_B64_term renamable $sgpr6_sgpr730  ; REG_ALLOC-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec31  ; REG_ALLOC-NEXT:   S_BRANCH %bb.232  ; REG_ALLOC-NEXT: {{  $}}33  ; REG_ALLOC-NEXT: bb.1:34  ; REG_ALLOC-NEXT:   successors: %bb.3(0x40000000), %bb.5(0x40000000)35  ; REG_ALLOC-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr10, $sgpr4_sgpr5, $sgpr6_sgpr7, $vgpr5_vgpr6_vgpr7_vgpr8:0x0000000000000003, $vgpr6_vgpr7_vgpr8_vgpr9:0x000000000000000336  ; REG_ALLOC-NEXT: {{  $}}37  ; REG_ALLOC-NEXT:   renamable $sgpr2_sgpr3 = S_OR_SAVEEXEC_B64 killed renamable $sgpr6_sgpr7, implicit-def $exec, implicit-def $scc, implicit $exec38  ; REG_ALLOC-NEXT:   $exec = S_XOR_B64_term $exec, renamable $sgpr2_sgpr3, implicit-def $scc39  ; REG_ALLOC-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec40  ; REG_ALLOC-NEXT:   S_BRANCH %bb.341  ; REG_ALLOC-NEXT: {{  $}}42  ; REG_ALLOC-NEXT: bb.2:43  ; REG_ALLOC-NEXT:   successors: %bb.1(0x80000000)44  ; REG_ALLOC-NEXT:   liveins: $sgpr0, $sgpr1, $vgpr10, $sgpr4_sgpr5, $sgpr6_sgpr745  ; REG_ALLOC-NEXT: {{  $}}46  ; REG_ALLOC-NEXT:   renamable $sgpr1 = S_OR_B32 killed renamable $sgpr1, 2, implicit-def dead $scc47  ; REG_ALLOC-NEXT:   renamable $vgpr0 = COPY killed renamable $sgpr148  ; REG_ALLOC-NEXT:   renamable $vgpr5_vgpr6 = IMPLICIT_DEF49  ; REG_ALLOC-NEXT:   renamable $vgpr6_vgpr7_vgpr8_vgpr9 = IMPLICIT_DEF50  ; REG_ALLOC-NEXT:   S_BRANCH %bb.151  ; REG_ALLOC-NEXT: {{  $}}52  ; REG_ALLOC-NEXT: bb.3:53  ; REG_ALLOC-NEXT:   successors: %bb.5(0x80000000)54  ; REG_ALLOC-NEXT:   liveins: $sgpr0, $vgpr10, $sgpr2_sgpr3, $sgpr4_sgpr5, $vgpr5_vgpr6_vgpr7_vgpr8:0x0000000000000003, $vgpr6_vgpr7_vgpr8_vgpr9:0x000000000000000355  ; REG_ALLOC-NEXT: {{  $}}56  ; REG_ALLOC-NEXT:   renamable $sgpr1 = V_READFIRSTLANE_B32 killed $vgpr5, implicit $exec57  ; REG_ALLOC-NEXT:   renamable $sgpr6 = V_READFIRSTLANE_B32 killed $vgpr6, implicit $exec58  ; REG_ALLOC-NEXT:   S_CMP_EQ_U32 killed renamable $sgpr6, killed renamable $sgpr1, implicit-def $scc59  ; REG_ALLOC-NEXT:   renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit $scc60  ; REG_ALLOC-NEXT:   renamable $vgpr0 = COPY killed renamable $sgpr161  ; REG_ALLOC-NEXT:   S_BRANCH %bb.562  ; REG_ALLOC-NEXT: {{  $}}63  ; REG_ALLOC-NEXT: bb.4:64  ; REG_ALLOC-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr10, $sgpr4_sgpr565  ; REG_ALLOC-NEXT: {{  $}}66  ; REG_ALLOC-NEXT:   renamable $sgpr4_sgpr5_sgpr6_sgpr7 = S_LOAD_DWORDX4_IMM killed renamable $sgpr4_sgpr5, 0, 0 :: (invariant load (<4 x s32>), addrspace 4)67  ; REG_ALLOC-NEXT:   renamable $vgpr1 = V_ADD_U32_e64 killed $sgpr0, killed $vgpr10, 0, implicit $exec68  ; REG_ALLOC-NEXT:   BUFFER_STORE_DWORD_OFFEN_exact killed renamable $vgpr0, killed renamable $vgpr1, killed renamable $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)69  ; REG_ALLOC-NEXT:   S_ENDPGM 070  ; REG_ALLOC-NEXT: {{  $}}71  ; REG_ALLOC-NEXT: bb.5:72  ; REG_ALLOC-NEXT:   successors: %bb.4(0x80000000)73  ; REG_ALLOC-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr10, $sgpr2_sgpr3, $sgpr4_sgpr574  ; REG_ALLOC-NEXT: {{  $}}75  ; REG_ALLOC-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def $scc76  ; REG_ALLOC-NEXT:   S_BRANCH %bb.477  ;78  ; DEAD_INST_DEL-LABEL: name: _amdgpu_cs_main79  ; DEAD_INST_DEL: bb.0:80  ; DEAD_INST_DEL-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)81  ; DEAD_INST_DEL-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr10, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr1182  ; DEAD_INST_DEL-NEXT: {{  $}}83  ; DEAD_INST_DEL-NEXT:   renamable $vgpr11_vgpr12_vgpr13_vgpr14 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr3, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)84  ; DEAD_INST_DEL-NEXT:   renamable $vgpr12_vgpr13_vgpr14_vgpr15 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr2, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)85  ; DEAD_INST_DEL-NEXT:   renamable $vgpr5_vgpr6_vgpr7_vgpr8 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr0, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)86  ; DEAD_INST_DEL-NEXT:   renamable $vgpr6_vgpr7_vgpr8_vgpr9 = BUFFER_LOAD_DWORDX4_OFFEN renamable $vgpr4, renamable $sgpr8_sgpr9_sgpr10_sgpr11, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)87  ; DEAD_INST_DEL-NEXT:   KILL killed renamable $vgpr488  ; DEAD_INST_DEL-NEXT:   KILL killed renamable $vgpr289  ; DEAD_INST_DEL-NEXT:   KILL killed renamable $vgpr090  ; DEAD_INST_DEL-NEXT:   KILL killed renamable $vgpr391  ; DEAD_INST_DEL-NEXT:   KILL killed renamable $sgpr8_sgpr9_sgpr10_sgpr1192  ; DEAD_INST_DEL-NEXT:   renamable $sgpr8 = V_READFIRSTLANE_B32 killed $vgpr11, implicit $exec93  ; DEAD_INST_DEL-NEXT:   renamable $sgpr9 = V_READFIRSTLANE_B32 killed $vgpr12, implicit $exec94  ; DEAD_INST_DEL-NEXT:   renamable $sgpr6_sgpr7 = V_CMP_NE_U32_e64 killed $vgpr1, 0, implicit $exec95  ; DEAD_INST_DEL-NEXT:   S_CMP_EQ_U64 killed renamable $sgpr8_sgpr9, killed renamable $sgpr2_sgpr3, implicit-def $scc96  ; DEAD_INST_DEL-NEXT:   renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit $scc97  ; DEAD_INST_DEL-NEXT:   renamable $vgpr0 = IMPLICIT_DEF98  ; DEAD_INST_DEL-NEXT:   $exec = S_MOV_B64_term renamable $sgpr6_sgpr799  ; DEAD_INST_DEL-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec100  ; DEAD_INST_DEL-NEXT:   S_BRANCH %bb.2101  ; DEAD_INST_DEL-NEXT: {{  $}}102  ; DEAD_INST_DEL-NEXT: bb.1:103  ; DEAD_INST_DEL-NEXT:   successors: %bb.3(0x40000000), %bb.5(0x40000000)104  ; DEAD_INST_DEL-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr10, $sgpr4_sgpr5, $sgpr6_sgpr7, $vgpr5_vgpr6_vgpr7_vgpr8:0x0000000000000003, $vgpr6_vgpr7_vgpr8_vgpr9:0x0000000000000003105  ; DEAD_INST_DEL-NEXT: {{  $}}106  ; DEAD_INST_DEL-NEXT:   renamable $sgpr2_sgpr3 = S_OR_SAVEEXEC_B64 killed renamable $sgpr6_sgpr7, implicit-def $exec, implicit-def $scc, implicit $exec107  ; DEAD_INST_DEL-NEXT:   $exec = S_XOR_B64_term $exec, renamable $sgpr2_sgpr3, implicit-def $scc108  ; DEAD_INST_DEL-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec109  ; DEAD_INST_DEL-NEXT:   S_BRANCH %bb.3110  ; DEAD_INST_DEL-NEXT: {{  $}}111  ; DEAD_INST_DEL-NEXT: bb.2:112  ; DEAD_INST_DEL-NEXT:   successors: %bb.1(0x80000000)113  ; DEAD_INST_DEL-NEXT:   liveins: $sgpr0, $sgpr1, $vgpr10, $sgpr4_sgpr5, $sgpr6_sgpr7114  ; DEAD_INST_DEL-NEXT: {{  $}}115  ; DEAD_INST_DEL-NEXT:   renamable $sgpr1 = S_OR_B32 killed renamable $sgpr1, 2, implicit-def dead $scc116  ; DEAD_INST_DEL-NEXT:   renamable $vgpr0 = COPY killed renamable $sgpr1117  ; DEAD_INST_DEL-NEXT:   renamable $vgpr5_vgpr6 = IMPLICIT_DEF118  ; DEAD_INST_DEL-NEXT:   renamable $vgpr6_vgpr7_vgpr8_vgpr9 = IMPLICIT_DEF119  ; DEAD_INST_DEL-NEXT:   S_BRANCH %bb.1120  ; DEAD_INST_DEL-NEXT: {{  $}}121  ; DEAD_INST_DEL-NEXT: bb.3:122  ; DEAD_INST_DEL-NEXT:   successors: %bb.5(0x80000000)123  ; DEAD_INST_DEL-NEXT:   liveins: $sgpr0, $vgpr10, $sgpr2_sgpr3, $sgpr4_sgpr5, $vgpr5_vgpr6_vgpr7_vgpr8:0x0000000000000003, $vgpr6_vgpr7_vgpr8_vgpr9:0x0000000000000003124  ; DEAD_INST_DEL-NEXT: {{  $}}125  ; DEAD_INST_DEL-NEXT:   renamable $sgpr1 = V_READFIRSTLANE_B32 killed $vgpr5, implicit $exec126  ; DEAD_INST_DEL-NEXT:   renamable $sgpr6 = V_READFIRSTLANE_B32 killed $vgpr6, implicit $exec127  ; DEAD_INST_DEL-NEXT:   S_CMP_EQ_U32 killed renamable $sgpr6, killed renamable $sgpr1, implicit-def $scc128  ; DEAD_INST_DEL-NEXT:   renamable $sgpr1 = S_CSELECT_B32 1, 0, implicit $scc129  ; DEAD_INST_DEL-NEXT:   renamable $vgpr0 = COPY killed renamable $sgpr1130  ; DEAD_INST_DEL-NEXT:   S_BRANCH %bb.5131  ; DEAD_INST_DEL-NEXT: {{  $}}132  ; DEAD_INST_DEL-NEXT: bb.4:133  ; DEAD_INST_DEL-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr10, $sgpr4_sgpr5134  ; DEAD_INST_DEL-NEXT: {{  $}}135  ; DEAD_INST_DEL-NEXT:   renamable $sgpr4_sgpr5_sgpr6_sgpr7 = S_LOAD_DWORDX4_IMM killed renamable $sgpr4_sgpr5, 0, 0 :: (invariant load (<4 x s32>), addrspace 4)136  ; DEAD_INST_DEL-NEXT:   renamable $vgpr1 = V_ADD_U32_e64 killed $sgpr0, killed $vgpr10, 0, implicit $exec137  ; DEAD_INST_DEL-NEXT:   BUFFER_STORE_DWORD_OFFEN_exact killed renamable $vgpr0, killed renamable $vgpr1, killed renamable $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)138  ; DEAD_INST_DEL-NEXT:   S_ENDPGM 0139  ; DEAD_INST_DEL-NEXT: {{  $}}140  ; DEAD_INST_DEL-NEXT: bb.5:141  ; DEAD_INST_DEL-NEXT:   successors: %bb.4(0x80000000)142  ; DEAD_INST_DEL-NEXT:   liveins: $sgpr0, $vgpr0, $vgpr10, $sgpr2_sgpr3, $sgpr4_sgpr5143  ; DEAD_INST_DEL-NEXT: {{  $}}144  ; DEAD_INST_DEL-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def $scc145  ; DEAD_INST_DEL-NEXT:   S_BRANCH %bb.4146  bb.0:147    successors: %bb.2(0x40000000), %bb.1(0x40000000)148    liveins: $sgpr0, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr10149 150    %0:sreg_32 = COPY $sgpr0151    %1:vgpr_32 = COPY $vgpr0152    %2:vgpr_32 = COPY $vgpr1153    %3:vgpr_32 = COPY $vgpr2154    %4:vgpr_32 = COPY $vgpr3155    %5:vgpr_32 = COPY $vgpr4156    %6:vgpr_32 = COPY $vgpr10157    %7:sreg_64 = COPY $sgpr2_sgpr3158    %8:sreg_64 = COPY $sgpr4_sgpr5159    %9:sgpr_128 = COPY $sgpr8_sgpr9_sgpr10_sgpr11160    undef %10.sub0_sub1_sub2_sub3:vreg_256 = BUFFER_LOAD_DWORDX4_OFFEN %1, %9, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)161    %10.sub4_sub5_sub6_sub7:vreg_256 = BUFFER_LOAD_DWORDX4_OFFEN %5, %9, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)162    %11:vreg_128 = BUFFER_LOAD_DWORDX4_OFFEN %4, %9, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)163    %12:vreg_128 = BUFFER_LOAD_DWORDX4_OFFEN %3, %9, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (<4 x s32>), align 1, addrspace 8)164    undef %13.sub0:sgpr_256 = V_READFIRSTLANE_B32 %11.sub0, implicit $exec165    %13.sub1:sgpr_256 = V_READFIRSTLANE_B32 %12.sub0, implicit $exec166    S_CMP_EQ_U64 %13.sub0_sub1, %7, implicit-def $scc167    %14:sreg_32 = S_CSELECT_B32 1, 0, implicit killed $scc168    %15:sreg_64_xexec = V_CMP_NE_U32_e64 %2, 0, implicit $exec169    %16:vgpr_32 = IMPLICIT_DEF170    $exec = S_MOV_B64_term %15171    S_CBRANCH_EXECZ %bb.1, implicit $exec172    S_BRANCH %bb.2173 174  bb.1:175    successors: %bb.3(0x40000000), %bb.5(0x40000000)176 177    %17:sreg_64 = S_OR_SAVEEXEC_B64 %15, implicit-def $exec, implicit-def $scc, implicit $exec178    %18:sreg_64_xexec = S_AND_B64 $exec, %17, implicit-def $scc179    $exec = S_XOR_B64_term $exec, %18, implicit-def $scc180    S_CBRANCH_EXECZ %bb.5, implicit $exec181    S_BRANCH %bb.3182 183  bb.2:184    successors: %bb.1(0x80000000)185 186    %19:sreg_32 = S_OR_B32 %14, 2, implicit-def dead $scc187    %16:vgpr_32 = COPY %19188    undef %10.sub0_sub1:vreg_256 = IMPLICIT_DEF189    S_BRANCH %bb.1190 191  bb.3:192    successors: %bb.5(0x80000000)193 194    %20:sreg_32_xm0 = V_READFIRSTLANE_B32 %10.sub0, implicit $exec195    %21:sreg_32_xm0 = V_READFIRSTLANE_B32 %10.sub4, implicit $exec196    S_CMP_EQ_U32 %21, %20, implicit-def $scc197    %22:sreg_32 = S_CSELECT_B32 1, 0, implicit killed $scc198    %16:vgpr_32 = COPY %22199    S_BRANCH %bb.5200 201  bb.4:202    %23:vgpr_32 = V_ADD_U32_e64 %0, %6, 0, implicit $exec203    %24:sgpr_128 = S_LOAD_DWORDX4_IMM %8, 0, 0 :: (invariant load (<4 x s32>), addrspace 4)204    BUFFER_STORE_DWORD_OFFEN_exact %16, %23, %24, 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)205    S_ENDPGM 0206 207  bb.5:208    successors: %bb.4(0x80000000)209 210    $exec = S_OR_B64 $exec, %18, implicit-def $scc211    S_BRANCH %bb.4212...213