From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 83640385696E for ; Sun, 1 Oct 2023 20:10:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 83640385696E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-CSE-ConnectionGUID: +3qdhEDaST2LkpXPCLH4KQ== X-CSE-MsgGUID: ocvPiZW7RjyD/DJH/JwfAA== X-IronPort-AV: E=Sophos;i="6.03,191,1694764800"; d="scan'208";a="18280081" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 01 Oct 2023 12:10:39 -0800 IronPort-SDR: C0IBweUAd0CkLwta2kfTnsizseTJvDRTIhu71q6ECGBiW8N4plbnBcuH27dwKw2VEDeXxjxow7 2rc8DE+ria7NsOzzF5qurxcHbny7V6vZzT+atSfT1D4zZADS/YdMKYhKyZV1b91UL8gcdkJJh8 EJa74MNLB58dexs2FGJkDTZaorymLC8c6UZxb/Ln6cwi0qfewvooOnTNU+odk57S9UfJHCiBs/ oatQDaIUtzAr4JP//LWQL6jdPTwrpHn48Kto9YT5FxDbG1HP1/dkBZBJ+lGOxDqg7VhuWGiEyQ Ya4= From: Sandra Loosemore To: CC: , Subject: [WIP 0/4] OpenMP: support for loop transformations Date: Sun, 1 Oct 2023 14:10:17 -0600 Message-ID: <20231001201021.785572-1-sandra@codesourcery.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: svr-orw-mbx-14.mgc.mentorg.com (147.34.90.214) To svr-orw-mbx-13.mgc.mentorg.com (147.34.90.213) X-Spam-Status: No, score=-2.4 required=5.0 tests=BAYES_00,HEADER_FROM_DIFFERENT_DOMAINS,HEXHASH_WORD,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,URIBL_BLACK autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This series of patches is an update of Frederik's previous loop transformation patch set, previously posted here: https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614564.html that has been updated to resolve conflicts with my set of imperfectly-nested loops patches and other changes on mainline since March. It does not address Jakub's code review concerns that these patches are lowering the transformations too late, and that this needs to be done in the front ends instead; the purpose of this iteration of the patch set is to provide a baseline for doing that rewrite. I used the version of Frederik's patches that were committed to the OG13 branch as the basis for this work, along with several follow-up bug fixes, some glue and additional test cases I had added on OG13 with my own imperfectly-nested loops patches there, the support for C++ attribute syntax that I had later put on OG13 (which required resolving some conflicts with different changes on mainline), etc. The specific OG13 commits that were on my merge list were: ea770a4a9f6 openmp: Add Fortran support for "omp unroll" directive c17983cd052 openmp: Add C/C++ support for "omp unroll" directive 5e11b7ffc84 openacc: Rename OMP_CLAUSE_TILE to OMP_CLAUSE_OACC_TILE c6f772b089d openmp: Add Fortran support for "omp tile" 5b9c9f10892 openmp: Add C/C++ support for "omp tile" 5c71451f714 openmp: Add Fortran support for loop transformations on inner loops 3baddf440b7 openmp: Add C/C++ support for loop transformations on inner loops c89addc938d openmp: Fix loop transformation tests 94a75fb12e6 openmp: Fix initialization for 'unroll full' 8adfa43a19e openmp: Fix diagnostic message for "omp unroll" e59a5a62eb5 openmp: Fix number of iterations computation for "omp unroll full" 62e64a55d3f OpenMP: Handle loop transformation clauses in nested functions 09623de2186 OpenMP: C support for imperfectly-nested loops 546b3460346 OpenMP: C++ support for imperfectly-nested loops bf38eb98eaf OpenMP: New c/c++ testcases for imperfectly-nested loops 4b17c1a010b OpenMP: Refactor and tidy Fortran front-end code for loop transformations e10b1be8777 OpenMP: Fortran support for imperfectly nested loops ff563b2c8dd OpenMP: C++ attribute syntax fixes/testcases for loop transformations Because there were so many incremental changes I've reorganized Frederik's patch set into a smaller set of consolidated changes, and written new changelogs. -Sandra Frederik Harwath (4): openacc: Rename OMP_CLAUSE_TILE to OMP_CLAUSE_OACC_TILE OpenMP: Language-independent parts of loop transform support. OpenMP: Fortran front-end support for loop transforms. OpenMP: C and C++ front-end support for loop transforms. gcc/Makefile.in | 1 + gcc/c-family/c-gimplify.cc | 1 + gcc/c-family/c-omp.cc | 12 +- gcc/c-family/c-pragma.cc | 2 + gcc/c-family/c-pragma.h | 7 +- gcc/c/c-parser.cc | 527 ++++- gcc/c/c-typeck.cc | 10 +- gcc/cp/cp-gimplify.cc | 3 + gcc/cp/parser.cc | 541 ++++- gcc/cp/pt.cc | 15 +- gcc/cp/semantics.cc | 103 +- gcc/doc/invoke.texi | 9 + gcc/fortran/dump-parse-tree.cc | 28 + gcc/fortran/gfortran.h | 12 +- gcc/fortran/match.h | 2 + gcc/fortran/openmp.cc | 736 +++++-- gcc/fortran/parse.cc | 48 + gcc/fortran/resolve.cc | 6 + gcc/fortran/st.cc | 2 + gcc/fortran/trans-openmp.cc | 186 +- gcc/fortran/trans.cc | 2 + gcc/gimple-pretty-print.cc | 6 + gcc/gimple.h | 1 + gcc/gimplify.cc | 73 +- gcc/omp-general.cc | 22 +- gcc/omp-general.h | 1 + gcc/omp-low.cc | 6 +- gcc/omp-transform-loops.cc | 1815 +++++++++++++++++ gcc/params.opt | 8 + gcc/passes.def | 1 + .../c-c++-common/gomp/imperfect-attributes.c | 18 +- .../loop-transforms/imperfect-loop-nest.c | 11 + .../gomp/loop-transforms/tile-1.c | 160 ++ .../gomp/loop-transforms/tile-2.c | 179 ++ .../gomp/loop-transforms/tile-3.c | 109 + .../gomp/loop-transforms/tile-4.c | 322 +++ .../gomp/loop-transforms/tile-5.c | 150 ++ .../gomp/loop-transforms/tile-6.c | 34 + .../gomp/loop-transforms/tile-7.c | 31 + .../gomp/loop-transforms/tile-8.c | 40 + .../gomp/loop-transforms/unroll-1.c | 133 ++ .../gomp/loop-transforms/unroll-2.c | 95 + .../gomp/loop-transforms/unroll-3.c | 18 + .../gomp/loop-transforms/unroll-4.c | 19 + .../gomp/loop-transforms/unroll-5.c | 19 + .../gomp/loop-transforms/unroll-6.c | 20 + .../gomp/loop-transforms/unroll-7.c | 144 ++ .../gomp/loop-transforms/unroll-8.c | 76 + .../gomp/loop-transforms/unroll-inner-1.c | 15 + .../gomp/loop-transforms/unroll-inner-2.c | 29 + .../gomp/loop-transforms/unroll-non-rect-1.c | 37 + .../gomp/loop-transforms/unroll-non-rect-2.c | 22 + .../gomp/loop-transforms/unroll-simd-1.c | 84 + gcc/testsuite/g++.dg/gomp/attrs-4.C | 2 +- gcc/testsuite/g++.dg/gomp/for-1.C | 2 +- .../gomp/loop-transforms/attrs-tile-1.C | 164 ++ .../gomp/loop-transforms/attrs-tile-2.C | 174 ++ .../gomp/loop-transforms/attrs-tile-3.C | 111 + .../gomp/loop-transforms/attrs-unroll-1.C | 135 ++ .../gomp/loop-transforms/attrs-unroll-2.C | 81 + .../gomp/loop-transforms/attrs-unroll-3.C | 20 + .../loop-transforms/attrs-unroll-inner-1.C | 15 + .../loop-transforms/attrs-unroll-inner-2.C | 29 + .../loop-transforms/attrs-unroll-inner-3.C | 71 + .../g++.dg/gomp/loop-transforms/tile-1.h | 27 + .../g++.dg/gomp/loop-transforms/tile-1a.C | 27 + .../g++.dg/gomp/loop-transforms/tile-1b.C | 27 + .../g++.dg/gomp/loop-transforms/unroll-1.C | 42 + .../g++.dg/gomp/loop-transforms/unroll-2.C | 47 + .../g++.dg/gomp/loop-transforms/unroll-3.C | 37 + gcc/testsuite/g++.dg/gomp/pr94512.C | 2 +- gcc/testsuite/gcc.dg/gomp/for-1.c | 2 +- gcc/testsuite/gcc.dg/gomp/for-11.c | 2 +- gcc/testsuite/gfortran.dg/gomp/collapse1.f90 | 6 +- .../gomp/loop-transforms/inner-loops.f90 | 124 ++ .../gomp/loop-transforms/tile-1.f90 | 163 ++ .../gomp/loop-transforms/tile-1a.f90 | 10 + .../gomp/loop-transforms/tile-2.f90 | 80 + .../gomp/loop-transforms/tile-3.f90 | 18 + .../gomp/loop-transforms/tile-4.f90 | 95 + .../loop-transforms/tile-imperfect-nest.f90 | 93 + .../loop-transforms/tile-inner-loops-1.f90 | 16 + .../loop-transforms/tile-inner-loops-2.f90 | 23 + .../loop-transforms/tile-inner-loops-3.f90 | 22 + .../loop-transforms/tile-inner-loops-3a.f90 | 31 + .../loop-transforms/tile-inner-loops-4.f90 | 30 + .../loop-transforms/tile-inner-loops-4a.f90 | 26 + .../loop-transforms/tile-inner-loops-5.f90 | 123 ++ .../tile-non-rectangular-1.f90 | 71 + .../tile-non-rectangular-2.f90 | 12 + .../gomp/loop-transforms/tile-unroll-1.f90 | 57 + .../gomp/loop-transforms/unroll-1.f90 | 277 +++ .../gomp/loop-transforms/unroll-10.f90 | 7 + .../gomp/loop-transforms/unroll-11.f90 | 75 + .../gomp/loop-transforms/unroll-12.f90 | 29 + .../gomp/loop-transforms/unroll-2.f90 | 22 + .../gomp/loop-transforms/unroll-3.f90 | 17 + .../gomp/loop-transforms/unroll-4.f90 | 18 + .../gomp/loop-transforms/unroll-5.f90 | 18 + .../gomp/loop-transforms/unroll-6.f90 | 19 + .../gomp/loop-transforms/unroll-7.f90 | 62 + .../gomp/loop-transforms/unroll-8.f90 | 22 + .../gomp/loop-transforms/unroll-9.f90 | 18 + .../loop-transforms/unroll-inner-loop.f90 | 57 + .../loop-transforms/unroll-no-clause-1.f90 | 20 + .../loop-transforms/unroll-no-clause-2.f90 | 21 + .../loop-transforms/unroll-no-clause-3.f90 | 23 + .../loop-transforms/unroll-non-rect-1.f90 | 31 + .../gomp/loop-transforms/unroll-simd-1.f90 | 244 +++ .../gomp/loop-transforms/unroll-simd-2.f90 | 57 + .../gomp/loop-transforms/unroll-tile-1.f90 | 37 + .../gomp/loop-transforms/unroll-tile-2.f90 | 41 + .../loop-transforms/unroll-tile-inner-1.f90 | 25 + gcc/testsuite/gfortran.dg/gomp/pure-1.f90 | 26 + gcc/testsuite/gfortran.dg/gomp/pure-2.f90 | 25 - gcc/tree-core.h | 14 +- gcc/tree-nested.cc | 18 +- gcc/tree-pass.h | 1 + gcc/tree-pretty-print.cc | 56 +- gcc/tree.cc | 10 +- gcc/tree.def | 6 + gcc/tree.h | 23 +- .../matrix-no-directive-unroll-full-1.C | 13 + .../libgomp.c++/loop-transforms/tile-2.C | 69 + .../libgomp.c++/loop-transforms/tile-3.C | 28 + .../libgomp.c++/loop-transforms/unroll-1.C | 73 + .../libgomp.c++/loop-transforms/unroll-2.C | 34 + .../loop-transforms/unroll-full-tile.C | 84 + .../imperfect-transform-1.c | 79 + .../imperfect-transform-2.c | 79 + .../loop-transforms/matrix-1.h | 70 + .../loop-transforms/matrix-constant-iter.h | 71 + .../loop-transforms/matrix-helper.h | 19 + .../loop-transforms/matrix-no-directive-1.c | 11 + .../matrix-no-directive-unroll-full-1.c | 13 + .../matrix-omp-distribute-parallel-for-1.c | 8 + .../loop-transforms/matrix-omp-for-1.c | 13 + .../matrix-omp-parallel-for-1.c | 13 + .../matrix-omp-parallel-masked-taskloop-1.c | 8 + ...trix-omp-parallel-masked-taskloop-simd-1.c | 8 + .../matrix-omp-target-parallel-for-1.c | 15 + ...p-target-teams-distribute-parallel-for-1.c | 10 + .../loop-transforms/matrix-omp-taskloop-1.c | 8 + ...trix-omp-teams-distribute-parallel-for-1.c | 8 + .../loop-transforms/matrix-simd-1.c | 8 + .../matrix-transform-variants-1.h | 191 ++ .../loop-transforms/unroll-1.c | 78 + .../loop-transforms/unroll-non-rect-1.c | 131 ++ .../target-imperfect-transform-1.c | 82 + .../target-imperfect-transform-2.c | 82 + .../libgomp.fortran/imperfect-transform-1.f90 | 70 + .../libgomp.fortran/imperfect-transform-2.f90 | 70 + .../loop-transforms/inner-1.f90 | 77 + .../loop-transforms/nested-fn.f90 | 19 + .../loop-transforms/tile-1.f90 | 71 + .../loop-transforms/tile-2.f90 | 117 ++ .../loop-transforms/tile-unroll-1.f90 | 112 + .../loop-transforms/tile-unroll-2.f90 | 71 + .../loop-transforms/tile-unroll-3.f90 | 77 + .../loop-transforms/tile-unroll-4.f90 | 75 + .../loop-transforms/unroll-1.f90 | 54 + .../loop-transforms/unroll-2.f90 | 88 + .../loop-transforms/unroll-3.f90 | 59 + .../loop-transforms/unroll-4.f90 | 72 + .../loop-transforms/unroll-5.f90 | 55 + .../loop-transforms/unroll-6.f90 | 105 + .../loop-transforms/unroll-7.f90 | 198 ++ .../loop-transforms/unroll-7a.f90 | 7 + .../loop-transforms/unroll-7b.f90 | 7 + .../loop-transforms/unroll-7c.f90 | 7 + .../loop-transforms/unroll-8.f90 | 38 + .../loop-transforms/unroll-simd-1.f90 | 34 + .../loop-transforms/unroll-tile-1.f90 | 112 + .../loop-transforms/unroll-tile-2.f90 | 71 + .../target-imperfect-transform-1.f90 | 73 + .../target-imperfect-transform-2.f90 | 73 + 176 files changed, 12107 insertions(+), 298 deletions(-) create mode 100644 gcc/omp-transform-loops.cc create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/imperfect-loop-nest.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-2.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-3.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-4.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-5.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-6.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-7.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/tile-8.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-2.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-3.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-4.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-5.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-6.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-7.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-8.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-inner-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-inner-2.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-non-rect-1.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-non-rect-2.c create mode 100644 gcc/testsuite/c-c++-common/gomp/loop-transforms/unroll-simd-1.c create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-tile-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-tile-2.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-tile-3.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-unroll-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-unroll-2.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-unroll-3.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-unroll-inner-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-unroll-inner-2.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/attrs-unroll-inner-3.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/tile-1.h create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/tile-1a.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/tile-1b.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/unroll-1.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/unroll-2.C create mode 100644 gcc/testsuite/g++.dg/gomp/loop-transforms/unroll-3.C create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/inner-loops.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-1a.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-3.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-4.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-imperfect-nest.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-3.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-3a.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-4.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-4a.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-inner-loops-5.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-non-rectangular-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-non-rectangular-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/tile-unroll-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-10.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-11.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-12.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-3.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-4.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-5.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-6.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-7.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-8.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-9.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-inner-loop.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-no-clause-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-no-clause-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-no-clause-3.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-non-rect-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-simd-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-simd-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-tile-1.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-tile-2.f90 create mode 100644 gcc/testsuite/gfortran.dg/gomp/loop-transforms/unroll-tile-inner-1.f90 create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-full-1.C create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/tile-2.C create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/tile-3.C create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/unroll-1.C create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/unroll-2.C create mode 100644 libgomp/testsuite/libgomp.c++/loop-transforms/unroll-full-tile.C create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect-transform-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/imperfect-transform-2.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-1.h create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-constant-iter.h create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-helper.h create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-unroll-full-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distribute-parallel-for-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-for-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-simd-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-parallel-for-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-teams-distribute-parallel-for-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloop-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-distribute-parallel-for-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-transform-variants-1.h create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-1.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-2.c create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect-transform-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/imperfect-transform-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/inner-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/nested-fn.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/tile-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/tile-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/tile-unroll-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/tile-unroll-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/tile-unroll-3.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/tile-unroll-4.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-3.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-4.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-5.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-6.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-7.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-7a.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-7b.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-7c.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-8.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-simd-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-tile-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/loop-transforms/unroll-tile-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect-transform-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-imperfect-transform-2.f90 -- 2.31.1