diff --git a/runtime/pom.xml b/runtime/pom.xml index a1f70810e..0aff45c63 100644 --- a/runtime/pom.xml +++ b/runtime/pom.xml @@ -44,7 +44,10 @@ load.wast, address.wast, const.wast, - align.wast + align.wast, + int_literals.wast, + int_exprs.wast, + endianness.wast memory_grow.wast, memory_size.wast diff --git a/runtime/src/main/java/com/dylibso/chicory/runtime/Machine.java b/runtime/src/main/java/com/dylibso/chicory/runtime/Machine.java index e64d58ef2..16cfa69ca 100644 --- a/runtime/src/main/java/com/dylibso/chicory/runtime/Machine.java +++ b/runtime/src/main/java/com/dylibso/chicory/runtime/Machine.java @@ -1087,7 +1087,7 @@ void eval(List code) throws ChicoryException { case F64_REINTERPRET_I64: { var tos = this.stack.pop(); - this.stack.push(Value.i64(tos.asLong())); + this.stack.push(Value.f64(tos.asLong())); break; } case I64_TRUNC_F64_S: @@ -1096,6 +1096,42 @@ void eval(List code) throws ChicoryException { this.stack.push(Value.i64(Double.valueOf(tos.asDouble()).longValue())); break; } + case I32_WRAP_I64: + { + var tos = this.stack.pop(); + this.stack.push(Value.i32(tos.asInt())); + break; + } + case I64_EXTEND_I32_S: + { + var tos = this.stack.pop(); + this.stack.push(Value.i64(Integer.valueOf(tos.asInt()).longValue())); + break; + } + case I64_EXTEND_I32_U: + { + var tos = this.stack.pop(); + this.stack.push(Value.i64(tos.asUInt())); + break; + } + case I32_REINTERPRET_F32: + { + var tos = this.stack.pop(); + this.stack.push(Value.i32(tos.asInt())); + break; + } + case I64_REINTERPRET_F64: + { + var tos = this.stack.pop(); + this.stack.push(Value.i64(tos.asLong())); + break; + } + case F32_REINTERPRET_I32: + { + var tos = this.stack.pop(); + this.stack.push(Value.f32(tos.asInt())); + break; + } default: throw new RuntimeException( "Machine doesn't recognize Instruction " + instruction);