From 80163bbec3a3c0a9d566b4a562b720639fbdcf96 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Wed, 24 Jun 2020 10:58:36 -0700 Subject: [PATCH] nir/vtn: Support OpOrdered and OpUnordered opcodes Reviewed-by: Boris Brezillon Reviewed-by: Alyssa Rosenzweig Reviewed-by: Karol Herbst Part-of: --- src/compiler/spirv/vtn_alu.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/compiler/spirv/vtn_alu.c b/src/compiler/spirv/vtn_alu.c index 41be1a18dc8..e92a48f24a6 100644 --- a/src/compiler/spirv/vtn_alu.c +++ b/src/compiler/spirv/vtn_alu.c @@ -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); -- 2.30.2