[PATCH] RISC-V: Branches of vector extension are not merged into binutils mainline

Jim Wilson jimw@sifive.com
Wed Jul 8 18:09:33 GMT 2020


On Wed, Jul 8, 2020 at 5:44 AM <jiejie_rong@c-sky.com> wrote:
> From version rule of RISCV extension, we should include stable version from the first v0.7.1,
> riscv official announce that stable version can be used for implementation and evaluation.

The v0.7.1 draft of the vector extension has no official status.  The
"stable" version was for experimental purposes.  The vector extension
was evolving so rapidly that people were having trouble evaluating it,
so a version was marked as "stable" for people to do experimental
toolchain, simulator, and vector math library ports to evaluate it,
and then feedback from those experiments were used for further
evolution of the vector extension proposal..  It was never meant to be
implemented in hardware.

> We could set the latest as default and absorb other implementation who follow the old vector spec also :)

Unfortunately there is no useful compatibility between the obsolete
v0.7.1 draft and the current draft of the vector extension.  Hundreds
of instructions have been dropped, added, assembly syntax changed,
encoding changed, constraints changed, semantics changed.  And
fundamental features of the extension have changed such as valid
register sizes, element sizes, numbering of lanes within a register,
encoding of vector masks, etc.  If we need to implement both the
v0.7.1 draft and the current draft, then we probably have to treat
them as two different incompatible vector extensions.  Then there is
the problem that it is just Nelson and me doing binutils work, and
Kito and me doing gcc work, and we don't have enough bandwidth to
maintain two different incompatible vector extensions.

GCC has the concept of vendor branches.  I would suggest that if you
really want upstream support for your vector extension, that you
create a vendor branch for it and maintain it yourself.  This means
that linux distros won't have your vector support, but you can build
your own toolchains and maybe your own linux distros to solve that
problem.

You also need to stop calling this the V extension because it isn't.
You need to call it something like Zv071 or Zvalibaba to make it clear
that it is a vector extension but not the official one.

Jim


More information about the Binutils mailing list