Commit 82a127a9 by Catherine Moore Committed by Jan Hubicka

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
parent a43f528e
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> Wed Feb 21 18:12:41 CET 2001 Jan Hubicka <jh@suse.cz>
* i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec. * i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec.
......
...@@ -916,7 +916,19 @@ function_arg_advance (cum, mode, type, named) ...@@ -916,7 +916,19 @@ function_arg_advance (cum, mode, type, named)
fprintf (stderr, fprintf (stderr,
"function_adv (sz=%d, wds=%2d, nregs=%d, mode=%s, named=%d)\n\n", "function_adv (sz=%d, wds=%2d, nregs=%d, mode=%s, named=%d)\n\n",
words, cum->words, cum->nregs, GET_MODE_NAME (mode), named); words, cum->words, cum->nregs, GET_MODE_NAME (mode), named);
if (TARGET_SSE && mode == TImode)
{
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->words += words;
cum->nregs -= words; cum->nregs -= words;
cum->regno += words; cum->regno += words;
...@@ -926,7 +938,7 @@ function_arg_advance (cum, mode, type, named) ...@@ -926,7 +938,7 @@ function_arg_advance (cum, mode, type, named)
cum->nregs = 0; cum->nregs = 0;
cum->regno = 0; cum->regno = 0;
} }
}
return; return;
} }
...@@ -969,6 +981,10 @@ function_arg (cum, mode, type, named) ...@@ -969,6 +981,10 @@ function_arg (cum, mode, type, named)
if (words <= cum->nregs) if (words <= cum->nregs)
ret = gen_rtx_REG (mode, cum->regno); ret = gen_rtx_REG (mode, cum->regno);
break; break;
case TImode:
if (cum->sse_nregs)
ret = gen_rtx_REG (mode, cum->sse_regno);
break;
} }
if (TARGET_DEBUG_ARG) if (TARGET_DEBUG_ARG)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment