|
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