nir: Generalize nir_intrinsic_vote_eq
The SPIR-V extension wants us to be able to do an AllEqual on any vector or scalar type. This has two implications: 1) We need to be able to handle vectors so we switch the vote_eq intrinsics to be vectorized intrinsics. 2) We need to handle floats which have different behavior with respect to +-0, NaN, etc. than the integer variant so we need two variants. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
@@ -4423,7 +4423,7 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||
bld.MOV(retype(dest, BRW_REGISTER_TYPE_D), component(res1, 0));
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_vote_eq: {
|
||||
case nir_intrinsic_vote_ieq: {
|
||||
fs_reg value = get_nir_src(instr->src[0]);
|
||||
fs_reg uniformized = bld.emit_uniformize(value);
|
||||
const fs_builder ubld = bld.exec_all().group(1, 0);
|
||||
|
Reference in New Issue
Block a user