
hlfir.copy_in implements copying non-contiguous array slices for functions that take in arrays required to be contiguous through flang-rt. For large arrays of trivial types, this can incur overhead compared to a plain, inlined copy loop. To address that, add a new InlineHLFIRCopyIn optimisation pass to inline hlfir.copy_in operations for trivial types. For the time being, the pattern is only applied in cases where the copy-in does not require a corresponding copy-out, such as when the function being called declares the array parameter as intent(in). Applying this optimisation reduces the runtime of thornado-mini's DeleptonizationProblem by about 10%. --------- Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
44 lines
739 B
CMake
44 lines
739 B
CMake
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
|
|
add_flang_library(HLFIRTransforms
|
|
BufferizeHLFIR.cpp
|
|
ConvertToFIR.cpp
|
|
InlineElementals.cpp
|
|
InlineHLFIRAssign.cpp
|
|
InlineHLFIRCopyIn.cpp
|
|
LowerHLFIRIntrinsics.cpp
|
|
LowerHLFIROrderedAssignments.cpp
|
|
ScheduleOrderedAssignments.cpp
|
|
SimplifyHLFIRIntrinsics.cpp
|
|
OptimizedBufferization.cpp
|
|
PropagateFortranVariableAttributes.cpp
|
|
|
|
DEPENDS
|
|
CUFAttrsIncGen
|
|
FIRDialect
|
|
HLFIROpsIncGen
|
|
|
|
LINK_LIBS
|
|
CUFAttrs
|
|
FIRAnalysis
|
|
FIRDialect
|
|
FIRBuilder
|
|
FIRDialectSupport
|
|
FIRSupport
|
|
FIRTransforms
|
|
FlangOpenMPTransforms
|
|
HLFIRDialect
|
|
|
|
LINK_COMPONENTS
|
|
AsmParser
|
|
AsmPrinter
|
|
Remarks
|
|
|
|
MLIR_DEPS
|
|
${dialect_libs}
|
|
|
|
MLIR_LIBS
|
|
MLIRIR
|
|
${dialect_libs}
|
|
)
|