]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
predicates.md (x86_64_zext_general_operand): New.
authorUros Bizjak <ubizjak@gmail.com>
Wed, 7 Mar 2012 19:44:37 +0000 (20:44 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 7 Mar 2012 19:44:37 +0000 (20:44 +0100)
* config/i386/predicates.md (x86_64_zext_general_operand): New.
* config/i386/i386.md (*zero_extendsidi2_rex64): Change operand 1
predicate to x86_64_zext_general_operand.  Accept "Z" constraint.

From-SVN: r185073

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

index 055832b510311cd2bd9370b0a145f5aa01c174e9..f240c15c2f322a2911e8a7ab7a71a3f363b1f1c5 100644 (file)
@@ -1,3 +1,9 @@
+2012-03-07  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/predicates.md (x86_64_zext_general_operand): New.
+       * config/i386/i386.md (*zero_extendsidi2_rex64): Change operand 1
+       predicate to x86_64_zext_general_operand.  Accept "Z" constraint.
+
 2012-03-07  Walter Lee  <walt@tilera.com>
 
        * config/tilegx/tilegx.c (tilegx_expand_prologue): Don't generate
index f000cc6a271b2969c599fcb5d1ec8d575d604a60..a67a5e715c157bc734a02ded9c46be8a11bcafd2 100644 (file)
 
 (define_insn "*zero_extendsidi2_rex64"
   [(set (match_operand:DI 0 "nonimmediate_operand"
-                       "=r,o,?*Ym,?*y,?*Yi,!*x")
+                       "=r ,o,?*Ym,?*y,?*Yi,!*x")
        (zero_extend:DI
-        (match_operand:SI 1 "nonimmediate_operand"
-                       "rm,0,r   ,m  ,r   ,m*x")))]
+        (match_operand:SI 1 "x86_64_zext_general_operand"
+                       "rmZ,0,r   ,m  ,r   ,m*x")))]
   "TARGET_64BIT"
   "@
    mov{l}\t{%1, %k0|%k0, %1}
index 32f73dacdd8da5c267cb0ef062ecabdbb18505d4..402e79acc3790b6c6b60deb909a3e71c3ac72028 100644 (file)
         (match_operand 0 "x86_64_immediate_operand"))
     (match_operand 0 "general_operand")))
 
+;; Return true if OP is general operand representable on x86_64
+;; as zero extended constant.
+(define_predicate "x86_64_zext_general_operand"
+  (if_then_else (match_test "TARGET_64BIT")
+    (ior (match_operand 0 "nonimmediate_operand")
+        (match_operand 0 "x86_64_zext_immediate_operand"))
+    (match_operand 0 "general_operand")))
+
 ;; Return true if OP is general operand representable on x86_64
 ;; as either sign extended or zero extended constant.
 (define_predicate "x86_64_szext_general_operand"