nir: Support lowering vote intrinsics
... trivially (as allowed by the spec!) by reusing the existing nir_opt_intrinsics code. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
d4c9d6a3b2
commit
742cc6118a
|
@ -1821,6 +1821,8 @@ typedef struct nir_shader_compiler_options {
|
|||
bool lower_extract_byte;
|
||||
bool lower_extract_word;
|
||||
|
||||
bool lower_vote_trivial;
|
||||
|
||||
/**
|
||||
* Does the driver support real 32-bit integers? (Otherwise, integers
|
||||
* are simulated by floats.)
|
||||
|
|
|
@ -48,7 +48,7 @@ opt_intrinsics_impl(nir_function_impl *impl)
|
|||
case nir_intrinsic_vote_any:
|
||||
case nir_intrinsic_vote_all: {
|
||||
nir_const_value *val = nir_src_as_const_value(intrin->src[0]);
|
||||
if (!val)
|
||||
if (!val && !b.shader->options->lower_vote_trivial)
|
||||
continue;
|
||||
|
||||
replacement = nir_ssa_for_src(&b, intrin->src[0], 1);
|
||||
|
@ -56,7 +56,7 @@ opt_intrinsics_impl(nir_function_impl *impl)
|
|||
}
|
||||
case nir_intrinsic_vote_eq: {
|
||||
nir_const_value *val = nir_src_as_const_value(intrin->src[0]);
|
||||
if (!val)
|
||||
if (!val && !b.shader->options->lower_vote_trivial)
|
||||
continue;
|
||||
|
||||
replacement = nir_imm_int(&b, NIR_TRUE);
|
||||
|
|
Loading…
Reference in New Issue