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:
Nick Fitzgerald
2022-11-29 12:53:14 -08:00
committed by GitHub
parent 913a2ec8c8
commit 2ad3f78624
13 changed files with 330 additions and 10 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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