diff --git a/cranelift/codegen/src/isa/zkasm/inst/emit.rs b/cranelift/codegen/src/isa/zkasm/inst/emit.rs index 5b2e3ed788fb..7738129b723d 100644 --- a/cranelift/codegen/src/isa/zkasm/inst/emit.rs +++ b/cranelift/codegen/src/isa/zkasm/inst/emit.rs @@ -438,7 +438,7 @@ impl MachInstEmit for Inst { } &Inst::LoadConst64 { rd, imm } => { let rd = allocs.next_writable(rd); - put_string(&format!("{imm} => {}\n", reg_name(rd.to_reg())), sink); + put_string(&format!("{imm}n => {}\n", reg_name(rd.to_reg())), sink); } &Inst::Unwind { ref inst } => { put_string(&format!("Unwind\n"), sink); diff --git a/cranelift/codegen/src/isa/zkasm/lower/isle.rs b/cranelift/codegen/src/isa/zkasm/lower/isle.rs index efd76e1d00db..ee44a85fa04c 100644 --- a/cranelift/codegen/src/isa/zkasm/lower/isle.rs +++ b/cranelift/codegen/src/isa/zkasm/lower/isle.rs @@ -249,7 +249,9 @@ impl generated_code::Context for ZkAsmIsleContext<'_, '_, MInst, ZkAsmBackend> { let insts = match ty { F32 => MInst::load_fp_constant32(tmp, val as u32, alloc_tmp), F64 => MInst::load_fp_constant64(tmp, val, alloc_tmp), - _ => MInst::load_constant_u64(tmp, val, alloc_tmp), + I32 => MInst::load_constant_u32(tmp, val, alloc_tmp), + I64 => MInst::load_constant_u64(tmp, val, alloc_tmp), + _ => panic!("Not implemented"), }; self.emit_list(&insts); tmp.to_reg() diff --git a/cranelift/filetests/src/test_zkasm.rs b/cranelift/filetests/src/test_zkasm.rs index 9fe41440b303..a0f727fbd039 100644 --- a/cranelift/filetests/src/test_zkasm.rs +++ b/cranelift/filetests/src/test_zkasm.rs @@ -209,5 +209,7 @@ mod tests { ne, nop, _should_fail_unreachable, + i64_const, + i32_const, } } diff --git a/cranelift/zkasm_data/generated/i32_const.zkasm b/cranelift/zkasm_data/generated/i32_const.zkasm new file mode 100644 index 000000000000..cc08f79866b0 --- /dev/null +++ b/cranelift/zkasm_data/generated/i32_const.zkasm @@ -0,0 +1,20 @@ +start: + zkPC + 2 => RR + :JMP(function_1) + :JMP(finalizeExecution) +function_1: + SP + 1 => SP + RR :MSTORE(SP - 1) + SP + 2 => SP + B :MSTORE(SP - 1) + 3 => A + 3 => B + B :ASSERT + $ => B :MLOAD(SP - 1) + SP - 2 => SP + $ => RR :MLOAD(SP - 1) + SP - 1 => SP + :JMP(RR) +finalizeExecution: + ${beforeLast()} :JMPN(finalizeExecution) + :JMP(start) \ No newline at end of file diff --git a/cranelift/zkasm_data/generated/i64_const.zkasm b/cranelift/zkasm_data/generated/i64_const.zkasm new file mode 100644 index 000000000000..da5a20d9691d --- /dev/null +++ b/cranelift/zkasm_data/generated/i64_const.zkasm @@ -0,0 +1,20 @@ +start: + zkPC + 2 => RR + :JMP(function_1) + :JMP(finalizeExecution) +function_1: + SP + 1 => SP + RR :MSTORE(SP - 1) + SP + 2 => SP + B :MSTORE(SP - 1) + 9223372036854775807n => A + 9223372036854775807n => B + B :ASSERT + $ => B :MLOAD(SP - 1) + SP - 2 => SP + $ => RR :MLOAD(SP - 1) + SP - 1 => SP + :JMP(RR) +finalizeExecution: + ${beforeLast()} :JMPN(finalizeExecution) + :JMP(start) \ No newline at end of file diff --git a/cranelift/zkasm_data/i32_const.wat b/cranelift/zkasm_data/i32_const.wat new file mode 100644 index 000000000000..1c6bc87d7bd4 --- /dev/null +++ b/cranelift/zkasm_data/i32_const.wat @@ -0,0 +1,7 @@ +(module + (import "env" "assert_eq" (func $assert_eq (param i32) (param i32))) + (func $main + i32.const 3 + i32.const 3 + call $assert_eq) + (start $main)) diff --git a/cranelift/zkasm_data/i64_const.wat b/cranelift/zkasm_data/i64_const.wat new file mode 100644 index 000000000000..2b6f7f5cc6d9 --- /dev/null +++ b/cranelift/zkasm_data/i64_const.wat @@ -0,0 +1,7 @@ +(module + (import "env" "assert_eq" (func $assert_eq (param i64) (param i64))) + (func $main + i64.const 9223372036854775807 + i64.const 9223372036854775807 + call $assert_eq) + (start $main)) diff --git a/crates/wasi-nn/spec b/crates/wasi-nn/spec index e2310b860db2..c1f8b87e923a 160000 --- a/crates/wasi-nn/spec +++ b/crates/wasi-nn/spec @@ -1 +1 @@ -Subproject commit e2310b860db2ff1719c9d69816099b87e85fabdb +Subproject commit c1f8b87e923aedda02964c31b0e1d37e331ec402