Commit fa27cbfe by Claudiu Zissulescu Committed by Claudiu Zissulescu

[ARC] Remove Rs5 constraint.

New LRA algorithms require the all the register constraints to be
defined using define_register_constraint keyword. However, Rs5
constraint was not LRA proof. Remove it and replace it by equivalent
Rcd constraint.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (sibcall_insn): Use Rcd constraint.
	(sibcall_value_insn): Likewise.
	* config/arc/constraints.md (Rs5): Remove.

From-SVN: r270386
parent 47d8cb23
2019-04-16 Claudiu Zissulescu <claziss@synopsys.com> 2019-04-16 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.md (sibcall_insn): Use Rcd constraint.
(sibcall_value_insn): Likewise.
* config/arc/constraints.md (Rs5): Remove.
2019-04-16 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (arc_hard_regno_modes): Add two missing modes * config/arc/arc.c (arc_hard_regno_modes): Add two missing modes
for last two fake registers. for last two fake registers.
(arc_conditional_register_usage): Make sure fake frame and arg (arc_conditional_register_usage): Make sure fake frame and arg
......
...@@ -4702,17 +4702,17 @@ core_3, archs4x, archs4xd, archs4xd_slow" ...@@ -4702,17 +4702,17 @@ core_3, archs4x, archs4xd, archs4xd_slow"
(define_insn "*sibcall_insn" (define_insn "*sibcall_insn"
[(call (mem:SI (match_operand:SI 0 "call_address_operand" [(call (mem:SI (match_operand:SI 0 "call_address_operand"
"Cbp,Cbr,Rs5,Rsc,Cal")) "Cbp,Cbr,!Rcd,Rsc,Cal"))
(match_operand 1 "" "")) (match_operand 1 "" ""))
(simple_return) (simple_return)
(use (match_operand 2 "" ""))] (use (match_operand 2 "" ""))]
"" ""
"@ "@
b%!%* %P0 b%!%*\\t%P0
b%!%* %P0 b%!%*\\t%P0
j%!%* [%0]%& j%!%*\\t[%0]
j%!%* [%0] j%!%*\\t[%0]
j%! %P0" j%!\\t%P0"
[(set_attr "type" "call,call,call,call,call_no_delay_slot") [(set_attr "type" "call,call,call,call,call_no_delay_slot")
(set_attr "predicable" "yes,no,no,yes,yes") (set_attr "predicable" "yes,no,no,yes,yes")
(set_attr "iscompact" "false,false,maybe,false,false") (set_attr "iscompact" "false,false,maybe,false,false")
...@@ -4722,17 +4722,17 @@ core_3, archs4x, archs4xd, archs4xd_slow" ...@@ -4722,17 +4722,17 @@ core_3, archs4x, archs4xd, archs4xd_slow"
(define_insn "*sibcall_value_insn" (define_insn "*sibcall_value_insn"
[(set (match_operand 0 "dest_reg_operand" "") [(set (match_operand 0 "dest_reg_operand" "")
(call (mem:SI (match_operand:SI 1 "call_address_operand" (call (mem:SI (match_operand:SI 1 "call_address_operand"
"Cbp,Cbr,Rs5,Rsc,Cal")) "Cbp,Cbr,!Rcd,Rsc,Cal"))
(match_operand 2 "" ""))) (match_operand 2 "" "")))
(simple_return) (simple_return)
(use (match_operand 3 "" ""))] (use (match_operand 3 "" ""))]
"" ""
"@ "@
b%!%* %P1 b%!%*\\t%P1
b%!%* %P1 b%!%*\\t%P1
j%!%* [%1]%& j%!%*\\t[%1]
j%!%* [%1] j%!%*\\t[%1]
j%! %P1" j%!\\t%P1"
[(set_attr "type" "call,call,call,call,call_no_delay_slot") [(set_attr "type" "call,call,call,call,call_no_delay_slot")
(set_attr "predicable" "yes,no,no,yes,yes") (set_attr "predicable" "yes,no,no,yes,yes")
(set_attr "iscompact" "false,false,maybe,false,false") (set_attr "iscompact" "false,false,maybe,false,false")
......
...@@ -480,16 +480,6 @@ ...@@ -480,16 +480,6 @@
(and (match_code "reg") (and (match_code "reg")
(match_test "REGNO (op) == 31"))) (match_test "REGNO (op) == 31")))
(define_constraint "Rs5"
"@internal
sibcall register - only allow one of the five available 16 bit isnsn.
Registers usable in ARCompact 16-bit instructions: @code{r0}-@code{r3},
@code{r12}"
(and (match_code "reg")
(match_test "!arc_ccfsm_cond_exec_p ()")
(ior (match_test "(unsigned) REGNO (op) <= 3")
(match_test "REGNO (op) == 12"))))
(define_constraint "Rcc" (define_constraint "Rcc"
"@internal "@internal
Condition Codes" Condition Codes"
......
...@@ -5,7 +5,7 @@ int g (void); ...@@ -5,7 +5,7 @@ int g (void);
int f (void) int f (void)
{ {
g(); g();
} }
/* { dg-final { scan-assembler "j @g" } } */ /* { dg-final { scan-assembler "j\\t@g" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment