diff options
author | haochen <haochen@multicorewareinc.com> | 2014-05-14 17:34:06 +0800 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-05-19 09:13:23 +0200 |
commit | ca3f69a1f0198c5304dfaab45a0b4c0c95332ed0 (patch) | |
tree | 3b6f815c00e0793ce3b4a9092332629708e07000 /sc/source | |
parent | 2d73c5cdefd4fe811ae33938be32772c84fee16c (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.cxx | 7 |
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"; |