mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-02 16:21:11 +00:00
wasm_interp: report todo! panics with file offset of the missing instruction
This commit is contained in:
parent
f103801457
commit
9d437fe3fd
2 changed files with 162 additions and 459 deletions
|
@ -115,28 +115,28 @@ impl<'a> ExecutionState<'a> {
|
|||
pub fn execute_next_instruction(&mut self, module: &WasmModule<'a>) -> Action {
|
||||
use OpCode::*;
|
||||
|
||||
let file_offset = self.program_counter as u32 + module.code.section_offset;
|
||||
let op_code = OpCode::from(module.code.bytes[self.program_counter]);
|
||||
self.program_counter += 1;
|
||||
|
||||
match op_code {
|
||||
UNREACHABLE => {
|
||||
unreachable!("WebAssembly tried to execute an `unreachable` instruction.");
|
||||
unreachable!(
|
||||
"WebAssembly `unreachable` instruction at file offset {:#x?}.",
|
||||
file_offset
|
||||
);
|
||||
}
|
||||
NOP => {}
|
||||
BLOCK => {
|
||||
self.block_depth += 1;
|
||||
todo!("{:?}", op_code);
|
||||
todo!("{:?} @ {:#x}", op_code, file_offset);
|
||||
}
|
||||
LOOP => {
|
||||
self.block_depth += 1;
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
IF => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
ELSE => {
|
||||
todo!("{:?}", op_code);
|
||||
todo!("{:?} @ {:#x}", op_code, file_offset);
|
||||
}
|
||||
IF => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
ELSE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
END => {
|
||||
if self.block_depth == 0 {
|
||||
// implicit RETURN at end of function
|
||||
|
@ -145,15 +145,9 @@ impl<'a> ExecutionState<'a> {
|
|||
self.block_depth -= 1;
|
||||
}
|
||||
}
|
||||
BR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
BRIF => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
BRTABLE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
BR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
BRIF => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
BRTABLE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
RETURN => {
|
||||
return self.do_return();
|
||||
}
|
||||
|
@ -185,15 +179,11 @@ impl<'a> ExecutionState<'a> {
|
|||
&mut self.program_counter,
|
||||
);
|
||||
}
|
||||
CALLINDIRECT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
CALLINDIRECT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
DROP => {
|
||||
self.value_stack.pop();
|
||||
}
|
||||
SELECT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
SELECT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
GETLOCAL => {
|
||||
let index = self.fetch_immediate_u32(module);
|
||||
let value = self.call_stack.get_local(index);
|
||||
|
@ -217,81 +207,31 @@ impl<'a> ExecutionState<'a> {
|
|||
let index = self.fetch_immediate_u32(module);
|
||||
self.globals[index as usize] = self.value_stack.pop();
|
||||
}
|
||||
I32LOAD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32LOAD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64LOAD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LOAD8S => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LOAD8U => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LOAD16S => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LOAD16U => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD8S => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD8U => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD16S => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD16U => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD32S => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LOAD32U => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32STORE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64STORE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32STORE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64STORE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32STORE8 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32STORE16 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64STORE8 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64STORE16 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64STORE32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
CURRENTMEMORY => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
GROWMEMORY => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LOAD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32LOAD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64LOAD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LOAD8S => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LOAD8U => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LOAD16S => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LOAD16U => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD8S => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD8U => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD16S => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD16U => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD32S => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LOAD32U => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32STORE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64STORE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32STORE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64STORE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32STORE8 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32STORE16 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64STORE8 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64STORE16 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64STORE32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
CURRENTMEMORY => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
GROWMEMORY => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32CONST => {
|
||||
let value = i32::parse((), &module.code.bytes, &mut self.program_counter).unwrap();
|
||||
self.value_stack.push(Value::I32(value));
|
||||
|
@ -312,120 +252,46 @@ impl<'a> ExecutionState<'a> {
|
|||
self.value_stack.push(Value::F64(f64::from_le_bytes(bytes)));
|
||||
self.program_counter += 8;
|
||||
}
|
||||
I32EQZ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32EQ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32NE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LTS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LTU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32GTS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32GTU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LES => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32LEU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32GES => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32GEU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64EQZ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64EQ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64NE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LTS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LTU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64GTS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64GTU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LES => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64LEU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64GES => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64GEU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32EQZ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32EQ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32NE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LTS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LTU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32GTS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32GTU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LES => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32LEU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32GES => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32GEU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64EQZ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64EQ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64NE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LTS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LTU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64GTS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64GTU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LES => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64LEU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64GES => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64GEU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
|
||||
F32EQ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32NE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32LT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32GT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32LE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32GE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32EQ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32NE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32LT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32GT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32LE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32GE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
|
||||
F64EQ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64NE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64LT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64GT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64LE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64GE => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64EQ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64NE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64LT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64GT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64LE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64GE => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
|
||||
I32CLZ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32CTZ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32POPCNT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32CLZ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32CTZ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32POPCNT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32ADD => {
|
||||
let x = self.value_stack.pop_i32();
|
||||
let y = self.value_stack.pop_i32();
|
||||
|
@ -441,258 +307,92 @@ impl<'a> ExecutionState<'a> {
|
|||
let y = self.value_stack.pop_i32();
|
||||
self.value_stack.push(Value::I32(y * x));
|
||||
}
|
||||
I32DIVS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32DIVU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32REMS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32REMU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32AND => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32OR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32XOR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32SHL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32SHRS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32SHRU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32ROTL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32ROTR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32DIVS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32DIVU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32REMS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32REMU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32AND => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32OR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32XOR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32SHL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32SHRS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32SHRU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32ROTL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32ROTR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
|
||||
I64CLZ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64CTZ => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64POPCNT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64ADD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64SUB => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64MUL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64DIVS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64DIVU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64REMS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64REMU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64AND => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64OR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64XOR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64SHL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64SHRS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64SHRU => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64ROTL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64ROTR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32ABS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32NEG => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32CEIL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32FLOOR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32TRUNC => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32NEAREST => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32SQRT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32ADD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32SUB => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32MUL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32DIV => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32MIN => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32MAX => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32COPYSIGN => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64ABS => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64NEG => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64CEIL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64FLOOR => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64TRUNC => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64NEAREST => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64SQRT => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64ADD => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64SUB => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64MUL => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64DIV => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64MIN => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64MAX => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64COPYSIGN => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64CLZ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64CTZ => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64POPCNT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64ADD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64SUB => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64MUL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64DIVS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64DIVU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64REMS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64REMU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64AND => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64OR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64XOR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64SHL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64SHRS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64SHRU => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64ROTL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64ROTR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32ABS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32NEG => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32CEIL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32FLOOR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32TRUNC => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32NEAREST => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32SQRT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32ADD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32SUB => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32MUL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32DIV => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32MIN => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32MAX => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32COPYSIGN => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64ABS => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64NEG => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64CEIL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64FLOOR => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64TRUNC => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64NEAREST => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64SQRT => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64ADD => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64SUB => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64MUL => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64DIV => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64MIN => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64MAX => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64COPYSIGN => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
|
||||
I32WRAPI64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32TRUNCSF32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32TRUNCUF32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32TRUNCSF64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32TRUNCUF64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64EXTENDSI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64EXTENDUI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64TRUNCSF32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64TRUNCUF32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64TRUNCSF64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64TRUNCUF64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32CONVERTSI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32CONVERTUI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32CONVERTSI64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32CONVERTUI64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32DEMOTEF64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64CONVERTSI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64CONVERTUI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64CONVERTSI64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64CONVERTUI64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64PROMOTEF32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32WRAPI64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32TRUNCSF32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32TRUNCUF32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32TRUNCSF64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I32TRUNCUF64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64EXTENDSI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64EXTENDUI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64TRUNCSF32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64TRUNCUF32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64TRUNCSF64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64TRUNCUF64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32CONVERTSI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32CONVERTUI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32CONVERTSI64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32CONVERTUI64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32DEMOTEF64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64CONVERTSI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64CONVERTUI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64CONVERTSI64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64CONVERTUI64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64PROMOTEF32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
|
||||
I32REINTERPRETF32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I64REINTERPRETF64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F32REINTERPRETI32 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
F64REINTERPRETI64 => {
|
||||
todo!("{:?}", op_code);
|
||||
}
|
||||
I32REINTERPRETF32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
I64REINTERPRETF64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F32REINTERPRETI32 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
F64REINTERPRETI64 => todo!("{:?} @ {:#x}", op_code, file_offset),
|
||||
}
|
||||
Action::Continue
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue