Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions include/tsar/Support/DiagnosticKinds.td
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,16 @@ def error_expect_function_param : Error<"expected function parameter name">;

def note_record_member_unknown: Error<"record has no member '%0'">;
def note_declared_here: Note<"declared here">;

def warn_loop_swapping_diff_reduction: Warning<"unable to swap loops due to different reduction kinds of variable '%0' declared at %1">;
def warn_loop_swapping_unknown_reduction: Warning<"unable to swap loops due to unknown reduction kind of variable '%0' declared at %1">;
def warn_loop_swapping_true_dependence: Warning<"unable to swap loops due to the true dependence of variable '%0' declared at %1">;
def warn_loop_swapping_anti_dependence: Warning<"unable to swap loops due to the anti dependence of variable '%0' declared at %1">;
def warn_loop_swapping_output_dependence: Warning<"unable to swap loops due to the output dependence of variable '%0' declared at %1">;
def warn_loop_swapping_missing_loop: Warning<"not enough loops for swapping">;
def warn_loop_swapping_redundant_loop: Warning<"too many loops for swapping, ignore redundant">;
def warn_loop_swapping_no_loop_id: Warning<"cannot find loop ID to perform swapping">;
def warn_loop_swapping_lost_loop: Warning<"cannot match ForStmt with its IR">;
def error_loop_swapping_redundant_stmt: Error<"pragma should only contain loops or other pragma">;
def error_loop_swapping_expect_compound: Error<"expected compound statement after pragma">;

2 changes: 2 additions & 0 deletions include/tsar/Support/Directives.td
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ def Replace : Clause<"replace", Transform,

def With : Clause<"with", Transform, [LParen, Identifier, RParen]>;

def SwapLoops: Clause<"swaploops", Transform>;

def Private : Clause<"private", Analysis,
[LParen, Identifier, ZeroOrMore<[Comma, Identifier]>, RParen]>;

Expand Down
8 changes: 8 additions & 0 deletions include/tsar/Transform/Clang/Passes.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,13 @@ ModulePass * createClangStructureReplacementPass();
/// Initialize a pass to perform replacement of access to structure fields
/// with separate variables.
void initializeClangStructureReplacementPassPass(PassRegistry &Registry);

/// Creates a pass to perform swapping of loops.
FunctionPass * createClangLoopSwapping();

/// Initializes a pass to perform swapping of loops.
void initializeClangLoopSwappingPass(PassRegistry &Registry);

}

#endif//TSAR_CLANG_TRANSFORM_PASSES_H
3 changes: 2 additions & 1 deletion lib/Transform/Clang/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
set(TRANSFORM_SOURCES Passes.cpp ExprPropagation.cpp Inline.cpp RenameLocal.cpp
DeadDeclsElimination.cpp FormatPass.cpp OpenMPAutoPar.cpp
SharedMemoryAutoPar.cpp DVMHSMAutoPar.cpp StructureReplacement.cpp)
SharedMemoryAutoPar.cpp DVMHSMAutoPar.cpp StructureReplacement.cpp
LoopSwapping.cpp)

if(MSVC_IDE)
file(GLOB_RECURSE TRANSFORM_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
Expand Down
Loading