838 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -verify-machineinstrs -o - | FileCheck %s3 4---5name: or_s32_ss6legalized: true7 8body: |9 bb.0:10 liveins: $sgpr0, $sgpr111 ; CHECK-LABEL: name: or_s32_ss12 ; CHECK: liveins: $sgpr0, $sgpr113 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr015 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr116 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[COPY]], [[COPY1]]17 %0:_(s32) = COPY $sgpr018 %1:_(s32) = COPY $sgpr119 %2:_(s32) = G_OR %0, %120...21 22---23name: or_s32_sv24legalized: true25 26body: |27 bb.0:28 liveins: $sgpr0, $vgpr029 ; CHECK-LABEL: name: or_s32_sv30 ; CHECK: liveins: $sgpr0, $vgpr031 ; CHECK-NEXT: {{ $}}32 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr033 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr034 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)35 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[COPY2]], [[COPY1]]36 %0:_(s32) = COPY $sgpr037 %1:_(s32) = COPY $vgpr038 %2:_(s32) = G_OR %0, %139...40 41---42name: or_s32_vs43legalized: true44 45body: |46 bb.0:47 liveins: $sgpr0, $vgpr048 ; CHECK-LABEL: name: or_s32_vs49 ; CHECK: liveins: $sgpr0, $vgpr050 ; CHECK-NEXT: {{ $}}51 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr052 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr053 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)54 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[COPY]], [[COPY2]]55 %0:_(s32) = COPY $vgpr056 %1:_(s32) = COPY $sgpr057 %2:_(s32) = G_OR %0, %158...59 60---61name: or_s32_vv62legalized: true63 64body: |65 bb.0:66 liveins: $vgpr0, $vgpr167 ; CHECK-LABEL: name: or_s32_vv68 ; CHECK: liveins: $vgpr0, $vgpr169 ; CHECK-NEXT: {{ $}}70 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr071 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr172 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[COPY]], [[COPY1]]73 %0:_(s32) = COPY $vgpr074 %1:_(s32) = COPY $vgpr175 %2:_(s32) = G_OR %0, %176...77 78---79name: or_i1_scc_scc80legalized: true81 82body: |83 bb.0:84 liveins: $sgpr0, $sgpr185 ; CHECK-LABEL: name: or_i1_scc_scc86 ; CHECK: liveins: $sgpr0, $sgpr187 ; CHECK-NEXT: {{ $}}88 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr089 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr190 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 091 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]92 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]93 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[ICMP]], [[ICMP1]]94 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s32)95 %0:_(s32) = COPY $sgpr096 %1:_(s32) = COPY $sgpr197 %2:_(s32) = G_CONSTANT i32 098 %4:_(s1) = G_ICMP intpred(ne), %0, %299 %5:_(s1) = G_ICMP intpred(ne), %1, %2100 %6:_(s1) = G_OR %4, %5101 %7:_(s32) = G_ANYEXT %6102 S_NOP 0, implicit %7103...104 105---106name: or_i1_vcc_vcc107legalized: true108 109body: |110 bb.0:111 liveins: $vgpr0, $vgpr1112 ; CHECK-LABEL: name: or_i1_vcc_vcc113 ; CHECK: liveins: $vgpr0, $vgpr1114 ; CHECK-NEXT: {{ $}}115 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0116 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1117 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0118 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)119 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY2]]120 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)121 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY3]]122 ; CHECK-NEXT: [[OR:%[0-9]+]]:vcc(s1) = G_OR [[ICMP]], [[ICMP1]]123 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s1)124 %0:_(s32) = COPY $vgpr0125 %1:_(s32) = COPY $vgpr1126 %2:_(s32) = G_CONSTANT i32 0127 %4:_(s1) = G_ICMP intpred(ne), %0, %2128 %5:_(s1) = G_ICMP intpred(ne), %1, %2129 %6:_(s1) = G_OR %4, %5130 S_NOP 0, implicit %6131...132 133---134name: or_i1_scc_vcc135legalized: true136 137body: |138 bb.0:139 liveins: $sgpr0, $vgpr0140 ; CHECK-LABEL: name: or_i1_scc_vcc141 ; CHECK: liveins: $sgpr0, $vgpr0142 ; CHECK-NEXT: {{ $}}143 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0144 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0145 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0146 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]147 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)148 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]149 ; CHECK-NEXT: [[AMDGPU_COPY_VCC_SCC:%[0-9]+]]:vcc(s1) = G_AMDGPU_COPY_VCC_SCC [[ICMP]](s32)150 ; CHECK-NEXT: [[OR:%[0-9]+]]:vcc(s1) = G_OR [[AMDGPU_COPY_VCC_SCC]], [[ICMP1]]151 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s1)152 %0:_(s32) = COPY $sgpr0153 %1:_(s32) = COPY $vgpr0154 %2:_(s32) = G_CONSTANT i32 0155 %4:_(s1) = G_ICMP intpred(ne), %0, %2156 %5:_(s1) = G_ICMP intpred(ne), %1, %2157 %6:_(s1) = G_OR %4, %5158 S_NOP 0, implicit %6159...160 161---162name: or_i1_sgpr_trunc_sgpr_trunc163legalized: true164body: |165 bb.0.entry:166 liveins: $sgpr0, $sgpr1167 ; CHECK-LABEL: name: or_i1_sgpr_trunc_sgpr_trunc168 ; CHECK: liveins: $sgpr0, $sgpr1169 ; CHECK-NEXT: {{ $}}170 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0171 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1172 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[COPY]], [[COPY1]]173 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s32)174 %0:_(s32) = COPY $sgpr0175 %1:_(s32) = COPY $sgpr1176 %2:_(s1) = G_TRUNC %0177 %3:_(s1) = G_TRUNC %1178 %4:_(s1) = G_OR %2, %3179 %5:_(s32) = G_ANYEXT %4180 S_NOP 0, implicit %5181 182...183 184---185name: or_i1_trunc_scc186legalized: true187body: |188 bb.0.entry:189 liveins: $sgpr0, $sgpr1190 ; CHECK-LABEL: name: or_i1_trunc_scc191 ; CHECK: liveins: $sgpr0, $sgpr1192 ; CHECK-NEXT: {{ $}}193 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0194 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1195 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]196 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s32) = G_OR [[COPY]], [[ICMP]]197 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s32)198 %0:_(s32) = COPY $sgpr0199 %1:_(s32) = COPY $sgpr1200 %2:_(s1) = G_TRUNC %0201 %3:_(s1) = G_ICMP intpred(ne), %0, %1202 %4:_(s1) = G_OR %2, %3203 %5:_(s32) = G_ANYEXT %4204 S_NOP 0, implicit %5205...206 207---208name: or_i1_s_trunc_vcc209legalized: true210body: |211 bb.0.entry:212 liveins: $sgpr0, $vgpr0213 ; CHECK-LABEL: name: or_i1_s_trunc_vcc214 ; CHECK: liveins: $sgpr0, $vgpr0215 ; CHECK-NEXT: {{ $}}216 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0217 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0218 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)219 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY1]]220 ; CHECK-NEXT: [[AMDGPU_COPY_VCC_SCC:%[0-9]+]]:vcc(s1) = G_AMDGPU_COPY_VCC_SCC [[COPY]](s32)221 ; CHECK-NEXT: [[OR:%[0-9]+]]:vcc(s1) = G_OR [[AMDGPU_COPY_VCC_SCC]], [[ICMP]]222 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s1)223 %0:_(s32) = COPY $sgpr0224 %1:_(s32) = COPY $vgpr0225 %2:_(s1) = G_TRUNC %0226 %3:_(s1) = G_ICMP intpred(ne), %0, %1227 %4:_(s1) = G_OR %2, %3228 S_NOP 0, implicit %4229...230 231---232name: or_s64_ss233legalized: true234 235body: |236 bb.0:237 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3238 ; CHECK-LABEL: name: or_s64_ss239 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3240 ; CHECK-NEXT: {{ $}}241 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1242 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3243 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s64) = G_OR [[COPY]], [[COPY1]]244 %0:_(s64) = COPY $sgpr0_sgpr1245 %1:_(s64) = COPY $sgpr2_sgpr3246 %2:_(s64) = G_OR %0, %1247...248 249---250name: or_s64_sv251legalized: true252 253body: |254 bb.0:255 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1256 ; CHECK-LABEL: name: or_s64_sv257 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1258 ; CHECK-NEXT: {{ $}}259 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1260 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1261 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)262 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)263 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)264 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]265 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]266 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)267 %0:_(s64) = COPY $sgpr0_sgpr1268 %1:_(s64) = COPY $vgpr0_vgpr1269 %2:_(s64) = G_OR %0, %1270...271 272---273name: or_s64_vs274legalized: true275 276body: |277 bb.0:278 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1279 ; CHECK-LABEL: name: or_s64_vs280 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1281 ; CHECK-NEXT: {{ $}}282 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1283 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1284 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)285 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)286 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)287 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]288 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]289 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)290 %0:_(s64) = COPY $vgpr0_vgpr1291 %1:_(s64) = COPY $sgpr0_sgpr1292 %2:_(s64) = G_OR %0, %1293...294 295---296name: or_s64_vv297legalized: true298 299body: |300 bb.0:301 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3302 ; CHECK-LABEL: name: or_s64_vv303 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3304 ; CHECK-NEXT: {{ $}}305 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1306 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3307 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)308 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)309 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]310 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]311 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)312 %0:_(s64) = COPY $vgpr0_vgpr1313 %1:_(s64) = COPY $vgpr2_vgpr3314 %2:_(s64) = G_OR %0, %1315...316 317---318name: or_s64_vv_flags319legalized: true320 321body: |322 bb.0:323 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3324 ; CHECK-LABEL: name: or_s64_vv_flags325 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3326 ; CHECK-NEXT: {{ $}}327 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1328 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3329 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)330 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)331 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = disjoint G_OR [[UV]], [[UV2]]332 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = disjoint G_OR [[UV1]], [[UV3]]333 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)334 %0:_(s64) = COPY $vgpr0_vgpr1335 %1:_(s64) = COPY $vgpr2_vgpr3336 %2:_(s64) = disjoint G_OR %0, %1337...338 339---340name: or_s64_vv_user341legalized: true342 343body: |344 bb.0:345 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3346 ; CHECK-LABEL: name: or_s64_vv_user347 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3348 ; CHECK-NEXT: {{ $}}349 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1350 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3351 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64)352 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64)353 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]354 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]355 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)356 ; CHECK-NEXT: S_NOP 0, implicit [[MV]](s64)357 %0:_(s64) = COPY $vgpr0_vgpr1358 %1:_(s64) = COPY $vgpr2_vgpr3359 %2:_(s64) = G_OR %0, %1360 S_NOP 0, implicit %2361...362---363name: or_s64_ss_ss_merge364legalized: true365 366body: |367 bb.0:368 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3369 ; CHECK-LABEL: name: or_s64_ss_ss_merge370 ; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3371 ; CHECK-NEXT: {{ $}}372 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0373 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1374 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2375 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3376 ; CHECK-NEXT: [[MV:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)377 ; CHECK-NEXT: [[MV1:%[0-9]+]]:sgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)378 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(s64) = G_OR [[MV]], [[MV1]]379 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](s64)380 %0:_(s32) = COPY $sgpr0381 %1:_(s32) = COPY $sgpr1382 %2:_(s32) = COPY $sgpr2383 %3:_(s32) = COPY $sgpr3384 %4:_(s64) = G_MERGE_VALUES %0, %1385 %5:_(s64) = G_MERGE_VALUES %2, %3386 %6:_(s64) = G_OR %4, %5387 S_NOP 0, implicit %6388...389 390---391name: or_s64_vv_vv_merge392legalized: true393 394body: |395 bb.0:396 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3397 ; CHECK-LABEL: name: or_s64_vv_vv_merge398 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3399 ; CHECK-NEXT: {{ $}}400 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0401 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1402 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2403 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3404 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)405 ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)406 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)407 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)408 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]409 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]410 ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)411 ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)412 %0:_(s32) = COPY $vgpr0413 %1:_(s32) = COPY $vgpr1414 %2:_(s32) = COPY $vgpr2415 %3:_(s32) = COPY $vgpr3416 %4:_(s64) = G_MERGE_VALUES %0, %1417 %5:_(s64) = G_MERGE_VALUES %2, %3418 %6:_(s64) = G_OR %4, %5419 S_NOP 0, implicit %6420...421 422---423name: or_s64_s_sv_merge424legalized: true425 426body: |427 bb.0:428 liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0429 ; CHECK-LABEL: name: or_s64_s_sv_merge430 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0431 ; CHECK-NEXT: {{ $}}432 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1433 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2434 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0435 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)436 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY2]](s32)437 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)438 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)439 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)440 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]441 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]442 ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)443 ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)444 %0:_(s64) = COPY $sgpr0_sgpr1445 %1:_(s32) = COPY $sgpr2446 %2:_(s32) = COPY $vgpr0447 %3:_(s64) = G_MERGE_VALUES %1, %2448 %4:_(s64) = G_OR %0, %3449 S_NOP 0, implicit %4450...451 452---453name: or_s64_s_vs_merge454legalized: true455 456body: |457 bb.0:458 liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0459 ; CHECK-LABEL: name: or_s64_s_vs_merge460 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2, $vgpr0461 ; CHECK-NEXT: {{ $}}462 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1463 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr2464 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0465 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)466 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)467 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)468 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)469 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)470 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]471 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]472 ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)473 ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)474 %0:_(s64) = COPY $sgpr0_sgpr1475 %1:_(s32) = COPY $sgpr2476 %2:_(s32) = COPY $vgpr0477 %3:_(s64) = G_MERGE_VALUES %2, %1478 %4:_(s64) = G_OR %0, %3479 S_NOP 0, implicit %4480...481 482---483name: or_s64_sv_sv_merge484legalized: true485 486body: |487 bb.0:488 liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1489 ; CHECK-LABEL: name: or_s64_sv_sv_merge490 ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1491 ; CHECK-NEXT: {{ $}}492 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0493 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1494 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0495 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1496 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)497 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)498 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)499 ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY5]](s32), [[COPY3]](s32)500 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)501 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)502 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]503 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]504 ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)505 ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)506 %0:_(s32) = COPY $sgpr0507 %1:_(s32) = COPY $sgpr1508 %2:_(s32) = COPY $vgpr0509 %3:_(s32) = COPY $vgpr1510 %4:_(s64) = G_MERGE_VALUES %0, %2511 %5:_(s64) = G_MERGE_VALUES %1, %3512 %6:_(s64) = G_OR %4, %5513 S_NOP 0, implicit %6514...515 516---517name: or_s64_sv_vs_merge518legalized: true519 520body: |521 bb.0:522 liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1523 ; CHECK-LABEL: name: or_s64_sv_vs_merge524 ; CHECK: liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1525 ; CHECK-NEXT: {{ $}}526 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0527 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1528 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0529 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1530 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)531 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY2]](s32)532 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)533 ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[COPY3]](s32), [[COPY5]](s32)534 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)535 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV1]](s64)536 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]537 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]538 ; CHECK-NEXT: [[MV2:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)539 ; CHECK-NEXT: S_NOP 0, implicit [[MV2]](s64)540 %0:_(s32) = COPY $sgpr0541 %1:_(s32) = COPY $sgpr1542 %2:_(s32) = COPY $vgpr0543 %3:_(s32) = COPY $vgpr1544 %4:_(s64) = G_MERGE_VALUES %0, %2545 %5:_(s64) = G_MERGE_VALUES %3, %1546 %6:_(s64) = G_OR %4, %5547 S_NOP 0, implicit %6548...549 550---551name: or_chain_s64_sv552legalized: true553 554body: |555 bb.0:556 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1557 ; CHECK-LABEL: name: or_chain_s64_sv558 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1559 ; CHECK-NEXT: {{ $}}560 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1561 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3562 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1563 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64)564 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64)565 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64)566 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]567 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]568 ; CHECK-NEXT: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)569 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)570 ; CHECK-NEXT: [[UV4:%[0-9]+]]:vgpr(s32), [[UV5:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY4]](s64)571 ; CHECK-NEXT: [[UV6:%[0-9]+]]:vgpr(s32), [[UV7:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[MV]](s64)572 ; CHECK-NEXT: [[OR2:%[0-9]+]]:vgpr(s32) = G_OR [[UV4]], [[UV6]]573 ; CHECK-NEXT: [[OR3:%[0-9]+]]:vgpr(s32) = G_OR [[UV5]], [[UV7]]574 ; CHECK-NEXT: [[MV1:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[OR2]](s32), [[OR3]](s32)575 ; CHECK-NEXT: S_NOP 0, implicit [[MV1]](s64)576 %0:_(s64) = COPY $sgpr0_sgpr1577 %1:_(s64) = COPY $sgpr2_sgpr3578 %2:_(s64) = COPY $vgpr0_vgpr1579 %3:_(s64) = G_OR %0, %2580 %4:_(s64) = G_OR %1, %3581 S_NOP 0, implicit %4582...583 584---585name: or_v2i32_ss586legalized: true587 588body: |589 bb.0:590 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3591 ; CHECK-LABEL: name: or_v2i32_ss592 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3593 ; CHECK-NEXT: {{ $}}594 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1595 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3596 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(<2 x s32>) = G_OR [[COPY]], [[COPY1]]597 ; CHECK-NEXT: S_NOP 0, implicit [[OR]](<2 x s32>)598 %0:_(<2 x s32>) = COPY $sgpr0_sgpr1599 %1:_(<2 x s32>) = COPY $sgpr2_sgpr3600 %2:_(<2 x s32>) = G_OR %0, %1601 S_NOP 0, implicit %2602...603 604---605name: or_v2i32_sv606legalized: true607 608body: |609 bb.0:610 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1611 ; CHECK-LABEL: name: or_v2i32_sv612 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1613 ; CHECK-NEXT: {{ $}}614 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1615 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1616 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY]](<2 x s32>)617 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)618 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)619 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]620 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]621 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[OR]](s32), [[OR1]](s32)622 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)623 %0:_(<2 x s32>) = COPY $sgpr0_sgpr1624 %1:_(<2 x s32>) = COPY $vgpr0_vgpr1625 %2:_(<2 x s32>) = G_OR %0, %1626 S_NOP 0, implicit %2627...628 629---630name: or_v2i32_vs631legalized: true632 633body: |634 bb.0:635 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1636 637 ; CHECK-LABEL: name: or_v2i32_vs638 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1639 ; CHECK-NEXT: {{ $}}640 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1641 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1642 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY [[COPY1]](<2 x s32>)643 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)644 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)645 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]646 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]647 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[OR]](s32), [[OR1]](s32)648 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)649 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1650 %1:_(<2 x s32>) = COPY $sgpr0_sgpr1651 %2:_(<2 x s32>) = G_OR %0, %1652 S_NOP 0, implicit %2653...654 655---656name: or_v2i32_vv657legalized: true658 659body: |660 bb.0:661 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3662 ; CHECK-LABEL: name: or_v2i32_vv663 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3664 ; CHECK-NEXT: {{ $}}665 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1666 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3667 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)668 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)669 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(s32) = G_OR [[UV]], [[UV2]]670 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(s32) = G_OR [[UV1]], [[UV3]]671 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[OR]](s32), [[OR1]](s32)672 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>)673 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1674 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3675 %2:_(<2 x s32>) = G_OR %0, %1676 S_NOP 0, implicit %2677...678 679---680name: or_v4s16_ss681legalized: true682 683body: |684 bb.0:685 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3686 ; CHECK-LABEL: name: or_v4s16_ss687 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3688 ; CHECK-NEXT: {{ $}}689 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1690 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3691 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(<4 x s16>) = G_OR [[COPY]], [[COPY1]]692 %0:_(<4 x s16>) = COPY $sgpr0_sgpr1693 %1:_(<4 x s16>) = COPY $sgpr2_sgpr3694 %2:_(<4 x s16>) = G_OR %0, %1695...696 697---698name: or_v4s16_sv699legalized: true700 701body: |702 bb.0:703 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1704 ; CHECK-LABEL: name: or_v4s16_sv705 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1706 ; CHECK-NEXT: {{ $}}707 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1708 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1709 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY]](<4 x s16>)710 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)711 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)712 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV]], [[UV2]]713 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV1]], [[UV3]]714 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[OR]](<2 x s16>), [[OR1]](<2 x s16>)715 %0:_(<4 x s16>) = COPY $sgpr0_sgpr1716 %1:_(<4 x s16>) = COPY $vgpr0_vgpr1717 %2:_(<4 x s16>) = G_OR %0, %1718...719 720---721name: or_v4s16_vs722legalized: true723 724body: |725 bb.0:726 liveins: $sgpr0_sgpr1, $vgpr0_vgpr1727 ; CHECK-LABEL: name: or_v4s16_vs728 ; CHECK: liveins: $sgpr0_sgpr1, $vgpr0_vgpr1729 ; CHECK-NEXT: {{ $}}730 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1731 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1732 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY [[COPY1]](<4 x s16>)733 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)734 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>)735 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV]], [[UV2]]736 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV1]], [[UV3]]737 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[OR]](<2 x s16>), [[OR1]](<2 x s16>)738 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1739 %1:_(<4 x s16>) = COPY $sgpr0_sgpr1740 %2:_(<4 x s16>) = G_OR %0, %1741...742 743---744name: or_v4s16_vv745legalized: true746 747body: |748 bb.0:749 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3750 ; CHECK-LABEL: name: or_v4s16_vv751 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3752 ; CHECK-NEXT: {{ $}}753 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1754 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3755 ; CHECK-NEXT: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)756 ; CHECK-NEXT: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)757 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV]], [[UV2]]758 ; CHECK-NEXT: [[OR1:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[UV1]], [[UV3]]759 ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[OR]](<2 x s16>), [[OR1]](<2 x s16>)760 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1761 %1:_(<4 x s16>) = COPY $vgpr2_vgpr3762 %2:_(<4 x s16>) = G_OR %0, %1763...764 765---766name: or_v2s16_ss767legalized: true768 769body: |770 bb.0:771 liveins: $sgpr0, $sgpr1772 ; CHECK-LABEL: name: or_v2s16_ss773 ; CHECK: liveins: $sgpr0, $sgpr1774 ; CHECK-NEXT: {{ $}}775 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0776 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1777 ; CHECK-NEXT: [[OR:%[0-9]+]]:sgpr(<2 x s16>) = G_OR [[COPY]], [[COPY1]]778 %0:_(<2 x s16>) = COPY $sgpr0779 %1:_(<2 x s16>) = COPY $sgpr1780 %2:_(<2 x s16>) = G_OR %0, %1781...782 783---784name: or_v2s16_sv785legalized: true786 787body: |788 bb.0:789 liveins: $sgpr0, $vgpr0790 ; CHECK-LABEL: name: or_v2s16_sv791 ; CHECK: liveins: $sgpr0, $vgpr0792 ; CHECK-NEXT: {{ $}}793 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0794 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0795 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)796 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[COPY2]], [[COPY1]]797 %0:_(<2 x s16>) = COPY $sgpr0798 %1:_(<2 x s16>) = COPY $vgpr0799 %2:_(<2 x s16>) = G_OR %0, %1800...801 802---803name: or_v2s16_vs804legalized: true805 806body: |807 bb.0:808 liveins: $sgpr0, $vgpr0809 ; CHECK-LABEL: name: or_v2s16_vs810 ; CHECK: liveins: $sgpr0, $vgpr0811 ; CHECK-NEXT: {{ $}}812 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0813 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0814 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)815 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[COPY]], [[COPY2]]816 %0:_(<2 x s16>) = COPY $vgpr0817 %1:_(<2 x s16>) = COPY $sgpr0818 %2:_(<2 x s16>) = G_OR %0, %1819...820 821---822name: or_v2s16_vv823legalized: true824 825body: |826 bb.0:827 liveins: $vgpr0, $vgpr1828 ; CHECK-LABEL: name: or_v2s16_vv829 ; CHECK: liveins: $vgpr0, $vgpr1830 ; CHECK-NEXT: {{ $}}831 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0832 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1833 ; CHECK-NEXT: [[OR:%[0-9]+]]:vgpr(<2 x s16>) = G_OR [[COPY]], [[COPY1]]834 %0:_(<2 x s16>) = COPY $vgpr0835 %1:_(<2 x s16>) = COPY $vgpr1836 %2:_(<2 x s16>) = G_OR %0, %1837...838