1090 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -simplify-mir -run-pass=si-peephole-sdwa -o - %s | FileCheck %s3 4# Test the combination of SDWA selections in si-peephole-sdwa. In each5# example, the SDWA source selection specified on the last instruction6# must be combined with the source selection that the pass determines7# for this operand, i.e. the second instruction. In the cases where8# this is not possible, no conversion should occur, i.e. the last9# instruction in the output mir should still use the second10# instruction with the same source selection.11 12---13name: op_select_byte0_instr_select_dword14tracksRegLiveness: true15body: |16 bb.0:17 liveins: $vgpr018 ; CHECK-LABEL: name: op_select_byte0_instr_select_dword19 ; CHECK: liveins: $vgpr020 ; CHECK-NEXT: {{ $}}21 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr022 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec23 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec24 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 0, 0, implicit $exec25 ; CHECK-NEXT: S_ENDPGM 026 %1:vgpr_32 = COPY $vgpr027 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec28 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */29 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 6, implicit $exec30 31 S_ENDPGM 032...33 34---35name: op_select_byte_0_instr_select_word_136tracksRegLiveness: true37body: |38 bb.0:39 liveins: $vgpr040 ; CHECK-LABEL: name: op_select_byte_0_instr_select_word_141 ; CHECK: liveins: $vgpr042 ; CHECK-NEXT: {{ $}}43 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr044 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec45 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec46 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 0, 5, implicit $exec47 ; CHECK-NEXT: S_ENDPGM 048 %1:vgpr_32 = COPY $vgpr049 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec50 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */51 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 5, implicit $exec52 53 S_ENDPGM 054...55 56---57name: op_select_byte_0_instr_select_word_058tracksRegLiveness: true59body: |60 bb.0:61 liveins: $vgpr062 ; CHECK-LABEL: name: op_select_byte_0_instr_select_word_063 ; CHECK: liveins: $vgpr064 ; CHECK-NEXT: {{ $}}65 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr066 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec67 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec68 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 0, 4, implicit $exec69 ; CHECK-NEXT: S_ENDPGM 070 %1:vgpr_32 = COPY $vgpr071 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec72 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */73 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 4, implicit $exec74 75 S_ENDPGM 076...77 78---79name: op_select_byte_0_instr_select_byte_380tracksRegLiveness: true81body: |82 bb.0:83 liveins: $vgpr084 ; CHECK-LABEL: name: op_select_byte_0_instr_select_byte_385 ; CHECK: liveins: $vgpr086 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr088 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec89 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec90 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 0, 3, implicit $exec91 ; CHECK-NEXT: S_ENDPGM 092 %1:vgpr_32 = COPY $vgpr093 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec94 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */95 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 3, implicit $exec96 97 S_ENDPGM 098...99 100---101name: op_select_byte_0_instr_select_byte_2102tracksRegLiveness: true103body: |104 bb.0:105 liveins: $vgpr0106 ; CHECK-LABEL: name: op_select_byte_0_instr_select_byte_2107 ; CHECK: liveins: $vgpr0108 ; CHECK-NEXT: {{ $}}109 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0110 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec111 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec112 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 0, 2, implicit $exec113 ; CHECK-NEXT: S_ENDPGM 0114 %1:vgpr_32 = COPY $vgpr0115 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec116 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */117 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 2, implicit $exec118 119 S_ENDPGM 0120...121 122---123name: op_select_byte_0_instr_select_byte_1124tracksRegLiveness: true125body: |126 bb.0:127 liveins: $vgpr0128 ; CHECK-LABEL: name: op_select_byte_0_instr_select_byte_1129 ; CHECK: liveins: $vgpr0130 ; CHECK-NEXT: {{ $}}131 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0132 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec133 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec134 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 0, 1, implicit $exec135 ; CHECK-NEXT: S_ENDPGM 0136 %1:vgpr_32 = COPY $vgpr0137 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec138 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */139 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 1, implicit $exec140 141 S_ENDPGM 0142...143 144---145name: op_select_byte_0_instr_select_byte_0146tracksRegLiveness: true147body: |148 bb.0:149 liveins: $vgpr0150 ; CHECK-LABEL: name: op_select_byte_0_instr_select_byte_0151 ; CHECK: liveins: $vgpr0152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0154 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec155 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 255, [[V_LSHRREV_B32_sdwa]], implicit $exec156 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 0, 0, implicit $exec157 ; CHECK-NEXT: S_ENDPGM 0158 %1:vgpr_32 = COPY $vgpr0159 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec160 %3:vgpr_32 = V_AND_B32_e64 255, %2, implicit $exec /* Select Byte_0 */161 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 0, 0, implicit $exec162 163 S_ENDPGM 0164 165...166 167---168name: op_select_word_0_instr_select_dword169tracksRegLiveness: true170body: |171 bb.0:172 liveins: $vgpr0173 ; CHECK-LABEL: name: op_select_word_0_instr_select_dword174 ; CHECK: liveins: $vgpr0175 ; CHECK-NEXT: {{ $}}176 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0177 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec178 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec179 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 4, implicit $exec180 ; CHECK-NEXT: S_ENDPGM 0181 %1:vgpr_32 = COPY $vgpr0182 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec183 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */184 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 6, implicit $exec185 186 S_ENDPGM 0187...188 189---190name: op_select_word_0_instr_select_word_1191tracksRegLiveness: true192body: |193 bb.0:194 liveins: $vgpr0195 ; CHECK-LABEL: name: op_select_word_0_instr_select_word_1196 ; CHECK: liveins: $vgpr0197 ; CHECK-NEXT: {{ $}}198 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0199 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec200 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec201 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 6, 5, implicit $exec202 ; CHECK-NEXT: S_ENDPGM 0203 %1:vgpr_32 = COPY $vgpr0204 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec205 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */206 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 5, implicit $exec207 208 S_ENDPGM 0209...210 211---212name: op_select_word_0_instr_select_word_0213tracksRegLiveness: true214body: |215 bb.0:216 liveins: $vgpr0217 ; CHECK-LABEL: name: op_select_word_0_instr_select_word_0218 ; CHECK: liveins: $vgpr0219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0221 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec222 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec223 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 4, implicit $exec224 ; CHECK-NEXT: S_ENDPGM 0225 %1:vgpr_32 = COPY $vgpr0226 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec227 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */228 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 4, implicit $exec229 230 S_ENDPGM 0231...232 233---234name: op_select_word_0_instr_select_byte_3235tracksRegLiveness: true236body: |237 bb.0:238 liveins: $vgpr0239 ; CHECK-LABEL: name: op_select_word_0_instr_select_byte_3240 ; CHECK: liveins: $vgpr0241 ; CHECK-NEXT: {{ $}}242 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0243 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec244 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec245 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 6, 3, implicit $exec246 ; CHECK-NEXT: S_ENDPGM 0247 %1:vgpr_32 = COPY $vgpr0248 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec249 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */250 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 3, implicit $exec251 252 S_ENDPGM 0253...254 255---256name: op_select_word_0_instr_select_byte_2257tracksRegLiveness: true258body: |259 bb.0:260 liveins: $vgpr0261 ; CHECK-LABEL: name: op_select_word_0_instr_select_byte_2262 ; CHECK: liveins: $vgpr0263 ; CHECK-NEXT: {{ $}}264 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0265 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec266 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec267 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_AND_B32_e64_]], 0, 1, 0, 6, 2, implicit $exec268 ; CHECK-NEXT: S_ENDPGM 0269 %1:vgpr_32 = COPY $vgpr0270 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec271 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */272 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 2, implicit $exec273 274 S_ENDPGM 0275...276 277---278name: op_select_word_0_instr_select_byte_1279tracksRegLiveness: true280body: |281 bb.0:282 liveins: $vgpr0283 ; CHECK-LABEL: name: op_select_word_0_instr_select_byte_1284 ; CHECK: liveins: $vgpr0285 ; CHECK-NEXT: {{ $}}286 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0287 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec288 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec289 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 1, implicit $exec290 ; CHECK-NEXT: S_ENDPGM 0291 %1:vgpr_32 = COPY $vgpr0292 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec293 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */294 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 1, implicit $exec295 296 S_ENDPGM 0297...298 299---300name: op_select_word_0_instr_select_byte_0301tracksRegLiveness: true302body: |303 bb.0:304 liveins: $vgpr0305 ; CHECK-LABEL: name: op_select_word_0_instr_select_byte_0306 ; CHECK: liveins: $vgpr0307 ; CHECK-NEXT: {{ $}}308 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0309 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec310 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 65535, [[V_LSHRREV_B32_sdwa]], implicit $exec311 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 0, implicit $exec312 ; CHECK-NEXT: S_ENDPGM 0313 %1:vgpr_32 = COPY $vgpr0314 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec315 %3:vgpr_32 = V_AND_B32_e64 65535, %2, implicit $exec /* Select Word_0 */316 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 0, implicit $exec317 318 S_ENDPGM 0319...320 321---322name: op_select_byte_1_instr_select_dword323tracksRegLiveness: true324body: |325 bb.0:326 liveins: $vgpr0327 ; CHECK-LABEL: name: op_select_byte_1_instr_select_dword328 ; CHECK: liveins: $vgpr0329 ; CHECK-NEXT: {{ $}}330 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0331 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec332 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec333 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 1, implicit $exec334 ; CHECK-NEXT: S_ENDPGM 0335 %1:vgpr_32 = COPY $vgpr0336 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec337 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */338 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 6, implicit $exec339 340 S_ENDPGM 0341...342 343---344name: op_select_byte_1_instr_select_word_1345tracksRegLiveness: true346body: |347 bb.0:348 liveins: $vgpr0349 ; CHECK-LABEL: name: op_select_byte_1_instr_select_word_1350 ; CHECK: liveins: $vgpr0351 ; CHECK-NEXT: {{ $}}352 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0353 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec354 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec355 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B16_e32_]], 0, 1, 0, 6, 5, implicit $exec356 ; CHECK-NEXT: S_ENDPGM 0357 %1:vgpr_32 = COPY $vgpr0358 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec359 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */360 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 5, implicit $exec361 362 S_ENDPGM 0363...364 365---366name: op_select_byte_1_instr_select_word_0367tracksRegLiveness: true368body: |369 bb.0:370 liveins: $vgpr0371 ; CHECK-LABEL: name: op_select_byte_1_instr_select_word_0372 ; CHECK: liveins: $vgpr0373 ; CHECK-NEXT: {{ $}}374 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0375 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec376 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec377 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B16_e32_]], 0, 1, 0, 6, 4, implicit $exec378 ; CHECK-NEXT: S_ENDPGM 0379 %1:vgpr_32 = COPY $vgpr0380 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec381 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */382 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 4, implicit $exec383 384 S_ENDPGM 0385...386 387---388name: op_select_byte_1_instr_select_byte_3389tracksRegLiveness: true390body: |391 bb.0:392 liveins: $vgpr0393 ; CHECK-LABEL: name: op_select_byte_1_instr_select_byte_3394 ; CHECK: liveins: $vgpr0395 ; CHECK-NEXT: {{ $}}396 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0397 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec398 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec399 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B16_e32_]], 0, 1, 0, 6, 3, implicit $exec400 ; CHECK-NEXT: S_ENDPGM 0401 %1:vgpr_32 = COPY $vgpr0402 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec403 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */404 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 3, implicit $exec405 406 S_ENDPGM 0407...408 409---410name: op_select_byte_1_instr_select_byte_2411tracksRegLiveness: true412body: |413 bb.0:414 liveins: $vgpr0415 ; CHECK-LABEL: name: op_select_byte_1_instr_select_byte_2416 ; CHECK: liveins: $vgpr0417 ; CHECK-NEXT: {{ $}}418 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0419 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec420 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec421 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B16_e32_]], 0, 1, 0, 6, 2, implicit $exec422 ; CHECK-NEXT: S_ENDPGM 0423 %1:vgpr_32 = COPY $vgpr0424 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec425 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */426 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 2, implicit $exec427 428 S_ENDPGM 0429...430 431---432name: op_select_byte_1_instr_select_byte_1433tracksRegLiveness: true434body: |435 bb.0:436 liveins: $vgpr0437 ; CHECK-LABEL: name: op_select_byte_1_instr_select_byte_1438 ; CHECK: liveins: $vgpr0439 ; CHECK-NEXT: {{ $}}440 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0441 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec442 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec443 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 1, implicit $exec444 ; CHECK-NEXT: S_ENDPGM 0445 %1:vgpr_32 = COPY $vgpr0446 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec447 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */448 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 1, implicit $exec449 450 S_ENDPGM 0451...452 453---454name: op_select_byte_1_instr_select_byte_0455tracksRegLiveness: true456body: |457 bb.0:458 liveins: $vgpr0459 ; CHECK-LABEL: name: op_select_byte_1_instr_select_byte_0460 ; CHECK: liveins: $vgpr0461 ; CHECK-NEXT: {{ $}}462 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0463 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec464 ; CHECK-NEXT: [[V_LSHRREV_B16_e32_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B16_e32 8, [[V_LSHRREV_B32_sdwa]], implicit $exec465 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_LSHRREV_B16_e32_]], 0, 1, 0, 6, 0, implicit $exec466 ; CHECK-NEXT: S_ENDPGM 0467 %1:vgpr_32 = COPY $vgpr0468 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec469 %3:vgpr_32 = V_LSHRREV_B16_e32 8, %2, implicit $exec /* Select BYTE_1 */470 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 0, implicit $exec471 472 S_ENDPGM 0473...474 475---476name: op_select_byte_2_instr_select_dword477tracksRegLiveness: true478body: |479 bb.0:480 liveins: $vgpr0481 ; CHECK-LABEL: name: op_select_byte_2_instr_select_dword482 ; CHECK: liveins: $vgpr0483 ; CHECK-NEXT: {{ $}}484 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0485 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec486 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec487 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 2, implicit $exec488 ; CHECK-NEXT: S_ENDPGM 0489 %1:vgpr_32 = COPY $vgpr0490 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec491 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */492 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 6, implicit $exec493 494 S_ENDPGM 0495...496 497---498name: op_select_byte_2_instr_select_word_1499tracksRegLiveness: true500body: |501 bb.0:502 liveins: $vgpr0503 ; CHECK-LABEL: name: op_select_byte_2_instr_select_word_1504 ; CHECK: liveins: $vgpr0505 ; CHECK-NEXT: {{ $}}506 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0507 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec508 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec509 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 5, implicit $exec510 ; CHECK-NEXT: S_ENDPGM 0511 %1:vgpr_32 = COPY $vgpr0512 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec513 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */514 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 5, implicit $exec515 516 S_ENDPGM 0517...518 519---520name: op_select_byte_2_instr_select_word_0521tracksRegLiveness: true522body: |523 bb.0:524 liveins: $vgpr0525 ; CHECK-LABEL: name: op_select_byte_2_instr_select_word_0526 ; CHECK: liveins: $vgpr0527 ; CHECK-NEXT: {{ $}}528 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0529 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec530 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec531 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 4, implicit $exec532 ; CHECK-NEXT: S_ENDPGM 0533 %1:vgpr_32 = COPY $vgpr0534 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec535 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */536 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 4, implicit $exec537 538 S_ENDPGM 0539...540 541---542name: op_select_byte_2_instr_select_byte_3543tracksRegLiveness: true544body: |545 bb.0:546 liveins: $vgpr0547 ; CHECK-LABEL: name: op_select_byte_2_instr_select_byte_3548 ; CHECK: liveins: $vgpr0549 ; CHECK-NEXT: {{ $}}550 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0551 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec552 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec553 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 3, implicit $exec554 ; CHECK-NEXT: S_ENDPGM 0555 %1:vgpr_32 = COPY $vgpr0556 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec557 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */558 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 3, implicit $exec559 560 S_ENDPGM 0561...562 563---564name: op_select_byte_2_instr_select_byte_2565tracksRegLiveness: true566body: |567 bb.0:568 liveins: $vgpr0569 ; CHECK-LABEL: name: op_select_byte_2_instr_select_byte_2570 ; CHECK: liveins: $vgpr0571 ; CHECK-NEXT: {{ $}}572 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0573 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec574 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec575 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 2, implicit $exec576 ; CHECK-NEXT: S_ENDPGM 0577 %1:vgpr_32 = COPY $vgpr0578 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec579 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */580 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 2, implicit $exec581 582 S_ENDPGM 0583...584 585---586name: op_select_byte_2_instr_select_byte_1587tracksRegLiveness: true588body: |589 bb.0:590 liveins: $vgpr0591 ; CHECK-LABEL: name: op_select_byte_2_instr_select_byte_1592 ; CHECK: liveins: $vgpr0593 ; CHECK-NEXT: {{ $}}594 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0595 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec596 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec597 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 1, implicit $exec598 ; CHECK-NEXT: S_ENDPGM 0599 %1:vgpr_32 = COPY $vgpr0600 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec601 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */602 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 1, implicit $exec603 604 S_ENDPGM 0605...606 607---608name: op_select_byte_2_instr_select_byte_0609tracksRegLiveness: true610body: |611 bb.0:612 liveins: $vgpr0613 ; CHECK-LABEL: name: op_select_byte_2_instr_select_byte_0614 ; CHECK: liveins: $vgpr0615 ; CHECK-NEXT: {{ $}}616 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0617 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec618 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 8, implicit $exec619 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 0, implicit $exec620 ; CHECK-NEXT: S_ENDPGM 0621 %1:vgpr_32 = COPY $vgpr0622 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec623 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 8, implicit $exec /* Select BYTE_2 */624 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 0, implicit $exec625 626 S_ENDPGM 0627...628 629---630name: op_select_byte_3_instr_select_dword631tracksRegLiveness: true632body: |633 bb.0:634 liveins: $vgpr0635 ; CHECK-LABEL: name: op_select_byte_3_instr_select_dword636 ; CHECK: liveins: $vgpr0637 ; CHECK-NEXT: {{ $}}638 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0639 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec640 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec641 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 3, implicit $exec642 ; CHECK-NEXT: S_ENDPGM 0643 %1:vgpr_32 = COPY $vgpr0644 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec645 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */646 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 6, implicit $exec647 648 S_ENDPGM 0649...650 651---652name: op_select_byte_3_instr_select_word_1653tracksRegLiveness: true654body: |655 bb.0:656 liveins: $vgpr0657 ; CHECK-LABEL: name: op_select_byte_3_instr_select_word_1658 ; CHECK: liveins: $vgpr0659 ; CHECK-NEXT: {{ $}}660 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0661 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec662 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec663 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 5, implicit $exec664 ; CHECK-NEXT: S_ENDPGM 0665 %1:vgpr_32 = COPY $vgpr0666 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec667 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */668 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 5, implicit $exec669 670 S_ENDPGM 0671...672 673---674name: op_select_byte_3_instr_select_word_0675tracksRegLiveness: true676body: |677 bb.0:678 liveins: $vgpr0679 ; CHECK-LABEL: name: op_select_byte_3_instr_select_word_0680 ; CHECK: liveins: $vgpr0681 ; CHECK-NEXT: {{ $}}682 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0683 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec684 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec685 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 4, implicit $exec686 ; CHECK-NEXT: S_ENDPGM 0687 %1:vgpr_32 = COPY $vgpr0688 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec689 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */690 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 4, implicit $exec691 692 S_ENDPGM 0693...694 695---696name: op_select_byte_3_instr_select_byte_3697tracksRegLiveness: true698body: |699 bb.0:700 liveins: $vgpr0701 ; CHECK-LABEL: name: op_select_byte_3_instr_select_byte_3702 ; CHECK: liveins: $vgpr0703 ; CHECK-NEXT: {{ $}}704 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0705 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec706 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec707 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 3, implicit $exec708 ; CHECK-NEXT: S_ENDPGM 0709 %1:vgpr_32 = COPY $vgpr0710 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec711 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */712 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 3, implicit $exec713 714 S_ENDPGM 0715...716 717---718name: op_select_byte_3_instr_select_byte_2719tracksRegLiveness: true720body: |721 bb.0:722 liveins: $vgpr0723 ; CHECK-LABEL: name: op_select_byte_3_instr_select_byte_2724 ; CHECK: liveins: $vgpr0725 ; CHECK-NEXT: {{ $}}726 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0727 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec728 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec729 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 2, implicit $exec730 ; CHECK-NEXT: S_ENDPGM 0731 %1:vgpr_32 = COPY $vgpr0732 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec733 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */734 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 2, implicit $exec735 736 S_ENDPGM 0737...738 739---740name: op_select_byte_3_instr_select_byte_1741tracksRegLiveness: true742body: |743 bb.0:744 liveins: $vgpr0745 ; CHECK-LABEL: name: op_select_byte_3_instr_select_byte_1746 ; CHECK: liveins: $vgpr0747 ; CHECK-NEXT: {{ $}}748 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0749 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec750 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec751 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 1, implicit $exec752 ; CHECK-NEXT: S_ENDPGM 0753 %1:vgpr_32 = COPY $vgpr0754 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec755 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */756 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 1, implicit $exec757 758 S_ENDPGM 0759...760 761---762name: op_select_byte_3_instr_select_byte_0763tracksRegLiveness: true764body: |765 bb.0:766 liveins: $vgpr0767 ; CHECK-LABEL: name: op_select_byte_3_instr_select_byte_0768 ; CHECK: liveins: $vgpr0769 ; CHECK-NEXT: {{ $}}770 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0771 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec772 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 24, 8, implicit $exec773 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 0, implicit $exec774 ; CHECK-NEXT: S_ENDPGM 0775 %1:vgpr_32 = COPY $vgpr0776 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec777 %3:vgpr_32 = V_BFE_I32_e64 %2, 24, 8, implicit $exec /* Select BYTE_3 */778 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 0, implicit $exec779 780 S_ENDPGM 0781...782 783---784name: op_select_word_1_instr_select_dword785tracksRegLiveness: true786body: |787 bb.0:788 liveins: $vgpr0789 ; CHECK-LABEL: name: op_select_word_1_instr_select_dword790 ; CHECK: liveins: $vgpr0791 ; CHECK-NEXT: {{ $}}792 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0793 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec794 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec795 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 5, implicit $exec796 ; CHECK-NEXT: S_ENDPGM 0797 %1:vgpr_32 = COPY $vgpr0798 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec799 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */800 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 6, implicit $exec801 802 S_ENDPGM 0803...804 805---806name: op_select_word_1_instr_select_word_1807tracksRegLiveness: true808body: |809 bb.0:810 liveins: $vgpr0811 ; CHECK-LABEL: name: op_select_word_1_instr_select_word_1812 ; CHECK: liveins: $vgpr0813 ; CHECK-NEXT: {{ $}}814 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0815 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec816 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec817 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 5, implicit $exec818 ; CHECK-NEXT: S_ENDPGM 0819 %1:vgpr_32 = COPY $vgpr0820 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec821 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */822 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 5, implicit $exec823 824 S_ENDPGM 0825...826 827---828name: op_select_word_1_instr_select_word_0829tracksRegLiveness: true830body: |831 bb.0:832 liveins: $vgpr0833 ; CHECK-LABEL: name: op_select_word_1_instr_select_word_0834 ; CHECK: liveins: $vgpr0835 ; CHECK-NEXT: {{ $}}836 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0837 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec838 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec839 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 5, implicit $exec840 ; CHECK-NEXT: S_ENDPGM 0841 %1:vgpr_32 = COPY $vgpr0842 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec843 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */844 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 4, implicit $exec845 846 S_ENDPGM 0847...848 849---850name: op_select_word_1_instr_select_byte_3851tracksRegLiveness: true852body: |853 bb.0:854 liveins: $vgpr0855 ; CHECK-LABEL: name: op_select_word_1_instr_select_byte_3856 ; CHECK: liveins: $vgpr0857 ; CHECK-NEXT: {{ $}}858 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0859 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec860 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec861 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 3, implicit $exec862 ; CHECK-NEXT: S_ENDPGM 0863 %1:vgpr_32 = COPY $vgpr0864 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec865 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */866 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 3, implicit $exec867 868 S_ENDPGM 0869...870 871---872name: op_select_word_1_instr_select_byte_2873tracksRegLiveness: true874body: |875 bb.0:876 liveins: $vgpr0877 ; CHECK-LABEL: name: op_select_word_1_instr_select_byte_2878 ; CHECK: liveins: $vgpr0879 ; CHECK-NEXT: {{ $}}880 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0881 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec882 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec883 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 0, [[V_BFE_I32_e64_]], 0, 1, 0, 6, 2, implicit $exec884 ; CHECK-NEXT: S_ENDPGM 0885 %1:vgpr_32 = COPY $vgpr0886 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec887 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */888 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 2, implicit $exec889 890 S_ENDPGM 0891...892 893---894name: op_select_word_1_instr_select_byte_1895tracksRegLiveness: true896body: |897 bb.0:898 liveins: $vgpr0899 ; CHECK-LABEL: name: op_select_word_1_instr_select_byte_1900 ; CHECK: liveins: $vgpr0901 ; CHECK-NEXT: {{ $}}902 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0903 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec904 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec905 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 3, implicit $exec906 ; CHECK-NEXT: S_ENDPGM 0907 %1:vgpr_32 = COPY $vgpr0908 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec909 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */910 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 1, implicit $exec911 912 S_ENDPGM 0913...914 915---916name: op_select_word_1_instr_select_byte_0917tracksRegLiveness: true918body: |919 bb.0:920 liveins: $vgpr0921 ; CHECK-LABEL: name: op_select_word_1_instr_select_byte_0922 ; CHECK: liveins: $vgpr0923 ; CHECK-NEXT: {{ $}}924 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0925 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec926 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 16, 16, implicit $exec927 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 2, implicit $exec928 ; CHECK-NEXT: S_ENDPGM 0929 %1:vgpr_32 = COPY $vgpr0930 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec931 %3:vgpr_32 = V_BFE_I32_e64 %2, 16, 16, implicit $exec /* Select WORD_1 */932 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 0, implicit $exec933 934 S_ENDPGM 0935...936 937---938name: op_select_dword_instr_select_dword939tracksRegLiveness: true940body: |941 bb.0:942 liveins: $vgpr0943 ; CHECK-LABEL: name: op_select_dword_instr_select_dword944 ; CHECK: liveins: $vgpr0945 ; CHECK-NEXT: {{ $}}946 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0947 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec948 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec949 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 6, implicit $exec950 ; CHECK-NEXT: S_ENDPGM 0951 %1:vgpr_32 = COPY $vgpr0952 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec953 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */954 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 6, implicit $exec955 956 S_ENDPGM 0957...958 959---960name: op_select_dword_instr_select_word_1961tracksRegLiveness: true962body: |963 bb.0:964 liveins: $vgpr0965 ; CHECK-LABEL: name: op_select_dword_instr_select_word_1966 ; CHECK: liveins: $vgpr0967 ; CHECK-NEXT: {{ $}}968 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0969 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec970 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec971 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 5, implicit $exec972 ; CHECK-NEXT: S_ENDPGM 0973 %1:vgpr_32 = COPY $vgpr0974 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec975 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */976 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 5, implicit $exec977 978 S_ENDPGM 0979...980 981---982name: op_select_dword_instr_select_word_0983tracksRegLiveness: true984body: |985 bb.0:986 liveins: $vgpr0987 ; CHECK-LABEL: name: op_select_dword_instr_select_word_0988 ; CHECK: liveins: $vgpr0989 ; CHECK-NEXT: {{ $}}990 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0991 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec992 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec993 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 4, implicit $exec994 ; CHECK-NEXT: S_ENDPGM 0995 %1:vgpr_32 = COPY $vgpr0996 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec997 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */998 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 4, implicit $exec999 1000 S_ENDPGM 01001...1002 1003---1004name: op_select_dword_instr_select_byte_31005tracksRegLiveness: true1006body: |1007 bb.0:1008 liveins: $vgpr01009 ; CHECK-LABEL: name: op_select_dword_instr_select_byte_31010 ; CHECK: liveins: $vgpr01011 ; CHECK-NEXT: {{ $}}1012 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01013 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec1014 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec1015 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 3, implicit $exec1016 ; CHECK-NEXT: S_ENDPGM 01017 %1:vgpr_32 = COPY $vgpr01018 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec1019 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */1020 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 3, implicit $exec1021 1022 S_ENDPGM 01023...1024 1025---1026name: op_select_dword_instr_select_byte_21027tracksRegLiveness: true1028body: |1029 bb.0:1030 liveins: $vgpr01031 ; CHECK-LABEL: name: op_select_dword_instr_select_byte_21032 ; CHECK: liveins: $vgpr01033 ; CHECK-NEXT: {{ $}}1034 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01035 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec1036 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec1037 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 2, implicit $exec1038 ; CHECK-NEXT: S_ENDPGM 01039 %1:vgpr_32 = COPY $vgpr01040 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec1041 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */1042 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 2, implicit $exec1043 1044 S_ENDPGM 01045...1046 1047---1048name: op_select_dword_instr_select_byte_11049tracksRegLiveness: true1050body: |1051 bb.0:1052 liveins: $vgpr01053 ; CHECK-LABEL: name: op_select_dword_instr_select_byte_11054 ; CHECK: liveins: $vgpr01055 ; CHECK-NEXT: {{ $}}1056 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01057 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec1058 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec1059 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 1, implicit $exec1060 ; CHECK-NEXT: S_ENDPGM 01061 %1:vgpr_32 = COPY $vgpr01062 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec1063 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */1064 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 1, implicit $exec1065 1066 S_ENDPGM 01067...1068 1069---1070name: op_select_dword_instr_select_byte_01071tracksRegLiveness: true1072body: |1073 bb.0:1074 liveins: $vgpr01075 ; CHECK-LABEL: name: op_select_dword_instr_select_byte_01076 ; CHECK: liveins: $vgpr01077 ; CHECK-NEXT: {{ $}}1078 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01079 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[COPY]], 0, [[COPY]], 0, 1, 0, 5, 0, implicit $exec1080 ; CHECK-NEXT: [[V_BFE_I32_e64_:%[0-9]+]]:vgpr_32 = V_BFE_I32_e64 [[V_LSHRREV_B32_sdwa]], 0, 32, implicit $exec1081 ; CHECK-NEXT: [[V_LSHRREV_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_sdwa 0, [[V_LSHRREV_B32_sdwa]], 16, [[V_LSHRREV_B32_sdwa]], 0, 1, 0, 6, 0, implicit $exec1082 ; CHECK-NEXT: S_ENDPGM 01083 %1:vgpr_32 = COPY $vgpr01084 %2:vgpr_32 = V_LSHRREV_B32_sdwa 0, %1, 0, %1, 0, 1, 0, 5, 0, implicit $exec1085 %3:vgpr_32 = V_BFE_I32_e64 %2, 0, 32, implicit $exec /* Select DWORD */1086 %4:vgpr_32 = V_LSHRREV_B32_sdwa 0, %2, 0, %3, 0, 1, 0, 6, 0, implicit $exec1087 1088 S_ENDPGM 01089...1090