private AstNodeStm _comp(int fc02, int fc3)
{
bool fc_unordererd = ((fc02 & 1) != 0);
bool fc_equal = ((fc02 & 2) != 0);
bool fc_less = ((fc02 & 4) != 0);
bool fc_inv_qnan = (fc3 != 0); // TODO -- Only used for detecting invalid operations?
//if (float.IsNaN(s) || float.IsNaN(t))
//{
// CpuThreadState.Fcr31.CC = fc_unordererd;
//}
//else
//{
// //bool cc = false;
// //if (fc_equal) cc = cc || (s == t);
// //if (fc_less) cc = cc || (s < t);
// //return cc;
// bool equal = (fc_equal) && (s == t);
// bool less = (fc_less) && (s < t);
//
// CpuThreadState.Fcr31.CC = (less || equal);
//}
//MipsMethodEmitter.LoadFPR(FS);
//MipsMethodEmitter.LoadFPR(FT);
return ast.Statement(ast.CallStatic(
(Action<CpuThreadState, float, float, bool, bool, bool, bool>)CpuEmitterUtils._comp_impl,
ast.CpuThreadState,
ast.FPR(FS),
ast.FPR(FT),
ast.Immediate(fc_unordererd),
ast.Immediate(fc_equal),
ast.Immediate(fc_less),
ast.Immediate(fc_inv_qnan)
));
}