diff options
Diffstat (limited to 'test/passes')
-rw-r--r-- | test/passes/remove-non-js-ops.txt | 1118 | ||||
-rw-r--r-- | test/passes/remove-non-js-ops.wast | 15 |
2 files changed, 952 insertions, 181 deletions
diff --git a/test/passes/remove-non-js-ops.txt b/test/passes/remove-non-js-ops.txt index d326b51ea..528b7eaf7 100644 --- a/test/passes/remove-non-js-ops.txt +++ b/test/passes/remove-non-js-ops.txt @@ -2,9 +2,10 @@ (type $0 (func (param f64 f64) (result f64))) (type $1 (func (param f32 f32) (result f32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param f64) (result f64))) - (type $4 (func (param f32) (result f32))) - (type $5 (func (param i32) (result i32))) + (type $3 (func (param i64 i64) (result i64))) + (type $4 (func (param f64) (result f64))) + (type $5 (func (param f32) (result f32))) + (type $6 (func (param i32) (result i32))) (func $copysign64 (; 0 ;) (type $0) (param $0 f64) (param $1 f64) (result f64) (f64.reinterpret/i64 (i64.or @@ -53,315 +54,1070 @@ (get_local $1) ) ) - (func $nearest64 (; 4 ;) (type $3) (param $0 f64) (result f64) + (func $rotl64 (; 4 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_rotl_i64 + (get_local $0) + (get_local $1) + ) + ) + (func $rotr64 (; 5 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_rotr_i64 + (get_local $0) + (get_local $1) + ) + ) + (func $nearest64 (; 6 ;) (type $4) (param $0 f64) (result f64) (call $__wasm_nearest_f64 (get_local $0) ) ) - (func $nearest32 (; 5 ;) (type $4) (param $0 f32) (result f32) + (func $nearest32 (; 7 ;) (type $5) (param $0 f32) (result f32) (call $__wasm_nearest_f32 (get_local $0) ) ) - (func $trunc64 (; 6 ;) (type $3) (param $0 f64) (result f64) + (func $trunc64 (; 8 ;) (type $4) (param $0 f64) (result f64) (call $__wasm_trunc_f64 (get_local $0) ) ) - (func $trunc32 (; 7 ;) (type $4) (param $0 f32) (result f32) + (func $trunc32 (; 9 ;) (type $5) (param $0 f32) (result f32) (call $__wasm_trunc_f32 (get_local $0) ) ) - (func $popcnt32 (; 8 ;) (type $5) (param $0 i32) (result i32) + (func $popcnt32 (; 10 ;) (type $6) (param $0 i32) (result i32) (call $__wasm_popcnt_i32 (get_local $0) ) ) - (func $ctz32 (; 9 ;) (type $5) (param $0 i32) (result i32) + (func $ctz32 (; 11 ;) (type $6) (param $0 i32) (result i32) (call $__wasm_ctz_i32 (get_local $0) ) ) - (func $__wasm_nearest_f32 (; 10 ;) (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (set_local $1 - (f32.ceil - (get_local $0) - ) + (func $i64_sdiv (; 12 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_i64_sdiv + (get_local $0) + (get_local $1) ) - (set_local $2 - (f32.floor - (get_local $0) - ) + ) + (func $i64_udiv (; 13 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_i64_udiv + (get_local $0) + (get_local $1) ) - (set_local $3 - (f32.sub - (get_local $0) - (get_local $2) - ) + ) + (func $i64_srem (; 14 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_i64_srem + (get_local $0) + (get_local $1) ) - (if (result f32) - (f32.lt - (get_local $3) - (f32.const 0.5) + ) + (func $i64_urem (; 15 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_i64_urem + (get_local $0) + (get_local $1) + ) + ) + (func $i64_mul (; 16 ;) (type $3) (param $0 i64) (param $1 i64) (result i64) + (call $__wasm_i64_mul + (get_local $0) + (get_local $1) + ) + ) + (func $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE (; 17 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (local $var$2 i32) + (local $var$3 i32) + (local $var$4 i32) + (local $var$5 i32) + (local $var$6 i32) + (i64.or + (i64.shl + (i64.extend_u/i32 + (i32.add + (i32.add + (i32.add + (i32.add + (i32.mul + (tee_local $var$4 + (i32.shr_u + (tee_local $var$2 + (i32.wrap/i64 + (get_local $var$1) + ) + ) + (i32.const 16) + ) + ) + (tee_local $var$5 + (i32.shr_u + (tee_local $var$3 + (i32.wrap/i64 + (get_local $var$0) + ) + ) + (i32.const 16) + ) + ) + ) + (i32.mul + (get_local $var$2) + (i32.wrap/i64 + (i64.shr_u + (get_local $var$0) + (i64.const 32) + ) + ) + ) + ) + (i32.mul + (i32.wrap/i64 + (i64.shr_u + (get_local $var$1) + (i64.const 32) + ) + ) + (get_local $var$3) + ) + ) + (i32.shr_u + (tee_local $var$2 + (i32.add + (i32.shr_u + (tee_local $var$6 + (i32.mul + (tee_local $var$2 + (i32.and + (get_local $var$2) + (i32.const 65535) + ) + ) + (tee_local $var$3 + (i32.and + (get_local $var$3) + (i32.const 65535) + ) + ) + ) + ) + (i32.const 16) + ) + (i32.mul + (get_local $var$2) + (get_local $var$5) + ) + ) + ) + (i32.const 16) + ) + ) + (i32.shr_u + (tee_local $var$2 + (i32.add + (i32.and + (get_local $var$2) + (i32.const 65535) + ) + (i32.mul + (get_local $var$4) + (get_local $var$3) + ) + ) + ) + (i32.const 16) + ) + ) + ) + (i64.const 32) ) - (get_local $2) - (if (result f32) - (f32.gt - (get_local $3) - (f32.const 0.5) + (i64.extend_u/i32 + (i32.or + (i32.shl + (get_local $var$2) + (i32.const 16) + ) + (i32.and + (get_local $var$6) + (i32.const 65535) + ) ) - (get_local $1) - (block (result f32) - (set_local $4 - (f32.div - (get_local $2) - (f32.const 2) + ) + ) + ) + (func $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E (; 18 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (local $var$2 i64) + (i64.sub + (i64.xor + (call $__wasm_i64_udiv + (i64.sub + (i64.xor + (tee_local $var$2 + (i64.shr_s + (get_local $var$0) + (i64.const 63) + ) + ) + (get_local $var$0) ) + (get_local $var$2) ) - (if (result f32) - (f32.eq - (f32.sub - (get_local $4) - (f32.floor - (get_local $4) + (i64.sub + (i64.xor + (tee_local $var$2 + (i64.shr_s + (get_local $var$1) + (i64.const 63) ) ) - (f32.const 0) + (get_local $var$1) ) - (get_local $2) - (get_local $1) + (get_local $var$2) + ) + ) + (tee_local $var$0 + (i64.shr_s + (i64.xor + (get_local $var$1) + (get_local $var$0) + ) + (i64.const 63) ) ) ) + (get_local $var$0) ) ) - (func $__wasm_nearest_f64 (; 11 ;) (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (set_local $1 - (f64.ceil - (get_local $0) - ) - ) - (set_local $2 - (f64.floor - (get_local $0) - ) - ) - (set_local $3 - (f64.sub - (get_local $0) - (get_local $2) + (func $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E (; 19 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (local $var$2 i64) + (i64.sub + (i64.xor + (call $__wasm_i64_urem + (i64.sub + (i64.xor + (tee_local $var$2 + (i64.shr_s + (get_local $var$0) + (i64.const 63) + ) + ) + (get_local $var$0) + ) + (get_local $var$2) + ) + (i64.sub + (i64.xor + (tee_local $var$0 + (i64.shr_s + (get_local $var$1) + (i64.const 63) + ) + ) + (get_local $var$1) + ) + (get_local $var$0) + ) + ) + (get_local $var$2) ) + (get_local $var$2) ) - (if (result f64) - (f64.lt - (get_local $3) - (f64.const 0.5) - ) - (get_local $2) - (if (result f64) - (f64.gt - (get_local $3) - (f64.const 0.5) + ) + (func $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E (; 20 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (local $var$2 i32) + (local $var$3 i32) + (local $var$4 i32) + (local $var$5 i64) + (local $var$6 i64) + (local $var$7 i64) + (local $var$8 i64) + (block $label$1 + (block $label$2 + (block $label$3 + (block $label$4 + (block $label$5 + (block $label$6 + (block $label$7 + (block $label$8 + (block $label$9 + (block $label$10 + (block $label$11 + (if + (tee_local $var$2 + (i32.wrap/i64 + (i64.shr_u + (get_local $var$0) + (i64.const 32) + ) + ) + ) + (block $block + (br_if $label$11 + (i32.eqz + (tee_local $var$3 + (i32.wrap/i64 + (get_local $var$1) + ) + ) + ) + ) + (br_if $label$9 + (i32.eqz + (tee_local $var$4 + (i32.wrap/i64 + (i64.shr_u + (get_local $var$1) + (i64.const 32) + ) + ) + ) + ) + ) + (br_if $label$8 + (i32.le_u + (tee_local $var$2 + (i32.sub + (i32.clz + (get_local $var$4) + ) + (i32.clz + (get_local $var$2) + ) + ) + ) + (i32.const 31) + ) + ) + (br $label$2) + ) + ) + (br_if $label$2 + (i64.ge_u + (get_local $var$1) + (i64.const 4294967296) + ) + ) + (i64.store + (i32.const 1024) + (i64.extend_u/i32 + (i32.sub + (tee_local $var$2 + (i32.wrap/i64 + (get_local $var$0) + ) + ) + (i32.mul + (tee_local $var$2 + (i32.div_u + (get_local $var$2) + (tee_local $var$3 + (i32.wrap/i64 + (get_local $var$1) + ) + ) + ) + ) + (get_local $var$3) + ) + ) + ) + ) + (return + (i64.extend_u/i32 + (get_local $var$2) + ) + ) + ) + (set_local $var$3 + (i32.wrap/i64 + (i64.shr_u + (get_local $var$1) + (i64.const 32) + ) + ) + ) + (br_if $label$7 + (i32.eqz + (i32.wrap/i64 + (get_local $var$0) + ) + ) + ) + (br_if $label$6 + (i32.eqz + (get_local $var$3) + ) + ) + (br_if $label$6 + (i32.and + (tee_local $var$4 + (i32.add + (get_local $var$3) + (i32.const -1) + ) + ) + (get_local $var$3) + ) + ) + (i64.store + (i32.const 1024) + (i64.or + (i64.shl + (i64.extend_u/i32 + (i32.and + (get_local $var$4) + (get_local $var$2) + ) + ) + (i64.const 32) + ) + (i64.and + (get_local $var$0) + (i64.const 4294967295) + ) + ) + ) + (return + (i64.extend_u/i32 + (i32.shr_u + (get_local $var$2) + (i32.and + (call $__wasm_ctz_i32 + (get_local $var$3) + ) + (i32.const 31) + ) + ) + ) + ) + ) + (unreachable) + ) + (br_if $label$5 + (i32.eqz + (i32.and + (tee_local $var$4 + (i32.add + (get_local $var$3) + (i32.const -1) + ) + ) + (get_local $var$3) + ) + ) + ) + (set_local $var$3 + (i32.sub + (i32.const 0) + (tee_local $var$2 + (i32.sub + (i32.add + (i32.clz + (get_local $var$3) + ) + (i32.const 33) + ) + (i32.clz + (get_local $var$2) + ) + ) + ) + ) + ) + (br $label$3) + ) + (set_local $var$3 + (i32.sub + (i32.const 63) + (get_local $var$2) + ) + ) + (set_local $var$2 + (i32.add + (get_local $var$2) + (i32.const 1) + ) + ) + (br $label$3) + ) + (i64.store + (i32.const 1024) + (i64.shl + (i64.extend_u/i32 + (i32.sub + (get_local $var$2) + (i32.mul + (tee_local $var$4 + (i32.div_u + (get_local $var$2) + (get_local $var$3) + ) + ) + (get_local $var$3) + ) + ) + ) + (i64.const 32) + ) + ) + (return + (i64.extend_u/i32 + (get_local $var$4) + ) + ) + ) + (br_if $label$4 + (i32.lt_u + (tee_local $var$2 + (i32.sub + (i32.clz + (get_local $var$3) + ) + (i32.clz + (get_local $var$2) + ) + ) + ) + (i32.const 31) + ) + ) + (br $label$2) + ) + (i64.store + (i32.const 1024) + (i64.extend_u/i32 + (i32.and + (get_local $var$4) + (i32.wrap/i64 + (get_local $var$0) + ) + ) + ) + ) + (br_if $label$1 + (i32.eq + (get_local $var$3) + (i32.const 1) + ) + ) + (return + (i64.shr_u + (get_local $var$0) + (i64.extend_u/i32 + (call $__wasm_ctz_i32 + (get_local $var$3) + ) + ) + ) + ) + ) + (set_local $var$3 + (i32.sub + (i32.const 63) + (get_local $var$2) + ) + ) + (set_local $var$2 + (i32.add + (get_local $var$2) + (i32.const 1) + ) + ) ) - (get_local $1) - (block (result f64) - (set_local $4 - (f64.div - (get_local $2) - (f64.const 2) + (set_local $var$5 + (i64.shr_u + (get_local $var$0) + (i64.extend_u/i32 + (i32.and + (get_local $var$2) + (i32.const 63) + ) ) ) - (if (result f64) - (f64.eq - (f64.sub - (get_local $4) - (f64.floor - (get_local $4) + ) + (set_local $var$0 + (i64.shl + (get_local $var$0) + (i64.extend_u/i32 + (i32.and + (get_local $var$3) + (i32.const 63) + ) + ) + ) + ) + (block $label$13 + (if + (get_local $var$2) + (block $block3 + (set_local $var$8 + (i64.add + (get_local $var$1) + (i64.const -1) ) ) - (f64.const 0) + (loop $label$15 + (set_local $var$5 + (i64.sub + (tee_local $var$5 + (i64.or + (i64.shl + (get_local $var$5) + (i64.const 1) + ) + (i64.shr_u + (get_local $var$0) + (i64.const 63) + ) + ) + ) + (i64.and + (tee_local $var$6 + (i64.shr_s + (i64.sub + (get_local $var$8) + (get_local $var$5) + ) + (i64.const 63) + ) + ) + (get_local $var$1) + ) + ) + ) + (set_local $var$0 + (i64.or + (i64.shl + (get_local $var$0) + (i64.const 1) + ) + (get_local $var$7) + ) + ) + (set_local $var$7 + (tee_local $var$6 + (i64.and + (get_local $var$6) + (i64.const 1) + ) + ) + ) + (br_if $label$15 + (tee_local $var$2 + (i32.add + (get_local $var$2) + (i32.const -1) + ) + ) + ) + ) + (br $label$13) ) - (get_local $2) - (get_local $1) + ) + ) + (i64.store + (i32.const 1024) + (get_local $var$5) + ) + (return + (i64.or + (i64.shl + (get_local $var$0) + (i64.const 1) + ) + (get_local $var$6) ) ) ) - ) - ) - (func $__wasm_trunc_f32 (; 12 ;) (param $0 f32) (result f32) - (if (result f32) - (f32.lt - (get_local $0) - (f32.const 0) + (i64.store + (i32.const 1024) + (get_local $var$0) ) - (f32.ceil - (get_local $0) + (set_local $var$0 + (i64.const 0) ) - (f32.floor - (get_local $0) + ) + (get_local $var$0) + ) + (func $__wasm_ctz_i32 (; 21 ;) (param $var$0 i32) (result i32) + (if + (get_local $var$0) + (return + (i32.sub + (i32.const 31) + (i32.clz + (i32.xor + (i32.add + (get_local $var$0) + (i32.const -1) + ) + (get_local $var$0) + ) + ) + ) ) ) + (i32.const 32) ) - (func $__wasm_trunc_f64 (; 13 ;) (param $0 f64) (result f64) - (if (result f64) - (f64.lt - (get_local $0) - (f64.const 0) + (func $__wasm_i64_mul (; 22 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (call $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE + (get_local $var$0) + (get_local $var$1) + ) + ) + (func $__wasm_i64_sdiv (; 23 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (call $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E + (get_local $var$0) + (get_local $var$1) + ) + ) + (func $__wasm_i64_srem (; 24 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (call $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E + (get_local $var$0) + (get_local $var$1) + ) + ) + (func $__wasm_i64_udiv (; 25 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (call $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E + (get_local $var$0) + (get_local $var$1) + ) + ) + (func $__wasm_i64_urem (; 26 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (drop + (call $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E + (get_local $var$0) + (get_local $var$1) ) - (f64.ceil - (get_local $0) + ) + (i64.load + (i32.const 1024) + ) + ) + (func $__wasm_nearest_f32 (; 27 ;) (param $var$0 f32) (result f32) + (local $var$1 f32) + (local $var$2 f32) + (if + (i32.eqz + (f32.lt + (tee_local $var$2 + (f32.sub + (get_local $var$0) + (tee_local $var$1 + (f32.floor + (get_local $var$0) + ) + ) + ) + ) + (f32.const 0.5) + ) ) - (f64.floor - (get_local $0) + (block $block + (set_local $var$0 + (f32.ceil + (get_local $var$0) + ) + ) + (if + (f32.gt + (get_local $var$2) + (f32.const 0.5) + ) + (return + (get_local $var$0) + ) + ) + (set_local $var$1 + (select + (get_local $var$1) + (get_local $var$0) + (f32.eq + (f32.sub + (tee_local $var$2 + (f32.mul + (get_local $var$1) + (f32.const 0.5) + ) + ) + (f32.floor + (get_local $var$2) + ) + ) + (f32.const 0) + ) + ) + ) ) ) + (get_local $var$1) ) - (func $__wasm_ctz_i32 (; 14 ;) (param $x i32) (result i32) - (if (result i32) + (func $__wasm_nearest_f64 (; 28 ;) (param $var$0 f64) (result f64) + (local $var$1 f64) + (local $var$2 f64) + (if (i32.eqz - (get_local $x) + (f64.lt + (tee_local $var$2 + (f64.sub + (get_local $var$0) + (tee_local $var$1 + (f64.floor + (get_local $var$0) + ) + ) + ) + ) + (f64.const 0.5) + ) ) - (i32.const 32) - (i32.sub - (i32.const 31) - (i32.clz - (i32.xor - (get_local $x) - (i32.sub - (get_local $x) - (i32.const 1) + (block $block + (set_local $var$0 + (f64.ceil + (get_local $var$0) + ) + ) + (if + (f64.gt + (get_local $var$2) + (f64.const 0.5) + ) + (return + (get_local $var$0) + ) + ) + (set_local $var$1 + (select + (get_local $var$1) + (get_local $var$0) + (f64.eq + (f64.sub + (tee_local $var$2 + (f64.mul + (get_local $var$1) + (f64.const 0.5) + ) + ) + (f64.floor + (get_local $var$2) + ) + ) + (f64.const 0) ) ) ) ) ) + (get_local $var$1) ) - (func $__wasm_popcnt_i32 (; 15 ;) (param $x i32) (result i32) - (local $count i32) - (set_local $count - (i32.const 0) - ) - (block $b (result i32) - (loop $l + (func $__wasm_popcnt_i32 (; 29 ;) (param $var$0 i32) (result i32) + (local $var$1 i32) + (block $label$1 (result i32) + (loop $label$2 (drop - (br_if $b - (get_local $count) + (br_if $label$1 + (get_local $var$1) (i32.eqz - (get_local $x) + (get_local $var$0) ) ) ) - (set_local $x + (set_local $var$0 (i32.and - (get_local $x) + (get_local $var$0) (i32.sub - (get_local $x) + (get_local $var$0) (i32.const 1) ) ) ) - (set_local $count + (set_local $var$1 (i32.add - (get_local $count) + (get_local $var$1) (i32.const 1) ) ) - (br $l) + (br $label$2) ) ) ) - (func $__wasm_rotl_i32 (; 16 ;) (param $x i32) (param $k i32) (result i32) + (func $__wasm_rotl_i32 (; 30 ;) (param $var$0 i32) (param $var$1 i32) (result i32) + (local $var$2 i32) (i32.or (i32.shl (i32.and (i32.shr_u (i32.const -1) - (i32.and - (get_local $k) - (i32.const 31) + (tee_local $var$2 + (i32.and + (get_local $var$1) + (i32.const 31) + ) ) ) - (get_local $x) - ) - (i32.and - (get_local $k) - (i32.const 31) + (get_local $var$0) ) + (get_local $var$2) ) (i32.shr_u (i32.and (i32.shl (i32.const -1) - (i32.sub - (i32.const 32) + (tee_local $var$1 (i32.and - (get_local $k) + (i32.sub + (i32.const 0) + (get_local $var$1) + ) (i32.const 31) ) ) ) - (get_local $x) + (get_local $var$0) ) - (i32.sub - (i32.const 32) - (i32.and - (get_local $k) - (i32.const 31) + (get_local $var$1) + ) + ) + ) + (func $__wasm_rotl_i64 (; 31 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (local $var$2 i64) + (i64.or + (i64.shl + (i64.and + (i64.shr_u + (i64.const -1) + (tee_local $var$2 + (i64.and + (get_local $var$1) + (i64.const 63) + ) + ) ) + (get_local $var$0) ) + (get_local $var$2) + ) + (i64.shr_u + (i64.and + (i64.shl + (i64.const -1) + (tee_local $var$1 + (i64.and + (i64.sub + (i64.const 0) + (get_local $var$1) + ) + (i64.const 63) + ) + ) + ) + (get_local $var$0) + ) + (get_local $var$1) ) ) ) - (func $__wasm_rotr_i32 (; 17 ;) (param $x i32) (param $k i32) (result i32) + (func $__wasm_rotr_i32 (; 32 ;) (param $var$0 i32) (param $var$1 i32) (result i32) + (local $var$2 i32) (i32.or (i32.shr_u (i32.and (i32.shl (i32.const -1) - (i32.and - (get_local $k) - (i32.const 31) + (tee_local $var$2 + (i32.and + (get_local $var$1) + (i32.const 31) + ) ) ) - (get_local $x) - ) - (i32.and - (get_local $k) - (i32.const 31) + (get_local $var$0) ) + (get_local $var$2) ) (i32.shl (i32.and (i32.shr_u (i32.const -1) - (i32.sub - (i32.const 32) + (tee_local $var$1 (i32.and - (get_local $k) + (i32.sub + (i32.const 0) + (get_local $var$1) + ) (i32.const 31) ) ) ) - (get_local $x) + (get_local $var$0) ) - (i32.sub - (i32.const 32) - (i32.and - (get_local $k) - (i32.const 31) + (get_local $var$1) + ) + ) + ) + (func $__wasm_rotr_i64 (; 33 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (local $var$2 i64) + (i64.or + (i64.shr_u + (i64.and + (i64.shl + (i64.const -1) + (tee_local $var$2 + (i64.and + (get_local $var$1) + (i64.const 63) + ) + ) + ) + (get_local $var$0) + ) + (get_local $var$2) + ) + (i64.shl + (i64.and + (i64.shr_u + (i64.const -1) + (tee_local $var$1 + (i64.and + (i64.sub + (i64.const 0) + (get_local $var$1) + ) + (i64.const 63) + ) + ) ) + (get_local $var$0) ) + (get_local $var$1) + ) + ) + ) + (func $__wasm_trunc_f32 (; 34 ;) (param $var$0 f32) (result f32) + (select + (f32.ceil + (get_local $var$0) + ) + (f32.floor + (get_local $var$0) + ) + (f32.lt + (get_local $var$0) + (f32.const 0) + ) + ) + ) + (func $__wasm_trunc_f64 (; 35 ;) (param $var$0 f64) (result f64) + (select + (f64.ceil + (get_local $var$0) + ) + (f64.floor + (get_local $var$0) + ) + (f64.lt + (get_local $var$0) + (f64.const 0) ) ) ) diff --git a/test/passes/remove-non-js-ops.wast b/test/passes/remove-non-js-ops.wast index 884fe367d..0fd4958e0 100644 --- a/test/passes/remove-non-js-ops.wast +++ b/test/passes/remove-non-js-ops.wast @@ -8,6 +8,10 @@ (i32.rotl (get_local $0) (get_local $1))) (func $rotr32 (param $0 i32) (param $1 i32) (result i32) (i32.rotr (get_local $0) (get_local $1))) + (func $rotl64 (param $0 i64) (param $1 i64) (result i64) + (i64.rotl (get_local $0) (get_local $1))) + (func $rotr64 (param $0 i64) (param $1 i64) (result i64) + (i64.rotr (get_local $0) (get_local $1))) (func $nearest64 (param $0 f64) (result f64) (f64.nearest (get_local $0))) @@ -23,5 +27,16 @@ (i32.popcnt (get_local $0))) (func $ctz32 (param $0 i32) (result i32) (i32.ctz (get_local $0))) + + (func $i64_sdiv (param $0 i64) (param $1 i64) (result i64) + (i64.div_s (get_local $0) (get_local $1))) + (func $i64_udiv (param $0 i64) (param $1 i64) (result i64) + (i64.div_u (get_local $0) (get_local $1))) + (func $i64_srem (param $0 i64) (param $1 i64) (result i64) + (i64.rem_s (get_local $0) (get_local $1))) + (func $i64_urem (param $0 i64) (param $1 i64) (result i64) + (i64.rem_u (get_local $0) (get_local $1))) + (func $i64_mul (param $0 i64) (param $1 i64) (result i64) + (i64.mul (get_local $0) (get_local $1))) ) |