OSDN Git Service

gcc/
authorjbeulich <jbeulich@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Jul 2005 06:35:48 +0000 (06:35 +0000)
committerjbeulich <jbeulich@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Jul 2005 06:35:48 +0000 (06:35 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102128 138bc75d-0d04-0410-961f-82ee72b054a4

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

index f5896da..5438586 100644 (file)
@@ -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
index d3a085b..e7f2e22 100644 (file)
    (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")
   "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")])
 \f
 ;; Sign extension instructions