public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/102575] New: Failure to optimize double _Complex stores to use largest loads/stores possible
@ 2021-10-03 14:01 gabravier at gmail dot com
2021-10-03 18:48 ` [Bug tree-optimization/102575] " pinskia at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: gabravier at gmail dot com @ 2021-10-03 14:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102575
Bug ID: 102575
Summary: Failure to optimize double _Complex stores to use
largest loads/stores possible
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: gabravier at gmail dot com
Target Milestone: ---
void test(double _Complex *a)
{
a[0] = 1;
a[1] = 1;
}
With -O3, on AMD64 GCC outputs this:
test(double _Complex*):
movsd xmm1, QWORD PTR .LC0[rip]
movsd xmm0, QWORD PTR .LC0[rip+8]
movsd QWORD PTR [rdi], xmm1
movsd QWORD PTR [rdi+8], xmm0
movsd QWORD PTR [rdi+16], xmm1
movsd QWORD PTR [rdi+24], xmm0
ret
Clang instead outputs this:
test(double _Complex*):
movsd xmm0, qword ptr [rip + .LCPI0_0] # xmm0 = mem[0],zero
movups xmmword ptr [rdi], xmm0
movups xmmword ptr [rdi + 16], xmm0
ret
It seems to me like the second output should always be faster.
PS: The difference is even larger with `-mavx2`.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/102575] Failure to optimize double _Complex stores to use largest loads/stores possible
2021-10-03 14:01 [Bug target/102575] New: Failure to optimize double _Complex stores to use largest loads/stores possible gabravier at gmail dot com
@ 2021-10-03 18:48 ` pinskia at gcc dot gnu.org
2021-10-04 7:21 ` rguenth at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-10-03 18:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102575
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|target |tree-optimization
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2021-10-03
Severity|normal |enhancement
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
/app/example.cpp:5:1: note: === vect_slp_analyze_bb ===
/app/example.cpp:5:1: note: === vect_analyze_data_refs ===
/app/example.cpp:5:1: missed: not vectorized: no vectype for stmt: *a_2(D) =
__complex__ (1.0e+0, 0.0);
scalar_type: complex double
/app/example.cpp:5:1: missed: not vectorized: no vectype for stmt:
MEM[(complex double *)a_2(D) + 16B] = __complex__ (1.0e+0, 0.0);
scalar_type: complex double
/app/example.cpp:5:1: note: === vect_analyze_data_ref_accesses ===
/app/example.cpp:5:1: missed: not vectorized: no grouped stores in basic
block.
/app/example.cpp:5:1: note: ***** Analysis failed with vector mode VOID
void test (complex double * a)
Yes SLP does not understand how to handle complex double
And then expand splits the complex type store into two different stores.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/102575] Failure to optimize double _Complex stores to use largest loads/stores possible
2021-10-03 14:01 [Bug target/102575] New: Failure to optimize double _Complex stores to use largest loads/stores possible gabravier at gmail dot com
2021-10-03 18:48 ` [Bug tree-optimization/102575] " pinskia at gcc dot gnu.org
@ 2021-10-04 7:21 ` rguenth at gcc dot gnu.org
2022-07-20 8:18 ` crazylht at gmail dot com
2022-07-20 9:06 ` rguenth at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-10-04 7:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102575
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu.org
Blocks| |53947
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
The vectorizer doesn't like vector or complex typed loads and stores (and it
starts before SLP). There are duplicate bugreports and it's unfortunately not
as easy as it looks like.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
[Bug 53947] [meta-bug] vectorizer missed-optimizations
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/102575] Failure to optimize double _Complex stores to use largest loads/stores possible
2021-10-03 14:01 [Bug target/102575] New: Failure to optimize double _Complex stores to use largest loads/stores possible gabravier at gmail dot com
2021-10-03 18:48 ` [Bug tree-optimization/102575] " pinskia at gcc dot gnu.org
2021-10-04 7:21 ` rguenth at gcc dot gnu.org
@ 2022-07-20 8:18 ` crazylht at gmail dot com
2022-07-20 9:06 ` rguenth at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: crazylht at gmail dot com @ 2022-07-20 8:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102575
Hongtao.liu <crazylht at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |crazylht at gmail dot com
--- Comment #3 from Hongtao.liu <crazylht at gmail dot com> ---
This should be fixed by r13-1762-gf9d4c3b45c5ed5f45c8089c990dbd4e181929c3d
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/102575] Failure to optimize double _Complex stores to use largest loads/stores possible
2021-10-03 14:01 [Bug target/102575] New: Failure to optimize double _Complex stores to use largest loads/stores possible gabravier at gmail dot com
` (2 preceding siblings ...)
2022-07-20 8:18 ` crazylht at gmail dot com
@ 2022-07-20 9:06 ` rguenth at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-07-20 9:06 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102575
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|NEW |RESOLVED
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Thanks Hongtao
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-07-20 9:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-03 14:01 [Bug target/102575] New: Failure to optimize double _Complex stores to use largest loads/stores possible gabravier at gmail dot com
2021-10-03 18:48 ` [Bug tree-optimization/102575] " pinskia at gcc dot gnu.org
2021-10-04 7:21 ` rguenth at gcc dot gnu.org
2022-07-20 8:18 ` crazylht at gmail dot com
2022-07-20 9:06 ` rguenth at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).