138 lines · plain
1# RUN: llc -mtriple=amdgcn -run-pass si-fix-sgpr-copies %s -o - | FileCheck %s -check-prefixes=GCN2# RUN: llc -mtriple=amdgcn -passes=si-fix-sgpr-copies %s -o - | FileCheck %s -check-prefixes=GCN3 4---5 6name: phi_visit_order7tracksRegLiveness: true8registers:9 - { id: 0, class: sreg_32_xm0 }10 - { id: 1, class: sreg_64 }11 - { id: 2, class: sreg_32_xm0 }12 - { id: 7, class: vgpr_32 }13 - { id: 8, class: sreg_32_xm0 }14 - { id: 9, class: vgpr_32 }15 - { id: 10, class: sreg_64 }16 - { id: 11, class: sreg_32_xm0 }17 18body: |19 ; GCN-LABEL: name: phi_visit_order20 ; GCN: S_ADD_I3221 bb.0:22 liveins: $vgpr023 %7 = COPY $vgpr024 %8 = S_MOV_B32 025 26 bb.1:27 %0 = PHI %8, %bb.0, %0, %bb.1, %2, %bb.228 %9 = V_MOV_B32_e32 9, implicit $exec29 %10 = V_CMP_EQ_U32_e64 %7, %9, implicit $exec30 %1 = SI_IF %10, %bb.2, implicit-def $exec, implicit-def $scc, implicit $exec31 S_BRANCH %bb.132 33 bb.2:34 SI_END_CF %1, implicit-def $exec, implicit-def $scc, implicit $exec35 %11 = S_MOV_B32 136 %2 = S_ADD_I32 %0, %11, implicit-def $scc37 S_BRANCH %bb.138 39...40 41---42 43# GCN-LABEL: name: dead_illegal_virtreg_copy44# GCN: %0:vgpr_32 = COPY $vgpr045# GCN: S_ENDPGM 0, implicit %046 47name: dead_illegal_virtreg_copy48tracksRegLiveness: true49 50body: |51 bb.0:52 liveins: $vgpr053 %0:vgpr_32 = COPY $vgpr054 %1:sreg_32_xm0 = COPY %055 S_ENDPGM 0, implicit %156...57 58---59 60# GCN-LABEL: name: dead_illegal_physreg_copy61# GCN: %2:vgpr_32 = COPY $vgpr062# GCN: S_ENDPGM 0, implicit %263 64name: dead_illegal_physreg_copy65tracksRegLiveness: true66 67body: |68 bb.0:69 liveins: $vgpr070 %0:sreg_32_xm0 = COPY $vgpr071 %1:sreg_32_xm0 = COPY %072 S_ENDPGM 0, implicit %173...74 75# Make sure there's no assert when looking at the implicit use on S_ENDPGM76# GCN-LABEL: name: s_to_v_copy_implicit_use77# GCN: %0:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM undef %1:sreg_64, 0, 0 :: (load (s32), addrspace 4)78# GCN-NEXT: %2:vgpr_32 = COPY %079# GCN-NEXT: S_ENDPGM 0, implicit %280---81name: s_to_v_copy_implicit_use82tracksRegLiveness: true83body: |84 bb.0:85 %0:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM undef %2:sreg_64, 0, 0 :: (load (s32), addrspace 4)86 %1:vgpr_32 = COPY %087 S_ENDPGM 0, implicit %188 89...90 91# GCN-LABEL: name: find_debug_loc_end_iterator_regression92# GCN: %6:vreg_1 = COPY %493# GCN: %14:sgpr_32 = S_MOV_B32 094 95# GCN: %7:vgpr_32 = PHI %5, %bb.0, %1, %bb.396# GCN: %8:sreg_32 = PHI %14, %bb.0, %9, %bb.397 98# GCN: %11:sreg_64 = PHI %10, %bb.1, %12, %bb.299# GCN: %13:sreg_64 = COPY %6100---101name: find_debug_loc_end_iterator_regression102tracksRegLiveness: true103body: |104 bb.0:105 liveins: $vgpr2, $vgpr3106 107 %0:vgpr_32 = COPY $vgpr3108 %1:vgpr_32 = COPY $vgpr2109 %2:sreg_64 = V_CMP_EQ_U32_e64 killed %0, 1, implicit $exec110 %3:sreg_64 = S_MOV_B64 -1111 %4:sreg_64 = S_XOR_B64 killed %2, killed %3, implicit-def dead $scc112 %5:vgpr_32 = V_MOV_B32_e32 0, implicit $exec113 %6:vreg_1 = COPY %4114 115 bb.1:116 %7:vgpr_32 = PHI %5, %bb.0, %1, %bb.3117 %8:sreg_32 = PHI %5, %bb.0, %9, %bb.3118 %10:sreg_64 = S_MOV_B64 0119 120 bb.2:121 %11:sreg_64 = PHI %10, %bb.1, %12, %bb.2122 %13:sreg_64 = COPY %6123 %12:sreg_64 = SI_IF_BREAK %13, %11, implicit-def dead $scc124 SI_LOOP %12, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec125 S_BRANCH %bb.3126 127 bb.3:128 %9:sreg_32 = S_OR_B32 %8, 1, implicit-def dead $scc129 S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc130 S_BRANCH %bb.4131 132 bb.4:133 SI_RETURN134 135...136## NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:137# GCN: {{.*}}138