From 3b14d1605cf9ea638a0d058911a8c1e233a9f70d Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Sun, 11 May 2025 21:00:55 -0400 Subject: [Rust] Add missing instruction types to MLIL --- rust/src/medium_level_il/lift.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'rust/src/medium_level_il/lift.rs') diff --git a/rust/src/medium_level_il/lift.rs b/rust/src/medium_level_il/lift.rs index f5ee45b3..399bda78 100644 --- a/rust/src/medium_level_il/lift.rs +++ b/rust/src/medium_level_il/lift.rs @@ -129,10 +129,16 @@ pub enum MediumLevelILLiftedInstructionKind { Rlc(LiftedBinaryOpCarry), Rrc(LiftedBinaryOpCarry), Call(LiftedCall), + CallOutput(LiftedCallOutput), + CallParam(LiftedCallParam), + CallOutputSsa(LiftedCallOutputSsa), + CallParamSsa(LiftedCallParamSsa), Tailcall(LiftedCall), Intrinsic(LiftedIntrinsic), Syscall(LiftedSyscallCall), IntrinsicSsa(LiftedIntrinsicSsa), + MemoryIntrinsicSsa(LiftedMemoryIntrinsicSsa), + MemoryIntrinsicOutputSsa(LiftedMemoryIntrinsicOutputSsa), CallSsa(LiftedCallSsa), TailcallSsa(LiftedCallSsa), CallUntypedSsa(LiftedCallUntypedSsa), @@ -269,10 +275,16 @@ impl MediumLevelILLiftedInstruction { Rlc(_) => "Rlc", Rrc(_) => "Rrc", Call(_) => "Call", + CallOutput(_) => "CallOutput", + CallParam(_) => "CallParam", + CallOutputSsa(_) => "CallOutputSsa", + CallParamSsa(_) => "CallParamSsa", Tailcall(_) => "Tailcall", Syscall(_) => "Syscall", Intrinsic(_) => "Intrinsic", IntrinsicSsa(_) => "IntrinsicSsa", + MemoryIntrinsicSsa(_) => "MemoryIntrinsicSsa", + MemoryIntrinsicOutputSsa(_) => "MemoryIntrinsicOutputSsa", CallSsa(_) => "CallSsa", TailcallSsa(_) => "TailcallSsa", CallUntypedSsa(_) => "CallUntypedSsa", @@ -441,6 +453,16 @@ impl MediumLevelILLiftedInstruction { ("dest", Operand::Expr(*op.dest.clone())), ("params", Operand::ExprList(op.params.clone())), ], + CallOutput(op) => vec![("output", Operand::VarList(op.output.clone()))], + CallParam(op) => vec![("params", Operand::ExprList(op.params.clone()))], + CallOutputSsa(op) => vec![ + ("output", Operand::VarSsaList(op.output.clone())), + ("dest_memory", Operand::Int(op.dest_memory)), + ], + CallParamSsa(op) => vec![ + ("params", Operand::ExprList(op.params.clone())), + ("src_memory", Operand::Int(op.src_memory)), + ], Syscall(op) => vec![ ("output", Operand::VarList(op.output.clone())), ("params", Operand::ExprList(op.params.clone())), @@ -455,6 +477,16 @@ impl MediumLevelILLiftedInstruction { ("intrinsic", Operand::Intrinsic(op.intrinsic)), ("params", Operand::ExprList(op.params.clone())), ], + MemoryIntrinsicSsa(op) => vec![ + ("output", Operand::Expr(*op.output.clone())), + ("intrinsic", Operand::Intrinsic(op.intrinsic)), + ("params", Operand::ExprList(op.params.clone())), + ("src_memory", Operand::Int(op.src_memory)), + ], + MemoryIntrinsicOutputSsa(op) => vec![ + ("dest_memory", Operand::Int(op.dest_memory)), + ("output", Operand::VarSsaList(op.output.clone())), + ], CallSsa(op) | TailcallSsa(op) => vec![ ("output", Operand::VarSsaList(op.output.clone())), ("dest", Operand::Expr(*op.dest.clone())), -- cgit v1.3.1