@@ -3555,26 +3555,13 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
35553555 break ;
35563556 }
35573557 case Intrinsic::vector_reverse: {
3558- Value *BO0, *BO1, *X, *Y;
35593558 Value *Vec = II->getArgOperand (0 );
3560- if (match (Vec, m_OneUse (m_BinOp (m_Value (BO0), m_Value (BO1))))) {
3561- auto *OldBinOp = cast<BinaryOperator>(Vec);
3562- if (match (BO0, m_VecReverse (m_Value (X)))) {
3563- // rev(binop rev(X), rev(Y)) --> binop X, Y
3564- if (match (BO1, m_VecReverse (m_Value (Y))))
3565- return replaceInstUsesWith (CI, BinaryOperator::CreateWithCopiedFlags (
3566- OldBinOp->getOpcode (), X, Y,
3567- OldBinOp, OldBinOp->getName (),
3568- II->getIterator ()));
3569- // rev(binop rev(X), BO1Splat) --> binop X, BO1Splat
3570- if (isSplatValue (BO1))
3571- return replaceInstUsesWith (CI, BinaryOperator::CreateWithCopiedFlags (
3572- OldBinOp->getOpcode (), X, BO1,
3573- OldBinOp, OldBinOp->getName (),
3574- II->getIterator ()));
3575- }
3576- }
3559+ // Note: We canonicalize reverse after binops, so we don't need a
3560+ // corresponding binop case here. TODO: Consider canonicalizing
3561+ // reverse after fneg?
3562+
35773563 // rev(unop rev(X)) --> unop X
3564+ Value *X;
35783565 if (match (Vec, m_OneUse (m_UnOp (m_VecReverse (m_Value (X)))))) {
35793566 auto *OldUnOp = cast<UnaryOperator>(Vec);
35803567 auto *NewUnOp = UnaryOperator::CreateWithCopiedFlags (
0 commit comments