Commit 9c5f6203 by DJ Delorie Committed by DJ Delorie

msp430.md (split): Don't allow subregs when splitting SImode adds.

* config/msp430/msp430.md (split): Don't allow subregs when
splitting SImode adds.
(andneghi): Fix subtraction logic.
* config/msp430/predicates.md (msp430_nonsubreg_or_imm_operand): New.

From-SVN: r210655
parent cf288ed3
2014-05-20 DJ Delorie <dj@redhat.com>
* config/msp430/msp430.md (split): Don't allow subregs when
splitting SImode adds.
(andneghi): Fix subtraction logic.
* config/msp430/predicates.md (msp430_nonsubreg_or_imm_operand): New.
2014-05-20 Jan Hubicka <hubicka@ucw.cz> 2014-05-20 Jan Hubicka <hubicka@ucw.cz>
* tree.h (DECL_ONE_ONLY): Return true only for externally visible * tree.h (DECL_ONE_ONLY): Return true only for externally visible
......
...@@ -371,8 +371,8 @@ ...@@ -371,8 +371,8 @@
; halves. ; halves.
(define_split (define_split
[(set (match_operand:SI 0 "msp430_nonsubreg_operand") [(set (match_operand:SI 0 "msp430_nonsubreg_operand")
(plus:SI (match_operand:SI 1 "nonimmediate_operand") (plus:SI (match_operand:SI 1 "msp430_nonsubreg_operand")
(match_operand:SI 2 "general_operand"))) (match_operand:SI 2 "msp430_nonsubreg_or_imm_operand")))
] ]
"" ""
[(parallel [(set (match_operand:HI 3 "nonimmediate_operand" "=&rm") [(parallel [(set (match_operand:HI 3 "nonimmediate_operand" "=&rm")
...@@ -1326,9 +1326,9 @@ ...@@ -1326,9 +1326,9 @@
"" ""
"* "*
if (REGNO (operands[0]) != REGNO (operands[1])) if (REGNO (operands[0]) != REGNO (operands[1]))
return \"MOV.W\t%1, %0 { SUB.W\t#0, %0 { AND.W\t%2, %0\"; return \"MOV.W\t%1, %0 { INV.W\t%0 { INC.W\t%0 { AND.W\t%2, %0\";
else else
return \"SUB.W\t#0, %0 { AND.W\t%2, %0\"; return \"INV.W\t%0 { INC.W\t%0 { AND.W\t%2, %0\";
" "
) )
......
...@@ -73,6 +73,10 @@ ...@@ -73,6 +73,10 @@
(define_predicate "msp430_nonsubreg_operand" (define_predicate "msp430_nonsubreg_operand"
(match_code "reg,mem")) (match_code "reg,mem"))
(define_predicate "msp430_nonsubreg_or_imm_operand"
(ior (match_operand 0 "msp430_nonsubreg_operand")
(match_operand 0 "immediate_operand")))
; TRUE for constants which are bit positions for zero_extract ; TRUE for constants which are bit positions for zero_extract
(define_predicate "msp430_bitpos" (define_predicate "msp430_bitpos"
(and (match_code "const_int") (and (match_code "const_int")
......
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