On 7/19/23 04:11, Xiao Zeng wrote:
Hi all RISC-V folks:
This series of patches completes support for the riscv architecture's
Zicond standard extension instruction set.
Currently, Zicond is in a frozen state.
See the Zicond specification for details:
https://github.com/riscv/riscv-zicond/releases/download/v1.0-rc2/riscv-zicond-v1.0-rc2.pdf
Prior to this, other community members have also done related work, as shown in:
https://gcc.gnu.org/pipermail/gcc-patches/2023-February/611767.html
https://sourceware.org/pipermail/binutils/2023-January/125773.html
Xiao Zeng (5):
[RISC-V] Recognize Zicond extension
[RISC-V] Generate Zicond instruction for basic semantics
[RISC-V] Generate Zicond instruction for select pattern with condition
eq or neq to 0
[RISC-V] Generate Zicond instruction for select pattern with condition
eq or neq to non-zero
[RISC-V] Generate Zicond instruction for conditional execution
[ ... ]
So what I'm thinking for the overall kit is to stage it in a bit
differently given we have some bits which clearly can go forward as-is
or with very minor changes and others that are going to need some
iteration/refinement.
So I'm going to suggest a few changes so that bits which are non
controversial can move forward immediately.
1/5 looked fine as-is.
I would split 2/5. The first two patterns you added are
non-controversial and could go in immediately. The other 4 patterns
(which require some operand matching) will likely need at least one
round of iteration and should be a distinct patch.
I would split 3/5 as well. 3a would be the costing which I think just
needs to use COSTS_N_INSNS (1) rather than 0 for the cost of a
conditional move and could then move forward immediately. The bits to
wire everything up into the conditional move pattern would be a distinct
patch. We did something similar internally in Ventana and I'd like to
take the time to make sure the issues we ran into are addressed in your
version then do an evaluation of the two approaches.
I think patch 4 is probably going to need some work too. I *think* what
we did internally at Ventana will work better (utilizing scc for a
non-trivial condition).
Let's defer patch #5 initially as well. It's going to get tangled up in
a whole bunch of changes I think we need to make to ifcvt.cc.
The point being that with the bits from #1, #2 and #3 we can get some
initial support in immediately. eswincomputing and ventana can both
reduce our divergence from the trunk and work together on the rest of
the bits.
Does that work for you?
jeff