From 63e6d22d49eee417ea39fcb16bcf7e25a4b304d2 Mon Sep 17 00:00:00 2001 From: Egor Mayorov Date: Tue, 25 Mar 2025 15:18:49 +0300 Subject: [PATCH] New pass --- CMakeLists.txt | 6 +++++- src/Sapfor.cpp | 5 +++++ src/Sapfor.h | 3 +++ src/SwapOperators/swapOperators.cpp | 14 ++++++++++++++ src/SwapOperators/swapOperators.h | 6 ++++++ src/Utils/PassManager.h | 2 ++ 6 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/SwapOperators/swapOperators.cpp create mode 100644 src/SwapOperators/swapOperators.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b0e020..7bf1700 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,6 +204,8 @@ set(TR_INLINER src/Transformations/FunctionInlining/inliner.cpp src/Transformations/FunctionInlining/inliner.h) set(TR_RENAME_SYMBOLS src/Transformations/RenameSymbols/rename_symbols.cpp src/Transformations/RenameSymbols/rename_symbols.h) +SET(SWAP_OPERATORS src/SwapOperators/swapOperators.cpp + src/SwapOperators/swapOperators.h) set(TRANSFORMS ${TR_DEAD_CODE} @@ -433,7 +435,8 @@ set(SOURCE_EXE ${ZLIB} ${GR_LAYOUT} ${PR_PARAM} - ${PROJ_MAN}) + ${PROJ_MAN} + ${SWAP_OPERATORS}) add_executable(Sapfor_F ${SOURCE_EXE}) source_group (CFGraph FILES ${CFG}) @@ -477,6 +480,7 @@ source_group (Utils FILES ${UTILS}) source_group (VerificationCode FILES ${VERIF}) source_group (ProjectParameters FILES ${PR_PARAM}) source_group (ProjectManipulation FILES ${PROJ_MAN}) +source_group (SwapOperators FILES ${SWAP_OPERATORS}) source_group (VisualizerCalls FILES ${VS_CALLS}) source_group (VisualizerCalls\\GraphLayout FILES ${GR_LAYOUT}) diff --git a/src/Sapfor.cpp b/src/Sapfor.cpp index ff10c5c..2f68754 100644 --- a/src/Sapfor.cpp +++ b/src/Sapfor.cpp @@ -89,6 +89,7 @@ #include "Transformations/DeadCodeRemoving/dead_code.h" #include "Transformations/RenameSymbols/rename_symbols.h" #include "Transformations/FunctionInlining/inliner.h" +#include "SwapOperators/swapOperators.h" #include "ProjectParameters/projectParameters.h" @@ -939,6 +940,10 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne internalExit = err; } } + else if (curr_regime == SWAP_OPERATORS) + { + runSwapOperators(loopGraph, fullIR); + } else if (curr_regime == PRIVATE_REMOVING_ANALYSIS) { auto itFound = loopGraph.find(file->filename()); diff --git a/src/Sapfor.h b/src/Sapfor.h index 8277cb8..b7b1969 100644 --- a/src/Sapfor.h +++ b/src/Sapfor.h @@ -122,6 +122,8 @@ enum passes { CREATE_INTER_TREE, INSERT_INTER_TREE, + SWAP_OPERATORS, + SHADOW_GROUPING, INLINE_PROCEDURES, FILL_PARALLEL_REG_IR, @@ -319,6 +321,7 @@ static void setPassValues() passNames[CHECK_PAR_REG_DIR] = "CHECK_PAR_REG_DIR"; passNames[CREATE_INTER_TREE] = "CREATE_INTER_TREE"; passNames[INSERT_INTER_TREE] = "INSERT_INTER_TREE"; + passNames[SWAP_OPERATORS] = "SWAP_OPERATORS"; passNames[CREATE_PARALLEL_REGIONS] = "CREATE_PARALLEL_REGIONS"; passNames[PRIVATE_REMOVING_ANALYSIS] = "PRIVATE_REMOVING_ANALYSIS"; passNames[PRIVATE_REMOVING] = "PRIVATE_REMOVING"; diff --git a/src/SwapOperators/swapOperators.cpp b/src/SwapOperators/swapOperators.cpp new file mode 100644 index 0000000..d86615b --- /dev/null +++ b/src/SwapOperators/swapOperators.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include +#include + +#include "swapOperators.h" + + +void runSwapOperators(std::map>& loopGraph, std::map>& FullIR) +{ + std::cout << "SWAP_OPERATORS Pass" << std::endl; + return; +}; \ No newline at end of file diff --git a/src/SwapOperators/swapOperators.h b/src/SwapOperators/swapOperators.h new file mode 100644 index 0000000..7120367 --- /dev/null +++ b/src/SwapOperators/swapOperators.h @@ -0,0 +1,6 @@ +#pragma once + +#include "../GraphLoop/graph_loops.h" +#include "../CFGraph/CFGraph.h" + +void runSwapOperators(std::map>& loopGraph, std::map>& FullIR); diff --git a/src/Utils/PassManager.h b/src/Utils/PassManager.h index 24b591a..6049037 100644 --- a/src/Utils/PassManager.h +++ b/src/Utils/PassManager.h @@ -212,6 +212,8 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(BUILD_IR) <= Pass(SUBST_EXPR_RD) <= Pass(SUBST_EXPR_RD_AND_UNPARSE); + Pass(BUILD_IR) <= Pass(SWAP_OPERATORS) <= Pass(PRIVATE_REMOVING); + list({ LOOP_ANALYZER_DATA_DIST_S1, SUBST_EXPR_RD } ) <= Pass(PRIVATE_REMOVING_ANALYSIS); list({ PRIVATE_REMOVING_ANALYSIS, REVERT_SUBST_EXPR_RD }) <= Pass(PRIVATE_REMOVING);