Merge branch 'mesa_7_5_branch'
[mesa.git] / src / gallium / auxiliary / gallivm / instructionssoa.cpp
index d5600fd22da2d8f23d79679b3a7813927e79b0cf..721b7d2d833e60e4ca8da41ffab490a993a561b7 100644 (file)
@@ -24,6 +24,8 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
+
+#include <cstdio>
 #include "instructionssoa.h"
 
 #include "storagesoa.h"
@@ -37,7 +39,7 @@
 #include <llvm/Function.h>
 #include <llvm/Instructions.h>
 #include <llvm/Transforms/Utils/Cloning.h>
-#include <llvm/ParameterAttributes.h>
+#include <llvm/Attributes.h>
 #include <llvm/Support/MemoryBuffer.h>
 #include <llvm/Bitcode/ReaderWriter.h>
 
@@ -126,7 +128,7 @@ void InstructionsSoa::createFunctionMap()
    m_functionsMap[TGSI_OPCODE_DP4]   = "dp4";
    m_functionsMap[TGSI_OPCODE_MIN]   = "min";
    m_functionsMap[TGSI_OPCODE_MAX]   = "max";
-   m_functionsMap[TGSI_OPCODE_POWER] = "pow";
+   m_functionsMap[TGSI_OPCODE_POW]   = "pow";
    m_functionsMap[TGSI_OPCODE_LIT]   = "lit";
    m_functionsMap[TGSI_OPCODE_RSQ]   = "rsq";
    m_functionsMap[TGSI_OPCODE_SLT]   = "slt";
@@ -206,11 +208,12 @@ llvm::Module * InstructionsSoa::currentModule() const
 
 void InstructionsSoa::createBuiltins()
 {
+   std::string ErrMsg;
    MemoryBuffer *buffer = MemoryBuffer::getMemBuffer(
       (const char*)&soabuiltins_data[0],
-      (const char*)&soabuiltins_data[Elements(soabuiltins_data)]);
-   m_builtins = ParseBitcodeFile(buffer);
-   std::cout<<"Builtins created at "<<m_builtins<<std::endl;
+      (const char*)&soabuiltins_data[Elements(soabuiltins_data) - 1]);
+   m_builtins = ParseBitcodeFile(buffer, &ErrMsg);
+   std::cout<<"Builtins created at "<<m_builtins<<" ("<<ErrMsg<<")"<<std::endl;
    assert(m_builtins);
    createDependencies();
 }
@@ -308,7 +311,7 @@ std::vector<llvm::Value*> InstructionsSoa::mul(const std::vector<llvm::Value*> i
 std::vector<llvm::Value*> InstructionsSoa::pow(const std::vector<llvm::Value*> in1,
                                                const std::vector<llvm::Value*> in2)
 {
-   llvm::Function *func = function(TGSI_OPCODE_POWER);
+   llvm::Function *func = function(TGSI_OPCODE_POW);
    return callBuiltin(func, in1, in2);
 }