HomeSort by: relevance | last modified time | path
    Searched defs:Lane (Results 1 - 18 of 18) sorted by relevancy

  /src/external/apache2/llvm/dist/llvm/lib/Transforms/Vectorize/
VPlan.h 99 /// vectors, where for the latter the lane index sometimes needs calculating
103 /// Kind describes how to interpret Lane.
105 /// For First, Lane is the index into the first N elements of a
108 /// For ScalableLast, Lane is the offset from the start of the last
110 /// example, a Lane of 0 corresponds to lane `(vscale - 1) * N`, a Lane of
117 unsigned Lane;
119 /// Indicates how the Lane should be interpreted, as described above.
123 VPLane(unsigned Lane, Kind LaneKind) : Lane(Lane), LaneKind(LaneKind) {
    [all...]
VPlan.cpp 67 // Lane = RuntimeVF - VF.getKnownMinValue() + Lane
69 Builder.getInt32(VF.getKnownMinValue() - Lane));
71 return Builder.getInt32(Lane);
73 llvm_unreachable("Unknown lane kind");
233 .PerPartScalars[Def][Instance.Part][Instance.Lane.mapToCacheIndex(VF)];
239 assert(Instance.Lane.isFirstLane() && "cannot get lane > 0 for scalar");
243 Value *Lane = Instance.Lane.getAsRuntimeExpr(Builder, VF)
    [all...]
