clover/llvm: undefine __IMAGE_SUPPORT__ for devices without image support
authorKarol Herbst <kherbst@redhat.com>
Fri, 21 Aug 2020 19:10:32 +0000 (21:10 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 1 Sep 2020 18:47:30 +0000 (18:47 +0000)
libclang seems to define this on its own for SPIR targets, but the CTS
requires it to be not set if the device doesn't support images.

The SPIRV-LLVM-Translator also requires the spir triple to be set so we
can't really do anything else except to undefine.

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstran.net>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6433>

src/gallium/frontends/clover/llvm/invocation.cpp

index a305299..173894f 100644 (file)
@@ -300,6 +300,10 @@ namespace {
          compat::add_link_bitcode_file(c.getCodeGenOpts(),
                                        LIBCLC_LIBEXECDIR + dev.ir_target() + ".bc");
 
+      // undefine __IMAGE_SUPPORT__ for device without image support
+      if (!dev.image_support())
+         c.getPreprocessorOpts().addMacroUndef("__IMAGE_SUPPORT__");
+
       // Compile the code
       clang::EmitLLVMOnlyAction act(&ctx);
       if (!c.ExecuteAction(act))