diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2012-03-07 20:44:37 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2012-03-07 20:44:37 +0100 |
commit | ca538e973f03b1ad5bf044a8e45f4dcfb13a22f5 (patch) | |
tree | da9275e4e61a4a9248d047e017b8374fe073e7bf /gcc | |
parent | 6ba4f08f3414d327506927c68845cb77864826fe (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 6 | ||||
-rw-r--r-- | gcc/config/i386/predicates.md | 8 |
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") |