From 3dfc8b3bcf40358b28a96304f4a32ef7eaf9790d Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Wed, 29 May 2024 15:12:01 +0200 Subject: [PATCH] ac/llvm: implement ford, funord, fneo, fequ, fltu, fgeu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Timur Kristóf Part-of: --- src/amd/llvm/ac_nir_to_llvm.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 480896e7884..90e561b1034 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -689,12 +689,30 @@ static bool visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr) case nir_op_fneu: result = emit_float_cmp(&ctx->ac, LLVMRealUNE, src[0], src[1]); break; + case nir_op_fequ: + result = emit_float_cmp(&ctx->ac, LLVMRealUEQ, src[0], src[1]); + break; + case nir_op_fneo: + result = emit_float_cmp(&ctx->ac, LLVMRealONE, src[0], src[1]); + break; case nir_op_flt: result = emit_float_cmp(&ctx->ac, LLVMRealOLT, src[0], src[1]); break; case nir_op_fge: result = emit_float_cmp(&ctx->ac, LLVMRealOGE, src[0], src[1]); break; + case nir_op_fltu: + result = emit_float_cmp(&ctx->ac, LLVMRealULT, src[0], src[1]); + break; + case nir_op_fgeu: + result = emit_float_cmp(&ctx->ac, LLVMRealUGE, src[0], src[1]); + break; + case nir_op_funord: + result = emit_float_cmp(&ctx->ac, LLVMRealUNO, src[0], src[1]); + break; + case nir_op_ford: + result = emit_float_cmp(&ctx->ac, LLVMRealORD, src[0], src[1]); + break; case nir_op_fabs: result = emit_intrin_1f_param(&ctx->ac, "llvm.fabs", ac_to_float_type(&ctx->ac, def_type), src[0]);