@@ -8943,13 +8943,6 @@ void EmitPass::emitPtrToInt(llvm::PtrToIntInst* P2I)
89438943
89448944void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast, CVariable* srcV, unsigned tag)
89458945{
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-
89538946 if (m_pCtx->m_hasEmu64BitInsts && m_currShader->m_Platform->hasNoFullI64Support())
89548947 {
89558948 if (m_currShader->GetContext()->getRegisterPointerSizeInBits(addrSpaceCast->getSrcAddressSpace()) == 32)
@@ -8963,7 +8956,7 @@ void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast
89638956 // High:
89648957 m_encoder->SetDstSubReg(1);
89658958 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));
89678960 m_encoder->Push();
89688961 }
89698962 else
@@ -8992,7 +8985,6 @@ void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast
89928985 m_encoder->Push();
89938986
89948987 // Add tag to high part
8995- m_encoder->SetPredicate(pFlag);
89968988 m_encoder->Or(srcHigh, srcHigh, m_currShader->ImmToVariable(tag << 29, ISA_TYPE_UD));
89978989 m_encoder->Push();
89988990
@@ -9011,11 +9003,12 @@ void EmitPass::emitAddrSpaceToGenericCast(llvm::AddrSpaceCastInst* addrSpaceCast
90119003 }
90129004 else
90139005 {
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);
90199012 m_encoder->Push();
90209013 }
90219014}
0 commit comments