From d1c268b76f65e69ea708096d5023c4d731cff594 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 11 Jul 2024 20:02:34 +0900 Subject: fix: various spectests --- tests/fixtures/spec_testsuites/core/memory.wast | 65 +++++++++++++++++-------- 1 file changed, 45 insertions(+), 20 deletions(-) (limited to 'tests/fixtures/spec_testsuites/core/memory.wast') diff --git a/tests/fixtures/spec_testsuites/core/memory.wast b/tests/fixtures/spec_testsuites/core/memory.wast index 497b69f..baebde3 100644 --- a/tests/fixtures/spec_testsuites/core/memory.wast +++ b/tests/fixtures/spec_testsuites/core/memory.wast @@ -136,44 +136,44 @@ ;; Sign and zero extending memory loads (func (export "i32_load8_s") (param $i i32) (result i32) - (i32.store8 (i32.const 8) (local.get $i)) - (i32.load8_s (i32.const 8)) + (i32.store8 (i32.const 8) (local.get $i)) + (i32.load8_s (i32.const 8)) ) (func (export "i32_load8_u") (param $i i32) (result i32) - (i32.store8 (i32.const 8) (local.get $i)) - (i32.load8_u (i32.const 8)) + (i32.store8 (i32.const 8) (local.get $i)) + (i32.load8_u (i32.const 8)) ) (func (export "i32_load16_s") (param $i i32) (result i32) - (i32.store16 (i32.const 8) (local.get $i)) - (i32.load16_s (i32.const 8)) + (i32.store16 (i32.const 8) (local.get $i)) + (i32.load16_s (i32.const 8)) ) (func (export "i32_load16_u") (param $i i32) (result i32) - (i32.store16 (i32.const 8) (local.get $i)) - (i32.load16_u (i32.const 8)) + (i32.store16 (i32.const 8) (local.get $i)) + (i32.load16_u (i32.const 8)) ) (func (export "i64_load8_s") (param $i i64) (result i64) - (i64.store8 (i32.const 8) (local.get $i)) - (i64.load8_s (i32.const 8)) + (i64.store8 (i32.const 8) (local.get $i)) + (i64.load8_s (i32.const 8)) ) (func (export "i64_load8_u") (param $i i64) (result i64) - (i64.store8 (i32.const 8) (local.get $i)) - (i64.load8_u (i32.const 8)) + (i64.store8 (i32.const 8) (local.get $i)) + (i64.load8_u (i32.const 8)) ) (func (export "i64_load16_s") (param $i i64) (result i64) - (i64.store16 (i32.const 8) (local.get $i)) - (i64.load16_s (i32.const 8)) + (i64.store16 (i32.const 8) (local.get $i)) + (i64.load16_s (i32.const 8)) ) (func (export "i64_load16_u") (param $i i64) (result i64) - (i64.store16 (i32.const 8) (local.get $i)) - (i64.load16_u (i32.const 8)) + (i64.store16 (i32.const 8) (local.get $i)) + (i64.load16_u (i32.const 8)) ) (func (export "i64_load32_s") (param $i i64) (result i64) - (i64.store32 (i32.const 8) (local.get $i)) - (i64.load32_s (i32.const 8)) + (i64.store32 (i32.const 8) (local.get $i)) + (i64.load32_s (i32.const 8)) ) (func (export "i64_load32_u") (param $i i64) (result i64) - (i64.store32 (i32.const 8) (local.get $i)) - (i64.load32_u (i32.const 8)) + (i64.store32 (i32.const 8) (local.get $i)) + (i64.load32_u (i32.const 8)) ) ) @@ -240,3 +240,28 @@ "(import \"\" \"\" (memory $foo 1))" "(import \"\" \"\" (memory $foo 1))") "duplicate memory") + +;; Test that exporting random globals does not change a memory's semantics. + +(module + (memory (export "memory") 1 1) + + ;; These should not change the behavior of memory accesses. + (global (export "__data_end") i32 (i32.const 10000)) + (global (export "__stack_top") i32 (i32.const 10000)) + (global (export "__heap_base") i32 (i32.const 10000)) + + (func (export "load") (param i32) (result i32) + (i32.load8_u (local.get 0)) + ) +) + +;; None of these memory accesses should trap. +(assert_return (invoke "load" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 10000)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 20000)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 30000)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 40000)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 50000)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 60000)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 65535)) (i32.const 0)) -- cgit v1.2.3-70-g09d2