[Bug target/87767] Missing AVX512 memory broadcast for constant vector
kretz at kde dot org
gcc-bugzilla@gcc.gnu.org
Tue Sep 3 08:15:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87767
Matthias Kretz <kretz at kde dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kretz at kde dot org
--- Comment #3 from Matthias Kretz <kretz at kde dot org> ---
Here's a link to quickly survey the state of the optimization:
https://godbolt.org/z/P8FFSB
The broadcast contraction generally exists for 32 and 64 bit operands (i.e. 8
and 16 bit integers do not support memory broadcasts).
Note that I also added 8 Byte vectors of float and int into my test case. Those
should also use the {1to4} broadcast.
Test case (C++14):
auto f(float a [[gnu::vector_size(64)]]) {
return a OP 101;
}
auto f(float a [[gnu::vector_size(32)]]) {
return a OP 101;
}
auto f(float a [[gnu::vector_size(16)]]) {
return a OP 101;
}
auto f(float a [[gnu::vector_size(8)]]) {
return a OP 101;
}
auto f(double a [[gnu::vector_size(64)]]) {
return a OP 101;
}
auto f(double a [[gnu::vector_size(32)]]) {
return a OP 101;
}
auto f(double a [[gnu::vector_size(16)]]) {
return a OP 101;
}
auto f(int a [[gnu::vector_size(64)]]) {
return a OP 101;
}
auto f(int a [[gnu::vector_size(32)]]) {
return a OP 101;
}
auto f(int a [[gnu::vector_size(16)]]) {
return a OP 101;
}
auto f(int a [[gnu::vector_size(8)]]) {
return a OP 101;
}
auto f(long long a [[gnu::vector_size(64)]]) {
return a OP 101;
}
auto f(long long a [[gnu::vector_size(32)]]) {
return a OP 101;
}
auto f(long long a [[gnu::vector_size(16)]]) {
return a OP 101;
}
More information about the Gcc-bugs
mailing list