mor1kx icon indicating copy to clipboard operation
mor1kx copied to clipboard

back to back multiply, mtspr and multiply.

Open JaewonHur opened this issue 5 years ago • 0 comments

When I input multiply, mtspr, multiply instructions sequentially, like this,

  b08e1111	l.muli	r4, r14, 0x1111
  c011f416	l.mtspr	r17, r30, 0xf416
  b2160001	l.muli	r16, r22, 0x0001

value in r30 is written to r22 due to the mtspr. and next l.muli instruction uses r22's value in multiplication.

However, next l.muli instruction mistakenly brings old value of r22 because the write back of first l.muli instruction occupies register write port when mtspr should write. Register read-write bypass can fix this situation but I saw ENABLE_BYPASS parameters in mor1kx_rf_cappuccino.v is set to 0. Are there any reason for it?

The full input instructions are as follow.

  18000000	l.movhi	r0, 0x0000
  a8200001	l.ori	r1, r0, 0x0001
  c0000811	l.mtspr	r0, r1, 0x0811
  abc00000      l.ori   r30, r0, 0x0000
  aac00000      l.ori   r22, r0, 0x0000
  a8800000      l.ori   r4, r0, 0x0000
  a9c00000      l.ori   r14, r0, 0x0000
  aa200000      l.ori   r17, r0, 0x0000
  aa000000      l.ori   r16, r0, 0x0000
  afde0001      l.ori   r30, r30, 0x0001
  aed60002	l.xori	r22, r22, 0x0002
  b08e1111	l.muli	r4, r14, 0x1111
  c011f416	l.mtspr	r17, r30, 0xf416
  b2160001	l.muli	r16, r22, 0x0001
  15000000	l.nop	0x0
  15000000	l.nop	0x0

JaewonHur avatar Jan 02 '20 07:01 JaewonHur