Get lots of Num lowlevel ops working

This commit is contained in:
Brian Carroll 2021-11-10 14:21:32 +00:00
parent 6421ff07a5
commit 7c95189e4a
7 changed files with 532 additions and 61 deletions

View file

@ -439,6 +439,7 @@ impl<'a> CodeBuilder<'a> {
if push {
self.vm_stack.push(Symbol::WASM_ANONYMOUS_STACK_VALUE);
}
self.code.push(opcode);
}

View file

@ -176,3 +176,187 @@ pub const I32REINTERPRETF32: u8 = 0xbc;
pub const I64REINTERPRETF64: u8 = 0xbd;
pub const F32REINTERPRETI32: u8 = 0xbe;
pub const F64REINTERPRETI64: u8 = 0xbf;
pub fn dbg_opcode_name(opcode: u8) -> &'static str {
match opcode {
UNREACHABLE => "UNREACHABLE",
NOP => "NOP",
BLOCK => "BLOCK",
LOOP => "LOOP",
IF => "IF",
ELSE => "ELSE",
END => "END",
BR => "BR",
BRIF => "BRIF",
BRTABLE => "BRTABLE",
RETURN => "RETURN",
CALL => "CALL",
CALLINDIRECT => "CALLINDIRECT",
DROP => "DROP",
SELECT => "SELECT",
GETLOCAL => "GETLOCAL",
SETLOCAL => "SETLOCAL",
TEELOCAL => "TEELOCAL",
GETGLOBAL => "GETGLOBAL",
SETGLOBAL => "SETGLOBAL",
I32LOAD => "I32LOAD",
I64LOAD => "I64LOAD",
F32LOAD => "F32LOAD",
F64LOAD => "F64LOAD",
I32LOAD8S => "I32LOAD8S",
I32LOAD8U => "I32LOAD8U",
I32LOAD16S => "I32LOAD16S",
I32LOAD16U => "I32LOAD16U",
I64LOAD8S => "I64LOAD8S",
I64LOAD8U => "I64LOAD8U",
I64LOAD16S => "I64LOAD16S",
I64LOAD16U => "I64LOAD16U",
I64LOAD32S => "I64LOAD32S",
I64LOAD32U => "I64LOAD32U",
I32STORE => "I32STORE",
I64STORE => "I64STORE",
F32STORE => "F32STORE",
F64STORE => "F64STORE",
I32STORE8 => "I32STORE8",
I32STORE16 => "I32STORE16",
I64STORE8 => "I64STORE8",
I64STORE16 => "I64STORE16",
I64STORE32 => "I64STORE32",
CURRENTMEMORY => "CURRENTMEMORY",
GROWMEMORY => "GROWMEMORY",
I32CONST => "I32CONST",
I64CONST => "I64CONST",
F32CONST => "F32CONST",
F64CONST => "F64CONST",
I32EQZ => "I32EQZ",
I32EQ => "I32EQ",
I32NE => "I32NE",
I32LTS => "I32LTS",
I32LTU => "I32LTU",
I32GTS => "I32GTS",
I32GTU => "I32GTU",
I32LES => "I32LES",
I32LEU => "I32LEU",
I32GES => "I32GES",
I32GEU => "I32GEU",
I64EQZ => "I64EQZ",
I64EQ => "I64EQ",
I64NE => "I64NE",
I64LTS => "I64LTS",
I64LTU => "I64LTU",
I64GTS => "I64GTS",
I64GTU => "I64GTU",
I64LES => "I64LES",
I64LEU => "I64LEU",
I64GES => "I64GES",
I64GEU => "I64GEU",
F32EQ => "F32EQ",
F32NE => "F32NE",
F32LT => "F32LT",
F32GT => "F32GT",
F32LE => "F32LE",
F32GE => "F32GE",
F64EQ => "F64EQ",
F64NE => "F64NE",
F64LT => "F64LT",
F64GT => "F64GT",
F64LE => "F64LE",
F64GE => "F64GE",
I32CLZ => "I32CLZ",
I32CTZ => "I32CTZ",
I32POPCNT => "I32POPCNT",
I32ADD => "I32ADD",
I32SUB => "I32SUB",
I32MUL => "I32MUL",
I32DIVS => "I32DIVS",
I32DIVU => "I32DIVU",
I32REMS => "I32REMS",
I32REMU => "I32REMU",
I32AND => "I32AND",
I32OR => "I32OR",
I32XOR => "I32XOR",
I32SHL => "I32SHL",
I32SHRS => "I32SHRS",
I32SHRU => "I32SHRU",
I32ROTL => "I32ROTL",
I32ROTR => "I32ROTR",
I64CLZ => "I64CLZ",
I64CTZ => "I64CTZ",
I64POPCNT => "I64POPCNT",
I64ADD => "I64ADD",
I64SUB => "I64SUB",
I64MUL => "I64MUL",
I64DIVS => "I64DIVS",
I64DIVU => "I64DIVU",
I64REMS => "I64REMS",
I64REMU => "I64REMU",
I64AND => "I64AND",
I64OR => "I64OR",
I64XOR => "I64XOR",
I64SHL => "I64SHL",
I64SHRS => "I64SHRS",
I64SHRU => "I64SHRU",
I64ROTL => "I64ROTL",
I64ROTR => "I64ROTR",
F32ABS => "F32ABS",
F32NEG => "F32NEG",
F32CEIL => "F32CEIL",
F32FLOOR => "F32FLOOR",
F32TRUNC => "F32TRUNC",
F32NEAREST => "F32NEAREST",
F32SQRT => "F32SQRT",
F32ADD => "F32ADD",
F32SUB => "F32SUB",
F32MUL => "F32MUL",
F32DIV => "F32DIV",
F32MIN => "F32MIN",
F32MAX => "F32MAX",
F32COPYSIGN => "F32COPYSIGN",
F64ABS => "F64ABS",
F64NEG => "F64NEG",
F64CEIL => "F64CEIL",
F64FLOOR => "F64FLOOR",
F64TRUNC => "F64TRUNC",
F64NEAREST => "F64NEAREST",
F64SQRT => "F64SQRT",
F64ADD => "F64ADD",
F64SUB => "F64SUB",
F64MUL => "F64MUL",
F64DIV => "F64DIV",
F64MIN => "F64MIN",
F64MAX => "F64MAX",
F64COPYSIGN => "F64COPYSIGN",
I32WRAPI64 => "I32WRAPI64",
I32TRUNCSF32 => "I32TRUNCSF32",
I32TRUNCUF32 => "I32TRUNCUF32",
I32TRUNCSF64 => "I32TRUNCSF64",
I32TRUNCUF64 => "I32TRUNCUF64",
I64EXTENDSI32 => "I64EXTENDSI32",
I64EXTENDUI32 => "I64EXTENDUI32",
I64TRUNCSF32 => "I64TRUNCSF32",
I64TRUNCUF32 => "I64TRUNCUF32",
I64TRUNCSF64 => "I64TRUNCSF64",
I64TRUNCUF64 => "I64TRUNCUF64",
F32CONVERTSI32 => "F32CONVERTSI32",
F32CONVERTUI32 => "F32CONVERTUI32",
F32CONVERTSI64 => "F32CONVERTSI64",
F32CONVERTUI64 => "F32CONVERTUI64",
F32DEMOTEF64 => "F32DEMOTEF64",
F64CONVERTSI32 => "F64CONVERTSI32",
F64CONVERTUI32 => "F64CONVERTUI32",
F64CONVERTSI64 => "F64CONVERTSI64",
F64CONVERTUI64 => "F64CONVERTUI64",
F64PROMOTEF32 => "F64PROMOTEF32",
I32REINTERPRETF32 => "I32REINTERPRETF32",
I64REINTERPRETF64 => "I64REINTERPRETF64",
F32REINTERPRETI32 => "F32REINTERPRETI32",
F64REINTERPRETI64 => "F64REINTERPRETI64",
_ => "(unknown)",
}
}