As for me it looks like decisions/design phase fault: guys used LLVM due to buzz around, failing to understand it's a troublesome way. It's not even LLVM fault on it's own. It's VLIW and it requires custom approach. LLVM knows nothing about VLIW existence and does not really helps to deal with things like this. Instead it makes things more complicated (as it's generic solution intended to handle dozen of unneeded scenarios), raises bar for those who wants to enter development, requires upstream syncs, etc, etc and ... and at the end of day it FAILS TO PROVIDE REASONABLE PERFORMANCE (and why anybody needs 3D driver with crappy performance, huh?). You see, Vadim has managed to seriously improve FPS on custom code generator because it's simple. If there was LLVM on it's place it would be unlikely as it reqires far more time to get same results.
And the worst of all: it could be evaluated qickly. It's fairly predictable. Sure, AMD currently haves awful management issues, but this partucular stubborness is just hard to explain. They literally WASTED YEARS without anyhow usable outcome which can provide user-visible values. What about efforts to results ratio? And why some quite inactive dev could come, quickly improve OLD code and beat all this LLVM idiocy to the hell in terns of performance? Without wasting years of hard work, spending months on waiting upstream, etc. It's just a drastic demonstration of what happens when someone decides to "improve these damn user-visible results" rather than "use LLVM" (or whatever else crap you have).
Let's just make some quote:
Or, for those interested, you can read the whole thread on http://lists.freedesktop.org/archive...ry/034547.html and all reply messages. That's a really amazing history on how LLVM fetishism could make development suboptimal and fruitless. I think it will be yet another shameful page of AMD engineering. When they had chance and missed it due to incredibly silly reasons.I spent some time last year studying the LLVM infrastructure and R600
LLVM backend and trying to improve it, but after all I came to the
conclusion that for me it might be easier to implement all that I wanted
in the custom backend.
P.S. ah, they mumble LLVM needed for opencl. But looks like if they fail to understand that nobody needs SLOW opencl implementation. It's just pointless. Either you can roll out OPTIMIZED implementation or you would waste potential of hardware and lose the market.