ac/nir: fix nir_op_b2i16
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 26 Mar 2019 10:34:42 +0000 (11:34 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 1 Apr 2019 07:51:47 +0000 (09:51 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_nir_to_llvm.c

index 7b457015e16e6934f927e55b3dbf531b02a94788..4e9af58538f488a5d433ee964c94f77efaf4ea72 100644 (file)
@@ -344,10 +344,16 @@ static LLVMValueRef emit_b2i(struct ac_llvm_context *ctx,
 {
        LLVMValueRef result = LLVMBuildAnd(ctx->builder, src0, ctx->i32_1, "");
 
-       if (bitsize == 32)
+       switch (bitsize) {
+       case 16:
+               return LLVMBuildTrunc(ctx->builder, result, ctx->i16, "");
+       case 32:
                return result;
-
-       return LLVMBuildZExt(ctx->builder, result, ctx->i64, "");
+       case 64:
+               return LLVMBuildZExt(ctx->builder, result, ctx->i64, "");
+       default:
+               unreachable("Unsupported bit size.");
+       }
 }
 
 static LLVMValueRef emit_i2b(struct ac_llvm_context *ctx,