diff options
author | Jeff Law <law@redhat.com> | 2018-06-29 12:42:35 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2018-06-29 12:42:35 -0600 |
commit | bc5e6ab6955ed3cbc8affef42cf7af52e0a9750a (patch) | |
tree | b0ab736f719a083add475f59cca5b780985ff770 | |
parent | 0bcf7e67ab5a24029a60ba3dc734c4579dd37e7f (diff) | |
download | gcc-bc5e6ab6955ed3cbc8affef42cf7af52e0a9750a.zip gcc-bc5e6ab6955ed3cbc8affef42cf7af52e0a9750a.tar.gz gcc-bc5e6ab6955ed3cbc8affef42cf7af52e0a9750a.tar.bz2 |
v850.c (v850_legitimate_address_p): Handle large displacements for TARGET_V850E2V3 and newer.
* config/v850/v850.c (v850_legitimate_address_p): Handle large
displacements for TARGET_V850E2V3 and newer.
(TARGET_LRA_P): Remove. Defaults to LRA now.
* config/v850/v850.md (sign23byte_load): Remove.
(unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
(23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
From-SVN: r262257
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/v850/v850.c | 8 | ||||
-rw-r--r-- | gcc/config/v850/v850.md | 68 |
3 files changed, 13 insertions, 72 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0da66e..c486d6d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-06-29 Jeff Law <law@redhat.com> + + * config/v850/v850.c (v850_legitimate_address_p): Handle large + displacements for TARGET_V850E2V3 and newer. + (TARGET_LRA_P): Remove. Defaults to LRA now. + * config/v850/v850.md (sign23byte_load): Remove. + (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise. + (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise. + 2018-06-29 Martin Liska <mliska@suse.cz> PR lto/85759 diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index cb2debf..8936c73 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -3079,7 +3079,10 @@ v850_legitimate_address_p (machine_mode mode, rtx x, bool strict_p, return true; if (GET_CODE (x) == PLUS && v850_rtx_ok_for_base_p (XEXP (x, 0), strict_p) - && constraint_satisfied_p (XEXP (x,1), CONSTRAINT_K) + && (constraint_satisfied_p (XEXP (x, 1), CONSTRAINT_K) + || (TARGET_V850E2V3_UP + && (mode == SImode || mode == HImode || mode == QImode) + && constraint_satisfied_p (XEXP (x, 1), CONSTRAINT_W))) && ((mode == QImode || INTVAL (XEXP (x, 1)) % 2 == 0) && CONST_OK_FOR_K (INTVAL (XEXP (x, 1)) + (GET_MODE_NUNITS (mode) * UNITS_PER_WORD)))) @@ -3309,9 +3312,6 @@ v850_modes_tieable_p (machine_mode mode1, machine_mode mode2) #undef TARGET_LEGITIMATE_CONSTANT_P #define TARGET_LEGITIMATE_CONSTANT_P v850_legitimate_constant_p -#undef TARGET_LRA_P -#define TARGET_LRA_P hook_bool_void_false - #undef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P #define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P v850_legitimate_address_p diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md index b8f098b..6530778 100644 --- a/gcc/config/v850/v850.md +++ b/gcc/config/v850/v850.md @@ -138,74 +138,6 @@ ;; ---------------------------------------------------------------------- ;; MOVE INSTRUCTIONS ;; ---------------------------------------------------------------------- -(define_insn "sign23byte_load" - [(set (match_operand:SI 0 "register_operand" "=r") - (sign_extend:SI - (mem:QI (plus:SI (match_operand:SI 1 "register_operand" "r") - (match_operand 2 "disp23_operand" "W")))))] - "TARGET_V850E2V3_UP" - "ld.b %2[%1],%0" - [(set_attr "length" "4")]) - -(define_insn "unsign23byte_load" - [(set (match_operand:SI 0 "register_operand" "=r") - (zero_extend:SI - (mem:QI (plus:SI (match_operand:SI 1 "register_operand" "r") - (match_operand 2 "disp23_operand" "W")))))] - "TARGET_V850E2V3_UP" - "ld.bu %2[%1],%0" - [(set_attr "length" "4")]) - -(define_insn "sign23hword_load" - [(set (match_operand:SI 0 "register_operand" "=r") - (sign_extend:SI - (mem:HI (plus:SI (match_operand:SI 1 "register_operand" "r") - (match_operand 2 "disp23_operand" "W")))))] - "TARGET_V850E2V3_UP" - "ld.h %2[%1],%0" - [(set_attr "length" "4")]) - -(define_insn "unsign23hword_load" - [(set (match_operand:SI 0 "register_operand" "=r") - (zero_extend:SI - (mem:HI (plus:SI (match_operand:SI 1 "register_operand" "r") - (match_operand 2 "disp23_operand" "W")))))] - "TARGET_V850E2V3_UP" - "ld.hu %2[%1],%0" - [(set_attr "length" "4")]) - -(define_insn "23word_load" - [(set (match_operand:SI 0 "register_operand" "=r") - (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "r") - (match_operand 2 "disp23_operand" "W"))))] - "TARGET_V850E2V3_UP" - "ld.w %2[%1],%0" - [(set_attr "length" "4")]) - -(define_insn "23byte_store" - [(set (mem:QI (plus:SI (match_operand:SI 0 "register_operand" "r") - (match_operand 1 "disp23_operand" "W"))) - (match_operand:QI 2 "register_operand" "r"))] - "TARGET_V850E2V3_UP" - "st.b %2,%1[%0]" - [(set_attr "length" "4")]) - -(define_insn "23hword_store" - [(set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "r") - (match_operand 1 "disp23_operand" "W"))) - (match_operand:HI 2 "register_operand" "r"))] - "TARGET_V850E2V3_UP" - "st.h %2,%1[%0]" - [(set_attr "length" "4")]) - -(define_insn "23word_store" - [(set (mem:SI (plus:SI (match_operand:SI 0 "register_operand" "r") - (match_operand 1 "disp23_operand" "W"))) - (match_operand:SI 2 "register_operand" "r"))] - "TARGET_V850E2V3_UP" - "st.w %2,%1[%0]" - [(set_attr "length" "4")]) - ;; movdi (define_expand "movdi" |