49bd444fc3
This operation will be used to transform MATMUL(TRANSPOSE(a), b). The transformation will go in the following stages: 1. Lowering to hlfir.transpose and hlfir.matmul 2. Canonicalise to hlfir.matmul_transpose 3. hlfir.matmul_transpose will be lowered to FIR as a new runtime library call Step 2 (and this operation) are included for consistency with the other hlfir intrinsic operations and to avoid mixing concerns in the intrinsic lowering pass. In step 3, a new runtime library call is used because this operation is most easily implemented in one go (the transposed indexing actually makes the indexing simpler than for a normal matrix multiplication). In the long run, it is intended that HLFIR will allow the same buffer to be shared between different runtime calls without temporary allocations, but in this specific case we can do even better than that with a dedicated implementation. This should speed up galgel from SPEC2000 (but this hadn't been tested yet). The optimization was implemented in Classic Flang. Reviewed By: vzakhari Differential Revision: https://reviews.llvm.org/D145957 |
||
---|---|---|
.. | ||
_static | ||
_templates | ||
_themes/llvm-theme | ||
FIR | ||
Aliasing.md | ||
AliasingAnalysisFIR.md | ||
ArrayComposition.md | ||
BijectiveInternalNameUniquing.md | ||
C++17.md | ||
C++style.md | ||
Calls.md | ||
Character.md | ||
CMakeLists.txt | ||
compiler_driver.png | ||
ComplexOperations.md | ||
conf.py | ||
ControlFlowGraph.md | ||
DesignGuideline.md | ||
Directives.md | ||
DoConcurrent.md | ||
doxygen-mainpage.dox | ||
doxygen.cfg.in | ||
Extensions.md | ||
f2018-grammar.md | ||
FIRArrayOperations.md | ||
flang-c-style.el | ||
FlangDriver.md | ||
FlangOptionsDocs.td | ||
FortranFeatureHistory.md | ||
FortranForCProgrammers.md | ||
FortranIR.md | ||
FortranLLVMTestSuite.md | ||
frontend_driver.png | ||
fstack-arrays.md | ||
GettingInvolved.md | ||
HighLevelFIR.md | ||
ImplementingASemanticCheck.md | ||
index.md | ||
Intrinsics.md | ||
IntrinsicTypes.md | ||
IORuntimeInternals.md | ||
LabelResolution.md | ||
ModFiles.md | ||
OpenMP-4.5-grammar.md | ||
OpenMP-semantics.md | ||
OptionComparison.md | ||
Overview.md | ||
ParameterizedDerivedTypes.md | ||
ParserCombinators.md | ||
Parsing.md | ||
PolymorphicEntities.md | ||
Preprocessing.md | ||
ProcedurePointer.md | ||
PullRequestChecklist.md | ||
ReleaseNotes.md | ||
RuntimeDescriptor.md | ||
RuntimeTypeInfo.md | ||
Semantics.md |