summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorhaochen <haochen@multicorewareinc.com>2014-05-14 17:34:06 +0800
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-05-19 09:13:23 +0200
commitca3f69a1f0198c5304dfaab45a0b4c0c95332ed0 (patch)
tree3b6f815c00e0793ce3b4a9092332629708e07000 /sc/source
parent2d73c5cdefd4fe811ae33938be32772c84fee16c (diff)
GPU Calc: Support nested formula of string compared in AND formula.
such as AND(MOD($B4, 3)=0, $A4="NQSO") Change-Id: Ie891d4e56eaa39f769f018b6db53ee209dd15540
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/opencl/op_logical.cxx7
1 files changed, 5 insertions, 2 deletions
diff --git a/sc/source/core/opencl/op_logical.cxx b/sc/source/core/opencl/op_logical.cxx
index cb80ec7843e1..79dc74a71094 100644
--- a/sc/source/core/opencl/op_logical.cxx
+++ b/sc/source/core/opencl/op_logical.cxx
@@ -42,7 +42,6 @@ void OpAnd::GenSlidingWindowFunction(std::stringstream &ss,
FormulaToken *tmpCur0 = vSubArguments[j]->GetFormulaToken();
if(tmpCur0->GetType() == formula::svSingleVectorRef)
{
-#ifdef ISNAN
const formula::SingleVectorRefToken*pCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur0);
ss<< " int buffer_len"<<j<<" = "<<pCurDVR->GetArrayLength();
@@ -51,7 +50,6 @@ void OpAnd::GenSlidingWindowFunction(std::stringstream &ss,
ss <<vSubArguments[j]->GenSlidingWindowDeclRef();
ss <<"))\n";
ss <<" tmp = 1;\n else\n";
-#endif
ss <<" tmp = ";
ss <<vSubArguments[j]->GenSlidingWindowDeclRef()<<";\n";
ss <<" tmp"<<j<<" = tmp"<<j<<" && tmp;\n";
@@ -100,6 +98,11 @@ void OpAnd::GenSlidingWindowFunction(std::stringstream &ss,
ss <<" tmp"<<j<<" = tmp"<<j<<" && tmp;\n";
ss <<" }\n";
}
+ else
+ {
+ ss <<" tmp"<<j<<" = ";
+ ss <<vSubArguments[j]->GenSlidingWindowDeclRef()<<";\n";
+ }
ss <<" t = t && tmp"<<j<<";\n";
}
ss << " return t;\n";