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
This commit is contained in:
DJ Delorie 2014-05-20 15:59:45 -04:00 committed by DJ Delorie
parent cf288ed3b8
commit 9c5f620306
3 changed files with 15 additions and 4 deletions

View File

@ -1,3 +1,10 @@
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

View File

@ -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\";
"
)

View File

@ -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")