diff mbox

[Bug,66847] New: compilation broken with llvm 3.3

Message ID bug-66847-502@http.bugs.freedesktop.org/ (mailing list archive)
State New, archived
Headers show

Commit Message

bugzilla-daemon@freedesktop.org July 12, 2013, 9:21 a.m. UTC
https://bugs.freedesktop.org/show_bug.cgi?id=66847

          Priority: medium
            Bug ID: 66847
          Assignee: dri-devel@lists.freedesktop.org
           Summary: compilation broken with llvm 3.3
          Severity: normal
    Classification: Unclassified
                OS: All
          Reporter: marvin24@gmx.de
          Hardware: Other
            Status: NEW
           Version: 9.1
         Component: Drivers/Gallium/r600
           Product: Mesa

r600 build is broken in 9.1 (stable branch) when using llvm 3.3 (also stable).

I got it compiling with


0ee3cc5 r600g: Add $(DEFINES) to AM_CXXFLAGS
3a11b9b radeon/llvm: remove uneeded inclusion
1d16c20 radeon/llvm: Fix build with LLVM 3.3

from upstream plus



but that doesn't seem to be sufficient because I get a lot of

EE r600_asm.c:2041 r600_bytecode_build - unsupported CF instruction
(0xFFFFFFFF)
EE r600_shader.c:160 r600_pipe_shader_create - building bytecode failed !
EE r600_state_common.c:756 r600_shader_select - Failed to build shader variant
(type=0) -22
EE r600_asm.c:2041 r600_bytecode_build - unsupported CF instruction
(0xFFFFFFFF)
EE r600_shader.c:160 r600_pipe_shader_create - building bytecode failed !
EE r600_state_common.c:756 r600_shader_select - Failed to build shader variant
(type=0) -22

messages (this was from glxgears).

I would be great if this could be fixed for Mesa-9.1.5 because many distros
will use it.

Comments

bugzilla-daemon@freedesktop.org July 12, 2013, 10 a.m. UTC | #1
https://bugs.freedesktop.org/show_bug.cgi?id=66847

--- Comment #1 from Andreas Boll <andreas.boll.dev@gmail.com> ---
The llvm backends of r600g and the radeonsi on mesa 9.1 are only compatible
with tstellar's llvm-3.2 branch.

The llvm backends of r600g and the radeonsi on mesa 9.2 should be compatible
with the official llvm-3.3 and llvm-3.4. It's not compatible with tstellar's
llvm-3.2 branch.

So I think we should abort in configure if someone wants to build mesa 9.1 with
enabled llvm backend and llvm != 3.2.
bugzilla-daemon@freedesktop.org July 12, 2013, 10:26 a.m. UTC | #2
https://bugs.freedesktop.org/show_bug.cgi?id=66847

--- Comment #2 from Michel Dänzer <michel@daenzer.net> ---
(In reply to comment #1)
> So I think we should abort in configure if someone wants to build mesa 9.1
> with enabled llvm backend and llvm != 3.2.

Agreed.
bugzilla-daemon@freedesktop.org July 12, 2013, 10:48 a.m. UTC | #3
https://bugs.freedesktop.org/show_bug.cgi?id=66847

--- Comment #3 from Andreas Boll <andreas.boll.dev@gmail.com> ---
Created attachment 82362
  --> https://bugs.freedesktop.org/attachment.cgi?id=82362&action=edit
possible fix (untested)
bugzilla-daemon@freedesktop.org July 12, 2013, 11:01 a.m. UTC | #4
https://bugs.freedesktop.org/show_bug.cgi?id=66847

--- Comment #4 from Marc Dietrich <marvin24@gmx.de> ---
You should also remove "or newer". Also "master" isn't the right branch (which
one is the right?). While you are at it, checking for r600 target isn't enough,
because it also needs "host".

I have the feeling that we should disable r600-llvm support in 9.1 release
alltogether. I think it was just for testing anyway and likely unstable/lots of
bugs still. It also saves distros from compiling some experimental version of
llvm.
bugzilla-daemon@freedesktop.org July 12, 2013, 12:25 p.m. UTC | #5
https://bugs.freedesktop.org/show_bug.cgi?id=66847

--- Comment #5 from Andreas Boll <andreas.boll.dev@gmail.com> ---
(In reply to comment #4)
> You should also remove "or newer". 

Yes, will do.

> Also "master" isn't the right branch
> (which one is the right?).

master is the right branch. See http://cgit.freedesktop.org/~tstellar/llvm

> While you are at it, checking for r600 target
> isn't enough, because it also needs "host".
>

AFAIK the host target is needed for llvmpipe and draw-llvm too.
So a more generic check would be required. But that's stuff for mesa master and
should be in a separate commit anyway.

> I have the feeling that we should disable r600-llvm support in 9.1 release
> alltogether. I think it was just for testing anyway and likely unstable/lots
> of bugs still. It also saves distros from compiling some experimental
> version of llvm.

For initial radeonsi support it's required.
The r600g llvm backend isn't enabled by default and the help string says:
Enable experimental LLVM backend for graphics shaders.
See http://cgit.freedesktop.org/mesa/mesa/tree/configure.ac?h=9.1#n641
I think that should be enough.
bugzilla-daemon@freedesktop.org July 12, 2013, 12:29 p.m. UTC | #6
https://bugs.freedesktop.org/show_bug.cgi?id=66847

Andreas Boll <andreas.boll.dev@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #82362|0                           |1
        is obsolete|                            |

--- Comment #6 from Andreas Boll <andreas.boll.dev@gmail.com> ---
Created attachment 82365
  --> https://bugs.freedesktop.org/attachment.cgi?id=82365&action=edit
possible fix v2 (untested)
bugzilla-daemon@freedesktop.org July 12, 2013, 6:39 p.m. UTC | #7
https://bugs.freedesktop.org/show_bug.cgi?id=66847

--- Comment #7 from Marc Dietrich <marvin24@gmx.de> ---
arr, yes, master is right (I had an unclean tree), and also yes, r600 llvm in
mesa is marked experimental and needs to be enabled explicitly, so all is fine
- sorry.

Patch looks also fine (tested).
bugzilla-daemon@freedesktop.org July 19, 2013, 3:27 p.m. UTC | #8
https://bugs.freedesktop.org/show_bug.cgi?id=66847

Andreas Boll <andreas.boll.dev@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #8 from Andreas Boll <andreas.boll.dev@gmail.com> ---
Fixed with commit 9a287a076803a4b4cb475ec5c067c9a064f11a0d
diff mbox

Patch

--- a/src/gallium/drivers/r600/llvm_wrapper.cpp
+++ b/src/gallium/drivers/r600/llvm_wrapper.cpp
@@ -2,11 +2,13 @@ 
 #include <llvm/ADT/StringRef.h>
 #if HAVE_LLVM < 0x0303
 #include <llvm/LLVMContext.h>
+#include <llvm/Support/IRReader.h>
 #else
 #include <llvm/IR/LLVMContext.h>
+#include <llvm/IRReader/IRReader.h>
+#include <llvm/IR/Module.h>
 #endif
 #include <llvm/PassManager.h>
-#include <llvm/Support/IRReader.h>
 #include <llvm/Support/MemoryBuffer.h>
 #include <llvm/Support/SourceMgr.h>
 #include <llvm/Transforms/IPO.h>