aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-ia64.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2003-04-30 21:38:55 +0000
committerH.J. Lu <hjl.tools@gmail.com>2003-04-30 21:38:55 +0000
commit165a7f90d40e63c70f8a1059bc9dc7a906f42351 (patch)
tree5f5366a142018809077c6c526da01ee9c2e1de47 /gas/config/tc-ia64.c
parent070203902f1280ca0f55c92bce337298e3ccfa95 (diff)
downloadgdb-165a7f90d40e63c70f8a1059bc9dc7a906f42351.zip
gdb-165a7f90d40e63c70f8a1059bc9dc7a906f42351.tar.gz
gdb-165a7f90d40e63c70f8a1059bc9dc7a906f42351.tar.bz2
gas/
2003-04-30 H.J. Lu <hjl@gnu.org> * config/tc-ia64.c (stmt_float_cons): Fix alignment for real10 and add real16. (md_pseudo_table): Add "xreal16", "xreal16.ua", "real16" and "real16.ua". (md_atof): Add 6 byte padding of zero for real16. gas/testsuite/ 2003-04-29 H.J. Lu <hjl@gnu.org> * gas/ia64/ia64.exp: Add real. * gas/ia64/real.s: New file. * gas/ia64/real.d: Likewise.
Diffstat (limited to 'gas/config/tc-ia64.c')
-rw-r--r--gas/config/tc-ia64.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 2a7b970..13ff8a0 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -4410,19 +4410,25 @@ static void
stmt_float_cons (kind)
int kind;
{
- size_t size;
+ size_t alignment;
switch (kind)
{
- case 'd': size = 8; break;
- case 'x': size = 10; break;
+ case 'd':
+ alignment = 8;
+ break;
+
+ case 'x':
+ case 'X':
+ alignment = 16;
+ break;
case 'f':
default:
- size = 4;
+ alignment = 4;
break;
}
- ia64_do_align (size);
+ ia64_do_align (alignment);
float_cons (kind);
}
@@ -4899,6 +4905,7 @@ const pseudo_typeS md_pseudo_table[] =
{ "xreal4", dot_xfloat_cons, 'f' },
{ "xreal8", dot_xfloat_cons, 'd' },
{ "xreal10", dot_xfloat_cons, 'x' },
+ { "xreal16", dot_xfloat_cons, 'X' },
{ "xstring", dot_xstringer, 0 },
{ "xstringz", dot_xstringer, 1 },
@@ -4909,6 +4916,7 @@ const pseudo_typeS md_pseudo_table[] =
{ "xreal4.ua", dot_xfloat_cons_ua, 'f' },
{ "xreal8.ua", dot_xfloat_cons_ua, 'd' },
{ "xreal10.ua", dot_xfloat_cons_ua, 'x' },
+ { "xreal16.ua", dot_xfloat_cons_ua, 'X' },
/* annotations/DV checking support */
{ "entry", dot_entry, 0 },
@@ -4952,6 +4960,7 @@ pseudo_opcode[] =
{ "real4", stmt_float_cons, 'f' },
{ "real8", stmt_float_cons, 'd' },
{ "real10", stmt_float_cons, 'x' },
+ { "real16", stmt_float_cons, 'X' },
{ "string", stringer, 0 },
{ "stringz", stringer, 1 },
@@ -4963,6 +4972,7 @@ pseudo_opcode[] =
{ "real4.ua", float_cons, 'f' },
{ "real8.ua", float_cons, 'd' },
{ "real10.ua", float_cons, 'x' },
+ { "real16.ua", float_cons, 'X' },
};
/* Declare a register by creating a symbol for it and entering it in
@@ -10586,6 +10596,12 @@ md_atof (type, lit, size)
md_number_to_chars (lit, (long) (*word--), sizeof (LITTLENUM_TYPE));
lit += sizeof (LITTLENUM_TYPE);
}
+ if (type == 'X')
+ {
+ /* It is 10 byte floating point with 6 byte padding. */
+ memset (lit, 0, 6);
+ *size = 8 * sizeof (LITTLENUM_TYPE);
+ }
return 0;
}