#include "llvm/CodeGen/MachineInstrBundle.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/PassRegistry.h"
#include <utility>
usingnamespacellvm;
namespace {
class UnpackMachineBundles : public MachineFunctionPass { … };
}
char UnpackMachineBundles::ID = …;
char &llvm::UnpackMachineBundlesID = …;
INITIALIZE_PASS(…)
bool UnpackMachineBundles::runOnMachineFunction(MachineFunction &MF) { … }
FunctionPass *
llvm::createUnpackMachineBundles(
std::function<bool(const MachineFunction &)> Ftor) { … }
namespace {
class FinalizeMachineBundles : public MachineFunctionPass { … };
}
char FinalizeMachineBundles::ID = …;
char &llvm::FinalizeMachineBundlesID = …;
INITIALIZE_PASS(…)
bool FinalizeMachineBundles::runOnMachineFunction(MachineFunction &MF) { … }
static DebugLoc getDebugLoc(MachineBasicBlock::instr_iterator FirstMI,
MachineBasicBlock::instr_iterator LastMI) { … }
void llvm::finalizeBundle(MachineBasicBlock &MBB,
MachineBasicBlock::instr_iterator FirstMI,
MachineBasicBlock::instr_iterator LastMI) { … }
MachineBasicBlock::instr_iterator
llvm::finalizeBundle(MachineBasicBlock &MBB,
MachineBasicBlock::instr_iterator FirstMI) { … }
bool llvm::finalizeBundles(MachineFunction &MF) { … }
VirtRegInfo llvm::AnalyzeVirtRegInBundle(
MachineInstr &MI, Register Reg,
SmallVectorImpl<std::pair<MachineInstr *, unsigned>> *Ops) { … }
std::pair<LaneBitmask, LaneBitmask>
llvm::AnalyzeVirtRegLanesInBundle(const MachineInstr &MI, Register Reg,
const MachineRegisterInfo &MRI,
const TargetRegisterInfo &TRI) { … }
PhysRegInfo llvm::AnalyzePhysRegInBundle(const MachineInstr &MI, Register Reg,
const TargetRegisterInfo *TRI) { … }