[llvm-branch-commits] [llvm] a16c2be - [LoopPred Test] Fix lld-x86_64-win BB failure

2021-09-27 Thread Anna Thomas via llvm-branch-commits

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

2020-12-03 Thread Anna Thomas via llvm-branch-commits

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

2020-12-03 Thread Anna Thomas via llvm-branch-commits

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

2020-12-08 Thread Anna Thomas via llvm-branch-commits

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

2020-12-08 Thread Anna Thomas via llvm-branch-commits

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