5107 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64 -mattr=+sve2 -aarch64-stack-hazard-size=0 | FileCheck %s --check-prefixes=CHECK,CHECK03; RUN: llc < %s -mtriple=aarch64 -mattr=+sve2 -aarch64-stack-hazard-size=64 | FileCheck %s --check-prefixes=CHECK,CHECK644; RUN: llc < %s -mtriple=aarch64 -mattr=+sve2 -aarch64-split-sve-objects=false -aarch64-stack-hazard-size=1024 | FileCheck %s --check-prefixes=CHECK,CHECK1024,CHECK1024-NOSPLITSVE5; RUN: llc < %s -mtriple=aarch64 -mattr=+sve2 -aarch64-stack-hazard-size=1024 | FileCheck %s --check-prefixes=CHECK,CHECK1024,CHECK1024-SPLITSVE6 7define i32 @basic(i32 noundef %num) {8; CHECK-LABEL: basic:9; CHECK: // %bb.0: // %entry10; CHECK-NEXT: mov w0, wzr11; CHECK-NEXT: ret12entry:13 ret i32 014}15 16; Non-streaming functions don't need hazards17define i32 @csr_d8_notsc(i32 noundef %num) {18; CHECK-LABEL: csr_d8_notsc:19; CHECK: // %bb.0: // %entry20; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill21; CHECK-NEXT: .cfi_def_cfa_offset 1622; CHECK-NEXT: .cfi_offset b8, -1623; CHECK-NEXT: mov w0, wzr24; CHECK-NEXT: //APP25; CHECK-NEXT: //NO_APP26; CHECK-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload27; CHECK-NEXT: ret28entry:29 tail call void asm sideeffect "", "~{d8}"() #130 ret i32 031}32 33; Very simple - doesn't require hazards34define i32 @basic_sc(i32 noundef %num) "aarch64_pstate_sm_compatible" {35; CHECK-LABEL: basic_sc:36; CHECK: // %bb.0: // %entry37; CHECK-NEXT: mov w0, wzr38; CHECK-NEXT: ret39entry:40 ret i32 041}42 43; No fpr accesses/csrs - doesn't require hazards44define i32 @nocsr_alloci64(i64 %d) "aarch64_pstate_sm_compatible" {45; CHECK-LABEL: nocsr_alloci64:46; CHECK: // %bb.0: // %entry47; CHECK-NEXT: sub sp, sp, #1648; CHECK-NEXT: .cfi_def_cfa_offset 1649; CHECK-NEXT: mov x8, x050; CHECK-NEXT: mov w0, wzr51; CHECK-NEXT: str x8, [sp, #8]52; CHECK-NEXT: add sp, sp, #1653; CHECK-NEXT: ret54entry:55 %a = alloca i6456 store i64 %d, ptr %a57 ret i32 058}59 60; No fpr accesses/csrs - doesn't require hazards61define i32 @csr_x20(i32 noundef %num) "aarch64_pstate_sm_compatible" {62; CHECK-LABEL: csr_x20:63; CHECK: // %bb.0: // %entry64; CHECK-NEXT: str x20, [sp, #-16]! // 8-byte Folded Spill65; CHECK-NEXT: .cfi_def_cfa_offset 1666; CHECK-NEXT: .cfi_offset w20, -1667; CHECK-NEXT: mov w0, wzr68; CHECK-NEXT: //APP69; CHECK-NEXT: //NO_APP70; CHECK-NEXT: ldr x20, [sp], #16 // 8-byte Folded Reload71; CHECK-NEXT: ret72entry:73 tail call void asm sideeffect "", "~{x20}"() #174 ret i32 075}76 77; CSR of d8. Make sure there is a gap between FPR and GPR78define i32 @csr_d8(i32 noundef %num) "aarch64_pstate_sm_compatible" {79; CHECK0-LABEL: csr_d8:80; CHECK0: // %bb.0: // %entry81; CHECK0-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill82; CHECK0-NEXT: .cfi_def_cfa_offset 1683; CHECK0-NEXT: .cfi_offset b8, -1684; CHECK0-NEXT: mov w0, wzr85; CHECK0-NEXT: //APP86; CHECK0-NEXT: //NO_APP87; CHECK0-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload88; CHECK0-NEXT: ret89;90; CHECK64-LABEL: csr_d8:91; CHECK64: // %bb.0: // %entry92; CHECK64-NEXT: sub sp, sp, #14493; CHECK64-NEXT: str d8, [sp, #64] // 8-byte Spill94; CHECK64-NEXT: .cfi_def_cfa_offset 14495; CHECK64-NEXT: .cfi_offset b8, -8096; CHECK64-NEXT: //APP97; CHECK64-NEXT: //NO_APP98; CHECK64-NEXT: mov w0, wzr99; CHECK64-NEXT: ldr d8, [sp, #64] // 8-byte Reload100; CHECK64-NEXT: add sp, sp, #144101; CHECK64-NEXT: ret102;103; CHECK1024-LABEL: csr_d8:104; CHECK1024: // %bb.0: // %entry105; CHECK1024-NEXT: sub sp, sp, #1040106; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill107; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill108; CHECK1024-NEXT: sub sp, sp, #1024109; CHECK1024-NEXT: .cfi_def_cfa_offset 2064110; CHECK1024-NEXT: .cfi_offset w29, -8111; CHECK1024-NEXT: .cfi_offset b8, -1040112; CHECK1024-NEXT: mov w0, wzr113; CHECK1024-NEXT: //APP114; CHECK1024-NEXT: //NO_APP115; CHECK1024-NEXT: add sp, sp, #1024116; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload117; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload118; CHECK1024-NEXT: add sp, sp, #1040119; CHECK1024-NEXT: ret120entry:121 tail call void asm sideeffect "", "~{d8}"() #1122 ret i32 0123}124 125; Stack fpr objects.126define i32 @nocsr_allocd(double %d) "aarch64_pstate_sm_compatible" {127; CHECK0-LABEL: nocsr_allocd:128; CHECK0: // %bb.0: // %entry129; CHECK0-NEXT: sub sp, sp, #16130; CHECK0-NEXT: .cfi_def_cfa_offset 16131; CHECK0-NEXT: mov w0, wzr132; CHECK0-NEXT: str d0, [sp, #8]133; CHECK0-NEXT: add sp, sp, #16134; CHECK0-NEXT: ret135;136; CHECK64-LABEL: nocsr_allocd:137; CHECK64: // %bb.0: // %entry138; CHECK64-NEXT: sub sp, sp, #80139; CHECK64-NEXT: .cfi_def_cfa_offset 80140; CHECK64-NEXT: mov w0, wzr141; CHECK64-NEXT: str d0, [sp, #72]142; CHECK64-NEXT: add sp, sp, #80143; CHECK64-NEXT: ret144;145; CHECK1024-LABEL: nocsr_allocd:146; CHECK1024: // %bb.0: // %entry147; CHECK1024-NEXT: sub sp, sp, #1040148; CHECK1024-NEXT: str x29, [sp, #1024] // 8-byte Spill149; CHECK1024-NEXT: sub sp, sp, #1040150; CHECK1024-NEXT: .cfi_def_cfa_offset 2080151; CHECK1024-NEXT: .cfi_offset w29, -16152; CHECK1024-NEXT: mov w0, wzr153; CHECK1024-NEXT: str d0, [sp, #1032]154; CHECK1024-NEXT: add sp, sp, #1040155; CHECK1024-NEXT: ldr x29, [sp, #1024] // 8-byte Reload156; CHECK1024-NEXT: add sp, sp, #1040157; CHECK1024-NEXT: ret158entry:159 %a = alloca double160 store double %d, ptr %a161 ret i32 0162}163 164define i32 @csr_d8d9(i32 noundef %num) "aarch64_pstate_sm_compatible" {165; CHECK0-LABEL: csr_d8d9:166; CHECK0: // %bb.0: // %entry167; CHECK0-NEXT: stp d9, d8, [sp, #-16]! // 16-byte Folded Spill168; CHECK0-NEXT: .cfi_def_cfa_offset 16169; CHECK0-NEXT: .cfi_offset b8, -8170; CHECK0-NEXT: .cfi_offset b9, -16171; CHECK0-NEXT: mov w0, wzr172; CHECK0-NEXT: //APP173; CHECK0-NEXT: //NO_APP174; CHECK0-NEXT: ldp d9, d8, [sp], #16 // 16-byte Folded Reload175; CHECK0-NEXT: ret176;177; CHECK64-LABEL: csr_d8d9:178; CHECK64: // %bb.0: // %entry179; CHECK64-NEXT: sub sp, sp, #144180; CHECK64-NEXT: stp d9, d8, [sp, #64] // 16-byte Folded Spill181; CHECK64-NEXT: .cfi_def_cfa_offset 144182; CHECK64-NEXT: .cfi_offset b8, -72183; CHECK64-NEXT: .cfi_offset b9, -80184; CHECK64-NEXT: //APP185; CHECK64-NEXT: //NO_APP186; CHECK64-NEXT: mov w0, wzr187; CHECK64-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload188; CHECK64-NEXT: add sp, sp, #144189; CHECK64-NEXT: ret190;191; CHECK1024-LABEL: csr_d8d9:192; CHECK1024: // %bb.0: // %entry193; CHECK1024-NEXT: sub sp, sp, #1056194; CHECK1024-NEXT: stp d9, d8, [sp] // 16-byte Folded Spill195; CHECK1024-NEXT: str x29, [sp, #1040] // 8-byte Spill196; CHECK1024-NEXT: sub sp, sp, #1024197; CHECK1024-NEXT: .cfi_def_cfa_offset 2080198; CHECK1024-NEXT: .cfi_offset w29, -16199; CHECK1024-NEXT: .cfi_offset b8, -1048200; CHECK1024-NEXT: .cfi_offset b9, -1056201; CHECK1024-NEXT: mov w0, wzr202; CHECK1024-NEXT: //APP203; CHECK1024-NEXT: //NO_APP204; CHECK1024-NEXT: add sp, sp, #1024205; CHECK1024-NEXT: ldp d9, d8, [sp] // 16-byte Folded Reload206; CHECK1024-NEXT: ldr x29, [sp, #1040] // 8-byte Reload207; CHECK1024-NEXT: add sp, sp, #1056208; CHECK1024-NEXT: ret209entry:210 tail call void asm sideeffect "", "~{d8},~{d9}"() #1211 ret i32 0212}213 214define i32 @csr_d8_allocd(double %d) "aarch64_pstate_sm_compatible" {215; CHECK0-LABEL: csr_d8_allocd:216; CHECK0: // %bb.0: // %entry217; CHECK0-NEXT: stp d8, d0, [sp, #-16]! // 8-byte Folded Spill218; CHECK0-NEXT: .cfi_def_cfa_offset 16219; CHECK0-NEXT: .cfi_offset b8, -16220; CHECK0-NEXT: mov w0, wzr221; CHECK0-NEXT: //APP222; CHECK0-NEXT: //NO_APP223; CHECK0-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload224; CHECK0-NEXT: ret225;226; CHECK64-LABEL: csr_d8_allocd:227; CHECK64: // %bb.0: // %entry228; CHECK64-NEXT: sub sp, sp, #160229; CHECK64-NEXT: stp d0, d8, [sp, #72] // 8-byte Folded Spill230; CHECK64-NEXT: .cfi_def_cfa_offset 160231; CHECK64-NEXT: .cfi_offset b8, -80232; CHECK64-NEXT: //APP233; CHECK64-NEXT: //NO_APP234; CHECK64-NEXT: mov w0, wzr235; CHECK64-NEXT: ldr d8, [sp, #80] // 8-byte Reload236; CHECK64-NEXT: add sp, sp, #160237; CHECK64-NEXT: ret238;239; CHECK1024-LABEL: csr_d8_allocd:240; CHECK1024: // %bb.0: // %entry241; CHECK1024-NEXT: sub sp, sp, #1040242; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill243; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill244; CHECK1024-NEXT: sub sp, sp, #1040245; CHECK1024-NEXT: .cfi_def_cfa_offset 2080246; CHECK1024-NEXT: .cfi_offset w29, -8247; CHECK1024-NEXT: .cfi_offset b8, -1040248; CHECK1024-NEXT: mov w0, wzr249; CHECK1024-NEXT: //APP250; CHECK1024-NEXT: //NO_APP251; CHECK1024-NEXT: str d0, [sp, #1032]252; CHECK1024-NEXT: add sp, sp, #1040253; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload254; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload255; CHECK1024-NEXT: add sp, sp, #1040256; CHECK1024-NEXT: ret257entry:258 %a = alloca double259 tail call void asm sideeffect "", "~{d8}"() #1260 store double %d, ptr %a261 ret i32 0262}263 264define i32 @csr_d8_alloci64(i64 %d) "aarch64_pstate_sm_compatible" {265; CHECK0-LABEL: csr_d8_alloci64:266; CHECK0: // %bb.0: // %entry267; CHECK0-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill268; CHECK0-NEXT: .cfi_def_cfa_offset 16269; CHECK0-NEXT: .cfi_offset b8, -16270; CHECK0-NEXT: mov x8, x0271; CHECK0-NEXT: mov w0, wzr272; CHECK0-NEXT: //APP273; CHECK0-NEXT: //NO_APP274; CHECK0-NEXT: str x8, [sp, #8]275; CHECK0-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload276; CHECK0-NEXT: ret277;278; CHECK64-LABEL: csr_d8_alloci64:279; CHECK64: // %bb.0: // %entry280; CHECK64-NEXT: sub sp, sp, #160281; CHECK64-NEXT: str d8, [sp, #80] // 8-byte Spill282; CHECK64-NEXT: .cfi_def_cfa_offset 160283; CHECK64-NEXT: .cfi_offset b8, -80284; CHECK64-NEXT: //APP285; CHECK64-NEXT: //NO_APP286; CHECK64-NEXT: mov x8, x0287; CHECK64-NEXT: mov w0, wzr288; CHECK64-NEXT: ldr d8, [sp, #80] // 8-byte Reload289; CHECK64-NEXT: str x8, [sp, #8]290; CHECK64-NEXT: add sp, sp, #160291; CHECK64-NEXT: ret292;293; CHECK1024-LABEL: csr_d8_alloci64:294; CHECK1024: // %bb.0: // %entry295; CHECK1024-NEXT: sub sp, sp, #1040296; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill297; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill298; CHECK1024-NEXT: sub sp, sp, #1040299; CHECK1024-NEXT: .cfi_def_cfa_offset 2080300; CHECK1024-NEXT: .cfi_offset w29, -8301; CHECK1024-NEXT: .cfi_offset b8, -1040302; CHECK1024-NEXT: mov x8, x0303; CHECK1024-NEXT: mov w0, wzr304; CHECK1024-NEXT: //APP305; CHECK1024-NEXT: //NO_APP306; CHECK1024-NEXT: str x8, [sp, #8]307; CHECK1024-NEXT: add sp, sp, #1040308; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload309; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload310; CHECK1024-NEXT: add sp, sp, #1040311; CHECK1024-NEXT: ret312entry:313 %a = alloca i64314 tail call void asm sideeffect "", "~{d8}"() #1315 store i64 %d, ptr %a316 ret i32 0317}318 319; Check the frame pointer is in the right place320define i32 @csr_d8_allocd_framepointer(double %d) "aarch64_pstate_sm_compatible" "frame-pointer"="all" {321; CHECK0-LABEL: csr_d8_allocd_framepointer:322; CHECK0: // %bb.0: // %entry323; CHECK0-NEXT: str d8, [sp, #-32]! // 8-byte Folded Spill324; CHECK0-NEXT: stp x29, x30, [sp, #16] // 16-byte Folded Spill325; CHECK0-NEXT: add x29, sp, #16326; CHECK0-NEXT: .cfi_def_cfa w29, 16327; CHECK0-NEXT: .cfi_offset w30, -8328; CHECK0-NEXT: .cfi_offset w29, -16329; CHECK0-NEXT: .cfi_offset b8, -32330; CHECK0-NEXT: //APP331; CHECK0-NEXT: //NO_APP332; CHECK0-NEXT: ldp x29, x30, [sp, #16] // 16-byte Folded Reload333; CHECK0-NEXT: mov w0, wzr334; CHECK0-NEXT: str d0, [sp, #8]335; CHECK0-NEXT: ldr d8, [sp], #32 // 8-byte Folded Reload336; CHECK0-NEXT: ret337;338; CHECK64-LABEL: csr_d8_allocd_framepointer:339; CHECK64: // %bb.0: // %entry340; CHECK64-NEXT: sub sp, sp, #176341; CHECK64-NEXT: stp d0, d8, [sp, #72] // 8-byte Folded Spill342; CHECK64-NEXT: stp x29, x30, [sp, #152] // 16-byte Folded Spill343; CHECK64-NEXT: add x29, sp, #152344; CHECK64-NEXT: .cfi_def_cfa w29, 24345; CHECK64-NEXT: .cfi_offset w30, -16346; CHECK64-NEXT: .cfi_offset w29, -24347; CHECK64-NEXT: .cfi_offset b8, -96348; CHECK64-NEXT: //APP349; CHECK64-NEXT: //NO_APP350; CHECK64-NEXT: ldr x29, [sp, #152] // 8-byte Reload351; CHECK64-NEXT: mov w0, wzr352; CHECK64-NEXT: ldr d8, [sp, #80] // 8-byte Reload353; CHECK64-NEXT: add sp, sp, #176354; CHECK64-NEXT: ret355;356; CHECK1024-LABEL: csr_d8_allocd_framepointer:357; CHECK1024: // %bb.0: // %entry358; CHECK1024-NEXT: sub sp, sp, #1056359; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill360; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill361; CHECK1024-NEXT: add x29, sp, #1032362; CHECK1024-NEXT: str x30, [sp, #1040] // 8-byte Spill363; CHECK1024-NEXT: sub sp, sp, #1040364; CHECK1024-NEXT: .cfi_def_cfa w29, 24365; CHECK1024-NEXT: .cfi_offset w30, -16366; CHECK1024-NEXT: .cfi_offset w29, -24367; CHECK1024-NEXT: .cfi_offset b8, -1056368; CHECK1024-NEXT: mov w0, wzr369; CHECK1024-NEXT: //APP370; CHECK1024-NEXT: //NO_APP371; CHECK1024-NEXT: str d0, [sp, #1032]372; CHECK1024-NEXT: add sp, sp, #1040373; CHECK1024-NEXT: ldr x30, [sp, #1040] // 8-byte Reload374; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload375; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload376; CHECK1024-NEXT: add sp, sp, #1056377; CHECK1024-NEXT: ret378entry:379 %a = alloca double380 tail call void asm sideeffect "", "~{d8}"() #1381 store double %d, ptr %a382 ret i32 0383}384 385; sve stack objects should live with other fpr registers386define i32 @csr_d8_allocnxv4i32(i64 %d) "aarch64_pstate_sm_compatible" {387; CHECK0-LABEL: csr_d8_allocnxv4i32:388; CHECK0: // %bb.0: // %entry389; CHECK0-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill390; CHECK0-NEXT: str x29, [sp, #8] // 8-byte Spill391; CHECK0-NEXT: addvl sp, sp, #-1392; CHECK0-NEXT: .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG393; CHECK0-NEXT: .cfi_offset w29, -8394; CHECK0-NEXT: .cfi_offset b8, -16395; CHECK0-NEXT: mov z0.s, #0 // =0x0396; CHECK0-NEXT: mov w0, wzr397; CHECK0-NEXT: //APP398; CHECK0-NEXT: //NO_APP399; CHECK0-NEXT: str z0, [sp]400; CHECK0-NEXT: addvl sp, sp, #1401; CHECK0-NEXT: ldr x29, [sp, #8] // 8-byte Reload402; CHECK0-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload403; CHECK0-NEXT: ret404;405; CHECK64-LABEL: csr_d8_allocnxv4i32:406; CHECK64: // %bb.0: // %entry407; CHECK64-NEXT: str d8, [sp, #-80]! // 8-byte Folded Spill408; CHECK64-NEXT: str x29, [sp, #72] // 8-byte Spill409; CHECK64-NEXT: sub sp, sp, #64410; CHECK64-NEXT: addvl sp, sp, #-1411; CHECK64-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x01, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 144 + 8 * VG412; CHECK64-NEXT: .cfi_offset w29, -8413; CHECK64-NEXT: .cfi_offset b8, -80414; CHECK64-NEXT: mov z0.s, #0 // =0x0415; CHECK64-NEXT: add x8, sp, #64416; CHECK64-NEXT: mov w0, wzr417; CHECK64-NEXT: //APP418; CHECK64-NEXT: //NO_APP419; CHECK64-NEXT: str z0, [x8]420; CHECK64-NEXT: addvl sp, sp, #1421; CHECK64-NEXT: add sp, sp, #64422; CHECK64-NEXT: ldr x29, [sp, #72] // 8-byte Reload423; CHECK64-NEXT: ldr d8, [sp], #80 // 8-byte Folded Reload424; CHECK64-NEXT: ret425;426; CHECK1024-LABEL: csr_d8_allocnxv4i32:427; CHECK1024: // %bb.0: // %entry428; CHECK1024-NEXT: sub sp, sp, #1040429; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill430; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill431; CHECK1024-NEXT: sub sp, sp, #1024432; CHECK1024-NEXT: addvl sp, sp, #-1433; CHECK1024-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2064 + 8 * VG434; CHECK1024-NEXT: .cfi_offset w29, -8435; CHECK1024-NEXT: .cfi_offset b8, -1040436; CHECK1024-NEXT: mov z0.s, #0 // =0x0437; CHECK1024-NEXT: add x8, sp, #1024438; CHECK1024-NEXT: mov w0, wzr439; CHECK1024-NEXT: //APP440; CHECK1024-NEXT: //NO_APP441; CHECK1024-NEXT: str z0, [x8]442; CHECK1024-NEXT: addvl sp, sp, #1443; CHECK1024-NEXT: add sp, sp, #1024444; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload445; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload446; CHECK1024-NEXT: add sp, sp, #1040447; CHECK1024-NEXT: ret448entry:449 %a = alloca <vscale x 4 x i32>450 tail call void asm sideeffect "", "~{d8}"() #1451 store <vscale x 4 x i32> zeroinitializer, ptr %a452 ret i32 0453}454 455define i32 @csr_x18_25_d8_15_allocdi64(i64 %d, double %e) "aarch64_pstate_sm_compatible" {456; CHECK0-LABEL: csr_x18_25_d8_15_allocdi64:457; CHECK0: // %bb.0: // %entry458; CHECK0-NEXT: sub sp, sp, #144459; CHECK0-NEXT: stp d15, d14, [sp, #16] // 16-byte Folded Spill460; CHECK0-NEXT: stp d13, d12, [sp, #32] // 16-byte Folded Spill461; CHECK0-NEXT: stp d11, d10, [sp, #48] // 16-byte Folded Spill462; CHECK0-NEXT: stp d9, d8, [sp, #64] // 16-byte Folded Spill463; CHECK0-NEXT: str x25, [sp, #80] // 8-byte Spill464; CHECK0-NEXT: stp x24, x23, [sp, #96] // 16-byte Folded Spill465; CHECK0-NEXT: stp x22, x21, [sp, #112] // 16-byte Folded Spill466; CHECK0-NEXT: stp x20, x19, [sp, #128] // 16-byte Folded Spill467; CHECK0-NEXT: .cfi_def_cfa_offset 144468; CHECK0-NEXT: .cfi_offset w19, -8469; CHECK0-NEXT: .cfi_offset w20, -16470; CHECK0-NEXT: .cfi_offset w21, -24471; CHECK0-NEXT: .cfi_offset w22, -32472; CHECK0-NEXT: .cfi_offset w23, -40473; CHECK0-NEXT: .cfi_offset w24, -48474; CHECK0-NEXT: .cfi_offset w25, -64475; CHECK0-NEXT: .cfi_offset b8, -72476; CHECK0-NEXT: .cfi_offset b9, -80477; CHECK0-NEXT: .cfi_offset b10, -88478; CHECK0-NEXT: .cfi_offset b11, -96479; CHECK0-NEXT: .cfi_offset b12, -104480; CHECK0-NEXT: .cfi_offset b13, -112481; CHECK0-NEXT: .cfi_offset b14, -120482; CHECK0-NEXT: .cfi_offset b15, -128483; CHECK0-NEXT: //APP484; CHECK0-NEXT: //NO_APP485; CHECK0-NEXT: //APP486; CHECK0-NEXT: //NO_APP487; CHECK0-NEXT: mov x8, x0488; CHECK0-NEXT: ldp x20, x19, [sp, #128] // 16-byte Folded Reload489; CHECK0-NEXT: ldr x25, [sp, #80] // 8-byte Reload490; CHECK0-NEXT: ldp x22, x21, [sp, #112] // 16-byte Folded Reload491; CHECK0-NEXT: mov w0, wzr492; CHECK0-NEXT: ldp x24, x23, [sp, #96] // 16-byte Folded Reload493; CHECK0-NEXT: str x8, [sp, #88]494; CHECK0-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload495; CHECK0-NEXT: str d0, [sp, #8]496; CHECK0-NEXT: ldp d11, d10, [sp, #48] // 16-byte Folded Reload497; CHECK0-NEXT: ldp d13, d12, [sp, #32] // 16-byte Folded Reload498; CHECK0-NEXT: ldp d15, d14, [sp, #16] // 16-byte Folded Reload499; CHECK0-NEXT: add sp, sp, #144500; CHECK0-NEXT: ret501;502; CHECK64-LABEL: csr_x18_25_d8_15_allocdi64:503; CHECK64: // %bb.0: // %entry504; CHECK64-NEXT: sub sp, sp, #288505; CHECK64-NEXT: stp d15, d14, [sp, #96] // 16-byte Folded Spill506; CHECK64-NEXT: stp d13, d12, [sp, #112] // 16-byte Folded Spill507; CHECK64-NEXT: stp d11, d10, [sp, #128] // 16-byte Folded Spill508; CHECK64-NEXT: stp d9, d8, [sp, #144] // 16-byte Folded Spill509; CHECK64-NEXT: stp x29, x25, [sp, #224] // 16-byte Folded Spill510; CHECK64-NEXT: stp x24, x23, [sp, #240] // 16-byte Folded Spill511; CHECK64-NEXT: stp x22, x21, [sp, #256] // 16-byte Folded Spill512; CHECK64-NEXT: stp x20, x19, [sp, #272] // 16-byte Folded Spill513; CHECK64-NEXT: .cfi_def_cfa_offset 288514; CHECK64-NEXT: .cfi_offset w19, -8515; CHECK64-NEXT: .cfi_offset w20, -16516; CHECK64-NEXT: .cfi_offset w21, -24517; CHECK64-NEXT: .cfi_offset w22, -32518; CHECK64-NEXT: .cfi_offset w23, -40519; CHECK64-NEXT: .cfi_offset w24, -48520; CHECK64-NEXT: .cfi_offset w25, -56521; CHECK64-NEXT: .cfi_offset w29, -64522; CHECK64-NEXT: .cfi_offset b8, -136523; CHECK64-NEXT: .cfi_offset b9, -144524; CHECK64-NEXT: .cfi_offset b10, -152525; CHECK64-NEXT: .cfi_offset b11, -160526; CHECK64-NEXT: .cfi_offset b12, -168527; CHECK64-NEXT: .cfi_offset b13, -176528; CHECK64-NEXT: .cfi_offset b14, -184529; CHECK64-NEXT: .cfi_offset b15, -192530; CHECK64-NEXT: //APP531; CHECK64-NEXT: //NO_APP532; CHECK64-NEXT: //APP533; CHECK64-NEXT: //NO_APP534; CHECK64-NEXT: mov x8, x0535; CHECK64-NEXT: ldp x20, x19, [sp, #272] // 16-byte Folded Reload536; CHECK64-NEXT: mov w0, wzr537; CHECK64-NEXT: ldp x22, x21, [sp, #256] // 16-byte Folded Reload538; CHECK64-NEXT: str x8, [sp, #8]539; CHECK64-NEXT: ldp x24, x23, [sp, #240] // 16-byte Folded Reload540; CHECK64-NEXT: str d0, [sp, #88]541; CHECK64-NEXT: ldp x29, x25, [sp, #224] // 16-byte Folded Reload542; CHECK64-NEXT: ldp d9, d8, [sp, #144] // 16-byte Folded Reload543; CHECK64-NEXT: ldp d11, d10, [sp, #128] // 16-byte Folded Reload544; CHECK64-NEXT: ldp d13, d12, [sp, #112] // 16-byte Folded Reload545; CHECK64-NEXT: ldp d15, d14, [sp, #96] // 16-byte Folded Reload546; CHECK64-NEXT: add sp, sp, #288547; CHECK64-NEXT: ret548;549; CHECK1024-LABEL: csr_x18_25_d8_15_allocdi64:550; CHECK1024: // %bb.0: // %entry551; CHECK1024-NEXT: sub sp, sp, #1152552; CHECK1024-NEXT: stp d15, d14, [sp] // 16-byte Folded Spill553; CHECK1024-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill554; CHECK1024-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill555; CHECK1024-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill556; CHECK1024-NEXT: str x29, [sp, #1088] // 8-byte Spill557; CHECK1024-NEXT: str x25, [sp, #1096] // 8-byte Spill558; CHECK1024-NEXT: str x24, [sp, #1104] // 8-byte Spill559; CHECK1024-NEXT: str x23, [sp, #1112] // 8-byte Spill560; CHECK1024-NEXT: str x22, [sp, #1120] // 8-byte Spill561; CHECK1024-NEXT: str x21, [sp, #1128] // 8-byte Spill562; CHECK1024-NEXT: str x20, [sp, #1136] // 8-byte Spill563; CHECK1024-NEXT: str x19, [sp, #1144] // 8-byte Spill564; CHECK1024-NEXT: sub sp, sp, #1056565; CHECK1024-NEXT: .cfi_def_cfa_offset 2208566; CHECK1024-NEXT: .cfi_offset w19, -8567; CHECK1024-NEXT: .cfi_offset w20, -16568; CHECK1024-NEXT: .cfi_offset w21, -24569; CHECK1024-NEXT: .cfi_offset w22, -32570; CHECK1024-NEXT: .cfi_offset w23, -40571; CHECK1024-NEXT: .cfi_offset w24, -48572; CHECK1024-NEXT: .cfi_offset w25, -56573; CHECK1024-NEXT: .cfi_offset w29, -64574; CHECK1024-NEXT: .cfi_offset b8, -1096575; CHECK1024-NEXT: .cfi_offset b9, -1104576; CHECK1024-NEXT: .cfi_offset b10, -1112577; CHECK1024-NEXT: .cfi_offset b11, -1120578; CHECK1024-NEXT: .cfi_offset b12, -1128579; CHECK1024-NEXT: .cfi_offset b13, -1136580; CHECK1024-NEXT: .cfi_offset b14, -1144581; CHECK1024-NEXT: .cfi_offset b15, -1152582; CHECK1024-NEXT: mov x8, x0583; CHECK1024-NEXT: mov w0, wzr584; CHECK1024-NEXT: //APP585; CHECK1024-NEXT: //NO_APP586; CHECK1024-NEXT: //APP587; CHECK1024-NEXT: //NO_APP588; CHECK1024-NEXT: str x8, [sp, #8]589; CHECK1024-NEXT: str d0, [sp, #1048]590; CHECK1024-NEXT: add sp, sp, #1056591; CHECK1024-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload592; CHECK1024-NEXT: ldr x19, [sp, #1144] // 8-byte Reload593; CHECK1024-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload594; CHECK1024-NEXT: ldr x20, [sp, #1136] // 8-byte Reload595; CHECK1024-NEXT: ldr x21, [sp, #1128] // 8-byte Reload596; CHECK1024-NEXT: ldr x22, [sp, #1120] // 8-byte Reload597; CHECK1024-NEXT: ldr x23, [sp, #1112] // 8-byte Reload598; CHECK1024-NEXT: ldr x24, [sp, #1104] // 8-byte Reload599; CHECK1024-NEXT: ldr x25, [sp, #1096] // 8-byte Reload600; CHECK1024-NEXT: ldr x29, [sp, #1088] // 8-byte Reload601; CHECK1024-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload602; CHECK1024-NEXT: ldp d15, d14, [sp] // 16-byte Folded Reload603; CHECK1024-NEXT: add sp, sp, #1152604; CHECK1024-NEXT: ret605entry:606 %a = alloca i64607 %b = alloca double608 tail call void asm sideeffect "", "~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25}"()609 tail call void asm sideeffect "", "~{d8},~{d9},~{d10},~{d11},~{d12},~{d13},~{d14},~{d15}"()610 store i64 %d, ptr %a611 store double %e, ptr %b612 ret i32 0613}614 615define i32 @csr_x18_25_d8_15_allocdi64_locallystreaming(i64 %d, double %e) "aarch64_pstate_sm_body" "target-features"="+sme" {616; CHECK0-LABEL: csr_x18_25_d8_15_allocdi64_locallystreaming:617; CHECK0: // %bb.0: // %entry618; CHECK0-NEXT: sub sp, sp, #176619; CHECK0-NEXT: .cfi_def_cfa_offset 176620; CHECK0-NEXT: cntd x9621; CHECK0-NEXT: stp d15, d14, [sp, #32] // 16-byte Folded Spill622; CHECK0-NEXT: stp d13, d12, [sp, #48] // 16-byte Folded Spill623; CHECK0-NEXT: stp d11, d10, [sp, #64] // 16-byte Folded Spill624; CHECK0-NEXT: stp d9, d8, [sp, #80] // 16-byte Folded Spill625; CHECK0-NEXT: stp x29, x30, [sp, #96] // 16-byte Folded Spill626; CHECK0-NEXT: stp x9, x25, [sp, #112] // 16-byte Folded Spill627; CHECK0-NEXT: stp x24, x23, [sp, #128] // 16-byte Folded Spill628; CHECK0-NEXT: stp x22, x21, [sp, #144] // 16-byte Folded Spill629; CHECK0-NEXT: stp x20, x19, [sp, #160] // 16-byte Folded Spill630; CHECK0-NEXT: .cfi_offset w19, -8631; CHECK0-NEXT: .cfi_offset w20, -16632; CHECK0-NEXT: .cfi_offset w21, -24633; CHECK0-NEXT: .cfi_offset w22, -32634; CHECK0-NEXT: .cfi_offset w23, -40635; CHECK0-NEXT: .cfi_offset w24, -48636; CHECK0-NEXT: .cfi_offset w25, -56637; CHECK0-NEXT: .cfi_offset vg, -64638; CHECK0-NEXT: .cfi_offset w30, -72639; CHECK0-NEXT: .cfi_offset w29, -80640; CHECK0-NEXT: .cfi_offset b8, -88641; CHECK0-NEXT: .cfi_offset b9, -96642; CHECK0-NEXT: .cfi_offset b10, -104643; CHECK0-NEXT: .cfi_offset b11, -112644; CHECK0-NEXT: .cfi_offset b12, -120645; CHECK0-NEXT: .cfi_offset b13, -128646; CHECK0-NEXT: .cfi_offset b14, -136647; CHECK0-NEXT: .cfi_offset b15, -144648; CHECK0-NEXT: str d0, [sp, #8] // 8-byte Spill649; CHECK0-NEXT: smstart sm650; CHECK0-NEXT: //APP651; CHECK0-NEXT: //NO_APP652; CHECK0-NEXT: //APP653; CHECK0-NEXT: //NO_APP654; CHECK0-NEXT: ldr d0, [sp, #8] // 8-byte Reload655; CHECK0-NEXT: str x0, [sp, #24]656; CHECK0-NEXT: str d0, [sp, #16]657; CHECK0-NEXT: smstop sm658; CHECK0-NEXT: ldp x20, x19, [sp, #160] // 16-byte Folded Reload659; CHECK0-NEXT: mov w0, wzr660; CHECK0-NEXT: ldp x22, x21, [sp, #144] // 16-byte Folded Reload661; CHECK0-NEXT: ldr x25, [sp, #120] // 8-byte Reload662; CHECK0-NEXT: ldp x24, x23, [sp, #128] // 16-byte Folded Reload663; CHECK0-NEXT: ldp x29, x30, [sp, #96] // 16-byte Folded Reload664; CHECK0-NEXT: ldp d9, d8, [sp, #80] // 16-byte Folded Reload665; CHECK0-NEXT: ldp d11, d10, [sp, #64] // 16-byte Folded Reload666; CHECK0-NEXT: ldp d13, d12, [sp, #48] // 16-byte Folded Reload667; CHECK0-NEXT: ldp d15, d14, [sp, #32] // 16-byte Folded Reload668; CHECK0-NEXT: add sp, sp, #176669; CHECK0-NEXT: .cfi_def_cfa_offset 0670; CHECK0-NEXT: .cfi_restore w19671; CHECK0-NEXT: .cfi_restore w20672; CHECK0-NEXT: .cfi_restore w21673; CHECK0-NEXT: .cfi_restore w22674; CHECK0-NEXT: .cfi_restore w23675; CHECK0-NEXT: .cfi_restore w24676; CHECK0-NEXT: .cfi_restore w25677; CHECK0-NEXT: .cfi_restore vg678; CHECK0-NEXT: .cfi_restore w30679; CHECK0-NEXT: .cfi_restore w29680; CHECK0-NEXT: .cfi_restore b8681; CHECK0-NEXT: .cfi_restore b9682; CHECK0-NEXT: .cfi_restore b10683; CHECK0-NEXT: .cfi_restore b11684; CHECK0-NEXT: .cfi_restore b12685; CHECK0-NEXT: .cfi_restore b13686; CHECK0-NEXT: .cfi_restore b14687; CHECK0-NEXT: .cfi_restore b15688; CHECK0-NEXT: ret689;690; CHECK64-LABEL: csr_x18_25_d8_15_allocdi64_locallystreaming:691; CHECK64: // %bb.0: // %entry692; CHECK64-NEXT: sub sp, sp, #304693; CHECK64-NEXT: .cfi_def_cfa_offset 304694; CHECK64-NEXT: cntd x9695; CHECK64-NEXT: stp d15, d14, [sp, #96] // 16-byte Folded Spill696; CHECK64-NEXT: stp d13, d12, [sp, #112] // 16-byte Folded Spill697; CHECK64-NEXT: stp d11, d10, [sp, #128] // 16-byte Folded Spill698; CHECK64-NEXT: stp d9, d8, [sp, #144] // 16-byte Folded Spill699; CHECK64-NEXT: stp x29, x30, [sp, #224] // 16-byte Folded Spill700; CHECK64-NEXT: stp x9, x25, [sp, #240] // 16-byte Folded Spill701; CHECK64-NEXT: stp x24, x23, [sp, #256] // 16-byte Folded Spill702; CHECK64-NEXT: stp x22, x21, [sp, #272] // 16-byte Folded Spill703; CHECK64-NEXT: stp x20, x19, [sp, #288] // 16-byte Folded Spill704; CHECK64-NEXT: .cfi_offset w19, -8705; CHECK64-NEXT: .cfi_offset w20, -16706; CHECK64-NEXT: .cfi_offset w21, -24707; CHECK64-NEXT: .cfi_offset w22, -32708; CHECK64-NEXT: .cfi_offset w23, -40709; CHECK64-NEXT: .cfi_offset w24, -48710; CHECK64-NEXT: .cfi_offset w25, -56711; CHECK64-NEXT: .cfi_offset vg, -64712; CHECK64-NEXT: .cfi_offset w30, -72713; CHECK64-NEXT: .cfi_offset w29, -80714; CHECK64-NEXT: .cfi_offset b8, -152715; CHECK64-NEXT: .cfi_offset b9, -160716; CHECK64-NEXT: .cfi_offset b10, -168717; CHECK64-NEXT: .cfi_offset b11, -176718; CHECK64-NEXT: .cfi_offset b12, -184719; CHECK64-NEXT: .cfi_offset b13, -192720; CHECK64-NEXT: .cfi_offset b14, -200721; CHECK64-NEXT: .cfi_offset b15, -208722; CHECK64-NEXT: str d0, [sp, #80] // 8-byte Spill723; CHECK64-NEXT: smstart sm724; CHECK64-NEXT: //APP725; CHECK64-NEXT: //NO_APP726; CHECK64-NEXT: //APP727; CHECK64-NEXT: //NO_APP728; CHECK64-NEXT: ldr d0, [sp, #80] // 8-byte Reload729; CHECK64-NEXT: str x0, [sp, #8]730; CHECK64-NEXT: str d0, [sp, #88]731; CHECK64-NEXT: smstop sm732; CHECK64-NEXT: ldp x20, x19, [sp, #288] // 16-byte Folded Reload733; CHECK64-NEXT: mov w0, wzr734; CHECK64-NEXT: ldp x22, x21, [sp, #272] // 16-byte Folded Reload735; CHECK64-NEXT: ldr x25, [sp, #248] // 8-byte Reload736; CHECK64-NEXT: ldp x24, x23, [sp, #256] // 16-byte Folded Reload737; CHECK64-NEXT: ldp x29, x30, [sp, #224] // 16-byte Folded Reload738; CHECK64-NEXT: ldp d9, d8, [sp, #144] // 16-byte Folded Reload739; CHECK64-NEXT: ldp d11, d10, [sp, #128] // 16-byte Folded Reload740; CHECK64-NEXT: ldp d13, d12, [sp, #112] // 16-byte Folded Reload741; CHECK64-NEXT: ldp d15, d14, [sp, #96] // 16-byte Folded Reload742; CHECK64-NEXT: add sp, sp, #304743; CHECK64-NEXT: .cfi_def_cfa_offset 0744; CHECK64-NEXT: .cfi_restore w19745; CHECK64-NEXT: .cfi_restore w20746; CHECK64-NEXT: .cfi_restore w21747; CHECK64-NEXT: .cfi_restore w22748; CHECK64-NEXT: .cfi_restore w23749; CHECK64-NEXT: .cfi_restore w24750; CHECK64-NEXT: .cfi_restore w25751; CHECK64-NEXT: .cfi_restore vg752; CHECK64-NEXT: .cfi_restore w30753; CHECK64-NEXT: .cfi_restore w29754; CHECK64-NEXT: .cfi_restore b8755; CHECK64-NEXT: .cfi_restore b9756; CHECK64-NEXT: .cfi_restore b10757; CHECK64-NEXT: .cfi_restore b11758; CHECK64-NEXT: .cfi_restore b12759; CHECK64-NEXT: .cfi_restore b13760; CHECK64-NEXT: .cfi_restore b14761; CHECK64-NEXT: .cfi_restore b15762; CHECK64-NEXT: ret763;764; CHECK1024-LABEL: csr_x18_25_d8_15_allocdi64_locallystreaming:765; CHECK1024: // %bb.0: // %entry766; CHECK1024-NEXT: sub sp, sp, #1168767; CHECK1024-NEXT: .cfi_def_cfa_offset 1168768; CHECK1024-NEXT: cntd x9769; CHECK1024-NEXT: stp d15, d14, [sp] // 16-byte Folded Spill770; CHECK1024-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill771; CHECK1024-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill772; CHECK1024-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill773; CHECK1024-NEXT: str x29, [sp, #1088] // 8-byte Spill774; CHECK1024-NEXT: str x30, [sp, #1096] // 8-byte Spill775; CHECK1024-NEXT: str x9, [sp, #1104] // 8-byte Spill776; CHECK1024-NEXT: str x25, [sp, #1112] // 8-byte Spill777; CHECK1024-NEXT: str x24, [sp, #1120] // 8-byte Spill778; CHECK1024-NEXT: str x23, [sp, #1128] // 8-byte Spill779; CHECK1024-NEXT: str x22, [sp, #1136] // 8-byte Spill780; CHECK1024-NEXT: str x21, [sp, #1144] // 8-byte Spill781; CHECK1024-NEXT: str x20, [sp, #1152] // 8-byte Spill782; CHECK1024-NEXT: str x19, [sp, #1160] // 8-byte Spill783; CHECK1024-NEXT: .cfi_offset w19, -8784; CHECK1024-NEXT: .cfi_offset w20, -16785; CHECK1024-NEXT: .cfi_offset w21, -24786; CHECK1024-NEXT: .cfi_offset w22, -32787; CHECK1024-NEXT: .cfi_offset w23, -40788; CHECK1024-NEXT: .cfi_offset w24, -48789; CHECK1024-NEXT: .cfi_offset w25, -56790; CHECK1024-NEXT: .cfi_offset vg, -64791; CHECK1024-NEXT: .cfi_offset w30, -72792; CHECK1024-NEXT: .cfi_offset w29, -80793; CHECK1024-NEXT: .cfi_offset b8, -1112794; CHECK1024-NEXT: .cfi_offset b9, -1120795; CHECK1024-NEXT: .cfi_offset b10, -1128796; CHECK1024-NEXT: .cfi_offset b11, -1136797; CHECK1024-NEXT: .cfi_offset b12, -1144798; CHECK1024-NEXT: .cfi_offset b13, -1152799; CHECK1024-NEXT: .cfi_offset b14, -1160800; CHECK1024-NEXT: .cfi_offset b15, -1168801; CHECK1024-NEXT: sub sp, sp, #1056802; CHECK1024-NEXT: .cfi_def_cfa_offset 2224803; CHECK1024-NEXT: str d0, [sp, #1040] // 8-byte Spill804; CHECK1024-NEXT: smstart sm805; CHECK1024-NEXT: //APP806; CHECK1024-NEXT: //NO_APP807; CHECK1024-NEXT: //APP808; CHECK1024-NEXT: //NO_APP809; CHECK1024-NEXT: ldr d0, [sp, #1040] // 8-byte Reload810; CHECK1024-NEXT: str x0, [sp, #8]811; CHECK1024-NEXT: str d0, [sp, #1048]812; CHECK1024-NEXT: smstop sm813; CHECK1024-NEXT: mov w0, wzr814; CHECK1024-NEXT: add sp, sp, #1056815; CHECK1024-NEXT: .cfi_def_cfa_offset 1168816; CHECK1024-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload817; CHECK1024-NEXT: ldr x19, [sp, #1160] // 8-byte Reload818; CHECK1024-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload819; CHECK1024-NEXT: ldr x20, [sp, #1152] // 8-byte Reload820; CHECK1024-NEXT: ldr x21, [sp, #1144] // 8-byte Reload821; CHECK1024-NEXT: ldr x22, [sp, #1136] // 8-byte Reload822; CHECK1024-NEXT: ldr x23, [sp, #1128] // 8-byte Reload823; CHECK1024-NEXT: ldr x24, [sp, #1120] // 8-byte Reload824; CHECK1024-NEXT: ldr x25, [sp, #1112] // 8-byte Reload825; CHECK1024-NEXT: ldr x30, [sp, #1096] // 8-byte Reload826; CHECK1024-NEXT: ldr x29, [sp, #1088] // 8-byte Reload827; CHECK1024-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload828; CHECK1024-NEXT: ldp d15, d14, [sp] // 16-byte Folded Reload829; CHECK1024-NEXT: add sp, sp, #1168830; CHECK1024-NEXT: .cfi_def_cfa_offset 0831; CHECK1024-NEXT: .cfi_restore w19832; CHECK1024-NEXT: .cfi_restore w20833; CHECK1024-NEXT: .cfi_restore w21834; CHECK1024-NEXT: .cfi_restore w22835; CHECK1024-NEXT: .cfi_restore w23836; CHECK1024-NEXT: .cfi_restore w24837; CHECK1024-NEXT: .cfi_restore w25838; CHECK1024-NEXT: .cfi_restore vg839; CHECK1024-NEXT: .cfi_restore w30840; CHECK1024-NEXT: .cfi_restore w29841; CHECK1024-NEXT: .cfi_restore b8842; CHECK1024-NEXT: .cfi_restore b9843; CHECK1024-NEXT: .cfi_restore b10844; CHECK1024-NEXT: .cfi_restore b11845; CHECK1024-NEXT: .cfi_restore b12846; CHECK1024-NEXT: .cfi_restore b13847; CHECK1024-NEXT: .cfi_restore b14848; CHECK1024-NEXT: .cfi_restore b15849; CHECK1024-NEXT: ret850entry:851 %a = alloca i64852 %b = alloca double853 tail call void asm sideeffect "", "~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25}"()854 tail call void asm sideeffect "", "~{d8},~{d9},~{d10},~{d11},~{d12},~{d13},~{d14},~{d15}"()855 store i64 %d, ptr %a856 store double %e, ptr %b857 ret i32 0858}859 860; We don't currently handle fpr stack arguments very well (they are hopefully relatively rare).861define float @nocsr_stackargs(float %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h, float %i) "aarch64_pstate_sm_compatible" {862; CHECK-LABEL: nocsr_stackargs:863; CHECK: // %bb.0: // %entry864; CHECK-NEXT: ldr s0, [sp]865; CHECK-NEXT: ret866entry:867 ret float %i868}869 870define float @csr_x20_stackargs(float %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h, float %i) "aarch64_pstate_sm_compatible" {871; CHECK-LABEL: csr_x20_stackargs:872; CHECK: // %bb.0: // %entry873; CHECK-NEXT: str x20, [sp, #-16]! // 8-byte Folded Spill874; CHECK-NEXT: .cfi_def_cfa_offset 16875; CHECK-NEXT: .cfi_offset w20, -16876; CHECK-NEXT: ldr s0, [sp, #16]877; CHECK-NEXT: //APP878; CHECK-NEXT: //NO_APP879; CHECK-NEXT: ldr x20, [sp], #16 // 8-byte Folded Reload880; CHECK-NEXT: ret881entry:882 tail call void asm sideeffect "", "~{x20}"() #1883 ret float %i884}885 886define float @csr_d8_stackargs(float %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h, float %i) "aarch64_pstate_sm_compatible" {887; CHECK0-LABEL: csr_d8_stackargs:888; CHECK0: // %bb.0: // %entry889; CHECK0-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill890; CHECK0-NEXT: .cfi_def_cfa_offset 16891; CHECK0-NEXT: .cfi_offset b8, -16892; CHECK0-NEXT: ldr s0, [sp, #16]893; CHECK0-NEXT: //APP894; CHECK0-NEXT: //NO_APP895; CHECK0-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload896; CHECK0-NEXT: ret897;898; CHECK64-LABEL: csr_d8_stackargs:899; CHECK64: // %bb.0: // %entry900; CHECK64-NEXT: sub sp, sp, #144901; CHECK64-NEXT: str d8, [sp, #64] // 8-byte Spill902; CHECK64-NEXT: .cfi_def_cfa_offset 144903; CHECK64-NEXT: .cfi_offset b8, -80904; CHECK64-NEXT: //APP905; CHECK64-NEXT: //NO_APP906; CHECK64-NEXT: ldr s0, [sp, #144]907; CHECK64-NEXT: ldr d8, [sp, #64] // 8-byte Reload908; CHECK64-NEXT: add sp, sp, #144909; CHECK64-NEXT: ret910;911; CHECK1024-LABEL: csr_d8_stackargs:912; CHECK1024: // %bb.0: // %entry913; CHECK1024-NEXT: sub sp, sp, #1040914; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill915; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill916; CHECK1024-NEXT: sub sp, sp, #1024917; CHECK1024-NEXT: .cfi_def_cfa_offset 2064918; CHECK1024-NEXT: .cfi_offset w29, -8919; CHECK1024-NEXT: .cfi_offset b8, -1040920; CHECK1024-NEXT: ldr s0, [sp, #2064]921; CHECK1024-NEXT: //APP922; CHECK1024-NEXT: //NO_APP923; CHECK1024-NEXT: add sp, sp, #1024924; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload925; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload926; CHECK1024-NEXT: add sp, sp, #1040927; CHECK1024-NEXT: ret928entry:929 tail call void asm sideeffect "", "~{d8}"() #1930 ret float %i931}932 933; SVE calling conventions934define i32 @svecc_basic(i32 noundef %num, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {935; CHECK-LABEL: svecc_basic:936; CHECK: // %bb.0: // %entry937; CHECK-NEXT: mov w0, wzr938; CHECK-NEXT: ret939entry:940 ret i32 0941}942 943define i32 @svecc_csr_x20(i32 noundef %num, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {944; CHECK-LABEL: svecc_csr_x20:945; CHECK: // %bb.0: // %entry946; CHECK-NEXT: str x20, [sp, #-16]! // 8-byte Folded Spill947; CHECK-NEXT: .cfi_def_cfa_offset 16948; CHECK-NEXT: .cfi_offset w20, -16949; CHECK-NEXT: mov w0, wzr950; CHECK-NEXT: //APP951; CHECK-NEXT: //NO_APP952; CHECK-NEXT: ldr x20, [sp], #16 // 8-byte Folded Reload953; CHECK-NEXT: ret954entry:955 tail call void asm sideeffect "", "~{x20}"() #1956 ret i32 0957}958 959define i32 @svecc_csr_d8(i32 noundef %num, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {960; CHECK0-LABEL: svecc_csr_d8:961; CHECK0: // %bb.0: // %entry962; CHECK0-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill963; CHECK0-NEXT: addvl sp, sp, #-1964; CHECK0-NEXT: str z8, [sp] // 16-byte Folded Spill965; CHECK0-NEXT: .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG966; CHECK0-NEXT: .cfi_offset w29, -16967; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 16968; CHECK0-NEXT: //APP969; CHECK0-NEXT: //NO_APP970; CHECK0-NEXT: mov w0, wzr971; CHECK0-NEXT: ldr z8, [sp] // 16-byte Folded Reload972; CHECK0-NEXT: addvl sp, sp, #1973; CHECK0-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload974; CHECK0-NEXT: ret975;976; CHECK64-LABEL: svecc_csr_d8:977; CHECK64: // %bb.0: // %entry978; CHECK64-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill979; CHECK64-NEXT: sub sp, sp, #64980; CHECK64-NEXT: addvl sp, sp, #-1981; CHECK64-NEXT: str z8, [sp] // 16-byte Folded Spill982; CHECK64-NEXT: sub sp, sp, #64983; CHECK64-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x01, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 144 + 8 * VG984; CHECK64-NEXT: .cfi_offset w29, -16985; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xb0, 0x7f, 0x22 // $d8 @ cfa - 8 * VG - 80986; CHECK64-NEXT: mov w0, wzr987; CHECK64-NEXT: //APP988; CHECK64-NEXT: //NO_APP989; CHECK64-NEXT: add sp, sp, #64990; CHECK64-NEXT: ldr z8, [sp] // 16-byte Folded Reload991; CHECK64-NEXT: add sp, sp, #64992; CHECK64-NEXT: addvl sp, sp, #1993; CHECK64-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload994; CHECK64-NEXT: ret995;996; CHECK1024-NOSPLITSVE-LABEL: svecc_csr_d8:997; CHECK1024-NOSPLITSVE: // %bb.0: // %entry998; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #1040999; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill1000; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-11001; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1002; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10241003; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2064 + 8 * VG1004; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -161005; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401006; CHECK1024-NOSPLITSVE-NEXT: mov w0, wzr1007; CHECK1024-NOSPLITSVE-NEXT: //APP1008; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1009; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10241010; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1011; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #11012; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload1013; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401014; CHECK1024-NOSPLITSVE-NEXT: ret1015;1016; CHECK1024-SPLITSVE-LABEL: svecc_csr_d8:1017; CHECK1024-SPLITSVE: // %bb.0: // %entry1018; CHECK1024-SPLITSVE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1019; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241020; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-11021; CHECK1024-SPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1022; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241023; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2064 + 8 * VG1024; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -161025; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401026; CHECK1024-SPLITSVE-NEXT: mov w0, wzr1027; CHECK1024-SPLITSVE-NEXT: //APP1028; CHECK1024-SPLITSVE-NEXT: //NO_APP1029; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241030; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1031; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241032; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #11033; CHECK1024-SPLITSVE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1034; CHECK1024-SPLITSVE-NEXT: ret1035entry:1036 tail call void asm sideeffect "", "~{d8}"() #11037 ret i32 01038}1039 1040define i32 @svecc_csr_d8d9(i32 noundef %num, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1041; CHECK0-LABEL: svecc_csr_d8d9:1042; CHECK0: // %bb.0: // %entry1043; CHECK0-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1044; CHECK0-NEXT: addvl sp, sp, #-21045; CHECK0-NEXT: str z9, [sp] // 16-byte Folded Spill1046; CHECK0-NEXT: str z8, [sp, #1, mul vl] // 16-byte Folded Spill1047; CHECK0-NEXT: .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 16 + 16 * VG1048; CHECK0-NEXT: .cfi_offset w29, -161049; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 161050; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x40, 0x1c // $d9 @ cfa - 16 * VG - 161051; CHECK0-NEXT: //APP1052; CHECK0-NEXT: //NO_APP1053; CHECK0-NEXT: mov w0, wzr1054; CHECK0-NEXT: ldr z9, [sp] // 16-byte Folded Reload1055; CHECK0-NEXT: ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload1056; CHECK0-NEXT: addvl sp, sp, #21057; CHECK0-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1058; CHECK0-NEXT: ret1059;1060; CHECK64-LABEL: svecc_csr_d8d9:1061; CHECK64: // %bb.0: // %entry1062; CHECK64-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1063; CHECK64-NEXT: sub sp, sp, #641064; CHECK64-NEXT: addvl sp, sp, #-21065; CHECK64-NEXT: str z9, [sp] // 16-byte Folded Spill1066; CHECK64-NEXT: str z8, [sp, #1, mul vl] // 16-byte Folded Spill1067; CHECK64-NEXT: sub sp, sp, #641068; CHECK64-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x01, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 144 + 16 * VG1069; CHECK64-NEXT: .cfi_offset w29, -161070; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xb0, 0x7f, 0x22 // $d8 @ cfa - 8 * VG - 801071; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xb0, 0x7f, 0x22 // $d9 @ cfa - 16 * VG - 801072; CHECK64-NEXT: mov w0, wzr1073; CHECK64-NEXT: //APP1074; CHECK64-NEXT: //NO_APP1075; CHECK64-NEXT: add sp, sp, #641076; CHECK64-NEXT: ldr z9, [sp] // 16-byte Folded Reload1077; CHECK64-NEXT: ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload1078; CHECK64-NEXT: add sp, sp, #641079; CHECK64-NEXT: addvl sp, sp, #21080; CHECK64-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1081; CHECK64-NEXT: ret1082;1083; CHECK1024-NOSPLITSVE-LABEL: svecc_csr_d8d9:1084; CHECK1024-NOSPLITSVE: // %bb.0: // %entry1085; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10401086; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill1087; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-21088; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp] // 16-byte Folded Spill1089; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #1, mul vl] // 16-byte Folded Spill1090; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10241091; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 2064 + 16 * VG1092; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -161093; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401094; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d9 @ cfa - 16 * VG - 10401095; CHECK1024-NOSPLITSVE-NEXT: mov w0, wzr1096; CHECK1024-NOSPLITSVE-NEXT: //APP1097; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1098; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10241099; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp] // 16-byte Folded Reload1100; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload1101; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #21102; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload1103; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401104; CHECK1024-NOSPLITSVE-NEXT: ret1105;1106; CHECK1024-SPLITSVE-LABEL: svecc_csr_d8d9:1107; CHECK1024-SPLITSVE: // %bb.0: // %entry1108; CHECK1024-SPLITSVE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1109; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241110; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-21111; CHECK1024-SPLITSVE-NEXT: str z9, [sp] // 16-byte Folded Spill1112; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #1, mul vl] // 16-byte Folded Spill1113; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241114; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 2064 + 16 * VG1115; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -161116; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401117; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d9 @ cfa - 16 * VG - 10401118; CHECK1024-SPLITSVE-NEXT: mov w0, wzr1119; CHECK1024-SPLITSVE-NEXT: //APP1120; CHECK1024-SPLITSVE-NEXT: //NO_APP1121; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241122; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp] // 16-byte Folded Reload1123; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #1, mul vl] // 16-byte Folded Reload1124; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241125; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #21126; CHECK1024-SPLITSVE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1127; CHECK1024-SPLITSVE-NEXT: ret1128entry:1129 tail call void asm sideeffect "", "~{d8},~{d9}"() #11130 ret i32 01131}1132 1133define i32 @svecc_csr_d8_allocd(double %d, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1134; CHECK0-LABEL: svecc_csr_d8_allocd:1135; CHECK0: // %bb.0: // %entry1136; CHECK0-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1137; CHECK0-NEXT: addvl sp, sp, #-11138; CHECK0-NEXT: str z8, [sp] // 16-byte Folded Spill1139; CHECK0-NEXT: .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG1140; CHECK0-NEXT: .cfi_offset w29, -161141; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 161142; CHECK0-NEXT: //APP1143; CHECK0-NEXT: //NO_APP1144; CHECK0-NEXT: addvl x8, sp, #11145; CHECK0-NEXT: mov w0, wzr1146; CHECK0-NEXT: ldr z8, [sp] // 16-byte Folded Reload1147; CHECK0-NEXT: str d0, [x8, #8]1148; CHECK0-NEXT: addvl sp, sp, #11149; CHECK0-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1150; CHECK0-NEXT: ret1151;1152; CHECK64-LABEL: svecc_csr_d8_allocd:1153; CHECK64: // %bb.0: // %entry1154; CHECK64-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1155; CHECK64-NEXT: sub sp, sp, #641156; CHECK64-NEXT: addvl sp, sp, #-11157; CHECK64-NEXT: str z8, [sp] // 16-byte Folded Spill1158; CHECK64-NEXT: sub sp, sp, #801159; CHECK64-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0xa0, 0x01, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 160 + 8 * VG1160; CHECK64-NEXT: .cfi_offset w29, -161161; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xb0, 0x7f, 0x22 // $d8 @ cfa - 8 * VG - 801162; CHECK64-NEXT: mov w0, wzr1163; CHECK64-NEXT: //APP1164; CHECK64-NEXT: //NO_APP1165; CHECK64-NEXT: str d0, [sp, #72]1166; CHECK64-NEXT: add sp, sp, #801167; CHECK64-NEXT: ldr z8, [sp] // 16-byte Folded Reload1168; CHECK64-NEXT: add sp, sp, #641169; CHECK64-NEXT: addvl sp, sp, #11170; CHECK64-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1171; CHECK64-NEXT: ret1172;1173; CHECK1024-NOSPLITSVE-LABEL: svecc_csr_d8_allocd:1174; CHECK1024-NOSPLITSVE: // %bb.0: // %entry1175; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10401176; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill1177; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-11178; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1179; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10401180; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0xa0, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2080 + 8 * VG1181; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -161182; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401183; CHECK1024-NOSPLITSVE-NEXT: mov w0, wzr1184; CHECK1024-NOSPLITSVE-NEXT: //APP1185; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1186; CHECK1024-NOSPLITSVE-NEXT: str d0, [sp, #1032]1187; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401188; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1189; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #11190; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload1191; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401192; CHECK1024-NOSPLITSVE-NEXT: ret1193;1194; CHECK1024-SPLITSVE-LABEL: svecc_csr_d8_allocd:1195; CHECK1024-SPLITSVE: // %bb.0: // %entry1196; CHECK1024-SPLITSVE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1197; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241198; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-11199; CHECK1024-SPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1200; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10401201; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0xa0, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2080 + 8 * VG1202; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -161203; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401204; CHECK1024-SPLITSVE-NEXT: mov w0, wzr1205; CHECK1024-SPLITSVE-NEXT: //APP1206; CHECK1024-SPLITSVE-NEXT: //NO_APP1207; CHECK1024-SPLITSVE-NEXT: str d0, [sp, #1032]1208; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10401209; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1210; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241211; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #11212; CHECK1024-SPLITSVE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1213; CHECK1024-SPLITSVE-NEXT: ret1214entry:1215 %a = alloca double1216 tail call void asm sideeffect "", "~{d8}"() #11217 store double %d, ptr %a1218 ret i32 01219}1220 1221define i32 @svecc_csr_d8_alloci64(i64 %d, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1222; CHECK0-LABEL: svecc_csr_d8_alloci64:1223; CHECK0: // %bb.0: // %entry1224; CHECK0-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1225; CHECK0-NEXT: addvl sp, sp, #-11226; CHECK0-NEXT: str z8, [sp] // 16-byte Folded Spill1227; CHECK0-NEXT: .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 16 + 8 * VG1228; CHECK0-NEXT: .cfi_offset w29, -161229; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 161230; CHECK0-NEXT: //APP1231; CHECK0-NEXT: //NO_APP1232; CHECK0-NEXT: mov x8, x01233; CHECK0-NEXT: addvl x9, sp, #11234; CHECK0-NEXT: ldr z8, [sp] // 16-byte Folded Reload1235; CHECK0-NEXT: mov w0, wzr1236; CHECK0-NEXT: str x8, [x9, #8]1237; CHECK0-NEXT: addvl sp, sp, #11238; CHECK0-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1239; CHECK0-NEXT: ret1240;1241; CHECK64-LABEL: svecc_csr_d8_alloci64:1242; CHECK64: // %bb.0: // %entry1243; CHECK64-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1244; CHECK64-NEXT: sub sp, sp, #641245; CHECK64-NEXT: addvl sp, sp, #-11246; CHECK64-NEXT: str z8, [sp] // 16-byte Folded Spill1247; CHECK64-NEXT: sub sp, sp, #801248; CHECK64-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0xa0, 0x01, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 160 + 8 * VG1249; CHECK64-NEXT: .cfi_offset w29, -161250; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xb0, 0x7f, 0x22 // $d8 @ cfa - 8 * VG - 801251; CHECK64-NEXT: mov x8, x01252; CHECK64-NEXT: mov w0, wzr1253; CHECK64-NEXT: //APP1254; CHECK64-NEXT: //NO_APP1255; CHECK64-NEXT: str x8, [sp, #8]1256; CHECK64-NEXT: add sp, sp, #801257; CHECK64-NEXT: ldr z8, [sp] // 16-byte Folded Reload1258; CHECK64-NEXT: add sp, sp, #641259; CHECK64-NEXT: addvl sp, sp, #11260; CHECK64-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1261; CHECK64-NEXT: ret1262;1263; CHECK1024-NOSPLITSVE-LABEL: svecc_csr_d8_alloci64:1264; CHECK1024-NOSPLITSVE: // %bb.0: // %entry1265; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10401266; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill1267; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-11268; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1269; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10401270; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0xa0, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2080 + 8 * VG1271; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -161272; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401273; CHECK1024-NOSPLITSVE-NEXT: mov x8, x01274; CHECK1024-NOSPLITSVE-NEXT: mov w0, wzr1275; CHECK1024-NOSPLITSVE-NEXT: //APP1276; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1277; CHECK1024-NOSPLITSVE-NEXT: str x8, [sp, #8]1278; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401279; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1280; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #11281; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload1282; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401283; CHECK1024-NOSPLITSVE-NEXT: ret1284;1285; CHECK1024-SPLITSVE-LABEL: svecc_csr_d8_alloci64:1286; CHECK1024-SPLITSVE: // %bb.0: // %entry1287; CHECK1024-SPLITSVE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1288; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241289; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-11290; CHECK1024-SPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1291; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10401292; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0xa0, 0x10, 0x92, 0x2e, 0x00, 0x38, 0x1e, 0x22 // sp + 2080 + 8 * VG1293; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -161294; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401295; CHECK1024-SPLITSVE-NEXT: mov x8, x01296; CHECK1024-SPLITSVE-NEXT: mov w0, wzr1297; CHECK1024-SPLITSVE-NEXT: //APP1298; CHECK1024-SPLITSVE-NEXT: //NO_APP1299; CHECK1024-SPLITSVE-NEXT: str x8, [sp, #8]1300; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10401301; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1302; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241303; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #11304; CHECK1024-SPLITSVE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1305; CHECK1024-SPLITSVE-NEXT: ret1306entry:1307 %a = alloca i641308 tail call void asm sideeffect "", "~{d8}"() #11309 store i64 %d, ptr %a1310 ret i32 01311}1312 1313define i32 @svecc_csr_d8_allocnxv4i32(i64 %d, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1314; CHECK0-LABEL: svecc_csr_d8_allocnxv4i32:1315; CHECK0: // %bb.0: // %entry1316; CHECK0-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1317; CHECK0-NEXT: addvl sp, sp, #-11318; CHECK0-NEXT: str z8, [sp] // 16-byte Folded Spill1319; CHECK0-NEXT: addvl sp, sp, #-11320; CHECK0-NEXT: .cfi_escape 0x0f, 0x08, 0x8f, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 16 + 16 * VG1321; CHECK0-NEXT: .cfi_offset w29, -161322; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x09, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x40, 0x1c // $d8 @ cfa - 8 * VG - 161323; CHECK0-NEXT: mov z0.s, #0 // =0x01324; CHECK0-NEXT: mov w0, wzr1325; CHECK0-NEXT: //APP1326; CHECK0-NEXT: //NO_APP1327; CHECK0-NEXT: str z0, [sp]1328; CHECK0-NEXT: addvl sp, sp, #11329; CHECK0-NEXT: ldr z8, [sp] // 16-byte Folded Reload1330; CHECK0-NEXT: addvl sp, sp, #11331; CHECK0-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1332; CHECK0-NEXT: ret1333;1334; CHECK64-LABEL: svecc_csr_d8_allocnxv4i32:1335; CHECK64: // %bb.0: // %entry1336; CHECK64-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1337; CHECK64-NEXT: sub sp, sp, #641338; CHECK64-NEXT: addvl sp, sp, #-11339; CHECK64-NEXT: str z8, [sp] // 16-byte Folded Spill1340; CHECK64-NEXT: sub sp, sp, #641341; CHECK64-NEXT: addvl sp, sp, #-11342; CHECK64-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x01, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 144 + 16 * VG1343; CHECK64-NEXT: .cfi_offset w29, -161344; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xb0, 0x7f, 0x22 // $d8 @ cfa - 8 * VG - 801345; CHECK64-NEXT: mov z0.s, #0 // =0x01346; CHECK64-NEXT: add x8, sp, #641347; CHECK64-NEXT: mov w0, wzr1348; CHECK64-NEXT: //APP1349; CHECK64-NEXT: //NO_APP1350; CHECK64-NEXT: str z0, [x8]1351; CHECK64-NEXT: add sp, sp, #641352; CHECK64-NEXT: addvl sp, sp, #11353; CHECK64-NEXT: ldr z8, [sp] // 16-byte Folded Reload1354; CHECK64-NEXT: add sp, sp, #641355; CHECK64-NEXT: addvl sp, sp, #11356; CHECK64-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1357; CHECK64-NEXT: ret1358;1359; CHECK1024-NOSPLITSVE-LABEL: svecc_csr_d8_allocnxv4i32:1360; CHECK1024-NOSPLITSVE: // %bb.0: // %entry1361; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10401362; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill1363; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-11364; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1365; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10241366; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-11367; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 2064 + 16 * VG1368; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -161369; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401370; CHECK1024-NOSPLITSVE-NEXT: mov z0.s, #0 // =0x01371; CHECK1024-NOSPLITSVE-NEXT: add x8, sp, #10241372; CHECK1024-NOSPLITSVE-NEXT: mov w0, wzr1373; CHECK1024-NOSPLITSVE-NEXT: //APP1374; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1375; CHECK1024-NOSPLITSVE-NEXT: str z0, [x8]1376; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10241377; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #11378; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1379; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #11380; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload1381; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10401382; CHECK1024-NOSPLITSVE-NEXT: ret1383;1384; CHECK1024-SPLITSVE-LABEL: svecc_csr_d8_allocnxv4i32:1385; CHECK1024-SPLITSVE: // %bb.0: // %entry1386; CHECK1024-SPLITSVE-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1387; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241388; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-11389; CHECK1024-SPLITSVE-NEXT: str z8, [sp] // 16-byte Folded Spill1390; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241391; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-11392; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x0f, 0x09, 0x8f, 0x90, 0x10, 0x92, 0x2e, 0x00, 0x40, 0x1e, 0x22 // sp + 2064 + 16 * VG1393; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -161394; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xf0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10401395; CHECK1024-SPLITSVE-NEXT: mov z0.s, #0 // =0x01396; CHECK1024-SPLITSVE-NEXT: add x8, sp, #10241397; CHECK1024-SPLITSVE-NEXT: mov w0, wzr1398; CHECK1024-SPLITSVE-NEXT: //APP1399; CHECK1024-SPLITSVE-NEXT: //NO_APP1400; CHECK1024-SPLITSVE-NEXT: str z0, [x8]1401; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241402; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #11403; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp] // 16-byte Folded Reload1404; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241405; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #11406; CHECK1024-SPLITSVE-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1407; CHECK1024-SPLITSVE-NEXT: ret1408entry:1409 %a = alloca <vscale x 4 x i32>1410 tail call void asm sideeffect "", "~{d8}"() #11411 store <vscale x 4 x i32> zeroinitializer, ptr %a1412 ret i32 01413}1414 1415define i32 @svecc_csr_x18_25_d8_15_allocdi64(i64 %d, double %e, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1416; CHECK0-LABEL: svecc_csr_x18_25_d8_15_allocdi64:1417; CHECK0: // %bb.0: // %entry1418; CHECK0-NEXT: stp x29, x25, [sp, #-64]! // 16-byte Folded Spill1419; CHECK0-NEXT: stp x24, x23, [sp, #16] // 16-byte Folded Spill1420; CHECK0-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill1421; CHECK0-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill1422; CHECK0-NEXT: addvl sp, sp, #-81423; CHECK0-NEXT: str z15, [sp] // 16-byte Folded Spill1424; CHECK0-NEXT: str z14, [sp, #1, mul vl] // 16-byte Folded Spill1425; CHECK0-NEXT: str z13, [sp, #2, mul vl] // 16-byte Folded Spill1426; CHECK0-NEXT: str z12, [sp, #3, mul vl] // 16-byte Folded Spill1427; CHECK0-NEXT: str z11, [sp, #4, mul vl] // 16-byte Folded Spill1428; CHECK0-NEXT: str z10, [sp, #5, mul vl] // 16-byte Folded Spill1429; CHECK0-NEXT: str z9, [sp, #6, mul vl] // 16-byte Folded Spill1430; CHECK0-NEXT: str z8, [sp, #7, mul vl] // 16-byte Folded Spill1431; CHECK0-NEXT: sub sp, sp, #161432; CHECK0-NEXT: .cfi_escape 0x0f, 0x0b, 0x8f, 0xd0, 0x00, 0x92, 0x2e, 0x00, 0x11, 0xc0, 0x00, 0x1e, 0x22 // sp + 80 + 64 * VG1433; CHECK0-NEXT: .cfi_offset w19, -81434; CHECK0-NEXT: .cfi_offset w20, -161435; CHECK0-NEXT: .cfi_offset w21, -241436; CHECK0-NEXT: .cfi_offset w22, -321437; CHECK0-NEXT: .cfi_offset w23, -401438; CHECK0-NEXT: .cfi_offset w24, -481439; CHECK0-NEXT: .cfi_offset w25, -561440; CHECK0-NEXT: .cfi_offset w29, -641441; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d8 @ cfa - 8 * VG - 641442; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d9 @ cfa - 16 * VG - 641443; CHECK0-NEXT: .cfi_escape 0x10, 0x4a, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d10 @ cfa - 24 * VG - 641444; CHECK0-NEXT: .cfi_escape 0x10, 0x4b, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d11 @ cfa - 32 * VG - 641445; CHECK0-NEXT: .cfi_escape 0x10, 0x4c, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d12 @ cfa - 40 * VG - 641446; CHECK0-NEXT: .cfi_escape 0x10, 0x4d, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d13 @ cfa - 48 * VG - 641447; CHECK0-NEXT: .cfi_escape 0x10, 0x4e, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d14 @ cfa - 56 * VG - 641448; CHECK0-NEXT: .cfi_escape 0x10, 0x4f, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d15 @ cfa - 64 * VG - 641449; CHECK0-NEXT: mov x8, x01450; CHECK0-NEXT: mov w0, wzr1451; CHECK0-NEXT: //APP1452; CHECK0-NEXT: //NO_APP1453; CHECK0-NEXT: //APP1454; CHECK0-NEXT: //NO_APP1455; CHECK0-NEXT: str x8, [sp, #8]1456; CHECK0-NEXT: str d0, [sp], #161457; CHECK0-NEXT: ldr z15, [sp] // 16-byte Folded Reload1458; CHECK0-NEXT: ldr z14, [sp, #1, mul vl] // 16-byte Folded Reload1459; CHECK0-NEXT: ldr z13, [sp, #2, mul vl] // 16-byte Folded Reload1460; CHECK0-NEXT: ldr z12, [sp, #3, mul vl] // 16-byte Folded Reload1461; CHECK0-NEXT: ldr z11, [sp, #4, mul vl] // 16-byte Folded Reload1462; CHECK0-NEXT: ldr z10, [sp, #5, mul vl] // 16-byte Folded Reload1463; CHECK0-NEXT: ldr z9, [sp, #6, mul vl] // 16-byte Folded Reload1464; CHECK0-NEXT: ldr z8, [sp, #7, mul vl] // 16-byte Folded Reload1465; CHECK0-NEXT: addvl sp, sp, #81466; CHECK0-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload1467; CHECK0-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload1468; CHECK0-NEXT: ldp x24, x23, [sp, #16] // 16-byte Folded Reload1469; CHECK0-NEXT: ldp x29, x25, [sp], #64 // 16-byte Folded Reload1470; CHECK0-NEXT: ret1471;1472; CHECK64-LABEL: svecc_csr_x18_25_d8_15_allocdi64:1473; CHECK64: // %bb.0: // %entry1474; CHECK64-NEXT: stp x29, x25, [sp, #-64]! // 16-byte Folded Spill1475; CHECK64-NEXT: stp x24, x23, [sp, #16] // 16-byte Folded Spill1476; CHECK64-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill1477; CHECK64-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill1478; CHECK64-NEXT: sub sp, sp, #641479; CHECK64-NEXT: addvl sp, sp, #-81480; CHECK64-NEXT: str z15, [sp] // 16-byte Folded Spill1481; CHECK64-NEXT: str z14, [sp, #1, mul vl] // 16-byte Folded Spill1482; CHECK64-NEXT: str z13, [sp, #2, mul vl] // 16-byte Folded Spill1483; CHECK64-NEXT: str z12, [sp, #3, mul vl] // 16-byte Folded Spill1484; CHECK64-NEXT: str z11, [sp, #4, mul vl] // 16-byte Folded Spill1485; CHECK64-NEXT: str z10, [sp, #5, mul vl] // 16-byte Folded Spill1486; CHECK64-NEXT: str z9, [sp, #6, mul vl] // 16-byte Folded Spill1487; CHECK64-NEXT: str z8, [sp, #7, mul vl] // 16-byte Folded Spill1488; CHECK64-NEXT: sub sp, sp, #961489; CHECK64-NEXT: .cfi_escape 0x0f, 0x0b, 0x8f, 0xe0, 0x01, 0x92, 0x2e, 0x00, 0x11, 0xc0, 0x00, 0x1e, 0x22 // sp + 224 + 64 * VG1490; CHECK64-NEXT: .cfi_offset w19, -81491; CHECK64-NEXT: .cfi_offset w20, -161492; CHECK64-NEXT: .cfi_offset w21, -241493; CHECK64-NEXT: .cfi_offset w22, -321494; CHECK64-NEXT: .cfi_offset w23, -401495; CHECK64-NEXT: .cfi_offset w24, -481496; CHECK64-NEXT: .cfi_offset w25, -561497; CHECK64-NEXT: .cfi_offset w29, -641498; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d8 @ cfa - 8 * VG - 1281499; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d9 @ cfa - 16 * VG - 1281500; CHECK64-NEXT: .cfi_escape 0x10, 0x4a, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d10 @ cfa - 24 * VG - 1281501; CHECK64-NEXT: .cfi_escape 0x10, 0x4b, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d11 @ cfa - 32 * VG - 1281502; CHECK64-NEXT: .cfi_escape 0x10, 0x4c, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d12 @ cfa - 40 * VG - 1281503; CHECK64-NEXT: .cfi_escape 0x10, 0x4d, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d13 @ cfa - 48 * VG - 1281504; CHECK64-NEXT: .cfi_escape 0x10, 0x4e, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d14 @ cfa - 56 * VG - 1281505; CHECK64-NEXT: .cfi_escape 0x10, 0x4f, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d15 @ cfa - 64 * VG - 1281506; CHECK64-NEXT: mov x8, x01507; CHECK64-NEXT: mov w0, wzr1508; CHECK64-NEXT: //APP1509; CHECK64-NEXT: //NO_APP1510; CHECK64-NEXT: //APP1511; CHECK64-NEXT: //NO_APP1512; CHECK64-NEXT: str x8, [sp, #8]1513; CHECK64-NEXT: str d0, [sp, #88]1514; CHECK64-NEXT: add sp, sp, #961515; CHECK64-NEXT: ldr z15, [sp] // 16-byte Folded Reload1516; CHECK64-NEXT: ldr z14, [sp, #1, mul vl] // 16-byte Folded Reload1517; CHECK64-NEXT: ldr z13, [sp, #2, mul vl] // 16-byte Folded Reload1518; CHECK64-NEXT: ldr z12, [sp, #3, mul vl] // 16-byte Folded Reload1519; CHECK64-NEXT: ldr z11, [sp, #4, mul vl] // 16-byte Folded Reload1520; CHECK64-NEXT: ldr z10, [sp, #5, mul vl] // 16-byte Folded Reload1521; CHECK64-NEXT: ldr z9, [sp, #6, mul vl] // 16-byte Folded Reload1522; CHECK64-NEXT: ldr z8, [sp, #7, mul vl] // 16-byte Folded Reload1523; CHECK64-NEXT: add sp, sp, #641524; CHECK64-NEXT: addvl sp, sp, #81525; CHECK64-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload1526; CHECK64-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload1527; CHECK64-NEXT: ldp x24, x23, [sp, #16] // 16-byte Folded Reload1528; CHECK64-NEXT: ldp x29, x25, [sp], #64 // 16-byte Folded Reload1529; CHECK64-NEXT: ret1530;1531; CHECK1024-NOSPLITSVE-LABEL: svecc_csr_x18_25_d8_15_allocdi64:1532; CHECK1024-NOSPLITSVE: // %bb.0: // %entry1533; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10881534; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill1535; CHECK1024-NOSPLITSVE-NEXT: str x25, [sp, #1032] // 8-byte Spill1536; CHECK1024-NOSPLITSVE-NEXT: str x24, [sp, #1040] // 8-byte Spill1537; CHECK1024-NOSPLITSVE-NEXT: str x23, [sp, #1048] // 8-byte Spill1538; CHECK1024-NOSPLITSVE-NEXT: str x22, [sp, #1056] // 8-byte Spill1539; CHECK1024-NOSPLITSVE-NEXT: str x21, [sp, #1064] // 8-byte Spill1540; CHECK1024-NOSPLITSVE-NEXT: str x20, [sp, #1072] // 8-byte Spill1541; CHECK1024-NOSPLITSVE-NEXT: str x19, [sp, #1080] // 8-byte Spill1542; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-81543; CHECK1024-NOSPLITSVE-NEXT: str z15, [sp] // 16-byte Folded Spill1544; CHECK1024-NOSPLITSVE-NEXT: str z14, [sp, #1, mul vl] // 16-byte Folded Spill1545; CHECK1024-NOSPLITSVE-NEXT: str z13, [sp, #2, mul vl] // 16-byte Folded Spill1546; CHECK1024-NOSPLITSVE-NEXT: str z12, [sp, #3, mul vl] // 16-byte Folded Spill1547; CHECK1024-NOSPLITSVE-NEXT: str z11, [sp, #4, mul vl] // 16-byte Folded Spill1548; CHECK1024-NOSPLITSVE-NEXT: str z10, [sp, #5, mul vl] // 16-byte Folded Spill1549; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp, #6, mul vl] // 16-byte Folded Spill1550; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #7, mul vl] // 16-byte Folded Spill1551; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10561552; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x0f, 0x0b, 0x8f, 0xe0, 0x10, 0x92, 0x2e, 0x00, 0x11, 0xc0, 0x00, 0x1e, 0x22 // sp + 2144 + 64 * VG1553; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w19, -81554; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w20, -161555; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w21, -241556; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w22, -321557; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w23, -401558; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w24, -481559; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w25, -561560; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -641561; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10881562; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * VG - 10881563; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * VG - 10881564; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * VG - 10881565; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * VG - 10881566; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * VG - 10881567; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * VG - 10881568; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * VG - 10881569; CHECK1024-NOSPLITSVE-NEXT: mov x8, x01570; CHECK1024-NOSPLITSVE-NEXT: mov w0, wzr1571; CHECK1024-NOSPLITSVE-NEXT: //APP1572; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1573; CHECK1024-NOSPLITSVE-NEXT: //APP1574; CHECK1024-NOSPLITSVE-NEXT: //NO_APP1575; CHECK1024-NOSPLITSVE-NEXT: str x8, [sp, #8]1576; CHECK1024-NOSPLITSVE-NEXT: str d0, [sp, #1048]1577; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10561578; CHECK1024-NOSPLITSVE-NEXT: ldr z15, [sp] // 16-byte Folded Reload1579; CHECK1024-NOSPLITSVE-NEXT: ldr z14, [sp, #1, mul vl] // 16-byte Folded Reload1580; CHECK1024-NOSPLITSVE-NEXT: ldr z13, [sp, #2, mul vl] // 16-byte Folded Reload1581; CHECK1024-NOSPLITSVE-NEXT: ldr z12, [sp, #3, mul vl] // 16-byte Folded Reload1582; CHECK1024-NOSPLITSVE-NEXT: ldr z11, [sp, #4, mul vl] // 16-byte Folded Reload1583; CHECK1024-NOSPLITSVE-NEXT: ldr z10, [sp, #5, mul vl] // 16-byte Folded Reload1584; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp, #6, mul vl] // 16-byte Folded Reload1585; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #7, mul vl] // 16-byte Folded Reload1586; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #81587; CHECK1024-NOSPLITSVE-NEXT: ldr x19, [sp, #1080] // 8-byte Reload1588; CHECK1024-NOSPLITSVE-NEXT: ldr x20, [sp, #1072] // 8-byte Reload1589; CHECK1024-NOSPLITSVE-NEXT: ldr x21, [sp, #1064] // 8-byte Reload1590; CHECK1024-NOSPLITSVE-NEXT: ldr x22, [sp, #1056] // 8-byte Reload1591; CHECK1024-NOSPLITSVE-NEXT: ldr x23, [sp, #1048] // 8-byte Reload1592; CHECK1024-NOSPLITSVE-NEXT: ldr x24, [sp, #1040] // 8-byte Reload1593; CHECK1024-NOSPLITSVE-NEXT: ldr x25, [sp, #1032] // 8-byte Reload1594; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload1595; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10881596; CHECK1024-NOSPLITSVE-NEXT: ret1597;1598; CHECK1024-SPLITSVE-LABEL: svecc_csr_x18_25_d8_15_allocdi64:1599; CHECK1024-SPLITSVE: // %bb.0: // %entry1600; CHECK1024-SPLITSVE-NEXT: stp x29, x25, [sp, #-64]! // 16-byte Folded Spill1601; CHECK1024-SPLITSVE-NEXT: stp x24, x23, [sp, #16] // 16-byte Folded Spill1602; CHECK1024-SPLITSVE-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill1603; CHECK1024-SPLITSVE-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill1604; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10241605; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-81606; CHECK1024-SPLITSVE-NEXT: str z15, [sp] // 16-byte Folded Spill1607; CHECK1024-SPLITSVE-NEXT: str z14, [sp, #1, mul vl] // 16-byte Folded Spill1608; CHECK1024-SPLITSVE-NEXT: str z13, [sp, #2, mul vl] // 16-byte Folded Spill1609; CHECK1024-SPLITSVE-NEXT: str z12, [sp, #3, mul vl] // 16-byte Folded Spill1610; CHECK1024-SPLITSVE-NEXT: str z11, [sp, #4, mul vl] // 16-byte Folded Spill1611; CHECK1024-SPLITSVE-NEXT: str z10, [sp, #5, mul vl] // 16-byte Folded Spill1612; CHECK1024-SPLITSVE-NEXT: str z9, [sp, #6, mul vl] // 16-byte Folded Spill1613; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #7, mul vl] // 16-byte Folded Spill1614; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10561615; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x0f, 0x0b, 0x8f, 0xe0, 0x10, 0x92, 0x2e, 0x00, 0x11, 0xc0, 0x00, 0x1e, 0x22 // sp + 2144 + 64 * VG1616; CHECK1024-SPLITSVE-NEXT: .cfi_offset w19, -81617; CHECK1024-SPLITSVE-NEXT: .cfi_offset w20, -161618; CHECK1024-SPLITSVE-NEXT: .cfi_offset w21, -241619; CHECK1024-SPLITSVE-NEXT: .cfi_offset w22, -321620; CHECK1024-SPLITSVE-NEXT: .cfi_offset w23, -401621; CHECK1024-SPLITSVE-NEXT: .cfi_offset w24, -481622; CHECK1024-SPLITSVE-NEXT: .cfi_offset w25, -561623; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -641624; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10881625; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * VG - 10881626; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * VG - 10881627; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * VG - 10881628; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * VG - 10881629; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * VG - 10881630; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * VG - 10881631; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * VG - 10881632; CHECK1024-SPLITSVE-NEXT: mov x8, x01633; CHECK1024-SPLITSVE-NEXT: mov w0, wzr1634; CHECK1024-SPLITSVE-NEXT: //APP1635; CHECK1024-SPLITSVE-NEXT: //NO_APP1636; CHECK1024-SPLITSVE-NEXT: //APP1637; CHECK1024-SPLITSVE-NEXT: //NO_APP1638; CHECK1024-SPLITSVE-NEXT: str x8, [sp, #8]1639; CHECK1024-SPLITSVE-NEXT: str d0, [sp, #1048]1640; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10561641; CHECK1024-SPLITSVE-NEXT: ldr z15, [sp] // 16-byte Folded Reload1642; CHECK1024-SPLITSVE-NEXT: ldr z14, [sp, #1, mul vl] // 16-byte Folded Reload1643; CHECK1024-SPLITSVE-NEXT: ldr z13, [sp, #2, mul vl] // 16-byte Folded Reload1644; CHECK1024-SPLITSVE-NEXT: ldr z12, [sp, #3, mul vl] // 16-byte Folded Reload1645; CHECK1024-SPLITSVE-NEXT: ldr z11, [sp, #4, mul vl] // 16-byte Folded Reload1646; CHECK1024-SPLITSVE-NEXT: ldr z10, [sp, #5, mul vl] // 16-byte Folded Reload1647; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp, #6, mul vl] // 16-byte Folded Reload1648; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #7, mul vl] // 16-byte Folded Reload1649; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10241650; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #81651; CHECK1024-SPLITSVE-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload1652; CHECK1024-SPLITSVE-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload1653; CHECK1024-SPLITSVE-NEXT: ldp x24, x23, [sp, #16] // 16-byte Folded Reload1654; CHECK1024-SPLITSVE-NEXT: ldp x29, x25, [sp], #64 // 16-byte Folded Reload1655; CHECK1024-SPLITSVE-NEXT: ret1656entry:1657 %a = alloca i641658 %b = alloca double1659 tail call void asm sideeffect "", "~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25}"()1660 tail call void asm sideeffect "", "~{d8},~{d9},~{d10},~{d11},~{d12},~{d13},~{d14},~{d15}"()1661 store i64 %d, ptr %a1662 store double %e, ptr %b1663 ret i32 01664}1665 1666 1667define [2 x <vscale x 4 x i1>] @sve_signature_pred_2xv4i1([2 x <vscale x 4 x i1>] %arg1, [2 x <vscale x 4 x i1>] %arg2) nounwind "aarch64_pstate_sm_compatible" {1668; CHECK-LABEL: sve_signature_pred_2xv4i1:1669; CHECK: // %bb.0:1670; CHECK-NEXT: mov p1.b, p3.b1671; CHECK-NEXT: mov p0.b, p2.b1672; CHECK-NEXT: ret1673 ret [2 x <vscale x 4 x i1>] %arg21674}1675 1676define [2 x <vscale x 4 x i1>] @sve_signature_pred_2xv4i1_caller([2 x <vscale x 4 x i1>] %arg1, [2 x <vscale x 4 x i1>] %arg2) nounwind "aarch64_pstate_sm_compatible" {1677; CHECK-LABEL: sve_signature_pred_2xv4i1_caller:1678; CHECK: // %bb.0:1679; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill1680; CHECK-NEXT: addvl sp, sp, #-11681; CHECK-NEXT: str p5, [sp, #6, mul vl] // 2-byte Spill1682; CHECK-NEXT: mov p5.b, p0.b1683; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Spill1684; CHECK-NEXT: mov p4.b, p1.b1685; CHECK-NEXT: mov p0.b, p2.b1686; CHECK-NEXT: mov p1.b, p3.b1687; CHECK-NEXT: mov p2.b, p5.b1688; CHECK-NEXT: mov p3.b, p4.b1689; CHECK-NEXT: bl sve_signature_pred_2xv4i11690; CHECK-NEXT: ldr p5, [sp, #6, mul vl] // 2-byte Reload1691; CHECK-NEXT: ldr p4, [sp, #7, mul vl] // 2-byte Reload1692; CHECK-NEXT: addvl sp, sp, #11693; CHECK-NEXT: ldp x29, x30, [sp], #16 // 16-byte Folded Reload1694; CHECK-NEXT: ret1695 %res = call [2 x <vscale x 4 x i1>] @sve_signature_pred_2xv4i1([2 x <vscale x 4 x i1>] %arg2, [2 x <vscale x 4 x i1>] %arg1)1696 ret [2 x <vscale x 4 x i1>] %res1697}1698 1699define i32 @f128_libcall(fp128 %v0, fp128 %v1, fp128 %v2, fp128 %v3, i32 %a, i32 %b) "aarch64_pstate_sm_compatible" {1700; CHECK0-LABEL: f128_libcall:1701; CHECK0: // %bb.0:1702; CHECK0-NEXT: sub sp, sp, #1921703; CHECK0-NEXT: .cfi_def_cfa_offset 1921704; CHECK0-NEXT: cntd x91705; CHECK0-NEXT: stp d15, d14, [sp, #64] // 16-byte Folded Spill1706; CHECK0-NEXT: stp d13, d12, [sp, #80] // 16-byte Folded Spill1707; CHECK0-NEXT: stp d11, d10, [sp, #96] // 16-byte Folded Spill1708; CHECK0-NEXT: stp d9, d8, [sp, #112] // 16-byte Folded Spill1709; CHECK0-NEXT: stp x29, x30, [sp, #128] // 16-byte Folded Spill1710; CHECK0-NEXT: str x9, [sp, #144] // 8-byte Spill1711; CHECK0-NEXT: stp x22, x21, [sp, #160] // 16-byte Folded Spill1712; CHECK0-NEXT: stp x20, x19, [sp, #176] // 16-byte Folded Spill1713; CHECK0-NEXT: .cfi_offset w19, -81714; CHECK0-NEXT: .cfi_offset w20, -161715; CHECK0-NEXT: .cfi_offset w21, -241716; CHECK0-NEXT: .cfi_offset w22, -321717; CHECK0-NEXT: .cfi_offset vg, -481718; CHECK0-NEXT: .cfi_offset w30, -561719; CHECK0-NEXT: .cfi_offset w29, -641720; CHECK0-NEXT: .cfi_offset b8, -721721; CHECK0-NEXT: .cfi_offset b9, -801722; CHECK0-NEXT: .cfi_offset b10, -881723; CHECK0-NEXT: .cfi_offset b11, -961724; CHECK0-NEXT: .cfi_offset b12, -1041725; CHECK0-NEXT: .cfi_offset b13, -1121726; CHECK0-NEXT: .cfi_offset b14, -1201727; CHECK0-NEXT: .cfi_offset b15, -1281728; CHECK0-NEXT: mov w19, w11729; CHECK0-NEXT: mov w20, w01730; CHECK0-NEXT: stp q0, q1, [sp] // 32-byte Folded Spill1731; CHECK0-NEXT: stp q2, q3, [sp, #32] // 32-byte Folded Spill1732; CHECK0-NEXT: bl __arm_sme_state1733; CHECK0-NEXT: mov x21, x01734; CHECK0-NEXT: tbz w21, #0, .LBB27_21735; CHECK0-NEXT: // %bb.1:1736; CHECK0-NEXT: smstop sm1737; CHECK0-NEXT: .LBB27_2:1738; CHECK0-NEXT: ldp q0, q1, [sp] // 32-byte Folded Reload1739; CHECK0-NEXT: bl __lttf21740; CHECK0-NEXT: tbz w21, #0, .LBB27_41741; CHECK0-NEXT: // %bb.3:1742; CHECK0-NEXT: smstart sm1743; CHECK0-NEXT: .LBB27_4:1744; CHECK0-NEXT: cmp w0, #01745; CHECK0-NEXT: cset w22, mi1746; CHECK0-NEXT: tbz w21, #0, .LBB27_61747; CHECK0-NEXT: // %bb.5:1748; CHECK0-NEXT: smstop sm1749; CHECK0-NEXT: .LBB27_6:1750; CHECK0-NEXT: ldp q0, q1, [sp, #32] // 32-byte Folded Reload1751; CHECK0-NEXT: bl __getf21752; CHECK0-NEXT: tbz w21, #0, .LBB27_81753; CHECK0-NEXT: // %bb.7:1754; CHECK0-NEXT: smstart sm1755; CHECK0-NEXT: .LBB27_8:1756; CHECK0-NEXT: cmp w0, #01757; CHECK0-NEXT: ldp x29, x30, [sp, #128] // 16-byte Folded Reload1758; CHECK0-NEXT: cset w8, pl1759; CHECK0-NEXT: ldp d9, d8, [sp, #112] // 16-byte Folded Reload1760; CHECK0-NEXT: tst w8, w221761; CHECK0-NEXT: ldp x22, x21, [sp, #160] // 16-byte Folded Reload1762; CHECK0-NEXT: csel w0, w20, w19, ne1763; CHECK0-NEXT: ldp x20, x19, [sp, #176] // 16-byte Folded Reload1764; CHECK0-NEXT: ldp d11, d10, [sp, #96] // 16-byte Folded Reload1765; CHECK0-NEXT: ldp d13, d12, [sp, #80] // 16-byte Folded Reload1766; CHECK0-NEXT: ldp d15, d14, [sp, #64] // 16-byte Folded Reload1767; CHECK0-NEXT: add sp, sp, #1921768; CHECK0-NEXT: .cfi_def_cfa_offset 01769; CHECK0-NEXT: .cfi_restore w191770; CHECK0-NEXT: .cfi_restore w201771; CHECK0-NEXT: .cfi_restore w211772; CHECK0-NEXT: .cfi_restore w221773; CHECK0-NEXT: .cfi_restore vg1774; CHECK0-NEXT: .cfi_restore w301775; CHECK0-NEXT: .cfi_restore w291776; CHECK0-NEXT: .cfi_restore b81777; CHECK0-NEXT: .cfi_restore b91778; CHECK0-NEXT: .cfi_restore b101779; CHECK0-NEXT: .cfi_restore b111780; CHECK0-NEXT: .cfi_restore b121781; CHECK0-NEXT: .cfi_restore b131782; CHECK0-NEXT: .cfi_restore b141783; CHECK0-NEXT: .cfi_restore b151784; CHECK0-NEXT: ret1785;1786; CHECK64-LABEL: f128_libcall:1787; CHECK64: // %bb.0:1788; CHECK64-NEXT: sub sp, sp, #3201789; CHECK64-NEXT: .cfi_def_cfa_offset 3201790; CHECK64-NEXT: cntd x91791; CHECK64-NEXT: stp d15, d14, [sp, #128] // 16-byte Folded Spill1792; CHECK64-NEXT: stp d13, d12, [sp, #144] // 16-byte Folded Spill1793; CHECK64-NEXT: stp d11, d10, [sp, #160] // 16-byte Folded Spill1794; CHECK64-NEXT: stp d9, d8, [sp, #176] // 16-byte Folded Spill1795; CHECK64-NEXT: stp x29, x30, [sp, #256] // 16-byte Folded Spill1796; CHECK64-NEXT: stp x9, x28, [sp, #272] // 16-byte Folded Spill1797; CHECK64-NEXT: stp x22, x21, [sp, #288] // 16-byte Folded Spill1798; CHECK64-NEXT: stp x20, x19, [sp, #304] // 16-byte Folded Spill1799; CHECK64-NEXT: .cfi_offset w19, -81800; CHECK64-NEXT: .cfi_offset w20, -161801; CHECK64-NEXT: .cfi_offset w21, -241802; CHECK64-NEXT: .cfi_offset w22, -321803; CHECK64-NEXT: .cfi_offset w28, -401804; CHECK64-NEXT: .cfi_offset vg, -481805; CHECK64-NEXT: .cfi_offset w30, -561806; CHECK64-NEXT: .cfi_offset w29, -641807; CHECK64-NEXT: .cfi_offset b8, -1361808; CHECK64-NEXT: .cfi_offset b9, -1441809; CHECK64-NEXT: .cfi_offset b10, -1521810; CHECK64-NEXT: .cfi_offset b11, -1601811; CHECK64-NEXT: .cfi_offset b12, -1681812; CHECK64-NEXT: .cfi_offset b13, -1761813; CHECK64-NEXT: .cfi_offset b14, -1841814; CHECK64-NEXT: .cfi_offset b15, -1921815; CHECK64-NEXT: mov w19, w11816; CHECK64-NEXT: mov w20, w01817; CHECK64-NEXT: stp q0, q1, [sp, #64] // 32-byte Folded Spill1818; CHECK64-NEXT: stp q2, q3, [sp, #96] // 32-byte Folded Spill1819; CHECK64-NEXT: bl __arm_sme_state1820; CHECK64-NEXT: mov x21, x01821; CHECK64-NEXT: tbz w21, #0, .LBB27_21822; CHECK64-NEXT: // %bb.1:1823; CHECK64-NEXT: smstop sm1824; CHECK64-NEXT: .LBB27_2:1825; CHECK64-NEXT: ldp q0, q1, [sp, #64] // 32-byte Folded Reload1826; CHECK64-NEXT: bl __lttf21827; CHECK64-NEXT: tbz w21, #0, .LBB27_41828; CHECK64-NEXT: // %bb.3:1829; CHECK64-NEXT: smstart sm1830; CHECK64-NEXT: .LBB27_4:1831; CHECK64-NEXT: cmp w0, #01832; CHECK64-NEXT: cset w22, mi1833; CHECK64-NEXT: tbz w21, #0, .LBB27_61834; CHECK64-NEXT: // %bb.5:1835; CHECK64-NEXT: smstop sm1836; CHECK64-NEXT: .LBB27_6:1837; CHECK64-NEXT: ldp q0, q1, [sp, #96] // 32-byte Folded Reload1838; CHECK64-NEXT: bl __getf21839; CHECK64-NEXT: tbz w21, #0, .LBB27_81840; CHECK64-NEXT: // %bb.7:1841; CHECK64-NEXT: smstart sm1842; CHECK64-NEXT: .LBB27_8:1843; CHECK64-NEXT: cmp w0, #01844; CHECK64-NEXT: ldp x29, x30, [sp, #256] // 16-byte Folded Reload1845; CHECK64-NEXT: cset w8, pl1846; CHECK64-NEXT: ldp d9, d8, [sp, #176] // 16-byte Folded Reload1847; CHECK64-NEXT: tst w8, w221848; CHECK64-NEXT: ldp x22, x21, [sp, #288] // 16-byte Folded Reload1849; CHECK64-NEXT: csel w0, w20, w19, ne1850; CHECK64-NEXT: ldp x20, x19, [sp, #304] // 16-byte Folded Reload1851; CHECK64-NEXT: ldp d11, d10, [sp, #160] // 16-byte Folded Reload1852; CHECK64-NEXT: ldr x28, [sp, #280] // 8-byte Reload1853; CHECK64-NEXT: ldp d13, d12, [sp, #144] // 16-byte Folded Reload1854; CHECK64-NEXT: ldp d15, d14, [sp, #128] // 16-byte Folded Reload1855; CHECK64-NEXT: add sp, sp, #3201856; CHECK64-NEXT: .cfi_def_cfa_offset 01857; CHECK64-NEXT: .cfi_restore w191858; CHECK64-NEXT: .cfi_restore w201859; CHECK64-NEXT: .cfi_restore w211860; CHECK64-NEXT: .cfi_restore w221861; CHECK64-NEXT: .cfi_restore w281862; CHECK64-NEXT: .cfi_restore vg1863; CHECK64-NEXT: .cfi_restore w301864; CHECK64-NEXT: .cfi_restore w291865; CHECK64-NEXT: .cfi_restore b81866; CHECK64-NEXT: .cfi_restore b91867; CHECK64-NEXT: .cfi_restore b101868; CHECK64-NEXT: .cfi_restore b111869; CHECK64-NEXT: .cfi_restore b121870; CHECK64-NEXT: .cfi_restore b131871; CHECK64-NEXT: .cfi_restore b141872; CHECK64-NEXT: .cfi_restore b151873; CHECK64-NEXT: ret1874;1875; CHECK1024-LABEL: f128_libcall:1876; CHECK1024: // %bb.0:1877; CHECK1024-NEXT: sub sp, sp, #11521878; CHECK1024-NEXT: .cfi_def_cfa_offset 11521879; CHECK1024-NEXT: cntd x91880; CHECK1024-NEXT: stp d15, d14, [sp] // 16-byte Folded Spill1881; CHECK1024-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill1882; CHECK1024-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill1883; CHECK1024-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill1884; CHECK1024-NEXT: str x29, [sp, #1088] // 8-byte Spill1885; CHECK1024-NEXT: str x30, [sp, #1096] // 8-byte Spill1886; CHECK1024-NEXT: str x9, [sp, #1104] // 8-byte Spill1887; CHECK1024-NEXT: str x28, [sp, #1112] // 8-byte Spill1888; CHECK1024-NEXT: str x22, [sp, #1120] // 8-byte Spill1889; CHECK1024-NEXT: str x21, [sp, #1128] // 8-byte Spill1890; CHECK1024-NEXT: str x20, [sp, #1136] // 8-byte Spill1891; CHECK1024-NEXT: str x19, [sp, #1144] // 8-byte Spill1892; CHECK1024-NEXT: .cfi_offset w19, -81893; CHECK1024-NEXT: .cfi_offset w20, -161894; CHECK1024-NEXT: .cfi_offset w21, -241895; CHECK1024-NEXT: .cfi_offset w22, -321896; CHECK1024-NEXT: .cfi_offset w28, -401897; CHECK1024-NEXT: .cfi_offset vg, -481898; CHECK1024-NEXT: .cfi_offset w30, -561899; CHECK1024-NEXT: .cfi_offset w29, -641900; CHECK1024-NEXT: .cfi_offset b8, -10961901; CHECK1024-NEXT: .cfi_offset b9, -11041902; CHECK1024-NEXT: .cfi_offset b10, -11121903; CHECK1024-NEXT: .cfi_offset b11, -11201904; CHECK1024-NEXT: .cfi_offset b12, -11281905; CHECK1024-NEXT: .cfi_offset b13, -11361906; CHECK1024-NEXT: .cfi_offset b14, -11441907; CHECK1024-NEXT: .cfi_offset b15, -11521908; CHECK1024-NEXT: sub sp, sp, #10881909; CHECK1024-NEXT: .cfi_def_cfa_offset 22401910; CHECK1024-NEXT: mov w19, w11911; CHECK1024-NEXT: mov w20, w01912; CHECK1024-NEXT: str q3, [sp, #1072] // 16-byte Spill1913; CHECK1024-NEXT: str q2, [sp, #1056] // 16-byte Spill1914; CHECK1024-NEXT: str q1, [sp, #1040] // 16-byte Spill1915; CHECK1024-NEXT: str q0, [sp, #1024] // 16-byte Spill1916; CHECK1024-NEXT: bl __arm_sme_state1917; CHECK1024-NEXT: mov x21, x01918; CHECK1024-NEXT: tbz w21, #0, .LBB27_21919; CHECK1024-NEXT: // %bb.1:1920; CHECK1024-NEXT: smstop sm1921; CHECK1024-NEXT: .LBB27_2:1922; CHECK1024-NEXT: ldr q0, [sp, #1024] // 16-byte Reload1923; CHECK1024-NEXT: ldr q1, [sp, #1040] // 16-byte Reload1924; CHECK1024-NEXT: bl __lttf21925; CHECK1024-NEXT: tbz w21, #0, .LBB27_41926; CHECK1024-NEXT: // %bb.3:1927; CHECK1024-NEXT: smstart sm1928; CHECK1024-NEXT: .LBB27_4:1929; CHECK1024-NEXT: cmp w0, #01930; CHECK1024-NEXT: cset w22, mi1931; CHECK1024-NEXT: tbz w21, #0, .LBB27_61932; CHECK1024-NEXT: // %bb.5:1933; CHECK1024-NEXT: smstop sm1934; CHECK1024-NEXT: .LBB27_6:1935; CHECK1024-NEXT: ldr q0, [sp, #1056] // 16-byte Reload1936; CHECK1024-NEXT: ldr q1, [sp, #1072] // 16-byte Reload1937; CHECK1024-NEXT: bl __getf21938; CHECK1024-NEXT: tbz w21, #0, .LBB27_81939; CHECK1024-NEXT: // %bb.7:1940; CHECK1024-NEXT: smstart sm1941; CHECK1024-NEXT: .LBB27_8:1942; CHECK1024-NEXT: cmp w0, #01943; CHECK1024-NEXT: cset w8, pl1944; CHECK1024-NEXT: tst w8, w221945; CHECK1024-NEXT: csel w0, w20, w19, ne1946; CHECK1024-NEXT: add sp, sp, #10881947; CHECK1024-NEXT: .cfi_def_cfa_offset 11521948; CHECK1024-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload1949; CHECK1024-NEXT: ldr x19, [sp, #1144] // 8-byte Reload1950; CHECK1024-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload1951; CHECK1024-NEXT: ldr x20, [sp, #1136] // 8-byte Reload1952; CHECK1024-NEXT: ldr x21, [sp, #1128] // 8-byte Reload1953; CHECK1024-NEXT: ldr x22, [sp, #1120] // 8-byte Reload1954; CHECK1024-NEXT: ldr x28, [sp, #1112] // 8-byte Reload1955; CHECK1024-NEXT: ldr x30, [sp, #1096] // 8-byte Reload1956; CHECK1024-NEXT: ldr x29, [sp, #1088] // 8-byte Reload1957; CHECK1024-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload1958; CHECK1024-NEXT: ldp d15, d14, [sp] // 16-byte Folded Reload1959; CHECK1024-NEXT: add sp, sp, #11521960; CHECK1024-NEXT: .cfi_def_cfa_offset 01961; CHECK1024-NEXT: .cfi_restore w191962; CHECK1024-NEXT: .cfi_restore w201963; CHECK1024-NEXT: .cfi_restore w211964; CHECK1024-NEXT: .cfi_restore w221965; CHECK1024-NEXT: .cfi_restore w281966; CHECK1024-NEXT: .cfi_restore vg1967; CHECK1024-NEXT: .cfi_restore w301968; CHECK1024-NEXT: .cfi_restore w291969; CHECK1024-NEXT: .cfi_restore b81970; CHECK1024-NEXT: .cfi_restore b91971; CHECK1024-NEXT: .cfi_restore b101972; CHECK1024-NEXT: .cfi_restore b111973; CHECK1024-NEXT: .cfi_restore b121974; CHECK1024-NEXT: .cfi_restore b131975; CHECK1024-NEXT: .cfi_restore b141976; CHECK1024-NEXT: .cfi_restore b151977; CHECK1024-NEXT: ret1978;el w0, w20, w19, ne1979 %c0 = fcmp olt fp128 %v0, %v11980 %c1 = fcmp oge fp128 %v2, %v31981 %cr = and i1 %c1, %c01982 %sel = select i1 %cr, i32 %a, i32 %b1983 ret i32 %sel1984}1985 1986define i32 @svecc_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8> %P3, i16 %P4) "aarch64_pstate_sm_compatible" {1987; CHECK0-LABEL: svecc_call:1988; CHECK0: // %bb.0: // %entry1989; CHECK0-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill1990; CHECK0-NEXT: .cfi_def_cfa_offset 641991; CHECK0-NEXT: cntd x91992; CHECK0-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill1993; CHECK0-NEXT: str x9, [sp, #16] // 8-byte Spill1994; CHECK0-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill1995; CHECK0-NEXT: mov x29, sp1996; CHECK0-NEXT: .cfi_def_cfa w29, 641997; CHECK0-NEXT: .cfi_offset w19, -81998; CHECK0-NEXT: .cfi_offset w26, -161999; CHECK0-NEXT: .cfi_offset w27, -242000; CHECK0-NEXT: .cfi_offset w28, -322001; CHECK0-NEXT: .cfi_offset vg, -482002; CHECK0-NEXT: .cfi_offset w30, -562003; CHECK0-NEXT: .cfi_offset w29, -642004; CHECK0-NEXT: addvl sp, sp, #-182005; CHECK0-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2006; CHECK0-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2007; CHECK0-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2008; CHECK0-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2009; CHECK0-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2010; CHECK0-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2011; CHECK0-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2012; CHECK0-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2013; CHECK0-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2014; CHECK0-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2015; CHECK0-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2016; CHECK0-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2017; CHECK0-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill2018; CHECK0-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill2019; CHECK0-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill2020; CHECK0-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill2021; CHECK0-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill2022; CHECK0-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill2023; CHECK0-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill2024; CHECK0-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill2025; CHECK0-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill2026; CHECK0-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill2027; CHECK0-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill2028; CHECK0-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill2029; CHECK0-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill2030; CHECK0-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill2031; CHECK0-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill2032; CHECK0-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill2033; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d8 @ cfa - 8 * IncomingVG - 642034; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d9 @ cfa - 16 * IncomingVG - 642035; CHECK0-NEXT: .cfi_escape 0x10, 0x4a, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d10 @ cfa - 24 * IncomingVG - 642036; CHECK0-NEXT: .cfi_escape 0x10, 0x4b, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d11 @ cfa - 32 * IncomingVG - 642037; CHECK0-NEXT: .cfi_escape 0x10, 0x4c, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d12 @ cfa - 40 * IncomingVG - 642038; CHECK0-NEXT: .cfi_escape 0x10, 0x4d, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d13 @ cfa - 48 * IncomingVG - 642039; CHECK0-NEXT: .cfi_escape 0x10, 0x4e, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d14 @ cfa - 56 * IncomingVG - 642040; CHECK0-NEXT: .cfi_escape 0x10, 0x4f, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d15 @ cfa - 64 * IncomingVG - 642041; CHECK0-NEXT: mov x8, x02042; CHECK0-NEXT: bl __arm_sme_state2043; CHECK0-NEXT: mov x19, x02044; CHECK0-NEXT: //APP2045; CHECK0-NEXT: //NO_APP2046; CHECK0-NEXT: tbz w19, #0, .LBB28_22047; CHECK0-NEXT: // %bb.1: // %entry2048; CHECK0-NEXT: smstop sm2049; CHECK0-NEXT: .LBB28_2: // %entry2050; CHECK0-NEXT: mov x0, x82051; CHECK0-NEXT: mov w1, #45 // =0x2d2052; CHECK0-NEXT: mov w2, #37 // =0x252053; CHECK0-NEXT: bl memset2054; CHECK0-NEXT: tbz w19, #0, .LBB28_42055; CHECK0-NEXT: // %bb.3: // %entry2056; CHECK0-NEXT: smstart sm2057; CHECK0-NEXT: .LBB28_4: // %entry2058; CHECK0-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload2059; CHECK0-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload2060; CHECK0-NEXT: mov w0, #22647 // =0x58772061; CHECK0-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload2062; CHECK0-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload2063; CHECK0-NEXT: movk w0, #59491, lsl #162064; CHECK0-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload2065; CHECK0-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload2066; CHECK0-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload2067; CHECK0-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload2068; CHECK0-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload2069; CHECK0-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload2070; CHECK0-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload2071; CHECK0-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload2072; CHECK0-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload2073; CHECK0-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload2074; CHECK0-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload2075; CHECK0-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload2076; CHECK0-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2077; CHECK0-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2078; CHECK0-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2079; CHECK0-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2080; CHECK0-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2081; CHECK0-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2082; CHECK0-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2083; CHECK0-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2084; CHECK0-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2085; CHECK0-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2086; CHECK0-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2087; CHECK0-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2088; CHECK0-NEXT: addvl sp, sp, #182089; CHECK0-NEXT: .cfi_restore z82090; CHECK0-NEXT: .cfi_restore z92091; CHECK0-NEXT: .cfi_restore z102092; CHECK0-NEXT: .cfi_restore z112093; CHECK0-NEXT: .cfi_restore z122094; CHECK0-NEXT: .cfi_restore z132095; CHECK0-NEXT: .cfi_restore z142096; CHECK0-NEXT: .cfi_restore z152097; CHECK0-NEXT: .cfi_def_cfa wsp, 642098; CHECK0-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload2099; CHECK0-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload2100; CHECK0-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload2101; CHECK0-NEXT: .cfi_def_cfa_offset 02102; CHECK0-NEXT: .cfi_restore w192103; CHECK0-NEXT: .cfi_restore w262104; CHECK0-NEXT: .cfi_restore w272105; CHECK0-NEXT: .cfi_restore w282106; CHECK0-NEXT: .cfi_restore vg2107; CHECK0-NEXT: .cfi_restore w302108; CHECK0-NEXT: .cfi_restore w292109; CHECK0-NEXT: ret2110;2111; CHECK64-LABEL: svecc_call:2112; CHECK64: // %bb.0: // %entry2113; CHECK64-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill2114; CHECK64-NEXT: .cfi_def_cfa_offset 642115; CHECK64-NEXT: cntd x92116; CHECK64-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill2117; CHECK64-NEXT: str x9, [sp, #16] // 8-byte Spill2118; CHECK64-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill2119; CHECK64-NEXT: mov x29, sp2120; CHECK64-NEXT: .cfi_def_cfa w29, 642121; CHECK64-NEXT: .cfi_offset w19, -82122; CHECK64-NEXT: .cfi_offset w26, -162123; CHECK64-NEXT: .cfi_offset w27, -242124; CHECK64-NEXT: .cfi_offset w28, -322125; CHECK64-NEXT: .cfi_offset vg, -482126; CHECK64-NEXT: .cfi_offset w30, -562127; CHECK64-NEXT: .cfi_offset w29, -642128; CHECK64-NEXT: addvl sp, sp, #-22129; CHECK64-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2130; CHECK64-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2131; CHECK64-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2132; CHECK64-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2133; CHECK64-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2134; CHECK64-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2135; CHECK64-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2136; CHECK64-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2137; CHECK64-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2138; CHECK64-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2139; CHECK64-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2140; CHECK64-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2141; CHECK64-NEXT: sub sp, sp, #642142; CHECK64-NEXT: addvl sp, sp, #-162143; CHECK64-NEXT: str z23, [sp] // 16-byte Folded Spill2144; CHECK64-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill2145; CHECK64-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill2146; CHECK64-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill2147; CHECK64-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill2148; CHECK64-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill2149; CHECK64-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill2150; CHECK64-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill2151; CHECK64-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill2152; CHECK64-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill2153; CHECK64-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill2154; CHECK64-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill2155; CHECK64-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill2156; CHECK64-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill2157; CHECK64-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2158; CHECK64-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill2159; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d8 @ cfa - 24 * IncomingVG - 1282160; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d9 @ cfa - 32 * IncomingVG - 1282161; CHECK64-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d10 @ cfa - 40 * IncomingVG - 1282162; CHECK64-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d11 @ cfa - 48 * IncomingVG - 1282163; CHECK64-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d12 @ cfa - 56 * IncomingVG - 1282164; CHECK64-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d13 @ cfa - 64 * IncomingVG - 1282165; CHECK64-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d14 @ cfa - 72 * IncomingVG - 1282166; CHECK64-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d15 @ cfa - 80 * IncomingVG - 1282167; CHECK64-NEXT: sub sp, sp, #642168; CHECK64-NEXT: mov x8, x02169; CHECK64-NEXT: bl __arm_sme_state2170; CHECK64-NEXT: mov x19, x02171; CHECK64-NEXT: //APP2172; CHECK64-NEXT: //NO_APP2173; CHECK64-NEXT: tbz w19, #0, .LBB28_22174; CHECK64-NEXT: // %bb.1: // %entry2175; CHECK64-NEXT: smstop sm2176; CHECK64-NEXT: .LBB28_2: // %entry2177; CHECK64-NEXT: mov x0, x82178; CHECK64-NEXT: mov w1, #45 // =0x2d2179; CHECK64-NEXT: mov w2, #37 // =0x252180; CHECK64-NEXT: bl memset2181; CHECK64-NEXT: tbz w19, #0, .LBB28_42182; CHECK64-NEXT: // %bb.3: // %entry2183; CHECK64-NEXT: smstart sm2184; CHECK64-NEXT: .LBB28_4: // %entry2185; CHECK64-NEXT: mov w0, #22647 // =0x58772186; CHECK64-NEXT: movk w0, #59491, lsl #162187; CHECK64-NEXT: add sp, sp, #642188; CHECK64-NEXT: ldr z23, [sp] // 16-byte Folded Reload2189; CHECK64-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload2190; CHECK64-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload2191; CHECK64-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload2192; CHECK64-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload2193; CHECK64-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload2194; CHECK64-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload2195; CHECK64-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload2196; CHECK64-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload2197; CHECK64-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload2198; CHECK64-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload2199; CHECK64-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload2200; CHECK64-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload2201; CHECK64-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload2202; CHECK64-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2203; CHECK64-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload2204; CHECK64-NEXT: add sp, sp, #642205; CHECK64-NEXT: addvl sp, sp, #162206; CHECK64-NEXT: .cfi_restore z82207; CHECK64-NEXT: .cfi_restore z92208; CHECK64-NEXT: .cfi_restore z102209; CHECK64-NEXT: .cfi_restore z112210; CHECK64-NEXT: .cfi_restore z122211; CHECK64-NEXT: .cfi_restore z132212; CHECK64-NEXT: .cfi_restore z142213; CHECK64-NEXT: .cfi_restore z152214; CHECK64-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2215; CHECK64-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2216; CHECK64-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2217; CHECK64-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2218; CHECK64-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2219; CHECK64-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2220; CHECK64-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2221; CHECK64-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2222; CHECK64-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2223; CHECK64-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2224; CHECK64-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2225; CHECK64-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2226; CHECK64-NEXT: addvl sp, sp, #22227; CHECK64-NEXT: .cfi_def_cfa wsp, 642228; CHECK64-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload2229; CHECK64-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload2230; CHECK64-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload2231; CHECK64-NEXT: .cfi_def_cfa_offset 02232; CHECK64-NEXT: .cfi_restore w192233; CHECK64-NEXT: .cfi_restore w262234; CHECK64-NEXT: .cfi_restore w272235; CHECK64-NEXT: .cfi_restore w282236; CHECK64-NEXT: .cfi_restore vg2237; CHECK64-NEXT: .cfi_restore w302238; CHECK64-NEXT: .cfi_restore w292239; CHECK64-NEXT: ret2240;2241; CHECK1024-NOSPLITSVE-LABEL: svecc_call:2242; CHECK1024-NOSPLITSVE: // %bb.0: // %entry2243; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10882244; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 10882245; CHECK1024-NOSPLITSVE-NEXT: cntd x92246; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill2247; CHECK1024-NOSPLITSVE-NEXT: str x30, [sp, #1032] // 8-byte Spill2248; CHECK1024-NOSPLITSVE-NEXT: str x9, [sp, #1040] // 8-byte Spill2249; CHECK1024-NOSPLITSVE-NEXT: str x28, [sp, #1048] // 8-byte Spill2250; CHECK1024-NOSPLITSVE-NEXT: str x27, [sp, #1056] // 8-byte Spill2251; CHECK1024-NOSPLITSVE-NEXT: str x26, [sp, #1064] // 8-byte Spill2252; CHECK1024-NOSPLITSVE-NEXT: str x19, [sp, #1072] // 8-byte Spill2253; CHECK1024-NOSPLITSVE-NEXT: add x29, sp, #10242254; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa w29, 642255; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w19, -162256; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w26, -242257; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w27, -322258; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w28, -402259; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset vg, -482260; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w30, -562261; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -642262; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-182263; CHECK1024-NOSPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2264; CHECK1024-NOSPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2265; CHECK1024-NOSPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2266; CHECK1024-NOSPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2267; CHECK1024-NOSPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2268; CHECK1024-NOSPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2269; CHECK1024-NOSPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2270; CHECK1024-NOSPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2271; CHECK1024-NOSPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2272; CHECK1024-NOSPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2273; CHECK1024-NOSPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2274; CHECK1024-NOSPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2275; CHECK1024-NOSPLITSVE-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill2276; CHECK1024-NOSPLITSVE-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill2277; CHECK1024-NOSPLITSVE-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill2278; CHECK1024-NOSPLITSVE-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill2279; CHECK1024-NOSPLITSVE-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill2280; CHECK1024-NOSPLITSVE-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill2281; CHECK1024-NOSPLITSVE-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill2282; CHECK1024-NOSPLITSVE-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill2283; CHECK1024-NOSPLITSVE-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill2284; CHECK1024-NOSPLITSVE-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill2285; CHECK1024-NOSPLITSVE-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill2286; CHECK1024-NOSPLITSVE-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill2287; CHECK1024-NOSPLITSVE-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill2288; CHECK1024-NOSPLITSVE-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill2289; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill2290; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill2291; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * IncomingVG - 10882292; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * IncomingVG - 10882293; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * IncomingVG - 10882294; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * IncomingVG - 10882295; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * IncomingVG - 10882296; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * IncomingVG - 10882297; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * IncomingVG - 10882298; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * IncomingVG - 10882299; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10242300; CHECK1024-NOSPLITSVE-NEXT: mov x8, x02301; CHECK1024-NOSPLITSVE-NEXT: bl __arm_sme_state2302; CHECK1024-NOSPLITSVE-NEXT: mov x19, x02303; CHECK1024-NOSPLITSVE-NEXT: //APP2304; CHECK1024-NOSPLITSVE-NEXT: //NO_APP2305; CHECK1024-NOSPLITSVE-NEXT: tbz w19, #0, .LBB28_22306; CHECK1024-NOSPLITSVE-NEXT: // %bb.1: // %entry2307; CHECK1024-NOSPLITSVE-NEXT: smstop sm2308; CHECK1024-NOSPLITSVE-NEXT: .LBB28_2: // %entry2309; CHECK1024-NOSPLITSVE-NEXT: mov x0, x82310; CHECK1024-NOSPLITSVE-NEXT: mov w1, #45 // =0x2d2311; CHECK1024-NOSPLITSVE-NEXT: mov w2, #37 // =0x252312; CHECK1024-NOSPLITSVE-NEXT: bl memset2313; CHECK1024-NOSPLITSVE-NEXT: tbz w19, #0, .LBB28_42314; CHECK1024-NOSPLITSVE-NEXT: // %bb.3: // %entry2315; CHECK1024-NOSPLITSVE-NEXT: smstart sm2316; CHECK1024-NOSPLITSVE-NEXT: .LBB28_4: // %entry2317; CHECK1024-NOSPLITSVE-NEXT: mov w0, #22647 // =0x58772318; CHECK1024-NOSPLITSVE-NEXT: movk w0, #59491, lsl #162319; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10242320; CHECK1024-NOSPLITSVE-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload2321; CHECK1024-NOSPLITSVE-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload2322; CHECK1024-NOSPLITSVE-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload2323; CHECK1024-NOSPLITSVE-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload2324; CHECK1024-NOSPLITSVE-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload2325; CHECK1024-NOSPLITSVE-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload2326; CHECK1024-NOSPLITSVE-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload2327; CHECK1024-NOSPLITSVE-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload2328; CHECK1024-NOSPLITSVE-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload2329; CHECK1024-NOSPLITSVE-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload2330; CHECK1024-NOSPLITSVE-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload2331; CHECK1024-NOSPLITSVE-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload2332; CHECK1024-NOSPLITSVE-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload2333; CHECK1024-NOSPLITSVE-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload2334; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload2335; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload2336; CHECK1024-NOSPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2337; CHECK1024-NOSPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2338; CHECK1024-NOSPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2339; CHECK1024-NOSPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2340; CHECK1024-NOSPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2341; CHECK1024-NOSPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2342; CHECK1024-NOSPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2343; CHECK1024-NOSPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2344; CHECK1024-NOSPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2345; CHECK1024-NOSPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2346; CHECK1024-NOSPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2347; CHECK1024-NOSPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2348; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #182349; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z82350; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z92351; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z102352; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z112353; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z122354; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z132355; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z142356; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z152357; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa wsp, 10882358; CHECK1024-NOSPLITSVE-NEXT: ldr x19, [sp, #1072] // 8-byte Reload2359; CHECK1024-NOSPLITSVE-NEXT: ldr x26, [sp, #1064] // 8-byte Reload2360; CHECK1024-NOSPLITSVE-NEXT: ldr x27, [sp, #1056] // 8-byte Reload2361; CHECK1024-NOSPLITSVE-NEXT: ldr x28, [sp, #1048] // 8-byte Reload2362; CHECK1024-NOSPLITSVE-NEXT: ldr x30, [sp, #1032] // 8-byte Reload2363; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload2364; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10882365; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 02366; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w192367; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w262368; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w272369; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w282370; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore vg2371; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w302372; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w292373; CHECK1024-NOSPLITSVE-NEXT: ret2374;2375; CHECK1024-SPLITSVE-LABEL: svecc_call:2376; CHECK1024-SPLITSVE: // %bb.0: // %entry2377; CHECK1024-SPLITSVE-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill2378; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 642379; CHECK1024-SPLITSVE-NEXT: cntd x92380; CHECK1024-SPLITSVE-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill2381; CHECK1024-SPLITSVE-NEXT: str x9, [sp, #16] // 8-byte Spill2382; CHECK1024-SPLITSVE-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill2383; CHECK1024-SPLITSVE-NEXT: mov x29, sp2384; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa w29, 642385; CHECK1024-SPLITSVE-NEXT: .cfi_offset w19, -82386; CHECK1024-SPLITSVE-NEXT: .cfi_offset w26, -162387; CHECK1024-SPLITSVE-NEXT: .cfi_offset w27, -242388; CHECK1024-SPLITSVE-NEXT: .cfi_offset w28, -322389; CHECK1024-SPLITSVE-NEXT: .cfi_offset vg, -482390; CHECK1024-SPLITSVE-NEXT: .cfi_offset w30, -562391; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -642392; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-22393; CHECK1024-SPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2394; CHECK1024-SPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2395; CHECK1024-SPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2396; CHECK1024-SPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2397; CHECK1024-SPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2398; CHECK1024-SPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2399; CHECK1024-SPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2400; CHECK1024-SPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2401; CHECK1024-SPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2402; CHECK1024-SPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2403; CHECK1024-SPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2404; CHECK1024-SPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2405; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10242406; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-162407; CHECK1024-SPLITSVE-NEXT: str z23, [sp] // 16-byte Folded Spill2408; CHECK1024-SPLITSVE-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill2409; CHECK1024-SPLITSVE-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill2410; CHECK1024-SPLITSVE-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill2411; CHECK1024-SPLITSVE-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill2412; CHECK1024-SPLITSVE-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill2413; CHECK1024-SPLITSVE-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill2414; CHECK1024-SPLITSVE-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill2415; CHECK1024-SPLITSVE-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill2416; CHECK1024-SPLITSVE-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill2417; CHECK1024-SPLITSVE-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill2418; CHECK1024-SPLITSVE-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill2419; CHECK1024-SPLITSVE-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill2420; CHECK1024-SPLITSVE-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill2421; CHECK1024-SPLITSVE-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2422; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill2423; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 24 * IncomingVG - 10882424; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 32 * IncomingVG - 10882425; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 40 * IncomingVG - 10882426; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 48 * IncomingVG - 10882427; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 56 * IncomingVG - 10882428; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 64 * IncomingVG - 10882429; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 72 * IncomingVG - 10882430; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 80 * IncomingVG - 10882431; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10242432; CHECK1024-SPLITSVE-NEXT: mov x8, x02433; CHECK1024-SPLITSVE-NEXT: bl __arm_sme_state2434; CHECK1024-SPLITSVE-NEXT: mov x19, x02435; CHECK1024-SPLITSVE-NEXT: //APP2436; CHECK1024-SPLITSVE-NEXT: //NO_APP2437; CHECK1024-SPLITSVE-NEXT: tbz w19, #0, .LBB28_22438; CHECK1024-SPLITSVE-NEXT: // %bb.1: // %entry2439; CHECK1024-SPLITSVE-NEXT: smstop sm2440; CHECK1024-SPLITSVE-NEXT: .LBB28_2: // %entry2441; CHECK1024-SPLITSVE-NEXT: mov x0, x82442; CHECK1024-SPLITSVE-NEXT: mov w1, #45 // =0x2d2443; CHECK1024-SPLITSVE-NEXT: mov w2, #37 // =0x252444; CHECK1024-SPLITSVE-NEXT: bl memset2445; CHECK1024-SPLITSVE-NEXT: tbz w19, #0, .LBB28_42446; CHECK1024-SPLITSVE-NEXT: // %bb.3: // %entry2447; CHECK1024-SPLITSVE-NEXT: smstart sm2448; CHECK1024-SPLITSVE-NEXT: .LBB28_4: // %entry2449; CHECK1024-SPLITSVE-NEXT: mov w0, #22647 // =0x58772450; CHECK1024-SPLITSVE-NEXT: movk w0, #59491, lsl #162451; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10242452; CHECK1024-SPLITSVE-NEXT: ldr z23, [sp] // 16-byte Folded Reload2453; CHECK1024-SPLITSVE-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload2454; CHECK1024-SPLITSVE-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload2455; CHECK1024-SPLITSVE-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload2456; CHECK1024-SPLITSVE-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload2457; CHECK1024-SPLITSVE-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload2458; CHECK1024-SPLITSVE-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload2459; CHECK1024-SPLITSVE-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload2460; CHECK1024-SPLITSVE-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload2461; CHECK1024-SPLITSVE-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload2462; CHECK1024-SPLITSVE-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload2463; CHECK1024-SPLITSVE-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload2464; CHECK1024-SPLITSVE-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload2465; CHECK1024-SPLITSVE-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload2466; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2467; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload2468; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10242469; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #162470; CHECK1024-SPLITSVE-NEXT: .cfi_restore z82471; CHECK1024-SPLITSVE-NEXT: .cfi_restore z92472; CHECK1024-SPLITSVE-NEXT: .cfi_restore z102473; CHECK1024-SPLITSVE-NEXT: .cfi_restore z112474; CHECK1024-SPLITSVE-NEXT: .cfi_restore z122475; CHECK1024-SPLITSVE-NEXT: .cfi_restore z132476; CHECK1024-SPLITSVE-NEXT: .cfi_restore z142477; CHECK1024-SPLITSVE-NEXT: .cfi_restore z152478; CHECK1024-SPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2479; CHECK1024-SPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2480; CHECK1024-SPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2481; CHECK1024-SPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2482; CHECK1024-SPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2483; CHECK1024-SPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2484; CHECK1024-SPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2485; CHECK1024-SPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2486; CHECK1024-SPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2487; CHECK1024-SPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2488; CHECK1024-SPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2489; CHECK1024-SPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2490; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #22491; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa wsp, 642492; CHECK1024-SPLITSVE-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload2493; CHECK1024-SPLITSVE-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload2494; CHECK1024-SPLITSVE-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload2495; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 02496; CHECK1024-SPLITSVE-NEXT: .cfi_restore w192497; CHECK1024-SPLITSVE-NEXT: .cfi_restore w262498; CHECK1024-SPLITSVE-NEXT: .cfi_restore w272499; CHECK1024-SPLITSVE-NEXT: .cfi_restore w282500; CHECK1024-SPLITSVE-NEXT: .cfi_restore vg2501; CHECK1024-SPLITSVE-NEXT: .cfi_restore w302502; CHECK1024-SPLITSVE-NEXT: .cfi_restore w292503; CHECK1024-SPLITSVE-NEXT: ret2504entry:2505 tail call void asm sideeffect "", "~{x0},~{x28},~{x27},~{x3}"() #22506 %call = call ptr @memset(ptr noundef nonnull %P1, i32 noundef 45, i32 noundef 37)2507 ret i32 -3961424732508}2509 2510define i32 @svecc_alloca_call(<4 x i16> %P0, ptr %P1, i32 %P2, <vscale x 16 x i8> %P3, i16 %P4) "aarch64_pstate_sm_compatible" {2511; CHECK0-LABEL: svecc_alloca_call:2512; CHECK0: // %bb.0: // %entry2513; CHECK0-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill2514; CHECK0-NEXT: .cfi_def_cfa_offset 642515; CHECK0-NEXT: cntd x92516; CHECK0-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill2517; CHECK0-NEXT: str x9, [sp, #16] // 8-byte Spill2518; CHECK0-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill2519; CHECK0-NEXT: mov x29, sp2520; CHECK0-NEXT: .cfi_def_cfa w29, 642521; CHECK0-NEXT: .cfi_offset w19, -82522; CHECK0-NEXT: .cfi_offset w26, -162523; CHECK0-NEXT: .cfi_offset w27, -242524; CHECK0-NEXT: .cfi_offset w28, -322525; CHECK0-NEXT: .cfi_offset vg, -482526; CHECK0-NEXT: .cfi_offset w30, -562527; CHECK0-NEXT: .cfi_offset w29, -642528; CHECK0-NEXT: addvl sp, sp, #-182529; CHECK0-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2530; CHECK0-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2531; CHECK0-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2532; CHECK0-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2533; CHECK0-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2534; CHECK0-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2535; CHECK0-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2536; CHECK0-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2537; CHECK0-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2538; CHECK0-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2539; CHECK0-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2540; CHECK0-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2541; CHECK0-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill2542; CHECK0-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill2543; CHECK0-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill2544; CHECK0-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill2545; CHECK0-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill2546; CHECK0-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill2547; CHECK0-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill2548; CHECK0-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill2549; CHECK0-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill2550; CHECK0-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill2551; CHECK0-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill2552; CHECK0-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill2553; CHECK0-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill2554; CHECK0-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill2555; CHECK0-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill2556; CHECK0-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill2557; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d8 @ cfa - 8 * IncomingVG - 642558; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d9 @ cfa - 16 * IncomingVG - 642559; CHECK0-NEXT: .cfi_escape 0x10, 0x4a, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d10 @ cfa - 24 * IncomingVG - 642560; CHECK0-NEXT: .cfi_escape 0x10, 0x4b, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d11 @ cfa - 32 * IncomingVG - 642561; CHECK0-NEXT: .cfi_escape 0x10, 0x4c, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d12 @ cfa - 40 * IncomingVG - 642562; CHECK0-NEXT: .cfi_escape 0x10, 0x4d, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d13 @ cfa - 48 * IncomingVG - 642563; CHECK0-NEXT: .cfi_escape 0x10, 0x4e, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d14 @ cfa - 56 * IncomingVG - 642564; CHECK0-NEXT: .cfi_escape 0x10, 0x4f, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d15 @ cfa - 64 * IncomingVG - 642565; CHECK0-NEXT: sub sp, sp, #482566; CHECK0-NEXT: bl __arm_sme_state2567; CHECK0-NEXT: mov x19, x02568; CHECK0-NEXT: //APP2569; CHECK0-NEXT: //NO_APP2570; CHECK0-NEXT: tbz w19, #0, .LBB29_22571; CHECK0-NEXT: // %bb.1: // %entry2572; CHECK0-NEXT: smstop sm2573; CHECK0-NEXT: .LBB29_2: // %entry2574; CHECK0-NEXT: mov x0, sp2575; CHECK0-NEXT: mov w1, #45 // =0x2d2576; CHECK0-NEXT: mov w2, #37 // =0x252577; CHECK0-NEXT: bl memset2578; CHECK0-NEXT: tbz w19, #0, .LBB29_42579; CHECK0-NEXT: // %bb.3: // %entry2580; CHECK0-NEXT: smstart sm2581; CHECK0-NEXT: .LBB29_4: // %entry2582; CHECK0-NEXT: mov w0, #22647 // =0x58772583; CHECK0-NEXT: movk w0, #59491, lsl #162584; CHECK0-NEXT: add sp, sp, #482585; CHECK0-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload2586; CHECK0-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload2587; CHECK0-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload2588; CHECK0-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload2589; CHECK0-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload2590; CHECK0-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload2591; CHECK0-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload2592; CHECK0-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload2593; CHECK0-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload2594; CHECK0-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload2595; CHECK0-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload2596; CHECK0-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload2597; CHECK0-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload2598; CHECK0-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload2599; CHECK0-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload2600; CHECK0-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload2601; CHECK0-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2602; CHECK0-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2603; CHECK0-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2604; CHECK0-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2605; CHECK0-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2606; CHECK0-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2607; CHECK0-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2608; CHECK0-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2609; CHECK0-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2610; CHECK0-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2611; CHECK0-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2612; CHECK0-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2613; CHECK0-NEXT: addvl sp, sp, #182614; CHECK0-NEXT: .cfi_restore z82615; CHECK0-NEXT: .cfi_restore z92616; CHECK0-NEXT: .cfi_restore z102617; CHECK0-NEXT: .cfi_restore z112618; CHECK0-NEXT: .cfi_restore z122619; CHECK0-NEXT: .cfi_restore z132620; CHECK0-NEXT: .cfi_restore z142621; CHECK0-NEXT: .cfi_restore z152622; CHECK0-NEXT: .cfi_def_cfa wsp, 642623; CHECK0-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload2624; CHECK0-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload2625; CHECK0-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload2626; CHECK0-NEXT: .cfi_def_cfa_offset 02627; CHECK0-NEXT: .cfi_restore w192628; CHECK0-NEXT: .cfi_restore w262629; CHECK0-NEXT: .cfi_restore w272630; CHECK0-NEXT: .cfi_restore w282631; CHECK0-NEXT: .cfi_restore vg2632; CHECK0-NEXT: .cfi_restore w302633; CHECK0-NEXT: .cfi_restore w292634; CHECK0-NEXT: ret2635;2636; CHECK64-LABEL: svecc_alloca_call:2637; CHECK64: // %bb.0: // %entry2638; CHECK64-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill2639; CHECK64-NEXT: .cfi_def_cfa_offset 642640; CHECK64-NEXT: cntd x92641; CHECK64-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill2642; CHECK64-NEXT: str x9, [sp, #16] // 8-byte Spill2643; CHECK64-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill2644; CHECK64-NEXT: mov x29, sp2645; CHECK64-NEXT: .cfi_def_cfa w29, 642646; CHECK64-NEXT: .cfi_offset w19, -82647; CHECK64-NEXT: .cfi_offset w26, -162648; CHECK64-NEXT: .cfi_offset w27, -242649; CHECK64-NEXT: .cfi_offset w28, -322650; CHECK64-NEXT: .cfi_offset vg, -482651; CHECK64-NEXT: .cfi_offset w30, -562652; CHECK64-NEXT: .cfi_offset w29, -642653; CHECK64-NEXT: addvl sp, sp, #-22654; CHECK64-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2655; CHECK64-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2656; CHECK64-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2657; CHECK64-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2658; CHECK64-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2659; CHECK64-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2660; CHECK64-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2661; CHECK64-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2662; CHECK64-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2663; CHECK64-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2664; CHECK64-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2665; CHECK64-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2666; CHECK64-NEXT: sub sp, sp, #642667; CHECK64-NEXT: addvl sp, sp, #-162668; CHECK64-NEXT: str z23, [sp] // 16-byte Folded Spill2669; CHECK64-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill2670; CHECK64-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill2671; CHECK64-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill2672; CHECK64-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill2673; CHECK64-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill2674; CHECK64-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill2675; CHECK64-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill2676; CHECK64-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill2677; CHECK64-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill2678; CHECK64-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill2679; CHECK64-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill2680; CHECK64-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill2681; CHECK64-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill2682; CHECK64-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2683; CHECK64-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill2684; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d8 @ cfa - 24 * IncomingVG - 1282685; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d9 @ cfa - 32 * IncomingVG - 1282686; CHECK64-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d10 @ cfa - 40 * IncomingVG - 1282687; CHECK64-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d11 @ cfa - 48 * IncomingVG - 1282688; CHECK64-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d12 @ cfa - 56 * IncomingVG - 1282689; CHECK64-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d13 @ cfa - 64 * IncomingVG - 1282690; CHECK64-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d14 @ cfa - 72 * IncomingVG - 1282691; CHECK64-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d15 @ cfa - 80 * IncomingVG - 1282692; CHECK64-NEXT: sub sp, sp, #1122693; CHECK64-NEXT: bl __arm_sme_state2694; CHECK64-NEXT: mov x19, x02695; CHECK64-NEXT: //APP2696; CHECK64-NEXT: //NO_APP2697; CHECK64-NEXT: tbz w19, #0, .LBB29_22698; CHECK64-NEXT: // %bb.1: // %entry2699; CHECK64-NEXT: smstop sm2700; CHECK64-NEXT: .LBB29_2: // %entry2701; CHECK64-NEXT: mov x0, sp2702; CHECK64-NEXT: mov w1, #45 // =0x2d2703; CHECK64-NEXT: mov w2, #37 // =0x252704; CHECK64-NEXT: bl memset2705; CHECK64-NEXT: tbz w19, #0, .LBB29_42706; CHECK64-NEXT: // %bb.3: // %entry2707; CHECK64-NEXT: smstart sm2708; CHECK64-NEXT: .LBB29_4: // %entry2709; CHECK64-NEXT: mov w0, #22647 // =0x58772710; CHECK64-NEXT: movk w0, #59491, lsl #162711; CHECK64-NEXT: add sp, sp, #1122712; CHECK64-NEXT: ldr z23, [sp] // 16-byte Folded Reload2713; CHECK64-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload2714; CHECK64-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload2715; CHECK64-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload2716; CHECK64-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload2717; CHECK64-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload2718; CHECK64-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload2719; CHECK64-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload2720; CHECK64-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload2721; CHECK64-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload2722; CHECK64-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload2723; CHECK64-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload2724; CHECK64-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload2725; CHECK64-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload2726; CHECK64-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2727; CHECK64-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload2728; CHECK64-NEXT: add sp, sp, #642729; CHECK64-NEXT: addvl sp, sp, #162730; CHECK64-NEXT: .cfi_restore z82731; CHECK64-NEXT: .cfi_restore z92732; CHECK64-NEXT: .cfi_restore z102733; CHECK64-NEXT: .cfi_restore z112734; CHECK64-NEXT: .cfi_restore z122735; CHECK64-NEXT: .cfi_restore z132736; CHECK64-NEXT: .cfi_restore z142737; CHECK64-NEXT: .cfi_restore z152738; CHECK64-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2739; CHECK64-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2740; CHECK64-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2741; CHECK64-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2742; CHECK64-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2743; CHECK64-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2744; CHECK64-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2745; CHECK64-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2746; CHECK64-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2747; CHECK64-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2748; CHECK64-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2749; CHECK64-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2750; CHECK64-NEXT: addvl sp, sp, #22751; CHECK64-NEXT: .cfi_def_cfa wsp, 642752; CHECK64-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload2753; CHECK64-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload2754; CHECK64-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload2755; CHECK64-NEXT: .cfi_def_cfa_offset 02756; CHECK64-NEXT: .cfi_restore w192757; CHECK64-NEXT: .cfi_restore w262758; CHECK64-NEXT: .cfi_restore w272759; CHECK64-NEXT: .cfi_restore w282760; CHECK64-NEXT: .cfi_restore vg2761; CHECK64-NEXT: .cfi_restore w302762; CHECK64-NEXT: .cfi_restore w292763; CHECK64-NEXT: ret2764;2765; CHECK1024-NOSPLITSVE-LABEL: svecc_alloca_call:2766; CHECK1024-NOSPLITSVE: // %bb.0: // %entry2767; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10882768; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 10882769; CHECK1024-NOSPLITSVE-NEXT: cntd x92770; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill2771; CHECK1024-NOSPLITSVE-NEXT: str x30, [sp, #1032] // 8-byte Spill2772; CHECK1024-NOSPLITSVE-NEXT: str x9, [sp, #1040] // 8-byte Spill2773; CHECK1024-NOSPLITSVE-NEXT: str x28, [sp, #1048] // 8-byte Spill2774; CHECK1024-NOSPLITSVE-NEXT: str x27, [sp, #1056] // 8-byte Spill2775; CHECK1024-NOSPLITSVE-NEXT: str x26, [sp, #1064] // 8-byte Spill2776; CHECK1024-NOSPLITSVE-NEXT: str x19, [sp, #1072] // 8-byte Spill2777; CHECK1024-NOSPLITSVE-NEXT: add x29, sp, #10242778; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa w29, 642779; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w19, -162780; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w26, -242781; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w27, -322782; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w28, -402783; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset vg, -482784; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w30, -562785; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -642786; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-182787; CHECK1024-NOSPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2788; CHECK1024-NOSPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2789; CHECK1024-NOSPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2790; CHECK1024-NOSPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2791; CHECK1024-NOSPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2792; CHECK1024-NOSPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2793; CHECK1024-NOSPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2794; CHECK1024-NOSPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2795; CHECK1024-NOSPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2796; CHECK1024-NOSPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2797; CHECK1024-NOSPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2798; CHECK1024-NOSPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2799; CHECK1024-NOSPLITSVE-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill2800; CHECK1024-NOSPLITSVE-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill2801; CHECK1024-NOSPLITSVE-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill2802; CHECK1024-NOSPLITSVE-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill2803; CHECK1024-NOSPLITSVE-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill2804; CHECK1024-NOSPLITSVE-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill2805; CHECK1024-NOSPLITSVE-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill2806; CHECK1024-NOSPLITSVE-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill2807; CHECK1024-NOSPLITSVE-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill2808; CHECK1024-NOSPLITSVE-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill2809; CHECK1024-NOSPLITSVE-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill2810; CHECK1024-NOSPLITSVE-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill2811; CHECK1024-NOSPLITSVE-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill2812; CHECK1024-NOSPLITSVE-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill2813; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill2814; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill2815; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * IncomingVG - 10882816; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * IncomingVG - 10882817; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * IncomingVG - 10882818; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * IncomingVG - 10882819; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * IncomingVG - 10882820; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * IncomingVG - 10882821; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * IncomingVG - 10882822; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * IncomingVG - 10882823; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10722824; CHECK1024-NOSPLITSVE-NEXT: bl __arm_sme_state2825; CHECK1024-NOSPLITSVE-NEXT: mov x19, x02826; CHECK1024-NOSPLITSVE-NEXT: //APP2827; CHECK1024-NOSPLITSVE-NEXT: //NO_APP2828; CHECK1024-NOSPLITSVE-NEXT: tbz w19, #0, .LBB29_22829; CHECK1024-NOSPLITSVE-NEXT: // %bb.1: // %entry2830; CHECK1024-NOSPLITSVE-NEXT: smstop sm2831; CHECK1024-NOSPLITSVE-NEXT: .LBB29_2: // %entry2832; CHECK1024-NOSPLITSVE-NEXT: mov x0, sp2833; CHECK1024-NOSPLITSVE-NEXT: mov w1, #45 // =0x2d2834; CHECK1024-NOSPLITSVE-NEXT: mov w2, #37 // =0x252835; CHECK1024-NOSPLITSVE-NEXT: bl memset2836; CHECK1024-NOSPLITSVE-NEXT: tbz w19, #0, .LBB29_42837; CHECK1024-NOSPLITSVE-NEXT: // %bb.3: // %entry2838; CHECK1024-NOSPLITSVE-NEXT: smstart sm2839; CHECK1024-NOSPLITSVE-NEXT: .LBB29_4: // %entry2840; CHECK1024-NOSPLITSVE-NEXT: mov w0, #22647 // =0x58772841; CHECK1024-NOSPLITSVE-NEXT: movk w0, #59491, lsl #162842; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10722843; CHECK1024-NOSPLITSVE-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload2844; CHECK1024-NOSPLITSVE-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload2845; CHECK1024-NOSPLITSVE-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload2846; CHECK1024-NOSPLITSVE-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload2847; CHECK1024-NOSPLITSVE-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload2848; CHECK1024-NOSPLITSVE-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload2849; CHECK1024-NOSPLITSVE-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload2850; CHECK1024-NOSPLITSVE-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload2851; CHECK1024-NOSPLITSVE-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload2852; CHECK1024-NOSPLITSVE-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload2853; CHECK1024-NOSPLITSVE-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload2854; CHECK1024-NOSPLITSVE-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload2855; CHECK1024-NOSPLITSVE-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload2856; CHECK1024-NOSPLITSVE-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload2857; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload2858; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload2859; CHECK1024-NOSPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload2860; CHECK1024-NOSPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload2861; CHECK1024-NOSPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload2862; CHECK1024-NOSPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload2863; CHECK1024-NOSPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload2864; CHECK1024-NOSPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload2865; CHECK1024-NOSPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload2866; CHECK1024-NOSPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload2867; CHECK1024-NOSPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload2868; CHECK1024-NOSPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload2869; CHECK1024-NOSPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload2870; CHECK1024-NOSPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload2871; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #182872; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z82873; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z92874; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z102875; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z112876; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z122877; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z132878; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z142879; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z152880; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa wsp, 10882881; CHECK1024-NOSPLITSVE-NEXT: ldr x19, [sp, #1072] // 8-byte Reload2882; CHECK1024-NOSPLITSVE-NEXT: ldr x26, [sp, #1064] // 8-byte Reload2883; CHECK1024-NOSPLITSVE-NEXT: ldr x27, [sp, #1056] // 8-byte Reload2884; CHECK1024-NOSPLITSVE-NEXT: ldr x28, [sp, #1048] // 8-byte Reload2885; CHECK1024-NOSPLITSVE-NEXT: ldr x30, [sp, #1032] // 8-byte Reload2886; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload2887; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10882888; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 02889; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w192890; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w262891; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w272892; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w282893; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore vg2894; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w302895; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w292896; CHECK1024-NOSPLITSVE-NEXT: ret2897;2898; CHECK1024-SPLITSVE-LABEL: svecc_alloca_call:2899; CHECK1024-SPLITSVE: // %bb.0: // %entry2900; CHECK1024-SPLITSVE-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill2901; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 642902; CHECK1024-SPLITSVE-NEXT: cntd x92903; CHECK1024-SPLITSVE-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill2904; CHECK1024-SPLITSVE-NEXT: str x9, [sp, #16] // 8-byte Spill2905; CHECK1024-SPLITSVE-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill2906; CHECK1024-SPLITSVE-NEXT: mov x29, sp2907; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa w29, 642908; CHECK1024-SPLITSVE-NEXT: .cfi_offset w19, -82909; CHECK1024-SPLITSVE-NEXT: .cfi_offset w26, -162910; CHECK1024-SPLITSVE-NEXT: .cfi_offset w27, -242911; CHECK1024-SPLITSVE-NEXT: .cfi_offset w28, -322912; CHECK1024-SPLITSVE-NEXT: .cfi_offset vg, -482913; CHECK1024-SPLITSVE-NEXT: .cfi_offset w30, -562914; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -642915; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-22916; CHECK1024-SPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill2917; CHECK1024-SPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill2918; CHECK1024-SPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill2919; CHECK1024-SPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill2920; CHECK1024-SPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill2921; CHECK1024-SPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill2922; CHECK1024-SPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill2923; CHECK1024-SPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill2924; CHECK1024-SPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill2925; CHECK1024-SPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill2926; CHECK1024-SPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill2927; CHECK1024-SPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill2928; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10242929; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-162930; CHECK1024-SPLITSVE-NEXT: str z23, [sp] // 16-byte Folded Spill2931; CHECK1024-SPLITSVE-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill2932; CHECK1024-SPLITSVE-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill2933; CHECK1024-SPLITSVE-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill2934; CHECK1024-SPLITSVE-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill2935; CHECK1024-SPLITSVE-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill2936; CHECK1024-SPLITSVE-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill2937; CHECK1024-SPLITSVE-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill2938; CHECK1024-SPLITSVE-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill2939; CHECK1024-SPLITSVE-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill2940; CHECK1024-SPLITSVE-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill2941; CHECK1024-SPLITSVE-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill2942; CHECK1024-SPLITSVE-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill2943; CHECK1024-SPLITSVE-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill2944; CHECK1024-SPLITSVE-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2945; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill2946; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 24 * IncomingVG - 10882947; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 32 * IncomingVG - 10882948; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 40 * IncomingVG - 10882949; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 48 * IncomingVG - 10882950; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 56 * IncomingVG - 10882951; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 64 * IncomingVG - 10882952; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 72 * IncomingVG - 10882953; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 80 * IncomingVG - 10882954; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10722955; CHECK1024-SPLITSVE-NEXT: bl __arm_sme_state2956; CHECK1024-SPLITSVE-NEXT: mov x19, x02957; CHECK1024-SPLITSVE-NEXT: //APP2958; CHECK1024-SPLITSVE-NEXT: //NO_APP2959; CHECK1024-SPLITSVE-NEXT: tbz w19, #0, .LBB29_22960; CHECK1024-SPLITSVE-NEXT: // %bb.1: // %entry2961; CHECK1024-SPLITSVE-NEXT: smstop sm2962; CHECK1024-SPLITSVE-NEXT: .LBB29_2: // %entry2963; CHECK1024-SPLITSVE-NEXT: mov x0, sp2964; CHECK1024-SPLITSVE-NEXT: mov w1, #45 // =0x2d2965; CHECK1024-SPLITSVE-NEXT: mov w2, #37 // =0x252966; CHECK1024-SPLITSVE-NEXT: bl memset2967; CHECK1024-SPLITSVE-NEXT: tbz w19, #0, .LBB29_42968; CHECK1024-SPLITSVE-NEXT: // %bb.3: // %entry2969; CHECK1024-SPLITSVE-NEXT: smstart sm2970; CHECK1024-SPLITSVE-NEXT: .LBB29_4: // %entry2971; CHECK1024-SPLITSVE-NEXT: mov w0, #22647 // =0x58772972; CHECK1024-SPLITSVE-NEXT: movk w0, #59491, lsl #162973; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10722974; CHECK1024-SPLITSVE-NEXT: ldr z23, [sp] // 16-byte Folded Reload2975; CHECK1024-SPLITSVE-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload2976; CHECK1024-SPLITSVE-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload2977; CHECK1024-SPLITSVE-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload2978; CHECK1024-SPLITSVE-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload2979; CHECK1024-SPLITSVE-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload2980; CHECK1024-SPLITSVE-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload2981; CHECK1024-SPLITSVE-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload2982; CHECK1024-SPLITSVE-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload2983; CHECK1024-SPLITSVE-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload2984; CHECK1024-SPLITSVE-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload2985; CHECK1024-SPLITSVE-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload2986; CHECK1024-SPLITSVE-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload2987; CHECK1024-SPLITSVE-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload2988; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2989; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload2990; CHECK1024-SPLITSVE-NEXT: add sp, sp, #10242991; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #162992; CHECK1024-SPLITSVE-NEXT: .cfi_restore z82993; CHECK1024-SPLITSVE-NEXT: .cfi_restore z92994; CHECK1024-SPLITSVE-NEXT: .cfi_restore z102995; CHECK1024-SPLITSVE-NEXT: .cfi_restore z112996; CHECK1024-SPLITSVE-NEXT: .cfi_restore z122997; CHECK1024-SPLITSVE-NEXT: .cfi_restore z132998; CHECK1024-SPLITSVE-NEXT: .cfi_restore z142999; CHECK1024-SPLITSVE-NEXT: .cfi_restore z153000; CHECK1024-SPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload3001; CHECK1024-SPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload3002; CHECK1024-SPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload3003; CHECK1024-SPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload3004; CHECK1024-SPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload3005; CHECK1024-SPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload3006; CHECK1024-SPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload3007; CHECK1024-SPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload3008; CHECK1024-SPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload3009; CHECK1024-SPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload3010; CHECK1024-SPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload3011; CHECK1024-SPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload3012; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #23013; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa wsp, 643014; CHECK1024-SPLITSVE-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload3015; CHECK1024-SPLITSVE-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload3016; CHECK1024-SPLITSVE-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload3017; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 03018; CHECK1024-SPLITSVE-NEXT: .cfi_restore w193019; CHECK1024-SPLITSVE-NEXT: .cfi_restore w263020; CHECK1024-SPLITSVE-NEXT: .cfi_restore w273021; CHECK1024-SPLITSVE-NEXT: .cfi_restore w283022; CHECK1024-SPLITSVE-NEXT: .cfi_restore vg3023; CHECK1024-SPLITSVE-NEXT: .cfi_restore w303024; CHECK1024-SPLITSVE-NEXT: .cfi_restore w293025; CHECK1024-SPLITSVE-NEXT: ret3026 3027entry:3028 tail call void asm sideeffect "", "~{x0},~{x28},~{x27},~{x3}"() #23029 %0 = alloca [37 x i8], align 163030 %call = call ptr @memset(ptr noundef nonnull %0, i32 noundef 45, i32 noundef 37)3031 ret i32 -3961424733032}3033declare ptr @memset(ptr, i32, i32)3034 3035define void @call_with_doubles() "aarch64_pstate_sm_compatible" {3036; CHECK0-LABEL: call_with_doubles:3037; CHECK0: // %bb.0: // %entry3038; CHECK0-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill3039; CHECK0-NEXT: str x30, [sp, #8] // 8-byte Spill3040; CHECK0-NEXT: .cfi_def_cfa_offset 163041; CHECK0-NEXT: .cfi_offset w30, -83042; CHECK0-NEXT: .cfi_offset b8, -163043; CHECK0-NEXT: mov x8, #9221120237041090560 // =0x7ff80000000000003044; CHECK0-NEXT: fmov d8, x83045; CHECK0-NEXT: fmov d0, d83046; CHECK0-NEXT: bl calld3047; CHECK0-NEXT: ldr x30, [sp, #8] // 8-byte Reload3048; CHECK0-NEXT: fmov d0, d83049; CHECK0-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload3050; CHECK0-NEXT: b calld3051;3052; CHECK64-LABEL: call_with_doubles:3053; CHECK64: // %bb.0: // %entry3054; CHECK64-NEXT: sub sp, sp, #1443055; CHECK64-NEXT: str d8, [sp, #64] // 8-byte Spill3056; CHECK64-NEXT: str x30, [sp, #136] // 8-byte Spill3057; CHECK64-NEXT: .cfi_def_cfa_offset 1443058; CHECK64-NEXT: .cfi_offset w30, -83059; CHECK64-NEXT: .cfi_offset b8, -803060; CHECK64-NEXT: mov x8, #9221120237041090560 // =0x7ff80000000000003061; CHECK64-NEXT: fmov d8, x83062; CHECK64-NEXT: fmov d0, d83063; CHECK64-NEXT: bl calld3064; CHECK64-NEXT: fmov d0, d83065; CHECK64-NEXT: ldr x30, [sp, #136] // 8-byte Reload3066; CHECK64-NEXT: ldr d8, [sp, #64] // 8-byte Reload3067; CHECK64-NEXT: add sp, sp, #1443068; CHECK64-NEXT: b calld3069;3070; CHECK1024-LABEL: call_with_doubles:3071; CHECK1024: // %bb.0: // %entry3072; CHECK1024-NEXT: sub sp, sp, #10563073; CHECK1024-NEXT: str d8, [sp] // 8-byte Spill3074; CHECK1024-NEXT: str x29, [sp, #1032] // 8-byte Spill3075; CHECK1024-NEXT: str x30, [sp, #1040] // 8-byte Spill3076; CHECK1024-NEXT: sub sp, sp, #10243077; CHECK1024-NEXT: .cfi_def_cfa_offset 20803078; CHECK1024-NEXT: .cfi_offset w30, -163079; CHECK1024-NEXT: .cfi_offset w29, -243080; CHECK1024-NEXT: .cfi_offset b8, -10563081; CHECK1024-NEXT: mov x8, #9221120237041090560 // =0x7ff80000000000003082; CHECK1024-NEXT: fmov d8, x83083; CHECK1024-NEXT: fmov d0, d83084; CHECK1024-NEXT: bl calld3085; CHECK1024-NEXT: fmov d0, d83086; CHECK1024-NEXT: add sp, sp, #10243087; CHECK1024-NEXT: ldr x30, [sp, #1040] // 8-byte Reload3088; CHECK1024-NEXT: ldr x29, [sp, #1032] // 8-byte Reload3089; CHECK1024-NEXT: ldr d8, [sp] // 8-byte Reload3090; CHECK1024-NEXT: add sp, sp, #10563091; CHECK1024-NEXT: b calld3092entry:3093 %call = tail call i32 @calld(double 0x7FF8000000000000)3094 %call.1 = tail call i32 @calld(double 0x7FF8000000000000)3095 ret void3096}3097declare i32 @calld(double) "aarch64_pstate_sm_compatible"3098 3099; Check that stack objects are ordererd fpr > hazard > gpr3100define void @ordering_test(double %d, half %h, <4 x i32> %v) "aarch64_pstate_sm_compatible" {3101; CHECK0-LABEL: ordering_test:3102; CHECK0: // %bb.0: // %entry3103; CHECK0-NEXT: sub sp, sp, #483104; CHECK0-NEXT: .cfi_def_cfa_offset 483105; CHECK0-NEXT: str wzr, [sp, #32]3106; CHECK0-NEXT: str d0, [sp, #24]3107; CHECK0-NEXT: str wzr, [sp, #44]3108; CHECK0-NEXT: str h1, [sp, #22]3109; CHECK0-NEXT: str wzr, [sp, #16]3110; CHECK0-NEXT: str q2, [sp], #483111; CHECK0-NEXT: ret3112;3113; CHECK64-LABEL: ordering_test:3114; CHECK64: // %bb.0: // %entry3115; CHECK64-NEXT: sub sp, sp, #1283116; CHECK64-NEXT: .cfi_def_cfa_offset 1283117; CHECK64-NEXT: stp wzr, wzr, [sp, #12]3118; CHECK64-NEXT: str d0, [sp, #120]3119; CHECK64-NEXT: str wzr, [sp, #28]3120; CHECK64-NEXT: str h1, [sp, #118]3121; CHECK64-NEXT: str q2, [sp, #96]3122; CHECK64-NEXT: add sp, sp, #1283123; CHECK64-NEXT: ret3124;3125; CHECK1024-LABEL: ordering_test:3126; CHECK1024: // %bb.0: // %entry3127; CHECK1024-NEXT: sub sp, sp, #10403128; CHECK1024-NEXT: str x29, [sp, #1024] // 8-byte Spill3129; CHECK1024-NEXT: sub sp, sp, #10883130; CHECK1024-NEXT: .cfi_def_cfa_offset 21283131; CHECK1024-NEXT: .cfi_offset w29, -163132; CHECK1024-NEXT: stp wzr, wzr, [sp, #12]3133; CHECK1024-NEXT: str d0, [sp, #1080]3134; CHECK1024-NEXT: str wzr, [sp, #28]3135; CHECK1024-NEXT: str h1, [sp, #1078]3136; CHECK1024-NEXT: str q2, [sp, #1056]3137; CHECK1024-NEXT: add sp, sp, #10883138; CHECK1024-NEXT: ldr x29, [sp, #1024] // 8-byte Reload3139; CHECK1024-NEXT: add sp, sp, #10403140; CHECK1024-NEXT: ret3141entry:3142 %i32 = alloca i323143 %i64 = alloca i643144 %f64 = alloca double3145 %f16 = alloca half3146 %i32b = alloca i323147 %v4i32 = alloca <4 x i32>3148 store i32 0, ptr %i643149 store double %d, ptr %f643150 store i32 0, ptr %i323151 store half %h, ptr %f163152 store i32 0, ptr %i32b3153 store <4 x i32> %v, ptr %v4i323154 ret void3155}3156 3157 3158define void @ordering_test_array(i64 %o, i64 %p, float %f, i32 %x) "aarch64_pstate_sm_compatible" {3159; CHECK0-LABEL: ordering_test_array:3160; CHECK0: // %bb.0: // %entry3161; CHECK0-NEXT: sub sp, sp, #2723162; CHECK0-NEXT: str x29, [sp, #256] // 8-byte Spill3163; CHECK0-NEXT: .cfi_def_cfa_offset 2723164; CHECK0-NEXT: .cfi_offset w29, -163165; CHECK0-NEXT: add x8, sp, #1283166; CHECK0-NEXT: str w2, [x8, x0, lsl #2]3167; CHECK0-NEXT: mov x8, sp3168; CHECK0-NEXT: str s0, [x8, x1, lsl #2]3169; CHECK0-NEXT: add sp, sp, #2723170; CHECK0-NEXT: ret3171;3172; CHECK64-LABEL: ordering_test_array:3173; CHECK64: // %bb.0: // %entry3174; CHECK64-NEXT: sub sp, sp, #4003175; CHECK64-NEXT: str x29, [sp, #384] // 8-byte Spill3176; CHECK64-NEXT: .cfi_def_cfa_offset 4003177; CHECK64-NEXT: .cfi_offset w29, -163178; CHECK64-NEXT: mov x8, sp3179; CHECK64-NEXT: str w2, [x8, x0, lsl #2]3180; CHECK64-NEXT: add x8, sp, #1923181; CHECK64-NEXT: str s0, [x8, x1, lsl #2]3182; CHECK64-NEXT: add sp, sp, #4003183; CHECK64-NEXT: ret3184;3185; CHECK1024-LABEL: ordering_test_array:3186; CHECK1024: // %bb.0: // %entry3187; CHECK1024-NEXT: sub sp, sp, #10403188; CHECK1024-NEXT: str x29, [sp, #1024] // 8-byte Spill3189; CHECK1024-NEXT: sub sp, sp, #12803190; CHECK1024-NEXT: .cfi_def_cfa_offset 23203191; CHECK1024-NEXT: .cfi_offset w29, -163192; CHECK1024-NEXT: mov x8, sp3193; CHECK1024-NEXT: str w2, [x8, x0, lsl #2]3194; CHECK1024-NEXT: add x8, sp, #11523195; CHECK1024-NEXT: str s0, [x8, x1, lsl #2]3196; CHECK1024-NEXT: add sp, sp, #12803197; CHECK1024-NEXT: ldr x29, [sp, #1024] // 8-byte Reload3198; CHECK1024-NEXT: add sp, sp, #10403199; CHECK1024-NEXT: ret3200entry:3201 %i32 = alloca [32 x i32]3202 %f32 = alloca [32 x float]3203 %g = getelementptr i32, ptr %i32, i64 %o3204 store i32 %x, ptr %g3205 %h = getelementptr float, ptr %f32, i64 %p3206 store float %f, ptr %h3207 ret void3208}3209 3210; The VA register currently ends up in VLA space. Lets hope that doesn't come up very often.3211define i32 @vastate(i32 %x) "aarch64_inout_za" "aarch64_pstate_sm_enabled" "target-features"="+sme" {3212; CHECK0-LABEL: vastate:3213; CHECK0: // %bb.0: // %entry3214; CHECK0-NEXT: stp d15, d14, [sp, #-112]! // 16-byte Folded Spill3215; CHECK0-NEXT: .cfi_def_cfa_offset 1123216; CHECK0-NEXT: cntd x93217; CHECK0-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill3218; CHECK0-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill3219; CHECK0-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill3220; CHECK0-NEXT: stp x29, x30, [sp, #64] // 16-byte Folded Spill3221; CHECK0-NEXT: str x9, [sp, #80] // 8-byte Spill3222; CHECK0-NEXT: stp x20, x19, [sp, #96] // 16-byte Folded Spill3223; CHECK0-NEXT: add x29, sp, #643224; CHECK0-NEXT: .cfi_def_cfa w29, 483225; CHECK0-NEXT: .cfi_offset w19, -83226; CHECK0-NEXT: .cfi_offset w20, -163227; CHECK0-NEXT: .cfi_offset vg, -323228; CHECK0-NEXT: .cfi_offset w30, -403229; CHECK0-NEXT: .cfi_offset w29, -483230; CHECK0-NEXT: .cfi_offset b8, -563231; CHECK0-NEXT: .cfi_offset b9, -643232; CHECK0-NEXT: .cfi_offset b10, -723233; CHECK0-NEXT: .cfi_offset b11, -803234; CHECK0-NEXT: .cfi_offset b12, -883235; CHECK0-NEXT: .cfi_offset b13, -963236; CHECK0-NEXT: .cfi_offset b14, -1043237; CHECK0-NEXT: .cfi_offset b15, -1123238; CHECK0-NEXT: sub sp, sp, #163239; CHECK0-NEXT: rdsvl x8, #13240; CHECK0-NEXT: mov x9, sp3241; CHECK0-NEXT: mov w20, w03242; CHECK0-NEXT: msub x9, x8, x8, x93243; CHECK0-NEXT: mov sp, x93244; CHECK0-NEXT: sub x10, x29, #803245; CHECK0-NEXT: stp x9, x8, [x29, #-80]3246; CHECK0-NEXT: msr TPIDR2_EL0, x103247; CHECK0-NEXT: smstop sm3248; CHECK0-NEXT: bl other3249; CHECK0-NEXT: smstart sm3250; CHECK0-NEXT: smstart za3251; CHECK0-NEXT: mrs x8, TPIDR2_EL03252; CHECK0-NEXT: sub x0, x29, #803253; CHECK0-NEXT: cbnz x8, .LBB33_23254; CHECK0-NEXT: // %bb.1: // %entry3255; CHECK0-NEXT: bl __arm_tpidr2_restore3256; CHECK0-NEXT: .LBB33_2: // %entry3257; CHECK0-NEXT: mov w0, w203258; CHECK0-NEXT: msr TPIDR2_EL0, xzr3259; CHECK0-NEXT: sub sp, x29, #643260; CHECK0-NEXT: .cfi_def_cfa wsp, 1123261; CHECK0-NEXT: ldp x20, x19, [sp, #96] // 16-byte Folded Reload3262; CHECK0-NEXT: ldp x29, x30, [sp, #64] // 16-byte Folded Reload3263; CHECK0-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload3264; CHECK0-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload3265; CHECK0-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload3266; CHECK0-NEXT: ldp d15, d14, [sp], #112 // 16-byte Folded Reload3267; CHECK0-NEXT: .cfi_def_cfa_offset 03268; CHECK0-NEXT: .cfi_restore w193269; CHECK0-NEXT: .cfi_restore w203270; CHECK0-NEXT: .cfi_restore vg3271; CHECK0-NEXT: .cfi_restore w303272; CHECK0-NEXT: .cfi_restore w293273; CHECK0-NEXT: .cfi_restore b83274; CHECK0-NEXT: .cfi_restore b93275; CHECK0-NEXT: .cfi_restore b103276; CHECK0-NEXT: .cfi_restore b113277; CHECK0-NEXT: .cfi_restore b123278; CHECK0-NEXT: .cfi_restore b133279; CHECK0-NEXT: .cfi_restore b143280; CHECK0-NEXT: .cfi_restore b153281; CHECK0-NEXT: ret3282;3283; CHECK64-LABEL: vastate:3284; CHECK64: // %bb.0: // %entry3285; CHECK64-NEXT: stp d15, d14, [sp, #-176]! // 16-byte Folded Spill3286; CHECK64-NEXT: .cfi_def_cfa_offset 1763287; CHECK64-NEXT: cntd x93288; CHECK64-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill3289; CHECK64-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill3290; CHECK64-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill3291; CHECK64-NEXT: stp x29, x30, [sp, #128] // 16-byte Folded Spill3292; CHECK64-NEXT: stp x9, x20, [sp, #144] // 16-byte Folded Spill3293; CHECK64-NEXT: str x19, [sp, #160] // 8-byte Spill3294; CHECK64-NEXT: add x29, sp, #1283295; CHECK64-NEXT: .cfi_def_cfa w29, 483296; CHECK64-NEXT: .cfi_offset w19, -163297; CHECK64-NEXT: .cfi_offset w20, -243298; CHECK64-NEXT: .cfi_offset vg, -323299; CHECK64-NEXT: .cfi_offset w30, -403300; CHECK64-NEXT: .cfi_offset w29, -483301; CHECK64-NEXT: .cfi_offset b8, -1203302; CHECK64-NEXT: .cfi_offset b9, -1283303; CHECK64-NEXT: .cfi_offset b10, -1363304; CHECK64-NEXT: .cfi_offset b11, -1443305; CHECK64-NEXT: .cfi_offset b12, -1523306; CHECK64-NEXT: .cfi_offset b13, -1603307; CHECK64-NEXT: .cfi_offset b14, -1683308; CHECK64-NEXT: .cfi_offset b15, -1763309; CHECK64-NEXT: sub sp, sp, #803310; CHECK64-NEXT: rdsvl x8, #13311; CHECK64-NEXT: mov x9, sp3312; CHECK64-NEXT: mov w20, w03313; CHECK64-NEXT: msub x9, x8, x8, x93314; CHECK64-NEXT: mov x19, sp3315; CHECK64-NEXT: mov sp, x93316; CHECK64-NEXT: add x10, x19, #03317; CHECK64-NEXT: stp x9, x8, [x19]3318; CHECK64-NEXT: msr TPIDR2_EL0, x103319; CHECK64-NEXT: smstop sm3320; CHECK64-NEXT: bl other3321; CHECK64-NEXT: smstart sm3322; CHECK64-NEXT: smstart za3323; CHECK64-NEXT: mrs x8, TPIDR2_EL03324; CHECK64-NEXT: add x0, x19, #03325; CHECK64-NEXT: cbnz x8, .LBB33_23326; CHECK64-NEXT: // %bb.1: // %entry3327; CHECK64-NEXT: bl __arm_tpidr2_restore3328; CHECK64-NEXT: .LBB33_2: // %entry3329; CHECK64-NEXT: mov w0, w203330; CHECK64-NEXT: msr TPIDR2_EL0, xzr3331; CHECK64-NEXT: sub sp, x29, #1283332; CHECK64-NEXT: .cfi_def_cfa wsp, 1763333; CHECK64-NEXT: ldp x20, x19, [sp, #152] // 16-byte Folded Reload3334; CHECK64-NEXT: ldr d14, [sp, #8] // 8-byte Reload3335; CHECK64-NEXT: ldp x29, x30, [sp, #128] // 16-byte Folded Reload3336; CHECK64-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload3337; CHECK64-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload3338; CHECK64-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload3339; CHECK64-NEXT: ldr d15, [sp], #176 // 8-byte Folded Reload3340; CHECK64-NEXT: .cfi_def_cfa_offset 03341; CHECK64-NEXT: .cfi_restore w193342; CHECK64-NEXT: .cfi_restore w203343; CHECK64-NEXT: .cfi_restore vg3344; CHECK64-NEXT: .cfi_restore w303345; CHECK64-NEXT: .cfi_restore w293346; CHECK64-NEXT: .cfi_restore b83347; CHECK64-NEXT: .cfi_restore b93348; CHECK64-NEXT: .cfi_restore b103349; CHECK64-NEXT: .cfi_restore b113350; CHECK64-NEXT: .cfi_restore b123351; CHECK64-NEXT: .cfi_restore b133352; CHECK64-NEXT: .cfi_restore b143353; CHECK64-NEXT: .cfi_restore b153354; CHECK64-NEXT: ret3355;3356; CHECK1024-LABEL: vastate:3357; CHECK1024: // %bb.0: // %entry3358; CHECK1024-NEXT: sub sp, sp, #11363359; CHECK1024-NEXT: .cfi_def_cfa_offset 11363360; CHECK1024-NEXT: cntd x93361; CHECK1024-NEXT: stp d15, d14, [sp] // 16-byte Folded Spill3362; CHECK1024-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill3363; CHECK1024-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill3364; CHECK1024-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill3365; CHECK1024-NEXT: str x29, [sp, #1088] // 8-byte Spill3366; CHECK1024-NEXT: str x30, [sp, #1096] // 8-byte Spill3367; CHECK1024-NEXT: str x9, [sp, #1104] // 8-byte Spill3368; CHECK1024-NEXT: str x28, [sp, #1112] // 8-byte Spill3369; CHECK1024-NEXT: str x20, [sp, #1120] // 8-byte Spill3370; CHECK1024-NEXT: str x19, [sp, #1128] // 8-byte Spill3371; CHECK1024-NEXT: add x29, sp, #10883372; CHECK1024-NEXT: .cfi_def_cfa w29, 483373; CHECK1024-NEXT: .cfi_offset w19, -83374; CHECK1024-NEXT: .cfi_offset w20, -163375; CHECK1024-NEXT: .cfi_offset w28, -243376; CHECK1024-NEXT: .cfi_offset vg, -323377; CHECK1024-NEXT: .cfi_offset w30, -403378; CHECK1024-NEXT: .cfi_offset w29, -483379; CHECK1024-NEXT: .cfi_offset b8, -10803380; CHECK1024-NEXT: .cfi_offset b9, -10883381; CHECK1024-NEXT: .cfi_offset b10, -10963382; CHECK1024-NEXT: .cfi_offset b11, -11043383; CHECK1024-NEXT: .cfi_offset b12, -11123384; CHECK1024-NEXT: .cfi_offset b13, -11203385; CHECK1024-NEXT: .cfi_offset b14, -11283386; CHECK1024-NEXT: .cfi_offset b15, -11363387; CHECK1024-NEXT: sub sp, sp, #10403388; CHECK1024-NEXT: rdsvl x8, #13389; CHECK1024-NEXT: mov x9, sp3390; CHECK1024-NEXT: mov w20, w03391; CHECK1024-NEXT: msub x9, x8, x8, x93392; CHECK1024-NEXT: mov x19, sp3393; CHECK1024-NEXT: mov sp, x93394; CHECK1024-NEXT: add x10, x19, #03395; CHECK1024-NEXT: stp x9, x8, [x19]3396; CHECK1024-NEXT: msr TPIDR2_EL0, x103397; CHECK1024-NEXT: smstop sm3398; CHECK1024-NEXT: bl other3399; CHECK1024-NEXT: smstart sm3400; CHECK1024-NEXT: smstart za3401; CHECK1024-NEXT: mrs x8, TPIDR2_EL03402; CHECK1024-NEXT: add x0, x19, #03403; CHECK1024-NEXT: cbnz x8, .LBB33_23404; CHECK1024-NEXT: // %bb.1: // %entry3405; CHECK1024-NEXT: bl __arm_tpidr2_restore3406; CHECK1024-NEXT: .LBB33_2: // %entry3407; CHECK1024-NEXT: mov w0, w203408; CHECK1024-NEXT: msr TPIDR2_EL0, xzr3409; CHECK1024-NEXT: sub sp, x29, #10883410; CHECK1024-NEXT: .cfi_def_cfa wsp, 11363411; CHECK1024-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload3412; CHECK1024-NEXT: ldr x19, [sp, #1128] // 8-byte Reload3413; CHECK1024-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload3414; CHECK1024-NEXT: ldr x20, [sp, #1120] // 8-byte Reload3415; CHECK1024-NEXT: ldr x28, [sp, #1112] // 8-byte Reload3416; CHECK1024-NEXT: ldr x30, [sp, #1096] // 8-byte Reload3417; CHECK1024-NEXT: ldr x29, [sp, #1088] // 8-byte Reload3418; CHECK1024-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload3419; CHECK1024-NEXT: ldp d15, d14, [sp] // 16-byte Folded Reload3420; CHECK1024-NEXT: add sp, sp, #11363421; CHECK1024-NEXT: .cfi_def_cfa_offset 03422; CHECK1024-NEXT: .cfi_restore w193423; CHECK1024-NEXT: .cfi_restore w203424; CHECK1024-NEXT: .cfi_restore w283425; CHECK1024-NEXT: .cfi_restore vg3426; CHECK1024-NEXT: .cfi_restore w303427; CHECK1024-NEXT: .cfi_restore w293428; CHECK1024-NEXT: .cfi_restore b83429; CHECK1024-NEXT: .cfi_restore b93430; CHECK1024-NEXT: .cfi_restore b103431; CHECK1024-NEXT: .cfi_restore b113432; CHECK1024-NEXT: .cfi_restore b123433; CHECK1024-NEXT: .cfi_restore b133434; CHECK1024-NEXT: .cfi_restore b143435; CHECK1024-NEXT: .cfi_restore b153436; CHECK1024-NEXT: ret3437entry:3438 tail call void @other()3439 ret i32 %x3440}3441declare void @other()3442 3443declare void @bar(ptr noundef) "aarch64_pstate_sm_compatible"3444 3445define i32 @sve_stack_object_and_vla(double %d, i64 %sz) "aarch64_pstate_sm_compatible" "frame-pointer"="all" {3446; CHECK0-LABEL: sve_stack_object_and_vla:3447; CHECK0: // %bb.0: // %entry3448; CHECK0-NEXT: stp x29, x30, [sp, #-32]! // 16-byte Folded Spill3449; CHECK0-NEXT: stp x28, x19, [sp, #16] // 16-byte Folded Spill3450; CHECK0-NEXT: mov x29, sp3451; CHECK0-NEXT: addvl sp, sp, #-13452; CHECK0-NEXT: mov x19, sp3453; CHECK0-NEXT: .cfi_def_cfa w29, 323454; CHECK0-NEXT: .cfi_offset w19, -83455; CHECK0-NEXT: .cfi_offset w28, -163456; CHECK0-NEXT: .cfi_offset w30, -243457; CHECK0-NEXT: .cfi_offset w29, -323458; CHECK0-NEXT: lsl x9, x0, #23459; CHECK0-NEXT: mov x8, sp3460; CHECK0-NEXT: add x9, x9, #153461; CHECK0-NEXT: and x9, x9, #0xfffffffffffffff03462; CHECK0-NEXT: sub x0, x8, x93463; CHECK0-NEXT: mov sp, x03464; CHECK0-NEXT: mov z0.s, #0 // =0x03465; CHECK0-NEXT: str z0, [x29, #-1, mul vl]3466; CHECK0-NEXT: bl bar3467; CHECK0-NEXT: mov w0, wzr3468; CHECK0-NEXT: mov sp, x293469; CHECK0-NEXT: ldp x28, x19, [sp, #16] // 16-byte Folded Reload3470; CHECK0-NEXT: ldp x29, x30, [sp], #32 // 16-byte Folded Reload3471; CHECK0-NEXT: ret3472;3473; CHECK64-LABEL: sve_stack_object_and_vla:3474; CHECK64: // %bb.0: // %entry3475; CHECK64-NEXT: sub sp, sp, #963476; CHECK64-NEXT: stp x29, x30, [sp, #64] // 16-byte Folded Spill3477; CHECK64-NEXT: add x29, sp, #643478; CHECK64-NEXT: stp x28, x19, [sp, #80] // 16-byte Folded Spill3479; CHECK64-NEXT: sub sp, sp, #643480; CHECK64-NEXT: addvl sp, sp, #-13481; CHECK64-NEXT: mov x19, sp3482; CHECK64-NEXT: .cfi_def_cfa w29, 323483; CHECK64-NEXT: .cfi_offset w19, -83484; CHECK64-NEXT: .cfi_offset w28, -163485; CHECK64-NEXT: .cfi_offset w30, -243486; CHECK64-NEXT: .cfi_offset w29, -323487; CHECK64-NEXT: lsl x9, x0, #23488; CHECK64-NEXT: mov x8, sp3489; CHECK64-NEXT: add x9, x9, #153490; CHECK64-NEXT: and x9, x9, #0xfffffffffffffff03491; CHECK64-NEXT: sub x0, x8, x93492; CHECK64-NEXT: mov sp, x03493; CHECK64-NEXT: mov z0.s, #0 // =0x03494; CHECK64-NEXT: sub x8, x29, #643495; CHECK64-NEXT: str z0, [x8, #-1, mul vl]3496; CHECK64-NEXT: bl bar3497; CHECK64-NEXT: mov w0, wzr3498; CHECK64-NEXT: sub sp, x29, #643499; CHECK64-NEXT: ldp x28, x19, [sp, #80] // 16-byte Folded Reload3500; CHECK64-NEXT: ldp x29, x30, [sp, #64] // 16-byte Folded Reload3501; CHECK64-NEXT: add sp, sp, #963502; CHECK64-NEXT: ret3503;3504; CHECK1024-LABEL: sve_stack_object_and_vla:3505; CHECK1024: // %bb.0: // %entry3506; CHECK1024-NEXT: sub sp, sp, #10563507; CHECK1024-NEXT: str x29, [sp, #1024] // 8-byte Spill3508; CHECK1024-NEXT: add x29, sp, #10243509; CHECK1024-NEXT: str x30, [sp, #1032] // 8-byte Spill3510; CHECK1024-NEXT: str x28, [sp, #1040] // 8-byte Spill3511; CHECK1024-NEXT: str x19, [sp, #1048] // 8-byte Spill3512; CHECK1024-NEXT: sub sp, sp, #10243513; CHECK1024-NEXT: addvl sp, sp, #-13514; CHECK1024-NEXT: mov x19, sp3515; CHECK1024-NEXT: .cfi_def_cfa w29, 323516; CHECK1024-NEXT: .cfi_offset w19, -83517; CHECK1024-NEXT: .cfi_offset w28, -163518; CHECK1024-NEXT: .cfi_offset w30, -243519; CHECK1024-NEXT: .cfi_offset w29, -323520; CHECK1024-NEXT: lsl x9, x0, #23521; CHECK1024-NEXT: mov x8, sp3522; CHECK1024-NEXT: add x9, x9, #153523; CHECK1024-NEXT: and x9, x9, #0xfffffffffffffff03524; CHECK1024-NEXT: sub x0, x8, x93525; CHECK1024-NEXT: mov sp, x03526; CHECK1024-NEXT: mov z0.s, #0 // =0x03527; CHECK1024-NEXT: sub x8, x29, #10243528; CHECK1024-NEXT: str z0, [x8, #-1, mul vl]3529; CHECK1024-NEXT: bl bar3530; CHECK1024-NEXT: mov w0, wzr3531; CHECK1024-NEXT: sub sp, x29, #10243532; CHECK1024-NEXT: ldr x19, [sp, #1048] // 8-byte Reload3533; CHECK1024-NEXT: ldr x28, [sp, #1040] // 8-byte Reload3534; CHECK1024-NEXT: ldr x30, [sp, #1032] // 8-byte Reload3535; CHECK1024-NEXT: ldr x29, [sp, #1024] // 8-byte Reload3536; CHECK1024-NEXT: add sp, sp, #10563537; CHECK1024-NEXT: ret3538entry:3539 %a = alloca <vscale x 4 x i32>3540 %b = alloca i32, i64 %sz, align 43541 store <vscale x 4 x i32> zeroinitializer, ptr %a3542 call void @bar(ptr noundef nonnull %b)3543 ret i32 03544}3545 3546 3547define i32 @svecc_call_dynamic_alloca(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i8> %P3, i16 %P4) "aarch64_pstate_sm_compatible" {3548; CHECK0-LABEL: svecc_call_dynamic_alloca:3549; CHECK0: // %bb.0: // %entry3550; CHECK0-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill3551; CHECK0-NEXT: .cfi_def_cfa_offset 643552; CHECK0-NEXT: cntd x93553; CHECK0-NEXT: stp x27, x26, [sp, #32] // 16-byte Folded Spill3554; CHECK0-NEXT: stp x9, x28, [sp, #16] // 16-byte Folded Spill3555; CHECK0-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill3556; CHECK0-NEXT: mov x29, sp3557; CHECK0-NEXT: .cfi_def_cfa w29, 643558; CHECK0-NEXT: .cfi_offset w19, -83559; CHECK0-NEXT: .cfi_offset w20, -163560; CHECK0-NEXT: .cfi_offset w26, -243561; CHECK0-NEXT: .cfi_offset w27, -323562; CHECK0-NEXT: .cfi_offset w28, -403563; CHECK0-NEXT: .cfi_offset vg, -483564; CHECK0-NEXT: .cfi_offset w30, -563565; CHECK0-NEXT: .cfi_offset w29, -643566; CHECK0-NEXT: addvl sp, sp, #-183567; CHECK0-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill3568; CHECK0-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill3569; CHECK0-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill3570; CHECK0-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill3571; CHECK0-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill3572; CHECK0-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill3573; CHECK0-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill3574; CHECK0-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill3575; CHECK0-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill3576; CHECK0-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill3577; CHECK0-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill3578; CHECK0-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill3579; CHECK0-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill3580; CHECK0-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill3581; CHECK0-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill3582; CHECK0-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill3583; CHECK0-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill3584; CHECK0-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill3585; CHECK0-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill3586; CHECK0-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill3587; CHECK0-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill3588; CHECK0-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill3589; CHECK0-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill3590; CHECK0-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill3591; CHECK0-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill3592; CHECK0-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill3593; CHECK0-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill3594; CHECK0-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill3595; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d8 @ cfa - 8 * IncomingVG - 643596; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d9 @ cfa - 16 * IncomingVG - 643597; CHECK0-NEXT: .cfi_escape 0x10, 0x4a, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d10 @ cfa - 24 * IncomingVG - 643598; CHECK0-NEXT: .cfi_escape 0x10, 0x4b, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d11 @ cfa - 32 * IncomingVG - 643599; CHECK0-NEXT: .cfi_escape 0x10, 0x4c, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d12 @ cfa - 40 * IncomingVG - 643600; CHECK0-NEXT: .cfi_escape 0x10, 0x4d, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d13 @ cfa - 48 * IncomingVG - 643601; CHECK0-NEXT: .cfi_escape 0x10, 0x4e, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d14 @ cfa - 56 * IncomingVG - 643602; CHECK0-NEXT: .cfi_escape 0x10, 0x4f, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d15 @ cfa - 64 * IncomingVG - 643603; CHECK0-NEXT: mov x19, sp3604; CHECK0-NEXT: mov w2, w13605; CHECK0-NEXT: mov w8, w03606; CHECK0-NEXT: bl __arm_sme_state3607; CHECK0-NEXT: mov w8, w83608; CHECK0-NEXT: mov x9, sp3609; CHECK0-NEXT: mov x20, x03610; CHECK0-NEXT: add x8, x8, #153611; CHECK0-NEXT: and x8, x8, #0x1fffffff03612; CHECK0-NEXT: sub x8, x9, x83613; CHECK0-NEXT: mov sp, x83614; CHECK0-NEXT: //APP3615; CHECK0-NEXT: //NO_APP3616; CHECK0-NEXT: tbz w20, #0, .LBB35_23617; CHECK0-NEXT: // %bb.1: // %entry3618; CHECK0-NEXT: smstop sm3619; CHECK0-NEXT: .LBB35_2: // %entry3620; CHECK0-NEXT: mov x0, x83621; CHECK0-NEXT: mov w1, #45 // =0x2d3622; CHECK0-NEXT: bl memset3623; CHECK0-NEXT: tbz w20, #0, .LBB35_43624; CHECK0-NEXT: // %bb.3: // %entry3625; CHECK0-NEXT: smstart sm3626; CHECK0-NEXT: .LBB35_4: // %entry3627; CHECK0-NEXT: mov w0, #22647 // =0x58773628; CHECK0-NEXT: movk w0, #59491, lsl #163629; CHECK0-NEXT: addvl sp, x29, #-183630; CHECK0-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload3631; CHECK0-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload3632; CHECK0-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload3633; CHECK0-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload3634; CHECK0-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload3635; CHECK0-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload3636; CHECK0-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload3637; CHECK0-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload3638; CHECK0-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload3639; CHECK0-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload3640; CHECK0-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload3641; CHECK0-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload3642; CHECK0-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload3643; CHECK0-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload3644; CHECK0-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload3645; CHECK0-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload3646; CHECK0-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload3647; CHECK0-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload3648; CHECK0-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload3649; CHECK0-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload3650; CHECK0-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload3651; CHECK0-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload3652; CHECK0-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload3653; CHECK0-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload3654; CHECK0-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload3655; CHECK0-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload3656; CHECK0-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload3657; CHECK0-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload3658; CHECK0-NEXT: .cfi_restore z83659; CHECK0-NEXT: .cfi_restore z93660; CHECK0-NEXT: .cfi_restore z103661; CHECK0-NEXT: .cfi_restore z113662; CHECK0-NEXT: .cfi_restore z123663; CHECK0-NEXT: .cfi_restore z133664; CHECK0-NEXT: .cfi_restore z143665; CHECK0-NEXT: .cfi_restore z153666; CHECK0-NEXT: mov sp, x293667; CHECK0-NEXT: .cfi_def_cfa wsp, 643668; CHECK0-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload3669; CHECK0-NEXT: ldr x28, [sp, #24] // 8-byte Reload3670; CHECK0-NEXT: ldp x27, x26, [sp, #32] // 16-byte Folded Reload3671; CHECK0-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload3672; CHECK0-NEXT: .cfi_def_cfa_offset 03673; CHECK0-NEXT: .cfi_restore w193674; CHECK0-NEXT: .cfi_restore w203675; CHECK0-NEXT: .cfi_restore w263676; CHECK0-NEXT: .cfi_restore w273677; CHECK0-NEXT: .cfi_restore w283678; CHECK0-NEXT: .cfi_restore vg3679; CHECK0-NEXT: .cfi_restore w303680; CHECK0-NEXT: .cfi_restore w293681; CHECK0-NEXT: ret3682;3683; CHECK64-LABEL: svecc_call_dynamic_alloca:3684; CHECK64: // %bb.0: // %entry3685; CHECK64-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill3686; CHECK64-NEXT: .cfi_def_cfa_offset 643687; CHECK64-NEXT: cntd x93688; CHECK64-NEXT: stp x27, x26, [sp, #32] // 16-byte Folded Spill3689; CHECK64-NEXT: stp x9, x28, [sp, #16] // 16-byte Folded Spill3690; CHECK64-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill3691; CHECK64-NEXT: mov x29, sp3692; CHECK64-NEXT: .cfi_def_cfa w29, 643693; CHECK64-NEXT: .cfi_offset w19, -83694; CHECK64-NEXT: .cfi_offset w20, -163695; CHECK64-NEXT: .cfi_offset w26, -243696; CHECK64-NEXT: .cfi_offset w27, -323697; CHECK64-NEXT: .cfi_offset w28, -403698; CHECK64-NEXT: .cfi_offset vg, -483699; CHECK64-NEXT: .cfi_offset w30, -563700; CHECK64-NEXT: .cfi_offset w29, -643701; CHECK64-NEXT: addvl sp, sp, #-23702; CHECK64-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill3703; CHECK64-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill3704; CHECK64-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill3705; CHECK64-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill3706; CHECK64-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill3707; CHECK64-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill3708; CHECK64-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill3709; CHECK64-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill3710; CHECK64-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill3711; CHECK64-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill3712; CHECK64-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill3713; CHECK64-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill3714; CHECK64-NEXT: sub sp, sp, #643715; CHECK64-NEXT: addvl sp, sp, #-163716; CHECK64-NEXT: str z23, [sp] // 16-byte Folded Spill3717; CHECK64-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill3718; CHECK64-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill3719; CHECK64-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill3720; CHECK64-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill3721; CHECK64-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill3722; CHECK64-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill3723; CHECK64-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill3724; CHECK64-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill3725; CHECK64-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill3726; CHECK64-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill3727; CHECK64-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill3728; CHECK64-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill3729; CHECK64-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill3730; CHECK64-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill3731; CHECK64-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill3732; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d8 @ cfa - 24 * IncomingVG - 1283733; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d9 @ cfa - 32 * IncomingVG - 1283734; CHECK64-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d10 @ cfa - 40 * IncomingVG - 1283735; CHECK64-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d11 @ cfa - 48 * IncomingVG - 1283736; CHECK64-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d12 @ cfa - 56 * IncomingVG - 1283737; CHECK64-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d13 @ cfa - 64 * IncomingVG - 1283738; CHECK64-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d14 @ cfa - 72 * IncomingVG - 1283739; CHECK64-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d15 @ cfa - 80 * IncomingVG - 1283740; CHECK64-NEXT: sub sp, sp, #643741; CHECK64-NEXT: mov x19, sp3742; CHECK64-NEXT: mov w2, w13743; CHECK64-NEXT: mov w8, w03744; CHECK64-NEXT: bl __arm_sme_state3745; CHECK64-NEXT: mov w8, w83746; CHECK64-NEXT: mov x9, sp3747; CHECK64-NEXT: mov x20, x03748; CHECK64-NEXT: add x8, x8, #153749; CHECK64-NEXT: and x8, x8, #0x1fffffff03750; CHECK64-NEXT: sub x8, x9, x83751; CHECK64-NEXT: mov sp, x83752; CHECK64-NEXT: //APP3753; CHECK64-NEXT: //NO_APP3754; CHECK64-NEXT: tbz w20, #0, .LBB35_23755; CHECK64-NEXT: // %bb.1: // %entry3756; CHECK64-NEXT: smstop sm3757; CHECK64-NEXT: .LBB35_2: // %entry3758; CHECK64-NEXT: mov x0, x83759; CHECK64-NEXT: mov w1, #45 // =0x2d3760; CHECK64-NEXT: bl memset3761; CHECK64-NEXT: tbz w20, #0, .LBB35_43762; CHECK64-NEXT: // %bb.3: // %entry3763; CHECK64-NEXT: smstart sm3764; CHECK64-NEXT: .LBB35_4: // %entry3765; CHECK64-NEXT: mov w0, #22647 // =0x58773766; CHECK64-NEXT: sub x8, x29, #643767; CHECK64-NEXT: movk w0, #59491, lsl #163768; CHECK64-NEXT: addvl sp, x8, #-183769; CHECK64-NEXT: ldr z23, [sp] // 16-byte Folded Reload3770; CHECK64-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload3771; CHECK64-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload3772; CHECK64-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload3773; CHECK64-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload3774; CHECK64-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload3775; CHECK64-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload3776; CHECK64-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload3777; CHECK64-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload3778; CHECK64-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload3779; CHECK64-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload3780; CHECK64-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload3781; CHECK64-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload3782; CHECK64-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload3783; CHECK64-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload3784; CHECK64-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload3785; CHECK64-NEXT: addvl sp, x29, #-23786; CHECK64-NEXT: .cfi_restore z83787; CHECK64-NEXT: .cfi_restore z93788; CHECK64-NEXT: .cfi_restore z103789; CHECK64-NEXT: .cfi_restore z113790; CHECK64-NEXT: .cfi_restore z123791; CHECK64-NEXT: .cfi_restore z133792; CHECK64-NEXT: .cfi_restore z143793; CHECK64-NEXT: .cfi_restore z153794; CHECK64-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload3795; CHECK64-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload3796; CHECK64-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload3797; CHECK64-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload3798; CHECK64-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload3799; CHECK64-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload3800; CHECK64-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload3801; CHECK64-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload3802; CHECK64-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload3803; CHECK64-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload3804; CHECK64-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload3805; CHECK64-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload3806; CHECK64-NEXT: mov sp, x293807; CHECK64-NEXT: .cfi_def_cfa wsp, 643808; CHECK64-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload3809; CHECK64-NEXT: ldr x28, [sp, #24] // 8-byte Reload3810; CHECK64-NEXT: ldp x27, x26, [sp, #32] // 16-byte Folded Reload3811; CHECK64-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload3812; CHECK64-NEXT: .cfi_def_cfa_offset 03813; CHECK64-NEXT: .cfi_restore w193814; CHECK64-NEXT: .cfi_restore w203815; CHECK64-NEXT: .cfi_restore w263816; CHECK64-NEXT: .cfi_restore w273817; CHECK64-NEXT: .cfi_restore w283818; CHECK64-NEXT: .cfi_restore vg3819; CHECK64-NEXT: .cfi_restore w303820; CHECK64-NEXT: .cfi_restore w293821; CHECK64-NEXT: ret3822;3823; CHECK1024-NOSPLITSVE-LABEL: svecc_call_dynamic_alloca:3824; CHECK1024-NOSPLITSVE: // %bb.0: // %entry3825; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10883826; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 10883827; CHECK1024-NOSPLITSVE-NEXT: cntd x93828; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill3829; CHECK1024-NOSPLITSVE-NEXT: str x30, [sp, #1032] // 8-byte Spill3830; CHECK1024-NOSPLITSVE-NEXT: str x9, [sp, #1040] // 8-byte Spill3831; CHECK1024-NOSPLITSVE-NEXT: str x28, [sp, #1048] // 8-byte Spill3832; CHECK1024-NOSPLITSVE-NEXT: str x27, [sp, #1056] // 8-byte Spill3833; CHECK1024-NOSPLITSVE-NEXT: str x26, [sp, #1064] // 8-byte Spill3834; CHECK1024-NOSPLITSVE-NEXT: str x20, [sp, #1072] // 8-byte Spill3835; CHECK1024-NOSPLITSVE-NEXT: str x19, [sp, #1080] // 8-byte Spill3836; CHECK1024-NOSPLITSVE-NEXT: add x29, sp, #10243837; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa w29, 643838; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w19, -83839; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w20, -163840; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w26, -243841; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w27, -323842; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w28, -403843; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset vg, -483844; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w30, -563845; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -643846; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-183847; CHECK1024-NOSPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill3848; CHECK1024-NOSPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill3849; CHECK1024-NOSPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill3850; CHECK1024-NOSPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill3851; CHECK1024-NOSPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill3852; CHECK1024-NOSPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill3853; CHECK1024-NOSPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill3854; CHECK1024-NOSPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill3855; CHECK1024-NOSPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill3856; CHECK1024-NOSPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill3857; CHECK1024-NOSPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill3858; CHECK1024-NOSPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill3859; CHECK1024-NOSPLITSVE-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill3860; CHECK1024-NOSPLITSVE-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill3861; CHECK1024-NOSPLITSVE-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill3862; CHECK1024-NOSPLITSVE-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill3863; CHECK1024-NOSPLITSVE-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill3864; CHECK1024-NOSPLITSVE-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill3865; CHECK1024-NOSPLITSVE-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill3866; CHECK1024-NOSPLITSVE-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill3867; CHECK1024-NOSPLITSVE-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill3868; CHECK1024-NOSPLITSVE-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill3869; CHECK1024-NOSPLITSVE-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill3870; CHECK1024-NOSPLITSVE-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill3871; CHECK1024-NOSPLITSVE-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill3872; CHECK1024-NOSPLITSVE-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill3873; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill3874; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill3875; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * IncomingVG - 10883876; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * IncomingVG - 10883877; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * IncomingVG - 10883878; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * IncomingVG - 10883879; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * IncomingVG - 10883880; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * IncomingVG - 10883881; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * IncomingVG - 10883882; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * IncomingVG - 10883883; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10243884; CHECK1024-NOSPLITSVE-NEXT: mov x19, sp3885; CHECK1024-NOSPLITSVE-NEXT: mov w2, w13886; CHECK1024-NOSPLITSVE-NEXT: mov w8, w03887; CHECK1024-NOSPLITSVE-NEXT: bl __arm_sme_state3888; CHECK1024-NOSPLITSVE-NEXT: mov w8, w83889; CHECK1024-NOSPLITSVE-NEXT: mov x9, sp3890; CHECK1024-NOSPLITSVE-NEXT: mov x20, x03891; CHECK1024-NOSPLITSVE-NEXT: add x8, x8, #153892; CHECK1024-NOSPLITSVE-NEXT: and x8, x8, #0x1fffffff03893; CHECK1024-NOSPLITSVE-NEXT: sub x8, x9, x83894; CHECK1024-NOSPLITSVE-NEXT: mov sp, x83895; CHECK1024-NOSPLITSVE-NEXT: //APP3896; CHECK1024-NOSPLITSVE-NEXT: //NO_APP3897; CHECK1024-NOSPLITSVE-NEXT: tbz w20, #0, .LBB35_23898; CHECK1024-NOSPLITSVE-NEXT: // %bb.1: // %entry3899; CHECK1024-NOSPLITSVE-NEXT: smstop sm3900; CHECK1024-NOSPLITSVE-NEXT: .LBB35_2: // %entry3901; CHECK1024-NOSPLITSVE-NEXT: mov x0, x83902; CHECK1024-NOSPLITSVE-NEXT: mov w1, #45 // =0x2d3903; CHECK1024-NOSPLITSVE-NEXT: bl memset3904; CHECK1024-NOSPLITSVE-NEXT: tbz w20, #0, .LBB35_43905; CHECK1024-NOSPLITSVE-NEXT: // %bb.3: // %entry3906; CHECK1024-NOSPLITSVE-NEXT: smstart sm3907; CHECK1024-NOSPLITSVE-NEXT: .LBB35_4: // %entry3908; CHECK1024-NOSPLITSVE-NEXT: mov w0, #22647 // =0x58773909; CHECK1024-NOSPLITSVE-NEXT: sub x8, x29, #10243910; CHECK1024-NOSPLITSVE-NEXT: movk w0, #59491, lsl #163911; CHECK1024-NOSPLITSVE-NEXT: addvl sp, x8, #-183912; CHECK1024-NOSPLITSVE-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload3913; CHECK1024-NOSPLITSVE-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload3914; CHECK1024-NOSPLITSVE-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload3915; CHECK1024-NOSPLITSVE-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload3916; CHECK1024-NOSPLITSVE-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload3917; CHECK1024-NOSPLITSVE-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload3918; CHECK1024-NOSPLITSVE-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload3919; CHECK1024-NOSPLITSVE-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload3920; CHECK1024-NOSPLITSVE-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload3921; CHECK1024-NOSPLITSVE-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload3922; CHECK1024-NOSPLITSVE-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload3923; CHECK1024-NOSPLITSVE-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload3924; CHECK1024-NOSPLITSVE-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload3925; CHECK1024-NOSPLITSVE-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload3926; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload3927; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload3928; CHECK1024-NOSPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload3929; CHECK1024-NOSPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload3930; CHECK1024-NOSPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload3931; CHECK1024-NOSPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload3932; CHECK1024-NOSPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload3933; CHECK1024-NOSPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload3934; CHECK1024-NOSPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload3935; CHECK1024-NOSPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload3936; CHECK1024-NOSPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload3937; CHECK1024-NOSPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload3938; CHECK1024-NOSPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload3939; CHECK1024-NOSPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload3940; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z83941; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z93942; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z103943; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z113944; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z123945; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z133946; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z143947; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z153948; CHECK1024-NOSPLITSVE-NEXT: sub sp, x29, #10243949; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa wsp, 10883950; CHECK1024-NOSPLITSVE-NEXT: ldr x19, [sp, #1080] // 8-byte Reload3951; CHECK1024-NOSPLITSVE-NEXT: ldr x20, [sp, #1072] // 8-byte Reload3952; CHECK1024-NOSPLITSVE-NEXT: ldr x26, [sp, #1064] // 8-byte Reload3953; CHECK1024-NOSPLITSVE-NEXT: ldr x27, [sp, #1056] // 8-byte Reload3954; CHECK1024-NOSPLITSVE-NEXT: ldr x28, [sp, #1048] // 8-byte Reload3955; CHECK1024-NOSPLITSVE-NEXT: ldr x30, [sp, #1032] // 8-byte Reload3956; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload3957; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10883958; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 03959; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w193960; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w203961; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w263962; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w273963; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w283964; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore vg3965; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w303966; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w293967; CHECK1024-NOSPLITSVE-NEXT: ret3968;3969; CHECK1024-SPLITSVE-LABEL: svecc_call_dynamic_alloca:3970; CHECK1024-SPLITSVE: // %bb.0: // %entry3971; CHECK1024-SPLITSVE-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill3972; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 643973; CHECK1024-SPLITSVE-NEXT: cntd x93974; CHECK1024-SPLITSVE-NEXT: stp x27, x26, [sp, #32] // 16-byte Folded Spill3975; CHECK1024-SPLITSVE-NEXT: stp x9, x28, [sp, #16] // 16-byte Folded Spill3976; CHECK1024-SPLITSVE-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill3977; CHECK1024-SPLITSVE-NEXT: mov x29, sp3978; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa w29, 643979; CHECK1024-SPLITSVE-NEXT: .cfi_offset w19, -83980; CHECK1024-SPLITSVE-NEXT: .cfi_offset w20, -163981; CHECK1024-SPLITSVE-NEXT: .cfi_offset w26, -243982; CHECK1024-SPLITSVE-NEXT: .cfi_offset w27, -323983; CHECK1024-SPLITSVE-NEXT: .cfi_offset w28, -403984; CHECK1024-SPLITSVE-NEXT: .cfi_offset vg, -483985; CHECK1024-SPLITSVE-NEXT: .cfi_offset w30, -563986; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -643987; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-23988; CHECK1024-SPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill3989; CHECK1024-SPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill3990; CHECK1024-SPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill3991; CHECK1024-SPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill3992; CHECK1024-SPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill3993; CHECK1024-SPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill3994; CHECK1024-SPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill3995; CHECK1024-SPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill3996; CHECK1024-SPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill3997; CHECK1024-SPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill3998; CHECK1024-SPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill3999; CHECK1024-SPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4000; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10244001; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-164002; CHECK1024-SPLITSVE-NEXT: str z23, [sp] // 16-byte Folded Spill4003; CHECK1024-SPLITSVE-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill4004; CHECK1024-SPLITSVE-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill4005; CHECK1024-SPLITSVE-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill4006; CHECK1024-SPLITSVE-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill4007; CHECK1024-SPLITSVE-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill4008; CHECK1024-SPLITSVE-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill4009; CHECK1024-SPLITSVE-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill4010; CHECK1024-SPLITSVE-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill4011; CHECK1024-SPLITSVE-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill4012; CHECK1024-SPLITSVE-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill4013; CHECK1024-SPLITSVE-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill4014; CHECK1024-SPLITSVE-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill4015; CHECK1024-SPLITSVE-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill4016; CHECK1024-SPLITSVE-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill4017; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill4018; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 24 * IncomingVG - 10884019; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 32 * IncomingVG - 10884020; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 40 * IncomingVG - 10884021; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 48 * IncomingVG - 10884022; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 56 * IncomingVG - 10884023; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 64 * IncomingVG - 10884024; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 72 * IncomingVG - 10884025; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 80 * IncomingVG - 10884026; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10244027; CHECK1024-SPLITSVE-NEXT: mov x19, sp4028; CHECK1024-SPLITSVE-NEXT: mov w2, w14029; CHECK1024-SPLITSVE-NEXT: mov w8, w04030; CHECK1024-SPLITSVE-NEXT: bl __arm_sme_state4031; CHECK1024-SPLITSVE-NEXT: mov w8, w84032; CHECK1024-SPLITSVE-NEXT: mov x9, sp4033; CHECK1024-SPLITSVE-NEXT: mov x20, x04034; CHECK1024-SPLITSVE-NEXT: add x8, x8, #154035; CHECK1024-SPLITSVE-NEXT: and x8, x8, #0x1fffffff04036; CHECK1024-SPLITSVE-NEXT: sub x8, x9, x84037; CHECK1024-SPLITSVE-NEXT: mov sp, x84038; CHECK1024-SPLITSVE-NEXT: //APP4039; CHECK1024-SPLITSVE-NEXT: //NO_APP4040; CHECK1024-SPLITSVE-NEXT: tbz w20, #0, .LBB35_24041; CHECK1024-SPLITSVE-NEXT: // %bb.1: // %entry4042; CHECK1024-SPLITSVE-NEXT: smstop sm4043; CHECK1024-SPLITSVE-NEXT: .LBB35_2: // %entry4044; CHECK1024-SPLITSVE-NEXT: mov x0, x84045; CHECK1024-SPLITSVE-NEXT: mov w1, #45 // =0x2d4046; CHECK1024-SPLITSVE-NEXT: bl memset4047; CHECK1024-SPLITSVE-NEXT: tbz w20, #0, .LBB35_44048; CHECK1024-SPLITSVE-NEXT: // %bb.3: // %entry4049; CHECK1024-SPLITSVE-NEXT: smstart sm4050; CHECK1024-SPLITSVE-NEXT: .LBB35_4: // %entry4051; CHECK1024-SPLITSVE-NEXT: mov w0, #22647 // =0x58774052; CHECK1024-SPLITSVE-NEXT: sub x8, x29, #10244053; CHECK1024-SPLITSVE-NEXT: movk w0, #59491, lsl #164054; CHECK1024-SPLITSVE-NEXT: addvl sp, x8, #-184055; CHECK1024-SPLITSVE-NEXT: ldr z23, [sp] // 16-byte Folded Reload4056; CHECK1024-SPLITSVE-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload4057; CHECK1024-SPLITSVE-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload4058; CHECK1024-SPLITSVE-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload4059; CHECK1024-SPLITSVE-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload4060; CHECK1024-SPLITSVE-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload4061; CHECK1024-SPLITSVE-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload4062; CHECK1024-SPLITSVE-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload4063; CHECK1024-SPLITSVE-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload4064; CHECK1024-SPLITSVE-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload4065; CHECK1024-SPLITSVE-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload4066; CHECK1024-SPLITSVE-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload4067; CHECK1024-SPLITSVE-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload4068; CHECK1024-SPLITSVE-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload4069; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload4070; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload4071; CHECK1024-SPLITSVE-NEXT: addvl sp, x29, #-24072; CHECK1024-SPLITSVE-NEXT: .cfi_restore z84073; CHECK1024-SPLITSVE-NEXT: .cfi_restore z94074; CHECK1024-SPLITSVE-NEXT: .cfi_restore z104075; CHECK1024-SPLITSVE-NEXT: .cfi_restore z114076; CHECK1024-SPLITSVE-NEXT: .cfi_restore z124077; CHECK1024-SPLITSVE-NEXT: .cfi_restore z134078; CHECK1024-SPLITSVE-NEXT: .cfi_restore z144079; CHECK1024-SPLITSVE-NEXT: .cfi_restore z154080; CHECK1024-SPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4081; CHECK1024-SPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4082; CHECK1024-SPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4083; CHECK1024-SPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4084; CHECK1024-SPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4085; CHECK1024-SPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4086; CHECK1024-SPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4087; CHECK1024-SPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4088; CHECK1024-SPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4089; CHECK1024-SPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4090; CHECK1024-SPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4091; CHECK1024-SPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4092; CHECK1024-SPLITSVE-NEXT: mov sp, x294093; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa wsp, 644094; CHECK1024-SPLITSVE-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload4095; CHECK1024-SPLITSVE-NEXT: ldr x28, [sp, #24] // 8-byte Reload4096; CHECK1024-SPLITSVE-NEXT: ldp x27, x26, [sp, #32] // 16-byte Folded Reload4097; CHECK1024-SPLITSVE-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload4098; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 04099; CHECK1024-SPLITSVE-NEXT: .cfi_restore w194100; CHECK1024-SPLITSVE-NEXT: .cfi_restore w204101; CHECK1024-SPLITSVE-NEXT: .cfi_restore w264102; CHECK1024-SPLITSVE-NEXT: .cfi_restore w274103; CHECK1024-SPLITSVE-NEXT: .cfi_restore w284104; CHECK1024-SPLITSVE-NEXT: .cfi_restore vg4105; CHECK1024-SPLITSVE-NEXT: .cfi_restore w304106; CHECK1024-SPLITSVE-NEXT: .cfi_restore w294107; CHECK1024-SPLITSVE-NEXT: ret4108entry:4109 %ptr = alloca i8, i32 %P14110 tail call void asm sideeffect "", "~{x0},~{x28},~{x27},~{x3}"() #24111 %call = call ptr @memset(ptr noundef nonnull %ptr, i32 noundef 45, i32 noundef %P2)4112 ret i32 -3961424734113}4114 4115 4116define i32 @svecc_call_realign(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i8> %P3, i16 %P4) "aarch64_pstate_sm_compatible" {4117; CHECK0-LABEL: svecc_call_realign:4118; CHECK0: // %bb.0: // %entry4119; CHECK0-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill4120; CHECK0-NEXT: .cfi_def_cfa_offset 644121; CHECK0-NEXT: cntd x94122; CHECK0-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill4123; CHECK0-NEXT: str x9, [sp, #16] // 8-byte Spill4124; CHECK0-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill4125; CHECK0-NEXT: mov x29, sp4126; CHECK0-NEXT: .cfi_def_cfa w29, 644127; CHECK0-NEXT: .cfi_offset w19, -84128; CHECK0-NEXT: .cfi_offset w26, -164129; CHECK0-NEXT: .cfi_offset w27, -244130; CHECK0-NEXT: .cfi_offset w28, -324131; CHECK0-NEXT: .cfi_offset vg, -484132; CHECK0-NEXT: .cfi_offset w30, -564133; CHECK0-NEXT: .cfi_offset w29, -644134; CHECK0-NEXT: addvl sp, sp, #-184135; CHECK0-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4136; CHECK0-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4137; CHECK0-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4138; CHECK0-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4139; CHECK0-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4140; CHECK0-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4141; CHECK0-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4142; CHECK0-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4143; CHECK0-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4144; CHECK0-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4145; CHECK0-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4146; CHECK0-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4147; CHECK0-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill4148; CHECK0-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill4149; CHECK0-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill4150; CHECK0-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill4151; CHECK0-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill4152; CHECK0-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill4153; CHECK0-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill4154; CHECK0-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill4155; CHECK0-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill4156; CHECK0-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill4157; CHECK0-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill4158; CHECK0-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill4159; CHECK0-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill4160; CHECK0-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill4161; CHECK0-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill4162; CHECK0-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill4163; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d8 @ cfa - 8 * IncomingVG - 644164; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d9 @ cfa - 16 * IncomingVG - 644165; CHECK0-NEXT: .cfi_escape 0x10, 0x4a, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d10 @ cfa - 24 * IncomingVG - 644166; CHECK0-NEXT: .cfi_escape 0x10, 0x4b, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d11 @ cfa - 32 * IncomingVG - 644167; CHECK0-NEXT: .cfi_escape 0x10, 0x4c, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d12 @ cfa - 40 * IncomingVG - 644168; CHECK0-NEXT: .cfi_escape 0x10, 0x4d, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d13 @ cfa - 48 * IncomingVG - 644169; CHECK0-NEXT: .cfi_escape 0x10, 0x4e, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d14 @ cfa - 56 * IncomingVG - 644170; CHECK0-NEXT: .cfi_escape 0x10, 0x4f, 0x0c, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d15 @ cfa - 64 * IncomingVG - 644171; CHECK0-NEXT: sub x9, sp, #10244172; CHECK0-NEXT: and sp, x9, #0xffffffffffffffe04173; CHECK0-NEXT: mov w2, w14174; CHECK0-NEXT: bl __arm_sme_state4175; CHECK0-NEXT: mov x19, x04176; CHECK0-NEXT: //APP4177; CHECK0-NEXT: //NO_APP4178; CHECK0-NEXT: tbz w19, #0, .LBB36_24179; CHECK0-NEXT: // %bb.1: // %entry4180; CHECK0-NEXT: smstop sm4181; CHECK0-NEXT: .LBB36_2: // %entry4182; CHECK0-NEXT: mov x0, sp4183; CHECK0-NEXT: mov w1, #45 // =0x2d4184; CHECK0-NEXT: bl memset4185; CHECK0-NEXT: tbz w19, #0, .LBB36_44186; CHECK0-NEXT: // %bb.3: // %entry4187; CHECK0-NEXT: smstart sm4188; CHECK0-NEXT: .LBB36_4: // %entry4189; CHECK0-NEXT: mov w0, #22647 // =0x58774190; CHECK0-NEXT: movk w0, #59491, lsl #164191; CHECK0-NEXT: addvl sp, x29, #-184192; CHECK0-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload4193; CHECK0-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload4194; CHECK0-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload4195; CHECK0-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload4196; CHECK0-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload4197; CHECK0-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload4198; CHECK0-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload4199; CHECK0-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload4200; CHECK0-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload4201; CHECK0-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload4202; CHECK0-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload4203; CHECK0-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload4204; CHECK0-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload4205; CHECK0-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload4206; CHECK0-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload4207; CHECK0-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload4208; CHECK0-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4209; CHECK0-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4210; CHECK0-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4211; CHECK0-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4212; CHECK0-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4213; CHECK0-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4214; CHECK0-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4215; CHECK0-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4216; CHECK0-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4217; CHECK0-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4218; CHECK0-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4219; CHECK0-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4220; CHECK0-NEXT: .cfi_restore z84221; CHECK0-NEXT: .cfi_restore z94222; CHECK0-NEXT: .cfi_restore z104223; CHECK0-NEXT: .cfi_restore z114224; CHECK0-NEXT: .cfi_restore z124225; CHECK0-NEXT: .cfi_restore z134226; CHECK0-NEXT: .cfi_restore z144227; CHECK0-NEXT: .cfi_restore z154228; CHECK0-NEXT: mov sp, x294229; CHECK0-NEXT: .cfi_def_cfa wsp, 644230; CHECK0-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload4231; CHECK0-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload4232; CHECK0-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload4233; CHECK0-NEXT: .cfi_def_cfa_offset 04234; CHECK0-NEXT: .cfi_restore w194235; CHECK0-NEXT: .cfi_restore w264236; CHECK0-NEXT: .cfi_restore w274237; CHECK0-NEXT: .cfi_restore w284238; CHECK0-NEXT: .cfi_restore vg4239; CHECK0-NEXT: .cfi_restore w304240; CHECK0-NEXT: .cfi_restore w294241; CHECK0-NEXT: ret4242;4243; CHECK64-LABEL: svecc_call_realign:4244; CHECK64: // %bb.0: // %entry4245; CHECK64-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill4246; CHECK64-NEXT: .cfi_def_cfa_offset 644247; CHECK64-NEXT: cntd x94248; CHECK64-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill4249; CHECK64-NEXT: str x9, [sp, #16] // 8-byte Spill4250; CHECK64-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill4251; CHECK64-NEXT: mov x29, sp4252; CHECK64-NEXT: .cfi_def_cfa w29, 644253; CHECK64-NEXT: .cfi_offset w19, -84254; CHECK64-NEXT: .cfi_offset w26, -164255; CHECK64-NEXT: .cfi_offset w27, -244256; CHECK64-NEXT: .cfi_offset w28, -324257; CHECK64-NEXT: .cfi_offset vg, -484258; CHECK64-NEXT: .cfi_offset w30, -564259; CHECK64-NEXT: .cfi_offset w29, -644260; CHECK64-NEXT: addvl sp, sp, #-24261; CHECK64-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4262; CHECK64-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4263; CHECK64-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4264; CHECK64-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4265; CHECK64-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4266; CHECK64-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4267; CHECK64-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4268; CHECK64-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4269; CHECK64-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4270; CHECK64-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4271; CHECK64-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4272; CHECK64-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4273; CHECK64-NEXT: sub sp, sp, #644274; CHECK64-NEXT: addvl sp, sp, #-164275; CHECK64-NEXT: str z23, [sp] // 16-byte Folded Spill4276; CHECK64-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill4277; CHECK64-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill4278; CHECK64-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill4279; CHECK64-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill4280; CHECK64-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill4281; CHECK64-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill4282; CHECK64-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill4283; CHECK64-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill4284; CHECK64-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill4285; CHECK64-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill4286; CHECK64-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill4287; CHECK64-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill4288; CHECK64-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill4289; CHECK64-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill4290; CHECK64-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill4291; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d8 @ cfa - 24 * IncomingVG - 1284292; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d9 @ cfa - 32 * IncomingVG - 1284293; CHECK64-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d10 @ cfa - 40 * IncomingVG - 1284294; CHECK64-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d11 @ cfa - 48 * IncomingVG - 1284295; CHECK64-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d12 @ cfa - 56 * IncomingVG - 1284296; CHECK64-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d13 @ cfa - 64 * IncomingVG - 1284297; CHECK64-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d14 @ cfa - 72 * IncomingVG - 1284298; CHECK64-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d15 @ cfa - 80 * IncomingVG - 1284299; CHECK64-NEXT: sub x9, sp, #10884300; CHECK64-NEXT: and sp, x9, #0xffffffffffffffe04301; CHECK64-NEXT: mov w2, w14302; CHECK64-NEXT: bl __arm_sme_state4303; CHECK64-NEXT: mov x19, x04304; CHECK64-NEXT: //APP4305; CHECK64-NEXT: //NO_APP4306; CHECK64-NEXT: tbz w19, #0, .LBB36_24307; CHECK64-NEXT: // %bb.1: // %entry4308; CHECK64-NEXT: smstop sm4309; CHECK64-NEXT: .LBB36_2: // %entry4310; CHECK64-NEXT: mov x0, sp4311; CHECK64-NEXT: mov w1, #45 // =0x2d4312; CHECK64-NEXT: bl memset4313; CHECK64-NEXT: tbz w19, #0, .LBB36_44314; CHECK64-NEXT: // %bb.3: // %entry4315; CHECK64-NEXT: smstart sm4316; CHECK64-NEXT: .LBB36_4: // %entry4317; CHECK64-NEXT: mov w0, #22647 // =0x58774318; CHECK64-NEXT: sub x8, x29, #644319; CHECK64-NEXT: movk w0, #59491, lsl #164320; CHECK64-NEXT: addvl sp, x8, #-184321; CHECK64-NEXT: ldr z23, [sp] // 16-byte Folded Reload4322; CHECK64-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload4323; CHECK64-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload4324; CHECK64-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload4325; CHECK64-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload4326; CHECK64-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload4327; CHECK64-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload4328; CHECK64-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload4329; CHECK64-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload4330; CHECK64-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload4331; CHECK64-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload4332; CHECK64-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload4333; CHECK64-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload4334; CHECK64-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload4335; CHECK64-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload4336; CHECK64-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload4337; CHECK64-NEXT: addvl sp, x29, #-24338; CHECK64-NEXT: .cfi_restore z84339; CHECK64-NEXT: .cfi_restore z94340; CHECK64-NEXT: .cfi_restore z104341; CHECK64-NEXT: .cfi_restore z114342; CHECK64-NEXT: .cfi_restore z124343; CHECK64-NEXT: .cfi_restore z134344; CHECK64-NEXT: .cfi_restore z144345; CHECK64-NEXT: .cfi_restore z154346; CHECK64-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4347; CHECK64-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4348; CHECK64-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4349; CHECK64-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4350; CHECK64-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4351; CHECK64-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4352; CHECK64-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4353; CHECK64-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4354; CHECK64-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4355; CHECK64-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4356; CHECK64-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4357; CHECK64-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4358; CHECK64-NEXT: mov sp, x294359; CHECK64-NEXT: .cfi_def_cfa wsp, 644360; CHECK64-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload4361; CHECK64-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload4362; CHECK64-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload4363; CHECK64-NEXT: .cfi_def_cfa_offset 04364; CHECK64-NEXT: .cfi_restore w194365; CHECK64-NEXT: .cfi_restore w264366; CHECK64-NEXT: .cfi_restore w274367; CHECK64-NEXT: .cfi_restore w284368; CHECK64-NEXT: .cfi_restore vg4369; CHECK64-NEXT: .cfi_restore w304370; CHECK64-NEXT: .cfi_restore w294371; CHECK64-NEXT: ret4372;4373; CHECK1024-NOSPLITSVE-LABEL: svecc_call_realign:4374; CHECK1024-NOSPLITSVE: // %bb.0: // %entry4375; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10884376; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 10884377; CHECK1024-NOSPLITSVE-NEXT: cntd x94378; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill4379; CHECK1024-NOSPLITSVE-NEXT: str x30, [sp, #1032] // 8-byte Spill4380; CHECK1024-NOSPLITSVE-NEXT: str x9, [sp, #1040] // 8-byte Spill4381; CHECK1024-NOSPLITSVE-NEXT: str x28, [sp, #1048] // 8-byte Spill4382; CHECK1024-NOSPLITSVE-NEXT: str x27, [sp, #1056] // 8-byte Spill4383; CHECK1024-NOSPLITSVE-NEXT: str x26, [sp, #1064] // 8-byte Spill4384; CHECK1024-NOSPLITSVE-NEXT: str x19, [sp, #1072] // 8-byte Spill4385; CHECK1024-NOSPLITSVE-NEXT: add x29, sp, #10244386; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa w29, 644387; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w19, -164388; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w26, -244389; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w27, -324390; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w28, -404391; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset vg, -484392; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w30, -564393; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -644394; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-184395; CHECK1024-NOSPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4396; CHECK1024-NOSPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4397; CHECK1024-NOSPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4398; CHECK1024-NOSPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4399; CHECK1024-NOSPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4400; CHECK1024-NOSPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4401; CHECK1024-NOSPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4402; CHECK1024-NOSPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4403; CHECK1024-NOSPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4404; CHECK1024-NOSPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4405; CHECK1024-NOSPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4406; CHECK1024-NOSPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4407; CHECK1024-NOSPLITSVE-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill4408; CHECK1024-NOSPLITSVE-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill4409; CHECK1024-NOSPLITSVE-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill4410; CHECK1024-NOSPLITSVE-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill4411; CHECK1024-NOSPLITSVE-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill4412; CHECK1024-NOSPLITSVE-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill4413; CHECK1024-NOSPLITSVE-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill4414; CHECK1024-NOSPLITSVE-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill4415; CHECK1024-NOSPLITSVE-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill4416; CHECK1024-NOSPLITSVE-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill4417; CHECK1024-NOSPLITSVE-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill4418; CHECK1024-NOSPLITSVE-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill4419; CHECK1024-NOSPLITSVE-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill4420; CHECK1024-NOSPLITSVE-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill4421; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill4422; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill4423; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * IncomingVG - 10884424; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * IncomingVG - 10884425; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * IncomingVG - 10884426; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * IncomingVG - 10884427; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * IncomingVG - 10884428; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * IncomingVG - 10884429; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * IncomingVG - 10884430; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * IncomingVG - 10884431; CHECK1024-NOSPLITSVE-NEXT: sub x9, sp, #20484432; CHECK1024-NOSPLITSVE-NEXT: and sp, x9, #0xffffffffffffffe04433; CHECK1024-NOSPLITSVE-NEXT: mov w2, w14434; CHECK1024-NOSPLITSVE-NEXT: bl __arm_sme_state4435; CHECK1024-NOSPLITSVE-NEXT: mov x19, x04436; CHECK1024-NOSPLITSVE-NEXT: //APP4437; CHECK1024-NOSPLITSVE-NEXT: //NO_APP4438; CHECK1024-NOSPLITSVE-NEXT: tbz w19, #0, .LBB36_24439; CHECK1024-NOSPLITSVE-NEXT: // %bb.1: // %entry4440; CHECK1024-NOSPLITSVE-NEXT: smstop sm4441; CHECK1024-NOSPLITSVE-NEXT: .LBB36_2: // %entry4442; CHECK1024-NOSPLITSVE-NEXT: mov x0, sp4443; CHECK1024-NOSPLITSVE-NEXT: mov w1, #45 // =0x2d4444; CHECK1024-NOSPLITSVE-NEXT: bl memset4445; CHECK1024-NOSPLITSVE-NEXT: tbz w19, #0, .LBB36_44446; CHECK1024-NOSPLITSVE-NEXT: // %bb.3: // %entry4447; CHECK1024-NOSPLITSVE-NEXT: smstart sm4448; CHECK1024-NOSPLITSVE-NEXT: .LBB36_4: // %entry4449; CHECK1024-NOSPLITSVE-NEXT: mov w0, #22647 // =0x58774450; CHECK1024-NOSPLITSVE-NEXT: sub x8, x29, #10244451; CHECK1024-NOSPLITSVE-NEXT: movk w0, #59491, lsl #164452; CHECK1024-NOSPLITSVE-NEXT: addvl sp, x8, #-184453; CHECK1024-NOSPLITSVE-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload4454; CHECK1024-NOSPLITSVE-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload4455; CHECK1024-NOSPLITSVE-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload4456; CHECK1024-NOSPLITSVE-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload4457; CHECK1024-NOSPLITSVE-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload4458; CHECK1024-NOSPLITSVE-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload4459; CHECK1024-NOSPLITSVE-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload4460; CHECK1024-NOSPLITSVE-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload4461; CHECK1024-NOSPLITSVE-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload4462; CHECK1024-NOSPLITSVE-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload4463; CHECK1024-NOSPLITSVE-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload4464; CHECK1024-NOSPLITSVE-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload4465; CHECK1024-NOSPLITSVE-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload4466; CHECK1024-NOSPLITSVE-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload4467; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload4468; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload4469; CHECK1024-NOSPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4470; CHECK1024-NOSPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4471; CHECK1024-NOSPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4472; CHECK1024-NOSPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4473; CHECK1024-NOSPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4474; CHECK1024-NOSPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4475; CHECK1024-NOSPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4476; CHECK1024-NOSPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4477; CHECK1024-NOSPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4478; CHECK1024-NOSPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4479; CHECK1024-NOSPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4480; CHECK1024-NOSPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4481; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z84482; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z94483; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z104484; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z114485; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z124486; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z134487; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z144488; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore z154489; CHECK1024-NOSPLITSVE-NEXT: sub sp, x29, #10244490; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa wsp, 10884491; CHECK1024-NOSPLITSVE-NEXT: ldr x19, [sp, #1072] // 8-byte Reload4492; CHECK1024-NOSPLITSVE-NEXT: ldr x26, [sp, #1064] // 8-byte Reload4493; CHECK1024-NOSPLITSVE-NEXT: ldr x27, [sp, #1056] // 8-byte Reload4494; CHECK1024-NOSPLITSVE-NEXT: ldr x28, [sp, #1048] // 8-byte Reload4495; CHECK1024-NOSPLITSVE-NEXT: ldr x30, [sp, #1032] // 8-byte Reload4496; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload4497; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10884498; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa_offset 04499; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w194500; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w264501; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w274502; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w284503; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore vg4504; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w304505; CHECK1024-NOSPLITSVE-NEXT: .cfi_restore w294506; CHECK1024-NOSPLITSVE-NEXT: ret4507;4508; CHECK1024-SPLITSVE-LABEL: svecc_call_realign:4509; CHECK1024-SPLITSVE: // %bb.0: // %entry4510; CHECK1024-SPLITSVE-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill4511; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 644512; CHECK1024-SPLITSVE-NEXT: cntd x94513; CHECK1024-SPLITSVE-NEXT: stp x28, x27, [sp, #32] // 16-byte Folded Spill4514; CHECK1024-SPLITSVE-NEXT: str x9, [sp, #16] // 8-byte Spill4515; CHECK1024-SPLITSVE-NEXT: stp x26, x19, [sp, #48] // 16-byte Folded Spill4516; CHECK1024-SPLITSVE-NEXT: mov x29, sp4517; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa w29, 644518; CHECK1024-SPLITSVE-NEXT: .cfi_offset w19, -84519; CHECK1024-SPLITSVE-NEXT: .cfi_offset w26, -164520; CHECK1024-SPLITSVE-NEXT: .cfi_offset w27, -244521; CHECK1024-SPLITSVE-NEXT: .cfi_offset w28, -324522; CHECK1024-SPLITSVE-NEXT: .cfi_offset vg, -484523; CHECK1024-SPLITSVE-NEXT: .cfi_offset w30, -564524; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -644525; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-24526; CHECK1024-SPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4527; CHECK1024-SPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4528; CHECK1024-SPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4529; CHECK1024-SPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4530; CHECK1024-SPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4531; CHECK1024-SPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4532; CHECK1024-SPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4533; CHECK1024-SPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4534; CHECK1024-SPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4535; CHECK1024-SPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4536; CHECK1024-SPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4537; CHECK1024-SPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4538; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10244539; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-164540; CHECK1024-SPLITSVE-NEXT: str z23, [sp] // 16-byte Folded Spill4541; CHECK1024-SPLITSVE-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill4542; CHECK1024-SPLITSVE-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill4543; CHECK1024-SPLITSVE-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill4544; CHECK1024-SPLITSVE-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill4545; CHECK1024-SPLITSVE-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill4546; CHECK1024-SPLITSVE-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill4547; CHECK1024-SPLITSVE-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill4548; CHECK1024-SPLITSVE-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill4549; CHECK1024-SPLITSVE-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill4550; CHECK1024-SPLITSVE-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill4551; CHECK1024-SPLITSVE-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill4552; CHECK1024-SPLITSVE-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill4553; CHECK1024-SPLITSVE-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill4554; CHECK1024-SPLITSVE-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill4555; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill4556; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 24 * IncomingVG - 10884557; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 32 * IncomingVG - 10884558; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 40 * IncomingVG - 10884559; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 48 * IncomingVG - 10884560; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 56 * IncomingVG - 10884561; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0d, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 64 * IncomingVG - 10884562; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 72 * IncomingVG - 10884563; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0e, 0x12, 0x11, 0x50, 0x22, 0x06, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 80 * IncomingVG - 10884564; CHECK1024-SPLITSVE-NEXT: sub x9, sp, #20484565; CHECK1024-SPLITSVE-NEXT: and sp, x9, #0xffffffffffffffe04566; CHECK1024-SPLITSVE-NEXT: mov w2, w14567; CHECK1024-SPLITSVE-NEXT: bl __arm_sme_state4568; CHECK1024-SPLITSVE-NEXT: mov x19, x04569; CHECK1024-SPLITSVE-NEXT: //APP4570; CHECK1024-SPLITSVE-NEXT: //NO_APP4571; CHECK1024-SPLITSVE-NEXT: tbz w19, #0, .LBB36_24572; CHECK1024-SPLITSVE-NEXT: // %bb.1: // %entry4573; CHECK1024-SPLITSVE-NEXT: smstop sm4574; CHECK1024-SPLITSVE-NEXT: .LBB36_2: // %entry4575; CHECK1024-SPLITSVE-NEXT: mov x0, sp4576; CHECK1024-SPLITSVE-NEXT: mov w1, #45 // =0x2d4577; CHECK1024-SPLITSVE-NEXT: bl memset4578; CHECK1024-SPLITSVE-NEXT: tbz w19, #0, .LBB36_44579; CHECK1024-SPLITSVE-NEXT: // %bb.3: // %entry4580; CHECK1024-SPLITSVE-NEXT: smstart sm4581; CHECK1024-SPLITSVE-NEXT: .LBB36_4: // %entry4582; CHECK1024-SPLITSVE-NEXT: mov w0, #22647 // =0x58774583; CHECK1024-SPLITSVE-NEXT: sub x8, x29, #10244584; CHECK1024-SPLITSVE-NEXT: movk w0, #59491, lsl #164585; CHECK1024-SPLITSVE-NEXT: addvl sp, x8, #-184586; CHECK1024-SPLITSVE-NEXT: ldr z23, [sp] // 16-byte Folded Reload4587; CHECK1024-SPLITSVE-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload4588; CHECK1024-SPLITSVE-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload4589; CHECK1024-SPLITSVE-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload4590; CHECK1024-SPLITSVE-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload4591; CHECK1024-SPLITSVE-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload4592; CHECK1024-SPLITSVE-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload4593; CHECK1024-SPLITSVE-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload4594; CHECK1024-SPLITSVE-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload4595; CHECK1024-SPLITSVE-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload4596; CHECK1024-SPLITSVE-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload4597; CHECK1024-SPLITSVE-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload4598; CHECK1024-SPLITSVE-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload4599; CHECK1024-SPLITSVE-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload4600; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload4601; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload4602; CHECK1024-SPLITSVE-NEXT: addvl sp, x29, #-24603; CHECK1024-SPLITSVE-NEXT: .cfi_restore z84604; CHECK1024-SPLITSVE-NEXT: .cfi_restore z94605; CHECK1024-SPLITSVE-NEXT: .cfi_restore z104606; CHECK1024-SPLITSVE-NEXT: .cfi_restore z114607; CHECK1024-SPLITSVE-NEXT: .cfi_restore z124608; CHECK1024-SPLITSVE-NEXT: .cfi_restore z134609; CHECK1024-SPLITSVE-NEXT: .cfi_restore z144610; CHECK1024-SPLITSVE-NEXT: .cfi_restore z154611; CHECK1024-SPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4612; CHECK1024-SPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4613; CHECK1024-SPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4614; CHECK1024-SPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4615; CHECK1024-SPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4616; CHECK1024-SPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4617; CHECK1024-SPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4618; CHECK1024-SPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4619; CHECK1024-SPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4620; CHECK1024-SPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4621; CHECK1024-SPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4622; CHECK1024-SPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4623; CHECK1024-SPLITSVE-NEXT: mov sp, x294624; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa wsp, 644625; CHECK1024-SPLITSVE-NEXT: ldp x26, x19, [sp, #48] // 16-byte Folded Reload4626; CHECK1024-SPLITSVE-NEXT: ldp x28, x27, [sp, #32] // 16-byte Folded Reload4627; CHECK1024-SPLITSVE-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload4628; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa_offset 04629; CHECK1024-SPLITSVE-NEXT: .cfi_restore w194630; CHECK1024-SPLITSVE-NEXT: .cfi_restore w264631; CHECK1024-SPLITSVE-NEXT: .cfi_restore w274632; CHECK1024-SPLITSVE-NEXT: .cfi_restore w284633; CHECK1024-SPLITSVE-NEXT: .cfi_restore vg4634; CHECK1024-SPLITSVE-NEXT: .cfi_restore w304635; CHECK1024-SPLITSVE-NEXT: .cfi_restore w294636; CHECK1024-SPLITSVE-NEXT: ret4637entry:4638 %ptr = alloca i8, i32 1000, align 324639 tail call void asm sideeffect "", "~{x0},~{x28},~{x27},~{x3}"() #24640 %call = call ptr @memset(ptr noundef nonnull %ptr, i32 noundef 45, i32 noundef %P2)4641 ret i32 -3961424734642}4643 4644 4645define i32 @svecc_call_dynamic_and_scalable_alloca(<4 x i16> %P0, i32 %P1, i32 %P2, <vscale x 16 x i8> %P3, i16 %P4) "aarch64_pstate_sm_compatible" {4646; CHECK0-LABEL: svecc_call_dynamic_and_scalable_alloca:4647; CHECK0: // %bb.0: // %entry4648; CHECK0-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill4649; CHECK0-NEXT: str x28, [sp, #16] // 8-byte Spill4650; CHECK0-NEXT: mov x29, sp4651; CHECK0-NEXT: stp x27, x26, [sp, #32] // 16-byte Folded Spill4652; CHECK0-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill4653; CHECK0-NEXT: addvl sp, sp, #-184654; CHECK0-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4655; CHECK0-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4656; CHECK0-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4657; CHECK0-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4658; CHECK0-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4659; CHECK0-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4660; CHECK0-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4661; CHECK0-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4662; CHECK0-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4663; CHECK0-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4664; CHECK0-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4665; CHECK0-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4666; CHECK0-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill4667; CHECK0-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill4668; CHECK0-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill4669; CHECK0-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill4670; CHECK0-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill4671; CHECK0-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill4672; CHECK0-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill4673; CHECK0-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill4674; CHECK0-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill4675; CHECK0-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill4676; CHECK0-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill4677; CHECK0-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill4678; CHECK0-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill4679; CHECK0-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill4680; CHECK0-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill4681; CHECK0-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill4682; CHECK0-NEXT: sub sp, sp, #484683; CHECK0-NEXT: addvl sp, sp, #-14684; CHECK0-NEXT: mov x19, sp4685; CHECK0-NEXT: .cfi_def_cfa w29, 644686; CHECK0-NEXT: .cfi_offset w19, -84687; CHECK0-NEXT: .cfi_offset w20, -164688; CHECK0-NEXT: .cfi_offset w26, -244689; CHECK0-NEXT: .cfi_offset w27, -324690; CHECK0-NEXT: .cfi_offset w28, -484691; CHECK0-NEXT: .cfi_offset w30, -564692; CHECK0-NEXT: .cfi_offset w29, -644693; CHECK0-NEXT: .cfi_escape 0x10, 0x48, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d8 @ cfa - 8 * VG - 644694; CHECK0-NEXT: .cfi_escape 0x10, 0x49, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d9 @ cfa - 16 * VG - 644695; CHECK0-NEXT: .cfi_escape 0x10, 0x4a, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d10 @ cfa - 24 * VG - 644696; CHECK0-NEXT: .cfi_escape 0x10, 0x4b, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d11 @ cfa - 32 * VG - 644697; CHECK0-NEXT: .cfi_escape 0x10, 0x4c, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d12 @ cfa - 40 * VG - 644698; CHECK0-NEXT: .cfi_escape 0x10, 0x4d, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d13 @ cfa - 48 * VG - 644699; CHECK0-NEXT: .cfi_escape 0x10, 0x4e, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d14 @ cfa - 56 * VG - 644700; CHECK0-NEXT: .cfi_escape 0x10, 0x4f, 0x0a, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x40, 0x22 // $d15 @ cfa - 64 * VG - 644701; CHECK0-NEXT: // kill: def $w0 killed $w0 def $x04702; CHECK0-NEXT: ubfiz x8, x0, #2, #324703; CHECK0-NEXT: mov x9, sp4704; CHECK0-NEXT: add x8, x8, #154705; CHECK0-NEXT: and x8, x8, #0x7fffffff04706; CHECK0-NEXT: sub x20, x9, x84707; CHECK0-NEXT: mov sp, x204708; CHECK0-NEXT: //APP4709; CHECK0-NEXT: //NO_APP4710; CHECK0-NEXT: add x0, x19, #84711; CHECK0-NEXT: bl bar4712; CHECK0-NEXT: addvl x0, x29, #-194713; CHECK0-NEXT: bl bar4714; CHECK0-NEXT: mov x0, x204715; CHECK0-NEXT: bl bar4716; CHECK0-NEXT: mov w0, #22647 // =0x58774717; CHECK0-NEXT: movk w0, #59491, lsl #164718; CHECK0-NEXT: addvl sp, x29, #-184719; CHECK0-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload4720; CHECK0-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload4721; CHECK0-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload4722; CHECK0-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload4723; CHECK0-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload4724; CHECK0-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload4725; CHECK0-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload4726; CHECK0-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload4727; CHECK0-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload4728; CHECK0-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload4729; CHECK0-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload4730; CHECK0-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload4731; CHECK0-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload4732; CHECK0-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload4733; CHECK0-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload4734; CHECK0-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload4735; CHECK0-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4736; CHECK0-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4737; CHECK0-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4738; CHECK0-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4739; CHECK0-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4740; CHECK0-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4741; CHECK0-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4742; CHECK0-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4743; CHECK0-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4744; CHECK0-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4745; CHECK0-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4746; CHECK0-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4747; CHECK0-NEXT: mov sp, x294748; CHECK0-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload4749; CHECK0-NEXT: ldr x28, [sp, #16] // 8-byte Reload4750; CHECK0-NEXT: ldp x27, x26, [sp, #32] // 16-byte Folded Reload4751; CHECK0-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload4752; CHECK0-NEXT: ret4753;4754; CHECK64-LABEL: svecc_call_dynamic_and_scalable_alloca:4755; CHECK64: // %bb.0: // %entry4756; CHECK64-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill4757; CHECK64-NEXT: str x28, [sp, #16] // 8-byte Spill4758; CHECK64-NEXT: mov x29, sp4759; CHECK64-NEXT: stp x27, x26, [sp, #32] // 16-byte Folded Spill4760; CHECK64-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill4761; CHECK64-NEXT: addvl sp, sp, #-24762; CHECK64-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4763; CHECK64-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4764; CHECK64-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4765; CHECK64-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4766; CHECK64-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4767; CHECK64-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4768; CHECK64-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4769; CHECK64-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4770; CHECK64-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4771; CHECK64-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4772; CHECK64-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4773; CHECK64-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4774; CHECK64-NEXT: sub sp, sp, #644775; CHECK64-NEXT: addvl sp, sp, #-164776; CHECK64-NEXT: str z23, [sp] // 16-byte Folded Spill4777; CHECK64-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill4778; CHECK64-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill4779; CHECK64-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill4780; CHECK64-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill4781; CHECK64-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill4782; CHECK64-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill4783; CHECK64-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill4784; CHECK64-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill4785; CHECK64-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill4786; CHECK64-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill4787; CHECK64-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill4788; CHECK64-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill4789; CHECK64-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill4790; CHECK64-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill4791; CHECK64-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill4792; CHECK64-NEXT: sub sp, sp, #1124793; CHECK64-NEXT: addvl sp, sp, #-14794; CHECK64-NEXT: mov x19, sp4795; CHECK64-NEXT: .cfi_def_cfa w29, 644796; CHECK64-NEXT: .cfi_offset w19, -84797; CHECK64-NEXT: .cfi_offset w20, -164798; CHECK64-NEXT: .cfi_offset w26, -244799; CHECK64-NEXT: .cfi_offset w27, -324800; CHECK64-NEXT: .cfi_offset w28, -484801; CHECK64-NEXT: .cfi_offset w30, -564802; CHECK64-NEXT: .cfi_offset w29, -644803; CHECK64-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d8 @ cfa - 24 * VG - 1284804; CHECK64-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d9 @ cfa - 32 * VG - 1284805; CHECK64-NEXT: .cfi_escape 0x10, 0x4a, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d10 @ cfa - 40 * VG - 1284806; CHECK64-NEXT: .cfi_escape 0x10, 0x4b, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d11 @ cfa - 48 * VG - 1284807; CHECK64-NEXT: .cfi_escape 0x10, 0x4c, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d12 @ cfa - 56 * VG - 1284808; CHECK64-NEXT: .cfi_escape 0x10, 0x4d, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d13 @ cfa - 64 * VG - 1284809; CHECK64-NEXT: .cfi_escape 0x10, 0x4e, 0x0c, 0x92, 0x2e, 0x00, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d14 @ cfa - 72 * VG - 1284810; CHECK64-NEXT: .cfi_escape 0x10, 0x4f, 0x0c, 0x92, 0x2e, 0x00, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0x80, 0x7f, 0x22 // $d15 @ cfa - 80 * VG - 1284811; CHECK64-NEXT: // kill: def $w0 killed $w0 def $x04812; CHECK64-NEXT: ubfiz x8, x0, #2, #324813; CHECK64-NEXT: mov x9, sp4814; CHECK64-NEXT: add x8, x8, #154815; CHECK64-NEXT: and x8, x8, #0x7fffffff04816; CHECK64-NEXT: sub x20, x9, x84817; CHECK64-NEXT: mov sp, x204818; CHECK64-NEXT: //APP4819; CHECK64-NEXT: //NO_APP4820; CHECK64-NEXT: add x0, x19, #84821; CHECK64-NEXT: bl bar4822; CHECK64-NEXT: sub x0, x29, #644823; CHECK64-NEXT: addvl x0, x0, #-194824; CHECK64-NEXT: bl bar4825; CHECK64-NEXT: mov x0, x204826; CHECK64-NEXT: bl bar4827; CHECK64-NEXT: mov w0, #22647 // =0x58774828; CHECK64-NEXT: sub x8, x29, #644829; CHECK64-NEXT: movk w0, #59491, lsl #164830; CHECK64-NEXT: addvl sp, x8, #-184831; CHECK64-NEXT: ldr z23, [sp] // 16-byte Folded Reload4832; CHECK64-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload4833; CHECK64-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload4834; CHECK64-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload4835; CHECK64-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload4836; CHECK64-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload4837; CHECK64-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload4838; CHECK64-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload4839; CHECK64-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload4840; CHECK64-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload4841; CHECK64-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload4842; CHECK64-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload4843; CHECK64-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload4844; CHECK64-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload4845; CHECK64-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload4846; CHECK64-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload4847; CHECK64-NEXT: addvl sp, x29, #-24848; CHECK64-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4849; CHECK64-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4850; CHECK64-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4851; CHECK64-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4852; CHECK64-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4853; CHECK64-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4854; CHECK64-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4855; CHECK64-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4856; CHECK64-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4857; CHECK64-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4858; CHECK64-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4859; CHECK64-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4860; CHECK64-NEXT: mov sp, x294861; CHECK64-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload4862; CHECK64-NEXT: ldr x28, [sp, #16] // 8-byte Reload4863; CHECK64-NEXT: ldp x27, x26, [sp, #32] // 16-byte Folded Reload4864; CHECK64-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload4865; CHECK64-NEXT: ret4866;4867; CHECK1024-NOSPLITSVE-LABEL: svecc_call_dynamic_and_scalable_alloca:4868; CHECK1024-NOSPLITSVE: // %bb.0: // %entry4869; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10884870; CHECK1024-NOSPLITSVE-NEXT: str x29, [sp, #1024] // 8-byte Spill4871; CHECK1024-NOSPLITSVE-NEXT: add x29, sp, #10244872; CHECK1024-NOSPLITSVE-NEXT: str x30, [sp, #1032] // 8-byte Spill4873; CHECK1024-NOSPLITSVE-NEXT: str x28, [sp, #1040] // 8-byte Spill4874; CHECK1024-NOSPLITSVE-NEXT: str x27, [sp, #1048] // 8-byte Spill4875; CHECK1024-NOSPLITSVE-NEXT: str x26, [sp, #1056] // 8-byte Spill4876; CHECK1024-NOSPLITSVE-NEXT: str x20, [sp, #1064] // 8-byte Spill4877; CHECK1024-NOSPLITSVE-NEXT: str x19, [sp, #1072] // 8-byte Spill4878; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-184879; CHECK1024-NOSPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4880; CHECK1024-NOSPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4881; CHECK1024-NOSPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4882; CHECK1024-NOSPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4883; CHECK1024-NOSPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4884; CHECK1024-NOSPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4885; CHECK1024-NOSPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill4886; CHECK1024-NOSPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill4887; CHECK1024-NOSPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill4888; CHECK1024-NOSPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill4889; CHECK1024-NOSPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill4890; CHECK1024-NOSPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill4891; CHECK1024-NOSPLITSVE-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill4892; CHECK1024-NOSPLITSVE-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill4893; CHECK1024-NOSPLITSVE-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill4894; CHECK1024-NOSPLITSVE-NEXT: str z20, [sp, #5, mul vl] // 16-byte Folded Spill4895; CHECK1024-NOSPLITSVE-NEXT: str z19, [sp, #6, mul vl] // 16-byte Folded Spill4896; CHECK1024-NOSPLITSVE-NEXT: str z18, [sp, #7, mul vl] // 16-byte Folded Spill4897; CHECK1024-NOSPLITSVE-NEXT: str z17, [sp, #8, mul vl] // 16-byte Folded Spill4898; CHECK1024-NOSPLITSVE-NEXT: str z16, [sp, #9, mul vl] // 16-byte Folded Spill4899; CHECK1024-NOSPLITSVE-NEXT: str z15, [sp, #10, mul vl] // 16-byte Folded Spill4900; CHECK1024-NOSPLITSVE-NEXT: str z14, [sp, #11, mul vl] // 16-byte Folded Spill4901; CHECK1024-NOSPLITSVE-NEXT: str z13, [sp, #12, mul vl] // 16-byte Folded Spill4902; CHECK1024-NOSPLITSVE-NEXT: str z12, [sp, #13, mul vl] // 16-byte Folded Spill4903; CHECK1024-NOSPLITSVE-NEXT: str z11, [sp, #14, mul vl] // 16-byte Folded Spill4904; CHECK1024-NOSPLITSVE-NEXT: str z10, [sp, #15, mul vl] // 16-byte Folded Spill4905; CHECK1024-NOSPLITSVE-NEXT: str z9, [sp, #16, mul vl] // 16-byte Folded Spill4906; CHECK1024-NOSPLITSVE-NEXT: str z8, [sp, #17, mul vl] // 16-byte Folded Spill4907; CHECK1024-NOSPLITSVE-NEXT: sub sp, sp, #10724908; CHECK1024-NOSPLITSVE-NEXT: addvl sp, sp, #-14909; CHECK1024-NOSPLITSVE-NEXT: mov x19, sp4910; CHECK1024-NOSPLITSVE-NEXT: .cfi_def_cfa w29, 644911; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w19, -164912; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w20, -244913; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w26, -324914; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w27, -404915; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w28, -484916; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w30, -564917; CHECK1024-NOSPLITSVE-NEXT: .cfi_offset w29, -644918; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x78, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 8 * VG - 10884919; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x70, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 16 * VG - 10884920; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 24 * VG - 10884921; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 32 * VG - 10884922; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 40 * VG - 10884923; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 48 * VG - 10884924; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 56 * VG - 10884925; CHECK1024-NOSPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 64 * VG - 10884926; CHECK1024-NOSPLITSVE-NEXT: // kill: def $w0 killed $w0 def $x04927; CHECK1024-NOSPLITSVE-NEXT: ubfiz x8, x0, #2, #324928; CHECK1024-NOSPLITSVE-NEXT: mov x9, sp4929; CHECK1024-NOSPLITSVE-NEXT: add x8, x8, #154930; CHECK1024-NOSPLITSVE-NEXT: and x8, x8, #0x7fffffff04931; CHECK1024-NOSPLITSVE-NEXT: sub x20, x9, x84932; CHECK1024-NOSPLITSVE-NEXT: mov sp, x204933; CHECK1024-NOSPLITSVE-NEXT: //APP4934; CHECK1024-NOSPLITSVE-NEXT: //NO_APP4935; CHECK1024-NOSPLITSVE-NEXT: add x0, x19, #84936; CHECK1024-NOSPLITSVE-NEXT: bl bar4937; CHECK1024-NOSPLITSVE-NEXT: sub x0, x29, #10244938; CHECK1024-NOSPLITSVE-NEXT: addvl x0, x0, #-194939; CHECK1024-NOSPLITSVE-NEXT: bl bar4940; CHECK1024-NOSPLITSVE-NEXT: mov x0, x204941; CHECK1024-NOSPLITSVE-NEXT: bl bar4942; CHECK1024-NOSPLITSVE-NEXT: mov w0, #22647 // =0x58774943; CHECK1024-NOSPLITSVE-NEXT: sub x8, x29, #10244944; CHECK1024-NOSPLITSVE-NEXT: movk w0, #59491, lsl #164945; CHECK1024-NOSPLITSVE-NEXT: addvl sp, x8, #-184946; CHECK1024-NOSPLITSVE-NEXT: ldr z23, [sp, #2, mul vl] // 16-byte Folded Reload4947; CHECK1024-NOSPLITSVE-NEXT: ldr z22, [sp, #3, mul vl] // 16-byte Folded Reload4948; CHECK1024-NOSPLITSVE-NEXT: ldr z21, [sp, #4, mul vl] // 16-byte Folded Reload4949; CHECK1024-NOSPLITSVE-NEXT: ldr z20, [sp, #5, mul vl] // 16-byte Folded Reload4950; CHECK1024-NOSPLITSVE-NEXT: ldr z19, [sp, #6, mul vl] // 16-byte Folded Reload4951; CHECK1024-NOSPLITSVE-NEXT: ldr z18, [sp, #7, mul vl] // 16-byte Folded Reload4952; CHECK1024-NOSPLITSVE-NEXT: ldr z17, [sp, #8, mul vl] // 16-byte Folded Reload4953; CHECK1024-NOSPLITSVE-NEXT: ldr z16, [sp, #9, mul vl] // 16-byte Folded Reload4954; CHECK1024-NOSPLITSVE-NEXT: ldr z15, [sp, #10, mul vl] // 16-byte Folded Reload4955; CHECK1024-NOSPLITSVE-NEXT: ldr z14, [sp, #11, mul vl] // 16-byte Folded Reload4956; CHECK1024-NOSPLITSVE-NEXT: ldr z13, [sp, #12, mul vl] // 16-byte Folded Reload4957; CHECK1024-NOSPLITSVE-NEXT: ldr z12, [sp, #13, mul vl] // 16-byte Folded Reload4958; CHECK1024-NOSPLITSVE-NEXT: ldr z11, [sp, #14, mul vl] // 16-byte Folded Reload4959; CHECK1024-NOSPLITSVE-NEXT: ldr z10, [sp, #15, mul vl] // 16-byte Folded Reload4960; CHECK1024-NOSPLITSVE-NEXT: ldr z9, [sp, #16, mul vl] // 16-byte Folded Reload4961; CHECK1024-NOSPLITSVE-NEXT: ldr z8, [sp, #17, mul vl] // 16-byte Folded Reload4962; CHECK1024-NOSPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload4963; CHECK1024-NOSPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload4964; CHECK1024-NOSPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload4965; CHECK1024-NOSPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload4966; CHECK1024-NOSPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload4967; CHECK1024-NOSPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload4968; CHECK1024-NOSPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload4969; CHECK1024-NOSPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload4970; CHECK1024-NOSPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload4971; CHECK1024-NOSPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload4972; CHECK1024-NOSPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload4973; CHECK1024-NOSPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload4974; CHECK1024-NOSPLITSVE-NEXT: sub sp, x29, #10244975; CHECK1024-NOSPLITSVE-NEXT: ldr x19, [sp, #1072] // 8-byte Reload4976; CHECK1024-NOSPLITSVE-NEXT: ldr x20, [sp, #1064] // 8-byte Reload4977; CHECK1024-NOSPLITSVE-NEXT: ldr x26, [sp, #1056] // 8-byte Reload4978; CHECK1024-NOSPLITSVE-NEXT: ldr x27, [sp, #1048] // 8-byte Reload4979; CHECK1024-NOSPLITSVE-NEXT: ldr x28, [sp, #1040] // 8-byte Reload4980; CHECK1024-NOSPLITSVE-NEXT: ldr x30, [sp, #1032] // 8-byte Reload4981; CHECK1024-NOSPLITSVE-NEXT: ldr x29, [sp, #1024] // 8-byte Reload4982; CHECK1024-NOSPLITSVE-NEXT: add sp, sp, #10884983; CHECK1024-NOSPLITSVE-NEXT: ret4984;4985; CHECK1024-SPLITSVE-LABEL: svecc_call_dynamic_and_scalable_alloca:4986; CHECK1024-SPLITSVE: // %bb.0: // %entry4987; CHECK1024-SPLITSVE-NEXT: stp x29, x30, [sp, #-64]! // 16-byte Folded Spill4988; CHECK1024-SPLITSVE-NEXT: str x28, [sp, #16] // 8-byte Spill4989; CHECK1024-SPLITSVE-NEXT: mov x29, sp4990; CHECK1024-SPLITSVE-NEXT: stp x27, x26, [sp, #32] // 16-byte Folded Spill4991; CHECK1024-SPLITSVE-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill4992; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-24993; CHECK1024-SPLITSVE-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill4994; CHECK1024-SPLITSVE-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill4995; CHECK1024-SPLITSVE-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill4996; CHECK1024-SPLITSVE-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill4997; CHECK1024-SPLITSVE-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill4998; CHECK1024-SPLITSVE-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill4999; CHECK1024-SPLITSVE-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill5000; CHECK1024-SPLITSVE-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill5001; CHECK1024-SPLITSVE-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill5002; CHECK1024-SPLITSVE-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill5003; CHECK1024-SPLITSVE-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill5004; CHECK1024-SPLITSVE-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill5005; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10245006; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-165007; CHECK1024-SPLITSVE-NEXT: str z23, [sp] // 16-byte Folded Spill5008; CHECK1024-SPLITSVE-NEXT: str z22, [sp, #1, mul vl] // 16-byte Folded Spill5009; CHECK1024-SPLITSVE-NEXT: str z21, [sp, #2, mul vl] // 16-byte Folded Spill5010; CHECK1024-SPLITSVE-NEXT: str z20, [sp, #3, mul vl] // 16-byte Folded Spill5011; CHECK1024-SPLITSVE-NEXT: str z19, [sp, #4, mul vl] // 16-byte Folded Spill5012; CHECK1024-SPLITSVE-NEXT: str z18, [sp, #5, mul vl] // 16-byte Folded Spill5013; CHECK1024-SPLITSVE-NEXT: str z17, [sp, #6, mul vl] // 16-byte Folded Spill5014; CHECK1024-SPLITSVE-NEXT: str z16, [sp, #7, mul vl] // 16-byte Folded Spill5015; CHECK1024-SPLITSVE-NEXT: str z15, [sp, #8, mul vl] // 16-byte Folded Spill5016; CHECK1024-SPLITSVE-NEXT: str z14, [sp, #9, mul vl] // 16-byte Folded Spill5017; CHECK1024-SPLITSVE-NEXT: str z13, [sp, #10, mul vl] // 16-byte Folded Spill5018; CHECK1024-SPLITSVE-NEXT: str z12, [sp, #11, mul vl] // 16-byte Folded Spill5019; CHECK1024-SPLITSVE-NEXT: str z11, [sp, #12, mul vl] // 16-byte Folded Spill5020; CHECK1024-SPLITSVE-NEXT: str z10, [sp, #13, mul vl] // 16-byte Folded Spill5021; CHECK1024-SPLITSVE-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill5022; CHECK1024-SPLITSVE-NEXT: str z8, [sp, #15, mul vl] // 16-byte Folded Spill5023; CHECK1024-SPLITSVE-NEXT: sub sp, sp, #10725024; CHECK1024-SPLITSVE-NEXT: addvl sp, sp, #-15025; CHECK1024-SPLITSVE-NEXT: mov x19, sp5026; CHECK1024-SPLITSVE-NEXT: .cfi_def_cfa w29, 645027; CHECK1024-SPLITSVE-NEXT: .cfi_offset w19, -85028; CHECK1024-SPLITSVE-NEXT: .cfi_offset w20, -165029; CHECK1024-SPLITSVE-NEXT: .cfi_offset w26, -245030; CHECK1024-SPLITSVE-NEXT: .cfi_offset w27, -325031; CHECK1024-SPLITSVE-NEXT: .cfi_offset w28, -485032; CHECK1024-SPLITSVE-NEXT: .cfi_offset w30, -565033; CHECK1024-SPLITSVE-NEXT: .cfi_offset w29, -645034; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x48, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x68, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d8 @ cfa - 24 * VG - 10885035; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x49, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x60, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d9 @ cfa - 32 * VG - 10885036; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4a, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x58, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d10 @ cfa - 40 * VG - 10885037; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4b, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x50, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d11 @ cfa - 48 * VG - 10885038; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4c, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x48, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d12 @ cfa - 56 * VG - 10885039; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4d, 0x0b, 0x92, 0x2e, 0x00, 0x11, 0x40, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d13 @ cfa - 64 * VG - 10885040; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4e, 0x0c, 0x92, 0x2e, 0x00, 0x11, 0xb8, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d14 @ cfa - 72 * VG - 10885041; CHECK1024-SPLITSVE-NEXT: .cfi_escape 0x10, 0x4f, 0x0c, 0x92, 0x2e, 0x00, 0x11, 0xb0, 0x7f, 0x1e, 0x22, 0x11, 0xc0, 0x77, 0x22 // $d15 @ cfa - 80 * VG - 10885042; CHECK1024-SPLITSVE-NEXT: // kill: def $w0 killed $w0 def $x05043; CHECK1024-SPLITSVE-NEXT: ubfiz x8, x0, #2, #325044; CHECK1024-SPLITSVE-NEXT: mov x9, sp5045; CHECK1024-SPLITSVE-NEXT: add x8, x8, #155046; CHECK1024-SPLITSVE-NEXT: and x8, x8, #0x7fffffff05047; CHECK1024-SPLITSVE-NEXT: sub x20, x9, x85048; CHECK1024-SPLITSVE-NEXT: mov sp, x205049; CHECK1024-SPLITSVE-NEXT: //APP5050; CHECK1024-SPLITSVE-NEXT: //NO_APP5051; CHECK1024-SPLITSVE-NEXT: add x0, x19, #85052; CHECK1024-SPLITSVE-NEXT: bl bar5053; CHECK1024-SPLITSVE-NEXT: sub x0, x29, #10245054; CHECK1024-SPLITSVE-NEXT: addvl x0, x0, #-195055; CHECK1024-SPLITSVE-NEXT: bl bar5056; CHECK1024-SPLITSVE-NEXT: mov x0, x205057; CHECK1024-SPLITSVE-NEXT: bl bar5058; CHECK1024-SPLITSVE-NEXT: mov w0, #22647 // =0x58775059; CHECK1024-SPLITSVE-NEXT: sub x8, x29, #10245060; CHECK1024-SPLITSVE-NEXT: movk w0, #59491, lsl #165061; CHECK1024-SPLITSVE-NEXT: addvl sp, x8, #-185062; CHECK1024-SPLITSVE-NEXT: ldr z23, [sp] // 16-byte Folded Reload5063; CHECK1024-SPLITSVE-NEXT: ldr z22, [sp, #1, mul vl] // 16-byte Folded Reload5064; CHECK1024-SPLITSVE-NEXT: ldr z21, [sp, #2, mul vl] // 16-byte Folded Reload5065; CHECK1024-SPLITSVE-NEXT: ldr z20, [sp, #3, mul vl] // 16-byte Folded Reload5066; CHECK1024-SPLITSVE-NEXT: ldr z19, [sp, #4, mul vl] // 16-byte Folded Reload5067; CHECK1024-SPLITSVE-NEXT: ldr z18, [sp, #5, mul vl] // 16-byte Folded Reload5068; CHECK1024-SPLITSVE-NEXT: ldr z17, [sp, #6, mul vl] // 16-byte Folded Reload5069; CHECK1024-SPLITSVE-NEXT: ldr z16, [sp, #7, mul vl] // 16-byte Folded Reload5070; CHECK1024-SPLITSVE-NEXT: ldr z15, [sp, #8, mul vl] // 16-byte Folded Reload5071; CHECK1024-SPLITSVE-NEXT: ldr z14, [sp, #9, mul vl] // 16-byte Folded Reload5072; CHECK1024-SPLITSVE-NEXT: ldr z13, [sp, #10, mul vl] // 16-byte Folded Reload5073; CHECK1024-SPLITSVE-NEXT: ldr z12, [sp, #11, mul vl] // 16-byte Folded Reload5074; CHECK1024-SPLITSVE-NEXT: ldr z11, [sp, #12, mul vl] // 16-byte Folded Reload5075; CHECK1024-SPLITSVE-NEXT: ldr z10, [sp, #13, mul vl] // 16-byte Folded Reload5076; CHECK1024-SPLITSVE-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload5077; CHECK1024-SPLITSVE-NEXT: ldr z8, [sp, #15, mul vl] // 16-byte Folded Reload5078; CHECK1024-SPLITSVE-NEXT: addvl sp, x29, #-25079; CHECK1024-SPLITSVE-NEXT: ldr p15, [sp, #4, mul vl] // 2-byte Reload5080; CHECK1024-SPLITSVE-NEXT: ldr p14, [sp, #5, mul vl] // 2-byte Reload5081; CHECK1024-SPLITSVE-NEXT: ldr p13, [sp, #6, mul vl] // 2-byte Reload5082; CHECK1024-SPLITSVE-NEXT: ldr p12, [sp, #7, mul vl] // 2-byte Reload5083; CHECK1024-SPLITSVE-NEXT: ldr p11, [sp, #8, mul vl] // 2-byte Reload5084; CHECK1024-SPLITSVE-NEXT: ldr p10, [sp, #9, mul vl] // 2-byte Reload5085; CHECK1024-SPLITSVE-NEXT: ldr p9, [sp, #10, mul vl] // 2-byte Reload5086; CHECK1024-SPLITSVE-NEXT: ldr p8, [sp, #11, mul vl] // 2-byte Reload5087; CHECK1024-SPLITSVE-NEXT: ldr p7, [sp, #12, mul vl] // 2-byte Reload5088; CHECK1024-SPLITSVE-NEXT: ldr p6, [sp, #13, mul vl] // 2-byte Reload5089; CHECK1024-SPLITSVE-NEXT: ldr p5, [sp, #14, mul vl] // 2-byte Reload5090; CHECK1024-SPLITSVE-NEXT: ldr p4, [sp, #15, mul vl] // 2-byte Reload5091; CHECK1024-SPLITSVE-NEXT: mov sp, x295092; CHECK1024-SPLITSVE-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload5093; CHECK1024-SPLITSVE-NEXT: ldr x28, [sp, #16] // 8-byte Reload5094; CHECK1024-SPLITSVE-NEXT: ldp x27, x26, [sp, #32] // 16-byte Folded Reload5095; CHECK1024-SPLITSVE-NEXT: ldp x29, x30, [sp], #64 // 16-byte Folded Reload5096; CHECK1024-SPLITSVE-NEXT: ret5097entry:5098 %a = alloca i32, i32 105099 %b = alloca <vscale x 4 x i32>5100 %c = alloca i32, i32 %P1, align 45101 tail call void asm sideeffect "", "~{x0},~{x28},~{x27},~{x3}"() #25102 call void @bar(ptr noundef nonnull %a)5103 call void @bar(ptr noundef nonnull %b)5104 call void @bar(ptr noundef nonnull %c)5105 ret i32 -3961424735106}5107