nir: Add b2b opcodes
These exist to convert between different types of boolean values. In particular, we want to use these for uniform and shared memory operations where we need to convert to a reasonably sized boolean but we don't care what its format is so we don't want to make the back-end insert an actual i2b/b2i. In the case of uniforms, Mesa can tweak the format of the uniform boolean to whatever the driver wants. In the case of shared, every value in a shared variable comes from the shader so it's already in the right boolean format. The new boolean conversion opcodes get replaced with mov in lower_bool_to_int/float32 so the back-end will hopefully never see them. However, while we're in the middle of optimizing our NIR, they let us have sensible load_uniform/ubo intrinsics and also have the bit size conversion. Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4338>
This commit is contained in:
committed by
Marge Bot
parent
2cb9cc56d5
commit
b2db84153a
@@ -211,7 +211,7 @@ unop("flog2", tfloat, "log2f(src0)")
|
||||
# Generate all of the numeric conversion opcodes
|
||||
for src_t in [tint, tuint, tfloat, tbool]:
|
||||
if src_t == tbool:
|
||||
dst_types = [tfloat, tint]
|
||||
dst_types = [tfloat, tint, tbool]
|
||||
elif src_t == tint:
|
||||
dst_types = [tfloat, tint, tbool]
|
||||
elif src_t == tuint:
|
||||
|
||||
Reference in New Issue
Block a user