diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2009-10-07 17:12:00 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2009-10-07 17:12:00 +0200 |
commit | f8921d7ddfff1ccf3718d7fb82821ff0dff98708 (patch) | |
tree | 1db09a0f288758a24991953178f456259d72f320 | |
parent | 1fc237361486af6ebfd558b03496ce317c0b0434 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 66 |
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. |