diff options
| author | gingerBill <bill@gingerbill.org> | 2021-10-18 16:52:19 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-10-18 16:52:19 +0100 |
| commit | 4c655865e5d9af83a98c137609b01972f4e51beb (patch) | |
| tree | 2963a8f22c8e2a54dc7f081834b72a6081568842 /src/llvm_backend_general.cpp | |
| parent | 7aac8df2f2ddb89ffa8b1d096f41d89e689a2293 (diff) | |
Begin work on matrix type
Diffstat (limited to 'src/llvm_backend_general.cpp')
| -rw-r--r-- | src/llvm_backend_general.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 094275429..ee8f220ef 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -1930,6 +1930,24 @@ LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { fields[1] = base_integer; return LLVMStructTypeInContext(ctx, fields, field_count, false); } + + case Type_Matrix: + { + i64 size = type_size_of(type); + i64 elem_size = type_size_of(type->Matrix.elem); + GB_ASSERT(elem_size > 0); + i64 elem_count = size/elem_size; + GB_ASSERT(elem_count > 0); + + m->internal_type_level -= 1; + + LLVMTypeRef elem = lb_type(m, type->Matrix.elem); + LLVMTypeRef t = LLVMArrayType(elem, cast(unsigned)elem_count); + + m->internal_type_level += 1; + return t; + } + } GB_PANIC("Invalid type %s", type_to_string(type)); |