aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorTimothy Wall <twall@alum.mit.edu>2000-04-23 02:53:35 +0000
committerTimothy Wall <twall@alum.mit.edu>2000-04-23 02:53:35 +0000
commitbf3ca999c1f4f186617765d5bcdeb5719e46954e (patch)
treeb7828def8a960dfd4c280d87dbe2791b51f8f322 /gas/config
parentaa170a07eb955e54eccf5df5129a4e2c92d7c5a1 (diff)
downloadfsf-binutils-gdb-bf3ca999c1f4f186617765d5bcdeb5719e46954e.zip
fsf-binutils-gdb-bf3ca999c1f4f186617765d5bcdeb5719e46954e.tar.gz
fsf-binutils-gdb-bf3ca999c1f4f186617765d5bcdeb5719e46954e.tar.bz2
Clean up F-unit assembly and tests.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-ia64.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index e4b6bbe..9607ef8 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -448,7 +448,7 @@ pseudo_func[] =
{ "shuf", PSEUDO_FUNC_CONST, { 0x9 } },
/* fclass constants: */
- { "natval", PSEUDO_FUNC_CONST, { 0x100 } },
+ { "nat", PSEUDO_FUNC_CONST, { 0x100 } },
{ "qnan", PSEUDO_FUNC_CONST, { 0x080 } },
{ "snan", PSEUDO_FUNC_CONST, { 0x040 } },
{ "pos", PSEUDO_FUNC_CONST, { 0x001 } },
@@ -457,6 +457,8 @@ pseudo_func[] =
{ "unorm", PSEUDO_FUNC_CONST, { 0x008 } },
{ "norm", PSEUDO_FUNC_CONST, { 0x010 } },
{ "inf", PSEUDO_FUNC_CONST, { 0x020 } },
+
+ { "natval", PSEUDO_FUNC_CONST, { 0x100 } }, /* old usage */
};
/* 41-bit nop opcodes (one per unit): */
@@ -3815,7 +3817,6 @@ operand_match (idesc, index, e)
case IA64_OPND_IMMU2:
case IA64_OPND_IMMU7a:
case IA64_OPND_IMMU7b:
- case IA64_OPND_IMMU9:
case IA64_OPND_IMMU21:
case IA64_OPND_IMMU24:
case IA64_OPND_MBTYPE4:
@@ -3827,6 +3828,18 @@ operand_match (idesc, index, e)
return 1;
break;
+ case IA64_OPND_IMMU9:
+ bits = operand_width (idesc->operands[index]);
+ if (e->X_op == O_constant
+ && (bfd_vma) e->X_add_number < ((bfd_vma) 1 << bits))
+ {
+ int lobits = e->X_add_number & 0x3;
+ if (((bfd_vma) e->X_add_number & 0x3C) != 0 && lobits == 0)
+ e->X_add_number |= (bfd_vma)0x3;
+ return 1;
+ }
+ break;
+
case IA64_OPND_IMM44:
/* least 16 bits must be zero */
if ((e->X_add_number & 0xffff) != 0)