llvm-project/flang/runtime
peter klausler 5e1421b22f [flang] Implement MATMUL in the runtime
Define an API for the transformational intrinsic function MATMUL,
implement it, and add some basic unit tests.  The large number of
possible argument type combinations are covered by a set of
generalized templates that are instantiated for each valid
pair of possible argument types.

Places where BLAS-2/3 routines could be called for acceleration
are marked with TODOs.  Handling for other special cases (e.g.,
known-shape 3x3 matrices and vectors) are deferred.

Some minor tweaks were made to the recent related implementation
of DOT_PRODUCT to reflect lessons learned.

Differential Revision: https://reviews.llvm.org/D102652
2021-05-18 10:59:52 -07:00
..
CMakeLists.txt [flang] Implement MATMUL in the runtime 2021-05-18 10:59:52 -07:00
ISO_Fortran_binding.cpp [flang] Fix handling of elem_len in CFI_establish 2021-05-03 08:08:07 +00:00
allocatable.cpp [flang] Update DE/ALLOCATE statement runtime message processing 2021-03-12 15:42:06 -08:00
allocatable.h [flang] Update DE/ALLOCATE statement runtime message processing 2021-03-12 15:42:06 -08:00
buffer.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
buffer.h [flang] Fix Boolean flag arguments 2021-04-14 10:19:44 -07:00
c-or-cpp.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
character.cpp [flang] Remove redundant reallocation 2021-05-07 08:54:09 +00:00
character.h [flang] Remove interfaces for Character[Min|Max][Val|Loc]. NFC 2021-04-28 07:58:06 +00:00
complex-reduction.c [flang] Implement DOT_PRODUCT in the runtime 2021-05-13 10:40:07 -07:00
complex-reduction.h [flang] Implement DOT_PRODUCT in the runtime 2021-05-13 10:40:07 -07:00
config.h.cmake [flang] Support platforms without strerror_r 2020-03-28 16:46:43 -05:00
connection.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
connection.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
cpp-type.h [flang] Implement reductions in the runtime 2021-04-01 11:23:50 -07:00
derived.cpp [flang] Implement derived type description table encoding 2020-12-08 10:26:58 -08:00
derived.h [flang] Implement derived type description table encoding 2020-12-08 10:26:58 -08:00
descriptor-io.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
descriptor.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
descriptor.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
dot-product.cpp [flang] Implement MATMUL in the runtime 2021-05-18 10:59:52 -07:00
edit-input.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
edit-input.h [flang][msvc] Avoid dependence on long double 2020-10-07 15:12:08 -07:00
edit-output.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
edit-output.h [flang][msvc] Avoid dependence on long double 2020-10-07 15:12:08 -07:00
entry-names.h [flang] Implement reductions in the runtime 2021-04-01 11:23:50 -07:00
environment.cpp [flang] Implement byte-swapped external unformatted I/O in runtime 2020-07-21 18:14:46 -07:00
environment.h [flang] Implement byte-swapped external unformatted I/O in runtime 2020-07-21 18:14:46 -07:00
extrema.cpp [flang] Implement NORM2 in the runtime 2021-05-07 13:23:21 -07:00
file.cpp [Flang] Fix compilation on MinGW-w64 2021-02-17 21:53:48 -06:00
file.h [flang] Acquire file accessibility, size, positioning 2020-08-03 16:42:48 -07:00
findloc.cpp [flang] (NFC) Break up flang/runtime/reduction.cpp 2021-04-22 15:24:10 -07:00
format-implementation.h [flang] Fix Gw.d format output 2020-09-30 18:02:25 -07:00
format.cpp [flang] Implement byte-swapped external unformatted I/O in runtime 2020-07-21 18:14:46 -07:00
format.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
internal-unit.cpp [flang] External I/O runtime work, repackaged (part 1) 2020-07-02 15:17:26 -07:00
internal-unit.h [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
io-api.cpp [flang] Support legacy extension OPEN(ACCESS='APPEND') 2021-05-13 11:51:20 -07:00
io-api.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
io-error.cpp [flang] Fix race condition in runtime 2021-05-06 11:09:30 -07:00
io-error.h [flang] Handle END= situations better in runtime input 2021-04-14 09:34:14 -07:00
io-stmt.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
io-stmt.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
iostat.cpp [flang] Define new runtime error IOSTAT values (I/O runtime work part 4) 2020-07-03 12:41:33 -07:00
iostat.h [flang] Define new runtime error IOSTAT values (I/O runtime work part 4) 2020-07-03 12:41:33 -07:00
lock.h [flang] More Fortran runtime support for CHARACTER operations 2020-06-17 15:51:48 -07:00
magic-numbers.h [flang] Implement runtime support for basic ALLOCATE/DEALLOCATE 2020-11-12 10:21:40 -08:00
main.cpp [flang] Implement byte-swapped external unformatted I/O in runtime 2020-07-21 18:14:46 -07:00
main.h [flang] Implement byte-swapped external unformatted I/O in runtime 2020-07-21 18:14:46 -07:00
matmul.cpp [flang] Implement MATMUL in the runtime 2021-05-18 10:59:52 -07:00
matmul.h [flang] Implement MATMUL in the runtime 2021-05-18 10:59:52 -07:00
memory.cpp [flang] Reformat with latest clang-format and .clang-format 2020-03-28 21:00:16 -07:00
memory.h [flang] Implement runtime support for INQUIRE statements 2020-08-03 17:15:08 -07:00
misc-intrinsic.cpp [flang] TRANSFER() intrinsic function 2021-04-02 10:41:37 -07:00
misc-intrinsic.h [flang] TRANSFER() intrinsic function 2021-04-02 10:41:37 -07:00
namelist.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
namelist.h [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
numeric.cpp [flang] Define missing & needed IEEE_ARITHMETIC symbols 2021-04-19 11:44:43 -07:00
numeric.h [flang] Define missing & needed IEEE_ARITHMETIC symbols 2021-04-19 11:44:43 -07:00
pgmath.h.inc [flang] Rework host runtime folding and enable REAL(2) folding with it. 2020-10-14 16:40:44 +02:00
product.cpp [flang] (NFC) Break up flang/runtime/reduction.cpp 2021-04-22 15:24:10 -07:00
random.cpp [flang] Fix narrowing warning on macos 2021-04-12 09:40:52 -07:00
random.h [flang] RANDOM_NUMBER, RANDOM_SEED, RANDOM_INIT in runtime 2021-04-09 17:03:11 -07:00
reduction-templates.h [flang] (NFC) Break up flang/runtime/reduction.cpp 2021-04-22 15:24:10 -07:00
reduction.cpp [flang] Implement DOT_PRODUCT in the runtime 2021-05-13 10:40:07 -07:00
reduction.h [flang] Implement MATMUL in the runtime 2021-05-18 10:59:52 -07:00
stat.cpp [flang] Update DE/ALLOCATE statement runtime message processing 2021-03-12 15:42:06 -08:00
stat.h [flang] Update DE/ALLOCATE statement runtime message processing 2021-03-12 15:42:06 -08:00
stop.cpp [flang] Extend runtime API for PAUSE to allow a stop code 2020-10-01 17:20:11 -07:00
stop.h [flang] Extend runtime API for PAUSE to allow a stop code 2020-10-01 17:20:11 -07:00
sum.cpp [flang] (NFC) Break up flang/runtime/reduction.cpp 2021-04-22 15:24:10 -07:00
terminator.cpp [flang] Fix race condition in runtime 2021-05-06 11:09:30 -07:00
terminator.h [flang] Implement IPARITY, PARITY, and FINDLOC reductions 2021-04-20 12:25:42 -07:00
tools.cpp [flang] Implement reductions in the runtime 2021-04-01 11:23:50 -07:00
tools.h [flang] Implement DOT_PRODUCT in the runtime 2021-05-13 10:40:07 -07:00
transformational.cpp [flang] Implement reductions in the runtime 2021-04-01 11:23:50 -07:00
transformational.h [flang] Implement reductions in the runtime 2021-04-01 11:23:50 -07:00
type-code.cpp [flang] Implement reductions in the runtime 2021-04-01 11:23:50 -07:00
type-code.h [flang] Correct TypeCode::IsLogical() 2021-04-12 12:57:22 -07:00
type-info.h [flang] Implement derived type description table encoding 2020-12-08 10:26:58 -08:00
unit-map.cpp [flang] Implement runtime support for INQUIRE statements 2020-08-03 17:15:08 -07:00
unit-map.h [flang] Implement runtime support for INQUIRE statements 2020-08-03 17:15:08 -07:00
unit.cpp [flang] Implement NAMELIST I/O in the runtime 2021-05-06 11:18:36 -07:00
unit.h [flang] Runtime must defer formatted/unformatted determination 2021-05-06 11:06:43 -07:00