From c66de5ee3cbfb357ac2db1b3b10170a9209d0e6a Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 19 May 2026 18:32:05 +0100 Subject: [PATCH] Improve vector to integer transmute LLVM IR --- src/llvm_backend_utility.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index bb3b4dadb..a92e8610e 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -287,8 +287,12 @@ gb_internal lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t) { } bool is_simd_vector_bitcastable = false; - if (is_type_simd_vector(src) && is_type_simd_vector(dst)) { - if (!is_type_internally_pointer_like(src->SimdVector.elem) && !is_type_internally_pointer_like(dst->SimdVector.elem)) { + if (is_type_simd_vector(src)) { + if (is_type_simd_vector(dst)) { + if (!is_type_internally_pointer_like(src->SimdVector.elem) && !is_type_internally_pointer_like(dst->SimdVector.elem)) { + is_simd_vector_bitcastable = true; + } + } else if (is_type_integer(dst) && is_type_endian_platform(dst)) { is_simd_vector_bitcastable = true; } }