OSDN Git Service

PR target/49781
[pf3gnuchains/gcc-fork.git] / gcc / config / i386 / i386.md
index 1b37118..e61b0f4 100644 (file)
    (set_attr "mode" "QI")])
 
 (define_insn "*lea_1"
+  [(set (match_operand:SI 0 "register_operand" "=r")
+       (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0))]
+  "TARGET_64BIT"
+  "lea{l}\t{%a1, %0|%0, %a1}"
+  [(set_attr "type" "lea")
+   (set_attr "mode" "SI")])
+
+(define_insn "*lea<mode>_2"
   [(set (match_operand:SWI48 0 "register_operand" "=r")
        (match_operand:SWI48 1 "lea_address_operand" "p"))]
   ""
   [(set_attr "type" "lea")
    (set_attr "mode" "<MODE>")])
 
-(define_insn "*lea_1_zext"
+(define_insn "*lea_3_zext"
+  [(set (match_operand:DI 0 "register_operand" "=r")
+       (zero_extend:DI
+         (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0)))]
+  "TARGET_64BIT"
+  "lea{l}\t{%a1, %k0|%k0, %a1}"
+  [(set_attr "type" "lea")
+   (set_attr "mode" "SI")])
+
+(define_insn "*lea_4_zext"
   [(set (match_operand:DI 0 "register_operand" "=r")
        (zero_extend:DI
          (match_operand:SI 1 "lea_address_operand" "p")))]
   [(set_attr "type" "lea")
    (set_attr "mode" "SI")])
 
-(define_insn "*lea_2"
-  [(set (match_operand:SI 0 "register_operand" "=r")
-       (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0))]
+(define_insn "*lea_5_zext"
+  [(set (match_operand:DI 0 "register_operand" "=r")
+       (and:DI
+         (subreg:DI (match_operand:SI 1 "lea_address_operand" "p") 0)
+         (match_operand:DI 2 "const_32bit_mask" "n")))]
   "TARGET_64BIT"
-  "lea{l}\t{%a1, %0|%0, %a1}"
+  "lea{l}\t{%a1, %k0|%k0, %a1}"
   [(set_attr "type" "lea")
    (set_attr "mode" "SI")])
 
-(define_insn "*lea_2_zext"
+(define_insn "*lea_6_zext"
   [(set (match_operand:DI 0 "register_operand" "=r")
-       (zero_extend:DI
-         (subreg:SI (match_operand:DI 1 "lea_address_operand" "p") 0)))]
+       (and:DI
+         (match_operand:DI 1 "lea_address_operand" "p")
+         (match_operand:DI 2 "const_32bit_mask" "n")))]
   "TARGET_64BIT"
   "lea{l}\t{%a1, %k0|%k0, %a1}"
   [(set_attr "type" "lea")