|
LLVM
4.0.0
|
#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/Triple.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineJumpTableInfo.h"#include "llvm/CodeGen/SelectionDAG.h"#include "llvm/CodeGen/SelectionDAGNodes.h"#include "llvm/IR/CallingConv.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DebugInfo.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/Function.h"#include "llvm/IR/LLVMContext.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/TargetFrameLowering.h"#include "llvm/Target/TargetLowering.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Target/TargetSubtargetInfo.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "legalizedag" |
Functions | |
| 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. More... | |
| static bool | canCombineSinCosLibcall (SDNode *Node, const TargetLowering &TLI, const TargetMachine &TM) |
| Return true if sincos libcall is available and can be used to combine sin and cos. More... | |
| static bool | useSinCos (SDNode *Node) |
| Only issue sincos libcall if both sin and cos are needed. More... | |
| static MVT | getPromotedVectorElementType (const TargetLowering &TLI, MVT EltVT, MVT NewEltVT) |
| #define DEBUG_TYPE "legalizedag" |
Definition at line 40 of file LegalizeDAG.cpp.
|
static |
Return true if sincos libcall is available and can be used to combine sin and cos.
Definition at line 2131 of file LegalizeDAG.cpp.
References llvm::TargetMachine::getTargetTriple(), llvm::Triple::isGNUEnvironment(), isSinCosLibcallAvailable(), llvm::TargetMachine::Options, and llvm::TargetOptions::UnsafeFPMath.
|
static |
Definition at line 1692 of file LegalizeDAG.cpp.
References assert(), llvm::SmallVectorTemplateCommon< T >::back(), llvm::SmallVectorImpl< T >::clear(), llvm::SelectionDAG::getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getUNDEF(), llvm::SDNode::getValueType(), llvm::SelectionDAG::getVectorShuffle(), i, llvm::TargetLoweringBase::isShuffleMaskLegal(), llvm::SDValue::isUndef(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::ISD::SCALAR_TO_VECTOR, llvm::SmallVectorTemplateCommon< T >::size(), and llvm::SmallVectorImpl< T >::swap().
|
static |
Definition at line 4066 of file LegalizeDAG.cpp.
References assert(), llvm::MVT::getSizeInBits(), llvm::MVT::getVectorVT(), and llvm::TargetLoweringBase::isTypeLegal().
|
static |
Return true if sincos libcall is available.
Definition at line 2116 of file LegalizeDAG.cpp.
References llvm::MVT::f128, llvm::MVT::f32, llvm::MVT::f64, llvm::MVT::f80, llvm::TargetLoweringBase::getLibcallName(), llvm::SDNode::getSimpleValueType(), llvm_unreachable, llvm::MVT::ppcf128, llvm::MVT::SimpleTy, llvm::RTLIB::SINCOS_F128, llvm::RTLIB::SINCOS_F32, llvm::RTLIB::SINCOS_F64, llvm::RTLIB::SINCOS_F80, and llvm::RTLIB::SINCOS_PPCF128.
Referenced by canCombineSinCosLibcall().
Only issue sincos libcall if both sin and cos are needed.
Definition at line 2143 of file LegalizeDAG.cpp.
References llvm::ISD::FCOS, llvm::ISD::FSIN, llvm::ISD::FSINCOS, llvm::SDValue::getNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
1.8.6