|
21 | 21 | local.get 0 |
22 | 22 | local.get 1 |
23 | 23 | i64.mul_wide_u) |
| 24 | + (func (export "i64.add_wide_s") (param i64 i64) (result i64 i64) |
| 25 | + local.get 0 |
| 26 | + local.get 1 |
| 27 | + i64.add_wide_s) |
| 28 | + (func (export "i64.add_wide_u") (param i64 i64) (result i64 i64) |
| 29 | + local.get 0 |
| 30 | + local.get 1 |
| 31 | + i64.add_wide_u) |
| 32 | + (func (export "i64.add3_wide_s") (param i64 i64 i64) (result i64 i64) |
| 33 | + local.get 0 |
| 34 | + local.get 1 |
| 35 | + local.get 2 |
| 36 | + i64.add3_wide_s) |
| 37 | + (func (export "i64.add3_wide_u") (param i64 i64 i64) (result i64 i64) |
| 38 | + local.get 0 |
| 39 | + local.get 1 |
| 40 | + local.get 2 |
| 41 | + i64.add3_wide_u) |
24 | 42 | ) |
25 | 43 |
|
26 | 44 | ;; simple addition |
|
75 | 93 | (assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 1)) |
76 | 94 | (i64.const -1) (i64.const 0)) |
77 | 95 |
|
| 96 | +;; simple add_wide |
| 97 | +(assert_return (invoke "i64.add_wide_s" (i64.const 0) (i64.const 0)) |
| 98 | + (i64.const 0) (i64.const 0)) |
| 99 | +(assert_return (invoke "i64.add_wide_u" (i64.const 0) (i64.const 0)) |
| 100 | + (i64.const 0) (i64.const 0)) |
| 101 | +(assert_return (invoke "i64.add_wide_s" (i64.const 1) (i64.const 2)) |
| 102 | + (i64.const 3) (i64.const 0)) |
| 103 | +(assert_return (invoke "i64.add_wide_u" (i64.const 1) (i64.const 2)) |
| 104 | + (i64.const 3) (i64.const 0)) |
| 105 | +(assert_return (invoke "i64.add_wide_s" (i64.const -1) (i64.const 2)) |
| 106 | + (i64.const 1) (i64.const 0)) |
| 107 | +(assert_return (invoke "i64.add_wide_u" (i64.const -1) (i64.const 2)) |
| 108 | + (i64.const 1) (i64.const 1)) |
| 109 | +(assert_return (invoke "i64.add_wide_s" (i64.const 0x7fffffff_ffffffff) (i64.const 2)) |
| 110 | + (i64.const 0x80000000_00000001) (i64.const 1)) |
| 111 | +(assert_return (invoke "i64.add_wide_u" (i64.const 0x7fffffff_ffffffff) (i64.const 2)) |
| 112 | + (i64.const 0x80000000_00000001) (i64.const 0)) |
| 113 | + |
| 114 | +;; simple add3_wide |
| 115 | +(assert_return (invoke "i64.add3_wide_u" (i64.const 0) (i64.const 0) (i64.const 0)) |
| 116 | + (i64.const 0) (i64.const 0)) |
| 117 | +(assert_return (invoke "i64.add3_wide_u" (i64.const 1) (i64.const 2) (i64.const 0)) |
| 118 | + (i64.const 3) (i64.const 0)) |
| 119 | +(assert_return (invoke "i64.add3_wide_u" (i64.const -1) (i64.const 2) (i64.const 0)) |
| 120 | + (i64.const 1) (i64.const 1)) |
| 121 | +(assert_return (invoke "i64.add3_wide_u" (i64.const 0x7fffffff_ffffffff) (i64.const 2) (i64.const 0)) |
| 122 | + (i64.const 0x80000000_00000001) (i64.const 0)) |
| 123 | + |
78 | 124 | ;; 20 randomly generated test cases for i64.add128 |
79 | 125 | (assert_return (invoke "i64.add128" |
80 | 126 | (i64.const -2418420703207364752) (i64.const -1) |
|
0 commit comments