2004-04-09 Chris Demetriou <cgd@broadcom.com>

* sb1.igen (check_sbx): New function.
        (PABSDIFF.fmt, PABSDIFC.fmt, PAVG.fmt): Use check_sbx.
This commit is contained in:
Chris Demetriou 2004-04-10 06:17:55 +00:00
parent ccba17639b
commit c6f9085cab
2 changed files with 28 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2004-04-09 Chris Demetriou <cgd@broadcom.com>
* sb1.igen (check_sbx): New function.
(PABSDIFF.fmt, PABSDIFC.fmt, PAVG.fmt): Use check_sbx.
2004-03-29 Chris Demetriou <cgd@broadcom.com>
Richard Sandiford <rsandifo@redhat.com>

View File

@ -22,6 +22,20 @@
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Helper:
//
// Check that the SB-1 extension instruction can currently be used, and
// signal a ReservedInstruction exception if not.
//
:function:::void:check_sbx:instruction_word insn
*sb1:
{
if ((SR & status_SBX) == 0)
SignalException(ReservedInstruction, insn);
}
// MDMX ASE Instructions
// ---------------------
//
@ -152,13 +166,9 @@
*sb1:
{
check_mdmx (SD_, instruction_0);
if (SR & status_SBX)
{
check_mdmx_fmtsel (SD_, instruction_0, FMTSEL);
StoreFPR(VD,fmt_mdmx,MX_AbsDiff(ValueFPR(VS,fmt_mdmx),VT,FMTSEL));
}
else
SignalException(ReservedInstruction, instruction_0);
check_sbx (SD_, instruction_0);
check_mdmx_fmtsel (SD_, instruction_0, FMTSEL);
StoreFPR(VD,fmt_mdmx,MX_AbsDiff(ValueFPR(VS,fmt_mdmx),VT,FMTSEL));
}
@ -167,13 +177,9 @@
*sb1:
{
check_mdmx (SD_, instruction_0);
if (SR & status_SBX)
{
check_mdmx_fmtsel (SD_, instruction_0, FMTSEL);
MX_AbsDiffC(ValueFPR(VS,fmt_mdmx),VT,FMTSEL);
}
else
SignalException(ReservedInstruction, instruction_0);
check_sbx (SD_, instruction_0);
check_mdmx_fmtsel (SD_, instruction_0, FMTSEL);
MX_AbsDiffC(ValueFPR(VS,fmt_mdmx),VT,FMTSEL);
}
@ -182,11 +188,7 @@
*sb1:
{
check_mdmx (SD_, instruction_0);
if (SR & status_SBX)
{
check_mdmx_fmtsel (SD_, instruction_0, FMTSEL);
StoreFPR(VD,fmt_mdmx,MX_Avg(ValueFPR(VS,fmt_mdmx),VT,FMTSEL));
}
else
SignalException(ReservedInstruction, instruction_0);
check_sbx (SD_, instruction_0);
check_mdmx_fmtsel (SD_, instruction_0, FMTSEL);
StoreFPR(VD,fmt_mdmx,MX_Avg(ValueFPR(VS,fmt_mdmx),VT,FMTSEL));
}