fix fetching input elements and generate a ret on end
authorZack Rusin <zack@tungstengraphics.com>
Wed, 13 Feb 2008 05:36:31 +0000 (00:36 -0500)
committerZack Rusin <zack@tungstengraphics.com>
Wed, 13 Feb 2008 05:36:31 +0000 (00:36 -0500)
src/mesa/pipe/llvm/instructionssoa.cpp
src/mesa/pipe/llvm/instructionssoa.h
src/mesa/pipe/llvm/storagesoa.cpp

index 9ac4d8f..0e501ab 100644 (file)
@@ -2,6 +2,7 @@
 
 InstructionsSoa::InstructionsSoa(llvm::Module *mod, llvm::Function *func,
                                  llvm::BasicBlock *block, StorageSoa *storage)
+   : m_builder(block)
 {
 }
 
@@ -23,4 +24,5 @@ std::vector<llvm::Value*> InstructionsSoa::mul(const std::vector<llvm::Value*> i
 
 void InstructionsSoa::end()
 {
+   m_builder.CreateRetVoid();
 }
index 0b6b41c..233d363 100644 (file)
@@ -28,6 +28,8 @@
 #ifndef INSTRUCTIONSSOA_H
 #define INSTRUCTIONSSOA_H
 
+#include <llvm/Support/LLVMBuilder.h>
+
 #include <vector>
 
 namespace llvm {
@@ -49,6 +51,8 @@ public:
    std::vector<llvm::Value*> mul(const std::vector<llvm::Value*> in1,
                                  const std::vector<llvm::Value*> in2);
    void         end();
+private:
+   llvm::LLVMFoldingBuilder  m_builder;
 };
 
 
index 8f82989..7865112 100644 (file)
@@ -150,10 +150,7 @@ llvm::Value * StorageSoa::elementPointer(llvm::Value *ptr, int index,
 {
    std::vector<Value*> indices;
    indices.push_back(constantInt(index));
-   indices.push_back(constantInt(0));//first element in the struct
    indices.push_back(constantInt(channel));
-   indices.push_back(constantInt(0));//f channel
-   indices.push_back(constantInt(0));//first ptr in the f channel
 
    GetElementPtrInst *getElem = new GetElementPtrInst(ptr,
                                                       indices.begin(),