mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 07:41:12 +00:00
Get lots of Num lowlevel ops working
This commit is contained in:
parent
6421ff07a5
commit
7c95189e4a
7 changed files with 532 additions and 61 deletions
|
@ -439,6 +439,7 @@ impl<'a> CodeBuilder<'a> {
|
|||
if push {
|
||||
self.vm_stack.push(Symbol::WASM_ANONYMOUS_STACK_VALUE);
|
||||
}
|
||||
|
||||
self.code.push(opcode);
|
||||
}
|
||||
|
||||
|
|
|
@ -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)",
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue