diff options
author | Zack Rusin <[email protected]> | 2008-02-13 00:36:31 -0500 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2008-02-13 00:36:31 -0500 |
commit | 53c2963b84f7a8538d2a2c67e3fbb8a22f644c57 (patch) | |
tree | f89d3eb5a16837b077d1cec3abc76aedeeed594e | |
parent | 9b6532f01b2e8a3ccc44d67d20a8f94f5de570e3 (diff) |
fix fetching input elements and generate a ret on end
-rw-r--r-- | src/mesa/pipe/llvm/instructionssoa.cpp | 2 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/instructionssoa.h | 4 | ||||
-rw-r--r-- | src/mesa/pipe/llvm/storagesoa.cpp | 3 |
3 files changed, 6 insertions, 3 deletions
diff --git a/src/mesa/pipe/llvm/instructionssoa.cpp b/src/mesa/pipe/llvm/instructionssoa.cpp index 9ac4d8fbc73..0e501ab08d0 100644 --- a/src/mesa/pipe/llvm/instructionssoa.cpp +++ b/src/mesa/pipe/llvm/instructionssoa.cpp @@ -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(); } diff --git a/src/mesa/pipe/llvm/instructionssoa.h b/src/mesa/pipe/llvm/instructionssoa.h index 0b6b41cf056..233d363b906 100644 --- a/src/mesa/pipe/llvm/instructionssoa.h +++ b/src/mesa/pipe/llvm/instructionssoa.h @@ -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; }; diff --git a/src/mesa/pipe/llvm/storagesoa.cpp b/src/mesa/pipe/llvm/storagesoa.cpp index 8f82989cc5d..786511204a3 100644 --- a/src/mesa/pipe/llvm/storagesoa.cpp +++ b/src/mesa/pipe/llvm/storagesoa.cpp @@ -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(), |