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