Skip to content

Commit

Permalink
Cranelift: fix heap_{load,store} test generator script (bytecodeall…
Browse files Browse the repository at this point in the history
…iance#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.
  • Loading branch information
fitzgen authored Nov 29, 2022
1 parent 913a2ec commit 2ad3f78
Show file tree
Hide file tree
Showing 13 changed files with 330 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ test interpret
;; target aarch64
;; target riscv64

set enable_heap_access_spectre_mitigation=true
set enable_heap_access_spectre_mitigation=false

function %do_store(i64 vmctx, i32, i32) {
gv0 = vmctx
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ test interpret
;; target aarch64
;; target riscv64

set enable_heap_access_spectre_mitigation=true
set enable_heap_access_spectre_mitigation=false

function %do_store(i64 vmctx, i64, i32) {
gv0 = vmctx
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ test interpret
;; target aarch64
;; target riscv64

set enable_heap_access_spectre_mitigation=true
set enable_heap_access_spectre_mitigation=false

function %do_store(i64 vmctx, i32, i32) {
gv0 = vmctx
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ test interpret
;; target aarch64
;; target riscv64

set enable_heap_access_spectre_mitigation=true
set enable_heap_access_spectre_mitigation=false

function %do_store(i64 vmctx, i64, i32) {
gv0 = vmctx
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ function generate_one_test() {
local spectre=$4

local enable_spectre=true
if [[ spectre == "no" ]]; then
if [[ $spectre == "no" ]]; then
enable_spectre=false
fi

local have_guards=yes
if [[ guard == "0" ]]; then
if [[ $guard == "0" ]]; then
have_guards=no
fi

Expand Down Expand Up @@ -79,10 +79,10 @@ block0(v0: i64, v1: ${index_type}, v2: i32):
EOF
}

for spectre in yes no; do
for guard in 0 0xffff_ffff; do
for index_type in i32 i64; do
for kind in static dynamic; do
for spectre in "yes" "no"; do
for guard in "0" "0xffff_ffff"; do
for index_type in "i32" "i64"; do
for kind in "static" "dynamic"; do
generate_one_test $kind $index_type $guard $spectre
done
done
Expand Down

0 comments on commit 2ad3f78

Please sign in to comment.