[Bug target/36840] Fortran complex array multiply missed optimization
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Wed Jul 23 09:38:00 GMT 2008
------- Comment #3 from rguenth at gcc dot gnu dot org 2008-07-23 09:37 -------
The problem is that SLP and the reduction operation do not mix and that the
vectorizer doesn't understand the complex component accessors.
<bb 4>:
# S.4_40 = PHI <S.4_33(5), 1(3)>
D.1045_26 = S.4_40 + -1;
CR.27_44 = REALPART_EXPR <(*iy_27(D))[D.1045_26]>;
CI.28_45 = IMAGPART_EXPR <(*iy_27(D))[D.1045_26]>;
CR.29_46 = REALPART_EXPR <(*ix_30(D))[D.1045_26]>;
CI.30_47 = IMAGPART_EXPR <(*ix_30(D))[D.1045_26]>;
D.1076_48 = CR.27_44 * CR.29_46;
D.1077_49 = CI.28_45 * CI.30_47;
D.1078_50 = CR.27_44 * CI.30_47;
D.1079_51 = CI.28_45 * CR.29_46;
CR.31_52 = D.1076_48 - D.1077_49;
CI.32_53 = D.1078_50 + D.1079_51;
REALPART_EXPR <(*iy_27(D))[D.1045_26]> = CR.31_52;
IMAGPART_EXPR <(*iy_27(D))[D.1045_26]> = CI.32_53;
S.4_33 = S.4_40 + 1;
if (size.3_4 < S.4_33)
there are bugs about this already.
For the specific task of complex operations we can possibly change the
complex-lowering code to directly generate the vectorized equivalent,
though of course teaching the vectorizer to handle the above would be
more useful.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |irar at il dot ibm dot com
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2008-07-23 09:37:26
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36840
More information about the Gcc-bugs
mailing list