FW: [RISC-V] [tech-unprivileged] Zfinx and mutated extensions
A recap for Mark:
We’ve had a complaint from an upstream LLVM developer about Zfinx, because it *changes* the F and D extension.
And it has the same effect on V, which also uses F registers (e.f. vfmv.f.s)
So the principle has been F / FD / V + Zfinx meaning something different to F / FD / V but it might be that we need to define different extensions for
Z[fdv]inx – if that’s the right naming so you choose
- F or Zfinx.
- D or Zdinx (which implies Zfinx also)
- V or Zvinx (the naming scheme breaks down a bit here)
So it’s a fundamental question of how we define extensions.
From: tech-unprivileged@... [mailto:tech-unprivileged@...] On Behalf Of Tariq Kurd via lists.riscv.org
Sent: 16 February 2021 12:04
To: tech-unprivileged@...; allen.baum@...
Subject: Re: [RISC-V] [tech-unprivileged] Zfinx and mutated extensions
There are implications for the vector spec as well, e.g.
vfmv.f.s rd, vs2 # f[rd] = vs2 (rs1=0)
vfmv.s.f vd, rs1 # vd = f[rs1] (vs2=0)
which access F registers, so Zfinx will affect the V spec too.
So do we need:
- V and Zfinx specified separately
- Zvinx – combines V and Zfinx extension, incompatible with V
- Ban the combination?
On Behalf Of Allen Baum
Ah, and I just read the entire thread; I may not care, but upstream tools certainly do care.
We do need to watch out for any other extensions that expect to use FPRegs, then.