aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2009-10-07 17:12:00 +0200
committerUros Bizjak <uros@gcc.gnu.org>2009-10-07 17:12:00 +0200
commitf8921d7ddfff1ccf3718d7fb82821ff0dff98708 (patch)
tree1db09a0f288758a24991953178f456259d72f320 /gcc
parent1fc237361486af6ebfd558b03496ce317c0b0434 (diff)
downloadgcc-f8921d7ddfff1ccf3718d7fb82821ff0dff98708.zip
gcc-f8921d7ddfff1ccf3718d7fb82821ff0dff98708.tar.gz
gcc-f8921d7ddfff1ccf3718d7fb82821ff0dff98708.tar.bz2
* config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
*lea_2_rex64): Move before *add<mode>_1 pattern. From-SVN: r152530
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md66
2 files changed, 39 insertions, 34 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 78ae6dd..2893556 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-06 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
+ *lea_2_rex64): Move before *add<mode>_1 pattern.
+
2009-10-07 Jan Hubicka <jh@suse.cz>
* collect2.c (main): Add -fno-whole-program.
@@ -87,7 +92,7 @@
(maybe_add_dllexport) New function.
(i386_pe_adjust_class_at_definition): Use it to propagate dllexport
to class members.
-
+
2009-10-07 Ben Elliston <bje@au.ibm.com>
* config/rs6000/a2.md: Remove duplicated lines.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index d6816ce..d24f7ec 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -6181,6 +6181,39 @@
[(set_attr "type" "alu")
(set_attr "mode" "<MODE>")])
+(define_insn "*lea_1_rex64"
+ [(set (match_operand:DI 0 "register_operand" "=r")
+ (match_operand:DI 1 "no_seg_address_operand" "p"))]
+ "TARGET_64BIT"
+ "lea{q}\t{%a1, %0|%0, %a1}"
+ [(set_attr "type" "lea")
+ (set_attr "mode" "DI")])
+
+(define_insn "*lea_1"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (match_operand:SI 1 "no_seg_address_operand" "p"))]
+ "!TARGET_64BIT"
+ "lea{l}\t{%a1, %0|%0, %a1}"
+ [(set_attr "type" "lea")
+ (set_attr "mode" "SI")])
+
+(define_insn "*lea_1_zext"
+ [(set (match_operand:DI 0 "register_operand" "=r")
+ (zero_extend:DI
+ (subreg:SI (match_operand:DI 1 "no_seg_address_operand" "p") 0)))]
+ "TARGET_64BIT"
+ "lea{l}\t{%a1, %k0|%k0, %a1}"
+ [(set_attr "type" "lea")
+ (set_attr "mode" "SI")])
+
+(define_insn "*lea_2_rex64"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (subreg:SI (match_operand:DI 1 "no_seg_address_operand" "p") 0))]
+ "TARGET_64BIT"
+ "lea{l}\t{%a1, %0|%0, %a1}"
+ [(set_attr "type" "lea")
+ (set_attr "mode" "SI")])
+
(define_insn "*add<mode>_1"
[(set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm,r,r")
(plus:SWI48
@@ -7364,39 +7397,6 @@
[(set_attr "type" "alu")
(set_attr "mode" "QI")])
-(define_insn "*lea_1_rex64"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (match_operand:DI 1 "no_seg_address_operand" "p"))]
- "TARGET_64BIT"
- "lea{q}\t{%a1, %0|%0, %a1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "DI")])
-
-(define_insn "*lea_1"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (match_operand:SI 1 "no_seg_address_operand" "p"))]
- "!TARGET_64BIT"
- "lea{l}\t{%a1, %0|%0, %a1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
-(define_insn "*lea_1_zext"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI
- (subreg:SI (match_operand:DI 1 "no_seg_address_operand" "p") 0)))]
- "TARGET_64BIT"
- "lea{l}\t{%a1, %k0|%k0, %a1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
-(define_insn "*lea_2_rex64"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (subreg:SI (match_operand:DI 1 "no_seg_address_operand" "p") 0))]
- "TARGET_64BIT"
- "lea{l}\t{%a1, %0|%0, %a1}"
- [(set_attr "type" "lea")
- (set_attr "mode" "SI")])
-
;; The lea patterns for non-Pmodes needs to be matched by
;; several insns converted to real lea by splitters.