LLVM 22.0.0git
ARCOptAddrMode.cpp File Reference

This pass folds LD/ST + ADD pairs into Pre/Post-increment form of load/store instructions. More...

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

FunctionPassllvm::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< unsignedllvm::ArcKillAddrMode ("arc-kill-addr-mode", cl::init(0), cl::ReallyHidden)
 OPTADDRMODE_NAME
 OPTADDRMODE_DESC
 false

Detailed Description

This pass folds LD/ST + ADD pairs into Pre/Post-increment form of load/store instructions.

Definition in file ARCOptAddrMode.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "arc-addr-mode"

Definition at line 34 of file ARCOptAddrMode.cpp.

◆ DUMP_AFTER

#define DUMP_AFTER ( )
Value:
((ArcKillAddrMode & 0x0002) != 0)
static cl::opt< unsigned > ArcKillAddrMode("arc-kill-addr-mode", cl::init(0), cl::ReallyHidden)

Definition at line 42 of file ARCOptAddrMode.cpp.

◆ DUMP_BEFORE

#define DUMP_BEFORE ( )
Value:
((ArcKillAddrMode & 0x0001) != 0)

Definition at line 41 of file ARCOptAddrMode.cpp.

◆ GET_INSTRMAP_INFO

#define GET_INSTRMAP_INFO

Definition at line 15 of file ARCOptAddrMode.cpp.

◆ KILL_PASS

#define KILL_PASS ( )
Value:
((ArcKillAddrMode & 0x0010) != 0)

Definition at line 45 of file ARCOptAddrMode.cpp.

◆ OPTADDRMODE_DESC

#define OPTADDRMODE_DESC   "ARC load/store address mode"

Definition at line 32 of file ARCOptAddrMode.cpp.

Referenced by INITIALIZE_PASS_BEGIN().

◆ OPTADDRMODE_NAME

#define OPTADDRMODE_NAME   "arc-addr-mode"

Definition at line 33 of file ARCOptAddrMode.cpp.

Referenced by INITIALIZE_PASS_BEGIN().

◆ VIEW_AFTER

#define VIEW_AFTER ( )
Value:
((ArcKillAddrMode & 0x0008) != 0)

Definition at line 44 of file ARCOptAddrMode.cpp.

◆ VIEW_BEFORE

#define VIEW_BEFORE ( )
Value:
((ArcKillAddrMode & 0x0004) != 0)

Definition at line 43 of file ARCOptAddrMode.cpp.

Function Documentation

◆ dominatesAllUsesOf()

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( ARCOptAddrMode ,
OPTADDRMODE_NAME ,
OPTADDRMODE_DESC ,
false ,
false  )

◆ isAddConstantOp()

bool isAddConstantOp ( const MachineInstr & MI,
int64_t & Amount )
static

Definition at line 134 of file ARCOptAddrMode.cpp.

References assert(), and MI.

◆ isLoadStoreThatCanHandleDisplacement()

bool isLoadStoreThatCanHandleDisplacement ( const TargetInstrInfo * TII,
const MachineInstr & MI,
int64_t Disp )
static

◆ isValidIncrementOffset()

bool isValidIncrementOffset ( int64_t Off)
static

Definition at line 132 of file ARCOptAddrMode.cpp.

References llvm::isUInt().

◆ isValidLoadStoreOffset()

false bool isValidLoadStoreOffset ( int64_t Off)
static

Variable Documentation

◆ false

false

Definition at line 123 of file ARCOptAddrMode.cpp.

◆ OPTADDRMODE_DESC

OPTADDRMODE_DESC

Definition at line 123 of file ARCOptAddrMode.cpp.

◆ OPTADDRMODE_NAME

OPTADDRMODE_NAME

Definition at line 123 of file ARCOptAddrMode.cpp.