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: sse hates me


> So the other day I fixed the predicates for the SSE and MMX patterns, but
> I failed to fix the constraints.  I left some of the alternatives as 'Y',
> which is SSE2 only, when they should have been 'x', which is SSE1.

Am I right in thinking that the 3.4 branch is still in broken state wrt to 
this problem?  AFAICS you backported some chunks of your initial mainline 
patch to the branch:

2004-12-19  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_hard_regno_mode_ok): Always accept all SSE,
	MMX, 3DNOW modes in SSE registers; always accept all MMX, 3DNOW modes
	in MMX registers.
	* config/i386/i386.h (VALID_SSE2_REG_MODE): Don't include
	VALID_MMX_REG_MODE.
	* config/i386/i386.md (movv4sf_internal, movv4si_internal, 
	movv2di_internal, movv2si_internal, movv4hi_internal,
	movv2sf_internal, movv2df_internal, movv8hi_internal,
	movv16qi_internal, movti_internal): Add leading '*' to name.
	(movv2di_internal, movv2df_internal, movv8hi_internal,
	movv16qi_internal, movv2df, movv8hi, movv16qi, movv2di,
	pushv2di, pushv8hi, pushv16qi): Enable for SSE1.
	(movv2si_internal, movv4hi_internal): Add SSE alternatives.
	(movv8qi_internal, movv2sf_internal): Likewise.
	(movtf): Simplify conditional.
	(movv2sf, pushv2sf): Enable for MMX.

but not the follow-up patch.  Can I ask you again why you backported it?  
AFAICS the reason was your patch for PR target/19010, but it is not clear at 
all that this PR was a regression.

And note that we now have a SSE-related failure on x86 on that branch:

FAIL: gcc.dg/20020218-1.c (test for excess errors)
ERROR: gcc.dg/20020218-1.c: error executing dg-final: couldn't open 
"20020218-1.s": no such file or directory
UNRESOLVED: gcc.dg/20020218-1.c: error executing dg-final: couldn't open 
"20020218-1.s": no such file or directory

20020218-1.c: In function `foo':
20020218-1.c:22: error: insn does not satisfy its constraints:
(insn 79 49 80 0 (set (mem:DI (plus:SI (reg/f:SI 6 bp)
                (const_int -160 [0xffffffffffffff60])) [0 S8 A8])
        (reg:DI 21 xmm0)) 82 {*movdi_2} (nil)
    (nil))
20020218-1.c:22: internal compiler error: in reload_cse_simplify_operands, at 
postreload.c:391
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

-- 
Eric Botcazou


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