14#ifndef LLVM_LIB_TARGET_ARM_LATENCYMUTATIONS_H
15#define LLVM_LIB_TARGET_ARM_LATENCYMUTATIONS_H
23class ARMBaseInstrInfo;
35 virtual void modifyBypasses(
SUnit &) = 0;
51std::unique_ptr<ScheduleDAGMutation>
Post-process the DAG to create cluster edges between instrs that may be fused by the processor into a...
bool memoryRAWHazard(SUnit &ISU, SDep &Dep, unsigned latency)
static void setBidirLatencies(SUnit &SrcSU, SDep &SrcDep, unsigned latency)
ARMOverrideBypasses(const ARMBaseInstrInfo *t, AAResults *a)
static bool zeroOutputDependences(SUnit &ISU, SDep &Dep)
void apply(ScheduleDAGInstrs *DAGInstrs) override
unsigned makeBundleAssumptions(SUnit &ISU, SDep &Dep)
const ARMBaseInstrInfo * TII
Scheduling unit. This is a node in the scheduling DAG.
A ScheduleDAG for scheduling lists of MachineInstr.
Mutate the DAG as a postpass after normal DAG building.
This is an optimization pass for GlobalISel generic memory operations.
std::unique_ptr< ScheduleDAGMutation > createARMLatencyMutations(const ARMSubtarget &ST, AAResults *AA)