2005-01-31  Jan Beulich  <jbeulich@novell.com>

	* config/tc-ia64.c (parse_operands): Also handle alloc without first
	input being ar.pfs.

gas/testsuite/
2005-01-31  Jan Beulich  <jbeulich@novell.com>

	* gas/ia64/pseudo.[ds]: New.
	* gas/ia64/ia64.exp: Run new test.

opcodes/
2005-01-31  Jan Beulich  <jbeulich@novell.com>

	* ia64-gen.c (NELEMS): Define.
	(shrink): Generate alias with missing second predicate register when
	opcode has two outputs and these are both predicates.
	* ia64-opc-i.c (FULL17): Define.
	(ia64_opcodes_i): Add mov-to-pr alias without second input. Use FULL17
	here to generate output template.
	(TBITCM, TNATCM): Undefine after use.
	* ia64-opc-m.c (ia64_opcodes_i): Add alloc alias without ar.pfs as
	first input. Add ld16 aliases without ar.csd as second output. Add
	st16 aliases without ar.csd as second input. Add cmpxchg aliases
	without ar.ccv as third input. Add cmp8xchg16 aliases without ar.csd/
	ar.ccv as third/fourth inputs. Consolidate through...
	(CMPXCHG_acq, CMPXCHG_rel, CMPXCHG_1, CMPXCHG_2, CMPXCHG_4, CMPXCHG_8,
	CMPXCHGn, CMP8XCHG16, CMPXCHG_ALL): Define.
	* ia64-asmtab.c: Regenerate.
This commit is contained in:
Jan Beulich
2005-01-31 08:48:32 +00:00
parent e901b190a9
commit 60b9a61772
11 changed files with 6085 additions and 4996 deletions

View File

@ -56,6 +56,7 @@
const char * program_name = NULL;
int debug = 0;
#define NELEMS(a) (sizeof (a) / sizeof ((a)[0]))
#define tmalloc(X) (X *) xmalloc (sizeof (X))
/* The main opcode table entry. Each entry is a unique combination of
@ -2725,7 +2726,26 @@ shrink (table)
int curr_opcode;
for (curr_opcode = 0; table[curr_opcode].name != NULL; curr_opcode++)
add_opcode_entry (table + curr_opcode);
{
add_opcode_entry (table + curr_opcode);
if (table[curr_opcode].num_outputs == 2
&& ((table[curr_opcode].operands[0] == IA64_OPND_P1
&& table[curr_opcode].operands[1] == IA64_OPND_P2)
|| (table[curr_opcode].operands[0] == IA64_OPND_P2
&& table[curr_opcode].operands[1] == IA64_OPND_P1)))
{
struct ia64_opcode *alias = tmalloc(struct ia64_opcode);
unsigned i;
*alias = table[curr_opcode];
for (i = 2; i < NELEMS (alias->operands); ++i)
alias->operands[i - 1] = alias->operands[i];
alias->operands[NELEMS (alias->operands) - 1] = IA64_OPND_NIL;
--alias->num_outputs;
alias->flags |= PSEUDO;
add_opcode_entry (alias);
}
}
}