No shader-db or fossil-db changes on any Intel platform.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19042>
nir_options->lower_rotate = devinfo->ver < 11;
nir_options->lower_bitfield_reverse = devinfo->ver < 7;
+ nir_options->lower_find_lsb = devinfo->ver < 7;
nir_options->has_iadd3 = devinfo->verx10 >= 125;
nir_options->has_sdot_4x8 = devinfo->ver >= 12;
case nir_op_find_lsb:
assert(nir_dest_bit_size(instr->dest.dest) < 64);
-
- if (devinfo->ver < 7) {
- fs_reg temp = vgrf(glsl_type::int_type);
-
- /* (x & -x) generates a value that consists of only the LSB of x.
- * For all powers of 2, findMSB(y) == findLSB(y).
- */
- fs_reg src = retype(op[0], BRW_REGISTER_TYPE_D);
- fs_reg negated_src = src;
-
- /* One must be negated, and the other must be non-negated. It
- * doesn't matter which is which.
- */
- negated_src.negate = true;
- src.negate = false;
-
- bld.AND(temp, src, negated_src);
- emit_find_msb_using_lzd(bld, result, temp, false);
- } else {
- bld.FBL(result, op[0]);
- }
+ assert(devinfo->ver >= 7);
+ bld.FBL(result, op[0]);
break;
case nir_op_ubitfield_extract:
break;
}
- case nir_op_find_lsb: {
+ case nir_op_find_lsb:
assert(nir_dest_bit_size(instr->dest.dest) < 64);
- vec4_builder bld = vec4_builder(this).at_end();
-
- if (devinfo->ver < 7) {
- dst_reg temp = bld.vgrf(BRW_REGISTER_TYPE_D);
-
- /* (x & -x) generates a value that consists of only the LSB of x.
- * For all powers of 2, findMSB(y) == findLSB(y).
- */
- src_reg src = src_reg(retype(op[0], BRW_REGISTER_TYPE_D));
- src_reg negated_src = src;
-
- /* One must be negated, and the other must be non-negated. It
- * doesn't matter which is which.
- */
- negated_src.negate = true;
- src.negate = false;
-
- bld.AND(temp, src, negated_src);
- emit_find_msb_using_lzd(bld, dst, src_reg(temp), false);
- } else {
- bld.FBL(dst, op[0]);
- }
+ assert(devinfo->ver >= 7);
+ emit(FBL(dst, op[0]));
break;
- }
case nir_op_ubitfield_extract:
case nir_op_ibitfield_extract: