|
| 1 | +; RUN: llc -mtriple aarch64-unknown-windows-msvc -filetype asm -o - %s | FileCheck %s |
| 2 | + |
| 3 | +declare dso_local void @g(ptr noundef) |
| 4 | +define dso_local preserve_mostcc void @f(ptr noundef %p) #0 { |
| 5 | +entry: |
| 6 | + %p.addr = alloca ptr, align 8 |
| 7 | + store ptr %p, ptr %p.addr, align 8 |
| 8 | + %0 = load ptr, ptr %p.addr, align 8 |
| 9 | + call void @g(ptr noundef %0) |
| 10 | + ret void |
| 11 | +} |
| 12 | + |
| 13 | +attributes #0 = { nounwind uwtable(sync) } |
| 14 | + |
| 15 | +; CHECK: stp x9, x10, [sp, #[[OFFSET_0:[0-9]+]]] |
| 16 | +; CHECK-NEXT: .seh_save_any_reg_p x9, [[OFFSET_0]] |
| 17 | +; CHECK: stp x11, x12, [sp, #[[OFFSET_1:[0-9]+]]] |
| 18 | +; CHECK-NEXT: .seh_save_any_reg_p x11, [[OFFSET_1]] |
| 19 | +; CHECK: stp x13, x14, [sp, #[[OFFSET_2:[0-9]+]]] |
| 20 | +; CHECK-NEXT: .seh_save_any_reg_p x13, [[OFFSET_2]] |
| 21 | +; CHECK: str x15, [sp, #[[OFFSET_3:[0-9]+]]] |
| 22 | +; CHECK-NEXT: .seh_save_any_reg x15, [[OFFSET_3]] |
| 23 | +; CHECK: .seh_endprologue |
| 24 | + |
| 25 | +; CHECK: .seh_startepilogue |
| 26 | +; CHECK: ldr x15, [sp, #[[OFFSET_3]]] |
| 27 | +; CHECK-NEXT: .seh_save_any_reg x15, [[OFFSET_3]] |
| 28 | +; CHECK: ldp x13, x14, [sp, #[[OFFSET_2]]] |
| 29 | +; CHECK-NEXT: .seh_save_any_reg_p x13, [[OFFSET_2]] |
| 30 | +; CHECK: ldp x11, x12, [sp, #[[OFFSET_1]]] |
| 31 | +; CHECK-NEXT: .seh_save_any_reg_p x11, [[OFFSET_1]] |
| 32 | +; CHECK: ldp x9, x10, [sp, #[[OFFSET_0]]] |
| 33 | +; CHECK-NEXT: .seh_save_any_reg_p x9, [[OFFSET_0]] |
| 34 | +; CHECK: .seh_endepilogue |
0 commit comments