From: Hal Finkel Date: Fri, 26 Oct 2012 04:28:06 +0000 (+0000) Subject: Use VTTI->getNumberOfParts in BBVectorize. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4863448dca975dc5d7bf4aa5c0425d150cc89c24;p=platform%2Fupstream%2Fllvm.git Use VTTI->getNumberOfParts in BBVectorize. This change reflects VTTI refactoring; no functionality change intended. llvm-svn: 166752 --- diff --git a/llvm/lib/Transforms/Vectorize/BBVectorize.cpp b/llvm/lib/Transforms/Vectorize/BBVectorize.cpp index 469ee17..87cde5f 100644 --- a/llvm/lib/Transforms/Vectorize/BBVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/BBVectorize.cpp @@ -819,12 +819,13 @@ namespace { if (VCost > ICost + JCost) return false; - // FIXME: We don't want to fuse to a type that will be split, even + // We don't want to fuse to a type that will be split, even // if the two input types will also be split and there is no other - // associated cost. This check depends on the fact - // that the current implementation of getMemoryOpCost returns only - // the type-splitting cost. - if (VCost > 1) + // associated cost. + unsigned VParts = VTTI->getNumberOfParts(VType); + if (VParts > 1) + return false; + else if (!VParts && VCost == ICost + JCost) return false; CostSavings = ICost + JCost - VCost; @@ -842,13 +843,13 @@ namespace { if (VCost > ICost + JCost) return false; - // FIXME: We don't want to fuse to a type that will be split, even + // We don't want to fuse to a type that will be split, even // if the two input types will also be split and there is no other - // associated cost. This check depends on the fact - // that the current implementation of getMemoryOpCost returns only - // the type-splitting cost (and does nothing else). - unsigned VTypeCost = VTTI->getMemoryOpCost(I->getOpcode(), VT1, 0, 0); - if (VTypeCost > 1) + // associated cost. + unsigned VParts = VTTI->getNumberOfParts(VT1); + if (VParts > 1) + return false; + else if (!VParts && VCost == ICost + JCost) return false; CostSavings = ICost + JCost - VCost;