From 3d2d891d7e1492d179cd8da7a618fbdd5efcca2c Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 16 Mar 2024 20:41:50 +0900 Subject: feat: add spec testsuites --- tests/fixtures/spec_testsuites/core/int_exprs.wast | 350 +++++++++++++++++++++ 1 file changed, 350 insertions(+) create mode 100644 tests/fixtures/spec_testsuites/core/int_exprs.wast (limited to 'tests/fixtures/spec_testsuites/core/int_exprs.wast') diff --git a/tests/fixtures/spec_testsuites/core/int_exprs.wast b/tests/fixtures/spec_testsuites/core/int_exprs.wast new file mode 100644 index 0000000..22e1fbc --- /dev/null +++ b/tests/fixtures/spec_testsuites/core/int_exprs.wast @@ -0,0 +1,350 @@ +;; Test interesting integer "expressions". These tests contain code +;; patterns which tempt common value-changing optimizations. + +;; Test that x+1>n is not folded to x. + +(module + (func (export "i32.no_fold_shl_shr_s") (param $x i32) (result i32) + (i32.shr_s (i32.shl (local.get $x) (i32.const 1)) (i32.const 1))) + (func (export "i32.no_fold_shl_shr_u") (param $x i32) (result i32) + (i32.shr_u (i32.shl (local.get $x) (i32.const 1)) (i32.const 1))) + + (func (export "i64.no_fold_shl_shr_s") (param $x i64) (result i64) + (i64.shr_s (i64.shl (local.get $x) (i64.const 1)) (i64.const 1))) + (func (export "i64.no_fold_shl_shr_u") (param $x i64) (result i64) + (i64.shr_u (i64.shl (local.get $x) (i64.const 1)) (i64.const 1))) +) + +(assert_return (invoke "i32.no_fold_shl_shr_s" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "i32.no_fold_shl_shr_u" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "i64.no_fold_shl_shr_s" (i64.const 0x8000000000000000)) (i64.const 0)) +(assert_return (invoke "i64.no_fold_shl_shr_u" (i64.const 0x8000000000000000)) (i64.const 0)) + +;; Test that x>>n<