mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-19 01:46:49 +00:00
[polly] Introduce -polly-print-* passes to replace -analyze.
The `opt -analyze` option only works with the legacy pass manager and might be removed in the future, as explained in llvm.org/PR53733. This patch introduced -polly-print-* passes that print what the pass would print with the `-analyze` option and replaces all uses of `-analyze` in the regression tests. There are two exceptions: `CodeGen\single_loop_param_less_equal.ll` and `CodeGen\loop_with_condition_nested.ll` use `-analyze on the `-loops` pass which is not part of Polly. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D120782
This commit is contained in:
parent
f69175b1e6
commit
5c02808131
@ -498,10 +498,10 @@ static bool shouldPinPassToLegacyPM(StringRef Pass) {
|
||||
"generic-to-nvvm", "expandmemcmp",
|
||||
"loop-reduce", "lower-amx-type",
|
||||
"pre-amx-config", "lower-amx-intrinsics",
|
||||
"polyhedral-info", "replace-with-veclib",
|
||||
"jmc-instrument", "dot-regions",
|
||||
"dot-regions-only", "view-regions",
|
||||
"view-regions-only"};
|
||||
"polyhedral-info", "print-polyhedral-info",
|
||||
"replace-with-veclib", "jmc-instrument",
|
||||
"dot-regions", "dot-regions-only",
|
||||
"view-regions", "view-regions-only"};
|
||||
for (const auto &P : PassNamePrefix)
|
||||
if (Pass.startswith(P))
|
||||
return true;
|
||||
|
@ -196,6 +196,9 @@ public:
|
||||
void printScop(raw_ostream &OS, Scop &S) const override;
|
||||
};
|
||||
|
||||
llvm::Pass *createIslAstInfoWrapperPassPass();
|
||||
llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
struct IslAstPrinterPass : public PassInfoMixin<IslAstPrinterPass> {
|
||||
IslAstPrinterPass(raw_ostream &OS) : OS(OS) {}
|
||||
|
||||
@ -206,4 +209,9 @@ struct IslAstPrinterPass : public PassInfoMixin<IslAstPrinterPass> {
|
||||
};
|
||||
} // namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif // POLLY_ISLAST_H
|
||||
|
@ -29,6 +29,7 @@ class raw_ostream;
|
||||
namespace polly {
|
||||
/// Create a new DeLICM pass instance.
|
||||
llvm::Pass *createDeLICMWrapperPass();
|
||||
llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
struct DeLICMPass : llvm::PassInfoMixin<DeLICMPass> {
|
||||
DeLICMPass() {}
|
||||
@ -62,6 +63,7 @@ bool isConflicting(isl::union_set ExistingOccupied,
|
||||
|
||||
namespace llvm {
|
||||
void initializeDeLICMWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif /* POLLY_DELICM_H */
|
||||
|
@ -262,6 +262,9 @@ private:
|
||||
std::unique_ptr<Dependences> D[Dependences::NumAnalysisLevels];
|
||||
};
|
||||
|
||||
llvm::Pass *createDependenceInfoPass();
|
||||
llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
/// Construct a new DependenceInfoWrapper pass.
|
||||
class DependenceInfoWrapperPass : public FunctionPass {
|
||||
public:
|
||||
@ -301,11 +304,19 @@ private:
|
||||
/// Scop to Dependence map for the current function.
|
||||
ScopToDepsMapTy ScopToDepsMap;
|
||||
};
|
||||
|
||||
llvm::Pass *createDependenceInfoWrapperPassPass();
|
||||
llvm::Pass *
|
||||
createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
|
||||
|
||||
} // namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeDependenceInfoPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoPrinterLegacyFunctionPassPass(
|
||||
llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif
|
||||
|
@ -18,14 +18,17 @@
|
||||
namespace llvm {
|
||||
class PassRegistry;
|
||||
class Pass;
|
||||
class raw_ostream;
|
||||
} // namespace llvm
|
||||
|
||||
namespace polly {
|
||||
llvm::Pass *createFlattenSchedulePass();
|
||||
llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
} // namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeFlattenSchedulePass(llvm::PassRegistry &);
|
||||
void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif /* POLLY_FLATTENSCHEDULE_H */
|
||||
|
@ -17,12 +17,11 @@
|
||||
|
||||
namespace llvm {
|
||||
class PassRegistry;
|
||||
|
||||
void initializeForwardOpTreeWrapperPassPass(PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
namespace polly {
|
||||
llvm::Pass *createForwardOpTreeWrapperPass();
|
||||
llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
struct ForwardOpTreePass : llvm::PassInfoMixin<ForwardOpTreePass> {
|
||||
ForwardOpTreePass() {}
|
||||
@ -44,4 +43,9 @@ private:
|
||||
|
||||
} // namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeForwardOpTreeWrapperPassPass(PassRegistry &);
|
||||
void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif // POLLY_FORWARDOPTREE_H
|
||||
|
@ -13,6 +13,10 @@
|
||||
#include "llvm/IR/PassManager.h"
|
||||
|
||||
namespace polly {
|
||||
llvm::Pass *createJSONExporterPass();
|
||||
llvm::Pass *createJSONImporterPass();
|
||||
llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
/// This pass exports a scop to a jscop file. The filename is generated from the
|
||||
/// concatenation of the function and scop name.
|
||||
struct JSONExportPass : public llvm::PassInfoMixin<JSONExportPass> {
|
||||
@ -28,4 +32,10 @@ struct JSONImportPass : public llvm::PassInfoMixin<JSONExportPass> {
|
||||
};
|
||||
} // namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeJSONExporterPass(llvm::PassRegistry &);
|
||||
void initializeJSONImporterPass(llvm::PassRegistry &);
|
||||
void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif /* POLLY_JSONEXPORTER_H */
|
||||
|
@ -31,19 +31,28 @@ llvm::Pass *createCodePreparationPass();
|
||||
llvm::Pass *createScopInlinerPass();
|
||||
llvm::Pass *createDeadCodeElimWrapperPass();
|
||||
llvm::Pass *createDependenceInfoPass();
|
||||
llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createDependenceInfoWrapperPassPass();
|
||||
llvm::Pass *
|
||||
createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createDOTOnlyPrinterPass();
|
||||
llvm::Pass *createDOTOnlyViewerPass();
|
||||
llvm::Pass *createDOTPrinterPass();
|
||||
llvm::Pass *createDOTViewerPass();
|
||||
llvm::Pass *createJSONExporterPass();
|
||||
llvm::Pass *createJSONImporterPass();
|
||||
llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createPollyCanonicalizePass();
|
||||
llvm::Pass *createPolyhedralInfoPass();
|
||||
llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createScopDetectionWrapperPassPass();
|
||||
llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createScopInfoRegionPassPass();
|
||||
llvm::Pass *createScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createScopInfoWrapperPassPass();
|
||||
llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createIslAstInfoWrapperPassPass();
|
||||
llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createCodeGenerationPass();
|
||||
#ifdef GPU_CODEGEN
|
||||
llvm::Pass *createPPCGCodeGenerationPass(GPUArch Arch = GPUArch::NVPTX64,
|
||||
@ -54,11 +63,16 @@ createManagedMemoryRewritePassPass(GPUArch Arch = GPUArch::NVPTX64,
|
||||
GPURuntime Runtime = GPURuntime::CUDA);
|
||||
#endif
|
||||
llvm::Pass *createIslScheduleOptimizerWrapperPass();
|
||||
llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createFlattenSchedulePass();
|
||||
llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createForwardOpTreeWrapperPass();
|
||||
llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createDeLICMWrapperPass();
|
||||
llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createMaximalStaticExpansionPass();
|
||||
llvm::Pass *createSimplifyWrapperPass(int);
|
||||
llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
llvm::Pass *createPruneUnprofitableWrapperPass();
|
||||
|
||||
extern char &CodePreparationID;
|
||||
@ -77,56 +91,90 @@ struct PollyForcePassLinking {
|
||||
polly::createCodePreparationPass();
|
||||
polly::createDeadCodeElimWrapperPass();
|
||||
polly::createDependenceInfoPass();
|
||||
polly::createDependenceInfoPrinterLegacyPass(llvm::outs());
|
||||
polly::createDependenceInfoWrapperPassPass();
|
||||
polly::createDependenceInfoPrinterLegacyFunctionPass(llvm::outs());
|
||||
polly::createDOTOnlyPrinterPass();
|
||||
polly::createDOTOnlyViewerPass();
|
||||
polly::createDOTPrinterPass();
|
||||
polly::createDOTViewerPass();
|
||||
polly::createJSONExporterPass();
|
||||
polly::createJSONImporterPass();
|
||||
polly::createJSONImporterPrinterLegacyPass(llvm::outs());
|
||||
polly::createScopDetectionWrapperPassPass();
|
||||
polly::createScopDetectionPrinterLegacyPass(llvm::outs());
|
||||
polly::createScopInfoRegionPassPass();
|
||||
polly::createScopInfoPrinterLegacyRegionPass(llvm::outs());
|
||||
polly::createScopInfoWrapperPassPass();
|
||||
polly::createScopInfoPrinterLegacyFunctionPass(llvm::outs());
|
||||
polly::createPollyCanonicalizePass();
|
||||
polly::createPolyhedralInfoPass();
|
||||
polly::createPolyhedralInfoPrinterLegacyPass(llvm::outs());
|
||||
polly::createIslAstInfoWrapperPassPass();
|
||||
polly::createIslAstInfoPrinterLegacyPass(llvm::outs());
|
||||
polly::createCodeGenerationPass();
|
||||
#ifdef GPU_CODEGEN
|
||||
polly::createPPCGCodeGenerationPass();
|
||||
polly::createManagedMemoryRewritePassPass();
|
||||
#endif
|
||||
polly::createIslScheduleOptimizerWrapperPass();
|
||||
polly::createIslScheduleOptimizerPrinterLegacyPass(llvm::outs());
|
||||
polly::createMaximalStaticExpansionPass();
|
||||
polly::createFlattenSchedulePass();
|
||||
polly::createFlattenSchedulePrinterLegacyPass(llvm::errs());
|
||||
polly::createForwardOpTreeWrapperPass();
|
||||
polly::createForwardOpTreePrinterLegacyPass(llvm::errs());
|
||||
polly::createDeLICMWrapperPass();
|
||||
polly::createDeLICMPrinterLegacyPass(llvm::outs());
|
||||
polly::createDumpModuleWrapperPass("", true);
|
||||
polly::createDumpFunctionWrapperPass("");
|
||||
polly::createSimplifyWrapperPass(0);
|
||||
polly::createSimplifyPrinterLegacyPass(llvm::outs());
|
||||
polly::createPruneUnprofitableWrapperPass();
|
||||
}
|
||||
} PollyForcePassLinking; // Force link by creating a global definition.
|
||||
} // namespace
|
||||
|
||||
namespace llvm {
|
||||
class PassRegistry;
|
||||
void initializeCodePreparationPass(llvm::PassRegistry &);
|
||||
void initializeScopInlinerPass(llvm::PassRegistry &);
|
||||
void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeScopInfoRegionPassPass(PassRegistry &);
|
||||
void initializeScopInfoPrinterLegacyRegionPassPass(llvm::PassRegistry &);
|
||||
void initializeScopInfoWrapperPassPass(PassRegistry &);
|
||||
void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &);
|
||||
void initializeDeadCodeElimWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeJSONExporterPass(llvm::PassRegistry &);
|
||||
void initializeJSONImporterPass(llvm::PassRegistry &);
|
||||
void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeDependenceInfoPrinterLegacyFunctionPassPass(
|
||||
llvm::PassRegistry &);
|
||||
void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeCodeGenerationPass(llvm::PassRegistry &);
|
||||
#ifdef GPU_CODEGEN
|
||||
void initializePPCGCodeGenerationPass(llvm::PassRegistry &);
|
||||
void initializeManagedMemoryRewritePassPass(llvm::PassRegistry &);
|
||||
#endif
|
||||
void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeMaximalStaticExpanderPass(llvm::PassRegistry &);
|
||||
void initializePollyCanonicalizePass(llvm::PassRegistry &);
|
||||
void initializeFlattenSchedulePass(llvm::PassRegistry &);
|
||||
void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeForwardOpTreeWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &);
|
||||
void initializeDeLICMWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializePolyhedralInfoPass(llvm::PassRegistry &);
|
||||
void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif
|
||||
|
@ -91,11 +91,14 @@ private:
|
||||
ScopInfo *SI;
|
||||
DependenceInfoWrapperPass *DI;
|
||||
};
|
||||
|
||||
llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
} // end namespace polly
|
||||
|
||||
namespace llvm {
|
||||
class PassRegistry;
|
||||
void initializePolyhedralInfoPass(llvm::PassRegistry &);
|
||||
void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif
|
||||
|
@ -18,6 +18,7 @@ class PassRegistry;
|
||||
|
||||
namespace polly {
|
||||
llvm::Pass *createIslScheduleOptimizerWrapperPass();
|
||||
llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
struct IslScheduleOptimizerPass
|
||||
: llvm::PassInfoMixin<IslScheduleOptimizerPass> {
|
||||
@ -41,6 +42,7 @@ private:
|
||||
|
||||
namespace llvm {
|
||||
void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &);
|
||||
}
|
||||
void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif // POLLY_SCHEDULEOPTIMIZER_H
|
||||
|
@ -56,8 +56,6 @@
|
||||
|
||||
namespace llvm {
|
||||
class AAResults;
|
||||
|
||||
void initializeScopDetectionWrapperPassPass(PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
namespace polly {
|
||||
@ -658,11 +656,18 @@ struct ScopDetectionWrapperPass : public FunctionPass {
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
||||
void releaseMemory() override;
|
||||
bool runOnFunction(Function &F) override;
|
||||
void print(raw_ostream &OS, const Module *) const override;
|
||||
void print(raw_ostream &OS, const Module *M = nullptr) const override;
|
||||
//@}
|
||||
|
||||
ScopDetection &getSD() const { return *Result; }
|
||||
};
|
||||
|
||||
llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
} // namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif // POLLY_SCOPDETECTION_H
|
||||
|
@ -35,11 +35,6 @@
|
||||
#include <cstddef>
|
||||
#include <forward_list>
|
||||
|
||||
namespace llvm {
|
||||
void initializeScopInfoRegionPassPass(PassRegistry &);
|
||||
void initializeScopInfoWrapperPassPass(PassRegistry &);
|
||||
} // end namespace llvm
|
||||
|
||||
namespace polly {
|
||||
using llvm::AnalysisInfoMixin;
|
||||
using llvm::ArrayRef;
|
||||
@ -2718,6 +2713,8 @@ public:
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
||||
};
|
||||
|
||||
llvm::Pass *createScopInfoPrinterLegacyRegionPass(raw_ostream &OS);
|
||||
|
||||
class ScopInfo {
|
||||
public:
|
||||
using RegionToScopMapTy = MapVector<Region *, std::unique_ptr<Scop>>;
|
||||
@ -2822,6 +2819,15 @@ public:
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
||||
};
|
||||
|
||||
llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
|
||||
} // end namespace polly
|
||||
|
||||
namespace llvm {
|
||||
void initializeScopInfoRegionPassPass(PassRegistry &);
|
||||
void initializeScopInfoPrinterLegacyRegionPassPass(PassRegistry &);
|
||||
void initializeScopInfoWrapperPassPass(PassRegistry &);
|
||||
void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &);
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // POLLY_SCOPINFO_H
|
||||
|
@ -50,6 +50,7 @@ llvm::SmallVector<MemoryAccess *, 32> getAccessesInOrder(ScopStmt &Stmt);
|
||||
///
|
||||
/// @return The Simplify pass.
|
||||
llvm::Pass *createSimplifyWrapperPass(int CallNo = 0);
|
||||
llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS);
|
||||
|
||||
struct SimplifyPass : public PassInfoMixin<SimplifyPass> {
|
||||
SimplifyPass(int CallNo = 0) : CallNo(CallNo) {}
|
||||
@ -76,6 +77,7 @@ private:
|
||||
|
||||
namespace llvm {
|
||||
void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
|
||||
void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &);
|
||||
} // namespace llvm
|
||||
|
||||
#endif /* POLLY_TRANSFORM_SIMPLIFY_H */
|
||||
|
@ -927,6 +927,55 @@ INITIALIZE_PASS_END(DependenceInfo, "polly-dependences",
|
||||
"Polly - Calculate dependences", false, false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from DependenceAnalysis.
|
||||
class DependenceInfoPrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
DependenceInfoPrinterLegacyPass() : DependenceInfoPrinterLegacyPass(outs()) {}
|
||||
|
||||
explicit DependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
DependenceInfo &P = getAnalysis<DependenceInfo>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for "
|
||||
<< "region: '" << S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<DependenceInfo>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char DependenceInfoPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createDependenceInfoPrinterLegacyPass(raw_ostream &OS) {
|
||||
return new DependenceInfoPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(DependenceInfoPrinterLegacyPass,
|
||||
"polly-print-dependences", "Polly - Print dependences",
|
||||
false, false);
|
||||
INITIALIZE_PASS_DEPENDENCY(DependenceInfo);
|
||||
INITIALIZE_PASS_END(DependenceInfoPrinterLegacyPass, "polly-print-dependences",
|
||||
"Polly - Print dependences", false, false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
const Dependences &
|
||||
DependenceInfoWrapperPass::getDependences(Scop *S,
|
||||
Dependences::AnalysisLevel Level) {
|
||||
@ -983,3 +1032,53 @@ INITIALIZE_PASS_END(
|
||||
DependenceInfoWrapperPass, "polly-function-dependences",
|
||||
"Polly - Calculate dependences for all the SCoPs of a function", false,
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from DependenceInfoWrapperPass.
|
||||
class DependenceInfoPrinterLegacyFunctionPass : public FunctionPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
DependenceInfoPrinterLegacyFunctionPass()
|
||||
: DependenceInfoPrinterLegacyFunctionPass(outs()) {}
|
||||
|
||||
explicit DependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS)
|
||||
: FunctionPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnFunction(Function &F) override {
|
||||
DependenceInfoWrapperPass &P = getAnalysis<DependenceInfoWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for function '"
|
||||
<< F.getName() << "':\n";
|
||||
P.print(OS);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
FunctionPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<DependenceInfoWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char DependenceInfoPrinterLegacyFunctionPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createDependenceInfoPrinterLegacyFunctionPass(raw_ostream &OS) {
|
||||
return new DependenceInfoPrinterLegacyFunctionPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(
|
||||
DependenceInfoPrinterLegacyFunctionPass, "polly-print-function-dependences",
|
||||
"Polly - Print dependences for all the SCoPs of a function", false, false);
|
||||
INITIALIZE_PASS_DEPENDENCY(DependenceInfoWrapperPass);
|
||||
INITIALIZE_PASS_END(DependenceInfoPrinterLegacyFunctionPass,
|
||||
"polly-print-function-dependences",
|
||||
"Polly - Print dependences for all the SCoPs of a function",
|
||||
false, false)
|
||||
|
@ -165,3 +165,52 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass);
|
||||
INITIALIZE_PASS_END(PolyhedralInfo, "polyhedral-info",
|
||||
"Polly - Interface to polyhedral analysis engine", false,
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from PolyhedralInfo.
|
||||
class PolyhedralInfoPrinterLegacyPass : public FunctionPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
PolyhedralInfoPrinterLegacyPass() : PolyhedralInfoPrinterLegacyPass(outs()) {}
|
||||
explicit PolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: FunctionPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnFunction(Function &F) override {
|
||||
PolyhedralInfo &P = getAnalysis<PolyhedralInfo>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for function '"
|
||||
<< F.getName() << "':\n";
|
||||
P.print(OS);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
FunctionPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<PolyhedralInfo>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char PolyhedralInfoPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createPolyhedralInfoPrinterLegacyPass(raw_ostream &OS) {
|
||||
return new PolyhedralInfoPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(
|
||||
PolyhedralInfoPrinterLegacyPass, "print-polyhedral-info",
|
||||
"Polly - Print interface to polyhedral analysis engine analysis", false,
|
||||
false);
|
||||
INITIALIZE_PASS_DEPENDENCY(PolyhedralInfo);
|
||||
INITIALIZE_PASS_END(
|
||||
PolyhedralInfoPrinterLegacyPass, "print-polyhedral-info",
|
||||
"Polly - Print interface to polyhedral analysis engine analysis", false,
|
||||
false)
|
||||
|
@ -2043,3 +2043,50 @@ INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass);
|
||||
INITIALIZE_PASS_DEPENDENCY(OptimizationRemarkEmitterWrapperPass);
|
||||
INITIALIZE_PASS_END(ScopDetectionWrapperPass, "polly-detect",
|
||||
"Polly - Detect static control parts (SCoPs)", false, false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from ScopDetectionWrapperPass.
|
||||
class ScopDetectionPrinterLegacyPass : public FunctionPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
ScopDetectionPrinterLegacyPass() : ScopDetectionPrinterLegacyPass(outs()) {}
|
||||
|
||||
explicit ScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: FunctionPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnFunction(Function &F) override {
|
||||
ScopDetectionWrapperPass &P = getAnalysis<ScopDetectionWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for function '"
|
||||
<< F.getName() << "':\n";
|
||||
P.print(OS);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
FunctionPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<ScopDetectionWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char ScopDetectionPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createScopDetectionPrinterLegacyPass(raw_ostream &OS) {
|
||||
return new ScopDetectionPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(ScopDetectionPrinterLegacyPass, "polly-print-detect",
|
||||
"Polly - Print static control parts (SCoPs)", false,
|
||||
false);
|
||||
INITIALIZE_PASS_DEPENDENCY(ScopDetectionWrapperPass);
|
||||
INITIALIZE_PASS_END(ScopDetectionPrinterLegacyPass, "polly-print-detect",
|
||||
"Polly - Print static control parts (SCoPs)", false, false)
|
||||
|
@ -2643,6 +2643,57 @@ INITIALIZE_PASS_END(ScopInfoRegionPass, "polly-scops",
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
|
||||
/// Print result from ScopInfoRegionPass.
|
||||
class ScopInfoPrinterLegacyRegionPass : public RegionPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
ScopInfoPrinterLegacyRegionPass() : ScopInfoPrinterLegacyRegionPass(outs()) {}
|
||||
|
||||
explicit ScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS)
|
||||
: RegionPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnRegion(Region *R, RGPassManager &RGM) override {
|
||||
ScopInfoRegionPass &P = getAnalysis<ScopInfoRegionPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< R->getNameStr() << "' in function '"
|
||||
<< R->getEntry()->getParent()->getName() << "':\n";
|
||||
P.print(OS);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
RegionPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<ScopInfoRegionPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char ScopInfoPrinterLegacyRegionPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createScopInfoPrinterLegacyRegionPass(raw_ostream &OS) {
|
||||
return new ScopInfoPrinterLegacyRegionPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(ScopInfoPrinterLegacyRegionPass, "polly-print-scops",
|
||||
"Polly - Print polyhedral description of Scops", false,
|
||||
false);
|
||||
INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass);
|
||||
INITIALIZE_PASS_END(ScopInfoPrinterLegacyRegionPass, "polly-print-scops",
|
||||
"Polly - Print polyhedral description of Scops", false,
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
ScopInfo::ScopInfo(const DataLayout &DL, ScopDetection &SD, ScalarEvolution &SE,
|
||||
LoopInfo &LI, AliasAnalysis &AA, DominatorTree &DT,
|
||||
AssumptionCache &AC, OptimizationRemarkEmitter &ORE)
|
||||
@ -2773,3 +2824,53 @@ INITIALIZE_PASS_END(
|
||||
ScopInfoWrapperPass, "polly-function-scops",
|
||||
"Polly - Create polyhedral description of all Scops of a function", false,
|
||||
false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from ScopInfoWrapperPass.
|
||||
class ScopInfoPrinterLegacyFunctionPass : public FunctionPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
ScopInfoPrinterLegacyFunctionPass()
|
||||
: ScopInfoPrinterLegacyFunctionPass(outs()) {}
|
||||
explicit ScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS)
|
||||
: FunctionPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnFunction(Function &F) override {
|
||||
ScopInfoWrapperPass &P = getAnalysis<ScopInfoWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for function '"
|
||||
<< F.getName() << "':\n";
|
||||
P.print(OS);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
FunctionPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<ScopInfoWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char ScopInfoPrinterLegacyFunctionPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createScopInfoPrinterLegacyFunctionPass(raw_ostream &OS) {
|
||||
return new ScopInfoPrinterLegacyFunctionPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(
|
||||
ScopInfoPrinterLegacyFunctionPass, "polly-print-function-scops",
|
||||
"Polly - Print polyhedral description of all Scops of a function", false,
|
||||
false);
|
||||
INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass);
|
||||
INITIALIZE_PASS_END(
|
||||
ScopInfoPrinterLegacyFunctionPass, "polly-print-function-scops",
|
||||
"Polly - Print polyhedral description of all Scops of a function", false,
|
||||
false)
|
||||
|
@ -823,3 +823,49 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoRegionPass);
|
||||
INITIALIZE_PASS_DEPENDENCY(DependenceInfo);
|
||||
INITIALIZE_PASS_END(IslAstInfoWrapperPass, "polly-ast",
|
||||
"Polly - Generate an AST from the SCoP (isl)", false, false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from IslAstInfoWrapperPass.
|
||||
class IslAstInfoPrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
IslAstInfoPrinterLegacyPass() : IslAstInfoPrinterLegacyPass(outs()) {}
|
||||
explicit IslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
IslAstInfoWrapperPass &P = getAnalysis<IslAstInfoWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<IslAstInfoWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char IslAstInfoPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createIslAstInfoPrinterLegacyPass(raw_ostream &OS) {
|
||||
return new IslAstInfoPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(IslAstInfoPrinterLegacyPass, "polly-print-ast",
|
||||
"Polly - Print the AST from a SCoP (isl)", false, false);
|
||||
INITIALIZE_PASS_DEPENDENCY(IslAstInfoWrapperPass);
|
||||
INITIALIZE_PASS_END(IslAstInfoPrinterLegacyPass, "polly-print-ast",
|
||||
"Polly - Print the AST from a SCoP (isl)", false, false)
|
||||
|
@ -833,3 +833,49 @@ INITIALIZE_PASS_END(JSONImporter, "polly-import-jscop",
|
||||
"Polly - Import Scops from JSON"
|
||||
" (Reads a .jscop file for each Scop)",
|
||||
false, false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from JSONImporter.
|
||||
class JSONImporterPrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
JSONImporterPrinterLegacyPass() : JSONImporterPrinterLegacyPass(outs()){};
|
||||
explicit JSONImporterPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
JSONImporter &P = getAnalysis<JSONImporter>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<JSONImporter>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char JSONImporterPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS) {
|
||||
return new JSONImporterPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(JSONImporterPrinterLegacyPass, "polly-print-import-jscop",
|
||||
"Polly - Print Scop import result", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(JSONImporter)
|
||||
INITIALIZE_PASS_END(JSONImporterPrinterLegacyPass, "polly-print-import-jscop",
|
||||
"Polly - Print Scop import result", false, false)
|
||||
|
@ -257,23 +257,36 @@ void initializePollyPasses(llvm::PassRegistry &Registry) {
|
||||
initializeCodePreparationPass(Registry);
|
||||
initializeDeadCodeElimWrapperPassPass(Registry);
|
||||
initializeDependenceInfoPass(Registry);
|
||||
initializeDependenceInfoPrinterLegacyPassPass(Registry);
|
||||
initializeDependenceInfoWrapperPassPass(Registry);
|
||||
initializeDependenceInfoPrinterLegacyFunctionPassPass(Registry);
|
||||
initializeJSONExporterPass(Registry);
|
||||
initializeJSONImporterPass(Registry);
|
||||
initializeJSONImporterPrinterLegacyPassPass(Registry);
|
||||
initializeMaximalStaticExpanderPass(Registry);
|
||||
initializeIslAstInfoWrapperPassPass(Registry);
|
||||
initializeIslAstInfoPrinterLegacyPassPass(Registry);
|
||||
initializeIslScheduleOptimizerWrapperPassPass(Registry);
|
||||
initializeIslScheduleOptimizerPrinterLegacyPassPass(Registry);
|
||||
initializePollyCanonicalizePass(Registry);
|
||||
initializePolyhedralInfoPass(Registry);
|
||||
initializePolyhedralInfoPrinterLegacyPassPass(Registry);
|
||||
initializeScopDetectionWrapperPassPass(Registry);
|
||||
initializeScopDetectionPrinterLegacyPassPass(Registry);
|
||||
initializeScopInlinerPass(Registry);
|
||||
initializeScopInfoRegionPassPass(Registry);
|
||||
initializeScopInfoPrinterLegacyRegionPassPass(Registry);
|
||||
initializeScopInfoWrapperPassPass(Registry);
|
||||
initializeScopInfoPrinterLegacyFunctionPassPass(Registry);
|
||||
initializeCodegenCleanupPass(Registry);
|
||||
initializeFlattenSchedulePass(Registry);
|
||||
initializeFlattenSchedulePrinterLegacyPassPass(Registry);
|
||||
initializeForwardOpTreeWrapperPassPass(Registry);
|
||||
initializeForwardOpTreePrinterLegacyPassPass(Registry);
|
||||
initializeDeLICMWrapperPassPass(Registry);
|
||||
initializeDeLICMPrinterLegacyPassPass(Registry);
|
||||
initializeSimplifyWrapperPassPass(Registry);
|
||||
initializeSimplifyPrinterLegacyPassPass(Registry);
|
||||
initializeDumpModuleWrapperPassPass(Registry);
|
||||
initializePruneUnprofitableWrapperPassPass(Registry);
|
||||
}
|
||||
|
@ -1457,10 +1457,46 @@ public:
|
||||
};
|
||||
|
||||
char DeLICMWrapperPass::ID;
|
||||
|
||||
/// Print result from DeLICMWrapperPass.
|
||||
class DeLICMPrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
DeLICMPrinterLegacyPass() : DeLICMPrinterLegacyPass(outs()){};
|
||||
explicit DeLICMPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
DeLICMWrapperPass &P = getAnalysis<DeLICMWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<DeLICMWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char DeLICMPrinterLegacyPass::ID = 0;
|
||||
} // anonymous namespace
|
||||
|
||||
Pass *polly::createDeLICMWrapperPass() { return new DeLICMWrapperPass(); }
|
||||
|
||||
llvm::Pass *polly::createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS) {
|
||||
return new DeLICMPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
llvm::PreservedAnalyses polly::DeLICMPass::run(Scop &S,
|
||||
ScopAnalysisManager &SAM,
|
||||
ScopStandardAnalysisResults &SAR,
|
||||
@ -1495,3 +1531,9 @@ INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(DeLICMWrapperPass, "polly-delicm", "Polly - DeLICM/DePRE",
|
||||
false, false)
|
||||
|
||||
INITIALIZE_PASS_BEGIN(DeLICMPrinterLegacyPass, "polly-print-delicm",
|
||||
"Polly - Print DeLICM/DePRE", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(ScopInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(DeLICMPrinterLegacyPass, "polly-print-delicm",
|
||||
"Polly - Print DeLICM/DePRE", false, false)
|
||||
|
@ -96,11 +96,56 @@ public:
|
||||
};
|
||||
|
||||
char FlattenSchedule::ID;
|
||||
|
||||
/// Print result from FlattenSchedule.
|
||||
class FlattenSchedulePrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
FlattenSchedulePrinterLegacyPass()
|
||||
: FlattenSchedulePrinterLegacyPass(outs()){};
|
||||
explicit FlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
FlattenSchedule &P = getAnalysis<FlattenSchedule>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<FlattenSchedule>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char FlattenSchedulePrinterLegacyPass::ID = 0;
|
||||
} // anonymous namespace
|
||||
|
||||
Pass *polly::createFlattenSchedulePass() { return new FlattenSchedule(); }
|
||||
|
||||
Pass *polly::createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS) {
|
||||
return new FlattenSchedulePrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(FlattenSchedule, "polly-flatten-schedule",
|
||||
"Polly - Flatten schedule", false, false)
|
||||
INITIALIZE_PASS_END(FlattenSchedule, "polly-flatten-schedule",
|
||||
"Polly - Flatten schedule", false, false)
|
||||
|
||||
INITIALIZE_PASS_BEGIN(FlattenSchedulePrinterLegacyPass,
|
||||
"polly-print-flatten-schedule",
|
||||
"Polly - Print flattened schedule", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(FlattenSchedule)
|
||||
INITIALIZE_PASS_END(FlattenSchedulePrinterLegacyPass,
|
||||
"polly-print-flatten-schedule",
|
||||
"Polly - Print flattened schedule", false, false)
|
||||
|
@ -1143,12 +1143,48 @@ public:
|
||||
}; // class ForwardOpTree
|
||||
|
||||
char ForwardOpTreeWrapperPass::ID;
|
||||
|
||||
/// Print result from ForwardOpTreeWrapperPass.
|
||||
class ForwardOpTreePrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
ForwardOpTreePrinterLegacyPass() : ForwardOpTreePrinterLegacyPass(outs()){};
|
||||
explicit ForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
ForwardOpTreeWrapperPass &P = getAnalysis<ForwardOpTreeWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<ForwardOpTreeWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char ForwardOpTreePrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createForwardOpTreeWrapperPass() {
|
||||
return new ForwardOpTreeWrapperPass();
|
||||
}
|
||||
|
||||
Pass *polly::createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS) {
|
||||
return new ForwardOpTreePrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
llvm::PreservedAnalyses ForwardOpTreePass::run(Scop &S,
|
||||
ScopAnalysisManager &SAM,
|
||||
ScopStandardAnalysisResults &SAR,
|
||||
@ -1167,3 +1203,9 @@ INITIALIZE_PASS_BEGIN(ForwardOpTreeWrapperPass, "polly-optree",
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(ForwardOpTreeWrapperPass, "polly-optree",
|
||||
"Polly - Forward operand tree", false, false)
|
||||
|
||||
INITIALIZE_PASS_BEGIN(ForwardOpTreePrinterLegacyPass, "polly-print-optree",
|
||||
"Polly - Print forward operand tree result", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(ForwardOpTreeWrapperPass)
|
||||
INITIALIZE_PASS_END(ForwardOpTreePrinterLegacyPass, "polly-print-optree",
|
||||
"Polly - Print forward operand tree result", false, false)
|
||||
|
@ -1008,3 +1008,53 @@ IslScheduleOptimizerPrinterPass::run(Scop &S, ScopAnalysisManager &SAM,
|
||||
SPMUpdater &U) {
|
||||
return runIslScheduleOptimizerUsingNPM(S, SAM, SAR, U, &OS);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from IslScheduleOptimizerWrapperPass.
|
||||
class IslScheduleOptimizerPrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
IslScheduleOptimizerPrinterLegacyPass()
|
||||
: IslScheduleOptimizerPrinterLegacyPass(outs()) {}
|
||||
explicit IslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
IslScheduleOptimizerWrapperPass &P =
|
||||
getAnalysis<IslScheduleOptimizerWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<IslScheduleOptimizerWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char IslScheduleOptimizerPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createIslScheduleOptimizerPrinterLegacyPass(raw_ostream &OS) {
|
||||
return new IslScheduleOptimizerPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(IslScheduleOptimizerPrinterLegacyPass,
|
||||
"polly-print-opt-isl",
|
||||
"Polly - Print optimizer schedule of SCoP", false, false);
|
||||
INITIALIZE_PASS_DEPENDENCY(IslScheduleOptimizerWrapperPass)
|
||||
INITIALIZE_PASS_END(IslScheduleOptimizerPrinterLegacyPass,
|
||||
"polly-print-opt-isl",
|
||||
"Polly - Print optimizer schedule of SCoP", false, false)
|
||||
|
@ -850,3 +850,49 @@ INITIALIZE_PASS_BEGIN(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify",
|
||||
INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
|
||||
INITIALIZE_PASS_END(SimplifyWrapperPass, "polly-simplify", "Polly - Simplify",
|
||||
false, false)
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
/// Print result from SimplifyWrapperPass.
|
||||
class SimplifyPrinterLegacyPass : public ScopPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
SimplifyPrinterLegacyPass() : SimplifyPrinterLegacyPass(outs()) {}
|
||||
explicit SimplifyPrinterLegacyPass(llvm::raw_ostream &OS)
|
||||
: ScopPass(ID), OS(OS) {}
|
||||
|
||||
bool runOnScop(Scop &S) override {
|
||||
SimplifyWrapperPass &P = getAnalysis<SimplifyWrapperPass>();
|
||||
|
||||
OS << "Printing analysis '" << P.getPassName() << "' for region: '"
|
||||
<< S.getRegion().getNameStr() << "' in function '"
|
||||
<< S.getFunction().getName() << "':\n";
|
||||
P.printScop(OS, S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
ScopPass::getAnalysisUsage(AU);
|
||||
AU.addRequired<SimplifyWrapperPass>();
|
||||
AU.setPreservesAll();
|
||||
}
|
||||
|
||||
private:
|
||||
llvm::raw_ostream &OS;
|
||||
};
|
||||
|
||||
char SimplifyPrinterLegacyPass::ID = 0;
|
||||
} // namespace
|
||||
|
||||
Pass *polly::createSimplifyPrinterLegacyPass(raw_ostream &OS) {
|
||||
return new SimplifyPrinterLegacyPass(OS);
|
||||
}
|
||||
|
||||
INITIALIZE_PASS_BEGIN(SimplifyPrinterLegacyPass, "polly-print-simplify",
|
||||
"Polly - Print Simplify actions", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(SimplifyWrapperPass)
|
||||
INITIALIZE_PASS_END(SimplifyPrinterLegacyPass, "polly-print-simplify",
|
||||
"Polly - Print Simplify actions", false, false)
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: opt %loadPolly -polly-codegen < %s
|
||||
; RUN: opt %loadPolly -polly-detect -analyze < %s | not FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -disable-output < %s
|
||||
; RUN: opt %loadPolly -polly-print-detect -disable-output < %s | not FileCheck %s
|
||||
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s
|
||||
; RUN: opt %loadPolly -polly-ast -disable-output < %s
|
||||
|
||||
;int bar1();
|
||||
;int bar2();
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: not --crash opt %loadPolly -polly-import-jscop -analyze 2>&1 < %s | FileCheck %s
|
||||
; RUN: not --crash opt %loadPolly -polly-import-jscop -disable-output 2>&1 < %s | FileCheck %s
|
||||
;
|
||||
; Check that we do not allow to access elements not accessed before because the
|
||||
; alignment information would become invalid.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-scops -analyze -polly-import-jscop -polly-import-jscop-postfix=transformed < %s 2>&1 | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN
|
||||
;
|
||||
; for (i = 0; i < _PB_NI; i++)
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-scops -analyze -polly-import-jscop -polly-import-jscop-postfix=transformed < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
|
||||
;
|
||||
; #define Ni 1056
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-import-jscop -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-print-import-jscop -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; Check that we allow the new access functions even though they access
|
||||
; different locations than the original ones (but the alignment is the
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-import-jscop -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-print-import-jscop -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-import-jscop-postfix=transformed -polly-import-jscop -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
|
||||
|
||||
define void @map_scalar_access(double* noalias nonnull %A) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
;RUN: opt %loadPolly -polly-import-jscop -analyze -polly-import-jscop-postfix=transformed < %s | FileCheck %s
|
||||
;RUN: opt %loadPolly -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck %s
|
||||
;RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -polly-vectorizer=polly -S < %s | FileCheck %s --check-prefix=JSCOPVEC
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; This code has failed the scev based code generation as the scev in the scop
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; AST: #pragma simd
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -basic-aa -polly-parallel -polly-parallel-force -polly-invariant-load-hoisting=true -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; The interesting part of this test case is the instruction:
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; Make sure we correctly forward the reference to 'A' to the OpenMP subfunction.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-codegen -S < %s | FileCheck %s -check-prefix=IR
|
||||
;
|
||||
; float A[100];
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: opt %loadPolly -polly-import-jscop \
|
||||
; RUN: -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-import-jscop \
|
||||
; RUN: -disable-output < %s | FileCheck %s
|
||||
|
||||
; RUN: opt %loadPolly -polly-import-jscop \
|
||||
; RUN: -polly-codegen -S < %s \
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-import-jscop -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST-STRIDE4
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-import-jscop -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST-STRIDE4
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-import-jscop -polly-codegen -S < %s | FileCheck %s -check-prefix=IR-STRIDE4
|
||||
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -polly-omp-backend=LLVM -polly-scheduling=static -polly-scheduling-chunksize=43 -S -verify-dom-info < %s | FileCheck %s -check-prefix=LIBOMP-IR-STATIC-CHUNKED
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -tbaa -polly-parallel -polly-parallel-force -polly-parallel-force -polly-invariant-load-hoisting=true -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; #define N 1024
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-ast -analyze < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-parallel -polly-parallel-force -polly-codegen -S -verify-dom-info < %s | FileCheck %s -check-prefix=IR
|
||||
|
||||
; This test case verifies that we create correct code even if two OpenMP loops
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-process-unprofitable -analyze -polly-codegen < %s
|
||||
; RUN: opt %loadPolly -polly-process-unprofitable -polly-codegen -disable-output < %s
|
||||
;
|
||||
; CHECK: store i32 %tmp14_p_scalar_, i32* %tmp14.s2a
|
||||
; CHECK: %tmp14.final_reload = load i32, i32* %tmp14.s2a
|
||||
|
@ -1,4 +1,4 @@
|
||||
;RUN: opt %loadPolly -polly-prepare -polly-ast -analyze < %s | FileCheck %s
|
||||
;RUN: opt %loadPolly -polly-prepare -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;int A[1];
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-codegen -analyze < %s
|
||||
; RUN: opt %loadPolly -polly-codegen -disable-output < %s
|
||||
;
|
||||
; This caused dominance problems at some point as we do bail out during
|
||||
; code generation. Just verify it runs through.
|
||||
|
@ -1,8 +1,5 @@
|
||||
; RUN: opt %loadPolly -analyze -polly-ast -polly-vectorizer=polly < %s | \
|
||||
; RUN: FileCheck %s -check-prefix=AST
|
||||
|
||||
; RUN: opt %loadPolly -polly-codegen -polly-vectorizer=polly -S < %s | \
|
||||
; RUN: FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-vectorizer=polly -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-vectorizer=polly -polly-codegen -S < %s | FileCheck %s
|
||||
;
|
||||
; void foo(float *A) {
|
||||
; for (long i = 0; i < 16; i++) {
|
||||
|
@ -1,7 +1,5 @@
|
||||
; RUN: opt %loadPolly \
|
||||
; RUN: -polly-scops -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly \
|
||||
; RUN: -S -polly-codegen < %s | FileCheck %s --check-prefix=CODEGEN
|
||||
; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
|
||||
;
|
||||
; CHECK: [N] -> { Stmt_bb11[i0, i1] : i0 < N and i1 >= 0 and 3i1 <= -3 + i0 };
|
||||
; CODEGEN: polly
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly < %s -analyze -polly-scops -polly-process-unprofitable -polly-invariant-load-hoisting | FileCheck %s -check-prefix=SCOPS
|
||||
; RUN: opt %loadPolly -polly-process-unprofitable -polly-invariant-load-hoisting -polly-print-scops -disable-output < %s | FileCheck %s -check-prefix=SCOPS
|
||||
; RUN: opt %loadPolly -S < %s -polly-codegen -polly-process-unprofitable -polly-invariant-load-hoisting | FileCheck %s -check-prefix=CODEGEN
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -analyze -polly-scops -polly-invariant-load-hoisting=true %s | FileCheck %s --check-prefix=SCOP
|
||||
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=SCOP
|
||||
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s
|
||||
;
|
||||
; The offset of the %tmp1 load wrt. to %buff (62 bytes) is not divisible
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -analyze -polly-scops -polly-invariant-load-hoisting=true < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-scops -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR
|
||||
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true --polly-overflow-tracking=always < %s | FileCheck %s --check-prefix=IRA
|
||||
;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -analyze < %s
|
||||
; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s
|
||||
;
|
||||
; Check that this does not crash as the invariant load is not executed (thus
|
||||
; not preloaded) but still referenced by one of the parameters.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-scops -polly-invariant-load-hoisting=true -analyze < %s | FileCheck %s --check-prefix=SCOP
|
||||
; RUN: opt %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s --check-prefix=SCOP
|
||||
; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s
|
||||
;
|
||||
; SCOP: Assumed Context:
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-detect -polly-codegen -polly-invariant-load-hoisting=true -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-detect -polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; This crashed at some point as the pointer returned by the call
|
||||
; to @__errno_location is invariant and defined in the SCoP but not
|
||||
|
@ -1,6 +1,4 @@
|
||||
; RUN: opt %loadPolly -S -polly-scops -analyze \
|
||||
; RUN: -polly-invariant-load-hoisting=true %s \
|
||||
; RUN: | FileCheck %s -check-prefix=SCOPS
|
||||
; RUN: opt %loadPolly -S -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s -check-prefix=SCOPS
|
||||
; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s
|
||||
;
|
||||
; Check we generate valid code.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-ast -polly-ast-detect-parallel -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
|
||||
|
||||
; Verify that we actually detect this loop as the innermost loop even though
|
||||
; there is a conditional inside.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-codegen -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-position=before-vectorizer -polly-scops -analyze < %s | FileCheck %s --check-prefix=SCOP
|
||||
; RUN: opt %loadPolly -polly-position=before-vectorizer -polly-print-scops -disable-output < %s | FileCheck %s --check-prefix=SCOP
|
||||
; RUN: opt %loadPolly -polly-position=before-vectorizer -polly-codegen -S < %s | FileCheck %s --check-prefix=IR
|
||||
|
||||
; The IR has two ScopArrayInfo for the value %next.0. This used to produce two
|
||||
|
@ -1,7 +1,5 @@
|
||||
; RUN: opt %loadPolly -analyze -polly-scops \
|
||||
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -S -polly-codegen -polly-overflow-tracking=never \
|
||||
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR
|
||||
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-print-scops -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-invariant-load-hoisting=true -polly-overflow-tracking=never -polly-codegen -S < %s | FileCheck %s --check-prefix=IR
|
||||
;
|
||||
; As (p + q) can overflow we have to check that we load from
|
||||
; I[p + q] only if it does not.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s --check-prefix=IR
|
||||
;
|
||||
; Check that we guard the divisions because we moved them and thereby increased
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -analyze -polly-ast < %s | FileCheck %s --check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST
|
||||
; RUN: opt %loadPolly -S -polly-codegen < %s | FileCheck %s
|
||||
;
|
||||
; void jd(int *A, int c) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
|
||||
|
||||
; void f(int a[], int N, float *P) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
|
||||
;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-process-unprofitable -polly-scops -polly-ast -analyze -S < %s | FileCheck %s --check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-process-unprofitable -polly-scops -polly-print-ast -disable-output -S < %s | FileCheck %s --check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-process-unprofitable -polly-scops -polly-codegen -S < %s | FileCheck %s --check-prefix=CODEGEN
|
||||
|
||||
target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128"
|
||||
|
@ -1,5 +1,4 @@
|
||||
; RUN: opt %loadPolly -basic-aa -polly-ast -analyze \
|
||||
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -basic-aa -polly-invariant-load-hoisting=true -polly-print-ast -disable-output < %s | FileCheck %s --allow-empty
|
||||
|
||||
;#include <string.h>
|
||||
;#include <stdio.h>
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -polly-ast-detect-parallel -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; CHECK: pragma simd reduction
|
||||
;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-codegen -verify-dom-info -analyze < %s
|
||||
; RUN: opt %loadPolly -polly-codegen -verify-dom-info -disable-output < %s
|
||||
|
||||
; Verify that the DominatorTree is preserved correctly for the inserted
|
||||
; %polly.stmt.exit.exit block, which serves as new exit block for the generated
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s --check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s --check-prefix=AST
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
|
||||
|
||||
; TODO: FIXME: Simplify the context.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -polly-allow-nonaffine -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -polly-allow-nonaffine -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include <stdio.h>
|
||||
;#include <stdlib.h>
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -S -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; XFAIL: *
|
||||
|
||||
;define N 20
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen < %s
|
||||
|
||||
;#define N 20
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -S -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; XFAIL: *
|
||||
|
||||
;#define N 20
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#include "limits.h"
|
||||
;#define N 20
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=3]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
|
||||
; RUN: opt %loadPolly -polly-codegen -loops -analyze < %s | FileCheck %s -check-prefix=LOOPS
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s -check-prefix=SCALAR
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s -check-prefix=SCALAR --allow-empty
|
||||
|
||||
;#define N 20
|
||||
;
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: opt %loadPolly -polly-detect -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -verify-region-info -analyze < %s
|
||||
; RUN: opt %loadPolly -polly-print-detect -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-codegen -verify-region-info -disable-output < %s
|
||||
;
|
||||
; This is a scop directly precedented by a region, i.e. the scop's entry is the
|
||||
; region's exit block. This test is to ensure that the RegionInfo is correctly
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -S < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-ast -disable-output < %s | FileCheck %s
|
||||
; XFAIL: *
|
||||
|
||||
;int bar1();
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
; RUN: opt %loadPolly -polly-ast -analyze -polly-ignore-aliasing < %s | FileCheck %s -check-prefix=SCALAR
|
||||
; RUN: opt %loadPolly -polly-print-ast -polly-ignore-aliasing -disable-output < %s | FileCheck %s -check-prefix=SCALAR
|
||||
; RUN: opt %loadPolly -polly-codegen -polly-ignore-aliasing -disable-output < %s
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-scops -analyze \
|
||||
; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-codegen -analyze \
|
||||
; RUN: -polly-invariant-load-hoisting=true < %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-scops \
|
||||
; RUN: -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-codegen \
|
||||
; RUN: -polly-invariant-load-hoisting=true -disable-output < %s
|
||||
|
||||
; The loop for.body is a scop with invariant load hoisting, but does not
|
||||
; terminate predictably for ScalarEvolution. The scalar %1 therefore is not
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-codegen -analyze < %s
|
||||
; RUN: opt %loadPolly -polly-codegen -disable-output < %s
|
||||
;
|
||||
;
|
||||
; void f(int *A) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-delicm -disable-output -pass-remarks-missed=polly-delicm < %s 2>&1 | FileCheck %s -check-prefix=REMARKS
|
||||
;
|
||||
; ForwardOptree changes the SCoP and may already map some accesses.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; The domain of bb14 contradicts the SCoP's assumptions. This leads to
|
||||
; 'anything goes' inside the statement since it is never executed,
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
|
||||
; When %b is 0, %for.body13 is an infite loop. In this case the loaded
|
||||
; value %1 is not used anywhere.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-delicm -analyze < %s | FileCheck -match-full-lines %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-delicm -disable-output < %s | FileCheck -match-full-lines %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-delicm>)" -disable-output < %s | FileCheck -match-full-lines %s
|
||||
;
|
||||
; Check that PHI mapping works even in presence of a memset whose'
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; void func(double *A) {
|
||||
; for (int j = 0; j < 2; j += 1) { /* outer */
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; void func(double *A) {
|
||||
; for (int j = 0; j < 2; j += 1) { /* outer */
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; void func(double *A) {
|
||||
; for (int j = 0; j < 2; j += 1) { /* outer */
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; void func(double *A) {
|
||||
; fsomeval = 21.0 + 21.0;
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly -polly-print-delicm -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; void func(double *A) {
|
||||
; for (int j = 0; j < 2; j += 1) { /* outer */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user