aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen/CodeGen.m
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2011-01-22 15:14:54 +0100
committerIan Hinder <ian.hinder@aei.mpg.de>2011-01-22 15:14:54 +0100
commite40d91e53d7fb490d34c2b32656028d49c196a0d (patch)
tree4ee5a9a7bc32641b7d17a72c7cc6fa6e551522de /Tools/CodeGen/CodeGen.m
parentb78c23f2f55004ddf8e46b2098bc1900dd59e994 (diff)
Only vectorise when converting local variables if UseVectors is set
Diffstat (limited to 'Tools/CodeGen/CodeGen.m')
-rw-r--r--Tools/CodeGen/CodeGen.m10
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",