================
@@ -1649,6 +1649,26 @@ bool SITargetLowering::getTgtMemIntrinsic(IntrinsicInfo
&Info,
Info.flags |= MachineMemOperand::MOLoad | MachineMemOperand::MOStore;
return true;
}
+ case Intrinsic::amdgcn_global_load_b128:
+ case Intrinsic::amdgcn_global_store_b128: {
+ bool IsStore = IntrID == Intrinsic::amdgcn_global_store_b128;
+ Info.opc = IsStore ? ISD::INTRINSIC_VOID : ISD::INTRINSIC_W_CHAIN;
+ Info.memVT = EVT::getIntegerVT(CI.getContext(), 128);
+ Info.ptrVal = CI.getArgOperand(0);
+ Info.flags |=
+ IsStore ? MachineMemOperand::MOStore : MachineMemOperand::MOLoad;
+ // Pretend to be atomic so that SIMemoryLegalizer::expandStore sets cache
+ // flags appropriately.
+ Info.order = AtomicOrdering::Monotonic;
----------------
arsenm wrote:
It's not really pretending, the point of this was to essentially be atomic? I'd
also expect there to be a scope argument? Or is using a fence in conjunction
sufficient to express the range of atomic behavior?
https://github.com/llvm/llvm-project/pull/172090
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits