2 ms·
Fortunately 16-byte tables are the good case that always fits into a LMUL=1 register under the standard V extension. I do agree however, this would result in b
by camel-cdr 2y ago
Fortunately 16-byte tables are the good case that always fits into a LMUL=1 register under the standard V extension.
I do agree however, this would result in bad performance for VLEN>128 and VLEN<DLEN implementations.
Adding a gather instructions limited to 16 elements might be a solution, however it could also result in vendors feeling more free to have a slower LMUL=1 vrgahter, that still needs to perform reasonably. The LMUL=1 and 16 element vrgahters are the most common cases.
IMO the software ecosystem needs to steer the hardware here, in place of ARM for neon, and Intel/AMD for AVX, stopping people from implementations with disproportionately slow permutes. People can't expect to put a ML core, like the X280, as the main CPU on a regular desktop class processor and expect general purpose software to be optimized on it.
I suppose this could be added to the RVA profile as well, but they don't want to specify micro architectural details, so what does it mean for an instruction to be fast?
Maybe there could be a non-normative clause that software is expected to use LMUL=1 vrgather for LUTs and other shuffles inside of hot loops.
I suppose creating an issue regarding this can't hurt, so I'll look into it.