From 6f8aa100d5a06aeaf83d360848727de97132b7fc Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 24 Jul 2000 17:48:36 -0700 Subject: [PATCH] ia64.c (ia64_print_operand): Handle "%,". * config/ia64/ia64.c (ia64_print_operand): Handle "%,". * config/ia64/ia64.h (PRINT_OPERAND_PUNCT_VALID_P): Likewise. * config/ia64/ia64.md (movdi_internal): Use it. From-SVN: r35240 --- gcc/ChangeLog | 6 ++++++ gcc/config/ia64/ia64.c | 13 +++++++++++++ gcc/config/ia64/ia64.h | 3 ++- gcc/config/ia64/ia64.md | 24 ++++++++++++------------ 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d69e2324a13..f8c0441b137 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-07-24 Richard Henderson + + * config/ia64/ia64.c (ia64_print_operand): Handle "%,". + * config/ia64/ia64.h (PRINT_OPERAND_PUNCT_VALID_P): Likewise. + * config/ia64/ia64.md (movdi_internal): Use it. + 2000-07-24 Zack Weinberg * cppexp.c: Warn about unary + if -Wtraditional. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index a87d25661c6..470acaa29bf 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -2067,6 +2067,19 @@ ia64_print_operand (file, x, code) return; } + case ',': + x = current_insn_predicate; + if (x) + { + unsigned int regno = REGNO (XEXP (x, 0)); + if (GET_CODE (x) == EQ) + regno += 1; + if (code == 'j') + regno ^= 1; + fprintf (file, "(%s) ", reg_names [regno]); + } + return; + default: output_operand_lossage ("ia64_print_operand: unknown code"); return; diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index f4fa27af99e..b7f90713e60 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -2475,7 +2475,8 @@ do { \ /* ??? Keep this around for now, as we might need it later. */ -#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '+') +#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \ + ((CODE) == '+' || (CODE) == ',') /* A C compound statement to output to stdio stream STREAM the assembler syntax for an instruction operand that is a memory reference whose address is X. X diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index 1e5253b2019..857e2bb21db 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -264,18 +264,18 @@ "* { static const char * const alt[] = { - \"mov %0 = %r1\", - \"addl %0 = %1, r0\", - \"movl %0 = %1\", - \"ld8%O1 %0 = %1%P1\", - \"st8%Q0 %0 = %r1%P0\", - \"getf.sig %0 = %1\", - \"setf.sig %0 = %r1\", - \"mov %0 = %1\", - \"ldf8 %0 = %1%P1\", - \"stf8 %0 = %1%P0\", - \"mov %0 = %1\", - \"mov %0 = %r1\" + \"%,mov %0 = %r1\", + \"%,addl %0 = %1, r0\", + \"%,movl %0 = %1\", + \"%,ld8%O1 %0 = %1%P1\", + \"%,st8%Q0 %0 = %r1%P0\", + \"%,getf.sig %0 = %1\", + \"%,setf.sig %0 = %r1\", + \"%,mov %0 = %1\", + \"%,ldf8 %0 = %1%P1\", + \"%,stf8 %0 = %1%P0\", + \"%,mov %0 = %1\", + \"%,mov %0 = %r1\" }; /* We use 'i' for alternative 2 despite possible PIC problems.