|
LLVM 22.0.0git
|
#include "llvm/ADT/APFloat.h"#include "llvm/ADT/APInt.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/FloatingPointMode.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/Analysis/ConstantFolding.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/CodeGen/ISDOpcodes.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineJumpTableInfo.h"#include "llvm/CodeGen/MachineMemOperand.h"#include "llvm/CodeGen/RuntimeLibcallUtil.h"#include "llvm/CodeGen/SelectionDAG.h"#include "llvm/CodeGen/SelectionDAGNodes.h"#include "llvm/CodeGen/TargetFrameLowering.h"#include "llvm/CodeGen/TargetLowering.h"#include "llvm/CodeGen/TargetSubtargetInfo.h"#include "llvm/CodeGen/ValueTypes.h"#include "llvm/CodeGenTypes/MachineValueType.h"#include "llvm/IR/CallingConv.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Function.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Type.h"#include "llvm/Support/Casting.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Target/TargetOptions.h"#include <cassert>#include <cstdint>#include <tuple>#include <utility>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "legalizedag" |
Functions | |
| static MachineMemOperand * | getStackAlignedMMO (SDValue StackPtr, MachineFunction &MF, bool isObjectScalable) |
| static bool | ExpandBVWithShuffles (SDNode *Node, SelectionDAG &DAG, const TargetLowering &TLI, SDValue &Res) |
| static bool | isSinCosLibcallAvailable (SDNode *Node, const TargetLowering &TLI) |
| Return true if sincos or __sincos_stret libcall is available. | |
| static bool | useSinCos (SDNode *Node) |
| Only issue sincos libcall if both sin and cos are needed. | |
| static bool | canUseFastMathLibcall (const SDNode *Node) |
| Return if we can use the FAST_* variant of a math libcall for the node. | |
| static MVT | getPromotedVectorElementType (const TargetLowering &TLI, MVT EltVT, MVT NewEltVT) |
| #define DEBUG_TYPE "legalizedag" |
Definition at line 58 of file LegalizeDAG.cpp.
Return if we can use the FAST_* variant of a math libcall for the node.
FIXME: This is just guessing, we probably should have unique specific sets flags required per libcall.
Definition at line 4532 of file LegalizeDAG.cpp.
|
static |
Definition at line 1902 of file LegalizeDAG.cpp.
References assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorImpl< T >::clear(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getUNDEF(), llvm::SelectionDAG::getVectorShuffle(), llvm::TargetLoweringBase::isShuffleMaskLegal(), Phase, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::ISD::SCALAR_TO_VECTOR, llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::SmallVectorImpl< T >::swap().
|
static |
Definition at line 5250 of file LegalizeDAG.cpp.
References assert(), llvm::MVT::getSizeInBits(), llvm::MVT::getVectorVT(), and llvm::TargetLoweringBase::isTypeLegal().
|
static |
Definition at line 274 of file LegalizeDAG.cpp.
References llvm::LocationSize::beforeOrAfterPointer(), llvm::cast(), llvm::MachinePointerInfo::getFixedStack(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineMemOperand::MOStore, and llvm::LocationSize::precise().
|
static |
Return true if sincos or __sincos_stret libcall is available.
Definition at line 2404 of file LegalizeDAG.cpp.
References llvm::TargetLoweringBase::getLibcallImpl(), llvm::RTLIB::getSINCOS(), and llvm::RTLIB::getSINCOS_STRET().
Only issue sincos libcall if both sin and cos are needed.
Definition at line 2411 of file LegalizeDAG.cpp.
References llvm::SDValue::getNode(), and llvm::SDNode::users().