diff options
| author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-25 00:48:36 +0000 |
|---|---|---|
| committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-25 00:48:36 +0000 |
| commit | 9d23a2c8eeef120ccc67e6b6595c0a24e052de4d (patch) | |
| tree | f86be8df35b6f6a6310509a5f65773fa78ab7c91 | |
| parent | 6269e47ee11ccb2170e24d6a9931be6f7a8e222b (diff) | |
| download | ppe42-gcc-9d23a2c8eeef120ccc67e6b6595c0a24e052de4d.tar.gz ppe42-gcc-9d23a2c8eeef120ccc67e6b6595c0a24e052de4d.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35240 138bc75d-0d04-0410-961f-82ee72b054a4
| -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 d69e2324a13..f8c0441b137 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 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. |

