Kaydet (Commit) e0c571ad authored tarafından fengzeng's avatar fengzeng Kaydeden (comit) I-Jui (Ray) Sung

GPU Calc: Optimized TAN

AMLOEXT-274

Change-Id: I971bb4a44ff68af5c9fc952419e7035d1127fd5f
Signed-off-by: 's avatarhaochen <haochen@multicorewareinc.com>
Signed-off-by: 's avatarWei Wei <weiwei@multicorewareinc.com>
Signed-off-by: 's avatarI-Jui (Ray) Sung <ray@multicorewareinc.com>
üst 821e19f2
...@@ -956,30 +956,51 @@ void OpArcCosHyp::GenSlidingWindowFunction(std::stringstream &ss, ...@@ -956,30 +956,51 @@ void OpArcCosHyp::GenSlidingWindowFunction(std::stringstream &ss,
void OpTan::GenSlidingWindowFunction(std::stringstream &ss, void OpTan::GenSlidingWindowFunction(std::stringstream &ss,
const std::string sSymName, SubArguments &vSubArguments) const std::string sSymName, SubArguments &vSubArguments)
{ {
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= dynamic_cast<const
formula::SingleVectorRefToken *>(tmpCur);
ss << "\ndouble " << sSymName; ss << "\ndouble " << sSymName;
ss << "_"<< BinFuncName() <<"("; ss << "_"<< BinFuncName() <<"(";
for (unsigned i = 0; i < vSubArguments.size(); i++) for (unsigned i = 0; i < vSubArguments.size(); i++)
{ {
if (i) if (i) ss << ",";
ss << ",";
vSubArguments[i]->GenSlidingWindowDecl(ss); vSubArguments[i]->GenSlidingWindowDecl(ss);
} }
ss << ")\n"; ss << ")\n";
ss << "{\n"; ss << "{\n";
ss << " int gid0=get_global_id(0);\n"; ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = "<< vSubArguments[0]->GenSlidingWindowDeclRef(); ss << " double arg0 = 0.0f;\n";
ss << ";\n"; FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
assert(tmpCur);
if(ocPush == vSubArguments[0]->GetFormulaToken()->GetOpCode())
{
if(tmpCur->GetType() == formula::svSingleVectorRef)
{
const formula::SingleVectorRefToken*tmpCurDVR=
dynamic_cast
<const formula::SingleVectorRefToken *>(tmpCur);
ss << " arg0 = ";
ss << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
#ifdef ISNAN #ifdef ISNAN
ss << " if(isNan(arg0)||(gid0>="; ss << " if(isNan(";
ss << tmpCurDVR->GetArrayLength(); ss << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << "))\n"; ss << ")||(gid0>=";
ss << " arg0 = 0;\n"; ss << tmpCurDVR->GetArrayLength();
ss << "))\n";
ss << " { arg0 = 0.0f; }\n";
#endif #endif
ss << " double tmp=tan(arg0);\n"; }
ss << " return tmp;\n"; else if(tmpCur->GetType() == formula::svDouble)
{
ss << " arg0=" << tmpCur->GetDouble() << ";\n";
}
}
else
{
ss << " arg0 = ";
ss << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
}
ss << " arg0 = arg0 * M_1_PI;\n";
ss << " return sinpi(arg0) * pow(cospi(arg0), -1);\n";
ss << "}"; ss << "}";
} }
void OpTanH::GenSlidingWindowFunction(std::stringstream &ss, void OpTanH::GenSlidingWindowFunction(std::stringstream &ss,
......
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