|
14 | 14 | (func $i32.trunc_u_f32 (param $x f32) (result i32) (i32.trunc_u/f32 (get_local $x)))
|
15 | 15 | (export "i32.trunc_u_f32" $i32.trunc_u_f32)
|
16 | 16 |
|
| 17 | + (func $i32.trunc_s_f64 (param $x f64) (result i32) (i32.trunc_s/f64 (get_local $x))) |
| 18 | + (export "i32.trunc_s_f64" $i32.trunc_s_f64) |
| 19 | + |
| 20 | + (func $i32.trunc_u_f64 (param $x f64) (result i32) (i32.trunc_u/f64 (get_local $x))) |
| 21 | + (export "i32.trunc_u_f64" $i32.trunc_u_f64) |
| 22 | + |
17 | 23 | (func $i64.trunc_s_f32 (param $x f32) (result i64) (i64.trunc_s/f32 (get_local $x)))
|
18 | 24 | (export "i64.trunc_s_f32" $i64.trunc_s_f32)
|
19 | 25 |
|
20 | 26 | (func $i64.trunc_u_f32 (param $x f32) (result i64) (i64.trunc_u/f32 (get_local $x)))
|
21 | 27 | (export "i64.trunc_u_f32" $i64.trunc_u_f32)
|
22 | 28 |
|
| 29 | + (func $i64.trunc_s_f64 (param $x f64) (result i64) (i64.trunc_s/f64 (get_local $x))) |
| 30 | + (export "i64.trunc_s_f64" $i64.trunc_s_f64) |
| 31 | + |
| 32 | + (func $i64.trunc_u_f64 (param $x f64) (result i64) (i64.trunc_u/f64 (get_local $x))) |
| 33 | + (export "i64.trunc_u_f64" $i64.trunc_u_f64) |
| 34 | + |
23 | 35 | (func $f32.convert_s_i32 (param $x i32) (result f32) (f32.convert_s/i32 (get_local $x)))
|
24 | 36 | (export "f32.convert_s_i32" $f32.convert_s_i32)
|
25 | 37 |
|
|
98 | 110 | (assert_eq (invoke "i32.trunc_s_f32" (f32.const -1.5)) (i32.const -1))
|
99 | 111 | (assert_eq (invoke "i32.trunc_s_f32" (f32.const -1.9)) (i32.const -1))
|
100 | 112 | (assert_eq (invoke "i32.trunc_s_f32" (f32.const -2.0)) (i32.const -2))
|
| 113 | +(assert_eq (invoke "i32.trunc_s_f32" (f32.const 2147483520.0)) (i32.const 2147483520)) |
| 114 | +(assert_eq (invoke "i32.trunc_s_f32" (f32.const -2147483648.0)) (i32.const -2147483648)) |
| 115 | +(assert_trap (invoke "i32.trunc_s_f32" (f32.const 2147483648.0)) "runtime: integer overflow") |
| 116 | +(assert_trap (invoke "i32.trunc_s_f32" (f32.const -2147483904.0)) "runtime: integer overflow") |
101 | 117 |
|
102 | 118 | (assert_eq (invoke "i32.trunc_u_f32" (f32.const 1.0)) (i32.const 1))
|
103 | 119 | (assert_eq (invoke "i32.trunc_u_f32" (f32.const 1.1)) (i32.const 1))
|
104 | 120 | (assert_eq (invoke "i32.trunc_u_f32" (f32.const 1.5)) (i32.const 1))
|
105 | 121 | (assert_eq (invoke "i32.trunc_u_f32" (f32.const 1.9)) (i32.const 1))
|
106 | 122 | (assert_eq (invoke "i32.trunc_u_f32" (f32.const 2.0)) (i32.const 2))
|
107 | 123 | (assert_eq (invoke "i32.trunc_u_f32" (f32.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 0000
|
| 124 | +(assert_eq (invoke "i32.trunc_u_f32" (f32.const 4294967040.0)) (i32.const -256)) |
| 125 | +(assert_eq (invoke "i32.trunc_u_f32" (f32.const -0.9)) (i32.const 0)) |
| 126 | +(assert_trap (invoke "i32.trunc_u_f32" (f32.const 4294967296.0)) "runtime: integer overflow") |
| 127 | +(assert_trap (invoke "i32.trunc_u_f32" (f32.const -1.0)) "runtime: integer overflow") |
| 128 | + |
| 129 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const 1.0)) (i32.const 1)) |
| 130 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const 1.1)) (i32.const 1)) |
| 131 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const 1.5)) (i32.const 1)) |
| 132 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const -1.0)) (i32.const -1)) |
| 133 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const -1.1)) (i32.const -1)) |
| 134 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const -1.5)) (i32.const -1)) |
| 135 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const -1.9)) (i32.const -1)) |
| 136 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const -2.0)) (i32.const -2)) |
| 137 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const 2147483647.0)) (i32.const 2147483647)) |
| 138 | +(assert_eq (invoke "i32.trunc_s_f64" (f64.const -2147483648.0)) (i32.const -2147483648)) |
| 139 | +(assert_trap (invoke "i32.trunc_s_f64" (f64.const 2147483648.0)) "runtime: integer overflow") |
| 140 | +(assert_trap (invoke "i32.trunc_s_f64" (f64.const -2147483649.0)) "runtime: integer overflow") |
| 141 | + |
| 142 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 1.0)) (i32.const 1)) |
| 143 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 1.1)) (i32.const 1)) |
| 144 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 1.5)) (i32.const 1)) |
| 145 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 1.9)) (i32.const 1)) |
| 146 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 2.0)) (i32.const 2)) |
| 147 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 0000 |
| 148 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const 4294967295.0)) (i32.const -1)) |
| 149 | +(assert_eq (invoke "i32.trunc_u_f64" (f64.const -0.9)) (i32.const 0)) |
| 150 | +(assert_trap (invoke "i32.trunc_u_f64" (f64.const 4294967296.0)) "runtime: integer overflow") |
| 151 | +(assert_trap (invoke "i32.trunc_u_f64" (f64.const -1.0)) "runtime: integer overflow") |
108 | 152 |
|
109 | 153 | (assert_eq (invoke "i64.trunc_s_f32" (f32.const 1.0)) (i64.const 1))
|
110 | 154 | (assert_eq (invoke "i64.trunc_s_f32" (f32.const 1.1)) (i64.const 1))
|
|
116 | 160 | (assert_eq (invoke "i64.trunc_s_f32" (f32.const -2.0)) (i64.const -2))
|
117 | 161 | (assert_eq (invoke "i64.trunc_s_f32" (f32.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 0000
|
118 | 162 | (assert_eq (invoke "i64.trunc_s_f32" (f32.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 0000
|
| 163 | +(assert_eq (invoke "i64.trunc_s_f32" (f32.const 9223371487098961920.0)) (i64.const 9223371487098961920)) |
| 164 | +(assert_eq (invoke "i64.trunc_s_f32" (f32.const -9223372036854775808.0)) (i64.const -9223372036854775808)) |
| 165 | +(assert_trap (invoke "i64.trunc_s_f32" (f32.const 9223372036854775808.0)) "runtime: integer overflow") |
| 166 | +(assert_trap (invoke "i64.trunc_s_f32" (f32.const -9223373136366403584.0)) "runtime: integer overflow") |
119 | 167 |
|
120 | 168 | (assert_eq (invoke "i64.trunc_u_f32" (f32.const 1.0)) (i64.const 1))
|
121 | 169 | (assert_eq (invoke "i64.trunc_u_f32" (f32.const 1.1)) (i64.const 1))
|
122 | 170 | (assert_eq (invoke "i64.trunc_u_f32" (f32.const 1.5)) (i64.const 1))
|
123 | 171 | (assert_eq (invoke "i64.trunc_u_f32" (f32.const 4294967296)) (i64.const 4294967296))
|
| 172 | +(assert_eq (invoke "i64.trunc_u_f32" (f32.const 18446742974197923840.0)) (i64.const -1099511627776)) |
| 173 | +(assert_eq (invoke "i64.trunc_u_f32" (f32.const -0.9)) (i64.const 0)) |
| 174 | +(assert_trap (invoke "i64.trunc_u_f32" (f32.const 18446744073709551616.0)) "runtime: integer overflow") |
| 175 | +(assert_trap (invoke "i64.trunc_u_f32" (f32.const -1.0)) "runtime: integer overflow") |
| 176 | + |
| 177 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const 1.0)) (i64.const 1)) |
| 178 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const 1.1)) (i64.const 1)) |
| 179 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const 1.5)) (i64.const 1)) |
| 180 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -1.0)) (i64.const -1)) |
| 181 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -1.1)) (i64.const -1)) |
| 182 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -1.5)) (i64.const -1)) |
| 183 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -1.9)) (i64.const -1)) |
| 184 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -2.0)) (i64.const -2)) |
| 185 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 0000 |
| 186 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 0000 |
| 187 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const 9223372036854774784.0)) (i64.const 9223372036854774784)) |
| 188 | +(assert_eq (invoke "i64.trunc_s_f64" (f64.const -9223372036854775808.0)) (i64.const -9223372036854775808)) |
| 189 | +(assert_trap (invoke "i64.trunc_s_f64" (f64.const 9223372036854775808.0)) "runtime: integer overflow") |
| 190 | +(assert_trap (invoke "i64.trunc_s_f64" (f64.const -9223372036854777856.0)) "runtime: integer overflow") |
| 191 | + |
| 192 | +(assert_eq (invoke "i64.trunc_u_f64" (f64.const 1.0)) (i64.const 1)) |
| 193 | +(assert_eq (invoke "i64.trunc_u_f64" (f64.const 1.1)) (i64.const 1)) |
| 194 | +(assert_eq (invoke "i64.trunc_u_f64" (f64.const 1.5)) (i64.const 1)) |
| 195 | +(assert_eq (invoke "i64.trunc_u_f64" (f64.const 4294967296)) (i64.const 4294967296)) |
| 196 | +(assert_eq (invoke "i64.trunc_u_f64" (f64.const 18446744073709549568.0)) (i64.const -2048)) |
| 197 | +(assert_eq (invoke "i64.trunc_u_f64" (f64.const -0.9)) (i64.const 0)) |
| 198 | +(assert_trap (invoke "i64.trunc_u_f64" (f64.const 18446744073709551616.0)) "runtime: integer overflow") |
| 199 | +(assert_trap (invoke "i64.trunc_u_f64" (f64.const -1.0)) "runtime: integer overflow") |
124 | 200 |
|
125 | 201 | (assert_eq (invoke "f32.convert_s_i32" (i32.const 1)) (f32.const 1.0))
|
126 | 202 | (assert_eq (invoke "f32.convert_s_i32" (i32.const -1)) (f32.const -1.0))
|
|
0 commit comments