This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix SPEC2000 GCC misscopilation and SIMD support


> On Tue, Dec 10, 2002 at 03:37:49PM +0100, Jan Hubicka wrote:
> > However this function uses CANNOT_CHANGE_MODE_CLASS and will generate
> > (subreg:V2DF (reg:DF xmm0) 0) sequences when CANNOT_CHANGE_MODE_CLASS
> > returns XMM_REGS.
> 
> And why would you have CANNOT_CHANGE_MODE_CLASS prohibit
> paradoxical subregs?
Hmm, this is good question.  You are right, I can prohibit only
the other way around.  My first try was just too zelaous and I didn't
noticed this...

We still may want to generate the other round of subregs when unpacing
scalar floating point values..  Something of the form:

double a;
v2df b;

a=b.0;

This is of course not issue for 3.3 where SSE builtins generate lousy
code in other cases, but in future I think we should manage to convert
a into subreg of b.

Do you see such longer term plan without using the subregs?
I know we do have VEC_SELECT construct that in some ways is equivalent
to SUBREG (ie we can just manage to have VEC_SELECTS in all operations
on a) but that would mean to teach combine, regmove and similar mess
that VEC_SELECT is SUBREG-like construct...

Honza
> 
> 
> r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]