Files
wasmtime/cranelift/filetests/filetests/isa/aarch64/inline-probestack.clif
Trevor Elliott cc073593a4 Fix block label printing in precise-output tests (#5798)
As a follow-up to #5780, disassemble the regions identified by bb_starts, falling back on disassembling the whole buffer. This ensures that instructions like br_table that introduce a lot of constants don't throw off capstone for the remainder of the function.

---------

Co-authored-by: Jamey Sharp <jamey@minilop.net>
2023-02-16 02:35:26 +00:00

125 lines
2.4 KiB
Plaintext

test compile precise-output
set enable_probestack=true
set probestack_strategy=inline
; This is the default and is equivalent to a page size of 4096
set probestack_size_log2=12
target aarch64
; If the stack size is just one page, we can avoid the stack probe entirely
function %single_page() -> i64 system_v {
ss0 = explicit_slot 2048
block0:
v1 = stack_addr.i64 ss0
return v1
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #2048
; block0:
; mov x0, sp
; add sp, sp, #2048
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x800
; block1: ; offset 0xc
; mov x0, sp
; add sp, sp, #0x800
; ldp x29, x30, [sp], #0x10
; ret
function %unrolled() -> i64 system_v {
ss0 = explicit_slot 12288
block0:
v1 = stack_addr.i64 ss0
return v1
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; movn x16, #4095 ; str wzr, [sp, x16, SXTX]
; movn x16, #8191 ; str wzr, [sp, x16, SXTX]
; movn x16, #12287 ; str wzr, [sp, x16, SXTX]
; sub sp, sp, #12288
; block0:
; mov x0, sp
; add sp, sp, #12288
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; mov x16, #-0x1000
; str wzr, [sp, x16, sxtx]
; mov x16, #-0x2000
; str wzr, [sp, x16, sxtx]
; mov x16, #-0x3000
; str wzr, [sp, x16, sxtx]
; sub sp, sp, #3, lsl #12
; block1: ; offset 0x24
; mov x0, sp
; add sp, sp, #3, lsl #12
; ldp x29, x30, [sp], #0x10
; ret
function %large() -> i64 system_v {
ss0 = explicit_slot 100000
block0:
v1 = stack_addr.i64 ss0
return v1
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; movz x16, #0
; movz w17, #34464
; movk w17, w17, #1, LSL #16
; stack_probe_loop x16, x17, #4096
; movz w16, #34464
; movk w16, w16, #1, LSL #16
; sub sp, sp, x16, UXTX
; block0:
; mov x0, sp
; movz w16, #34464
; movk w16, w16, #1, LSL #16
; add sp, sp, x16, UXTX
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; mov x16, #0
; mov w17, #0x86a0
; movk w17, #1, lsl #16
; sub x16, x16, #1, lsl #12
; str wzr, [sp, x16]
; cmn x16, x17
; b.gt #0x14
; mov w16, #0x86a0
; movk w16, #1, lsl #16
; sub sp, sp, x16
; block1: ; offset 0x30
; mov x0, sp
; mov w16, #0x86a0
; movk w16, #1, lsl #16
; add sp, sp, x16
; ldp x29, x30, [sp], #0x10
; ret