Cranelift: Add .wat to assembly test support and generate Wasm load/store tests for all ISAs (#5439)

* cranelift-filetest: Add the ability to test `.wat` to assembly

* Make the load/store test case generator script use `.wat` tests

And generate tests that exercise both Wasm-to-CLIF lowering and Wasm all the way
to assembly.

* Remove old versions of generated load/store tests

* Add new generated load/store tests

* Fix filename reference in script
This commit is contained in:
Nick Fitzgerald
2022-12-14 13:13:43 -08:00
committed by GitHub
parent 9dc4f1a83c
commit be710df237
502 changed files with 34040 additions and 760 deletions

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; mov w7, w0
;; ldr x8, [x2, #8]
;; sub x8, x8, #4
;; subs xzr, x7, x8
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x2]
;; str w1, [x9, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w7, w0
;; ldr x8, [x1, #8]
;; sub x8, x8, #4
;; subs xzr, x7, x8
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x1]
;; ldr w0, [x9, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2, #8]
;; movn x8, #4099
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x2]
;; add x11, x11, #4096
;; str w1, [x11, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1, #8]
;; movn x8, #4099
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x1]
;; add x10, x11, #4096
;; ldr w0, [x10, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w10, w0
;; movn w9, #65531
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x2, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x2]
;; movz x14, #65535, LSL #16
;; add x13, x14, x13
;; str w1, [x13, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w10, w0
;; movn w9, #65531
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x1, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x1]
;; movz x12, #65535, LSL #16
;; add x12, x12, x13
;; ldr w0, [x12, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; mov w6, w0
;; ldr x7, [x2, #8]
;; subs xzr, x6, x7
;; b.lo label1 ; b label3
;; block1:
;; ldr x8, [x2]
;; strb w1, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w6, w0
;; ldr x7, [x1, #8]
;; subs xzr, x6, x7
;; b.lo label1 ; b label3
;; block1:
;; ldr x8, [x1]
;; ldrb w0, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2, #8]
;; movn x8, #4096
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x2]
;; add x11, x11, #4096
;; strb w1, [x11, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1, #8]
;; movn x8, #4096
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x1]
;; add x10, x11, #4096
;; ldrb w0, [x10, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w10, w0
;; movn w9, #65534
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x2, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x2]
;; movz x14, #65535, LSL #16
;; add x13, x14, x13
;; strb w1, [x13, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w10, w0
;; movn w9, #65534
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x1, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x1]
;; movz x12, #65535, LSL #16
;; add x12, x12, x13
;; ldrb w0, [x12, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; mov w10, w0
;; ldr x11, [x2, #8]
;; sub x11, x11, #4
;; ldr x12, [x2]
;; add x12, x12, x0, UXTW
;; movz x9, #0
;; subs xzr, x10, x11
;; csel x12, x9, x12, hi
;; csdb
;; str w1, [x12]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w10, w0
;; ldr x11, [x1, #8]
;; sub x11, x11, #4
;; ldr x12, [x1]
;; add x12, x12, x0, UXTW
;; movz x9, #0
;; subs xzr, x10, x11
;; csel x12, x9, x12, hi
;; csdb
;; ldr w0, [x12]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; mov w12, w0
;; ldr x13, [x2, #8]
;; movn x11, #4099
;; add x13, x13, x11
;; ldr x14, [x2]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; str w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w12, w0
;; ldr x13, [x1, #8]
;; movn x11, #4099
;; add x13, x13, x11
;; ldr x14, [x1]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; ldr w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w13, w0
;; movn w12, #65531
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x2, #8]
;; ldr x2, [x2]
;; add x0, x2, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; str w1, [x0]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w13, w0
;; movn w12, #65531
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x1, #8]
;; ldr x1, [x1]
;; add x0, x1, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; ldr w0, [x0]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2, #8]
;; ldr x11, [x2]
;; add x11, x11, x0, UXTW
;; movz x8, #0
;; subs xzr, x9, x10
;; csel x11, x8, x11, hs
;; csdb
;; strb w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1, #8]
;; ldr x11, [x1]
;; add x11, x11, x0, UXTW
;; movz x8, #0
;; subs xzr, x9, x10
;; csel x11, x8, x11, hs
;; csdb
;; ldrb w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; mov w12, w0
;; ldr x13, [x2, #8]
;; movn x11, #4096
;; add x13, x13, x11
;; ldr x14, [x2]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; strb w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w12, w0
;; ldr x13, [x1, #8]
;; movn x11, #4096
;; add x13, x13, x11
;; ldr x14, [x1]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; ldrb w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w13, w0
;; movn w12, #65534
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x2, #8]
;; ldr x2, [x2]
;; add x0, x2, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; strb w1, [x0]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w13, w0
;; movn w12, #65534
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x1, #8]
;; ldr x1, [x1]
;; add x0, x1, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; ldrb w0, [x0]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; mov w7, w0
;; ldr x8, [x2, #8]
;; sub x8, x8, #4
;; subs xzr, x7, x8
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x2]
;; str w1, [x9, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w7, w0
;; ldr x8, [x1, #8]
;; sub x8, x8, #4
;; subs xzr, x7, x8
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x1]
;; ldr w0, [x9, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2, #8]
;; movn x8, #4099
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x2]
;; add x11, x11, #4096
;; str w1, [x11, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1, #8]
;; movn x8, #4099
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x1]
;; add x10, x11, #4096
;; ldr w0, [x10, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w10, w0
;; movn w9, #65531
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x2, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x2]
;; movz x14, #65535, LSL #16
;; add x13, x14, x13
;; str w1, [x13, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w10, w0
;; movn w9, #65531
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x1, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x1]
;; movz x12, #65535, LSL #16
;; add x12, x12, x13
;; ldr w0, [x12, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; mov w6, w0
;; ldr x7, [x2, #8]
;; subs xzr, x6, x7
;; b.lo label1 ; b label3
;; block1:
;; ldr x8, [x2]
;; strb w1, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w6, w0
;; ldr x7, [x1, #8]
;; subs xzr, x6, x7
;; b.lo label1 ; b label3
;; block1:
;; ldr x8, [x1]
;; ldrb w0, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2, #8]
;; movn x8, #4096
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x2]
;; add x11, x11, #4096
;; strb w1, [x11, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1, #8]
;; movn x8, #4096
;; add x10, x10, x8
;; subs xzr, x9, x10
;; b.ls label1 ; b label3
;; block1:
;; ldr x11, [x1]
;; add x10, x11, #4096
;; ldrb w0, [x10, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w10, w0
;; movn w9, #65534
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x2, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x2]
;; movz x14, #65535, LSL #16
;; add x13, x14, x13
;; strb w1, [x13, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w10, w0
;; movn w9, #65534
;; adds x11, x10, x9
;; b.lo 8 ; udf
;; ldr x12, [x1, #8]
;; subs xzr, x11, x12
;; b.ls label1 ; b label3
;; block1:
;; ldr x13, [x1]
;; movz x12, #65535, LSL #16
;; add x12, x12, x13
;; ldrb w0, [x12, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; mov w10, w0
;; ldr x11, [x2, #8]
;; sub x11, x11, #4
;; ldr x12, [x2]
;; add x12, x12, x0, UXTW
;; movz x9, #0
;; subs xzr, x10, x11
;; csel x12, x9, x12, hi
;; csdb
;; str w1, [x12]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w10, w0
;; ldr x11, [x1, #8]
;; sub x11, x11, #4
;; ldr x12, [x1]
;; add x12, x12, x0, UXTW
;; movz x9, #0
;; subs xzr, x10, x11
;; csel x12, x9, x12, hi
;; csdb
;; ldr w0, [x12]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; mov w12, w0
;; ldr x13, [x2, #8]
;; movn x11, #4099
;; add x13, x13, x11
;; ldr x14, [x2]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; str w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w12, w0
;; ldr x13, [x1, #8]
;; movn x11, #4099
;; add x13, x13, x11
;; ldr x14, [x1]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; ldr w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w13, w0
;; movn w12, #65531
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x2, #8]
;; ldr x2, [x2]
;; add x0, x2, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; str w1, [x0]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w13, w0
;; movn w12, #65531
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x1, #8]
;; ldr x1, [x1]
;; add x0, x1, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; ldr w0, [x0]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2, #8]
;; ldr x11, [x2]
;; add x11, x11, x0, UXTW
;; movz x8, #0
;; subs xzr, x9, x10
;; csel x11, x8, x11, hs
;; csdb
;; strb w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1, #8]
;; ldr x11, [x1]
;; add x11, x11, x0, UXTW
;; movz x8, #0
;; subs xzr, x9, x10
;; csel x11, x8, x11, hs
;; csdb
;; ldrb w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,76 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; mov w12, w0
;; ldr x13, [x2, #8]
;; movn x11, #4096
;; add x13, x13, x11
;; ldr x14, [x2]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; strb w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w12, w0
;; ldr x13, [x1, #8]
;; movn x11, #4096
;; add x13, x13, x11
;; ldr x14, [x1]
;; add x14, x14, x0, UXTW
;; add x14, x14, #4096
;; movz x11, #0
;; subs xzr, x12, x13
;; csel x14, x11, x14, hi
;; csdb
;; ldrb w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,80 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; mov w13, w0
;; movn w12, #65534
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x2, #8]
;; ldr x2, [x2]
;; add x0, x2, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; strb w1, [x0]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w13, w0
;; movn w12, #65534
;; adds x14, x13, x12
;; b.lo 8 ; udf
;; ldr x15, [x1, #8]
;; ldr x1, [x1]
;; add x0, x1, x0, UXTW
;; movz x13, #65535, LSL #16
;; add x0, x0, x13
;; movz x13, #0
;; subs xzr, x14, x15
;; csel x0, x13, x0, hi
;; csdb
;; ldrb w0, [x0]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x6, [x2, #8]
;; sub x6, x6, #4
;; subs xzr, x0, x6
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x2]
;; str w1, [x8, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x6, [x1, #8]
;; sub x6, x6, #4
;; subs xzr, x0, x6
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x1]
;; ldr w0, [x8, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x8, [x2, #8]
;; movn x7, #4099
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x2]
;; add x11, x0, #4096
;; str w1, [x11, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1, #8]
;; movn x7, #4099
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x1]
;; add x9, x0, #4096
;; ldr w0, [x9, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w8, #65531
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x2, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x2]
;; movz x13, #65535, LSL #16
;; add x13, x13, x0
;; str w1, [x13, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movn w8, #65531
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x1, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x1]
;; movz x11, #65535, LSL #16
;; add x11, x11, x0
;; ldr w0, [x11, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x5, [x2, #8]
;; subs xzr, x0, x5
;; b.lo label1 ; b label3
;; block1:
;; ldr x7, [x2]
;; strb w1, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x5, [x1, #8]
;; subs xzr, x0, x5
;; b.lo label1 ; b label3
;; block1:
;; ldr x7, [x1]
;; ldrb w0, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x8, [x2, #8]
;; movn x7, #4096
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x2]
;; add x11, x0, #4096
;; strb w1, [x11, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1, #8]
;; movn x7, #4096
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x1]
;; add x9, x0, #4096
;; ldrb w0, [x9, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w8, #65534
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x2, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x2]
;; movz x13, #65535, LSL #16
;; add x13, x13, x0
;; strb w1, [x13, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movn w8, #65534
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x1, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x1]
;; movz x11, #65535, LSL #16
;; add x11, x11, x0
;; ldrb w0, [x11, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x9, [x2, #8]
;; sub x9, x9, #4
;; ldr x10, [x2]
;; add x10, x10, x0
;; movz x8, #0
;; subs xzr, x0, x9
;; csel x11, x8, x10, hi
;; csdb
;; str w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x9, [x1, #8]
;; sub x9, x9, #4
;; ldr x10, [x1]
;; add x10, x10, x0
;; movz x8, #0
;; subs xzr, x0, x9
;; csel x11, x8, x10, hi
;; csdb
;; ldr w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x11, [x2, #8]
;; movn x10, #4099
;; add x12, x11, x10
;; ldr x11, [x2]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; str w1, [x13]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x11, [x1, #8]
;; movn x10, #4099
;; add x12, x11, x10
;; ldr x11, [x1]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; ldr w0, [x13]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w11, #65531
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x2, #8]
;; ldr x15, [x2]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; str w1, [x15]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; movn w11, #65531
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x1, #8]
;; ldr x15, [x1]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; ldr w0, [x15]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x8, [x2, #8]
;; ldr x9, [x2]
;; add x9, x9, x0
;; movz x7, #0
;; subs xzr, x0, x8
;; csel x10, x7, x9, hs
;; csdb
;; strb w1, [x10]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1, #8]
;; ldr x9, [x1]
;; add x9, x9, x0
;; movz x7, #0
;; subs xzr, x0, x8
;; csel x10, x7, x9, hs
;; csdb
;; ldrb w0, [x10]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x11, [x2, #8]
;; movn x10, #4096
;; add x12, x11, x10
;; ldr x11, [x2]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; strb w1, [x13]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x11, [x1, #8]
;; movn x10, #4096
;; add x12, x11, x10
;; ldr x11, [x1]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; ldrb w0, [x13]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w11, #65534
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x2, #8]
;; ldr x15, [x2]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; strb w1, [x15]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; movn w11, #65534
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x1, #8]
;; ldr x15, [x1]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; ldrb w0, [x15]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x6, [x2, #8]
;; sub x6, x6, #4
;; subs xzr, x0, x6
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x2]
;; str w1, [x8, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x6, [x1, #8]
;; sub x6, x6, #4
;; subs xzr, x0, x6
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x1]
;; ldr w0, [x8, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x8, [x2, #8]
;; movn x7, #4099
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x2]
;; add x11, x0, #4096
;; str w1, [x11, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1, #8]
;; movn x7, #4099
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x1]
;; add x9, x0, #4096
;; ldr w0, [x9, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w8, #65531
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x2, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x2]
;; movz x13, #65535, LSL #16
;; add x13, x13, x0
;; str w1, [x13, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movn w8, #65531
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x1, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x1]
;; movz x11, #65535, LSL #16
;; add x11, x11, x0
;; ldr w0, [x11, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x5, [x2, #8]
;; subs xzr, x0, x5
;; b.lo label1 ; b label3
;; block1:
;; ldr x7, [x2]
;; strb w1, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x5, [x1, #8]
;; subs xzr, x0, x5
;; b.lo label1 ; b label3
;; block1:
;; ldr x7, [x1]
;; ldrb w0, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x8, [x2, #8]
;; movn x7, #4096
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x2]
;; add x11, x0, #4096
;; strb w1, [x11, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1, #8]
;; movn x7, #4096
;; add x9, x8, x7
;; subs xzr, x0, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x1]
;; add x9, x0, #4096
;; ldrb w0, [x9, x10]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w8, #65534
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x2, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x2]
;; movz x13, #65535, LSL #16
;; add x13, x13, x0
;; strb w1, [x13, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movn w8, #65534
;; adds x10, x0, x8
;; b.lo 8 ; udf
;; ldr x11, [x1, #8]
;; subs xzr, x10, x11
;; b.ls label1 ; b label3
;; block1:
;; ldr x12, [x1]
;; movz x11, #65535, LSL #16
;; add x11, x11, x0
;; ldrb w0, [x11, x12]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x9, [x2, #8]
;; sub x9, x9, #4
;; ldr x10, [x2]
;; add x10, x10, x0
;; movz x8, #0
;; subs xzr, x0, x9
;; csel x11, x8, x10, hi
;; csdb
;; str w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x9, [x1, #8]
;; sub x9, x9, #4
;; ldr x10, [x1]
;; add x10, x10, x0
;; movz x8, #0
;; subs xzr, x0, x9
;; csel x11, x8, x10, hi
;; csdb
;; ldr w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x11, [x2, #8]
;; movn x10, #4099
;; add x12, x11, x10
;; ldr x11, [x2]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; str w1, [x13]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x11, [x1, #8]
;; movn x10, #4099
;; add x12, x11, x10
;; ldr x11, [x1]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; ldr w0, [x13]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w11, #65531
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x2, #8]
;; ldr x15, [x2]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; str w1, [x15]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; movn w11, #65531
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x1, #8]
;; ldr x15, [x1]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; ldr w0, [x15]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x8, [x2, #8]
;; ldr x9, [x2]
;; add x9, x9, x0
;; movz x7, #0
;; subs xzr, x0, x8
;; csel x10, x7, x9, hs
;; csdb
;; strb w1, [x10]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1, #8]
;; ldr x9, [x1]
;; add x9, x9, x0
;; movz x7, #0
;; subs xzr, x0, x8
;; csel x10, x7, x9, hs
;; csdb
;; ldrb w0, [x10]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,74 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x11, [x2, #8]
;; movn x10, #4096
;; add x12, x11, x10
;; ldr x11, [x2]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; strb w1, [x13]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x11, [x1, #8]
;; movn x10, #4096
;; add x12, x11, x10
;; ldr x11, [x1]
;; add x11, x11, x0
;; add x11, x11, #4096
;; movz x10, #0
;; subs xzr, x0, x12
;; csel x13, x10, x11, hi
;; csdb
;; ldrb w0, [x13]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,78 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; movn w11, #65534
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x2, #8]
;; ldr x15, [x2]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; strb w1, [x15]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; movn w11, #65534
;; adds x13, x0, x11
;; b.lo 8 ; udf
;; ldr x14, [x1, #8]
;; ldr x15, [x1]
;; add x15, x15, x0
;; movz x12, #65535, LSL #16
;; add x15, x15, x12
;; movz x12, #0
;; subs xzr, x13, x14
;; csel x15, x12, x15, hi
;; csdb
;; ldrb w0, [x15]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; mov w6, w0
;; orr x7, xzr, #268435452
;; subs xzr, x6, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x2]
;; str w1, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w6, w0
;; orr x7, xzr, #268435452
;; subs xzr, x6, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x1]
;; ldr w0, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; mov w8, w0
;; movz w9, #61436
;; movk w9, w9, #4095, LSL #16
;; subs xzr, x8, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x2]
;; add x10, x10, #4096
;; str w1, [x10, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w8, w0
;; movz w9, #61436
;; movk w9, w9, #4095, LSL #16
;; subs xzr, x8, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x1]
;; add x9, x10, #4096
;; ldr w0, [x9, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; mov w6, w0
;; orr x7, xzr, #268435455
;; subs xzr, x6, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x2]
;; strb w1, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w6, w0
;; orr x7, xzr, #268435455
;; subs xzr, x6, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x8, [x1]
;; ldrb w0, [x8, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; mov w8, w0
;; movz w9, #61439
;; movk w9, w9, #4095, LSL #16
;; subs xzr, x8, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x2]
;; add x10, x10, #4096
;; strb w1, [x10, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; mov w8, w0
;; movz w9, #61439
;; movk w9, w9, #4095, LSL #16
;; subs xzr, x8, x9
;; b.ls label1 ; b label3
;; block1:
;; ldr x10, [x1]
;; add x9, x10, #4096
;; ldrb w0, [x9, w0, UXTW]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2]
;; add x10, x10, x0, UXTW
;; orr x7, xzr, #268435452
;; movz x11, #0
;; subs xzr, x9, x7
;; csel x12, x11, x10, hi
;; csdb
;; str w1, [x12]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1]
;; add x10, x10, x0, UXTW
;; orr x7, xzr, #268435452
;; movz x11, #0
;; subs xzr, x9, x7
;; csel x12, x11, x10, hi
;; csdb
;; ldr w0, [x12]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; mov w11, w0
;; ldr x12, [x2]
;; add x12, x12, x0, UXTW
;; add x12, x12, #4096
;; movz w9, #61436
;; movk w9, w9, #4095, LSL #16
;; movz x13, #0
;; subs xzr, x11, x9
;; csel x15, x13, x12, hi
;; csdb
;; str w1, [x15]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w11, w0
;; ldr x12, [x1]
;; add x12, x12, x0, UXTW
;; add x12, x12, #4096
;; movz w9, #61436
;; movk w9, w9, #4095, LSL #16
;; movz x13, #0
;; subs xzr, x11, x9
;; csel x15, x13, x12, hi
;; csdb
;; ldr w0, [x15]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,68 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; mov w9, w0
;; ldr x10, [x2]
;; add x10, x10, x0, UXTW
;; orr x7, xzr, #268435455
;; movz x11, #0
;; subs xzr, x9, x7
;; csel x12, x11, x10, hi
;; csdb
;; strb w1, [x12]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w9, w0
;; ldr x10, [x1]
;; add x10, x10, x0, UXTW
;; orr x7, xzr, #268435455
;; movz x11, #0
;; subs xzr, x9, x7
;; csel x12, x11, x10, hi
;; csdb
;; ldrb w0, [x12]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,72 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; mov w11, w0
;; ldr x12, [x2]
;; add x12, x12, x0, UXTW
;; add x12, x12, #4096
;; movz w9, #61439
;; movk w9, w9, #4095, LSL #16
;; movz x13, #0
;; subs xzr, x11, x9
;; csel x15, x13, x12, hi
;; csdb
;; strb w1, [x15]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; mov w11, w0
;; ldr x12, [x1]
;; add x12, x12, x0, UXTW
;; add x12, x12, #4096
;; movz w9, #61439
;; movk w9, w9, #4095, LSL #16
;; movz x13, #0
;; subs xzr, x11, x9
;; csel x15, x13, x12, hi
;; csdb
;; ldrb w0, [x15]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,54 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x4, [x2]
;; str w1, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x4, [x1]
;; ldr w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,56 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x5, [x2]
;; add x5, x5, #4096
;; str w1, [x5, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x5, [x1]
;; add x4, x5, #4096
;; ldr w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,54 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x4, [x2]
;; strb w1, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x4, [x1]
;; ldrb w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,56 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x5, [x2]
;; add x5, x5, #4096
;; strb w1, [x5, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x5, [x1]
;; add x4, x5, #4096
;; ldrb w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,54 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x4, [x2]
;; str w1, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x4, [x1]
;; ldr w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,56 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x5, [x2]
;; add x5, x5, #4096
;; str w1, [x5, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x5, [x1]
;; add x4, x5, #4096
;; ldr w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,54 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x4, [x2]
;; strb w1, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x4, [x1]
;; ldrb w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,56 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x5, [x2]
;; add x5, x5, #4096
;; strb w1, [x5, w0, UXTW]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x5, [x1]
;; add x4, x5, #4096
;; ldrb w0, [x4, w0, UXTW]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i32"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; orr x5, xzr, #268435452
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x2]
;; str w1, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; orr x5, xzr, #268435452
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x1]
;; ldr w0, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; movz w7, #61436
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x2]
;; add x10, x0, #4096
;; str w1, [x10, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movz w7, #61436
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x1]
;; add x8, x0, #4096
;; ldr w0, [x8, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; orr x5, xzr, #268435455
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x2]
;; strb w1, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; orr x5, xzr, #268435455
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x1]
;; ldrb w0, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; movz w7, #61439
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x2]
;; add x10, x0, #4096
;; strb w1, [x10, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movz w7, #61439
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x1]
;; add x8, x0, #4096
;; ldrb w0, [x8, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x8, [x2]
;; add x8, x8, x0
;; orr x6, xzr, #268435452
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; str w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1]
;; add x8, x8, x0
;; orr x6, xzr, #268435452
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; ldr w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x10, [x2]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61436
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; str w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x10, [x1]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61436
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; ldr w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x8, [x2]
;; add x8, x8, x0
;; orr x6, xzr, #268435455
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; strb w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1]
;; add x8, x8, x0
;; orr x6, xzr, #268435455
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; ldrb w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x10, [x2]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61439
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; strb w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x10, [x1]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61439
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; ldrb w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; orr x5, xzr, #268435452
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x2]
;; str w1, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; orr x5, xzr, #268435452
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x1]
;; ldr w0, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; movz w7, #61436
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x2]
;; add x10, x0, #4096
;; str w1, [x10, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movz w7, #61436
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x1]
;; add x8, x0, #4096
;; ldr w0, [x8, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; orr x5, xzr, #268435455
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x2]
;; strb w1, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; orr x5, xzr, #268435455
;; subs xzr, x0, x5
;; b.ls label1 ; b label3
;; block1:
;; ldr x7, [x1]
;; ldrb w0, [x7, x0]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; movz w7, #61439
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x2]
;; add x10, x0, #4096
;; strb w1, [x10, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; movz w7, #61439
;; movk w7, w7, #4095, LSL #16
;; subs xzr, x0, x7
;; b.ls label1 ; b label3
;; block1:
;; ldr x9, [x1]
;; add x8, x0, #4096
;; ldrb w0, [x8, x9]
;; b label2
;; block2:
;; ret
;; block3:
;; udf #0xc11f

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; ldr x8, [x2]
;; add x8, x8, x0
;; orr x6, xzr, #268435452
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; str w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1]
;; add x8, x8, x0
;; orr x6, xzr, #268435452
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; ldr w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x10, [x2]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61436
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; str w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x10, [x1]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61436
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; ldr w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,66 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; ldr x8, [x2]
;; add x8, x8, x0
;; orr x6, xzr, #268435455
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; strb w1, [x11]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x8, [x1]
;; add x8, x8, x0
;; orr x6, xzr, #268435455
;; movz x9, #0
;; subs xzr, x0, x6
;; csel x11, x9, x8, hi
;; csdb
;; ldrb w0, [x11]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,70 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0x1000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0x1000))
;; function u0:0:
;; block0:
;; ldr x10, [x2]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61439
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; strb w1, [x14]
;; b label1
;; block1:
;; ret
;;
;; function u0:1:
;; block0:
;; ldr x10, [x1]
;; add x10, x10, x0
;; add x10, x10, #4096
;; movz w8, #61439
;; movk w8, w8, #4095, LSL #16
;; movz x11, #0
;; subs xzr, x0, x8
;; csel x14, x11, x10, hi
;; csdb
;; ldrb w0, [x14]
;; b label1
;; block1:
;; ret

View File

@@ -0,0 +1,46 @@
;;! target = "aarch64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=true']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! # (no heap_bound global for static heaps)
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0xffffffff
;;! index_type = "i64"
;;! style = { kind = "static", bound = 0x10000000 }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i64 1)
(func (export "do_store") (param i64 i32)
local.get 0
local.get 1
i32.store8 offset=0xffff0000)
(func (export "do_load") (param i64) (result i32)
local.get 0
i32.load8_u offset=0xffff0000))
;; function u0:0:
;; block0:
;; udf #0xc11f
;;
;; function u0:1:
;; block0:
;; udf #0xc11f

View File

@@ -0,0 +1,74 @@
;;! target = "riscv64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0))
;; function u0:0:
;; block0:
;; uext.w a6,a0
;; ld a7,8(a2)
;; addi a7,a7,-4
;; ule a7,a6,a7##ty=i64
;; bne a7,zero,taken(label1),not_taken(label3)
;; block1:
;; ld a7,0(a2)
;; add a7,a7,a6
;; sw a1,0(a7)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob
;;
;; function u0:1:
;; block0:
;; uext.w a6,a0
;; ld a7,8(a1)
;; addi a7,a7,-4
;; ule a7,a6,a7##ty=i64
;; bne a7,zero,taken(label1),not_taken(label3)
;; block1:
;; ld a7,0(a1)
;; add a7,a7,a6
;; lw a0,0(a7)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob

View File

@@ -0,0 +1,82 @@
;;! target = "riscv64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0x1000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0x1000))
;; function u0:0:
;; block0:
;; uext.w t0,a0
;; ld t1,8(a2)
;; lui t4,1048575
;; addi t4,t4,4092
;; add t2,t1,t4
;; ule t1,t0,t2##ty=i64
;; bne t1,zero,taken(label1),not_taken(label3)
;; block1:
;; ld t1,0(a2)
;; add t1,t1,t0
;; lui t0,1
;; add t2,t1,t0
;; sw a1,0(t2)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob
;;
;; function u0:1:
;; block0:
;; uext.w t0,a0
;; ld t1,8(a1)
;; lui t4,1048575
;; addi t4,t4,4092
;; add t2,t1,t4
;; ule t1,t0,t2##ty=i64
;; bne t1,zero,taken(label1),not_taken(label3)
;; block1:
;; ld t1,0(a1)
;; add t1,t1,t0
;; lui t0,1
;; add t2,t1,t0
;; lw a0,0(t2)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob

View File

@@ -0,0 +1,84 @@
;;! target = "riscv64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store offset=0xffff0000)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load offset=0xffff0000))
;; function u0:0:
;; block0:
;; uext.w t0,a0
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0004
;; add t1,t0,t3
;; ult t2,t1,t0##ty=i64
;; trap_if t2,heap_oob
;; ld t2,8(a2)
;; ule t1,t1,t2##ty=i64
;; bne t1,zero,taken(label1),not_taken(label3)
;; block1:
;; ld t2,0(a2)
;; add t2,t2,t0
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000
;; add a0,t2,t1
;; sw a1,0(a0)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob
;;
;; function u0:1:
;; block0:
;; uext.w t0,a0
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0004
;; add t1,t0,t3
;; ult t2,t1,t0##ty=i64
;; trap_if t2,heap_oob
;; ld t2,8(a1)
;; ule t1,t1,t2##ty=i64
;; bne t1,zero,taken(label1),not_taken(label3)
;; block1:
;; ld t2,0(a1)
;; add t2,t2,t0
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000
;; add a0,t2,t1
;; lw a0,0(a0)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob

View File

@@ -0,0 +1,72 @@
;;! target = "riscv64"
;;!
;;! settings = ['enable_heap_access_spectre_mitigation=false']
;;!
;;! compile = true
;;!
;;! [globals.vmctx]
;;! type = "i64"
;;! vmctx = true
;;!
;;! [globals.heap_base]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 0, readonly = true }
;;!
;;! [globals.heap_bound]
;;! type = "i64"
;;! load = { base = "vmctx", offset = 8, readonly = true }
;;!
;;! [[heaps]]
;;! base = "heap_base"
;;! min_size = 0x10000
;;! offset_guard_size = 0
;;! index_type = "i32"
;;! style = { kind = "dynamic", bound = "heap_bound" }
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;; !!! GENERATED BY 'make-load-store-tests.sh' DO NOT EDIT !!!
;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(module
(memory i32 1)
(func (export "do_store") (param i32 i32)
local.get 0
local.get 1
i32.store8 offset=0)
(func (export "do_load") (param i32) (result i32)
local.get 0
i32.load8_u offset=0))
;; function u0:0:
;; block0:
;; uext.w a5,a0
;; ld a6,8(a2)
;; ult a6,a5,a6##ty=i64
;; bne a6,zero,taken(label1),not_taken(label3)
;; block1:
;; ld a6,0(a2)
;; add a6,a6,a5
;; sb a1,0(a6)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob
;;
;; function u0:1:
;; block0:
;; uext.w a5,a0
;; ld a6,8(a1)
;; ult a6,a5,a6##ty=i64
;; bne a6,zero,taken(label1),not_taken(label3)
;; block1:
;; ld a6,0(a1)
;; add a6,a6,a5
;; lbu a0,0(a6)
;; j label2
;; block2:
;; ret
;; block3:
;; udf##trap_code=heap_oob

Some files were not shown because too many files have changed in this diff Show More