ac: fix incorrect argument type for tbuffer.{load,store} with LLVM 7
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 21 Mar 2019 11:42:44 +0000 (12:42 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 21 Mar 2019 13:02:00 +0000 (14:02 +0100)
GLC/SLC are boolean.

This fixes the following LLVM error when checkir is set:
Intrinsic has incorrect argument type!
void (i32, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32)* @llvm.amdgcn.tbuffer.store.i32

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl
src/amd/common/ac_llvm_build.c

index 8701d2ca43a88a57f9a290b02ca6bac9d46770b6..1123dce2cc87c43e0d9776d53dc8e9a0c49e4085 100644 (file)
@@ -1537,8 +1537,8 @@ ac_build_tbuffer_load(struct ac_llvm_context *ctx,
                immoffset,
                LLVMConstInt(ctx->i32, dfmt, false),
                LLVMConstInt(ctx->i32, nfmt, false),
-               LLVMConstInt(ctx->i32, glc, false),
-               LLVMConstInt(ctx->i32, slc, false),
+               LLVMConstInt(ctx->i1, glc, false),
+               LLVMConstInt(ctx->i1, slc, false),
        };
        unsigned func = CLAMP(num_channels, 1, 3) - 1;
        LLVMTypeRef types[] = {ctx->i32, ctx->v2i32, ctx->v4i32};
@@ -1699,8 +1699,8 @@ ac_build_tbuffer_store(struct ac_llvm_context *ctx,
                        immoffset,
                        LLVMConstInt(ctx->i32, dfmt, false),
                        LLVMConstInt(ctx->i32, nfmt, false),
-                       LLVMConstInt(ctx->i32, glc, false),
-                       LLVMConstInt(ctx->i32, slc, false),
+                       LLVMConstInt(ctx->i1, glc, false),
+                       LLVMConstInt(ctx->i1, slc, false),
                };
                unsigned func = CLAMP(num_channels, 1, 3) - 1;
                const char *type_names[] = {"i32", "v2i32", "v4i32"};