aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-10-20 02:18:30 +0100
committergingerBill <bill@gingerbill.org>2021-10-20 02:18:30 +0100
commitcee45c1b155fcc917c2b0f9cfdbfa060304255e1 (patch)
treeadb7cf8841ca8523e14e3c276580b9905777059f /src/llvm_backend_proc.cpp
parent68afbb37f40b10fd01dda9e5640cc7ae2535a371 (diff)
Add `hadamard_product`
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 5a7fc1626..da4e4ad28 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -1270,6 +1270,16 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
lbValue b = lb_build_expr(p, ce->args[1]);
return lb_emit_outer_product(p, a, b, tv.type);
}
+ case BuiltinProc_hadamard_product:
+ {
+ lbValue a = lb_build_expr(p, ce->args[0]);
+ lbValue b = lb_build_expr(p, ce->args[1]);
+ if (is_type_array(tv.type)) {
+ return lb_emit_arith(p, Token_Mul, a, b, tv.type);
+ }
+ GB_ASSERT(is_type_matrix(tv.type));
+ return lb_emit_arith_matrix(p, Token_Mul, a, b, tv.type, true);
+ }
// "Intrinsics"