LLVM 22.0.0git
Instructions.cpp File Reference
#include "llvm/IR/Instructions.h"
#include "LLVMContextImpl.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Twine.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/ConstantRange.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/ProfDataUtils.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CheckedArithmetic.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/ModRef.h"
#include "llvm/Support/TypeSize.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <optional>
#include <vector>

Go to the source code of this file.

Functions

static ValuegetAISize (LLVMContext &Context, Value *Amt)
static Align computeAllocaDefaultAlign (Type *Ty, InsertPosition Pos)
static Align computeLoadStoreDefaultAlign (Type *Ty, InsertPosition Pos)
template<typename IndexTy>
static TypegetIndexedTypeInternal (Type *Ty, ArrayRef< IndexTy > IdxList)
static ValuecreatePlaceholderForShuffleVector (Value *V)
static bool isSingleSourceMaskImpl (ArrayRef< int > Mask, int NumOpElts)
static bool isIdentityMaskImpl (ArrayRef< int > Mask, int NumOpElts)
static bool isReplicationMaskWithParams (ArrayRef< int > Mask, int ReplicationFactor, int VF)
static int matchShuffleAsBitRotate (ArrayRef< int > Mask, int NumSubElts)
 Try to lower a vector shuffle as a bit rotation.
static bool hasNonZeroFPOperands (const CmpInst *Cmp)
static bool isImpliedTrueByMatchingCmp (CmpPredicate Pred1, CmpPredicate Pred2)
static bool isImpliedFalseByMatchingCmp (CmpPredicate Pred1, CmpPredicate Pred2)

Variables

static cl::opt< boolDisableI2pP2iOpt ("disable-i2p-p2i-opt", cl::init(false), cl::desc("Disables inttoptr/ptrtoint roundtrip optimization"))

Function Documentation

◆ computeAllocaDefaultAlign()

◆ computeLoadStoreDefaultAlign()

◆ createPlaceholderForShuffleVector()

Value * createPlaceholderForShuffleVector ( Value * V)
static

◆ getAISize()

Value * getAISize ( LLVMContext & Context,
Value * Amt )
static

◆ getIndexedTypeInternal()

◆ hasNonZeroFPOperands()

bool hasNonZeroFPOperands ( const CmpInst * Cmp)
static

◆ isIdentityMaskImpl()

◆ isImpliedFalseByMatchingCmp()

bool isImpliedFalseByMatchingCmp ( CmpPredicate Pred1,
CmpPredicate Pred2 )
static

◆ isImpliedTrueByMatchingCmp()

◆ isReplicationMaskWithParams()

bool isReplicationMaskWithParams ( ArrayRef< int > Mask,
int ReplicationFactor,
int VF )
static

◆ isSingleSourceMaskImpl()

bool isSingleSourceMaskImpl ( ArrayRef< int > Mask,
int NumOpElts )
static

◆ matchShuffleAsBitRotate()

int matchShuffleAsBitRotate ( ArrayRef< int > Mask,
int NumSubElts )
static

Try to lower a vector shuffle as a bit rotation.

Look for a repeated rotation pattern in each sub group. Returns an element-wise left bit rotation amount or -1 if failed.

Definition at line 2473 of file Instructions.cpp.

References assert(), and llvm::Offset.

Referenced by llvm::ShuffleVectorInst::isBitRotateMask(), lowerShuffleAsBitRotate(), and matchUnaryPermuteShuffle().

Variable Documentation

◆ DisableI2pP2iOpt

cl::opt< bool > DisableI2pP2iOpt("disable-i2p-p2i-opt", cl::init(false), cl::desc("Disables inttoptr/ptrtoint roundtrip optimization")) ( "disable-i2p-p2i-opt" ,
cl::init(false) ,
cl::desc("Disables inttoptr/ptrtoint roundtrip optimization")  )
static