From 4ba486baa2d1414393dff0d7ddaff777f4592cbd Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 24 Aug 2022 12:58:16 +0100 Subject: Add extra max alignment parameter for metrics (specifically for SIMD) --- src/types.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'src/types.cpp') diff --git a/src/types.cpp b/src/types.cpp index 570d7c556..aa4a3c4a1 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -3556,7 +3556,7 @@ i64 type_align_of_internal(Type *t, TypePath *path) { case Type_SimdVector: { // IMPORTANT TODO(bill): Figure out the alignment of vector types - return gb_clamp(next_pow2(type_size_of_internal(t, path)), 1, build_context.max_align*2); + return gb_clamp(next_pow2(type_size_of_internal(t, path)), 1, build_context.max_simd_align*2); } case Type_Matrix: @@ -3571,22 +3571,9 @@ i64 type_align_of_internal(Type *t, TypePath *path) { return build_context.word_size; } - i64 max_alignment = build_context.word_size; - if (is_arch_wasm()) { - // NOTE(bill): wasm32 with LLVM defines its default datalayout as: - // - // e-m:e-p:32:32-i64:64-n32:64-S128 - // - // This means that the alignment of a 64-bit type is 64-bits and not 32-bits like - // on other 32-bit architectures - // - // See: https://github.com/WebAssembly/tool-conventions/blob/main/BasicCABI.md - max_alignment = 8; - } - // NOTE(bill): Things that are bigger than build_context.word_size, are actually comprised of smaller types // TODO(bill): Is this correct for 128-bit types (integers)? - return gb_clamp(next_pow2(type_size_of_internal(t, path)), 1, max_alignment); + return gb_clamp(next_pow2(type_size_of_internal(t, path)), 1, build_context.max_align); } i64 *type_set_offsets_of(Slice const &fields, bool is_packed, bool is_raw_union) { -- cgit v1.2.3