ac/nir: add always_vector argument to ac_build_gather_values_extended
This simplifies a bunch of places that no longer need special treatment of value_count == 1. We rely on LLVM to optimize away the 1-element vector types. This fixes a bunch of bugs where 1-element arrays are indexed indirectly. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -181,13 +181,14 @@ ac_build_gather_values_extended(struct ac_llvm_context *ctx,
|
||||
LLVMValueRef *values,
|
||||
unsigned value_count,
|
||||
unsigned value_stride,
|
||||
bool load)
|
||||
bool load,
|
||||
bool always_vector)
|
||||
{
|
||||
LLVMBuilderRef builder = ctx->builder;
|
||||
LLVMValueRef vec = NULL;
|
||||
unsigned i;
|
||||
|
||||
if (value_count == 1) {
|
||||
if (value_count == 1 && !always_vector) {
|
||||
if (load)
|
||||
return LLVMBuildLoad(builder, values[0], "");
|
||||
return values[0];
|
||||
@@ -212,7 +213,7 @@ ac_build_gather_values(struct ac_llvm_context *ctx,
|
||||
LLVMValueRef *values,
|
||||
unsigned value_count)
|
||||
{
|
||||
return ac_build_gather_values_extended(ctx, values, value_count, 1, false);
|
||||
return ac_build_gather_values_extended(ctx, values, value_count, 1, false, false);
|
||||
}
|
||||
|
||||
LLVMValueRef
|
||||
|
Reference in New Issue
Block a user