SLPVectorizer.cpp 397 /// "shuffled out" lane would result in division by zero.
901 /// During operand reordering, we are trying to select the operand at lane
902 /// that matches best with the operand at the neighboring lane. Our
904 /// if the neighboring lane has a load, we need to look for a load that is
924 /// \returns the operand data at \p OpIdx and \p Lane.
925 OperandData &getData(unsigned OpIdx, unsigned Lane) {
926 return OpsVec[OpIdx][Lane];
929 /// \returns the operand data at \p OpIdx and \p Lane. Const version.
930 const OperandData &getData(unsigned OpIdx, unsigned Lane) const {
931 return OpsVec[OpIdx][Lane];
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/CodeGen/
InterleavedAccessPass.cpp 230 // Lane computes x's position in the Mask
231 unsigned Lane = J * Factor + I;
232 unsigned NextLane = Lane + Factor;
233 int LaneValue = Mask[Lane];
268 // StartMask defined by the last value in lane
  /src/external/apache2/llvm/dist/llvm/lib/Target/ARM/
A15SDOptimizer.cpp 68 const DebugLoc &DL, unsigned Reg, unsigned Lane,
74 unsigned Lane, const TargetRegisterClass *TRC);
88 unsigned Lane, unsigned ToInsert);
418 unsigned Lane, bool QPR) {
424 .addImm(Lane)
430 // Creates a SPR register from a DPR by copying the value in lane 0.
433 const DebugLoc &DL, unsigned DReg, unsigned Lane,
440 .addReg(DReg, 0, Lane);
478 const DebugLoc &DL, unsigned DReg, unsigned Lane, unsigned ToInsert) {
486 .addImm(Lane);
    [all...]
ARMExpandPseudoInsts.cpp 140 // For quad-register load-lane and store-lane pseudo instructors, the
142 // OddDblSpc depending on the lane number operand.
162 uint8_t RegElts; // elements per D register; used for lane ops
728 // The lane operand is always the 3rd from last operand, before the 2
730 unsigned Lane = MI.getOperand(MI.getDesc().getNumOperands() - 3).getImm();
732 // Adjust the lane and spacing as needed for Q registers.
733 assert(RegSpc != OddDblSpc && "unexpected register spacing for VLD/VST-lane");
734 if (RegSpc == EvenDblSpc && Lane >= RegElts) {
736 Lane -= RegElts
    [all...]
ARMBaseInstrInfo.cpp 87 bool HasLane; // True if instruction has an extra "lane" operand.
4959 unsigned SReg, unsigned &Lane) {
4961 Lane = 0;
4966 Lane = 1;
4973 /// getImplicitSPRUseForDPRUse - Given a use of a DPR register and lane,
4981 /// an SPR to a DPR[Lane]. A use of the DPR is being added, which may conflict
4982 /// with an earlier def of an SPR corresponding to DPR[Lane^1] (i.e. the other
4983 /// lane of the DPR).
4990 unsigned Lane, unsigned &ImplicitSReg) {
4991 // If the DPR is defined or used already, the other SPR lane will be chaine
    [all...]
ARMISelDAGToDAG.cpp 215 /// SelectVLDSTLane - Select NEON load/store lane intrinsics. NumVecs should
273 /// used for 8, 16 and 32-bit lane sizes respectively, and each
280 /// array of 3 elements for the 8, 16 and 32-bit lane sizes.
1051 // This case occurs only for VLD1-lane/dup and VST1-lane instructions.
2388 unsigned Lane =
2410 default: llvm_unreachable("unhandled vld/vst lane type");
2470 Ops.push_back(getI32Imm(Lane, dl));
3091 // simplifies into a f32 lane move.
ARMISelLowering.cpp 1484 // a NEON instruction with an undef lane instead. This has a performance
7586 // just use VDUPLANE. We can only do this if the lane being extracted
7587 // is at a constant index, as the VDUP from lane instructions only have
7771 // Update the minimum and maximum lane number seen.
8210 // Look for full lane vmovs like <0,1,2,3> or <u,5,6,7> etc, (but not
8211 // <u,u,u,u>), returning the vmov lane index
8213 // Detect which mov lane this would be from the first non-undef element.
8351 int Lane = SVN->getSplatIndex();
8353 if (Lane == -1) Lane = 0
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/AArch64/GISel/
AArch64PostLegalizerLowering.cpp 192 /// Second element is the destination lane for the G_INSERT_VECTOR_ELT.
301 static bool matchDupFromInsertVectorElt(int Lane, MachineInstr &MI,
304 if (Lane != 0)
340 static bool matchDupFromBuildVector(int Lane, MachineInstr &MI,
343 assert(Lane >= 0 && "Expected positive lane?");
345 // lane's definition directly.
350 Register Reg = BuildVecMI->getOperand(Lane + 1).getReg();
362 int Lane = *MaybeLane;
364 if (Lane < 0
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/X86/
X86InterleavedAccess.cpp 246 // only works on instructions with lane inside 256 registers. According to
258 // By computing the shuffle on a sequence of 16 elements(one lane) and add the
432 // {0, Stride%(VF/Lane), (2*Stride%(VF/Lane))...(VF*Stride/Lane)%(VF/Lane),
433 // (VF/ Lane) ,(VF / Lane)+Stride%(VF/Lane),...,
434 // (VF / Lane)+(VF*Stride/Lane)%(VF/Lane)
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/AMDGPU/
SIMachineFunctionInfo.h 443 int Lane = -1;
446 SpilledReg(Register R, int L) : VGPR (R), Lane (L) {}
448 bool hasLane() { return Lane != -1;}
541 MCPhysReg getVGPRToAGPRSpill(int FrameIndex, unsigned Lane) const {
544 : I->second.Lanes[Lane];
SIRegisterInfo.cpp 163 // a register as actually in use in another lane, so we need to save all
920 int Index, unsigned Lane,
926 MCPhysReg Reg = MFI->getVGPRToAGPRSpill(Index, Lane);
1162 unsigned Lane = RegOffset / 4;
1164 for ( ; Lane != LaneE; ++Lane) {
1167 ? Register(getSubReg(ValueReg, getSubRegFromChannel(Lane)))
1169 auto MIB = spillVGPRtoAGPR(ST, MBB, MI, Index, Lane, Sub, IsKill);
1172 if (NeedSuperRegDef || (IsSubReg && IsStore && Lane == 0)) {
1179 if (Lane + 1 != LaneE
    [all...]
SIISelLowering.cpp 9163 // Select 0xc for each lane used from source operand. Zero has 0xc mask
9185 // Add 4 to each active LHS lane. It will not affect any existing 0xff
9260 // Select 0xc for each lane used from source operand. Zero has 0xc mask
9273 // Add 4 to each active LHS lane
10966 unsigned Lane = 0;
10983 // Work out which is the TFE/LWE lane if that is enabled.
11001 // Lane means which subreg of %vgpra_vgprb_vgprc_vgprd is used.
11002 // Note that subregs are packed, i.e. Lane==0 is the first bit set
11003 // in OldDmask, so it can be any of X,Y,Z,W; Lane==1 is the second bit
11005 Lane = SubIdx2Lane(I->getConstantOperandVal(1))
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/Mips/
MipsSEISelLowering.cpp 1380 // When ResVecTy == MVT::v2i64, LaneA is the upper 32 bits of the lane and
1388 // lane to 0 so that the splati.d instruction can be matched.
1391 // Having the index passed in a register, set the upper lane to the same
3167 // for lane 1 because it would require FR=0 mode which isn't supported by MSA.
3176 unsigned Lane = MI.getOperand(2).getImm();
3178 if (Lane == 0) {
3194 BuildMI(*BB, MI, DL, TII->get(Mips::SPLATI_W), Wt).addReg(Ws).addImm(Lane);
3221 unsigned Lane = MI.getOperand(2).getImm() * 2;
3224 if (Lane == 0)
3251 unsigned Lane = MI.getOperand(2).getImm()
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/WebAssembly/
WebAssemblyISelLowering.cpp 184 // Custom lower lane accesses to expand out variable indices
1636 // is a vector extract of an i8 or i16 lane. SIMD does not depend on sign
1701 auto GetSwizzleSrcs = [](size_t I, const SDValue &Lane) {
1703 if (Lane->getOpcode() != ISD::EXTRACT_VECTOR_ELT)
1705 const SDValue &SwizzleSrc = Lane->getOperand(0);
1706 const SDValue &IndexExt = Lane->getOperand(1);
1721 // If the lane is extracted from another vector at a constant index, return
1725 auto GetShuffleSrc = [&](const SDValue &Lane) {
1726 if (Lane->getOpcode() != ISD::EXTRACT_VECTOR_ELT)
1728 if (!isa<ConstantSDNode>(Lane->getOperand(1).getNode())
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/RISCV/
RISCVISelLowering.cpp 1719 const int Lane = SVN->getSplatIndex();
1720 if (Lane >= 0) {
1728 int Offset = Lane;
1780 assert(Lane < (int)NumElts && "Unexpected lane!");
1783 DAG.getConstant(Lane, DL, XLenVT), TrueMask, VL);
  /src/external/apache2/llvm/dist/llvm/lib/Target/AArch64/
AArch64ISelLowering.cpp 4344 // the word lane which represent the v4i8 subvector. It optimizes the store
8240 // Update the minimum and maximum lane number seen.
8441 /// element width than the vector lane type. If that is the case the function
8442 /// returns true and writes the value of the DUP instruction lane operand into
8463 // lane indices of the duplicated block (i.e. [0, 1], [2, 3] and [4, 5, 6, 7]
8842 SDValue Lane = DAG.getConstant(OpNum - OP_VDUP0, dl, MVT::i64);
8843 return DAG.getNode(Opcode, dl, VT, OpLHS, Lane);
8948 static SDValue constructDup(SDValue V, int Lane, SDLoc dl, EVT VT,
8967 // Update the lane value by offsetting with the scaled extract index.
8982 if (getScaledOffsetDup(V, Lane, CastVT))
    [all...]

Completed in 109 milliseconds