[PATCH] D93132: [SVE][CodeGen] Vector + immediate addressing mode for masked gather/scatter
    Sander de Smalen via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Sun Dec 13 23:15:16 PST 2020
    
    
  
sdesmalen added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:3915
+
+    BasePtr = SplatVal;
+    Index = Index->getOperand(0);
----------------
This case here (GLD1_MERGE_ZERO/SST1_PRED) seems to be the default if this function doesn't do anything, probably best not to change that.
The only case you want to handle in this function is the vector+imm case, so I think you can rewrite the control flow to something like:
  if (!isNullConstant(BasePtr))
    return false;
  ConstantSDNode *Offset = nullptr;
  if (Index.getOpcode() == ISD::ADD)
    if (auto SplatVal = DAG.getSplatValue(Index.getOperand(1))
      if (isa<ConstantSDNode>(SplatVal))
        Offset = SplatVal;
  Opcode = ....;
  if (!Offset)
    // <Swap index/opcode and return>
  // <Set index/opcode, calculate immediate and return>
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93132/new/
https://reviews.llvm.org/D93132
    
    
More information about the llvm-commits
mailing list