diff options
author | Zack Rusin <zack@tungstengraphics.com> | 2008-02-14 22:42:57 -0500 |
---|---|---|
committer | Zack Rusin <zack@tungstengraphics.com> | 2008-02-15 01:17:17 -0500 |
commit | f70cc89dbc8c0f3e58d6cf8eca92e2df1677c86e (patch) | |
tree | 66bed76e9f8e5929220b6af54df0e7bba0051ab8 /src/mesa/pipe/llvm/storagesoa.h | |
parent | ae3375987fe9968f822442a0ce49b97f5f0a4070 (diff) |
redo the way immediates are handled
implement madd
start implementing arl
Diffstat (limited to 'src/mesa/pipe/llvm/storagesoa.h')
-rw-r--r-- | src/mesa/pipe/llvm/storagesoa.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/mesa/pipe/llvm/storagesoa.h b/src/mesa/pipe/llvm/storagesoa.h index d59168f07d..ea5db2b427 100644 --- a/src/mesa/pipe/llvm/storagesoa.h +++ b/src/mesa/pipe/llvm/storagesoa.h @@ -29,12 +29,14 @@ #define STORAGESOA_H #include <vector> +#include <list> #include <map> namespace llvm { class BasicBlock; class Constant; class ConstantInt; + class GlobalVariable; class LoadInst; class Value; class VectorType; @@ -66,20 +68,22 @@ public: int mask); void addImmediate(float *vec); + void declareImmediates(); + + void addAddress(int idx); llvm::Value * addrElement(int idx) const; - llvm::Value *extractIndex(llvm::Value *vec); + llvm::ConstantInt *constantInt(int) const; 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; llvm::Value *alignedArrayLoad(llvm::Value *val); llvm::Module *currentModule() const; - llvm::Value *createConstGlobalVector(float *vec); + llvm::Constant *createConstGlobalVector(const std::vector<float> &vec); std::vector<llvm::Value*> inputElement(int idx, llvm::Value *indIdx =0); std::vector<llvm::Value*> constElement(int idx, llvm::Value *indIdx =0); @@ -93,8 +97,11 @@ private: llvm::Value *m_output; llvm::Value *m_consts; llvm::Value *m_temps; + llvm::GlobalVariable *m_immediates; + + std::map<int, llvm::Value*> m_addresses; - std::map<int, std::vector<llvm::Value*> > m_immediates; + std::vector<std::vector<float> > m_immediatesToFlush; mutable std::map<int, llvm::ConstantInt*> m_constInts; mutable char m_name[32]; |