40 unsigned FirstOpcode = FirstMI
42 :
static_cast<unsigned>(X86::INSTRUCTION_LIST_END);
43 unsigned SecondOpcode = SecondMI.
getOpcode();
45 switch (SecondOpcode) {
72 switch (FirstOpcode) {
124 case X86::ADD16ri8_DB:
125 case X86::ADD16ri_DB:
128 case X86::ADD16rr_DB:
131 case X86::ADD32ri8_DB:
132 case X86::ADD32ri_DB:
135 case X86::ADD32rr_DB:
137 case X86::ADD64ri32_DB:
139 case X86::ADD64ri8_DB:
142 case X86::ADD64rr_DB:
161 return FuseKind == FuseCmp || FuseKind == FuseInc;
170 return FuseKind == FuseInc;
171 case X86::INSTRUCTION_LIST_END:
178 std::unique_ptr<ScheduleDAGMutation>
This class represents lattice values for constants.
std::unique_ptr< ScheduleDAGMutation > createX86MacroFusionDAGMutation()
Note that you have to add: DAG.addMutation(createX86MacroFusionDAGMutation()); to X86PassConfig::crea...
const HexagonInstrInfo * TII
unsigned getOpcode() const
Returns the opcode of this MachineInstr.
TargetInstrInfo - Interface to description of machine instruction set.
static bool shouldScheduleAdjacent(const TargetInstrInfo &TII, const TargetSubtargetInfo &TSI, const MachineInstr *FirstMI, const MachineInstr &SecondMI)
Check if the instr pair, FirstMI and SecondMI, should be fused together.
std::unique_ptr< ScheduleDAGMutation > createBranchMacroFusionDAGMutation(ShouldSchedulePredTy shouldScheduleAdjacent)
Create a DAG scheduling mutation to pair branch instructions with one of their predecessors back to b...
TargetSubtargetInfo - Generic base class for all target subtargets.
Representation of each machine instruction.
bool hasMacroFusion() const