Commit 65c78c7d by Michael Hayes Committed by Michael Hayes

c4x.md (binary patterns): Reorder alternatives so that two operand instructions…

c4x.md (binary patterns): Reorder alternatives so that two operand instructions are chosen before three...

	* config/c4x/c4x.md (binary patterns): Reorder alternatives
	so that two operand instructions are chosen before three operand
	instructions.

From-SVN: r26570
parent 191b6fc9
Tue Apr 20 23:38:58 1999 Nathan Sidwell <nathan@acm.org> Wed Apr 21 17:41:29 1999 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.md (binary patterns): Reorder alternatives
so that two operand instructions are chosen before three operand
instructions.Tue Apr 20 23:38:58 1999 Nathan Sidwell <nathan@acm.org>
* objc/Make-lang.in (objc-parse.c): Put BISON parameters in correct * objc/Make-lang.in (objc-parse.c): Put BISON parameters in correct
order. order.
......
];; Machine description for the TMS320C[34]x for GNU C compiler ;; Machine description for the TMS320C[34]x for GNU C compiler
;; Copyright (C) 1994-98, 1999 Free Software Foundation, Inc. ;; Copyright (C) 1994-98, 1999 Free Software Foundation, Inc.
;; Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz) ;; Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
...@@ -1599,74 +1599,74 @@ ...@@ -1599,74 +1599,74 @@
}") }")
(define_insn "*addqi3_clobber" (define_insn "*addqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0") (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm"))) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi\\t%2,%0 addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_insn "*addqi3_test" (define_insn "*addqi3_test"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC_NOOV (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=d,?d,d"))] (clobber (match_scratch:QI 0 "=d,d,d"))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
; Default to int16 data attr. ; Default to int16 data attr.
; gcc does this in combine.c we just reverse it here ; gcc does this in combine.c we just reverse it here
(define_insn "*cmp_neg" (define_insn "*cmp_neg"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC_NOOV (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(neg: QI (match_operand:QI 2 "src_operand" "JR,rS<>,g")))) (neg: QI (match_operand:QI 2 "src_operand" "g,JR,rS<>"))))
(clobber (match_scratch:QI 0 "=d,?d,d"))] (clobber (match_scratch:QI 0 "=d,d,d"))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
(define_peephole (define_peephole
[(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") [(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,g"))) (match_operand:QI 2 "src_operand" "g,JR,rS<>")))
(clobber (reg:CC_NOOV 21))]) (clobber (reg:CC_NOOV 21))])
(set (reg:CC_NOOV 21) (set (reg:CC_NOOV 21)
(compare:CC_NOOV (match_dup 0) (const_int 0)))] (compare:CC_NOOV (match_dup 0) (const_int 0)))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
(define_insn "*addqi3_set" (define_insn "*addqi3_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC_NOOV (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(plus:QI (match_dup 1) (match_dup 2)))] (plus:QI (match_dup 1) (match_dup 2)))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -1674,14 +1674,14 @@ ...@@ -1674,14 +1674,14 @@
; where GCC doesn't expect CC to be clobbered or for calculating ; where GCC doesn't expect CC to be clobbered or for calculating
; addresses during reload. ; addresses during reload.
(define_insn "addqi3_noclobber" (define_insn "addqi3_noclobber"
[(set (match_operand:QI 0 "std_reg_operand" "=c,?c,c") [(set (match_operand:QI 0 "std_reg_operand" "=c,c,c")
(plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")))] (match_operand:QI 2 "src_operand" "rIm,JR,rS<>")))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binary,binary,binary")]) [(set_attr "type" "binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -1703,32 +1703,32 @@ ...@@ -1703,32 +1703,32 @@
; may be allocated to reload the PLUS and thus gen_reload will ; may be allocated to reload the PLUS and thus gen_reload will
; emit an add insn that may clobber CC. ; emit an add insn that may clobber CC.
(define_insn "*addqi3_noclobber_reload" (define_insn "*addqi3_noclobber_reload"
[(set (match_operand:QI 0 "general_operand" "=c,?c,c") [(set (match_operand:QI 0 "general_operand" "=c,c,c")
(plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")))] (match_operand:QI 2 "src_operand" "rIm,JR,rS<>")))]
"reload_in_progress" "reload_in_progress"
"@ "@
addi\\t%2,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0
addi3\\t%2,%1,%0 addi3\\t%2,%1,%0"
addi\\t%2,%0"
[(set_attr "type" "binary,binary,binary")]) [(set_attr "type" "binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_insn "*addqi3_carry_clobber" (define_insn "*addqi3_carry_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(plus:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0") (plus:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm"))) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")))
(use (reg:CC_NOOV 21)) (use (reg:CC_NOOV 21))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (PLUS, operands, QImode)" "valid_operands (PLUS, operands, QImode)"
"@ "@
addc\\t%2,%0
addc3\\t%2,%1,%0 addc3\\t%2,%1,%0
addc3\\t%2,%1,%0 addc3\\t%2,%1,%0
addc\\t%2,%0 addc\\t%2,%0
addc3\\t%2,%1,%0 addc3\\t%2,%1,%0
addc3\\t%2,%1,%0 addc3\\t%2,%1,%0"
addc\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -1745,104 +1745,104 @@ ...@@ -1745,104 +1745,104 @@
"legitimize_operands (MINUS, operands, QImode);") "legitimize_operands (MINUS, operands, QImode);")
(define_insn "*subqi3_clobber" (define_insn "*subqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,d,c,?c,c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,d,?d,c,c,c,?c")
(minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rIm,rR,rS<>,0,rIm") (minus:QI (match_operand:QI 1 "src_operand" "0,rIm,rR,rS<>,0,rIm,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,0,JR,rS<>,rIm,0"))) (match_operand:QI 2 "src_operand" "rIm,0,JR,rS<>,rIm,0,JR,rS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (MINUS, operands, QImode)" "valid_operands (MINUS, operands, QImode)"
"@ "@
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0
subi\\t%2,%0 subi\\t%2,%0
subri\\t%1,%0 subri\\t%1,%0
subi3\\t%2,%1,%0 subi3\\t%2,%1,%0
subi3\\t%2,%1,%0 subi3\\t%2,%1,%0
subi\\t%2,%0 subi\\t%2,%0
subri\\t%1,%0" subri\\t%1,%0
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc,binary,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc,binary,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_insn "*subqi3_test" (define_insn "*subqi3_test"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rIm") (compare:CC_NOOV (minus:QI (match_operand:QI 1 "src_operand" "0,rIm,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,0")) (match_operand:QI 2 "src_operand" "rIm,0,JR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=d,?d,d,d"))] (clobber (match_scratch:QI 0 "=d,d,d,?d"))]
"valid_operands (MINUS, operands, QImode)" "valid_operands (MINUS, operands, QImode)"
"@ "@
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0
subi\\t%2,%0 subi\\t%2,%0
subri\\t%1,%0" subri\\t%1,%0
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_peephole (define_peephole
[(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d,d") [(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,d,d,?d")
(minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rIm") (minus:QI (match_operand:QI 1 "src_operand" "0,rIm,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,0"))) (match_operand:QI 2 "src_operand" "rIm,0,JR,rS<>")))
(clobber (reg:CC_NOOV 21))]) (clobber (reg:CC_NOOV 21))])
(set (reg:CC_NOOV 21) (set (reg:CC_NOOV 21)
(compare:CC_NOOV (match_dup 0) (const_int 0)))] (compare:CC_NOOV (match_dup 0) (const_int 0)))]
"valid_operands (MINUS, operands, QImode)" "valid_operands (MINUS, operands, QImode)"
"@ "@
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0
subi\\t%2,%0 subi\\t%2,%0
subri\\t%1,%0" subri\\t%1,%0
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
(define_insn "*subqi3_set" (define_insn "*subqi3_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rIm") (compare:CC_NOOV (minus:QI (match_operand:QI 1 "src_operand" "0,rIm,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,0")) (match_operand:QI 2 "src_operand" "rIm,0,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d,?d")
(minus:QI (match_dup 1) (minus:QI (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (MINUS, operands, QImode)" "valid_operands (MINUS, operands, QImode)"
"@ "@
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0
subi\\t%2,%0 subi\\t%2,%0
subri\\t%1,%0" subri\\t%1,%0
subi3\\t%2,%1,%0
subi3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_insn "*subqi3_carry_clobber" (define_insn "*subqi3_carry_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,d,c,?c,c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,d,?d,c,c,c,?c")
(minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rIm,rR,rS<>,0,rIm") (minus:QI (match_operand:QI 1 "src_operand" "0,rIm,rR,rS<>,0,rIm,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,0,JR,rS<>,rIm,0"))) (match_operand:QI 2 "src_operand" "rIm,0,JR,rS<>,rIm,0,JR,rS<>")))
(use (reg:CC_NOOV 21)) (use (reg:CC_NOOV 21))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (MINUS, operands, QImode)" "valid_operands (MINUS, operands, QImode)"
"@ "@
subb3\\t%2,%1,%0
subb3\\t%2,%1,%0
subb\\t%2,%0 subb\\t%2,%0
subrb\\t%1,%0 subrb\\t%1,%0
subb3\\t%2,%1,%0 subb3\\t%2,%1,%0
subb3\\t%2,%1,%0 subb3\\t%2,%1,%0
subb\\t%2,%0 subb\\t%2,%0
subrb\\t%1,%0" subrb\\t%1,%0
subb3\\t%2,%1,%0
subb3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc,binary,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc,binary,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_insn "*subqi3_carry_set" (define_insn "*subqi3_carry_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rIm") (compare:CC_NOOV (minus:QI (match_operand:QI 1 "src_operand" "0,rIm,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,0")) (match_operand:QI 2 "src_operand" "rIm,0,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d,?d")
(minus:QI (match_dup 1) (minus:QI (match_dup 1)
(match_dup 2))) (match_dup 2)))
(use (reg:CC_NOOV 21))] (use (reg:CC_NOOV 21))]
"valid_operands (MINUS, operands, QImode)" "valid_operands (MINUS, operands, QImode)"
"@ "@
subb3\\t%2,%1,%0
subb3\\t%2,%1,%0
subb\\t%2,%0 subb\\t%2,%0
subrb\\t%1,%0" subrb\\t%1,%0
subb3\\t%2,%1,%0
subb3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -1885,13 +1885,13 @@ ...@@ -1885,13 +1885,13 @@
") ")
(define_insn "*mulqi3_clobber" (define_insn "*mulqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(mult:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0") (mult:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm"))) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (MULT, operands, QImode)" "valid_operands (MULT, operands, QImode)"
"* "*
if (which_alternative == 2 || which_alternative == 5) if (which_alternative == 0 || which_alternative == 3)
{ {
if (TARGET_C3X if (TARGET_C3X
&& GET_CODE (operands[2]) == CONST_INT && GET_CODE (operands[2]) == CONST_INT
...@@ -1907,13 +1907,13 @@ ...@@ -1907,13 +1907,13 @@
(define_insn "*mulqi3_test" (define_insn "*mulqi3_test"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (mult:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC_NOOV (mult:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=d,?d,d"))] (clobber (match_scratch:QI 0 "=d,d,d"))]
"valid_operands (MULT, operands, QImode)" "valid_operands (MULT, operands, QImode)"
"* "*
if (which_alternative == 2) if (which_alternative == 0)
{ {
if (TARGET_C3X if (TARGET_C3X
&& GET_CODE (operands[2]) == CONST_INT && GET_CODE (operands[2]) == CONST_INT
...@@ -1929,15 +1929,15 @@ ...@@ -1929,15 +1929,15 @@
(define_insn "*mulqi3_set" (define_insn "*mulqi3_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (mult:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC_NOOV (mult:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(mult:QI (match_dup 1) (mult:QI (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (MULT, operands, QImode)" "valid_operands (MULT, operands, QImode)"
"* "*
if (which_alternative == 2) if (which_alternative == 0)
{ {
if (TARGET_C3X if (TARGET_C3X
&& GET_CODE (operands[2]) == CONST_INT && GET_CODE (operands[2]) == CONST_INT
...@@ -1954,23 +1954,23 @@ ...@@ -1954,23 +1954,23 @@
; The C3x multiply instruction assumes 24-bit signed integer operands ; The C3x multiply instruction assumes 24-bit signed integer operands
; and the 48-bit result is truncated to 32-bits. ; and the 48-bit result is truncated to 32-bits.
(define_insn "*mulqi3_24_clobber" (define_insn "*mulqi3_24_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(mult:QI (mult:QI
(sign_extend:QI (sign_extend:QI
(and:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0") (and:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>")
(const_int 16777215))) (const_int 16777215)))
(sign_extend:QI (sign_extend:QI
(and:QI (match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm") (and:QI (match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")
(const_int 16777215))))) (const_int 16777215)))))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"TARGET_C3X && valid_operands (MULT, operands, QImode)" "TARGET_C3X && valid_operands (MULT, operands, QImode)"
"@ "@
mpyi\\t%2,%0
mpyi3\\t%2,%1,%0 mpyi3\\t%2,%1,%0
mpyi3\\t%2,%1,%0 mpyi3\\t%2,%1,%0
mpyi\\t%2,%0 mpyi\\t%2,%0
mpyi3\\t%2,%1,%0 mpyi3\\t%2,%1,%0
mpyi3\\t%2,%1,%0 mpyi3\\t%2,%1,%0"
mpyi\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -2096,12 +2096,12 @@ ...@@ -2096,12 +2096,12 @@
") ")
(define_insn "*smulqi3_highpart_clobber" (define_insn "*smulqi3_highpart_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(truncate:QI (truncate:QI
(lshiftrt:HI (lshiftrt:HI
(mult:HI (mult:HI
(sign_extend:HI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0")) (sign_extend:HI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>"))
(sign_extend:HI (match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm"))) (sign_extend:HI (match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")))
(const_int 32)))) (const_int 32))))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"! TARGET_C3X && valid_operands (MULT, operands, QImode)" "! TARGET_C3X && valid_operands (MULT, operands, QImode)"
...@@ -2137,11 +2137,11 @@ ...@@ -2137,11 +2137,11 @@
") ")
(define_insn "*umulqi3_highpart_clobber" (define_insn "*umulqi3_highpart_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(truncate:QI (truncate:QI
(lshiftrt:HI (lshiftrt:HI
(mult:HI (mult:HI
(zero_extend:HI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0")) (zero_extend:HI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>"))
(zero_extend:HI (match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm,JR,rS<>,rLm"))) (zero_extend:HI (match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm,JR,rS<>,rLm")))
(const_int 32)))) (const_int 32))))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
...@@ -2169,7 +2169,7 @@ ...@@ -2169,7 +2169,7 @@
(define_insn "*andqi3_255_clobber" (define_insn "*andqi3_255_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?c") [(set (match_operand:QI 0 "reg_operand" "=d,c")
(and:QI (match_operand:QI 1 "src_operand" "mr,mr") (and:QI (match_operand:QI 1 "src_operand" "mr,mr")
(const_int 255))) (const_int 255)))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
...@@ -2179,7 +2179,7 @@ ...@@ -2179,7 +2179,7 @@
(define_insn "*andqi3_65535_clobber" (define_insn "*andqi3_65535_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?c") [(set (match_operand:QI 0 "reg_operand" "=d,c")
(and:QI (match_operand:QI 1 "src_operand" "mr,mr") (and:QI (match_operand:QI 1 "src_operand" "mr,mr")
(const_int 65535))) (const_int 65535)))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
...@@ -2189,70 +2189,70 @@ ...@@ -2189,70 +2189,70 @@
(define_insn "*andqi3_clobber" (define_insn "*andqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,d,c,?c,c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,d,?d,c,c,c,?c")
(and:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,0,rR,rS<>,0,0") (and:QI (match_operand:QI 1 "src_operand" "%0,0,rR,rS<>,0,0,rR,rS<>")
(match_operand:QI 2 "tsrc_operand" "JR,rS<>,N,rLm,JR,rS<>,N,rLm"))) (match_operand:QI 2 "tsrc_operand" "N,rLm,JR,rS<>,N,rLm,JR,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
and3\\t%2,%1,%0
and3\\t%2,%1,%0
andn\\t%N2,%0 andn\\t%N2,%0
and\\t%2,%0 and\\t%2,%0
and3\\t%2,%1,%0 and3\\t%2,%1,%0
and3\\t%2,%1,%0 and3\\t%2,%1,%0
andn\\t%N2,%0 andn\\t%N2,%0
and\\t%2,%0" and\\t%2,%0
and3\\t%2,%1,%0
and3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc,binary,binary,binary,binary") [(set_attr "type" "binarycc,binarycc,binarycc,binarycc,binary,binary,binary,binary")
(set_attr "data" "int16,uint16,not_uint16,uint16,int16,uint16,not_uint16,uint16")]) (set_attr "data" "not_uint16,uint16,int16,uint16,not_uint16,uint16,int16,uint16")])
(define_insn "*andqi3_test" (define_insn "*andqi3_test"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (and:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,r") (compare:CC (and:QI (match_operand:QI 1 "src_operand" "%0,r,rR,rS<>")
(match_operand:QI 2 "tsrc_operand" "JR,rS<>,N,rLm")) (match_operand:QI 2 "tsrc_operand" "N,rLm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=X,X,d,X"))] (clobber (match_scratch:QI 0 "=d,X,X,?X"))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
tstb3\\t%2,%1
tstb3\\t%2,%1
andn\\t%N2,%0 andn\\t%N2,%0
tstb\\t%2,%1" tstb\\t%2,%1
tstb3\\t%2,%1
tstb3\\t%2,%1"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,not_uint16,uint16")]) (set_attr "data" "not_uint16,uint16,int16,uint16")])
(define_peephole (define_peephole
[(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d,d") [(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,d,d,?d")
(and:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,0") (and:QI (match_operand:QI 1 "src_operand" "%0,0,rR,rS<>")
(match_operand:QI 2 "tsrc_operand" "JR,rS<>,N,rLm"))) (match_operand:QI 2 "tsrc_operand" "N,rLm,JR,rS<>")))
(clobber (reg:CC 21))]) (clobber (reg:CC 21))])
(set (reg:CC 21) (set (reg:CC 21)
(compare:CC (match_dup 0) (const_int 0)))] (compare:CC (match_dup 0) (const_int 0)))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
and3\\t%2,%1,%0
and3\\t%2,%1,%0
andn\\t%N2,%0 andn\\t%N2,%0
and\\t%2,%0" and\\t%2,%0
and3\\t%2,%1,%0
and3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,not_uint16,uint16")]) (set_attr "data" "not_uint16,uint16,int16,uint16")])
(define_insn "*andqi3_set" (define_insn "*andqi3_set"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (and:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,0") (compare:CC (and:QI (match_operand:QI 1 "src_operand" "%0,0,rR,rS<>")
(match_operand:QI 2 "tsrc_operand" "JR,rS<>,N,rLm")) (match_operand:QI 2 "tsrc_operand" "N,rLm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d,?d")
(and:QI (match_dup 1) (and:QI (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
and3\\t%2,%1,%0
and3\\t%2,%1,%0
andn\\t%N2,%0 andn\\t%N2,%0
and\\t%2,%0" and\\t%2,%0
and3\\t%2,%1,%0
and3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,not_uint16,uint16")]) (set_attr "data" "not_uint16,uint16,int16,uint16")])
; ;
; ANDN ; ANDN
...@@ -2261,50 +2261,50 @@ ...@@ -2261,50 +2261,50 @@
; assumes that the code AND does. We might have to kludge this if ; assumes that the code AND does. We might have to kludge this if
; we make valid_operands stricter. ; we make valid_operands stricter.
(define_insn "*andnqi3_clobber" (define_insn "*andnqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(and:QI (not:QI (match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm,JR,rS<>,rLm")) (and:QI (not:QI (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>,rLm,JR,rS<>"))
(match_operand:QI 1 "src_operand" "rR,rS<>,0,rR,rS<>,0"))) (match_operand:QI 1 "src_operand" "0,rR,rS<>,0,rR,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
andn\\t%2,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0
andn\\t%2,%0 andn\\t%2,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0"
andn\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary") [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")
(set_attr "data" "int16,uint16,uint16,int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16,uint16,int16,uint16")])
(define_insn "*andnqi3_test" (define_insn "*andnqi3_test"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (and:QI (not:QI (match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")) (compare:CC (and:QI (not:QI (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>"))
(match_operand:QI 1 "src_operand" "rR,rS<>,0")) (match_operand:QI 1 "src_operand" "0,rR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=d,?d,d"))] (clobber (match_scratch:QI 0 "=d,d,d"))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
andn\\t%2,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0"
andn\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
(define_insn "*andnqi3_set" (define_insn "*andnqi3_set"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (and:QI (not:QI (match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")) (compare:CC (and:QI (not:QI (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>"))
(match_operand:QI 1 "src_operand" "rR,rS<>,0")) (match_operand:QI 1 "src_operand" "0,rR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(and:QI (not:QI (match_dup 2)) (and:QI (not:QI (match_dup 2))
(match_dup 1)))] (match_dup 1)))]
"valid_operands (AND, operands, QImode)" "valid_operands (AND, operands, QImode)"
"@ "@
andn\\t%2,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0
andn3\\t%2,%1,%0 andn3\\t%2,%1,%0"
andn\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
; ;
; OR ; OR
...@@ -2318,78 +2318,78 @@ ...@@ -2318,78 +2318,78 @@
"legitimize_operands (IOR, operands, QImode);") "legitimize_operands (IOR, operands, QImode);")
(define_insn "*iorqi3_clobber" (define_insn "*iorqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(ior:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0") (ior:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm,JR,rS<>,rLm"))) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>,rLm,JR,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (IOR, operands, QImode)" "valid_operands (IOR, operands, QImode)"
"@ "@
or\\t%2,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or\\t%2,%0 or\\t%2,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0"
or\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary") [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")
(set_attr "data" "int16,uint16,uint16,int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16,uint16,int16,uint16")])
(define_insn "*iorqi3_test" (define_insn "*iorqi3_test"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (ior:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC (ior:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=d,?d,d"))] (clobber (match_scratch:QI 0 "=d,d,d"))]
"valid_operands (IOR, operands, QImode)" "valid_operands (IOR, operands, QImode)"
"@ "@
or\\t%2,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0"
or\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
(define_peephole (define_peephole
[(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") [(parallel [(set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(ior:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (ior:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm"))) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>")))
(clobber (reg:CC 21))]) (clobber (reg:CC 21))])
(set (reg:CC 21) (set (reg:CC 21)
(compare:CC (match_dup 0) (const_int 0)))] (compare:CC (match_dup 0) (const_int 0)))]
"valid_operands (IOR, operands, QImode)" "valid_operands (IOR, operands, QImode)"
"@ "@
or\\t%2,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0"
or\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
(define_insn "*iorqi3_set" (define_insn "*iorqi3_set"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (ior:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC (ior:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(ior:QI (match_dup 1) (ior:QI (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (IOR, operands, QImode)" "valid_operands (IOR, operands, QImode)"
"@ "@
or\\t%2,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0"
or\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
; This pattern is used for loading symbol references in several parts. ; This pattern is used for loading symbol references in several parts.
(define_insn "iorqi3_noclobber" (define_insn "iorqi3_noclobber"
[(set (match_operand:QI 0 "std_reg_operand" "=c,?c,c") [(set (match_operand:QI 0 "std_reg_operand" "=c,c,c")
(ior:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (ior:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")))] (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>")))]
"valid_operands (IOR, operands, QImode)" "valid_operands (IOR, operands, QImode)"
"@ "@
or\\t%2,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0
or3\\t%2,%1,%0 or3\\t%2,%1,%0"
or\\t%2,%0"
[(set_attr "type" "binary,binary,binary") [(set_attr "type" "binary,binary,binary")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
; ;
; XOR ; XOR
...@@ -2403,50 +2403,50 @@ ...@@ -2403,50 +2403,50 @@
"legitimize_operands (XOR, operands, QImode);") "legitimize_operands (XOR, operands, QImode);")
(define_insn "*xorqi3_clobber" (define_insn "*xorqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(xor:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0,rR,rS<>,0") (xor:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>,0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm,JR,rS<>,rLm"))) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>,rLm,JR,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (XOR, operands, QImode)" "valid_operands (XOR, operands, QImode)"
"@ "@
xor\\t%2,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0
xor\\t%2,%0 xor\\t%2,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0"
xor\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary") [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")
(set_attr "data" "int16,uint16,uint16,int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16,uint16,int16,uint16")])
(define_insn "*xorqi3_test" (define_insn "*xorqi3_test"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (xor:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC (xor:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(clobber (match_scratch:QI 0 "=d,?d,d"))] (clobber (match_scratch:QI 0 "=d,d,d"))]
"valid_operands (XOR, operands, QImode)" "valid_operands (XOR, operands, QImode)"
"@ "@
xor\\t%2,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0"
xor\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
(define_insn "*xorqi3_set" (define_insn "*xorqi3_set"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (xor:QI (match_operand:QI 1 "src_operand" "%rR,rS<>,0") (compare:CC (xor:QI (match_operand:QI 1 "src_operand" "%0,rR,rS<>")
(match_operand:QI 2 "lsrc_operand" "JR,rS<>,rLm")) (match_operand:QI 2 "lsrc_operand" "rLm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "ext_reg_operand" "=d,?d,d") (set (match_operand:QI 0 "ext_reg_operand" "=d,d,d")
(xor:QI (match_dup 1) (xor:QI (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (XOR, operands, QImode)" "valid_operands (XOR, operands, QImode)"
"@ "@
xor\\t%2,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0
xor3\\t%2,%1,%0 xor3\\t%2,%1,%0"
xor\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc") [(set_attr "type" "binarycc,binarycc,binarycc")
(set_attr "data" "int16,uint16,uint16")]) (set_attr "data" "uint16,int16,uint16")])
; ;
; LSH/ASH (left) ; LSH/ASH (left)
...@@ -2469,53 +2469,53 @@ ...@@ -2469,53 +2469,53 @@
"legitimize_operands (ASHIFT, operands, QImode);") "legitimize_operands (ASHIFT, operands, QImode);")
(define_insn "*ashlqi3_clobber" (define_insn "*ashlqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(ashift:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rR,rS<>,0") (ashift:QI (match_operand:QI 1 "src_operand" "0,rR,rS<>,0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm"))) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (ASHIFT, operands, QImode)" "valid_operands (ASHIFT, operands, QImode)"
"@ "@
ash\\t%2,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash\\t%2,%0 ash\\t%2,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0"
ash\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
(define_insn "*ashlqi3_set" (define_insn "*ashlqi3_set"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (compare:CC
(ashift:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0") (ashift:QI (match_operand:QI 1 "src_operand" "0,rR,rS<>")
(match_operand:QI 2 "src_operand" "JR,rS<>,rIm")) (match_operand:QI 2 "src_operand" "rIm,JR,rS<>"))
(const_int 0))) (const_int 0)))
(set (match_operand:QI 0 "reg_operand" "=d,?d,d") (set (match_operand:QI 0 "reg_operand" "=d,d,d")
(ashift:QI (match_dup 1) (ashift:QI (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (ASHIFT, operands, QImode)" "valid_operands (ASHIFT, operands, QImode)"
"@ "@
ash\\t%2,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0"
ash\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
; Default to int16 data attr. ; Default to int16 data attr.
; This is only used by lshrhi3_reg where we need a LSH insn that will ; This is only used by lshrhi3_reg where we need a LSH insn that will
; shift both ways. ; shift both ways.
(define_insn "*lshlqi3_clobber" (define_insn "*lshlqi3_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(ashift:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rR,rS<>,0") (ashift:QI (match_operand:QI 1 "src_operand" "0,rR,rS<>,0,rR,rS<>")
(unspec [(match_operand:QI 2 "src_operand" "JR,rS<>,rIm,JR,rS<>,rIm")] 3))) (unspec [(match_operand:QI 2 "src_operand" "rIm,JR,rS<>,rIm,JR,rS<>")] 3)))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (ASHIFT, operands, QImode)" "valid_operands (ASHIFT, operands, QImode)"
"@ "@
lsh\\t%2,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0
lsh\\t%2,%0 lsh\\t%2,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0"
lsh\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -2608,18 +2608,18 @@ ...@@ -2608,18 +2608,18 @@
[(set_attr "type" "binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc")])
(define_insn "*lshrqi3_nonconst_clobber" (define_insn "*lshrqi3_nonconst_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(lshiftrt:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rR,rS<>,0") (lshiftrt:QI (match_operand:QI 1 "src_operand" "0,rR,rS<>,0,rR,rS<>")
(neg:QI (match_operand:QI 2 "src_operand" "R,rS<>,rm,R,rS<>,rm")))) (neg:QI (match_operand:QI 2 "src_operand" "rm,R,rS<>,rm,R,rS<>"))))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (LSHIFTRT, operands, QImode)" "valid_operands (LSHIFTRT, operands, QImode)"
"@ "@
lsh\\t%2,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0
lsh\\t%2,%0 lsh\\t%2,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0
lsh3\\t%2,%1,%0 lsh3\\t%2,%1,%0"
lsh\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -2671,18 +2671,18 @@ ...@@ -2671,18 +2671,18 @@
[(set_attr "type" "binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc")])
(define_insn "*ashrqi3_nonconst_clobber" (define_insn "*ashrqi3_nonconst_clobber"
[(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c") [(set (match_operand:QI 0 "reg_operand" "=d,d,?d,c,c,?c")
(ashiftrt:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rR,rS<>,0") (ashiftrt:QI (match_operand:QI 1 "src_operand" "0,rR,rS<>,0,rR,rS<>")
(neg:QI (match_operand:QI 2 "src_operand" "R,rS<>,rm,R,rS<>,rm")))) (neg:QI (match_operand:QI 2 "src_operand" "rm,R,rS<>,rm,R,rS<>"))))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (ASHIFTRT, operands, QImode)" "valid_operands (ASHIFTRT, operands, QImode)"
"@ "@
ash\\t%2,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash\\t%2,%0 ash\\t%2,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0
ash3\\t%2,%1,%0 ash3\\t%2,%1,%0"
ash\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")]) [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
; Default to int16 data attr. ; Default to int16 data attr.
...@@ -3530,43 +3530,43 @@ ...@@ -3530,43 +3530,43 @@
"legitimize_operands (PLUS, operands, QFmode);") "legitimize_operands (PLUS, operands, QFmode);")
(define_insn "*addqf3_clobber" (define_insn "*addqf3_clobber"
[(set (match_operand:QF 0 "reg_operand" "=f,?f,f") [(set (match_operand:QF 0 "reg_operand" "=f,f,?f")
(plus:QF (match_operand:QF 1 "src_operand" "%fR,fS<>,0") (plus:QF (match_operand:QF 1 "src_operand" "%0,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm"))) (match_operand:QF 2 "src_operand" "fHm,R,fS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (PLUS, operands, QFmode)" "valid_operands (PLUS, operands, QFmode)"
"@ "@
addf\\t%2,%0
addf3\\t%2,%1,%0 addf3\\t%2,%1,%0
addf3\\t%2,%1,%0 addf3\\t%2,%1,%0"
addf\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
(define_insn "*addqf3_test" (define_insn "*addqf3_test"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (plus:QF (match_operand:QF 1 "src_operand" "%fR,fS<>,0") (compare:CC_NOOV (plus:QF (match_operand:QF 1 "src_operand" "%0,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm")) (match_operand:QF 2 "src_operand" "fHm,R,fS<>"))
(match_operand:QF 3 "fp_zero_operand" "G,G,G"))) (match_operand:QF 3 "fp_zero_operand" "G,G,G")))
(clobber (match_scratch:QF 0 "=f,?f,f"))] (clobber (match_scratch:QF 0 "=f,f,?f"))]
"valid_operands (PLUS, operands, QFmode)" "valid_operands (PLUS, operands, QFmode)"
"@ "@
addf\\t%2,%0
addf3\\t%2,%1,%0 addf3\\t%2,%1,%0
addf3\\t%2,%1,%0 addf3\\t%2,%1,%0"
addf\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
(define_insn "*addqf3_set" (define_insn "*addqf3_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (plus:QF (match_operand:QF 1 "src_operand" "%fR,fS<>,0") (compare:CC_NOOV (plus:QF (match_operand:QF 1 "src_operand" "%0,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm")) (match_operand:QF 2 "src_operand" "fHm,R,fS<>"))
(match_operand:QF 3 "fp_zero_operand" "G,G,G"))) (match_operand:QF 3 "fp_zero_operand" "G,G,G")))
(set (match_operand:QF 0 "reg_operand" "=f,?f,f") (set (match_operand:QF 0 "reg_operand" "=f,f,?f")
(plus:QF (match_dup 1) (plus:QF (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (PLUS, operands, QFmode)" "valid_operands (PLUS, operands, QFmode)"
"@ "@
addf\\t%2,%0
addf3\\t%2,%1,%0 addf3\\t%2,%1,%0
addf3\\t%2,%1,%0 addf3\\t%2,%1,%0"
addf\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
; ;
...@@ -3581,46 +3581,46 @@ ...@@ -3581,46 +3581,46 @@
"legitimize_operands (MINUS, operands, QFmode);") "legitimize_operands (MINUS, operands, QFmode);")
(define_insn "*subqf3_clobber" (define_insn "*subqf3_clobber"
[(set (match_operand:QF 0 "reg_operand" "=f,?f,f,f") [(set (match_operand:QF 0 "reg_operand" "=f,f,f,?f")
(minus:QF (match_operand:QF 1 "src_operand" "fR,fS<>,0,fHm") (minus:QF (match_operand:QF 1 "src_operand" "0,fHm,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm,0"))) (match_operand:QF 2 "src_operand" "fHm,0,R,fS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (MINUS, operands, QFmode)" "valid_operands (MINUS, operands, QFmode)"
"@ "@
subf3\\t%2,%1,%0
subf3\\t%2,%1,%0
subf\\t%2,%0 subf\\t%2,%0
subrf\\t%1,%0" subrf\\t%1,%0
subf3\\t%2,%1,%0
subf3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
(define_insn "*subqf3_test" (define_insn "*subqf3_test"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (minus:QF (match_operand:QF 1 "src_operand" "fR,fS<>,0,fHm") (compare:CC_NOOV (minus:QF (match_operand:QF 1 "src_operand" "0,fHm,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm,0")) (match_operand:QF 2 "src_operand" "fHm,0,R,fS<>"))
(match_operand:QF 3 "fp_zero_operand" "G,G,G,G"))) (match_operand:QF 3 "fp_zero_operand" "G,G,G,G")))
(clobber (match_scratch:QF 0 "=f,?f,f,f"))] (clobber (match_scratch:QF 0 "=f,f,f,?f"))]
"valid_operands (MINUS, operands, QFmode)" "valid_operands (MINUS, operands, QFmode)"
"@ "@
subf3\\t%2,%1,%0
subf3\\t%2,%1,%0
subf\\t%2,%0 subf\\t%2,%0
subrf\\t%1,%0" subrf\\t%1,%0
subf3\\t%2,%1,%0
subf3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
(define_insn "*subqf3_set" (define_insn "*subqf3_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (minus:QF (match_operand:QF 1 "src_operand" "fR,fS<>,0,fHm") (compare:CC_NOOV (minus:QF (match_operand:QF 1 "src_operand" "0,fHm,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm,0")) (match_operand:QF 2 "src_operand" "0,fHm,R,fS<>"))
(match_operand:QF 3 "fp_zero_operand" "G,G,G,G"))) (match_operand:QF 3 "fp_zero_operand" "G,G,G,G")))
(set (match_operand:QF 0 "reg_operand" "=f,?f,f,f") (set (match_operand:QF 0 "reg_operand" "=f,f,f,?f")
(minus:QF (match_dup 1) (minus:QF (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (MINUS, operands, QFmode)" "valid_operands (MINUS, operands, QFmode)"
"@ "@
subf3\\t%2,%1,%0
subf3\\t%2,%1,%0
subf\\t%2,%0 subf\\t%2,%0
subrf\\t%1,%0" subrf\\t%1,%0
subf3\\t%2,%1,%0
subf3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
; ;
...@@ -3635,43 +3635,43 @@ ...@@ -3635,43 +3635,43 @@
"legitimize_operands (MULT, operands, QFmode);") "legitimize_operands (MULT, operands, QFmode);")
(define_insn "*mulqf3_clobber" (define_insn "*mulqf3_clobber"
[(set (match_operand:QF 0 "reg_operand" "=f,?f,f") [(set (match_operand:QF 0 "reg_operand" "=f,f,?f")
(mult:QF (match_operand:QF 1 "src_operand" "%fR,fS<>,0") (mult:QF (match_operand:QF 1 "src_operand" "%0,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm"))) (match_operand:QF 2 "src_operand" "fHm,R,fS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (MULT, operands, QFmode)" "valid_operands (MULT, operands, QFmode)"
"@ "@
mpyf\\t%2,%0
mpyf3\\t%2,%1,%0 mpyf3\\t%2,%1,%0
mpyf3\\t%2,%1,%0 mpyf3\\t%2,%1,%0"
mpyf\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
(define_insn "*mulqf3_test" (define_insn "*mulqf3_test"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (mult:QF (match_operand:QF 1 "src_operand" "%fR,fS<>,0") (compare:CC_NOOV (mult:QF (match_operand:QF 1 "src_operand" "%0,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm")) (match_operand:QF 2 "src_operand" "fHm,R,fS<>"))
(match_operand:QF 3 "fp_zero_operand" "G,G,G"))) (match_operand:QF 3 "fp_zero_operand" "G,G,G")))
(clobber (match_scratch:QF 0 "=f,?f,f"))] (clobber (match_scratch:QF 0 "=f,f,?f"))]
"valid_operands (MULT, operands, QFmode)" "valid_operands (MULT, operands, QFmode)"
"@ "@
mpyf\\t%2,%0
mpyf3\\t%2,%1,%0 mpyf3\\t%2,%1,%0
mpyf3\\t%2,%1,%0 mpyf3\\t%2,%1,%0"
mpyf\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
(define_insn "*mulqf3_set" (define_insn "*mulqf3_set"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (mult:QF (match_operand:QF 1 "src_operand" "%fR,fS<>,0") (compare:CC_NOOV (mult:QF (match_operand:QF 1 "src_operand" "%0,fR,fS<>")
(match_operand:QF 2 "src_operand" "R,fS<>,fHm")) (match_operand:QF 2 "src_operand" "fHm,R,fS<>"))
(match_operand:QF 3 "fp_zero_operand" "G,G,G"))) (match_operand:QF 3 "fp_zero_operand" "G,G,G")))
(set (match_operand:QF 0 "reg_operand" "=f,?f,f") (set (match_operand:QF 0 "reg_operand" "=f,f,?f")
(mult:QF (match_dup 1) (mult:QF (match_dup 1)
(match_dup 2)))] (match_dup 2)))]
"valid_operands (MULT, operands, QFmode)" "valid_operands (MULT, operands, QFmode)"
"@ "@
mpyf\\t%2,%0
mpyf3\\t%2,%1,%0 mpyf3\\t%2,%1,%0
mpyf3\\t%2,%1,%0 mpyf3\\t%2,%1,%0"
mpyf\\t%2,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
; ;
...@@ -3690,23 +3690,23 @@ ...@@ -3690,23 +3690,23 @@
(define_insn "*cmpqf" (define_insn "*cmpqf"
[(set (reg:CC 21) [(set (reg:CC 21)
(compare:CC (match_operand:QF 0 "src_operand" "fR,?fS<>,f") (compare:CC (match_operand:QF 0 "src_operand" "fR,?fS<>,f")
(match_operand:QF 1 "src_operand" "R,fS<>,fHm")))] (match_operand:QF 1 "src_operand" "fHm,R,fS<>")))]
"valid_operands (COMPARE, operands, QFmode)" "valid_operands (COMPARE, operands, QFmode)"
"@ "@
cmpf\\t%1,%0
cmpf3\\t%1,%0 cmpf3\\t%1,%0
cmpf3\\t%1,%0 cmpf3\\t%1,%0"
cmpf\\t%1,%0"
[(set_attr "type" "compare,compare,compare")]) [(set_attr "type" "compare,compare,compare")])
(define_insn "*cmpqf_noov" (define_insn "*cmpqf_noov"
[(set (reg:CC_NOOV 21) [(set (reg:CC_NOOV 21)
(compare:CC_NOOV (match_operand:QF 0 "src_operand" "fR,?fS<>,f") (compare:CC_NOOV (match_operand:QF 0 "src_operand" "fR,?fS<>,f")
(match_operand:QF 1 "src_operand" "R,fS<>,fHm")))] (match_operand:QF 1 "src_operand" "fHm,R,fS<>")))]
"valid_operands (COMPARE, operands, QFmode)" "valid_operands (COMPARE, operands, QFmode)"
"@ "@
cmpf\\t%1,%0
cmpf3\\t%1,%0 cmpf3\\t%1,%0
cmpf3\\t%1,%0 cmpf3\\t%1,%0"
cmpf\\t%1,%0"
[(set_attr "type" "compare,compare,compare")]) [(set_attr "type" "compare,compare,compare")])
; Inlined float divide for C4x ; Inlined float divide for C4x
...@@ -5427,29 +5427,29 @@ ...@@ -5427,29 +5427,29 @@
; ADDF ; ADDF
; ;
(define_insn "addhf3" (define_insn "addhf3"
[(set (match_operand:HF 0 "reg_operand" "=?h,h") [(set (match_operand:HF 0 "reg_operand" "=h,?h")
(plus:HF (match_operand:HF 1 "reg_operand" "%h,0") (plus:HF (match_operand:HF 1 "reg_operand" "%0,h")
(match_operand:HF 2 "reg_or_const_operand" "h,H"))) (match_operand:HF 2 "reg_or_const_operand" "H,h")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"" ""
"@ "@
addf3\\t%2,%1,%0 addf\\t%2,%0
addf\\t%2,%0" addf3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc")])
; ;
; SUBF ; SUBF
; ;
(define_insn "subhf3" (define_insn "subhf3"
[(set (match_operand:HF 0 "reg_operand" "=?h,h,h") [(set (match_operand:HF 0 "reg_operand" "=h,h,?h")
(minus:HF (match_operand:HF 1 "reg_or_const_operand" "h,0,H") (minus:HF (match_operand:HF 1 "reg_or_const_operand" "0,H,h")
(match_operand:HF 2 "reg_or_const_operand" "h,H,0"))) (match_operand:HF 2 "reg_or_const_operand" "H,0,h")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"" ""
"@ "@
subf3\\t%2,%1,%0
subf\\t%2,%0 subf\\t%2,%0
subrf\\t%1,%0" subrf\\t%1,%0
subf3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc,binarycc")])
; ;
...@@ -5471,14 +5471,14 @@ ...@@ -5471,14 +5471,14 @@
") ")
(define_insn "*mulhf3_c40" (define_insn "*mulhf3_c40"
[(set (match_operand:HF 0 "reg_operand" "=?h,h") [(set (match_operand:HF 0 "reg_operand" "=h,?h")
(mult:HF (match_operand:HF 1 "reg_operand" "%h,0") (mult:HF (match_operand:HF 1 "reg_operand" "%0,h")
(match_operand:HF 2 "reg_or_const_operand" "h,hH"))) (match_operand:HF 2 "reg_or_const_operand" "hH,h")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"" ""
"@ "@
mpyf3\\t%2,%1,%0 mpyf\\t%2,%0
mpyf\\t%2,%0" mpyf3\\t%2,%1,%0"
[(set_attr "type" "binarycc,binarycc")]) [(set_attr "type" "binarycc,binarycc")])
; ;
...@@ -5813,9 +5813,9 @@ ...@@ -5813,9 +5813,9 @@
"legitimize_operands (PLUS, operands, HImode);") "legitimize_operands (PLUS, operands, HImode);")
(define_insn "*addhi3_clobber" (define_insn "*addhi3_clobber"
[(set (match_operand:HI 0 "ext_reg_operand" "=d,?d,d") [(set (match_operand:HI 0 "ext_reg_operand" "=d,d,?d")
(plus:HI (match_operand:HI 1 "src_operand" "%rR,rS<>,0") (plus:HI (match_operand:HI 1 "src_operand" "%0,rR,rS<>")
(match_operand:HI 2 "src_operand" "R,rS<>,rm"))) (match_operand:HI 2 "src_operand" "rm,R,rS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (PLUS, operands, HImode)" "valid_operands (PLUS, operands, HImode)"
"#" "#"
...@@ -5851,9 +5851,9 @@ ...@@ -5851,9 +5851,9 @@
(define_insn "*subhi3_clobber" (define_insn "*subhi3_clobber"
[(set (match_operand:HI 0 "ext_reg_operand" "=d,?d,d") [(set (match_operand:HI 0 "ext_reg_operand" "=d,d,?d")
(minus:HI (match_operand:HI 1 "src_operand" "rR,rS<>,0") (minus:HI (match_operand:HI 1 "src_operand" "0,rR,rS<>")
(match_operand:HI 2 "src_operand" "R,rS<>,rm"))) (match_operand:HI 2 "src_operand" "rm,R,rS<>")))
(clobber (reg:CC_NOOV 21))] (clobber (reg:CC_NOOV 21))]
"valid_operands (MINUS, operands, HImode)" "valid_operands (MINUS, operands, HImode)"
"#" "#"
...@@ -5888,9 +5888,9 @@ ...@@ -5888,9 +5888,9 @@
"legitimize_operands (IOR, operands, HImode);") "legitimize_operands (IOR, operands, HImode);")
(define_insn "*iorhi3_clobber" (define_insn "*iorhi3_clobber"
[(set (match_operand:HI 0 "reg_operand" "=d,?d,d") [(set (match_operand:HI 0 "reg_operand" "=d,d,?d")
(ior:HI (match_operand:HI 1 "src_operand" "%rR,rS<>,0") (ior:HI (match_operand:HI 1 "src_operand" "%0,rR,rS<>")
(match_operand:HI 2 "src_operand" "R,rS<>,rm"))) (match_operand:HI 2 "src_operand" "rm,R,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (IOR, operands, HImode)" "valid_operands (IOR, operands, HImode)"
"#" "#"
...@@ -5922,9 +5922,9 @@ ...@@ -5922,9 +5922,9 @@
"legitimize_operands (AND, operands, HImode);") "legitimize_operands (AND, operands, HImode);")
(define_insn "*andhi3_clobber" (define_insn "*andhi3_clobber"
[(set (match_operand:HI 0 "reg_operand" "=d,?d,d") [(set (match_operand:HI 0 "reg_operand" "=d,d,?d")
(and:HI (match_operand:HI 1 "src_operand" "%rR,rS<>,0") (and:HI (match_operand:HI 1 "src_operand" "%0,rR,rS<>")
(match_operand:HI 2 "src_operand" "R,rS<>,rm"))) (match_operand:HI 2 "src_operand" "rm,R,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (AND, operands, HImode)" "valid_operands (AND, operands, HImode)"
"#" "#"
...@@ -5957,9 +5957,9 @@ ...@@ -5957,9 +5957,9 @@
(define_insn "*xorhi3_clobber" (define_insn "*xorhi3_clobber"
[(set (match_operand:HI 0 "reg_operand" "=d,?d,d") [(set (match_operand:HI 0 "reg_operand" "=d,d,?d")
(xor:HI (match_operand:HI 1 "src_operand" "%rR,rS<>,0") (xor:HI (match_operand:HI 1 "src_operand" "%0,rR,rS<>")
(match_operand:HI 2 "src_operand" "R,rS<>,rm"))) (match_operand:HI 2 "src_operand" "rm,R,rS<>")))
(clobber (reg:CC 21))] (clobber (reg:CC 21))]
"valid_operands (XOR, operands, HImode)" "valid_operands (XOR, operands, HImode)"
"#" "#"
......
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