@@ -131,39 +131,6 @@ unsigned SPIRVTargetMachine::getAssumedAddrSpace(const Value *V) const {
131131 return AddressSpace::CrossWorkgroup;
132132}
133133
134- std::pair<const Value *, unsigned >
135- SPIRVTargetMachine::getPredicatedAddrSpace (const Value *V) const {
136- // TODO: this is will only fire for AMDGCN flavoured SPIR-V at the moment,
137- // where the intrinsics are available; we should re-implement the predicates
138- // on top of SPIR-V specific intrinsics OpGenericPtrMemSemantics directly.
139- using namespace PatternMatch ;
140-
141- if (auto *II = dyn_cast<IntrinsicInst>(V)) {
142- switch (II->getIntrinsicID ()) {
143- case Intrinsic::amdgcn_is_shared:
144- return std::pair (II->getArgOperand (0 ), AddressSpace::Workgroup);
145- case Intrinsic::amdgcn_is_private:
146- return std::pair (II->getArgOperand (0 ), AddressSpace::Function);
147- default :
148- break ;
149- }
150- return std::pair (nullptr , UINT32_MAX);
151- }
152- // Check the global pointer predication based on
153- // (!is_share(p) && !is_private(p)). Note that logic 'and' is commutative and
154- // the order of 'is_shared' and 'is_private' is not significant.
155- Value *Ptr;
156- if (getTargetTriple ().getVendor () == Triple::VendorType::AMD &&
157- match (
158- const_cast <Value *>(V),
159- m_c_And (m_Not (m_Intrinsic<Intrinsic::amdgcn_is_shared>(m_Value (Ptr))),
160- m_Not (m_Intrinsic<Intrinsic::amdgcn_is_private>(
161- m_Deferred (Ptr))))))
162- return std::pair (Ptr, AddressSpace::CrossWorkgroup);
163-
164- return std::pair (nullptr , UINT32_MAX);
165- }
166-
167134bool SPIRVTargetMachine::isNoopAddrSpaceCast (unsigned SrcAS,
168135 unsigned DestAS) const {
169136 if (SrcAS != AddressSpace::Generic && SrcAS != AddressSpace::CrossWorkgroup)
0 commit comments