[llvm-dev] [RFC] Vector Predication

David Greene via llvm-dev llvm-dev at lists.llvm.org
Thu Feb 7 08:56:30 PST 2019

Simon Moll <moll at cs.uni-saarland.de> writes:

> In unscaled IR types, this means VL masks each scalar result, in
> scaled types VL masks sub vectors. E.g. for %L == 1 the following call
> produces a pair of floats as the result:
>    <scalable 2 x float> evl.fsub(<scalable 2 x float> %x, <scalable 2 x float> %y, <scalable 2 x i1> %M, i32 %L)

That seems wrong to me.  In the SVE proposal, <scalable 2 x float> means
a dynamic vector length guaranteed to be a multiple of 2 floats long.
There is no notion of sub-vector.  The vector length parameter should
result in <scalable 2 x float> result, but where the second float value
is undefined.  It would be surprising to get two full results.  If
sub-vector types were notated as <scalable 1 x <2 x float>> then %L == 1
would result in two full float results.


More information about the llvm-dev mailing list