OSDN Git Service

Replace q_regs_operand with QIreg_operand in QI ext patterns.
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 May 2011 16:19:36 +0000 (16:19 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 May 2011 16:19:36 +0000 (16:19 +0000)
2011-05-25  H.J. Lu  <hongjiu.lu@intel.com>

PR target/49142
* config/i386/i386.md (*movqi_extv_1_rex64): Remove
"register_operand" check and replace q_regs_operand with
QIreg_operand in "type" calculation.
(*movqi_extv_1): Likewise.
(*movqi_extzv_2_rex64): Likewise.
(*movqi_extzv_2): Likewise.

* config/i386/predicates.md (QIreg_operand): New.

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

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

index a22c5d5..620acbb 100644 (file)
@@ -1,3 +1,15 @@
+2011-05-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/49142
+       * config/i386/i386.md (*movqi_extv_1_rex64): Remove
+       "register_operand" check and replace q_regs_operand with
+       QIreg_operand in "type" calculation.
+       (*movqi_extv_1): Likewise.
+       (*movqi_extzv_2_rex64): Likewise.
+       (*movqi_extzv_2): Likewise.
+
+       * config/i386/predicates.md (QIreg_operand): New.
+
 2011-05-25  Richard Guenther  <rguenther@suse.de>
 
        * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Fix
index 801573c..1cdbe7e 100644 (file)
     }
 }
   [(set (attr "type")
-     (if_then_else (and (match_operand:QI 0 "register_operand" "")
-                       (ior (not (match_operand:QI 0 "q_regs_operand" ""))
-                            (ne (symbol_ref "TARGET_MOVX")
-                                (const_int 0))))
+     (if_then_else (ior (not (match_operand:QI 0 "QIreg_operand" ""))
+                       (ne (symbol_ref "TARGET_MOVX")
+                           (const_int 0)))
        (const_string "imovx")
        (const_string "imov")))
    (set (attr "mode")
     }
 }
   [(set (attr "type")
-     (if_then_else (and (match_operand:QI 0 "register_operand" "")
-                       (ior (not (match_operand:QI 0 "q_regs_operand" ""))
-                            (ne (symbol_ref "TARGET_MOVX")
-                                (const_int 0))))
+     (if_then_else (ior (not (match_operand:QI 0 "QIreg_operand" ""))
+                       (ne (symbol_ref "TARGET_MOVX")
+                           (const_int 0)))
        (const_string "imovx")
        (const_string "imov")))
    (set (attr "mode")
     }
 }
   [(set (attr "type")
-     (if_then_else (ior (not (match_operand:QI 0 "q_regs_operand" ""))
+     (if_then_else (ior (not (match_operand:QI 0 "QIreg_operand" ""))
                        (ne (symbol_ref "TARGET_MOVX")
                            (const_int 0)))
        (const_string "imovx")
     }
 }
   [(set (attr "type")
-     (if_then_else (and (match_operand:QI 0 "register_operand" "")
-                       (ior (not (match_operand:QI 0 "q_regs_operand" ""))
-                            (ne (symbol_ref "TARGET_MOVX")
-                                (const_int 0))))
+     (if_then_else (ior (not (match_operand:QI 0 "QIreg_operand" ""))
+                       (ne (symbol_ref "TARGET_MOVX")
+                           (const_int 0)))
        (const_string "imovx")
        (const_string "imov")))
    (set (attr "mode")
index 8a89f70..1471f5a 100644 (file)
   (and (match_code "reg")
        (match_test "REGNO (op) == FLAGS_REG")))
 
+;; Return true if op is one of QImode registers: %[abcd][hl].
+(define_predicate "QIreg_operand"
+  (match_test "QI_REG_P (op)"))
+
 ;; Return true if op is a QImode register operand other than
 ;; %[abcd][hl].
 (define_predicate "ext_QIreg_operand"