nir: Add lowering for ifind_msb to ufind_msb.
ufind_msb is easily expressed in terms of clz, and we can reduce ifind_msb to that. Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
@@ -1913,6 +1913,8 @@ typedef struct nir_shader_compiler_options {
|
||||
bool lower_bitfield_insert_to_shifts;
|
||||
/** Lowers bfm to shifts and subtracts. */
|
||||
bool lower_bfm;
|
||||
/** Lowers ifind_msb to compare and ufind_msb */
|
||||
bool lower_ifind_msb;
|
||||
bool lower_uadd_carry;
|
||||
bool lower_usub_borrow;
|
||||
/** lowers fneg and ineg to fsub and isub. */
|
||||
|
@@ -555,6 +555,10 @@ optimizations = [
|
||||
('bfm', 'bits', 0))),
|
||||
'options->lower_bitfield_extract_to_shifts'),
|
||||
|
||||
(('ifind_msb', 'value'),
|
||||
('ufind_msb', ('bcsel', ('ilt', 'value', 0), ('inot', 'value'), 'value')),
|
||||
'options->lower_ifind_msb'),
|
||||
|
||||
(('extract_i8', a, 'b@32'),
|
||||
('ishr', ('ishl', a, ('imul', ('isub', 3, b), 8)), 24),
|
||||
'options->lower_extract_byte'),
|
||||
|
Reference in New Issue
Block a user