LLVM API Documentation
#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/SelectionDAGISel.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/GlobalAlias.h"#include "llvm/IR/GlobalVariable.h"#include "llvm/IR/Intrinsics.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/raw_ostream.h"#include <algorithm>#include "XCoreGenCallingConv.inc"
Go to the source code of this file.
Defines | |
| #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) |
| static SDValue | LowerCallResult (SDValue Chain, SDValue InFlag, const SmallVectorImpl< CCValAssign > &RVLocs, SDLoc dl, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals) |
| 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 42 of file XCoreISelLowering.cpp.
| static bool isADDADDMUL | ( | SDValue | Op, |
| SDValue & | Mul0, | ||
| SDValue & | Mul1, | ||
| SDValue & | Addend0, | ||
| SDValue & | Addend1, | ||
| bool | requireIntermediatesHaveOneUse | ||
| ) | [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 605 of file XCoreISelLowering.cpp.
References llvm::ISD::ADD, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::hasOneUse(), and llvm::ISD::MUL.
Definition at line 1902 of file XCoreISelLowering.cpp.
Referenced by isImmUs2(), isImmUs4(), and llvm::XCoreTargetLowering::isLegalAddressingMode().
Definition at line 1907 of file XCoreISelLowering.cpp.
References isImmUs().
Referenced by llvm::XCoreTargetLowering::isLegalAddressingMode().
Definition at line 1912 of file XCoreISelLowering.cpp.
References isImmUs().
Referenced by llvm::XCoreTargetLowering::isLegalAddressingMode().
| static bool IsSmallObject | ( | const GlobalValue * | GV, |
| const XCoreTargetLowering & | XTL | ||
| ) | [static] |
Definition at line 273 of file XCoreISelLowering.cpp.
References llvm::CodeModelLargeSize, llvm::TargetMachine::getCodeModel(), llvm::TargetLoweringBase::getDataLayout(), llvm::Type::getPointerElementType(), llvm::TargetLoweringBase::getTargetMachine(), llvm::GlobalValue::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::Type::isSized(), and llvm::CodeModel::Small.
| static bool isWordAligned | ( | SDValue | Value, |
| SelectionDAG & | DAG | ||
| ) | [static] |
Definition at line 415 of file XCoreISelLowering.cpp.
References llvm::SelectionDAG::computeKnownBits(), and llvm::APInt::countTrailingOnes().
| static SDValue LowerCallResult | ( | SDValue | Chain, |
| SDValue | InFlag, | ||
| const SmallVectorImpl< CCValAssign > & | RVLocs, | ||
| SDLoc | dl, | ||
| SelectionDAG & | DAG, | ||
| SmallVectorImpl< SDValue > & | InVals | ||
| ) | [static] |
LowerCallResult - Lower the result values of a call into the appropriate copies out of appropriate physical registers / memory locations.
Definition at line 1070 of file XCoreISelLowering.cpp.
References llvm::SmallVectorBase::empty(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getCopyFromReg(), llvm::CCValAssign::getLocMemOffset(), llvm::CCValAssign::getLocReg(), llvm::SelectionDAG::getNode(), llvm::SDValue::getValue(), llvm::CCValAssign::getValVT(), llvm::SelectionDAG::getVTList(), llvm::MVT::i32, llvm::CCValAssign::isMemLoc(), llvm::CCValAssign::isRegLoc(), llvm::XCoreISD::LDWSP, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorTemplateCommon< T >::size(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::ISD::TokenFactor.