Displaying 6 results from an estimated 6 matches for "__svml_sin8".
Did you mean:
__svml_sin4
2018 Jun 29
2
[RFC][VECLIB] how should we legalize VECLIB calls?
Illustrative Example:
clang -fveclib=SVML -O3 svml.c -mavx
#include <math.h>
void foo(double *a, int N){
int i;
#pragma clang loop vectorize_width(8)
for (i=0;i<N;i++){
a[i] = sin(i);
}
}
Currently, this results in a call to <8 x double> __svml_sin8(<8 x double>) after the vectorizer.
This is 8-element SVML sin() called with 8-element argument. On the surface, this looks very good.
Later on, standard vector type legalization kicks-in but only the argument and return data are legalized.
vmovaps %ymm0, %ymm1
vcvtdq2pd...
2018 Jul 02
8
[RFC][VECLIB] how should we legalize VECLIB calls?
...#pragma clang loop vectorize_width(8)
>
> for (i=0;i<N;i++){
>
> a[i] = sin(i);
>
> }
>
> }
>
>
>
> Currently, this results in a call to <8 x double>
> __svml_sin8(<8 x double>) after the vectorizer.
>
> This is 8-element SVML sin() called with 8-element
> argument. On the surface, this looks very good.
>
> Later on, standard vector type legalization kicks-in but
> only the argument and r...
2018 Jun 29
2
[RFC][VECLIB] how should we legalize VECLIB calls?
...hould we legalize VECLIB calls?
Illustrative Example:
clang -fveclib=SVML -O3 svml.c -mavx
#include <math.h>
void foo(double *a, int N){
int i;
#pragma clang loop vectorize_width(8)
for (i=0;i<N;i++){
a[i] = sin(i);
}
}
Currently, this results in a call to <8 x double> __svml_sin8(<8 x double>) after the vectorizer.
This is 8-element SVML sin() called with 8-element argument. On the surface, this looks very good.
Later on, standard vector type legalization kicks-in but only the argument and return data are legalized.
vmovaps %ymm0, %ymm1
vcvtdq2pd...
2018 Jul 02
2
[RFC][VECLIB] how should we legalize VECLIB calls?
...N){
>>
>> int i;
>>
>> #pragma clang loop vectorize_width(8)
>>
>> for (i=0;i<N;i++){
>>
>> a[i] = sin(i);
>>
>> }
>>
>> }
>>
>>
>>
>> Currently, this results in a call to <8 x double> __svml_sin8(<8 x
>> double>) after the vectorizer.
>>
>> This is 8-element SVML sin() called with 8-element argument. On the
>> surface, this looks very good.
>>
>> Later on, standard vector type legalization kicks-in but only the
>> argument and return data are...
2018 Jul 02
2
[RFC][VECLIB] how should we legalize VECLIB calls?
...> #include <math.h>
>
> void foo(double *a, int N){
>
> int i;
>
> #pragma clang loop vectorize_width(8)
>
> for (i=0;i<N;i++){
>
> a[i] = sin(i);
>
> }
>
> }
>
>
>
> Currently, this results in a call to <8 x double> __svml_sin8(<8 x
> double>) after the vectorizer.
>
> This is 8-element SVML sin() called with 8-element argument. On the
> surface, this looks very good.
>
> Later on, standard vector type legalization kicks-in but only the argument
> and return data are legalized.
>
>...
2018 Jul 04
2
[RFC][VECLIB] how should we legalize VECLIB calls?
...eki.saito at intel.com>;
> Sanjay Patel <spatel at rotateright.com>; mzolotukhin at apple.com
> Cc: dccitaliano at gmail.com; Masten, Matt <matt.masten at intel.com>
> Subject: RE: [llvm-dev] [RFC][VECLIB] how should we legalize VECLIB calls?
>
> Hi Hal,
>
> > __svml_sin8 (plus whatever shuffles are necessary).
> > The vectorizer should do this.
> > It should not generate calls to functions that don't exist.
>
> I'm not sure how vectorizer will do this, consider the case where
> "-vectorizer-maximize-bandwidth" option is enable...