aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2012-03-07 20:44:37 +0100
committerUros Bizjak <uros@gcc.gnu.org>2012-03-07 20:44:37 +0100
commitca538e973f03b1ad5bf044a8e45f4dcfb13a22f5 (patch)
treeda9275e4e61a4a9248d047e017b8374fe073e7bf /gcc
parent6ba4f08f3414d327506927c68845cb77864826fe (diff)
downloadgcc-ca538e973f03b1ad5bf044a8e45f4dcfb13a22f5.zip
gcc-ca538e973f03b1ad5bf044a8e45f4dcfb13a22f5.tar.gz
gcc-ca538e973f03b1ad5bf044a8e45f4dcfb13a22f5.tar.bz2
predicates.md (x86_64_zext_general_operand): New.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md6
-rw-r--r--gcc/config/i386/predicates.md8
3 files changed, 17 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 055832b..f240c15 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index f000cc6..a67a5e7 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -3377,10 +3377,10 @@
(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}
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md
index 32f73da..402e79a 100644
--- a/gcc/config/i386/predicates.md
+++ b/gcc/config/i386/predicates.md
@@ -341,6 +341,14 @@
(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"
(if_then_else (match_test "TARGET_64BIT")