diff options
author | Stephane Marchesin <marchesin@icps.u-strasbg.fr> | 2008-10-09 23:32:01 +0200 |
---|---|---|
committer | Stephane Marchesin <marchesin@icps.u-strasbg.fr> | 2008-10-09 23:32:01 +0200 |
commit | db9de99925ee7d16ef2e99d41510e7231aa25366 (patch) | |
tree | 4e011c36beff96575160dca5ecad1b88de97b708 /src/gallium/auxiliary/gallivm | |
parent | d48a92e88040470f93e2186f8eb23e4797a09860 (diff) |
Gallivm: cleanup soa storage.
Diffstat (limited to 'src/gallium/auxiliary/gallivm')
-rw-r--r-- | src/gallium/auxiliary/gallivm/soabuiltins.c | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/storagesoa.cpp | 45 |
2 files changed, 12 insertions, 34 deletions
diff --git a/src/gallium/auxiliary/gallivm/soabuiltins.c b/src/gallium/auxiliary/gallivm/soabuiltins.c index cb85e1734e..b20f3c4963 100644 --- a/src/gallium/auxiliary/gallivm/soabuiltins.c +++ b/src/gallium/auxiliary/gallivm/soabuiltins.c @@ -167,7 +167,6 @@ void min(float4 *res, res[3] = minvec(tmp0w, tmp1w); } - void max(float4 *res, float4 tmp0x, float4 tmp0y, float4 tmp0z, float4 tmp0w, float4 tmp1x, float4 tmp1y, float4 tmp1z, float4 tmp1w) diff --git a/src/gallium/auxiliary/gallivm/storagesoa.cpp b/src/gallium/auxiliary/gallivm/storagesoa.cpp index d4ecf97c36..4fc075cf6d 100644 --- a/src/gallium/auxiliary/gallivm/storagesoa.cpp +++ b/src/gallium/auxiliary/gallivm/storagesoa.cpp @@ -91,29 +91,19 @@ void StorageSoa::declareImmediates() for (unsigned int i = 0; i < m_immediatesToFlush.size(); ++i) { std::vector<float> vec = m_immediatesToFlush[i]; std::vector<float> vals(4); - float val; std::vector<Constant*> channelArray; - val = vec[0]; - llvm::Constant *xChannel = createConstGlobalFloat(val); - val = vec[1]; - llvm::Constant *yChannel = createConstGlobalFloat(val); - val = vec[2]; - llvm::Constant *zChannel = createConstGlobalFloat(val); - val = vec[3]; - llvm::Constant *wChannel = createConstGlobalFloat(val); + vals[0] = vec[0]; vals[1] = vec[1]; vals[2] = vec[2]; vals[3] = vec[3]; + llvm::Constant *xChannel = createConstGlobalVector(vals); -// vals[0] = vec[0]; vals[1] = vec[1]; vals[2] = vec[2]; vals[3] = vec[3]; -// llvm::Constant *xChannel = createConstGlobalVector(vec[0]); - -/* vals[0] = vec[1]; vals[1] = vec[1]; vals[2] = vec[1]; vals[3] = vec[1]; + vals[0] = vec[1]; vals[1] = vec[1]; vals[2] = vec[1]; vals[3] = vec[1]; llvm::Constant *yChannel = createConstGlobalVector(vals); vals[0] = vec[2]; vals[1] = vec[2]; vals[2] = vec[2]; vals[3] = vec[2]; llvm::Constant *zChannel = createConstGlobalVector(vals); vals[0] = vec[3]; vals[1] = vec[3]; vals[2] = vec[3]; vals[3] = vec[3]; - llvm::Constant *wChannel = createConstGlobalVector(vals);*/ + llvm::Constant *wChannel = createConstGlobalVector(vals); channelArray.push_back(xChannel); channelArray.push_back(yChannel); channelArray.push_back(zChannel); @@ -177,29 +167,18 @@ llvm::Value* StorageSoa::unpackConstElement(llvm::IRBuilder<>* m_builder, llvm:: std::vector<llvm::Value*> StorageSoa::constElement(llvm::IRBuilder<>* m_builder, llvm::Value *idx) { - std::vector<llvm::Value*> res(4); + llvm::Value* res; std::vector<llvm::Value*> res2(4); llvm::Value *xChannel, *yChannel, *zChannel, *wChannel; xChannel = elementPointer(m_consts, idx, 0); -/* yChannel = elementPointer(m_consts, idx, 1); - zChannel = elementPointer(m_consts, idx, 2); - wChannel = elementPointer(m_consts, idx, 3);*/ - - res[0] = alignedArrayLoad(xChannel); -/* res[1] = alignedArrayLoad(xChannel); - res[2] = alignedArrayLoad(xChannel); - res[3] = alignedArrayLoad(xChannel);*/ - - - res2[0]=unpackConstElement(m_builder, res[0],0); - res2[1]=unpackConstElement(m_builder, res[0],1); - res2[2]=unpackConstElement(m_builder, res[0],2); - res2[3]=unpackConstElement(m_builder, res[0],3); -/*res[0] = alignedArrayLoad(xChannel); - res[1] = alignedArrayLoad(yChannel); - res[2] = alignedArrayLoad(zChannel); - res[3] = alignedArrayLoad(wChannel);*/ + + res = alignedArrayLoad(xChannel); + + res2[0]=unpackConstElement(m_builder, res,0); + res2[1]=unpackConstElement(m_builder, res,1); + res2[2]=unpackConstElement(m_builder, res,2); + res2[3]=unpackConstElement(m_builder, res,3); return res2; } |