radv: add mipmaps support for DCC decompression on compute
[mesa.git] / src / amd / common / ac_llvm_build.c
index 0972406b5cba84b752c392ca83c3066ca96efbb9..b93fdde023e81e26201b5de2e0d9a56a4a699654 100644 (file)
@@ -441,6 +441,7 @@ LLVMValueRef
 ac_build_ballot(struct ac_llvm_context *ctx,
                LLVMValueRef value)
 {
+       const char *name = HAVE_LLVM >= 0x900 ? "llvm.amdgcn.icmp.i64.i32" : "llvm.amdgcn.icmp.i32";
        LLVMValueRef args[3] = {
                value,
                ctx->i32_0,
@@ -454,8 +455,7 @@ ac_build_ballot(struct ac_llvm_context *ctx,
 
        args[0] = ac_to_integer(ctx, args[0]);
 
-       return ac_build_intrinsic(ctx,
-                                 "llvm.amdgcn.icmp.i32",
+       return ac_build_intrinsic(ctx, name,
                                  ctx->i64, args, 3,
                                  AC_FUNC_ATTR_NOUNWIND |
                                  AC_FUNC_ATTR_READNONE |
@@ -465,6 +465,7 @@ ac_build_ballot(struct ac_llvm_context *ctx,
 LLVMValueRef ac_get_i1_sgpr_mask(struct ac_llvm_context *ctx,
                                 LLVMValueRef value)
 {
+       const char *name = HAVE_LLVM >= 0x900 ? "llvm.amdgcn.icmp.i64.i1" : "llvm.amdgcn.icmp.i1";
        LLVMValueRef args[3] = {
                value,
                ctx->i1false,
@@ -472,7 +473,7 @@ LLVMValueRef ac_get_i1_sgpr_mask(struct ac_llvm_context *ctx,
        };
 
        assert(HAVE_LLVM >= 0x0800);
-       return ac_build_intrinsic(ctx, "llvm.amdgcn.icmp.i1", ctx->i64, args, 3,
+       return ac_build_intrinsic(ctx, name, ctx->i64, args, 3,
                                  AC_FUNC_ATTR_NOUNWIND |
                                  AC_FUNC_ATTR_READNONE |
                                  AC_FUNC_ATTR_CONVERGENT);
@@ -1194,16 +1195,17 @@ ac_build_buffer_store_format(struct ac_llvm_context *ctx,
                             LLVMValueRef voffset,
                             unsigned num_channels,
                             bool glc,
+                            bool slc,
                             bool writeonly_memory)
 {
        if (HAVE_LLVM >= 0x800) {
                ac_build_llvm8_buffer_store_common(ctx, rsrc, data, vindex,
                                                   voffset, NULL, num_channels,
-                                                  ctx->f32, glc, false,
+                                                  ctx->f32, glc, slc,
                                                   writeonly_memory, true, true);
        } else {
                ac_build_llvm7_buffer_store_common(ctx, rsrc, data, vindex, voffset,
-                                                  num_channels, glc, false,
+                                                  num_channels, glc, slc,
                                                   writeonly_memory, true);
        }
 }