aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2005-07-18 06:35:48 +0000
committerJan Beulich <jbeulich@gcc.gnu.org>2005-07-18 06:35:48 +0000
commit422edd6fff341fb237a5fab947a1356f94172953 (patch)
tree900b54722ddfc741e98e87750e75debf5ee83456
parentba9bb602ee11a1ff57e4d753cfc15644fdd23cab (diff)
downloadgcc-422edd6fff341fb237a5fab947a1356f94172953.zip
gcc-422edd6fff341fb237a5fab947a1356f94172953.tar.gz
gcc-422edd6fff341fb237a5fab947a1356f94172953.tar.bz2
i386.md (movdi_extzv_1): New.
gcc/ 2005-07-18 Jan Beulich <jbeulich@novell.com> * i386.md (movdi_extzv_1): New. (zero_extendhidi2): Combine alternatives and never force use of REX64 prefix. (zero_extendqidi2): Likewise. Don't restrict input selection. From-SVN: r102128
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md30
2 files changed, 25 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f5896da..5438586 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-07-18 Jan Beulich <jbeulich@novell.com>
+
+ * i386.md (movdi_extzv_1): New.
+ (zero_extendhidi2): Combine alternatives and never force use of
+ REX64 prefix.
+ (zero_extendqidi2): Likewise. Don't restrict input selection.
+
2005-07-17 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/22531
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index d3a085b..e7f2e22 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -1685,6 +1685,16 @@
(set_attr "memory" "load")
(set_attr "mode" "QI")])
+(define_insn "*movdi_extzv_1"
+ [(set (match_operand:DI 0 "register_operand" "=R")
+ (zero_extract:DI (match_operand 1 "ext_register_operand" "Q")
+ (const_int 8)
+ (const_int 8)))]
+ "TARGET_64BIT"
+ "movz{bl|x}\t{%h1, %k0|%k0, %h1}"
+ [(set_attr "type" "imovx")
+ (set_attr "mode" "DI")])
+
(define_insn "*movsi_extzv_1"
[(set (match_operand:SI 0 "register_operand" "=R")
(zero_extract:SI (match_operand 1 "ext_register_operand" "Q")
@@ -3189,24 +3199,20 @@
"split_di (&operands[0], 1, &operands[3], &operands[4]);")
(define_insn "zero_extendhidi2"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
+ [(set (match_operand:DI 0 "register_operand" "=r")
+ (zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "rm")))]
"TARGET_64BIT"
- "@
- movz{wl|x}\t{%1, %k0|%k0, %1}
- movz{wq|x}\t{%1, %0|%0, %1}"
+ "movz{wl|x}\t{%1, %k0|%k0, %1}"
[(set_attr "type" "imovx")
- (set_attr "mode" "SI,DI")])
+ (set_attr "mode" "DI")])
(define_insn "zero_extendqidi2"
- [(set (match_operand:DI 0 "register_operand" "=r,r")
- (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "Q,m")))]
+ [(set (match_operand:DI 0 "register_operand" "=r")
+ (zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "rm")))]
"TARGET_64BIT"
- "@
- movz{bl|x}\t{%1, %k0|%k0, %1}
- movz{bq|x}\t{%1, %0|%0, %1}"
+ "movz{bl|x}\t{%1, %k0|%k0, %1}"
[(set_attr "type" "imovx")
- (set_attr "mode" "SI,DI")])
+ (set_attr "mode" "DI")])
;; Sign extension instructions