diff options
author | Timothy Wall <twall@alum.mit.edu> | 2000-04-23 02:53:35 +0000 |
---|---|---|
committer | Timothy Wall <twall@alum.mit.edu> | 2000-04-23 02:53:35 +0000 |
commit | bf3ca999c1f4f186617765d5bcdeb5719e46954e (patch) | |
tree | b7828def8a960dfd4c280d87dbe2791b51f8f322 /gas/config | |
parent | aa170a07eb955e54eccf5df5129a4e2c92d7c5a1 (diff) | |
download | gdb-bf3ca999c1f4f186617765d5bcdeb5719e46954e.zip gdb-bf3ca999c1f4f186617765d5bcdeb5719e46954e.tar.gz gdb-bf3ca999c1f4f186617765d5bcdeb5719e46954e.tar.bz2 |
Clean up F-unit assembly and tests.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-ia64.c | 17 |
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) |