Go to the source code of this file.
|
| static cl::opt< bool > | RequireNoPathBypass ("loongarch-require-no-path-bypass", cl::desc("Optimize only when no paths bypass either memory barrier"), cl::init(true), cl::Hidden) |
| static cl::opt< bool > | MergeAMOWithMB ("loongarch-merge-amo-with-dbar", cl::desc("Merge AMOs with DBARs into AMO_DB during optimization"), cl::init(true), cl::Hidden) |
| static cl::opt< bool > | DisableInlineAsm ("loongarch-disable-inline-asm-barrier-opt", cl::desc("Disable optimization of memory barriers in InlineAsm"), cl::init(false), cl::Hidden) |
| static cl::opt< bool > | ReplaceEliminatedMBToNop ("loongarch-replace-eliminated-dbar-to-nop", cl::desc("Replace eliminated DBARs with NOPs to preserve code layout"), cl::init(false), cl::Hidden) |
| | DEBUG_TYPE |
| | LOONGARCH_MEMORY_BARRIER_OPT_NAME |
| | false |
◆ AMO_CASES
Value:
CASE(AMSWAP, W) \
CASE(AMADD, W) \
CASE(AMAND, W) \
CASE(AMOR, W) \
CASE(AMXOR, W) \
CASE(AMMAX, W) \
CASE(AMMAX, WU) \
CASE(AMMAX, DU) \
CASE(AMMIN, W) \
CASE(AMMIN, WU) \
CASE(AMMIN, DU) \
CASE(AMCAS, W) \
#define CASE(ATTRNAME, AANAME,...)
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
Definition at line 56 of file LoongArchMemoryBarrierOpt.cpp.
◆ CASE [1/2]
| #define CASE |
( |
| Name, |
|
|
| Suffix ) |
Value: .Case(#Name
"." #Suffix,
MergeAMOWithMB ? #Name
"_DB." #Suffix :
"") \
.Case(#Name "_DB." #Suffix, #Name "_DB." #Suffix)
static cl::opt< bool > MergeAMOWithMB("loongarch-merge-amo-with-dbar", cl::desc("Merge AMOs with DBARs into AMO_DB during optimization"), cl::init(true), cl::Hidden)
◆ CASE [2/2]
| #define CASE |
( |
| Name, |
|
|
| Suffix ) |
Value: case LoongArch::Name##
_##Suffix: \
return std::nullopt; \
[[fallthrough]]; \
case LoongArch::Name##__DB_##Suffix: \
return LoongArch::Name##__DB_##Suffix;
◆ DEBUG_TYPE
| #define DEBUG_TYPE "loongarch-memory-barrier-opt" |
◆ LOONGARCH_MEMORY_BARRIER_OPT_NAME
| #define LOONGARCH_MEMORY_BARRIER_OPT_NAME "LoongArch Memory Barrier Optimisation pass" |
◆ INITIALIZE_PASS_BEGIN()
◆ DEBUG_TYPE
◆ DisableInlineAsm
| cl::opt< bool > DisableInlineAsm("loongarch-disable-inline-asm-barrier-opt", cl::desc("Disable optimization of memory barriers in InlineAsm"), cl::init(false), cl::Hidden) |
( |
"loongarch-disable-inline-asm-barrier-opt" | , |
|
|
cl::desc("Disable optimization of memory barriers in InlineAsm") | , |
|
|
cl::init(false) | , |
|
|
cl::Hidden | ) |
|
static |
◆ false
◆ LOONGARCH_MEMORY_BARRIER_OPT_NAME
| LOONGARCH_MEMORY_BARRIER_OPT_NAME |
◆ MergeAMOWithMB
| cl::opt< bool > MergeAMOWithMB("loongarch-merge-amo-with-dbar", cl::desc("Merge AMOs with DBARs into AMO_DB during optimization"), cl::init(true), cl::Hidden) |
( |
"loongarch-merge-amo-with-dbar" | , |
|
|
cl::desc("Merge AMOs with DBARs into AMO_DB during optimization") | , |
|
|
cl::init(true) | , |
|
|
cl::Hidden | ) |
|
static |
◆ ReplaceEliminatedMBToNop
| cl::opt< bool > ReplaceEliminatedMBToNop("loongarch-replace-eliminated-dbar-to-nop", cl::desc("Replace eliminated DBARs with NOPs to preserve code layout"), cl::init(false), cl::Hidden) |
( |
"loongarch-replace-eliminated-dbar-to-nop" | , |
|
|
cl::desc("Replace eliminated DBARs with NOPs to preserve code layout") | , |
|
|
cl::init(false) | , |
|
|
cl::Hidden | ) |
|
static |
◆ RequireNoPathBypass
| cl::opt< bool > RequireNoPathBypass("loongarch-require-no-path-bypass", cl::desc("Optimize only when no paths bypass either memory barrier"), cl::init(true), cl::Hidden) |
( |
"loongarch-require-no-path-bypass" | , |
|
|
cl::desc("Optimize only when no paths bypass either memory barrier") | , |
|
|
cl::init(true) | , |
|
|
cl::Hidden | ) |
|
static |