From 755282ec1e50b9038b31b1e0d6f4fced52cb85e4 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Mon, 9 Jan 2023 09:49:12 -0800 Subject: [PATCH] [SLP][NFC]Move getExtractIndex function for future changes, NFC. --- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index dc566dc..49ad18c 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -515,6 +515,24 @@ isFixedVectorShuffle(ArrayRef VL, SmallVectorImpl &Mask) { : TargetTransformInfo::SK_PermuteSingleSrc; } +/// \returns True if Extract{Value,Element} instruction extracts element Idx. +static std::optional getExtractIndex(Instruction *E) { + unsigned Opcode = E->getOpcode(); + assert((Opcode == Instruction::ExtractElement || + Opcode == Instruction::ExtractValue) && + "Expected extractelement or extractvalue instruction."); + if (Opcode == Instruction::ExtractElement) { + auto *CI = dyn_cast(E->getOperand(1)); + if (!CI) + return std::nullopt; + return CI->getZExtValue(); + } + auto *EI = cast(E); + if (EI->getNumIndices() != 1) + return std::nullopt; + return *EI->idx_begin(); +} + namespace { /// Main data required for vectorization of instructions. @@ -762,24 +780,6 @@ static bool allSameType(ArrayRef VL) { return true; } -/// \returns True if Extract{Value,Element} instruction extracts element Idx. -static std::optional getExtractIndex(Instruction *E) { - unsigned Opcode = E->getOpcode(); - assert((Opcode == Instruction::ExtractElement || - Opcode == Instruction::ExtractValue) && - "Expected extractelement or extractvalue instruction."); - if (Opcode == Instruction::ExtractElement) { - auto *CI = dyn_cast(E->getOperand(1)); - if (!CI) - return std::nullopt; - return CI->getZExtValue(); - } - ExtractValueInst *EI = cast(E); - if (EI->getNumIndices() != 1) - return std::nullopt; - return *EI->idx_begin(); -} - /// \returns True if in-tree use also needs extract. This refers to /// possible scalar operand in vectorized instruction. static bool InTreeUserNeedToExtract(Value *Scalar, Instruction *UserInst, -- 2.7.4