radeonsi: fix LLVM 3.9 - don't use non-matching attributes on declarations
authorMarek Olšák <marek.olsak@amd.com>
Sun, 5 Mar 2017 22:19:57 +0000 (23:19 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 6 Mar 2017 13:13:04 +0000 (14:13 +0100)
Call site attributes are used since LLVM 4.0.

This also reverts commit b19caecbd6f310c1663b0cfe483d113ae3bd5fe2
"radeon/ac: fix intrinsic version check", because this is the correct fix.

Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_llvm_build.c
src/gallium/drivers/radeonsi/si_shader.c

index acda5e26db7bfdecb6ab179fc7b9de82188d77dc..20c6eb80560e9605e336c3d0f9e8986960869862 100644 (file)
@@ -693,7 +693,7 @@ ac_build_buffer_load(struct ac_llvm_context *ctx,
                                          /* READNONE means writes can't
                                           * affect it, while READONLY means
                                           * that writes can affect it. */
-                                         readonly_memory ?
+                                         readonly_memory && HAVE_LLVM >= 0x0400 ?
                                                  AC_FUNC_ATTR_READNONE :
                                                  AC_FUNC_ATTR_READONLY);
        } else {
@@ -736,7 +736,7 @@ LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx,
                                         LLVMValueRef voffset,
                                         bool readonly_memory)
 {
-       if (HAVE_LLVM >= 0x0400) {
+       if (HAVE_LLVM >= 0x0309) {
                LLVMValueRef args [] = {
                        LLVMBuildBitCast(ctx->builder, rsrc, ctx->v4i32, ""),
                        vindex,
@@ -751,7 +751,7 @@ LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx,
                                          /* READNONE means writes can't
                                           * affect it, while READONLY means
                                           * that writes can affect it. */
-                                         readonly_memory ?
+                                         readonly_memory && HAVE_LLVM >= 0x0400 ?
                                                  AC_FUNC_ATTR_READNONE :
                                                  AC_FUNC_ATTR_READONLY);
        }
index 319c0c8cc87ae9d43d75bfb7047be71c8939a686..4e133ecebf68eed9a25b84adb75599bead8fdaf3 100644 (file)
@@ -3442,13 +3442,15 @@ static unsigned get_load_intr_attribs(bool readonly_memory)
 {
        /* READNONE means writes can't affect it, while READONLY means that
         * writes can affect it. */
-       return readonly_memory ? LP_FUNC_ATTR_READNONE :
+       return readonly_memory && HAVE_LLVM >= 0x0400 ?
+                                LP_FUNC_ATTR_READNONE :
                                 LP_FUNC_ATTR_READONLY;
 }
 
 static unsigned get_store_intr_attribs(bool writeonly_memory)
 {
-       return writeonly_memory ? LP_FUNC_ATTR_INACCESSIBLE_MEM_ONLY :
+       return writeonly_memory && HAVE_LLVM >= 0x0400 ?
+                                 LP_FUNC_ATTR_INACCESSIBLE_MEM_ONLY :
                                  LP_FUNC_ATTR_WRITEONLY;
 }