nir: add nir_alu_src_is_trivial_ssa()

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7426>
(cherry picked from commit 1df2fc9f9c)
This commit is contained in:
Rhys Perry 2020-11-03 13:17:22 +00:00 committed by Dylan Baker
parent 8564e7da36
commit db671d8687
3 changed files with 17 additions and 1 deletions

View file

@ -4486,7 +4486,7 @@
"description": "nir: add nir_alu_src_is_trivial_ssa()",
"nominated": false,
"nomination_type": null,
"resolution": 4,
"resolution": 1,
"master_sha": null,
"because_sha": null
},

View file

@ -271,6 +271,20 @@ nir_alu_dest_copy(nir_alu_dest *dest, const nir_alu_dest *src,
dest->saturate = src->saturate;
}
bool
nir_alu_src_is_trivial_ssa(const nir_alu_instr *alu, unsigned srcn)
{
static uint8_t trivial_swizzle[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
STATIC_ASSERT(ARRAY_SIZE(trivial_swizzle) == NIR_MAX_VEC_COMPONENTS);
const nir_alu_src *src = &alu->src[srcn];
unsigned num_components = nir_ssa_alu_instr_src_components(alu, srcn);
return src->src.is_ssa && (src->src.ssa->num_components == num_components) &&
!src->abs && !src->negate &&
(memcmp(src->swizzle, trivial_swizzle, num_components) == 0);
}
static void
cf_init(nir_cf_node *node, nir_cf_node_type type)

View file

@ -1406,6 +1406,8 @@ bool nir_alu_srcs_negative_equal(const nir_alu_instr *alu1,
const nir_alu_instr *alu2,
unsigned src1, unsigned src2);
bool nir_alu_src_is_trivial_ssa(const nir_alu_instr *alu, unsigned srcn);
typedef enum {
nir_deref_type_var,
nir_deref_type_array,