#include #include #include #include #include #include #include #include #include ">

LLVM: lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp File Reference (original) (raw)

#include "[HexagonISelDAGToDAG.h](HexagonISelDAGToDAG%5F8h%5Fsource.html)"
#include "[HexagonISelLowering.h](HexagonISelLowering%5F8h%5Fsource.html)"
#include "[llvm/ADT/BitVector.h](BitVector%5F8h%5Fsource.html)"
#include "[llvm/ADT/SetVector.h](SetVector%5F8h%5Fsource.html)"
#include "[llvm/CodeGen/SelectionDAGISel.h](SelectionDAGISel%5F8h%5Fsource.html)"
#include "[llvm/IR/Intrinsics.h](Intrinsics%5F8h%5Fsource.html)"
#include "llvm/IR/IntrinsicsHexagon.h"
#include "[llvm/Support/Debug.h](Support%5F2Debug%5F8h%5Fsource.html)"
#include "[llvm/Support/MathExtras.h](MathExtras%5F8h%5Fsource.html)"
#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.

Namespaces
namespace shuffles
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
Macros
#define DEBUG_TYPE "hexagon-isel"
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)

DEBUG_TYPE

#define DEBUG_TYPE "hexagon-isel"

findStrip()

getHexagonLowering()

getHexagonSubtarget()

getInputSegmentList()

getOutputSegmentMap()

isIdentity()

isLowHalfOnly()

isUndef()

packSegmentMask()

splitMask()