summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2008-02-13 00:36:31 -0500
committerZack Rusin <[email protected]>2008-02-13 00:36:31 -0500
commit53c2963b84f7a8538d2a2c67e3fbb8a22f644c57 (patch)
treef89d3eb5a16837b077d1cec3abc76aedeeed594e
parent9b6532f01b2e8a3ccc44d67d20a8f94f5de570e3 (diff)
fix fetching input elements and generate a ret on end
-rw-r--r--src/mesa/pipe/llvm/instructionssoa.cpp2
-rw-r--r--src/mesa/pipe/llvm/instructionssoa.h4
-rw-r--r--src/mesa/pipe/llvm/storagesoa.cpp3
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(),