LLVM: lib/Target/ARM/ARMMacroFusion.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

18

19namespace llvm {

20

21

24

26

27 case ARM::AESMC :

28 return FirstMI == nullptr || FirstMI->getOpcode() == ARM::AESE;

29

30 case ARM::AESIMC:

31 return FirstMI == nullptr || FirstMI->getOpcode() == ARM::AESD;

32 }

33

34 return false;

35}

36

37

40

41 if ((FirstMI == nullptr || FirstMI->getOpcode() == ARM::MOVi16) &&

42 SecondMI.getOpcode() == ARM::MOVTi16)

43 return true;

44

45 return false;

46}

47

48

49

50

56

57 if (ST.hasFuseAES() && isAESPair(FirstMI, SecondMI))

58 return true;

59 if (ST.hasFuseLiterals() && isLiteralsPair(FirstMI, SecondMI))

60 return true;

61

62 return false;

63}

64

68

69}

const TargetInstrInfo & TII

Representation of each machine instruction.

unsigned getOpcode() const

Returns the opcode of this MachineInstr.

TargetInstrInfo - Interface to description of machine instruction set.

TargetSubtargetInfo - Generic base class for all target subtargets.

This is an optimization pass for GlobalISel generic memory operations.

static bool isAESPair(const MachineInstr *FirstMI, const MachineInstr &SecondMI)

Definition ARMMacroFusion.cpp:22

LLVM_ABI std::unique_ptr< ScheduleDAGMutation > createMacroFusionDAGMutation(ArrayRef< MacroFusionPredTy > Predicates, bool BranchOnly=false)

Create a DAG scheduling mutation to pair instructions back to back for instructions that benefit acco...

std::unique_ptr< ScheduleDAGMutation > createARMMacroFusionDAGMutation()

Note that you have to add: DAG.addMutation(createARMMacroFusionDAGMutation()); to ARMTargetMachine::c...

Definition ARMMacroFusion.cpp:65

static bool isLiteralsPair(const MachineInstr *FirstMI, const MachineInstr &SecondMI)

Definition ARMMacroFusion.cpp:38

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.

Definition ARMMacroFusion.cpp:51