mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
swr/rast: Fix GATHERPS to avoid assertions.
With the pBase type change, LLVM was asserting because of wrong types. Cast appropriately. Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
8a64593bde
commit
b25efa36e6
1 changed files with 3 additions and 2 deletions
|
|
@ -140,6 +140,7 @@ namespace SwrJit
|
|||
Value *Builder::GATHERPS(Value *vSrc, Value *pBase, Value *vIndices, Value *vMask, uint8_t scale)
|
||||
{
|
||||
Value *vGather;
|
||||
Value *pBasePtr = INT_TO_PTR(pBase, PointerType::get(mInt8Ty, 0));
|
||||
|
||||
// use avx2 gather instruction if available
|
||||
if (JM()->mArch.AVX2())
|
||||
|
|
@ -147,7 +148,7 @@ namespace SwrJit
|
|||
// force mask to <N x float>, required by vgather
|
||||
Value *mask = BITCAST(VMASK(vMask), mSimdFP32Ty);
|
||||
|
||||
vGather = VGATHERPS(vSrc, pBase, vIndices, mask, C(scale));
|
||||
vGather = VGATHERPS(vSrc, pBasePtr, vIndices, mask, C(scale));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -165,7 +166,7 @@ namespace SwrJit
|
|||
// single component byte index
|
||||
Value *offset = VEXTRACT(vOffsets, C(i));
|
||||
// byte pointer to component
|
||||
Value *loadAddress = GEP(pBase, offset);
|
||||
Value *loadAddress = GEP(pBasePtr, offset);
|
||||
loadAddress = BITCAST(loadAddress, PointerType::get(mFP32Ty, 0));
|
||||
// pointer to the value to load if we're masking off a component
|
||||
Value *maskLoadAddress = GEP(vSrcPtr, { C(0), C(i) });
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue