Lines Matching full:gather

1 //===- MVEGatherScatterLowering.cpp - Gather/Scatter lowering -------------===//
9 /// This pass custom lowers llvm.gather and llvm.scatter instructions to
10 /// arm.mve.gather and arm.mve.scatter intrinsics, optimising the code to
48 #define DEBUG_TYPE "arm-mve-gather-scatter-lowering"
67 return "MVE gather/scatter lowering"; in getPassName()
81 // Check this is a valid gather with correct alignment
97 // Compute the scale of this gather/scatter instruction
108 // Create a gather from a base + vector of offsets
112 // Create a gather from a vector of pointers
116 // Create an incrementing gather from a vector of pointers
140 // gather/scatter
165 "MVE gather/scattering lowering pass", false, false)
192 // vector with element types smaller or equal the type of the gather we're in checkOffsetSize()
194 // to fit into the gather type. in checkOffsetSize()
393 // Check that the constant is small enough for an incrementing gather in getVarAndConst()
406 // @llvm.masked.gather.*(Ptrs, alignment, Mask, Src0) in lowerGather()
407 // Attempt to turn the masked gather in I into a MVE intrinsic in lowerGather()
445 // If this was an extending gather, we need to get rid of the sext/zext in lowerGather()
446 // sext/zext as well as of the gather itself in lowerGather()
449 LLVM_DEBUG(dbgs() << "masked gathers: successfully built masked gather\n" in lowerGather()
503 // The size of the gather was already checked in isLegalTypeAndAlignment; in tryCreateMaskedGatherOffset()
509 // If the gather has a single extend of the correct type, use an extending in tryCreateMaskedGatherOffset()
510 // gather and replace the ext. In which case the correct root to replace in tryCreateMaskedGatherOffset()
530 // extending gather and truncate back to the original type. in tryCreateMaskedGatherOffset()
540 // The final size of the gather must be a full vector width in tryCreateMaskedGatherOffset()
751 "wb gather/scatter\n"); in tryCreateIncrementingGatScat()
763 // Only in this case do we want to build a wb gather, because the wb will in tryCreateIncrementingGatScat()
772 "non-wb gather/scatter\n"); in tryCreateIncrementingGatScat()
805 // Check whether this gather's offset is incremented by a constant - if so, in tryCreateIncrementingWBGatScat()
806 // and the load is of the right type, we can merge this into a QI gather in tryCreateIncrementingWBGatScat()
816 // one in the gather's gep in tryCreateIncrementingWBGatScat()
854 // The gather is pre-incrementing in tryCreateIncrementingWBGatScat()
867 // Build the incrementing gather in tryCreateIncrementingWBGatScat()
869 // One value to be handed to whoever uses the gather, one is the loop in tryCreateIncrementingWBGatScat()
871 EndResult = ExtractValueInst::Create(Load, 0, "Gather"); in tryCreateIncrementingWBGatScat()
1228 // used by an MVE gather; thus the offset has to have the correct size in optimiseAddress()