diff --git a/src/compiler/nir/nir_search.c b/src/compiler/nir/nir_search.c index 8faed29201e..52ede88e9b2 100644 --- a/src/compiler/nir/nir_search.c +++ b/src/compiler/nir/nir_search.c @@ -500,7 +500,10 @@ construct_value(nir_builder *build, nir_alu_src val; val.src = nir_src_for_ssa(&alu->def); - memcpy(val.swizzle, identity_swizzle, sizeof val.swizzle); + if (expr->swizzle < 0) + memcpy(val.swizzle, identity_swizzle, sizeof(val.swizzle)); + else + memset(val.swizzle, expr->swizzle, sizeof(val.swizzle)); return val; }