aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips/mips.c
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2004-08-24 20:43:57 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2004-08-24 20:43:57 +0000
commitb3c90666df0131202f02ad1e4b1101c3b9287029 (patch)
tree042ef3503fcd81e676e26c73a40860f4b669477b /gcc/config/mips/mips.c
parent04550232324f75215c1bc5df69f71fe695d06386 (diff)
downloadgcc-b3c90666df0131202f02ad1e4b1101c3b9287029.zip
gcc-b3c90666df0131202f02ad1e4b1101c3b9287029.tar.gz
gcc-b3c90666df0131202f02ad1e4b1101c3b9287029.tar.bz2
mips.h (ISA_HAS_INT_CONDMOVE): Delete.
* config/mips/mips.h (ISA_HAS_INT_CONDMOVE): Delete. * config/mips/mips.c (print_operand): Fold %B/%b handling into %T/%t, using the mode of the operand to decide between them. * config/mips/mips.md (MOVECC): New mode macro. (ccreg): New mode attribute. (*mov{si,di,sf,df}_on_{cc,si,di}): Name formerly unnamed patterns. Redefine using :GPR and :MOVECC. Use %T and %t for the condition. (mov[sd]icc): Redefine using :GPR. From-SVN: r86515
Diffstat (limited to 'gcc/config/mips/mips.c')
-rw-r--r--gcc/config/mips/mips.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 022d7b4..795d113 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -4480,10 +4480,9 @@ mips_debugger_offset (rtx addr, HOST_WIDE_INT offset)
'F' print part of opcode for a floating-point branch condition.
'N' print part of opcode for a branch condition, inverted.
'W' print part of opcode for a floating-point branch condition, inverted.
- 'B' print 'z' for EQ, 'n' for NE
- 'b' print 'n' for EQ, 'z' for NE
- 'T' print 'f' for EQ, 't' for NE
- 't' print 't' for EQ, 'f' for NE
+ 'T' print 'f' for (eq:CC ...), 't' for (ne:CC ...),
+ 'z' for (eq:?I ...), 'n' for (ne:?I ...).
+ 't' like 'T', but with the EQ/NE cases reversed
'Z' print register and a comma, but print nothing for $fcc0
'R' print the reloc associated with LO_SUM
@@ -4772,14 +4771,11 @@ print_operand (FILE *file, rtx op, int letter)
else if (letter == 'd' || letter == 'x' || letter == 'X')
output_operand_lossage ("invalid use of %%d, %%x, or %%X");
- else if (letter == 'B')
- fputs (code == EQ ? "z" : "n", file);
- else if (letter == 'b')
- fputs (code == EQ ? "n" : "z", file);
- else if (letter == 'T')
- fputs (code == EQ ? "f" : "t", file);
- else if (letter == 't')
- fputs (code == EQ ? "t" : "f", file);
+ else if (letter == 'T' || letter == 't')
+ {
+ int truth = (code == NE) == (letter == 'T');
+ fputc ("zfnt"[truth * 2 + (GET_MODE (op) == CCmode)], file);
+ }
else if (CONST_GP_P (op))
fputs (reg_names[GLOBAL_POINTER_REGNUM], file);