LLVM: lib/CodeGen/GlobalISel/LoadStoreOpt.cpp File Reference (original) (raw)
This file implements the LoadStoreOpt optimization pass. More...
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "loadstore-opt" |
| Functions | |
|---|---|
| STATISTIC (NumStoresMerged, "Number of stores merged") | |
| INITIALIZE_PASS_BEGIN (LoadStoreOpt, DEBUG_TYPE, "Generic memory optimizations", false, false) INITIALIZE_PASS_END(LoadStoreOpt | |
| static bool | isInstHardMergeHazard (MachineInstr &MI) |
| Returns true if the instruction creates an unavoidable hazard that forces a boundary between store merge candidates. | |
| static std::optional< int64_t > | getTruncStoreByteOffset (GStore &Store, Register &SrcVal, MachineRegisterInfo &MRI) |
| Check if the store Store is a truncstore that can be merged. |
This file implements the LoadStoreOpt optimization pass.
Definition in file LoadStoreOpt.cpp.
◆ DEBUG_TYPE
#define DEBUG_TYPE "loadstore-opt"
◆ getTruncStoreByteOffset()
Check if the store Store is a truncstore that can be merged.
That is, it's a store of a shifted value of SrcVal. If SrcVal is an empty Register then it does not need to match and SrcVal is set to the source value found. On match, returns the start byte offset of the SrcVal that is being stored.
Definition at line 646 of file LoadStoreOpt.cpp.
References llvm::Register::isValid(), llvm::MIPatternMatch::m_any_of(), llvm::MIPatternMatch::m_GAShr(), llvm::MIPatternMatch::m_GLShr(), llvm::MIPatternMatch::m_GTrunc(), llvm::MIPatternMatch::m_ICst(), llvm::MIPatternMatch::m_Reg(), llvm::MIPatternMatch::mi_match(), MRI, and llvm::Offset.
◆ INITIALIZE_PASS_BEGIN()
◆ isInstHardMergeHazard()
Returns true if the instruction creates an unavoidable hazard that forces a boundary between store merge candidates.
Definition at line 298 of file LoadStoreOpt.cpp.
References MI.
◆ STATISTIC()
| STATISTIC | ( | NumStoresMerged | , |
|---|---|---|---|
| "Number of stores merged" | ) |