diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2011-01-22 15:14:54 +0100 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2011-01-22 15:14:54 +0100 |
commit | e40d91e53d7fb490d34c2b32656028d49c196a0d (patch) | |
tree | 4ee5a9a7bc32641b7d17a72c7cc6fa6e551522de /Tools/CodeGen/CodeGen.m | |
parent | b78c23f2f55004ddf8e46b2098bc1900dd59e994 (diff) |
Only vectorise when converting local variables if UseVectors is set
Diffstat (limited to 'Tools/CodeGen/CodeGen.m')
-rw-r--r-- | Tools/CodeGen/CodeGen.m | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Tools/CodeGen/CodeGen.m b/Tools/CodeGen/CodeGen.m index cda510e..7689467 100644 --- a/Tools/CodeGen/CodeGen.m +++ b/Tools/CodeGen/CodeGen.m @@ -311,10 +311,12 @@ MaybeAssignVariableInLoop[dest_, src_, cond_] := {dest, " = useMatter ? vec_load(", src, ") : ToReal(0.0)", EOL[]}, {dest, " = vec_load(", src, ")", EOL[]}]; -DeclareMaybeAssignVariableInLoop[type_, dest_, src_, mmaCond_, codeCond_] := - If [mmaCond, - {type, " ", dest, " = (", codeCond, ") ? vec_load(", src, ") : ToReal(0.0)", EOL[]}, - {type, " ", dest, " = vec_load(", src, ")", EOL[]}]; +DeclareMaybeAssignVariableInLoop[type_, dest_, src_, mmaCond_, codeCond_, vectorise_:False] := + Module[{loader}, + loader[x_] := If[vectorise, {"vec_load(", x, ")"}, x]; + If [mmaCond, + {type, " ", dest, " = (", codeCond, ") ? ", loader[src], " : ToReal(0.0)", EOL[]}, + {type, " ", dest, " = ", loader[src], EOL[]}]]; TestForNaN[expr_] := {"if (isnan(", expr, ")) {\n", |