|
315 | 315 | (br $fill)))) |
316 | 316 | (local.get $a)))) |
317 | 317 |
|
| 318 | + (func (export "caml_float_array_concat") (param (ref eq)) (result (ref eq)) |
| 319 | + (local $i i32) (local $len i32) |
| 320 | + (local $l (ref eq)) (local $v (ref eq)) |
| 321 | + (local $b (ref $block)) |
| 322 | + (local $fa (ref $float_array)) (local $fa' (ref $float_array)) |
| 323 | + (local.set $l (local.get 0)) |
| 324 | + (local.set $len (i32.const 0)) |
| 325 | + (loop $compute_length |
| 326 | + (drop (block $exit (result (ref eq)) |
| 327 | + (local.set $b |
| 328 | + (br_on_cast_fail $exit (ref eq) (ref $block) (local.get $l))) |
| 329 | + (local.set $v (array.get $block (local.get $b) (i32.const 1))) |
| 330 | + (local.set $len |
| 331 | + (i32.add (local.get $len) |
| 332 | + (array.len (ref.cast (ref $float_array) (local.get $v))))) |
| 333 | + (local.set $l (array.get $block (local.get $b) (i32.const 2))) |
| 334 | + (br $compute_length)))) |
| 335 | + (local.set $fa |
| 336 | + (array.new $float_array (f64.const 0) (local.get $len))) |
| 337 | + (local.set $l (local.get 0)) |
| 338 | + (local.set $i (i32.const 0)) |
| 339 | + (loop $fill |
| 340 | + (drop (block $exit (result (ref eq)) |
| 341 | + (local.set $b |
| 342 | + (br_on_cast_fail $exit (ref eq) (ref $block) |
| 343 | + (local.get $l))) |
| 344 | + (local.set $l (array.get $block (local.get $b) (i32.const 2))) |
| 345 | + (drop (block $not_float (result (ref eq)) |
| 346 | + (local.set $fa' |
| 347 | + (br_on_cast_fail $not_float (ref eq) (ref $float_array) |
| 348 | + (array.get $block (local.get $b) (i32.const 1)))) |
| 349 | + (local.set $len (array.len (local.get $fa'))) |
| 350 | + (array.copy $float_array $float_array |
| 351 | + (local.get $fa) (local.get $i) |
| 352 | + (local.get $fa') (i32.const 0) |
| 353 | + (local.get $len)) |
| 354 | + (local.set $i (i32.add (local.get $i) (local.get $len))) |
| 355 | + (br $fill))) |
| 356 | + (br $fill)))) |
| 357 | + (local.get $fa)) |
| 358 | + |
| 359 | + (func (export "caml_uniform_array_concat") (param (ref eq)) (result (ref eq)) |
| 360 | + (local $i i32) (local $len i32) |
| 361 | + (local $l (ref eq)) (local $v (ref eq)) |
| 362 | + (local $b (ref $block)) |
| 363 | + (local $a (ref $block)) (local $a' (ref $block)) |
| 364 | + (local.set $l (local.get 0)) |
| 365 | + (local.set $len (i32.const 0)) |
| 366 | + (loop $compute_length |
| 367 | + (drop (block $exit (result (ref eq)) |
| 368 | + (local.set $b |
| 369 | + (br_on_cast_fail $exit (ref eq) (ref $block) (local.get $l))) |
| 370 | + (local.set $v (array.get $block (local.get $b) (i32.const 1))) |
| 371 | + (local.set $len |
| 372 | + (i32.add (local.get $len) |
| 373 | + (i32.sub |
| 374 | + (array.len (ref.cast (ref $block) (local.get $v))) |
| 375 | + (i32.const 1)))) |
| 376 | + (local.set $l (array.get $block (local.get $b) (i32.const 2))) |
| 377 | + (br $compute_length)))) |
| 378 | + (local.set $a |
| 379 | + (array.new $block (ref.i31 (i32.const 0)) |
| 380 | + (i32.add (local.get $len) (i32.const 1)))) |
| 381 | + (local.set $l (local.get 0)) |
| 382 | + (local.set $i (i32.const 1)) |
| 383 | + (loop $fill |
| 384 | + (drop (block $exit (result (ref eq)) |
| 385 | + (local.set $b |
| 386 | + (br_on_cast_fail $exit (ref eq) (ref $block) |
| 387 | + (local.get $l))) |
| 388 | + (local.set $a' |
| 389 | + (ref.cast (ref $block) |
| 390 | + (array.get $block (local.get $b) (i32.const 1)))) |
| 391 | + (local.set $len |
| 392 | + (i32.sub (array.len (local.get $a')) (i32.const 1))) |
| 393 | + (array.copy $block $block |
| 394 | + (local.get $a) (local.get $i) |
| 395 | + (local.get $a') (i32.const 1) |
| 396 | + (local.get $len)) |
| 397 | + (local.set $i (i32.add (local.get $i) (local.get $len))) |
| 398 | + (local.set $l (array.get $block (local.get $b) (i32.const 2))) |
| 399 | + (br $fill)))) |
| 400 | + (local.get $a)) |
| 401 | + |
318 | 402 | (func $caml_floatarray_blit (export "caml_floatarray_blit") |
319 | 403 | (param $a1 (ref eq)) (param $i1 (ref eq)) |
320 | 404 | (param $a2 (ref eq)) (param $i2 (ref eq)) |
|
0 commit comments