diff options
author | Richard Henderson <rth@cygnus.com> | 2000-07-24 17:48:36 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-07-24 17:48:36 -0700 |
commit | 6f8aa100d5a06aeaf83d360848727de97132b7fc (patch) | |
tree | f86be8df35b6f6a6310509a5f65773fa78ab7c91 | |
parent | 6f4280eff71abb396d4bf9e4b455ea68cd949e77 (diff) | |
download | gcc-6f8aa100d5a06aeaf83d360848727de97132b7fc.zip gcc-6f8aa100d5a06aeaf83d360848727de97132b7fc.tar.gz gcc-6f8aa100d5a06aeaf83d360848727de97132b7fc.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 13 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.h | 3 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.md | 24 |
4 files changed, 33 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d69e232..f8c0441 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-07-24 Richard Henderson <rth@cygnus.com> + + * 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 <zack@wolery.cumb.org> * cppexp.c: Warn about unary + if -Wtraditional. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index a87d256..470acaa 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 f4fa27a..b7f9071 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 1e5253b..857e2bb 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. |