summaryrefslogtreecommitdiff
path: root/insts.rb
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--insts.rb21
1 files changed, 21 insertions, 0 deletions
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
169 uop { @decode.outaddr_a; @alu.outdata; @rf.store } 169 uop { @decode.outaddr_a; @alu.outdata; @rf.store }
170end 170end
171 171
172inst "mul $ #" do
173 uop { @alu.xor; constaddr(0); @control.outdata }
174 uop { @decode.outdata_b; @counter.load; @control.set_uip_if_zero; constaddr(uip()+4) }
175 uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata }
176 mulloop = uip()
177 uop { @counter.decrement; @alu.outdata; @tmp0.outaddr; @alu.add }
178 uop { @counter.outdata; @control.set_uip_if_nonzero; constaddr(mulloop) }
179 uop { @decode.outaddr_a; @alu.outdata; @rf.store }
180end
181
182inst "mul $ $" do
183 uop { @alu.xor; constaddr(0); @control.outdata }
184 uop { @decode.outaddr_a; @rf.outdata; @counter.load }
185 uop { @counter.outdata; @control.set_uip_if_zero; constaddr(uip()+4) }
186 uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata }
187 mulloop = uip()
188 uop { @counter.decrement; @alu.outdata; @tmp0.outaddr; @alu.add }
189 uop { @counter.outdata; @control.set_uip_if_nonzero; constaddr(mulloop) }
190 uop { @decode.outaddr_a; @alu.outdata; @rf.store }
191end
192
172def cmpbit(name, bit) 193def cmpbit(name, bit)
173 inst "#{name} $ #" do 194 inst "#{name} $ #" do
174 uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata } 195 uop { @decode.outaddr_a; @rf.outdata; @tmp0.loaddata }