Displaying 20 results from an estimated 24 matches for "notinbranch".
2019 Jun 11
2
RFC: Interface user provided vector functions with the vectorizer.
...ion variant that is a base language identifier, or,
for C++, a template-id.
<simd clauses> := <simdlen>, <mask>{, <optional simd clauses>}
<simdlen> := simdlen(<positive number>) | simdlen("scalable")
<mask> := inbranch | notinbranch
<optional simd clauses> := <linear clause>
| <uniform clause>
| <align clause> | {,<optional simd clauses>}
<linear clause> := linear_ref(<var>,<step>)
| linear_var(<var>,...
2019 Jun 17
3
RFC: Interface user provided vector functions with the vectorizer.
...ge identifier, or,
> for C++, a template-id.
>
> <simd clauses> := <simdlen>, <mask>{, <optional simd clauses>}
>
> <simdlen> := simdlen(<positive number>) | simdlen("scalable")
>
> <mask> := inbranch | notinbranch
>
> <optional simd clauses> := <linear clause>
> | <uniform clause>
> | <align clause> | {,<optional simd clauses>}
>
> <linear clause> := linear_ref(<var>,<step>)
>...
2019 Jun 24
2
RFC: Interface user provided vector functions with the vectorizer.
...a template-id.
>> >
>> > <simd clauses> := <simdlen>, <mask>{, <optional simd clauses>}
>> >
>> > <simdlen> := simdlen(<positive number>) | simdlen("scalable")
>> >
>> > <mask> := inbranch | notinbranch
>> >
>> > <optional simd clauses> := <linear clause>
>> > | <uniform clause>
>> > | <align clause> | {,<optional simd clauses>}
>> >
>> > <linear clause> :...
2019 Jun 21
2
RFC: Interface user provided vector functions with the vectorizer.
...for C++, a template-id.
> >
> > <simd clauses> := <simdlen>, <mask>{, <optional simd clauses>}
> >
> > <simdlen> := simdlen(<positive number>) | simdlen("scalable")
> >
> > <mask> := inbranch | notinbranch
> >
> > <optional simd clauses> := <linear clause>
> > | <uniform clause>
> > | <align clause> | {,<optional simd
> > clauses>}
> >
> > <linear clause> := linear_ref(...
2019 Jun 04
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...st scalable (i.e. vector-length agnostic) functions for SVE.
>
> This would definitely look like implementing `declare variant`, as the attribute would need to accept something like the following:
>
> ```
> . . . __attribute__(simd_variant(“vector_version”,“context={simd(simdlen(2),notinbranch”},device={isa(“simd")}))
> ```
>
> Using the sub-string from the mangled name to me has the following advantages:
>
> 1. No need to deal with `declare variant`.
> 2. [...]
> 3. In terms of usability, there is no need to reinvent the wheel. The
> `declare variant` of...
2019 Jun 24
4
RFC: Interface user provided vector functions with the vectorizer.
...for C++, a template-id.
> >
> > <simd clauses> := <simdlen>, <mask>{, <optional simd clauses>}
> >
> > <simdlen> := simdlen(<positive number>) | simdlen("scalable")
> >
> > <mask> := inbranch | notinbranch
> >
> > <optional simd clauses> := <linear clause>
> > | <uniform clause>
> > | <align clause> | {,<optional simd
> > clauses>}
> >
> > <linear clause> := linear_ref(&...
2019 Jun 24
2
RFC: Interface user provided vector functions with the vectorizer.
>Thank you everybody for their input, and for your patience. This is proving harder than expected! :)
Thank you for doing the hard part of the work.
Hideki
-----Original Message-----
From: Francesco Petrogalli [mailto:Francesco.Petrogalli at arm.com]
Sent: Monday, June 24, 2019 11:26 AM
To: Saito, Hideki <hideki.saito at intel.com>
Cc: Doerfert, Johannes <jdoerfert at anl.gov>;
2018 Nov 30
2
[RFC] Re-implementing -fveclib with OpenMP
Hi all,
I am submitting the following RFC [1] to re-implement -fveclib via OpenMP constructs. The RFC was discussed during a round table at the last LLVM developer meeting, and presented during the BoF [2].
The proposal is published on Phabricator, for the purpose of keeping track of the comments, and it now ready for a review from a wider audience after being polished by Hal Finkel and Hideki
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...x double>(2 x double>).
>
> The problem with this choice is the number of vector version available for a target is not unique.
>
> In particular, the following declaration generates multiple vector versions, depending on the target:
>
> #pragma omp declare simd simdlen(2) notinbranch
> double foo(double) {…};
>
> On x86, this generates at least 4 symbols (one for SSE, one for AVX, one for AVX2, and one for AVX512: https://godbolt.org/z/TLYXPi)
>
> On aarch64, the same declaration generates a unique symbol, as specified in the Vector Function ABI.
>
> Thi...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...>> The problem with this choice is the number of vector version available for a target is not unique.
>>>
>>> In particular, the following declaration generates multiple vector versions, depending on the target:
>>>
>>> #pragma omp declare simd simdlen(2) notinbranch
>>> double foo(double) {…};
>>>
>>> On x86, this generates at least 4 symbols (one for SSE, one for AVX, one for AVX2, and one for AVX512: https://godbolt.org/z/TLYXPi)
>>>
>>> On aarch64, the same declaration generates a unique symbol, as specified in...
2019 May 30
5
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...t;>>> correspondent `#pragma omp declare variant` defined in OpenMP 5.0, as in
>>>>>> the following example.
>>>>>>
>>>>>> #pragma clang declare variant(vector_sinf) \
>>>>>> match(construct=simd(simdlen(4),notinbranch), device={isa("simd")})
>>>>>> extern float sinf(float);
>>>>>>
>>>>>> float32x4_t vector_sinf(float32x4_t x);
>>>>>>
>>>>>> The `construct` set in the directive, together with the `devic...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...hoice is the number of vector version available for a target is not unique.
>>>>>
>>>>> In particular, the following declaration generates multiple vector versions, depending on the target:
>>>>>
>>>>> #pragma omp declare simd simdlen(2) notinbranch
>>>>> double foo(double) {…};
>>>>>
>>>>> On x86, this generates at least 4 symbols (one for SSE, one for AVX, one for AVX2, and one for AVX512: https://godbolt.org/z/TLYXPi)
>>>>>
>>>>> On aarch64, the same declaration ge...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...rsion available for a target is not unique.
>>>>>>>
>>>>>>> In particular, the following declaration generates multiple vector versions, depending on the target:
>>>>>>>
>>>>>>> #pragma omp declare simd simdlen(2) notinbranch
>>>>>>> double foo(double) {…};
>>>>>>>
>>>>>>> On x86, this generates at least 4 symbols (one for SSE, one for AVX, one for AVX2, and one for AVX512: https://godbolt.org/z/TLYXPi)
>>>>>>>
>>>>>>...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...the number of vector version available
> for a target is not unique.
For me, this simply means this mangling scheme is not sufficient.
> In particular, the following declaration generates multiple vector
> versions, depending on the target:
>
> #pragma omp declare simd simdlen(2) notinbranch
> double foo(double) {…};
>
> On x86, this generates at least 4 symbols (one for SSE, one for AVX,
> one for AVX2, and one for AVX512: https://godbolt.org/z/TLYXPi)
>
> On aarch64, the same declaration generates a unique symbol, as
> specified in the Vector Function ABI.
I f...
2019 May 29
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...t; `#pragma clang declare variant` according to the rule defined by the
>> correspondent `#pragma omp declare variant` defined in OpenMP 5.0, as in
>> the following example.
>>
>> #pragma clang declare variant(vector_sinf) \
>> match(construct=simd(simdlen(4),notinbranch), device={isa("simd")})
>> extern float sinf(float);
>>
>> float32x4_t vector_sinf(float32x4_t x);
>>
>> The `construct` set in the directive, together with the `device` set, is
>> used to generate the vector mangled name to be used in the
>...
2019 May 31
5
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...different from declaring these N variants explicitly with the
respective declare variant match clause.
> >> In particular, the following declaration generates multiple vector
> >> versions, depending on the target:
> >>
> >> #pragma omp declare simd simdlen(2) notinbranch
> >> double foo(double) {…};
> >>
> >> On x86, this generates at least 4 symbols (one for SSE, one for AVX,
> >> one for AVX2, and one for AVX512: https://godbolt.org/z/TLYXPi)
> >>
> >> On aarch64, the same declaration generates a unique symb...
2019 May 29
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...ng to the rule defined by the
>>>> correspondent `#pragma omp declare variant` defined in OpenMP 5.0, as in
>>>> the following example.
>>>>
>>>> #pragma clang declare variant(vector_sinf) \
>>>> match(construct=simd(simdlen(4),notinbranch), device={isa("simd")})
>>>> extern float sinf(float);
>>>>
>>>> float32x4_t vector_sinf(float32x4_t x);
>>>>
>>>> The `construct` set in the directive, together with the `device` set, is
>>>> used to gene...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...N variants explicitly with the respective declare variant match clause.
>
>
> > >> In particular, the following declaration generates multiple vector
> > >> versions, depending on the target:
> > >>
> > >> #pragma omp declare simd simdlen(2) notinbranch double foo(double)
> > >> {…};
> > >>
> > >> On x86, this generates at least 4 symbols (one for SSE, one for
> > >> AVX, one for AVX2, and one for AVX512:
> > >> https://godbolt.org/z/TLYXPi)
> > >>
> > >> On a...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...re simd is not target independent. Your expectation are met only inside one target.
>
>>>> In particular, the following declaration generates multiple vector
>>>> versions, depending on the target:
>>>>
>>>> #pragma omp declare simd simdlen(2) notinbranch double foo(double)
>>>> {…};
>>>>
>>>> On x86, this generates at least 4 symbols (one for SSE, one for
>>>> AVX, one for AVX2, and one for AVX512:
>>>> https://godbolt.org/z/TLYXPi)
>>>>
>>>> On aarch64, the sa...
2019 May 31
2
[cfe-dev] [RFC] Expose user provided vector function for auto-vectorization.
...Your expectation are met only inside one target.
>
>
> >
> >>>> In particular, the following declaration generates multiple
> >>>> vector versions, depending on the target:
> >>>>
> >>>> #pragma omp declare simd simdlen(2) notinbranch double
> >>>> foo(double) {…};
> >>>>
> >>>> On x86, this generates at least 4 symbols (one for SSE, one for
> >>>> AVX, one for AVX2, and one for AVX512:
> >>>> https://godbolt.org/z/TLYXPi)
> >>>>
> &g...