LLVM  6.0.0svn
Macros | Functions | Variables
HexagonSubtarget.cpp File Reference
#include "Hexagon.h"
#include "HexagonInstrInfo.h"
#include "HexagonRegisterInfo.h"
#include "HexagonSubtarget.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "MCTargetDesc/HexagonMCTargetDesc.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/CodeGen/ScheduleDAGInstrs.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include <algorithm>
#include <cassert>
#include <map>
#include "HexagonGenSubtargetInfo.inc"
Include dependency graph for HexagonSubtarget.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "hexagon-subtarget"
 
#define GET_SUBTARGETINFO_CTOR
 
#define GET_SUBTARGETINFO_TARGET_DESC
 

Functions

static SUnitgetZeroLatency (SUnit *N, SmallVector< SDep, 4 > &Deps)
 If the SUnit has a zero latency edge, return the other SUnit. More...
 

Variables

static cl::opt< boolEnableMemOps ("enable-hexagon-memops", cl::Hidden, cl::ZeroOrMore, cl::ValueDisallowed, cl::init(true), cl::desc("Generate V4 MEMOP in code generation for Hexagon target"))
 
static cl::opt< boolDisableMemOps ("disable-hexagon-memops", cl::Hidden, cl::ZeroOrMore, cl::ValueDisallowed, cl::init(false), cl::desc("Do not generate V4 MEMOP in code generation for Hexagon target"))
 
static cl::opt< boolEnableIEEERndNear ("enable-hexagon-ieee-rnd-near", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Generate non-chopped conversion from fp to int."))
 
static cl::opt< boolEnableBSBSched ("enable-bsb-sched", cl::Hidden, cl::ZeroOrMore, cl::init(true))
 
static cl::opt< boolEnableTCLatencySched ("enable-tc-latency-sched", cl::Hidden, cl::ZeroOrMore, cl::init(false))
 
static cl::opt< boolEnableDotCurSched ("enable-cur-sched", cl::Hidden, cl::ZeroOrMore, cl::init(true), cl::desc("Enable the scheduler to generate .cur"))
 
static cl::opt< boolEnableVecFrwdSched ("enable-evec-frwd-sched", cl::Hidden, cl::ZeroOrMore, cl::init(true))
 
static cl::opt< boolDisableHexagonMISched ("disable-hexagon-misched", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Disable Hexagon MI Scheduling"))
 
static cl::opt< boolEnableSubregLiveness ("hexagon-subreg-liveness", cl::Hidden, cl::ZeroOrMore, cl::init(true), cl::desc("Enable subregister liveness tracking for Hexagon"))
 
static cl::opt< boolOverrideLongCalls ("hexagon-long-calls", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("If present, forces/disables the use of long calls"))
 
static cl::opt< boolEnablePredicatedCalls ("hexagon-pred-calls", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Consider calls to be predicable"))
 
static cl::opt< boolSchedPredsCloser ("sched-preds-closer", cl::Hidden, cl::ZeroOrMore, cl::init(true))
 
static cl::opt< boolSchedRetvalOptimization ("sched-retval-optimization", cl::Hidden, cl::ZeroOrMore, cl::init(true))
 
static cl::opt< boolEnableCheckBankConflict ("hexagon-check-bank-conflict", cl::Hidden, cl::ZeroOrMore, cl::init(true), cl::desc("Enable checking for cache bank conflicts"))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "hexagon-subtarget"

Definition at line 35 of file HexagonSubtarget.cpp.

◆ GET_SUBTARGETINFO_CTOR

#define GET_SUBTARGETINFO_CTOR

Definition at line 37 of file HexagonSubtarget.cpp.

◆ GET_SUBTARGETINFO_TARGET_DESC

#define GET_SUBTARGETINFO_TARGET_DESC

Definition at line 38 of file HexagonSubtarget.cpp.

Function Documentation

◆ getZeroLatency()

static SUnit* getZeroLatency ( SUnit N,
SmallVector< SDep, 4 > &  Deps 
)
static

Variable Documentation

◆ DisableHexagonMISched

cl::opt<bool> DisableHexagonMISched("disable-hexagon-misched", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Disable Hexagon MI Scheduling"))
static

◆ DisableMemOps

cl::opt<bool> DisableMemOps("disable-hexagon-memops", cl::Hidden, cl::ZeroOrMore, cl::ValueDisallowed, cl::init(false), cl::desc("Do not generate V4 MEMOP in code generation for Hexagon target"))
static

◆ EnableBSBSched

cl::opt<bool> EnableBSBSched("enable-bsb-sched", cl::Hidden, cl::ZeroOrMore, cl::init(true))
static

◆ EnableCheckBankConflict

cl::opt<bool> EnableCheckBankConflict("hexagon-check-bank-conflict", cl::Hidden, cl::ZeroOrMore, cl::init(true), cl::desc("Enable checking for cache bank conflicts"))
static

◆ EnableDotCurSched

cl::opt<bool> EnableDotCurSched("enable-cur-sched", cl::Hidden, cl::ZeroOrMore, cl::init(true), cl::desc("Enable the scheduler to generate .cur"))
static

◆ EnableIEEERndNear

cl::opt<bool> EnableIEEERndNear("enable-hexagon-ieee-rnd-near", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Generate non-chopped conversion from fp to int."))
static

◆ EnableMemOps

cl::opt<bool> EnableMemOps("enable-hexagon-memops", cl::Hidden, cl::ZeroOrMore, cl::ValueDisallowed, cl::init(true), cl::desc("Generate V4 MEMOP in code generation for Hexagon target"))
static

◆ EnablePredicatedCalls

cl::opt<bool> EnablePredicatedCalls("hexagon-pred-calls", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("Consider calls to be predicable"))
static

◆ EnableSubregLiveness

cl::opt<bool> EnableSubregLiveness("hexagon-subreg-liveness", cl::Hidden, cl::ZeroOrMore, cl::init(true), cl::desc("Enable subregister liveness tracking for Hexagon"))
static

◆ EnableTCLatencySched

cl::opt<bool> EnableTCLatencySched("enable-tc-latency-sched", cl::Hidden, cl::ZeroOrMore, cl::init(false))
static

◆ EnableVecFrwdSched

cl::opt<bool> EnableVecFrwdSched("enable-evec-frwd-sched", cl::Hidden, cl::ZeroOrMore, cl::init(true))
static

◆ OverrideLongCalls

cl::opt<bool> OverrideLongCalls("hexagon-long-calls", cl::Hidden, cl::ZeroOrMore, cl::init(false), cl::desc("If present, forces/disables the use of long calls"))
static

◆ SchedPredsCloser

cl::opt<bool> SchedPredsCloser("sched-preds-closer", cl::Hidden, cl::ZeroOrMore, cl::init(true))
static

◆ SchedRetvalOptimization

cl::opt<bool> SchedRetvalOptimization("sched-retval-optimization", cl::Hidden, cl::ZeroOrMore, cl::init(true))
static