aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-03-12 12:11:48 +0000
committergingerBill <bill@gingerbill.org>2024-03-12 12:11:48 +0000
commitc7c68520577133d6332bd6df98c44e751b571c03 (patch)
tree86c148c954f63da90da166548a63abc3b91351fe /src/llvm_backend_expr.cpp
parent9a41a450e7b234e72591ab141e05a1dd7fd0cb30 (diff)
Support swizzle selector syntax `.xyzw` for `#simd` vectors
Diffstat (limited to 'src/llvm_backend_expr.cpp')
-rw-r--r--src/llvm_backend_expr.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 5bc961af2..98618798b 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -4655,7 +4655,7 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) {
if (se->swizzle_count > 0) {
Type *array_type = base_type(type_deref(tav.type));
- GB_ASSERT(array_type->kind == Type_Array);
+ GB_ASSERT(array_type->kind == Type_Array || array_type->kind == Type_SimdVector);
u8 swizzle_count = se->swizzle_count;
u8 swizzle_indices_raw = se->swizzle_indices;
u8 swizzle_indices[4] = {};
@@ -4671,7 +4671,7 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) {
a = lb_addr_get_ptr(p, addr);
}
- GB_ASSERT(is_type_array(expr->tav.type));
+ GB_ASSERT(is_type_array(expr->tav.type) || is_type_simd_vector(expr->tav.type));
return lb_addr_swizzle(a, expr->tav.type, swizzle_count, swizzle_indices);
}