brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.1 KiB · 5569175 Raw
525 lines · plain
1# RUN: llc -mtriple=aarch64-linux-gnu -run-pass=greedy -aarch64-stack-hazard-size=0 %s -o - | FileCheck %s2# RUN: llc -mtriple=aarch64-linux-gnu -start-before=greedy -stop-after=aarch64-expand-pseudo -verify-machineinstrs -aarch64-stack-hazard-size=0 %s -o - | FileCheck %s --check-prefix=EXPAND3--- |4  ; ModuleID = '<stdin>'5  source_filename = "<stdin>"6  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"7  target triple = "aarch64--linux-gnu"8 9  define aarch64_sve_vector_pcs void @spills_fills_stack_id_ppr() #0 { entry: unreachable }10  define aarch64_sve_vector_pcs void @spills_fills_stack_id_ppr2() #0 { entry: unreachable }11  define aarch64_sve_vector_pcs void @spills_fills_stack_id_ppr2mul2() #0 { entry: unreachable }12  define aarch64_sve_vector_pcs void @spills_fills_stack_id_pnr() #1 { entry: unreachable }13  define aarch64_sve_vector_pcs void @spills_fills_stack_id_virtreg_pnr() #1 { entry: unreachable }14  define aarch64_sve_vector_pcs void @spills_fills_stack_id_virtreg_ppr_to_pnr() #1 { entry: unreachable }15  define aarch64_sve_vector_pcs void @spills_fills_stack_id_zpr() #0 { entry: unreachable }16  define aarch64_sve_vector_pcs void @spills_fills_stack_id_zpr2() #0 { entry: unreachable }17  define aarch64_sve_vector_pcs void @spills_fills_stack_id_zpr2strided() #2 { entry: unreachable }18  define aarch64_sve_vector_pcs void @spills_fills_stack_id_zpr3() #0 { entry: unreachable }19  define aarch64_sve_vector_pcs void @spills_fills_stack_id_zpr4() #0 { entry: unreachable }20  define aarch64_sve_vector_pcs void @spills_fills_stack_id_zpr4strided() #2 { entry: unreachable }21 22  attributes #0 = { nounwind "target-features"="+sve" }23  attributes #1 = { nounwind "target-features"="+sve2p1" }24  attributes #2 = { nounwind "target-features"="+sve,+sme2" "aarch64_pstate_sm_enabled" }25 26...27---28name: spills_fills_stack_id_ppr29tracksRegLiveness: true30registers:31  - { id: 0, class: ppr }32stack:33liveins:34  - { reg: '$p0', virtual-reg: '%0' }35body:             |36  bb.0.entry:37    liveins: $p038 39    ; CHECK-LABEL: name: spills_fills_stack_id_ppr40    ; CHECK: stack:41    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 2, alignment: 242    ; CHECK-NEXT:     stack-id: scalable-predicate-vector, callee-saved-register: ''43 44    ; EXPAND-LABEL: name: spills_fills_stack_id_ppr45    ; EXPAND: STR_PXI $p0, $sp, 746    ; EXPAND: $p0 = LDR_PXI $sp, 747 48    %0:ppr = COPY $p049 50    $p0 = IMPLICIT_DEF51    $p1 = IMPLICIT_DEF52    $p2 = IMPLICIT_DEF53    $p3 = IMPLICIT_DEF54    $p4 = IMPLICIT_DEF55    $p5 = IMPLICIT_DEF56    $p6 = IMPLICIT_DEF57    $p7 = IMPLICIT_DEF58    $p8 = IMPLICIT_DEF59    $p9 = IMPLICIT_DEF60    $p10 = IMPLICIT_DEF61    $p11 = IMPLICIT_DEF62    $p12 = IMPLICIT_DEF63    $p13 = IMPLICIT_DEF64    $p14 = IMPLICIT_DEF65    $p15 = IMPLICIT_DEF66 67    $p0 = COPY %068    RET_ReallyLR69...70---71name: spills_fills_stack_id_ppr272tracksRegLiveness: true73registers:74  - { id: 0, class: ppr2 }75stack:76liveins:77  - { reg: '$p0_p1', virtual-reg: '%0' }78body:             |79  bb.0.entry:80    liveins: $p0_p181 82    ; CHECK-LABEL: name: spills_fills_stack_id_ppr283    ; CHECK: stack:84    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 285    ; CHECK-NEXT:     stack-id: scalable-predicate-vector, callee-saved-register: ''86 87    ; EXPAND-LABEL: name: spills_fills_stack_id_ppr288    ; EXPAND: STR_PXI $p0, $sp, 689    ; EXPAND: STR_PXI $p1, $sp, 790    ; EXPAND: $p0 = LDR_PXI $sp, 691    ; EXPAND: $p1 = LDR_PXI $sp, 792 93    %0:ppr2 = COPY $p0_p194 95    $p0 = IMPLICIT_DEF96    $p1 = IMPLICIT_DEF97    $p2 = IMPLICIT_DEF98    $p3 = IMPLICIT_DEF99    $p4 = IMPLICIT_DEF100    $p5 = IMPLICIT_DEF101    $p6 = IMPLICIT_DEF102    $p7 = IMPLICIT_DEF103    $p8 = IMPLICIT_DEF104    $p9 = IMPLICIT_DEF105    $p10 = IMPLICIT_DEF106    $p11 = IMPLICIT_DEF107    $p12 = IMPLICIT_DEF108    $p13 = IMPLICIT_DEF109    $p14 = IMPLICIT_DEF110    $p15 = IMPLICIT_DEF111 112    $p0_p1 = COPY %0113    RET_ReallyLR114...115---116name: spills_fills_stack_id_ppr2mul2117tracksRegLiveness: true118registers:119  - { id: 0, class: ppr2mul2 }120stack:121liveins:122  - { reg: '$p0_p1', virtual-reg: '%0' }123body:             |124  bb.0.entry:125    liveins: $p0_p1126 127    ; CHECK-LABEL: name: spills_fills_stack_id_ppr2128    ; CHECK: stack:129    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 2130    ; CHECK-NEXT:     stack-id: scalable-predicate-vector, callee-saved-register: ''131 132    ; EXPAND-LABEL: name: spills_fills_stack_id_ppr2mul2133    ; EXPAND: STR_PXI $p0, $sp, 6134    ; EXPAND: STR_PXI $p1, $sp, 7135    ; EXPAND: $p0 = LDR_PXI $sp, 6136    ; EXPAND: $p1 = LDR_PXI $sp, 7137 138    %0:ppr2mul2 = COPY $p0_p1139 140    $p0 = IMPLICIT_DEF141    $p1 = IMPLICIT_DEF142    $p2 = IMPLICIT_DEF143    $p3 = IMPLICIT_DEF144    $p4 = IMPLICIT_DEF145    $p5 = IMPLICIT_DEF146    $p6 = IMPLICIT_DEF147    $p7 = IMPLICIT_DEF148    $p8 = IMPLICIT_DEF149    $p9 = IMPLICIT_DEF150    $p10 = IMPLICIT_DEF151    $p11 = IMPLICIT_DEF152    $p12 = IMPLICIT_DEF153    $p13 = IMPLICIT_DEF154    $p14 = IMPLICIT_DEF155    $p15 = IMPLICIT_DEF156 157    $p0_p1 = COPY %0158    RET_ReallyLR159...160---161name: spills_fills_stack_id_pnr162tracksRegLiveness: true163registers:164  - { id: 0, class: pnr }165stack:166liveins:167  - { reg: '$pn0', virtual-reg: '%0' }168body:             |169  bb.0.entry:170    liveins: $pn0171 172    ; CHECK-LABEL: name: spills_fills_stack_id_pnr173    ; CHECK: stack:174    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 2, alignment: 2175    ; CHECK-NEXT:     stack-id: scalable-predicate-vector, callee-saved-register: ''176 177    ; EXPAND-LABEL: name: spills_fills_stack_id_pnr178    ; EXPAND: STR_PXI $pn0, $sp, 7179    ; EXPAND: $pn0 = LDR_PXI $sp, 7, implicit-def $pn0180 181    %0:pnr = COPY $pn0182 183    $pn0 = IMPLICIT_DEF184    $pn1 = IMPLICIT_DEF185    $pn2 = IMPLICIT_DEF186    $pn3 = IMPLICIT_DEF187    $pn4 = IMPLICIT_DEF188    $pn5 = IMPLICIT_DEF189    $pn6 = IMPLICIT_DEF190    $pn7 = IMPLICIT_DEF191    $pn8 = IMPLICIT_DEF192    $pn9 = IMPLICIT_DEF193    $pn10 = IMPLICIT_DEF194    $pn11 = IMPLICIT_DEF195    $pn12 = IMPLICIT_DEF196    $pn13 = IMPLICIT_DEF197    $pn14 = IMPLICIT_DEF198    $pn15 = IMPLICIT_DEF199 200    $pn0 = COPY %0201    RET_ReallyLR202...203---204name: spills_fills_stack_id_virtreg_pnr205tracksRegLiveness: true206registers:207  - { id: 0, class: pnr_p8to15 }208stack:209body:             |210  bb.0.entry:211    ; CHECK-LABEL: name: spills_fills_stack_id_virtreg_pnr212    ; CHECK: stack:213    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 2, alignment: 2214    ; CHECK-NEXT:     stack-id: scalable-predicate-vector, callee-saved-register: ''215 216    ; EXPAND-LABEL: name: spills_fills_stack_id_virtreg_pnr217    ; EXPAND: renamable $pn8 = WHILEGE_CXX_B218    ; EXPAND: STR_PXI killed renamable $pn8, $sp, 7219    ;220    ; EXPAND: renamable $pn8 = LDR_PXI $sp, 7221    ; EXPAND-NEXT: $p0 = PEXT_PCI_B killed renamable $pn8, 0222 223 224    %0:pnr_p8to15 = WHILEGE_CXX_B undef $x0, undef $x0, 0, implicit-def dead $nzcv225 226    $pn0 = IMPLICIT_DEF227    $pn1 = IMPLICIT_DEF228    $pn2 = IMPLICIT_DEF229    $pn3 = IMPLICIT_DEF230    $pn4 = IMPLICIT_DEF231    $pn5 = IMPLICIT_DEF232    $pn6 = IMPLICIT_DEF233    $pn7 = IMPLICIT_DEF234    $pn8 = IMPLICIT_DEF235    $pn9 = IMPLICIT_DEF236    $pn10 = IMPLICIT_DEF237    $pn11 = IMPLICIT_DEF238    $pn12 = IMPLICIT_DEF239    $pn13 = IMPLICIT_DEF240    $pn14 = IMPLICIT_DEF241    $pn15 = IMPLICIT_DEF242 243    $p0 = PEXT_PCI_B %0, 0244    RET_ReallyLR245...246---247name: spills_fills_stack_id_virtreg_ppr_to_pnr248tracksRegLiveness: true249registers:250  - { id: 0, class: ppr }251  - { id: 1, class: pnr_p8to15 }252stack:253body:             |254  bb.0.entry:255    liveins: $p0256 257    %0:ppr = COPY $p0258 259    $pn0 = IMPLICIT_DEF260    $pn1 = IMPLICIT_DEF261    $pn2 = IMPLICIT_DEF262    $pn3 = IMPLICIT_DEF263    $pn4 = IMPLICIT_DEF264    $pn5 = IMPLICIT_DEF265    $pn6 = IMPLICIT_DEF266    $pn7 = IMPLICIT_DEF267    $pn8 = IMPLICIT_DEF268    $pn9 = IMPLICIT_DEF269    $pn10 = IMPLICIT_DEF270    $pn11 = IMPLICIT_DEF271    $pn12 = IMPLICIT_DEF272    $pn13 = IMPLICIT_DEF273    $pn14 = IMPLICIT_DEF274    $pn15 = IMPLICIT_DEF275 276    %1:pnr_p8to15 = COPY %0277    $p0 = PEXT_PCI_B %1, 0278    RET_ReallyLR279...280---281name: spills_fills_stack_id_zpr282tracksRegLiveness: true283registers:284  - { id: 0, class: zpr }285stack:286liveins:287  - { reg: '$z0', virtual-reg: '%0' }288body:             |289  bb.0.entry:290    liveins: $z0291 292    ; CHECK-LABEL: name: spills_fills_stack_id_zpr293    ; CHECK: stack:294    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 16, alignment: 16295    ; CHECK-NEXT:     stack-id: scalable-vector, callee-saved-register: ''296 297    ; EXPAND-LABEL: name: spills_fills_stack_id_zpr298    ; EXPAND: STR_ZXI $z0, $sp, 0299    ; EXPAND: $z0 = LDR_ZXI $sp, 0300 301    %0:zpr = COPY $z0302 303    $z0_z1_z2_z3     = IMPLICIT_DEF304    $z4_z5_z6_z7     = IMPLICIT_DEF305    $z8_z9_z10_z11   = IMPLICIT_DEF306    $z12_z13_z14_z15 = IMPLICIT_DEF307    $z16_z17_z18_z19 = IMPLICIT_DEF308    $z20_z21_z22_z23 = IMPLICIT_DEF309    $z24_z25_z26_z27 = IMPLICIT_DEF310    $z28_z29_z30_z31 = IMPLICIT_DEF311 312    $z0 = COPY %0313    RET_ReallyLR314...315---316name: spills_fills_stack_id_zpr2317tracksRegLiveness: true318registers:319  - { id: 0, class: zpr2 }320stack:321liveins:322  - { reg: '$z1_z2', virtual-reg: '%0' }323body:             |324  bb.0.entry:325    liveins: $z1_z2326 327    ; CHECK-LABEL: name: spills_fills_stack_id_zpr2328    ; CHECK: stack:329    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 32, alignment: 16330    ; CHECK-NEXT:     stack-id: scalable-vector331 332    ; EXPAND-LABEL: name: spills_fills_stack_id_zpr2333    ; EXPAND: STR_ZXI $z1, $sp, 0334    ; EXPAND: STR_ZXI $z2, $sp, 1335    ; EXPAND: $z1 = LDR_ZXI $sp, 0336    ; EXPAND: $z2 = LDR_ZXI $sp, 1337 338    %0:zpr2 = COPY $z1_z2339 340    $z0_z1_z2_z3     = IMPLICIT_DEF341    $z4_z5_z6_z7     = IMPLICIT_DEF342    $z8_z9_z10_z11   = IMPLICIT_DEF343    $z12_z13_z14_z15 = IMPLICIT_DEF344    $z16_z17_z18_z19 = IMPLICIT_DEF345    $z20_z21_z22_z23 = IMPLICIT_DEF346    $z24_z25_z26_z27 = IMPLICIT_DEF347    $z28_z29_z30_z31 = IMPLICIT_DEF348 349    $z1_z2 = COPY %0350    RET_ReallyLR351...352---353name: spills_fills_stack_id_zpr2strided354tracksRegLiveness: true355registers:356  - { id: 0, class: zpr2strided }357stack:358liveins:359  - { reg: '$z0_z8', virtual-reg: '%0' }360body:             |361  bb.0.entry:362    liveins: $z0_z1363    successors: %bb.1364 365    $z0_z8 = COPY $z0_z1366 367    B %bb.1368 369  bb.1:370    liveins: $z0_z8371 372    ; CHECK-LABEL: name: spills_fills_stack_id_zpr2strided373    ; CHECK: stack:374    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 32, alignment: 16375    ; CHECK-NEXT:     stack-id: scalable-vector376 377    ; EXPAND-LABEL: name: spills_fills_stack_id_zpr2strided378    ; EXPAND: STR_ZXI $z0, $sp, 0379    ; EXPAND: STR_ZXI $z8, $sp, 1380    ; EXPAND: $z0 = LDR_ZXI $sp, 0381    ; EXPAND: $z8 = LDR_ZXI $sp, 1382 383    %0:zpr2strided = COPY $z0_z8384 385    $z0_z1_z2_z3     = IMPLICIT_DEF386    $z4_z5_z6_z7     = IMPLICIT_DEF387    $z8_z9_z10_z11   = IMPLICIT_DEF388    $z12_z13_z14_z15 = IMPLICIT_DEF389    $z16_z17_z18_z19 = IMPLICIT_DEF390    $z20_z21_z22_z23 = IMPLICIT_DEF391    $z24_z25_z26_z27 = IMPLICIT_DEF392    $z28_z29_z30_z31 = IMPLICIT_DEF393 394    $z0_z8 = COPY %0395    RET_ReallyLR396...397---398name: spills_fills_stack_id_zpr3399tracksRegLiveness: true400registers:401  - { id: 0, class: zpr3 }402stack:403liveins:404  - { reg: '$z0_z1_z2', virtual-reg: '%0' }405body:             |406  bb.0.entry:407    liveins: $z0_z1_z2408 409    ; CHECK-LABEL: name: spills_fills_stack_id_zpr3410    ; CHECK: stack:411    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 48, alignment: 16412    ; CHECK-NEXT:     stack-id: scalable-vector413 414    ; EXPAND-LABEL: name: spills_fills_stack_id_zpr3415    ; EXPAND: STR_ZXI $z0, $sp, 0416    ; EXPAND: STR_ZXI $z1, $sp, 1417    ; EXPAND: STR_ZXI $z2, $sp, 2418    ; EXPAND: $z0 = LDR_ZXI $sp, 0419    ; EXPAND: $z1 = LDR_ZXI $sp, 1420    ; EXPAND: $z2 = LDR_ZXI $sp, 2421 422    %0:zpr3 = COPY $z0_z1_z2423 424    $z0_z1_z2_z3     = IMPLICIT_DEF425    $z4_z5_z6_z7     = IMPLICIT_DEF426    $z8_z9_z10_z11   = IMPLICIT_DEF427    $z12_z13_z14_z15 = IMPLICIT_DEF428    $z16_z17_z18_z19 = IMPLICIT_DEF429    $z20_z21_z22_z23 = IMPLICIT_DEF430    $z24_z25_z26_z27 = IMPLICIT_DEF431    $z28_z29_z30_z31 = IMPLICIT_DEF432 433    $z0_z1_z2 = COPY %0434    RET_ReallyLR435...436---437name: spills_fills_stack_id_zpr4438tracksRegLiveness: true439registers:440  - { id: 0, class: zpr4 }441stack:442liveins:443  - { reg: '$z1_z2_z3_z4', virtual-reg: '%0' }444body:             |445  bb.0.entry:446    liveins: $z1_z2_z3_z4447 448    ; CHECK-LABEL: name: spills_fills_stack_id_zpr4449    ; CHECK: stack:450    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 64, alignment: 16451    ; CHECK-NEXT:     stack-id: scalable-vector452 453    ; EXPAND-LABEL: name: spills_fills_stack_id_zpr4454    ; EXPAND: STR_ZXI $z1, $sp, 0455    ; EXPAND: STR_ZXI $z2, $sp, 1456    ; EXPAND: STR_ZXI $z3, $sp, 2457    ; EXPAND: STR_ZXI $z4, $sp, 3458    ; EXPAND: $z1 = LDR_ZXI $sp, 0459    ; EXPAND: $z2 = LDR_ZXI $sp, 1460    ; EXPAND: $z3 = LDR_ZXI $sp, 2461    ; EXPAND: $z4 = LDR_ZXI $sp, 3462 463    %0:zpr4 = COPY $z1_z2_z3_z4464 465    $z0_z1_z2_z3     = IMPLICIT_DEF466    $z4_z5_z6_z7     = IMPLICIT_DEF467    $z8_z9_z10_z11   = IMPLICIT_DEF468    $z12_z13_z14_z15 = IMPLICIT_DEF469    $z16_z17_z18_z19 = IMPLICIT_DEF470    $z20_z21_z22_z23 = IMPLICIT_DEF471    $z24_z25_z26_z27 = IMPLICIT_DEF472    $z28_z29_z30_z31 = IMPLICIT_DEF473 474    $z1_z2_z3_z4 = COPY %0475    RET_ReallyLR476...477---478name: spills_fills_stack_id_zpr4strided479tracksRegLiveness: true480registers:481  - { id: 0, class: zpr4strided }482stack:483liveins:484  - { reg: '$z0_z4_z8_z12', virtual-reg: '%0' }485body:             |486  bb.0.entry:487    liveins: $z0_z1_z2_z3488 489    $z0_z4_z8_z12 = COPY $z0_z1_z2_z3490 491    B %bb.1492 493  bb.1:494    liveins: $z0_z4_z8_z12495 496    ; CHECK-LABEL: name: spills_fills_stack_id_zpr4strided497    ; CHECK: stack:498    ; CHECK:      - { id: 0, name: '', type: spill-slot, offset: 0, size: 64, alignment: 16499    ; CHECK-NEXT:     stack-id: scalable-vector500 501    ; EXPAND-LABEL: name: spills_fills_stack_id_zpr4strided502    ; EXPAND: STR_ZXI $z0, $sp, 0503    ; EXPAND: STR_ZXI $z4, $sp, 1504    ; EXPAND: STR_ZXI $z8, $sp, 2505    ; EXPAND: STR_ZXI $z12, $sp, 3506    ; EXPAND: $z0 = LDR_ZXI $sp, 0507    ; EXPAND: $z4 = LDR_ZXI $sp, 1508    ; EXPAND: $z8 = LDR_ZXI $sp, 2509    ; EXPAND: $z12 = LDR_ZXI $sp, 3510 511    %0:zpr4strided = COPY $z0_z4_z8_z12512 513    $z0_z1_z2_z3     = IMPLICIT_DEF514    $z4_z5_z6_z7     = IMPLICIT_DEF515    $z8_z9_z10_z11   = IMPLICIT_DEF516    $z12_z13_z14_z15 = IMPLICIT_DEF517    $z16_z17_z18_z19 = IMPLICIT_DEF518    $z20_z21_z22_z23 = IMPLICIT_DEF519    $z24_z25_z26_z27 = IMPLICIT_DEF520    $z28_z29_z30_z31 = IMPLICIT_DEF521 522    $z0_z4_z8_z12 = COPY %0523    RET_ReallyLR524...525