ia64 predcation thinko
Richard Henderson
rth@cygnus.com
Mon Jul 24 17:50:00 GMT 2000
I introduced a bug on 07-17 in which we not emit the
predicate for a movdi instruction. Fixed thus.
r~
* 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.
Index: ia64.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.c,v
retrieving revision 1.33
diff -c -p -d -r1.33 ia64.c
*** ia64.c 2000/07/17 22:19:58 1.33
--- ia64.c 2000/07/25 00:46:12
*************** ia64_print_operand (file, x, code)
*** 2067,2072 ****
--- 2067,2085 ----
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: ia64.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.h,v
retrieving revision 1.28
diff -c -p -d -r1.28 ia64.h
*** ia64.h 2000/07/20 21:27:15 1.28
--- ia64.h 2000/07/25 00:46:12
*************** do { \
*** 2475,2481 ****
/* ??? Keep this around for now, as we might need it later. */
! #define PRINT_OPERAND_PUNCT_VALID_P(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
--- 2475,2482 ----
/* ??? Keep this around for now, as we might need it later. */
! #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: ia64.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.md,v
retrieving revision 1.24
diff -c -p -d -r1.24 ia64.md
*** ia64.md 2000/07/17 22:19:58 1.24
--- ia64.md 2000/07/25 00:46:12
***************
*** 264,281 ****
"*
{
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\"
};
/* We use 'i' for alternative 2 despite possible PIC problems.
--- 264,281 ----
"*
{
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\"
};
/* We use 'i' for alternative 2 despite possible PIC problems.
More information about the Gcc-patches
mailing list