nak: Implement nir_op_ufind_msb_rev
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26550>
This commit is contained in:

committed by
Marge Bot

parent
a3bceafed5
commit
9b68c77abb
@@ -136,6 +136,7 @@ fn nir_options(dev: &nv_device_info) -> nir_shader_compiler_options {
|
||||
// We set .ftz on f32 by default so we can support fmulz whenever the client
|
||||
// doesn't explicitly request denorms.
|
||||
op.has_fmulz_no_denorms = true;
|
||||
op.has_find_msb_rev = true;
|
||||
op.has_pack_half_2x16_rtz = true;
|
||||
|
||||
op.max_unroll_iterations = 32;
|
||||
|
@@ -1015,13 +1015,22 @@ impl<'a> ShaderFromNir<'a> {
|
||||
b.isetp(IntCmpType::I32, IntCmpOp::Eq, srcs[0], srcs[1])
|
||||
}
|
||||
}
|
||||
nir_op_ifind_msb | nir_op_ufind_msb => {
|
||||
nir_op_ifind_msb | nir_op_ifind_msb_rev | nir_op_ufind_msb
|
||||
| nir_op_ufind_msb_rev => {
|
||||
let dst = b.alloc_ssa(RegFile::GPR, 1);
|
||||
b.push_op(OpFlo {
|
||||
dst: dst.into(),
|
||||
src: srcs[0],
|
||||
signed: alu.op == nir_op_ifind_msb,
|
||||
return_shift_amount: false,
|
||||
signed: match alu.op {
|
||||
nir_op_ifind_msb | nir_op_ifind_msb_rev => true,
|
||||
nir_op_ufind_msb | nir_op_ufind_msb_rev => false,
|
||||
_ => panic!("Not a find_msb op"),
|
||||
},
|
||||
return_shift_amount: match alu.op {
|
||||
nir_op_ifind_msb | nir_op_ufind_msb => false,
|
||||
nir_op_ifind_msb_rev | nir_op_ufind_msb_rev => true,
|
||||
_ => panic!("Not a find_msb op"),
|
||||
},
|
||||
});
|
||||
dst
|
||||
}
|
||||
|
Reference in New Issue
Block a user