add "tan" to intrinsic functions

This commit is contained in:
drmortalwombat 2024-02-13 20:49:11 +01:00
parent 77f035e2b5
commit 806539a2d6
5 changed files with 13 additions and 1 deletions

View File

@ -32,6 +32,7 @@ bool isfinite(float f);
#pragma intrinsic(sin) #pragma intrinsic(sin)
#pragma intrinsic(cos) #pragma intrinsic(cos)
#pragma intrinsic(tan)
#pragma compile("math.c") #pragma compile("math.c")

View File

@ -1099,6 +1099,11 @@ ConstexprInterpreter::Value ConstexprInterpreter::EvalCall(Expression* exp, Cons
mResult = Value(exp->mLocation, TheFloatTypeDeclaration); mResult = Value(exp->mLocation, TheFloatTypeDeclaration);
mResult.PutFloat(cos(mParams[0].GetFloat())); mResult.PutFloat(cos(mParams[0].GetFloat()));
} }
else if (!strcmp(iname->mString, "tan"))
{
mResult = Value(exp->mLocation, TheFloatTypeDeclaration);
mResult.PutFloat(tan(mParams[0].GetFloat()));
}
else else
mErrors->Error(exp->mLeft->mDecValue->mLocation, EERR_OBJECT_NOT_FOUND, "Unknown intrinsic function", iname); mErrors->Error(exp->mLeft->mDecValue->mLocation, EERR_OBJECT_NOT_FOUND, "Unknown intrinsic function", iname);
} }

View File

@ -946,6 +946,8 @@ Expression* Expression::ConstantFold(Errors * errors, LinkerSection * dataSectio
d = sin(d); d = sin(d);
else if (!strcmp(iname->mString, "cos")) else if (!strcmp(iname->mString, "cos"))
d = cos(d); d = cos(d);
else if (!strcmp(iname->mString, "tan"))
d = tan(d);
else else
return this; return this;

View File

@ -10409,9 +10409,10 @@ bool InterCodeBasicBlock::SimplifyIntegerNumeric(const GrowingInstructionPtrArra
if (pins->mSrc[0].mTemp < 0 && ins->mSrc[0].mIntConst + pins->mSrc[0].mIntConst >= 0) if (pins->mSrc[0].mTemp < 0 && ins->mSrc[0].mIntConst + pins->mSrc[0].mIntConst >= 0)
{ {
int64 offset = ins->mSrc[0].mIntConst + pins->mSrc[0].mIntConst;
ins->mSrc[0].Forward(pins->mSrc[1]); ins->mSrc[0].Forward(pins->mSrc[1]);
pins->mSrc[1].mFinal = false; pins->mSrc[1].mFinal = false;
ins->mSrc[0].mIntConst += pins->mSrc[0].mIntConst; ins->mSrc[0].mIntConst += offset;
changed = true; changed = true;
} }
else if (pins->mSrc[1].mTemp < 0 && pins->mSrc[0].mTemp >= 0 && ins->mSrc[0].mIntConst && (ins->mSrc[0].mIntConst >= 256 || pins->mSrc[0].IsUByte())) else if (pins->mSrc[1].mTemp < 0 && pins->mSrc[0].mTemp >= 0 && ins->mSrc[0].mIntConst && (ins->mSrc[0].mIntConst >= 256 || pins->mSrc[0].IsUByte()))

View File

@ -3343,6 +3343,9 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration*
else if (!strcmp(iname->mString, "cos")) else if (!strcmp(iname->mString, "cos"))
{ {
} }
else if (!strcmp(iname->mString, "tan"))
{
}
else if (!strcmp(iname->mString, "malloc")) else if (!strcmp(iname->mString, "malloc"))
{ {
vr = TranslateExpression(procType, proc, block, exp->mRight, destack, breakBlock, continueBlock, inlineMapper); vr = TranslateExpression(procType, proc, block, exp->mRight, destack, breakBlock, continueBlock, inlineMapper);