msp430.md (movsi_s): New.
* config/msp430/msp430.md (movsi_s): New. Special case for storing a 20-bit symbol into a 32-bit register. * config/msp430/msp430.c (msp430_subreg): Add support for it. * config/msp430/predicates.md (msp430_symbol_operand): New. From-SVN: r224145
This commit is contained in:
parent
b1ada49be0
commit
14ae1d88b3
4 changed files with 31 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2015-06-04 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/msp430/msp430.md (movsi_s): New. Special case for
|
||||
storing a 20-bit symbol into a 32-bit register.
|
||||
* config/msp430/msp430.c (msp430_subreg): Add support for it.
|
||||
* config/msp430/predicates.md (msp430_symbol_operand): New.
|
||||
|
||||
2015-06-04 Sriraman Tallam <tmsriram@google.com>
|
||||
|
||||
* c-family/c-common.c (noplt): New attribute.
|
||||
|
|
|
@ -2374,6 +2374,13 @@ msp430_subreg (machine_mode mode, rtx r, machine_mode omode, int byte)
|
|||
}
|
||||
else if (GET_CODE (r) == MEM)
|
||||
rv = adjust_address (r, mode, byte);
|
||||
else if (GET_CODE (r) == SYMBOL_REF
|
||||
&& (byte == 0 || byte == 2)
|
||||
&& mode == HImode)
|
||||
{
|
||||
rv = gen_rtx_ZERO_EXTRACT (HImode, r, GEN_INT (16), GEN_INT (8*byte));
|
||||
rv = gen_rtx_CONST (HImode, r);
|
||||
}
|
||||
else
|
||||
rv = simplify_gen_subreg (mode, r, omode, byte);
|
||||
|
||||
|
|
|
@ -214,6 +214,19 @@
|
|||
""
|
||||
)
|
||||
|
||||
(define_insn_and_split "movsi_s"
|
||||
[(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
|
||||
(subreg:SI (match_operand:PSI 1 "msp430_symbol_operand" "i") 0))]
|
||||
""
|
||||
""
|
||||
"reload_completed"
|
||||
[(set (match_operand:HI 2 "nonimmediate_operand")
|
||||
(match_operand:HI 4 "general_operand"))
|
||||
(set (match_operand:HI 3 "nonimmediate_operand")
|
||||
(match_operand:HI 5 "general_operand"))]
|
||||
"msp430_split_movsi (operands);"
|
||||
)
|
||||
|
||||
(define_insn_and_split "movsi_x"
|
||||
[(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
|
||||
(match_operand:SI 1 "general_operand" "rmi"))]
|
||||
|
|
|
@ -82,3 +82,7 @@
|
|||
(and (match_code "const_int")
|
||||
(match_test (" INTVAL (op) >= 0
|
||||
&& INTVAL (op) <= 15 "))))
|
||||
|
||||
(define_predicate "msp430_symbol_operand"
|
||||
(match_code "symbol_ref")
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue