diff options
Diffstat (limited to 'llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp')
-rw-r--r-- | llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp b/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp index b4037499d7d1e..ee72de67d8752 100644 --- a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp +++ b/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp @@ -29,6 +29,7 @@ #include "llvm/IR/Intrinsics.h" #include "llvm/IR/Type.h" #include "llvm/IR/Value.h" +#include "llvm/InitializePasses.h" #include "llvm/Pass.h" #include "llvm/Support/Casting.h" #include <algorithm> @@ -848,21 +849,20 @@ bool ScalarizeMaskedMemIntrin::optimizeCallInst(CallInst *CI, bool &ModifiedDT) { IntrinsicInst *II = dyn_cast<IntrinsicInst>(CI); if (II) { + unsigned Alignment; switch (II->getIntrinsicID()) { default: break; case Intrinsic::masked_load: { // Scalarize unsupported vector masked load - unsigned Alignment = - cast<ConstantInt>(CI->getArgOperand(1))->getZExtValue(); + Alignment = cast<ConstantInt>(CI->getArgOperand(1))->getZExtValue(); if (TTI->isLegalMaskedLoad(CI->getType(), MaybeAlign(Alignment))) return false; scalarizeMaskedLoad(CI, ModifiedDT); return true; } case Intrinsic::masked_store: { - unsigned Alignment = - cast<ConstantInt>(CI->getArgOperand(2))->getZExtValue(); + Alignment = cast<ConstantInt>(CI->getArgOperand(2))->getZExtValue(); if (TTI->isLegalMaskedStore(CI->getArgOperand(0)->getType(), MaybeAlign(Alignment))) return false; @@ -870,12 +870,15 @@ bool ScalarizeMaskedMemIntrin::optimizeCallInst(CallInst *CI, return true; } case Intrinsic::masked_gather: - if (TTI->isLegalMaskedGather(CI->getType())) + Alignment = cast<ConstantInt>(CI->getArgOperand(1))->getZExtValue(); + if (TTI->isLegalMaskedGather(CI->getType(), MaybeAlign(Alignment))) return false; scalarizeMaskedGather(CI, ModifiedDT); return true; case Intrinsic::masked_scatter: - if (TTI->isLegalMaskedScatter(CI->getArgOperand(0)->getType())) + Alignment = cast<ConstantInt>(CI->getArgOperand(2))->getZExtValue(); + if (TTI->isLegalMaskedScatter(CI->getArgOperand(0)->getType(), + MaybeAlign(Alignment))) return false; scalarizeMaskedScatter(CI, ModifiedDT); return true; |