msp430 port

DJ Delorie dj@redhat.com
Fri Jul 26 01:22:00 GMT 2013


I tried to reproduce the original bugs that led to these patterns, but
was unable.  Testsuite results are the same with and without, and
eembc code size doesn't change.

So, I'm removing these patterns from the port.

The remaining (subreg...) patterns are just optimizations.


; This pattern is identical to the truncsipsi2 pattern except
; that it uses a SUBREG instead of a TRUNC.  It is needed in
; order to prevent reload from converting (set:SI (SUBREG:PSI (SI)))
; into (SET:PSI (PSI)).
;
; Note: using POPM.A #1 is two bytes smaller than using POPX.A....

(define_insn "movsipsi2"
  [(set (match_operand:PSI            0 "register_operand" "=r")
	(subreg:PSI (match_operand:SI 1 "register_operand" "r") 0))]
  "TARGET_LARGE"
  "PUSH.W %H1 { PUSH.W %1 { POPM.A #1, %0"
)

; This pattern is needed in order to avoid reload problems.
; It takes an SI pair of registers, adds a value to them, and
; then converts them into a single PSI register.

(define_insn "addsipsi3"
  [(set (subreg:SI (match_operand:PSI 0 "register_operand" "=&r") 0)
	(plus:SI (match_operand:SI    1 "register_operand" "0")
		 (match_operand       2 "general_operand" "rmi")))
   (clobber (reg:CC CARRY))
   ]
  ""
  "ADD.W\t%L2, %L0 { ADDC.W\t%H2, %H0 { PUSH.W %H0 { PUSH.W %L0 { POPM.A #1, %0"
)



More information about the Gcc-patches mailing list