summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDinesh Dwivedi <dinesh.d@samsung.com>2014-06-12 14:06:00 +0000
committerDinesh Dwivedi <dinesh.d@samsung.com>2014-06-12 14:06:00 +0000
commit7edfaf71485862ee52fb4977fa587e73aab6fa33 (patch)
treebaade72e22e87a976029a7b46c99bdfdb3ee9d82 /lib
parent7554a4abd22ddd2345bda3ac66268cc74a1cfad3 (diff)
downloadllvm-7edfaf71485862ee52fb4977fa587e73aab6fa33.tar.gz
llvm-7edfaf71485862ee52fb4977fa587e73aab6fa33.tar.bz2
llvm-7edfaf71485862ee52fb4977fa587e73aab6fa33.tar.xz
This removes TODO added in http://reviews.llvm.org/D3658
The patch transforms ABS(NABS(X)) -> ABS(X) NABS(ABS(X)) -> NABS(X) Differential Revision: http://reviews.llvm.org/D4040 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210782 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Transforms/InstCombine/InstCombineSelect.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Transforms/InstCombine/InstCombineSelect.cpp b/lib/Transforms/InstCombine/InstCombineSelect.cpp
index e8ce350886..06c9e290c6 100644
--- a/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ b/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -733,8 +733,15 @@ Instruction *InstCombiner::FoldSPFofSPF(Instruction *Inner,
return ReplaceInstUsesWith(Outer, Inner);
}
- // TODO: ABS(NABS(X)) -> ABS(X)
- // TODO: NABS(ABS(X)) -> NABS(X)
+ // ABS(NABS(X)) -> ABS(X)
+ // NABS(ABS(X)) -> NABS(X)
+ if ((SPF1 == SPF_ABS && SPF2 == SPF_NABS) ||
+ (SPF1 == SPF_NABS && SPF2 == SPF_ABS)) {
+ SelectInst *SI = cast<SelectInst>(Inner);
+ Value *NewSI = Builder->CreateSelect(
+ SI->getCondition(), SI->getFalseValue(), SI->getTrueValue());
+ return ReplaceInstUsesWith(Outer, NewSI);
+ }
return nullptr;
}