123 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64-windows-pc-msvc -aarch64-stack-hazard-size=0 | FileCheck %s --check-prefixes=CHECK03; RUN: llc < %s -mtriple=aarch64-windows-pc-msvc -aarch64-stack-hazard-size=64 | FileCheck %s --check-prefixes=CHECK644; RUN: llc < %s -mtriple=aarch64-windows-pc-msvc -aarch64-stack-hazard-size=1024 | FileCheck %s --check-prefixes=CHECK10245 6define i32 @fpr_csr_stackobj(double %x) "aarch64_pstate_sm_compatible" "frame-pointer"="all" {7; CHECK0-LABEL: fpr_csr_stackobj:8; CHECK0: .seh_proc fpr_csr_stackobj9; CHECK0-NEXT: // %bb.0: // %entry10; CHECK0-NEXT: str x23, [sp, #-48]! // 8-byte Folded Spill11; CHECK0-NEXT: .seh_save_reg_x x23, 4812; CHECK0-NEXT: stp x29, x30, [sp, #8] // 16-byte Folded Spill13; CHECK0-NEXT: .seh_save_fplr 814; CHECK0-NEXT: stp d9, d10, [sp, #24] // 16-byte Folded Spill15; CHECK0-NEXT: .seh_save_fregp d9, 2416; CHECK0-NEXT: add x29, sp, #817; CHECK0-NEXT: .seh_add_fp 818; CHECK0-NEXT: .seh_endprologue19; CHECK0-NEXT: mov w0, wzr20; CHECK0-NEXT: //APP21; CHECK0-NEXT: //NO_APP22; CHECK0-NEXT: str d0, [x29, #32]23; CHECK0-NEXT: .seh_startepilogue24; CHECK0-NEXT: ldp d9, d10, [sp, #24] // 16-byte Folded Reload25; CHECK0-NEXT: .seh_save_fregp d9, 2426; CHECK0-NEXT: ldp x29, x30, [sp, #8] // 16-byte Folded Reload27; CHECK0-NEXT: .seh_save_fplr 828; CHECK0-NEXT: ldr x23, [sp], #48 // 8-byte Folded Reload29; CHECK0-NEXT: .seh_save_reg_x x23, 4830; CHECK0-NEXT: .seh_endepilogue31; CHECK0-NEXT: ret32; CHECK0-NEXT: .seh_endfunclet33; CHECK0-NEXT: .seh_endproc34;35; CHECK64-LABEL: fpr_csr_stackobj:36; CHECK64: .seh_proc fpr_csr_stackobj37; CHECK64-NEXT: // %bb.0: // %entry38; CHECK64-NEXT: sub sp, sp, #19239; CHECK64-NEXT: .seh_stackalloc 19240; CHECK64-NEXT: str x23, [sp, #80] // 8-byte Spill41; CHECK64-NEXT: .seh_save_reg x23, 8042; CHECK64-NEXT: str x29, [sp, #88] // 8-byte Spill43; CHECK64-NEXT: .seh_save_reg x29, 8844; CHECK64-NEXT: str x30, [sp, #96] // 8-byte Spill45; CHECK64-NEXT: .seh_save_reg x30, 9646; CHECK64-NEXT: str d9, [sp, #168] // 8-byte Spill47; CHECK64-NEXT: .seh_save_freg d9, 16848; CHECK64-NEXT: str d10, [sp, #176] // 8-byte Spill49; CHECK64-NEXT: .seh_save_freg d10, 17650; CHECK64-NEXT: add x29, sp, #8851; CHECK64-NEXT: .seh_add_fp 8852; CHECK64-NEXT: .seh_endprologue53; CHECK64-NEXT: mov w0, wzr54; CHECK64-NEXT: //APP55; CHECK64-NEXT: //NO_APP56; CHECK64-NEXT: stur d0, [x29, #-16]57; CHECK64-NEXT: .seh_startepilogue58; CHECK64-NEXT: ldr d10, [sp, #176] // 8-byte Reload59; CHECK64-NEXT: .seh_save_freg d10, 17660; CHECK64-NEXT: ldr d9, [sp, #168] // 8-byte Reload61; CHECK64-NEXT: .seh_save_freg d9, 16862; CHECK64-NEXT: ldr x30, [sp, #96] // 8-byte Reload63; CHECK64-NEXT: .seh_save_reg x30, 9664; CHECK64-NEXT: ldr x29, [sp, #88] // 8-byte Reload65; CHECK64-NEXT: .seh_save_reg x29, 8866; CHECK64-NEXT: ldr x23, [sp, #80] // 8-byte Reload67; CHECK64-NEXT: .seh_save_reg x23, 8068; CHECK64-NEXT: add sp, sp, #19269; CHECK64-NEXT: .seh_stackalloc 19270; CHECK64-NEXT: .seh_endepilogue71; CHECK64-NEXT: ret72; CHECK64-NEXT: .seh_endfunclet73; CHECK64-NEXT: .seh_endproc74;75; CHECK1024-LABEL: fpr_csr_stackobj:76; CHECK1024: .seh_proc fpr_csr_stackobj77; CHECK1024-NEXT: // %bb.0: // %entry78; CHECK1024-NEXT: sub sp, sp, #107279; CHECK1024-NEXT: .seh_stackalloc 107280; CHECK1024-NEXT: str x23, [sp] // 8-byte Spill81; CHECK1024-NEXT: .seh_save_reg x23, 082; CHECK1024-NEXT: str x29, [sp, #8] // 8-byte Spill83; CHECK1024-NEXT: .seh_save_reg x29, 884; CHECK1024-NEXT: str x30, [sp, #16] // 8-byte Spill85; CHECK1024-NEXT: .seh_save_reg x30, 1686; CHECK1024-NEXT: str d9, [sp, #1048] // 8-byte Spill87; CHECK1024-NEXT: .seh_save_freg d9, 104888; CHECK1024-NEXT: str d10, [sp, #1056] // 8-byte Spill89; CHECK1024-NEXT: .seh_save_freg d10, 105690; CHECK1024-NEXT: add x29, sp, #891; CHECK1024-NEXT: .seh_add_fp 892; CHECK1024-NEXT: .seh_endprologue93; CHECK1024-NEXT: sub sp, sp, #104094; CHECK1024-NEXT: mov w0, wzr95; CHECK1024-NEXT: //APP96; CHECK1024-NEXT: //NO_APP97; CHECK1024-NEXT: stur d0, [x29, #-16]98; CHECK1024-NEXT: .seh_startepilogue99; CHECK1024-NEXT: add sp, sp, #1040100; CHECK1024-NEXT: .seh_stackalloc 1040101; CHECK1024-NEXT: ldr d10, [sp, #1056] // 8-byte Reload102; CHECK1024-NEXT: .seh_save_freg d10, 1056103; CHECK1024-NEXT: ldr d9, [sp, #1048] // 8-byte Reload104; CHECK1024-NEXT: .seh_save_freg d9, 1048105; CHECK1024-NEXT: ldr x30, [sp, #16] // 8-byte Reload106; CHECK1024-NEXT: .seh_save_reg x30, 16107; CHECK1024-NEXT: ldr x29, [sp, #8] // 8-byte Reload108; CHECK1024-NEXT: .seh_save_reg x29, 8109; CHECK1024-NEXT: ldr x23, [sp] // 8-byte Reload110; CHECK1024-NEXT: .seh_save_reg x23, 0111; CHECK1024-NEXT: add sp, sp, #1072112; CHECK1024-NEXT: .seh_stackalloc 1072113; CHECK1024-NEXT: .seh_endepilogue114; CHECK1024-NEXT: ret115; CHECK1024-NEXT: .seh_endfunclet116; CHECK1024-NEXT: .seh_endproc117entry:118 %a = alloca double119 tail call void asm sideeffect "", "~{x23},~{d9},~{d10}"()120 store double %x, ptr %a121 ret i32 0122}123