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>
* tree.h (DECL_ONE_ONLY): Return true only for externally visible
......
......@@ -371,8 +371,8 @@
; halves.
(define_split
[(set (match_operand:SI 0 "msp430_nonsubreg_operand")
(plus:SI (match_operand:SI 1 "nonimmediate_operand")
(match_operand:SI 2 "general_operand")))
(plus:SI (match_operand:SI 1 "msp430_nonsubreg_operand")
(match_operand:SI 2 "msp430_nonsubreg_or_imm_operand")))
]
""
[(parallel [(set (match_operand:HI 3 "nonimmediate_operand" "=&rm")
......@@ -1326,9 +1326,9 @@
""
"*
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
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 @@
(define_predicate "msp430_nonsubreg_operand"
(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
(define_predicate "msp430_bitpos"
(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