PR target/10077
Jan Hubicka
jh@suse.cz
Sun Apr 6 13:01:00 GMT 2003
Nice trap I was thinking about when I was introducing get_insn_mode and
now I've caught myself....
Regtested/bootstrapped both 3.3 and mainline. There are two patches,
one for 3.3 other for mainline, OK?
Honza
Sun Apr 6 14:57:31 CEST 2003 Jan Hubicka <jh@suse.cz.
PR target/10077
* i386.md (movsi_1): Fix SSEMOV alternative.
Index: config/i386/i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.404.2.13
diff -c -3 -p -r1.404.2.13 i386.md
*** config/i386/i386.md 25 Mar 2003 10:30:28 -0000 1.404.2.13
--- config/i386/i386.md 6 Apr 2003 12:56:40 -0000
***************
*** 1101,1119 ****
(set_attr "length_immediate" "1")])
(define_insn "*movsi_1"
! [(set (match_operand:SI 0 "nonimmediate_operand" "=r,m,!*y,!rm,!*y,!*Y,!rm,!*Y")
! (match_operand:SI 1 "general_operand" "rinm,rin,rm,*y,*y,rm,*Y,*Y"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
{
switch (get_attr_type (insn))
{
case TYPE_SSEMOV:
! if (get_attr_mode (insn) == TImode)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
! if (get_attr_mode (insn) == DImode)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
--- 1101,1119 ----
(set_attr "length_immediate" "1")])
(define_insn "*movsi_1"
! [(set (match_operand:SI 0 "nonimmediate_operand" "=r,m,!*y,!rm,!*y,!*Y,!*Y,!rm")
! (match_operand:SI 1 "general_operand" "rinm,rin,rm,*y,*y,*Y,rm,*Y"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
{
switch (get_attr_type (insn))
{
case TYPE_SSEMOV:
! if (get_attr_mode (insn) == MODE_TI)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
! if (get_attr_mode (insn) == MODE_DI)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
Sun Apr 6 14:57:31 CEST 2003 Jan Hubicka <jh@suse.cz.
PR target/10077
* i386.md (movsi_1, movsi_nointerunit_1): Fix SSEMOV alternative.
Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.453
diff -c -3 -p -r1.453 i386.md
*** i386.md 1 Apr 2003 16:26:37 -0000 1.453
--- i386.md 6 Apr 2003 12:59:01 -0000
***************
*** 1170,1181 ****
switch (get_attr_type (insn))
{
case TYPE_SSEMOV:
! if (get_attr_mode (insn) == TImode)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
! if (get_attr_mode (insn) == DImode)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
--- 1170,1181 ----
switch (get_attr_type (insn))
{
case TYPE_SSEMOV:
! if (get_attr_mode (insn) == MODE_TI)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
! if (get_attr_mode (insn) == MODE_DI)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
***************
*** 1209,1220 ****
switch (get_attr_type (insn))
{
case TYPE_SSEMOV:
! if (get_attr_mode (insn) == TImode || which_alternative == 9)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
! if (get_attr_mode (insn) == DImode)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
--- 1209,1220 ----
switch (get_attr_type (insn))
{
case TYPE_SSEMOV:
! if (get_attr_mode (insn) == MODE_TI)
return "movdqa\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
! if (get_attr_mode (insn) == MODE_DI)
return "movq\t{%1, %0|%0, %1}";
return "movd\t{%1, %0|%0, %1}";
More information about the Gcc-patches
mailing list