LLVM  6.0.0svn
Namespaces | Macros | Functions | Variables
HexagonSplitDouble.cpp File Reference
#include "HexagonInstrInfo.h"
#include "HexagonRegisterInfo.h"
#include "HexagonSubtarget.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <limits>
#include <map>
#include <set>
#include <utility>
#include <vector>
Include dependency graph for HexagonSplitDouble.cpp:

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "hsdr"
 

Functions

FunctionPassllvm::createHexagonSplitDoubleRegs ()
 
void llvm::initializeHexagonSplitDoubleRegsPass (PassRegistry &)
 
 INITIALIZE_PASS (HexagonSplitDoubleRegs, "hexagon-split-double", "Hexagon Split Double Registers", false, false) LLVM_DUMP_METHOD void HexagonSplitDoubleRegs
 
static int32_t profitImm (unsigned Lo, unsigned Hi)
 

Variables

static cl::opt< int > MaxHSDR ("max-hsdr", cl::Hidden, cl::init(-1), cl::desc("Maximum number of split partitions"))
 
static cl::opt< boolMemRefsFixed ("hsdr-no-mem", cl::Hidden, cl::init(true), cl::desc("Do not split loads or stores"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "hsdr"

Definition at line 10 of file HexagonSplitDouble.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( HexagonSplitDoubleRegs  ,
"hexagon-split-double"  ,
"Hexagon Split Double Registers"  ,
false  ,
false   
)

◆ profitImm()

static int32_t profitImm ( unsigned  Lo,
unsigned  Hi 
)
inlinestatic

Definition at line 307 of file HexagonSplitDouble.cpp.

References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstr::addMemOperand(), llvm::MachineInstr::addOperand(), llvm::MachineInstrBuilder::addReg(), llvm::HexagonInstrInfo::analyzeBranch(), llvm::HexagonInstrInfo::analyzeCompare(), assert(), B, llvm::BuildMI(), llvm::MachineOperand::CreateReg(), D, llvm::dbgs(), DEBUG, E, llvm::WebAssembly::End, llvm::MachineBasicBlock::erase(), F(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFunction(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::MachineOperand::getImm(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineFunction::getName(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::getRegState(), llvm::MachineOperand::getSubReg(), llvm::MachineFunction::getSubtarget(), llvm::MipsISD::Hi, I, llvm::MachineOperand::isImm(), llvm::MachineInstr::isPHI(), isReg(), llvm::MachineOperand::isReg(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::RegState::Kill, llvm::Left, LLVM_FALLTHROUGH, llvm_unreachable, llvm::MipsISD::Lo, llvm::SPII::Load, llvm::BitmaskEnumDetail::Mask(), MaxHSDR, llvm::MachineInstr::mayLoad(), llvm::MachineInstr::memoperands(), MRI, llvm::MachineInstr::operands(), P, llvm::HexagonII::PostInc, llvm::HexagonInstrInfo::PredOpcodeHasJMP_c(), llvm::PrintReg(), llvm::remove_if(), llvm::Right, Signed, llvm::SmallVectorTemplateCommon< T >::size(), Split(), llvm::ARM_MB::ST, llvm::X86II::TB, TII, and llvm::RISCVFenceField::W.

Variable Documentation

◆ MaxHSDR

cl::opt<int> MaxHSDR("max-hsdr", cl::Hidden, cl::init(-1), cl::desc("Maximum number of split partitions"))
static

Referenced by profitImm().

◆ MemRefsFixed

cl::opt<bool> MemRefsFixed("hsdr-no-mem", cl::Hidden, cl::init(true), cl::desc("Do not split loads or stores"))
static