diff options
| author | gingerBill <bill@gingerbill.org> | 2021-10-20 15:36:24 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-10-20 15:36:24 +0100 |
| commit | 30c141ceb98d4b65418fb70c572f86cd701dd872 (patch) | |
| tree | 78f257ec2885b3d8acb44032fc38502f260b5cab /src/llvm_backend_expr.cpp | |
| parent | d3abc1a2b4fe024fed5f2b9f5371fc2b7fb029be (diff) | |
Minor clean up for `lb_matrix_trimmed_vector_mask`
Diffstat (limited to 'src/llvm_backend_expr.cpp')
| -rw-r--r-- | src/llvm_backend_expr.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 7d1c8e3db..beb860383 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -517,18 +517,14 @@ LLVMValueRef lb_matrix_to_vector(lbProcedure *p, lbValue matrix) { return matrix_vector; } -LLVMValueRef lb_matrix_to_trimmed_vector(lbProcedure *p, lbValue m) { - Type *mt = base_type(m.type); +LLVMValueRef lb_matrix_trimmed_vector_mask(lbProcedure *p, Type *mt) { + mt = base_type(mt); GB_ASSERT(mt->kind == Type_Matrix); unsigned stride = cast(unsigned)matrix_type_stride_in_elems(mt); unsigned row_count = cast(unsigned)mt->Matrix.row_count; unsigned column_count = cast(unsigned)mt->Matrix.column_count; - auto columns = slice_make<LLVMValueRef>(permanent_allocator(), column_count); - - LLVMValueRef vector = lb_matrix_to_vector(p, m); - unsigned mask_elems_index = 0; auto mask_elems = slice_make<LLVMValueRef>(permanent_allocator(), row_count*column_count); for (unsigned j = 0; j < column_count; j++) { @@ -539,6 +535,12 @@ LLVMValueRef lb_matrix_to_trimmed_vector(lbProcedure *p, lbValue m) { } LLVMValueRef mask = LLVMConstVector(mask_elems.data, cast(unsigned)mask_elems.count); + return mask; +} + +LLVMValueRef lb_matrix_to_trimmed_vector(lbProcedure *p, lbValue m) { + LLVMValueRef vector = lb_matrix_to_vector(p, m); + LLVMValueRef mask = lb_matrix_trimmed_vector_mask(p, m.type); LLVMValueRef trimmed_vector = LLVMBuildShuffleVector(p->builder, vector, LLVMGetUndef(LLVMTypeOf(vector)), mask, ""); return trimmed_vector; } |