aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-07-24 17:48:36 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-07-24 17:48:36 -0700
commit6f8aa100d5a06aeaf83d360848727de97132b7fc (patch)
treef86be8df35b6f6a6310509a5f65773fa78ab7c91 /gcc
parent6f4280eff71abb396d4bf9e4b455ea68cd949e77 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/ia64/ia64.c13
-rw-r--r--gcc/config/ia64/ia64.h3
-rw-r--r--gcc/config/ia64/ia64.md24
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.