|
456 | 456 | (block $int8
|
457 | 457 | (block $int16
|
458 | 458 | (block $int32
|
459 |
| - (block $complex32 |
460 |
| - (block $int |
461 |
| - (block $int64 |
462 |
| - (block $complex64 |
463 |
| - (br_table $int32 $int64 $int8 $int8 $int16 $int16 |
464 |
| - $int32 $int64 $int $int |
465 |
| - $complex32 $complex64 $int8 $int16 |
466 |
| - (struct.get $bigarray $ba_kind (local.get $b)))) |
467 |
| - ;; complex64 |
| 459 | + (block $int |
| 460 | + (block $int64 |
| 461 | + (block $float32 |
| 462 | + (block $complex32 |
| 463 | + (block $float64 |
| 464 | + (block $complex64 |
| 465 | + (br_table $float32 $float64 $int8 $int8 $int16 $int16 |
| 466 | + $int32 $int64 $int $int |
| 467 | + $complex32 $complex64 $int8 $int16 |
| 468 | + (struct.get $bigarray $ba_kind (local.get $b)))) |
| 469 | + ;; complex64 |
| 470 | + (local.set $len (i32.shl (local.get $len) (i32.const 1)))) |
| 471 | + ;; fallthrough |
| 472 | + ;; float64 |
| 473 | + (local.set $len (i32.shl (local.get $len) (i32.const 3))) |
| 474 | + (loop $loop |
| 475 | + (if (i32.lt_u (local.get $i) (local.get $len)) |
| 476 | + (then |
| 477 | + (call $caml_serialize_int_8 (local.get $s) |
| 478 | + (i64.reinterpret_f64 |
| 479 | + (call $dv_get_f64 (local.get $view) |
| 480 | + (local.get $i) |
| 481 | + (global.get $littleEndian)))) |
| 482 | + (local.set $i (i32.add (local.get $i) (i32.const 8))) |
| 483 | + (br $loop)))) |
| 484 | + (br $done)) |
| 485 | + ;; complex32 |
468 | 486 | (local.set $len (i32.shl (local.get $len) (i32.const 1))))
|
469 | 487 | ;; fallthrough
|
470 |
| - ;; int64 / float64 |
471 |
| - (local.set $len (i32.shl (local.get $len) (i32.const 3))) |
| 488 | + ;; float32 |
| 489 | + (local.set $len (i32.shl (local.get $len) (i32.const 2))) |
472 | 490 | (loop $loop
|
473 | 491 | (if (i32.lt_u (local.get $i) (local.get $len))
|
474 | 492 | (then
|
475 |
| - (call $caml_serialize_int_8 (local.get $s) |
476 |
| - (call $dv_get_i64 (local.get $view) |
477 |
| - (local.get $i) |
478 |
| - (global.get $littleEndian))) |
479 |
| - (local.set $i (i32.add (local.get $i) (i32.const 8))) |
| 493 | + (call $caml_serialize_int_4 (local.get $s) |
| 494 | + (i32.reinterpret_f32 |
| 495 | + (call $dv_get_f32 (local.get $view) (local.get $i) |
| 496 | + (global.get $littleEndian)))) |
| 497 | + (local.set $i (i32.add (local.get $i) (i32.const 4))) |
480 | 498 | (br $loop))))
|
481 | 499 | (br $done))
|
482 |
| - ;; int |
483 |
| - (call $caml_serialize_int_1 (local.get $s) (i32.const 0)) |
484 |
| - (br $int32)) |
485 |
| - ;; complex32 |
486 |
| - (local.set $len (i32.shl (local.get $len) (i32.const 1)))) |
| 500 | + ;; int64 |
| 501 | + (local.set $len (i32.shl (local.get $len) (i32.const 3))) |
| 502 | + (loop $loop |
| 503 | + (if (i32.lt_u (local.get $i) (local.get $len)) |
| 504 | + (then |
| 505 | + (call $caml_serialize_int_8 (local.get $s) |
| 506 | + (call $dv_get_i64 (local.get $view) |
| 507 | + (local.get $i) |
| 508 | + (global.get $littleEndian))) |
| 509 | + (local.set $i (i32.add (local.get $i) (i32.const 8))) |
| 510 | + (br $loop)))) |
| 511 | + (br $done)) |
| 512 | + ;; int |
| 513 | + (call $caml_serialize_int_1 (local.get $s) (i32.const 0))) |
487 | 514 | ;; fallthrough
|
488 |
| - ;; int32 / float32 |
| 515 | + ;; int32 |
489 | 516 | (local.set $len (i32.shl (local.get $len) (i32.const 2)))
|
490 | 517 | (loop $loop
|
491 | 518 | (if (i32.lt_u (local.get $i) (local.get $len))
|
|
496 | 523 | (local.set $i (i32.add (local.get $i) (i32.const 4)))
|
497 | 524 | (br $loop))))
|
498 | 525 | (br $done))
|
499 |
| - ;; int16 / uint16 / float16 |
500 |
| - (local.set $len (i32.shl (local.get $len) (i32.const 1))) |
501 |
| - (loop $loop |
502 |
| - (if (i32.lt_u (local.get $i) (local.get $len)) |
503 |
| - (then |
504 |
| - (call $caml_serialize_int_2 (local.get $s) |
505 |
| - (call $dv_get_i16 (local.get $view) (local.get $i) |
506 |
| - (global.get $littleEndian))) |
507 |
| - (local.set $i (i32.add (local.get $i) (i32.const 2))) |
508 |
| - (br $loop)))) |
509 |
| - (br $done)) |
| 526 | + ;; int16 / uint16 / float16 |
| 527 | + (local.set $len (i32.shl (local.get $len) (i32.const 1))) |
| 528 | + (loop $loop |
| 529 | + (if (i32.lt_u (local.get $i) (local.get $len)) |
| 530 | + (then |
| 531 | + (call $caml_serialize_int_2 (local.get $s) |
| 532 | + (call $dv_get_i16 (local.get $view) (local.get $i) |
| 533 | + (global.get $littleEndian))) |
| 534 | + (local.set $i (i32.add (local.get $i) (i32.const 2))) |
| 535 | + (br $loop)))) |
| 536 | + (br $done)) |
510 | 537 | ;; int8 / uint8
|
511 | 538 | (loop $loop
|
512 | 539 | (if (i32.lt_u (local.get $i) (local.get $len))
|
513 | 540 | (then
|
514 | 541 | (call $caml_serialize_int_1 (local.get $s)
|
515 | 542 | (call $dv_get_i8 (local.get $view) (local.get $i)))
|
516 | 543 | (local.set $i (i32.add (local.get $i) (i32.const 1)))
|
517 |
| - (br $loop)))) |
518 |
| - (br $done)) |
| 544 | + (br $loop))))) |
519 | 545 | (tuple.make 2
|
520 | 546 | (i32.mul (i32.add (i32.const 4) (local.get $num_dims)) (i32.const 4))
|
521 | 547 | (i32.mul (i32.add (i32.const 4) (local.get $num_dims)) (i32.const 8))))
|
|
569 | 595 | (block $int8
|
570 | 596 | (block $int16
|
571 | 597 | (block $int32
|
572 |
| - (block $complex32 |
573 |
| - (block $int |
574 |
| - (block $int64 |
575 |
| - (block $complex64 |
576 |
| - (br_table $int32 $int64 $int8 $int8 $int16 $int16 |
577 |
| - $int32 $int64 $int $int |
578 |
| - $complex32 $complex64 $int8 $int16 |
579 |
| - (struct.get $bigarray $ba_kind (local.get $b)))) |
580 |
| - ;; complex64 |
| 598 | + (block $int |
| 599 | + (block $int64 |
| 600 | + (block $float32 |
| 601 | + (block $complex32 |
| 602 | + (block $float64 |
| 603 | + (block $complex64 |
| 604 | + (br_table $float32 $float64 $int8 $int8 $int16 $int16 |
| 605 | + $int32 $int64 $int $int |
| 606 | + $complex32 $complex64 $int8 $int16 |
| 607 | + (struct.get $bigarray $ba_kind (local.get $b)))) |
| 608 | + ;; complex64 |
| 609 | + (local.set $len (i32.shl (local.get $len) (i32.const 1)))) |
| 610 | + ;; fallthrough |
| 611 | + ;; float64 |
| 612 | + (local.set $len (i32.shl (local.get $len) (i32.const 3))) |
| 613 | + (loop $loop |
| 614 | + (if (i32.lt_u (local.get $i) (local.get $len)) |
| 615 | + (then |
| 616 | + (call $dv_set_f64 (local.get $view) (local.get $i) |
| 617 | + (f64.reinterpret_i64 |
| 618 | + (call $caml_deserialize_int_8 (local.get $s))) |
| 619 | + (global.get $littleEndian)) |
| 620 | + (local.set $i (i32.add (local.get $i) (i32.const 8))) |
| 621 | + (br $loop)))) |
| 622 | + (br $done)) |
| 623 | + ;; complex32 |
581 | 624 | (local.set $len (i32.shl (local.get $len) (i32.const 1))))
|
582 | 625 | ;; fallthrough
|
583 |
| - ;; int64 |
584 |
| - (local.set $len (i32.shl (local.get $len) (i32.const 3))) |
| 626 | + ;; float32 |
| 627 | + (local.set $len (i32.shl (local.get $len) (i32.const 2))) |
585 | 628 | (loop $loop
|
586 | 629 | (if (i32.lt_u (local.get $i) (local.get $len))
|
587 | 630 | (then
|
588 |
| - (call $dv_set_i64 (local.get $view) (local.get $i) |
589 |
| - (call $caml_deserialize_int_8 (local.get $s)) |
| 631 | + (call $dv_set_f32 (local.get $view) (local.get $i) |
| 632 | + (f32.reinterpret_i32 |
| 633 | + (call $caml_deserialize_int_4 (local.get $s))) |
590 | 634 | (global.get $littleEndian))
|
591 |
| - (local.set $i (i32.add (local.get $i) (i32.const 8))) |
| 635 | + (local.set $i (i32.add (local.get $i) (i32.const 4))) |
592 | 636 | (br $loop))))
|
593 | 637 | (br $done))
|
594 |
| - ;; int |
595 |
| - (if (call $caml_deserialize_uint_1 (local.get $s)) |
596 |
| - (then (call $caml_failwith (global.get $intern_overflow)))) |
597 |
| - (br $int32)) |
598 |
| - ;; complex32 |
599 |
| - (local.set $len (i32.shl (local.get $len) (i32.const 1)))) |
| 638 | + ;; int64 |
| 639 | + (local.set $len (i32.shl (local.get $len) (i32.const 3))) |
| 640 | + (loop $loop |
| 641 | + (if (i32.lt_u (local.get $i) (local.get $len)) |
| 642 | + (then |
| 643 | + (call $dv_set_i64 (local.get $view) (local.get $i) |
| 644 | + (call $caml_deserialize_int_8 (local.get $s)) |
| 645 | + (global.get $littleEndian)) |
| 646 | + (local.set $i (i32.add (local.get $i) (i32.const 8))) |
| 647 | + (br $loop)))) |
| 648 | + (br $done)) |
| 649 | + ;; int |
| 650 | + (if (call $caml_deserialize_uint_1 (local.get $s)) |
| 651 | + (then (call $caml_failwith (global.get $intern_overflow))))) |
600 | 652 | ;; fallthrough
|
601 |
| - ;; int32 / float32 |
| 653 | + ;; int32 |
602 | 654 | (local.set $len (i32.shl (local.get $len) (i32.const 2)))
|
603 | 655 | (loop $loop
|
604 | 656 | (if (i32.lt_u (local.get $i) (local.get $len))
|
|
0 commit comments