-
Bug
-
Resolution: Unresolved
-
P4
-
repo-panama
-
aarch64
-
generic
Currently MaxVector supports SVE well in VectorAPI, which is runtime detected.
The size is hardware implementation defined multiple of 128 bits, up to maximum of 2048 bits.
In current gather/scatter API implementation, there's an "int" vector used as index map.
Therefore for IntMaxVector/FloatMaxVector, index map could be vectorized by the same Vector size.
However, for DoubleMaxVecot/LongMaxVector, index map's size is half of vector size.
E.g. For a SVE maximum vector size of 384, the index map's size for Double/LongMaxVector should be 192.
But there's no existing species of vector for 192 bits.
I would suggest to introduce mask to represent this.
In Double/LongMaxVector's gather/scatter API, we always use IntMaxSpecies for indexMap vectorization and half data is masked.
The size is hardware implementation defined multiple of 128 bits, up to maximum of 2048 bits.
In current gather/scatter API implementation, there's an "int" vector used as index map.
Therefore for IntMaxVector/FloatMaxVector, index map could be vectorized by the same Vector size.
However, for DoubleMaxVecot/LongMaxVector, index map's size is half of vector size.
E.g. For a SVE maximum vector size of 384, the index map's size for Double/LongMaxVector should be 192.
But there's no existing species of vector for 192 bits.
I would suggest to introduce mask to represent this.
In Double/LongMaxVector's gather/scatter API, we always use IntMaxSpecies for indexMap vectorization and half data is masked.