brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.9 KiB · b3261a9 Raw
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