Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 17 additions & 12 deletions llvm/lib/Transforms/Vectorize/VPlan.h
Original file line number Diff line number Diff line change
Expand Up @@ -1299,18 +1299,10 @@ class LLVM_ABI_FOR_TEST VPInstruction : public VPRecipeWithIRFlags,
LastActiveLane,
// Returns a reversed vector for the operand.
Reverse,

// The opcodes below are used for VPInstructionWithType.
//
/// Scale the first operand (vector step) by the second operand
/// (scalar-step). Casts both operands to the result type if needed.
WideIVStep,
/// Start vector for reductions with 3 operands: the original start value,
/// the identity value for the reduction and an integer indicating the
/// scaling factor.
ReductionStartVector,
// Creates a step vector starting from 0 to VF with a step of 1.
StepVector,
/// Extracts a single lane (first operand) from a set of vector operands.
/// The lane specifies an index into a vector formed by combining all vector
/// operands (all operands after the first one).
Expand All @@ -1324,15 +1316,28 @@ class LLVM_ABI_FOR_TEST VPInstruction : public VPRecipeWithIRFlags,
/// masks (even operands -- ignoring the default value), and returns the
/// last active value from the combined data vector using the combined mask.
ExtractLastActive,

/// Returns the value for vscale.
VScale,
/// Compute the exiting value of a wide induction after vectorization, that
/// is the value of the last lane of the induction increment (i.e. its
/// backedge value). Has the wide induction recipe as operand.
ExitingIVValue,
MaskedCond,
OpsEnd = MaskedCond,

// The opcodes below are used for VPInstructionWithType.
// NOTE: VPInstructionWithType classes are also used for:
// 1. All CastInst variants - see createVPInstructionsForVPBB, and other
// cases where createScalarCast, createScalarZExtOrTrunc and
// createScalarSExtOrTrunc are invoked.
// 2. Scalar load instructions - see createVPInstructionsForVPBB.

/// Scale the first operand (vector step) by the second operand
/// (scalar-step). Casts both operands to the result type if needed.
WideIVStep,
// Creates a step vector starting from 0 to VF with a step of 1.
StepVector,
/// Returns the value for vscale.
VScale,

OpsEnd = VScale,
};

/// Returns true if this VPInstruction generates scalar values for all lanes.
Expand Down