[Bug middle-end/60089] Complex arithmetic instructions

2021-11-28 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60089

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||missed-optimization

--- Comment #5 from Andrew Pinski  ---
The way we model these instructions these days is using vector modes.

[Bug middle-end/60089] Complex arithmetic instructions

2014-02-06 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60089

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-06
  Component|rtl-optimization|middle-end
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
You'd need to disable complex lowering at the GIMPLE level and see what
support is missing from RTL expansion for example.

For the disabling I'd suggest adding a target hook (if it at any point is
supposed to go upstream).


[Bug middle-end/60089] Complex arithmetic instructions

2014-02-06 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60089

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 CC||ubizjak at gmail dot com

--- Comment #2 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Richard Biener from comment #1)

 For the disabling I'd suggest adding a target hook (if it at any point is
 supposed to go upstream).

This target hook would be handy also for x86_64, which passes packed complex
SFmode values to and from function:

Following test:

_Complex float testf (_Complex float a, _Complex float b)
{
return a + b;
}

produces (-O2):

testf:
movq%xmm0, -8(%rsp)
movq%xmm1, -16(%rsp)
movss   -4(%rsp), %xmm0
movss   -8(%rsp), %xmm1
addss   -12(%rsp), %xmm0
addss   -16(%rsp), %xmm1
movss   %xmm0, -20(%rsp)
movss   %xmm1, -24(%rsp)
movq-24(%rsp), %xmm0
ret

Yes, indeed.

[Bug middle-end/60089] Complex arithmetic instructions

2014-02-06 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60089

--- Comment #3 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Richard Biener from comment #1)
 You'd need to disable complex lowering at the GIMPLE level and see what
 support is missing from RTL expansion for example.
 
 For the disabling I'd suggest adding a target hook (if it at any point is
 supposed to go upstream).

Couldn't the complex lowering pass check optab, like vector lowering does?


[Bug middle-end/60089] Complex arithmetic instructions

2014-02-06 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60089

--- Comment #4 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
Is the complex multiplication instruction C99 Annex G-conforming, or could 
it only be used for -fcx-limited-range?