488 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -o - | FileCheck %s3 4---5name: gep_p0_s_k6legalized: true7 8body: |9 bb.0:10 liveins: $sgpr0_sgpr111 12 ; CHECK-LABEL: name: gep_p0_s_k13 ; CHECK: liveins: $sgpr0_sgpr114 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr116 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 117 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p0) = G_PTR_ADD [[COPY]], [[C]](s64)18 %0:_(p0) = COPY $sgpr0_sgpr119 %1:_(s64) = G_CONSTANT i64 120 %2:_(p0) = G_PTR_ADD %0, %121...22 23---24name: gep_p0_s_s25legalized: true26 27body: |28 bb.0:29 liveins: $sgpr0_sgpr1, $sgpr2_sgpr330 31 ; CHECK-LABEL: name: gep_p0_s_s32 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr333 ; CHECK-NEXT: {{ $}}34 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr135 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr336 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p0) = G_PTR_ADD [[COPY]], [[COPY1]](s64)37 %0:_(p0) = COPY $sgpr0_sgpr138 %1:_(s64) = COPY $sgpr2_sgpr339 %2:_(p0) = G_PTR_ADD %0, %140...41 42---43name: gep_p0_v_k44legalized: true45 46body: |47 bb.0:48 liveins: $vgpr0_vgpr149 50 ; CHECK-LABEL: name: gep_p0_v_k51 ; CHECK: liveins: $vgpr0_vgpr152 ; CHECK-NEXT: {{ $}}53 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr154 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 155 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY [[C]](s64)56 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p0) = G_PTR_ADD [[COPY]], [[COPY1]](s64)57 %0:_(p0) = COPY $vgpr0_vgpr158 %1:_(s64) = G_CONSTANT i64 159 %2:_(p0) = G_PTR_ADD %0, %160...61 62---63name: gep_p0_v_s64legalized: true65 66body: |67 bb.0:68 liveins: $vgpr0_vgpr1, $sgpr0_sgpr169 70 ; CHECK-LABEL: name: gep_p0_v_s71 ; CHECK: liveins: $vgpr0_vgpr1, $sgpr0_sgpr172 ; CHECK-NEXT: {{ $}}73 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr174 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr175 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)76 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p0) = G_PTR_ADD [[COPY]], [[COPY2]](s64)77 %0:_(p0) = COPY $vgpr0_vgpr178 %1:_(s64) = COPY $sgpr0_sgpr179 %2:_(p0) = G_PTR_ADD %0, %180...81 82---83name: gep_p0_v_v84legalized: true85 86body: |87 bb.0:88 liveins: $vgpr0_vgpr1, $vgpr2_vgpr389 90 ; CHECK-LABEL: name: gep_p0_v_v91 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr392 ; CHECK-NEXT: {{ $}}93 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr194 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr395 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p0) = G_PTR_ADD [[COPY]], [[COPY1]](s64)96 %0:_(p0) = COPY $vgpr0_vgpr197 %1:_(s64) = COPY $vgpr2_vgpr398 %2:_(p0) = G_PTR_ADD %0, %199...100 101---102name: gep_p1_s_k103legalized: true104 105body: |106 bb.0:107 liveins: $sgpr0_sgpr1108 109 ; CHECK-LABEL: name: gep_p1_s_k110 ; CHECK: liveins: $sgpr0_sgpr1111 ; CHECK-NEXT: {{ $}}112 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1113 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 1114 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p1) = G_PTR_ADD [[COPY]], [[C]](s64)115 %0:_(p1) = COPY $sgpr0_sgpr1116 %1:_(s64) = G_CONSTANT i64 1117 %2:_(p1) = G_PTR_ADD %0, %1118...119 120---121name: gep_p1_s_s122legalized: true123 124body: |125 bb.0:126 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3127 128 ; CHECK-LABEL: name: gep_p1_s_s129 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3130 ; CHECK-NEXT: {{ $}}131 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1132 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3133 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p1) = G_PTR_ADD [[COPY]], [[COPY1]](s64)134 %0:_(p1) = COPY $sgpr0_sgpr1135 %1:_(s64) = COPY $sgpr2_sgpr3136 %2:_(p1) = G_PTR_ADD %0, %1137...138 139---140name: gep_p1_v_k141legalized: true142 143body: |144 bb.0:145 liveins: $vgpr0_vgpr1146 147 ; CHECK-LABEL: name: gep_p1_v_k148 ; CHECK: liveins: $vgpr0_vgpr1149 ; CHECK-NEXT: {{ $}}150 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1151 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 1152 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY [[C]](s64)153 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p1) = G_PTR_ADD [[COPY]], [[COPY1]](s64)154 %0:_(p1) = COPY $vgpr0_vgpr1155 %1:_(s64) = G_CONSTANT i64 1156 %2:_(p1) = G_PTR_ADD %0, %1157...158 159---160name: gep_p1_v_s161legalized: true162 163body: |164 bb.0:165 liveins: $vgpr0_vgpr1, $sgpr0_sgpr1166 167 ; CHECK-LABEL: name: gep_p1_v_s168 ; CHECK: liveins: $vgpr0_vgpr1, $sgpr0_sgpr1169 ; CHECK-NEXT: {{ $}}170 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1171 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1172 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)173 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p1) = G_PTR_ADD [[COPY]], [[COPY2]](s64)174 %0:_(p1) = COPY $vgpr0_vgpr1175 %1:_(s64) = COPY $sgpr0_sgpr1176 %2:_(p1) = G_PTR_ADD %0, %1177...178 179---180name: gep_p1_v_v181legalized: true182 183body: |184 bb.0:185 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3186 187 ; CHECK-LABEL: name: gep_p1_v_v188 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3189 ; CHECK-NEXT: {{ $}}190 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1191 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3192 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p1) = G_PTR_ADD [[COPY]], [[COPY1]](s64)193 %0:_(p1) = COPY $vgpr0_vgpr1194 %1:_(s64) = COPY $vgpr2_vgpr3195 %2:_(p1) = G_PTR_ADD %0, %1196...197 198---199name: gep_p3_s_k200legalized: true201 202body: |203 bb.0:204 liveins: $sgpr0205 206 ; CHECK-LABEL: name: gep_p3_s_k207 ; CHECK: liveins: $sgpr0208 ; CHECK-NEXT: {{ $}}209 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0210 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1211 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p3) = G_PTR_ADD [[COPY]], [[C]](s32)212 %0:_(p3) = COPY $sgpr0213 %1:_(s32) = G_CONSTANT i32 1214 %2:_(p3) = G_PTR_ADD %0, %1215...216 217---218name: gep_p3_s_s219legalized: true220 221body: |222 bb.0:223 liveins: $sgpr0, $sgpr1224 225 ; CHECK-LABEL: name: gep_p3_s_s226 ; CHECK: liveins: $sgpr0, $sgpr1227 ; CHECK-NEXT: {{ $}}228 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0229 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1230 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p3) = G_PTR_ADD [[COPY]], [[COPY1]](s32)231 %0:_(p3) = COPY $sgpr0232 %1:_(s32) = COPY $sgpr1233 %2:_(p3) = G_PTR_ADD %0, %1234...235 236---237name: gep_p3_v_k238legalized: true239 240body: |241 bb.0:242 liveins: $vgpr0243 244 ; CHECK-LABEL: name: gep_p3_v_k245 ; CHECK: liveins: $vgpr0246 ; CHECK-NEXT: {{ $}}247 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0248 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1249 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)250 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[COPY1]](s32)251 %0:_(p3) = COPY $vgpr0252 %1:_(s32) = G_CONSTANT i32 1253 %2:_(p3) = G_PTR_ADD %0, %1254...255 256---257name: gep_p3_v_s258legalized: true259 260body: |261 bb.0:262 liveins: $vgpr0, $sgpr0263 264 ; CHECK-LABEL: name: gep_p3_v_s265 ; CHECK: liveins: $vgpr0, $sgpr0266 ; CHECK-NEXT: {{ $}}267 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0268 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0269 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)270 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[COPY2]](s32)271 %0:_(p3) = COPY $vgpr0272 %1:_(s32) = COPY $sgpr0273 %2:_(p3) = G_PTR_ADD %0, %1274...275 276---277name: gep_p3_v_v278legalized: true279 280body: |281 bb.0:282 liveins: $vgpr0, $vgpr1283 284 ; CHECK-LABEL: name: gep_p3_v_v285 ; CHECK: liveins: $vgpr0, $vgpr1286 ; CHECK-NEXT: {{ $}}287 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0288 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1289 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[COPY1]](s32)290 %0:_(p3) = COPY $vgpr0291 %1:_(s32) = COPY $vgpr1292 %2:_(p3) = G_PTR_ADD %0, %1293...294 295---296name: gep_p4_s_k297legalized: true298 299body: |300 bb.0:301 liveins: $sgpr0_sgpr1302 303 ; CHECK-LABEL: name: gep_p4_s_k304 ; CHECK: liveins: $sgpr0_sgpr1305 ; CHECK-NEXT: {{ $}}306 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1307 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 1308 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p4) = G_PTR_ADD [[COPY]], [[C]](s64)309 %0:_(p4) = COPY $sgpr0_sgpr1310 %1:_(s64) = G_CONSTANT i64 1311 %2:_(p4) = G_PTR_ADD %0, %1312...313 314---315name: gep_p4_s_s316legalized: true317 318body: |319 bb.0:320 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3321 322 ; CHECK-LABEL: name: gep_p4_s_s323 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3324 ; CHECK-NEXT: {{ $}}325 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1326 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3327 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p4) = G_PTR_ADD [[COPY]], [[COPY1]](s64)328 %0:_(p4) = COPY $sgpr0_sgpr1329 %1:_(s64) = COPY $sgpr2_sgpr3330 %2:_(p4) = G_PTR_ADD %0, %1331...332 333---334name: gep_p4_v_k335legalized: true336 337body: |338 bb.0:339 liveins: $vgpr0_vgpr1340 341 ; CHECK-LABEL: name: gep_p4_v_k342 ; CHECK: liveins: $vgpr0_vgpr1343 ; CHECK-NEXT: {{ $}}344 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1345 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s64) = G_CONSTANT i64 1346 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY [[C]](s64)347 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p4) = G_PTR_ADD [[COPY]], [[COPY1]](s64)348 %0:_(p4) = COPY $vgpr0_vgpr1349 %1:_(s64) = G_CONSTANT i64 1350 %2:_(p4) = G_PTR_ADD %0, %1351...352 353---354name: gep_p4_v_s355legalized: true356 357body: |358 bb.0:359 liveins: $vgpr0_vgpr1, $sgpr0_sgpr1360 361 ; CHECK-LABEL: name: gep_p4_v_s362 ; CHECK: liveins: $vgpr0_vgpr1, $sgpr0_sgpr1363 ; CHECK-NEXT: {{ $}}364 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1365 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1366 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64)367 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p4) = G_PTR_ADD [[COPY]], [[COPY2]](s64)368 %0:_(p4) = COPY $vgpr0_vgpr1369 %1:_(s64) = COPY $sgpr0_sgpr1370 %2:_(p4) = G_PTR_ADD %0, %1371...372 373---374name: gep_p4_v_v375legalized: true376 377body: |378 bb.0:379 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3380 381 ; CHECK-LABEL: name: gep_p4_v_v382 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3383 ; CHECK-NEXT: {{ $}}384 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p4) = COPY $vgpr0_vgpr1385 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3386 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p4) = G_PTR_ADD [[COPY]], [[COPY1]](s64)387 %0:_(p4) = COPY $vgpr0_vgpr1388 %1:_(s64) = COPY $vgpr2_vgpr3389 %2:_(p4) = G_PTR_ADD %0, %1390...391 392---393name: gep_p5_s_k394legalized: true395 396body: |397 bb.0:398 liveins: $sgpr0399 400 ; CHECK-LABEL: name: gep_p5_s_k401 ; CHECK: liveins: $sgpr0402 ; CHECK-NEXT: {{ $}}403 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0404 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1405 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[C]](s32)406 %0:_(p5) = COPY $sgpr0407 %1:_(s32) = G_CONSTANT i32 1408 %2:_(p5) = G_PTR_ADD %0, %1409...410 411---412name: gep_p5_s_s413legalized: true414 415body: |416 bb.0:417 liveins: $sgpr0, $sgpr1418 419 ; CHECK-LABEL: name: gep_p5_s_s420 ; CHECK: liveins: $sgpr0, $sgpr1421 ; CHECK-NEXT: {{ $}}422 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sgpr0423 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1424 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[COPY1]](s32)425 %0:_(p5) = COPY $sgpr0426 %1:_(s32) = COPY $sgpr1427 %2:_(p5) = G_PTR_ADD %0, %1428...429 430---431name: gep_p5_v_k432legalized: true433 434body: |435 bb.0:436 liveins: $vgpr0437 438 ; CHECK-LABEL: name: gep_p5_v_k439 ; CHECK: liveins: $vgpr0440 ; CHECK-NEXT: {{ $}}441 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0442 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1443 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32)444 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p5) = G_PTR_ADD [[COPY]], [[COPY1]](s32)445 %0:_(p5) = COPY $vgpr0446 %1:_(s32) = G_CONSTANT i32 1447 %2:_(p5) = G_PTR_ADD %0, %1448...449 450---451name: gep_p5_v_s452legalized: true453 454body: |455 bb.0:456 liveins: $vgpr0, $sgpr0457 458 ; CHECK-LABEL: name: gep_p5_v_s459 ; CHECK: liveins: $vgpr0, $sgpr0460 ; CHECK-NEXT: {{ $}}461 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0462 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0463 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)464 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p5) = G_PTR_ADD [[COPY]], [[COPY2]](s32)465 %0:_(p5) = COPY $vgpr0466 %1:_(s32) = COPY $sgpr0467 %2:_(p5) = G_PTR_ADD %0, %1468...469 470---471name: gep_p5_v_v472legalized: true473 474body: |475 bb.0:476 liveins: $vgpr0, $vgpr1477 478 ; CHECK-LABEL: name: gep_p5_v_v479 ; CHECK: liveins: $vgpr0, $vgpr1480 ; CHECK-NEXT: {{ $}}481 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0482 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1483 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:vgpr(p5) = G_PTR_ADD [[COPY]], [[COPY1]](s32)484 %0:_(p5) = COPY $vgpr0485 %1:_(s32) = COPY $vgpr1486 %2:_(p5) = G_PTR_ADD %0, %1487...488