OSDN Git Service

[InstCombine] Add m_BitReverse pattern match helper. NFCI.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 30 Jun 2017 18:58:29 +0000 (18:58 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 30 Jun 2017 18:58:29 +0000 (18:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306860 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/PatternMatch.h
lib/Transforms/InstCombine/InstCombineCalls.cpp

index e5b4160..5b69e78 100644 (file)
@@ -1360,6 +1360,11 @@ m_Intrinsic(const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3) {
 
 // Helper intrinsic matching specializations.
 template <typename Opnd0>
+inline typename m_Intrinsic_Ty<Opnd0>::Ty m_BitReverse(const Opnd0 &Op0) {
+  return m_Intrinsic<Intrinsic::bitreverse>(Op0);
+}
+
+template <typename Opnd0>
 inline typename m_Intrinsic_Ty<Opnd0>::Ty m_BSwap(const Opnd0 &Op0) {
   return m_Intrinsic<Intrinsic::bswap>(Op0);
 }
index dbed7ad..3770021 100644 (file)
@@ -1985,7 +1985,7 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
     Value *X = nullptr;
 
     // bitreverse(bitreverse(x)) -> x
-    if (match(IIOperand, m_Intrinsic<Intrinsic::bitreverse>(m_Value(X))))
+    if (match(IIOperand, m_BitReverse(m_Value(X))))
       return replaceInstUsesWith(CI, X);
     break;
   }