[llvm] [GlobalISel] Fold G_SHUFFLE_VECTOR with a single element mask to G_EXTRACT_VECTOR_ELT (PR #65342)
    Jay Foad via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Sep  6 05:00:01 PDT 2023
    
    
  
================
@@ -395,6 +395,39 @@ void CombinerHelper::applyCombineShuffleVector(MachineInstr &MI,
   replaceRegWith(MRI, DstReg, NewDstReg);
 }
 
+bool CombinerHelper::matchShuffleToExtract(MachineInstr &MI) {
+  assert(MI.getOpcode() == TargetOpcode::G_SHUFFLE_VECTOR &&
+         "Invalid instruction kind");
+
+  ArrayRef<int> Mask = MI.getOperand(3).getShuffleMask();
+  return Mask.size() == 1 && Mask[0] >= 0;
----------------
jayfoad wrote:
Maybe also handle the Mask[0] == -1 case, by replacing it with G_IMPLICIT_DEF ?
https://github.com/llvm/llvm-project/pull/65342
    
    
More information about the llvm-commits
mailing list