From b2ddf124732f9595d3a79d3bf408d4e724135d19 Mon Sep 17 00:00:00 2001 From: David Given Date: Sat, 15 Oct 2016 11:22:40 +0200 Subject: [PATCH] Some more opcodes. --- mach/proto/mcg/treebuilder.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/mach/proto/mcg/treebuilder.c b/mach/proto/mcg/treebuilder.c index 4060b206f..c2083b8ab 100644 --- a/mach/proto/mcg/treebuilder.c +++ b/mach/proto/mcg/treebuilder.c @@ -504,6 +504,23 @@ static void insn_ivalue(int opcode, arith value) ); break; + case op_lof: + { + struct ir* ptr = pop(EM_pointersize); + + push( + new_ir1( + IR_LOAD, EM_wordsize, + new_ir2( + IR_ADD, EM_pointersize, + ptr, + new_wordir(value) + ) + ) + ); + break; + } + case op_sti: { struct ir* ptr = pop(EM_pointersize); @@ -518,6 +535,25 @@ static void insn_ivalue(int opcode, arith value) break; } + case op_stf: + { + struct ir* ptr = pop(EM_pointersize); + struct ir* val = pop(value); + + appendir( + new_ir2( + IR_STORE, EM_wordsize, + new_ir2( + IR_ADD, EM_pointersize, + ptr, + new_wordir(value) + ), + val + ) + ); + break; + } + case op_cmi: push( tristate_compare(value, IR_COMPARES) -- 2.34.1