* config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
allocator preferences for "y" and "r" class registers.
("*mov<mode>_internal"): Ditto.
("*movv2sf_internal_rex64"): Ditto.
("*movv2sf_internal"): Ditto.
testsuite/ChangeLog:
PR target/14552
* gcc.target/i386/pr14552.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133354
138bc75d-0d04-0410-961f-
82ee72b054a4
+2008-03-20 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/14552
+ * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
+ allocator preferences for "y" and "r" class registers.
+ ("*mov<mode>_internal"): Ditto.
+ ("*movv2sf_internal_rex64"): Ditto.
+ ("*movv2sf_internal"): Ditto.
+
2008-03-19 Michael Matz <matz@suse.de>
PR middle-end/35616
2008-03-19 Michael Matz <matz@suse.de>
PR middle-end/35616
PR target/35540
* config/i386/i386.md (paritysi2, paritydi2): Use register_operand
PR target/35540
* config/i386/i386.md (paritysi2, paritydi2): Use register_operand
- constraint for operand 1.
- (paritysi2_cmp): Use register_operand constraint for operand 2.
+ predicate for operand 1.
+ (paritysi2_cmp): Use register_operand predicate for operand 2.
Use earlyclobber modifier for operand 1. Remove support for
memory operands.
Use earlyclobber modifier for operand 1. Remove support for
memory operands.
- (paritydi2_cmp): Use register_operand constraint for operand 3.
+ (paritydi2_cmp): Use register_operand predicate for operand 3.
Use earlyclobber modifier for operand 1. Remove support for
memory operands.
Use earlyclobber modifier for operand 1. Remove support for
memory operands.
(define_insn "*mov<mode>_internal_rex64"
[(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
(define_insn "*mov<mode>_internal_rex64"
[(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
- "=rm,r,!y,!y ,m ,!y,Y2,x,x ,m,r,x")
+ "=rm,r,!?y,!?y ,m ,!y,Y2,x,x ,m,r,x")
(match_operand:MMXMODEI8 1 "vector_move_operand"
(match_operand:MMXMODEI8 1 "vector_move_operand"
- "Cr ,m,C ,!ym,!y,Y2,!y,C,xm,x,x,r"))]
+ "Cr ,m,C ,!?ym,!?y,Y2,!y,C,xm,x,x,r"))]
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
(define_insn "*mov<mode>_internal"
[(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
(define_insn "*mov<mode>_internal"
[(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
- "=!y,!y ,m ,!y ,*Y2,*Y2,*Y2 ,m ,*x,*x,*x,m ,?r ,?m")
+ "=!?y,!?y,m ,!y ,*Y2,*Y2,*Y2 ,m ,*x,*x,*x,m ,r ,m")
(match_operand:MMXMODEI8 1 "vector_move_operand"
(match_operand:MMXMODEI8 1 "vector_move_operand"
- "C ,!ym,!y,*Y2,!y ,C ,*Y2m,*Y2,C ,*x,m ,*x,irm,r"))]
+ "C ,!ym,!?y,*Y2,!y ,C ,*Y2m,*Y2,C ,*x,m ,*x,irm,r"))]
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
(define_insn "*movv2sf_internal_rex64"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
(define_insn "*movv2sf_internal_rex64"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
- "=rm,r,!y ,!y ,m ,!y,Y2,x,x,x,m,r,x")
+ "=rm,r ,!?y,!?y ,m ,!y,Y2,x,x,x,m,r,x")
(match_operand:V2SF 1 "vector_move_operand"
(match_operand:V2SF 1 "vector_move_operand"
- "Cr ,m ,C ,!ym,!y,Y2,!y,C,x,m,x,x,r"))]
+ "Cr ,m ,C ,!?ym,!y,Y2,!y,C,x,m,x,x,r"))]
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
(define_insn "*movv2sf_internal"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
(define_insn "*movv2sf_internal"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
- "=!y,!y ,m,!y ,*Y2,*x,*x,*x,m ,?r ,?m")
+ "=!?y,!?y ,m ,!y ,*Y2,*x,*x,*x,m ,r ,m")
(match_operand:V2SF 1 "vector_move_operand"
(match_operand:V2SF 1 "vector_move_operand"
- "C ,!ym,!y,*Y2,!y ,C ,*x,m ,*x,irm,r"))]
+ "C ,!?ym,!?y,*Y2,!y ,C ,*x,m ,*x,irm,r"))]
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
+2008-03-20 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/14552
+ * gcc.target/i386/pr14552.c: New test.
+
2008-03-19 Michael Matz <matz@suse.de>
PR middle-end/35616
2008-03-19 Michael Matz <matz@suse.de>
PR middle-end/35616
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2 -mmmx" } */
+
+typedef short mmxw __attribute__ ((vector_size (8)));
+typedef int mmxdw __attribute__ ((vector_size (8)));
+
+mmxdw dw;
+mmxw w;
+
+void test()
+{
+ w+=w;
+ dw= (mmxdw)w;
+}
+
+/* { dg-final { scan-assembler-not "%mm" } } */