mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-18 17:31:29 +00:00
Move some stuff around, update README
This commit is contained in:
@ -1,132 +0,0 @@
|
||||
@assemblyscript/i64
|
||||
===================
|
||||
|
||||
Exposes WebAssembly's i64 operations to JavaScript using 32-bit integers (low and high bits).
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
```
|
||||
$> npm install @assemblyscript/i64
|
||||
```
|
||||
|
||||
```ts
|
||||
import * as i64 from "@assemblyscript/i64";
|
||||
|
||||
i64.div(10, 0, 2, 0);
|
||||
|
||||
console.log("result: lo=" + i64.getLo() + ", hi=" + i64.getHi());
|
||||
```
|
||||
|
||||
API
|
||||
---
|
||||
|
||||
**Note** that `u32` is just an alias of `number` in JavaScript with values in 32-bit integer range.
|
||||
|
||||
* **getLo**(): `u32`<br />
|
||||
Gets the low 32 bits of the computed 64-bit value.
|
||||
|
||||
* **getHi**(): `u32`<br />
|
||||
Gets the high 32 bits of the computed 64-bit value.
|
||||
|
||||
* **clz**(loLeft: `u32`, hiLeft: `u32`): `void`<br />
|
||||
Performs the sign-agnostic count leading zero bits operation. All zero bits are considered leading if the value is zero.
|
||||
|
||||
* **ctz**(loLeft: `u32`, hiLeft: `u32`): `void`<br />
|
||||
Performs the sign-agnostic count tailing zero bits operation. All zero bits are considered trailing if the value is zero.
|
||||
|
||||
* **popcnt**(loLeft: `u32`, hiLeft: `u32`): `void`<br />
|
||||
Performs the sign-agnostic count number of one bits operation.
|
||||
|
||||
* **eqz**(loLeft: `u32`, hiLeft: `u32`): `void`<br />
|
||||
Performs the sign-agnostic equals-zero operation.
|
||||
|
||||
* **add**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic addition operation.
|
||||
|
||||
* **sub**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic subtraction operation.
|
||||
|
||||
* **mul**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic multiplication operation.
|
||||
|
||||
* **div_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed division operation.
|
||||
|
||||
* **div_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned division operation.
|
||||
|
||||
* **rem_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed remainder operation.
|
||||
|
||||
* **rem_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned remainder operation.
|
||||
|
||||
* **and**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic bitwise and operation.
|
||||
|
||||
* **or**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic bitwise or operation.
|
||||
|
||||
* **xor**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic bitwise xor operation.
|
||||
|
||||
* **shl**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic bitwise shift left operation.
|
||||
|
||||
* **shr_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed bitwise shift right operation.
|
||||
|
||||
* **shr_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned bitwise shift right operation.
|
||||
|
||||
* **rotl**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic rotate left operation.
|
||||
|
||||
* **rotr**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic rotate right operation.
|
||||
|
||||
* **eq**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic compare equal operation.
|
||||
|
||||
* **ne**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the sign-agnostic compare unequal operation.
|
||||
|
||||
* **lt_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed less than operation.
|
||||
|
||||
* **lt_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned less than operation.
|
||||
|
||||
* **le_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed less than or equal operation.
|
||||
|
||||
* **le_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned less than or equal operation.
|
||||
|
||||
* **gt_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed greater than operation.
|
||||
|
||||
* **gt_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned greater than operation.
|
||||
|
||||
* **ge_s**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the signed greater than or equal operation.
|
||||
|
||||
* **ge_u**(loLeft: `u32`, hiLeft: `u32`, loRight: `u32`, hiRight: `u32`): `void`<br />
|
||||
Performs the unsigned greater than or equal operation.
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
To build [assembly/i64.ts](./assembly/i64.ts) to an untouched and an optimized `.wasm` including their respective `.wat` representations, run:
|
||||
|
||||
```
|
||||
$> npm run asbuild
|
||||
```
|
||||
|
||||
Afterwards, to run the included [test](./tests/index.js):
|
||||
|
||||
```
|
||||
$> npm test
|
||||
```
|
@ -1,193 +0,0 @@
|
||||
var lo: u32, hi: u32;
|
||||
|
||||
export function getLo(): u32 {
|
||||
return lo;
|
||||
}
|
||||
|
||||
export function getHi(): u32 {
|
||||
return hi;
|
||||
}
|
||||
|
||||
import { clz as builtin_clz } from "builtins";
|
||||
|
||||
export function clz(loLeft: u32, hiLeft: u32): void {
|
||||
var ret = builtin_clz<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
import { ctz as builtin_ctz } from "builtins";
|
||||
|
||||
export function ctz(loLeft: u32, hiLeft: u32): void {
|
||||
var ret = builtin_ctz<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
import { popcnt as builtin_popcnt } from "builtins";
|
||||
|
||||
export function popcnt(loLeft: u32, hiLeft: u32): void {
|
||||
var ret = builtin_popcnt<u64>(<u64>loLeft | <u64>hiLeft << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function eqz(loLeft: u32, hiLeft: u32): void {
|
||||
var ret: bool = !(<u64>loLeft | <u64>hiLeft << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) + (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >> 32);
|
||||
}
|
||||
|
||||
export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) - (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >> 32);
|
||||
}
|
||||
|
||||
export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) * (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >> 32);
|
||||
}
|
||||
|
||||
export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) / <i64>(<u64>loRight | <u64>hiRight << 32));
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >> 32);
|
||||
}
|
||||
|
||||
export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<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 {
|
||||
var ret = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) % <i64>(<u64>loRight | <u64>hiRight << 32));
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >> 32);
|
||||
}
|
||||
|
||||
export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) % (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) & (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) | (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) ^ (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) << (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) >> <i64>(<u64>loRight | <u64>hiRight << 32));
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = (<u64>loLeft | <u64>hiLeft << 32) >> (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
import { rotl as builtin_rotl } from "builtins";
|
||||
|
||||
export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = builtin_rotl<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
import { rotr as builtin_rotr } from "builtins";
|
||||
|
||||
export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret = builtin_rotr<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = <u32>(ret >>> 32);
|
||||
}
|
||||
|
||||
export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) == (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) != (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) < <i64>(<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) < (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) <= <i64>(<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) <= (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) > <i64>(<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) > (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) >= <i64>(<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
||||
|
||||
export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
|
||||
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) >= (<u64>loRight | <u64>hiRight << 32);
|
||||
lo = <u32>ret;
|
||||
hi = 0;
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"extends": "../../../std/assembly.json",
|
||||
"include": [
|
||||
"./**/*.ts"
|
||||
]
|
||||
}
|
3
examples/i64-polyfill/build/.gitignore
vendored
3
examples/i64-polyfill/build/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
*.wasm
|
||||
*.wasm.map
|
||||
*.asm.js
|
43
examples/i64-polyfill/build/optimized.d.ts
vendored
43
examples/i64-polyfill/build/optimized.d.ts
vendored
@ -1,43 +0,0 @@
|
||||
declare module ASModule {
|
||||
type i8 = number;
|
||||
type i16 = number;
|
||||
type i32 = number;
|
||||
type u8 = number;
|
||||
type u16 = number;
|
||||
type u32 = number;
|
||||
type f32 = number;
|
||||
type f64 = number;
|
||||
type bool = any;
|
||||
function getLo(): u32;
|
||||
function getHi(): u32;
|
||||
function clz(loLeft: u32, hiLeft: u32): void;
|
||||
function ctz(loLeft: u32, hiLeft: u32): void;
|
||||
function popcnt(loLeft: u32, hiLeft: u32): void;
|
||||
function eqz(loLeft: u32, hiLeft: u32): void;
|
||||
function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
}
|
||||
export default ASModule;
|
@ -1,695 +0,0 @@
|
||||
(module
|
||||
(type $FUNCSIG$i (func (result i32)))
|
||||
(type $FUNCSIG$vii (func (param i32 i32)))
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(memory $0 0)
|
||||
(global $assembly/i64/lo (mut i32) (i32.const 0))
|
||||
(global $assembly/i64/hi (mut i32) (i32.const 0))
|
||||
(export "memory" (memory $0))
|
||||
(export "getLo" (func $assembly/i64/getLo))
|
||||
(export "getHi" (func $assembly/i64/getHi))
|
||||
(export "clz" (func $assembly/i64/clz))
|
||||
(export "ctz" (func $assembly/i64/ctz))
|
||||
(export "popcnt" (func $assembly/i64/popcnt))
|
||||
(export "eqz" (func $assembly/i64/eqz))
|
||||
(export "add" (func $assembly/i64/add))
|
||||
(export "sub" (func $assembly/i64/sub))
|
||||
(export "mul" (func $assembly/i64/mul))
|
||||
(export "div_s" (func $assembly/i64/div_s))
|
||||
(export "div_u" (func $assembly/i64/div_u))
|
||||
(export "rem_s" (func $assembly/i64/rem_s))
|
||||
(export "rem_u" (func $assembly/i64/rem_u))
|
||||
(export "and" (func $assembly/i64/and))
|
||||
(export "or" (func $assembly/i64/or))
|
||||
(export "xor" (func $assembly/i64/xor))
|
||||
(export "shl" (func $assembly/i64/shl))
|
||||
(export "shr_s" (func $assembly/i64/shr_s))
|
||||
(export "shr_u" (func $assembly/i64/shr_u))
|
||||
(export "rotl" (func $assembly/i64/rotl))
|
||||
(export "rotr" (func $assembly/i64/rotr))
|
||||
(export "eq" (func $assembly/i64/eq))
|
||||
(export "ne" (func $assembly/i64/ne))
|
||||
(export "lt_s" (func $assembly/i64/lt_s))
|
||||
(export "lt_u" (func $assembly/i64/lt_u))
|
||||
(export "le_s" (func $assembly/i64/le_s))
|
||||
(export "le_u" (func $assembly/i64/le_u))
|
||||
(export "gt_s" (func $assembly/i64/gt_s))
|
||||
(export "gt_u" (func $assembly/i64/gt_u))
|
||||
(export "ge_s" (func $assembly/i64/ge_s))
|
||||
(export "ge_u" (func $assembly/i64/ge_u))
|
||||
(func $assembly/i64/getLo (; 0 ;) (type $FUNCSIG$i) (result i32)
|
||||
global.get $assembly/i64/lo
|
||||
)
|
||||
(func $assembly/i64/getHi (; 1 ;) (type $FUNCSIG$i) (result i32)
|
||||
global.get $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/clz (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.clz
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ctz (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ctz
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/popcnt (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.popcnt
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/eqz (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.eqz
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/add (; 6 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.add
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/sub (; 7 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.sub
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/mul (; 8 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.mul
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/div_s (; 9 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.div_s
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/div_u (; 10 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.div_u
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rem_s (; 11 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rem_s
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rem_u (; 12 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rem_u
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/and (; 13 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.and
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/or (; 14 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.or
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/xor (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.xor
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/shl (; 16 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.shl
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/shr_s (; 17 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.shr_s
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/shr_u (; 18 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.shr_u
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rotl (; 19 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rotl
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rotr (; 20 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rotr
|
||||
local.tee $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/eq (; 21 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.eq
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ne (; 22 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ne
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/lt_s (; 23 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.lt_s
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/lt_u (; 24 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.lt_u
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/le_s (; 25 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.le_s
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/le_u (; 26 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.le_u
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/gt_s (; 27 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.gt_s
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/gt_u (; 28 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.gt_u
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ge_s (; 29 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ge_s
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ge_u (; 30 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ge_u
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $null (; 31 ;) (type $FUNCSIG$v)
|
||||
nop
|
||||
)
|
||||
)
|
@ -1,753 +0,0 @@
|
||||
(module
|
||||
(type $FUNCSIG$i (func (result i32)))
|
||||
(type $FUNCSIG$vii (func (param i32 i32)))
|
||||
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
|
||||
(type $FUNCSIG$v (func))
|
||||
(memory $0 0)
|
||||
(table $0 1 funcref)
|
||||
(elem (i32.const 0) $null)
|
||||
(global $assembly/i64/lo (mut i32) (i32.const 0))
|
||||
(global $assembly/i64/hi (mut i32) (i32.const 0))
|
||||
(export "memory" (memory $0))
|
||||
(export "getLo" (func $assembly/i64/getLo))
|
||||
(export "getHi" (func $assembly/i64/getHi))
|
||||
(export "clz" (func $assembly/i64/clz))
|
||||
(export "ctz" (func $assembly/i64/ctz))
|
||||
(export "popcnt" (func $assembly/i64/popcnt))
|
||||
(export "eqz" (func $assembly/i64/eqz))
|
||||
(export "add" (func $assembly/i64/add))
|
||||
(export "sub" (func $assembly/i64/sub))
|
||||
(export "mul" (func $assembly/i64/mul))
|
||||
(export "div_s" (func $assembly/i64/div_s))
|
||||
(export "div_u" (func $assembly/i64/div_u))
|
||||
(export "rem_s" (func $assembly/i64/rem_s))
|
||||
(export "rem_u" (func $assembly/i64/rem_u))
|
||||
(export "and" (func $assembly/i64/and))
|
||||
(export "or" (func $assembly/i64/or))
|
||||
(export "xor" (func $assembly/i64/xor))
|
||||
(export "shl" (func $assembly/i64/shl))
|
||||
(export "shr_s" (func $assembly/i64/shr_s))
|
||||
(export "shr_u" (func $assembly/i64/shr_u))
|
||||
(export "rotl" (func $assembly/i64/rotl))
|
||||
(export "rotr" (func $assembly/i64/rotr))
|
||||
(export "eq" (func $assembly/i64/eq))
|
||||
(export "ne" (func $assembly/i64/ne))
|
||||
(export "lt_s" (func $assembly/i64/lt_s))
|
||||
(export "lt_u" (func $assembly/i64/lt_u))
|
||||
(export "le_s" (func $assembly/i64/le_s))
|
||||
(export "le_u" (func $assembly/i64/le_u))
|
||||
(export "gt_s" (func $assembly/i64/gt_s))
|
||||
(export "gt_u" (func $assembly/i64/gt_u))
|
||||
(export "ge_s" (func $assembly/i64/ge_s))
|
||||
(export "ge_u" (func $assembly/i64/ge_u))
|
||||
(func $assembly/i64/getLo (; 0 ;) (type $FUNCSIG$i) (result i32)
|
||||
global.get $assembly/i64/lo
|
||||
)
|
||||
(func $assembly/i64/getHi (; 1 ;) (type $FUNCSIG$i) (result i32)
|
||||
global.get $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/clz (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.clz
|
||||
local.set $2
|
||||
local.get $2
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ctz (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ctz
|
||||
local.set $2
|
||||
local.get $2
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/popcnt (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.popcnt
|
||||
local.set $2
|
||||
local.get $2
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/eqz (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
|
||||
(local $2 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.eqz
|
||||
local.set $2
|
||||
local.get $2
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/add (; 6 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.add
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/sub (; 7 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.sub
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/mul (; 8 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.mul
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/div_s (; 9 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.div_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/div_u (; 10 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.div_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rem_s (; 11 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rem_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rem_u (; 12 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rem_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/and (; 13 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.and
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/or (; 14 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.or
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/xor (; 15 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.xor
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/shl (; 16 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.shl
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/shr_s (; 17 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.shr_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/shr_u (; 18 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.shr_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rotl (; 19 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rotl
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/rotr (; 20 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i64)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.rotr
|
||||
local.set $4
|
||||
local.get $4
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/lo
|
||||
local.get $4
|
||||
i64.const 32
|
||||
i64.shr_u
|
||||
i32.wrap_i64
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/eq (; 21 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.eq
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ne (; 22 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ne
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/lt_s (; 23 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.lt_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/lt_u (; 24 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.lt_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/le_s (; 25 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.le_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/le_u (; 26 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.le_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/gt_s (; 27 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.gt_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/gt_u (; 28 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.gt_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ge_s (; 29 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ge_s
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $assembly/i64/ge_u (; 30 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
|
||||
(local $4 i32)
|
||||
local.get $0
|
||||
i64.extend_i32_u
|
||||
local.get $1
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
local.get $2
|
||||
i64.extend_i32_u
|
||||
local.get $3
|
||||
i64.extend_i32_u
|
||||
i64.const 32
|
||||
i64.shl
|
||||
i64.or
|
||||
i64.ge_u
|
||||
local.set $4
|
||||
local.get $4
|
||||
global.set $assembly/i64/lo
|
||||
i32.const 0
|
||||
global.set $assembly/i64/hi
|
||||
)
|
||||
(func $null (; 31 ;) (type $FUNCSIG$v)
|
||||
)
|
||||
)
|
63
examples/i64-polyfill/index.d.ts
vendored
63
examples/i64-polyfill/index.d.ts
vendored
@ -1,63 +0,0 @@
|
||||
type u32 = number;
|
||||
/** Gets the low 32 bits of the computed 64-bit value. */
|
||||
export function getLo(): u32;
|
||||
/** Gets the high 32 bits of the computed 64-bit value. */
|
||||
export function getHi(): u32;
|
||||
/** Performs the sign-agnostic count leading zero bits operation. All zero bits are considered leading if the value is zero. */
|
||||
export function clz(loLeft: u32, hiLeft: u32): void;
|
||||
/** Performs the sign-agnostic count tailing zero bits operation. All zero bits are considered trailing if the value is zero. */
|
||||
export function ctz(loLeft: u32, hiLeft: u32): void;
|
||||
/** Performs the sign-agnostic count number of one bits operation. */
|
||||
export function popcnt(loLeft: u32, hiLeft: u32): void;
|
||||
/** Performs the sign-agnostic equals-zero operation. */
|
||||
export function eqz(loLeft: u32, hiLeft: u32): void;
|
||||
/** Performs the sign-agnostic addition operation. */
|
||||
export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic subtraction operation. */
|
||||
export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic multiplication operation. */
|
||||
export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed division operation. */
|
||||
export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned division operation. */
|
||||
export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed remainder operation. */
|
||||
export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned remainder operation. */
|
||||
export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic bitwise and operation. */
|
||||
export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic bitwise or operation. */
|
||||
export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic bitwise xor operation. */
|
||||
export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic bitwise shift left operation. */
|
||||
export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed bitwise shift right operation. */
|
||||
export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned bitwise shift right operation. */
|
||||
export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic rotate left operation. */
|
||||
export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic rotate right operation. */
|
||||
export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic compare equal operation. */
|
||||
export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the sign-agnostic compare unequal operation. */
|
||||
export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed less than operation. */
|
||||
export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned less than operation. */
|
||||
export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed less than or equal operation. */
|
||||
export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned less than or equal operation. */
|
||||
export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed greater than operation.*/
|
||||
export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned greater than operation.*/
|
||||
export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the signed greater than or equal operation. */
|
||||
export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
||||
/** Performs the unsigned greater than or equal operation. */
|
||||
export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void;
|
@ -1,8 +0,0 @@
|
||||
var fs = require("fs");
|
||||
|
||||
// Instantiate the module
|
||||
var mod = new WebAssembly.Module(fs.readFileSync(__dirname + "/build/optimized.wasm"));
|
||||
var ins = new WebAssembly.Instance(mod, { /* no imports */ });
|
||||
|
||||
// Export its exports
|
||||
module.exports = ins.exports;
|
@ -1,32 +0,0 @@
|
||||
{
|
||||
"name": "@assemblyscript/i64",
|
||||
"version": "1.0.0",
|
||||
"author": "Daniel Wirtz <dcode+assemblyscript@dcode.io>",
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/AssemblyScript/assemblyscript.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/AssemblyScript/assemblyscript/issues"
|
||||
},
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"scripts": {
|
||||
"asbuild": "npm run asbuild:untouched && npm run asbuild:optimized",
|
||||
"asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --runtime none --validate --sourceMap --debug --measure",
|
||||
"asbuild:optimized": "asc assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts -O3 --runtime none --validate --sourceMap --measure",
|
||||
"test": "node tests"
|
||||
},
|
||||
"files": [
|
||||
"assembly/",
|
||||
"build/optimized.wasm",
|
||||
"build/optimized.wasm.map",
|
||||
"index.d.ts",
|
||||
"index.js",
|
||||
"README.md"
|
||||
]
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
var assert = require("assert");
|
||||
|
||||
function assertUnary(op, loLeft, hiLeft, loResult, hiResult) {
|
||||
op(loLeft, hiLeft);
|
||||
assert.strictEqual(i64.getLo(), loResult);
|
||||
assert.strictEqual(i64.getHi(), hiResult);
|
||||
}
|
||||
|
||||
function assertBinary(op, loLeft, hiLeft, loRight, hiRight, loResult, hiResult) {
|
||||
op(loLeft, hiLeft, loLeft, loRight);
|
||||
assert.strictEqual(i64.getLo(), loResult);
|
||||
assert.strictEqual(i64.getHi(), hiResult);
|
||||
}
|
||||
|
||||
var i64 = require("..");
|
||||
|
||||
assertUnary(i64.clz, 1, 0, 63, 0);
|
||||
assertUnary(i64.clz, 0, 1, 31, 0);
|
||||
assertUnary(i64.clz, 1, 1, 31, 0);
|
||||
assertUnary(i64.clz, 0, 0, 64, 0);
|
||||
|
||||
assertUnary(i64.ctz, 0, 0x80000000, 63, 0);
|
||||
assertUnary(i64.ctz, 0x80000000, 0x80000000, 31, 0);
|
||||
assertUnary(i64.ctz, 0, 1, 32, 0);
|
||||
assertUnary(i64.ctz, 1, 0, 0, 0);
|
||||
assertUnary(i64.ctz, 0, 0, 64, 0);
|
||||
|
||||
assertUnary(i64.popcnt, 0x55555555, 0x55555555, 32, 0);
|
||||
assertUnary(i64.popcnt, -1, -1, 64, 0);
|
||||
assertUnary(i64.popcnt, 0, 0, 0, 0);
|
||||
assertUnary(i64.popcnt, 0x55, 0, 4, 0);
|
||||
assertUnary(i64.popcnt, 0, 0x55, 4, 0);
|
||||
assertUnary(i64.popcnt, 0x55, 0x55, 8, 0);
|
||||
|
||||
assertUnary(i64.eqz, 0, 0, 1, 0);
|
||||
assertUnary(i64.eqz, 0, 1, 0, 0);
|
||||
assertUnary(i64.eqz, 1, 0, 0, 0);
|
||||
assertUnary(i64.eqz, 1, 1, 0, 0);
|
||||
|
||||
// TODO...
|
||||
|
||||
console.log("ok");
|
Reference in New Issue
Block a user