|
51 | 51 | (array.set $block (local.get $b) (i32.const 0) (ref.i31 (i32.const 0))) |
52 | 52 | (local.get $b)) |
53 | 53 |
|
54 | | - ;; ZZZ Unboxed version |
55 | 54 | (func (export "caml_floatarray_make") |
56 | 55 | (param $n (ref eq)) (param $v (ref eq)) (result (ref eq)) |
57 | 56 | (local $sz i32) (local $f f64) |
|
67 | 66 | (ref.cast (ref $float) (local.get $v)))) |
68 | 67 | (array.new $float_array (local.get $f) (local.get $sz))) |
69 | 68 |
|
70 | | - (export "caml_make_float_vect" (func $caml_floatarray_create)) |
71 | | - (func $caml_floatarray_create (export "caml_floatarray_create") |
| 69 | + (func $caml_floatarray_create |
| 70 | + (export "caml_make_float_vect") (export "caml_floatarray_create") |
| 71 | + (export "caml_array_create_float") |
72 | 72 | (param $n (ref eq)) (result (ref eq)) |
73 | 73 | (local $sz i32) |
74 | 74 | (local.set $sz (i31.get_s (ref.cast (ref i31) (local.get $n)))) |
|
219 | 219 | (return (local.get $fa)))) |
220 | 220 | (return_call $caml_floatarray_dup (local.get $fa1))) |
221 | 221 |
|
| 222 | + (func (export "caml_floatarray_append") |
| 223 | + (param $va1 (ref eq)) (param $va2 (ref eq)) (result (ref eq)) |
| 224 | + (local $fa1 (ref $float_array)) (local $fa2 (ref $float_array)) |
| 225 | + (local $fa (ref $float_array)) |
| 226 | + (local $l1 i32) (local $l2 i32) |
| 227 | + (local.set $fa1 (ref.cast (ref $float_array) (local.get $va1))) |
| 228 | + (drop (block $a2_not_float_array (result (ref eq)) |
| 229 | + (local.set $fa2 |
| 230 | + (br_on_cast_fail $a2_not_float_array (ref eq) (ref $float_array) |
| 231 | + (local.get $va2))) |
| 232 | + (local.set $l1 (array.len (local.get $fa1))) |
| 233 | + (local.set $l2 (array.len (local.get $fa2))) |
| 234 | + (local.set $fa |
| 235 | + (array.new $float_array (f64.const 0) |
| 236 | + (i32.add (local.get $l1) (local.get $l2)))) |
| 237 | + (array.copy $float_array $float_array |
| 238 | + (local.get $fa) (i32.const 0) (local.get $fa1) (i32.const 0) |
| 239 | + (local.get $l1)) |
| 240 | + (array.copy $float_array $float_array |
| 241 | + (local.get $fa) (local.get $l1) (local.get $fa2) (i32.const 0) |
| 242 | + (local.get $l2)) |
| 243 | + (return (local.get $fa)))) |
| 244 | + (return_call $caml_floatarray_dup (local.get $fa1))) |
| 245 | + |
222 | 246 | (func (export "caml_array_concat") (param (ref eq)) (result (ref eq)) |
223 | 247 | (local $i i32) (local $len i32) |
224 | 248 | (local $l (ref eq)) (local $v (ref eq)) |
|
365 | 389 | (struct.get $float 0 (ref.cast (ref $float) (local.get $v))) |
366 | 390 | (local.get $len)))) |
367 | 391 | (ref.i31 (i32.const 0))) |
| 392 | + |
| 393 | + (func (export "caml_floatarray_fill") |
| 394 | + (param $a (ref eq)) (param $i (ref eq)) (param $vlen (ref eq)) |
| 395 | + (param $v (ref eq)) (result (ref eq)) |
| 396 | + (local $len i32) |
| 397 | + (local.set $len (i31.get_u (ref.cast (ref i31) (local.get $vlen)))) |
| 398 | + (if (local.get $len) |
| 399 | + (then |
| 400 | + (array.fill $float_array |
| 401 | + (ref.cast (ref $float_array) (local.get $a)) |
| 402 | + (i31.get_u (ref.cast (ref i31) (local.get $i))) |
| 403 | + (struct.get $float 0 (ref.cast (ref $float) (local.get $v))) |
| 404 | + (local.get $len)))) |
| 405 | + (ref.i31 (i32.const 0))) |
368 | 406 | ) |
0 commit comments