summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/llvm/storagesoa.h
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-02-14 22:42:57 -0500
committerZack Rusin <zack@tungstengraphics.com>2008-02-15 01:17:17 -0500
commitf70cc89dbc8c0f3e58d6cf8eca92e2df1677c86e (patch)
tree66bed76e9f8e5929220b6af54df0e7bba0051ab8 /src/mesa/pipe/llvm/storagesoa.h
parentae3375987fe9968f822442a0ce49b97f5f0a4070 (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.h15
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];