LLVM
8.0.1
|
#include "X86.h"
#include "X86InstrInfo.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/EdgeBundles.h"
#include "llvm/CodeGen/LivePhysRegs.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include <algorithm>
#include <bitset>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "x86-codegen" |
#define | ASSERT_SORTED(TABLE) |
Functions | |
STATISTIC (NumFXCH, "Number of fxch instructions inserted") | |
STATISTIC (NumFP, "Number of floating point instructions") | |
static unsigned | getFPReg (const MachineOperand &MO) |
getFPReg - Return the X86::FPx register number for the specified operand. More... | |
static int | Lookup (ArrayRef< TableEntry > Table, unsigned Opcode) |
static unsigned | getConcreteOpcode (unsigned Opcode) |
Variables | |
static const TableEntry | OpcodeTable [] |
static const TableEntry | PopTable [] |
static const TableEntry | ForwardST0Table [] |
static const TableEntry | ReverseST0Table [] |
static const TableEntry | ForwardSTiTable [] |
static const TableEntry | ReverseSTiTable [] |
#define ASSERT_SORTED | ( | TABLE | ) |
Definition at line 603 of file X86FloatingPoint.cpp.
Referenced by getConcreteOpcode().
#define DEBUG_TYPE "x86-codegen" |
Definition at line 52 of file X86FloatingPoint.cpp.
Definition at line 784 of file X86FloatingPoint.cpp.
References assert(), ASSERT_SORTED, and Lookup().
|
static |
getFPReg - Return the X86::FPx register number for the specified operand.
For example, this returns 3 for X86::FP3.
Definition at line 309 of file X86FloatingPoint.cpp.
References assert(), llvm::MachineBasicBlock::begin(), llvm::SmallVectorImpl< T >::clear(), llvm::X86II::CompareFP, llvm::X86II::CondMovFP, llvm::dbgs(), llvm::depth_first_ext(), llvm::SmallVectorBase::empty(), llvm::MachineBasicBlock::end(), llvm::X86II::FPTypeMask, llvm::MachineFunction::front(), llvm::EdgeBundles::getBundle(), llvm::Function::getCallingConv(), llvm::MachineInstr::getDesc(), llvm::MachineFunction::getFunction(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineBasicBlock::getNumber(), llvm::EdgeBundles::getNumBundles(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), I, llvm::df_iterator_default_set< NodeRef, SmallSize >::insert(), llvm::MachineInstr::isCall(), llvm::MachineInstr::isCopy(), llvm::MachineOperand::isDead(), llvm::MachineInstr::isImplicitDef(), llvm::MachineInstr::isInlineAsm(), llvm::MachineOperand::isReg(), LLVM_DEBUG, llvm_unreachable, MRI, llvm::X86II::NotFP, llvm::X86II::OneArgFP, llvm::X86II::OneArgFPRW, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::MachineRegisterInfo::reg_nodbg_empty(), llvm::SmallVectorImpl< T >::resize(), llvm::SmallVectorBase::size(), llvm::SmallPtrSetImplBase::size(), llvm::MachineFunction::size(), llvm::X86II::SpecialFP, llvm::MCInstrDesc::TSFlags, llvm::X86II::TwoArgFP, llvm::CallingConv::X86_RegCall, and llvm::X86II::ZeroArgFP.
Definition at line 593 of file X86FloatingPoint.cpp.
References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), and llvm::lower_bound().
Referenced by llvm::bfi_detail::IrreducibleGraph::addEdge(), llvm::orc::createSymbolResolver(), llvm::codeview::detail::GuidAdapter::format(), getConcreteOpcode(), llvm::ConstantUniqueMap< llvm::ConstantExpr >::getOrCreate(), llvm::DenseMapBase< DenseMap< const llvm::SCEV *, const llvm::SCEV *, DenseMapInfo< const llvm::SCEV *>, llvm::detail::DenseMapPair< const llvm::SCEV *, const llvm::SCEV *> >, const llvm::SCEV *, const llvm::SCEV *, DenseMapInfo< const llvm::SCEV *>, llvm::detail::DenseMapPair< const llvm::SCEV *, const llvm::SCEV *> >::getTombstoneKey(), llvm::bfi_detail::IrreducibleGraph::indexNodes(), llvm::bfi_detail::IrreducibleGraph::initialize(), llvm::orc::LambdaSymbolResolver< GetResponsibilitySetFn, LookupFn >::lookup(), rebasedHexDigitToNumber(), and llvm::ConstantUniqueMap< llvm::ConstantExpr >::replaceOperandsInPlace().
STATISTIC | ( | NumFXCH | , |
"Number of fxch instructions inserted" | |||
) |
STATISTIC | ( | NumFP | , |
"Number of floating point instructions" | |||
) |
|
static |
Definition at line 1201 of file X86FloatingPoint.cpp.
|
static |
Definition at line 1233 of file X86FloatingPoint.cpp.
|
static |
Definition at line 622 of file X86FloatingPoint.cpp.
|
static |
Definition at line 798 of file X86FloatingPoint.cpp.
|
static |
Definition at line 1217 of file X86FloatingPoint.cpp.
|
static |
Definition at line 1249 of file X86FloatingPoint.cpp.