LLVM 20.0.0git
|
#include "HexagonISelDAGToDAG.h"
#include "HexagonISelLowering.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsHexagon.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include <algorithm>
#include <cmath>
#include <deque>
#include <functional>
#include <map>
#include <optional>
#include <set>
#include <unordered_map>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
struct | llvm::HvxSelector |
struct | std::hash< SDValue > |
Namespaces | |
namespace | shuffles |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
#define | DEBUG_TYPE "hexagon-isel" |
Typedefs | |
using | shuffles::MaskT = SmallVector< int, 128 > |
Functions | |
ArrayRef< int > | shuffles::lo (ArrayRef< int > Vuu) |
ArrayRef< int > | shuffles::hi (ArrayRef< int > Vuu) |
MaskT | shuffles::vshuffvdd (ArrayRef< int > Vu, ArrayRef< int > Vv, unsigned Rt) |
MaskT | shuffles::vdealvdd (ArrayRef< int > Vu, ArrayRef< int > Vv, unsigned Rt) |
MaskT | shuffles::vpack (ArrayRef< int > Vu, ArrayRef< int > Vv, unsigned Size, bool TakeOdd) |
MaskT | shuffles::vshuff (ArrayRef< int > Vu, ArrayRef< int > Vv, unsigned Size, bool TakeOdd) |
MaskT | shuffles::vdeal (ArrayRef< int > Vu, ArrayRef< int > Vv, unsigned Size, bool TakeOdd) |
MaskT | shuffles::vdealb4w (ArrayRef< int > Vu, ArrayRef< int > Vv) |
template<typename ShuffFunc , typename... OptArgs> | |
auto | shuffles::mask (ShuffFunc S, unsigned Length, OptArgs... args) -> MaskT |
static const HexagonTargetLowering & | getHexagonLowering (SelectionDAG &G) |
static const HexagonSubtarget & | getHexagonSubtarget (SelectionDAG &G) |
static void | splitMask (ArrayRef< int > Mask, MutableArrayRef< int > MaskL, MutableArrayRef< int > MaskR) |
static std::pair< int, unsigned > | findStrip (ArrayRef< int > A, int Inc, unsigned MaxLen) |
static bool | isUndef (ArrayRef< int > Mask) |
static bool | isIdentity (ArrayRef< int > Mask) |
static bool | isLowHalfOnly (ArrayRef< int > Mask) |
static SmallVector< unsigned, 4 > | getInputSegmentList (ShuffleMask SM, unsigned SegLen) |
static SmallVector< unsigned, 4 > | getOutputSegmentMap (ShuffleMask SM, unsigned SegLen) |
static void | packSegmentMask (ArrayRef< int > Mask, ArrayRef< unsigned > OutSegMap, unsigned SegLen, MutableArrayRef< int > PackedMask) |
#define DEBUG_TYPE "hexagon-isel" |
Definition at line 30 of file HexagonISelDAGToDAGHVX.cpp.
|
static |
Definition at line 911 of file HexagonISelDAGToDAGHVX.cpp.
References G.
|
static |
Definition at line 914 of file HexagonISelDAGToDAGHVX.cpp.
References G.
|
static |
Definition at line 1051 of file HexagonISelDAGToDAGHVX.cpp.
References llvm::alignTo(), assert(), B, llvm::isPowerOf2_32(), llvm::Log2_32(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::BitVector::set(), and llvm::BitVector::set_bits().
|
static |
Definition at line 1071 of file HexagonISelDAGToDAGHVX.cpp.
References assert(), G, I, Idx, and llvm::SmallVectorBase< Size_T >::size().
Definition at line 1035 of file HexagonISelDAGToDAGHVX.cpp.
References I.
Definition at line 1044 of file HexagonISelDAGToDAGHVX.cpp.
References llvm::all_of(), and assert().
Definition at line 1028 of file HexagonISelDAGToDAGHVX.cpp.
References Idx.
Referenced by combineConcatVectorOfShuffleAndItsOperands(), combineX86ShuffleChain(), CompactSwizzlableVector(), EltsFromConsecutiveLoads(), llvm::finalizeBundle(), llvm::ConstantStruct::get(), getGeneralPermuteNode(), getKnownUndefForVectorBinop(), llvm::HexagonInstrInfo::getPredReg(), llvm::SIInstrInfo::insertBranch(), llvm::HexagonInstrInfo::insertBranch(), LowerShift(), lowerV4X128Shuffle(), resolveTargetShuffleInputsAndMask(), and llvm::TargetLowering::SimplifyDemandedVectorElts().
|
static |
Definition at line 1106 of file HexagonISelDAGToDAGHVX.cpp.
References assert(), I, llvm::Log2_32(), llvm::SmallVectorImpl< T >::resize(), llvm::ArrayRef< T >::size(), and llvm::SmallVectorBase< Size_T >::size().
|
static |
Definition at line 997 of file HexagonISelDAGToDAGHVX.cpp.
References assert(), I, and llvm::ArrayRef< T >::size().