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. |
| 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()
◆ getOutputSegmentMap()
◆ isIdentity()
◆ isLowHalfOnly()
◆ isUndef()
◆ packSegmentMask()
◆ splitMask()