nir/vtn: Support OpOrdered and OpUnordered opcodes
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Karol Herbst <kherbst@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6355>
This commit is contained in:
@@ -516,6 +516,16 @@ vtn_handle_alu(struct vtn_builder *b, SpvOp opcode,
|
||||
dest->def = nir_fne(&b->nb, src[0], src[0]);
|
||||
break;
|
||||
|
||||
case SpvOpOrdered:
|
||||
dest->def = nir_iand(&b->nb, nir_feq(&b->nb, src[0], src[0]),
|
||||
nir_feq(&b->nb, src[1], src[1]));
|
||||
break;
|
||||
|
||||
case SpvOpUnordered:
|
||||
dest->def = nir_ior(&b->nb, nir_fne(&b->nb, src[0], src[0]),
|
||||
nir_fne(&b->nb, src[1], src[1]));
|
||||
break;
|
||||
|
||||
case SpvOpIsInf: {
|
||||
nir_ssa_def *inf = nir_imm_floatN_t(&b->nb, INFINITY, src[0]->bit_size);
|
||||
dest->def = nir_ieq(&b->nb, nir_fabs(&b->nb, src[0]), inf);
|
||||
|
Reference in New Issue
Block a user