Browse Source

fix wat

master
Gabriel Pariat 3 years ago
parent
commit
a4032ce41c
  1. 144
      implementations/wasm/lisp.wat

144
implementations/wasm/lisp.wat

@ -732,8 +732,8 @@ @@ -732,8 +732,8 @@
(local $rest i32)
(if (i64.eqz (local.get $mantissa))
(if (i32.eqz (local.get $sign))
(then (return (f64.reinterpret/i64 (global.get $f64-plus-zero))))
(else (return (f64.reinterpret/i64 (global.get $f64-minus-zero))))))
(then (return (f64.reinterpret_i64 (global.get $f64-plus-zero))))
(else (return (f64.reinterpret_i64 (global.get $f64-minus-zero))))))
(local.set $whole (local.get $mantissa))
(if (i32.gt_s (local.get $exponent) (i32.const 0))
@ -767,7 +767,7 @@ @@ -767,7 +767,7 @@
(br_if $break (i32.eqz (local.get $exponent)))
(local.set $exponent (i32.add (local.get $exponent) (i32.const 1)))
(local.set $rest (i32.wrap/i64 (i64.rem_u (local.get $mantissa)
(local.set $rest (i32.wrap_i64 (i64.rem_u (local.get $mantissa)
(i64.const 10))))
(local.set $rest (call $i32.normalize-left
(i32.div_u (i32.shl (call $i32.normalize-left
@ -832,13 +832,13 @@ @@ -832,13 +832,13 @@
(if (i32.gt_s (local.get $2-exponent) (i32.const 1023))
(then (if (i32.eqz (local.get $sign))
(then (return (f64.reinterpret/i64 (global.get $f64-plus-infinity))))
(else (return (f64.reinterpret/i64 (global.get $f64-minus-infinity)))))))
(then (return (f64.reinterpret_i64 (global.get $f64-plus-infinity))))
(else (return (f64.reinterpret_i64 (global.get $f64-minus-infinity)))))))
(f64.reinterpret/i64
(i64.xor (i64.shl (i64.extend_u/i32 (local.get $sign)) (i64.const 63))
(f64.reinterpret_i64
(i64.xor (i64.shl (i64.extend_i32_u (local.get $sign)) (i64.const 63))
(i64.xor (i64.shr_u (local.get $mantissa) (i64.const 11))
(i64.shl (i64.add (i64.extend_s/i32 (local.get $2-exponent))
(i64.shl (i64.add (i64.extend_i32_s (local.get $2-exponent))
(i64.const 1023))
(i64.const 52))))))
@ -879,7 +879,7 @@ @@ -879,7 +879,7 @@
(if (i32.lt_u (local.get $nums) (i32.const 18))
(then (local.set $nums (i32.add (local.get $nums) (i32.const 1)))
(local.set $mantissa (i64.add (i64.mul (local.get $mantissa) (i64.const 10))
(i64.extend_u/i32 (i32.sub (local.get $c)
(i64.extend_i32_u (i32.sub (local.get $c)
(i32.const 48))))))
(else (local.set $exponent (i32.add (local.get $exponent) (i32.const 1)))))
(local.set $i (i32.add (local.get $i) (i32.const 1)))
@ -908,7 +908,7 @@ @@ -908,7 +908,7 @@
(br_if $break (i32.ge_u (local.get $nums) (i32.const 18)))
(local.set $nums (i32.add (local.get $nums) (i32.const 1)))
(local.set $mantissa (i64.add (i64.mul (local.get $mantissa) (i64.const 10))
(i64.extend_u/i32 (i32.sub (local.get $c)
(i64.extend_i32_u (i32.sub (local.get $c)
(i32.const 48)))))
(local.set $exponent (i32.add (local.get $exponent) (i32.const -1)))
(local.set $i (i32.add (local.get $i) (i32.const 1)))
@ -953,7 +953,7 @@ @@ -953,7 +953,7 @@
(local.get $negative)
(local.get $mantissa)
(local.get $exponent)))))
(f64.reinterpret/i64 (global.get $f64-nan)))
(f64.reinterpret_i64 (global.get $f64-nan)))
(func $get-reader-macro-character (param $c i32) (result i32)
(local $macros i32)
@ -981,8 +981,8 @@ @@ -981,8 +981,8 @@
(then (local.set $result (call $alloc (i32.const 8)))
(drop (call $reader-read))
(drop (call $reader-read))
(i64.store (local.get $result) (i64.xor (i64.extend_u/i32 (global.get $char))
(i64.shl (i64.extend_u/i32 (call $reader-read))
(i64.store (local.get $result) (i64.xor (i64.extend_i32_u (global.get $char))
(i64.shl (i64.extend_i32_u (call $reader-read))
(i64.const 32)))))
(else (local.set $start (global.get $reader-pos))
@ -1005,7 +1005,7 @@ @@ -1005,7 +1005,7 @@
(local.set $num (call $parse-float
(i32.add (global.get $reader-ptr) (local.get $start))
(local.get $size)))
(if (i64.eq (i64.reinterpret/f64 (local.get $num)) (global.get $f64-nan))
(if (i64.eq (i64.reinterpret_f64 (local.get $num)) (global.get $f64-nan))
(then (local.set $result (call $read-symbol (local.get $start) (local.get $size))))
(else (local.set $result (call $alloc (i32.const 12)))
(i32.store (local.get $result) (global.get $number))
@ -1242,7 +1242,7 @@ @@ -1242,7 +1242,7 @@
(local.set $num (i64.div_u (local.get $num) (i64.const 10)))
(if (i64.gt_u (local.get $num) (i64.const 0))
(call $print-int (local.get $num)))
(call $print-char (i32.wrap/i64 (i64.add (local.get $n) (i64.const 48)))))
(call $print-char (i32.wrap_i64 (i64.add (local.get $n) (i64.const 48)))))
(func $print-zeros (param $exponent i32)
(loop $continue
@ -1274,7 +1274,7 @@ @@ -1274,7 +1274,7 @@
(local.get $exponent))))))
(if (i32.eqz (i32.add (local.get $exponent) (i32.const 1)))
(call $print-char (i32.const 46)))
(call $print-char (i32.wrap/i64 (i64.add (local.get $n) (i64.const 48)))))
(call $print-char (i32.wrap_i64 (i64.add (local.get $n) (i64.const 48)))))
(func $print-number* (param $num f64)
(local $n i64)
@ -1284,8 +1284,8 @@ @@ -1284,8 +1284,8 @@
(local $10-exponent i32)
(local $whole i64)
(local $fraction i64)
(local.set $n (i64.reinterpret/f64 (local.get $num)))
(local.set $is-negative (i32.wrap/i64 (i64.shr_u (i64.and (local.get $n)
(local.set $n (i64.reinterpret_f64 (local.get $num)))
(local.set $is-negative (i32.wrap_i64 (i64.shr_u (i64.and (local.get $n)
(i64.const 0x8000000000000000))
(i64.const 63))))
@ -1296,7 +1296,7 @@ @@ -1296,7 +1296,7 @@
(then (call $print-char (i32.const 0x30))
(return)))
(local.set $2-exponent (i32.sub (i32.wrap/i64 (i64.shr_u (i64.and (local.get $n)
(local.set $2-exponent (i32.sub (i32.wrap_i64 (i64.shr_u (i64.and (local.get $n)
(i64.const 0x7FF0000000000000))
(i64.const 52)))
(i32.const 1023)))
@ -1699,7 +1699,7 @@ @@ -1699,7 +1699,7 @@
(return (local.get $car)))) ;; ERROR: Can't add NaN!
(local.set $num (i64.xor (local.get $num)
(i64.trunc_s/f64 (f64.load (i32.add (local.get $car)
(i64.trunc_f64_s (f64.load (i32.add (local.get $car)
(i32.const 4))))))
(br_if $break (i32.eq (local.get $cdr) (global.get $nil)))
@ -1713,7 +1713,7 @@ @@ -1713,7 +1713,7 @@
(f64.store (i32.add (local.get $result) (i32.const 4))
(f64.convert_s/i64 (local.get $num)))
(f64.convert_i64_s (local.get $num)))
(local.get $result))
(func $bit-or (param $cons i32) (result i32)
@ -1748,7 +1748,7 @@ @@ -1748,7 +1748,7 @@
(return (local.get $car)))) ;; ERROR: Can't add NaN!
(local.set $num (i64.or (local.get $num)
(i64.trunc_s/f64 (f64.load (i32.add (local.get $car)
(i64.trunc_f64_s (f64.load (i32.add (local.get $car)
(i32.const 4))))))
(br_if $break (i32.eq (local.get $cdr) (global.get $nil)))
@ -1762,7 +1762,7 @@ @@ -1762,7 +1762,7 @@
(f64.store (i32.add (local.get $result) (i32.const 4))
(f64.convert_s/i64 (local.get $num)))
(f64.convert_i64_s (local.get $num)))
(local.get $result))
(func $bit-and (param $cons i32) (result i32)
@ -1788,7 +1788,7 @@ @@ -1788,7 +1788,7 @@
(local.set $result (call $alloc (i32.const 12)))
(i32.store (local.get $result) (global.get $number))
(local.set $num (i64.trunc_s/f64 (f64.load (i32.add (local.get $car)
(local.set $num (i64.trunc_f64_s (f64.load (i32.add (local.get $car)
(i32.const 4)))))
(loop $continue
(block $break
@ -1801,7 +1801,7 @@ @@ -1801,7 +1801,7 @@
(return (local.get $car)))) ;; ERROR: Can't add NaN!
(local.set $num (i64.and (local.get $num)
(i64.trunc_s/f64 (f64.load (i32.add (local.get $car)
(i64.trunc_f64_s (f64.load (i32.add (local.get $car)
(i32.const 4))))))
(br_if $break (i32.eq (local.get $cdr) (global.get $nil)))
@ -1815,7 +1815,7 @@ @@ -1815,7 +1815,7 @@
(f64.store (i32.add (local.get $result) (i32.const 4))
(f64.convert_s/i64 (local.get $num)))
(f64.convert_i64_s (local.get $num)))
(local.get $result))
(func $bit-not (param $cons i32) (result i32)
@ -1837,12 +1837,12 @@ @@ -1837,12 +1837,12 @@
(local.set $result (call $alloc (i32.const 12)))
(i32.store (local.get $result) (global.get $number))
(local.set $num (i64.trunc_s/f64 (f64.load (i32.add (local.get $car)
(local.set $num (i64.trunc_f64_s (f64.load (i32.add (local.get $car)
(i32.const 4)))))
(local.set $num (i64.sub (i64.mul (local.get $num) (i64.const -1))
(i64.const 1)))
(f64.store (i32.add (local.get $result) (i32.const 4))
(f64.convert_s/i64 (local.get $num)))
(f64.convert_i64_s (local.get $num)))
(local.get $result))
;; pow!
@ -1880,22 +1880,22 @@ @@ -1880,22 +1880,22 @@
(global $two54 f64 (f64.const 1.80143985094819840000e+16))
(global $twom54 f64 (f64.const 5.55111512312578270212e-17))
(func $copysign (param $x f64) (param $y f64) (result f64)
(f64.reinterpret/i64 (i64.or (i64.and (i64.reinterpret/f64 (local.get $x))
(f64.reinterpret_i64 (i64.or (i64.and (i64.reinterpret_f64 (local.get $x))
(i64.const 0x7FFFFFFFFFFFFFFF))
(i64.and (i64.reinterpret/f64 (local.get $y))
(i64.and (i64.reinterpret_f64 (local.get $y))
(i64.const 0x8000000000000000)))))
(func $scalbn (param $x f64) (param $n i32) (result f64)
(local $k i32)
(local $hx i32)
(local $lx i32)
(local.set $hx (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $x)) (i64.const 32))))
(local.set $lx (i32.wrap/i64 (i64.reinterpret/f64 (local.get $x))))
(local.set $hx (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $x)) (i64.const 32))))
(local.set $lx (i32.wrap_i64 (i64.reinterpret_f64 (local.get $x))))
(local.set $k (i32.shr_u (i32.and (local.get $hx) (i32.const 0x7ff00000)) (i32.const 20)))
(if (i32.eqz (local.get $k))
(then (if (i32.eqz (i32.or (local.get $lx) (i32.and (local.get $hx) (i32.const 0x7fffffff))))
(return (local.get $x)))
(local.set $x (f64.mul (local.get $x) (global.get $two54)))
(local.set $hx (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $x))
(local.set $hx (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $x))
(i64.const 32))))
(local.set $k (i32.sub (i32.shr_u (i32.and (local.get $hx) (i32.const 0x7ff00000))
(i32.const 20))
@ -1907,14 +1907,14 @@ @@ -1907,14 +1907,14 @@
(if (i32.gt_s (local.get $k) (i32.const 0x7FE))
(return (f64.mul (global.get $huge) (call $copysign (global.get $huge) (local.get $x)))))
(if (i32.gt_s (local.get $k) (i32.const 0))
(return (f64.reinterpret/i64
(return (f64.reinterpret_i64
(i64.or
(i64.shl (i64.extend_u/i32 (i32.or (i32.and (local.get $hx)
(i64.shl (i64.extend_i32_u (i32.or (i32.and (local.get $hx)
(i32.const 0x800fffff))
(i32.shl (local.get $k)
(i32.const 20))))
(i64.const 32))
(i64.and (i64.reinterpret/f64 (local.get $x))
(i64.and (i64.reinterpret_f64 (local.get $x))
(i64.const 0x00000000FFFFFFFF))))))
(if (i32.lt_s (local.get $k) (i32.const -54))
(if (i32.gt_s (local.get $n) (i32.const 50000))
@ -1925,14 +1925,14 @@ @@ -1925,14 +1925,14 @@
(global.get $tiny)
(local.get $x)))))))
(local.set $k (i32.add (local.get $k) (i32.const 54)))
(f64.mul (f64.reinterpret/i64
(f64.mul (f64.reinterpret_i64
(i64.or
(i64.shl (i64.extend_u/i32 (i32.or (i32.and (local.get $hx)
(i64.shl (i64.extend_i32_u (i32.or (i32.and (local.get $hx)
(i32.const 0x800fffff))
(i32.shl (local.get $k)
(i32.const 20))))
(i64.const 32))
(i64.and (i64.reinterpret/f64 (local.get $x))
(i64.and (i64.reinterpret_f64 (local.get $x))
(i64.const 0x00000000FFFFFFFF))))
(global.get $twom54)))
@ -1969,10 +1969,10 @@ @@ -1969,10 +1969,10 @@
(local $s_l f64)
(local $t_h f64)
(local $t_l f64)
(local.set $hx (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $x)) (i64.const 32))))
(local.set $lx (i32.wrap/i64 (i64.reinterpret/f64 (local.get $x))))
(local.set $hy (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $y)) (i64.const 32))))
(local.set $ly (i32.wrap/i64 (i64.reinterpret/f64 (local.get $y))))
(local.set $hx (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $x)) (i64.const 32))))
(local.set $lx (i32.wrap_i64 (i64.reinterpret_f64 (local.get $x))))
(local.set $hy (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $y)) (i64.const 32))))
(local.set $ly (i32.wrap_i64 (i64.reinterpret_f64 (local.get $y))))
(local.set $ix (i32.and (local.get $hx) (i32.const 0x7fffffff)))
(local.set $iy (i32.and (local.get $hy) (i32.const 0x7fffffff)))
@ -2117,8 +2117,8 @@ @@ -2117,8 +2117,8 @@
(local.set $u (f64.mul (global.get $ivln2_h) (local.get $t))) ;; ivln2_h has 21 sig. bits
(local.set $v (f64.sub (f64.mul (local.get $t) (global.get $ivln2_l))
(f64.mul (local.get $w) (global.get $ivln2))))
(local.set $t1 (f64.reinterpret/i64
(i64.and (i64.reinterpret/f64 (f64.add (local.get $u)
(local.set $t1 (f64.reinterpret_i64
(i64.and (i64.reinterpret_f64 (f64.add (local.get $u)
(local.get $v)))
(i64.const 0xFFFFFFFF00000000))))
(local.set $t2 (f64.sub (local.get $v)
@ -2128,7 +2128,7 @@ @@ -2128,7 +2128,7 @@
(if (i32.lt_u (local.get $ix) (i32.const 0x00100000))
(then (local.set $ax (f64.mul (local.get $ax) (global.get $two53)))
(local.set $n (i32.sub (local.get $n) (i32.const 53)))
(local.set $ix (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $ax))
(local.set $ix (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $ax))
(i64.const 32))))))
(local.set $n (i32.add (local.get $n)
(i32.sub (i32.shr_u (local.get $ix)
@ -2145,27 +2145,27 @@ @@ -2145,27 +2145,27 @@
(else (local.set $k (i32.const 0))
(local.set $n (i32.add (local.get $n) (i32.const 1)))
(local.set $ix (i32.sub (local.get $ix) (i32.const 0x00100000)))))))
(local.set $ax (f64.reinterpret/i64
(i64.xor (i64.and (i64.reinterpret/f64 (local.get $ax))
(local.set $ax (f64.reinterpret_i64
(i64.xor (i64.and (i64.reinterpret_f64 (local.get $ax))
(i64.const 0x00000000FFFFFFFF))
(i64.shl (i64.extend_u/i32 (local.get $ix)) (i64.const 32)))))
(i64.shl (i64.extend_i32_u (local.get $ix)) (i64.const 32)))))
;; compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5)
(local.set $u (f64.sub (local.get $ax)
(f64.add (global.get $one)
(f64.mul (f64.convert_s/i32 (local.get $k))
(f64.mul (f64.convert_i32_s (local.get $k))
(global.get $bp)))))
(local.set $v (f64.div (global.get $one)
(f64.add (local.get $ax)
(f64.add (global.get $one)
(f64.mul (f64.convert_s/i32 (local.get $k))
(f64.mul (f64.convert_i32_s (local.get $k))
(global.get $bp))))))
(local.set $ss (f64.mul (local.get $u) (local.get $v)))
(local.set $s_h (f64.reinterpret/i64 (i64.and (i64.reinterpret/f64 (local.get $ss))
(local.set $s_h (f64.reinterpret_i64 (i64.and (i64.reinterpret_f64 (local.get $ss))
(i64.const 0xFFFFFFFF00000000))))
;; t_h=ax+bp[k] High
(local.set $t_h (f64.reinterpret/i64
(i64.shl (i64.extend_u/i32 (i32.add (i32.or (i32.shr_u (local.get $ix)
(local.set $t_h (f64.reinterpret_i64
(i64.shl (i64.extend_i32_u (i32.add (i32.or (i32.shr_u (local.get $ix)
(i32.const 1))
(i32.const 0x20000000))
(i32.add (i32.const 0x00080000)
@ -2175,7 +2175,7 @@ @@ -2175,7 +2175,7 @@
(local.set $t_l (f64.sub (local.get $ax)
(f64.sub (local.get $t_h)
(f64.add (global.get $one)
(f64.mul (f64.convert_s/i32 (local.get $k))
(f64.mul (f64.convert_i32_s (local.get $k))
(global.get $bp))))))
(local.set $s_l (f64.mul (local.get $v)
(f64.sub (f64.sub (local.get $u)
@ -2218,7 +2218,7 @@ @@ -2218,7 +2218,7 @@
(local.set $s2 (f64.mul (local.get $s_h)
(local.get $s_h)))
(local.set $t_h (f64.add (f64.const 3.0) (f64.add (local.get $s2) (local.get $r))))
(local.set $t_h (f64.reinterpret/i64 (i64.and (i64.reinterpret/f64 (local.get $t_h))
(local.set $t_h (f64.reinterpret_i64 (i64.and (i64.reinterpret_f64 (local.get $t_h))
(i64.const 0xFFFFFFFF00000000))))
(local.set $t_l (f64.sub (local.get $r)
(f64.sub (f64.sub (local.get $t_h)
@ -2232,7 +2232,7 @@ @@ -2232,7 +2232,7 @@
(local.get $ss))))
;; 2/(3log2)*(ss+...)
(local.set $p_h (f64.add (local.get $u) (local.get $v)))
(local.set $p_h (f64.reinterpret/i64 (i64.and (i64.reinterpret/f64 (local.get $p_h))
(local.set $p_h (f64.reinterpret_i64 (i64.and (i64.reinterpret_f64 (local.get $p_h))
(i64.const 0xFFFFFFFF00000000))))
(local.set $p_l (f64.sub (local.get $v)
(f64.sub (local.get $p_h)
@ -2240,25 +2240,25 @@ @@ -2240,25 +2240,25 @@
(local.set $z_h (f64.mul (global.get $cp_h) (local.get $p_h))) ;; cp_h + cp_l = 2/(3*log2)
(local.set $z_l (f64.add (f64.add (f64.mul (global.get $cp_l) (local.get $p_h))
(f64.mul (local.get $p_l) (global.get $cp)))
(f64.mul (f64.convert_u/i32 (local.get $k))
(f64.mul (f64.convert_i32_u (local.get $k))
(global.get $dp_l))))
;; log2(ax) = (ss++..)*2/(3*log2) = n + dp_h + z_h + z_l
(local.set $t (f64.convert_s/i32 (local.get $n)))
(local.set $t (f64.convert_i32_s (local.get $n)))
(local.set $t1 (f64.add (f64.add (f64.add (local.get $z_h) (local.get $z_l))
(f64.mul (f64.convert_u/i32 (local.get $k))
(f64.mul (f64.convert_i32_u (local.get $k))
(global.get $dp_h)))
(local.get $t)))
(local.set $t1 (f64.reinterpret/i64 (i64.and (i64.reinterpret/f64 (local.get $t1))
(local.set $t1 (f64.reinterpret_i64 (i64.and (i64.reinterpret_f64 (local.get $t1))
(i64.const 0xFFFFFFFF00000000))))
(local.set $t2 (f64.sub (local.get $z_l)
(f64.sub (f64.sub (f64.sub (local.get $t1) (local.get $t))
(f64.mul (f64.convert_u/i32 (local.get $k))
(f64.mul (f64.convert_i32_u (local.get $k))
(global.get $dp_h)))
(local.get $z_h))))))
;; split up y into y1 + y2 and compute (y1+y2)*(t1+t2)
(local.set $y1 (local.get $y))
(local.set $y1 (f64.reinterpret/i64 (i64.and (i64.reinterpret/f64 (local.get $y1))
(local.set $y1 (f64.reinterpret_i64 (i64.and (i64.reinterpret_f64 (local.get $y1))
(i64.const 0xFFFFFFFF00000000))))
(local.set $p_l (f64.add (f64.mul (f64.sub (local.get $y) (local.get $y1))
(local.get $t1))
@ -2266,9 +2266,9 @@ @@ -2266,9 +2266,9 @@
(local.get $t2))))
(local.set $p_h (f64.mul (local.get $y1) (local.get $t1)))
(local.set $z (f64.add (local.get $p_l) (local.get $p_h)))
(local.set $j (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $z))
(local.set $j (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $z))
(i64.const 32))))
(local.set $i (i32.wrap/i64 (i64.reinterpret/f64 (local.get $z))))
(local.set $i (i32.wrap_i64 (i64.reinterpret_f64 (local.get $z))))
(if (i32.ge_s (local.get $j) (i32.const 0x40900000)) ;; z >= 1024
(then (if (i32.ne (i32.or (i32.sub (local.get $j) (i32.const 0x40900000))
(local.get $i))
@ -2301,8 +2301,8 @@ @@ -2301,8 +2301,8 @@
(local.set $k (i32.sub (i32.shr_u (i32.and (local.get $n) (i32.const 0x7fffffff))
(i32.const 20))
(i32.const 0x3FF)))
(local.set $t (f64.reinterpret/i64
(i64.shl (i64.extend_u/i32
(local.set $t (f64.reinterpret_i64
(i64.shl (i64.extend_i32_u
(i32.and (local.get $n)
(i32.sub (i32.mul (i32.shr_u (i32.const 0x000fffff)
(local.get $k))
@ -2316,7 +2316,7 @@ @@ -2316,7 +2316,7 @@
(local.set $n (i32.mul (i32.const -1) (local.get $n))))
(local.set $p_h (f64.sub (local.get $p_h) (local.get $t)))))
(local.set $t (f64.add (local.get $p_l) (local.get $p_h)))
(local.set $t (f64.reinterpret/i64 (i64.and (i64.reinterpret/f64 (local.get $t))
(local.set $t (f64.reinterpret_i64 (i64.and (i64.reinterpret_f64 (local.get $t))
(i64.const 0xFFFFFFFF00000000))))
(local.set $u (f64.mul (local.get $t) (global.get $lg2_h)))
(local.set $v (f64.add (f64.mul (f64.sub (local.get $p_l) (f64.sub (local.get $t) (local.get $p_h)))
@ -2347,14 +2347,14 @@ @@ -2347,14 +2347,14 @@
(f64.add (local.get $w)
(f64.mul (local.get $z) (local.get $w)))))
(local.set $z (f64.sub (global.get $one) (f64.sub (local.get $r) (local.get $z))))
(local.set $j (i32.wrap/i64 (i64.shr_u (i64.reinterpret/f64 (local.get $z)) (i64.const 32))))
(local.set $j (i32.wrap_i64 (i64.shr_u (i64.reinterpret_f64 (local.get $z)) (i64.const 32))))
(local.set $j (i32.add (local.get $j) (i32.shl (local.get $n) (i32.const 20))))
(if (i32.lt_s (i32.shr_u (local.get $j) (i32.const 20)) (i32.const 0))
(then (local.set $z (call $scalbn (local.get $z) (local.get $n))))
(else (local.set $z
(f64.reinterpret/i64
(i64.add (i64.reinterpret/f64 (local.get $z))
(i64.shl (i64.extend_u/i32 (i32.shl (local.get $n)
(f64.reinterpret_i64
(i64.add (i64.reinterpret_f64 (local.get $z))
(i64.shl (i64.extend_i32_u (i32.shl (local.get $n)
(i32.const 20)))
(i64.const 32)))))))

Loading…
Cancel
Save