brintos

brintos / llvm-project-archived public Read only

0
0
Text · 69.0 KiB · dea7781 Raw
1613 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=aarch64-windows-msvc -mattr=+sve < %s | FileCheck %s3; RUN: llc -mtriple=aarch64-windows-msvc -mattr=+sve -filetype=obj < %s -o /dev/null4 5declare void @g()6define i32 @f(<vscale x 2 x i64> %x) {7; CHECK-LABEL: f:8; CHECK:       .seh_proc f9; CHECK-NEXT:  // %bb.0:10; CHECK-NEXT:    addvl sp, sp, #-1811; CHECK-NEXT:    .seh_allocz 1812; CHECK-NEXT:    str p4, [sp] // 2-byte Spill13; CHECK-NEXT:    .seh_save_preg p4, 014; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill15; CHECK-NEXT:    .seh_save_preg p5, 116; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill17; CHECK-NEXT:    .seh_save_preg p6, 218; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill19; CHECK-NEXT:    .seh_save_preg p7, 320; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill21; CHECK-NEXT:    .seh_save_preg p8, 422; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill23; CHECK-NEXT:    .seh_save_preg p9, 524; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill25; CHECK-NEXT:    .seh_save_preg p10, 626; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill27; CHECK-NEXT:    .seh_save_preg p11, 728; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill29; CHECK-NEXT:    .seh_save_preg p12, 830; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill31; CHECK-NEXT:    .seh_save_preg p13, 932; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill33; CHECK-NEXT:    .seh_save_preg p14, 1034; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill35; CHECK-NEXT:    .seh_save_preg p15, 1136; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill37; CHECK-NEXT:    .seh_save_zreg z8, 238; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill39; CHECK-NEXT:    .seh_save_zreg z9, 340; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill41; CHECK-NEXT:    .seh_save_zreg z10, 442; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill43; CHECK-NEXT:    .seh_save_zreg z11, 544; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill45; CHECK-NEXT:    .seh_save_zreg z12, 646; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill47; CHECK-NEXT:    .seh_save_zreg z13, 748; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill49; CHECK-NEXT:    .seh_save_zreg z14, 850; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill51; CHECK-NEXT:    .seh_save_zreg z15, 952; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill53; CHECK-NEXT:    .seh_save_zreg z16, 1054; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill55; CHECK-NEXT:    .seh_save_zreg z17, 1156; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill57; CHECK-NEXT:    .seh_save_zreg z18, 1258; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill59; CHECK-NEXT:    .seh_save_zreg z19, 1360; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill61; CHECK-NEXT:    .seh_save_zreg z20, 1462; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill63; CHECK-NEXT:    .seh_save_zreg z21, 1564; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill65; CHECK-NEXT:    .seh_save_zreg z22, 1666; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill67; CHECK-NEXT:    .seh_save_zreg z23, 1768; CHECK-NEXT:    str x28, [sp, #-16]! // 8-byte Folded Spill69; CHECK-NEXT:    .seh_save_reg_x x28, 1670; CHECK-NEXT:    str x30, [sp, #8] // 8-byte Spill71; CHECK-NEXT:    .seh_save_reg x30, 872; CHECK-NEXT:    .seh_endprologue73; CHECK-NEXT:    bl g74; CHECK-NEXT:    mov w0, #3 // =0x375; CHECK-NEXT:    .seh_startepilogue76; CHECK-NEXT:    ldr x30, [sp, #8] // 8-byte Reload77; CHECK-NEXT:    .seh_save_reg x30, 878; CHECK-NEXT:    ldr x28, [sp], #16 // 8-byte Folded Reload79; CHECK-NEXT:    .seh_save_reg_x x28, 1680; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload81; CHECK-NEXT:    .seh_save_zreg z8, 282; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload83; CHECK-NEXT:    .seh_save_zreg z9, 384; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload85; CHECK-NEXT:    .seh_save_zreg z10, 486; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload87; CHECK-NEXT:    .seh_save_zreg z11, 588; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload89; CHECK-NEXT:    .seh_save_zreg z12, 690; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload91; CHECK-NEXT:    .seh_save_zreg z13, 792; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload93; CHECK-NEXT:    .seh_save_zreg z14, 894; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload95; CHECK-NEXT:    .seh_save_zreg z15, 996; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload97; CHECK-NEXT:    .seh_save_zreg z16, 1098; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload99; CHECK-NEXT:    .seh_save_zreg z17, 11100; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload101; CHECK-NEXT:    .seh_save_zreg z18, 12102; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload103; CHECK-NEXT:    .seh_save_zreg z19, 13104; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload105; CHECK-NEXT:    .seh_save_zreg z20, 14106; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload107; CHECK-NEXT:    .seh_save_zreg z21, 15108; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload109; CHECK-NEXT:    .seh_save_zreg z22, 16110; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload111; CHECK-NEXT:    .seh_save_zreg z23, 17112; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload113; CHECK-NEXT:    .seh_save_preg p4, 0114; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload115; CHECK-NEXT:    .seh_save_preg p5, 1116; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload117; CHECK-NEXT:    .seh_save_preg p6, 2118; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload119; CHECK-NEXT:    .seh_save_preg p7, 3120; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload121; CHECK-NEXT:    .seh_save_preg p8, 4122; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload123; CHECK-NEXT:    .seh_save_preg p9, 5124; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload125; CHECK-NEXT:    .seh_save_preg p10, 6126; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload127; CHECK-NEXT:    .seh_save_preg p11, 7128; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload129; CHECK-NEXT:    .seh_save_preg p12, 8130; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload131; CHECK-NEXT:    .seh_save_preg p13, 9132; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload133; CHECK-NEXT:    .seh_save_preg p14, 10134; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload135; CHECK-NEXT:    .seh_save_preg p15, 11136; CHECK-NEXT:    addvl sp, sp, #18137; CHECK-NEXT:    .seh_allocz 18138; CHECK-NEXT:    .seh_endepilogue139; CHECK-NEXT:    ret140; CHECK-NEXT:    .seh_endfunclet141; CHECK-NEXT:    .seh_endproc142  call void @g()143  ret i32 3144}145 146declare void @g2(ptr,ptr)147define void @f2(i64 %n, <vscale x 2 x i64> %x) {148; CHECK-LABEL: f2:149; CHECK:       .seh_proc f2150; CHECK-NEXT:  // %bb.0:151; CHECK-NEXT:    addvl sp, sp, #-18152; CHECK-NEXT:    .seh_allocz 18153; CHECK-NEXT:    str p4, [sp] // 2-byte Spill154; CHECK-NEXT:    .seh_save_preg p4, 0155; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill156; CHECK-NEXT:    .seh_save_preg p5, 1157; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill158; CHECK-NEXT:    .seh_save_preg p6, 2159; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill160; CHECK-NEXT:    .seh_save_preg p7, 3161; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill162; CHECK-NEXT:    .seh_save_preg p8, 4163; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill164; CHECK-NEXT:    .seh_save_preg p9, 5165; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill166; CHECK-NEXT:    .seh_save_preg p10, 6167; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill168; CHECK-NEXT:    .seh_save_preg p11, 7169; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill170; CHECK-NEXT:    .seh_save_preg p12, 8171; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill172; CHECK-NEXT:    .seh_save_preg p13, 9173; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill174; CHECK-NEXT:    .seh_save_preg p14, 10175; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill176; CHECK-NEXT:    .seh_save_preg p15, 11177; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill178; CHECK-NEXT:    .seh_save_zreg z8, 2179; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill180; CHECK-NEXT:    .seh_save_zreg z9, 3181; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill182; CHECK-NEXT:    .seh_save_zreg z10, 4183; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill184; CHECK-NEXT:    .seh_save_zreg z11, 5185; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill186; CHECK-NEXT:    .seh_save_zreg z12, 6187; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill188; CHECK-NEXT:    .seh_save_zreg z13, 7189; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill190; CHECK-NEXT:    .seh_save_zreg z14, 8191; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill192; CHECK-NEXT:    .seh_save_zreg z15, 9193; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill194; CHECK-NEXT:    .seh_save_zreg z16, 10195; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill196; CHECK-NEXT:    .seh_save_zreg z17, 11197; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill198; CHECK-NEXT:    .seh_save_zreg z18, 12199; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill200; CHECK-NEXT:    .seh_save_zreg z19, 13201; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill202; CHECK-NEXT:    .seh_save_zreg z20, 14203; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill204; CHECK-NEXT:    .seh_save_zreg z21, 15205; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill206; CHECK-NEXT:    .seh_save_zreg z22, 16207; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill208; CHECK-NEXT:    .seh_save_zreg z23, 17209; CHECK-NEXT:    str x19, [sp, #-32]! // 8-byte Folded Spill210; CHECK-NEXT:    .seh_save_reg_x x19, 32211; CHECK-NEXT:    str x28, [sp, #8] // 8-byte Spill212; CHECK-NEXT:    .seh_save_reg x28, 8213; CHECK-NEXT:    stp x29, x30, [sp, #16] // 16-byte Folded Spill214; CHECK-NEXT:    .seh_save_fplr 16215; CHECK-NEXT:    add x29, sp, #16216; CHECK-NEXT:    .seh_add_fp 16217; CHECK-NEXT:    .seh_endprologue218; CHECK-NEXT:    sub sp, sp, #32219; CHECK-NEXT:    lsl x8, x0, #3220; CHECK-NEXT:    mov x19, sp221; CHECK-NEXT:    add x8, x8, #15222; CHECK-NEXT:    lsr x15, x8, #4223; CHECK-NEXT:    bl __chkstk224; CHECK-NEXT:    sub x1, sp, x15, lsl #4225; CHECK-NEXT:    mov sp, x1226; CHECK-NEXT:    add x0, x19, #0227; CHECK-NEXT:    bl g2228; CHECK-NEXT:    .seh_startepilogue229; CHECK-NEXT:    sub sp, x29, #16230; CHECK-NEXT:    .seh_add_fp 16231; CHECK-NEXT:    ldp x29, x30, [sp, #16] // 16-byte Folded Reload232; CHECK-NEXT:    .seh_save_fplr 16233; CHECK-NEXT:    ldr x28, [sp, #8] // 8-byte Reload234; CHECK-NEXT:    .seh_save_reg x28, 8235; CHECK-NEXT:    ldr x19, [sp], #32 // 8-byte Folded Reload236; CHECK-NEXT:    .seh_save_reg_x x19, 32237; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload238; CHECK-NEXT:    .seh_save_zreg z8, 2239; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload240; CHECK-NEXT:    .seh_save_zreg z9, 3241; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload242; CHECK-NEXT:    .seh_save_zreg z10, 4243; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload244; CHECK-NEXT:    .seh_save_zreg z11, 5245; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload246; CHECK-NEXT:    .seh_save_zreg z12, 6247; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload248; CHECK-NEXT:    .seh_save_zreg z13, 7249; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload250; CHECK-NEXT:    .seh_save_zreg z14, 8251; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload252; CHECK-NEXT:    .seh_save_zreg z15, 9253; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload254; CHECK-NEXT:    .seh_save_zreg z16, 10255; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload256; CHECK-NEXT:    .seh_save_zreg z17, 11257; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload258; CHECK-NEXT:    .seh_save_zreg z18, 12259; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload260; CHECK-NEXT:    .seh_save_zreg z19, 13261; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload262; CHECK-NEXT:    .seh_save_zreg z20, 14263; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload264; CHECK-NEXT:    .seh_save_zreg z21, 15265; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload266; CHECK-NEXT:    .seh_save_zreg z22, 16267; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload268; CHECK-NEXT:    .seh_save_zreg z23, 17269; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload270; CHECK-NEXT:    .seh_save_preg p4, 0271; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload272; CHECK-NEXT:    .seh_save_preg p5, 1273; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload274; CHECK-NEXT:    .seh_save_preg p6, 2275; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload276; CHECK-NEXT:    .seh_save_preg p7, 3277; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload278; CHECK-NEXT:    .seh_save_preg p8, 4279; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload280; CHECK-NEXT:    .seh_save_preg p9, 5281; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload282; CHECK-NEXT:    .seh_save_preg p10, 6283; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload284; CHECK-NEXT:    .seh_save_preg p11, 7285; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload286; CHECK-NEXT:    .seh_save_preg p12, 8287; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload288; CHECK-NEXT:    .seh_save_preg p13, 9289; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload290; CHECK-NEXT:    .seh_save_preg p14, 10291; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload292; CHECK-NEXT:    .seh_save_preg p15, 11293; CHECK-NEXT:    addvl sp, sp, #18294; CHECK-NEXT:    .seh_allocz 18295; CHECK-NEXT:    .seh_endepilogue296; CHECK-NEXT:    ret297; CHECK-NEXT:    .seh_endfunclet298; CHECK-NEXT:    .seh_endproc299  %p1 = alloca [4 x i64]300  %p2 = alloca i64, i64 %n301  call void @g2(ptr %p1, ptr %p2)302  ret void303}304 305declare void @g3(ptr,ptr)306define void @f3(i64 %n, <vscale x 2 x i64> %x) {307; CHECK-LABEL: f3:308; CHECK:       .seh_proc f3309; CHECK-NEXT:  // %bb.0:310; CHECK-NEXT:    addvl sp, sp, #-18311; CHECK-NEXT:    .seh_allocz 18312; CHECK-NEXT:    str p4, [sp] // 2-byte Spill313; CHECK-NEXT:    .seh_save_preg p4, 0314; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill315; CHECK-NEXT:    .seh_save_preg p5, 1316; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill317; CHECK-NEXT:    .seh_save_preg p6, 2318; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill319; CHECK-NEXT:    .seh_save_preg p7, 3320; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill321; CHECK-NEXT:    .seh_save_preg p8, 4322; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill323; CHECK-NEXT:    .seh_save_preg p9, 5324; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill325; CHECK-NEXT:    .seh_save_preg p10, 6326; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill327; CHECK-NEXT:    .seh_save_preg p11, 7328; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill329; CHECK-NEXT:    .seh_save_preg p12, 8330; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill331; CHECK-NEXT:    .seh_save_preg p13, 9332; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill333; CHECK-NEXT:    .seh_save_preg p14, 10334; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill335; CHECK-NEXT:    .seh_save_preg p15, 11336; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill337; CHECK-NEXT:    .seh_save_zreg z8, 2338; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill339; CHECK-NEXT:    .seh_save_zreg z9, 3340; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill341; CHECK-NEXT:    .seh_save_zreg z10, 4342; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill343; CHECK-NEXT:    .seh_save_zreg z11, 5344; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill345; CHECK-NEXT:    .seh_save_zreg z12, 6346; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill347; CHECK-NEXT:    .seh_save_zreg z13, 7348; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill349; CHECK-NEXT:    .seh_save_zreg z14, 8350; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill351; CHECK-NEXT:    .seh_save_zreg z15, 9352; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill353; CHECK-NEXT:    .seh_save_zreg z16, 10354; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill355; CHECK-NEXT:    .seh_save_zreg z17, 11356; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill357; CHECK-NEXT:    .seh_save_zreg z18, 12358; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill359; CHECK-NEXT:    .seh_save_zreg z19, 13360; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill361; CHECK-NEXT:    .seh_save_zreg z20, 14362; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill363; CHECK-NEXT:    .seh_save_zreg z21, 15364; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill365; CHECK-NEXT:    .seh_save_zreg z22, 16366; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill367; CHECK-NEXT:    .seh_save_zreg z23, 17368; CHECK-NEXT:    str x28, [sp, #-16]! // 8-byte Folded Spill369; CHECK-NEXT:    .seh_save_reg_x x28, 16370; CHECK-NEXT:    str x30, [sp, #8] // 8-byte Spill371; CHECK-NEXT:    .seh_save_reg x30, 8372; CHECK-NEXT:    sub sp, sp, #16373; CHECK-NEXT:    .seh_stackalloc 16374; CHECK-NEXT:    .seh_endprologue375; CHECK-NEXT:    add x0, sp, #8376; CHECK-NEXT:    mov x1, sp377; CHECK-NEXT:    bl g3378; CHECK-NEXT:    .seh_startepilogue379; CHECK-NEXT:    add sp, sp, #16380; CHECK-NEXT:    .seh_stackalloc 16381; CHECK-NEXT:    ldr x30, [sp, #8] // 8-byte Reload382; CHECK-NEXT:    .seh_save_reg x30, 8383; CHECK-NEXT:    ldr x28, [sp], #16 // 8-byte Folded Reload384; CHECK-NEXT:    .seh_save_reg_x x28, 16385; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload386; CHECK-NEXT:    .seh_save_zreg z8, 2387; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload388; CHECK-NEXT:    .seh_save_zreg z9, 3389; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload390; CHECK-NEXT:    .seh_save_zreg z10, 4391; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload392; CHECK-NEXT:    .seh_save_zreg z11, 5393; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload394; CHECK-NEXT:    .seh_save_zreg z12, 6395; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload396; CHECK-NEXT:    .seh_save_zreg z13, 7397; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload398; CHECK-NEXT:    .seh_save_zreg z14, 8399; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload400; CHECK-NEXT:    .seh_save_zreg z15, 9401; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload402; CHECK-NEXT:    .seh_save_zreg z16, 10403; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload404; CHECK-NEXT:    .seh_save_zreg z17, 11405; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload406; CHECK-NEXT:    .seh_save_zreg z18, 12407; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload408; CHECK-NEXT:    .seh_save_zreg z19, 13409; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload410; CHECK-NEXT:    .seh_save_zreg z20, 14411; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload412; CHECK-NEXT:    .seh_save_zreg z21, 15413; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload414; CHECK-NEXT:    .seh_save_zreg z22, 16415; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload416; CHECK-NEXT:    .seh_save_zreg z23, 17417; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload418; CHECK-NEXT:    .seh_save_preg p4, 0419; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload420; CHECK-NEXT:    .seh_save_preg p5, 1421; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload422; CHECK-NEXT:    .seh_save_preg p6, 2423; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload424; CHECK-NEXT:    .seh_save_preg p7, 3425; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload426; CHECK-NEXT:    .seh_save_preg p8, 4427; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload428; CHECK-NEXT:    .seh_save_preg p9, 5429; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload430; CHECK-NEXT:    .seh_save_preg p10, 6431; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload432; CHECK-NEXT:    .seh_save_preg p11, 7433; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload434; CHECK-NEXT:    .seh_save_preg p12, 8435; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload436; CHECK-NEXT:    .seh_save_preg p13, 9437; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload438; CHECK-NEXT:    .seh_save_preg p14, 10439; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload440; CHECK-NEXT:    .seh_save_preg p15, 11441; CHECK-NEXT:    addvl sp, sp, #18442; CHECK-NEXT:    .seh_allocz 18443; CHECK-NEXT:    .seh_endepilogue444; CHECK-NEXT:    ret445; CHECK-NEXT:    .seh_endfunclet446; CHECK-NEXT:    .seh_endproc447  %p1 = alloca i64448  %p2 = alloca i64449  call void @g3(ptr %p1, ptr %p2)450  ret void451}452 453declare void @g4(ptr,ptr)454define void @f4(i64 %n, <vscale x 2 x i64> %x) {455; CHECK-LABEL: f4:456; CHECK:       .seh_proc f4457; CHECK-NEXT:  // %bb.0:458; CHECK-NEXT:    addvl sp, sp, #-18459; CHECK-NEXT:    .seh_allocz 18460; CHECK-NEXT:    str p4, [sp] // 2-byte Spill461; CHECK-NEXT:    .seh_save_preg p4, 0462; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill463; CHECK-NEXT:    .seh_save_preg p5, 1464; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill465; CHECK-NEXT:    .seh_save_preg p6, 2466; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill467; CHECK-NEXT:    .seh_save_preg p7, 3468; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill469; CHECK-NEXT:    .seh_save_preg p8, 4470; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill471; CHECK-NEXT:    .seh_save_preg p9, 5472; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill473; CHECK-NEXT:    .seh_save_preg p10, 6474; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill475; CHECK-NEXT:    .seh_save_preg p11, 7476; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill477; CHECK-NEXT:    .seh_save_preg p12, 8478; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill479; CHECK-NEXT:    .seh_save_preg p13, 9480; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill481; CHECK-NEXT:    .seh_save_preg p14, 10482; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill483; CHECK-NEXT:    .seh_save_preg p15, 11484; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill485; CHECK-NEXT:    .seh_save_zreg z8, 2486; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill487; CHECK-NEXT:    .seh_save_zreg z9, 3488; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill489; CHECK-NEXT:    .seh_save_zreg z10, 4490; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill491; CHECK-NEXT:    .seh_save_zreg z11, 5492; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill493; CHECK-NEXT:    .seh_save_zreg z12, 6494; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill495; CHECK-NEXT:    .seh_save_zreg z13, 7496; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill497; CHECK-NEXT:    .seh_save_zreg z14, 8498; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill499; CHECK-NEXT:    .seh_save_zreg z15, 9500; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill501; CHECK-NEXT:    .seh_save_zreg z16, 10502; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill503; CHECK-NEXT:    .seh_save_zreg z17, 11504; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill505; CHECK-NEXT:    .seh_save_zreg z18, 12506; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill507; CHECK-NEXT:    .seh_save_zreg z19, 13508; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill509; CHECK-NEXT:    .seh_save_zreg z20, 14510; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill511; CHECK-NEXT:    .seh_save_zreg z21, 15512; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill513; CHECK-NEXT:    .seh_save_zreg z22, 16514; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill515; CHECK-NEXT:    .seh_save_zreg z23, 17516; CHECK-NEXT:    str x28, [sp, #-16]! // 8-byte Folded Spill517; CHECK-NEXT:    .seh_save_reg_x x28, 16518; CHECK-NEXT:    str x30, [sp, #8] // 8-byte Spill519; CHECK-NEXT:    .seh_save_reg x30, 8520; CHECK-NEXT:    sub sp, sp, #16521; CHECK-NEXT:    .seh_stackalloc 16522; CHECK-NEXT:    addvl sp, sp, #-1523; CHECK-NEXT:    .seh_allocz 1524; CHECK-NEXT:    .seh_endprologue525; CHECK-NEXT:    mov x0, sp526; CHECK-NEXT:    add x1, sp, #16527; CHECK-NEXT:    bl g4528; CHECK-NEXT:    .seh_startepilogue529; CHECK-NEXT:    addvl sp, sp, #1530; CHECK-NEXT:    .seh_allocz 1531; CHECK-NEXT:    add sp, sp, #16532; CHECK-NEXT:    .seh_stackalloc 16533; CHECK-NEXT:    ldr x30, [sp, #8] // 8-byte Reload534; CHECK-NEXT:    .seh_save_reg x30, 8535; CHECK-NEXT:    ldr x28, [sp], #16 // 8-byte Folded Reload536; CHECK-NEXT:    .seh_save_reg_x x28, 16537; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload538; CHECK-NEXT:    .seh_save_zreg z8, 2539; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload540; CHECK-NEXT:    .seh_save_zreg z9, 3541; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload542; CHECK-NEXT:    .seh_save_zreg z10, 4543; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload544; CHECK-NEXT:    .seh_save_zreg z11, 5545; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload546; CHECK-NEXT:    .seh_save_zreg z12, 6547; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload548; CHECK-NEXT:    .seh_save_zreg z13, 7549; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload550; CHECK-NEXT:    .seh_save_zreg z14, 8551; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload552; CHECK-NEXT:    .seh_save_zreg z15, 9553; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload554; CHECK-NEXT:    .seh_save_zreg z16, 10555; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload556; CHECK-NEXT:    .seh_save_zreg z17, 11557; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload558; CHECK-NEXT:    .seh_save_zreg z18, 12559; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload560; CHECK-NEXT:    .seh_save_zreg z19, 13561; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload562; CHECK-NEXT:    .seh_save_zreg z20, 14563; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload564; CHECK-NEXT:    .seh_save_zreg z21, 15565; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload566; CHECK-NEXT:    .seh_save_zreg z22, 16567; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload568; CHECK-NEXT:    .seh_save_zreg z23, 17569; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload570; CHECK-NEXT:    .seh_save_preg p4, 0571; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload572; CHECK-NEXT:    .seh_save_preg p5, 1573; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload574; CHECK-NEXT:    .seh_save_preg p6, 2575; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload576; CHECK-NEXT:    .seh_save_preg p7, 3577; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload578; CHECK-NEXT:    .seh_save_preg p8, 4579; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload580; CHECK-NEXT:    .seh_save_preg p9, 5581; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload582; CHECK-NEXT:    .seh_save_preg p10, 6583; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload584; CHECK-NEXT:    .seh_save_preg p11, 7585; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload586; CHECK-NEXT:    .seh_save_preg p12, 8587; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload588; CHECK-NEXT:    .seh_save_preg p13, 9589; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload590; CHECK-NEXT:    .seh_save_preg p14, 10591; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload592; CHECK-NEXT:    .seh_save_preg p15, 11593; CHECK-NEXT:    addvl sp, sp, #18594; CHECK-NEXT:    .seh_allocz 18595; CHECK-NEXT:    .seh_endepilogue596; CHECK-NEXT:    ret597; CHECK-NEXT:    .seh_endfunclet598; CHECK-NEXT:    .seh_endproc599  %p1 = alloca [2 x i64]600  %p2 = alloca <vscale x 2 x i64>601  call void @g4(ptr %p1, ptr %p2)602  ret void603}604 605declare void @g5(ptr,ptr,ptr)606define void @f5(i64 %n, <vscale x 2 x i64> %x) {607; CHECK-LABEL: f5:608; CHECK:       .seh_proc f5609; CHECK-NEXT:  // %bb.0:610; CHECK-NEXT:    addvl sp, sp, #-18611; CHECK-NEXT:    .seh_allocz 18612; CHECK-NEXT:    str p4, [sp] // 2-byte Spill613; CHECK-NEXT:    .seh_save_preg p4, 0614; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill615; CHECK-NEXT:    .seh_save_preg p5, 1616; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill617; CHECK-NEXT:    .seh_save_preg p6, 2618; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill619; CHECK-NEXT:    .seh_save_preg p7, 3620; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill621; CHECK-NEXT:    .seh_save_preg p8, 4622; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill623; CHECK-NEXT:    .seh_save_preg p9, 5624; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill625; CHECK-NEXT:    .seh_save_preg p10, 6626; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill627; CHECK-NEXT:    .seh_save_preg p11, 7628; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill629; CHECK-NEXT:    .seh_save_preg p12, 8630; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill631; CHECK-NEXT:    .seh_save_preg p13, 9632; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill633; CHECK-NEXT:    .seh_save_preg p14, 10634; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill635; CHECK-NEXT:    .seh_save_preg p15, 11636; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill637; CHECK-NEXT:    .seh_save_zreg z8, 2638; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill639; CHECK-NEXT:    .seh_save_zreg z9, 3640; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill641; CHECK-NEXT:    .seh_save_zreg z10, 4642; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill643; CHECK-NEXT:    .seh_save_zreg z11, 5644; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill645; CHECK-NEXT:    .seh_save_zreg z12, 6646; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill647; CHECK-NEXT:    .seh_save_zreg z13, 7648; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill649; CHECK-NEXT:    .seh_save_zreg z14, 8650; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill651; CHECK-NEXT:    .seh_save_zreg z15, 9652; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill653; CHECK-NEXT:    .seh_save_zreg z16, 10654; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill655; CHECK-NEXT:    .seh_save_zreg z17, 11656; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill657; CHECK-NEXT:    .seh_save_zreg z18, 12658; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill659; CHECK-NEXT:    .seh_save_zreg z19, 13660; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill661; CHECK-NEXT:    .seh_save_zreg z20, 14662; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill663; CHECK-NEXT:    .seh_save_zreg z21, 15664; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill665; CHECK-NEXT:    .seh_save_zreg z22, 16666; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill667; CHECK-NEXT:    .seh_save_zreg z23, 17668; CHECK-NEXT:    str x19, [sp, #-32]! // 8-byte Folded Spill669; CHECK-NEXT:    .seh_save_reg_x x19, 32670; CHECK-NEXT:    str x28, [sp, #8] // 8-byte Spill671; CHECK-NEXT:    .seh_save_reg x28, 8672; CHECK-NEXT:    stp x29, x30, [sp, #16] // 16-byte Folded Spill673; CHECK-NEXT:    .seh_save_fplr 16674; CHECK-NEXT:    add x29, sp, #16675; CHECK-NEXT:    .seh_add_fp 16676; CHECK-NEXT:    .seh_endprologue677; CHECK-NEXT:    sub sp, sp, #64678; CHECK-NEXT:    addvl sp, sp, #-1679; CHECK-NEXT:    lsl x8, x0, #3680; CHECK-NEXT:    mov x19, sp681; CHECK-NEXT:    add x8, x8, #15682; CHECK-NEXT:    lsr x15, x8, #4683; CHECK-NEXT:    bl __chkstk684; CHECK-NEXT:    sub x2, sp, x15, lsl #4685; CHECK-NEXT:    mov sp, x2686; CHECK-NEXT:    sub x1, x29, #16687; CHECK-NEXT:    add x0, x19, #0688; CHECK-NEXT:    addvl x1, x1, #-1689; CHECK-NEXT:    bl g5690; CHECK-NEXT:    .seh_startepilogue691; CHECK-NEXT:    sub sp, x29, #16692; CHECK-NEXT:    .seh_add_fp 16693; CHECK-NEXT:    ldp x29, x30, [sp, #16] // 16-byte Folded Reload694; CHECK-NEXT:    .seh_save_fplr 16695; CHECK-NEXT:    ldr x28, [sp, #8] // 8-byte Reload696; CHECK-NEXT:    .seh_save_reg x28, 8697; CHECK-NEXT:    ldr x19, [sp], #32 // 8-byte Folded Reload698; CHECK-NEXT:    .seh_save_reg_x x19, 32699; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload700; CHECK-NEXT:    .seh_save_zreg z8, 2701; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload702; CHECK-NEXT:    .seh_save_zreg z9, 3703; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload704; CHECK-NEXT:    .seh_save_zreg z10, 4705; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload706; CHECK-NEXT:    .seh_save_zreg z11, 5707; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload708; CHECK-NEXT:    .seh_save_zreg z12, 6709; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload710; CHECK-NEXT:    .seh_save_zreg z13, 7711; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload712; CHECK-NEXT:    .seh_save_zreg z14, 8713; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload714; CHECK-NEXT:    .seh_save_zreg z15, 9715; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload716; CHECK-NEXT:    .seh_save_zreg z16, 10717; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload718; CHECK-NEXT:    .seh_save_zreg z17, 11719; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload720; CHECK-NEXT:    .seh_save_zreg z18, 12721; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload722; CHECK-NEXT:    .seh_save_zreg z19, 13723; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload724; CHECK-NEXT:    .seh_save_zreg z20, 14725; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload726; CHECK-NEXT:    .seh_save_zreg z21, 15727; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload728; CHECK-NEXT:    .seh_save_zreg z22, 16729; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload730; CHECK-NEXT:    .seh_save_zreg z23, 17731; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload732; CHECK-NEXT:    .seh_save_preg p4, 0733; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload734; CHECK-NEXT:    .seh_save_preg p5, 1735; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload736; CHECK-NEXT:    .seh_save_preg p6, 2737; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload738; CHECK-NEXT:    .seh_save_preg p7, 3739; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload740; CHECK-NEXT:    .seh_save_preg p8, 4741; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload742; CHECK-NEXT:    .seh_save_preg p9, 5743; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload744; CHECK-NEXT:    .seh_save_preg p10, 6745; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload746; CHECK-NEXT:    .seh_save_preg p11, 7747; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload748; CHECK-NEXT:    .seh_save_preg p12, 8749; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload750; CHECK-NEXT:    .seh_save_preg p13, 9751; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload752; CHECK-NEXT:    .seh_save_preg p14, 10753; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload754; CHECK-NEXT:    .seh_save_preg p15, 11755; CHECK-NEXT:    addvl sp, sp, #18756; CHECK-NEXT:    .seh_allocz 18757; CHECK-NEXT:    .seh_endepilogue758; CHECK-NEXT:    ret759; CHECK-NEXT:    .seh_endfunclet760; CHECK-NEXT:    .seh_endproc761  %p1 = alloca [8 x i64]762  %p2 = alloca <vscale x 2 x i64>763  %p3 = alloca i64, i64 %n764  call void @g5(ptr %p1, ptr %p2, ptr %p3)765  ret void766}767 768declare dso_local i32 @__CxxFrameHandler3(...)769declare void @g6(ptr, i64)770declare void @cleanup()771define void @f6(<vscale x 2 x i64> %x, [8 x i64] %pad, i64 %n9) personality ptr @__CxxFrameHandler3 {772; CHECK-LABEL: f6:773; CHECK:       .Lfunc_begin0:774; CHECK-NEXT:  .seh_proc f6775; CHECK-NEXT:    .seh_handler __CxxFrameHandler3, @unwind, @except776; CHECK-NEXT:  // %bb.0:777; CHECK-NEXT:    sub sp, sp, #16778; CHECK-NEXT:    .seh_stackalloc 16779; CHECK-NEXT:    addvl sp, sp, #-18780; CHECK-NEXT:    .seh_allocz 18781; CHECK-NEXT:    str p4, [sp] // 2-byte Spill782; CHECK-NEXT:    .seh_save_preg p4, 0783; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill784; CHECK-NEXT:    .seh_save_preg p5, 1785; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill786; CHECK-NEXT:    .seh_save_preg p6, 2787; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill788; CHECK-NEXT:    .seh_save_preg p7, 3789; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill790; CHECK-NEXT:    .seh_save_preg p8, 4791; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill792; CHECK-NEXT:    .seh_save_preg p9, 5793; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill794; CHECK-NEXT:    .seh_save_preg p10, 6795; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill796; CHECK-NEXT:    .seh_save_preg p11, 7797; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill798; CHECK-NEXT:    .seh_save_preg p12, 8799; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill800; CHECK-NEXT:    .seh_save_preg p13, 9801; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill802; CHECK-NEXT:    .seh_save_preg p14, 10803; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill804; CHECK-NEXT:    .seh_save_preg p15, 11805; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill806; CHECK-NEXT:    .seh_save_zreg z8, 2807; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill808; CHECK-NEXT:    .seh_save_zreg z9, 3809; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill810; CHECK-NEXT:    .seh_save_zreg z10, 4811; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill812; CHECK-NEXT:    .seh_save_zreg z11, 5813; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill814; CHECK-NEXT:    .seh_save_zreg z12, 6815; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill816; CHECK-NEXT:    .seh_save_zreg z13, 7817; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill818; CHECK-NEXT:    .seh_save_zreg z14, 8819; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill820; CHECK-NEXT:    .seh_save_zreg z15, 9821; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill822; CHECK-NEXT:    .seh_save_zreg z16, 10823; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill824; CHECK-NEXT:    .seh_save_zreg z17, 11825; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill826; CHECK-NEXT:    .seh_save_zreg z18, 12827; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill828; CHECK-NEXT:    .seh_save_zreg z19, 13829; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill830; CHECK-NEXT:    .seh_save_zreg z20, 14831; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill832; CHECK-NEXT:    .seh_save_zreg z21, 15833; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill834; CHECK-NEXT:    .seh_save_zreg z22, 16835; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill836; CHECK-NEXT:    .seh_save_zreg z23, 17837; CHECK-NEXT:    str x19, [sp, #-32]! // 8-byte Folded Spill838; CHECK-NEXT:    .seh_save_reg_x x19, 32839; CHECK-NEXT:    str x28, [sp, #8] // 8-byte Spill840; CHECK-NEXT:    .seh_save_reg x28, 8841; CHECK-NEXT:    stp x29, x30, [sp, #16] // 16-byte Folded Spill842; CHECK-NEXT:    .seh_save_fplr 16843; CHECK-NEXT:    add x29, sp, #16844; CHECK-NEXT:    .seh_add_fp 16845; CHECK-NEXT:    .seh_endprologue846; CHECK-NEXT:    sub sp, sp, #64847; CHECK-NEXT:    mov x0, #-2 // =0xfffffffffffffffe848; CHECK-NEXT:    addvl x8, x29, #18849; CHECK-NEXT:    mov x19, sp850; CHECK-NEXT:    stur x0, [x8, #16]851; CHECK-NEXT:    addvl x8, x29, #18852; CHECK-NEXT:    ldr x1, [x8, #32]853; CHECK-NEXT:  .Ltmp0: // EH_LABEL854; CHECK-NEXT:    add x0, x19, #0855; CHECK-NEXT:    bl g6856; CHECK-NEXT:  .Ltmp1: // EH_LABEL857; CHECK-NEXT:  // %bb.1: // %invoke.cont858; CHECK-NEXT:    .seh_startepilogue859; CHECK-NEXT:    add sp, sp, #64860; CHECK-NEXT:    .seh_stackalloc 64861; CHECK-NEXT:    ldp x29, x30, [sp, #16] // 16-byte Folded Reload862; CHECK-NEXT:    .seh_save_fplr 16863; CHECK-NEXT:    ldr x28, [sp, #8] // 8-byte Reload864; CHECK-NEXT:    .seh_save_reg x28, 8865; CHECK-NEXT:    ldr x19, [sp], #32 // 8-byte Folded Reload866; CHECK-NEXT:    .seh_save_reg_x x19, 32867; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload868; CHECK-NEXT:    .seh_save_zreg z8, 2869; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload870; CHECK-NEXT:    .seh_save_zreg z9, 3871; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload872; CHECK-NEXT:    .seh_save_zreg z10, 4873; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload874; CHECK-NEXT:    .seh_save_zreg z11, 5875; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload876; CHECK-NEXT:    .seh_save_zreg z12, 6877; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload878; CHECK-NEXT:    .seh_save_zreg z13, 7879; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload880; CHECK-NEXT:    .seh_save_zreg z14, 8881; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload882; CHECK-NEXT:    .seh_save_zreg z15, 9883; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload884; CHECK-NEXT:    .seh_save_zreg z16, 10885; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload886; CHECK-NEXT:    .seh_save_zreg z17, 11887; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload888; CHECK-NEXT:    .seh_save_zreg z18, 12889; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload890; CHECK-NEXT:    .seh_save_zreg z19, 13891; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload892; CHECK-NEXT:    .seh_save_zreg z20, 14893; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload894; CHECK-NEXT:    .seh_save_zreg z21, 15895; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload896; CHECK-NEXT:    .seh_save_zreg z22, 16897; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload898; CHECK-NEXT:    .seh_save_zreg z23, 17899; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload900; CHECK-NEXT:    .seh_save_preg p4, 0901; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload902; CHECK-NEXT:    .seh_save_preg p5, 1903; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload904; CHECK-NEXT:    .seh_save_preg p6, 2905; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload906; CHECK-NEXT:    .seh_save_preg p7, 3907; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload908; CHECK-NEXT:    .seh_save_preg p8, 4909; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload910; CHECK-NEXT:    .seh_save_preg p9, 5911; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload912; CHECK-NEXT:    .seh_save_preg p10, 6913; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload914; CHECK-NEXT:    .seh_save_preg p11, 7915; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload916; CHECK-NEXT:    .seh_save_preg p12, 8917; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload918; CHECK-NEXT:    .seh_save_preg p13, 9919; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload920; CHECK-NEXT:    .seh_save_preg p14, 10921; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload922; CHECK-NEXT:    .seh_save_preg p15, 11923; CHECK-NEXT:    addvl sp, sp, #18924; CHECK-NEXT:    .seh_allocz 18925; CHECK-NEXT:    add sp, sp, #16926; CHECK-NEXT:    .seh_stackalloc 16927; CHECK-NEXT:    .seh_endepilogue928; CHECK-NEXT:    ret929; CHECK-NEXT:    .seh_endfunclet930; CHECK-NEXT:    .seh_handlerdata931; CHECK-NEXT:    .word $cppxdata$f6@IMGREL932; CHECK-NEXT:    .text933; CHECK-NEXT:    .seh_endproc934; CHECK-NEXT:    .def "?dtor$2@?0?f6@4HA";935; CHECK-NEXT:    .scl 3;936; CHECK-NEXT:    .type 32;937; CHECK-NEXT:    .endef938; CHECK-NEXT:    .p2align 2939; CHECK-NEXT:  "?dtor$2@?0?f6@4HA":940; CHECK-NEXT:  .seh_proc "?dtor$2@?0?f6@4HA"941; CHECK-NEXT:  .LBB5_2: // %ehcleanup942; CHECK-NEXT:    addvl sp, sp, #-18943; CHECK-NEXT:    .seh_allocz 18944; CHECK-NEXT:    str p4, [sp] // 2-byte Spill945; CHECK-NEXT:    .seh_save_preg p4, 0946; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill947; CHECK-NEXT:    .seh_save_preg p5, 1948; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill949; CHECK-NEXT:    .seh_save_preg p6, 2950; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill951; CHECK-NEXT:    .seh_save_preg p7, 3952; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill953; CHECK-NEXT:    .seh_save_preg p8, 4954; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill955; CHECK-NEXT:    .seh_save_preg p9, 5956; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill957; CHECK-NEXT:    .seh_save_preg p10, 6958; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill959; CHECK-NEXT:    .seh_save_preg p11, 7960; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill961; CHECK-NEXT:    .seh_save_preg p12, 8962; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill963; CHECK-NEXT:    .seh_save_preg p13, 9964; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill965; CHECK-NEXT:    .seh_save_preg p14, 10966; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill967; CHECK-NEXT:    .seh_save_preg p15, 11968; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill969; CHECK-NEXT:    .seh_save_zreg z8, 2970; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill971; CHECK-NEXT:    .seh_save_zreg z9, 3972; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill973; CHECK-NEXT:    .seh_save_zreg z10, 4974; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill975; CHECK-NEXT:    .seh_save_zreg z11, 5976; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill977; CHECK-NEXT:    .seh_save_zreg z12, 6978; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill979; CHECK-NEXT:    .seh_save_zreg z13, 7980; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill981; CHECK-NEXT:    .seh_save_zreg z14, 8982; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill983; CHECK-NEXT:    .seh_save_zreg z15, 9984; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill985; CHECK-NEXT:    .seh_save_zreg z16, 10986; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill987; CHECK-NEXT:    .seh_save_zreg z17, 11988; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill989; CHECK-NEXT:    .seh_save_zreg z18, 12990; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill991; CHECK-NEXT:    .seh_save_zreg z19, 13992; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill993; CHECK-NEXT:    .seh_save_zreg z20, 14994; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill995; CHECK-NEXT:    .seh_save_zreg z21, 15996; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill997; CHECK-NEXT:    .seh_save_zreg z22, 16998; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill999; CHECK-NEXT:    .seh_save_zreg z23, 171000; CHECK-NEXT:    str x19, [sp, #-32]! // 8-byte Folded Spill1001; CHECK-NEXT:    .seh_save_reg_x x19, 321002; CHECK-NEXT:    str x28, [sp, #8] // 8-byte Spill1003; CHECK-NEXT:    .seh_save_reg x28, 81004; CHECK-NEXT:    stp x29, x30, [sp, #16] // 16-byte Folded Spill1005; CHECK-NEXT:    .seh_save_fplr 161006; CHECK-NEXT:    .seh_endprologue1007; CHECK-NEXT:    bl cleanup1008; CHECK-NEXT:    .seh_startepilogue1009; CHECK-NEXT:    ldp x29, x30, [sp, #16] // 16-byte Folded Reload1010; CHECK-NEXT:    .seh_save_fplr 161011; CHECK-NEXT:    ldr x28, [sp, #8] // 8-byte Reload1012; CHECK-NEXT:    .seh_save_reg x28, 81013; CHECK-NEXT:    ldr x19, [sp], #32 // 8-byte Folded Reload1014; CHECK-NEXT:    .seh_save_reg_x x19, 321015; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload1016; CHECK-NEXT:    .seh_save_zreg z8, 21017; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload1018; CHECK-NEXT:    .seh_save_zreg z9, 31019; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload1020; CHECK-NEXT:    .seh_save_zreg z10, 41021; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload1022; CHECK-NEXT:    .seh_save_zreg z11, 51023; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload1024; CHECK-NEXT:    .seh_save_zreg z12, 61025; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload1026; CHECK-NEXT:    .seh_save_zreg z13, 71027; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload1028; CHECK-NEXT:    .seh_save_zreg z14, 81029; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1030; CHECK-NEXT:    .seh_save_zreg z15, 91031; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload1032; CHECK-NEXT:    .seh_save_zreg z16, 101033; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload1034; CHECK-NEXT:    .seh_save_zreg z17, 111035; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload1036; CHECK-NEXT:    .seh_save_zreg z18, 121037; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload1038; CHECK-NEXT:    .seh_save_zreg z19, 131039; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload1040; CHECK-NEXT:    .seh_save_zreg z20, 141041; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload1042; CHECK-NEXT:    .seh_save_zreg z21, 151043; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload1044; CHECK-NEXT:    .seh_save_zreg z22, 161045; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload1046; CHECK-NEXT:    .seh_save_zreg z23, 171047; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload1048; CHECK-NEXT:    .seh_save_preg p4, 01049; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload1050; CHECK-NEXT:    .seh_save_preg p5, 11051; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload1052; CHECK-NEXT:    .seh_save_preg p6, 21053; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload1054; CHECK-NEXT:    .seh_save_preg p7, 31055; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload1056; CHECK-NEXT:    .seh_save_preg p8, 41057; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload1058; CHECK-NEXT:    .seh_save_preg p9, 51059; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload1060; CHECK-NEXT:    .seh_save_preg p10, 61061; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload1062; CHECK-NEXT:    .seh_save_preg p11, 71063; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload1064; CHECK-NEXT:    .seh_save_preg p12, 81065; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload1066; CHECK-NEXT:    .seh_save_preg p13, 91067; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload1068; CHECK-NEXT:    .seh_save_preg p14, 101069; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload1070; CHECK-NEXT:    .seh_save_preg p15, 111071; CHECK-NEXT:    addvl sp, sp, #181072; CHECK-NEXT:    .seh_allocz 181073; CHECK-NEXT:    .seh_endepilogue1074; CHECK-NEXT:    ret1075  %p1 = alloca [8 x i64]1076  invoke void @g6(ptr %p1, i64 %n9) to label %invoke.cont unwind label %ehcleanup1077 1078invoke.cont:1079  ret void1080 1081ehcleanup:                                        ; preds = %entry1082  %c = cleanuppad within none []1083  call void @cleanup() [ "funclet"(token %c) ]1084  cleanupret from %c unwind to caller1085}1086 1087declare void @g7(ptr)1088define void @f7(i64 %n) {1089; CHECK-LABEL: f7:1090; CHECK:       .seh_proc f71091; CHECK-NEXT:  // %bb.0:1092; CHECK-NEXT:    str x28, [sp, #-16]! // 8-byte Folded Spill1093; CHECK-NEXT:    .seh_save_reg_x x28, 161094; CHECK-NEXT:    str x30, [sp, #8] // 8-byte Spill1095; CHECK-NEXT:    .seh_save_reg x30, 81096; CHECK-NEXT:    addvl sp, sp, #-11097; CHECK-NEXT:    .seh_allocz 11098; CHECK-NEXT:    .seh_endprologue1099; CHECK-NEXT:    mov x0, sp1100; CHECK-NEXT:    bl g71101; CHECK-NEXT:    .seh_startepilogue1102; CHECK-NEXT:    addvl sp, sp, #11103; CHECK-NEXT:    .seh_allocz 11104; CHECK-NEXT:    ldr x30, [sp, #8] // 8-byte Reload1105; CHECK-NEXT:    .seh_save_reg x30, 81106; CHECK-NEXT:    ldr x28, [sp], #16 // 8-byte Folded Reload1107; CHECK-NEXT:    .seh_save_reg_x x28, 161108; CHECK-NEXT:    .seh_endepilogue1109; CHECK-NEXT:    ret1110; CHECK-NEXT:    .seh_endfunclet1111; CHECK-NEXT:    .seh_endproc1112  %p = alloca <vscale x 2 x i64>1113  call void @g7(ptr %p)1114  ret void1115}1116 1117define void @f8(<vscale x 2 x i64> %v) {1118; CHECK-LABEL: f8:1119; CHECK:       .seh_proc f81120; CHECK-NEXT:  // %bb.0:1121; CHECK-NEXT:    addvl sp, sp, #-11122; CHECK-NEXT:    .seh_allocz 11123; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1124; CHECK-NEXT:    .seh_save_zreg z8, 01125; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1126; CHECK-NEXT:    .seh_save_reg_x x30, 161127; CHECK-NEXT:    .seh_endprologue1128; CHECK-NEXT:    //APP1129; CHECK-NEXT:    //NO_APP1130; CHECK-NEXT:    .seh_startepilogue1131; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1132; CHECK-NEXT:    .seh_save_reg_x x30, 161133; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1134; CHECK-NEXT:    .seh_save_zreg z8, 01135; CHECK-NEXT:    addvl sp, sp, #11136; CHECK-NEXT:    .seh_allocz 11137; CHECK-NEXT:    .seh_endepilogue1138; CHECK-NEXT:    ret1139; CHECK-NEXT:    .seh_endfunclet1140; CHECK-NEXT:    .seh_endproc1141  call void asm "", "~{d8}"()1142  ret void1143}1144 1145define void @f9(<vscale x 2 x i64> %v, ...) {1146; CHECK-LABEL: f9:1147; CHECK:       .seh_proc f91148; CHECK-NEXT:  // %bb.0:1149; CHECK-NEXT:    sub sp, sp, #641150; CHECK-NEXT:    .seh_stackalloc 641151; CHECK-NEXT:    addvl sp, sp, #-11152; CHECK-NEXT:    .seh_allocz 11153; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1154; CHECK-NEXT:    .seh_save_zreg z8, 01155; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1156; CHECK-NEXT:    .seh_save_reg_x x30, 161157; CHECK-NEXT:    .seh_endprologue1158; CHECK-NEXT:    addvl x8, sp, #11159; CHECK-NEXT:    add x9, sp, #81160; CHECK-NEXT:    str x2, [x8, #32]1161; CHECK-NEXT:    addvl x8, sp, #11162; CHECK-NEXT:    str x0, [x8, #16]1163; CHECK-NEXT:    addvl x8, sp, #11164; CHECK-NEXT:    str x1, [x8, #24]1165; CHECK-NEXT:    addvl x8, sp, #11166; CHECK-NEXT:    str x3, [x8, #40]1167; CHECK-NEXT:    addvl x8, sp, #11168; CHECK-NEXT:    str x4, [x8, #48]1169; CHECK-NEXT:    addvl x8, sp, #11170; CHECK-NEXT:    str x5, [x8, #56]1171; CHECK-NEXT:    addvl x8, sp, #11172; CHECK-NEXT:    str x6, [x8, #64]1173; CHECK-NEXT:    addvl x8, sp, #11174; CHECK-NEXT:    str x7, [x8, #72]1175; CHECK-NEXT:    add x8, sp, #161176; CHECK-NEXT:    addvl x8, x8, #11177; CHECK-NEXT:    str x8, [sp, #8]1178; CHECK-NEXT:    //APP1179; CHECK-NEXT:    //NO_APP1180; CHECK-NEXT:    .seh_startepilogue1181; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1182; CHECK-NEXT:    .seh_save_reg_x x30, 161183; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1184; CHECK-NEXT:    .seh_save_zreg z8, 01185; CHECK-NEXT:    addvl sp, sp, #11186; CHECK-NEXT:    .seh_allocz 11187; CHECK-NEXT:    add sp, sp, #641188; CHECK-NEXT:    .seh_stackalloc 641189; CHECK-NEXT:    .seh_endepilogue1190; CHECK-NEXT:    ret1191; CHECK-NEXT:    .seh_endfunclet1192; CHECK-NEXT:    .seh_endproc1193  %va_list = alloca ptr1194  call void @llvm.va_start.p0(ptr %va_list)1195  call void asm "", "r,~{d8},~{memory}"(ptr %va_list)1196  ret void1197}1198 1199declare void @g10(ptr,ptr)1200define void @f10(i64 %n, <vscale x 2 x i64> %x) "frame-pointer"="all" {1201; CHECK-LABEL: f10:1202; CHECK:       .seh_proc f101203; CHECK-NEXT:  // %bb.0:1204; CHECK-NEXT:    addvl sp, sp, #-181205; CHECK-NEXT:    .seh_allocz 181206; CHECK-NEXT:    str p4, [sp] // 2-byte Spill1207; CHECK-NEXT:    .seh_save_preg p4, 01208; CHECK-NEXT:    str p5, [sp, #1, mul vl] // 2-byte Spill1209; CHECK-NEXT:    .seh_save_preg p5, 11210; CHECK-NEXT:    str p6, [sp, #2, mul vl] // 2-byte Spill1211; CHECK-NEXT:    .seh_save_preg p6, 21212; CHECK-NEXT:    str p7, [sp, #3, mul vl] // 2-byte Spill1213; CHECK-NEXT:    .seh_save_preg p7, 31214; CHECK-NEXT:    str p8, [sp, #4, mul vl] // 2-byte Spill1215; CHECK-NEXT:    .seh_save_preg p8, 41216; CHECK-NEXT:    str p9, [sp, #5, mul vl] // 2-byte Spill1217; CHECK-NEXT:    .seh_save_preg p9, 51218; CHECK-NEXT:    str p10, [sp, #6, mul vl] // 2-byte Spill1219; CHECK-NEXT:    .seh_save_preg p10, 61220; CHECK-NEXT:    str p11, [sp, #7, mul vl] // 2-byte Spill1221; CHECK-NEXT:    .seh_save_preg p11, 71222; CHECK-NEXT:    str p12, [sp, #8, mul vl] // 2-byte Spill1223; CHECK-NEXT:    .seh_save_preg p12, 81224; CHECK-NEXT:    str p13, [sp, #9, mul vl] // 2-byte Spill1225; CHECK-NEXT:    .seh_save_preg p13, 91226; CHECK-NEXT:    str p14, [sp, #10, mul vl] // 2-byte Spill1227; CHECK-NEXT:    .seh_save_preg p14, 101228; CHECK-NEXT:    str p15, [sp, #11, mul vl] // 2-byte Spill1229; CHECK-NEXT:    .seh_save_preg p15, 111230; CHECK-NEXT:    str z8, [sp, #2, mul vl] // 16-byte Folded Spill1231; CHECK-NEXT:    .seh_save_zreg z8, 21232; CHECK-NEXT:    str z9, [sp, #3, mul vl] // 16-byte Folded Spill1233; CHECK-NEXT:    .seh_save_zreg z9, 31234; CHECK-NEXT:    str z10, [sp, #4, mul vl] // 16-byte Folded Spill1235; CHECK-NEXT:    .seh_save_zreg z10, 41236; CHECK-NEXT:    str z11, [sp, #5, mul vl] // 16-byte Folded Spill1237; CHECK-NEXT:    .seh_save_zreg z11, 51238; CHECK-NEXT:    str z12, [sp, #6, mul vl] // 16-byte Folded Spill1239; CHECK-NEXT:    .seh_save_zreg z12, 61240; CHECK-NEXT:    str z13, [sp, #7, mul vl] // 16-byte Folded Spill1241; CHECK-NEXT:    .seh_save_zreg z13, 71242; CHECK-NEXT:    str z14, [sp, #8, mul vl] // 16-byte Folded Spill1243; CHECK-NEXT:    .seh_save_zreg z14, 81244; CHECK-NEXT:    str z15, [sp, #9, mul vl] // 16-byte Folded Spill1245; CHECK-NEXT:    .seh_save_zreg z15, 91246; CHECK-NEXT:    str z16, [sp, #10, mul vl] // 16-byte Folded Spill1247; CHECK-NEXT:    .seh_save_zreg z16, 101248; CHECK-NEXT:    str z17, [sp, #11, mul vl] // 16-byte Folded Spill1249; CHECK-NEXT:    .seh_save_zreg z17, 111250; CHECK-NEXT:    str z18, [sp, #12, mul vl] // 16-byte Folded Spill1251; CHECK-NEXT:    .seh_save_zreg z18, 121252; CHECK-NEXT:    str z19, [sp, #13, mul vl] // 16-byte Folded Spill1253; CHECK-NEXT:    .seh_save_zreg z19, 131254; CHECK-NEXT:    str z20, [sp, #14, mul vl] // 16-byte Folded Spill1255; CHECK-NEXT:    .seh_save_zreg z20, 141256; CHECK-NEXT:    str z21, [sp, #15, mul vl] // 16-byte Folded Spill1257; CHECK-NEXT:    .seh_save_zreg z21, 151258; CHECK-NEXT:    str z22, [sp, #16, mul vl] // 16-byte Folded Spill1259; CHECK-NEXT:    .seh_save_zreg z22, 161260; CHECK-NEXT:    str z23, [sp, #17, mul vl] // 16-byte Folded Spill1261; CHECK-NEXT:    .seh_save_zreg z23, 171262; CHECK-NEXT:    str x28, [sp, #-32]! // 8-byte Folded Spill1263; CHECK-NEXT:    .seh_save_reg_x x28, 321264; CHECK-NEXT:    stp x29, x30, [sp, #8] // 16-byte Folded Spill1265; CHECK-NEXT:    .seh_save_fplr 81266; CHECK-NEXT:    add x29, sp, #81267; CHECK-NEXT:    .seh_add_fp 81268; CHECK-NEXT:    .seh_endprologue1269; CHECK-NEXT:    sub sp, sp, #161270; CHECK-NEXT:    addvl sp, sp, #-11271; CHECK-NEXT:    sub x1, x29, #81272; CHECK-NEXT:    mov x0, sp1273; CHECK-NEXT:    addvl x1, x1, #-11274; CHECK-NEXT:    bl g101275; CHECK-NEXT:    .seh_startepilogue1276; CHECK-NEXT:    addvl sp, sp, #11277; CHECK-NEXT:    .seh_allocz 11278; CHECK-NEXT:    add sp, sp, #161279; CHECK-NEXT:    .seh_stackalloc 161280; CHECK-NEXT:    ldp x29, x30, [sp, #8] // 16-byte Folded Reload1281; CHECK-NEXT:    .seh_save_fplr 81282; CHECK-NEXT:    ldr x28, [sp], #32 // 8-byte Folded Reload1283; CHECK-NEXT:    .seh_save_reg_x x28, 321284; CHECK-NEXT:    ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload1285; CHECK-NEXT:    .seh_save_zreg z8, 21286; CHECK-NEXT:    ldr z9, [sp, #3, mul vl] // 16-byte Folded Reload1287; CHECK-NEXT:    .seh_save_zreg z9, 31288; CHECK-NEXT:    ldr z10, [sp, #4, mul vl] // 16-byte Folded Reload1289; CHECK-NEXT:    .seh_save_zreg z10, 41290; CHECK-NEXT:    ldr z11, [sp, #5, mul vl] // 16-byte Folded Reload1291; CHECK-NEXT:    .seh_save_zreg z11, 51292; CHECK-NEXT:    ldr z12, [sp, #6, mul vl] // 16-byte Folded Reload1293; CHECK-NEXT:    .seh_save_zreg z12, 61294; CHECK-NEXT:    ldr z13, [sp, #7, mul vl] // 16-byte Folded Reload1295; CHECK-NEXT:    .seh_save_zreg z13, 71296; CHECK-NEXT:    ldr z14, [sp, #8, mul vl] // 16-byte Folded Reload1297; CHECK-NEXT:    .seh_save_zreg z14, 81298; CHECK-NEXT:    ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1299; CHECK-NEXT:    .seh_save_zreg z15, 91300; CHECK-NEXT:    ldr z16, [sp, #10, mul vl] // 16-byte Folded Reload1301; CHECK-NEXT:    .seh_save_zreg z16, 101302; CHECK-NEXT:    ldr z17, [sp, #11, mul vl] // 16-byte Folded Reload1303; CHECK-NEXT:    .seh_save_zreg z17, 111304; CHECK-NEXT:    ldr z18, [sp, #12, mul vl] // 16-byte Folded Reload1305; CHECK-NEXT:    .seh_save_zreg z18, 121306; CHECK-NEXT:    ldr z19, [sp, #13, mul vl] // 16-byte Folded Reload1307; CHECK-NEXT:    .seh_save_zreg z19, 131308; CHECK-NEXT:    ldr z20, [sp, #14, mul vl] // 16-byte Folded Reload1309; CHECK-NEXT:    .seh_save_zreg z20, 141310; CHECK-NEXT:    ldr z21, [sp, #15, mul vl] // 16-byte Folded Reload1311; CHECK-NEXT:    .seh_save_zreg z21, 151312; CHECK-NEXT:    ldr z22, [sp, #16, mul vl] // 16-byte Folded Reload1313; CHECK-NEXT:    .seh_save_zreg z22, 161314; CHECK-NEXT:    ldr z23, [sp, #17, mul vl] // 16-byte Folded Reload1315; CHECK-NEXT:    .seh_save_zreg z23, 171316; CHECK-NEXT:    ldr p4, [sp] // 2-byte Reload1317; CHECK-NEXT:    .seh_save_preg p4, 01318; CHECK-NEXT:    ldr p5, [sp, #1, mul vl] // 2-byte Reload1319; CHECK-NEXT:    .seh_save_preg p5, 11320; CHECK-NEXT:    ldr p6, [sp, #2, mul vl] // 2-byte Reload1321; CHECK-NEXT:    .seh_save_preg p6, 21322; CHECK-NEXT:    ldr p7, [sp, #3, mul vl] // 2-byte Reload1323; CHECK-NEXT:    .seh_save_preg p7, 31324; CHECK-NEXT:    ldr p8, [sp, #4, mul vl] // 2-byte Reload1325; CHECK-NEXT:    .seh_save_preg p8, 41326; CHECK-NEXT:    ldr p9, [sp, #5, mul vl] // 2-byte Reload1327; CHECK-NEXT:    .seh_save_preg p9, 51328; CHECK-NEXT:    ldr p10, [sp, #6, mul vl] // 2-byte Reload1329; CHECK-NEXT:    .seh_save_preg p10, 61330; CHECK-NEXT:    ldr p11, [sp, #7, mul vl] // 2-byte Reload1331; CHECK-NEXT:    .seh_save_preg p11, 71332; CHECK-NEXT:    ldr p12, [sp, #8, mul vl] // 2-byte Reload1333; CHECK-NEXT:    .seh_save_preg p12, 81334; CHECK-NEXT:    ldr p13, [sp, #9, mul vl] // 2-byte Reload1335; CHECK-NEXT:    .seh_save_preg p13, 91336; CHECK-NEXT:    ldr p14, [sp, #10, mul vl] // 2-byte Reload1337; CHECK-NEXT:    .seh_save_preg p14, 101338; CHECK-NEXT:    ldr p15, [sp, #11, mul vl] // 2-byte Reload1339; CHECK-NEXT:    .seh_save_preg p15, 111340; CHECK-NEXT:    addvl sp, sp, #181341; CHECK-NEXT:    .seh_allocz 181342; CHECK-NEXT:    .seh_endepilogue1343; CHECK-NEXT:    ret1344; CHECK-NEXT:    .seh_endfunclet1345; CHECK-NEXT:    .seh_endproc1346  %p1 = alloca [2 x i64]1347  %p2 = alloca <vscale x 2 x i64>1348  call void @g10(ptr %p1, ptr %p2)1349  ret void1350}1351 1352; Check handling of alloca allocated into CSR space, no frame pointer.1353define i32 @f11(double %d, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1354; CHECK-LABEL: f11:1355; CHECK:       .seh_proc f111356; CHECK-NEXT:  // %bb.0: // %entry1357; CHECK-NEXT:    addvl sp, sp, #-11358; CHECK-NEXT:    .seh_allocz 11359; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1360; CHECK-NEXT:    .seh_save_zreg z8, 01361; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1362; CHECK-NEXT:    .seh_save_reg_x x30, 161363; CHECK-NEXT:    .seh_endprologue1364; CHECK-NEXT:    mov w0, wzr1365; CHECK-NEXT:    //APP1366; CHECK-NEXT:    //NO_APP1367; CHECK-NEXT:    str d0, [sp, #8]1368; CHECK-NEXT:    .seh_startepilogue1369; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1370; CHECK-NEXT:    .seh_save_reg_x x30, 161371; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1372; CHECK-NEXT:    .seh_save_zreg z8, 01373; CHECK-NEXT:    addvl sp, sp, #11374; CHECK-NEXT:    .seh_allocz 11375; CHECK-NEXT:    .seh_endepilogue1376; CHECK-NEXT:    ret1377; CHECK-NEXT:    .seh_endfunclet1378; CHECK-NEXT:    .seh_endproc1379entry:1380  %a = alloca double1381  tail call void asm sideeffect "", "~{d8}"() #11382  store double %d, ptr %a1383  ret i32 01384}1385 1386define i32 @f12(double %d, <vscale x 4 x i32> %vs) "aarch64_pstate_sm_compatible" {1387; CHECK-LABEL: f12:1388; CHECK:       .seh_proc f121389; CHECK-NEXT:  // %bb.0: // %entry1390; CHECK-NEXT:    addvl sp, sp, #-11391; CHECK-NEXT:    .seh_allocz 11392; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1393; CHECK-NEXT:    .seh_save_zreg z8, 01394; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1395; CHECK-NEXT:    .seh_save_reg_x x30, 161396; CHECK-NEXT:    addvl sp, sp, #-11397; CHECK-NEXT:    .seh_allocz 11398; CHECK-NEXT:    .seh_endprologue1399; CHECK-NEXT:    addvl x8, sp, #11400; CHECK-NEXT:    mov w0, wzr1401; CHECK-NEXT:    //APP1402; CHECK-NEXT:    //NO_APP1403; CHECK-NEXT:    str d0, [x8, #8]1404; CHECK-NEXT:    str d0, [sp]1405; CHECK-NEXT:    .seh_startepilogue1406; CHECK-NEXT:    addvl sp, sp, #11407; CHECK-NEXT:    .seh_allocz 11408; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1409; CHECK-NEXT:    .seh_save_reg_x x30, 161410; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1411; CHECK-NEXT:    .seh_save_zreg z8, 01412; CHECK-NEXT:    addvl sp, sp, #11413; CHECK-NEXT:    .seh_allocz 11414; CHECK-NEXT:    .seh_endepilogue1415; CHECK-NEXT:    ret1416; CHECK-NEXT:    .seh_endfunclet1417; CHECK-NEXT:    .seh_endproc1418entry:1419  %a = alloca double1420  %b = alloca <vscale x 16 x i8>1421  tail call void asm sideeffect "", "~{d8}"() #11422  store double %d, ptr %a1423  store double %d, ptr %b1424  ret i32 01425}1426 1427; Check handling of alloca allocated into CSR space, with frame pointer.1428define i32 @f13(double %d, <vscale x 4 x i32> %vs) "frame-pointer"="all" {1429; CHECK-LABEL: f13:1430; CHECK:       .seh_proc f131431; CHECK-NEXT:  // %bb.0: // %entry1432; CHECK-NEXT:    addvl sp, sp, #-11433; CHECK-NEXT:    .seh_allocz 11434; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1435; CHECK-NEXT:    .seh_save_zreg z8, 01436; CHECK-NEXT:    str x28, [sp, #-32]! // 8-byte Folded Spill1437; CHECK-NEXT:    .seh_save_reg_x x28, 321438; CHECK-NEXT:    stp x29, x30, [sp, #8] // 16-byte Folded Spill1439; CHECK-NEXT:    .seh_save_fplr 81440; CHECK-NEXT:    add x29, sp, #81441; CHECK-NEXT:    .seh_add_fp 81442; CHECK-NEXT:    .seh_endprologue1443; CHECK-NEXT:    mov w0, wzr1444; CHECK-NEXT:    //APP1445; CHECK-NEXT:    //NO_APP1446; CHECK-NEXT:    str d0, [x29, #16]1447; CHECK-NEXT:    .seh_startepilogue1448; CHECK-NEXT:    ldp x29, x30, [sp, #8] // 16-byte Folded Reload1449; CHECK-NEXT:    .seh_save_fplr 81450; CHECK-NEXT:    ldr x28, [sp], #32 // 8-byte Folded Reload1451; CHECK-NEXT:    .seh_save_reg_x x28, 321452; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1453; CHECK-NEXT:    .seh_save_zreg z8, 01454; CHECK-NEXT:    addvl sp, sp, #11455; CHECK-NEXT:    .seh_allocz 11456; CHECK-NEXT:    .seh_endepilogue1457; CHECK-NEXT:    ret1458; CHECK-NEXT:    .seh_endfunclet1459; CHECK-NEXT:    .seh_endproc1460entry:1461  %a = alloca double1462  tail call void asm sideeffect "", "~{d8},~{x28}"() #11463  store double %d, ptr %a1464  ret i32 01465}1466 1467define i32 @f14(double %d, <vscale x 4 x i32> %vs) "frame-pointer"="all" {1468; CHECK-LABEL: f14:1469; CHECK:       .seh_proc f141470; CHECK-NEXT:  // %bb.0: // %entry1471; CHECK-NEXT:    addvl sp, sp, #-11472; CHECK-NEXT:    .seh_allocz 11473; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1474; CHECK-NEXT:    .seh_save_zreg z8, 01475; CHECK-NEXT:    str x28, [sp, #-32]! // 8-byte Folded Spill1476; CHECK-NEXT:    .seh_save_reg_x x28, 321477; CHECK-NEXT:    stp x29, x30, [sp, #8] // 16-byte Folded Spill1478; CHECK-NEXT:    .seh_save_fplr 81479; CHECK-NEXT:    add x29, sp, #81480; CHECK-NEXT:    .seh_add_fp 81481; CHECK-NEXT:    .seh_endprologue1482; CHECK-NEXT:    addvl sp, sp, #-11483; CHECK-NEXT:    addvl x8, x29, #-11484; CHECK-NEXT:    mov w0, wzr1485; CHECK-NEXT:    //APP1486; CHECK-NEXT:    //NO_APP1487; CHECK-NEXT:    str d0, [x29, #16]1488; CHECK-NEXT:    stur d0, [x8, #-8]1489; CHECK-NEXT:    .seh_startepilogue1490; CHECK-NEXT:    addvl sp, sp, #11491; CHECK-NEXT:    .seh_allocz 11492; CHECK-NEXT:    ldp x29, x30, [sp, #8] // 16-byte Folded Reload1493; CHECK-NEXT:    .seh_save_fplr 81494; CHECK-NEXT:    ldr x28, [sp], #32 // 8-byte Folded Reload1495; CHECK-NEXT:    .seh_save_reg_x x28, 321496; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1497; CHECK-NEXT:    .seh_save_zreg z8, 01498; CHECK-NEXT:    addvl sp, sp, #11499; CHECK-NEXT:    .seh_allocz 11500; CHECK-NEXT:    .seh_endepilogue1501; CHECK-NEXT:    ret1502; CHECK-NEXT:    .seh_endfunclet1503; CHECK-NEXT:    .seh_endproc1504entry:1505  %a = alloca double1506  %b = alloca <vscale x 16 x i8>1507  tail call void asm sideeffect "", "~{d8},~{x28}"() #11508  store double %d, ptr %a1509  store double %d, ptr %b1510  ret i32 01511}1512 1513define tailcc void @f15(double %d, <vscale x 4 x i32> %vs, [9 x i64], i32 %i) {1514; CHECK-LABEL: f15:1515; CHECK:       .seh_proc f151516; CHECK-NEXT:  // %bb.0:1517; CHECK-NEXT:    addvl sp, sp, #-11518; CHECK-NEXT:    .seh_allocz 11519; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1520; CHECK-NEXT:    .seh_save_zreg z8, 01521; CHECK-NEXT:    str x28, [sp, #-16]! // 8-byte Folded Spill1522; CHECK-NEXT:    .seh_save_reg_x x28, 161523; CHECK-NEXT:    str x30, [sp, #8] // 8-byte Spill1524; CHECK-NEXT:    .seh_save_reg x30, 81525; CHECK-NEXT:    sub sp, sp, #161526; CHECK-NEXT:    .seh_stackalloc 161527; CHECK-NEXT:    addvl sp, sp, #-11528; CHECK-NEXT:    .seh_allocz 11529; CHECK-NEXT:    .seh_endprologue1530; CHECK-NEXT:    addvl x8, sp, #21531; CHECK-NEXT:    //APP1532; CHECK-NEXT:    //NO_APP1533; CHECK-NEXT:    stp d0, d0, [sp, #8]1534; CHECK-NEXT:    ldr w8, [x8, #104]1535; CHECK-NEXT:    str w8, [sp, #8]1536; CHECK-NEXT:    .seh_startepilogue1537; CHECK-NEXT:    addvl sp, sp, #11538; CHECK-NEXT:    .seh_allocz 11539; CHECK-NEXT:    add sp, sp, #161540; CHECK-NEXT:    .seh_stackalloc 161541; CHECK-NEXT:    ldr x30, [sp, #8] // 8-byte Reload1542; CHECK-NEXT:    .seh_save_reg x30, 81543; CHECK-NEXT:    ldr x28, [sp], #16 // 8-byte Folded Reload1544; CHECK-NEXT:    .seh_save_reg_x x28, 161545; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1546; CHECK-NEXT:    .seh_save_zreg z8, 01547; CHECK-NEXT:    addvl sp, sp, #11548; CHECK-NEXT:    .seh_allocz 11549; CHECK-NEXT:    add sp, sp, #801550; CHECK-NEXT:    .seh_stackalloc 801551; CHECK-NEXT:    .seh_endepilogue1552; CHECK-NEXT:    ret1553; CHECK-NEXT:    .seh_endfunclet1554; CHECK-NEXT:    .seh_endproc1555  %a = alloca double1556  %b = alloca <vscale x 16 x i8>1557  tail call void asm sideeffect "", "~{d8},~{x28}"() #11558  store double %d, ptr %a1559  store double %d, ptr %b1560  store i32 %i, ptr %a1561  ret void1562}1563 1564declare ptr @llvm.swift.async.context.addr()1565 1566define void @f16(ptr swiftasync %ctx, <vscale x 2 x i64> %foo) {1567; CHECK-LABEL: f16:1568; CHECK:       .seh_proc f161569; CHECK-NEXT:  // %bb.0:1570; CHECK-NEXT:    orr x29, x29, #0x10000000000000001571; CHECK-NEXT:    .seh_nop1572; CHECK-NEXT:    addvl sp, sp, #-11573; CHECK-NEXT:    .seh_allocz 11574; CHECK-NEXT:    str z8, [sp] // 16-byte Folded Spill1575; CHECK-NEXT:    .seh_save_zreg z8, 01576; CHECK-NEXT:    sub sp, sp, #321577; CHECK-NEXT:    .seh_stackalloc 321578; CHECK-NEXT:    stp x29, x30, [sp, #8] // 16-byte Folded Spill1579; CHECK-NEXT:    .seh_save_fplr 81580; CHECK-NEXT:    str x22, [sp]1581; CHECK-NEXT:    .seh_nop1582; CHECK-NEXT:    add x29, sp, #81583; CHECK-NEXT:    .seh_add_fp 81584; CHECK-NEXT:    .seh_endprologue1585; CHECK-NEXT:    sub sp, sp, #161586; CHECK-NEXT:    //APP1587; CHECK-NEXT:    //NO_APP1588; CHECK-NEXT:    ldr x8, [x22]1589; CHECK-NEXT:    stur x8, [x29, #-8]1590; CHECK-NEXT:    .seh_startepilogue1591; CHECK-NEXT:    add sp, sp, #161592; CHECK-NEXT:    .seh_stackalloc 161593; CHECK-NEXT:    ldp x29, x30, [sp, #8] // 16-byte Folded Reload1594; CHECK-NEXT:    .seh_save_fplr 81595; CHECK-NEXT:    add sp, sp, #321596; CHECK-NEXT:    .seh_stackalloc 321597; CHECK-NEXT:    ldr z8, [sp] // 16-byte Folded Reload1598; CHECK-NEXT:    .seh_save_zreg z8, 01599; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff1600; CHECK-NEXT:    .seh_nop1601; CHECK-NEXT:    addvl sp, sp, #11602; CHECK-NEXT:    .seh_allocz 11603; CHECK-NEXT:    .seh_endepilogue1604; CHECK-NEXT:    ret1605; CHECK-NEXT:    .seh_endfunclet1606; CHECK-NEXT:    .seh_endproc1607  tail call void asm sideeffect "", "~{z8}"()1608  %1 = load ptr, ptr %ctx, align 81609  %2 = tail call ptr @llvm.swift.async.context.addr()1610  store ptr %1, ptr %2, align 81611  ret void1612}1613