search for: notinbranch

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 &gt...
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...