i386.md (movdi_extzv_1): New.
authorJan Beulich <jbeulich@novell.com>
Mon, 18 Jul 2005 06:35:48 +0000 (06:35 +0000)
committerJan Beulich <jbeulich@gcc.gnu.org>
Mon, 18 Jul 2005 06:35:48 +0000 (06:35 +0000)
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

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

index f5896dabcd1614d687dc4f3265a92948eb21b162..543858647c0479f2c4b0926b99ca09cb88abd391 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 d3a085b9f97da4e72faf00d39a4f719d164af908..e7f2e222dfd003232be356e2650f7ef8330937c3 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