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