MemSDNode MultiMachineMemOperand Support(for async load store of gpu)

I’m writing the backend of llvm based on Clang-9. Now I need to add the memoperand for async_load_u32 instruction. This instruction need to load mem from shared mem and store it to the local mem. But I find that the struct of MemSDNode only supports one MMO only:

class MemSDNode : public SDNode {
  // VT of in-memory value.
  EVT MemoryVT;

  /// Memory reference information.
  MachineMemOperand *MMO;

// ...


Is there any methods to support multi mmos without changing too much code?

You can always put a single overly conservative MMO that just says “this instruction reads and writes memory”.