i386.md (*movdi_internal_rex64): Use "!o" constraint instead of "!m" for operand...
authorUros Bizjak <ubizjak@gmail.com>
Fri, 5 Aug 2011 16:06:09 +0000 (18:06 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 5 Aug 2011 16:06:09 +0000 (18:06 +0200)
2011-08-05  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/i386.md (*movdi_internal_rex64): Use "!o" constraint
instead of "!m" for operand 0, alternative 4.
(*movdf_internal_rex64): Ditto for operand 0, alernative 6.

From-SVN: r177463

gcc/ChangeLog
gcc/config/i386/i386.md

index 0d64ae8afad53e62fbfb27baed93768909d9d758..1b5cd35bc30263585f903e5a43885ec1ec270082 100644 (file)
@@ -6,6 +6,9 @@
        (*pushdf_rex64): New pattern, split out of *pushdf.  Use "m"
        constraint instead of "o" for opreand 1.
        (*pushdf): Disable for TARGET_64BIT.  Correct mode attribute.
+       (*movdi_internal_rex64): Use "!o" constraint instead of "!m" for
+       operand 0, alternative 4.
+       (*movdf_internal_rex64): Ditto for operand 0, alernative 6.
 
 2011-08-05  Uros Bizjak  <ubizjak@gmail.com>
 
index c3e74e5bfb1cd073a5b6f859d8c0561230fa3c48..1bea9eecd2071254851ab886eeb87489c4f03006 100644 (file)
 
 (define_insn "*movdi_internal_rex64"
   [(set (match_operand:DI 0 "nonimmediate_operand"
-         "=r,r  ,r,m ,!m,*y,m*y,?*y,?r ,?*Ym,*x,m ,*x,*x,?r ,?*Yi,?*x,?*Ym")
+         "=r,r  ,r,m ,!o,*y,m*y,?*y,?r ,?*Ym,*x,m ,*x,*x,?r ,?*Yi,?*x,?*Ym")
        (match_operand:DI 1 "general_operand"
          "Z ,rem,i,re,n ,C ,*y ,m  ,*Ym,r   ,C ,*x,*x,m ,*Yi,r   ,*Ym,*x"))]
   "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
 
 (define_insn "*movdf_internal_rex64"
   [(set (match_operand:DF 0 "nonimmediate_operand"
-               "=f,m,f,?r,?m,?r,!m,Y2*x,Y2*x,Y2*x,m   ,Yi,r ")
+               "=f,m,f,?r,?m,?r,!o,Y2*x,Y2*x,Y2*x,m   ,Yi,r ")
        (match_operand:DF 1 "general_operand"
                "fm,f,G,rm,r ,F ,F ,C   ,Y2*x,m   ,Y2*x,r ,Yi"))]
   "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))