Cranelift: fix heap_{load,store} test generator script (#5348)
Was missing some '$' characters and so was comparing string literals against string literals instead of variable values against string literals. Regenerated tests to fix them and add missing tests.
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i32, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i32
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i32, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i32
|
||||||
|
fn0 = %do_store(i64, i32, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: dynamic, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=true
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i32, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i32
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i32, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i32
|
||||||
|
fn0 = %do_store(i64, i32, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: dynamic, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -7,7 +7,7 @@ test interpret
|
|||||||
;; target aarch64
|
;; target aarch64
|
||||||
;; target riscv64
|
;; target riscv64
|
||||||
|
|
||||||
set enable_heap_access_spectre_mitigation=true
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
function %do_store(i64 vmctx, i32, i32) {
|
function %do_store(i64 vmctx, i32, i32) {
|
||||||
gv0 = vmctx
|
gv0 = vmctx
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i64, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i64
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i64, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i64
|
||||||
|
fn0 = %do_store(i64, i64, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: dynamic, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=true
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i64, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i64
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i64, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
gv2 = load.i64 notrap aligned gv0+8
|
||||||
|
heap0 = dynamic gv1, min 0x1000, bound gv2, offset_guard 0, index_type i64
|
||||||
|
fn0 = %do_store(i64, i64, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: dynamic, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -7,7 +7,7 @@ test interpret
|
|||||||
;; target aarch64
|
;; target aarch64
|
||||||
;; target riscv64
|
;; target riscv64
|
||||||
|
|
||||||
set enable_heap_access_spectre_mitigation=true
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
function %do_store(i64 vmctx, i64, i32) {
|
function %do_store(i64 vmctx, i64, i32) {
|
||||||
gv0 = vmctx
|
gv0 = vmctx
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i32, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i32
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i32, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i32
|
||||||
|
fn0 = %do_store(i64, i32, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: static, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=true
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i32, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i32
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i32, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i32
|
||||||
|
fn0 = %do_store(i64, i32, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i32, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: static, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -7,7 +7,7 @@ test interpret
|
|||||||
;; target aarch64
|
;; target aarch64
|
||||||
;; target riscv64
|
;; target riscv64
|
||||||
|
|
||||||
set enable_heap_access_spectre_mitigation=true
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
function %do_store(i64 vmctx, i32, i32) {
|
function %do_store(i64 vmctx, i32, i32) {
|
||||||
gv0 = vmctx
|
gv0 = vmctx
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i64, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i64
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i64, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i64
|
||||||
|
fn0 = %do_store(i64, i64, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: static, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
;; !!! GENERATED BY 'make-heap-load-store-tests.sh' DO NOT EDIT !!!
|
||||||
|
|
||||||
|
test interpret
|
||||||
|
;; test run
|
||||||
|
;; target x86_64
|
||||||
|
;; target s390x
|
||||||
|
;; target aarch64
|
||||||
|
;; target riscv64
|
||||||
|
|
||||||
|
set enable_heap_access_spectre_mitigation=true
|
||||||
|
|
||||||
|
function %do_store(i64 vmctx, i64, i32) {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i64
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
heap_store.i32 heap0 little v1+4, v2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
function %test(i64 vmctx, i64, i32) -> i32 {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = load.i64 notrap aligned gv0+0
|
||||||
|
|
||||||
|
heap0 = static gv1, min 0x1000, bound 0x1000, offset_guard 0, index_type i64
|
||||||
|
fn0 = %do_store(i64, i64, i32)
|
||||||
|
|
||||||
|
block0(v0: i64, v1: i64, v2: i32):
|
||||||
|
call fn0(v0, v1, v2)
|
||||||
|
v3 = heap_load.i32 heap0 little v1+4
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
; heap: static, size=0x1000, ptr=vmctx+0, bound=vmctx+8
|
||||||
|
; run: %test(0, 0) == 0
|
||||||
|
; run: %test(0, -1) == -1
|
||||||
|
; run: %test(16, 1) == 1
|
||||||
|
; run: %test(16, -1) == -1
|
||||||
|
; run: %test(2049, 0xaabb_ccdd) == 0xaabb_ccdd
|
||||||
@@ -7,7 +7,7 @@ test interpret
|
|||||||
;; target aarch64
|
;; target aarch64
|
||||||
;; target riscv64
|
;; target riscv64
|
||||||
|
|
||||||
set enable_heap_access_spectre_mitigation=true
|
set enable_heap_access_spectre_mitigation=false
|
||||||
|
|
||||||
function %do_store(i64 vmctx, i64, i32) {
|
function %do_store(i64 vmctx, i64, i32) {
|
||||||
gv0 = vmctx
|
gv0 = vmctx
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ function generate_one_test() {
|
|||||||
local spectre=$4
|
local spectre=$4
|
||||||
|
|
||||||
local enable_spectre=true
|
local enable_spectre=true
|
||||||
if [[ spectre == "no" ]]; then
|
if [[ $spectre == "no" ]]; then
|
||||||
enable_spectre=false
|
enable_spectre=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local have_guards=yes
|
local have_guards=yes
|
||||||
if [[ guard == "0" ]]; then
|
if [[ $guard == "0" ]]; then
|
||||||
have_guards=no
|
have_guards=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -79,10 +79,10 @@ block0(v0: i64, v1: ${index_type}, v2: i32):
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
for spectre in yes no; do
|
for spectre in "yes" "no"; do
|
||||||
for guard in 0 0xffff_ffff; do
|
for guard in "0" "0xffff_ffff"; do
|
||||||
for index_type in i32 i64; do
|
for index_type in "i32" "i64"; do
|
||||||
for kind in static dynamic; do
|
for kind in "static" "dynamic"; do
|
||||||
generate_one_test $kind $index_type $guard $spectre
|
generate_one_test $kind $index_type $guard $spectre
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user