From a066f1f9e6fc5f1399060a2cd22335ec4de7bb90 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Mon, 25 Feb 2019 15:42:02 +0000 Subject: [Vectorizer] Add vectorization support for fixed smul/umul intrinsics This requires a couple of tweaks to existing vectorization functions as they were assuming that only the second call argument (ctlz/cttz/powi) could ever be the 'always scalar' argument, but for smul.fix + umul.fix its the third argument. Differential Revision: https://reviews.llvm.org/D58616 llvm-svn: 354790 --- llvm/lib/Analysis/VectorUtils.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'llvm/lib/Analysis/VectorUtils.cpp') diff --git a/llvm/lib/Analysis/VectorUtils.cpp b/llvm/lib/Analysis/VectorUtils.cpp index f64ee6a0fb9..ef70e14da7f 100644 --- a/llvm/lib/Analysis/VectorUtils.cpp +++ b/llvm/lib/Analysis/VectorUtils.cpp @@ -52,6 +52,8 @@ bool llvm::isTriviallyVectorizable(Intrinsic::ID ID) { case Intrinsic::ssub_sat: case Intrinsic::uadd_sat: case Intrinsic::usub_sat: + case Intrinsic::smul_fix: + case Intrinsic::umul_fix: case Intrinsic::sqrt: // Begin floating-point. case Intrinsic::sin: case Intrinsic::cos: @@ -92,6 +94,9 @@ bool llvm::hasVectorInstrinsicScalarOpd(Intrinsic::ID ID, case Intrinsic::cttz: case Intrinsic::powi: return (ScalarOpdIdx == 1); + case Intrinsic::smul_fix: + case Intrinsic::umul_fix: + return (ScalarOpdIdx == 2); default: return false; } -- cgit v1.2.3