swr/rast: Adding Read/Write specifier to TranslateGfxAddress stack

- Removing unused generic translate function
- Requiring read/write specifier in builder_gfx_mem

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
Alok Hota 2018-06-25 09:52:16 -05:00 committed by Tim Rowley
parent dc6665422a
commit 4509cdbb37
2 changed files with 28 additions and 27 deletions

View file

@ -40,7 +40,8 @@ namespace SwrJit
BuilderGfxMem::BuilderGfxMem(JitManager *pJitMgr) : Builder(pJitMgr)
{
mpTranslationFuncTy = nullptr;
mpfnTranslateGfxAddress = nullptr;
mpfnTranslateGfxAddressForRead = nullptr;
mpfnTranslateGfxAddressForWrite = nullptr;
mpParamSimDC = nullptr;
}
@ -221,7 +222,7 @@ namespace SwrJit
return Builder::MASKED_LOAD(Ptr, Align, Mask, PassThru, Name, Ty, usage);
}
Value *BuilderGfxMem::TranslateGfxAddress(Value * xpGfxAddress,
Value *BuilderGfxMem::TranslateGfxAddressForRead(Value * xpGfxAddress,
Type * PtrTy,
const Twine &Name,
JIT_MEM_CLIENT /* usage */)
@ -232,4 +233,17 @@ namespace SwrJit
}
return INT_TO_PTR(xpGfxAddress, PtrTy, Name);
}
Value *BuilderGfxMem::TranslateGfxAddressForWrite(Value * xpGfxAddress,
Type * PtrTy,
const Twine &Name,
JIT_MEM_CLIENT /* usage */)
{
if (PtrTy == nullptr)
{
PtrTy = mInt8PtrTy;
}
return INT_TO_PTR(xpGfxAddress, PtrTy, Name);
}
} // namespace SwrJit

View file

@ -89,29 +89,14 @@ namespace SwrJit
JIT_MEM_CLIENT usage = MEM_CLIENT_INTERNAL);
Value *TranslateGfxAddress(Value * xpGfxAddress,
Type * PtrTy = nullptr,
const Twine & Name = "",
JIT_MEM_CLIENT usage = MEM_CLIENT_INTERNAL);
template <typename T>
Value *TranslateGfxAddress(Value * xpGfxBaseAddress,
const std::initializer_list<T> &offset,
Type * PtrTy = nullptr,
const Twine & Name = "",
JIT_MEM_CLIENT usage = GFX_MEM_CLIENT_SHADER)
{
AssertGFXMemoryParams(xpGfxBaseAddress, usage);
SWR_ASSERT(xpGfxBaseAddress->getType()->isPointerTy() == false);
if (!PtrTy)
{
PtrTy = mInt8PtrTy;
}
Value *ptr = INT_TO_PTR(xpGfxBaseAddress, PtrTy);
ptr = GEP(ptr, offset);
return TranslateGfxAddress(PTR_TO_INT(ptr, mInt64Ty), PtrTy, Name, usage);
}
Value *TranslateGfxAddressForRead(Value * xpGfxAddress,
Type * PtrTy = nullptr,
const Twine & Name = "",
JIT_MEM_CLIENT usage = MEM_CLIENT_INTERNAL);
Value *TranslateGfxAddressForWrite(Value * xpGfxAddress,
Type * PtrTy = nullptr,
const Twine & Name = "",
JIT_MEM_CLIENT usage = MEM_CLIENT_INTERNAL);
protected:
@ -124,13 +109,15 @@ namespace SwrJit
Value *TranslationHelper(Value *Ptr, Type *Ty);
FunctionType *GetTranslationFunctionType() { return mpTranslationFuncTy; }
Value * GetTranslationFunction() { return mpfnTranslateGfxAddress; }
Value * GetTranslationFunctionForRead() { return mpfnTranslateGfxAddressForRead; }
Value * GetTranslationFunctionForWrite() { return mpfnTranslateGfxAddressForWrite; }
Value * GetParamSimDC() { return mpParamSimDC; }
private:
FunctionType *mpTranslationFuncTy;
Value * mpfnTranslateGfxAddress;
Value * mpfnTranslateGfxAddressForRead;
Value * mpfnTranslateGfxAddressForWrite;
Value * mpParamSimDC;
};
} // namespace SwrJit