brintos

brintos / llvm-project-archived public Read only

0
0
Text · 33.1 KiB · 7f1a268 Raw
565 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -aarch64-disable-multivector-spill-fill -verify-machineinstrs -force-streaming < %s | FileCheck %s --check-prefixes=NOPAIR3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1 -aarch64-disable-multivector-spill-fill -verify-machineinstrs < %s |  FileCheck %s --check-prefixes=NOPAIR4; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -verify-machineinstrs -force-streaming < %s | FileCheck %s --check-prefixes=NOPAIR5; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=NOPAIR6; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -verify-machineinstrs -force-streaming < %s | FileCheck %s --check-prefixes=PAIR7; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=PAIR8; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -mattr=+sve -verify-machineinstrs < %s | FileCheck %s --check-prefixes=NOPAIR9; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2  -mattr=+sve -verify-machineinstrs -force-streaming < %s | FileCheck %s --check-prefixes=PAIR10 11declare void @my_func()12 13define void @fbyte(<vscale x 16 x i8> %v){14; NOPAIR-LABEL: fbyte:15; NOPAIR:       // %bb.0:16; NOPAIR-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill17; NOPAIR-NEXT:    addvl sp, sp, #-1818; NOPAIR-NEXT:    str p15, [sp, #4, mul vl] // 2-byte Spill19; NOPAIR-NEXT:    str p14, [sp, #5, mul vl] // 2-byte Spill20; NOPAIR-NEXT:    str p13, [sp, #6, mul vl] // 2-byte Spill21; NOPAIR-NEXT:    str p12, [sp, #7, mul vl] // 2-byte Spill22; NOPAIR-NEXT:    str p11, [sp, #8, mul vl] // 2-byte Spill23; NOPAIR-NEXT:    str p10, [sp, #9, mul vl] // 2-byte Spill24; NOPAIR-NEXT:    str p9, [sp, #10, mul vl] // 2-byte Spill25; NOPAIR-NEXT:    str p8, [sp, #11, mul vl] // 2-byte Spill26; NOPAIR-NEXT:    str p7, [sp, #12, mul vl] // 2-byte Spill27; NOPAIR-NEXT:    str p6, [sp, #13, mul vl] // 2-byte Spill28; NOPAIR-NEXT:    str p5, [sp, #14, mul vl] // 2-byte Spill29; NOPAIR-NEXT:    str p4, [sp, #15, mul vl] // 2-byte Spill30; NOPAIR-NEXT:    str z23, [sp, #2, mul vl] // 16-byte Folded Spill31; NOPAIR-NEXT:    str z22, [sp, #3, mul vl] // 16-byte Folded Spill32; NOPAIR-NEXT:    str z21, [sp, #4, mul vl] // 16-byte Folded Spill33; NOPAIR-NEXT:    str z20, [sp, #5, mul vl] // 16-byte Folded Spill34; NOPAIR-NEXT:    str z19, [sp, #6, mul vl] // 16-byte Folded Spill35; NOPAIR-NEXT:    str z18, [sp, #7, mul vl] // 16-byte Folded Spill36; NOPAIR-NEXT:    str z17, [sp, #8, mul vl] // 16-byte Folded Spill37; NOPAIR-NEXT:    str z16, [sp, #9, mul vl] // 16-byte Folded Spill38; NOPAIR-NEXT:    str z15, [sp, #10, mul vl] // 16-byte Folded Spill39; NOPAIR-NEXT:    str z14, [sp, #11, mul vl] // 16-byte Folded Spill40; NOPAIR-NEXT:    str z13, [sp, #12, mul vl] // 16-byte Folded Spill41; NOPAIR-NEXT:    str z12, [sp, #13, mul vl] // 16-byte Folded Spill42; NOPAIR-NEXT:    str z11, [sp, #14, mul vl] // 16-byte Folded Spill43; NOPAIR-NEXT:    str z10, [sp, #15, mul vl] // 16-byte Folded Spill44; NOPAIR-NEXT:    str z9, [sp, #16, mul vl] // 16-byte Folded Spill45; NOPAIR-NEXT:    str z8, [sp, #17, mul vl] // 16-byte Folded Spill46; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x0a, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x90, 0x01, 0x1e, 0x22 // sp + 16 + 144 * VG47; NOPAIR-NEXT:    .cfi_offset w30, -848; NOPAIR-NEXT:    .cfi_offset w29, -1649; NOPAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 1650; NOPAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 1651; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 1652; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4b, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x40, 0x1c // $d11 @ cfa - 32 * VG - 1653; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4c, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x40, 0x1c // $d12 @ cfa - 40 * VG - 1654; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4d, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x40, 0x1c // $d13 @ cfa - 48 * VG - 1655; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4e, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x40, 0x1c // $d14 @ cfa - 56 * VG - 1656; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4f, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x40, 0x1c // $d15 @ cfa - 64 * VG - 1657; NOPAIR-NEXT:    bl my_func58; NOPAIR-NEXT:    ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload59; NOPAIR-NEXT:    ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload60; NOPAIR-NEXT:    ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload61; NOPAIR-NEXT:    ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload62; NOPAIR-NEXT:    ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload63; NOPAIR-NEXT:    ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload64; NOPAIR-NEXT:    ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload65; NOPAIR-NEXT:    ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload66; NOPAIR-NEXT:    ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload67; NOPAIR-NEXT:    ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload68; NOPAIR-NEXT:    ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload69; NOPAIR-NEXT:    ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload70; NOPAIR-NEXT:    ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload71; NOPAIR-NEXT:    ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload72; NOPAIR-NEXT:    ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload73; NOPAIR-NEXT:    ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload74; NOPAIR-NEXT:    ldr p15, [sp, #4, mul vl] // 2-byte Reload75; NOPAIR-NEXT:    ldr p14, [sp, #5, mul vl] // 2-byte Reload76; NOPAIR-NEXT:    ldr p13, [sp, #6, mul vl] // 2-byte Reload77; NOPAIR-NEXT:    ldr p12, [sp, #7, mul vl] // 2-byte Reload78; NOPAIR-NEXT:    ldr p11, [sp, #8, mul vl] // 2-byte Reload79; NOPAIR-NEXT:    ldr p10, [sp, #9, mul vl] // 2-byte Reload80; NOPAIR-NEXT:    ldr p9, [sp, #10, mul vl] // 2-byte Reload81; NOPAIR-NEXT:    ldr p8, [sp, #11, mul vl] // 2-byte Reload82; NOPAIR-NEXT:    ldr p7, [sp, #12, mul vl] // 2-byte Reload83; NOPAIR-NEXT:    ldr p6, [sp, #13, mul vl] // 2-byte Reload84; NOPAIR-NEXT:    ldr p5, [sp, #14, mul vl] // 2-byte Reload85; NOPAIR-NEXT:    ldr p4, [sp, #15, mul vl] // 2-byte Reload86; NOPAIR-NEXT:    addvl sp, sp, #1887; NOPAIR-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload88; NOPAIR-NEXT:    ret89;90; PAIR-LABEL: fbyte:91; PAIR:       // %bb.0:92; PAIR-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill93; PAIR-NEXT:    addvl sp, sp, #-1894; PAIR-NEXT:    str p8, [sp, #11, mul vl] // 2-byte Spill95; PAIR-NEXT:    ptrue pn8.b96; PAIR-NEXT:    str p15, [sp, #4, mul vl] // 2-byte Spill97; PAIR-NEXT:    st1b { z22.b, z23.b }, pn8, [sp, #2, mul vl] // 32-byte Folded Spill98; PAIR-NEXT:    st1b { z20.b, z21.b }, pn8, [sp, #4, mul vl] // 32-byte Folded Spill99; PAIR-NEXT:    str p14, [sp, #5, mul vl] // 2-byte Spill100; PAIR-NEXT:    st1b { z18.b, z19.b }, pn8, [sp, #6, mul vl] // 32-byte Folded Spill101; PAIR-NEXT:    st1b { z16.b, z17.b }, pn8, [sp, #8, mul vl] // 32-byte Folded Spill102; PAIR-NEXT:    str p13, [sp, #6, mul vl] // 2-byte Spill103; PAIR-NEXT:    st1b { z14.b, z15.b }, pn8, [sp, #10, mul vl] // 32-byte Folded Spill104; PAIR-NEXT:    st1b { z12.b, z13.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill105; PAIR-NEXT:    str p12, [sp, #7, mul vl] // 2-byte Spill106; PAIR-NEXT:    st1b { z10.b, z11.b }, pn8, [sp, #14, mul vl] // 32-byte Folded Spill107; PAIR-NEXT:    str p11, [sp, #8, mul vl] // 2-byte Spill108; PAIR-NEXT:    str p10, [sp, #9, mul vl] // 2-byte Spill109; PAIR-NEXT:    str p9, [sp, #10, mul vl] // 2-byte Spill110; PAIR-NEXT:    str p7, [sp, #12, mul vl] // 2-byte Spill111; PAIR-NEXT:    str p6, [sp, #13, mul vl] // 2-byte Spill112; PAIR-NEXT:    str p5, [sp, #14, mul vl] // 2-byte Spill113; PAIR-NEXT:    str p4, [sp, #15, mul vl] // 2-byte Spill114; PAIR-NEXT:    str z9, [sp, #16, mul vl] // 16-byte Folded Spill115; PAIR-NEXT:    str z8, [sp, #17, mul vl] // 16-byte Folded Spill116; PAIR-NEXT:    .cfi_escape 0x0f, 0x0a, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x90, 0x01, 0x1e, 0x22 // sp + 16 + 144 * VG117; PAIR-NEXT:    .cfi_offset w30, -8118; PAIR-NEXT:    .cfi_offset w29, -16119; PAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16120; PAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16121; PAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16122; PAIR-NEXT:    .cfi_escape 0x10, 0x4b, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x40, 0x1c // $d11 @ cfa - 32 * VG - 16123; PAIR-NEXT:    .cfi_escape 0x10, 0x4c, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x40, 0x1c // $d12 @ cfa - 40 * VG - 16124; PAIR-NEXT:    .cfi_escape 0x10, 0x4d, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x40, 0x1c // $d13 @ cfa - 48 * VG - 16125; PAIR-NEXT:    .cfi_escape 0x10, 0x4e, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x40, 0x1c // $d14 @ cfa - 56 * VG - 16126; PAIR-NEXT:    .cfi_escape 0x10, 0x4f, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x40, 0x1c // $d15 @ cfa - 64 * VG - 16127; PAIR-NEXT:    bl my_func128; PAIR-NEXT:    ptrue pn8.b129; PAIR-NEXT:    ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload130; PAIR-NEXT:    ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload131; PAIR-NEXT:    ld1b { z22.b, z23.b }, pn8/z, [sp, #2, mul vl] // 32-byte Folded Reload132; PAIR-NEXT:    ld1b { z20.b, z21.b }, pn8/z, [sp, #4, mul vl] // 32-byte Folded Reload133; PAIR-NEXT:    ld1b { z18.b, z19.b }, pn8/z, [sp, #6, mul vl] // 32-byte Folded Reload134; PAIR-NEXT:    ld1b { z16.b, z17.b }, pn8/z, [sp, #8, mul vl] // 32-byte Folded Reload135; PAIR-NEXT:    ld1b { z14.b, z15.b }, pn8/z, [sp, #10, mul vl] // 32-byte Folded Reload136; PAIR-NEXT:    ld1b { z12.b, z13.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload137; PAIR-NEXT:    ld1b { z10.b, z11.b }, pn8/z, [sp, #14, mul vl] // 32-byte Folded Reload138; PAIR-NEXT:    ldr p15, [sp, #4, mul vl] // 2-byte Reload139; PAIR-NEXT:    ldr p14, [sp, #5, mul vl] // 2-byte Reload140; PAIR-NEXT:    ldr p13, [sp, #6, mul vl] // 2-byte Reload141; PAIR-NEXT:    ldr p12, [sp, #7, mul vl] // 2-byte Reload142; PAIR-NEXT:    ldr p11, [sp, #8, mul vl] // 2-byte Reload143; PAIR-NEXT:    ldr p10, [sp, #9, mul vl] // 2-byte Reload144; PAIR-NEXT:    ldr p9, [sp, #10, mul vl] // 2-byte Reload145; PAIR-NEXT:    ldr p8, [sp, #11, mul vl] // 2-byte Reload146; PAIR-NEXT:    ldr p7, [sp, #12, mul vl] // 2-byte Reload147; PAIR-NEXT:    ldr p6, [sp, #13, mul vl] // 2-byte Reload148; PAIR-NEXT:    ldr p5, [sp, #14, mul vl] // 2-byte Reload149; PAIR-NEXT:    ldr p4, [sp, #15, mul vl] // 2-byte Reload150; PAIR-NEXT:    addvl sp, sp, #18151; PAIR-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload152; PAIR-NEXT:    ret153  call void @my_func()154  ret void155}156 157define void @fhalf(<vscale x 8 x half> %v) {158; NOPAIR-LABEL: fhalf:159; NOPAIR:       // %bb.0:160; NOPAIR-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill161; NOPAIR-NEXT:    addvl sp, sp, #-18162; NOPAIR-NEXT:    str p15, [sp, #4, mul vl] // 2-byte Spill163; NOPAIR-NEXT:    str p14, [sp, #5, mul vl] // 2-byte Spill164; NOPAIR-NEXT:    str p13, [sp, #6, mul vl] // 2-byte Spill165; NOPAIR-NEXT:    str p12, [sp, #7, mul vl] // 2-byte Spill166; NOPAIR-NEXT:    str p11, [sp, #8, mul vl] // 2-byte Spill167; NOPAIR-NEXT:    str p10, [sp, #9, mul vl] // 2-byte Spill168; NOPAIR-NEXT:    str p9, [sp, #10, mul vl] // 2-byte Spill169; NOPAIR-NEXT:    str p8, [sp, #11, mul vl] // 2-byte Spill170; NOPAIR-NEXT:    str p7, [sp, #12, mul vl] // 2-byte Spill171; NOPAIR-NEXT:    str p6, [sp, #13, mul vl] // 2-byte Spill172; NOPAIR-NEXT:    str p5, [sp, #14, mul vl] // 2-byte Spill173; NOPAIR-NEXT:    str p4, [sp, #15, mul vl] // 2-byte Spill174; NOPAIR-NEXT:    str z23, [sp, #2, mul vl] // 16-byte Folded Spill175; NOPAIR-NEXT:    str z22, [sp, #3, mul vl] // 16-byte Folded Spill176; NOPAIR-NEXT:    str z21, [sp, #4, mul vl] // 16-byte Folded Spill177; NOPAIR-NEXT:    str z20, [sp, #5, mul vl] // 16-byte Folded Spill178; NOPAIR-NEXT:    str z19, [sp, #6, mul vl] // 16-byte Folded Spill179; NOPAIR-NEXT:    str z18, [sp, #7, mul vl] // 16-byte Folded Spill180; NOPAIR-NEXT:    str z17, [sp, #8, mul vl] // 16-byte Folded Spill181; NOPAIR-NEXT:    str z16, [sp, #9, mul vl] // 16-byte Folded Spill182; NOPAIR-NEXT:    str z15, [sp, #10, mul vl] // 16-byte Folded Spill183; NOPAIR-NEXT:    str z14, [sp, #11, mul vl] // 16-byte Folded Spill184; NOPAIR-NEXT:    str z13, [sp, #12, mul vl] // 16-byte Folded Spill185; NOPAIR-NEXT:    str z12, [sp, #13, mul vl] // 16-byte Folded Spill186; NOPAIR-NEXT:    str z11, [sp, #14, mul vl] // 16-byte Folded Spill187; NOPAIR-NEXT:    str z10, [sp, #15, mul vl] // 16-byte Folded Spill188; NOPAIR-NEXT:    str z9, [sp, #16, mul vl] // 16-byte Folded Spill189; NOPAIR-NEXT:    str z8, [sp, #17, mul vl] // 16-byte Folded Spill190; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x0a, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x90, 0x01, 0x1e, 0x22 // sp + 16 + 144 * VG191; NOPAIR-NEXT:    .cfi_offset w30, -8192; NOPAIR-NEXT:    .cfi_offset w29, -16193; NOPAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16194; NOPAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16195; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16196; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4b, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x40, 0x1c // $d11 @ cfa - 32 * VG - 16197; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4c, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x40, 0x1c // $d12 @ cfa - 40 * VG - 16198; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4d, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x40, 0x1c // $d13 @ cfa - 48 * VG - 16199; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4e, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x40, 0x1c // $d14 @ cfa - 56 * VG - 16200; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4f, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x40, 0x1c // $d15 @ cfa - 64 * VG - 16201; NOPAIR-NEXT:    bl my_func202; NOPAIR-NEXT:    ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload203; NOPAIR-NEXT:    ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload204; NOPAIR-NEXT:    ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload205; NOPAIR-NEXT:    ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload206; NOPAIR-NEXT:    ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload207; NOPAIR-NEXT:    ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload208; NOPAIR-NEXT:    ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload209; NOPAIR-NEXT:    ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload210; NOPAIR-NEXT:    ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload211; NOPAIR-NEXT:    ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload212; NOPAIR-NEXT:    ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload213; NOPAIR-NEXT:    ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload214; NOPAIR-NEXT:    ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload215; NOPAIR-NEXT:    ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload216; NOPAIR-NEXT:    ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload217; NOPAIR-NEXT:    ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload218; NOPAIR-NEXT:    ldr p15, [sp, #4, mul vl] // 2-byte Reload219; NOPAIR-NEXT:    ldr p14, [sp, #5, mul vl] // 2-byte Reload220; NOPAIR-NEXT:    ldr p13, [sp, #6, mul vl] // 2-byte Reload221; NOPAIR-NEXT:    ldr p12, [sp, #7, mul vl] // 2-byte Reload222; NOPAIR-NEXT:    ldr p11, [sp, #8, mul vl] // 2-byte Reload223; NOPAIR-NEXT:    ldr p10, [sp, #9, mul vl] // 2-byte Reload224; NOPAIR-NEXT:    ldr p9, [sp, #10, mul vl] // 2-byte Reload225; NOPAIR-NEXT:    ldr p8, [sp, #11, mul vl] // 2-byte Reload226; NOPAIR-NEXT:    ldr p7, [sp, #12, mul vl] // 2-byte Reload227; NOPAIR-NEXT:    ldr p6, [sp, #13, mul vl] // 2-byte Reload228; NOPAIR-NEXT:    ldr p5, [sp, #14, mul vl] // 2-byte Reload229; NOPAIR-NEXT:    ldr p4, [sp, #15, mul vl] // 2-byte Reload230; NOPAIR-NEXT:    addvl sp, sp, #18231; NOPAIR-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload232; NOPAIR-NEXT:    ret233;234; PAIR-LABEL: fhalf:235; PAIR:       // %bb.0:236; PAIR-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill237; PAIR-NEXT:    addvl sp, sp, #-18238; PAIR-NEXT:    str p8, [sp, #11, mul vl] // 2-byte Spill239; PAIR-NEXT:    ptrue pn8.b240; PAIR-NEXT:    str p15, [sp, #4, mul vl] // 2-byte Spill241; PAIR-NEXT:    st1b { z22.b, z23.b }, pn8, [sp, #2, mul vl] // 32-byte Folded Spill242; PAIR-NEXT:    st1b { z20.b, z21.b }, pn8, [sp, #4, mul vl] // 32-byte Folded Spill243; PAIR-NEXT:    str p14, [sp, #5, mul vl] // 2-byte Spill244; PAIR-NEXT:    st1b { z18.b, z19.b }, pn8, [sp, #6, mul vl] // 32-byte Folded Spill245; PAIR-NEXT:    st1b { z16.b, z17.b }, pn8, [sp, #8, mul vl] // 32-byte Folded Spill246; PAIR-NEXT:    str p13, [sp, #6, mul vl] // 2-byte Spill247; PAIR-NEXT:    st1b { z14.b, z15.b }, pn8, [sp, #10, mul vl] // 32-byte Folded Spill248; PAIR-NEXT:    st1b { z12.b, z13.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill249; PAIR-NEXT:    str p12, [sp, #7, mul vl] // 2-byte Spill250; PAIR-NEXT:    st1b { z10.b, z11.b }, pn8, [sp, #14, mul vl] // 32-byte Folded Spill251; PAIR-NEXT:    str p11, [sp, #8, mul vl] // 2-byte Spill252; PAIR-NEXT:    str p10, [sp, #9, mul vl] // 2-byte Spill253; PAIR-NEXT:    str p9, [sp, #10, mul vl] // 2-byte Spill254; PAIR-NEXT:    str p7, [sp, #12, mul vl] // 2-byte Spill255; PAIR-NEXT:    str p6, [sp, #13, mul vl] // 2-byte Spill256; PAIR-NEXT:    str p5, [sp, #14, mul vl] // 2-byte Spill257; PAIR-NEXT:    str p4, [sp, #15, mul vl] // 2-byte Spill258; PAIR-NEXT:    str z9, [sp, #16, mul vl] // 16-byte Folded Spill259; PAIR-NEXT:    str z8, [sp, #17, mul vl] // 16-byte Folded Spill260; PAIR-NEXT:    .cfi_escape 0x0f, 0x0a, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x90, 0x01, 0x1e, 0x22 // sp + 16 + 144 * VG261; PAIR-NEXT:    .cfi_offset w30, -8262; PAIR-NEXT:    .cfi_offset w29, -16263; PAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16264; PAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16265; PAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16266; PAIR-NEXT:    .cfi_escape 0x10, 0x4b, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x40, 0x1c // $d11 @ cfa - 32 * VG - 16267; PAIR-NEXT:    .cfi_escape 0x10, 0x4c, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x40, 0x1c // $d12 @ cfa - 40 * VG - 16268; PAIR-NEXT:    .cfi_escape 0x10, 0x4d, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x40, 0x1c // $d13 @ cfa - 48 * VG - 16269; PAIR-NEXT:    .cfi_escape 0x10, 0x4e, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x40, 0x1c // $d14 @ cfa - 56 * VG - 16270; PAIR-NEXT:    .cfi_escape 0x10, 0x4f, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x40, 0x1c // $d15 @ cfa - 64 * VG - 16271; PAIR-NEXT:    bl my_func272; PAIR-NEXT:    ptrue pn8.b273; PAIR-NEXT:    ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload274; PAIR-NEXT:    ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload275; PAIR-NEXT:    ld1b { z22.b, z23.b }, pn8/z, [sp, #2, mul vl] // 32-byte Folded Reload276; PAIR-NEXT:    ld1b { z20.b, z21.b }, pn8/z, [sp, #4, mul vl] // 32-byte Folded Reload277; PAIR-NEXT:    ld1b { z18.b, z19.b }, pn8/z, [sp, #6, mul vl] // 32-byte Folded Reload278; PAIR-NEXT:    ld1b { z16.b, z17.b }, pn8/z, [sp, #8, mul vl] // 32-byte Folded Reload279; PAIR-NEXT:    ld1b { z14.b, z15.b }, pn8/z, [sp, #10, mul vl] // 32-byte Folded Reload280; PAIR-NEXT:    ld1b { z12.b, z13.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload281; PAIR-NEXT:    ld1b { z10.b, z11.b }, pn8/z, [sp, #14, mul vl] // 32-byte Folded Reload282; PAIR-NEXT:    ldr p15, [sp, #4, mul vl] // 2-byte Reload283; PAIR-NEXT:    ldr p14, [sp, #5, mul vl] // 2-byte Reload284; PAIR-NEXT:    ldr p13, [sp, #6, mul vl] // 2-byte Reload285; PAIR-NEXT:    ldr p12, [sp, #7, mul vl] // 2-byte Reload286; PAIR-NEXT:    ldr p11, [sp, #8, mul vl] // 2-byte Reload287; PAIR-NEXT:    ldr p10, [sp, #9, mul vl] // 2-byte Reload288; PAIR-NEXT:    ldr p9, [sp, #10, mul vl] // 2-byte Reload289; PAIR-NEXT:    ldr p8, [sp, #11, mul vl] // 2-byte Reload290; PAIR-NEXT:    ldr p7, [sp, #12, mul vl] // 2-byte Reload291; PAIR-NEXT:    ldr p6, [sp, #13, mul vl] // 2-byte Reload292; PAIR-NEXT:    ldr p5, [sp, #14, mul vl] // 2-byte Reload293; PAIR-NEXT:    ldr p4, [sp, #15, mul vl] // 2-byte Reload294; PAIR-NEXT:    addvl sp, sp, #18295; PAIR-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload296; PAIR-NEXT:    ret297  call void @my_func()298  ret void299}300 301;; Do NOT group Z10302;; DO group Z8 and Z9 and save P8303define aarch64_sve_vector_pcs void @test_clobbers_z_p_regs() {304; NOPAIR-LABEL: test_clobbers_z_p_regs:305; NOPAIR:       // %bb.0:306; NOPAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill307; NOPAIR-NEXT:    addvl sp, sp, #-4308; NOPAIR-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill309; NOPAIR-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill310; NOPAIR-NEXT:    str z10, [sp, #1, mul vl] // 16-byte Folded Spill311; NOPAIR-NEXT:    str z9, [sp, #2, mul vl] // 16-byte Folded Spill312; NOPAIR-NEXT:    str z8, [sp, #3, mul vl] // 16-byte Folded Spill313; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x09, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x20, 0x1e, 0x22 // sp + 16 + 32 * VG314; NOPAIR-NEXT:    .cfi_offset w29, -16315; NOPAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16316; NOPAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16317; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16318; NOPAIR-NEXT:    //APP319; NOPAIR-NEXT:    //NO_APP320; NOPAIR-NEXT:    ldr z10, [sp, #1, mul vl] // 16-byte Folded Reload321; NOPAIR-NEXT:    ldr z9, [sp, #2, mul vl] // 16-byte Folded Reload322; NOPAIR-NEXT:    ldr z8, [sp, #3, mul vl] // 16-byte Folded Reload323; NOPAIR-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload324; NOPAIR-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload325; NOPAIR-NEXT:    addvl sp, sp, #4326; NOPAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload327; NOPAIR-NEXT:    ret328;329; PAIR-LABEL: test_clobbers_z_p_regs:330; PAIR:       // %bb.0:331; PAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill332; PAIR-NEXT:    addvl sp, sp, #-4333; PAIR-NEXT:    str p8, [sp, #5, mul vl] // 2-byte Spill334; PAIR-NEXT:    ptrue pn8.b335; PAIR-NEXT:    str p5, [sp, #6, mul vl] // 2-byte Spill336; PAIR-NEXT:    str p4, [sp, #7, mul vl] // 2-byte Spill337; PAIR-NEXT:    str z10, [sp, #1, mul vl] // 16-byte Folded Spill338; PAIR-NEXT:    st1b { z8.b, z9.b }, pn8, [sp, #2, mul vl] // 32-byte Folded Spill339; PAIR-NEXT:    .cfi_escape 0x0f, 0x09, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x20, 0x1e, 0x22 // sp + 16 + 32 * VG340; PAIR-NEXT:    .cfi_offset w29, -16341; PAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16342; PAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16343; PAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16344; PAIR-NEXT:    //APP345; PAIR-NEXT:    //NO_APP346; PAIR-NEXT:    ptrue pn8.b347; PAIR-NEXT:    ldr z10, [sp, #1, mul vl] // 16-byte Folded Reload348; PAIR-NEXT:    ld1b { z8.b, z9.b }, pn8/z, [sp, #2, mul vl] // 32-byte Folded Reload349; PAIR-NEXT:    ldr p8, [sp, #5, mul vl] // 2-byte Reload350; PAIR-NEXT:    ldr p5, [sp, #6, mul vl] // 2-byte Reload351; PAIR-NEXT:    ldr p4, [sp, #7, mul vl] // 2-byte Reload352; PAIR-NEXT:    addvl sp, sp, #4353; PAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload354; PAIR-NEXT:    ret355  call void asm sideeffect "", "~{p4},~{p5},~{z8},~{z9},~{z10}"()356  ret void357}358 359;; Do NOT group Z10360;; DO group Z8 and Z9 and use P9361define aarch64_sve_vector_pcs  void @test_clobbers_z_p_regs2() {362; NOPAIR-LABEL: test_clobbers_z_p_regs2:363; NOPAIR:       // %bb.0:364; NOPAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill365; NOPAIR-NEXT:    addvl sp, sp, #-4366; NOPAIR-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill367; NOPAIR-NEXT:    str p9, [sp, #7, mul vl] // 2-byte Spill368; NOPAIR-NEXT:    str z10, [sp, #1, mul vl] // 16-byte Folded Spill369; NOPAIR-NEXT:    str z9, [sp, #2, mul vl] // 16-byte Folded Spill370; NOPAIR-NEXT:    str z8, [sp, #3, mul vl] // 16-byte Folded Spill371; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x09, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x20, 0x1e, 0x22 // sp + 16 + 32 * VG372; NOPAIR-NEXT:    .cfi_offset w29, -16373; NOPAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16374; NOPAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16375; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16376; NOPAIR-NEXT:    //APP377; NOPAIR-NEXT:    //NO_APP378; NOPAIR-NEXT:    ldr z10, [sp, #1, mul vl] // 16-byte Folded Reload379; NOPAIR-NEXT:    ldr z9, [sp, #2, mul vl] // 16-byte Folded Reload380; NOPAIR-NEXT:    ldr z8, [sp, #3, mul vl] // 16-byte Folded Reload381; NOPAIR-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload382; NOPAIR-NEXT:    ldr p9, [sp, #7, mul vl] // 2-byte Reload383; NOPAIR-NEXT:    addvl sp, sp, #4384; NOPAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload385; NOPAIR-NEXT:    ret386;387; PAIR-LABEL: test_clobbers_z_p_regs2:388; PAIR:       // %bb.0:389; PAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill390; PAIR-NEXT:    addvl sp, sp, #-4391; PAIR-NEXT:    str p9, [sp, #7, mul vl] // 2-byte Spill392; PAIR-NEXT:    ptrue pn9.b393; PAIR-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill394; PAIR-NEXT:    str z10, [sp, #1, mul vl] // 16-byte Folded Spill395; PAIR-NEXT:    st1b { z8.b, z9.b }, pn9, [sp, #2, mul vl] // 32-byte Folded Spill396; PAIR-NEXT:    .cfi_escape 0x0f, 0x09, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x11, 0x20, 0x1e, 0x22 // sp + 16 + 32 * VG397; PAIR-NEXT:    .cfi_offset w29, -16398; PAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16399; PAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16400; PAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 24 * VG - 16401; PAIR-NEXT:    //APP402; PAIR-NEXT:    //NO_APP403; PAIR-NEXT:    ptrue pn9.b404; PAIR-NEXT:    ldr z10, [sp, #1, mul vl] // 16-byte Folded Reload405; PAIR-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload406; PAIR-NEXT:    ld1b { z8.b, z9.b }, pn9/z, [sp, #2, mul vl] // 32-byte Folded Reload407; PAIR-NEXT:    ldr p9, [sp, #7, mul vl] // 2-byte Reload408; PAIR-NEXT:    addvl sp, sp, #4409; PAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload410; PAIR-NEXT:    ret411  call void asm sideeffect "", "~{p9},~{p10},~{z8},~{z9},~{z10}"()412  ret void413}414 415 416;; Test order of PRegs and ZRegs when there is no PReg being clobbered417define aarch64_sve_vector_pcs  void @test_clobbers_z_regs() {418; NOPAIR-LABEL: test_clobbers_z_regs:419; NOPAIR:       // %bb.0:420; NOPAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill421; NOPAIR-NEXT:    addvl sp, sp, #-2422; NOPAIR-NEXT:    str z9, [sp] // 16-byte Folded Spill423; NOPAIR-NEXT:    str z8, [sp, #1, mul vl] // 16-byte Folded Spill424; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 16 + 16 * VG425; NOPAIR-NEXT:    .cfi_offset w29, -16426; NOPAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16427; NOPAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16428; NOPAIR-NEXT:    //APP429; NOPAIR-NEXT:    //NO_APP430; NOPAIR-NEXT:    ldr z9, [sp] // 16-byte Folded Reload431; NOPAIR-NEXT:    ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload432; NOPAIR-NEXT:    addvl sp, sp, #2433; NOPAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload434; NOPAIR-NEXT:    ret435;436; PAIR-LABEL: test_clobbers_z_regs:437; PAIR:       // %bb.0:438; PAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill439; PAIR-NEXT:    addvl sp, sp, #-3440; PAIR-NEXT:    str p8, [sp, #7, mul vl] // 2-byte Spill441; PAIR-NEXT:    str z9, [sp, #1, mul vl] // 16-byte Folded Spill442; PAIR-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill443; PAIR-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x48, 0x1e, 0x22 // sp + 16 + 24 * VG444; PAIR-NEXT:    .cfi_offset w29, -16445; PAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16446; PAIR-NEXT:    .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 16447; PAIR-NEXT:    //APP448; PAIR-NEXT:    //NO_APP449; PAIR-NEXT:    ldr p8, [sp, #7, mul vl] // 2-byte Reload450; PAIR-NEXT:    ldr z9, [sp, #1, mul vl] // 16-byte Folded Reload451; PAIR-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload452; PAIR-NEXT:    addvl sp, sp, #3453; PAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload454; PAIR-NEXT:    ret455  call void asm sideeffect "", "~{z8},~{z9}"()456  ret void457}458 459;; DO NOT group Z8 and Z9 and460;; DO NOT save P8461;; It does not belong to the allowed calling conventions462;; NOPAIR and PAIR should have the same assembly463define  void @test_clobbers_z_regs_negative() {464; NOPAIR-LABEL: test_clobbers_z_regs_negative:465; NOPAIR:       // %bb.0:466; NOPAIR-NEXT:    stp d9, d8, [sp, #-16]! // 16-byte Folded Spill467; NOPAIR-NEXT:    .cfi_def_cfa_offset 16468; NOPAIR-NEXT:    .cfi_offset b8, -8469; NOPAIR-NEXT:    .cfi_offset b9, -16470; NOPAIR-NEXT:    //APP471; NOPAIR-NEXT:    //NO_APP472; NOPAIR-NEXT:    ldp d9, d8, [sp], #16 // 16-byte Folded Reload473; NOPAIR-NEXT:    ret474;475; PAIR-LABEL: test_clobbers_z_regs_negative:476; PAIR:       // %bb.0:477; PAIR-NEXT:    stp d9, d8, [sp, #-16]! // 16-byte Folded Spill478; PAIR-NEXT:    .cfi_def_cfa_offset 16479; PAIR-NEXT:    .cfi_offset b8, -8480; PAIR-NEXT:    .cfi_offset b9, -16481; PAIR-NEXT:    //APP482; PAIR-NEXT:    //NO_APP483; PAIR-NEXT:    ldp d9, d8, [sp], #16 // 16-byte Folded Reload484; PAIR-NEXT:    ret485  call void asm sideeffect "", "~{z8},~{z9}"()486  ret void487}488 489;; Do NOT save P8 and NOT group any Z8 and Z10 register490define aarch64_sve_vector_pcs void @test_clobbers_2_z_regs_negative() {491; NOPAIR-LABEL: test_clobbers_2_z_regs_negative:492; NOPAIR:       // %bb.0:493; NOPAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill494; NOPAIR-NEXT:    addvl sp, sp, #-2495; NOPAIR-NEXT:    str z10, [sp] // 16-byte Folded Spill496; NOPAIR-NEXT:    str z8, [sp, #1, mul vl] // 16-byte Folded Spill497; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 16 + 16 * VG498; NOPAIR-NEXT:    .cfi_offset w29, -16499; NOPAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16500; NOPAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 16 * VG - 16501; NOPAIR-NEXT:    //APP502; NOPAIR-NEXT:    //NO_APP503; NOPAIR-NEXT:    ldr z10, [sp] // 16-byte Folded Reload504; NOPAIR-NEXT:    ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload505; NOPAIR-NEXT:    addvl sp, sp, #2506; NOPAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload507; NOPAIR-NEXT:    ret508;509; PAIR-LABEL: test_clobbers_2_z_regs_negative:510; PAIR:       // %bb.0:511; PAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill512; PAIR-NEXT:    addvl sp, sp, #-2513; PAIR-NEXT:    str z10, [sp] // 16-byte Folded Spill514; PAIR-NEXT:    str z8, [sp, #1, mul vl] // 16-byte Folded Spill515; PAIR-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 16 + 16 * VG516; PAIR-NEXT:    .cfi_offset w29, -16517; PAIR-NEXT:    .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16518; PAIR-NEXT:    .cfi_escape 0x10, 0x4a, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d10 @ cfa - 16 * VG - 16519; PAIR-NEXT:    //APP520; PAIR-NEXT:    //NO_APP521; PAIR-NEXT:    ldr z10, [sp] // 16-byte Folded Reload522; PAIR-NEXT:    ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload523; PAIR-NEXT:    addvl sp, sp, #2524; PAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload525; PAIR-NEXT:    ret526  call void asm sideeffect "", "~{z8},~{z10}"()527  ret void528}529 530 531;; NOTHING TO DO HERE532;; There is no ZReg pairs to save533define aarch64_sve_vector_pcs  void @test_clobbers_p_reg_negative() {534; NOPAIR-LABEL: test_clobbers_p_reg_negative:535; NOPAIR:       // %bb.0:536; NOPAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill537; NOPAIR-NEXT:    addvl sp, sp, #-1538; NOPAIR-NEXT:    str p10, [sp, #7, mul vl] // 2-byte Spill539; NOPAIR-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG540; NOPAIR-NEXT:    .cfi_offset w29, -16541; NOPAIR-NEXT:    //APP542; NOPAIR-NEXT:    //NO_APP543; NOPAIR-NEXT:    ldr p10, [sp, #7, mul vl] // 2-byte Reload544; NOPAIR-NEXT:    addvl sp, sp, #1545; NOPAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload546; NOPAIR-NEXT:    ret547;548; PAIR-LABEL: test_clobbers_p_reg_negative:549; PAIR:       // %bb.0:550; PAIR-NEXT:    str x29, [sp, #-16]! // 8-byte Folded Spill551; PAIR-NEXT:    addvl sp, sp, #-1552; PAIR-NEXT:    str p10, [sp, #7, mul vl] // 2-byte Spill553; PAIR-NEXT:    .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG554; PAIR-NEXT:    .cfi_offset w29, -16555; PAIR-NEXT:    //APP556; PAIR-NEXT:    //NO_APP557; PAIR-NEXT:    ldr p10, [sp, #7, mul vl] // 2-byte Reload558; PAIR-NEXT:    addvl sp, sp, #1559; PAIR-NEXT:    ldr x29, [sp], #16 // 8-byte Folded Reload560; PAIR-NEXT:    ret561 call void asm sideeffect "", "~{p10}"()562  ret void563}564 565