430 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=GCN3 4---5name: g_phi_s32_ss_sbranch6legalized: true7regBankSelected: true8tracksRegLiveness: true9machineFunctionInfo: {}10body: |11 ; GCN-LABEL: name: g_phi_s32_ss_sbranch12 ; GCN: bb.0:13 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)14 ; GCN-NEXT: liveins: $sgpr0, $sgpr1, $sgpr215 ; GCN-NEXT: {{ $}}16 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr017 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr118 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr219 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 020 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc21 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc22 ; GCN-NEXT: $scc = COPY [[COPY3]]23 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc24 ; GCN-NEXT: S_BRANCH %bb.225 ; GCN-NEXT: {{ $}}26 ; GCN-NEXT: bb.1:27 ; GCN-NEXT: successors: %bb.2(0x80000000)28 ; GCN-NEXT: {{ $}}29 ; GCN-NEXT: S_BRANCH %bb.230 ; GCN-NEXT: {{ $}}31 ; GCN-NEXT: bb.2:32 ; GCN-NEXT: [[PHI:%[0-9]+]]:sreg_32 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.133 ; GCN-NEXT: $sgpr0 = COPY [[PHI]]34 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr3135 bb.0:36 liveins: $sgpr0, $sgpr1, $sgpr237 38 %0:sgpr(s32) = COPY $sgpr039 %1:sgpr(s32) = COPY $sgpr140 %2:sgpr(s32) = COPY $sgpr241 %3:sgpr(s32) = G_CONSTANT i32 042 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %343 G_BRCOND %4, %bb.144 G_BR %bb.245 46 bb.1:47 %5:sgpr(s32) = COPY %148 G_BR %bb.249 50 bb.2:51 %6:sgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.152 $sgpr0 = COPY %653 S_SETPC_B64 undef $sgpr30_sgpr3154 55...56 57---58name: g_phi_s32_vv_sbranch59legalized: true60regBankSelected: true61tracksRegLiveness: true62machineFunctionInfo: {}63body: |64 ; GCN-LABEL: name: g_phi_s32_vv_sbranch65 ; GCN: bb.0:66 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)67 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr268 ; GCN-NEXT: {{ $}}69 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr070 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr171 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr272 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 073 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc74 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc75 ; GCN-NEXT: $scc = COPY [[COPY3]]76 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc77 ; GCN-NEXT: S_BRANCH %bb.278 ; GCN-NEXT: {{ $}}79 ; GCN-NEXT: bb.1:80 ; GCN-NEXT: successors: %bb.2(0x80000000)81 ; GCN-NEXT: {{ $}}82 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]]83 ; GCN-NEXT: S_BRANCH %bb.284 ; GCN-NEXT: {{ $}}85 ; GCN-NEXT: bb.2:86 ; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.187 ; GCN-NEXT: $vgpr0 = COPY [[PHI]]88 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr3189 bb.0:90 liveins: $vgpr0, $vgpr1, $sgpr291 92 %0:vgpr(s32) = COPY $vgpr093 %1:vgpr(s32) = COPY $vgpr194 %2:sgpr(s32) = COPY $sgpr295 %3:sgpr(s32) = G_CONSTANT i32 096 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %397 G_BRCOND %4, %bb.198 G_BR %bb.299 100 bb.1:101 %5:sgpr(s32) = COPY %1102 G_BR %bb.2103 104 bb.2:105 %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1106 $vgpr0 = COPY %6(s32)107 S_SETPC_B64 undef $sgpr30_sgpr31108 109...110 111---112name: g_phi_s32_sv_sbranch113legalized: true114regBankSelected: true115tracksRegLiveness: true116machineFunctionInfo: {}117body: |118 ; GCN-LABEL: name: g_phi_s32_sv_sbranch119 ; GCN: bb.0:120 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)121 ; GCN-NEXT: liveins: $sgpr0, $vgpr0, $sgpr1, $sgpr2122 ; GCN-NEXT: {{ $}}123 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0124 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0125 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2126 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0127 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc128 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc129 ; GCN-NEXT: $scc = COPY [[COPY3]]130 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc131 ; GCN-NEXT: S_BRANCH %bb.2132 ; GCN-NEXT: {{ $}}133 ; GCN-NEXT: bb.1:134 ; GCN-NEXT: successors: %bb.2(0x80000000)135 ; GCN-NEXT: {{ $}}136 ; GCN-NEXT: S_BRANCH %bb.2137 ; GCN-NEXT: {{ $}}138 ; GCN-NEXT: bb.2:139 ; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1140 ; GCN-NEXT: $vgpr0 = COPY [[PHI]]141 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31142 bb.0:143 liveins: $sgpr0, $vgpr0, $sgpr1, $sgpr2144 145 %0:sgpr(s32) = COPY $sgpr0146 %1:vgpr(s32) = COPY $vgpr0147 %2:sgpr(s32) = COPY $sgpr2148 %3:sgpr(s32) = G_CONSTANT i32 0149 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3150 G_BRCOND %4, %bb.1151 G_BR %bb.2152 153 bb.1:154 %5:vgpr(s32) = COPY %1155 G_BR %bb.2156 157 bb.2:158 %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1159 $vgpr0 = COPY %6160 S_SETPC_B64 undef $sgpr30_sgpr31161 162...163 164---165name: g_phi_s32_vs_sbranch166legalized: true167regBankSelected: true168tracksRegLiveness: true169machineFunctionInfo: {}170body: |171 ; GCN-LABEL: name: g_phi_s32_vs_sbranch172 ; GCN: bb.0:173 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)174 ; GCN-NEXT: liveins: $sgpr0, $vgpr0, $sgpr1175 ; GCN-NEXT: {{ $}}176 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0177 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0178 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1179 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0180 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc181 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc182 ; GCN-NEXT: $scc = COPY [[COPY3]]183 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc184 ; GCN-NEXT: S_BRANCH %bb.2185 ; GCN-NEXT: {{ $}}186 ; GCN-NEXT: bb.1:187 ; GCN-NEXT: successors: %bb.2(0x80000000)188 ; GCN-NEXT: {{ $}}189 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY1]]190 ; GCN-NEXT: S_BRANCH %bb.2191 ; GCN-NEXT: {{ $}}192 ; GCN-NEXT: bb.2:193 ; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1194 ; GCN-NEXT: $vgpr0 = COPY [[PHI]]195 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31196 bb.0:197 liveins: $sgpr0, $vgpr0, $sgpr1198 199 %0:vgpr(s32) = COPY $vgpr0200 %1:sgpr(s32) = COPY $sgpr0201 %2:sgpr(s32) = COPY $sgpr1202 %3:sgpr(s32) = G_CONSTANT i32 0203 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3204 G_BRCOND %4, %bb.1205 G_BR %bb.2206 207 bb.1:208 %5:vgpr(s32) = COPY %1209 G_BR %bb.2210 211 bb.2:212 %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1213 $vgpr0 = COPY %6214 S_SETPC_B64 undef $sgpr30_sgpr31215 216...217 218---219name: g_phi_s64_ss_sbranch220legalized: true221regBankSelected: true222tracksRegLiveness: true223machineFunctionInfo: {}224body: |225 ; GCN-LABEL: name: g_phi_s64_ss_sbranch226 ; GCN: bb.0:227 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)228 ; GCN-NEXT: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4229 ; GCN-NEXT: {{ $}}230 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1231 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3232 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4233 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0234 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc235 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc236 ; GCN-NEXT: $scc = COPY [[COPY3]]237 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc238 ; GCN-NEXT: S_BRANCH %bb.2239 ; GCN-NEXT: {{ $}}240 ; GCN-NEXT: bb.1:241 ; GCN-NEXT: successors: %bb.2(0x80000000)242 ; GCN-NEXT: {{ $}}243 ; GCN-NEXT: S_BRANCH %bb.2244 ; GCN-NEXT: {{ $}}245 ; GCN-NEXT: bb.2:246 ; GCN-NEXT: [[PHI:%[0-9]+]]:sreg_64 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1247 ; GCN-NEXT: $sgpr0_sgpr1 = COPY [[PHI]]248 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31249 bb.0:250 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4251 252 %0:sgpr(s64) = COPY $sgpr0_sgpr1253 %1:sgpr(s64) = COPY $sgpr2_sgpr3254 %2:sgpr(s32) = COPY $sgpr4255 %3:sgpr(s32) = G_CONSTANT i32 0256 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3257 G_BRCOND %4, %bb.1258 G_BR %bb.2259 260 bb.1:261 %5:sgpr(s64) = COPY %1262 G_BR %bb.2263 264 bb.2:265 %6:sgpr(s64) = G_PHI %0(s64), %bb.0, %5(s64), %bb.1266 $sgpr0_sgpr1 = COPY %6267 S_SETPC_B64 undef $sgpr30_sgpr31268 269...270---271name: g_phi_v2s16_vv_sbranch272legalized: true273regBankSelected: true274tracksRegLiveness: true275machineFunctionInfo: {}276body: |277 ; GCN-LABEL: name: g_phi_v2s16_vv_sbranch278 ; GCN: bb.0:279 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)280 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr2281 ; GCN-NEXT: {{ $}}282 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0283 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1284 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2285 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0286 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc287 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc288 ; GCN-NEXT: $scc = COPY [[COPY3]]289 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc290 ; GCN-NEXT: S_BRANCH %bb.2291 ; GCN-NEXT: {{ $}}292 ; GCN-NEXT: bb.1:293 ; GCN-NEXT: successors: %bb.2(0x80000000)294 ; GCN-NEXT: {{ $}}295 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]]296 ; GCN-NEXT: S_BRANCH %bb.2297 ; GCN-NEXT: {{ $}}298 ; GCN-NEXT: bb.2:299 ; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1300 ; GCN-NEXT: $vgpr0 = COPY [[PHI]]301 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31302 bb.0:303 liveins: $vgpr0, $vgpr1, $sgpr2304 305 %0:vgpr(<2 x s16>) = COPY $vgpr0306 %1:vgpr(<2 x s16>) = COPY $vgpr1307 %2:sgpr(s32) = COPY $sgpr2308 %3:sgpr(s32) = G_CONSTANT i32 0309 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3310 G_BRCOND %4, %bb.1311 G_BR %bb.2312 313 bb.1:314 %5:sgpr(<2 x s16>) = COPY %1315 G_BR %bb.2316 317 bb.2:318 %6:vgpr(<2 x s16>) = G_PHI %0(<2 x s16>), %bb.0, %5(<2 x s16>), %bb.1319 $vgpr0 = COPY %6320 S_SETPC_B64 undef $sgpr30_sgpr31321 322...323 324---325name: phi_s32_ss_sbranch326legalized: true327regBankSelected: true328tracksRegLiveness: true329machineFunctionInfo: {}330body: |331 ; GCN-LABEL: name: phi_s32_ss_sbranch332 ; GCN: bb.0:333 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)334 ; GCN-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2335 ; GCN-NEXT: {{ $}}336 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0337 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1338 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2339 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0340 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc341 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc342 ; GCN-NEXT: $scc = COPY [[COPY3]]343 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc344 ; GCN-NEXT: S_BRANCH %bb.2345 ; GCN-NEXT: {{ $}}346 ; GCN-NEXT: bb.1:347 ; GCN-NEXT: successors: %bb.2(0x80000000)348 ; GCN-NEXT: {{ $}}349 ; GCN-NEXT: S_BRANCH %bb.2350 ; GCN-NEXT: {{ $}}351 ; GCN-NEXT: bb.2:352 ; GCN-NEXT: [[PHI:%[0-9]+]]:sreg_32 = PHI [[COPY]], %bb.0, [[COPY1]], %bb.1353 ; GCN-NEXT: $sgpr0 = COPY [[PHI]]354 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31355 bb.0:356 liveins: $sgpr0, $sgpr1, $sgpr2357 358 %0:sgpr(s32) = COPY $sgpr0359 %1:sgpr(s32) = COPY $sgpr1360 %2:sgpr(s32) = COPY $sgpr2361 %3:sgpr(s32) = G_CONSTANT i32 0362 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3363 G_BRCOND %4, %bb.1364 G_BR %bb.2365 366 bb.1:367 %5:sgpr(s32) = COPY %1368 G_BR %bb.2369 370 bb.2:371 %6:sgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1372 $sgpr0 = COPY %6(s32)373 S_SETPC_B64 undef $sgpr30_sgpr31374 375...376 377---378name: phi_s32_vv_sbranch379legalized: true380regBankSelected: true381tracksRegLiveness: true382machineFunctionInfo: {}383body: |384 ; GCN-LABEL: name: phi_s32_vv_sbranch385 ; GCN: bb.0:386 ; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)387 ; GCN-NEXT: liveins: $vgpr0, $vgpr1, $sgpr2388 ; GCN-NEXT: {{ $}}389 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0390 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1391 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2392 ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0393 ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[S_MOV_B32_]], implicit-def $scc394 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $scc395 ; GCN-NEXT: $scc = COPY [[COPY3]]396 ; GCN-NEXT: S_CBRANCH_SCC1 %bb.1, implicit $scc397 ; GCN-NEXT: S_BRANCH %bb.2398 ; GCN-NEXT: {{ $}}399 ; GCN-NEXT: bb.1:400 ; GCN-NEXT: successors: %bb.2(0x80000000)401 ; GCN-NEXT: {{ $}}402 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY1]]403 ; GCN-NEXT: S_BRANCH %bb.2404 ; GCN-NEXT: {{ $}}405 ; GCN-NEXT: bb.2:406 ; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[COPY]], %bb.0, [[COPY4]], %bb.1407 ; GCN-NEXT: $vgpr0 = COPY [[PHI]]408 ; GCN-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31409 bb.0:410 liveins: $vgpr0, $vgpr1, $sgpr2411 412 %0:vgpr(s32) = COPY $vgpr0413 %1:vgpr(s32) = COPY $vgpr1414 %2:sgpr(s32) = COPY $sgpr2415 %3:sgpr(s32) = G_CONSTANT i32 0416 %4:sgpr(s32) = G_ICMP intpred(eq), %2(s32), %3417 G_BRCOND %4, %bb.1418 G_BR %bb.2419 420 bb.1:421 %5:sgpr(s32) = COPY %1422 G_BR %bb.2423 424 bb.2:425 %6:vgpr(s32) = G_PHI %0(s32), %bb.0, %5(s32), %bb.1426 $vgpr0 = COPY %6427 S_SETPC_B64 undef $sgpr30_sgpr31428 429...430