@@ -8943,13 +8943,6 @@ void EmitPass::emitPtrToInt(llvm::PtrToIntInst* P2I)
8943
8943
8944
8944
void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast, CVariable* srcV, unsigned tag)
8945
8945
{
8946
- CVariable* pFlag = m_currShader->GetNewVariable(
8947
- numLanes(m_currShader->m_SIMDSize),
8948
- ISA_TYPE_BOOL, EALIGN_BYTE,
8949
- CName(srcV->getName(), "NotNull"));
8950
- m_encoder->Cmp(EPREDICATE_NE, pFlag, srcV, m_currShader->ImmToVariable(0, ISA_TYPE_UD));
8951
- m_encoder->Push();
8952
-
8953
8946
if (m_pCtx->m_hasEmu64BitInsts && m_currShader->m_Platform->hasNoFullI64Support())
8954
8947
{
8955
8948
if (m_currShader->GetContext()->getRegisterPointerSizeInBits(addrSpaceCast->getSrcAddressSpace()) == 32)
@@ -8963,7 +8956,7 @@ void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast
8963
8956
// High:
8964
8957
m_encoder->SetDstSubReg(1);
8965
8958
m_encoder->SetDstRegion(2);
8966
- m_encoder->Select(pFlag, dstAlias, m_currShader->ImmToVariable(tag << 29, ISA_TYPE_UD), m_currShader->ImmToVariable(0 , ISA_TYPE_UD));
8959
+ m_encoder->Copy( dstAlias, m_currShader->ImmToVariable(tag << 29, ISA_TYPE_UD));
8967
8960
m_encoder->Push();
8968
8961
}
8969
8962
else
@@ -8992,7 +8985,6 @@ void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast
8992
8985
m_encoder->Push();
8993
8986
8994
8987
// Add tag to high part
8995
- m_encoder->SetPredicate(pFlag);
8996
8988
m_encoder->Or(srcHigh, srcHigh, m_currShader->ImmToVariable(tag << 29, ISA_TYPE_UD));
8997
8989
m_encoder->Push();
8998
8990
@@ -9011,11 +9003,12 @@ void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast
9011
9003
}
9012
9004
else
9013
9005
{
9014
- m_encoder->Cast(m_destination, srcV);
9015
- m_encoder->Push();
9016
-
9017
- m_encoder->SetPredicate(pFlag);
9018
- m_encoder->Or(m_destination, srcV, m_currShader->ImmToVariable(static_cast<uint64_t>(tag) << 61, ISA_TYPE_UQ));
9006
+ CVariable* pTempVar = m_currShader->GetNewVariable(
9007
+ numLanes(m_currShader->m_SIMDSize),
9008
+ ISA_TYPE_UQ, m_currShader->getGRFAlignment(),
9009
+ m_destination->IsUniform(), CName::NONE);
9010
+ m_encoder->Or(pTempVar, srcV, m_currShader->ImmToVariable(static_cast<uint64_t>(tag) << 61, ISA_TYPE_UQ));
9011
+ m_encoder->Cast(m_destination, pTempVar);
9019
9012
m_encoder->Push();
9020
9013
}
9021
9014
}
0 commit comments