#include "LoongArchISelDAGToDAG.h"
#include "LoongArchISelLowering.h"
#include "MCTargetDesc/LoongArchMCTargetDesc.h"
#include "MCTargetDesc/LoongArchMatInt.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
usingnamespacellvm;
#define DEBUG_TYPE …
#define PASS_NAME …
char LoongArchDAGToDAGISelLegacy::ID;
LoongArchDAGToDAGISelLegacy::LoongArchDAGToDAGISelLegacy(
LoongArchTargetMachine &TM)
: … { … }
INITIALIZE_PASS(…)
void LoongArchDAGToDAGISel::Select(SDNode *Node) { … }
bool LoongArchDAGToDAGISel::SelectInlineAsmMemoryOperand(
const SDValue &Op, InlineAsm::ConstraintCode ConstraintID,
std::vector<SDValue> &OutOps) { … }
bool LoongArchDAGToDAGISel::SelectBaseAddr(SDValue Addr, SDValue &Base) { … }
bool LoongArchDAGToDAGISel::SelectAddrConstant(SDValue Addr, SDValue &Base,
SDValue &Offset) { … }
bool LoongArchDAGToDAGISel::selectNonFIBaseAddr(SDValue Addr, SDValue &Base) { … }
bool LoongArchDAGToDAGISel::selectShiftMask(SDValue N, unsigned ShiftWidth,
SDValue &ShAmt) { … }
bool LoongArchDAGToDAGISel::selectSExti32(SDValue N, SDValue &Val) { … }
bool LoongArchDAGToDAGISel::selectZExti32(SDValue N, SDValue &Val) { … }
bool LoongArchDAGToDAGISel::selectVSplat(SDNode *N, APInt &Imm,
unsigned MinSizeInBits) const { … }
template <unsigned ImmBitSize, bool IsSigned>
bool LoongArchDAGToDAGISel::selectVSplatImm(SDValue N, SDValue &SplatVal) { … }
bool LoongArchDAGToDAGISel::selectVSplatUimmInvPow2(SDValue N,
SDValue &SplatImm) const { … }
bool LoongArchDAGToDAGISel::selectVSplatUimmPow2(SDValue N,
SDValue &SplatImm) const { … }
FunctionPass *llvm::createLoongArchISelDag(LoongArchTargetMachine &TM) { … }