i386.c (function_arg_advance): Pass SSE arguments in registers.

* i386.c (function_arg_advance):  Pass SSE arguments in registers.
	(function_arg): Likewise.

Co-Authored-By: Bernd Schmidt <bernds@redhat.com>
Co-Authored-By: Jan Hubicka <jh@suse.cz>

From-SVN: r39955
This commit is contained in:
Catherine Moore 2001-02-21 18:49:33 +00:00 committed by Jan Hubicka
parent a43f528e5a
commit 82a127a9ec
2 changed files with 31 additions and 8 deletions

View File

@ -1,3 +1,10 @@
Wed Feb 21 18:57:28 CET 2001 Catherine Moore <clm@redhat.com>
Bernd Schmidt <bernds@redhat.com>
Jan Hubicka <jh@suse.cz>
* i386.c (function_arg_advance): Pass SSE arguments in registers.
(function_arg): Likewise.
Wed Feb 21 18:12:41 CET 2001 Jan Hubicka <jh@suse.cz>
* i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec.

View File

@ -916,17 +916,29 @@ function_arg_advance (cum, mode, type, named)
fprintf (stderr,
"function_adv (sz=%d, wds=%2d, nregs=%d, mode=%s, named=%d)\n\n",
words, cum->words, cum->nregs, GET_MODE_NAME (mode), named);
cum->words += words;
cum->nregs -= words;
cum->regno += words;
if (cum->nregs <= 0)
if (TARGET_SSE && mode == TImode)
{
cum->nregs = 0;
cum->regno = 0;
cum->sse_words += words;
cum->sse_nregs -= 1;
cum->sse_regno += 1;
if (cum->sse_nregs <= 0)
{
cum->sse_nregs = 0;
cum->sse_regno = 0;
}
}
else
{
cum->words += words;
cum->nregs -= words;
cum->regno += words;
if (cum->nregs <= 0)
{
cum->nregs = 0;
cum->regno = 0;
}
}
return;
}
@ -969,6 +981,10 @@ function_arg (cum, mode, type, named)
if (words <= cum->nregs)
ret = gen_rtx_REG (mode, cum->regno);
break;
case TImode:
if (cum->sse_nregs)
ret = gen_rtx_REG (mode, cum->sse_regno);
break;
}
if (TARGET_DEBUG_ARG)