aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/v850
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2018-06-29 12:42:35 -0600
committerJeff Law <law@gcc.gnu.org>2018-06-29 12:42:35 -0600
commitbc5e6ab6955ed3cbc8affef42cf7af52e0a9750a (patch)
treeb0ab736f719a083add475f59cca5b780985ff770 /gcc/config/v850
parent0bcf7e67ab5a24029a60ba3dc734c4579dd37e7f (diff)
downloadgcc-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
Diffstat (limited to 'gcc/config/v850')
-rw-r--r--gcc/config/v850/v850.c8
-rw-r--r--gcc/config/v850/v850.md68
2 files changed, 4 insertions, 72 deletions
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"