Displaying 3 results from an estimated 3 matches for "vector_vari".
Did you mean:
vector_arg
2019 Jun 10
2
[RFC] Expose user provided vector function for auto-vectorization.
...`"logically"-widened alwaysinline wrapper for the vector function`? Can you provide an example? Also, what is the `tricky processing` you are referring to that the vectorizer should care about?
For the case mentioned earlier:
float MyAdd(float* a, int b) { return *a + b; }
__declspec(vector_variant(implements(MyAdd(float *a, int b)),
linear(a), vectorlength(8),
nomask, processor(core_2nd_gen_avx)))
__m256 __regcall MyAddVec(float* v_a, __m128i v_b1, __m128i v_b2)
If FE emitted
;; Alwaysinline
define <8 x float> @MyAddVec.abi_wrappe...
2019 Jun 10
2
[RFC] Expose user provided vector function for auto-vectorization.
...to move away from `declare variant`.
>
> Where will the mapping between parameters positions be stored? Using the example from https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-vector-variant:
>
> float MyAdd(float* a, int b) { return *a + b; }
> __declspec(vector_variant(implements(MyAdd(float *a, int b)),
> linear(a), vectorlength(8),
> nomask, processor(core_2nd_gen_avx)))
> __m256 __regcall MyAddVec(float* v_a, __m128i v_b1, __m128i v_b2)
>
> We need somehow communicate which lanes of widened &q...
2019 Jun 07
2
[RFC] Expose user provided vector function for auto-vectorization.
...and for which I decided to move away from `declare variant`.
Where will the mapping between parameters positions be stored? Using the example from https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-vector-variant:
float MyAdd(float* a, int b) { return *a + b; }
__declspec(vector_variant(implements(MyAdd(float *a, int b)),
linear(a), vectorlength(8),
nomask, processor(core_2nd_gen_avx)))
__m256 __regcall MyAddVec(float* v_a, __m128i v_b1, __m128i v_b2)
We need somehow communicate which lanes of widened "b" woul...