LLVM 20.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 libcall is available. | |
static bool | useSinCos (SDNode *Node) |
Only issue sincos libcall if both sin and cos are needed. | |
static MVT | getPromotedVectorElementType (const TargetLowering &TLI, MVT EltVT, MVT NewEltVT) |
#define DEBUG_TYPE "legalizedag" |
Definition at line 58 of file LegalizeDAG.cpp.
|
static |
Definition at line 1852 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::SmallVectorBase< Size_T >::size(), and llvm::SmallVectorImpl< T >::swap().
|
static |
Definition at line 5118 of file LegalizeDAG.cpp.
References assert(), llvm::MVT::getSizeInBits(), llvm::MVT::getVectorVT(), and llvm::TargetLoweringBase::isTypeLegal().
|
static |
Definition at line 264 of file LegalizeDAG.cpp.
References llvm::LocationSize::beforeOrAfterPointer(), llvm::MachinePointerInfo::getFixedStack(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineMemOperand::MOStore, and llvm::LocationSize::precise().
|
static |
Return true if sincos libcall is available.
Definition at line 2323 of file LegalizeDAG.cpp.
References llvm::TargetLoweringBase::getLibcallName(), and llvm_unreachable.
Only issue sincos libcall if both sin and cos are needed.
Definition at line 2337 of file LegalizeDAG.cpp.
References llvm::ISD::FCOS, llvm::ISD::FSIN, llvm::ISD::FSINCOS, llvm::SDValue::getNode(), and llvm::SDNode::uses().