mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
try to load the consts correctly
This commit is contained in:
parent
66640c4b58
commit
c107d57210
2 changed files with 22 additions and 0 deletions
|
|
@ -81,6 +81,15 @@ std::vector<llvm::Value*> StorageSoa::constElement(int idx, int swizzle,
|
|||
llvm::Value *indIdx)
|
||||
{
|
||||
std::vector<llvm::Value*> res(4);
|
||||
llvm::Value *xChannel = elementPointer(m_consts, idx, 0);
|
||||
llvm::Value *yChannel = elementPointer(m_consts, idx, 1);
|
||||
llvm::Value *zChannel = elementPointer(m_consts, idx, 2);
|
||||
llvm::Value *wChannel = elementPointer(m_consts, idx, 3);
|
||||
|
||||
res[0] = alignedArrayLoad(xChannel);
|
||||
res[1] = alignedArrayLoad(yChannel);
|
||||
res[2] = alignedArrayLoad(zChannel);
|
||||
res[3] = alignedArrayLoad(wChannel);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
@ -206,3 +215,14 @@ llvm::ConstantInt * StorageSoa::constantInt(int idx) const
|
|||
m_constInts[idx] = constInt;
|
||||
return constInt;
|
||||
}
|
||||
|
||||
llvm::Value *StorageSoa::alignedArrayLoad(llvm::Value *val)
|
||||
{
|
||||
VectorType *vectorType = VectorType::get(Type::FloatTy, 4);
|
||||
PointerType *vectorPtr = PointerType::get(vectorType, 0);
|
||||
|
||||
CastInst *cast = new BitCastInst(val, vectorPtr, name("toVector"), m_block);
|
||||
LoadInst *load = new LoadInst(cast, name("alignLoad"), false, m_block);
|
||||
load->setAlignment(8);
|
||||
return load;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ private:
|
|||
int channel) const;
|
||||
const char *name(const char *prefix) const;
|
||||
llvm::ConstantInt *constantInt(int) const;
|
||||
llvm::Value *alignedArrayLoad(llvm::Value *val);
|
||||
|
||||
private:
|
||||
llvm::BasicBlock *m_block;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue