Files
wasmtime/cranelift/filetests/filetests/isa/aarch64/dynamic-slot.clif
Trevor Elliott f04decc4a1 Use capstone to validate precise-output tests (#5780)
Use the capstone library to disassemble precise-output tests, in addition to pretty-printing their vcode.
2023-02-15 16:35:10 -08:00

205 lines
3.4 KiB
Plaintext

test compile precise-output
target aarch64
function %store_scale() {
gv0 = dyn_scale_target_const.i32x4
ss0 = explicit_slot 8
block0:
v0 = global_value.i64 gv0
stack_store.i64 v0, ss0
return
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #16
; block0:
; mov x1, sp
; movz x2, #1
; str x2, [x1]
; add sp, sp, #16
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x10
; block0: ; offset 0xc
; mov x1, sp
; mov x2, #1
; str x2, [x1]
; add sp, sp, #0x10
; ldp x29, x30, [sp], #0x10
; ret
function %store_scale_lt_128() {
gv0 = dyn_scale_target_const.i16x4
ss0 = explicit_slot 8
block0:
v0 = global_value.i64 gv0
stack_store.i64 v0, ss0
return
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #16
; block0:
; mov x1, sp
; movz x2, #1
; str x2, [x1]
; add sp, sp, #16
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x10
; block0: ; offset 0xc
; mov x1, sp
; mov x2, #1
; str x2, [x1]
; add sp, sp, #0x10
; ldp x29, x30, [sp], #0x10
; ret
function %store_explicit(i32) {
gv0 = dyn_scale_target_const.i32x4
dt0 = i32x4*gv0
dss0 = explicit_dynamic_slot dt0
block0(v0: i32):
v1 = splat.dt0 v0
dynamic_stack_store.dt0 v1, dss0
return
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #16
; block0:
; dup v3.4s, w0
; mov x3, sp
; str q3, [x3]
; add sp, sp, #16
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x10
; block0: ; offset 0xc
; dup v3.4s, w0
; mov x3, sp
; str q3, [x3]
; add sp, sp, #0x10
; ldp x29, x30, [sp], #0x10
; ret
function %load_explicit() -> i32x4 {
gv0 = dyn_scale_target_const.i32x4
dt0 = i32x4*gv0
dss0 = explicit_dynamic_slot dt0
block0:
v0 = dynamic_stack_load.dt0 dss0
v1 = extract_vector.dt0 v0, 0
return v1
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #16
; block0:
; mov x2, sp
; ldr q0, [x2]
; add sp, sp, #16
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x10
; block0: ; offset 0xc
; mov x2, sp
; ldr q0, [x2]
; add sp, sp, #0x10
; ldp x29, x30, [sp], #0x10
; ret
function %store_implicit(i32) {
gv0 = dyn_scale_target_const.i32x4
dt0 = i32x4*gv0
dss0 = explicit_dynamic_slot dt0
block0(v0: i32):
v1 = splat.dt0 v0
dynamic_stack_store v1, dss0
return
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #16
; block0:
; dup v3.4s, w0
; mov x3, sp
; str q3, [x3]
; add sp, sp, #16
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x10
; block0: ; offset 0xc
; dup v3.4s, w0
; mov x3, sp
; str q3, [x3]
; add sp, sp, #0x10
; ldp x29, x30, [sp], #0x10
; ret
function %addr() -> i64 {
gv0 = dyn_scale_target_const.i32x4
dt0 = i32x4*gv0
dss0 = explicit_dynamic_slot dt0
block0:
v0 = dynamic_stack_addr.i64 dss0
return v0
}
; VCode:
; stp fp, lr, [sp, #-16]!
; mov fp, sp
; sub sp, sp, #16
; block0:
; mov x0, sp
; add sp, sp, #16
; ldp fp, lr, [sp], #16
; ret
;
; Disassembled:
; stp x29, x30, [sp, #-0x10]!
; mov x29, sp
; sub sp, sp, #0x10
; block0: ; offset 0xc
; mov x0, sp
; add sp, sp, #0x10
; ldp x29, x30, [sp], #0x10
; ret