summaryrefslogtreecommitdiffstats
path: root/src/mesa/pipe/llvm/storage.h
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2007-10-20 16:55:23 -0400
committerZack Rusin <[email protected]>2007-10-24 11:21:04 -0400
commitd4d8d7c468c8ba45e302e163dd87b4e45426e1da (patch)
treef3ac38c253cff824c156dc1db5955b4f56b4f365 /src/mesa/pipe/llvm/storage.h
parente9a623d6a69718e3a9cc46dbb54cb4e7bd79f09c (diff)
Muchos fixos. gears kinda works. and cases don't crash.
glorious
Diffstat (limited to 'src/mesa/pipe/llvm/storage.h')
-rw-r--r--src/mesa/pipe/llvm/storage.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mesa/pipe/llvm/storage.h b/src/mesa/pipe/llvm/storage.h
index b69c8d614e9..f39d308fdd2 100644
--- a/src/mesa/pipe/llvm/storage.h
+++ b/src/mesa/pipe/llvm/storage.h
@@ -27,12 +27,17 @@ public:
llvm::Value *constElement(int idx);
llvm::Value *tempElement(int idx) const;
- void setTempElement(int idx, llvm::Value *val);
+ void setTempElement(int idx, llvm::Value *val, int mask);
llvm::Value *shuffleVector(llvm::Value *vec, int shuffle);
- void store(int dstIdx, llvm::Value *val);
+ void store(int dstIdx, llvm::Value *val, int mask);
+
+ int numConsts() const;
+private:
+ llvm::Value *maskWrite(llvm::Value *src, int mask, llvm::Value *templ);
+ const char *name(const char *prefix);
private:
llvm::BasicBlock *m_block;
llvm::Value *m_OUT;
@@ -42,6 +47,7 @@ private:
std::map<int, llvm::ConstantInt*> m_constInts;
std::map<int, llvm::Constant*> m_intVecs;
std::vector<llvm::Value*> m_temps;
+ std::vector<llvm::Value*> m_dstCache;
LoadMap m_inputs;
LoadMap m_consts;
@@ -52,6 +58,10 @@ private:
llvm::Value *m_undefIntVec;
int m_shuffleId;
+ char m_name[32];
+ int m_idx;
+
+ int m_numConsts;
};
#endif