203 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -run-pass=si-fold-operands -o - %s | FileCheck %s3 4# Test behavior of folding into op_sel operands through reg_sequence5# with subregister uses6 7---8name: issue1393179tracksRegLiveness: true10body: |11 bb.0:12 liveins: $vgpr013 14 ; CHECK-LABEL: name: issue13931715 ; CHECK: liveins: $vgpr016 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr018 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 110731264019 ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 100663296020 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_1]], %subreg.sub0, killed [[S_MOV_B32_]], %subreg.sub121 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 8, [[REG_SEQUENCE]].sub1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec22 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]23 %0:vgpr_32 = COPY $vgpr024 %1:sreg_32 = S_MOV_B32 110731264025 %2:sreg_32 = S_MOV_B32 100663296026 %3:sgpr_64 = REG_SEQUENCE killed %2:sreg_32, %subreg.sub0, killed %1:sreg_32, %subreg.sub127 %4:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %3.sub1:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec28 S_ENDPGM 0, implicit %429...30 31---32name: issue139317_sub033tracksRegLiveness: true34body: |35 bb.0:36 liveins: $vgpr037 38 ; CHECK-LABEL: name: issue139317_sub039 ; CHECK: liveins: $vgpr040 ; CHECK-NEXT: {{ $}}41 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr042 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 110731264043 ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 100663296044 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_1]], %subreg.sub0, killed [[S_MOV_B32_]], %subreg.sub145 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 4, 15360, 0, 0, 0, 0, 0, implicit $mode, implicit $exec46 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]47 %0:vgpr_32 = COPY $vgpr048 %1:sreg_32 = S_MOV_B32 110731264049 %2:sreg_32 = S_MOV_B32 100663296050 %3:sgpr_64 = REG_SEQUENCE killed %2:sreg_32, %subreg.sub0, killed %1:sreg_32, %subreg.sub151 %4:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %3.sub0:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec52 S_ENDPGM 0, implicit %453...54 55---56name: issue139317_nested_reg_sequence57tracksRegLiveness: true58body: |59 bb.0:60 liveins: $vgpr061 62 ; CHECK-LABEL: name: issue139317_nested_reg_sequence63 ; CHECK: liveins: $vgpr064 ; CHECK-NEXT: {{ $}}65 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr066 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 110731264067 ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 100663296068 ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sreg_32 = S_MOV_B32 119120025669 ; CHECK-NEXT: [[S_MOV_B32_3:%[0-9]+]]:sreg_32 = S_MOV_B32 115764531270 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_1]], %subreg.sub0, killed [[S_MOV_B32_]], %subreg.sub171 ; CHECK-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_2]], %subreg.sub0, killed [[S_MOV_B32_3]], %subreg.sub172 ; CHECK-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[REG_SEQUENCE]], %subreg.sub0_sub1, [[REG_SEQUENCE1]], %subreg.sub2_sub373 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, killed [[COPY]], 8, [[REG_SEQUENCE2]].sub1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec74 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]75 %0:vgpr_32 = COPY $vgpr076 %1:sreg_32 = S_MOV_B32 110731264077 %2:sreg_32 = S_MOV_B32 100663296078 %3:sreg_32 = S_MOV_B32 119120025679 %4:sreg_32 = S_MOV_B32 115764531280 %5:sgpr_64 = REG_SEQUENCE killed %2, %subreg.sub0, killed %1, %subreg.sub181 %6:sgpr_64 = REG_SEQUENCE killed %3, %subreg.sub0, killed %4, %subreg.sub182 %7:sgpr_128 = REG_SEQUENCE %5, %subreg.sub0_sub1, %6, %subreg.sub2_sub383 %8:vgpr_32 = nofpexcept V_PK_ADD_F16 8, killed %0, 8, %7.sub1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec84 S_ENDPGM 0, implicit %885 86...87 88---89name: issue139317_foldable_neg_imm90tracksRegLiveness: true91body: |92 bb.0:93 liveins: $vgpr094 95 ; CHECK-LABEL: name: issue139317_foldable_neg_imm96 ; CHECK: liveins: $vgpr097 ; CHECK-NEXT: {{ $}}98 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr099 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -16100 ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 1006632960101 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_1]], %subreg.sub0, killed [[S_MOV_B32_]], %subreg.sub1102 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 8, -16, 0, 0, 0, 0, 0, implicit $mode, implicit $exec103 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]104 %0:vgpr_32 = COPY $vgpr0105 %1:sreg_32 = S_MOV_B32 -16106 %2:sreg_32 = S_MOV_B32 1006632960107 %3:sgpr_64 = REG_SEQUENCE killed %2:sreg_32, %subreg.sub0, killed %1:sreg_32, %subreg.sub1108 %4:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %3.sub1:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec109 S_ENDPGM 0, implicit %4110...111 112---113name: issue139317_foldable_fp_imm_0114tracksRegLiveness: true115body: |116 bb.0:117 liveins: $vgpr0118 119 ; CHECK-LABEL: name: issue139317_foldable_fp_imm_0120 ; CHECK: liveins: $vgpr0121 ; CHECK-NEXT: {{ $}}122 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0123 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 15360124 ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 1006632960125 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_1]], %subreg.sub0, killed [[S_MOV_B32_]], %subreg.sub1126 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 8, 15360, 0, 0, 0, 0, 0, implicit $mode, implicit $exec127 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]128 %0:vgpr_32 = COPY $vgpr0129 %1:sreg_32 = S_MOV_B32 15360130 %2:sreg_32 = S_MOV_B32 1006632960131 %3:sgpr_64 = REG_SEQUENCE killed %2:sreg_32, %subreg.sub0, killed %1:sreg_32, %subreg.sub1132 %4:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %3.sub1:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec133 S_ENDPGM 0, implicit %4134...135 136---137name: issue139317_foldable_fp_imm_1138tracksRegLiveness: true139body: |140 bb.0:141 liveins: $vgpr0142 143 ; CHECK-LABEL: name: issue139317_foldable_fp_imm_1144 ; CHECK: liveins: $vgpr0145 ; CHECK-NEXT: {{ $}}146 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0147 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1006632960148 ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 15360149 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B32_1]], %subreg.sub0, killed [[S_MOV_B32_]], %subreg.sub1150 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 4, 15360, 0, 0, 0, 0, 0, implicit $mode, implicit $exec151 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]152 %0:vgpr_32 = COPY $vgpr0153 %1:sreg_32 = S_MOV_B32 1006632960154 %2:sreg_32 = S_MOV_B32 15360155 %3:sgpr_64 = REG_SEQUENCE killed %2:sreg_32, %subreg.sub0, killed %1:sreg_32, %subreg.sub1156 %4:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %3.sub1:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec157 S_ENDPGM 0, implicit %4158...159 160---161name: issue139317_reg_sequence_subreg_use162tracksRegLiveness: true163body: |164 bb.0:165 liveins: $vgpr0166 167 ; CHECK-LABEL: name: issue139317_reg_sequence_subreg_use168 ; CHECK: liveins: $vgpr0169 ; CHECK-NEXT: {{ $}}170 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0171 ; CHECK-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 4755871576254054400172 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B]].sub0, %subreg.sub0, [[S_MOV_B]].sub1, %subreg.sub1173 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 8, [[REG_SEQUENCE]].sub1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec174 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]175 %0:vgpr_32 = COPY $vgpr0176 %1:sreg_64 = S_MOV_B64_IMM_PSEUDO 4755871576254054400177 %2:sgpr_64 = REG_SEQUENCE killed %1.sub0, %subreg.sub0, %1.sub1, %subreg.sub1178 %3:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %2.sub1:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec179 S_ENDPGM 0, implicit %3180...181 182---183name: issue139317_reg_sequence_subreg_use_foldable_imm184tracksRegLiveness: true185body: |186 bb.0:187 liveins: $vgpr0188 189 ; CHECK-LABEL: name: issue139317_reg_sequence_subreg_use_foldable_imm190 ; CHECK: liveins: $vgpr0191 ; CHECK-NEXT: {{ $}}192 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0193 ; CHECK-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO 65971704299520194 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_64 = REG_SEQUENCE killed [[S_MOV_B]].sub0, %subreg.sub0, [[S_MOV_B]].sub1, %subreg.sub1195 ; CHECK-NEXT: [[V_PK_ADD_F16_:%[0-9]+]]:vgpr_32 = nofpexcept V_PK_ADD_F16 8, [[COPY]], 8, 15360, 0, 0, 0, 0, 0, implicit $mode, implicit $exec196 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_PK_ADD_F16_]]197 %0:vgpr_32 = COPY $vgpr0198 %1:sreg_64 = S_MOV_B64_IMM_PSEUDO 65971704299520199 %2:sgpr_64 = REG_SEQUENCE killed %1.sub0, %subreg.sub0, %1.sub1, %subreg.sub1200 %3:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0:vgpr_32, 8, %2.sub1:sgpr_64, 0, 0, 0, 0, 0, implicit $mode, implicit $exec201 S_ENDPGM 0, implicit %3202...203