[libre-riscv-dev] [Bug 313] Create Branch Pipeline for POWER9

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Fri May 15 23:23:53 BST 2020


https://bugs.libre-soc.org/show_bug.cgi?id=313

--- Comment #17 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Michael Nolan from comment #15)
> (In reply to Luke Kenneth Casson Leighton from comment #14)
> > waaaa...
> > 
> >     insn       CR  SPR1  SPR2    SPR3
> >     ----       --  ----  ----    ----
> >     op_b       xx  LR     xx     xx
> >     op_ba      xx  LR     xx     xx
> >     op_bl      xx  LR     xx     xx
> >     op_bla     xx  LR     xx     xx
> >     op_bc      CR, LR,    CTR    xx
> >     op_bca     CR, LR,    CTR    xx
> >     op_bcl     CR, LR,    CTR    xx
> >     op_bcla    CR, LR,    CTR    xx
> >     op_bclr    CR, LR,    CTR    xx
> >     op_bclrl   CR, LR,    CTR    xx
> >     op_bcctr   CR, LR,    CTR    xx
> >     op_bcctrl  CR, LR,    CTR    xx
> >     op_bctar   CR, LR,    CTR,   TAR
> >     op_bctarl  CR, LR,    CTR,   TAR
> > 
> >     op_sc      xx  xx     xx     MSR
> >     op_scv     xx  LR,    SRR1,  MSR
> >     op_rfscv   xx  LR,    CTR,   MSR
> >     op_rfid    xx  SRR0,  SRR1,  MSR
> >     op_hrfid   xx  HSRR0, HSRR1, MSR
> > 
> > and if we did TRAP in the Branch pipeline as well, that would be
> > *six* incoming 64-bit register latch paths.  nooo, i don't think so :)
> 
> 
> That table is a bit large, at least for the branch instructions. None of the
> branches except for bclr(l) need to read LR, only write to it. 

err... nuts.  the parser is bringing lr in as an input, when it should not.
that's another bug.  let me update the table...

> And bclr
> doesn't need to read TAR, so multiplexing TAR/LR on the same port would be
> possible. 

yep.  good catch.

> > so the above table should guide the numbering.  LR - that's not an SPR,
> > is it? 
> It is, it's SPR #8

okaaay good.


> what are the opcodes starting with op_sc? I don't see any of them in the
> power_enums list, nor do I see corresponding opcodes in the power ISA
> specification

(i saw you found them, later comment - decoder/isa/system.py)

sooo, iiinteresting: OP_TRAP needs up to 3 SPRs, but OP_B* does not.
that is almost worthwhile considering having OP_TRAP and OP_B* in the
same pipeline... mm... 5 64-bit datapaths...  yyeah no :)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-riscv-dev mailing list