summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/llvm/storagesoa.h
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-02-12 05:35:51 -0500
committerZack Rusin <zack@tungstengraphics.com>2008-02-12 23:11:05 -0500
commitcad7bc74d69ee053452aa4bd20740dc79ad6eab6 (patch)
treedb9e47a4c2e904d55e42915764d8bbd70166e868 /src/mesa/pipe/llvm/storagesoa.h
parente20e89e48287808068086ec148920dd89495d813 (diff)
llvm ir code to fetch the elements
Diffstat (limited to 'src/mesa/pipe/llvm/storagesoa.h')
-rw-r--r--src/mesa/pipe/llvm/storagesoa.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mesa/pipe/llvm/storagesoa.h b/src/mesa/pipe/llvm/storagesoa.h
index 551b0b9734..9d5609f539 100644
--- a/src/mesa/pipe/llvm/storagesoa.h
+++ b/src/mesa/pipe/llvm/storagesoa.h
@@ -29,6 +29,7 @@
#define STORAGESOA_H
#include <vector>
+#include <map>
namespace llvm {
class BasicBlock;
@@ -65,7 +66,23 @@ public:
int mask);
void storeAddress(int idx, const std::vector<llvm::Value*> &val,
int mask);
+private:
+ llvm::Value *elementPointer(llvm::Value *ptr, int index,
+ int channel) const;
+ llvm::Value *element(llvm::Value *ptr, int index,
+ int channel) const;
+ const char *name(const char *prefix) const;
+ llvm::ConstantInt *constantInt(int) const;
+private:
+ llvm::BasicBlock *m_block;
+ llvm::Value *m_input;
+ llvm::Value *m_output;
+ llvm::Value *m_consts;
+
+ mutable std::map<int, llvm::ConstantInt*> m_constInts;
+ mutable char m_name[32];
+ mutable int m_idx;
};
#endif