brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.6 KiB · 94af12a Raw
364 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-FAST3# RUN: llc -mtriple=aarch64-unknown-unknown -mattr=+addr-lsl-slow-14 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SLOW4 5--- |6  define void @strxrox(ptr %addr) { ret void }7  define void @strxrox_p0(ptr %addr) { ret void }8  define void @strdrox(ptr %addr) { ret void }9  define void @strwrox(ptr %addr) { ret void }10  define void @strsrox(ptr %addr) { ret void }11  define void @strhrox(ptr %addr) { ret void }12  define void @strqrox(ptr %addr) { ret void }13  define void @shl_fast_3(ptr %addr) { ret void }14  define void @shl_slow_1(ptr %addr) { ret void }15  define void @shl_slow_1_more_than_one_use(ptr %addr) { ret void }16  define void @shl_slow_4(ptr %addr) { ret void }17  define void @shl_slow_4_more_than_one_use(ptr %addr) { ret void }18  define void @shl_p0(ptr %addr) { ret void }19...20 21---22name:            strxrox23alignment:       424legalized:       true25regBankSelected: true26tracksRegLiveness: true27machineFunctionInfo: {}28body:             |29  bb.0:30    liveins: $x0, $x1, $x231    ; CHECK-LABEL: name: strxrox32    ; CHECK: liveins: $x0, $x1, $x233    ; CHECK-NEXT: {{  $}}34    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x035    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x136    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x237    ; CHECK-NEXT: STRXroX [[COPY2]], [[COPY]], [[COPY1]], 0, 0 :: (store (s64) into %ir.addr)38    %0:gpr(p0) = COPY $x039    %1:gpr(s64) = COPY $x140    %ptr:gpr(p0) = G_PTR_ADD %0, %141    %3:gpr(s64) = COPY $x242    G_STORE %3, %ptr :: (store (s64) into %ir.addr)43...44---45name:            strxrox_p046alignment:       447legalized:       true48regBankSelected: true49tracksRegLiveness: true50machineFunctionInfo: {}51body:             |52  bb.0:53    liveins: $x0, $x1, $x254    ; CHECK-LABEL: name: strxrox_p055    ; CHECK: liveins: $x0, $x1, $x256    ; CHECK-NEXT: {{  $}}57    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x058    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x159    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64all = COPY $x260    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY [[COPY2]]61    ; CHECK-NEXT: STRXroX [[COPY3]], [[COPY]], [[COPY1]], 0, 0 :: (store (p0) into %ir.addr)62    %0:gpr(p0) = COPY $x063    %1:gpr(s64) = COPY $x164    %ptr:gpr(p0) = G_PTR_ADD %0, %165    %3:gpr(p0) = COPY $x266    G_STORE %3, %ptr :: (store (p0) into %ir.addr)67...68---69name:            strdrox70alignment:       471legalized:       true72regBankSelected: true73tracksRegLiveness: true74machineFunctionInfo: {}75body:             |76  bb.0:77    liveins: $x0, $x1, $d278    ; CHECK-LABEL: name: strdrox79    ; CHECK: liveins: $x0, $x1, $d280    ; CHECK-NEXT: {{  $}}81    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x082    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x183    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr64 = COPY $d284    ; CHECK-NEXT: STRDroX [[COPY2]], [[COPY]], [[COPY1]], 0, 0 :: (store (s64) into %ir.addr)85    %0:gpr(p0) = COPY $x086    %1:gpr(s64) = COPY $x187    %ptr:gpr(p0) = G_PTR_ADD %0, %188    %3:fpr(s64) = COPY $d289    G_STORE %3, %ptr :: (store (s64) into %ir.addr)90...91---92name:            strwrox93alignment:       494legalized:       true95regBankSelected: true96tracksRegLiveness: true97machineFunctionInfo: {}98body:             |99  bb.0:100    liveins: $x0, $x1, $w2101    ; CHECK-LABEL: name: strwrox102    ; CHECK: liveins: $x0, $x1, $w2103    ; CHECK-NEXT: {{  $}}104    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0105    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1106    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2107    ; CHECK-NEXT: STRWroX [[COPY2]], [[COPY]], [[COPY1]], 0, 0 :: (store (s32) into %ir.addr)108    %0:gpr(p0) = COPY $x0109    %1:gpr(s64) = COPY $x1110    %ptr:gpr(p0) = G_PTR_ADD %0, %1111    %3:gpr(s32) = COPY $w2112    G_STORE %3, %ptr :: (store (s32) into %ir.addr)113...114---115name:            strsrox116alignment:       4117legalized:       true118regBankSelected: true119tracksRegLiveness: true120machineFunctionInfo: {}121body:             |122  bb.0:123    liveins: $x0, $x1, $s2124    ; CHECK-LABEL: name: strsrox125    ; CHECK: liveins: $x0, $x1, $s2126    ; CHECK-NEXT: {{  $}}127    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0128    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1129    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr32 = COPY $s2130    ; CHECK-NEXT: STRSroX [[COPY2]], [[COPY]], [[COPY1]], 0, 0 :: (store (s32) into %ir.addr)131    %0:gpr(p0) = COPY $x0132    %1:gpr(s64) = COPY $x1133    %ptr:gpr(p0) = G_PTR_ADD %0, %1134    %3:fpr(s32) = COPY $s2135    G_STORE %3, %ptr :: (store (s32) into %ir.addr)136...137---138name:            strhrox139alignment:       4140legalized:       true141regBankSelected: true142tracksRegLiveness: true143machineFunctionInfo: {}144body:             |145  bb.0:146    liveins: $x0, $x1, $h0147    ; CHECK-LABEL: name: strhrox148    ; CHECK: liveins: $x0, $x1, $h0149    ; CHECK-NEXT: {{  $}}150    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0151    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1152    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr16 = COPY $h0153    ; CHECK-NEXT: STRHroX [[COPY2]], [[COPY]], [[COPY1]], 0, 0 :: (store (s16) into %ir.addr)154    %0:gpr(p0) = COPY $x0155    %1:gpr(s64) = COPY $x1156    %ptr:gpr(p0) = G_PTR_ADD %0, %1157    %3:fpr(s16) = COPY $h0158    G_STORE %3, %ptr :: (store (s16) into %ir.addr)159...160---161name:            strqrox162alignment:       4163legalized:       true164regBankSelected: true165tracksRegLiveness: true166machineFunctionInfo: {}167body:             |168  bb.0:169    liveins: $x0, $x1, $q2170    ; CHECK-LABEL: name: strqrox171    ; CHECK: liveins: $x0, $x1, $q2172    ; CHECK-NEXT: {{  $}}173    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0174    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1175    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr128 = COPY $q2176    ; CHECK-NEXT: STRQroX [[COPY2]], [[COPY]], [[COPY1]], 0, 0 :: (store (<2 x s64>) into %ir.addr)177    %0:gpr(p0) = COPY $x0178    %1:gpr(s64) = COPY $x1179    %ptr:gpr(p0) = G_PTR_ADD %0, %1180    %2:fpr(<2 x s64>) = COPY $q2181    G_STORE %2, %ptr :: (store (<2 x s64>) into %ir.addr)182...183---184name:            shl_fast_3185alignment:       4186legalized:       true187regBankSelected: true188tracksRegLiveness: true189machineFunctionInfo: {}190body:             |191  bb.0:192    liveins: $x0, $x1, $x2193    ; CHECK-LABEL: name: shl_fast_3194    ; CHECK: liveins: $x0, $x1, $x2195    ; CHECK-NEXT: {{  $}}196    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0197    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x1198    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2199    ; CHECK-NEXT: STRXroX [[COPY2]], [[COPY1]], [[COPY]], 0, 1 :: (store (s64) into %ir.addr)200    %0:gpr(s64) = COPY $x0201    %1:gpr(s64) = G_CONSTANT i64 3202    %2:gpr(s64) = G_SHL %0, %1(s64)203    %3:gpr(p0) = COPY $x1204    %ptr:gpr(p0) = G_PTR_ADD %3, %2205    %4:gpr(s64) = COPY $x2206    G_STORE %4, %ptr :: (store (s64) into %ir.addr)207...208---209name:            shl_slow_1210alignment:       4211legalized:       true212regBankSelected: true213tracksRegLiveness: true214machineFunctionInfo: {}215body:             |216  bb.0:217    liveins: $x0, $x1, $x2218    ; CHECK-LABEL: name: shl_slow_1219    ; CHECK: liveins: $x0, $x1, $x2220    ; CHECK-NEXT: {{  $}}221    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0222    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x1223    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2224    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY [[COPY2]].sub_32225    ; CHECK-NEXT: STRHHroX [[COPY3]], [[COPY1]], [[COPY]], 0, 1 :: (store (s16) into %ir.addr)226    %0:gpr(s64) = COPY $x0227    %1:gpr(s64) = G_CONSTANT i64 1228    %2:gpr(s64) = G_SHL %0, %1(s64)229    %3:gpr(p0) = COPY $x1230    %ptr:gpr(p0) = G_PTR_ADD %3, %2231    %4:gpr(s64) = COPY $x2232    G_STORE %4, %ptr :: (store (s16) into %ir.addr)233...234---235name:            shl_slow_1_more_than_one_use236alignment:       4237legalized:       true238regBankSelected: true239tracksRegLiveness: true240machineFunctionInfo: {}241body:             |242  bb.0:243    liveins: $x0, $x1, $x2244    ; CHECK-FAST-LABEL: name: shl_slow_1_more_than_one_use245    ; CHECK-FAST: liveins: $x0, $x1, $x2246    ; CHECK-FAST-NEXT: {{  $}}247    ; CHECK-FAST-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0248    ; CHECK-FAST-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x1249    ; CHECK-FAST-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2250    ; CHECK-FAST-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY [[COPY2]].sub_32251    ; CHECK-FAST-NEXT: STRHHroX [[COPY3]], [[COPY1]], [[COPY]], 0, 1 :: (store (s16) into %ir.addr)252    ; CHECK-FAST-NEXT: [[COPY4:%[0-9]+]]:gpr32 = COPY [[COPY2]].sub_32253    ; CHECK-FAST-NEXT: STRHHroX [[COPY4]], [[COPY1]], [[COPY]], 0, 1 :: (store (s16) into %ir.addr)254    ;255    ; CHECK-SLOW-LABEL: name: shl_slow_1_more_than_one_use256    ; CHECK-SLOW: liveins: $x0, $x1, $x2257    ; CHECK-SLOW-NEXT: {{  $}}258    ; CHECK-SLOW-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0259    ; CHECK-SLOW-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1260    ; CHECK-SLOW-NEXT: %ptr:gpr64common = ADDXrs [[COPY1]], [[COPY]], 1261    ; CHECK-SLOW-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x2262    ; CHECK-SLOW-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY [[COPY2]].sub_32263    ; CHECK-SLOW-NEXT: STRHHui [[COPY3]], %ptr, 0 :: (store (s16) into %ir.addr)264    ; CHECK-SLOW-NEXT: [[COPY4:%[0-9]+]]:gpr32 = COPY [[COPY2]].sub_32265    ; CHECK-SLOW-NEXT: STRHHui [[COPY4]], %ptr, 0 :: (store (s16) into %ir.addr)266    %0:gpr(s64) = COPY $x0267    %1:gpr(s64) = G_CONSTANT i64 1268    %2:gpr(s64) = G_SHL %0, %1(s64)269    %3:gpr(p0) = COPY $x1270    %ptr:gpr(p0) = G_PTR_ADD %3, %2271    %4:gpr(s64) = COPY $x2272    %5:gpr(s16) = G_TRUNC %4273    G_STORE %4, %ptr :: (store (s16) into %ir.addr)274    G_STORE %4, %ptr :: (store (s16) into %ir.addr)275...276---277name:            shl_slow_4278alignment:       4279legalized:       true280regBankSelected: true281tracksRegLiveness: true282machineFunctionInfo: {}283body:             |284  bb.0:285    liveins: $x0, $x1, $x2, $q0286    ; CHECK-LABEL: name: shl_slow_4287    ; CHECK: liveins: $x0, $x1, $x2, $q0288    ; CHECK-NEXT: {{  $}}289    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0290    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x1291    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0292    ; CHECK-NEXT: STRQroX [[COPY2]], [[COPY1]], [[COPY]], 0, 1 :: (store (s128) into %ir.addr)293    %0:gpr(s64) = COPY $x0294    %1:gpr(s64) = G_CONSTANT i64 4295    %2:gpr(s64) = G_SHL %0, %1(s64)296    %3:gpr(p0) = COPY $x1297    %ptr:gpr(p0) = G_PTR_ADD %3, %2298    %5:fpr(s128) = COPY $q0299    G_STORE %5, %ptr :: (store (s128) into %ir.addr)300...301---302name:            shl_slow_4_more_than_one_use303alignment:       4304legalized:       true305regBankSelected: true306tracksRegLiveness: true307machineFunctionInfo: {}308body:             |309  bb.0:310    liveins: $x0, $x1, $x2, $q0311    ; CHECK-FAST-LABEL: name: shl_slow_4_more_than_one_use312    ; CHECK-FAST: liveins: $x0, $x1, $x2, $q0313    ; CHECK-FAST-NEXT: {{  $}}314    ; CHECK-FAST-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0315    ; CHECK-FAST-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x1316    ; CHECK-FAST-NEXT: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0317    ; CHECK-FAST-NEXT: STRQroX [[COPY2]], [[COPY1]], [[COPY]], 0, 1 :: (store (s128) into %ir.addr)318    ; CHECK-FAST-NEXT: STRQroX [[COPY2]], [[COPY1]], [[COPY]], 0, 1 :: (store (s128) into %ir.addr)319    ;320    ; CHECK-SLOW-LABEL: name: shl_slow_4_more_than_one_use321    ; CHECK-SLOW: liveins: $x0, $x1, $x2, $q0322    ; CHECK-SLOW-NEXT: {{  $}}323    ; CHECK-SLOW-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0324    ; CHECK-SLOW-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1325    ; CHECK-SLOW-NEXT: %ptr:gpr64common = ADDXrs [[COPY1]], [[COPY]], 4326    ; CHECK-SLOW-NEXT: [[COPY2:%[0-9]+]]:fpr128 = COPY $q0327    ; CHECK-SLOW-NEXT: STRQui [[COPY2]], %ptr, 0 :: (store (s128) into %ir.addr)328    ; CHECK-SLOW-NEXT: STRQui [[COPY2]], %ptr, 0 :: (store (s128) into %ir.addr)329    %0:gpr(s64) = COPY $x0330    %1:gpr(s64) = G_CONSTANT i64 4331    %2:gpr(s64) = G_SHL %0, %1(s64)332    %3:gpr(p0) = COPY $x1333    %ptr:gpr(p0) = G_PTR_ADD %3, %2334    %5:fpr(s128) = COPY $q0335    G_STORE %5, %ptr :: (store (s128) into %ir.addr)336    G_STORE %5, %ptr :: (store (s128) into %ir.addr)337...338---339name:            shl_p0340alignment:       4341legalized:       true342regBankSelected: true343tracksRegLiveness: true344machineFunctionInfo: {}345body:             |346  bb.0:347    liveins: $x0, $x1, $x2348    ; CHECK-LABEL: name: shl_p0349    ; CHECK: liveins: $x0, $x1, $x2350    ; CHECK-NEXT: {{  $}}351    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0352    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x1353    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64all = COPY $x2354    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY [[COPY2]]355    ; CHECK-NEXT: STRXroX [[COPY3]], [[COPY1]], [[COPY]], 0, 1 :: (store (p0) into %ir.addr)356    %0:gpr(s64) = COPY $x0357    %1:gpr(s64) = G_CONSTANT i64 3358    %2:gpr(s64) = G_SHL %0, %1(s64)359    %3:gpr(p0) = COPY $x1360    %ptr:gpr(p0) = G_PTR_ADD %3, %2361    %4:gpr(p0) = COPY $x2362    G_STORE %4, %ptr :: (store (p0) into %ir.addr)363...364