From 73e3b0034c7147f1232e30082d6fa283d1d453b4 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Mon, 19 Jul 2021 13:07:45 -0700 Subject: Add unsigned integer multiply instructions. --- insts.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'insts.rb') diff --git a/insts.rb b/insts.rb index d24a31d..c667896 100644 --- a/insts.rb +++ b/insts.rb @@ -169,6 +169,27 @@ inst "rshiftsign $ $" do uop { @decode.outaddr_a; @alu.outdata; @rf.store } end +inst "mul $ #" do + uop { @alu.xor; constaddr(0); @control.outdata } + uop { @decode.outdata_b; @counter.load; @control.set_uip_if_zero; constaddr(uip()+4) } + uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata } + mulloop = uip() + uop { @counter.decrement; @alu.outdata; @tmp0.outaddr; @alu.add } + uop { @counter.outdata; @control.set_uip_if_nonzero; constaddr(mulloop) } + uop { @decode.outaddr_a; @alu.outdata; @rf.store } +end + +inst "mul $ $" do + uop { @alu.xor; constaddr(0); @control.outdata } + uop { @decode.outaddr_a; @rf.outdata; @counter.load } + uop { @counter.outdata; @control.set_uip_if_zero; constaddr(uip()+4) } + uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata } + mulloop = uip() + uop { @counter.decrement; @alu.outdata; @tmp0.outaddr; @alu.add } + uop { @counter.outdata; @control.set_uip_if_nonzero; constaddr(mulloop) } + uop { @decode.outaddr_a; @alu.outdata; @rf.store } +end + def cmpbit(name, bit) inst "#{name} $ #" do uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata } -- cgit v1.2.3