mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-25 04:31:43 +00:00
Fix unsigned ops; Fix parenthesized conversion; Minor restructure
This commit is contained in:
@ -48,7 +48,7 @@
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $0)
|
||||
(get_global $game-of-life/h)
|
||||
)
|
||||
@ -81,7 +81,7 @@
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $1)
|
||||
(get_global $game-of-life/w)
|
||||
)
|
||||
@ -208,13 +208,13 @@
|
||||
(if
|
||||
(if (result i32)
|
||||
(tee_local $3
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $2)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
(get_local $3)
|
||||
(i32.gt_s
|
||||
(i32.gt_u
|
||||
(get_local $2)
|
||||
(i32.const 3)
|
||||
)
|
||||
|
@ -63,7 +63,7 @@
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $0)
|
||||
(get_global $game-of-life/h)
|
||||
)
|
||||
@ -101,7 +101,7 @@
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $3)
|
||||
(get_global $game-of-life/w)
|
||||
)
|
||||
@ -237,13 +237,13 @@
|
||||
(if
|
||||
(if (result i32)
|
||||
(tee_local $11
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $8)
|
||||
(i32.const 2)
|
||||
)
|
||||
)
|
||||
(get_local $11)
|
||||
(i32.gt_s
|
||||
(i32.gt_u
|
||||
(get_local $8)
|
||||
(i32.const 3)
|
||||
)
|
||||
|
301
tests/compiler/i64.optimized.wast
Normal file
301
tests/compiler/i64.optimized.wast
Normal file
@ -0,0 +1,301 @@
|
||||
(module
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(global $i64/lo (mut i32) (i32.const 0))
|
||||
(global $i64/hi (mut i32) (i32.const 0))
|
||||
(memory $0 1)
|
||||
(export "add" (func $i64/add))
|
||||
(export "sub" (func $i64/sub))
|
||||
(export "mul" (func $i64/mul))
|
||||
(export "div_s" (func $i64/div_s))
|
||||
(export "div_u" (func $i64/div_u))
|
||||
(export "rem_s" (func $i64/rem_s))
|
||||
(export "rem_u" (func $i64/rem_u))
|
||||
(export "memory" (memory $0))
|
||||
(func $i64/add (; 0 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.add
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/sub (; 1 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.sub
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/mul (; 2 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.mul
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/div_s (; 3 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.div_s
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/div_u (; 4 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.div_u
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/rem_s (; 5 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.rem_s
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/rem_u (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(tee_local $4
|
||||
(i64.rem_u
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
44
tests/compiler/i64.ts
Normal file
44
tests/compiler/i64.ts
Normal file
@ -0,0 +1,44 @@
|
||||
let lo: u32;
|
||||
let hi: u32;
|
||||
|
||||
export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: i64 = (<i64>loLeft | <i64>hiLeft << 32) + (<i64>loRight | <i64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: i64 = (<i64>loLeft | <i64>hiLeft << 32) - (<i64>loRight | <i64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: i64 = (<i64>loLeft | <i64>hiLeft << 32) * (<i64>loRight | <i64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: i64 = (<i64>loLeft | <i64>hiLeft << 32) / (<i64>loRight | <i64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) / (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: i64 = (<i64>loLeft | <i64>hiLeft << 32) % (<i64>loRight | <i64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) % (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
369
tests/compiler/i64.wast
Normal file
369
tests/compiler/i64.wast
Normal file
@ -0,0 +1,369 @@
|
||||
(module
|
||||
(type $iiiiv (func (param i32 i32 i32 i32)))
|
||||
(global $i64/lo (mut i32) (i32.const 0))
|
||||
(global $i64/hi (mut i32) (i32.const 0))
|
||||
(global $HEAP_START i32 (i32.const 4))
|
||||
(memory $0 1)
|
||||
(export "add" (func $i64/add))
|
||||
(export "sub" (func $i64/sub))
|
||||
(export "mul" (func $i64/mul))
|
||||
(export "div_s" (func $i64/div_s))
|
||||
(export "div_u" (func $i64/div_u))
|
||||
(export "rem_s" (func $i64/rem_s))
|
||||
(export "rem_u" (func $i64/rem_u))
|
||||
(export "memory" (memory $0))
|
||||
(func $i64/add (; 0 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.add
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/sub (; 1 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.sub
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/mul (; 2 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.mul
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/div_s (; 3 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.div_s
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/div_u (; 4 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.div_u
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/rem_s (; 5 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.rem_s
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_s/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_s/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $i64/rem_u (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
(block
|
||||
(set_local $4
|
||||
(i64.rem_u
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $0)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $1)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
(i64.or
|
||||
(i64.extend_u/i32
|
||||
(get_local $2)
|
||||
)
|
||||
(i64.shl
|
||||
(i64.extend_u/i32
|
||||
(get_local $3)
|
||||
)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set_global $i64/lo
|
||||
(i32.wrap/i64
|
||||
(get_local $4)
|
||||
)
|
||||
)
|
||||
(set_global $i64/hi
|
||||
(i32.wrap/i64
|
||||
(i64.shr_u
|
||||
(get_local $4)
|
||||
(i64.const 32)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
nearest
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
i64/lo
|
||||
i64/hi
|
||||
i64/add
|
||||
i64/sub
|
||||
i64/mul
|
||||
i64/div_s
|
||||
i64/div_u
|
||||
i64/rem_s
|
||||
i64/rem_u
|
||||
[program.exports]
|
||||
i64/add
|
||||
i64/sub
|
||||
i64/mul
|
||||
i64/div_s
|
||||
i64/div_u
|
||||
i64/rem_s
|
||||
i64/rem_u
|
||||
;)
|
@ -19,7 +19,7 @@
|
||||
(tee_local $3
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.rem_s
|
||||
(i32.rem_u
|
||||
(get_local $1)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -62,7 +62,7 @@
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(i32.rem_s
|
||||
(i32.rem_u
|
||||
(get_local $4)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -70,7 +70,7 @@
|
||||
(block
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 16)
|
||||
)
|
||||
@ -247,7 +247,7 @@
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
@ -258,7 +258,7 @@
|
||||
(block $tablify|0
|
||||
(br_table $case0|2 $case1|2 $case2|2 $tablify|0
|
||||
(i32.sub
|
||||
(i32.rem_s
|
||||
(i32.rem_u
|
||||
(get_local $4)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -353,7 +353,7 @@
|
||||
)
|
||||
(loop $continue|3
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 17)
|
||||
)
|
||||
@ -532,7 +532,7 @@
|
||||
)
|
||||
(loop $continue|4
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 18)
|
||||
)
|
||||
@ -687,7 +687,7 @@
|
||||
)
|
||||
(loop $continue|5
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 19)
|
||||
)
|
||||
|
@ -110,7 +110,7 @@
|
||||
(tee_local $7
|
||||
(get_local $2)
|
||||
)
|
||||
(i32.rem_s
|
||||
(i32.rem_u
|
||||
(get_local $4)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -168,7 +168,7 @@
|
||||
)
|
||||
(if
|
||||
(i32.eq
|
||||
(i32.rem_s
|
||||
(i32.rem_u
|
||||
(get_local $3)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -178,7 +178,7 @@
|
||||
(block $break|1
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 16)
|
||||
)
|
||||
@ -380,7 +380,7 @@
|
||||
)
|
||||
)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
@ -389,7 +389,7 @@
|
||||
(block $case1|2
|
||||
(block $case0|2
|
||||
(set_local $13
|
||||
(i32.rem_s
|
||||
(i32.rem_u
|
||||
(get_local $3)
|
||||
(i32.const 4)
|
||||
)
|
||||
@ -512,7 +512,7 @@
|
||||
(block $break|3
|
||||
(loop $continue|3
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 17)
|
||||
)
|
||||
@ -707,7 +707,7 @@
|
||||
(block $break|4
|
||||
(loop $continue|4
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 18)
|
||||
)
|
||||
@ -874,7 +874,7 @@
|
||||
(block $break|5
|
||||
(loop $continue|5
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 19)
|
||||
)
|
||||
|
@ -32,14 +32,14 @@
|
||||
)
|
||||
(func $tlsf/control$set_block (; 2 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
@ -133,7 +133,7 @@
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -151,7 +151,7 @@
|
||||
)
|
||||
(block
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $10)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -178,7 +178,7 @@
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
|
@ -59,7 +59,7 @@
|
||||
)
|
||||
(func $tlsf/control$set_sl_bitmap (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -81,14 +81,14 @@
|
||||
)
|
||||
(func $tlsf/control$set_block (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
(unreachable)
|
||||
)
|
||||
(if
|
||||
(i32.ge_s
|
||||
(i32.ge_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
@ -134,7 +134,7 @@
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -149,7 +149,7 @@
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
|
@ -91,7 +91,7 @@
|
||||
(func $tlsf/control$set_sl_bitmap (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
|
||||
(if
|
||||
(i32.eqz
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -115,7 +115,7 @@
|
||||
(func $tlsf/control$set_block (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(if
|
||||
(i32.eqz
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -124,7 +124,7 @@
|
||||
)
|
||||
(if
|
||||
(i32.eqz
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
@ -174,7 +174,7 @@
|
||||
)
|
||||
(loop $continue|0
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $1)
|
||||
(i32.const 23)
|
||||
)
|
||||
@ -193,7 +193,7 @@
|
||||
)
|
||||
(loop $continue|1
|
||||
(if
|
||||
(i32.lt_s
|
||||
(i32.lt_u
|
||||
(get_local $2)
|
||||
(i32.const 32)
|
||||
)
|
||||
|
Reference in New Issue
Block a user