From 742cc6118a8d76870c707667a945269122aa0f21 Mon Sep 17 00:00:00 2001 From: Matt Turner <mattst88@gmail.com> Date: Thu, 22 Jun 2017 12:20:18 -0700 Subject: 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> --- src/compiler/nir/nir.h | 2 ++ src/compiler/nir/nir_opt_intrinsics.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 44a1d0887e3..c5e5358aaaa 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -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.) diff --git a/src/compiler/nir/nir_opt_intrinsics.c b/src/compiler/nir/nir_opt_intrinsics.c index 9055c98dd33..bdb46e9300b 100644 --- a/src/compiler/nir/nir_opt_intrinsics.c +++ b/src/compiler/nir/nir_opt_intrinsics.c @@ -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); -- cgit v1.2.3