Fixes llvm validation error in a Deus Ex shader on radeonsi.

Both operands to ICmp instruction are not of the same type!
---
 src/amd/common/ac_nir_to_llvm.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 0ca3f83a248..1dfb865a41b 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -195,7 +195,10 @@ static LLVMValueRef emit_int_cmp(struct ac_llvm_context 
*ctx,
                                  LLVMIntPredicate pred, LLVMValueRef src0,
                                  LLVMValueRef src1)
 {
-       LLVMValueRef result = LLVMBuildICmp(ctx->builder, pred, src0, src1, "");
+       LLVMValueRef result;
+       src0 = ac_to_integer(ctx, src0);
+       src1 = ac_to_integer(ctx, src1);
+       result = LLVMBuildICmp(ctx->builder, pred, src0, src1, "");
        return LLVMBuildSelect(ctx->builder, result,
                               LLVMConstInt(ctx->i32, 0xFFFFFFFF, false),
                               ctx->i32_0, "");
@@ -281,6 +284,8 @@ static LLVMValueRef emit_minmax_int(struct ac_llvm_context 
*ctx,
                                    LLVMIntPredicate pred,
                                    LLVMValueRef src0, LLVMValueRef src1)
 {
+       src0 = ac_to_integer(ctx, src0);
+       src1 = ac_to_integer(ctx, src1);
        return LLVMBuildSelect(ctx->builder,
                               LLVMBuildICmp(ctx->builder, pred, src0, src1, 
""),
                               src0,
-- 
2.20.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to