diff options
author | Jiangning Liu <jiangning.liu@arm.com> | 2014-09-05 02:55:24 +0000 |
---|---|---|
committer | Jiangning Liu <jiangning.liu@arm.com> | 2014-09-05 02:55:24 +0000 |
commit | 1a486da543b7e4ea7a635f8f467542fd9398772c (patch) | |
tree | 3362d36ec17da7f970822e079e517cd1c7fabe6b /llvm/lib/Target/AArch64/AArch64TargetMachine.cpp | |
parent | 2feff785fc5de96968386b8949a34abb6a6a9c47 (diff) | |
download | bcm5719-llvm-1a486da543b7e4ea7a635f8f467542fd9398772c.tar.gz bcm5719-llvm-1a486da543b7e4ea7a635f8f467542fd9398772c.zip |
[AArch64] Add pass to enable additional comparison optimizations by CSE.
Patched by Sergey Dmitrouk.
This pass tries to make consecutive compares of values use same operands to
allow CSE pass to remove duplicated instructions. For this it analyzes
branches and adjusts comparisons with immediate values by converting:
GE -> GT
GT -> GE
LT -> LE
LE -> LT
and adjusting immediate values appropriately. It basically corrects two
immediate values towards each other to make them equal.
llvm-svn: 217220
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64TargetMachine.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp index e04fe1b5a97..e867524226b 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp @@ -68,6 +68,11 @@ EnableEarlyIfConversion("aarch64-enable-early-ifcvt", cl::Hidden, cl::desc("Run early if-conversion"), cl::init(true)); +static cl::opt<bool> +EnableCondOpt("aarch64-condopt", + cl::desc("Enable the condition optimizer pass"), + cl::init(true), cl::Hidden); + extern "C" void LLVMInitializeAArch64Target() { // Register the target. @@ -182,6 +187,8 @@ bool AArch64PassConfig::addInstSelector() { } bool AArch64PassConfig::addILPOpts() { + if (EnableCondOpt) + addPass(createAArch64ConditionOptimizerPass()); if (EnableCCMP) addPass(createAArch64ConditionalCompares()); if (EnableMCR) |