brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.1 KiB · e07d635 Raw
473 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE64 %s3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s4# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s5 6---7 8name:            copy9legalized:       true10regBankSelected: true11 12 13body: |14  bb.0:15    liveins: $sgpr2_sgpr316 17    ; WAVE64-LABEL: name: copy18    ; WAVE64: liveins: $sgpr2_sgpr319    ; WAVE64-NEXT: {{  $}}20    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr321    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[COPY]]22    ; WAVE64-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF23    ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY1]], [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)24    ;25    ; WAVE32-LABEL: name: copy26    ; WAVE32: liveins: $sgpr2_sgpr327    ; WAVE32-NEXT: {{  $}}28    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec_xnull = COPY $sgpr2_sgpr329    ; WAVE32-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF30    ; WAVE32-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec31    ; WAVE32-NEXT: GLOBAL_STORE_DWORD_SADDR [[V_MOV_B32_e32_]], [[DEF]], [[COPY]], 0, 0, implicit $exec :: (store (s32), addrspace 1)32    %0:sgpr(p1) = COPY $sgpr2_sgpr333    %1:vgpr(p1) = COPY %034    %2:vgpr(s32) = G_IMPLICIT_DEF35    G_STORE %2, %1 :: (store (s32), addrspace 1)36...37---38 39name:            copy_vcc_bank_sgpr_bank40legalized:       true41regBankSelected: true42 43body: |44  bb.0:45    liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc46 47    ; WAVE64-LABEL: name: copy_vcc_bank_sgpr_bank48    ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc49    ; WAVE64-NEXT: {{  $}}50    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr151    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr252    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr353    ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc54    ; WAVE64-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc55    ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec56    ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec57    ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)58    ;59    ; WAVE32-LABEL: name: copy_vcc_bank_sgpr_bank60    ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc61    ; WAVE32-NEXT: {{  $}}62    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr163    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr264    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr365    ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc66    ; WAVE32-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc67    ; WAVE32-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec68    ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec69    ; WAVE32-NEXT: GLOBAL_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec :: (store (s32), addrspace 1)70    %0:vgpr(p1) = COPY $vgpr0_vgpr171    %1:vgpr(s32) = COPY $vgpr272    %2:vgpr(s32) = COPY $vgpr373    %3:sgpr(s1) = COPY $scc74    %4:vcc(s1) = COPY %375    %5:vgpr(s32) = G_SELECT %4, %1, %276    G_STORE %5, %0 :: (store (s32), addrspace 1)77...78---79 80name:            copy_vcc_bank_sgpr_bank_2_uses81legalized:       true82regBankSelected: true83 84body: |85  bb.0:86    liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc87 88    ; WAVE64-LABEL: name: copy_vcc_bank_sgpr_bank_2_uses89    ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc90    ; WAVE64-NEXT: {{  $}}91    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr192    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr293    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr394    ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc95    ; WAVE64-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc96    ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec97    ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec98    ; WAVE64-NEXT: [[S_AND_B32_1:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc99    ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_1]], implicit $exec100    ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_1]], implicit $exec101    ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)102    ;103    ; WAVE32-LABEL: name: copy_vcc_bank_sgpr_bank_2_uses104    ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc105    ; WAVE32-NEXT: {{  $}}106    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1107    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2108    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3109    ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc110    ; WAVE32-NEXT: [[COPY4:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[COPY3]]111    ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY4]], implicit $exec112    ; WAVE32-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY3]], implicit-def dead $scc113    ; WAVE32-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec114    ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec115    ; WAVE32-NEXT: GLOBAL_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, implicit $exec :: (store (s32), addrspace 1)116    %0:vgpr(p1) = COPY $vgpr0_vgpr1117    %1:vgpr(s32) = COPY $vgpr2118    %2:vgpr(s32) = COPY $vgpr3119    %3:sgpr(s1) = COPY $scc120    %4:vcc(s1) = COPY %3121    %5:vgpr(s32) = G_SELECT %4, %1, %2122    %6:vcc(s1) = COPY %3123    %7:vgpr(s32) = G_SELECT %6, %1, %5124    G_STORE %7, %0 :: (store (s32), addrspace 1)125...126 127---128 129name:            copy_vcc_bank_scc_physreg130legalized:       true131regBankSelected: true132 133body: |134  bb.0:135    liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc136 137    ; WAVE64-LABEL: name: copy_vcc_bank_scc_physreg138    ; WAVE64: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc139    ; WAVE64-NEXT: {{  $}}140    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1141    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2142    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3143    ; WAVE64-NEXT: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY $scc144    ; WAVE64-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY3]], implicit $exec145    ; WAVE64-NEXT: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)146    ;147    ; WAVE32-LABEL: name: copy_vcc_bank_scc_physreg148    ; WAVE32: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc149    ; WAVE32-NEXT: {{  $}}150    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1151    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2152    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3153    ; WAVE32-NEXT: [[COPY3:%[0-9]+]]:sreg_32_xm0_xexec = COPY $scc154    ; WAVE32-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY3]], implicit $exec155    ; WAVE32-NEXT: GLOBAL_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, implicit $exec :: (store (s32), addrspace 1)156    %0:vgpr(p1) = COPY $vgpr0_vgpr1157    %1:vgpr(s32) = COPY $vgpr2158    %2:vgpr(s32) = COPY $vgpr3159    %3:vcc(s1) = COPY $scc160    %5:vgpr(s32) = G_SELECT %3, %1, %2161    G_STORE %5, %0 :: (store (s32), addrspace 1)162...163---164 165name:            copy_sgpr_no_type166legalized:       true167regBankSelected: true168 169 170body: |171  bb.0:172    liveins: $sgpr0173    ; WAVE64-LABEL: name: copy_sgpr_no_type174    ; WAVE64: liveins: $sgpr0175    ; WAVE64-NEXT: {{  $}}176    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0177    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]178    ;179    ; WAVE32-LABEL: name: copy_sgpr_no_type180    ; WAVE32: liveins: $sgpr0181    ; WAVE32-NEXT: {{  $}}182    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0183    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]184    %0:sreg_32_xm0 = COPY $sgpr0185    %1:sreg_32_xm0 = COPY %0186    S_ENDPGM 0, implicit %1187 188...189 190---191 192name:            copy_vgpr_no_type193legalized:       true194regBankSelected: true195 196 197body: |198  bb.0:199    liveins: $vgpr0200    ; WAVE64-LABEL: name: copy_vgpr_no_type201    ; WAVE64: liveins: $vgpr0202    ; WAVE64-NEXT: {{  $}}203    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0204    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]205    ;206    ; WAVE32-LABEL: name: copy_vgpr_no_type207    ; WAVE32: liveins: $vgpr0208    ; WAVE32-NEXT: {{  $}}209    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0210    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]211    %0:vgpr_32 = COPY $vgpr0212    %1:vgpr_32 = COPY %0213    S_ENDPGM 0, implicit %1214 215...216 217---218 219name:            copy_maybe_vcc220legalized:       true221regBankSelected: true222 223 224body: |225  bb.0:226    liveins: $sgpr0_sgpr1227    ; WAVE64-LABEL: name: copy_maybe_vcc228    ; WAVE64: liveins: $sgpr0_sgpr1229    ; WAVE64-NEXT: {{  $}}230    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr0_sgpr1231    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]232    ;233    ; WAVE32-LABEL: name: copy_maybe_vcc234    ; WAVE32: liveins: $sgpr0_sgpr1235    ; WAVE32-NEXT: {{  $}}236    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr0_sgpr1237    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]238    %0:sreg_64_xexec = COPY $sgpr0_sgpr1239    %1:sreg_64_xexec = COPY %0240    S_ENDPGM 0, implicit %1241 242...243 244# FIXME: This is malformed. There should never be a trunc to vcc.245---246 247name:            copy_s1_vcc_to_vcc248legalized:       true249regBankSelected: true250 251 252body: |253  bb.0:254    liveins: $sgpr0_sgpr1255 256    ; WAVE64-LABEL: name: copy_s1_vcc_to_vcc257    ; WAVE64: liveins: $sgpr0_sgpr1258    ; WAVE64-NEXT: {{  $}}259    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0260    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_64_xexec = COPY [[COPY]]261    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]]262    ;263    ; WAVE32-LABEL: name: copy_s1_vcc_to_vcc264    ; WAVE32: liveins: $sgpr0_sgpr1265    ; WAVE32-NEXT: {{  $}}266    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0267    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[COPY]]268    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]]269    %0:sgpr(s32) = COPY $sgpr0270    %1:vcc(s1) = G_TRUNC %0271    %2:vcc(s1) = COPY %1272    S_ENDPGM 0, implicit %2273 274...275 276---277 278name:            copy_s64_to_vcc279legalized:       true280regBankSelected: true281 282 283body: |284  bb.0:285    liveins: $sgpr0_sgpr1286    ; WAVE64-LABEL: name: copy_s64_to_vcc287    ; WAVE64: liveins: $sgpr0_sgpr1288    ; WAVE64-NEXT: {{  $}}289    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1290    ; WAVE64-NEXT: $vcc = COPY [[COPY]]291    ; WAVE64-NEXT: S_ENDPGM 0, implicit $vcc292    ;293    ; WAVE32-LABEL: name: copy_s64_to_vcc294    ; WAVE32: liveins: $sgpr0_sgpr1295    ; WAVE32-NEXT: {{  $}}296    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1297    ; WAVE32-NEXT: $vcc = COPY [[COPY]]298    ; WAVE32-NEXT: S_ENDPGM 0, implicit $vcc_lo299    %0:sgpr(s64) = COPY $sgpr0_sgpr1300    $vcc = COPY %0301    S_ENDPGM 0, implicit $vcc302 303...304 305---306 307name:            copy_s32_to_vcc_lo308legalized:       true309regBankSelected: true310 311 312body: |313  bb.0:314    liveins: $sgpr0315    ; WAVE64-LABEL: name: copy_s32_to_vcc_lo316    ; WAVE64: liveins: $sgpr0317    ; WAVE64-NEXT: {{  $}}318    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0319    ; WAVE64-NEXT: $vcc_lo = COPY [[COPY]]320    ; WAVE64-NEXT: S_ENDPGM 0, implicit $vcc321    ;322    ; WAVE32-LABEL: name: copy_s32_to_vcc_lo323    ; WAVE32: liveins: $sgpr0324    ; WAVE32-NEXT: {{  $}}325    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0326    ; WAVE32-NEXT: $vcc_lo = COPY [[COPY]]327    ; WAVE32-NEXT: S_ENDPGM 0, implicit $vcc_lo328    %0:sgpr(s32) = COPY $sgpr0329    $vcc_lo = COPY %0330    S_ENDPGM 0, implicit $vcc331 332...333 334---335 336name:            copy_vcc_to_s64337legalized:       true338regBankSelected: true339 340 341body: |342  bb.0:343    liveins: $vcc344    ; WAVE64-LABEL: name: copy_vcc_to_s64345    ; WAVE64: liveins: $vcc346    ; WAVE64-NEXT: {{  $}}347    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $vcc348    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]349    ;350    ; WAVE32-LABEL: name: copy_vcc_to_s64351    ; WAVE32: liveins: $vcc352    ; WAVE32-NEXT: {{  $}}353    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $vcc354    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]355    %0:sgpr(s64) = COPY $vcc356    S_ENDPGM 0, implicit %0357 358...359 360---361 362name:            copy_vcc_lo_to_s32363legalized:       true364regBankSelected: true365 366 367body: |368  bb.0:369    liveins: $vcc370    ; WAVE64-LABEL: name: copy_vcc_lo_to_s32371    ; WAVE64: liveins: $vcc372    ; WAVE64-NEXT: {{  $}}373    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $vcc_lo374    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY]]375    ;376    ; WAVE32-LABEL: name: copy_vcc_lo_to_s32377    ; WAVE32: liveins: $vcc378    ; WAVE32-NEXT: {{  $}}379    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $vcc_lo380    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY]]381    %0:sgpr(s32) = COPY $vcc_lo382    S_ENDPGM 0, implicit %0383 384...385 386---387 388name:            copy_s1_to_vcc389legalized:       true390regBankSelected: true391tracksRegLiveness: true392body:             |393  bb.0:394    liveins: $sgpr0_sgpr1395 396    ; WAVE64-LABEL: name: copy_s1_to_vcc397    ; WAVE64: liveins: $sgpr0_sgpr1398    ; WAVE64-NEXT: {{  $}}399    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1400    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0401    ; WAVE64-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY1]], implicit-def dead $scc402    ; WAVE64-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64 = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec403    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U32_e64_]]404    ;405    ; WAVE32-LABEL: name: copy_s1_to_vcc406    ; WAVE32: liveins: $sgpr0_sgpr1407    ; WAVE32-NEXT: {{  $}}408    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1409    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0410    ; WAVE32-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 1, [[COPY1]], implicit-def dead $scc411    ; WAVE32-NEXT: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U32_e64 0, [[S_AND_B32_]], implicit $exec412    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U32_e64_]]413    %0:sgpr(s64) = COPY $sgpr0_sgpr1414    %1:sgpr(s1) = G_TRUNC %0(s64)415    %2:vcc(s1) = COPY %1(s1)416    S_ENDPGM 0, implicit %2417 418...419 420---421 422name:            copy_s1_false_to_vcc423legalized:       true424regBankSelected: true425tracksRegLiveness: true426body:             |427  bb.0:428    liveins: $sgpr0429 430    ; WAVE64-LABEL: name: copy_s1_false_to_vcc431    ; WAVE64: liveins: $sgpr0432    ; WAVE64-NEXT: {{  $}}433    ; WAVE64-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0434    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[S_MOV_B64_]]435    ;436    ; WAVE32-LABEL: name: copy_s1_false_to_vcc437    ; WAVE32: liveins: $sgpr0438    ; WAVE32-NEXT: {{  $}}439    ; WAVE32-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0440    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[S_MOV_B32_]]441    %0:sgpr(s1) = G_CONSTANT i1 false442    %1:vcc(s1) = COPY %0(s1)443    S_ENDPGM 0, implicit %1444 445...446 447---448 449name:            copy_s1_true_to_vcc450legalized:       true451regBankSelected: true452tracksRegLiveness: true453body:             |454  bb.0:455    liveins: $sgpr0456 457    ; WAVE64-LABEL: name: copy_s1_true_to_vcc458    ; WAVE64: liveins: $sgpr0459    ; WAVE64-NEXT: {{  $}}460    ; WAVE64-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1461    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[S_MOV_B64_]]462    ;463    ; WAVE32-LABEL: name: copy_s1_true_to_vcc464    ; WAVE32: liveins: $sgpr0465    ; WAVE32-NEXT: {{  $}}466    ; WAVE32-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1467    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[S_MOV_B32_]]468    %0:sgpr(s1) = G_CONSTANT i1 true469    %1:vcc(s1) = COPY %0(s1)470    S_ENDPGM 0, implicit %1471 472...473