aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-10-24 21:04:49 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-10-24 21:04:49 -0700
commitad678cb0edb5e83aec891771440bc21b45868172 (patch)
tree078492d40468fac5f42ed79228faef006e8e6ac0
parentf77e39fc59c3343d695b3de390e6bfa7718df215 (diff)
downloadgcc-ad678cb0edb5e83aec891771440bc21b45868172.zip
gcc-ad678cb0edb5e83aec891771440bc21b45868172.tar.gz
gcc-ad678cb0edb5e83aec891771440bc21b45868172.tar.bz2
i386.md (*lea_0): Collapse addsi_0, addsi_lea_[123] into a single load-address pattern.
* i386.md (*lea_0): Collapse addsi_0, addsi_lea_[123] into a single load-address pattern. From-SVN: r30152
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.md52
2 files changed, 8 insertions, 49 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dbf80de..b02d218 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Sun Oct 24 21:02:46 1999 Richard Henderson <rth@cygnus.com>
+
+ * i386.md (*lea_0): Collapse addsi_0, addsi_lea_[123] into
+ a single load-address pattern.
+
Sun Oct 24 19:33:24 1999 Mark P. Mitchell <mark@codesourcery.com>
* haifa-sched.c (schedule_insns): Don't assign LUIDs differently
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index e6c3ddc..7807b7b 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2994,16 +2994,11 @@
""
"ix86_expand_binary_operator (PLUS, SImode, operands); DONE;")
-(define_insn "*addsi_0"
+(define_insn "*lea_0"
[(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (match_operand:SI 1 "register_operand" "r")
- (match_operand:SI 2 "nonmemory_operand" "rni")))]
+ (match_operand:SI 1 "address_operand" "p"))]
""
- "*
-{
- operands[1] = SET_SRC (PATTERN (insn));
- return \"lea{l}\\t{%a1, %0|%0, %a1}\";
-}"
+ "lea{l}\\t{%a1, %0|%0, %a1}"
[(set_attr "type" "lea")])
(define_insn "*addsi_1"
@@ -3120,47 +3115,6 @@
"add{l}\\t{%2, %0|%0, %2}"
[(set_attr "type" "alu")])
-;; %%% Conditionally split these post-reload for better scheduling.
-(define_insn "*addsi_lea_1"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
- (match_operand:SI 2 "register_operand" "%r"))
- (match_operand:SI 3 "immediate_operand" "i")))]
- ""
- "*
-{
- operands[1] = SET_SRC (PATTERN (insn));
- return \"lea{l}\\t{%a1, %0|%0, %a1}\";
-}"
- [(set_attr "type" "lea")])
-
-(define_insn "*addsi_lea_2"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (mult:SI (match_operand:SI 1 "reg_no_sp_operand" "r")
- (match_operand:SI 2 "const248_operand" "I"))
- (match_operand:SI 3 "nonmemory_operand" "ir")))]
- ""
- "*
-{
- operands[1] = SET_SRC (PATTERN (insn));
- return \"lea{l}\\t{%a1, %0|%0, %a1}\";
-}"
- [(set_attr "type" "lea")])
-
-(define_insn "*addsi_lea_3"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (plus:SI (plus:SI (mult:SI (match_operand:SI 1 "reg_no_sp_operand" "r")
- (match_operand:SI 2 "const248_operand" "I"))
- (match_operand:SI 3 "register_operand" "%r"))
- (match_operand:SI 4 "immediate_operand" "i")))]
- ""
- "*
-{
- operands[1] = SET_SRC (PATTERN (insn));
- return \"lea{l}\\t{%a1, %0|%0, %a1}\";
-}"
- [(set_attr "type" "lea")])
-
(define_expand "addhi3"
[(parallel [(set (match_operand:HI 0 "general_operand" "")
(plus:HI (match_operand:HI 1 "nonimmediate_operand" "")