From bfea7e4d2965269bff8f1f6449cb99c312fd7384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 23 Jul 2019 23:11:40 -0400 Subject: [PATCH] ac/nir: handle negate modifier --- src/amd/common/ac_nir_to_llvm.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 826a6377323..f3cb9e879ed 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -187,7 +187,18 @@ static LLVMValueRef get_alu_src(struct ac_nir_context *ctx, swizzle, ""); } } - assert(!src.negate); + + if (src.negate) { + LLVMTypeRef type = LLVMTypeOf(value); + if (LLVMGetTypeKind(type) == LLVMVectorTypeKind) + type = LLVMGetElementType(type); + + if (LLVMGetTypeKind(type) == LLVMIntegerTypeKind) + value = LLVMBuildNeg(ctx->ac.builder, value, ""); + else + value = LLVMBuildFNeg(ctx->ac.builder, value, ""); + } + assert(!src.abs); return value; }