LLVM 22.0.0git
|
This pass folds LD/ST + ADD pairs into Pre/Post-increment form of load/store instructions. More...
#include "ARC.h"
#include "ARCInstrInfo.h"
#include "ARCTargetMachine.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. |
Macros | |
#define | GET_INSTRMAP_INFO |
#define | OPTADDRMODE_DESC "ARC load/store address mode" |
#define | OPTADDRMODE_NAME "arc-addr-mode" |
#define | DEBUG_TYPE "arc-addr-mode" |
#define | DUMP_BEFORE() |
#define | DUMP_AFTER() |
#define | VIEW_BEFORE() |
#define | VIEW_AFTER() |
#define | KILL_PASS() |
Functions | |
FunctionPass * | llvm::createARCOptAddrMode () |
void | llvm::initializeARCOptAddrModePass (PassRegistry &) |
INITIALIZE_PASS_BEGIN (ARCOptAddrMode, OPTADDRMODE_NAME, OPTADDRMODE_DESC, false, false) INITIALIZE_PASS_END(ARCOptAddrMode | |
static false bool | isValidLoadStoreOffset (int64_t Off) |
static bool | isValidIncrementOffset (int64_t Off) |
static bool | isAddConstantOp (const MachineInstr &MI, int64_t &Amount) |
static bool | dominatesAllUsesOf (const MachineInstr *MI, unsigned VReg, MachineDominatorTree *MDT, MachineRegisterInfo *MRI) |
static bool | isLoadStoreThatCanHandleDisplacement (const TargetInstrInfo *TII, const MachineInstr &MI, int64_t Disp) |
Variables | |
static cl::opt< unsigned > | llvm::ArcKillAddrMode ("arc-kill-addr-mode", cl::init(0), cl::ReallyHidden) |
OPTADDRMODE_NAME | |
OPTADDRMODE_DESC | |
false |
This pass folds LD/ST + ADD pairs into Pre/Post-increment form of load/store instructions.
Definition in file ARCOptAddrMode.cpp.
#define DEBUG_TYPE "arc-addr-mode" |
Definition at line 34 of file ARCOptAddrMode.cpp.
#define DUMP_AFTER | ( | ) |
Definition at line 42 of file ARCOptAddrMode.cpp.
#define DUMP_BEFORE | ( | ) |
Definition at line 41 of file ARCOptAddrMode.cpp.
#define GET_INSTRMAP_INFO |
Definition at line 15 of file ARCOptAddrMode.cpp.
#define KILL_PASS | ( | ) |
Definition at line 45 of file ARCOptAddrMode.cpp.
#define OPTADDRMODE_DESC "ARC load/store address mode" |
Definition at line 32 of file ARCOptAddrMode.cpp.
Referenced by INITIALIZE_PASS_BEGIN().
#define OPTADDRMODE_NAME "arc-addr-mode" |
Definition at line 33 of file ARCOptAddrMode.cpp.
Referenced by INITIALIZE_PASS_BEGIN().
#define VIEW_AFTER | ( | ) |
Definition at line 44 of file ARCOptAddrMode.cpp.
#define VIEW_BEFORE | ( | ) |
Definition at line 43 of file ARCOptAddrMode.cpp.
|
static |
Definition at line 150 of file ARCOptAddrMode.cpp.
References assert(), llvm::MachineDominatorTree::dominates(), llvm::User::getOperand(), llvm::Use::getOperandNo(), llvm::Register::isVirtualRegister(), MBB, MI, and MRI.
INITIALIZE_PASS_BEGIN | ( | ARCOptAddrMode | , |
OPTADDRMODE_NAME | , | ||
OPTADDRMODE_DESC | , | ||
false | , | ||
false | ) |
References INITIALIZE_PASS_DEPENDENCY, OPTADDRMODE_DESC, and OPTADDRMODE_NAME.
|
static |
Definition at line 134 of file ARCOptAddrMode.cpp.
|
static |
Definition at line 179 of file ARCOptAddrMode.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineOperand::isImm(), isValidLoadStoreOffset(), MI, llvm::Offset, and TII.
|
static |
Definition at line 132 of file ARCOptAddrMode.cpp.
References llvm::isUInt().
|
static |
Definition at line 128 of file ARCOptAddrMode.cpp.
References llvm::isInt(), and isValidLoadStoreOffset().
Referenced by isLoadStoreThatCanHandleDisplacement(), and isValidLoadStoreOffset().
false |
Definition at line 123 of file ARCOptAddrMode.cpp.
OPTADDRMODE_DESC |
Definition at line 123 of file ARCOptAddrMode.cpp.
OPTADDRMODE_NAME |
Definition at line 123 of file ARCOptAddrMode.cpp.