[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 18:41:09 BST 2020


--- Comment #2 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Michael Nolan from comment #1)
> I'm working on defining the pipeline data type for this, and I'm wondering
> how I should handle the CR input. Conditional branches can branch on any of
> the 32 bits in the cr, so I think it should take in the entire CR.

there is a selector in the insn, right? that is the "CR" equivalent of the RA,
RB, RS and RT fields.

> However,
> I suspect we'll be implementing cr0..cr7 as separate 4 bit registers to
> avoid false dependencies, so making the branch take in the whole register
> would complicate matters

yes those are the two ways to do it:

A treat CR as separate 4 bit regs.

B treat it as one 64 bit reg

scheme A requires 8 regs as input if you need the full CR.  8 inputs from the
Dependency Matrices is a bit much.

sometimes however you need the full 64 bit. i do have a Dep Matrix strategy for
both, it involves a vector grouping system:

* both A and B are available, however q request for CR0 read will *also* set a
request for the *whole* 64 bits of CR.

something like that.

however, it is complicated. 

so for now, i think we just go with full 64 bit.  annoying as that is.

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

More information about the libre-riscv-dev mailing list