From 5dce08437ef1fe07a480baa5466bf0b6f896bbb9 Mon Sep 17 00:00:00 2001 From: "Ben L. Titzer" Date: Wed, 5 Aug 2026 14:54:28 -0400 Subject: [PATCH 1/2] [wide-arithmetic] Implement Phase 4 proposal --- README.md | 1 + src/engine/BytecodeIterator.v3 | 4 + src/engine/CodeValidator.v3 | 4 + src/engine/Extension.v3 | 1 + src/engine/Opcodes.v3 | 5 ++ src/engine/SigCache.v3 | 3 + src/engine/V3Eval.v3 | 31 ++++++++ src/engine/v3/V3Interpreter.v3 | 28 +++++++ src/engine/x86-64/X86_64Interpreter.v3 | 37 ++++++++- src/engine/x86-64/X86_64SinglePassCompiler.v3 | 27 +++++++ src/util/BytecodeVisitor.v3 | 5 ++ .../ext:wide-arithmetic/add128_00.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_00.wast | 12 +++ .../ext:wide-arithmetic/add128_01.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_01.wast | 12 +++ .../ext:wide-arithmetic/add128_02.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_02.wast | 12 +++ .../ext:wide-arithmetic/add128_03.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_03.wast | 12 +++ .../ext:wide-arithmetic/add128_04.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_04.wast | 12 +++ .../ext:wide-arithmetic/add128_05.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_05.wast | 12 +++ .../ext:wide-arithmetic/add128_06.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_06.wast | 12 +++ .../ext:wide-arithmetic/add128_07.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_07.wast | 12 +++ .../ext:wide-arithmetic/add128_08.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_08.wast | 12 +++ .../ext:wide-arithmetic/add128_09.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_09.wast | 12 +++ .../ext:wide-arithmetic/add128_10.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_10.wast | 12 +++ .../ext:wide-arithmetic/add128_11.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_11.wast | 12 +++ .../ext:wide-arithmetic/add128_12.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_12.wast | 12 +++ .../ext:wide-arithmetic/add128_13.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_13.wast | 12 +++ .../ext:wide-arithmetic/add128_14.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_14.wast | 12 +++ .../ext:wide-arithmetic/add128_15.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_15.wast | 12 +++ .../ext:wide-arithmetic/add128_16.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_16.wast | 12 +++ .../ext:wide-arithmetic/add128_17.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_17.wast | 12 +++ .../ext:wide-arithmetic/add128_18.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_18.wast | 12 +++ .../ext:wide-arithmetic/add128_19.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_19.wast | 12 +++ .../ext:wide-arithmetic/add128_20.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_20.wast | 12 +++ .../ext:wide-arithmetic/add128_21.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_21.wast | 12 +++ .../ext:wide-arithmetic/add128_22.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_22.wast | 12 +++ .../ext:wide-arithmetic/add128_23.bin.wast | 18 +++++ .../ext:wide-arithmetic/add128_23.wast | 12 +++ test/regress/ext:wide-arithmetic/build.sh | 21 +++++ .../ext:wide-arithmetic/invalid_00.bin.wast | 9 +++ .../ext:wide-arithmetic/invalid_00.wast | 10 +++ .../ext:wide-arithmetic/invalid_01.bin.wast | 9 +++ .../ext:wide-arithmetic/invalid_01.wast | 9 +++ .../ext:wide-arithmetic/invalid_02.bin.wast | 9 +++ .../ext:wide-arithmetic/invalid_02.wast | 10 +++ .../ext:wide-arithmetic/invalid_03.bin.wast | 9 +++ .../ext:wide-arithmetic/invalid_03.wast | 9 +++ .../ext:wide-arithmetic/invalid_04.bin.wast | 9 +++ .../ext:wide-arithmetic/invalid_04.wast | 8 ++ .../ext:wide-arithmetic/invalid_05.bin.wast | 8 ++ .../ext:wide-arithmetic/invalid_05.wast | 7 ++ .../ext:wide-arithmetic/invalid_06.bin.wast | 9 +++ .../ext:wide-arithmetic/invalid_06.wast | 8 ++ .../ext:wide-arithmetic/invalid_07.bin.wast | 8 ++ .../ext:wide-arithmetic/invalid_07.wast | 7 ++ .../mul_wide_s_00.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_00.wast | 8 ++ .../mul_wide_s_01.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_01.wast | 8 ++ .../mul_wide_s_02.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_02.wast | 8 ++ .../mul_wide_s_03.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_03.wast | 8 ++ .../mul_wide_s_04.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_04.wast | 8 ++ .../mul_wide_s_05.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_05.wast | 8 ++ .../mul_wide_s_06.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_06.wast | 8 ++ .../mul_wide_s_07.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_07.wast | 8 ++ .../mul_wide_s_08.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_08.wast | 8 ++ .../mul_wide_s_09.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_09.wast | 8 ++ .../mul_wide_s_10.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_10.wast | 8 ++ .../mul_wide_s_11.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_11.wast | 8 ++ .../mul_wide_s_12.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_12.wast | 8 ++ .../mul_wide_s_13.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_13.wast | 8 ++ .../mul_wide_s_14.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_14.wast | 8 ++ .../mul_wide_s_15.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_15.wast | 8 ++ .../mul_wide_s_16.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_16.wast | 8 ++ .../mul_wide_s_17.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_17.wast | 8 ++ .../mul_wide_s_18.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_18.wast | 8 ++ .../mul_wide_s_19.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_19.wast | 8 ++ .../mul_wide_s_20.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_20.wast | 8 ++ .../mul_wide_s_21.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_21.wast | 8 ++ .../mul_wide_s_22.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_s_22.wast | 8 ++ .../mul_wide_s_23.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_s_23.wast | 8 ++ .../mul_wide_u_00.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_00.wast | 8 ++ .../mul_wide_u_01.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_01.wast | 8 ++ .../mul_wide_u_02.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_02.wast | 8 ++ .../mul_wide_u_03.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_03.wast | 8 ++ .../mul_wide_u_04.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_04.wast | 8 ++ .../mul_wide_u_05.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_u_05.wast | 8 ++ .../mul_wide_u_06.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_06.wast | 8 ++ .../mul_wide_u_07.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_07.wast | 8 ++ .../mul_wide_u_08.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_08.wast | 8 ++ .../mul_wide_u_09.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_09.wast | 8 ++ .../mul_wide_u_10.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_10.wast | 8 ++ .../mul_wide_u_11.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_u_11.wast | 8 ++ .../mul_wide_u_12.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_12.wast | 8 ++ .../mul_wide_u_13.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_13.wast | 8 ++ .../mul_wide_u_14.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_14.wast | 8 ++ .../mul_wide_u_15.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_u_15.wast | 8 ++ .../mul_wide_u_16.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_16.wast | 8 ++ .../mul_wide_u_17.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_u_17.wast | 8 ++ .../mul_wide_u_18.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_18.wast | 8 ++ .../mul_wide_u_19.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_19.wast | 8 ++ .../mul_wide_u_20.bin.wast | 16 ++++ .../ext:wide-arithmetic/mul_wide_u_20.wast | 8 ++ .../mul_wide_u_21.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_21.wast | 8 ++ .../mul_wide_u_22.bin.wast | 13 +++ .../ext:wide-arithmetic/mul_wide_u_22.wast | 8 ++ .../overlong_add128_00.bin.wast | 24 ++++++ .../overlong_add128_00.wast | 62 +++++++++++++++ .../overlong_mul_wide_s_00.bin.wast | 19 +++++ .../overlong_mul_wide_s_00.wast | 60 ++++++++++++++ .../overlong_mul_wide_u_00.bin.wast | 19 +++++ .../overlong_mul_wide_u_00.wast | 60 ++++++++++++++ .../overlong_sub128_00.bin.wast | 24 ++++++ .../overlong_sub128_00.wast | 62 +++++++++++++++ .../stress_alias_add00.bin.wast | 43 ++++++++++ .../stress_alias_add00.wast | 15 ++++ .../stress_alias_add01.bin.wast | 55 +++++++++++++ .../stress_alias_add01.wast | 15 ++++ .../stress_alias_mul00.bin.wast | 79 +++++++++++++++++++ .../stress_alias_mul00.wast | 24 ++++++ .../stress_alias_sub00.bin.wast | 43 ++++++++++ .../stress_alias_sub00.wast | 15 ++++ .../stress_chain00.bin.wast | 68 ++++++++++++++++ .../ext:wide-arithmetic/stress_chain00.wast | 16 ++++ .../stress_chain01.bin.wast | 48 +++++++++++ .../ext:wide-arithmetic/stress_chain01.wast | 13 +++ .../stress_clobber00.bin.wast | 45 +++++++++++ .../ext:wide-arithmetic/stress_clobber00.wast | 25 ++++++ .../stress_computed00.bin.wast | 56 +++++++++++++ .../stress_computed00.wast | 23 ++++++ .../stress_const_add00.bin.wast | 55 +++++++++++++ .../stress_const_add00.wast | 15 ++++ .../stress_const_add01.bin.wast | 9 +++ .../stress_const_add01.wast | 9 +++ .../stress_const_sub00.bin.wast | 55 +++++++++++++ .../stress_const_sub00.wast | 15 ++++ .../stress_loop00.bin.wast | 26 ++++++ .../ext:wide-arithmetic/stress_loop00.wast | 28 +++++++ .../stress_mul128_00.bin.wast | 59 ++++++++++++++ .../ext:wide-arithmetic/stress_mul128_00.wast | 23 ++++++ .../stress_pressure00.bin.wast | 44 +++++++++++ .../stress_pressure00.wast | 64 +++++++++++++++ .../stress_results00.bin.wast | 79 +++++++++++++++++++ .../ext:wide-arithmetic/stress_results00.wast | 35 ++++++++ .../ext:wide-arithmetic/sub128_00.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_00.wast | 12 +++ .../ext:wide-arithmetic/sub128_01.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_01.wast | 12 +++ .../ext:wide-arithmetic/sub128_02.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_02.wast | 12 +++ .../ext:wide-arithmetic/sub128_03.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_03.wast | 12 +++ .../ext:wide-arithmetic/sub128_04.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_04.wast | 12 +++ .../ext:wide-arithmetic/sub128_05.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_05.wast | 12 +++ .../ext:wide-arithmetic/sub128_06.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_06.wast | 12 +++ .../ext:wide-arithmetic/sub128_07.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_07.wast | 12 +++ .../ext:wide-arithmetic/sub128_08.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_08.wast | 12 +++ .../ext:wide-arithmetic/sub128_09.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_09.wast | 12 +++ .../ext:wide-arithmetic/sub128_10.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_10.wast | 12 +++ .../ext:wide-arithmetic/sub128_11.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_11.wast | 12 +++ .../ext:wide-arithmetic/sub128_12.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_12.wast | 12 +++ .../ext:wide-arithmetic/sub128_13.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_13.wast | 12 +++ .../ext:wide-arithmetic/sub128_14.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_14.wast | 12 +++ .../ext:wide-arithmetic/sub128_15.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_15.wast | 12 +++ .../ext:wide-arithmetic/sub128_16.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_16.wast | 12 +++ .../ext:wide-arithmetic/sub128_17.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_17.wast | 12 +++ .../ext:wide-arithmetic/sub128_18.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_18.wast | 12 +++ .../ext:wide-arithmetic/sub128_19.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_19.wast | 12 +++ .../ext:wide-arithmetic/sub128_20.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_20.wast | 12 +++ .../ext:wide-arithmetic/sub128_21.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_21.wast | 12 +++ .../ext:wide-arithmetic/sub128_22.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_22.wast | 12 +++ .../ext:wide-arithmetic/sub128_23.bin.wast | 18 +++++ .../ext:wide-arithmetic/sub128_23.wast | 12 +++ 256 files changed, 4196 insertions(+), 1 deletion(-) create mode 100644 test/regress/ext:wide-arithmetic/add128_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_00.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_01.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_02.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_02.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_03.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_03.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_04.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_04.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_05.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_05.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_06.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_06.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_07.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_07.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_08.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_08.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_09.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_09.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_10.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_10.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_11.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_11.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_12.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_12.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_13.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_13.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_14.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_14.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_15.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_15.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_16.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_16.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_17.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_17.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_18.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_18.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_19.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_19.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_20.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_20.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_21.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_21.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_22.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_22.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_23.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128_23.wast create mode 100755 test/regress/ext:wide-arithmetic/build.sh create mode 100644 test/regress/ext:wide-arithmetic/invalid_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_00.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_01.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_02.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_02.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_03.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_03.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_04.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_04.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_05.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_05.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_06.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_06.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_07.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid_07.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_00.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_01.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_02.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_03.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_04.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_05.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_06.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_07.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_08.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_09.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_10.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_11.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_12.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_13.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_14.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_15.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_16.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_17.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_18.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_19.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_20.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_21.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_22.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_23.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_00.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_01.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_02.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_03.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_04.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_05.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_06.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_07.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_08.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_09.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_10.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_11.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_12.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_13.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_14.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_15.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_16.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_17.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_18.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_19.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_20.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_21.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_22.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_add128_00.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/overlong_sub128_00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add01.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_mul00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias_sub00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_chain00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_chain00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_chain01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_chain01.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_clobber00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_clobber00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_computed00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_computed00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const_add00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const_add01.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const_sub00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_loop00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_loop00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_mul128_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_mul128_00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_pressure00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_pressure00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_results00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_results00.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_00.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_00.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_01.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_01.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_02.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_02.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_03.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_03.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_04.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_04.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_05.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_05.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_06.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_06.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_07.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_07.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_08.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_08.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_09.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_09.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_10.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_10.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_11.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_11.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_12.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_12.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_13.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_13.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_14.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_14.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_15.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_15.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_16.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_16.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_17.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_17.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_18.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_18.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_19.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_19.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_20.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_20.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_21.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_21.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_22.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_22.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_23.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128_23.wast diff --git a/README.md b/README.md index 9c51c3974..d6879e913 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Newer features are under development and vary in their support in the different | memory64 | ✅| ✅ | ✅ | ✅ | | stack-switching | ✅| ✅ | ✅ | ✅ | | custom-page-sizes | ✅| ✅ | | | +| wide-arithmetic | ✅| ✅ | ✅ | ✅ | | legacy EH | ✅| ✅ | ☑ | ☑ | | threads | ✅| ☑ | ☑ | | diff --git a/src/engine/BytecodeIterator.v3 b/src/engine/BytecodeIterator.v3 index 48e012b00..379e2d3de 100644 --- a/src/engine/BytecodeIterator.v3 +++ b/src/engine/BytecodeIterator.v3 @@ -450,6 +450,10 @@ class BytecodeIterator { TABLE_GROW => v.visit_TABLE_GROW(read_TABLE()); TABLE_SIZE => v.visit_TABLE_SIZE(read_TABLE()); TABLE_FILL => v.visit_TABLE_FILL(read_TABLE()); + I64_ADD128 => v.visit_I64_ADD128(); + I64_SUB128 => v.visit_I64_SUB128(); + I64_MUL_WIDE_S => v.visit_I64_MUL_WIDE_S(); + I64_MUL_WIDE_U => v.visit_I64_MUL_WIDE_U(); V128_LOAD => v.visit_V128_LOAD(read_MEMARG()); V128_LOAD_8X8_S => v.visit_V128_LOAD_8X8_S(read_MEMARG()); V128_LOAD_8X8_U => v.visit_V128_LOAD_8X8_U(read_MEMARG()); diff --git a/src/engine/CodeValidator.v3 b/src/engine/CodeValidator.v3 index 4eb0932ff..cd7fb116a 100644 --- a/src/engine/CodeValidator.v3 +++ b/src/engine/CodeValidator.v3 @@ -1109,6 +1109,10 @@ class CodeValidator(extensions: Extension.set, limits: Limits, module: Module, e popE(table.elemtype); popE(it); } + I64_ADD128, I64_SUB128, I64_MUL_WIDE_S, I64_MUL_WIDE_U => { + if (!checkExtension(Extension.WIDE_ARITHMETIC, opcode)) return; + checkSignature(opcode.sig); + } V128_LOAD_8_SPLAT => checkLoad(opcode, 0, ValueType.V128); V128_LOAD_16_SPLAT => checkLoad(opcode, 1, ValueType.V128); V128_LOAD_32_SPLAT => checkLoad(opcode, 2, ValueType.V128); diff --git a/src/engine/Extension.v3 b/src/engine/Extension.v3 index 1a5872d6d..683dc7950 100644 --- a/src/engine/Extension.v3 +++ b/src/engine/Extension.v3 @@ -16,6 +16,7 @@ enum Extension(short_name: string, help: string) { CUSTOM_PAGE_SIZES("custom-page-sizes", "Custom page sizes"), EXTENDED_CONST("extended-const", "Extended constant expressions"), RELAXED_SIMD("relaxed-simd", "Relaxed SIMD"), + WIDE_ARITHMETIC("wide-arithmetic", "128-bit wide arithmetic"), WASM_3_0("wasm-3.0", "All Wasm 3.0 features"), JIT_INTERFACE("jit-interface", "Runtime code generation with func.new"), WIZENG("wizeng", "Wizard-specific engine capabilities"), diff --git a/src/engine/Opcodes.v3 b/src/engine/Opcodes.v3 index f3e45e4a4..f5dc7135e 100644 --- a/src/engine/Opcodes.v3 +++ b/src/engine/Opcodes.v3 @@ -276,6 +276,11 @@ enum Opcode(prefix: u8, code: u16, mnemonic: string, imms: Array, sig: TABLE_GROW (0xFC, 0x0F, "table.grow", imm.TABLE, null), TABLE_SIZE (0xFC, 0x10, "table.size", imm.TABLE, sig.v_i), TABLE_FILL (0xFC, 0x11, "table.fill", imm.TABLE, null), + // 0xFC prefix: wide arithmetic. + I64_ADD128 (0xFC, 0x13, "i64.add128", imm.NONE, sig.llll_ll), + I64_SUB128 (0xFC, 0x14, "i64.sub128", imm.NONE, sig.llll_ll), + I64_MUL_WIDE_S (0xFC, 0x15, "i64.mul_wide_s", imm.NONE, sig.ll_ll), + I64_MUL_WIDE_U (0xFC, 0x16, "i64.mul_wide_u", imm.NONE, sig.ll_ll), // 0xFD prefix: vector instructions. V128_LOAD (0xFD, 0, "v128.load", imm.MEMARG, sig.i_s), V128_LOAD_8X8_S (0xFD, 1, "v128.load8x8_s", imm.MEMARG, sig.i_s), diff --git a/src/engine/SigCache.v3 b/src/engine/SigCache.v3 index 06ef25ce1..e418384eb 100644 --- a/src/engine/SigCache.v3 +++ b/src/engine/SigCache.v3 @@ -44,6 +44,7 @@ component SigCache { def arr_iig: Array = [ValueType.I32, ValueType.I32, ValueTypes.FUNCREF]; def arr_ll: Array = [ValueType.I64, ValueType.I64]; + def arr_llll: Array = [ValueType.I64, ValueType.I64, ValueType.I64, ValueType.I64]; def arr_l: Array = [ValueType.I64]; def arr_ff: Array = [ValueType.F32, ValueType.F32]; @@ -133,6 +134,8 @@ component SigCache { def l_d = S(arr_l, arr_d); def ll_l = S(arr_ll, arr_l); def ll_i = S(arr_ll, arr_i); + def ll_ll = S(arr_ll, arr_ll); + def llll_ll = S(arr_llll, arr_ll); def f_i = S(arr_f, arr_i); def f_l = S(arr_f, arr_l); diff --git a/src/engine/V3Eval.v3 b/src/engine/V3Eval.v3 index 048da76c8..5226d4dd6 100644 --- a/src/engine/V3Eval.v3 +++ b/src/engine/V3Eval.v3 @@ -531,6 +531,37 @@ component V3Eval { def F32_REINTERPRET_I32 = float.view; def F64_REINTERPRET_I64 = double.view; + // ---- wide (128-bit) arithmetic -------------------------------------- + // All of these take and return 128-bit quantities as (low, high) pairs of 64-bit halves. + def I64_ADD128(alo: u64, ahi: u64, blo: u64, bhi: u64) -> (u64, u64) { + var lo = alo + blo; + var carry: u64 = if(lo < alo, 1, 0); + return (lo, ahi + bhi + carry); + } + def I64_SUB128(alo: u64, ahi: u64, blo: u64, bhi: u64) -> (u64, u64) { + var lo = alo - blo; + var borrow: u64 = if(alo < blo, 1, 0); + return (lo, ahi - bhi - borrow); + } + def I64_MUL_WIDE_U(x: u64, y: u64) -> (u64, u64) { + var x0 = u64.!(u32.view(x)), x1 = x >> 32; + var y0 = u64.!(u32.view(y)), y1 = y >> 32; + var p00 = x0 * y0, p01 = x0 * y1, p10 = x1 * y0, p11 = x1 * y1; + var mid = (p00 >> 32) + u64.!(u32.view(p01)) + u64.!(u32.view(p10)); + var lo = u64.!(u32.view(p00)) | (mid << 32); + var hi = p11 + (p01 >> 32) + (p10 >> 32) + (mid >> 32); + return (lo, hi); + } + def I64_MUL_WIDE_S(x: i64, y: i64) -> (u64, u64) { + var t = I64_MUL_WIDE_U(u64.view(x), u64.view(y)); + var hi = t.1; + // Fix up the unsigned result: subtract each operand that was interpreted + // as 2^64 too large from the upper half of the product. + if (x < 0) hi = hi - u64.view(y); + if (y < 0) hi = hi - u64.view(x); + return (t.0, hi); + } + // ---- sign-extension and zero-extension helpers ---------------------- def I32_EXTEND8_S(a: i32) -> i32 { return i8.view(a); diff --git a/src/engine/v3/V3Interpreter.v3 b/src/engine/v3/V3Interpreter.v3 index 674875b10..e1112faa7 100644 --- a/src/engine/v3/V3Interpreter.v3 +++ b/src/engine/v3/V3Interpreter.v3 @@ -981,6 +981,10 @@ class V3Interpreter extends WasmStack { var table_index = codeptr.read_uleb31(); Runtime.TABLE_FILL(this, frame.func.instance, table_index); } + I64_ADD128 => do_wwww_ww(V3Eval.I64_ADD128); + I64_SUB128 => do_wwww_ww(V3Eval.I64_SUB128); + I64_MUL_WIDE_S => do_ll_ww(V3Eval.I64_MUL_WIDE_S); + I64_MUL_WIDE_U => do_ww_ww(V3Eval.I64_MUL_WIDE_U); V128_LOAD => doLoad(ACCESS_V128, pushs); V128_LOAD_64_LANE => doLoadLane(ACCESS_U64); V128_LOAD_32_LANE => doLoadLane(ACCESS_U32); @@ -1962,6 +1966,30 @@ class V3Interpreter extends WasmStack { values.elems[values.top-2] = Value.I64(r); values.top--; } + def do_wwww_ww(f: (u64, u64, u64, u64) -> (u64, u64)) { + var bhi = Values.unbox_w(values.elems[values.top-1]); + var blo = Values.unbox_w(values.elems[values.top-2]); + var ahi = Values.unbox_w(values.elems[values.top-3]); + var alo = Values.unbox_w(values.elems[values.top-4]); + var r = f(alo, ahi, blo, bhi); + values.elems[values.top-4] = Value.I64(r.0); + values.elems[values.top-3] = Value.I64(r.1); + values.top -= 2; + } + def do_ww_ww(f: (u64, u64) -> (u64, u64)) { + var y = Values.unbox_w(values.elems[values.top-1]); + var x = Values.unbox_w(values.elems[values.top-2]); + var r = f(x, y); + values.elems[values.top-2] = Value.I64(r.0); + values.elems[values.top-1] = Value.I64(r.1); + } + def do_ll_ww(f: (i64, i64) -> (u64, u64)) { + var y = Values.unbox_l(values.elems[values.top-1]); + var x = Values.unbox_l(values.elems[values.top-2]); + var r = f(x, y); + values.elems[values.top-2] = Value.I64(r.0); + values.elems[values.top-1] = Value.I64(r.1); + } def do_ww_wt(f: (u64, u64) -> (u64, TrapReason)) { var y = Values.unbox_w(values.elems[values.top-1]); var x = Values.unbox_w(values.elems[values.top-2]); diff --git a/src/engine/x86-64/X86_64Interpreter.v3 b/src/engine/x86-64/X86_64Interpreter.v3 index 1f0dba0b9..581bb30bd 100644 --- a/src/engine/x86-64/X86_64Interpreter.v3 +++ b/src/engine/x86-64/X86_64Interpreter.v3 @@ -327,7 +327,7 @@ class X86_64InterpreterGen(ic: X86_64InterpreterCode, w: DataWriter) { def k_frame_size = X86_64InterpreterFrame.size; - def vsph = VspHelper.new(r_vsp, valuerep, 3); + def vsph = VspHelper.new(r_vsp, valuerep, 4); def dispatchTables = Array<(byte, IcCodeRef, IcCodeRef, byte, IcCodeRef)>.new( Opcodes.code_pages.length + Opcodes.num_subpages + 1); @@ -926,6 +926,7 @@ class X86_64InterpreterGen(ic: X86_64InterpreterCode, w: DataWriter) { genCompares(); genI32Arith(); genI64Arith(); + genWideArith(); genExtensions(); genF32Arith(); genF64Arith(); @@ -1998,6 +1999,40 @@ class X86_64InterpreterGen(ic: X86_64InterpreterCode, w: DataWriter) { def genAtomicCompareAndExchange(cmpxchg: (X86_64Addr, X86_64Gpr) -> T) { genAtomicOp(cmpxchg, null, null, true); } + // ext:wide-arithmetic. Operands and results are (low, high) pairs of i64 slots, + // with the low half deeper in the stack. + def genWideArith() { + for (t in [ + (Opcode.I64_ADD128, asm.q.add_r_m, asm.q.adc_r_m), + (Opcode.I64_SUB128, asm.q.sub_r_m, asm.q.sbb_r_m) + ]) { + bindHandler(t.0); + asm.movq_r_m(r_tmp0, vsph[-4].value); // a.low + asm.movq_r_m(r_tmp1, vsph[-3].value); // a.high + t.1(r_tmp0, vsph[-2].value); // low halves, setting carry/borrow + t.2(r_tmp1, vsph[-1].value); // high halves, consuming carry/borrow + asm.movq_m_r(vsph[-4].value, r_tmp0); + asm.movq_m_r(vsph[-3].value, r_tmp1); + adjustVsp(-2); + endHandler(); + } + for (t in [ + (Opcode.I64_MUL_WIDE_S, asm.q.imul_r), + (Opcode.I64_MUL_WIDE_U, asm.q.mul_r) + ]) { + bindHandler(t.0); + asm.movq_r_m(r_tmp0, vsph[-1].value); // {r_tmp1} is RDX, so use RCX + masm.emit_spill_ivar(X86_64MasmRegs.RAX); + masm.emit_spill_ivar(X86_64MasmRegs.RDX); + asm.movq_r_m(R.RAX, vsph[-2].value); + t.1(r_tmp0); // RDX:RAX = RAX * RCX + asm.movq_m_r(vsph[-2].value, R.RAX); // low + asm.movq_m_r(vsph[-1].value, R.RDX); // high + masm.emit_restore_ivar(X86_64MasmRegs.RAX); + masm.emit_restore_ivar(X86_64MasmRegs.RDX); + endHandler(); + } + } def genExtensions() { bindHandler(Opcode.I32_WRAP_I64); { genTagUpdate(BpTypeCode.I32.code); diff --git a/src/engine/x86-64/X86_64SinglePassCompiler.v3 b/src/engine/x86-64/X86_64SinglePassCompiler.v3 index ee1edfea6..eb56cf68d 100644 --- a/src/engine/x86-64/X86_64SinglePassCompiler.v3 +++ b/src/engine/x86-64/X86_64SinglePassCompiler.v3 @@ -230,6 +230,33 @@ class X86_64SinglePassCompiler extends SinglePassCompiler { def visit_I64_OR() { visitSimpleOp2_ww_w(V3Eval.I64_OR, asm.q.or_r_i, asm.q.or_r_m, asm.q.or_r_r); } def visit_I64_XOR() { visitSimpleOp2_ww_w(V3Eval.I64_XOR, asm.q.xor_r_i, asm.q.xor_r_m, asm.q.xor_r_r); } + // ext:wide-arithmetic. Both operands and results are (low, high) pairs of i64 + // values, with the low half deeper on the stack. + private def visitWideAddSub(emit_lo: (X86_64Gpr, X86_64Gpr) -> X86_64Assembler, + emit_hi: (X86_64Gpr, X86_64Gpr) -> X86_64Assembler) { + var bhi = popReg(), blo = popReg(); + var ahi = popRegToReuse(0), alo = popRegToReuse(0); // reused in place as the results + emit_lo(G(alo.reg), G(blo.reg)); // sets carry/borrow + emit_hi(G(ahi.reg), G(bhi.reg)); // consumes carry/borrow + state.push(alo.kindFlagsAndTag(IN_REG), alo.reg, 0); + state.push(ahi.kindFlagsAndTag(IN_REG), ahi.reg, 0); + } + def visit_I64_ADD128() { visitWideAddSub(asm.q.add_r_r, asm.q.adc_r_r); } + def visit_I64_SUB128() { visitWideAddSub(asm.q.sub_r_r, asm.q.sbb_r_r); } + private def visitMulWide(emit: X86_64Gpr -> X86_64Assembler) { + var b = popFixedReg(X86_64MasmRegs.RCX); // XXX: use any reg except RAX or RDX + var a = popFixedReg(X86_64MasmRegs.RAX); + spillRegAndFree(X86_64MasmRegs.RAX); + spillRegAndFree(X86_64MasmRegs.RDX); + emit(G(b.reg)); // RDX:RAX = RAX * b + regAlloc.assign(X86_64MasmRegs.RAX, int.!(state.sp)); + state.push(a.kindFlagsAndTag(IN_REG), X86_64MasmRegs.RAX, 0); + regAlloc.assign(X86_64MasmRegs.RDX, int.!(state.sp)); + state.push(b.kindFlagsAndTag(IN_REG), X86_64MasmRegs.RDX, 0); // {b}'s slot, so {b}'s tag state + } + def visit_I64_MUL_WIDE_S() { visitMulWide(asm.q.imul_r); } + def visit_I64_MUL_WIDE_U() { visitMulWide(asm.q.mul_r); } + // XXX: try s_m addressing mode for floating point ops def visit_F32_ABS() { var sv = popReg(), r = X(sv.reg), scratch = mmasm.scratch; diff --git a/src/util/BytecodeVisitor.v3 b/src/util/BytecodeVisitor.v3 index d105b47dc..637b190af 100644 --- a/src/util/BytecodeVisitor.v3 +++ b/src/util/BytecodeVisitor.v3 @@ -319,6 +319,11 @@ class BytecodeVisitor { def visit_TABLE_GROW (table_index: u31) { visitTable(Opcode.TABLE_GROW, table_index); } def visit_TABLE_SIZE (table_index: u31) { visitTable(Opcode.TABLE_SIZE, table_index); } def visit_TABLE_FILL (table_index: u31) { visitTable(Opcode.TABLE_FILL, table_index); } + // FC prefix: wide arithmetic. + def visit_I64_ADD128 () { visitBinop(Opcode.I64_ADD128); } + def visit_I64_SUB128 () { visitBinop(Opcode.I64_SUB128); } + def visit_I64_MUL_WIDE_S () { visitBinop(Opcode.I64_MUL_WIDE_S); } + def visit_I64_MUL_WIDE_U () { visitBinop(Opcode.I64_MUL_WIDE_U); } // FD prefix: vector instructions. def visit_V128_LOAD (imm: MemArg) { visitLoad(Opcode.V128_LOAD, imm, 16); } def visit_V128_LOAD_8X8_S (imm: MemArg) { visitLoad(Opcode.V128_LOAD_8X8_S, imm, 8); } diff --git a/test/regress/ext:wide-arithmetic/add128_00.bin.wast b/test/regress/ext:wide-arithmetic/add128_00.bin.wast new file mode 100644 index 000000000..83611c3ba --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_00.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/add128_00.wast b/test/regress/ext:wide-arithmetic/add128_00.wast new file mode 100644 index 000000000..c3f378ca7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_00.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_01.bin.wast b/test/regress/ext:wide-arithmetic/add128_01.bin.wast new file mode 100644 index 000000000..09c33a58b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_01.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/add128_01.wast b/test/regress/ext:wide-arithmetic/add128_01.wast new file mode 100644 index 000000000..1dd6993ce --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_01.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const 1) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_02.bin.wast b/test/regress/ext:wide-arithmetic/add128_02.bin.wast new file mode 100644 index 000000000..80aa337bd --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_02.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/add128_02.wast b/test/regress/ext:wide-arithmetic/add128_02.wast new file mode 100644 index 000000000..663bdf465 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_02.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_03.bin.wast b/test/regress/ext:wide-arithmetic/add128_03.bin.wast new file mode 100644 index 000000000..aea3a0a7d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_03.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x0) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/add128_03.wast b/test/regress/ext:wide-arithmetic/add128_03.wast new file mode 100644 index 000000000..219c84271 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_03.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const -1) (i64.const -1)) + (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_04.bin.wast b/test/regress/ext:wide-arithmetic/add128_04.bin.wast new file mode 100644 index 000000000..3885a8fb9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_04.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0xde70_0b2f_0bdf_e770) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xde70_0b2f_0bdf_e76f) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_04.wast b/test/regress/ext:wide-arithmetic/add128_04.wast new file mode 100644 index 000000000..2ea01697d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_04.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -2418420703207364752) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const -2418420703207364753) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_05.bin.wast b/test/regress/ext:wide-arithmetic/add128_05.bin.wast new file mode 100644 index 000000000..bd687e65c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_05.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0xc072_955d_0e99_803e) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xc072_955d_0e99_803e) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_05.wast b/test/regress/ext:wide-arithmetic/add128_05.wast new file mode 100644 index 000000000..0091438e5 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_05.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const -4579433644172935106) (i64.const -1)) + (i64.const -4579433644172935106) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_06.bin.wast b/test/regress/ext:wide-arithmetic/add128_06.bin.wast new file mode 100644 index 000000000..c6a9acc66 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_06.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_06.wast b/test/regress/ext:wide-arithmetic/add128_06.wast new file mode 100644 index 000000000..13d92b177 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_06.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const -1)) + (i64.const 1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_07.bin.wast b/test/regress/ext:wide-arithmetic/add128_07.bin.wast new file mode 100644 index 000000000..8345ff6ef --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_07.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x2) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/add128_07.wast b/test/regress/ext:wide-arithmetic/add128_07.wast new file mode 100644 index 000000000..9bd2eae00 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_07.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const 2) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_08.bin.wast b/test/regress/ext:wide-arithmetic/add128_08.bin.wast new file mode 100644 index 000000000..732a24d21 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_08.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_08.wast b/test/regress/ext:wide-arithmetic/add128_08.wast new file mode 100644 index 000000000..1f2950c55 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_08.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -1) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const -2) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_09.bin.wast b/test/regress/ext:wide-arithmetic/add128_09.bin.wast new file mode 100644 index 000000000..46d24822b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_09.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_09.wast b/test/regress/ext:wide-arithmetic/add128_09.wast new file mode 100644 index 000000000..fc8c805e9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_09.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const 1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_10.bin.wast b/test/regress/ext:wide-arithmetic/add128_10.bin.wast new file mode 100644 index 000000000..c6f1438a1 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_10.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_10.wast b/test/regress/ext:wide-arithmetic/add128_10.wast new file mode 100644 index 000000000..e8b97a646 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_10.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const -1)) + (i64.const 0) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_11.bin.wast b/test/regress/ext:wide-arithmetic/add128_11.bin.wast new file mode 100644 index 000000000..8fa51c6d0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_11.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/add128_11.wast b/test/regress/ext:wide-arithmetic/add128_11.wast new file mode 100644 index 000000000..5bf93513a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_11.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const -1)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_12.bin.wast b/test/regress/ext:wide-arithmetic/add128_12.bin.wast new file mode 100644 index 000000000..34d1010fd --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_12.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x55d4_90b0_8894_6d6f) + (i64.const 0x0) + (i64.const 0x1) + ) + (i64.const 0x0) + (i64.const 0x55d4_90b0_8894_6d70) +) diff --git a/test/regress/ext:wide-arithmetic/add128_12.wast b/test/regress/ext:wide-arithmetic/add128_12.wast new file mode 100644 index 000000000..98eec8ed8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_12.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 6184727276166606191) + (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 6184727276166606192)) diff --git a/test/regress/ext:wide-arithmetic/add128_13.bin.wast b/test/regress/ext:wide-arithmetic/add128_13.bin.wast new file mode 100644 index 000000000..ca7b12d6e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_13.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x8af1_2cd7_c179_41a2) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x8af1_2cd7_c179_41a3) + (i64.const 0xffff_ffff_ffff_fffe) +) diff --git a/test/regress/ext:wide-arithmetic/add128_13.wast b/test/regress/ext:wide-arithmetic/add128_13.wast new file mode 100644 index 000000000..f3965e33a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_13.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -8434911321912688222) (i64.const -1) + (i64.const 1) (i64.const -1)) + (i64.const -8434911321912688221) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/add128_14.bin.wast b/test/regress/ext:wide-arithmetic/add128_14.bin.wast new file mode 100644 index 000000000..13016bfb0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_14.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_fffe) +) diff --git a/test/regress/ext:wide-arithmetic/add128_14.wast b/test/regress/ext:wide-arithmetic/add128_14.wast new file mode 100644 index 000000000..5a6127486 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_14.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const 1) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/add128_15.bin.wast b/test/regress/ext:wide-arithmetic/add128_15.bin.wast new file mode 100644 index 000000000..f45290336 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_15.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0xb88b_4952_41bf_2634) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0xb88b_4952_41bf_2634) +) diff --git a/test/regress/ext:wide-arithmetic/add128_15.wast b/test/regress/ext:wide-arithmetic/add128_15.wast new file mode 100644 index 000000000..5a67f2eb6 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_15.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -5148941131328838092) + (i64.const 0) (i64.const 0)) + (i64.const 1) (i64.const -5148941131328838092)) diff --git a/test/regress/ext:wide-arithmetic/add128_16.bin.wast b/test/regress/ext:wide-arithmetic/add128_16.bin.wast new file mode 100644 index 000000000..4402671bb --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_16.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x2) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/add128_16.wast b/test/regress/ext:wide-arithmetic/add128_16.wast new file mode 100644 index 000000000..0e993e181 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_16.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const 2) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_17.bin.wast b/test/regress/ext:wide-arithmetic/add128_17.bin.wast new file mode 100644 index 000000000..2bca37456 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_17.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xcd87_b43b_cabe_1ef9) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xcd87_b43b_cabe_1ef8) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_17.wast b/test/regress/ext:wide-arithmetic/add128_17.wast new file mode 100644 index 000000000..f77cd8001 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_17.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -1) (i64.const -1) + (i64.const -3636740005180858631) (i64.const -1)) + (i64.const -3636740005180858632) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_18.bin.wast b/test/regress/ext:wide-arithmetic/add128_18.bin.wast new file mode 100644 index 000000000..31432b158 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_18.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0xb342_9ecf_13cc_104d) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0xb342_9ecf_13cc_104d) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_18.wast b/test/regress/ext:wide-arithmetic/add128_18.wast new file mode 100644 index 000000000..a5f05804f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_18.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -5529682780229988275) (i64.const -1) + (i64.const 0) (i64.const 0)) + (i64.const -5529682780229988275) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_19.bin.wast b/test/regress/ext:wide-arithmetic/add128_19.bin.wast new file mode 100644 index 000000000..e3c865b31 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_19.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0xb551_4210_87c0_d81b) + (i64.const 0xe27_e121_0081_15a9) + (i64.const 0x1) + ) + (i64.const 0xe27_e121_0081_15aa) + (i64.const 0xb551_4210_87c0_d81c) +) diff --git a/test/regress/ext:wide-arithmetic/add128_19.wast b/test/regress/ext:wide-arithmetic/add128_19.wast new file mode 100644 index 000000000..bf06b5d9f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_19.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -5381447440966559717) + (i64.const 1020031372481336745) (i64.const 1)) + (i64.const 1020031372481336746) (i64.const -5381447440966559716)) diff --git a/test/regress/ext:wide-arithmetic/add128_20.bin.wast b/test/regress/ext:wide-arithmetic/add128_20.bin.wast new file mode 100644 index 000000000..b76bc3904 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_20.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/add128_20.wast b/test/regress/ext:wide-arithmetic/add128_20.wast new file mode 100644 index 000000000..0b4c83a02 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_20.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const 0) (i64.const 0)) + (i64.const 1) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_21.bin.wast b/test/regress/ext:wide-arithmetic/add128_21.bin.wast new file mode 100644 index 000000000..12d956e4d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_21.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x813d_e8c2_8da3_52e4) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0x813d_e8c2_8da3_52e5) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/add128_21.wast b/test/regress/ext:wide-arithmetic/add128_21.wast new file mode 100644 index 000000000..10ef93f6b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_21.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -9133888546939907356) (i64.const -1) + (i64.const 1) (i64.const 1)) + (i64.const -9133888546939907355) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_22.bin.wast b/test/regress/ext:wide-arithmetic/add128_22.bin.wast new file mode 100644 index 000000000..dbc4dbdf8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_22.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0xbffe_b739_0e0a_2fc9) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xbffe_b739_0e0a_2fc9) + (i64.const 0xffff_ffff_ffff_fffe) +) diff --git a/test/regress/ext:wide-arithmetic/add128_22.wast b/test/regress/ext:wide-arithmetic/add128_22.wast new file mode 100644 index 000000000..48e7b420c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_22.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const -4612047512704241719) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const -4612047512704241719) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/add128_23.bin.wast b/test/regress/ext:wide-arithmetic/add128_23.bin.wast new file mode 100644 index 000000000..543f8760c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_23.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x5c1_6285_a443_d08c) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x5c1_6285_a443_d08d) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128_23.wast b/test/regress/ext:wide-arithmetic/add128_23.wast new file mode 100644 index 000000000..9cefef3f7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128_23.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 414720966820876428) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const 414720966820876429) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/build.sh b/test/regress/ext:wide-arithmetic/build.sh new file mode 100755 index 000000000..4c940fea4 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/build.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do + HERE="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ $SOURCE != /* ]] && SOURCE="$HERE/$SOURCE" +done +HERE="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" + +cd $HERE + +export WIZENG_LOC=$(cd $HERE/../../../ && pwd) +export SPEC_LOC=${SPEC_LOC:=$(cd $WIZENG_LOC/wasm-spec/repos/wide-arithmetic && pwd)} + +if [ ! -d $SPEC_LOC ]; then + echo "WebAssembly specification repo not found: $SPEC_LOC" + exit 1 +fi + +../build.sh "$@" diff --git a/test/regress/ext:wide-arithmetic/invalid_00.bin.wast b/test/regress/ext:wide-arithmetic/invalid_00.bin.wast new file mode 100644 index 000000000..7e90e582e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_00.bin.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a" + "\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20\01" + "\20\02\20\03\fc\13\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_00.wast b/test/regress/ext:wide-arithmetic/invalid_00.wast new file mode 100644 index 000000000..5fd3c4df6 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_00.wast @@ -0,0 +1,10 @@ +(assert_invalid + (module + (func (param i64 i64 i64 i64) (result i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_01.bin.wast b/test/regress/ext:wide-arithmetic/invalid_01.bin.wast new file mode 100644 index 000000000..d0d3aea12 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_01.bin.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\03\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a" + "\90\80\80\80\00\01\8a\80\80\80\00\00\20\00\20\01" + "\20\02\fc\13\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_01.wast b/test/regress/ext:wide-arithmetic/invalid_01.wast new file mode 100644 index 000000000..5671ba98b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_01.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module + (func (param i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + i64.add128) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_02.bin.wast b/test/regress/ext:wide-arithmetic/invalid_02.bin.wast new file mode 100644 index 000000000..766f2f741 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_02.bin.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a" + "\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20\01" + "\20\02\20\03\fc\14\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_02.wast b/test/regress/ext:wide-arithmetic/invalid_02.wast new file mode 100644 index 000000000..d9e73da07 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_02.wast @@ -0,0 +1,10 @@ +(assert_invalid + (module + (func (param i64 i64 i64 i64) (result i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_03.bin.wast b/test/regress/ext:wide-arithmetic/invalid_03.bin.wast new file mode 100644 index 000000000..99f5abd3f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_03.bin.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\03\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a" + "\90\80\80\80\00\01\8a\80\80\80\00\00\20\00\20\01" + "\20\02\fc\14\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_03.wast b/test/regress/ext:wide-arithmetic/invalid_03.wast new file mode 100644 index 000000000..d13da4034 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_03.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module + (func (param i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + i64.sub128) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_04.bin.wast b/test/regress/ext:wide-arithmetic/invalid_04.bin.wast new file mode 100644 index 000000000..2aa75538b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_04.bin.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\02\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a\8e\80" + "\80\80\00\01\88\80\80\80\00\00\20\00\20\01\fc\15" + "\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_04.wast b/test/regress/ext:wide-arithmetic/invalid_04.wast new file mode 100644 index 000000000..01435649a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_04.wast @@ -0,0 +1,8 @@ +(assert_invalid + (module + (func (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_s) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_05.bin.wast b/test/regress/ext:wide-arithmetic/invalid_05.bin.wast new file mode 100644 index 000000000..e6fd770e7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_05.bin.wast @@ -0,0 +1,8 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a\8c\80" + "\80\80\00\01\86\80\80\80\00\00\20\00\fc\15\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_05.wast b/test/regress/ext:wide-arithmetic/invalid_05.wast new file mode 100644 index 000000000..d1bddb2ff --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_05.wast @@ -0,0 +1,7 @@ +(assert_invalid + (module + (func (param i64) (result i64 i64) + local.get 0 + i64.mul_wide_s) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_06.bin.wast b/test/regress/ext:wide-arithmetic/invalid_06.bin.wast new file mode 100644 index 000000000..f512a4f15 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_06.bin.wast @@ -0,0 +1,9 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\02\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a\8e\80" + "\80\80\00\01\88\80\80\80\00\00\20\00\20\01\fc\16" + "\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_06.wast b/test/regress/ext:wide-arithmetic/invalid_06.wast new file mode 100644 index 000000000..ac8367786 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_06.wast @@ -0,0 +1,8 @@ +(assert_invalid + (module + (func (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_u) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_07.bin.wast b/test/regress/ext:wide-arithmetic/invalid_07.bin.wast new file mode 100644 index 000000000..d9fb0bf73 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_07.bin.wast @@ -0,0 +1,8 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a\8c\80" + "\80\80\00\01\86\80\80\80\00\00\20\00\fc\16\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid_07.wast b/test/regress/ext:wide-arithmetic/invalid_07.wast new file mode 100644 index 000000000..686bb80d1 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid_07.wast @@ -0,0 +1,7 @@ +(assert_invalid + (module + (func (param i64) (result i64 i64) + local.get 0 + i64.mul_wide_u) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast new file mode 100644 index 000000000..c25163f02 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_00.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_00.wast new file mode 100644 index 000000000..31570f657 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_00.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast new file mode 100644 index 000000000..73671d611 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_01.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_01.wast new file mode 100644 index 000000000..356e5d0b7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_01.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast new file mode 100644 index 000000000..d31bf14ef --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_02.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_02.wast new file mode 100644 index 000000000..9b78333f8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_02.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast new file mode 100644 index 000000000..ce8b60497 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x1)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_03.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_03.wast new file mode 100644 index 000000000..11552bef0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_03.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 1)) + (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast new file mode 100644 index 000000000..73671d611 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_04.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_04.wast new file mode 100644 index 000000000..356e5d0b7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_04.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast new file mode 100644 index 000000000..21b959941 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x5742_9ac7_69b3_3a61)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_05.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_05.wast new file mode 100644 index 000000000..6e4d98721 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_05.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 6287758211025156705)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast new file mode 100644 index 000000000..2486b3243 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xa3cd_6a01_b110_8823) (i64.const 0x1)) + (i64.const 0xa3cd_6a01_b110_8823) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_06.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_06.wast new file mode 100644 index 000000000..c1351d744 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_06.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -6643537319803451357) (i64.const 1)) + (i64.const -6643537319803451357) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast new file mode 100644 index 000000000..82a573181 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xdd88_9aa8_4cf0_af1c) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_07.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_07.wast new file mode 100644 index 000000000..586642acc --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_07.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -2483565146858803428) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast new file mode 100644 index 000000000..73671d611 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_08.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_08.wast new file mode 100644 index 000000000..356e5d0b7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_08.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast new file mode 100644 index 000000000..53c16ac9e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xcab9_4e02_cbdd_ba3b) + (i64.const 0x302d_9c77_9f73_013e) + ) + (i64.const 0x47fb_b82b_8aee_554a) + (i64.const 0xf5f9_40a3_4335_88dc) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_09.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_09.wast new file mode 100644 index 000000000..4f7e58ee4 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_09.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -3838951433439430085) (i64.const 3471602925362676030)) + (i64.const 5186941893001237834) (i64.const -722475195264825124)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast new file mode 100644 index 000000000..d87bf03f6 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0x8d55_b850_2f0f_b7f7) + (i64.const 0x6d66_e6b6_97f6_5e92) + ) + (i64.const 0x893e_c13a_14dd_9cde) + (i64.const 0xceff_684a_ce74_ba9b) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_10.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_10.wast new file mode 100644 index 000000000..b224da7b0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_10.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -8262495286814853129) (i64.const 7883241869666573970)) + (i64.const -8557189786755031842) (i64.const -3530988912334554469)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast new file mode 100644 index 000000000..f42859c69 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x3b5f_d493_d409_e495) (i64.const 0x1)) + (i64.const 0x3b5f_d493_d409_e495) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_11.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_11.wast new file mode 100644 index 000000000..0a43220e2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_11.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 4278371902407959701) (i64.const 1)) + (i64.const 4278371902407959701) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast new file mode 100644 index 000000000..e84339dcf --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0x8524_dea9_22e7_e9e2) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x7adb_2156_dd18_161e) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_12.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_12.wast new file mode 100644 index 000000000..622a8806c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_12.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -8852706149487089182) (i64.const -1)) + (i64.const 8852706149487089182) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast new file mode 100644 index 000000000..2ec878671 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_13.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_13.wast new file mode 100644 index 000000000..14e744b69 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_13.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast new file mode 100644 index 000000000..7b5fd01b9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xc3eb_6f02_21d0_c035) + ) + (i64.const 0x3c14_90fd_de2f_3fcb) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_14.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_14.wast new file mode 100644 index 000000000..6f10e8490 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_14.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -4329244561838653387)) + (i64.const 4329244561838653387) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast new file mode 100644 index 000000000..d31bf14ef --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_15.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_15.wast new file mode 100644 index 000000000..9b78333f8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_15.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast new file mode 100644 index 000000000..308fcd873 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x9af_6cdb_82ea_8f59) (i64.const 0x1)) + (i64.const 0x9af_6cdb_82ea_8f59) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_16.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_16.wast new file mode 100644 index 000000000..e8035b307 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_16.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 697896157315764057) (i64.const 1)) + (i64.const 697896157315764057) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast new file mode 100644 index 000000000..73671d611 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_17.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_17.wast new file mode 100644 index 000000000..356e5d0b7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_17.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast new file mode 100644 index 000000000..5d75a8945 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_18.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_18.wast new file mode 100644 index 000000000..114d698c7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_18.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast new file mode 100644 index 000000000..c6a9e740e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0xcbaf_7620_47a2_967f)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_19.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_19.wast new file mode 100644 index 000000000..6ac2317e7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_19.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const -3769664482072947073)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast new file mode 100644 index 000000000..1dade961a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x74c5_911e_1dc9_160e)) + (i64.const 0x74c5_911e_1dc9_160e) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_20.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_20.wast new file mode 100644 index 000000000..c1b7831b0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_20.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 8414291037346403854)) + (i64.const 8414291037346403854) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast new file mode 100644 index 000000000..2ec878671 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_21.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_21.wast new file mode 100644 index 000000000..14e744b69 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_21.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast new file mode 100644 index 000000000..1dfe6af1c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0x4597_a2c5_a024_2ad5) + (i64.const 0xb980_1486_5096_dd3f) + ) + (i64.const 0x2773_dbf3_4aae_6b6b) + (i64.const 0xecd5_c340_ef65_1405) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_22.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_22.wast new file mode 100644 index 000000000..65cedb9b2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_22.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 5014655679779318485) (i64.const -5080037812563681985)) + (i64.const 2842857627777395563) (i64.const -1380983027057486843)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast new file mode 100644 index 000000000..fe2cf4d69 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_23.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_23.wast new file mode 100644 index 000000000..affc0a559 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s_23.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast new file mode 100644 index 000000000..5291710f5 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_00.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_00.wast new file mode 100644 index 000000000..a736675ef --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_00.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast new file mode 100644 index 000000000..c1dc582c9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_01.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_01.wast new file mode 100644 index 000000000..83bf98bbe --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_01.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast new file mode 100644 index 000000000..927a6664c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x1)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_02.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_02.wast new file mode 100644 index 000000000..86ab8d529 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_02.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 1)) + (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast new file mode 100644 index 000000000..fb4dfa1ae --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xbe4b_e781_63d6_3be9) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_03.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_03.wast new file mode 100644 index 000000000..384062675 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_03.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -4734436040338162711) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast new file mode 100644 index 000000000..2dc600f98 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_04.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_04.wast new file mode 100644 index 000000000..d68737c76 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_04.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast new file mode 100644 index 000000000..805f6d25f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0x2d63_7f1f_6276_94b7) + (i64.const 0x5c1a_1c43_1f2e_fb16) + ) + (i64.const 0xb4a3_af72_9be2_34ba) + (i64.const 0x1054_62cc_f90b_b242) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_05.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_05.wast new file mode 100644 index 000000000..cc75f0cb2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_05.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 3270597527173764279) (i64.const 6636648075495406358)) + (i64.const -5430303818902260550) (i64.const 1176674035141685826)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast new file mode 100644 index 000000000..98aaffc03 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x9424_f807_c809_8009) (i64.const 0x1)) + (i64.const 0x9424_f807_c809_8009) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_06.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_06.wast new file mode 100644 index 000000000..d8e001e00 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_06.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -7771814344630108151) (i64.const 1)) + (i64.const -7771814344630108151) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast new file mode 100644 index 000000000..2dc600f98 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_07.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_07.wast new file mode 100644 index 000000000..d68737c76 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_07.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast new file mode 100644 index 000000000..6d8bff8ef --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x92dc_f770_4679_83df)) + (i64.const 0x92dc_f770_4679_83df) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_08.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_08.wast new file mode 100644 index 000000000..42ca2f3b9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_08.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -7864138787704962081)) + (i64.const -7864138787704962081) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast new file mode 100644 index 000000000..c1ad1a696 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x732_4727_608e_2f8a)) + (i64.const 0x732_4727_608e_2f8a) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_09.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_09.wast new file mode 100644 index 000000000..a3c73d12f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_09.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 518555141550256010)) + (i64.const 518555141550256010) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast new file mode 100644 index 000000000..e659926e8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_10.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_10.wast new file mode 100644 index 000000000..aa81a7df8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_10.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast new file mode 100644 index 000000000..9f420f39b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0xf87_220e_51bf_3cd3) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xf078_ddf1_ae40_c32d) + (i64.const 0xf87_220e_51bf_3cd2) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_11.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_11.wast new file mode 100644 index 000000000..c6feaa2f2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_11.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1118900477321231571) (i64.const -1)) + (i64.const -1118900477321231571) (i64.const 1118900477321231570)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast new file mode 100644 index 000000000..d4b65a115 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_12.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_12.wast new file mode 100644 index 000000000..bc83dbb3e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_12.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast new file mode 100644 index 000000000..ead588c92 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xb277_6089_0a76_7315) (i64.const 0x1)) + (i64.const 0xb277_6089_0a76_7315) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_13.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_13.wast new file mode 100644 index 000000000..31842869c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_13.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -5586890671027490027) (i64.const 1)) + (i64.const -5586890671027490027) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast new file mode 100644 index 000000000..7c4f3cbc6 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x3203_7335_56ac_c379)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_14.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_14.wast new file mode 100644 index 000000000..dea502216 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_14.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 3603850799751152505)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast new file mode 100644 index 000000000..fea7c3abd --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_fffe) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_15.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_15.wast new file mode 100644 index 000000000..030d663fe --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_15.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 18446744073709551614)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast new file mode 100644 index 000000000..568517884 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_16.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_16.wast new file mode 100644 index 000000000..5ef9bba8f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_16.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast new file mode 100644 index 000000000..b92931e1b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0x9a14_938e_92f2_5754) + (i64.const 0x3612_ef63_b479_3758) + ) + (i64.const 0x4fa3_6602_eac5_10e0) + (i64.const 0x208b_bca7_ab5c_0b92) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_17.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_17.wast new file mode 100644 index 000000000..e619f12b1 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_17.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const -7344082851774441644) (i64.const 3896439839137544024)) + (i64.const 5738542512914895072) (i64.const 2345175459296971666)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast new file mode 100644 index 000000000..5291710f5 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_18.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_18.wast new file mode 100644 index 000000000..a736675ef --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_18.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast new file mode 100644 index 000000000..7d3a40b56 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x88d_e0df_df55_734d) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_19.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_19.wast new file mode 100644 index 000000000..10f8cdb1e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_19.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 616395976148874061) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast new file mode 100644 index 000000000..005a1e492 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast @@ -0,0 +1,16 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0x2701_b7c5_f895_8858) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xd8fe_483a_076a_77a8) + (i64.const 0x2701_b7c5_f895_8857) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_20.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_20.wast new file mode 100644 index 000000000..d99e2b0c9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_20.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 2810729703362889816) (i64.const -1)) + (i64.const -2810729703362889816) (i64.const 2810729703362889815)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast new file mode 100644 index 000000000..e659926e8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_21.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_21.wast new file mode 100644 index 000000000..aa81a7df8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_21.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast new file mode 100644 index 000000000..2dc600f98 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast @@ -0,0 +1,13 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_22.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_22.wast new file mode 100644 index 000000000..d68737c76 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u_22.wast @@ -0,0 +1,8 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast new file mode 100644 index 000000000..48f17c71b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast @@ -0,0 +1,24 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" + "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" + "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" + "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" + "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" + "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" + "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" + "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" + "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" + "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" + "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x2) + (i64.const 0x3) + (i64.const 0x4) + ) + (i64.const 0x4) + (i64.const 0x6) +) diff --git a/test/regress/ext:wide-arithmetic/overlong_add128_00.wast b/test/regress/ext:wide-arithmetic/overlong_add128_00.wast new file mode 100644 index 000000000..c04a44bbe --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_add128_00.wast @@ -0,0 +1,62 @@ +(module binary + "\00asm" "\01\00\00\00" + + "\01\11" ;; type section, 17 bytes + "\02" ;; 2 count + "\60" ;; type0 = function + "\04\7e\7e\7e\7e" ;; 4 params - all i64 + "\02\7e\7e" ;; 2 results - both i64 + "\60" ;; type1 = function + "\02\7e\7e" ;; 2 params - both i64 + "\02\7e\7e" ;; 2 results - both i64 + + "\03\05" ;; function section, 5 byte + "\04" ;; 4 count + "\00\00\01\01" ;; types of each function (0, 0, 1, 1) + + "\07\3d" ;; export section 0x3d bytes + "\04" ;; 4 count + "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 + "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 + "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 + "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 + + "\0a\37" ;; code section + byte length + "\04" ;; 4 count + + "\0e" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\93\80\00" ;; i64.add128 (overlong) + "\0b" ;; end + + "\0d" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\94\00" ;; i64.sub128 (overlong) + "\0b" ;; end + + "\0c" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) + "\0b" ;; end + + "\0b" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) + "\0b" ;; end +) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 2) + (i64.const 3) (i64.const 4)) + (i64.const 4) (i64.const 6)) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast new file mode 100644 index 000000000..a67b77031 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast @@ -0,0 +1,19 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" + "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" + "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" + "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" + "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" + "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" + "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" + "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" + "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" + "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" + "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_fffe)) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast new file mode 100644 index 000000000..251e6d18b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast @@ -0,0 +1,60 @@ +(module binary + "\00asm" "\01\00\00\00" + + "\01\11" ;; type section, 17 bytes + "\02" ;; 2 count + "\60" ;; type0 = function + "\04\7e\7e\7e\7e" ;; 4 params - all i64 + "\02\7e\7e" ;; 2 results - both i64 + "\60" ;; type1 = function + "\02\7e\7e" ;; 2 params - both i64 + "\02\7e\7e" ;; 2 results - both i64 + + "\03\05" ;; function section, 5 byte + "\04" ;; 4 count + "\00\00\01\01" ;; types of each function (0, 0, 1, 1) + + "\07\3d" ;; export section 0x3d bytes + "\04" ;; 4 count + "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 + "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 + "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 + "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 + + "\0a\37" ;; code section + byte length + "\04" ;; 4 count + + "\0e" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\93\80\00" ;; i64.add128 (overlong) + "\0b" ;; end + + "\0d" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\94\00" ;; i64.sub128 (overlong) + "\0b" ;; end + + "\0c" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) + "\0b" ;; end + + "\0b" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) + "\0b" ;; end +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -2)) + (i64.const -2) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast new file mode 100644 index 000000000..8e6222f11 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast @@ -0,0 +1,19 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" + "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" + "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" + "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" + "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" + "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" + "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" + "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" + "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" + "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" + "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x3) (i64.const 0x2)) + (i64.const 0x6) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast new file mode 100644 index 000000000..dcd62f1bd --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast @@ -0,0 +1,60 @@ +(module binary + "\00asm" "\01\00\00\00" + + "\01\11" ;; type section, 17 bytes + "\02" ;; 2 count + "\60" ;; type0 = function + "\04\7e\7e\7e\7e" ;; 4 params - all i64 + "\02\7e\7e" ;; 2 results - both i64 + "\60" ;; type1 = function + "\02\7e\7e" ;; 2 params - both i64 + "\02\7e\7e" ;; 2 results - both i64 + + "\03\05" ;; function section, 5 byte + "\04" ;; 4 count + "\00\00\01\01" ;; types of each function (0, 0, 1, 1) + + "\07\3d" ;; export section 0x3d bytes + "\04" ;; 4 count + "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 + "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 + "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 + "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 + + "\0a\37" ;; code section + byte length + "\04" ;; 4 count + + "\0e" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\93\80\00" ;; i64.add128 (overlong) + "\0b" ;; end + + "\0d" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\94\00" ;; i64.sub128 (overlong) + "\0b" ;; end + + "\0c" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) + "\0b" ;; end + + "\0b" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) + "\0b" ;; end +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 3) (i64.const 2)) + (i64.const 6) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast new file mode 100644 index 000000000..b0f6e13e1 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast @@ -0,0 +1,24 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" + "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" + "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" + "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" + "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" + "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" + "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" + "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" + "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" + "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" + "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x2) + (i64.const 0x5) + (i64.const 0x1) + (i64.const 0x2) + ) + (i64.const 0x1) + (i64.const 0x3) +) diff --git a/test/regress/ext:wide-arithmetic/overlong_sub128_00.wast b/test/regress/ext:wide-arithmetic/overlong_sub128_00.wast new file mode 100644 index 000000000..2ef8d3939 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/overlong_sub128_00.wast @@ -0,0 +1,62 @@ +(module binary + "\00asm" "\01\00\00\00" + + "\01\11" ;; type section, 17 bytes + "\02" ;; 2 count + "\60" ;; type0 = function + "\04\7e\7e\7e\7e" ;; 4 params - all i64 + "\02\7e\7e" ;; 2 results - both i64 + "\60" ;; type1 = function + "\02\7e\7e" ;; 2 params - both i64 + "\02\7e\7e" ;; 2 results - both i64 + + "\03\05" ;; function section, 5 byte + "\04" ;; 4 count + "\00\00\01\01" ;; types of each function (0, 0, 1, 1) + + "\07\3d" ;; export section 0x3d bytes + "\04" ;; 4 count + "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 + "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 + "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 + "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 + + "\0a\37" ;; code section + byte length + "\04" ;; 4 count + + "\0e" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\93\80\00" ;; i64.add128 (overlong) + "\0b" ;; end + + "\0d" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\94\00" ;; i64.sub128 (overlong) + "\0b" ;; end + + "\0c" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) + "\0b" ;; end + + "\0b" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) + "\0b" ;; end +) +(assert_return (invoke "i64.sub128" + (i64.const 2) (i64.const 5) + (i64.const 1) (i64.const 2)) + (i64.const 1) (i64.const 3)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast new file mode 100644 index 000000000..09043b55b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast @@ -0,0 +1,43 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\8d\80" + "\80\80\00\01\09\61\6c\69\61\73\5f\61\64\64\00\00" + "\0a\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20" + "\00\20\00\20\00\fc\13\0b" +) +(module instance) +(assert_return + (invoke "alias_add" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0x2468_acf1_3579_bde0) + (i64.const 0x2468_acf1_3579_bde0) +) +(assert_return + (invoke "alias_add" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "alias_add" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "alias_add" (i64.const 0x1)) + (i64.const 0x2) + (i64.const 0x2) +) +(assert_return + (invoke "alias_add" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_add" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0x1fdb_9753_0eca_8642) + (i64.const 0x1fdb_9753_0eca_8642) +) +(assert_return + (invoke "alias_add" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0xbd5b_7ddf_95fd_757c) + (i64.const 0xbd5b_7ddf_95fd_757d) +) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add00.wast b/test/regress/ext:wide-arithmetic/stress_alias_add00.wast new file mode 100644 index 000000000..345c93eb1 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_add00.wast @@ -0,0 +1,15 @@ +(module + (func (export "alias_add") (param i64) (result i64 i64) + local.get 0 + local.get 0 + local.get 0 + local.get 0 + i64.add128) +) +(assert_return (invoke "alias_add" (i64.const 1311768467463790320)) (i64.const 2623536934927580640) (i64.const 2623536934927580640)) +(assert_return (invoke "alias_add" (i64.const -1)) (i64.const -2) (i64.const -1)) +(assert_return (invoke "alias_add" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 1)) +(assert_return (invoke "alias_add" (i64.const 1)) (i64.const 2) (i64.const 2)) +(assert_return (invoke "alias_add" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_add" (i64.const 1147797409030816545)) (i64.const 2295594818061633090) (i64.const 2295594818061633090)) +(assert_return (invoke "alias_add" (i64.const -2401053089206453570)) (i64.const -4802106178412907140) (i64.const -4802106178412907139)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast new file mode 100644 index 000000000..1c980da8c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast @@ -0,0 +1,55 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\87" + "\80\80\80\00\01\03\64\62\6c\00\00\0a\92\80\80\80" + "\00\01\8c\80\80\80\00\00\20\00\20\01\20\00\20\01" + "\fc\13\0b" +) +(module instance) +(assert_return + (invoke "dbl" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0x2468_acf1_3579_bde0) + (i64.const 0xbd5b_7ddf_95fd_757c) +) +(assert_return + (invoke "dbl" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0x1fdb_9753_0eca_8643) +) +(assert_return + (invoke "dbl" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "dbl" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x2) + (i64.const 0x2) +) +(assert_return + (invoke "dbl" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "dbl" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1fdb_9753_0eca_8642) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "dbl" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xbd5b_7ddf_95fd_757c) + (i64.const 0x2468_acf1_3579_bde1) +) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add01.wast b/test/regress/ext:wide-arithmetic/stress_alias_add01.wast new file mode 100644 index 000000000..64b53e3df --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_add01.wast @@ -0,0 +1,15 @@ +(module + (func (export "dbl") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 0 + local.get 1 + i64.add128) +) +(assert_return (invoke "dbl" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const 2623536934927580640) (i64.const -4802106178412907140)) +(assert_return (invoke "dbl" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -2) (i64.const 2295594818061633091)) +(assert_return (invoke "dbl" (i64.const -9223372036854775808) (i64.const 0)) (i64.const 0) (i64.const 1)) +(assert_return (invoke "dbl" (i64.const 1) (i64.const 1)) (i64.const 2) (i64.const 2)) +(assert_return (invoke "dbl" (i64.const 0) (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "dbl" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 2295594818061633090) (i64.const -2)) +(assert_return (invoke "dbl" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -4802106178412907140) (i64.const 2623536934927580641)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast new file mode 100644 index 000000000..853f90147 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast @@ -0,0 +1,79 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\83\80\80\80\00\02\00\00\07\97" + "\80\80\80\00\02\08\73\71\75\61\72\65\5f\73\00\00" + "\08\73\71\75\61\72\65\5f\75\00\01\0a\9b\80\80\80" + "\00\02\88\80\80\80\00\00\20\00\20\00\fc\15\0b\88" + "\80\80\80\00\00\20\00\20\00\fc\16\0b" +) +(module instance) +(assert_return + (invoke "square_s" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0xa5e2_0890_f2a5_2100) + (i64.const 0x14b_66dc_33f6_acdc) +) +(assert_return + (invoke "square_s" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "square_s" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x4000_0000_0000_0000) +) +(assert_return + (invoke "square_s" (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "square_s" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "square_s" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0xccde_ec6c_d7a4_4a41) + (i64.const 0xfd_bac0_97c8_dc5a) +) +(assert_return + (invoke "square_s" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0xb295_b2ee_f140_a504) + (i64.const 0x456_4f33_ec95_849c) +) +(assert_return + (invoke "square_u" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0xa5e2_0890_f2a5_2100) + (i64.const 0x14b_66dc_33f6_acdc) +) +(assert_return + (invoke "square_u" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "square_u" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x4000_0000_0000_0000) +) +(assert_return + (invoke "square_u" (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "square_u" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "square_u" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0xccde_ec6c_d7a4_4a41) + (i64.const 0xfd_bac0_97c8_dc5a) +) +(assert_return + (invoke "square_u" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0xb295_b2ee_f140_a504) + (i64.const 0xc1b1_cd13_8292_fa18) +) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_mul00.wast b/test/regress/ext:wide-arithmetic/stress_alias_mul00.wast new file mode 100644 index 000000000..330a82d0a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_mul00.wast @@ -0,0 +1,24 @@ +(module + (func (export "square_s") (param i64) (result i64 i64) + local.get 0 + local.get 0 + i64.mul_wide_s) + (func (export "square_u") (param i64) (result i64 i64) + local.get 0 + local.get 0 + i64.mul_wide_u) +) +(assert_return (invoke "square_s" (i64.const 1311768467463790320)) (i64.const -6493618294075612928) (i64.const 93281313241869532)) +(assert_return (invoke "square_s" (i64.const -1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "square_s" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 4611686018427387904)) +(assert_return (invoke "square_s" (i64.const 1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "square_s" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "square_s" (i64.const 1147797409030816545)) (i64.const -3684247492923995583) (i64.const 71418505450806362)) +(assert_return (invoke "square_s" (i64.const -2401053089206453570)) (i64.const -5578355824108985084) (i64.const 312524308579976348)) +(assert_return (invoke "square_u" (i64.const 1311768467463790320)) (i64.const -6493618294075612928) (i64.const 93281313241869532)) +(assert_return (invoke "square_u" (i64.const -1)) (i64.const 1) (i64.const -2)) +(assert_return (invoke "square_u" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 4611686018427387904)) +(assert_return (invoke "square_u" (i64.const 1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "square_u" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "square_u" (i64.const 1147797409030816545)) (i64.const -3684247492923995583) (i64.const 71418505450806362)) +(assert_return (invoke "square_u" (i64.const -2401053089206453570)) (i64.const -5578355824108985084) (i64.const -4489581869832930792)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast new file mode 100644 index 000000000..bf7d6a4ae --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast @@ -0,0 +1,43 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\8d\80" + "\80\80\00\01\09\61\6c\69\61\73\5f\73\75\62\00\00" + "\0a\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20" + "\00\20\00\20\00\fc\14\0b" +) +(module instance) +(assert_return + (invoke "alias_sub" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_sub00.wast b/test/regress/ext:wide-arithmetic/stress_alias_sub00.wast new file mode 100644 index 000000000..c25ef11e2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias_sub00.wast @@ -0,0 +1,15 @@ +(module + (func (export "alias_sub") (param i64) (result i64 i64) + local.get 0 + local.get 0 + local.get 0 + local.get 0 + i64.sub128) +) +(assert_return (invoke "alias_sub" (i64.const 1311768467463790320)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const -1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const 1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const 1147797409030816545)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const -2401053089206453570)) (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_chain00.bin.wast b/test/regress/ext:wide-arithmetic/stress_chain00.bin.wast new file mode 100644 index 000000000..b7d8dc0da --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_chain00.bin.wast @@ -0,0 +1,68 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8c\80\80\80\00\01\60" + "\06\7e\7e\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00" + "\01\00\07\88\80\80\80\00\01\04\61\64\64\33\00\00" + "\0a\98\80\80\80\00\01\92\80\80\80\00\00\20\00\20" + "\01\20\02\20\03\fc\13\20\04\20\05\fc\13\0b" +) +(module instance) +(assert_return + (invoke "add3" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "add3" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0x0) + (i64.const 0xfedc_ba98_7654_3210) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x1111_1111_1111_1101) + (i64.const 0x1) +) +(assert_return + (invoke "add3" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_fffd) + (i64.const 0x2) +) +(assert_return + (invoke "add3" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "add3" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_fffd) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/stress_chain00.wast b/test/regress/ext:wide-arithmetic/stress_chain00.wast new file mode 100644 index 000000000..f5bf3c8fb --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_chain00.wast @@ -0,0 +1,16 @@ +(module + (func (export "add3") (param i64 i64 i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128 + local.get 4 + local.get 5 + i64.add128) +) +(assert_return (invoke "add3" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0) (i64.const 1) (i64.const 0)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "add3" (i64.const 1311768467463790320) (i64.const 0) (i64.const -81985529216486896) (i64.const 0) (i64.const 1) (i64.const 0)) (i64.const 1229782938247303425) (i64.const 1)) +(assert_return (invoke "add3" (i64.const -1) (i64.const 0) (i64.const -1) (i64.const 0) (i64.const -1) (i64.const 0)) (i64.const -3) (i64.const 2)) +(assert_return (invoke "add3" (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "add3" (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1)) (i64.const -3) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/stress_chain01.bin.wast b/test/regress/ext:wide-arithmetic/stress_chain01.bin.wast new file mode 100644 index 000000000..a7901f03a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_chain01.bin.wast @@ -0,0 +1,48 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8b\80\80\80\00\01\07\6d\75\6c\5f\61\64\64\00" + "\00\0a\94\80\80\80\00\01\8e\80\80\80\00\00\20\00" + "\20\01\fc\16\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "mul_add" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x2) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "mul_add" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfedc_ba98_7654_3210) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x236d_88fe_5618_ceff) + (i64.const 0x121f_a00a_d77d_7422) +) +(assert_return + (invoke "mul_add" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x2a) + (i64.const 0x2b) + ) + (i64.const 0x2a) + (i64.const 0x2b) +) +(assert_return + (invoke "mul_add" + (i64.const 0x1_0000_0000) + (i64.const 0x1_0000_0000) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/stress_chain01.wast b/test/regress/ext:wide-arithmetic/stress_chain01.wast new file mode 100644 index 000000000..bb73a180b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_chain01.wast @@ -0,0 +1,13 @@ +(module + (func (export "mul_add") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "mul_add" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0)) (i64.const 2) (i64.const -2)) +(assert_return (invoke "mul_add" (i64.const 1311768467463790320) (i64.const -81985529216486896) (i64.const -1) (i64.const -1)) (i64.const 2552847189736476415) (i64.const 1305938385386173474)) +(assert_return (invoke "mul_add" (i64.const 0) (i64.const 0) (i64.const 42) (i64.const 43)) (i64.const 42) (i64.const 43)) +(assert_return (invoke "mul_add" (i64.const 4294967296) (i64.const 4294967296) (i64.const 0) (i64.const 0)) (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/stress_clobber00.bin.wast b/test/regress/ext:wide-arithmetic/stress_clobber00.bin.wast new file mode 100644 index 000000000..e57ff912c --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_clobber00.bin.wast @@ -0,0 +1,45 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\07" + "\8b\80\80\80\00\01\07\63\6c\6f\62\62\65\72\00\00" + "\0a\a9\80\80\80\00\01\a3\80\80\80\00\01\02\7e\20" + "\00\20\01\fc\16\21\05\21\04\20\04\20\05\85\20\02" + "\20\03\fc\15\21\05\21\04\20\04\85\20\05\85\0b" +) +(module instance) +(assert_return + (invoke "clobber" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "clobber" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfedc_ba98_7654_3210) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x3) + ) + (i64.const 0x4e8d_d70b_7e9a_44dc) +) +(assert_return + (invoke "clobber" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) +) +(assert_return + (invoke "clobber" + (i64.const 0x7) + (i64.const 0xb) + (i64.const 0xffff_ffff_ffff_fff3) + (i64.const 0x11) + ) + (i64.const 0x91) +) diff --git a/test/regress/ext:wide-arithmetic/stress_clobber00.wast b/test/regress/ext:wide-arithmetic/stress_clobber00.wast new file mode 100644 index 000000000..560b16963 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_clobber00.wast @@ -0,0 +1,25 @@ +(module + (func (export "clobber") (param i64 i64 i64 i64) (result i64) + (local $lo i64) (local $hi i64) + local.get 0 + local.get 1 + i64.mul_wide_u + local.set $hi + local.set $lo + local.get $lo + local.get $hi + i64.xor + local.get 2 + local.get 3 + i64.mul_wide_s + local.set $hi + local.set $lo + local.get $lo + i64.xor + local.get $hi + i64.xor) +) +(assert_return (invoke "clobber" (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1)) (i64.const -2)) +(assert_return (invoke "clobber" (i64.const 1311768467463790320) (i64.const -81985529216486896) (i64.const -9223372036854775808) (i64.const 3)) (i64.const 5660416751043232988)) +(assert_return (invoke "clobber" (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "clobber" (i64.const 7) (i64.const 11) (i64.const -13) (i64.const 17)) (i64.const 145)) diff --git a/test/regress/ext:wide-arithmetic/stress_computed00.bin.wast b/test/regress/ext:wide-arithmetic/stress_computed00.bin.wast new file mode 100644 index 000000000..abdfa466f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_computed00.bin.wast @@ -0,0 +1,56 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\8c" + "\80\80\80\00\01\08\63\6f\6d\70\75\74\65\64\00\00" + "\0a\9e\80\80\80\00\01\98\80\80\80\00\00\20\00\42" + "\03\7e\20\01\42\05\7e\20\00\42\07\7e\20\01\42\0b" + "\7e\fc\13\0b" +) +(module instance) +(assert_return + (invoke "computed" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0xb60b_60b6_0b60_b560) + (i64.const 0xeadb_eefc_afeb_abe0) +) +(assert_return + (invoke "computed" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xffff_ffff_ffff_fff6) + (i64.const 0xfedc_ba98_7654_3211) +) +(assert_return + (invoke "computed" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "computed" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0xa) + (i64.const 0x10) +) +(assert_return + (invoke "computed" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "computed" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x9f49_f49f_49f4_9f4a) + (i64.const 0xffff_ffff_ffff_fff0) +) +(assert_return + (invoke "computed" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xb2c9_755d_edf3_4b6c) + (i64.const 0x2345_6789_abcd_ef00) +) diff --git a/test/regress/ext:wide-arithmetic/stress_computed00.wast b/test/regress/ext:wide-arithmetic/stress_computed00.wast new file mode 100644 index 000000000..f08fa995d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_computed00.wast @@ -0,0 +1,23 @@ +(module + (func (export "computed") (param i64 i64) (result i64 i64) + local.get 0 + i64.const 3 + i64.mul + local.get 1 + i64.const 5 + i64.mul + local.get 0 + i64.const 7 + i64.mul + local.get 1 + i64.const 11 + i64.mul + i64.add128) +) +(assert_return (invoke "computed" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const -5329059399071648416) (i64.const -1523361279884153888)) +(assert_return (invoke "computed" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -10) (i64.const -81985529216486895)) +(assert_return (invoke "computed" (i64.const -9223372036854775808) (i64.const 0)) (i64.const 0) (i64.const 1)) +(assert_return (invoke "computed" (i64.const 1) (i64.const 1)) (i64.const 10) (i64.const 16)) +(assert_return (invoke "computed" (i64.const 0) (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "computed" (i64.const 1147797409030816545) (i64.const -1)) (i64.const -6968769983401386166) (i64.const -16)) +(assert_return (invoke "computed" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -5563786818354984084) (i64.const 2541551405711093504)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast b/test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast new file mode 100644 index 000000000..613417afa --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast @@ -0,0 +1,55 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\93" + "\80\80\80\00\01\0f\6f\76\65\72\66\6c\6f\77\69\6e" + "\67\5f\61\64\64\00\00\0a\92\80\80\80\00\01\8c\80" + "\80\80\00\00\20\00\42\00\20\01\42\00\fc\13\0b" +) +(module instance) +(assert_return + (invoke "overflowing_add" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0xf0e2_1568_65bb_99ae) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xfed_cba9_8765_4320) + (i64.const 0x1) +) +(assert_return + (invoke "overflowing_add" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x2) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xfed_cba9_8765_4320) + (i64.const 0x1) +) +(assert_return + (invoke "overflowing_add" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xf0e2_1568_65bb_99ae) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add00.wast b/test/regress/ext:wide-arithmetic/stress_const_add00.wast new file mode 100644 index 000000000..1e69af339 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const_add00.wast @@ -0,0 +1,15 @@ +(module + (func (export "overflowing_add") (param i64 i64) (result i64 i64) + local.get 0 + i64.const 0 + local.get 1 + i64.const 0 + i64.add128) +) +(assert_return (invoke "overflowing_add" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const -1089284621742663250) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const -1) (i64.const 1147797409030816545)) (i64.const 1147797409030816544) (i64.const 1)) +(assert_return (invoke "overflowing_add" (i64.const -9223372036854775808) (i64.const 0)) (i64.const -9223372036854775808) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const 1) (i64.const 1)) (i64.const 2) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const 0) (i64.const -9223372036854775808)) (i64.const -9223372036854775808) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 1147797409030816544) (i64.const 1)) +(assert_return (invoke "overflowing_add" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -1089284621742663250) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast b/test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast new file mode 100644 index 000000000..829297851 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast @@ -0,0 +1,9 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\86\80\80\80\00\01\60" + "\00\02\7e\7e\03\82\80\80\80\00\01\00\07\8c\80\80" + "\80\00\01\08\61\6c\6c\63\6f\6e\73\74\00\00\0a\92" + "\80\80\80\00\01\8c\80\80\80\00\00\42\7f\42\7f\42" + "\01\42\00\fc\13\0b" +) +(module instance) +(assert_return (invoke "allconst") (i64.const 0x0) (i64.const 0x0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add01.wast b/test/regress/ext:wide-arithmetic/stress_const_add01.wast new file mode 100644 index 000000000..ea6581605 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const_add01.wast @@ -0,0 +1,9 @@ +(module + (func (export "allconst") (result i64 i64) + i64.const 0xffffffffffffffff + i64.const 0xffffffffffffffff + i64.const 1 + i64.const 0 + i64.add128) +) +(assert_return (invoke "allconst") (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast b/test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast new file mode 100644 index 000000000..e5961814b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast @@ -0,0 +1,55 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\91" + "\80\80\80\00\01\0d\62\6f\72\72\6f\77\69\6e\67\5f" + "\73\75\62\00\00\0a\92\80\80\80\00\01\8c\80\80\80" + "\00\00\20\00\42\00\20\01\42\00\fc\14\0b" +) +(module instance) +(assert_return + (invoke "borrowing_sub" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0x3386_9788_cfbe_2432) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xf012_3456_789a_bcde) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xfed_cba9_8765_4322) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xcc79_6877_3041_dbce) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/stress_const_sub00.wast b/test/regress/ext:wide-arithmetic/stress_const_sub00.wast new file mode 100644 index 000000000..ed0bb29c6 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const_sub00.wast @@ -0,0 +1,15 @@ +(module + (func (export "borrowing_sub") (param i64 i64) (result i64 i64) + local.get 0 + i64.const 0 + local.get 1 + i64.const 0 + i64.sub128) +) +(assert_return (invoke "borrowing_sub" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const 3712821556670243890) (i64.const -1)) +(assert_return (invoke "borrowing_sub" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -1147797409030816546) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const -9223372036854775808) (i64.const 0)) (i64.const -9223372036854775808) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const 1) (i64.const 1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const 0) (i64.const -9223372036854775808)) (i64.const -9223372036854775808) (i64.const -1)) +(assert_return (invoke "borrowing_sub" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 1147797409030816546) (i64.const -1)) +(assert_return (invoke "borrowing_sub" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -3712821556670243890) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_loop00.bin.wast b/test/regress/ext:wide-arithmetic/stress_loop00.bin.wast new file mode 100644 index 000000000..f6e0ee50b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_loop00.bin.wast @@ -0,0 +1,26 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\89\80" + "\80\80\00\01\05\73\75\6d\73\71\00\00\0a\ad\80\80" + "\80\00\01\a7\80\80\80\00\01\03\7e\03\40\20\02\20" + "\03\20\01\20\01\fc\16\fc\13\21\03\21\02\20\01\42" + "\01\7c\22\01\20\00\54\0d\00\0b\20\02\20\03\0b" +) +(module instance) +(assert_return (invoke "sumsq" (i64.const 0x1)) (i64.const 0x0) (i64.const 0x0)) +(assert_return (invoke "sumsq" (i64.const 0x2)) (i64.const 0x1) (i64.const 0x0)) +(assert_return + (invoke "sumsq" (i64.const 0xa)) + (i64.const 0x11d) + (i64.const 0x0) +) +(assert_return + (invoke "sumsq" (i64.const 0x64)) + (i64.const 0x5_029e) + (i64.const 0x0) +) +(assert_return + (invoke "sumsq" (i64.const 0x3e8)) + (i64.const 0x13d6_a2dc) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/stress_loop00.wast b/test/regress/ext:wide-arithmetic/stress_loop00.wast new file mode 100644 index 000000000..eb2acebb7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_loop00.wast @@ -0,0 +1,28 @@ +(module + ;; sum = sum + (i * i) as a 128-bit accumulator, for i in [0, n) + (func (export "sumsq") (param $n i64) (result i64 i64) + (local $i i64) (local $lo i64) (local $hi i64) + (loop $l + local.get $lo + local.get $hi + local.get $i + local.get $i + i64.mul_wide_u + i64.add128 + local.set $hi + local.set $lo + local.get $i + i64.const 1 + i64.add + local.tee $i + local.get $n + i64.lt_u + br_if $l) + local.get $lo + local.get $hi) +) +(assert_return (invoke "sumsq" (i64.const 1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "sumsq" (i64.const 2)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "sumsq" (i64.const 10)) (i64.const 285) (i64.const 0)) +(assert_return (invoke "sumsq" (i64.const 100)) (i64.const 328350) (i64.const 0)) +(assert_return (invoke "sumsq" (i64.const 1000)) (i64.const 332833500) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_mul128_00.bin.wast b/test/regress/ext:wide-arithmetic/stress_mul128_00.bin.wast new file mode 100644 index 000000000..d14f121a4 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_mul128_00.bin.wast @@ -0,0 +1,59 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8a\80\80\80\00\01\06\6d\75\6c\31\32\38\00\00" + "\0a\9d\80\80\80\00\01\97\80\80\80\00\00\20\00\20" + "\02\fc\16\42\00\20\00\20\03\7e\20\01\20\02\7e\7c" + "\fc\13\0b" +) +(module instance) +(assert_return + (invoke "mul128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "mul128" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1122_3344_5566_7788) + ) + (i64.const 0xeb68_9f4e_a447_d620) + (i64.const 0xcfe2_de67_236d_cdd5) +) +(assert_return + (invoke "mul128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "mul128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x1) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "mul128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0x2) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/stress_mul128_00.wast b/test/regress/ext:wide-arithmetic/stress_mul128_00.wast new file mode 100644 index 000000000..72bc7dda5 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_mul128_00.wast @@ -0,0 +1,23 @@ +(module + ;; low 128 bits of a 128x128 multiply: + ;; (alo,ahi) * (blo,bhi) = mul_wide_u(alo, blo) + ((alo*bhi + ahi*blo) << 64) + (func (export "mul128") (param $alo i64) (param $ahi i64) (param $blo i64) (param $bhi i64) + (result i64 i64) + local.get $alo + local.get $blo + i64.mul_wide_u + i64.const 0 + local.get $alo + local.get $bhi + i64.mul + local.get $ahi + local.get $blo + i64.mul + i64.add + i64.add128) +) +(assert_return (invoke "mul128" (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "mul128" (i64.const 1311768467463790320) (i64.const 1147797409030816545) (i64.const -2401053089206453570) (i64.const 1234605616436508552)) (i64.const -1483760917106141664) (i64.const -3466964228564464171)) +(assert_return (invoke "mul128" (i64.const 1) (i64.const 0) (i64.const -1) (i64.const -1)) (i64.const -1) (i64.const -1)) +(assert_return (invoke "mul128" (i64.const 0) (i64.const 1) (i64.const 0) (i64.const 1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "mul128" (i64.const -1) (i64.const 0) (i64.const 2) (i64.const 0)) (i64.const -2) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/stress_pressure00.bin.wast b/test/regress/ext:wide-arithmetic/stress_pressure00.bin.wast new file mode 100644 index 000000000..afd7d2962 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_pressure00.bin.wast @@ -0,0 +1,44 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8c\80\80\80\00\01\08\70\72\65\73\73\75\72\65" + "\00\00\0a\f8\80\80\80\00\01\f2\80\80\80\00\01\0d" + "\7e\42\80\20\21\04\42\81\20\21\05\42\82\20\21\06" + "\42\83\20\21\07\42\84\20\21\08\42\85\20\21\09\42" + "\86\20\21\0a\42\87\20\21\0b\42\88\20\21\0c\42\89" + "\20\21\0d\42\8a\20\21\0e\42\8b\20\21\0f\20\00\20" + "\01\20\02\20\03\fc\13\21\10\20\10\20\04\7c\20\05" + "\7c\20\06\7c\20\07\7c\20\08\7c\20\09\7c\20\0a\7c" + "\20\0b\7c\20\0c\7c\20\0d\7c\20\0e\7c\20\0f\7c\0b" +) +(module instance) +(assert_return + (invoke "pressure" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0xc042) +) +(assert_return + (invoke "pressure" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1122_3344_5566_7788) + ) + (i64.const 0xf0e2_1568_65bb_99ae) + (i64.const 0x210f_feed_dccc_7aeb) +) +(assert_return + (invoke "pressure" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0xc042) +) diff --git a/test/regress/ext:wide-arithmetic/stress_pressure00.wast b/test/regress/ext:wide-arithmetic/stress_pressure00.wast new file mode 100644 index 000000000..f3a75cb1b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_pressure00.wast @@ -0,0 +1,64 @@ +(module + (func (export "pressure") (param i64 i64 i64 i64) (result i64 i64) + (local i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64) + i64.const 4096 + local.set 4 + i64.const 4097 + local.set 5 + i64.const 4098 + local.set 6 + i64.const 4099 + local.set 7 + i64.const 4100 + local.set 8 + i64.const 4101 + local.set 9 + i64.const 4102 + local.set 10 + i64.const 4103 + local.set 11 + i64.const 4104 + local.set 12 + i64.const 4105 + local.set 13 + i64.const 4106 + local.set 14 + i64.const 4107 + local.set 15 + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128 + ;; fold all the still-live locals into the high result + local.set 16 + local.get 16 + local.get 4 + i64.add + local.get 5 + i64.add + local.get 6 + i64.add + local.get 7 + i64.add + local.get 8 + i64.add + local.get 9 + i64.add + local.get 10 + i64.add + local.get 11 + i64.add + local.get 12 + i64.add + local.get 13 + i64.add + local.get 14 + i64.add + local.get 15 + i64.add +) +) +(assert_return (invoke "pressure" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0)) (i64.const 0) (i64.const 49218)) +(assert_return (invoke "pressure" (i64.const 1311768467463790320) (i64.const 1147797409030816545) (i64.const -2401053089206453570) (i64.const 1234605616436508552)) (i64.const -1089284621742663250) (i64.const 2382403025467374315)) +(assert_return (invoke "pressure" (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0)) (i64.const 0) (i64.const 49218)) diff --git a/test/regress/ext:wide-arithmetic/stress_results00.bin.wast b/test/regress/ext:wide-arithmetic/stress_results00.bin.wast new file mode 100644 index 000000000..a58e7fbd7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_results00.bin.wast @@ -0,0 +1,79 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\90\80\80\80\00\02\60" + "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\01\7e\03\84" + "\80\80\80\00\03\00\01\01\07\9f\80\80\80\00\03\07" + "\73\77\61\70\70\65\64\00\00\07\68\69\5f\6f\6e\6c" + "\79\00\01\07\6c\6f\5f\6f\6e\6c\79\00\02\0a\be\80" + "\80\80\00\03\96\80\80\80\00\01\02\7e\20\00\20\01" + "\20\02\20\03\fc\13\21\05\21\04\20\05\20\04\0b\8f" + "\80\80\80\00\01\01\7e\20\00\20\01\fc\16\21\02\1a" + "\20\02\0b\89\80\80\80\00\00\20\00\20\01\fc\15\1a" + "\0b" +) +(module instance) +(assert_return + (invoke "swapped" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "swapped" + (i64.const 0x1) + (i64.const 0x2) + (i64.const 0x3) + (i64.const 0x4) + ) + (i64.const 0x6) + (i64.const 0x4) +) +(assert_return + (invoke "swapped" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "hi_only" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "hi_only" (i64.const 0x1_0000_0000) (i64.const 0x1_0000_0000)) + (i64.const 0x1) +) +(assert_return + (invoke "hi_only" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfedc_ba98_7654_3210) + ) + (i64.const 0x121f_a00a_d77d_7422) +) +(assert_return + (invoke "lo_only" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) +) +(assert_return + (invoke "lo_only" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x7)) + (i64.const 0xffff_ffff_ffff_fff9) +) +(assert_return + (invoke "lo_only" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfedc_ba98_7654_3210) + ) + (i64.const 0x236d_88fe_5618_cf00) +) diff --git a/test/regress/ext:wide-arithmetic/stress_results00.wast b/test/regress/ext:wide-arithmetic/stress_results00.wast new file mode 100644 index 000000000..0df879964 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_results00.wast @@ -0,0 +1,35 @@ +(module + (func (export "swapped") (param i64 i64 i64 i64) (result i64 i64) + (local $lo i64) (local $hi i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128 + local.set $hi + local.set $lo + local.get $hi + local.get $lo) + (func (export "hi_only") (param i64 i64) (result i64) + (local $hi i64) + local.get 0 + local.get 1 + i64.mul_wide_u + local.set $hi + drop + local.get $hi) + (func (export "lo_only") (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_s + drop) +) +(assert_return (invoke "swapped" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "swapped" (i64.const 1) (i64.const 2) (i64.const 3) (i64.const 4)) (i64.const 6) (i64.const 4)) +(assert_return (invoke "swapped" (i64.const 0) (i64.const 0) (i64.const -1) (i64.const -1)) (i64.const -1) (i64.const -1)) +(assert_return (invoke "hi_only" (i64.const -1) (i64.const -1)) (i64.const -2)) +(assert_return (invoke "hi_only" (i64.const 4294967296) (i64.const 4294967296)) (i64.const 1)) +(assert_return (invoke "hi_only" (i64.const 1311768467463790320) (i64.const -81985529216486896)) (i64.const 1305938385386173474)) +(assert_return (invoke "lo_only" (i64.const -1) (i64.const -1)) (i64.const 1)) +(assert_return (invoke "lo_only" (i64.const -1) (i64.const 7)) (i64.const -7)) +(assert_return (invoke "lo_only" (i64.const 1311768467463790320) (i64.const -81985529216486896)) (i64.const 2552847189736476416)) diff --git a/test/regress/ext:wide-arithmetic/sub128_00.bin.wast b/test/regress/ext:wide-arithmetic/sub128_00.bin.wast new file mode 100644 index 000000000..1638471a8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_00.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_00.wast b/test/regress/ext:wide-arithmetic/sub128_00.wast new file mode 100644 index 000000000..883ac74db --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_00.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_01.bin.wast b/test/regress/ext:wide-arithmetic/sub128_01.bin.wast new file mode 100644 index 000000000..b349469cf --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_01.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_01.wast b/test/regress/ext:wide-arithmetic/sub128_01.wast new file mode 100644 index 000000000..ef54abdb8 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_01.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_02.bin.wast b/test/regress/ext:wide-arithmetic/sub128_02.bin.wast new file mode 100644 index 000000000..53d302cf0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_02.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_02.wast b/test/regress/ext:wide-arithmetic/sub128_02.wast new file mode 100644 index 000000000..a9c9d1034 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_02.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_03.bin.wast b/test/regress/ext:wide-arithmetic/sub128_03.bin.wast new file mode 100644 index 000000000..0a7bc16c0 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_03.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_fffe) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_03.wast b/test/regress/ext:wide-arithmetic/sub128_03.wast new file mode 100644 index 000000000..1511d59ad --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_03.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/sub128_04.bin.wast b/test/regress/ext:wide-arithmetic/sub128_04.bin.wast new file mode 100644 index 000000000..7d11de9ce --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_04.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0xdddf_92ca_e793_6162) + (i64.const 0x8100_92c6_d04b_51b1) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x7eff_6d39_2fb4_ae4f) + (i64.const 0xdddf_92ca_e793_6162) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_04.wast b/test/regress/ext:wide-arithmetic/sub128_04.wast new file mode 100644 index 000000000..53f102de2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_04.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -2459085471354756766) + (i64.const -9151153060221070927) (i64.const -1)) + (i64.const 9151153060221070927) (i64.const -2459085471354756766)) diff --git a/test/regress/ext:wide-arithmetic/sub128_05.bin.wast b/test/regress/ext:wide-arithmetic/sub128_05.bin.wast new file mode 100644 index 000000000..038753409 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_05.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x3f5f_79f4_9f08_20bf) + (i64.const 0xc490_f0bf_7c99_8705) + (i64.const 0xa076_d828_f1fd_f77d) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x9ee8_a1cb_ad0a_2942) + (i64.const 0xc490_f0bf_7c99_8705) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_05.wast b/test/regress/ext:wide-arithmetic/sub128_05.wast new file mode 100644 index 000000000..02209861b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_05.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 4566502638724063423) (i64.const -4282658540409485563) + (i64.const -6884077310018979971) (i64.const -1)) + (i64.const -6996164124966508222) (i64.const -4282658540409485563)) diff --git a/test/regress/ext:wide-arithmetic/sub128_06.bin.wast b/test/regress/ext:wide-arithmetic/sub128_06.bin.wast new file mode 100644 index 000000000..670ea5a6e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_06.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x2b46_b660_ef15_2481) + (i64.const 0x0) + (i64.const 0x2d8f_f852_7570_82d3) + ) + (i64.const 0x1) + (i64.const 0xfdb6_be0e_79a4_a1ae) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_06.wast b/test/regress/ext:wide-arithmetic/sub128_06.wast new file mode 100644 index 000000000..860123bbc --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_06.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 3118380319444903041) + (i64.const 0) (i64.const 3283115686417695443)) + (i64.const 1) (i64.const -164735366972792402)) diff --git a/test/regress/ext:wide-arithmetic/sub128_07.bin.wast b/test/regress/ext:wide-arithmetic/sub128_07.bin.wast new file mode 100644 index 000000000..d44a11f6b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_07.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x9bf6_9087_8e24_73ee) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x9bf6_9087_8e24_73ed) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_07.wast b/test/regress/ext:wide-arithmetic/sub128_07.wast new file mode 100644 index 000000000..6b8d53412 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_07.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const -7208415241680161810) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const -7208415241680161811) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_08.bin.wast b/test/regress/ext:wide-arithmetic/sub128_08.bin.wast new file mode 100644 index 000000000..ce67d0af9 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_08.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x36be_ec4a_1ff9_bcc2) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x36be_ec4a_1ff9_bcc0) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_08.wast b/test/regress/ext:wide-arithmetic/sub128_08.wast new file mode 100644 index 000000000..6844c5452 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_08.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 3944850126731328706) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const 3944850126731328704)) diff --git a/test/regress/ext:wide-arithmetic/sub128_09.bin.wast b/test/regress/ext:wide-arithmetic/sub128_09.bin.wast new file mode 100644 index 000000000..32b55e82d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_09.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x2) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_09.wast b/test/regress/ext:wide-arithmetic/sub128_09.wast new file mode 100644 index 000000000..0a2ceef8f --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_09.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const 2) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_10.bin.wast b/test/regress/ext:wide-arithmetic/sub128_10.bin.wast new file mode 100644 index 000000000..9611fdcda --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_10.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x4363_6273_f163_7953) + (i64.const 0xa143_9f23_0317_73a3) + ) + (i64.const 0xbc9c_9d8c_0e9c_86ac) + (i64.const 0x5ebc_60dc_fce8_8c5c) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_10.wast b/test/regress/ext:wide-arithmetic/sub128_10.wast new file mode 100644 index 000000000..29219acd5 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_10.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const -1) (i64.const -1) + (i64.const 4855833073346115923) (i64.const -6826437637438999645)) + (i64.const -4855833073346115924) (i64.const 6826437637438999644)) diff --git a/test/regress/ext:wide-arithmetic/sub128_11.bin.wast b/test/regress/ext:wide-arithmetic/sub128_11.bin.wast new file mode 100644 index 000000000..3d359fcc2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_11.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x2) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_11.wast b/test/regress/ext:wide-arithmetic/sub128_11.wast new file mode 100644 index 000000000..da7138c09 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_11.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const -1)) + (i64.const 2) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_12.bin.wast b/test/regress/ext:wide-arithmetic/sub128_12.bin.wast new file mode 100644 index 000000000..b05b78284 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_12.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_12.wast b/test/regress/ext:wide-arithmetic/sub128_12.wast new file mode 100644 index 000000000..4a4501ba3 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_12.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_13.bin.wast b/test/regress/ext:wide-arithmetic/sub128_13.bin.wast new file mode 100644 index 000000000..0e87e383d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_13.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_13.wast b/test/regress/ext:wide-arithmetic/sub128_13.wast new file mode 100644 index 000000000..6b4030928 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_13.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const -1) (i64.const -1) + (i64.const 0) (i64.const 0)) + (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_14.bin.wast b/test/regress/ext:wide-arithmetic/sub128_14.bin.wast new file mode 100644 index 000000000..24f81f05e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_14.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xa7a9_49dc_2214_4ed4) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x5856_b623_ddeb_b12d) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_14.wast b/test/regress/ext:wide-arithmetic/sub128_14.wast new file mode 100644 index 000000000..554330346 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_14.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const -6365475388498096428) (i64.const -1)) + (i64.const 6365475388498096429) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_15.bin.wast b/test/regress/ext:wide-arithmetic/sub128_15.bin.wast new file mode 100644 index 000000000..4c14e550b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_15.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x5e6d_82f8_e6b7_ca5a) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x5e6d_82f8_e6b7_ca5a) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_15.wast b/test/regress/ext:wide-arithmetic/sub128_15.wast new file mode 100644 index 000000000..6b4056e6a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_15.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 6804238617560992346) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const 6804238617560992346) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_16.bin.wast b/test/regress/ext:wide-arithmetic/sub128_16.bin.wast new file mode 100644 index 000000000..909506ed5 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_16.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x945c_a2bf_d397_a18d) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x6ba3_5d40_2c68_5e73) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_16.wast b/test/regress/ext:wide-arithmetic/sub128_16.wast new file mode 100644 index 000000000..24cc94d5b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_16.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const -7756145513466453619)) + (i64.const -1) (i64.const 7756145513466453619)) diff --git a/test/regress/ext:wide-arithmetic/sub128_17.bin.wast b/test/regress/ext:wide-arithmetic/sub128_17.bin.wast new file mode 100644 index 000000000..c68d62430 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_17.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_fffe) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_17.wast b/test/regress/ext:wide-arithmetic/sub128_17.wast new file mode 100644 index 000000000..4ee093a7a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_17.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const 1) (i64.const 1)) + (i64.const 0) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/sub128_18.bin.wast b/test/regress/ext:wide-arithmetic/sub128_18.bin.wast new file mode 100644 index 000000000..b11104e48 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_18.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_18.wast b/test/regress/ext:wide-arithmetic/sub128_18.wast new file mode 100644 index 000000000..31572f9ba --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_18.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_19.bin.wast b/test/regress/ext:wide-arithmetic/sub128_19.bin.wast new file mode 100644 index 000000000..5835ff117 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_19.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x4dc1_6f2a_f7e1_35b9) + (i64.const 0xe2b5_ae43_c1e3_bf98) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1d4a_51bc_3e1c_4069) + (i64.const 0x4dc1_6f2a_f7e1_35b9) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_19.wast b/test/regress/ext:wide-arithmetic/sub128_19.wast new file mode 100644 index 000000000..525e4b4f6 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_19.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 5602881641763648953) + (i64.const -2110589244314239080) (i64.const -1)) + (i64.const 2110589244314239081) (i64.const 5602881641763648953)) diff --git a/test/regress/ext:wide-arithmetic/sub128_20.bin.wast b/test/regress/ext:wide-arithmetic/sub128_20.bin.wast new file mode 100644 index 000000000..bff83690a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_20.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_20.wast b/test/regress/ext:wide-arithmetic/sub128_20.wast new file mode 100644 index 000000000..452037c21 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_20.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_21.bin.wast b/test/regress/ext:wide-arithmetic/sub128_21.bin.wast new file mode 100644 index 000000000..aa2de6119 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_21.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x3151_b1b9_4524_8e8e) + (i64.const 0xe2c8_b38a_9e18_a9fa) + ) + (i64.const 0xceae_4e46_badb_7172) + (i64.const 0x1d37_4c75_61e7_5604) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_21.wast b/test/regress/ext:wide-arithmetic/sub128_21.wast new file mode 100644 index 000000000..c81669384 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_21.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -1) + (i64.const 3553816990259121806) (i64.const -2105235417856431622)) + (i64.const -3553816990259121806) (i64.const 2105235417856431620)) diff --git a/test/regress/ext:wide-arithmetic/sub128_22.bin.wast b/test/regress/ext:wide-arithmetic/sub128_22.bin.wast new file mode 100644 index 000000000..053498464 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_22.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x19d3_f70c_eb63_95ed) + (i64.const 0x1) + (i64.const 0x338a_00d9_e2d7_4f5f) + (i64.const 0x1) + ) + (i64.const 0xe649_f633_088c_468e) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_22.wast b/test/regress/ext:wide-arithmetic/sub128_22.wast new file mode 100644 index 000000000..fe7e2b7b2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_22.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 1861102705894987245) (i64.const 1) + (i64.const 3713781778534059871) (i64.const 1)) + (i64.const -1852679072639072626) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_23.bin.wast b/test/regress/ext:wide-arithmetic/sub128_23.bin.wast new file mode 100644 index 000000000..5bfb272fe --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_23.bin.wast @@ -0,0 +1,18 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x196e_6f4f_c737_52e2) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xe691_90b0_38c8_ad1c) +) diff --git a/test/regress/ext:wide-arithmetic/sub128_23.wast b/test/regress/ext:wide-arithmetic/sub128_23.wast new file mode 100644 index 000000000..483e4711b --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128_23.wast @@ -0,0 +1,12 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -1) + (i64.const 1) (i64.const 1832524486821761762)) + (i64.const -1) (i64.const -1832524486821761764)) From bd6f9b7e3348c616a62216501b9119bbcc19c157 Mon Sep 17 00:00:00 2001 From: "Ben L. Titzer" Date: Wed, 5 Aug 2026 15:24:06 -0400 Subject: [PATCH 2/2] Factor regression tests --- .../ext:wide-arithmetic/add128.bin.wast | 248 ++++++++++++++++++ test/regress/ext:wide-arithmetic/add128.wast | 104 ++++++++ .../ext:wide-arithmetic/add128_00.bin.wast | 18 -- .../ext:wide-arithmetic/add128_00.wast | 12 - .../ext:wide-arithmetic/add128_01.bin.wast | 18 -- .../ext:wide-arithmetic/add128_01.wast | 12 - .../ext:wide-arithmetic/add128_02.bin.wast | 18 -- .../ext:wide-arithmetic/add128_02.wast | 12 - .../ext:wide-arithmetic/add128_03.bin.wast | 18 -- .../ext:wide-arithmetic/add128_03.wast | 12 - .../ext:wide-arithmetic/add128_04.bin.wast | 18 -- .../ext:wide-arithmetic/add128_04.wast | 12 - .../ext:wide-arithmetic/add128_05.bin.wast | 18 -- .../ext:wide-arithmetic/add128_05.wast | 12 - .../ext:wide-arithmetic/add128_06.bin.wast | 18 -- .../ext:wide-arithmetic/add128_06.wast | 12 - .../ext:wide-arithmetic/add128_07.bin.wast | 18 -- .../ext:wide-arithmetic/add128_07.wast | 12 - .../ext:wide-arithmetic/add128_08.bin.wast | 18 -- .../ext:wide-arithmetic/add128_08.wast | 12 - .../ext:wide-arithmetic/add128_09.bin.wast | 18 -- .../ext:wide-arithmetic/add128_09.wast | 12 - .../ext:wide-arithmetic/add128_10.bin.wast | 18 -- .../ext:wide-arithmetic/add128_10.wast | 12 - .../ext:wide-arithmetic/add128_11.bin.wast | 18 -- .../ext:wide-arithmetic/add128_11.wast | 12 - .../ext:wide-arithmetic/add128_12.bin.wast | 18 -- .../ext:wide-arithmetic/add128_12.wast | 12 - .../ext:wide-arithmetic/add128_13.bin.wast | 18 -- .../ext:wide-arithmetic/add128_13.wast | 12 - .../ext:wide-arithmetic/add128_14.bin.wast | 18 -- .../ext:wide-arithmetic/add128_14.wast | 12 - .../ext:wide-arithmetic/add128_15.bin.wast | 18 -- .../ext:wide-arithmetic/add128_15.wast | 12 - .../ext:wide-arithmetic/add128_16.bin.wast | 18 -- .../ext:wide-arithmetic/add128_16.wast | 12 - .../ext:wide-arithmetic/add128_17.bin.wast | 18 -- .../ext:wide-arithmetic/add128_17.wast | 12 - .../ext:wide-arithmetic/add128_18.bin.wast | 18 -- .../ext:wide-arithmetic/add128_18.wast | 12 - .../ext:wide-arithmetic/add128_19.bin.wast | 18 -- .../ext:wide-arithmetic/add128_19.wast | 12 - .../ext:wide-arithmetic/add128_20.bin.wast | 18 -- .../ext:wide-arithmetic/add128_20.wast | 12 - .../ext:wide-arithmetic/add128_21.bin.wast | 18 -- .../ext:wide-arithmetic/add128_21.wast | 12 - .../ext:wide-arithmetic/add128_22.bin.wast | 18 -- .../ext:wide-arithmetic/add128_22.wast | 12 - .../ext:wide-arithmetic/add128_23.bin.wast | 18 -- .../ext:wide-arithmetic/add128_23.wast | 12 - .../ext:wide-arithmetic/invalid.bin.wast | 70 +++++ test/regress/ext:wide-arithmetic/invalid.wast | 68 +++++ .../ext:wide-arithmetic/invalid_00.bin.wast | 9 - .../ext:wide-arithmetic/invalid_00.wast | 10 - .../ext:wide-arithmetic/invalid_01.bin.wast | 9 - .../ext:wide-arithmetic/invalid_01.wast | 9 - .../ext:wide-arithmetic/invalid_02.bin.wast | 9 - .../ext:wide-arithmetic/invalid_02.wast | 10 - .../ext:wide-arithmetic/invalid_03.bin.wast | 9 - .../ext:wide-arithmetic/invalid_03.wast | 9 - .../ext:wide-arithmetic/invalid_04.bin.wast | 9 - .../ext:wide-arithmetic/invalid_04.wast | 8 - .../ext:wide-arithmetic/invalid_05.bin.wast | 8 - .../ext:wide-arithmetic/invalid_05.wast | 7 - .../ext:wide-arithmetic/invalid_06.bin.wast | 9 - .../ext:wide-arithmetic/invalid_06.wast | 8 - .../ext:wide-arithmetic/invalid_07.bin.wast | 8 - .../ext:wide-arithmetic/invalid_07.wast | 7 - .../ext:wide-arithmetic/mul_wide_s.bin.wast | 149 +++++++++++ .../ext:wide-arithmetic/mul_wide_s.wast | 54 ++++ .../mul_wide_s_00.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_00.wast | 8 - .../mul_wide_s_01.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_01.wast | 8 - .../mul_wide_s_02.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_02.wast | 8 - .../mul_wide_s_03.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_03.wast | 8 - .../mul_wide_s_04.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_04.wast | 8 - .../mul_wide_s_05.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_05.wast | 8 - .../mul_wide_s_06.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_06.wast | 8 - .../mul_wide_s_07.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_07.wast | 8 - .../mul_wide_s_08.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_08.wast | 8 - .../mul_wide_s_09.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_09.wast | 8 - .../mul_wide_s_10.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_10.wast | 8 - .../mul_wide_s_11.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_11.wast | 8 - .../mul_wide_s_12.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_12.wast | 8 - .../mul_wide_s_13.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_13.wast | 8 - .../mul_wide_s_14.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_14.wast | 8 - .../mul_wide_s_15.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_15.wast | 8 - .../mul_wide_s_16.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_16.wast | 8 - .../mul_wide_s_17.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_17.wast | 8 - .../mul_wide_s_18.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_18.wast | 8 - .../mul_wide_s_19.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_19.wast | 8 - .../mul_wide_s_20.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_20.wast | 8 - .../mul_wide_s_21.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_21.wast | 8 - .../mul_wide_s_22.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_s_22.wast | 8 - .../mul_wide_s_23.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_s_23.wast | 8 - .../ext:wide-arithmetic/mul_wide_u.bin.wast | 138 ++++++++++ .../ext:wide-arithmetic/mul_wide_u.wast | 52 ++++ .../mul_wide_u_00.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_00.wast | 8 - .../mul_wide_u_01.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_01.wast | 8 - .../mul_wide_u_02.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_02.wast | 8 - .../mul_wide_u_03.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_03.wast | 8 - .../mul_wide_u_04.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_04.wast | 8 - .../mul_wide_u_05.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_u_05.wast | 8 - .../mul_wide_u_06.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_06.wast | 8 - .../mul_wide_u_07.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_07.wast | 8 - .../mul_wide_u_08.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_08.wast | 8 - .../mul_wide_u_09.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_09.wast | 8 - .../mul_wide_u_10.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_10.wast | 8 - .../mul_wide_u_11.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_u_11.wast | 8 - .../mul_wide_u_12.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_12.wast | 8 - .../mul_wide_u_13.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_13.wast | 8 - .../mul_wide_u_14.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_14.wast | 8 - .../mul_wide_u_15.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_u_15.wast | 8 - .../mul_wide_u_16.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_16.wast | 8 - .../mul_wide_u_17.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_u_17.wast | 8 - .../mul_wide_u_18.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_18.wast | 8 - .../mul_wide_u_19.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_19.wast | 8 - .../mul_wide_u_20.bin.wast | 16 -- .../ext:wide-arithmetic/mul_wide_u_20.wast | 8 - .../mul_wide_u_21.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_21.wast | 8 - .../mul_wide_u_22.bin.wast | 13 - .../ext:wide-arithmetic/mul_wide_u_22.wast | 8 - ...l_wide_s_00.bin.wast => overlong.bin.wast} | 25 ++ ...{overlong_add128_00.wast => overlong.wast} | 8 + .../overlong_add128_00.bin.wast | 24 -- .../overlong_mul_wide_s_00.wast | 60 ----- .../overlong_mul_wide_u_00.bin.wast | 19 -- .../overlong_mul_wide_u_00.wast | 60 ----- .../overlong_sub128_00.bin.wast | 24 -- .../overlong_sub128_00.wast | 62 ----- .../ext:wide-arithmetic/stress_alias.bin.wast | 202 ++++++++++++++ .../ext:wide-arithmetic/stress_alias.wast | 63 +++++ .../stress_alias_add00.bin.wast | 43 --- .../stress_alias_add00.wast | 15 -- .../stress_alias_add01.bin.wast | 55 ---- .../stress_alias_add01.wast | 15 -- .../stress_alias_mul00.bin.wast | 79 ------ .../stress_alias_mul00.wast | 24 -- .../stress_alias_sub00.bin.wast | 43 --- .../stress_alias_sub00.wast | 15 -- ...chain00.bin.wast => stress_chain.bin.wast} | 53 +++- ...{stress_chain00.wast => stress_chain.wast} | 11 + .../stress_chain01.bin.wast | 48 ---- .../ext:wide-arithmetic/stress_chain01.wast | 13 - ...ber00.bin.wast => stress_clobber.bin.wast} | 0 ...ess_clobber00.wast => stress_clobber.wast} | 0 ...ed00.bin.wast => stress_computed.bin.wast} | 0 ...s_computed00.wast => stress_computed.wast} | 0 .../ext:wide-arithmetic/stress_const.bin.wast | 108 ++++++++ .../ext:wide-arithmetic/stress_const.wast | 35 +++ .../stress_const_add00.bin.wast | 55 ---- .../stress_const_add00.wast | 15 -- .../stress_const_add01.bin.wast | 9 - .../stress_const_add01.wast | 9 - .../stress_const_sub00.bin.wast | 55 ---- .../stress_const_sub00.wast | 15 -- ...s_loop00.bin.wast => stress_loop.bin.wast} | 0 .../{stress_loop00.wast => stress_loop.wast} | 0 ...128_00.bin.wast => stress_mul128.bin.wast} | 0 ...ress_mul128_00.wast => stress_mul128.wast} | 0 ...re00.bin.wast => stress_pressure.bin.wast} | 0 ...s_pressure00.wast => stress_pressure.wast} | 0 ...lts00.bin.wast => stress_results.bin.wast} | 0 ...ess_results00.wast => stress_results.wast} | 0 .../ext:wide-arithmetic/sub128.bin.wast | 248 ++++++++++++++++++ test/regress/ext:wide-arithmetic/sub128.wast | 104 ++++++++ .../ext:wide-arithmetic/sub128_00.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_00.wast | 12 - .../ext:wide-arithmetic/sub128_01.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_01.wast | 12 - .../ext:wide-arithmetic/sub128_02.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_02.wast | 12 - .../ext:wide-arithmetic/sub128_03.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_03.wast | 12 - .../ext:wide-arithmetic/sub128_04.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_04.wast | 12 - .../ext:wide-arithmetic/sub128_05.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_05.wast | 12 - .../ext:wide-arithmetic/sub128_06.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_06.wast | 12 - .../ext:wide-arithmetic/sub128_07.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_07.wast | 12 - .../ext:wide-arithmetic/sub128_08.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_08.wast | 12 - .../ext:wide-arithmetic/sub128_09.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_09.wast | 12 - .../ext:wide-arithmetic/sub128_10.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_10.wast | 12 - .../ext:wide-arithmetic/sub128_11.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_11.wast | 12 - .../ext:wide-arithmetic/sub128_12.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_12.wast | 12 - .../ext:wide-arithmetic/sub128_13.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_13.wast | 12 - .../ext:wide-arithmetic/sub128_14.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_14.wast | 12 - .../ext:wide-arithmetic/sub128_15.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_15.wast | 12 - .../ext:wide-arithmetic/sub128_16.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_16.wast | 12 - .../ext:wide-arithmetic/sub128_17.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_17.wast | 12 - .../ext:wide-arithmetic/sub128_18.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_18.wast | 12 - .../ext:wide-arithmetic/sub128_19.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_19.wast | 12 - .../ext:wide-arithmetic/sub128_20.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_20.wast | 12 - .../ext:wide-arithmetic/sub128_21.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_21.wast | 12 - .../ext:wide-arithmetic/sub128_22.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_22.wast | 12 - .../ext:wide-arithmetic/sub128_23.bin.wast | 18 -- .../ext:wide-arithmetic/sub128_23.wast | 12 - 258 files changed, 1735 insertions(+), 3363 deletions(-) create mode 100644 test/regress/ext:wide-arithmetic/add128.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/add128.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_01.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_02.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_02.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_03.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_03.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_04.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_04.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_05.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_05.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_06.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_06.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_07.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_07.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_08.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_08.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_09.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_09.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_10.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_10.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_11.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_11.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_12.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_12.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_13.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_13.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_14.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_14.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_15.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_15.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_16.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_16.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_17.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_17.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_18.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_18.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_19.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_19.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_20.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_20.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_21.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_21.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_22.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_22.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_23.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/add128_23.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/invalid.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_01.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_02.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_02.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_03.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_03.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_04.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_04.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_05.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_05.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_06.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_06.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_07.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/invalid_07.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_01.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_02.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_03.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_04.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_05.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_06.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_07.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_08.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_09.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_10.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_11.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_12.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_13.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_14.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_15.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_16.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_17.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_18.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_19.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_20.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_21.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_22.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_s_23.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_01.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_02.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_03.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_04.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_05.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_06.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_07.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_08.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_09.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_10.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_11.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_12.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_13.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_14.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_15.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_16.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_17.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_18.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_19.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_20.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_21.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/mul_wide_u_22.wast rename test/regress/ext:wide-arithmetic/{overlong_mul_wide_s_00.bin.wast => overlong.bin.wast} (64%) rename test/regress/ext:wide-arithmetic/{overlong_add128_00.wast => overlong.wast} (85%) delete mode 100644 test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/overlong_sub128_00.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_alias.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add00.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_add01.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_mul00.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_alias_sub00.wast rename test/regress/ext:wide-arithmetic/{stress_chain00.bin.wast => stress_chain.bin.wast} (52%) rename test/regress/ext:wide-arithmetic/{stress_chain00.wast => stress_chain.wast} (57%) delete mode 100644 test/regress/ext:wide-arithmetic/stress_chain01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_chain01.wast rename test/regress/ext:wide-arithmetic/{stress_clobber00.bin.wast => stress_clobber.bin.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_clobber00.wast => stress_clobber.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_computed00.bin.wast => stress_computed.bin.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_computed00.wast => stress_computed.wast} (100%) create mode 100644 test/regress/ext:wide-arithmetic/stress_const.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/stress_const.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_const_add00.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_const_add01.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/stress_const_sub00.wast rename test/regress/ext:wide-arithmetic/{stress_loop00.bin.wast => stress_loop.bin.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_loop00.wast => stress_loop.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_mul128_00.bin.wast => stress_mul128.bin.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_mul128_00.wast => stress_mul128.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_pressure00.bin.wast => stress_pressure.bin.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_pressure00.wast => stress_pressure.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_results00.bin.wast => stress_results.bin.wast} (100%) rename test/regress/ext:wide-arithmetic/{stress_results00.wast => stress_results.wast} (100%) create mode 100644 test/regress/ext:wide-arithmetic/sub128.bin.wast create mode 100644 test/regress/ext:wide-arithmetic/sub128.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_00.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_00.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_01.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_01.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_02.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_02.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_03.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_03.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_04.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_04.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_05.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_05.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_06.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_06.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_07.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_07.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_08.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_08.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_09.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_09.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_10.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_10.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_11.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_11.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_12.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_12.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_13.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_13.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_14.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_14.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_15.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_15.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_16.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_16.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_17.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_17.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_18.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_18.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_19.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_19.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_20.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_20.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_21.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_21.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_22.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_22.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_23.bin.wast delete mode 100644 test/regress/ext:wide-arithmetic/sub128_23.wast diff --git a/test/regress/ext:wide-arithmetic/add128.bin.wast b/test/regress/ext:wide-arithmetic/add128.bin.wast new file mode 100644 index 000000000..4f9cbcd44 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128.bin.wast @@ -0,0 +1,248 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\0b" +) +(module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0x1) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "i64.add128" + (i64.const 0xde70_0b2f_0bdf_e770) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xde70_0b2f_0bdf_e76f) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0xc072_955d_0e99_803e) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xc072_955d_0e99_803e) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x2) + (i64.const 0x0) +) +(assert_return + (invoke "i64.add128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x0) + (i64.const 0x55d4_90b0_8894_6d6f) + (i64.const 0x0) + (i64.const 0x1) + ) + (i64.const 0x0) + (i64.const 0x55d4_90b0_8894_6d70) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x8af1_2cd7_c179_41a2) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x8af1_2cd7_c179_41a3) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0xb88b_4952_41bf_2634) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0xb88b_4952_41bf_2634) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x2) + (i64.const 0x1) +) +(assert_return + (invoke "i64.add128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xcd87_b43b_cabe_1ef9) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xcd87_b43b_cabe_1ef8) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0xb342_9ecf_13cc_104d) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0xb342_9ecf_13cc_104d) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0xb551_4210_87c0_d81b) + (i64.const 0xe27_e121_0081_15a9) + (i64.const 0x1) + ) + (i64.const 0xe27_e121_0081_15aa) + (i64.const 0xb551_4210_87c0_d81c) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x1) + (i64.const 0x1) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x813d_e8c2_8da3_52e4) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0x813d_e8c2_8da3_52e5) + (i64.const 0x0) +) +(assert_return + (invoke "i64.add128" + (i64.const 0xbffe_b739_0e0a_2fc9) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xbffe_b739_0e0a_2fc9) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "i64.add128" + (i64.const 0x5c1_6285_a443_d08c) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x5c1_6285_a443_d08d) + (i64.const 0xffff_ffff_ffff_ffff) +) diff --git a/test/regress/ext:wide-arithmetic/add128.wast b/test/regress/ext:wide-arithmetic/add128.wast new file mode 100644 index 000000000..925f2aa90 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/add128.wast @@ -0,0 +1,104 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) +) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const 1) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const -1) (i64.const -1)) + (i64.const 0) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const -2418420703207364752) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const -2418420703207364753) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const -4579433644172935106) (i64.const -1)) + (i64.const -4579433644172935106) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const -1)) + (i64.const 1) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const 2) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const -1) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const -2) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const 1) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const -1)) + (i64.const 0) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const -1)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 6184727276166606191) + (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 6184727276166606192)) +(assert_return (invoke "i64.add128" + (i64.const -8434911321912688222) (i64.const -1) + (i64.const 1) (i64.const -1)) + (i64.const -8434911321912688221) (i64.const -2)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const 1) (i64.const -2)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -5148941131328838092) + (i64.const 0) (i64.const 0)) + (i64.const 1) (i64.const -5148941131328838092)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const 2) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const -1) (i64.const -1) + (i64.const -3636740005180858631) (i64.const -1)) + (i64.const -3636740005180858632) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const -5529682780229988275) (i64.const -1) + (i64.const 0) (i64.const 0)) + (i64.const -5529682780229988275) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -5381447440966559717) + (i64.const 1020031372481336745) (i64.const 1)) + (i64.const 1020031372481336746) (i64.const -5381447440966559716)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const 0) (i64.const 0)) + (i64.const 1) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const -9133888546939907356) (i64.const -1) + (i64.const 1) (i64.const 1)) + (i64.const -9133888546939907355) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const -4612047512704241719) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const -4612047512704241719) (i64.const -2)) +(assert_return (invoke "i64.add128" + (i64.const 414720966820876428) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const 414720966820876429) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_00.bin.wast b/test/regress/ext:wide-arithmetic/add128_00.bin.wast deleted file mode 100644 index 83611c3ba..000000000 --- a/test/regress/ext:wide-arithmetic/add128_00.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/add128_00.wast b/test/regress/ext:wide-arithmetic/add128_00.wast deleted file mode 100644 index c3f378ca7..000000000 --- a/test/regress/ext:wide-arithmetic/add128_00.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const 0) - (i64.const 0) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_01.bin.wast b/test/regress/ext:wide-arithmetic/add128_01.bin.wast deleted file mode 100644 index 09c33a58b..000000000 --- a/test/regress/ext:wide-arithmetic/add128_01.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x1) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/add128_01.wast b/test/regress/ext:wide-arithmetic/add128_01.wast deleted file mode 100644 index 1dd6993ce..000000000 --- a/test/regress/ext:wide-arithmetic/add128_01.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const 1) - (i64.const 1) (i64.const 0)) - (i64.const 1) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_02.bin.wast b/test/regress/ext:wide-arithmetic/add128_02.bin.wast deleted file mode 100644 index 80aa337bd..000000000 --- a/test/regress/ext:wide-arithmetic/add128_02.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) - ) - (i64.const 0x0) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/add128_02.wast b/test/regress/ext:wide-arithmetic/add128_02.wast deleted file mode 100644 index 663bdf465..000000000 --- a/test/regress/ext:wide-arithmetic/add128_02.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const 0) - (i64.const -1) (i64.const 0)) - (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_03.bin.wast b/test/regress/ext:wide-arithmetic/add128_03.bin.wast deleted file mode 100644 index aea3a0a7d..000000000 --- a/test/regress/ext:wide-arithmetic/add128_03.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x0) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/add128_03.wast b/test/regress/ext:wide-arithmetic/add128_03.wast deleted file mode 100644 index 219c84271..000000000 --- a/test/regress/ext:wide-arithmetic/add128_03.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const 1) - (i64.const -1) (i64.const -1)) - (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_04.bin.wast b/test/regress/ext:wide-arithmetic/add128_04.bin.wast deleted file mode 100644 index 3885a8fb9..000000000 --- a/test/regress/ext:wide-arithmetic/add128_04.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0xde70_0b2f_0bdf_e770) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xde70_0b2f_0bdf_e76f) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_04.wast b/test/regress/ext:wide-arithmetic/add128_04.wast deleted file mode 100644 index 2ea01697d..000000000 --- a/test/regress/ext:wide-arithmetic/add128_04.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -2418420703207364752) (i64.const -1) - (i64.const -1) (i64.const -1)) - (i64.const -2418420703207364753) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_05.bin.wast b/test/regress/ext:wide-arithmetic/add128_05.bin.wast deleted file mode 100644 index bd687e65c..000000000 --- a/test/regress/ext:wide-arithmetic/add128_05.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0xc072_955d_0e99_803e) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xc072_955d_0e99_803e) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_05.wast b/test/regress/ext:wide-arithmetic/add128_05.wast deleted file mode 100644 index 0091438e5..000000000 --- a/test/regress/ext:wide-arithmetic/add128_05.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const 0) - (i64.const -4579433644172935106) (i64.const -1)) - (i64.const -4579433644172935106) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_06.bin.wast b/test/regress/ext:wide-arithmetic/add128_06.bin.wast deleted file mode 100644 index c6a9acc66..000000000 --- a/test/regress/ext:wide-arithmetic/add128_06.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_06.wast b/test/regress/ext:wide-arithmetic/add128_06.wast deleted file mode 100644 index 13d92b177..000000000 --- a/test/regress/ext:wide-arithmetic/add128_06.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const 0) - (i64.const 1) (i64.const -1)) - (i64.const 1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_07.bin.wast b/test/regress/ext:wide-arithmetic/add128_07.bin.wast deleted file mode 100644 index 8345ff6ef..000000000 --- a/test/regress/ext:wide-arithmetic/add128_07.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x2) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/add128_07.wast b/test/regress/ext:wide-arithmetic/add128_07.wast deleted file mode 100644 index 9bd2eae00..000000000 --- a/test/regress/ext:wide-arithmetic/add128_07.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const 0) - (i64.const 1) (i64.const 0)) - (i64.const 2) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_08.bin.wast b/test/regress/ext:wide-arithmetic/add128_08.bin.wast deleted file mode 100644 index 732a24d21..000000000 --- a/test/regress/ext:wide-arithmetic/add128_08.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xffff_ffff_ffff_fffe) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_08.wast b/test/regress/ext:wide-arithmetic/add128_08.wast deleted file mode 100644 index 1f2950c55..000000000 --- a/test/regress/ext:wide-arithmetic/add128_08.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -1) (i64.const -1) - (i64.const -1) (i64.const -1)) - (i64.const -2) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_09.bin.wast b/test/regress/ext:wide-arithmetic/add128_09.bin.wast deleted file mode 100644 index 46d24822b..000000000 --- a/test/regress/ext:wide-arithmetic/add128_09.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_09.wast b/test/regress/ext:wide-arithmetic/add128_09.wast deleted file mode 100644 index fc8c805e9..000000000 --- a/test/regress/ext:wide-arithmetic/add128_09.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const -1) - (i64.const 1) (i64.const 0)) - (i64.const 1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_10.bin.wast b/test/regress/ext:wide-arithmetic/add128_10.bin.wast deleted file mode 100644 index c6f1438a1..000000000 --- a/test/regress/ext:wide-arithmetic/add128_10.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_10.wast b/test/regress/ext:wide-arithmetic/add128_10.wast deleted file mode 100644 index e8b97a646..000000000 --- a/test/regress/ext:wide-arithmetic/add128_10.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const 0) - (i64.const 0) (i64.const -1)) - (i64.const 0) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_11.bin.wast b/test/regress/ext:wide-arithmetic/add128_11.bin.wast deleted file mode 100644 index 8fa51c6d0..000000000 --- a/test/regress/ext:wide-arithmetic/add128_11.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/add128_11.wast b/test/regress/ext:wide-arithmetic/add128_11.wast deleted file mode 100644 index 5bf93513a..000000000 --- a/test/regress/ext:wide-arithmetic/add128_11.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const 0) - (i64.const -1) (i64.const -1)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_12.bin.wast b/test/regress/ext:wide-arithmetic/add128_12.bin.wast deleted file mode 100644 index 34d1010fd..000000000 --- a/test/regress/ext:wide-arithmetic/add128_12.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x0) - (i64.const 0x55d4_90b0_8894_6d6f) - (i64.const 0x0) - (i64.const 0x1) - ) - (i64.const 0x0) - (i64.const 0x55d4_90b0_8894_6d70) -) diff --git a/test/regress/ext:wide-arithmetic/add128_12.wast b/test/regress/ext:wide-arithmetic/add128_12.wast deleted file mode 100644 index 98eec8ed8..000000000 --- a/test/regress/ext:wide-arithmetic/add128_12.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 0) (i64.const 6184727276166606191) - (i64.const 0) (i64.const 1)) - (i64.const 0) (i64.const 6184727276166606192)) diff --git a/test/regress/ext:wide-arithmetic/add128_13.bin.wast b/test/regress/ext:wide-arithmetic/add128_13.bin.wast deleted file mode 100644 index ca7b12d6e..000000000 --- a/test/regress/ext:wide-arithmetic/add128_13.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x8af1_2cd7_c179_41a2) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x8af1_2cd7_c179_41a3) - (i64.const 0xffff_ffff_ffff_fffe) -) diff --git a/test/regress/ext:wide-arithmetic/add128_13.wast b/test/regress/ext:wide-arithmetic/add128_13.wast deleted file mode 100644 index f3965e33a..000000000 --- a/test/regress/ext:wide-arithmetic/add128_13.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -8434911321912688222) (i64.const -1) - (i64.const 1) (i64.const -1)) - (i64.const -8434911321912688221) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/add128_14.bin.wast b/test/regress/ext:wide-arithmetic/add128_14.bin.wast deleted file mode 100644 index 13016bfb0..000000000 --- a/test/regress/ext:wide-arithmetic/add128_14.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_fffe) -) diff --git a/test/regress/ext:wide-arithmetic/add128_14.wast b/test/regress/ext:wide-arithmetic/add128_14.wast deleted file mode 100644 index 5a6127486..000000000 --- a/test/regress/ext:wide-arithmetic/add128_14.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const -1) - (i64.const 0) (i64.const -1)) - (i64.const 1) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/add128_15.bin.wast b/test/regress/ext:wide-arithmetic/add128_15.bin.wast deleted file mode 100644 index f45290336..000000000 --- a/test/regress/ext:wide-arithmetic/add128_15.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0xb88b_4952_41bf_2634) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0x1) - (i64.const 0xb88b_4952_41bf_2634) -) diff --git a/test/regress/ext:wide-arithmetic/add128_15.wast b/test/regress/ext:wide-arithmetic/add128_15.wast deleted file mode 100644 index 5a67f2eb6..000000000 --- a/test/regress/ext:wide-arithmetic/add128_15.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const -5148941131328838092) - (i64.const 0) (i64.const 0)) - (i64.const 1) (i64.const -5148941131328838092)) diff --git a/test/regress/ext:wide-arithmetic/add128_16.bin.wast b/test/regress/ext:wide-arithmetic/add128_16.bin.wast deleted file mode 100644 index 4402671bb..000000000 --- a/test/regress/ext:wide-arithmetic/add128_16.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x2) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/add128_16.wast b/test/regress/ext:wide-arithmetic/add128_16.wast deleted file mode 100644 index 0e993e181..000000000 --- a/test/regress/ext:wide-arithmetic/add128_16.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const 1) - (i64.const 1) (i64.const 0)) - (i64.const 2) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_17.bin.wast b/test/regress/ext:wide-arithmetic/add128_17.bin.wast deleted file mode 100644 index 2bca37456..000000000 --- a/test/regress/ext:wide-arithmetic/add128_17.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xcd87_b43b_cabe_1ef9) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xcd87_b43b_cabe_1ef8) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_17.wast b/test/regress/ext:wide-arithmetic/add128_17.wast deleted file mode 100644 index f77cd8001..000000000 --- a/test/regress/ext:wide-arithmetic/add128_17.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -1) (i64.const -1) - (i64.const -3636740005180858631) (i64.const -1)) - (i64.const -3636740005180858632) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_18.bin.wast b/test/regress/ext:wide-arithmetic/add128_18.bin.wast deleted file mode 100644 index 31432b158..000000000 --- a/test/regress/ext:wide-arithmetic/add128_18.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0xb342_9ecf_13cc_104d) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0xb342_9ecf_13cc_104d) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_18.wast b/test/regress/ext:wide-arithmetic/add128_18.wast deleted file mode 100644 index a5f05804f..000000000 --- a/test/regress/ext:wide-arithmetic/add128_18.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -5529682780229988275) (i64.const -1) - (i64.const 0) (i64.const 0)) - (i64.const -5529682780229988275) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/add128_19.bin.wast b/test/regress/ext:wide-arithmetic/add128_19.bin.wast deleted file mode 100644 index e3c865b31..000000000 --- a/test/regress/ext:wide-arithmetic/add128_19.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0xb551_4210_87c0_d81b) - (i64.const 0xe27_e121_0081_15a9) - (i64.const 0x1) - ) - (i64.const 0xe27_e121_0081_15aa) - (i64.const 0xb551_4210_87c0_d81c) -) diff --git a/test/regress/ext:wide-arithmetic/add128_19.wast b/test/regress/ext:wide-arithmetic/add128_19.wast deleted file mode 100644 index bf06b5d9f..000000000 --- a/test/regress/ext:wide-arithmetic/add128_19.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const -5381447440966559717) - (i64.const 1020031372481336745) (i64.const 1)) - (i64.const 1020031372481336746) (i64.const -5381447440966559716)) diff --git a/test/regress/ext:wide-arithmetic/add128_20.bin.wast b/test/regress/ext:wide-arithmetic/add128_20.bin.wast deleted file mode 100644 index b76bc3904..000000000 --- a/test/regress/ext:wide-arithmetic/add128_20.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0x1) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/add128_20.wast b/test/regress/ext:wide-arithmetic/add128_20.wast deleted file mode 100644 index 0b4c83a02..000000000 --- a/test/regress/ext:wide-arithmetic/add128_20.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 1) (i64.const 1) - (i64.const 0) (i64.const 0)) - (i64.const 1) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/add128_21.bin.wast b/test/regress/ext:wide-arithmetic/add128_21.bin.wast deleted file mode 100644 index 12d956e4d..000000000 --- a/test/regress/ext:wide-arithmetic/add128_21.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x813d_e8c2_8da3_52e4) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x1) - ) - (i64.const 0x813d_e8c2_8da3_52e5) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/add128_21.wast b/test/regress/ext:wide-arithmetic/add128_21.wast deleted file mode 100644 index 10ef93f6b..000000000 --- a/test/regress/ext:wide-arithmetic/add128_21.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -9133888546939907356) (i64.const -1) - (i64.const 1) (i64.const 1)) - (i64.const -9133888546939907355) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/add128_22.bin.wast b/test/regress/ext:wide-arithmetic/add128_22.bin.wast deleted file mode 100644 index dbc4dbdf8..000000000 --- a/test/regress/ext:wide-arithmetic/add128_22.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0xbffe_b739_0e0a_2fc9) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xbffe_b739_0e0a_2fc9) - (i64.const 0xffff_ffff_ffff_fffe) -) diff --git a/test/regress/ext:wide-arithmetic/add128_22.wast b/test/regress/ext:wide-arithmetic/add128_22.wast deleted file mode 100644 index 48e7b420c..000000000 --- a/test/regress/ext:wide-arithmetic/add128_22.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const -4612047512704241719) (i64.const -1) - (i64.const 0) (i64.const -1)) - (i64.const -4612047512704241719) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/add128_23.bin.wast b/test/regress/ext:wide-arithmetic/add128_23.bin.wast deleted file mode 100644 index 543f8760c..000000000 --- a/test/regress/ext:wide-arithmetic/add128_23.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\61\64\64\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x5c1_6285_a443_d08c) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x5c1_6285_a443_d08d) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/add128_23.wast b/test/regress/ext:wide-arithmetic/add128_23.wast deleted file mode 100644 index 9cefef3f7..000000000 --- a/test/regress/ext:wide-arithmetic/add128_23.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "i64.add128" - (i64.const 414720966820876428) (i64.const -1) - (i64.const 1) (i64.const 0)) - (i64.const 414720966820876429) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/invalid.bin.wast b/test/regress/ext:wide-arithmetic/invalid.bin.wast new file mode 100644 index 000000000..c047616ec --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid.bin.wast @@ -0,0 +1,70 @@ +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a" + "\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20\01" + "\20\02\20\03\fc\13\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\03\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a" + "\90\80\80\80\00\01\8a\80\80\80\00\00\20\00\20\01" + "\20\02\fc\13\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a" + "\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20\01" + "\20\02\20\03\fc\14\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" + "\03\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a" + "\90\80\80\80\00\01\8a\80\80\80\00\00\20\00\20\01" + "\20\02\fc\14\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\02\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a\8e\80" + "\80\80\00\01\88\80\80\80\00\00\20\00\20\01\fc\15" + "\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a\8c\80" + "\80\80\00\01\86\80\80\80\00\00\20\00\fc\15\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\02\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a\8e\80" + "\80\80\00\01\88\80\80\80\00\00\20\00\20\01\fc\16" + "\0b" + ) + "type mismatch" +) +(assert_invalid + (module binary + "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" + "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a\8c\80" + "\80\80\00\01\86\80\80\80\00\00\20\00\fc\16\0b" + ) + "type mismatch" +) diff --git a/test/regress/ext:wide-arithmetic/invalid.wast b/test/regress/ext:wide-arithmetic/invalid.wast new file mode 100644 index 000000000..5555859b7 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/invalid.wast @@ -0,0 +1,68 @@ +(assert_invalid + (module + (func (param i64 i64 i64 i64) (result i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + i64.add128) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64 i64 i64) (result i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + i64.sub128) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_s) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64) (result i64 i64) + local.get 0 + i64.mul_wide_s) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_u) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64) (result i64 i64) + local.get 0 + i64.mul_wide_u) + ) + "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_00.bin.wast b/test/regress/ext:wide-arithmetic/invalid_00.bin.wast deleted file mode 100644 index 7e90e582e..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_00.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a" - "\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20\01" - "\20\02\20\03\fc\13\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_00.wast b/test/regress/ext:wide-arithmetic/invalid_00.wast deleted file mode 100644 index 5fd3c4df6..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_00.wast +++ /dev/null @@ -1,10 +0,0 @@ -(assert_invalid - (module - (func (param i64 i64 i64 i64) (result i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.add128) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_01.bin.wast b/test/regress/ext:wide-arithmetic/invalid_01.bin.wast deleted file mode 100644 index d0d3aea12..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_01.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" - "\03\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a" - "\90\80\80\80\00\01\8a\80\80\80\00\00\20\00\20\01" - "\20\02\fc\13\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_01.wast b/test/regress/ext:wide-arithmetic/invalid_01.wast deleted file mode 100644 index 5671ba98b..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_01.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module - (func (param i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - i64.add128) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_02.bin.wast b/test/regress/ext:wide-arithmetic/invalid_02.bin.wast deleted file mode 100644 index 766f2f741..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_02.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a" - "\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20\01" - "\20\02\20\03\fc\14\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_02.wast b/test/regress/ext:wide-arithmetic/invalid_02.wast deleted file mode 100644 index d9e73da07..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_02.wast +++ /dev/null @@ -1,10 +0,0 @@ -(assert_invalid - (module - (func (param i64 i64 i64 i64) (result i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_03.bin.wast b/test/regress/ext:wide-arithmetic/invalid_03.bin.wast deleted file mode 100644 index 99f5abd3f..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_03.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\89\80\80\80\00\01\60" - "\03\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a" - "\90\80\80\80\00\01\8a\80\80\80\00\00\20\00\20\01" - "\20\02\fc\14\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_03.wast b/test/regress/ext:wide-arithmetic/invalid_03.wast deleted file mode 100644 index d13da4034..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_03.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module - (func (param i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - i64.sub128) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_04.bin.wast b/test/regress/ext:wide-arithmetic/invalid_04.bin.wast deleted file mode 100644 index 2aa75538b..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_04.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\02\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a\8e\80" - "\80\80\00\01\88\80\80\80\00\00\20\00\20\01\fc\15" - "\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_04.wast b/test/regress/ext:wide-arithmetic/invalid_04.wast deleted file mode 100644 index 01435649a..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_04.wast +++ /dev/null @@ -1,8 +0,0 @@ -(assert_invalid - (module - (func (param i64 i64) (result i64) - local.get 0 - local.get 1 - i64.mul_wide_s) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_05.bin.wast b/test/regress/ext:wide-arithmetic/invalid_05.bin.wast deleted file mode 100644 index e6fd770e7..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_05.bin.wast +++ /dev/null @@ -1,8 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a\8c\80" - "\80\80\00\01\86\80\80\80\00\00\20\00\fc\15\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_05.wast b/test/regress/ext:wide-arithmetic/invalid_05.wast deleted file mode 100644 index d1bddb2ff..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_05.wast +++ /dev/null @@ -1,7 +0,0 @@ -(assert_invalid - (module - (func (param i64) (result i64 i64) - local.get 0 - i64.mul_wide_s) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_06.bin.wast b/test/regress/ext:wide-arithmetic/invalid_06.bin.wast deleted file mode 100644 index f512a4f15..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_06.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\02\7e\7e\01\7e\03\82\80\80\80\00\01\00\0a\8e\80" - "\80\80\00\01\88\80\80\80\00\00\20\00\20\01\fc\16" - "\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_06.wast b/test/regress/ext:wide-arithmetic/invalid_06.wast deleted file mode 100644 index ac8367786..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_06.wast +++ /dev/null @@ -1,8 +0,0 @@ -(assert_invalid - (module - (func (param i64 i64) (result i64) - local.get 0 - local.get 1 - i64.mul_wide_u) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/invalid_07.bin.wast b/test/regress/ext:wide-arithmetic/invalid_07.bin.wast deleted file mode 100644 index d9fb0bf73..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_07.bin.wast +++ /dev/null @@ -1,8 +0,0 @@ -(assert_invalid - (module binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\0a\8c\80" - "\80\80\00\01\86\80\80\80\00\00\20\00\fc\16\0b" - ) - "type mismatch" -) diff --git a/test/regress/ext:wide-arithmetic/invalid_07.wast b/test/regress/ext:wide-arithmetic/invalid_07.wast deleted file mode 100644 index 686bb80d1..000000000 --- a/test/regress/ext:wide-arithmetic/invalid_07.wast +++ /dev/null @@ -1,7 +0,0 @@ -(assert_invalid - (module - (func (param i64) (result i64 i64) - local.get 0 - i64.mul_wide_u) - ) - "type mismatch") diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s.bin.wast new file mode 100644 index 000000000..d1eda5c57 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s.bin.wast @@ -0,0 +1,149 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\15\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x1)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x5742_9ac7_69b3_3a61)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xa3cd_6a01_b110_8823) (i64.const 0x1)) + (i64.const 0xa3cd_6a01_b110_8823) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xdd88_9aa8_4cf0_af1c) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xcab9_4e02_cbdd_ba3b) + (i64.const 0x302d_9c77_9f73_013e) + ) + (i64.const 0x47fb_b82b_8aee_554a) + (i64.const 0xf5f9_40a3_4335_88dc) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0x8d55_b850_2f0f_b7f7) + (i64.const 0x6d66_e6b6_97f6_5e92) + ) + (i64.const 0x893e_c13a_14dd_9cde) + (i64.const 0xceff_684a_ce74_ba9b) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x3b5f_d493_d409_e495) (i64.const 0x1)) + (i64.const 0x3b5f_d493_d409_e495) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0x8524_dea9_22e7_e9e2) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x7adb_2156_dd18_161e) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xc3eb_6f02_21d0_c035) + ) + (i64.const 0x3c14_90fd_de2f_3fcb) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x9af_6cdb_82ea_8f59) (i64.const 0x1)) + (i64.const 0x9af_6cdb_82ea_8f59) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0xcbaf_7620_47a2_967f)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x74c5_911e_1dc9_160e)) + (i64.const 0x74c5_911e_1dc9_160e) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.mul_wide_s" + (i64.const 0x4597_a2c5_a024_2ad5) + (i64.const 0xb980_1486_5096_dd3f) + ) + (i64.const 0x2773_dbf3_4aae_6b6b) + (i64.const 0xecd5_c340_ef65_1405) +) +(assert_return + (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s.wast b/test/regress/ext:wide-arithmetic/mul_wide_s.wast new file mode 100644 index 000000000..71a2b170e --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_s.wast @@ -0,0 +1,54 @@ +(module + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) +) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 6287758211025156705)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -6643537319803451357) (i64.const 1)) + (i64.const -6643537319803451357) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -2483565146858803428) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -3838951433439430085) (i64.const 3471602925362676030)) + (i64.const 5186941893001237834) (i64.const -722475195264825124)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -8262495286814853129) (i64.const 7883241869666573970)) + (i64.const -8557189786755031842) (i64.const -3530988912334554469)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 4278371902407959701) (i64.const 1)) + (i64.const 4278371902407959701) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -8852706149487089182) (i64.const -1)) + (i64.const 8852706149487089182) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -4329244561838653387)) + (i64.const 4329244561838653387) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 697896157315764057) (i64.const 1)) + (i64.const 697896157315764057) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const -3769664482072947073)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 8414291037346403854)) + (i64.const 8414291037346403854) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 5014655679779318485) (i64.const -5080037812563681985)) + (i64.const 2842857627777395563) (i64.const -1380983027057486843)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast deleted file mode 100644 index c25163f02..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_00.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_00.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_00.wast deleted file mode 100644 index 31570f657..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_00.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast deleted file mode 100644 index 73671d611..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_01.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_01.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_01.wast deleted file mode 100644 index 356e5d0b7..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_01.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast deleted file mode 100644 index d31bf14ef..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_02.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_02.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_02.wast deleted file mode 100644 index 9b78333f8..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_02.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast deleted file mode 100644 index ce8b60497..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_03.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x1)) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_03.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_03.wast deleted file mode 100644 index 11552bef0..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_03.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 1)) - (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast deleted file mode 100644 index 73671d611..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_04.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_04.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_04.wast deleted file mode 100644 index 356e5d0b7..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_04.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast deleted file mode 100644 index 21b959941..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_05.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x5742_9ac7_69b3_3a61)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_05.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_05.wast deleted file mode 100644 index 6e4d98721..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_05.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 6287758211025156705)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast deleted file mode 100644 index 2486b3243..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_06.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0xa3cd_6a01_b110_8823) (i64.const 0x1)) - (i64.const 0xa3cd_6a01_b110_8823) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_06.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_06.wast deleted file mode 100644 index c1351d744..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_06.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -6643537319803451357) (i64.const 1)) - (i64.const -6643537319803451357) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast deleted file mode 100644 index 82a573181..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_07.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0xdd88_9aa8_4cf0_af1c) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_07.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_07.wast deleted file mode 100644 index 586642acc..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_07.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -2483565146858803428) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast deleted file mode 100644 index 73671d611..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_08.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_08.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_08.wast deleted file mode 100644 index 356e5d0b7..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_08.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast deleted file mode 100644 index 53c16ac9e..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_09.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0xcab9_4e02_cbdd_ba3b) - (i64.const 0x302d_9c77_9f73_013e) - ) - (i64.const 0x47fb_b82b_8aee_554a) - (i64.const 0xf5f9_40a3_4335_88dc) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_09.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_09.wast deleted file mode 100644 index 4f7e58ee4..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_09.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -3838951433439430085) (i64.const 3471602925362676030)) - (i64.const 5186941893001237834) (i64.const -722475195264825124)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast deleted file mode 100644 index d87bf03f6..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_10.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0x8d55_b850_2f0f_b7f7) - (i64.const 0x6d66_e6b6_97f6_5e92) - ) - (i64.const 0x893e_c13a_14dd_9cde) - (i64.const 0xceff_684a_ce74_ba9b) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_10.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_10.wast deleted file mode 100644 index b224da7b0..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_10.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -8262495286814853129) (i64.const 7883241869666573970)) - (i64.const -8557189786755031842) (i64.const -3530988912334554469)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast deleted file mode 100644 index f42859c69..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_11.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x3b5f_d493_d409_e495) (i64.const 0x1)) - (i64.const 0x3b5f_d493_d409_e495) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_11.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_11.wast deleted file mode 100644 index 0a43220e2..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_11.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 4278371902407959701) (i64.const 1)) - (i64.const 4278371902407959701) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast deleted file mode 100644 index e84339dcf..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_12.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0x8524_dea9_22e7_e9e2) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x7adb_2156_dd18_161e) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_12.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_12.wast deleted file mode 100644 index 622a8806c..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_12.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -8852706149487089182) (i64.const -1)) - (i64.const 8852706149487089182) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast deleted file mode 100644 index 2ec878671..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_13.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_13.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_13.wast deleted file mode 100644 index 14e744b69..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_13.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) - (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast deleted file mode 100644 index 7b5fd01b9..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_14.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xc3eb_6f02_21d0_c035) - ) - (i64.const 0x3c14_90fd_de2f_3fcb) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_14.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_14.wast deleted file mode 100644 index 6f10e8490..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_14.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -4329244561838653387)) - (i64.const 4329244561838653387) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast deleted file mode 100644 index d31bf14ef..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_15.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_15.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_15.wast deleted file mode 100644 index 9b78333f8..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_15.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast deleted file mode 100644 index 308fcd873..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_16.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x9af_6cdb_82ea_8f59) (i64.const 0x1)) - (i64.const 0x9af_6cdb_82ea_8f59) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_16.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_16.wast deleted file mode 100644 index e8035b307..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_16.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 697896157315764057) (i64.const 1)) - (i64.const 697896157315764057) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast deleted file mode 100644 index 73671d611..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_17.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_17.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_17.wast deleted file mode 100644 index 356e5d0b7..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_17.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast deleted file mode 100644 index 5d75a8945..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_18.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_18.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_18.wast deleted file mode 100644 index 114d698c7..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_18.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast deleted file mode 100644 index c6a9e740e..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_19.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0xcbaf_7620_47a2_967f)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_19.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_19.wast deleted file mode 100644 index 6ac2317e7..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_19.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const -3769664482072947073)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast deleted file mode 100644 index 1dade961a..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_20.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0x74c5_911e_1dc9_160e)) - (i64.const 0x74c5_911e_1dc9_160e) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_20.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_20.wast deleted file mode 100644 index c1b7831b0..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_20.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 8414291037346403854)) - (i64.const 8414291037346403854) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast deleted file mode 100644 index 2ec878671..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_21.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_21.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_21.wast deleted file mode 100644 index 14e744b69..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_21.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) - (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast deleted file mode 100644 index 1dfe6af1c..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_22.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" - (i64.const 0x4597_a2c5_a024_2ad5) - (i64.const 0xb980_1486_5096_dd3f) - ) - (i64.const 0x2773_dbf3_4aae_6b6b) - (i64.const 0xecd5_c340_ef65_1405) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_22.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_22.wast deleted file mode 100644 index 65cedb9b2..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_22.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 5014655679779318485) (i64.const -5080037812563681985)) - (i64.const 2842857627777395563) (i64.const -1380983027057486843)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast deleted file mode 100644 index fe2cf4d69..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_23.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\73\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\15\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_s" (i64.const 0x0) (i64.const 0x1)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_s_23.wast b/test/regress/ext:wide-arithmetic/mul_wide_s_23.wast deleted file mode 100644 index affc0a559..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_s_23.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_s) -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 1)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u.bin.wast new file mode 100644 index 000000000..b986d7bf2 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u.bin.wast @@ -0,0 +1,138 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" + "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" + "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" + "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" + "\80\00\00\20\00\20\01\fc\16\0b" +) +(module instance) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x1)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xbe4b_e781_63d6_3be9) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0x2d63_7f1f_6276_94b7) + (i64.const 0x5c1a_1c43_1f2e_fb16) + ) + (i64.const 0xb4a3_af72_9be2_34ba) + (i64.const 0x1054_62cc_f90b_b242) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x9424_f807_c809_8009) (i64.const 0x1)) + (i64.const 0x9424_f807_c809_8009) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x92dc_f770_4679_83df)) + (i64.const 0x92dc_f770_4679_83df) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x732_4727_608e_2f8a)) + (i64.const 0x732_4727_608e_2f8a) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0xf87_220e_51bf_3cd3) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xf078_ddf1_ae40_c32d) + (i64.const 0xf87_220e_51bf_3cd2) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0xb277_6089_0a76_7315) (i64.const 0x1)) + (i64.const 0xb277_6089_0a76_7315) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x3203_7335_56ac_c379)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0x9a14_938e_92f2_5754) + (i64.const 0x3612_ef63_b479_3758) + ) + (i64.const 0x4fa3_6602_eac5_10e0) + (i64.const 0x208b_bca7_ab5c_0b92) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x88d_e0df_df55_734d) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" + (i64.const 0x2701_b7c5_f895_8858) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xd8fe_483a_076a_77a8) + (i64.const 0x2701_b7c5_f895_8857) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u.wast b/test/regress/ext:wide-arithmetic/mul_wide_u.wast new file mode 100644 index 000000000..9ff07e561 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/mul_wide_u.wast @@ -0,0 +1,52 @@ +(module + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 1)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -4734436040338162711) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 3270597527173764279) (i64.const 6636648075495406358)) + (i64.const -5430303818902260550) (i64.const 1176674035141685826)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -7771814344630108151) (i64.const 1)) + (i64.const -7771814344630108151) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -7864138787704962081)) + (i64.const -7864138787704962081) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 518555141550256010)) + (i64.const 518555141550256010) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1118900477321231571) (i64.const -1)) + (i64.const -1118900477321231571) (i64.const 1118900477321231570)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -5586890671027490027) (i64.const 1)) + (i64.const -5586890671027490027) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 3603850799751152505)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 18446744073709551614)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -7344082851774441644) (i64.const 3896439839137544024)) + (i64.const 5738542512914895072) (i64.const 2345175459296971666)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 616395976148874061) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 2810729703362889816) (i64.const -1)) + (i64.const -2810729703362889816) (i64.const 2810729703362889815)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast deleted file mode 100644 index 5291710f5..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_00.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_00.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_00.wast deleted file mode 100644 index a736675ef..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_00.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast deleted file mode 100644 index c1dc582c9..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_01.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_01.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_01.wast deleted file mode 100644 index 83bf98bbe..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_01.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 1)) - (i64.const 1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast deleted file mode 100644 index 927a6664c..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_02.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x1)) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_02.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_02.wast deleted file mode 100644 index 86ab8d529..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_02.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 1)) - (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast deleted file mode 100644 index fb4dfa1ae..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_03.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0xbe4b_e781_63d6_3be9) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_03.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_03.wast deleted file mode 100644 index 384062675..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_03.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -4734436040338162711) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast deleted file mode 100644 index 2dc600f98..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_04.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_04.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_04.wast deleted file mode 100644 index d68737c76..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_04.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast deleted file mode 100644 index 805f6d25f..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_05.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" - (i64.const 0x2d63_7f1f_6276_94b7) - (i64.const 0x5c1a_1c43_1f2e_fb16) - ) - (i64.const 0xb4a3_af72_9be2_34ba) - (i64.const 0x1054_62cc_f90b_b242) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_05.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_05.wast deleted file mode 100644 index cc75f0cb2..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_05.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 3270597527173764279) (i64.const 6636648075495406358)) - (i64.const -5430303818902260550) (i64.const 1176674035141685826)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast deleted file mode 100644 index 98aaffc03..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_06.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x9424_f807_c809_8009) (i64.const 0x1)) - (i64.const 0x9424_f807_c809_8009) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_06.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_06.wast deleted file mode 100644 index d8e001e00..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_06.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -7771814344630108151) (i64.const 1)) - (i64.const -7771814344630108151) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast deleted file mode 100644 index 2dc600f98..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_07.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_07.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_07.wast deleted file mode 100644 index d68737c76..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_07.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast deleted file mode 100644 index 6d8bff8ef..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_08.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x92dc_f770_4679_83df)) - (i64.const 0x92dc_f770_4679_83df) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_08.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_08.wast deleted file mode 100644 index 42ca2f3b9..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_08.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -7864138787704962081)) - (i64.const -7864138787704962081) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast deleted file mode 100644 index c1ad1a696..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_09.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x732_4727_608e_2f8a)) - (i64.const 0x732_4727_608e_2f8a) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_09.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_09.wast deleted file mode 100644 index a3c73d12f..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_09.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 518555141550256010)) - (i64.const 518555141550256010) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast deleted file mode 100644 index e659926e8..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_10.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_10.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_10.wast deleted file mode 100644 index aa81a7df8..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_10.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) - (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast deleted file mode 100644 index 9f420f39b..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_11.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" - (i64.const 0xf87_220e_51bf_3cd3) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xf078_ddf1_ae40_c32d) - (i64.const 0xf87_220e_51bf_3cd2) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_11.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_11.wast deleted file mode 100644 index c6feaa2f2..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_11.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1118900477321231571) (i64.const -1)) - (i64.const -1118900477321231571) (i64.const 1118900477321231570)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast deleted file mode 100644 index d4b65a115..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_12.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0xffff_ffff_ffff_ffff) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_12.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_12.wast deleted file mode 100644 index bc83dbb3e..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_12.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast deleted file mode 100644 index ead588c92..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_13.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0xb277_6089_0a76_7315) (i64.const 0x1)) - (i64.const 0xb277_6089_0a76_7315) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_13.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_13.wast deleted file mode 100644 index 31842869c..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_13.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -5586890671027490027) (i64.const 1)) - (i64.const -5586890671027490027) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast deleted file mode 100644 index 7c4f3cbc6..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_14.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x3203_7335_56ac_c379)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_14.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_14.wast deleted file mode 100644 index dea502216..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_14.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 3603850799751152505)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast deleted file mode 100644 index fea7c3abd..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_15.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_fffe) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_15.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_15.wast deleted file mode 100644 index 030d663fe..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_15.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const -1)) - (i64.const 1) (i64.const 18446744073709551614)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast deleted file mode 100644 index 568517884..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_16.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x1)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_16.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_16.wast deleted file mode 100644 index 5ef9bba8f..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_16.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 1)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast deleted file mode 100644 index b92931e1b..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_17.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" - (i64.const 0x9a14_938e_92f2_5754) - (i64.const 0x3612_ef63_b479_3758) - ) - (i64.const 0x4fa3_6602_eac5_10e0) - (i64.const 0x208b_bca7_ab5c_0b92) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_17.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_17.wast deleted file mode 100644 index e619f12b1..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_17.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const -7344082851774441644) (i64.const 3896439839137544024)) - (i64.const 5738542512914895072) (i64.const 2345175459296971666)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast deleted file mode 100644 index 5291710f5..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_18.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x0) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_18.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_18.wast deleted file mode 100644 index a736675ef..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_18.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast deleted file mode 100644 index 7d3a40b56..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_19.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x88d_e0df_df55_734d) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_19.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_19.wast deleted file mode 100644 index 10f8cdb1e..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_19.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 616395976148874061) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast deleted file mode 100644 index 005a1e492..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_20.bin.wast +++ /dev/null @@ -1,16 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" - (i64.const 0x2701_b7c5_f895_8858) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xd8fe_483a_076a_77a8) - (i64.const 0x2701_b7c5_f895_8857) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_20.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_20.wast deleted file mode 100644 index d99e2b0c9..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_20.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 2810729703362889816) (i64.const -1)) - (i64.const -2810729703362889816) (i64.const 2810729703362889815)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast deleted file mode 100644 index e659926e8..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_21.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_21.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_21.wast deleted file mode 100644 index aa81a7df8..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_21.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) - (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast deleted file mode 100644 index 2dc600f98..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_22.bin.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\92" - "\80\80\80\00\01\0e\69\36\34\2e\6d\75\6c\5f\77\69" - "\64\65\5f\75\00\00\0a\8e\80\80\80\00\01\88\80\80" - "\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x1) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/mul_wide_u_22.wast b/test/regress/ext:wide-arithmetic/mul_wide_u_22.wast deleted file mode 100644 index d68737c76..000000000 --- a/test/regress/ext:wide-arithmetic/mul_wide_u_22.wast +++ /dev/null @@ -1,8 +0,0 @@ -(module - (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u) -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong.bin.wast similarity index 64% rename from test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast rename to test/regress/ext:wide-arithmetic/overlong.bin.wast index a67b77031..ba64eb35c 100644 --- a/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.bin.wast +++ b/test/regress/ext:wide-arithmetic/overlong.bin.wast @@ -12,8 +12,33 @@ "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" ) (module instance) +(assert_return + (invoke "i64.add128" + (i64.const 0x1) + (i64.const 0x2) + (i64.const 0x3) + (i64.const 0x4) + ) + (i64.const 0x4) + (i64.const 0x6) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x2) + (i64.const 0x5) + (i64.const 0x1) + (i64.const 0x2) + ) + (i64.const 0x1) + (i64.const 0x3) +) (assert_return (invoke "i64.mul_wide_s" (i64.const 0x1) (i64.const 0xffff_ffff_ffff_fffe)) (i64.const 0xffff_ffff_ffff_fffe) (i64.const 0xffff_ffff_ffff_ffff) ) +(assert_return + (invoke "i64.mul_wide_u" (i64.const 0x3) (i64.const 0x2)) + (i64.const 0x6) + (i64.const 0x0) +) diff --git a/test/regress/ext:wide-arithmetic/overlong_add128_00.wast b/test/regress/ext:wide-arithmetic/overlong.wast similarity index 85% rename from test/regress/ext:wide-arithmetic/overlong_add128_00.wast rename to test/regress/ext:wide-arithmetic/overlong.wast index c04a44bbe..d7bbd7c6e 100644 --- a/test/regress/ext:wide-arithmetic/overlong_add128_00.wast +++ b/test/regress/ext:wide-arithmetic/overlong.wast @@ -60,3 +60,11 @@ (i64.const 1) (i64.const 2) (i64.const 3) (i64.const 4)) (i64.const 4) (i64.const 6)) +(assert_return (invoke "i64.sub128" + (i64.const 2) (i64.const 5) + (i64.const 1) (i64.const 2)) + (i64.const 1) (i64.const 3)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -2)) + (i64.const -2) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 3) (i64.const 2)) + (i64.const 6) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast deleted file mode 100644 index 48f17c71b..000000000 --- a/test/regress/ext:wide-arithmetic/overlong_add128_00.bin.wast +++ /dev/null @@ -1,24 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" - "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" - "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" - "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" - "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" - "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" - "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" - "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" - "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" - "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" - "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.add128" - (i64.const 0x1) - (i64.const 0x2) - (i64.const 0x3) - (i64.const 0x4) - ) - (i64.const 0x4) - (i64.const 0x6) -) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast deleted file mode 100644 index 251e6d18b..000000000 --- a/test/regress/ext:wide-arithmetic/overlong_mul_wide_s_00.wast +++ /dev/null @@ -1,60 +0,0 @@ -(module binary - "\00asm" "\01\00\00\00" - - "\01\11" ;; type section, 17 bytes - "\02" ;; 2 count - "\60" ;; type0 = function - "\04\7e\7e\7e\7e" ;; 4 params - all i64 - "\02\7e\7e" ;; 2 results - both i64 - "\60" ;; type1 = function - "\02\7e\7e" ;; 2 params - both i64 - "\02\7e\7e" ;; 2 results - both i64 - - "\03\05" ;; function section, 5 byte - "\04" ;; 4 count - "\00\00\01\01" ;; types of each function (0, 0, 1, 1) - - "\07\3d" ;; export section 0x3d bytes - "\04" ;; 4 count - "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 - "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 - "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 - "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 - - "\0a\37" ;; code section + byte length - "\04" ;; 4 count - - "\0e" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\20\02" ;; local.get 2 - "\20\03" ;; local.get 3 - "\fc\93\80\00" ;; i64.add128 (overlong) - "\0b" ;; end - - "\0d" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\20\02" ;; local.get 2 - "\20\03" ;; local.get 3 - "\fc\94\00" ;; i64.sub128 (overlong) - "\0b" ;; end - - "\0c" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) - "\0b" ;; end - - "\0b" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) - "\0b" ;; end -) -(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -2)) - (i64.const -2) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast deleted file mode 100644 index 8e6222f11..000000000 --- a/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.bin.wast +++ /dev/null @@ -1,19 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" - "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" - "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" - "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" - "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" - "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" - "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" - "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" - "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" - "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" - "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.mul_wide_u" (i64.const 0x3) (i64.const 0x2)) - (i64.const 0x6) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast b/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast deleted file mode 100644 index dcd62f1bd..000000000 --- a/test/regress/ext:wide-arithmetic/overlong_mul_wide_u_00.wast +++ /dev/null @@ -1,60 +0,0 @@ -(module binary - "\00asm" "\01\00\00\00" - - "\01\11" ;; type section, 17 bytes - "\02" ;; 2 count - "\60" ;; type0 = function - "\04\7e\7e\7e\7e" ;; 4 params - all i64 - "\02\7e\7e" ;; 2 results - both i64 - "\60" ;; type1 = function - "\02\7e\7e" ;; 2 params - both i64 - "\02\7e\7e" ;; 2 results - both i64 - - "\03\05" ;; function section, 5 byte - "\04" ;; 4 count - "\00\00\01\01" ;; types of each function (0, 0, 1, 1) - - "\07\3d" ;; export section 0x3d bytes - "\04" ;; 4 count - "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 - "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 - "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 - "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 - - "\0a\37" ;; code section + byte length - "\04" ;; 4 count - - "\0e" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\20\02" ;; local.get 2 - "\20\03" ;; local.get 3 - "\fc\93\80\00" ;; i64.add128 (overlong) - "\0b" ;; end - - "\0d" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\20\02" ;; local.get 2 - "\20\03" ;; local.get 3 - "\fc\94\00" ;; i64.sub128 (overlong) - "\0b" ;; end - - "\0c" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) - "\0b" ;; end - - "\0b" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) - "\0b" ;; end -) -(assert_return (invoke "i64.mul_wide_u" (i64.const 3) (i64.const 2)) - (i64.const 6) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast b/test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast deleted file mode 100644 index b0f6e13e1..000000000 --- a/test/regress/ext:wide-arithmetic/overlong_sub128_00.bin.wast +++ /dev/null @@ -1,24 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\91\80\80\80\00\02\60" - "\04\7e\7e\7e\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03" - "\85\80\80\80\00\04\00\00\01\01\07\bd\80\80\80\00" - "\04\0a\69\36\34\2e\61\64\64\31\32\38\00\00\0a\69" - "\36\34\2e\73\75\62\31\32\38\00\01\0e\69\36\34\2e" - "\6d\75\6c\5f\77\69\64\65\5f\73\00\02\0e\69\36\34" - "\2e\6d\75\6c\5f\77\69\64\65\5f\75\00\03\0a\bd\80" - "\80\80\00\04\8c\80\80\80\00\00\20\00\20\01\20\02" - "\20\03\fc\13\0b\8c\80\80\80\00\00\20\00\20\01\20" - "\02\20\03\fc\14\0b\88\80\80\80\00\00\20\00\20\01" - "\fc\15\0b\88\80\80\80\00\00\20\00\20\01\fc\16\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x2) - (i64.const 0x5) - (i64.const 0x1) - (i64.const 0x2) - ) - (i64.const 0x1) - (i64.const 0x3) -) diff --git a/test/regress/ext:wide-arithmetic/overlong_sub128_00.wast b/test/regress/ext:wide-arithmetic/overlong_sub128_00.wast deleted file mode 100644 index 2ef8d3939..000000000 --- a/test/regress/ext:wide-arithmetic/overlong_sub128_00.wast +++ /dev/null @@ -1,62 +0,0 @@ -(module binary - "\00asm" "\01\00\00\00" - - "\01\11" ;; type section, 17 bytes - "\02" ;; 2 count - "\60" ;; type0 = function - "\04\7e\7e\7e\7e" ;; 4 params - all i64 - "\02\7e\7e" ;; 2 results - both i64 - "\60" ;; type1 = function - "\02\7e\7e" ;; 2 params - both i64 - "\02\7e\7e" ;; 2 results - both i64 - - "\03\05" ;; function section, 5 byte - "\04" ;; 4 count - "\00\00\01\01" ;; types of each function (0, 0, 1, 1) - - "\07\3d" ;; export section 0x3d bytes - "\04" ;; 4 count - "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 - "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 - "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 - "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 - - "\0a\37" ;; code section + byte length - "\04" ;; 4 count - - "\0e" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\20\02" ;; local.get 2 - "\20\03" ;; local.get 3 - "\fc\93\80\00" ;; i64.add128 (overlong) - "\0b" ;; end - - "\0d" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\20\02" ;; local.get 2 - "\20\03" ;; local.get 3 - "\fc\94\00" ;; i64.sub128 (overlong) - "\0b" ;; end - - "\0c" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) - "\0b" ;; end - - "\0b" ;; byte length - "\00" ;; no locals - "\20\00" ;; local.get 0 - "\20\01" ;; local.get 1 - "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) - "\0b" ;; end -) -(assert_return (invoke "i64.sub128" - (i64.const 2) (i64.const 5) - (i64.const 1) (i64.const 2)) - (i64.const 1) (i64.const 3)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias.bin.wast new file mode 100644 index 000000000..44d15f49a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias.bin.wast @@ -0,0 +1,202 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8e\80\80\80\00\02\60" + "\01\7e\02\7e\7e\60\02\7e\7e\02\7e\7e\03\86\80\80" + "\80\00\05\00\00\01\00\00\07\b5\80\80\80\00\05\09" + "\61\6c\69\61\73\5f\61\64\64\00\00\09\61\6c\69\61" + "\73\5f\73\75\62\00\01\03\64\62\6c\00\02\08\73\71" + "\75\61\72\65\5f\73\00\03\08\73\71\75\61\72\65\5f" + "\75\00\04\0a\ce\80\80\80\00\05\8c\80\80\80\00\00" + "\20\00\20\00\20\00\20\00\fc\13\0b\8c\80\80\80\00" + "\00\20\00\20\00\20\00\20\00\fc\14\0b\8c\80\80\80" + "\00\00\20\00\20\01\20\00\20\01\fc\13\0b\88\80\80" + "\80\00\00\20\00\20\00\fc\15\0b\88\80\80\80\00\00" + "\20\00\20\00\fc\16\0b" +) +(module instance) +(assert_return + (invoke "alias_add" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0x2468_acf1_3579_bde0) + (i64.const 0x2468_acf1_3579_bde0) +) +(assert_return + (invoke "alias_add" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "alias_add" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "alias_add" (i64.const 0x1)) + (i64.const 0x2) + (i64.const 0x2) +) +(assert_return + (invoke "alias_add" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_add" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0x1fdb_9753_0eca_8642) + (i64.const 0x1fdb_9753_0eca_8642) +) +(assert_return + (invoke "alias_add" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0xbd5b_7ddf_95fd_757c) + (i64.const 0xbd5b_7ddf_95fd_757d) +) +(assert_return + (invoke "alias_sub" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "alias_sub" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "dbl" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0x2468_acf1_3579_bde0) + (i64.const 0xbd5b_7ddf_95fd_757c) +) +(assert_return + (invoke "dbl" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xffff_ffff_ffff_fffe) + (i64.const 0x1fdb_9753_0eca_8643) +) +(assert_return + (invoke "dbl" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x1) +) +(assert_return + (invoke "dbl" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x2) + (i64.const 0x2) +) +(assert_return + (invoke "dbl" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "dbl" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1fdb_9753_0eca_8642) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "dbl" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xbd5b_7ddf_95fd_757c) + (i64.const 0x2468_acf1_3579_bde1) +) +(assert_return + (invoke "square_s" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0xa5e2_0890_f2a5_2100) + (i64.const 0x14b_66dc_33f6_acdc) +) +(assert_return + (invoke "square_s" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "square_s" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x4000_0000_0000_0000) +) +(assert_return + (invoke "square_s" (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "square_s" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "square_s" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0xccde_ec6c_d7a4_4a41) + (i64.const 0xfd_bac0_97c8_dc5a) +) +(assert_return + (invoke "square_s" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0xb295_b2ee_f140_a504) + (i64.const 0x456_4f33_ec95_849c) +) +(assert_return + (invoke "square_u" (i64.const 0x1234_5678_9abc_def0)) + (i64.const 0xa5e2_0890_f2a5_2100) + (i64.const 0x14b_66dc_33f6_acdc) +) +(assert_return + (invoke "square_u" (i64.const 0xffff_ffff_ffff_ffff)) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "square_u" (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x0) + (i64.const 0x4000_0000_0000_0000) +) +(assert_return + (invoke "square_u" (i64.const 0x1)) + (i64.const 0x1) + (i64.const 0x0) +) +(assert_return + (invoke "square_u" (i64.const 0x0)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "square_u" (i64.const 0xfed_cba9_8765_4321)) + (i64.const 0xccde_ec6c_d7a4_4a41) + (i64.const 0xfd_bac0_97c8_dc5a) +) +(assert_return + (invoke "square_u" (i64.const 0xdead_beef_cafe_babe)) + (i64.const 0xb295_b2ee_f140_a504) + (i64.const 0xc1b1_cd13_8292_fa18) +) diff --git a/test/regress/ext:wide-arithmetic/stress_alias.wast b/test/regress/ext:wide-arithmetic/stress_alias.wast new file mode 100644 index 000000000..8410ebd60 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_alias.wast @@ -0,0 +1,63 @@ +(module + (func (export "alias_add") (param i64) (result i64 i64) + local.get 0 + local.get 0 + local.get 0 + local.get 0 + i64.add128) + (func (export "alias_sub") (param i64) (result i64 i64) + local.get 0 + local.get 0 + local.get 0 + local.get 0 + i64.sub128) + (func (export "dbl") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 0 + local.get 1 + i64.add128) + (func (export "square_s") (param i64) (result i64 i64) + local.get 0 + local.get 0 + i64.mul_wide_s) + (func (export "square_u") (param i64) (result i64 i64) + local.get 0 + local.get 0 + i64.mul_wide_u) +) +(assert_return (invoke "alias_add" (i64.const 1311768467463790320)) (i64.const 2623536934927580640) (i64.const 2623536934927580640)) +(assert_return (invoke "alias_add" (i64.const -1)) (i64.const -2) (i64.const -1)) +(assert_return (invoke "alias_add" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 1)) +(assert_return (invoke "alias_add" (i64.const 1)) (i64.const 2) (i64.const 2)) +(assert_return (invoke "alias_add" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_add" (i64.const 1147797409030816545)) (i64.const 2295594818061633090) (i64.const 2295594818061633090)) +(assert_return (invoke "alias_add" (i64.const -2401053089206453570)) (i64.const -4802106178412907140) (i64.const -4802106178412907139)) +(assert_return (invoke "alias_sub" (i64.const 1311768467463790320)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const -1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const 1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const 1147797409030816545)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "alias_sub" (i64.const -2401053089206453570)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "dbl" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const 2623536934927580640) (i64.const -4802106178412907140)) +(assert_return (invoke "dbl" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -2) (i64.const 2295594818061633091)) +(assert_return (invoke "dbl" (i64.const -9223372036854775808) (i64.const 0)) (i64.const 0) (i64.const 1)) +(assert_return (invoke "dbl" (i64.const 1) (i64.const 1)) (i64.const 2) (i64.const 2)) +(assert_return (invoke "dbl" (i64.const 0) (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "dbl" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 2295594818061633090) (i64.const -2)) +(assert_return (invoke "dbl" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -4802106178412907140) (i64.const 2623536934927580641)) +(assert_return (invoke "square_s" (i64.const 1311768467463790320)) (i64.const -6493618294075612928) (i64.const 93281313241869532)) +(assert_return (invoke "square_s" (i64.const -1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "square_s" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 4611686018427387904)) +(assert_return (invoke "square_s" (i64.const 1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "square_s" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "square_s" (i64.const 1147797409030816545)) (i64.const -3684247492923995583) (i64.const 71418505450806362)) +(assert_return (invoke "square_s" (i64.const -2401053089206453570)) (i64.const -5578355824108985084) (i64.const 312524308579976348)) +(assert_return (invoke "square_u" (i64.const 1311768467463790320)) (i64.const -6493618294075612928) (i64.const 93281313241869532)) +(assert_return (invoke "square_u" (i64.const -1)) (i64.const 1) (i64.const -2)) +(assert_return (invoke "square_u" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 4611686018427387904)) +(assert_return (invoke "square_u" (i64.const 1)) (i64.const 1) (i64.const 0)) +(assert_return (invoke "square_u" (i64.const 0)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "square_u" (i64.const 1147797409030816545)) (i64.const -3684247492923995583) (i64.const 71418505450806362)) +(assert_return (invoke "square_u" (i64.const -2401053089206453570)) (i64.const -5578355824108985084) (i64.const -4489581869832930792)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast deleted file mode 100644 index 09043b55b..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_add00.bin.wast +++ /dev/null @@ -1,43 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\8d\80" - "\80\80\00\01\09\61\6c\69\61\73\5f\61\64\64\00\00" - "\0a\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20" - "\00\20\00\20\00\fc\13\0b" -) -(module instance) -(assert_return - (invoke "alias_add" (i64.const 0x1234_5678_9abc_def0)) - (i64.const 0x2468_acf1_3579_bde0) - (i64.const 0x2468_acf1_3579_bde0) -) -(assert_return - (invoke "alias_add" (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0xffff_ffff_ffff_fffe) - (i64.const 0xffff_ffff_ffff_ffff) -) -(assert_return - (invoke "alias_add" (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x0) - (i64.const 0x1) -) -(assert_return - (invoke "alias_add" (i64.const 0x1)) - (i64.const 0x2) - (i64.const 0x2) -) -(assert_return - (invoke "alias_add" (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_add" (i64.const 0xfed_cba9_8765_4321)) - (i64.const 0x1fdb_9753_0eca_8642) - (i64.const 0x1fdb_9753_0eca_8642) -) -(assert_return - (invoke "alias_add" (i64.const 0xdead_beef_cafe_babe)) - (i64.const 0xbd5b_7ddf_95fd_757c) - (i64.const 0xbd5b_7ddf_95fd_757d) -) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add00.wast b/test/regress/ext:wide-arithmetic/stress_alias_add00.wast deleted file mode 100644 index 345c93eb1..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_add00.wast +++ /dev/null @@ -1,15 +0,0 @@ -(module - (func (export "alias_add") (param i64) (result i64 i64) - local.get 0 - local.get 0 - local.get 0 - local.get 0 - i64.add128) -) -(assert_return (invoke "alias_add" (i64.const 1311768467463790320)) (i64.const 2623536934927580640) (i64.const 2623536934927580640)) -(assert_return (invoke "alias_add" (i64.const -1)) (i64.const -2) (i64.const -1)) -(assert_return (invoke "alias_add" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 1)) -(assert_return (invoke "alias_add" (i64.const 1)) (i64.const 2) (i64.const 2)) -(assert_return (invoke "alias_add" (i64.const 0)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_add" (i64.const 1147797409030816545)) (i64.const 2295594818061633090) (i64.const 2295594818061633090)) -(assert_return (invoke "alias_add" (i64.const -2401053089206453570)) (i64.const -4802106178412907140) (i64.const -4802106178412907139)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast deleted file mode 100644 index 1c980da8c..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_add01.bin.wast +++ /dev/null @@ -1,55 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\87" - "\80\80\80\00\01\03\64\62\6c\00\00\0a\92\80\80\80" - "\00\01\8c\80\80\80\00\00\20\00\20\01\20\00\20\01" - "\fc\13\0b" -) -(module instance) -(assert_return - (invoke "dbl" - (i64.const 0x1234_5678_9abc_def0) - (i64.const 0xdead_beef_cafe_babe) - ) - (i64.const 0x2468_acf1_3579_bde0) - (i64.const 0xbd5b_7ddf_95fd_757c) -) -(assert_return - (invoke "dbl" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xfed_cba9_8765_4321) - ) - (i64.const 0xffff_ffff_ffff_fffe) - (i64.const 0x1fdb_9753_0eca_8643) -) -(assert_return - (invoke "dbl" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x1) -) -(assert_return - (invoke "dbl" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x2) - (i64.const 0x2) -) -(assert_return - (invoke "dbl" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "dbl" - (i64.const 0xfed_cba9_8765_4321) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1fdb_9753_0eca_8642) - (i64.const 0xffff_ffff_ffff_fffe) -) -(assert_return - (invoke "dbl" - (i64.const 0xdead_beef_cafe_babe) - (i64.const 0x1234_5678_9abc_def0) - ) - (i64.const 0xbd5b_7ddf_95fd_757c) - (i64.const 0x2468_acf1_3579_bde1) -) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_add01.wast b/test/regress/ext:wide-arithmetic/stress_alias_add01.wast deleted file mode 100644 index 64b53e3df..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_add01.wast +++ /dev/null @@ -1,15 +0,0 @@ -(module - (func (export "dbl") (param i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 0 - local.get 1 - i64.add128) -) -(assert_return (invoke "dbl" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const 2623536934927580640) (i64.const -4802106178412907140)) -(assert_return (invoke "dbl" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -2) (i64.const 2295594818061633091)) -(assert_return (invoke "dbl" (i64.const -9223372036854775808) (i64.const 0)) (i64.const 0) (i64.const 1)) -(assert_return (invoke "dbl" (i64.const 1) (i64.const 1)) (i64.const 2) (i64.const 2)) -(assert_return (invoke "dbl" (i64.const 0) (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "dbl" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 2295594818061633090) (i64.const -2)) -(assert_return (invoke "dbl" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -4802106178412907140) (i64.const 2623536934927580641)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast deleted file mode 100644 index 853f90147..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_mul00.bin.wast +++ /dev/null @@ -1,79 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\01\7e\02\7e\7e\03\83\80\80\80\00\02\00\00\07\97" - "\80\80\80\00\02\08\73\71\75\61\72\65\5f\73\00\00" - "\08\73\71\75\61\72\65\5f\75\00\01\0a\9b\80\80\80" - "\00\02\88\80\80\80\00\00\20\00\20\00\fc\15\0b\88" - "\80\80\80\00\00\20\00\20\00\fc\16\0b" -) -(module instance) -(assert_return - (invoke "square_s" (i64.const 0x1234_5678_9abc_def0)) - (i64.const 0xa5e2_0890_f2a5_2100) - (i64.const 0x14b_66dc_33f6_acdc) -) -(assert_return - (invoke "square_s" (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0x1) - (i64.const 0x0) -) -(assert_return - (invoke "square_s" (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x0) - (i64.const 0x4000_0000_0000_0000) -) -(assert_return - (invoke "square_s" (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) -(assert_return - (invoke "square_s" (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "square_s" (i64.const 0xfed_cba9_8765_4321)) - (i64.const 0xccde_ec6c_d7a4_4a41) - (i64.const 0xfd_bac0_97c8_dc5a) -) -(assert_return - (invoke "square_s" (i64.const 0xdead_beef_cafe_babe)) - (i64.const 0xb295_b2ee_f140_a504) - (i64.const 0x456_4f33_ec95_849c) -) -(assert_return - (invoke "square_u" (i64.const 0x1234_5678_9abc_def0)) - (i64.const 0xa5e2_0890_f2a5_2100) - (i64.const 0x14b_66dc_33f6_acdc) -) -(assert_return - (invoke "square_u" (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_fffe) -) -(assert_return - (invoke "square_u" (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x0) - (i64.const 0x4000_0000_0000_0000) -) -(assert_return - (invoke "square_u" (i64.const 0x1)) - (i64.const 0x1) - (i64.const 0x0) -) -(assert_return - (invoke "square_u" (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "square_u" (i64.const 0xfed_cba9_8765_4321)) - (i64.const 0xccde_ec6c_d7a4_4a41) - (i64.const 0xfd_bac0_97c8_dc5a) -) -(assert_return - (invoke "square_u" (i64.const 0xdead_beef_cafe_babe)) - (i64.const 0xb295_b2ee_f140_a504) - (i64.const 0xc1b1_cd13_8292_fa18) -) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_mul00.wast b/test/regress/ext:wide-arithmetic/stress_alias_mul00.wast deleted file mode 100644 index 330a82d0a..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_mul00.wast +++ /dev/null @@ -1,24 +0,0 @@ -(module - (func (export "square_s") (param i64) (result i64 i64) - local.get 0 - local.get 0 - i64.mul_wide_s) - (func (export "square_u") (param i64) (result i64 i64) - local.get 0 - local.get 0 - i64.mul_wide_u) -) -(assert_return (invoke "square_s" (i64.const 1311768467463790320)) (i64.const -6493618294075612928) (i64.const 93281313241869532)) -(assert_return (invoke "square_s" (i64.const -1)) (i64.const 1) (i64.const 0)) -(assert_return (invoke "square_s" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 4611686018427387904)) -(assert_return (invoke "square_s" (i64.const 1)) (i64.const 1) (i64.const 0)) -(assert_return (invoke "square_s" (i64.const 0)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "square_s" (i64.const 1147797409030816545)) (i64.const -3684247492923995583) (i64.const 71418505450806362)) -(assert_return (invoke "square_s" (i64.const -2401053089206453570)) (i64.const -5578355824108985084) (i64.const 312524308579976348)) -(assert_return (invoke "square_u" (i64.const 1311768467463790320)) (i64.const -6493618294075612928) (i64.const 93281313241869532)) -(assert_return (invoke "square_u" (i64.const -1)) (i64.const 1) (i64.const -2)) -(assert_return (invoke "square_u" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 4611686018427387904)) -(assert_return (invoke "square_u" (i64.const 1)) (i64.const 1) (i64.const 0)) -(assert_return (invoke "square_u" (i64.const 0)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "square_u" (i64.const 1147797409030816545)) (i64.const -3684247492923995583) (i64.const 71418505450806362)) -(assert_return (invoke "square_u" (i64.const -2401053089206453570)) (i64.const -5578355824108985084) (i64.const -4489581869832930792)) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast b/test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast deleted file mode 100644 index bf7d6a4ae..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_sub00.bin.wast +++ /dev/null @@ -1,43 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\87\80\80\80\00\01\60" - "\01\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\8d\80" - "\80\80\00\01\09\61\6c\69\61\73\5f\73\75\62\00\00" - "\0a\92\80\80\80\00\01\8c\80\80\80\00\00\20\00\20" - "\00\20\00\20\00\fc\14\0b" -) -(module instance) -(assert_return - (invoke "alias_sub" (i64.const 0x1234_5678_9abc_def0)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_sub" (i64.const 0xffff_ffff_ffff_ffff)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_sub" (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_sub" (i64.const 0x1)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_sub" (i64.const 0x0)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_sub" (i64.const 0xfed_cba9_8765_4321)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "alias_sub" (i64.const 0xdead_beef_cafe_babe)) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/stress_alias_sub00.wast b/test/regress/ext:wide-arithmetic/stress_alias_sub00.wast deleted file mode 100644 index c25ef11e2..000000000 --- a/test/regress/ext:wide-arithmetic/stress_alias_sub00.wast +++ /dev/null @@ -1,15 +0,0 @@ -(module - (func (export "alias_sub") (param i64) (result i64 i64) - local.get 0 - local.get 0 - local.get 0 - local.get 0 - i64.sub128) -) -(assert_return (invoke "alias_sub" (i64.const 1311768467463790320)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_sub" (i64.const -1)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_sub" (i64.const -9223372036854775808)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_sub" (i64.const 1)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_sub" (i64.const 0)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_sub" (i64.const 1147797409030816545)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "alias_sub" (i64.const -2401053089206453570)) (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_chain00.bin.wast b/test/regress/ext:wide-arithmetic/stress_chain.bin.wast similarity index 52% rename from test/regress/ext:wide-arithmetic/stress_chain00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_chain.bin.wast index b7d8dc0da..8716ab110 100644 --- a/test/regress/ext:wide-arithmetic/stress_chain00.bin.wast +++ b/test/regress/ext:wide-arithmetic/stress_chain.bin.wast @@ -1,9 +1,12 @@ (module definition binary - "\00\61\73\6d\01\00\00\00\01\8c\80\80\80\00\01\60" - "\06\7e\7e\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00" - "\01\00\07\88\80\80\80\00\01\04\61\64\64\33\00\00" - "\0a\98\80\80\80\00\01\92\80\80\80\00\00\20\00\20" - "\01\20\02\20\03\fc\13\20\04\20\05\fc\13\0b" + "\00\61\73\6d\01\00\00\00\01\95\80\80\80\00\02\60" + "\06\7e\7e\7e\7e\7e\7e\02\7e\7e\60\04\7e\7e\7e\7e" + "\02\7e\7e\03\83\80\80\80\00\02\00\01\07\92\80\80" + "\80\00\02\04\61\64\64\33\00\00\07\6d\75\6c\5f\61" + "\64\64\00\01\0a\ab\80\80\80\00\02\92\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\13\20\04\20\05\fc" + "\13\0b\8e\80\80\80\00\00\20\00\20\01\fc\16\20\02" + "\20\03\fc\13\0b" ) (module instance) (assert_return @@ -66,3 +69,43 @@ (i64.const 0xffff_ffff_ffff_fffd) (i64.const 0xffff_ffff_ffff_ffff) ) +(assert_return + (invoke "mul_add" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x2) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "mul_add" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xfedc_ba98_7654_3210) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x236d_88fe_5618_ceff) + (i64.const 0x121f_a00a_d77d_7422) +) +(assert_return + (invoke "mul_add" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x2a) + (i64.const 0x2b) + ) + (i64.const 0x2a) + (i64.const 0x2b) +) +(assert_return + (invoke "mul_add" + (i64.const 0x1_0000_0000) + (i64.const 0x1_0000_0000) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x1) +) diff --git a/test/regress/ext:wide-arithmetic/stress_chain00.wast b/test/regress/ext:wide-arithmetic/stress_chain.wast similarity index 57% rename from test/regress/ext:wide-arithmetic/stress_chain00.wast rename to test/regress/ext:wide-arithmetic/stress_chain.wast index f5bf3c8fb..8deac17b5 100644 --- a/test/regress/ext:wide-arithmetic/stress_chain00.wast +++ b/test/regress/ext:wide-arithmetic/stress_chain.wast @@ -8,9 +8,20 @@ local.get 4 local.get 5 i64.add128) + (func (export "mul_add") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u + local.get 2 + local.get 3 + i64.add128) ) (assert_return (invoke "add3" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0) (i64.const 1) (i64.const 0)) (i64.const 1) (i64.const 0)) (assert_return (invoke "add3" (i64.const 1311768467463790320) (i64.const 0) (i64.const -81985529216486896) (i64.const 0) (i64.const 1) (i64.const 0)) (i64.const 1229782938247303425) (i64.const 1)) (assert_return (invoke "add3" (i64.const -1) (i64.const 0) (i64.const -1) (i64.const 0) (i64.const -1) (i64.const 0)) (i64.const -3) (i64.const 2)) (assert_return (invoke "add3" (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0) (i64.const 0)) (i64.const 0) (i64.const 0)) (assert_return (invoke "add3" (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1) (i64.const -1)) (i64.const -3) (i64.const -1)) +(assert_return (invoke "mul_add" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0)) (i64.const 2) (i64.const -2)) +(assert_return (invoke "mul_add" (i64.const 1311768467463790320) (i64.const -81985529216486896) (i64.const -1) (i64.const -1)) (i64.const 2552847189736476415) (i64.const 1305938385386173474)) +(assert_return (invoke "mul_add" (i64.const 0) (i64.const 0) (i64.const 42) (i64.const 43)) (i64.const 42) (i64.const 43)) +(assert_return (invoke "mul_add" (i64.const 4294967296) (i64.const 4294967296) (i64.const 0) (i64.const 0)) (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/stress_chain01.bin.wast b/test/regress/ext:wide-arithmetic/stress_chain01.bin.wast deleted file mode 100644 index a7901f03a..000000000 --- a/test/regress/ext:wide-arithmetic/stress_chain01.bin.wast +++ /dev/null @@ -1,48 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8b\80\80\80\00\01\07\6d\75\6c\5f\61\64\64\00" - "\00\0a\94\80\80\80\00\01\8e\80\80\80\00\00\20\00" - "\20\01\fc\16\20\02\20\03\fc\13\0b" -) -(module instance) -(assert_return - (invoke "mul_add" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x2) - (i64.const 0xffff_ffff_ffff_fffe) -) -(assert_return - (invoke "mul_add" - (i64.const 0x1234_5678_9abc_def0) - (i64.const 0xfedc_ba98_7654_3210) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x236d_88fe_5618_ceff) - (i64.const 0x121f_a00a_d77d_7422) -) -(assert_return - (invoke "mul_add" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x2a) - (i64.const 0x2b) - ) - (i64.const 0x2a) - (i64.const 0x2b) -) -(assert_return - (invoke "mul_add" - (i64.const 0x1_0000_0000) - (i64.const 0x1_0000_0000) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0x0) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/stress_chain01.wast b/test/regress/ext:wide-arithmetic/stress_chain01.wast deleted file mode 100644 index bb73a180b..000000000 --- a/test/regress/ext:wide-arithmetic/stress_chain01.wast +++ /dev/null @@ -1,13 +0,0 @@ -(module - (func (export "mul_add") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - i64.mul_wide_u - local.get 2 - local.get 3 - i64.add128) -) -(assert_return (invoke "mul_add" (i64.const -1) (i64.const -1) (i64.const 1) (i64.const 0)) (i64.const 2) (i64.const -2)) -(assert_return (invoke "mul_add" (i64.const 1311768467463790320) (i64.const -81985529216486896) (i64.const -1) (i64.const -1)) (i64.const 2552847189736476415) (i64.const 1305938385386173474)) -(assert_return (invoke "mul_add" (i64.const 0) (i64.const 0) (i64.const 42) (i64.const 43)) (i64.const 42) (i64.const 43)) -(assert_return (invoke "mul_add" (i64.const 4294967296) (i64.const 4294967296) (i64.const 0) (i64.const 0)) (i64.const 0) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/stress_clobber00.bin.wast b/test/regress/ext:wide-arithmetic/stress_clobber.bin.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_clobber00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_clobber.bin.wast diff --git a/test/regress/ext:wide-arithmetic/stress_clobber00.wast b/test/regress/ext:wide-arithmetic/stress_clobber.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_clobber00.wast rename to test/regress/ext:wide-arithmetic/stress_clobber.wast diff --git a/test/regress/ext:wide-arithmetic/stress_computed00.bin.wast b/test/regress/ext:wide-arithmetic/stress_computed.bin.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_computed00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_computed.bin.wast diff --git a/test/regress/ext:wide-arithmetic/stress_computed00.wast b/test/regress/ext:wide-arithmetic/stress_computed.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_computed00.wast rename to test/regress/ext:wide-arithmetic/stress_computed.wast diff --git a/test/regress/ext:wide-arithmetic/stress_const.bin.wast b/test/regress/ext:wide-arithmetic/stress_const.bin.wast new file mode 100644 index 000000000..447a24261 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const.bin.wast @@ -0,0 +1,108 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8d\80\80\80\00\02\60" + "\02\7e\7e\02\7e\7e\60\00\02\7e\7e\03\84\80\80\80" + "\00\03\00\00\01\07\ae\80\80\80\00\03\0f\6f\76\65" + "\72\66\6c\6f\77\69\6e\67\5f\61\64\64\00\00\0d\62" + "\6f\72\72\6f\77\69\6e\67\5f\73\75\62\00\01\08\61" + "\6c\6c\63\6f\6e\73\74\00\02\0a\b4\80\80\80\00\03" + "\8c\80\80\80\00\00\20\00\42\00\20\01\42\00\fc\13" + "\0b\8c\80\80\80\00\00\20\00\42\00\20\01\42\00\fc" + "\14\0b\8c\80\80\80\00\00\42\7f\42\7f\42\01\42\00" + "\fc\13\0b" +) +(module instance) +(assert_return + (invoke "overflowing_add" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0xf0e2_1568_65bb_99ae) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xfed_cba9_8765_4320) + (i64.const 0x1) +) +(assert_return + (invoke "overflowing_add" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x2) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x0) +) +(assert_return + (invoke "overflowing_add" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xfed_cba9_8765_4320) + (i64.const 0x1) +) +(assert_return + (invoke "overflowing_add" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xf0e2_1568_65bb_99ae) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0x1234_5678_9abc_def0) + (i64.const 0xdead_beef_cafe_babe) + ) + (i64.const 0x3386_9788_cfbe_2432) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xfed_cba9_8765_4321) + ) + (i64.const 0xf012_3456_789a_bcde) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" (i64.const 0x1) (i64.const 0x1)) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "borrowing_sub" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) + (i64.const 0x8000_0000_0000_0000) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0xfed_cba9_8765_4321) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0xfed_cba9_8765_4322) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "borrowing_sub" + (i64.const 0xdead_beef_cafe_babe) + (i64.const 0x1234_5678_9abc_def0) + ) + (i64.const 0xcc79_6877_3041_dbce) + (i64.const 0x0) +) +(assert_return (invoke "allconst") (i64.const 0x0) (i64.const 0x0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const.wast b/test/regress/ext:wide-arithmetic/stress_const.wast new file mode 100644 index 000000000..1b938be04 --- /dev/null +++ b/test/regress/ext:wide-arithmetic/stress_const.wast @@ -0,0 +1,35 @@ +(module + (func (export "overflowing_add") (param i64 i64) (result i64 i64) + local.get 0 + i64.const 0 + local.get 1 + i64.const 0 + i64.add128) + (func (export "borrowing_sub") (param i64 i64) (result i64 i64) + local.get 0 + i64.const 0 + local.get 1 + i64.const 0 + i64.sub128) + (func (export "allconst") (result i64 i64) + i64.const 0xffffffffffffffff + i64.const 0xffffffffffffffff + i64.const 1 + i64.const 0 + i64.add128) +) +(assert_return (invoke "overflowing_add" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const -1089284621742663250) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const -1) (i64.const 1147797409030816545)) (i64.const 1147797409030816544) (i64.const 1)) +(assert_return (invoke "overflowing_add" (i64.const -9223372036854775808) (i64.const 0)) (i64.const -9223372036854775808) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const 1) (i64.const 1)) (i64.const 2) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const 0) (i64.const -9223372036854775808)) (i64.const -9223372036854775808) (i64.const 0)) +(assert_return (invoke "overflowing_add" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 1147797409030816544) (i64.const 1)) +(assert_return (invoke "overflowing_add" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -1089284621742663250) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const 3712821556670243890) (i64.const -1)) +(assert_return (invoke "borrowing_sub" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -1147797409030816546) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const -9223372036854775808) (i64.const 0)) (i64.const -9223372036854775808) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const 1) (i64.const 1)) (i64.const 0) (i64.const 0)) +(assert_return (invoke "borrowing_sub" (i64.const 0) (i64.const -9223372036854775808)) (i64.const -9223372036854775808) (i64.const -1)) +(assert_return (invoke "borrowing_sub" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 1147797409030816546) (i64.const -1)) +(assert_return (invoke "borrowing_sub" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -3712821556670243890) (i64.const 0)) +(assert_return (invoke "allconst") (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast b/test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast deleted file mode 100644 index 613417afa..000000000 --- a/test/regress/ext:wide-arithmetic/stress_const_add00.bin.wast +++ /dev/null @@ -1,55 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\93" - "\80\80\80\00\01\0f\6f\76\65\72\66\6c\6f\77\69\6e" - "\67\5f\61\64\64\00\00\0a\92\80\80\80\00\01\8c\80" - "\80\80\00\00\20\00\42\00\20\01\42\00\fc\13\0b" -) -(module instance) -(assert_return - (invoke "overflowing_add" - (i64.const 0x1234_5678_9abc_def0) - (i64.const 0xdead_beef_cafe_babe) - ) - (i64.const 0xf0e2_1568_65bb_99ae) - (i64.const 0x0) -) -(assert_return - (invoke "overflowing_add" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xfed_cba9_8765_4321) - ) - (i64.const 0xfed_cba9_8765_4320) - (i64.const 0x1) -) -(assert_return - (invoke "overflowing_add" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) - (i64.const 0x8000_0000_0000_0000) - (i64.const 0x0) -) -(assert_return - (invoke "overflowing_add" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x2) - (i64.const 0x0) -) -(assert_return - (invoke "overflowing_add" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x8000_0000_0000_0000) - (i64.const 0x0) -) -(assert_return - (invoke "overflowing_add" - (i64.const 0xfed_cba9_8765_4321) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xfed_cba9_8765_4320) - (i64.const 0x1) -) -(assert_return - (invoke "overflowing_add" - (i64.const 0xdead_beef_cafe_babe) - (i64.const 0x1234_5678_9abc_def0) - ) - (i64.const 0xf0e2_1568_65bb_99ae) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add00.wast b/test/regress/ext:wide-arithmetic/stress_const_add00.wast deleted file mode 100644 index 1e69af339..000000000 --- a/test/regress/ext:wide-arithmetic/stress_const_add00.wast +++ /dev/null @@ -1,15 +0,0 @@ -(module - (func (export "overflowing_add") (param i64 i64) (result i64 i64) - local.get 0 - i64.const 0 - local.get 1 - i64.const 0 - i64.add128) -) -(assert_return (invoke "overflowing_add" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const -1089284621742663250) (i64.const 0)) -(assert_return (invoke "overflowing_add" (i64.const -1) (i64.const 1147797409030816545)) (i64.const 1147797409030816544) (i64.const 1)) -(assert_return (invoke "overflowing_add" (i64.const -9223372036854775808) (i64.const 0)) (i64.const -9223372036854775808) (i64.const 0)) -(assert_return (invoke "overflowing_add" (i64.const 1) (i64.const 1)) (i64.const 2) (i64.const 0)) -(assert_return (invoke "overflowing_add" (i64.const 0) (i64.const -9223372036854775808)) (i64.const -9223372036854775808) (i64.const 0)) -(assert_return (invoke "overflowing_add" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 1147797409030816544) (i64.const 1)) -(assert_return (invoke "overflowing_add" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -1089284621742663250) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast b/test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast deleted file mode 100644 index 829297851..000000000 --- a/test/regress/ext:wide-arithmetic/stress_const_add01.bin.wast +++ /dev/null @@ -1,9 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\86\80\80\80\00\01\60" - "\00\02\7e\7e\03\82\80\80\80\00\01\00\07\8c\80\80" - "\80\00\01\08\61\6c\6c\63\6f\6e\73\74\00\00\0a\92" - "\80\80\80\00\01\8c\80\80\80\00\00\42\7f\42\7f\42" - "\01\42\00\fc\13\0b" -) -(module instance) -(assert_return (invoke "allconst") (i64.const 0x0) (i64.const 0x0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_add01.wast b/test/regress/ext:wide-arithmetic/stress_const_add01.wast deleted file mode 100644 index ea6581605..000000000 --- a/test/regress/ext:wide-arithmetic/stress_const_add01.wast +++ /dev/null @@ -1,9 +0,0 @@ -(module - (func (export "allconst") (result i64 i64) - i64.const 0xffffffffffffffff - i64.const 0xffffffffffffffff - i64.const 1 - i64.const 0 - i64.add128) -) -(assert_return (invoke "allconst") (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast b/test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast deleted file mode 100644 index e5961814b..000000000 --- a/test/regress/ext:wide-arithmetic/stress_const_sub00.bin.wast +++ /dev/null @@ -1,55 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\88\80\80\80\00\01\60" - "\02\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00\07\91" - "\80\80\80\00\01\0d\62\6f\72\72\6f\77\69\6e\67\5f" - "\73\75\62\00\00\0a\92\80\80\80\00\01\8c\80\80\80" - "\00\00\20\00\42\00\20\01\42\00\fc\14\0b" -) -(module instance) -(assert_return - (invoke "borrowing_sub" - (i64.const 0x1234_5678_9abc_def0) - (i64.const 0xdead_beef_cafe_babe) - ) - (i64.const 0x3386_9788_cfbe_2432) - (i64.const 0xffff_ffff_ffff_ffff) -) -(assert_return - (invoke "borrowing_sub" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xfed_cba9_8765_4321) - ) - (i64.const 0xf012_3456_789a_bcde) - (i64.const 0x0) -) -(assert_return - (invoke "borrowing_sub" (i64.const 0x8000_0000_0000_0000) (i64.const 0x0)) - (i64.const 0x8000_0000_0000_0000) - (i64.const 0x0) -) -(assert_return - (invoke "borrowing_sub" (i64.const 0x1) (i64.const 0x1)) - (i64.const 0x0) - (i64.const 0x0) -) -(assert_return - (invoke "borrowing_sub" (i64.const 0x0) (i64.const 0x8000_0000_0000_0000)) - (i64.const 0x8000_0000_0000_0000) - (i64.const 0xffff_ffff_ffff_ffff) -) -(assert_return - (invoke "borrowing_sub" - (i64.const 0xfed_cba9_8765_4321) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0xfed_cba9_8765_4322) - (i64.const 0xffff_ffff_ffff_ffff) -) -(assert_return - (invoke "borrowing_sub" - (i64.const 0xdead_beef_cafe_babe) - (i64.const 0x1234_5678_9abc_def0) - ) - (i64.const 0xcc79_6877_3041_dbce) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/stress_const_sub00.wast b/test/regress/ext:wide-arithmetic/stress_const_sub00.wast deleted file mode 100644 index ed0bb29c6..000000000 --- a/test/regress/ext:wide-arithmetic/stress_const_sub00.wast +++ /dev/null @@ -1,15 +0,0 @@ -(module - (func (export "borrowing_sub") (param i64 i64) (result i64 i64) - local.get 0 - i64.const 0 - local.get 1 - i64.const 0 - i64.sub128) -) -(assert_return (invoke "borrowing_sub" (i64.const 1311768467463790320) (i64.const -2401053089206453570)) (i64.const 3712821556670243890) (i64.const -1)) -(assert_return (invoke "borrowing_sub" (i64.const -1) (i64.const 1147797409030816545)) (i64.const -1147797409030816546) (i64.const 0)) -(assert_return (invoke "borrowing_sub" (i64.const -9223372036854775808) (i64.const 0)) (i64.const -9223372036854775808) (i64.const 0)) -(assert_return (invoke "borrowing_sub" (i64.const 1) (i64.const 1)) (i64.const 0) (i64.const 0)) -(assert_return (invoke "borrowing_sub" (i64.const 0) (i64.const -9223372036854775808)) (i64.const -9223372036854775808) (i64.const -1)) -(assert_return (invoke "borrowing_sub" (i64.const 1147797409030816545) (i64.const -1)) (i64.const 1147797409030816546) (i64.const -1)) -(assert_return (invoke "borrowing_sub" (i64.const -2401053089206453570) (i64.const 1311768467463790320)) (i64.const -3712821556670243890) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/stress_loop00.bin.wast b/test/regress/ext:wide-arithmetic/stress_loop.bin.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_loop00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_loop.bin.wast diff --git a/test/regress/ext:wide-arithmetic/stress_loop00.wast b/test/regress/ext:wide-arithmetic/stress_loop.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_loop00.wast rename to test/regress/ext:wide-arithmetic/stress_loop.wast diff --git a/test/regress/ext:wide-arithmetic/stress_mul128_00.bin.wast b/test/regress/ext:wide-arithmetic/stress_mul128.bin.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_mul128_00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_mul128.bin.wast diff --git a/test/regress/ext:wide-arithmetic/stress_mul128_00.wast b/test/regress/ext:wide-arithmetic/stress_mul128.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_mul128_00.wast rename to test/regress/ext:wide-arithmetic/stress_mul128.wast diff --git a/test/regress/ext:wide-arithmetic/stress_pressure00.bin.wast b/test/regress/ext:wide-arithmetic/stress_pressure.bin.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_pressure00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_pressure.bin.wast diff --git a/test/regress/ext:wide-arithmetic/stress_pressure00.wast b/test/regress/ext:wide-arithmetic/stress_pressure.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_pressure00.wast rename to test/regress/ext:wide-arithmetic/stress_pressure.wast diff --git a/test/regress/ext:wide-arithmetic/stress_results00.bin.wast b/test/regress/ext:wide-arithmetic/stress_results.bin.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_results00.bin.wast rename to test/regress/ext:wide-arithmetic/stress_results.bin.wast diff --git a/test/regress/ext:wide-arithmetic/stress_results00.wast b/test/regress/ext:wide-arithmetic/stress_results.wast similarity index 100% rename from test/regress/ext:wide-arithmetic/stress_results00.wast rename to test/regress/ext:wide-arithmetic/stress_results.wast diff --git a/test/regress/ext:wide-arithmetic/sub128.bin.wast b/test/regress/ext:wide-arithmetic/sub128.bin.wast new file mode 100644 index 000000000..60edeff0a --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128.bin.wast @@ -0,0 +1,248 @@ +(module definition binary + "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" + "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" + "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" + "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" + "\00\20\00\20\01\20\02\20\03\fc\14\0b" +) +(module instance) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0xdddf_92ca_e793_6162) + (i64.const 0x8100_92c6_d04b_51b1) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x7eff_6d39_2fb4_ae4f) + (i64.const 0xdddf_92ca_e793_6162) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x3f5f_79f4_9f08_20bf) + (i64.const 0xc490_f0bf_7c99_8705) + (i64.const 0xa076_d828_f1fd_f77d) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x9ee8_a1cb_ad0a_2942) + (i64.const 0xc490_f0bf_7c99_8705) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x2b46_b660_ef15_2481) + (i64.const 0x0) + (i64.const 0x2d8f_f852_7570_82d3) + ) + (i64.const 0x1) + (i64.const 0xfdb6_be0e_79a4_a1ae) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x9bf6_9087_8e24_73ee) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x9bf6_9087_8e24_73ed) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x36be_ec4a_1ff9_bcc2) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x36be_ec4a_1ff9_bcc0) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x2) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x4363_6273_f163_7953) + (i64.const 0xa143_9f23_0317_73a3) + ) + (i64.const 0xbc9c_9d8c_0e9c_86ac) + (i64.const 0x5ebc_60dc_fce8_8c5c) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x2) + (i64.const 0x0) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0x0) + (i64.const 0x0) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xa7a9_49dc_2214_4ed4) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x5856_b623_ddeb_b12d) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x5e6d_82f8_e6b7_ca5a) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x5e6d_82f8_e6b7_ca5a) + (i64.const 0x0) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x945c_a2bf_d397_a18d) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x6ba3_5d40_2c68_5e73) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x1) + ) + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_fffe) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0x1) + (i64.const 0x0) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x0) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x1) + (i64.const 0x4dc1_6f2a_f7e1_35b9) + (i64.const 0xe2b5_ae43_c1e3_bf98) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1d4a_51bc_3e1c_4069) + (i64.const 0x4dc1_6f2a_f7e1_35b9) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0x1) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xffff_ffff_ffff_ffff) + ) + (i64.const 0x1) + (i64.const 0x1) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x3151_b1b9_4524_8e8e) + (i64.const 0xe2c8_b38a_9e18_a9fa) + ) + (i64.const 0xceae_4e46_badb_7172) + (i64.const 0x1d37_4c75_61e7_5604) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x19d3_f70c_eb63_95ed) + (i64.const 0x1) + (i64.const 0x338a_00d9_e2d7_4f5f) + (i64.const 0x1) + ) + (i64.const 0xe649_f633_088c_468e) + (i64.const 0xffff_ffff_ffff_ffff) +) +(assert_return + (invoke "i64.sub128" + (i64.const 0x0) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0x1) + (i64.const 0x196e_6f4f_c737_52e2) + ) + (i64.const 0xffff_ffff_ffff_ffff) + (i64.const 0xe691_90b0_38c8_ad1c) +) diff --git a/test/regress/ext:wide-arithmetic/sub128.wast b/test/regress/ext:wide-arithmetic/sub128.wast new file mode 100644 index 000000000..9ac032f2d --- /dev/null +++ b/test/regress/ext:wide-arithmetic/sub128.wast @@ -0,0 +1,104 @@ +(module + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) +) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const -2)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -2459085471354756766) + (i64.const -9151153060221070927) (i64.const -1)) + (i64.const 9151153060221070927) (i64.const -2459085471354756766)) +(assert_return (invoke "i64.sub128" + (i64.const 4566502638724063423) (i64.const -4282658540409485563) + (i64.const -6884077310018979971) (i64.const -1)) + (i64.const -6996164124966508222) (i64.const -4282658540409485563)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 3118380319444903041) + (i64.const 0) (i64.const 3283115686417695443)) + (i64.const 1) (i64.const -164735366972792402)) +(assert_return (invoke "i64.sub128" + (i64.const -7208415241680161810) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const -7208415241680161811) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 3944850126731328706) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const 3944850126731328704)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const 2) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const -1) (i64.const -1) + (i64.const 4855833073346115923) (i64.const -6826437637438999645)) + (i64.const -4855833073346115924) (i64.const 6826437637438999644)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const -1)) + (i64.const 2) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const -1) (i64.const -1) + (i64.const 0) (i64.const 0)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const -6365475388498096428) (i64.const -1)) + (i64.const 6365475388498096429) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 6804238617560992346) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const 6804238617560992346) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const -7756145513466453619)) + (i64.const -1) (i64.const 7756145513466453619)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const 1) (i64.const 1)) + (i64.const 0) (i64.const -2)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 5602881641763648953) + (i64.const -2110589244314239080) (i64.const -1)) + (i64.const 2110589244314239081) (i64.const 5602881641763648953)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -1) + (i64.const 3553816990259121806) (i64.const -2105235417856431622)) + (i64.const -3553816990259121806) (i64.const 2105235417856431620)) +(assert_return (invoke "i64.sub128" + (i64.const 1861102705894987245) (i64.const 1) + (i64.const 3713781778534059871) (i64.const 1)) + (i64.const -1852679072639072626) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -1) + (i64.const 1) (i64.const 1832524486821761762)) + (i64.const -1) (i64.const -1832524486821761764)) diff --git a/test/regress/ext:wide-arithmetic/sub128_00.bin.wast b/test/regress/ext:wide-arithmetic/sub128_00.bin.wast deleted file mode 100644 index 1638471a8..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_00.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_00.wast b/test/regress/ext:wide-arithmetic/sub128_00.wast deleted file mode 100644 index 883ac74db..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_00.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 0) - (i64.const 0) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_01.bin.wast b/test/regress/ext:wide-arithmetic/sub128_01.bin.wast deleted file mode 100644 index b349469cf..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_01.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_01.wast b/test/regress/ext:wide-arithmetic/sub128_01.wast deleted file mode 100644 index ef54abdb8..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_01.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 0) - (i64.const 1) (i64.const 0)) - (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_02.bin.wast b/test/regress/ext:wide-arithmetic/sub128_02.bin.wast deleted file mode 100644 index 53d302cf0..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_02.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x1) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_02.wast b/test/regress/ext:wide-arithmetic/sub128_02.wast deleted file mode 100644 index a9c9d1034..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_02.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 1) - (i64.const 1) (i64.const 1)) - (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_03.bin.wast b/test/regress/ext:wide-arithmetic/sub128_03.bin.wast deleted file mode 100644 index 0a7bc16c0..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_03.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x1) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_fffe) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_03.wast b/test/regress/ext:wide-arithmetic/sub128_03.wast deleted file mode 100644 index 1511d59ad..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_03.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 0) - (i64.const 1) (i64.const 1)) - (i64.const -1) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/sub128_04.bin.wast b/test/regress/ext:wide-arithmetic/sub128_04.bin.wast deleted file mode 100644 index 7d11de9ce..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_04.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0xdddf_92ca_e793_6162) - (i64.const 0x8100_92c6_d04b_51b1) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x7eff_6d39_2fb4_ae4f) - (i64.const 0xdddf_92ca_e793_6162) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_04.wast b/test/regress/ext:wide-arithmetic/sub128_04.wast deleted file mode 100644 index 53f102de2..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_04.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const -2459085471354756766) - (i64.const -9151153060221070927) (i64.const -1)) - (i64.const 9151153060221070927) (i64.const -2459085471354756766)) diff --git a/test/regress/ext:wide-arithmetic/sub128_05.bin.wast b/test/regress/ext:wide-arithmetic/sub128_05.bin.wast deleted file mode 100644 index 038753409..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_05.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x3f5f_79f4_9f08_20bf) - (i64.const 0xc490_f0bf_7c99_8705) - (i64.const 0xa076_d828_f1fd_f77d) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x9ee8_a1cb_ad0a_2942) - (i64.const 0xc490_f0bf_7c99_8705) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_05.wast b/test/regress/ext:wide-arithmetic/sub128_05.wast deleted file mode 100644 index 02209861b..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_05.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 4566502638724063423) (i64.const -4282658540409485563) - (i64.const -6884077310018979971) (i64.const -1)) - (i64.const -6996164124966508222) (i64.const -4282658540409485563)) diff --git a/test/regress/ext:wide-arithmetic/sub128_06.bin.wast b/test/regress/ext:wide-arithmetic/sub128_06.bin.wast deleted file mode 100644 index 670ea5a6e..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_06.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0x2b46_b660_ef15_2481) - (i64.const 0x0) - (i64.const 0x2d8f_f852_7570_82d3) - ) - (i64.const 0x1) - (i64.const 0xfdb6_be0e_79a4_a1ae) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_06.wast b/test/regress/ext:wide-arithmetic/sub128_06.wast deleted file mode 100644 index 860123bbc..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_06.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const 3118380319444903041) - (i64.const 0) (i64.const 3283115686417695443)) - (i64.const 1) (i64.const -164735366972792402)) diff --git a/test/regress/ext:wide-arithmetic/sub128_07.bin.wast b/test/regress/ext:wide-arithmetic/sub128_07.bin.wast deleted file mode 100644 index d44a11f6b..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_07.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x9bf6_9087_8e24_73ee) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x9bf6_9087_8e24_73ed) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_07.wast b/test/regress/ext:wide-arithmetic/sub128_07.wast deleted file mode 100644 index 6b8d53412..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_07.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const -7208415241680161810) (i64.const -1) - (i64.const 1) (i64.const 0)) - (i64.const -7208415241680161811) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_08.bin.wast b/test/regress/ext:wide-arithmetic/sub128_08.bin.wast deleted file mode 100644 index ce67d0af9..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_08.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x36be_ec4a_1ff9_bcc2) - (i64.const 0x1) - (i64.const 0x1) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x36be_ec4a_1ff9_bcc0) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_08.wast b/test/regress/ext:wide-arithmetic/sub128_08.wast deleted file mode 100644 index 6844c5452..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_08.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 3944850126731328706) - (i64.const 1) (i64.const 1)) - (i64.const -1) (i64.const 3944850126731328704)) diff --git a/test/regress/ext:wide-arithmetic/sub128_09.bin.wast b/test/regress/ext:wide-arithmetic/sub128_09.bin.wast deleted file mode 100644 index 32b55e82d..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_09.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x2) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_09.wast b/test/regress/ext:wide-arithmetic/sub128_09.wast deleted file mode 100644 index 0a2ceef8f..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_09.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const -1) - (i64.const -1) (i64.const -1)) - (i64.const 2) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_10.bin.wast b/test/regress/ext:wide-arithmetic/sub128_10.bin.wast deleted file mode 100644 index 9611fdcda..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_10.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x4363_6273_f163_7953) - (i64.const 0xa143_9f23_0317_73a3) - ) - (i64.const 0xbc9c_9d8c_0e9c_86ac) - (i64.const 0x5ebc_60dc_fce8_8c5c) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_10.wast b/test/regress/ext:wide-arithmetic/sub128_10.wast deleted file mode 100644 index 29219acd5..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_10.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const -1) (i64.const -1) - (i64.const 4855833073346115923) (i64.const -6826437637438999645)) - (i64.const -4855833073346115924) (i64.const 6826437637438999644)) diff --git a/test/regress/ext:wide-arithmetic/sub128_11.bin.wast b/test/regress/ext:wide-arithmetic/sub128_11.bin.wast deleted file mode 100644 index 3d359fcc2..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_11.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x2) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_11.wast b/test/regress/ext:wide-arithmetic/sub128_11.wast deleted file mode 100644 index da7138c09..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_11.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const 0) - (i64.const -1) (i64.const -1)) - (i64.const 2) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_12.bin.wast b/test/regress/ext:wide-arithmetic/sub128_12.bin.wast deleted file mode 100644 index b05b78284..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_12.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0x0) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_12.wast b/test/regress/ext:wide-arithmetic/sub128_12.wast deleted file mode 100644 index 4a4501ba3..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_12.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const 0) - (i64.const 1) (i64.const 0)) - (i64.const 0) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_13.bin.wast b/test/regress/ext:wide-arithmetic/sub128_13.bin.wast deleted file mode 100644 index 0e87e383d..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_13.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) - (i64.const 0x0) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_13.wast b/test/regress/ext:wide-arithmetic/sub128_13.wast deleted file mode 100644 index 6b4030928..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_13.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const -1) (i64.const -1) - (i64.const 0) (i64.const 0)) - (i64.const -1) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_14.bin.wast b/test/regress/ext:wide-arithmetic/sub128_14.bin.wast deleted file mode 100644 index 24f81f05e..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_14.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xa7a9_49dc_2214_4ed4) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x5856_b623_ddeb_b12d) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_14.wast b/test/regress/ext:wide-arithmetic/sub128_14.wast deleted file mode 100644 index 554330346..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_14.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const -1) - (i64.const -6365475388498096428) (i64.const -1)) - (i64.const 6365475388498096429) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_15.bin.wast b/test/regress/ext:wide-arithmetic/sub128_15.bin.wast deleted file mode 100644 index 4c14e550b..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_15.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x5e6d_82f8_e6b7_ca5a) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x5e6d_82f8_e6b7_ca5a) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_15.wast b/test/regress/ext:wide-arithmetic/sub128_15.wast deleted file mode 100644 index 6b4056e6a..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_15.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 6804238617560992346) (i64.const -1) - (i64.const 0) (i64.const -1)) - (i64.const 6804238617560992346) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_16.bin.wast b/test/regress/ext:wide-arithmetic/sub128_16.bin.wast deleted file mode 100644 index 909506ed5..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_16.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x945c_a2bf_d397_a18d) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x6ba3_5d40_2c68_5e73) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_16.wast b/test/regress/ext:wide-arithmetic/sub128_16.wast deleted file mode 100644 index 24cc94d5b..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_16.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 1) - (i64.const 1) (i64.const -7756145513466453619)) - (i64.const -1) (i64.const 7756145513466453619)) diff --git a/test/regress/ext:wide-arithmetic/sub128_17.bin.wast b/test/regress/ext:wide-arithmetic/sub128_17.bin.wast deleted file mode 100644 index c68d62430..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_17.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x1) - ) - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_fffe) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_17.wast b/test/regress/ext:wide-arithmetic/sub128_17.wast deleted file mode 100644 index 4ee093a7a..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_17.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const -1) - (i64.const 1) (i64.const 1)) - (i64.const 0) (i64.const -2)) diff --git a/test/regress/ext:wide-arithmetic/sub128_18.bin.wast b/test/regress/ext:wide-arithmetic/sub128_18.bin.wast deleted file mode 100644 index b11104e48..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_18.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0x1) - (i64.const 0x0) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x0) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_18.wast b/test/regress/ext:wide-arithmetic/sub128_18.wast deleted file mode 100644 index 31572f9ba..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_18.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 1) - (i64.const 1) (i64.const 0)) - (i64.const -1) (i64.const 0)) diff --git a/test/regress/ext:wide-arithmetic/sub128_19.bin.wast b/test/regress/ext:wide-arithmetic/sub128_19.bin.wast deleted file mode 100644 index 5835ff117..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_19.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x1) - (i64.const 0x4dc1_6f2a_f7e1_35b9) - (i64.const 0xe2b5_ae43_c1e3_bf98) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1d4a_51bc_3e1c_4069) - (i64.const 0x4dc1_6f2a_f7e1_35b9) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_19.wast b/test/regress/ext:wide-arithmetic/sub128_19.wast deleted file mode 100644 index 525e4b4f6..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_19.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1) (i64.const 5602881641763648953) - (i64.const -2110589244314239080) (i64.const -1)) - (i64.const 2110589244314239081) (i64.const 5602881641763648953)) diff --git a/test/regress/ext:wide-arithmetic/sub128_20.bin.wast b/test/regress/ext:wide-arithmetic/sub128_20.bin.wast deleted file mode 100644 index bff83690a..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_20.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0x1) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xffff_ffff_ffff_ffff) - ) - (i64.const 0x1) - (i64.const 0x1) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_20.wast b/test/regress/ext:wide-arithmetic/sub128_20.wast deleted file mode 100644 index 452037c21..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_20.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const 1) - (i64.const -1) (i64.const -1)) - (i64.const 1) (i64.const 1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_21.bin.wast b/test/regress/ext:wide-arithmetic/sub128_21.bin.wast deleted file mode 100644 index aa2de6119..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_21.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x3151_b1b9_4524_8e8e) - (i64.const 0xe2c8_b38a_9e18_a9fa) - ) - (i64.const 0xceae_4e46_badb_7172) - (i64.const 0x1d37_4c75_61e7_5604) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_21.wast b/test/regress/ext:wide-arithmetic/sub128_21.wast deleted file mode 100644 index c81669384..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_21.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const -1) - (i64.const 3553816990259121806) (i64.const -2105235417856431622)) - (i64.const -3553816990259121806) (i64.const 2105235417856431620)) diff --git a/test/regress/ext:wide-arithmetic/sub128_22.bin.wast b/test/regress/ext:wide-arithmetic/sub128_22.bin.wast deleted file mode 100644 index 053498464..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_22.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x19d3_f70c_eb63_95ed) - (i64.const 0x1) - (i64.const 0x338a_00d9_e2d7_4f5f) - (i64.const 0x1) - ) - (i64.const 0xe649_f633_088c_468e) - (i64.const 0xffff_ffff_ffff_ffff) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_22.wast b/test/regress/ext:wide-arithmetic/sub128_22.wast deleted file mode 100644 index fe7e2b7b2..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_22.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 1861102705894987245) (i64.const 1) - (i64.const 3713781778534059871) (i64.const 1)) - (i64.const -1852679072639072626) (i64.const -1)) diff --git a/test/regress/ext:wide-arithmetic/sub128_23.bin.wast b/test/regress/ext:wide-arithmetic/sub128_23.bin.wast deleted file mode 100644 index 5bfb272fe..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_23.bin.wast +++ /dev/null @@ -1,18 +0,0 @@ -(module definition binary - "\00\61\73\6d\01\00\00\00\01\8a\80\80\80\00\01\60" - "\04\7e\7e\7e\7e\02\7e\7e\03\82\80\80\80\00\01\00" - "\07\8e\80\80\80\00\01\0a\69\36\34\2e\73\75\62\31" - "\32\38\00\00\0a\92\80\80\80\00\01\8c\80\80\80\00" - "\00\20\00\20\01\20\02\20\03\fc\14\0b" -) -(module instance) -(assert_return - (invoke "i64.sub128" - (i64.const 0x0) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0x1) - (i64.const 0x196e_6f4f_c737_52e2) - ) - (i64.const 0xffff_ffff_ffff_ffff) - (i64.const 0xe691_90b0_38c8_ad1c) -) diff --git a/test/regress/ext:wide-arithmetic/sub128_23.wast b/test/regress/ext:wide-arithmetic/sub128_23.wast deleted file mode 100644 index 483e4711b..000000000 --- a/test/regress/ext:wide-arithmetic/sub128_23.wast +++ /dev/null @@ -1,12 +0,0 @@ -(module - (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) - local.get 0 - local.get 1 - local.get 2 - local.get 3 - i64.sub128) -) -(assert_return (invoke "i64.sub128" - (i64.const 0) (i64.const -1) - (i64.const 1) (i64.const 1832524486821761762)) - (i64.const -1) (i64.const -1832524486821761764))