Enabled cost calculation for masked memory operations.
authorElena Demikhovsky <elena.demikhovsky@intel.com>
Sun, 15 Feb 2015 08:08:48 +0000 (08:08 +0000)
committerElena Demikhovsky <elena.demikhovsky@intel.com>
Sun, 15 Feb 2015 08:08:48 +0000 (08:08 +0000)
We already have implementation for cost calculation for
masked memory operations. I just call it from the loop vectorizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229290 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Vectorize/LoopVectorize.cpp

index dd2beb34c6ae03e202ca85ef64b2a614a6406cd7..1db089b8d61b3aa7843eae1d71079bc09db5f706 100644 (file)
@@ -4912,7 +4912,11 @@ LoopVectorizationCostModel::getInstructionCost(Instruction *I, unsigned VF) {
 
     // Wide load/stores.
     unsigned Cost = TTI.getAddressComputationCost(VectorTy);
-    Cost += TTI.getMemoryOpCost(I->getOpcode(), VectorTy, Alignment, AS);
+    if (Legal->isMaskRequired(I))
+      Cost += TTI.getMaskedMemoryOpCost(I->getOpcode(), VectorTy, Alignment,
+                                        AS);
+    else
+      Cost += TTI.getMemoryOpCost(I->getOpcode(), VectorTy, Alignment, AS);
 
     if (Reverse)
       Cost += TTI.getShuffleCost(TargetTransformInfo::SK_Reverse,