aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-10-25 13:10:56 +0100
committergingerBill <bill@gingerbill.org>2021-10-25 13:10:56 +0100
commita440d8d812223961f0934aefecaef4975a604c43 (patch)
treeaebedd62f7ed3a8956d5b94a91c74fb72dee5d94 /src/llvm_backend_expr.cpp
parentaaaddd03a6fc7194fa9315f802e369a0f62b9e07 (diff)
Improve use of vector muladd operations
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 7ae1a7315..ad2c609ef 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -837,11 +837,10 @@ lbValue lb_emit_matrix_mul_vector(lbProcedure *p, lbValue lhs, lbValue rhs, Type
LLVMValueRef vector = nullptr;
for (i64 i = 0; i < column_count; i++) {
- LLVMValueRef product = llvm_vector_mul(p, m_columns[i], v_rows[i]);
if (i == 0) {
- vector = product;
+ vector = llvm_vector_mul(p, m_columns[i], v_rows[i]);
} else {
- vector = llvm_vector_add(p, vector, product);
+ vector = llvm_vector_mul_add(p, m_columns[i], v_rows[i], vector);
}
}
@@ -914,11 +913,10 @@ lbValue lb_emit_vector_mul_matrix(lbProcedure *p, lbValue lhs, lbValue rhs, Type
LLVMValueRef vector = nullptr;
for (i64 i = 0; i < row_count; i++) {
- LLVMValueRef product = llvm_vector_mul(p, v_rows[i], m_columns[i]);
if (i == 0) {
- vector = product;
+ vector = llvm_vector_mul(p, v_rows[i], m_columns[i]);
} else {
- vector = llvm_vector_add(p, vector, product);
+ vector = llvm_vector_mul_add(p, v_rows[i], m_columns[i], vector);
}
}