[llvm-branch-commits] [llvm] a16c2be - [LoopPred Test] Fix lld-x86_64-win BB failure
Author: Anna Thomas Date: 2021-09-27T21:27:04-04:00 New Revision: a16c2be54d2221f8c380d35fff1000ae64c3908b URL: https://github.com/llvm/llvm-project/commit/a16c2be54d2221f8c380d35fff1000ae64c3908b DIFF: https://github.com/llvm/llvm-project/commit/a16c2be54d2221f8c380d35fff1000ae64c3908b.diff LOG: [LoopPred Test] Fix lld-x86_64-win BB failure Need a more general CHECK line for testcase in 5df9112 for correctly handling lld-x86_64-win buildbot. Added: Modified: llvm/test/Transforms/LoopPredication/preserve-bpi.ll Removed: diff --git a/llvm/test/Transforms/LoopPredication/preserve-bpi.ll b/llvm/test/Transforms/LoopPredication/preserve-bpi.ll index a6d1ea508d51..fc33c66bcbfa 100644 --- a/llvm/test/Transforms/LoopPredication/preserve-bpi.ll +++ b/llvm/test/Transforms/LoopPredication/preserve-bpi.ll @@ -4,7 +4,7 @@ declare void @llvm.experimental.guard(i1, ...) -; CHECK: Running pass: RequireAnalysisPasshttps://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] f86ec1e - [ScalarizeMaskedMemIntrin] NFC: Convert member functions to static
Author: Anna Thomas Date: 2020-12-03T11:46:38-05:00 New Revision: f86ec1e1fc4619d4a3974ab849ad362d6f6906eb URL: https://github.com/llvm/llvm-project/commit/f86ec1e1fc4619d4a3974ab849ad362d6f6906eb DIFF: https://github.com/llvm/llvm-project/commit/f86ec1e1fc4619d4a3974ab849ad362d6f6906eb.diff LOG: [ScalarizeMaskedMemIntrin] NFC: Convert member functions to static This will make it easier to add new PM support once the pass is moved into transforms (D92407). Added: Modified: llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp Removed: diff --git a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp b/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp index 3443743a28c5..16cd41b8d1b1 100644 --- a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp +++ b/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp @@ -61,14 +61,16 @@ class ScalarizeMaskedMemIntrin : public FunctionPass { void getAnalysisUsage(AnalysisUsage &AU) const override { AU.addRequired(); } - -private: - bool optimizeBlock(BasicBlock &BB, bool &ModifiedDT); - bool optimizeCallInst(CallInst *CI, bool &ModifiedDT); }; } // end anonymous namespace +static bool optimizeBlock(BasicBlock &BB, bool &ModifiedDT, + const TargetTransformInfo *TTI, const DataLayout *DL); +static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, + const TargetTransformInfo *TTI, + const DataLayout *DL); + char ScalarizeMaskedMemIntrin::ID = 0; INITIALIZE_PASS(ScalarizeMaskedMemIntrin, DEBUG_TYPE, @@ -834,7 +836,7 @@ bool ScalarizeMaskedMemIntrin::runOnFunction(Function &F) { for (Function::iterator I = F.begin(); I != F.end();) { BasicBlock *BB = &*I++; bool ModifiedDTOnIteration = false; - MadeChange |= optimizeBlock(*BB, ModifiedDTOnIteration); + MadeChange |= optimizeBlock(*BB, ModifiedDTOnIteration, TTI, DL); // Restart BB iteration if the dominator tree of the Function was changed if (ModifiedDTOnIteration) @@ -847,13 +849,15 @@ bool ScalarizeMaskedMemIntrin::runOnFunction(Function &F) { return EverMadeChange; } -bool ScalarizeMaskedMemIntrin::optimizeBlock(BasicBlock &BB, bool &ModifiedDT) { +static bool optimizeBlock(BasicBlock &BB, bool &ModifiedDT, + const TargetTransformInfo *TTI, + const DataLayout *DL) { bool MadeChange = false; BasicBlock::iterator CurInstIterator = BB.begin(); while (CurInstIterator != BB.end()) { if (CallInst *CI = dyn_cast(&*CurInstIterator++)) - MadeChange |= optimizeCallInst(CI, ModifiedDT); + MadeChange |= optimizeCallInst(CI, ModifiedDT, TTI, DL); if (ModifiedDT) return true; } @@ -861,8 +865,9 @@ bool ScalarizeMaskedMemIntrin::optimizeBlock(BasicBlock &BB, bool &ModifiedDT) { return MadeChange; } -bool ScalarizeMaskedMemIntrin::optimizeCallInst(CallInst *CI, -bool &ModifiedDT) { +static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, + const TargetTransformInfo *TTI, + const DataLayout *DL) { IntrinsicInst *II = dyn_cast(CI); if (II) { // The scalarization code below does not work for scalable vectors. ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] fb2e109 - [ScalarizeMaskedMemIntrin] NFC: Pass args by reference
Author: Anna Thomas Date: 2020-12-03T14:04:21-05:00 New Revision: fb2e109d4520df0872babe4ea715c43ad16a7cd5 URL: https://github.com/llvm/llvm-project/commit/fb2e109d4520df0872babe4ea715c43ad16a7cd5 DIFF: https://github.com/llvm/llvm-project/commit/fb2e109d4520df0872babe4ea715c43ad16a7cd5.diff LOG: [ScalarizeMaskedMemIntrin] NFC: Pass args by reference Added: Modified: llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp Removed: diff --git a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp b/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp index 16cd41b8d1b1..82c110a4b2ab 100644 --- a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp +++ b/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp @@ -42,9 +42,6 @@ using namespace llvm; namespace { class ScalarizeMaskedMemIntrin : public FunctionPass { - const TargetTransformInfo *TTI = nullptr; - const DataLayout *DL = nullptr; - public: static char ID; // Pass identification, replacement for typeid @@ -66,10 +63,10 @@ class ScalarizeMaskedMemIntrin : public FunctionPass { } // end anonymous namespace static bool optimizeBlock(BasicBlock &BB, bool &ModifiedDT, - const TargetTransformInfo *TTI, const DataLayout *DL); + const TargetTransformInfo &TTI, const DataLayout &DL); static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, - const TargetTransformInfo *TTI, - const DataLayout *DL); + const TargetTransformInfo &TTI, + const DataLayout &DL); char ScalarizeMaskedMemIntrin::ID = 0; @@ -827,8 +824,8 @@ static void scalarizeMaskedCompressStore(CallInst *CI, bool &ModifiedDT) { bool ScalarizeMaskedMemIntrin::runOnFunction(Function &F) { bool EverMadeChange = false; - TTI = &getAnalysis().getTTI(F); - DL = &F.getParent()->getDataLayout(); + auto &TTI = getAnalysis().getTTI(F); + auto &DL = F.getParent()->getDataLayout(); bool MadeChange = true; while (MadeChange) { @@ -850,8 +847,8 @@ bool ScalarizeMaskedMemIntrin::runOnFunction(Function &F) { } static bool optimizeBlock(BasicBlock &BB, bool &ModifiedDT, - const TargetTransformInfo *TTI, - const DataLayout *DL) { + const TargetTransformInfo &TTI, + const DataLayout &DL) { bool MadeChange = false; BasicBlock::iterator CurInstIterator = BB.begin(); @@ -866,8 +863,8 @@ static bool optimizeBlock(BasicBlock &BB, bool &ModifiedDT, } static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, - const TargetTransformInfo *TTI, - const DataLayout *DL) { + const TargetTransformInfo &TTI, + const DataLayout &DL) { IntrinsicInst *II = dyn_cast(CI); if (II) { // The scalarization code below does not work for scalable vectors. @@ -881,14 +878,14 @@ static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, break; case Intrinsic::masked_load: // Scalarize unsupported vector masked load - if (TTI->isLegalMaskedLoad( + if (TTI.isLegalMaskedLoad( CI->getType(), cast(CI->getArgOperand(1))->getAlignValue())) return false; scalarizeMaskedLoad(CI, ModifiedDT); return true; case Intrinsic::masked_store: - if (TTI->isLegalMaskedStore( + if (TTI.isLegalMaskedStore( CI->getArgOperand(0)->getType(), cast(CI->getArgOperand(2))->getAlignValue())) return false; @@ -899,8 +896,8 @@ static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, cast(CI->getArgOperand(1))->getZExtValue(); Type *LoadTy = CI->getType(); Align Alignment = - DL->getValueOrABITypeAlignment(MaybeAlign(AlignmentInt), LoadTy); - if (TTI->isLegalMaskedGather(LoadTy, Alignment)) + DL.getValueOrABITypeAlignment(MaybeAlign(AlignmentInt), LoadTy); + if (TTI.isLegalMaskedGather(LoadTy, Alignment)) return false; scalarizeMaskedGather(CI, ModifiedDT); return true; @@ -910,19 +907,19 @@ static bool optimizeCallInst(CallInst *CI, bool &ModifiedDT, cast(CI->getArgOperand(2))->getZExtValue(); Type *StoreTy = CI->getArgOperand(0)->getType(); Align Alignment = - DL->getValueOrABITypeAlignment(MaybeAlign(AlignmentInt), StoreTy); - if (TTI->isLegalMaskedScatter(StoreTy, Alignment)) + DL.getValueOrABITypeAlignment(MaybeAlign(AlignmentInt), StoreTy); + if (TTI.isLegalMaskedScatter(StoreTy, Alignment)) return false; scalarizeMaskedScatter(CI, ModifiedDT); return true; } case Intrinsic::masked_expandload: - if (TTI->isLegalMaskedExpandLoad(CI->getType())) + if (TT
[llvm-branch-commits] [llvm] 09f2f96 - [ScalarizeMaskedMemIntrinsic] Move from CodeGen into Transforms
Author: Anna Thomas Date: 2020-12-08T12:25:58-05:00 New Revision: 09f2f9605fbaff2b72c586d76256c9e6e312a0f3 URL: https://github.com/llvm/llvm-project/commit/09f2f9605fbaff2b72c586d76256c9e6e312a0f3 DIFF: https://github.com/llvm/llvm-project/commit/09f2f9605fbaff2b72c586d76256c9e6e312a0f3.diff LOG: [ScalarizeMaskedMemIntrinsic] Move from CodeGen into Transforms ScalarizeMaskedMemIntrinsic is currently a codeGen level pass. The pass is actually operating on IR level and does not use any code gen specific passes. It is useful to move it into transforms directory so that it can be more widely used as a mid-level transform as well (apart from usage in codegen pipeline). In particular, we have a usecase downstream where we would like to use this pass in our mid-level pipeline which operates on IR level. The next change will be to add support for new PM. Reviewers: craig.topper, apilipenko, skatkov Reviewed-By: skatkov Differential Revision: https://reviews.llvm.org/D92407 Added: llvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp Modified: llvm/lib/CodeGen/CMakeLists.txt llvm/lib/CodeGen/CodeGen.cpp llvm/lib/Transforms/Scalar/CMakeLists.txt llvm/lib/Transforms/Scalar/Scalar.cpp Removed: llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp diff --git a/llvm/lib/CodeGen/CMakeLists.txt b/llvm/lib/CodeGen/CMakeLists.txt index e7ac998f3efa..7dc854cbbf20 100644 --- a/llvm/lib/CodeGen/CMakeLists.txt +++ b/llvm/lib/CodeGen/CMakeLists.txt @@ -148,7 +148,6 @@ add_llvm_component_library(LLVMCodeGen ResetMachineFunctionPass.cpp SafeStack.cpp SafeStackLayout.cpp - ScalarizeMaskedMemIntrin.cpp ScheduleDAG.cpp ScheduleDAGInstrs.cpp ScheduleDAGPrinter.cpp diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp index 5000373ef54a..92a2b73f52e3 100644 --- a/llvm/lib/CodeGen/CodeGen.cpp +++ b/llvm/lib/CodeGen/CodeGen.cpp @@ -98,7 +98,6 @@ void llvm::initializeCodeGen(PassRegistry &Registry) { initializeRegisterCoalescerPass(Registry); initializeRenameIndependentSubregsPass(Registry); initializeSafeStackLegacyPassPass(Registry); - initializeScalarizeMaskedMemIntrinPass(Registry); initializeShrinkWrapPass(Registry); initializeSjLjEHPreparePass(Registry); initializeSlotIndexesPass(Registry); diff --git a/llvm/lib/Transforms/Scalar/CMakeLists.txt b/llvm/lib/Transforms/Scalar/CMakeLists.txt index 2b41ed6d9190..0205e0d9a6ae 100644 --- a/llvm/lib/Transforms/Scalar/CMakeLists.txt +++ b/llvm/lib/Transforms/Scalar/CMakeLists.txt @@ -66,6 +66,7 @@ add_llvm_component_library(LLVMScalarOpts SROA.cpp Scalar.cpp Scalarizer.cpp + ScalarizeMaskedMemIntrin.cpp SeparateConstOffsetFromGEP.cpp SimpleLoopUnswitch.cpp SimplifyCFGPass.cpp diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index 3282d8a4afc1..32dcbc562c4d 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -95,6 +95,7 @@ void llvm::initializeScalarOpts(PassRegistry &Registry) { initializeRedundantDbgInstEliminationPass(Registry); initializeRegToMemLegacyPass(Registry); initializeRewriteStatepointsForGCLegacyPassPass(Registry); + initializeScalarizeMaskedMemIntrinPass(Registry); initializeSCCPLegacyPassPass(Registry); initializeSROALegacyPassPass(Registry); initializeCFGSimplifyPassPass(Registry); diff --git a/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp b/llvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp similarity index 100% rename from llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp rename to llvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] 29356e3 - [ScalarizeMaskedMemIntrin] Add new PM support
Author: Anna Thomas Date: 2020-12-08T17:15:22-05:00 New Revision: 29356e3279b24fec6c6cc731969b8599818e4426 URL: https://github.com/llvm/llvm-project/commit/29356e3279b24fec6c6cc731969b8599818e4426 DIFF: https://github.com/llvm/llvm-project/commit/29356e3279b24fec6c6cc731969b8599818e4426.diff LOG: [ScalarizeMaskedMemIntrin] Add new PM support This patch adds new PM support for the pass and the pass can be now used during middle-end transforms. The old pass is remamed to ScalarizeMaskedMemIntrinLegacyPass. Reviewed-By: skatkov, aeubanks Differential Revision: https://reviews.llvm.org/D92743 Added: llvm/include/llvm/Transforms/Scalar/ScalarizeMaskedMemIntrin.h Modified: llvm/include/llvm/InitializePasses.h llvm/include/llvm/LinkAllPasses.h llvm/include/llvm/Transforms/Scalar.h llvm/lib/CodeGen/TargetPassConfig.cpp llvm/lib/Passes/PassBuilder.cpp llvm/lib/Passes/PassRegistry.def llvm/lib/Transforms/Scalar/Scalar.cpp llvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp llvm/test/CodeGen/X86/masked_gather_scatter.ll llvm/tools/llc/llc.cpp llvm/tools/opt/opt.cpp Removed: diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index 65f2fb0025e9..b8420ade06a7 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -391,7 +391,7 @@ void initializeSafepointIRVerifierPass(PassRegistry&); void initializeSampleProfileLoaderLegacyPassPass(PassRegistry&); void initializeModuleSanitizerCoverageLegacyPassPass(PassRegistry &); void initializeScalarEvolutionWrapperPassPass(PassRegistry&); -void initializeScalarizeMaskedMemIntrinPass(PassRegistry&); +void initializeScalarizeMaskedMemIntrinLegacyPassPass(PassRegistry &); void initializeScalarizerLegacyPassPass(PassRegistry&); void initializeScavengerTestPass(PassRegistry&); void initializeScopedNoAliasAAWrapperPassPass(PassRegistry&); diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h index 7ec054c010ca..891d534b4fa6 100644 --- a/llvm/include/llvm/LinkAllPasses.h +++ b/llvm/include/llvm/LinkAllPasses.h @@ -224,7 +224,7 @@ namespace { (void) llvm::createMustBeExecutedContextPrinter(); (void) llvm::createFloat2IntPass(); (void) llvm::createEliminateAvailableExternallyPass(); - (void) llvm::createScalarizeMaskedMemIntrinPass(); + (void)llvm::createScalarizeMaskedMemIntrinLegacyPass(); (void) llvm::createWarnMissedTransformationsPass(); (void) llvm::createHardwareLoopsPass(); (void) llvm::createInjectTLIMappingsLegacyPass(); diff --git a/llvm/include/llvm/Transforms/Scalar.h b/llvm/include/llvm/Transforms/Scalar.h index 2cebd89fdddb..3217257150a9 100644 --- a/llvm/include/llvm/Transforms/Scalar.h +++ b/llvm/include/llvm/Transforms/Scalar.h @@ -552,7 +552,7 @@ FunctionPass *createInstSimplifyLegacyPass(); // createScalarizeMaskedMemIntrinPass - Replace masked load, store, gather // and scatter intrinsics with scalar code when target doesn't support them. // -FunctionPass *createScalarizeMaskedMemIntrinPass(); +FunctionPass *createScalarizeMaskedMemIntrinLegacyPass(); } // End llvm namespace #endif diff --git a/llvm/include/llvm/Transforms/Scalar/ScalarizeMaskedMemIntrin.h b/llvm/include/llvm/Transforms/Scalar/ScalarizeMaskedMemIntrin.h new file mode 100644 index ..19339ca13242 --- /dev/null +++ b/llvm/include/llvm/Transforms/Scalar/ScalarizeMaskedMemIntrin.h @@ -0,0 +1,29 @@ +//===- ScalarizeMaskedMemIntrin.h - Scalarize unsupported masked mem ===// +//instrinsics +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This pass replaces masked memory intrinsics - when unsupported by the target +// - with a chain of basic blocks, that deal with the elements one-by-one if the +// appropriate mask bit is set. +// +//===--===// +// +#ifndef LLVM_TRANSFORMS_SCALAR_SCALARIZE_MASKED_MEMINTRIN_H +#define LLVM_TRANSFORMS_SCALAR_SCALARIZE_MASKED_MEMINTRIN_H + +#include "llvm/IR/PassManager.h" + +namespace llvm { + +struct ScalarizeMaskedMemIntrinPass +: public PassInfoMixin { + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); +}; +} // end namespace llvm + +#endif diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp index fb566323c41b..48686b9e04f8 100644 --- a/llvm/lib/CodeGen/TargetPassConfig.cpp +++ b/llvm/lib/CodeGen/TargetPassConfig.cpp @@ -710,7 +710,7 @@ void TargetPassConfig::addIRPasses() { // Add scalarization of target's unsuppo