This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/31485] C complex numbers, amd64 SSE, missed optimization opportunity
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Apr 2010 11:11:03 -0000
- Subject: [Bug rtl-optimization/31485] C complex numbers, amd64 SSE, missed optimization opportunity
- References: <bug-31485-2551@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #7 from rguenth at gcc dot gnu dot org 2010-04-17 11:11 -------
We now have basic-block vectorization but it still works on memory accesses
(visible on the gimple level) only. So it doesn't handle
add1 (ss1 a, ss1 b)
{
float D.3164;
float D.3163;
float b$imag;
float b$real;
float a$imag;
float a$real;
ss1 D.3154;
<bb 2>:
a$real_4 = REALPART_EXPR <a_1(D)>;
a$imag_5 = IMAGPART_EXPR <a_1(D)>;
b$real_6 = REALPART_EXPR <b_2(D)>;
b$imag_7 = IMAGPART_EXPR <b_2(D)>;
D.3163_8 = a$real_4 + b$real_6;
D.3164_9 = a$imag_5 + b$imag_7;
D.3154_3 = COMPLEX_EXPR <D.3163_8, D.3164_9>;
return D.3154_3;
}
though maybe it could be teached to see REAL/IMAG_PART exprs as loads
and COMPLEX_EXPR as store. Ira?
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |irar at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31485