diff options
author | Dinesh Dwivedi <dinesh.d@samsung.com> | 2014-06-12 14:06:00 +0000 |
---|---|---|
committer | Dinesh Dwivedi <dinesh.d@samsung.com> | 2014-06-12 14:06:00 +0000 |
commit | 7edfaf71485862ee52fb4977fa587e73aab6fa33 (patch) | |
tree | baade72e22e87a976029a7b46c99bdfdb3ee9d82 /lib | |
parent | 7554a4abd22ddd2345bda3ac66268cc74a1cfad3 (diff) | |
download | llvm-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.cpp | 11 |
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; } |