diff options
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/CodeGen/CodeGenCactus.m | 13 | ||||
-rw-r--r-- | Tools/CodeGen/Vectorisation.m | 8 |
2 files changed, 15 insertions, 6 deletions
diff --git a/Tools/CodeGen/CodeGenCactus.m b/Tools/CodeGen/CodeGenCactus.m index 3b17a9c..22a1dd2 100644 --- a/Tools/CodeGen/CodeGenCactus.m +++ b/Tools/CodeGen/CodeGenCactus.m @@ -85,11 +85,14 @@ DefFn[ dataType]]; DefFn[ - AssignVariableInLoop[dest:(_String|_Symbol), src:CodeGenBlock, vectorise_:False] := - Module[ - {loader}, - loader[x_] := If[vectorise, {"vec_load(", x, ")"}, x]; - {dest, " = ", loader[src], EOL[]}]]; + AssignVariableInLoop[dest:(_String|_Symbol), src:CodeGenBlock, + vectorise : False : False] := + {dest, " = ", src, EOL[]}]; + +DefFn[ + AssignVariableInLoop[dest:(_String|_Symbol), src:CodeGenBlock, + True] := + VectorisationAssignVariableInLoop[dest, src]]; DefFn[ DeclareAssignVariableInLoop[type_String, dest:(_String|_Symbol), src:(_String|_Symbol)] := diff --git a/Tools/CodeGen/Vectorisation.m b/Tools/CodeGen/Vectorisation.m index 842282b..ab32421 100644 --- a/Tools/CodeGen/Vectorisation.m +++ b/Tools/CodeGen/Vectorisation.m @@ -18,12 +18,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) -BeginPackage["Vectorisation`", {"Errors`", "Helpers`", "Kranc`", "CodeGenC`"}]; +BeginPackage["Vectorisation`", {"Errors`", "Helpers`", "Kranc`", "CodeGenC`", + "CodeGen`"}]; VectoriseExpression; VectorisationLocalsToGridFunctions; OpenCLLocalsToGridFunctions; VectorisationSimpleAssignEquationList; +VectorisationAssignVariableInLoop; Begin["`Private`"]; @@ -278,6 +280,10 @@ DefFn[ {prepareStorePartialVariableInLoop["i", "vecimin", "vecimax"], MapThread[storePartialVariableInLoop, {lhss, rhss}]}]; +DefFn[ + VectorisationAssignVariableInLoop[dest:(_String|_Symbol), src:CodeGenBlock] := + {dest, " = ", "vec_load(", src, ")", EOL[]}]; + End[]; EndPackage[]; |