rs6000.c (any_parallel_operand): New predicate.
* config/rs6000/rs6000.c (any_parallel_operand): New predicate. * config/rs6000/rs6000.h (PREDICATE_CODES): Add any_parallel_operand, lmw_operation, stmw_operation, mfcr_operation, mtcrf_operation. * config/rs6000/rs6000.md (save_fpregs_{si,di}): Use any_parallel_operand. (return_and_restore_fpregs_{si,di}): Same. From-SVN: r85937
This commit is contained in:
parent
20f3bb804a
commit
85d346f13c
@ -1,3 +1,13 @@
|
||||
2004-08-12 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/rs6000.c (any_parallel_operand): New predicate.
|
||||
* config/rs6000/rs6000.h (PREDICATE_CODES): Add
|
||||
any_parallel_operand, lmw_operation, stmw_operation,
|
||||
mfcr_operation, mtcrf_operation.
|
||||
* config/rs6000/rs6000.md (save_fpregs_{si,di}): Use
|
||||
any_parallel_operand.
|
||||
(return_and_restore_fpregs_{si,di}): Same.
|
||||
|
||||
2004-08-12 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* genrecog.c (add_to_sequence): When processing a MATCH_PARALLEL,
|
||||
|
@ -1672,7 +1672,17 @@ any_operand (rtx op ATTRIBUTE_UNUSED,
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Returns 1 always. */
|
||||
|
||||
int
|
||||
any_parallel_operand (rtx op ATTRIBUTE_UNUSED,
|
||||
enum machine_mode mode ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Returns 1 if op is the count register. */
|
||||
|
||||
int
|
||||
count_register_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
|
||||
{
|
||||
@ -1689,6 +1699,7 @@ count_register_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
|
||||
}
|
||||
|
||||
/* Returns 1 if op is an altivec register. */
|
||||
|
||||
int
|
||||
altivec_register_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
|
||||
{
|
||||
|
@ -2530,6 +2530,7 @@ extern char rs6000_reg_names[][8]; /* register names (0 vs. %r0). */
|
||||
#define PREDICATE_CODES \
|
||||
{"any_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
|
||||
LABEL_REF, SUBREG, REG, MEM, PARALLEL}}, \
|
||||
{"any_parallel_operand", {PARALLEL}}, \
|
||||
{"zero_constant", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, \
|
||||
LABEL_REF, SUBREG, REG, MEM}}, \
|
||||
{"short_cint_operand", {CONST_INT}}, \
|
||||
@ -2580,7 +2581,11 @@ extern char rs6000_reg_names[][8]; /* register names (0 vs. %r0). */
|
||||
CONST_DOUBLE, SYMBOL_REF}}, \
|
||||
{"load_multiple_operation", {PARALLEL}}, \
|
||||
{"store_multiple_operation", {PARALLEL}}, \
|
||||
{"lmw_operation", {PARALLEL}}, \
|
||||
{"stmw_operation", {PARALLEL}}, \
|
||||
{"vrsave_operation", {PARALLEL}}, \
|
||||
{"mfcr_operation", {PARALLEL}}, \
|
||||
{"mtcrf_operation", {PARALLEL}}, \
|
||||
{"branch_comparison_operator", {EQ, NE, LE, LT, GE, \
|
||||
GT, LEU, LTU, GEU, GTU, \
|
||||
UNORDERED, ORDERED, \
|
||||
|
@ -14393,7 +14393,7 @@
|
||||
"{stm|stmw} %2,%1")
|
||||
|
||||
(define_insn "*save_fpregs_si"
|
||||
[(match_parallel 0 "any_operand"
|
||||
[(match_parallel 0 "any_parallel_operand"
|
||||
[(clobber (match_operand:SI 1 "register_operand" "=l"))
|
||||
(use (match_operand:SI 2 "call_operand" "s"))
|
||||
(set (match_operand:DF 3 "memory_operand" "=m")
|
||||
@ -14404,7 +14404,7 @@
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn "*save_fpregs_di"
|
||||
[(match_parallel 0 "any_operand"
|
||||
[(match_parallel 0 "any_parallel_operand"
|
||||
[(clobber (match_operand:DI 1 "register_operand" "=l"))
|
||||
(use (match_operand:DI 2 "call_operand" "s"))
|
||||
(set (match_operand:DF 3 "memory_operand" "=m")
|
||||
@ -14500,10 +14500,10 @@
|
||||
[(set_attr "type" "jmpreg")])
|
||||
|
||||
; FIXME: This would probably be somewhat simpler if the Cygnus sibcall
|
||||
; stuff was in GCC. Oh, and "any_operand" is a bit flexible...
|
||||
; stuff was in GCC. Oh, and "any_parallel_operand" is a bit flexible...
|
||||
|
||||
(define_insn "*return_and_restore_fpregs_si"
|
||||
[(match_parallel 0 "any_operand"
|
||||
[(match_parallel 0 "any_parallel_operand"
|
||||
[(return)
|
||||
(use (match_operand:SI 1 "register_operand" "l"))
|
||||
(use (match_operand:SI 2 "call_operand" "s"))
|
||||
@ -14513,7 +14513,7 @@
|
||||
"b %z2")
|
||||
|
||||
(define_insn "*return_and_restore_fpregs_di"
|
||||
[(match_parallel 0 "any_operand"
|
||||
[(match_parallel 0 "any_parallel_operand"
|
||||
[(return)
|
||||
(use (match_operand:DI 1 "register_operand" "l"))
|
||||
(use (match_operand:DI 2 "call_operand" "s"))
|
||||
|
Loading…
Reference in New Issue
Block a user