LLVM 20.0.0git
|
#include "XCoreISelLowering.h"
#include "XCore.h"
#include "XCoreMachineFunctionInfo.h"
#include "XCoreSubtarget.h"
#include "XCoreTargetMachine.h"
#include "XCoreTargetObjectFile.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineJumpTableInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsXCore.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include "XCoreGenCallingConv.inc"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "xcore-lower" |
Functions | |
static bool | IsSmallObject (const GlobalValue *GV, const XCoreTargetLowering &XTL) |
static bool | isWordAligned (SDValue Value, SelectionDAG &DAG) |
static bool | isADDADDMUL (SDValue Op, SDValue &Mul0, SDValue &Mul1, SDValue &Addend0, SDValue &Addend1, bool requireIntermediatesHaveOneUse) |
isADDADDMUL - Return whether Op is in a form that is equivalent to add(add(mul(x,y),a),b). | |
static SDValue | LowerCallResult (SDValue Chain, SDValue InGlue, const SmallVectorImpl< CCValAssign > &RVLocs, const SDLoc &dl, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals) |
LowerCallResult - Lower the result values of a call into the appropriate copies out of appropriate physical registers / memory locations. | |
static bool | isImmUs (int64_t val) |
static bool | isImmUs2 (int64_t val) |
static bool | isImmUs4 (int64_t val) |
#define DEBUG_TYPE "xcore-lower" |
Definition at line 41 of file XCoreISelLowering.cpp.
|
static |
isADDADDMUL - Return whether Op is in a form that is equivalent to add(add(mul(x,y),a),b).
If requireIntermediatesHaveOneUse is true then each intermediate result in the calculation must also have a single use. If the Op is in the correct form the constituent parts are written to Mul0, Mul1, Addend0 and Addend1.
Definition at line 570 of file XCoreISelLowering.cpp.
References llvm::ISD::ADD, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::hasOneUse(), and llvm::ISD::MUL.
|
inlinestatic |
Definition at line 1768 of file XCoreISelLowering.cpp.
Referenced by llvm::XCoreRegisterInfo::eliminateFrameIndex(), isImmUs2(), isImmUs4(), and llvm::XCoreTargetLowering::isLegalAddressingMode().
|
inlinestatic |
Definition at line 1773 of file XCoreISelLowering.cpp.
References isImmUs().
Referenced by llvm::XCoreTargetLowering::isLegalAddressingMode().
|
inlinestatic |
Definition at line 1778 of file XCoreISelLowering.cpp.
References isImmUs().
Referenced by llvm::XCoreTargetLowering::isLegalAddressingMode().
|
static |
Definition at line 258 of file XCoreISelLowering.cpp.
References llvm::CodeModelLargeSize, DL, llvm::TargetMachine::getCodeModel(), llvm::GlobalValue::getDataLayout(), llvm::TargetLoweringBase::getTargetMachine(), llvm::GlobalValue::getValueType(), llvm::Type::isSized(), and llvm::CodeModel::Small.
|
static |
Definition at line 396 of file XCoreISelLowering.cpp.
References llvm::SelectionDAG::computeKnownBits(), and llvm::KnownBits::countMinTrailingZeros().
|
static |
LowerCallResult - Lower the result values of a call into the appropriate copies out of appropriate physical registers / memory locations.
Definition at line 970 of file XCoreISelLowering.cpp.
References assert(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getNode(), llvm::SDValue::getValue(), llvm::SelectionDAG::getVTList(), llvm::XCoreISD::LDWSP, load, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorBase< Size_T >::size(), and llvm::ISD::TokenFactor.