526 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64-apple-ios -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK3 4--- |5 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"6 7 @var_fp = global float 0.08 @var_int = global i32 09 10 define float @fp_load_phi() { ret float undef }11 define i32 @int_load_phi_gpr() { ret i32 undef }12 define i32 @int_load_phi_fpr() { ret i32 undef }13 14 15 @array_double = dso_local global [32000 x double] zeroinitializer, align 816 @struct_array_double = dso_local global { [32000 x double] } zeroinitializer, align 817 @struct_struct_array_double = dso_local global {{ [32000 x double] }} zeroinitializer, align 818 19 define float @array_load_double() { ret float undef }20 define float @struct_array_load_double() { ret float undef }21 define float @struct_struct_array_load_double() { ret float undef }22 23 @array_int = dso_local global [32000 x i32] zeroinitializer, align 824 @struct_array_int = dso_local global { [32000 x i32] } zeroinitializer, align 825 @struct_struct_array_int = dso_local global {{ [32000 x i32] }} zeroinitializer, align 826 27 define i32 @array_load_int_gpr() { ret i32 undef }28 define i32 @array_load_int_fpr() { ret i32 undef }29 define i32 @struct_array_load_int_gpr() { ret i32 undef }30 define i32 @struct_array_load_int_fpr() { ret i32 undef }31 define i32 @struct_struct_array_load_int_gpr() { ret i32 undef }32 define i32 @struct_struct_array_load_int_fpr() { ret i32 undef }33 34...35---36name: fp_load_phi37legalized: true38regBankSelected: false39tracksRegLiveness: true40body: |41 ; CHECK-LABEL: name: fp_load_phi42 ; CHECK: bb.0:43 ; CHECK-NEXT: successors: %bb.1(0x80000000)44 ; CHECK-NEXT: liveins: $w045 ; CHECK-NEXT: {{ $}}46 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w047 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @var_fp48 ; CHECK-NEXT: %fp_load:fpr(s32) = G_LOAD [[GV]](p0) :: (load (s32) from @var_fp)49 ; CHECK-NEXT: {{ $}}50 ; CHECK-NEXT: bb.1:51 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)52 ; CHECK-NEXT: {{ $}}53 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s32), %bb.0, [[PHI]](s32), %bb.154 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.155 ; CHECK-NEXT: {{ $}}56 ; CHECK-NEXT: bb.2:57 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)58 ; CHECK-NEXT: RET_ReallyLR implicit $s059 bb.0:60 liveins: $w061 successors: %bb.162 %0:_(s32) = COPY $w063 %1:_(p0) = G_GLOBAL_VALUE @var_fp64 %fp_load:_(s32) = G_LOAD %1 :: (load 4 from @var_fp)65 66 bb.1:67 successors: %bb.1, %bb.268 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.169 G_BRCOND %0, %bb.170 71 bb.2:72 $s0 = COPY %273 RET_ReallyLR implicit $s074...75 76---77name: int_load_phi_gpr78legalized: true79regBankSelected: false80tracksRegLiveness: true81body: |82 ; CHECK-LABEL: name: int_load_phi_gpr83 ; CHECK: bb.0:84 ; CHECK-NEXT: successors: %bb.1(0x80000000)85 ; CHECK-NEXT: liveins: $w086 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w088 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @var_fp89 ; CHECK-NEXT: %fp_load:gpr(s32) = G_LOAD [[GV]](p0) :: (load (s32) from @var_int)90 ; CHECK-NEXT: {{ $}}91 ; CHECK-NEXT: bb.1:92 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)93 ; CHECK-NEXT: {{ $}}94 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr(s32) = PHI %fp_load(s32), %bb.0, [[PHI]](s32), %bb.195 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.196 ; CHECK-NEXT: {{ $}}97 ; CHECK-NEXT: bb.2:98 ; CHECK-NEXT: $w1 = COPY [[PHI]](s32)99 ; CHECK-NEXT: RET_ReallyLR implicit $w1100 bb.0:101 liveins: $w0102 successors: %bb.1103 %0:_(s32) = COPY $w0104 %1:_(p0) = G_GLOBAL_VALUE @var_fp105 %fp_load:_(s32) = G_LOAD %1 :: (load 4 from @var_int)106 107 bb.1:108 successors: %bb.1, %bb.2109 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1110 G_BRCOND %0, %bb.1111 112 bb.2:113 $w1 = COPY %2114 RET_ReallyLR implicit $w1115...116 117---118name: int_load_phi_fpr119legalized: true120regBankSelected: false121tracksRegLiveness: true122body: |123 ; CHECK-LABEL: name: int_load_phi_fpr124 ; CHECK: bb.0:125 ; CHECK-NEXT: successors: %bb.1(0x80000000)126 ; CHECK-NEXT: liveins: $w0127 ; CHECK-NEXT: {{ $}}128 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0129 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @var_fp130 ; CHECK-NEXT: %fp_load:fpr(s32) = G_LOAD [[GV]](p0) :: (load (s32) from @var_int)131 ; CHECK-NEXT: {{ $}}132 ; CHECK-NEXT: bb.1:133 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)134 ; CHECK-NEXT: {{ $}}135 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s32), %bb.0, [[PHI]](s32), %bb.1136 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1137 ; CHECK-NEXT: {{ $}}138 ; CHECK-NEXT: bb.2:139 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)140 ; CHECK-NEXT: RET_ReallyLR implicit $s0141 bb.0:142 liveins: $w0143 successors: %bb.1144 %0:_(s32) = COPY $w0145 %1:_(p0) = G_GLOBAL_VALUE @var_fp146 %fp_load:_(s32) = G_LOAD %1 :: (load 4 from @var_int)147 148 bb.1:149 successors: %bb.1, %bb.2150 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1151 G_BRCOND %0, %bb.1152 153 bb.2:154 $s0 = COPY %2155 RET_ReallyLR implicit $s0156...157 158---159name: array_load_double160legalized: true161regBankSelected: false162tracksRegLiveness: true163body: |164 ; CHECK-LABEL: name: array_load_double165 ; CHECK: bb.0:166 ; CHECK-NEXT: successors: %bb.1(0x80000000)167 ; CHECK-NEXT: liveins: $w0168 ; CHECK-NEXT: {{ $}}169 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0170 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @array_double171 ; CHECK-NEXT: %fp_load:fpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @array_double)172 ; CHECK-NEXT: {{ $}}173 ; CHECK-NEXT: bb.1:174 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)175 ; CHECK-NEXT: {{ $}}176 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1177 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1178 ; CHECK-NEXT: {{ $}}179 ; CHECK-NEXT: bb.2:180 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)181 ; CHECK-NEXT: RET_ReallyLR implicit $s0182 bb.0:183 liveins: $w0184 successors: %bb.1185 %0:_(s32) = COPY $w0186 %1:_(p0) = G_GLOBAL_VALUE @array_double187 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @array_double)188 189 bb.1:190 successors: %bb.1, %bb.2191 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1192 G_BRCOND %0, %bb.1193 194 bb.2:195 $s0 = COPY %2196 RET_ReallyLR implicit $s0197...198 199---200name: struct_array_load_double201legalized: true202regBankSelected: false203tracksRegLiveness: true204body: |205 ; CHECK-LABEL: name: struct_array_load_double206 ; CHECK: bb.0:207 ; CHECK-NEXT: successors: %bb.1(0x80000000)208 ; CHECK-NEXT: liveins: $w0209 ; CHECK-NEXT: {{ $}}210 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0211 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @struct_array_double212 ; CHECK-NEXT: %fp_load:fpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @struct_array_double)213 ; CHECK-NEXT: {{ $}}214 ; CHECK-NEXT: bb.1:215 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)216 ; CHECK-NEXT: {{ $}}217 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1218 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: bb.2:221 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)222 ; CHECK-NEXT: RET_ReallyLR implicit $s0223 bb.0:224 liveins: $w0225 successors: %bb.1226 %0:_(s32) = COPY $w0227 %1:_(p0) = G_GLOBAL_VALUE @struct_array_double228 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @struct_array_double)229 230 bb.1:231 successors: %bb.1, %bb.2232 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1233 G_BRCOND %0, %bb.1234 235 bb.2:236 $s0 = COPY %2237 RET_ReallyLR implicit $s0238...239 240---241name: struct_struct_array_load_double242legalized: true243regBankSelected: false244tracksRegLiveness: true245body: |246 ; CHECK-LABEL: name: struct_struct_array_load_double247 ; CHECK: bb.0:248 ; CHECK-NEXT: successors: %bb.1(0x80000000)249 ; CHECK-NEXT: liveins: $w0250 ; CHECK-NEXT: {{ $}}251 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0252 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @struct_struct_array_double253 ; CHECK-NEXT: %fp_load:fpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @struct_struct_array_double)254 ; CHECK-NEXT: {{ $}}255 ; CHECK-NEXT: bb.1:256 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)257 ; CHECK-NEXT: {{ $}}258 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1259 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1260 ; CHECK-NEXT: {{ $}}261 ; CHECK-NEXT: bb.2:262 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)263 ; CHECK-NEXT: RET_ReallyLR implicit $s0264 bb.0:265 liveins: $w0266 successors: %bb.1267 %0:_(s32) = COPY $w0268 %1:_(p0) = G_GLOBAL_VALUE @struct_struct_array_double269 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @struct_struct_array_double)270 271 bb.1:272 successors: %bb.1, %bb.2273 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1274 G_BRCOND %0, %bb.1275 276 bb.2:277 $s0 = COPY %2278 RET_ReallyLR implicit $s0279...280 281---282name: array_load_int_gpr283legalized: true284regBankSelected: false285tracksRegLiveness: true286body: |287 ; CHECK-LABEL: name: array_load_int_gpr288 ; CHECK: bb.0:289 ; CHECK-NEXT: successors: %bb.1(0x80000000)290 ; CHECK-NEXT: liveins: $w0291 ; CHECK-NEXT: {{ $}}292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0293 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @array_int294 ; CHECK-NEXT: %fp_load:gpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @array_int)295 ; CHECK-NEXT: {{ $}}296 ; CHECK-NEXT: bb.1:297 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)298 ; CHECK-NEXT: {{ $}}299 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1300 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1301 ; CHECK-NEXT: {{ $}}302 ; CHECK-NEXT: bb.2:303 ; CHECK-NEXT: $w1 = COPY [[PHI]](s32)304 ; CHECK-NEXT: RET_ReallyLR implicit $w1305 bb.0:306 liveins: $w0307 successors: %bb.1308 %0:_(s32) = COPY $w0309 %1:_(p0) = G_GLOBAL_VALUE @array_int310 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @array_int)311 312 bb.1:313 successors: %bb.1, %bb.2314 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1315 G_BRCOND %0, %bb.1316 317 bb.2:318 $w1 = COPY %2319 RET_ReallyLR implicit $w1320...321 322---323name: array_load_int_fpr324legalized: true325regBankSelected: false326tracksRegLiveness: true327body: |328 ; CHECK-LABEL: name: array_load_int_fpr329 ; CHECK: bb.0:330 ; CHECK-NEXT: successors: %bb.1(0x80000000)331 ; CHECK-NEXT: liveins: $w0332 ; CHECK-NEXT: {{ $}}333 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0334 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @array_int335 ; CHECK-NEXT: %fp_load:fpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @array_int)336 ; CHECK-NEXT: {{ $}}337 ; CHECK-NEXT: bb.1:338 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)339 ; CHECK-NEXT: {{ $}}340 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1341 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1342 ; CHECK-NEXT: {{ $}}343 ; CHECK-NEXT: bb.2:344 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)345 ; CHECK-NEXT: RET_ReallyLR implicit $s0346 bb.0:347 liveins: $w0348 successors: %bb.1349 %0:_(s32) = COPY $w0350 %1:_(p0) = G_GLOBAL_VALUE @array_int351 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @array_int)352 353 bb.1:354 successors: %bb.1, %bb.2355 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1356 G_BRCOND %0, %bb.1357 358 bb.2:359 $s0 = COPY %2360 RET_ReallyLR implicit $s0361...362 363---364name: struct_array_load_int_gpr365legalized: true366regBankSelected: false367tracksRegLiveness: true368body: |369 ; CHECK-LABEL: name: struct_array_load_int_gpr370 ; CHECK: bb.0:371 ; CHECK-NEXT: successors: %bb.1(0x80000000)372 ; CHECK-NEXT: liveins: $w0373 ; CHECK-NEXT: {{ $}}374 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0375 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @struct_array_int376 ; CHECK-NEXT: %fp_load:gpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @struct_array_int)377 ; CHECK-NEXT: {{ $}}378 ; CHECK-NEXT: bb.1:379 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)380 ; CHECK-NEXT: {{ $}}381 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1382 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1383 ; CHECK-NEXT: {{ $}}384 ; CHECK-NEXT: bb.2:385 ; CHECK-NEXT: $w1 = COPY [[PHI]](s32)386 ; CHECK-NEXT: RET_ReallyLR implicit $w1387 bb.0:388 liveins: $w0389 successors: %bb.1390 %0:_(s32) = COPY $w0391 %1:_(p0) = G_GLOBAL_VALUE @struct_array_int392 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @struct_array_int)393 394 bb.1:395 successors: %bb.1, %bb.2396 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1397 G_BRCOND %0, %bb.1398 399 bb.2:400 $w1 = COPY %2401 RET_ReallyLR implicit $w1402...403 404---405name: struct_array_load_int_fpr406legalized: true407regBankSelected: false408tracksRegLiveness: true409body: |410 ; CHECK-LABEL: name: struct_array_load_int_fpr411 ; CHECK: bb.0:412 ; CHECK-NEXT: successors: %bb.1(0x80000000)413 ; CHECK-NEXT: liveins: $w0414 ; CHECK-NEXT: {{ $}}415 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0416 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @struct_array_int417 ; CHECK-NEXT: %fp_load:fpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @struct_array_int)418 ; CHECK-NEXT: {{ $}}419 ; CHECK-NEXT: bb.1:420 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)421 ; CHECK-NEXT: {{ $}}422 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1423 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1424 ; CHECK-NEXT: {{ $}}425 ; CHECK-NEXT: bb.2:426 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)427 ; CHECK-NEXT: RET_ReallyLR implicit $s0428 bb.0:429 liveins: $w0430 successors: %bb.1431 %0:_(s32) = COPY $w0432 %1:_(p0) = G_GLOBAL_VALUE @struct_array_int433 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @struct_array_int)434 435 bb.1:436 successors: %bb.1, %bb.2437 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1438 G_BRCOND %0, %bb.1439 440 bb.2:441 $s0 = COPY %2442 RET_ReallyLR implicit $s0443...444 445---446name: struct_struct_array_load_int_gpr447legalized: true448regBankSelected: false449tracksRegLiveness: true450body: |451 ; CHECK-LABEL: name: struct_struct_array_load_int_gpr452 ; CHECK: bb.0:453 ; CHECK-NEXT: successors: %bb.1(0x80000000)454 ; CHECK-NEXT: liveins: $w0455 ; CHECK-NEXT: {{ $}}456 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0457 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @struct_struct_array_int458 ; CHECK-NEXT: %fp_load:gpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @struct_struct_array_int)459 ; CHECK-NEXT: {{ $}}460 ; CHECK-NEXT: bb.1:461 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)462 ; CHECK-NEXT: {{ $}}463 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1464 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1465 ; CHECK-NEXT: {{ $}}466 ; CHECK-NEXT: bb.2:467 ; CHECK-NEXT: $w1 = COPY [[PHI]](s32)468 ; CHECK-NEXT: RET_ReallyLR implicit $w1469 bb.0:470 liveins: $w0471 successors: %bb.1472 %0:_(s32) = COPY $w0473 %1:_(p0) = G_GLOBAL_VALUE @struct_struct_array_int474 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @struct_struct_array_int)475 476 bb.1:477 successors: %bb.1, %bb.2478 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1479 G_BRCOND %0, %bb.1480 481 bb.2:482 $w1 = COPY %2483 RET_ReallyLR implicit $w1484...485 486---487name: struct_struct_array_load_int_fpr488legalized: true489regBankSelected: false490tracksRegLiveness: true491body: |492 ; CHECK-LABEL: name: struct_struct_array_load_int_fpr493 ; CHECK: bb.0:494 ; CHECK-NEXT: successors: %bb.1(0x80000000)495 ; CHECK-NEXT: liveins: $w0496 ; CHECK-NEXT: {{ $}}497 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0498 ; CHECK-NEXT: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @struct_struct_array_int499 ; CHECK-NEXT: %fp_load:fpr(s64) = G_LOAD [[GV]](p0) :: (dereferenceable load (s64) from @struct_struct_array_int)500 ; CHECK-NEXT: {{ $}}501 ; CHECK-NEXT: bb.1:502 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)503 ; CHECK-NEXT: {{ $}}504 ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr(s32) = PHI %fp_load(s64), %bb.0, [[PHI]](s32), %bb.1505 ; CHECK-NEXT: G_BRCOND [[COPY]](s32), %bb.1506 ; CHECK-NEXT: {{ $}}507 ; CHECK-NEXT: bb.2:508 ; CHECK-NEXT: $s0 = COPY [[PHI]](s32)509 ; CHECK-NEXT: RET_ReallyLR implicit $s0510 bb.0:511 liveins: $w0512 successors: %bb.1513 %0:_(s32) = COPY $w0514 %1:_(p0) = G_GLOBAL_VALUE @struct_struct_array_int515 %fp_load:_(s64) = G_LOAD %1(p0) :: (dereferenceable load (s64) from @struct_struct_array_int)516 517 bb.1:518 successors: %bb.1, %bb.2519 %2:_(s32) = PHI %fp_load, %bb.0, %2, %bb.1520 G_BRCOND %0, %bb.1521 522 bb.2:523 $s0 = COPY %2524 RET_ReallyLR implicit $s0525...526