ia64.c (ia64_print_operand): Handle "%,".
authorRichard Henderson <rth@cygnus.com>
Tue, 25 Jul 2000 00:48:36 +0000 (17:48 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 25 Jul 2000 00:48:36 +0000 (17:48 -0700)
        * 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
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.h
gcc/config/ia64/ia64.md

index d69e2324a13ada74ab8ac5ac3741b75bbd500de2..f8c0441b1375da68f31dd6cbff7b1b0f9059713d 100644 (file)
@@ -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.
index a87d25661c623b9b2d7c9e3b6be3455b55d7f76b..470acaa29bfeced66ac93bd37ff85a3405daf007 100644 (file)
@@ -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;
index f4fa27af99e555817e4314975eb8be9b08ec6bfb..b7f90713e608c516e1532ae5629eca634fcffb1a 100644 (file)
@@ -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
index 1e5253b201921e3d0ec8851aa5df6b102b79c2aa..857e2bb21dbcf5a2546ab49966d2c51702b059b3 100644 (file)
   "*
 {
   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.