|
LLVM 23.0.0git
|
#include "Target/SystemZ/SystemZInstrInfo.h"
Protected Member Functions | |
| MachineInstr * | commuteInstructionImpl (MachineInstr &MI, bool NewMI, unsigned CommuteOpIdx1, unsigned CommuteOpIdx2) const override |
| Commutes the operands in the given instruction by changing the operands order and/or changing the instruction's opcode and/or the immediate value operand. | |
Definition at line 180 of file SystemZInstrInfo.h.
|
explicit |
Definition at line 63 of file SystemZInstrInfo.cpp.
|
override |
Definition at line 420 of file SystemZInstrInfo.cpp.
References assert(), llvm::SystemZII::BranchNormal, llvm::SystemZ::CCMASK_ANY, Cond, llvm::MachineOperand::CreateImm(), getBranchInfo(), I, MBB, and TBB.
|
override |
Definition at line 582 of file SystemZInstrInfo.cpp.
|
override |
Definition at line 2333 of file SystemZInstrInfo.cpp.
References llvm::MachineMemOperand::getOffset(), llvm::MachineMemOperand::getPseudoValue(), llvm::MachineMemOperand::getSize(), llvm::LocationSize::getValue(), llvm::MachineMemOperand::getValue(), llvm::MachineInstr::hasOneMemOperand(), llvm::LocationSize::hasValue(), and llvm::MachineInstr::memoperands_begin().
|
override |
Definition at line 599 of file SystemZInstrInfo.cpp.
References llvm::MachineRegisterInfo::getRegClass(), and MBB.
|
overrideprotected |
Commutes the operands in the given instruction by changing the operands order and/or changing the instruction's opcode and/or the immediate value operand.
The arguments 'CommuteOpIdx1' and 'CommuteOpIdx2' specify the operands to be commuted.
Do not call this method for a non-commutable instruction or non-commutable operands. Even though the instruction is commutable, the method may still fail to commute the operands, null pointer is returned in such cases.
Definition at line 293 of file SystemZInstrInfo.cpp.
References llvm::TargetInstrInfo::commuteInstructionImpl(), and MI.
|
override |
Definition at line 1114 of file SystemZInstrInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::NumOps, llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), allOnes(), llvm::BuildMI(), llvm::get(), llvm::getKillRegState(), I, interpretAndImmediate(), isRxSBGMask(), MBB, MI, llvm::LiveVariables::replaceKillInstruction(), llvm::LiveIntervals::ReplaceMachineInstrInMaps(), and transferDeadCC().
|
override |
Definition at line 881 of file SystemZInstrInfo.cpp.
References llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::Register::asMCReg(), llvm::BuildMI(), contains(), copyPhysReg(), DL, llvm::get(), llvm::getKillRegState(), llvm::Implicit, llvm::ImplicitDefine, llvm::SystemZ::IPM_CC, llvm_unreachable, MBB, and MBBI.
Referenced by copyPhysReg().
|
override |
Definition at line 2392 of file SystemZInstrInfo.cpp.
|
override |
Definition at line 1641 of file SystemZInstrInfo.cpp.
References llvm::get(), llvm::SystemZ::isHighReg(), and MI.
|
override |
Definition at line 675 of file SystemZInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::MachineRegisterInfo::createVirtualRegister(), DefMI, llvm::get(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineRegisterInfo::hasOneNonDBGUse(), llvm::Register::isVirtual(), loadImmediate(), MBB, llvm::MachineRegisterInfo::use_nodbg_empty(), and UseMI.
|
override |
Definition at line 1226 of file SystemZInstrInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::NumOps, AbstractManglingParser< Derived, Alloc >::Ops, llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstr::addRegisterDead(), assert(), llvm::BuildMI(), contains(), llvm::LiveRange::createDeadDef(), llvm::MachineInstr::definesRegister(), llvm::MachineInstr::findRegisterDefOperand(), llvm::MCRegister::from(), llvm::get(), llvm::SystemZII::getAccessSize(), llvm::MachineFunction::getFrameInfo(), llvm::SlotIndexes::getInstructionIndex(), llvm::MachineFrameInfo::getObjectSize(), llvm::VirtRegMap::getPhys(), getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::SlotIndex::getRegSlot(), llvm::LiveIntervals::getRegUnit(), llvm::MachineMemOperand::getSize(), llvm::LiveIntervals::getSlotIndexes(), llvm::MachineFunction::getSubtarget(), llvm::SystemZ::getTargetMemOpcode(), llvm::LiveIntervals::getVNInfoAllocator(), llvm::SystemZII::HasIndex, I, llvm::MachineMemOperand::isAtomic(), llvm::isInt(), isSimpleBD12Move(), llvm::isUInt(), llvm::Register::isVirtual(), llvm::MachineMemOperand::isVolatile(), llvm::LiveRange::liveAt(), MI, llvm::MachineInstr::NoFPExcept, llvm::MachineInstr::NoSWrap, llvm::Offset, llvm::MCOI::OPERAND_REGISTER, llvm::MachineInstr::operands(), prepareCompareSwapOperands(), llvm::range_size(), Register, llvm::MachineOperand::setIsDead(), llvm::MachineRegisterInfo::setRegClass(), llvm::SystemZII::SimpleBDXLoad, llvm::SystemZII::SimpleBDXStore, Size, transferDeadCC(), transferMIFlag(), TRI, and llvm::MCInstrDesc::TSFlags.
|
override |
Definition at line 1559 of file SystemZInstrInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::MachineInstrBuilder::add(), llvm::MachineInstr::addRegisterDead(), llvm::sampleprof::Base, llvm::BuildMI(), llvm::get(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), MBB, MI, llvm::MachineInstr::NoFPExcept, llvm::MachineRegisterInfo::setRegClass(), and transferMIFlag().
| SystemZII::Branch SystemZInstrInfo::getBranchInfo | ( | const MachineInstr & | MI | ) | const |
Definition at line 1843 of file SystemZInstrInfo.cpp.
References llvm::SystemZII::AsmGoto, llvm::SystemZII::BranchC, llvm::SystemZII::BranchCG, llvm::SystemZII::BranchCL, llvm::SystemZII::BranchCLG, llvm::SystemZII::BranchCT, llvm::SystemZII::BranchCTG, llvm::SystemZII::BranchNormal, llvm::SystemZ::CCMASK_ANY, llvm::SystemZ::CCMASK_CMP_NE, llvm::SystemZ::CCMASK_ICMP, llvm_unreachable, and MI.
Referenced by analyzeBranch(), and removeBranch().
| Register SystemZInstrInfo::getCompareSourceReg | ( | const MachineInstr & | Compare | ) | const |
Definition at line 2183 of file SystemZInstrInfo.cpp.
References assert(), isCompareZero(), and isLoadAndTestAsCmp().
|
override |
Definition at line 2369 of file SystemZInstrInfo.cpp.
References MI.
| unsigned SystemZInstrInfo::getFusedCompare | ( | unsigned | Opcode, |
| SystemZII::FusedCompareType | Type, | ||
| const MachineInstr * | MI = nullptr ) const |
Definition at line 2051 of file SystemZInstrInfo.cpp.
References llvm::SystemZII::CompareAndBranch, llvm::SystemZII::CompareAndReturn, llvm::SystemZII::CompareAndSibcall, llvm::SystemZII::CompareAndTrap, llvm::isInt(), llvm::isUInt(), and MI.
|
override |
Definition at line 1820 of file SystemZInstrInfo.cpp.
References llvm::getImm(), llvm::TargetMachine::getMCAsmInfo(), llvm::PatchPointOpers::getNumPatchBytes(), llvm::MachineFunction::getTarget(), and MI.
Definition at line 1197 of file SystemZInstrInfo.cpp.
Referenced by isAssociativeAndCommutative().
Definition at line 1998 of file SystemZInstrInfo.cpp.
Definition at line 2261 of file SystemZInstrInfo.cpp.
| void SystemZInstrInfo::getLoadStoreOpcodes | ( | const TargetRegisterClass * | RC, |
| unsigned & | LoadOpcode, | ||
| unsigned & | StoreOpcode ) const |
Definition at line 1895 of file SystemZInstrInfo.cpp.
References llvm_unreachable.
Referenced by loadRegFromStackSlot(), and storeRegToStackSlot().
|
override |
Definition at line 2407 of file SystemZInstrInfo.cpp.
References llvm::MCInstBuilder::addReg().
| unsigned SystemZInstrInfo::getOpcodeForOffset | ( | unsigned | Opcode, |
| int64_t | Offset, | ||
| const MachineInstr * | MI = nullptr ) const |
Definition at line 1945 of file SystemZInstrInfo.cpp.
References llvm::get(), llvm::SystemZMC::getFirstReg(), llvm::SystemZII::Has20BitOffset, llvm::SystemZII::Is128Bit, llvm::isInt(), llvm::isUInt(), MI, and llvm::Offset.
|
inline |
Definition at line 311 of file SystemZInstrInfo.h.
|
override |
Definition at line 2397 of file SystemZInstrInfo.cpp.
References llvm::ArrayRef().
Definition at line 1991 of file SystemZInstrInfo.cpp.
References llvm::get(), and llvm::SystemZII::Has20BitOffset.
|
override |
Definition at line 543 of file SystemZInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMBB(), assert(), llvm::BuildMI(), Cond, llvm::Count, DL, llvm::get(), MBB, and TBB.
|
override |
Definition at line 633 of file SystemZInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::MachineRegisterInfo::createVirtualRegister(), DL, llvm::get(), llvm::MachineRegisterInfo::getRegClass(), I, llvm_unreachable, MBB, and Opc.
|
override |
Definition at line 1165 of file SystemZInstrInfo.cpp.
References llvm::MachineInstr::FmNsz, llvm::MachineInstr::FmReassoc, llvm::MachineInstr::getFlag(), getInverseOpcode(), llvm::MachineInstr::getOpcode(), and Opc.
| bool SystemZInstrInfo::isCompareZero | ( | const MachineInstr & | Compare | ) | const |
Definition at line 2175 of file SystemZInstrInfo.cpp.
References isLoadAndTestAsCmp().
Referenced by getCompareSourceReg().
|
override |
Definition at line 2383 of file SystemZInstrInfo.cpp.
References MI.
| bool SystemZInstrInfo::isLoadAndTestAsCmp | ( | const MachineInstr & | MI | ) | const |
Definition at line 2166 of file SystemZInstrInfo.cpp.
References MI.
Referenced by getCompareSourceReg(), and isCompareZero().
|
override |
Definition at line 341 of file SystemZInstrInfo.cpp.
References isSimpleMove(), MI, and llvm::SystemZII::SimpleBDXLoad.
|
override |
Definition at line 351 of file SystemZInstrInfo.cpp.
References Accesses, assert(), llvm::cast(), MI, and llvm::SystemZII::SimpleBDXLoad.
|
override |
Definition at line 781 of file SystemZInstrInfo.cpp.
References MI.
|
override |
Definition at line 821 of file SystemZInstrInfo.cpp.
References MBB.
|
override |
Definition at line 792 of file SystemZInstrInfo.cpp.
References MBB.
|
override |
Definition at line 811 of file SystemZInstrInfo.cpp.
| bool SystemZInstrInfo::isRxSBGMask | ( | uint64_t | Mask, |
| unsigned | BitSize, | ||
| unsigned & | Start, | ||
| unsigned & | End ) const |
Definition at line 2022 of file SystemZInstrInfo.cpp.
References allOnes(), assert(), llvm::isShiftedMask_64(), and llvm::Length.
Referenced by convertToThreeAddress().
|
override |
Definition at line 397 of file SystemZInstrInfo.cpp.
References llvm::MachineFrameInfo::getObjectSize(), llvm::Length, and MI.
|
override |
Definition at line 346 of file SystemZInstrInfo.cpp.
References isSimpleMove(), MI, and llvm::SystemZII::SimpleBDXStore.
|
override |
Definition at line 374 of file SystemZInstrInfo.cpp.
References Accesses, assert(), llvm::cast(), MI, and llvm::SystemZII::SimpleBDXStore.
| void SystemZInstrInfo::loadImmediate | ( | MachineBasicBlock & | MBB, |
| MachineBasicBlock::iterator | MBBI, | ||
| unsigned | Reg, | ||
| uint64_t | Value ) const |
Definition at line 2280 of file SystemZInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::dwarf_linker::DebugLoc, DL, llvm::get(), llvm::SystemZ::isImmLH(), llvm::SystemZ::isImmLL(), llvm::isInt(), llvm::MachineRegisterInfo::isSSA(), MBB, and MBBI.
Referenced by foldImmediate().
|
override |
Definition at line 1042 of file SystemZInstrInfo.cpp.
References llvm::addFrameReference(), llvm::BuildMI(), llvm::dwarf_linker::DebugLoc, DL, llvm::get(), getLoadStoreOpcodes(), MBB, and MBBI.
|
override |
Definition at line 828 of file SystemZInstrInfo.cpp.
References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addRegMask(), assert(), llvm::get(), llvm::Implicit, and MI.
| bool SystemZInstrInfo::prepareCompareSwapOperands | ( | MachineBasicBlock::iterator | MBBI | ) | const |
Definition at line 2188 of file SystemZInstrInfo.cpp.
References assert(), llvm::SystemZII::CCMaskFirst, llvm::SystemZII::CCMaskLast, llvm::MachineOperand::getImm(), llvm::make_range(), MBB, MBBI, MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SystemZ::reverseCCMask(), llvm::MachineOperand::setImm(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by foldMemoryOperandImpl().
|
override |
Definition at line 511 of file SystemZInstrInfo.cpp.
References assert(), llvm::Count, getBranchInfo(), llvm::SystemZII::Branch::hasMBBTarget(), I, and MBB.
|
override |
Definition at line 536 of file SystemZInstrInfo.cpp.
References assert(), Cond, and llvm::getImm().
|
override |
Definition at line 1026 of file SystemZInstrInfo.cpp.
References llvm::addFrameReference(), llvm::BuildMI(), llvm::dwarf_linker::DebugLoc, DL, llvm::get(), llvm::getKillRegState(), getLoadStoreOpcodes(), MBB, and MBBI.
|
inlineoverride |
Definition at line 290 of file SystemZInstrInfo.h.
|
override |
Definition at line 2311 of file SystemZInstrInfo.cpp.
References I, MI, and llvm::MCOI::OPERAND_MEMORY.