mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
- Add float[<3>] x = { .xy = 1.2, .z = 3.3 } swizzle initialization for vectors. #2599
This commit is contained in:
@@ -4497,7 +4497,7 @@ static void llvm_emit_vector_assign_expr(GenContext *c, BEValue *be_value, Expr
|
||||
LLVMValueRef result = be_value->value;
|
||||
for (unsigned i = 0; i < vec_len; i++)
|
||||
{
|
||||
int index = (swizzle[(int)sw_ptr[i]] - 1) & 0xF;
|
||||
int index = SWIZZLE_INDEX(sw_ptr[i]);
|
||||
LLVMValueRef val = llvm_emit_extract_value(c, result, i);
|
||||
vector_value = llvm_emit_insert_value(c, vector_value, val, index);
|
||||
}
|
||||
@@ -6860,7 +6860,7 @@ static void llvm_emit_swizzle_from_value(GenContext *c, LLVMValueRef vector_valu
|
||||
const char *sw_ptr = expr->swizzle_expr.swizzle;
|
||||
for (unsigned i = 0; i < vec_len; i++)
|
||||
{
|
||||
int index = (swizzle[(int)sw_ptr[i]] - 1) & 0xF;
|
||||
int index = SWIZZLE_INDEX(sw_ptr[i]);
|
||||
mask_val[i] = llvm_const_int(c, type_uint, index);
|
||||
}
|
||||
LLVMValueRef res = LLVMBuildShuffleVector(c->builder, vector_value, LLVMGetUndef(LLVMTypeOf(vector_value)), LLVMConstVector(mask_val, vec_len), sw_ptr);
|
||||
|
||||
Reference in New Issue
Block a user