mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 19:58:09 +02:00
Fix nested swizzles. Actually fetch the destination contents
instead of input.
This commit is contained in:
parent
1d26e9c447
commit
1d17cb721a
2 changed files with 9 additions and 4 deletions
|
|
@ -212,7 +212,9 @@ void Storage::setTempElement(int idx, llvm::Value *val, int mask)
|
|||
void Storage::store(int dstIdx, llvm::Value *val, int mask)
|
||||
{
|
||||
if (mask != TGSI_WRITEMASK_XYZW) {
|
||||
llvm::Value *templ = m_dstCache[dstIdx];
|
||||
llvm::Value *templ = 0;
|
||||
if (m_destWriteMap[dstIdx])
|
||||
templ = outputElement(dstIdx);
|
||||
val = maskWrite(val, mask, templ);
|
||||
}
|
||||
|
||||
|
|
@ -222,7 +224,7 @@ void Storage::store(int dstIdx, llvm::Value *val, int mask)
|
|||
m_block);
|
||||
StoreInst *st = new StoreInst(val, getElem, false, m_block);
|
||||
st->setAlignment(8);
|
||||
//m_dstCache[dstIdx] = st;
|
||||
m_destWriteMap[dstIdx] = true;
|
||||
}
|
||||
|
||||
llvm::Value *Storage::maskWrite(llvm::Value *src, int mask, llvm::Value *templ)
|
||||
|
|
@ -308,7 +310,7 @@ llvm::Value * Storage::outputElement(int idx, llvm::Value *indIdx )
|
|||
GetElementPtrInst *getElem = 0;
|
||||
|
||||
if (indIdx) {
|
||||
getElem = new GetElementPtrInst(m_IN,
|
||||
getElem = new GetElementPtrInst(m_OUT,
|
||||
BinaryOperator::create(Instruction::Add,
|
||||
indIdx,
|
||||
constantInt(idx),
|
||||
|
|
@ -317,7 +319,7 @@ llvm::Value * Storage::outputElement(int idx, llvm::Value *indIdx )
|
|||
name("output_ptr"),
|
||||
m_block);
|
||||
} else {
|
||||
getElem = new GetElementPtrInst(m_IN,
|
||||
getElem = new GetElementPtrInst(m_OUT,
|
||||
constantInt(idx),
|
||||
name("output_ptr"),
|
||||
m_block);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#define STORAGE_H
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
namespace llvm {
|
||||
|
|
@ -103,6 +104,8 @@ private:
|
|||
int m_idx;
|
||||
|
||||
int m_numConsts;
|
||||
|
||||
std::map<int, bool > m_destWriteMap;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue