From 343587dc64ca31197a75505a69fc6ed6799449d2 Mon Sep 17 00:00:00 2001 From: Maxim Blumenthal Date: Mon, 13 Jul 2015 13:08:13 +0000 Subject: [PATCH] Update libgomp/testsuite/*/examples-4/* according to latest version (4.0.2) 2015-07-13 Maxim Blumenthal * testsuite/libgomp.c++/examples-4/e.53.2.C: Renamed to... * testsuite/libgomp.c++/examples-4/declare_target-2.C: ...this. * testsuite/libgomp.c++/examples-4/e.51.5.C: Renamed to... * testsuite/libgomp.c++/examples-4/target_data-5.C: ...this. * testsuite/libgomp.c/examples-4/e.56.3.c: Renamed to... * testsuite/libgomp.c/examples-4/array_sections-3.c: ...this. * testsuite/libgomp.c/examples-4/e.56.4.c: Renamed to... * testsuite/libgomp.c/examples-4/array_sections-4.c: ...this. * testsuite/libgomp.c/examples-4/e.55.1.c: Renamed to... * testsuite/libgomp.c/examples-4/async_target-1.c: ...this. * testsuite/libgomp.c/examples-4/e.55.2.c: Renamed to... * testsuite/libgomp.c/examples-4/async_target-2.c: ...this. (vec_mult_ref): Remove v1 and v2 arguments, turn them into local variables. (vec_mult): Likewise. Add #pragma omp taskwait. (main): Adjust caller. * testsuite/libgomp.c/examples-4/e.53.1.c: Renamed to... * testsuite/libgomp.c/examples-4/declare_target-1.c: ...this. * testsuite/libgomp.c/examples-4/e.53.3.c: Renamed to... * testsuite/libgomp.c/examples-4/declare_target-3.c: ...this. * testsuite/libgomp.c/examples-4/e.53.4.c: Renamed to... * testsuite/libgomp.c/examples-4/declare_target-4.c: ...this. * testsuite/libgomp.c/examples-4/e.53.5.c: Renamed to... * testsuite/libgomp.c/examples-4/declare_target-5.c: ...this. * testsuite/libgomp.c/examples-4/e.57.1.c: Renamed to... * testsuite/libgomp.c/examples-4/device-1.c: ...this. * testsuite/libgomp.c/examples-4/e.57.2.c: Renamed to... * testsuite/libgomp.c/examples-4/device-2.c: ...this. * testsuite/libgomp.c/examples-4/e.57.3.c: Renamed to... * testsuite/libgomp.c/examples-4/device-3.c: ...this. * testsuite/libgomp.c/examples-4/simd-1.c: New file. * testsuite/libgomp.c/examples-4/simd-2.c: New file. * testsuite/libgomp.c/examples-4/simd-3.c: New file. * testsuite/libgomp.c/examples-4/simd-4.c: New file. * testsuite/libgomp.c/examples-4/simd-5.c: New file. * testsuite/libgomp.c/examples-4/simd-6.c: New file. * testsuite/libgomp.c/examples-4/simd-7.c: New file. * testsuite/libgomp.c/examples-4/simd-8.c: New file. * testsuite/libgomp.c/examples-4/e.50.1.c: Renamed to... * testsuite/libgomp.c/examples-4/target-1.c: ...this. * testsuite/libgomp.c/examples-4/e.50.2.c: Renamed to... * testsuite/libgomp.c/examples-4/target-2.c: ...this. * testsuite/libgomp.c/examples-4/e.50.3.c: Renamed to... * testsuite/libgomp.c/examples-4/target-3.c: ...this. * testsuite/libgomp.c/examples-4/e.50.4.c: Renamed to... * testsuite/libgomp.c/examples-4/target-4.c: ...this. * testsuite/libgomp.c/examples-4/e.50.5.c: Renamed to... * testsuite/libgomp.c/examples-4/target-5.c: ...this. * testsuite/libgomp.c/examples-4/e.51.1.c: Renamed to... * testsuite/libgomp.c/examples-4/target_data-1.c: ...this. * testsuite/libgomp.c/examples-4/e.51.2.c: Renamed to... * testsuite/libgomp.c/examples-4/target_data-2.c: ...this. * testsuite/libgomp.c/examples-4/e.51.3.c: Renamed to... * testsuite/libgomp.c/examples-4/target_data-3.c: ...this. * testsuite/libgomp.c/examples-4/e.51.4.c: Renamed to... * testsuite/libgomp.c/examples-4/target_data-4.c: ...this. * testsuite/libgomp.c/examples-4/e.51.6.c: Renamed to... * testsuite/libgomp.c/examples-4/target_data-6.c: ...this. * testsuite/libgomp.c/examples-4/e.51.7.c: Renamed to... * testsuite/libgomp.c/examples-4/target_data-7.c: ...this. * testsuite/libgomp.c/examples-4/e.52.1.c: Renamed to... * testsuite/libgomp.c/examples-4/target_update-1.c: ...this. * testsuite/libgomp.c/examples-4/e.52.2.c: Renamed to... * testsuite/libgomp.c/examples-4/target_update-2.c: ...this. * testsuite/libgomp.c/examples-4/task_dep-1.c: New file. * testsuite/libgomp.c/examples-4/task_dep-2.c: New file. * testsuite/libgomp.c/examples-4/task_dep-3.c: New file. * testsuite/libgomp.c/examples-4/task_dep-4.c: New file. * testsuite/libgomp.c/examples-4/task_dep-5.c: New file. * testsuite/libgomp.c/examples-4/e.54.2.c: Renamed to... * testsuite/libgomp.c/examples-4/teams-2.c: ...this. * testsuite/libgomp.c/examples-4/e.54.3.c: Renamed to... * testsuite/libgomp.c/examples-4/teams-3.c: ...this. * testsuite/libgomp.c/examples-4/e.54.4.c: Renamed to... * testsuite/libgomp.c/examples-4/teams-4.c: ...this. * testsuite/libgomp.c/examples-4/e.54.5.c: Renamed to... * testsuite/libgomp.c/examples-4/teams-5.c: ...this. * testsuite/libgomp.c/examples-4/e.54.6.c: Renamed to... * testsuite/libgomp.c/examples-4/teams-6.c: ...this. * testsuite/libgomp.fortran/examples-4/e.56.3.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/array_sections-3.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.56.4.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/array_sections-4.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.55.1.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/async_target-1.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.55.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/async_target-2.f90: ...this. (vec_mult): Add !$omp taskwait. * testsuite/libgomp.fortran/examples-4/e.53.1.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/declare_target-1.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.53.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/declare_target-2.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.53.3.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/declare_target-3.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.53.4.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/declare_target-4.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.53.5.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/declare_target-5.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.57.1.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/device-1.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.57.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/device-2.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.57.3.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/device-3.f90: ...this. * testsuite/libgomp.fortran/examples-4/simd-1.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-2.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-3.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-4.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-5.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-6.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-7.f90: New file. * testsuite/libgomp.fortran/examples-4/simd-8.f90: New file. * testsuite/libgomp.fortran/examples-4/e.50.1.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target-1.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.50.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target-2.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.50.3.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target-3.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.50.4.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target-4.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.50.5.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target-5.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.1.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-1.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-2.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.3.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-3.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.4.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-4.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.5.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-5.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.6.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-6.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.51.7.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_data-7.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.52.1.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_update-1.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.52.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/target_update-2.f90: ...this. * testsuite/libgomp.fortran/examples-4/task_dep-1.f90: New file. * testsuite/libgomp.fortran/examples-4/task_dep-2.f90: New file. * testsuite/libgomp.fortran/examples-4/task_dep-3.f90: New file. * testsuite/libgomp.fortran/examples-4/task_dep-4.f90: New file. * testsuite/libgomp.fortran/examples-4/task_dep-5.f90: New file. * testsuite/libgomp.fortran/examples-4/e.54.2.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/teams-2.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.54.3.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/teams-3.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.54.4.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/teams-4.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.54.5.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/teams-5.f90: ...this. * testsuite/libgomp.fortran/examples-4/e.54.6.f90: Renamed to... * testsuite/libgomp.fortran/examples-4/teams-6.f90: ...this. From-SVN: r225735 --- libgomp/ChangeLog | 158 ++++++++++++++++++ .../{e.53.2.C => declare_target-2.C} | 0 .../examples-4/{e.51.5.C => target_data-5.C} | 0 .../{e.56.3.c => array_sections-3.c} | 0 .../{e.56.4.c => array_sections-4.c} | 0 .../examples-4/{e.55.1.c => async_target-1.c} | 0 .../examples-4/{e.55.2.c => async_target-2.c} | 13 +- .../{e.53.1.c => declare_target-1.c} | 0 .../{e.53.3.c => declare_target-3.c} | 0 .../{e.53.4.c => declare_target-4.c} | 0 .../{e.53.5.c => declare_target-5.c} | 0 .../examples-4/{e.57.1.c => device-1.c} | 0 .../examples-4/{e.57.2.c => device-2.c} | 0 .../examples-4/{e.57.3.c => device-3.c} | 0 .../testsuite/libgomp.c/examples-4/simd-1.c | 65 +++++++ .../testsuite/libgomp.c/examples-4/simd-2.c | 90 ++++++++++ .../testsuite/libgomp.c/examples-4/simd-3.c | 61 +++++++ .../testsuite/libgomp.c/examples-4/simd-4.c | 58 +++++++ .../testsuite/libgomp.c/examples-4/simd-5.c | 76 +++++++++ .../testsuite/libgomp.c/examples-4/simd-6.c | 105 ++++++++++++ .../testsuite/libgomp.c/examples-4/simd-7.c | 41 +++++ .../testsuite/libgomp.c/examples-4/simd-8.c | 49 ++++++ .../examples-4/{e.50.1.c => target-1.c} | 0 .../examples-4/{e.50.2.c => target-2.c} | 0 .../examples-4/{e.50.3.c => target-3.c} | 0 .../examples-4/{e.50.4.c => target-4.c} | 0 .../examples-4/{e.50.5.c => target-5.c} | 0 .../examples-4/{e.51.1.c => target_data-1.c} | 0 .../examples-4/{e.51.2.c => target_data-2.c} | 0 .../examples-4/{e.51.3.c => target_data-3.c} | 0 .../examples-4/{e.51.4.c => target_data-4.c} | 0 .../examples-4/{e.51.6.c => target_data-6.c} | 0 .../examples-4/{e.51.7.c => target_data-7.c} | 0 .../{e.52.1.c => target_update-1.c} | 0 .../{e.52.2.c => target_update-2.c} | 0 .../libgomp.c/examples-4/task_dep-1.c | 17 ++ .../libgomp.c/examples-4/task_dep-2.c | 17 ++ .../libgomp.c/examples-4/task_dep-3.c | 20 +++ .../libgomp.c/examples-4/task_dep-4.c | 20 +++ .../libgomp.c/examples-4/task_dep-5.c | 81 +++++++++ .../examples-4/{e.54.2.c => teams-2.c} | 0 .../examples-4/{e.54.3.c => teams-3.c} | 0 .../examples-4/{e.54.4.c => teams-4.c} | 0 .../examples-4/{e.54.5.c => teams-5.c} | 0 .../examples-4/{e.54.6.c => teams-6.c} | 0 .../{e.56.3.f90 => array_sections-3.f90} | 0 .../{e.56.4.f90 => array_sections-4.f90} | 0 .../{e.55.1.f90 => async_target-1.f90} | 0 .../{e.55.2.f90 => async_target-2.f90} | 2 + .../{e.53.1.f90 => declare_target-1.f90} | 0 .../{e.53.2.f90 => declare_target-2.f90} | 0 .../{e.53.3.f90 => declare_target-3.f90} | 0 .../{e.53.4.f90 => declare_target-4.f90} | 0 .../{e.53.5.f90 => declare_target-5.f90} | 0 .../examples-4/{e.57.1.f90 => device-1.f90} | 0 .../examples-4/{e.57.2.f90 => device-2.f90} | 0 .../examples-4/{e.57.3.f90 => device-3.f90} | 0 .../libgomp.fortran/examples-4/simd-1.f90 | 67 ++++++++ .../libgomp.fortran/examples-4/simd-2.f90 | 72 ++++++++ .../libgomp.fortran/examples-4/simd-3.f90 | 59 +++++++ .../libgomp.fortran/examples-4/simd-4.f90 | 64 +++++++ .../libgomp.fortran/examples-4/simd-5.f90 | 76 +++++++++ .../libgomp.fortran/examples-4/simd-6.f90 | 151 +++++++++++++++++ .../libgomp.fortran/examples-4/simd-7.f90 | 49 ++++++ .../libgomp.fortran/examples-4/simd-8.f90 | 48 ++++++ .../examples-4/{e.50.1.f90 => target-1.f90} | 0 .../examples-4/{e.50.2.f90 => target-2.f90} | 0 .../examples-4/{e.50.3.f90 => target-3.f90} | 0 .../examples-4/{e.50.4.f90 => target-4.f90} | 0 .../examples-4/{e.50.5.f90 => target-5.f90} | 0 .../{e.51.1.f90 => target_data-1.f90} | 0 .../{e.51.2.f90 => target_data-2.f90} | 0 .../{e.51.3.f90 => target_data-3.f90} | 0 .../{e.51.4.f90 => target_data-4.f90} | 0 .../{e.51.5.f90 => target_data-5.f90} | 0 .../{e.51.6.f90 => target_data-6.f90} | 0 .../{e.51.7.f90 => target_data-7.f90} | 0 .../{e.52.1.f90 => target_update-1.f90} | 0 .../{e.52.2.f90 => target_update-2.f90} | 0 .../libgomp.fortran/examples-4/task_dep-1.f90 | 16 ++ .../libgomp.fortran/examples-4/task_dep-2.f90 | 16 ++ .../libgomp.fortran/examples-4/task_dep-3.f90 | 18 ++ .../libgomp.fortran/examples-4/task_dep-4.f90 | 19 +++ .../libgomp.fortran/examples-4/task_dep-5.f90 | 100 +++++++++++ .../examples-4/{e.54.2.f90 => teams-2.f90} | 0 .../examples-4/{e.54.3.f90 => teams-3.f90} | 0 .../examples-4/{e.54.4.f90 => teams-4.f90} | 0 .../examples-4/{e.54.5.f90 => teams-5.f90} | 0 .../examples-4/{e.54.6.f90 => teams-6.f90} | 0 89 files changed, 1623 insertions(+), 5 deletions(-) rename libgomp/testsuite/libgomp.c++/examples-4/{e.53.2.C => declare_target-2.C} (100%) rename libgomp/testsuite/libgomp.c++/examples-4/{e.51.5.C => target_data-5.C} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.56.3.c => array_sections-3.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.56.4.c => array_sections-4.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.55.1.c => async_target-1.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.55.2.c => async_target-2.c} (89%) rename libgomp/testsuite/libgomp.c/examples-4/{e.53.1.c => declare_target-1.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.53.3.c => declare_target-3.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.53.4.c => declare_target-4.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.53.5.c => declare_target-5.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.57.1.c => device-1.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.57.2.c => device-2.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.57.3.c => device-3.c} (100%) create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-1.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-2.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-3.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-4.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-5.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-6.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-7.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/simd-8.c rename libgomp/testsuite/libgomp.c/examples-4/{e.50.1.c => target-1.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.50.2.c => target-2.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.50.3.c => target-3.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.50.4.c => target-4.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.50.5.c => target-5.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.51.1.c => target_data-1.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.51.2.c => target_data-2.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.51.3.c => target_data-3.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.51.4.c => target_data-4.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.51.6.c => target_data-6.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.51.7.c => target_data-7.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.52.1.c => target_update-1.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.52.2.c => target_update-2.c} (100%) create mode 100644 libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c create mode 100644 libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c rename libgomp/testsuite/libgomp.c/examples-4/{e.54.2.c => teams-2.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.54.3.c => teams-3.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.54.4.c => teams-4.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.54.5.c => teams-5.c} (100%) rename libgomp/testsuite/libgomp.c/examples-4/{e.54.6.c => teams-6.c} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.56.3.f90 => array_sections-3.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.56.4.f90 => array_sections-4.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.55.1.f90 => async_target-1.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.55.2.f90 => async_target-2.f90} (98%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.53.1.f90 => declare_target-1.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.53.2.f90 => declare_target-2.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.53.3.f90 => declare_target-3.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.53.4.f90 => declare_target-4.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.53.5.f90 => declare_target-5.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.57.1.f90 => device-1.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.57.2.f90 => device-2.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.57.3.f90 => device-3.f90} (100%) create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90 rename libgomp/testsuite/libgomp.fortran/examples-4/{e.50.1.f90 => target-1.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.50.2.f90 => target-2.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.50.3.f90 => target-3.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.50.4.f90 => target-4.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.50.5.f90 => target-5.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.1.f90 => target_data-1.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.2.f90 => target_data-2.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.3.f90 => target_data-3.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.4.f90 => target_data-4.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.5.f90 => target_data-5.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.6.f90 => target_data-6.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.51.7.f90 => target_data-7.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.52.1.f90 => target_update-1.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.52.2.f90 => target_update-2.f90} (100%) create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90 rename libgomp/testsuite/libgomp.fortran/examples-4/{e.54.2.f90 => teams-2.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.54.3.f90 => teams-3.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.54.4.f90 => teams-4.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.54.5.f90 => teams-5.f90} (100%) rename libgomp/testsuite/libgomp.fortran/examples-4/{e.54.6.f90 => teams-6.f90} (100%) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index ff1fd17ab36..16b84c50544 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,161 @@ +2015-07-13 Maxim Blumenthal + + * testsuite/libgomp.c++/examples-4/e.53.2.C: Renamed to... + * testsuite/libgomp.c++/examples-4/declare_target-2.C: ...this. + * testsuite/libgomp.c++/examples-4/e.51.5.C: Renamed to... + * testsuite/libgomp.c++/examples-4/target_data-5.C: ...this. + * testsuite/libgomp.c/examples-4/e.56.3.c: Renamed to... + * testsuite/libgomp.c/examples-4/array_sections-3.c: ...this. + * testsuite/libgomp.c/examples-4/e.56.4.c: Renamed to... + * testsuite/libgomp.c/examples-4/array_sections-4.c: ...this. + * testsuite/libgomp.c/examples-4/e.55.1.c: Renamed to... + * testsuite/libgomp.c/examples-4/async_target-1.c: ...this. + * testsuite/libgomp.c/examples-4/e.55.2.c: Renamed to... + * testsuite/libgomp.c/examples-4/async_target-2.c: ...this. + (vec_mult_ref): Remove v1 and v2 arguments, turn them into local + variables. + (vec_mult): Likewise. Add #pragma omp taskwait. + (main): Adjust caller. + * testsuite/libgomp.c/examples-4/e.53.1.c: Renamed to... + * testsuite/libgomp.c/examples-4/declare_target-1.c: ...this. + * testsuite/libgomp.c/examples-4/e.53.3.c: Renamed to... + * testsuite/libgomp.c/examples-4/declare_target-3.c: ...this. + * testsuite/libgomp.c/examples-4/e.53.4.c: Renamed to... + * testsuite/libgomp.c/examples-4/declare_target-4.c: ...this. + * testsuite/libgomp.c/examples-4/e.53.5.c: Renamed to... + * testsuite/libgomp.c/examples-4/declare_target-5.c: ...this. + * testsuite/libgomp.c/examples-4/e.57.1.c: Renamed to... + * testsuite/libgomp.c/examples-4/device-1.c: ...this. + * testsuite/libgomp.c/examples-4/e.57.2.c: Renamed to... + * testsuite/libgomp.c/examples-4/device-2.c: ...this. + * testsuite/libgomp.c/examples-4/e.57.3.c: Renamed to... + * testsuite/libgomp.c/examples-4/device-3.c: ...this. + * testsuite/libgomp.c/examples-4/simd-1.c: New file. + * testsuite/libgomp.c/examples-4/simd-2.c: New file. + * testsuite/libgomp.c/examples-4/simd-3.c: New file. + * testsuite/libgomp.c/examples-4/simd-4.c: New file. + * testsuite/libgomp.c/examples-4/simd-5.c: New file. + * testsuite/libgomp.c/examples-4/simd-6.c: New file. + * testsuite/libgomp.c/examples-4/simd-7.c: New file. + * testsuite/libgomp.c/examples-4/simd-8.c: New file. + * testsuite/libgomp.c/examples-4/e.50.1.c: Renamed to... + * testsuite/libgomp.c/examples-4/target-1.c: ...this. + * testsuite/libgomp.c/examples-4/e.50.2.c: Renamed to... + * testsuite/libgomp.c/examples-4/target-2.c: ...this. + * testsuite/libgomp.c/examples-4/e.50.3.c: Renamed to... + * testsuite/libgomp.c/examples-4/target-3.c: ...this. + * testsuite/libgomp.c/examples-4/e.50.4.c: Renamed to... + * testsuite/libgomp.c/examples-4/target-4.c: ...this. + * testsuite/libgomp.c/examples-4/e.50.5.c: Renamed to... + * testsuite/libgomp.c/examples-4/target-5.c: ...this. + * testsuite/libgomp.c/examples-4/e.51.1.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_data-1.c: ...this. + * testsuite/libgomp.c/examples-4/e.51.2.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_data-2.c: ...this. + * testsuite/libgomp.c/examples-4/e.51.3.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_data-3.c: ...this. + * testsuite/libgomp.c/examples-4/e.51.4.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_data-4.c: ...this. + * testsuite/libgomp.c/examples-4/e.51.6.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_data-6.c: ...this. + * testsuite/libgomp.c/examples-4/e.51.7.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_data-7.c: ...this. + * testsuite/libgomp.c/examples-4/e.52.1.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_update-1.c: ...this. + * testsuite/libgomp.c/examples-4/e.52.2.c: Renamed to... + * testsuite/libgomp.c/examples-4/target_update-2.c: ...this. + * testsuite/libgomp.c/examples-4/task_dep-1.c: New file. + * testsuite/libgomp.c/examples-4/task_dep-2.c: New file. + * testsuite/libgomp.c/examples-4/task_dep-3.c: New file. + * testsuite/libgomp.c/examples-4/task_dep-4.c: New file. + * testsuite/libgomp.c/examples-4/task_dep-5.c: New file. + * testsuite/libgomp.c/examples-4/e.54.2.c: Renamed to... + * testsuite/libgomp.c/examples-4/teams-2.c: ...this. + * testsuite/libgomp.c/examples-4/e.54.3.c: Renamed to... + * testsuite/libgomp.c/examples-4/teams-3.c: ...this. + * testsuite/libgomp.c/examples-4/e.54.4.c: Renamed to... + * testsuite/libgomp.c/examples-4/teams-4.c: ...this. + * testsuite/libgomp.c/examples-4/e.54.5.c: Renamed to... + * testsuite/libgomp.c/examples-4/teams-5.c: ...this. + * testsuite/libgomp.c/examples-4/e.54.6.c: Renamed to... + * testsuite/libgomp.c/examples-4/teams-6.c: ...this. + * testsuite/libgomp.fortran/examples-4/e.56.3.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/array_sections-3.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.56.4.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/array_sections-4.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.55.1.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/async_target-1.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.55.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/async_target-2.f90: ...this. + (vec_mult): Add !$omp taskwait. + * testsuite/libgomp.fortran/examples-4/e.53.1.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/declare_target-1.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.53.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/declare_target-2.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.53.3.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/declare_target-3.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.53.4.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/declare_target-4.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.53.5.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/declare_target-5.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.57.1.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/device-1.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.57.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/device-2.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.57.3.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/device-3.f90: ...this. + * testsuite/libgomp.fortran/examples-4/simd-1.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-2.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-3.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-4.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-5.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-6.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-7.f90: New file. + * testsuite/libgomp.fortran/examples-4/simd-8.f90: New file. + * testsuite/libgomp.fortran/examples-4/e.50.1.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target-1.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.50.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target-2.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.50.3.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target-3.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.50.4.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target-4.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.50.5.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target-5.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.1.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-1.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-2.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.3.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-3.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.4.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-4.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.5.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-5.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.6.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-6.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.51.7.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_data-7.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.52.1.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_update-1.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.52.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/target_update-2.f90: ...this. + * testsuite/libgomp.fortran/examples-4/task_dep-1.f90: New file. + * testsuite/libgomp.fortran/examples-4/task_dep-2.f90: New file. + * testsuite/libgomp.fortran/examples-4/task_dep-3.f90: New file. + * testsuite/libgomp.fortran/examples-4/task_dep-4.f90: New file. + * testsuite/libgomp.fortran/examples-4/task_dep-5.f90: New file. + * testsuite/libgomp.fortran/examples-4/e.54.2.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/teams-2.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.54.3.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/teams-3.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.54.4.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/teams-4.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.54.5.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/teams-5.f90: ...this. + * testsuite/libgomp.fortran/examples-4/e.54.6.f90: Renamed to... + * testsuite/libgomp.fortran/examples-4/teams-6.f90: ...this. + 2015-07-10 Tom de Vries * testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95: New test. diff --git a/libgomp/testsuite/libgomp.c++/examples-4/e.53.2.C b/libgomp/testsuite/libgomp.c++/examples-4/declare_target-2.C similarity index 100% rename from libgomp/testsuite/libgomp.c++/examples-4/e.53.2.C rename to libgomp/testsuite/libgomp.c++/examples-4/declare_target-2.C diff --git a/libgomp/testsuite/libgomp.c++/examples-4/e.51.5.C b/libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C similarity index 100% rename from libgomp/testsuite/libgomp.c++/examples-4/e.51.5.C rename to libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.56.3.c b/libgomp/testsuite/libgomp.c/examples-4/array_sections-3.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.56.3.c rename to libgomp/testsuite/libgomp.c/examples-4/array_sections-3.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.56.4.c b/libgomp/testsuite/libgomp.c/examples-4/array_sections-4.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.56.4.c rename to libgomp/testsuite/libgomp.c/examples-4/array_sections-4.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.55.1.c b/libgomp/testsuite/libgomp.c/examples-4/async_target-1.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.55.1.c rename to libgomp/testsuite/libgomp.c/examples-4/async_target-1.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.55.2.c b/libgomp/testsuite/libgomp.c/examples-4/async_target-2.c similarity index 89% rename from libgomp/testsuite/libgomp.c/examples-4/e.55.2.c rename to libgomp/testsuite/libgomp.c/examples-4/async_target-2.c index f03cae372ff..ce63328a7b4 100644 --- a/libgomp/testsuite/libgomp.c/examples-4/e.55.2.c +++ b/libgomp/testsuite/libgomp.c/examples-4/async_target-2.c @@ -19,8 +19,9 @@ void init (float *a, float *b, int n) } #pragma omp end declare target -void vec_mult_ref (float *p, float *v1, float *v2, int n) +void vec_mult_ref(float *p, int n) { + float *v1, *v2; int i; v1 = (float *) malloc (n * sizeof (float)); @@ -35,8 +36,9 @@ void vec_mult_ref (float *p, float *v1, float *v2, int n) free (v2); } -void vec_mult (float *p, float *v1, float *v2, int n) +void vec_mult(float *p, int n) { + float *v1, *v2; int i; #pragma omp task shared(v1, v2) depend(out: v1, v2) @@ -64,6 +66,8 @@ void vec_mult (float *p, float *v1, float *v2, int n) free (v1); free (v2); } + + #pragma omp taskwait } void check (float *a, float *b, int n) @@ -81,10 +85,9 @@ int main () { float *p1 = (float *) malloc (N * sizeof (float)); float *p2 = (float *) malloc (N * sizeof (float)); - float *v1, *v2; - vec_mult_ref (p1, v1, v2, N); - vec_mult (p2, v1, v2, N); + vec_mult_ref (p1, N); + vec_mult (p2, N); check (p1, p2, N); diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.53.1.c b/libgomp/testsuite/libgomp.c/examples-4/declare_target-1.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.53.1.c rename to libgomp/testsuite/libgomp.c/examples-4/declare_target-1.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.53.3.c b/libgomp/testsuite/libgomp.c/examples-4/declare_target-3.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.53.3.c rename to libgomp/testsuite/libgomp.c/examples-4/declare_target-3.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.53.4.c b/libgomp/testsuite/libgomp.c/examples-4/declare_target-4.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.53.4.c rename to libgomp/testsuite/libgomp.c/examples-4/declare_target-4.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c b/libgomp/testsuite/libgomp.c/examples-4/declare_target-5.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.53.5.c rename to libgomp/testsuite/libgomp.c/examples-4/declare_target-5.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.57.1.c b/libgomp/testsuite/libgomp.c/examples-4/device-1.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.57.1.c rename to libgomp/testsuite/libgomp.c/examples-4/device-1.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.57.2.c b/libgomp/testsuite/libgomp.c/examples-4/device-2.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.57.2.c rename to libgomp/testsuite/libgomp.c/examples-4/device-2.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.57.3.c b/libgomp/testsuite/libgomp.c/examples-4/device-3.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.57.3.c rename to libgomp/testsuite/libgomp.c/examples-4/device-3.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-1.c b/libgomp/testsuite/libgomp.c/examples-4/simd-1.c new file mode 100644 index 00000000000..5baaf307639 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-1.c @@ -0,0 +1,65 @@ +/* { dg-do run } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#define N 100 +#define OFF 32 +#define EPS 0.0000000000000001 + +#include + +void init(double *a, double *a_ref, double *b, double *c, int n, int ioff) +{ + int i; + for ( i = 0; i < n; i++ ) + { + a[i] = i*i; + a_ref[i] = a[i]; + b[i] = i+i; + } + + int s = -1; + for ( i = 0; i < n+ioff; i++ ) + { + c[i] = s*3; + s = -s; + } +} + +void star( double *a, double *b, double *c, int n, int *ioff ) +{ + int i; + #pragma omp simd + for ( i = 0; i < n; i++ ) + a[i] *= b[i] * c[i+ *ioff]; +} + +void star_ref( double *a, double *b, double *c, int n, int *ioff ) +{ + int i; + for ( i = 0; i < n; i++ ) + a[i] *= b[i] * c[i+ *ioff]; +} + +void check (double *a, double *b) +{ + int i; + for (i = 0; i < N; i++) + if (a[i] - b[i] > EPS || b[i] - a[i] > EPS) + abort (); +} + +int main () +{ + double a[N], a_ref[N], b[N], c[N+OFF]; + int ioff = OFF; + + init(a, a_ref, b, c, N, ioff); + + star(a, b, c, N, &ioff); + star_ref(a_ref, b, c, N, &ioff); + + check(a, a_ref); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-2.c b/libgomp/testsuite/libgomp.c/examples-4/simd-2.c new file mode 100644 index 00000000000..6527db9d279 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-2.c @@ -0,0 +1,90 @@ +/* { dg-do run { target vect_simd_clones } } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#define N 100 +#define EPS 0.0000000000000001 + +#include + +void init(double *a, double *a_ref, double *b, int n) +{ + int i; + for ( i=0; i EPS || b[i] - a[i] > EPS) + abort (); +} + + +int main () +{ + int i; + double a[N], a_ref[N], b[N]; + + init(a, a_ref, b, N); + + work(a, b, N ); + work_ref(a_ref, b, N ); + + check(a, a_ref); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-3.c b/libgomp/testsuite/libgomp.c/examples-4/simd-3.c new file mode 100644 index 00000000000..9f33713d356 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-3.c @@ -0,0 +1,61 @@ +/* { dg-do run } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#define N 100 +#define EPS 0.0000000000000001 + +#include + +void init(double *a, double *a_ref, double *b, int n) +{ + int i, s = -1; + for ( i = 0; i < n; i++ ) + { + a[i] = i*i*s; + a_ref[i] = a[i]; + b[i] = i+i; + s = -s; + } +} + +double work( double *a, double *b, int n ) +{ + int i; + double tmp, sum; + sum = 0.0; + #pragma omp simd private(tmp) reduction(+:sum) + for (i = 0; i < n; i++) { + tmp = a[i] + b[i]; + sum += tmp; + } + return sum; +} + +double work_ref( double *a, double *b, int n ) +{ + int i; + double tmp, sum; + sum = 0.0; + for (i = 0; i < n; i++) { + tmp = a[i] + b[i]; + sum += tmp; + } + return sum; +} + +int main () +{ + double a[N], a_ref[N], b[N]; + int res, ref; + + init(a, a_ref, b, N); + + res = work(a, b, N); + ref = work_ref(a_ref, b, N); + + if (res != ref) + abort (); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-4.c b/libgomp/testsuite/libgomp.c/examples-4/simd-4.c new file mode 100644 index 00000000000..1aa0425010d --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-4.c @@ -0,0 +1,58 @@ +/* { dg-do run } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#define N 128 +#define M 16 +#define EPS 0.0000000000000001 +#define SAFELEN 16 + +#include + +void init(double *a, double *b, int n) +{ + int i, s = -1; + for ( i = 0; i < n; i++ ) + { + a[i] = i*i*s; + b[i] = a[i]; + s = -s; + } +} + +void work( double *b, int n, int m ) +{ + int i; + #pragma omp simd safelen(SAFELEN) + for (i = m; i < n; i++) + b[i] = b[i-m] - 1.0f; +} + +void work_ref( double *b, int n, int m ) +{ + int i; + for (i = m; i < n; i++) + b[i] = b[i-m] - 1.0f; +} + +void check (double *a, double *b) +{ + int i; + for (i = 0; i < N; i++) + if (a[i] - b[i] > EPS || b[i] - a[i] > EPS) + abort (); +} + +int main () +{ + double b[N], b_ref[N]; + + init(b, b_ref, N); + + work(b, N, M); + work(b_ref, N, M); + + check(b, b_ref); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-5.c b/libgomp/testsuite/libgomp.c/examples-4/simd-5.c new file mode 100644 index 00000000000..ce037acdaee --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-5.c @@ -0,0 +1,76 @@ +/* { dg-do run } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#define N 128 +#define M 16 +#define EPS 0.0000000000000001 +#define SAFELEN 16 + +#include + +void init(double a[N][N], double b[N][N], int n) +{ + int i, j, s = -1; + for (i = 0; i < n; i++) + { + for (j = 0; j < n; j++) + { + a[i][j] = i * j * s; + b[i][j] = i + j + s; + s = -s; + } + } +} + +void work( double a[N][N], double b[N][N], double c[N][N], int n ) +{ + int i, j; + double tmp; + #pragma omp for simd collapse(2) private(tmp) + for (i = 0; i < n; i++) + { + for (j = 0; j < n; j++) + { + tmp = a[i][j] + b[i][j]; + c[i][j] = tmp; + } + } +} + +void work_ref( double a[N][N], double b[N][N], double c[N][N], int n ) +{ + int i, j; + double tmp; + for (i = 0; i < n; i++) + { + for (j = 0; j < n; j++) + { + tmp = a[i][j] + b[i][j]; + c[i][j] = tmp; + } + } +} + +void check (double a[N][N], double b[N][N]) +{ + int i, j; + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + if (a[i][j] - b[i][j] > EPS || b[i][j] - a[i][j] > EPS) + abort (); +} + +int main () +{ + double a[N][N], b[N][N], c[N][N], c_ref[N][N]; + + init(a, b, N); + + work(a, b, c, N); + work_ref(a, b, c_ref, N); + + check(c, c_ref); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-6.c b/libgomp/testsuite/libgomp.c/examples-4/simd-6.c new file mode 100644 index 00000000000..a326b455b42 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-6.c @@ -0,0 +1,105 @@ +/* { dg-do run { target vect_simd_clones } } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#define N 100 +#define EPS 0.000001 + +#include +#include + +void init(int *b, float *y, int n) +{ + int i, s = -1; + for ( i=0; i y[i]) ? goo(&y[i]) : y[i]; + /* goo is called under the condition (or within a branch) */ + } + return x[n-1]; +} + +int myaddfloat_ref(float *x, float *y, int n) +{ + for (int i=0; i y[i]) ? goo(&y[i]) : y[i]; + } + return x[n-1]; +} + +void check_addint (int *a, int *b) +{ + int i; + for (i = 0; i < N; i++) + if (a[i] != b[i]) + abort (); +} + +void check_addfloat (float *a, float *b) +{ + int i; + for (i = 0; i < N; i++) + if (a[i] - b[i] > EPS || b[i] - a[i] > EPS) + abort (); +} + +int main () +{ + int i; + int a[N], a_ref[N], b[N]; + float x[N], x_ref[N], y[N]; + + init(a, x, N); + init(b, y, N); + myaddint(a, b, N); + myaddfloat(x, y, N); + + init(a_ref, x_ref, N); + init(b, y, N); + myaddint_ref(a_ref, b, N); + myaddfloat_ref(x_ref, y, N); + + check_addint(a, a_ref); + check_addfloat(x, x_ref); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-7.c b/libgomp/testsuite/libgomp.c/examples-4/simd-7.c new file mode 100644 index 00000000000..4aab962b719 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-7.c @@ -0,0 +1,41 @@ +/* { dg-do run { target vect_simd_clones } } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#include +#include + +#define N 45 +int a[N], a_ref[N], b[N]; + +#pragma omp declare simd inbranch +int fib( int n ) +{ + if (n <= 2) + return n; + else { + return fib(n-1) + fib(n-2); + } +} + +int main(void) +{ + int i; + +#pragma omp simd + for (i=0; i < N; i++) + b[i] = i; + +#pragma omp simd + for (i=0; i < N; i++) + a[i] = fib(b[i]); + + for (i=0; i < N; i++) + a_ref[i] = fib(b[i]); + + for (i=0; i < N; i++) + if (a[i] != a_ref[i]) + abort (); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/simd-8.c b/libgomp/testsuite/libgomp.c/examples-4/simd-8.c new file mode 100644 index 00000000000..397e2a340aa --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/simd-8.c @@ -0,0 +1,49 @@ +/* { dg-do run } */ +/* { dg-additional-options "-msse2" { target sse2_runtime } } */ +/* { dg-additional-options "-mavx" { target avx_runtime } } */ + +#include +#include + +int P[1000]; +float A[1000]; + +float do_work(float *arr) +{ + float pri; + +#pragma omp simd lastprivate(pri) + for (int i = 0; i < 999; ++i) + { + int j = P[i]; + + pri = 0.5f; + if (j % 2 == 0) + { + pri = A[j+1] + arr[i]; + } + A[j] = pri * 1.5f; + pri = pri + A[j]; + } + + return pri; +} + +int main(void) +{ + float pri, arr[1000]; + + for (int i = 0; i < 1000; ++i) + { + P[i] = i; + A[i] = i * 1.5f; + arr[i] = i * 1.8f; + } + + pri = do_work(&arr[0]); + + if (pri != 8237.25) + abort (); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.50.1.c b/libgomp/testsuite/libgomp.c/examples-4/target-1.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.50.1.c rename to libgomp/testsuite/libgomp.c/examples-4/target-1.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.50.2.c b/libgomp/testsuite/libgomp.c/examples-4/target-2.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.50.2.c rename to libgomp/testsuite/libgomp.c/examples-4/target-2.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.50.3.c b/libgomp/testsuite/libgomp.c/examples-4/target-3.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.50.3.c rename to libgomp/testsuite/libgomp.c/examples-4/target-3.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.50.4.c b/libgomp/testsuite/libgomp.c/examples-4/target-4.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.50.4.c rename to libgomp/testsuite/libgomp.c/examples-4/target-4.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.50.5.c b/libgomp/testsuite/libgomp.c/examples-4/target-5.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.50.5.c rename to libgomp/testsuite/libgomp.c/examples-4/target-5.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.51.1.c b/libgomp/testsuite/libgomp.c/examples-4/target_data-1.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.51.1.c rename to libgomp/testsuite/libgomp.c/examples-4/target_data-1.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.51.2.c b/libgomp/testsuite/libgomp.c/examples-4/target_data-2.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.51.2.c rename to libgomp/testsuite/libgomp.c/examples-4/target_data-2.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.51.3.c b/libgomp/testsuite/libgomp.c/examples-4/target_data-3.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.51.3.c rename to libgomp/testsuite/libgomp.c/examples-4/target_data-3.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.51.4.c b/libgomp/testsuite/libgomp.c/examples-4/target_data-4.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.51.4.c rename to libgomp/testsuite/libgomp.c/examples-4/target_data-4.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.51.6.c b/libgomp/testsuite/libgomp.c/examples-4/target_data-6.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.51.6.c rename to libgomp/testsuite/libgomp.c/examples-4/target_data-6.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.51.7.c b/libgomp/testsuite/libgomp.c/examples-4/target_data-7.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.51.7.c rename to libgomp/testsuite/libgomp.c/examples-4/target_data-7.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.52.1.c b/libgomp/testsuite/libgomp.c/examples-4/target_update-1.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.52.1.c rename to libgomp/testsuite/libgomp.c/examples-4/target_update-1.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.52.2.c b/libgomp/testsuite/libgomp.c/examples-4/target_update-2.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.52.2.c rename to libgomp/testsuite/libgomp.c/examples-4/target_update-2.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c b/libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c new file mode 100644 index 00000000000..8d397a55e7c --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c @@ -0,0 +1,17 @@ +/* { dg-do run } */ + +#include +int main() +{ + int x = 1; + #pragma omp parallel + #pragma omp single + { + #pragma omp task shared(x) depend(out: x) + x = 2; + #pragma omp task shared(x) depend(in: x) + if (x != 2) + abort (); + } + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c b/libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c new file mode 100644 index 00000000000..f583f0978e2 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c @@ -0,0 +1,17 @@ +/* { dg-do run } */ + +#include +int main() +{ + int x = 1; + #pragma omp parallel + #pragma omp single + { + #pragma omp task shared(x) depend(in: x) + if (x != 1) + abort (); + #pragma omp task shared(x) depend(out: x) + x = 2; + } + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c b/libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c new file mode 100644 index 00000000000..189d5e0aa15 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c @@ -0,0 +1,20 @@ +/* { dg-do run } */ + +#include + +int main() +{ + int x = 0; + #pragma omp parallel + #pragma omp single + { + #pragma omp task shared(x) depend(out: x) + x = 1; + #pragma omp task shared(x) depend(out: x) + x = 2; + #pragma omp taskwait + if (x != 1 && x != 2) + abort (); + } + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c b/libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c new file mode 100644 index 00000000000..77aa57a4c25 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c @@ -0,0 +1,20 @@ +/* { dg-do run } */ + +#include +int main() +{ + int x = 1; + #pragma omp parallel + #pragma omp single + { + #pragma omp task shared(x) depend(out: x) + x = 2; + #pragma omp task shared(x) depend(in: x) + if (x != 2) + abort (); + #pragma omp task shared(x) depend(in: x) + if (x != 2) + abort (); + } + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c b/libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c new file mode 100644 index 00000000000..066edc723b3 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c @@ -0,0 +1,81 @@ +/* { dg-do run } */ + +#define N 128 +#define BS 16 +#define EPS 0.000001 + +#include + +void matmul_depend (float A[N][N], float B[N][N], float C[N][N]) +{ + int i, j, k, ii, jj, kk; + for (i = 0; i < N; i+=BS) + for (j = 0; j < N; j+=BS) + for (k = 0; k < N; k+=BS) +// Note 1: i, j, k, A, B, C are firstprivate by default +// Note 2: A, B and C are just pointers +#pragma omp task private(ii, jj, kk) \ + depend ( in: A[i:BS][k:BS], B[k:BS][j:BS] ) \ + depend ( inout: C[i:BS][j:BS] ) + for (ii = i; ii < i+BS; ii++ ) + for (jj = j; jj < j+BS; jj++ ) + for (kk = k; kk < k+BS; kk++ ) + C[ii][jj] = C[ii][jj] + A[ii][kk] * B[kk][jj]; +} + +void matmul_ref (float A[N][N], float B[N][N], float C[N][N]) +{ + int i, j, k; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + for (k = 0; k < N; k++) + C[i][j] += A[i][k] * B[k][j]; +} + +void init (float A[N][N], float B[N][N]) +{ + int i, j, s = -1; + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + A[i][j] = i * j * s; + B[i][j] = i + j; + s = -s; + } +} + +void init_zero (float A[N][N], float B[N][N]) +{ + int i, j, s = -1; + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + A[i][j] = 0; + B[i][j] = 0; + } +} + +void check (float A[N][N], float B[N][N]) +{ + int i, j; + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + if (A[i][j] - B[i][j] > EPS || B[i][j] - A[i][j] > EPS) + abort (); +} + +int main () +{ + float A[N][N], B[N][N], C[N][N], C_ref[N][N]; + + init (A, B); + init_zero (C, C_ref); + + matmul_depend (A, B, C); + matmul_ref (A, B, C_ref); + + check (C, C_ref); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.54.2.c b/libgomp/testsuite/libgomp.c/examples-4/teams-2.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.54.2.c rename to libgomp/testsuite/libgomp.c/examples-4/teams-2.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.54.3.c b/libgomp/testsuite/libgomp.c/examples-4/teams-3.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.54.3.c rename to libgomp/testsuite/libgomp.c/examples-4/teams-3.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.54.4.c b/libgomp/testsuite/libgomp.c/examples-4/teams-4.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.54.4.c rename to libgomp/testsuite/libgomp.c/examples-4/teams-4.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.54.5.c b/libgomp/testsuite/libgomp.c/examples-4/teams-5.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.54.5.c rename to libgomp/testsuite/libgomp.c/examples-4/teams-5.c diff --git a/libgomp/testsuite/libgomp.c/examples-4/e.54.6.c b/libgomp/testsuite/libgomp.c/examples-4/teams-6.c similarity index 100% rename from libgomp/testsuite/libgomp.c/examples-4/e.54.6.c rename to libgomp/testsuite/libgomp.c/examples-4/teams-6.c diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.56.3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/array_sections-3.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.56.3.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/array_sections-3.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.56.4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.56.4.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.55.1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.55.1.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.55.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90 similarity index 98% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.55.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90 index dfcb5f40ca9..b12b0eaa890 100644 --- a/libgomp/testsuite/libgomp.fortran/examples-4/e.55.2.f90 +++ b/libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90 @@ -46,6 +46,8 @@ subroutine vec_mult (p, N) !$omp end target !$omp end task !$omp end target data + + !$omp taskwait call check (p, N) end subroutine diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.53.1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.53.1.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.53.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.53.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.53.3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.53.3.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.53.4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.53.4.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.53.5.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.53.5.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.57.1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/device-1.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.57.1.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/device-1.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.57.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/device-2.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.57.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/device-2.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.57.3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/device-3.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.57.3.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/device-3.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90 new file mode 100644 index 00000000000..b1af859dee4 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90 @@ -0,0 +1,67 @@ +! { dg-do run } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module SIMD1_mod +contains + subroutine init (a, a_ref, b, c, n, ioff_ptr) + double precision :: a(*), a_ref(*), b(*), c(*) + integer :: n, i, s + integer, pointer :: ioff_ptr + + s = -1 + do i = 1, n + a(i) = i * i * s + a_ref(i) = a(i) + b(i) = i + i + end do + + do i = 1, n+ioff_ptr + c(i) = i * 3 + end do + + end subroutine + + subroutine check (a, b, n) + integer :: i, n + double precision, parameter :: EPS = 0.0000000000001 + double precision :: diff, a(*), b(*) + do i = 1, n + diff = a(i) - b(i) + if (diff > EPS .or. -diff > EPS) call abort + end do + end subroutine + + subroutine star(a, a_ref, b, c, n, ioff_ptr) + double precision :: a(*), a_ref(*), b(*), c(*) + integer :: n, i + integer, pointer :: ioff_ptr + + call init (a, a_ref, b, c, n, ioff_ptr) + + !$omp simd + do i = 1,n + a(i) = a(i) * b(i) * c(i+ioff_ptr) + end do + + do i = 1,n + a_ref(i) = a_ref(i) * b(i) * c(i+ioff_ptr) + end do + + call check (a, a_ref, n) + + end subroutine +end module + +program SIMD1 + use SIMD1_mod, only : star + double precision :: a(128), a_ref(128), b(128), c(144) + integer, pointer:: ioff_ptr + integer, target:: offset + + offset = 16 + ioff_ptr => offset + + call star (a, a_ref, b, c, 128, ioff_ptr) + +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90 new file mode 100644 index 00000000000..74a0303fd79 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90 @@ -0,0 +1,72 @@ +! { dg-do run { target vect_simd_clones } } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module SIMD2_mod +contains + function add1(a,b,fact) result(c) + !$omp declare simd(add1) uniform(fact) + double precision :: a,b,fact, c + c = a + b + fact + end function + + function add2(a,b,i, fact) result(c) + !$omp declare simd(add2) uniform(a,b,fact) linear(i:1) + integer, value :: i + double precision, dimension(:) :: a, b + double precision :: fact, c + c = a(i) + b(i) + fact + end function + + subroutine work(a, b, n ) + implicit none + double precision :: a(n),b(n), tmp + integer :: n, i + + !$omp simd private(tmp) + do i = 1,n + tmp = add1(a(i), b(i), 1.0d0) + a(i) = add2(a, b, i, 1.0d0) + tmp + a(i) = a(i) + b(i) + 1.0d0 + end do + end subroutine + + subroutine work_ref(a, b, n ) + implicit none + double precision :: a(n),b(n), tmp + integer :: n, i + + do i = 1,n + tmp = add1(a(i), b(i), 1.0d0) + a(i) = add2(a, b, i, 1.0d0) + tmp + a(i) = a(i) + b(i) + 1.0d0 + end do + end subroutine + + subroutine check (a, b, n) + integer :: i, n + double precision, parameter :: EPS = 0.0000000000001 + double precision :: diff, a(*), b(*) + do i = 1, n + diff = a(i) - b(i) + if (diff > EPS .or. -diff > EPS) call abort + end do + end subroutine +end module + +program main + use SIMD2_mod + integer, parameter :: N=32 + integer :: i + double precision :: a(N), b(N), a_ref(N) + do i = 1,N + a(i) = i-1 + a_ref(i) = a(i) + b(i) = N-(i-1) + end do + + call work(a, b, N ) + call work_ref(a_ref, b, N ) + + call check(a, a_ref, N ) +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90 new file mode 100644 index 00000000000..f2e00475d21 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90 @@ -0,0 +1,59 @@ +! { dg-do run } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module SIMD3_mod +contains + subroutine work( a, b, n, sum ) + implicit none + integer :: i, n + double precision :: a(n), b(n), sum, tmp + + sum = 0.0d0 + call init(a, b, n) + !$omp simd private(tmp) reduction(+:sum) + do i = 1,n + tmp = a(i) + b(i) + sum = sum + tmp + end do + + end subroutine work + + subroutine work_ref( a, b, n, sum ) + implicit none + integer :: i, n + double precision :: a(n), b(n), sum, tmp + + sum = 0.0d0 + call init(a, b, n) + do i = 1,n + tmp = a(i) + b(i) + sum = sum + tmp + end do + + end subroutine work_ref + + subroutine init (a, b, n) + double precision :: a(*), b(*) + integer :: n, i, s + + s = -1 + do i = 1, n + a(i) = i * i * s + b(i) = i + i + s = -s + end do + + end subroutine +end module + +program SIMD3 + use SIMD3_mod + double precision :: a(128), b(128), sum, sum_ref + + call work(a, b, 128, sum) + call work_ref(a, b, 128, sum_ref) + + if (sum .ne. sum_ref) call abort + +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90 new file mode 100644 index 00000000000..414f8bc70a8 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90 @@ -0,0 +1,64 @@ +! { dg-do run } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module SIMD4_mod +contains + subroutine work( b, n, m ) + implicit none + real :: b(n) + integer :: i,n,m + + call init(b, n) + + !$omp simd safelen(16) + do i = m+1, n + b(i) = b(i-m) - 1.0 + end do + end subroutine work + + subroutine work_ref( b, n, m ) + implicit none + real :: b(n) + integer :: i,n,m + + call init(b, n) + + do i = m+1, n + b(i) = b(i-m) - 1.0 + end do + end subroutine work_ref + + subroutine init (b, n) + real :: b(*) + integer :: n, i, s + + s = -1 + do i = 1, n + b(i) = i * i * s + s = -s + end do + + end subroutine + + subroutine check (a, b, n) + integer :: i, n + real, parameter :: EPS = 0.000001 + real :: diff, a(*), b(*) + do i = 1, n + diff = a(i) - b(i) + if (diff > EPS .or. -diff > EPS) call abort + end do + end subroutine + +end module + +program SIMD4 + use SIMD4_mod + real :: b(128), b_ref(128) + + call work(b, 128, 32) + call work_ref(b_ref, 128, 32) + + call check(b, b_ref, 128) +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90 new file mode 100644 index 00000000000..e64e1d53e21 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90 @@ -0,0 +1,76 @@ +! { dg-do run } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module SIMD5_mod +contains + subroutine work( a, b, c, n ) + implicit none + integer :: i,j,n + double precision :: a(n,n), b(n,n), c(n,n), tmp + + !$omp do simd collapse(2) private(tmp) + do j = 1,n + do i = 1,n + tmp = a(i,j) + b(i,j) + c(i,j) = tmp + end do + end do + + end subroutine work + + subroutine work_ref( a, b, c, n ) + implicit none + integer :: i,j,n + double precision :: a(n,n), b(n,n), c(n,n), tmp + + do j = 1,n + do i = 1,n + tmp = a(i,j) + b(i,j) + c(i,j) = tmp + end do + end do + + end subroutine work_ref + + subroutine init (a, b, n) + integer :: i,j,n,s + double precision :: a(n,n), b(n,n) + + s = -1 + + do j = 1,n + do i = 1,n + a(i,j) = i*j*s + b(i,j) = i+j + s = -s + end do + end do + + end subroutine + + subroutine check (a, b, n) + integer :: i, j, n + double precision, parameter :: EPS = 0.0000000000000001 + double precision :: diff, a(n,n), b(n,n) + do j = 1, n + do i = 1, n + diff = a(i,j) - b(i,j) + if (diff > EPS .or. -diff > EPS) call abort + end do + end do + end subroutine + +end module + +program SIMD5 + use SIMD5_mod + double precision, dimension(32, 32) :: a, b, c, c_ref + + call init(a, b, 32) + + call work(a, b, c, 32) + call work_ref(a, b, c_ref, 32) + + call check(c, c_ref, 32) +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90 new file mode 100644 index 00000000000..5cb1e047cbd --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90 @@ -0,0 +1,151 @@ +! { dg-do run { target vect_simd_clones } } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module SIMD6_mod +contains + function foo(p) result(r) + !$omp declare simd(foo) notinbranch + integer :: p, r + p = p + 10 + r = p + end function foo + + function myaddint(a, b, n) result(r) + implicit none + integer :: a(*), b(*), n, r + integer :: i + + !$omp simd + do i=1, n + a(i) = foo(b(i)) ! foo is not called under a condition + end do + r = a(n) + + end function myaddint + + function myaddint_ref(a, b, n) result(r) + implicit none + integer :: a(*), b(*), n, r + integer :: i + + do i=1, n + a(i) = foo(b(i)) + end do + r = a(n) + + end function myaddint_ref + + function goo(p) result(r) + !$omp declare simd(goo) inbranch + real :: p, r + p = p + 18.5 + r = p + end function goo + + function myaddfloat(x, y, n) result(r) + implicit none + real :: x(*), y(*), r + integer :: n + integer :: i + + !$omp simd + do i=1, n + if (x(i) > y(i)) then + x(i) = goo(y(i)) + ! goo is called under the condition (or within a branch) + else + x(i) = y(i) + endif + end do + + r = x(n) + end function myaddfloat + + function myaddfloat_ref(x, y, n) result(r) + implicit none + real :: x(*), y(*), r + integer :: n + integer :: i + + do i=1, n + if (x(i) > y(i)) then + x(i) = goo(y(i)) + else + x(i) = y(i) + endif + end do + + r = x(n) + end function myaddfloat_ref + + subroutine init (b, y, n) + integer :: b(128) + real :: y(128) + + s = -1 + do i = 1, n + b(i) = i*i*s + y(i) = i*i*s + s = -s + end do + + end subroutine + + subroutine init2 (b, y, n) + integer :: b(128) + real :: y(128) + + do i = 1, n + b(i) = i + y(i) = i + end do + + end subroutine + + subroutine checkfloat (a, b, n) + integer :: i, n + real, parameter :: EPS = 0.000001 + real :: diff, a(*), b(*) + do i = 1, n + diff = a(i) - b(i) + if (diff > EPS .or. -diff > EPS) call abort + end do + end subroutine + + subroutine checkint (a, b, n) + integer :: i, n, a(*), b(*) + do i = 1, n + if (a(i) .ne. b(i)) call abort + end do + end subroutine + + subroutine test () + integer :: a(128), a_ref(128), b(128), ri, ri_ref + real :: x(128), x_ref(128), y(128), rf, rf_ref + + call init2(a, x, 128) + call init2(a_ref, x_ref, 128) + + call init(b, y, 128) + + ri = myaddint (a, b, 128) + rf = myaddfloat (x, y, 128) + + call init(b, y, 128) + + ri_ref = myaddint_ref (a_ref, b, 128) + rf_ref = myaddfloat_ref (x_ref, y, 128) + + call checkint (a, a_ref, 128) + call checkfloat (x, x_ref, 128) + end subroutine + +end module + +program SIMD6 + use SIMD6_mod, only: test + + call test () + +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 new file mode 100644 index 00000000000..a61bb038bf0 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 @@ -0,0 +1,49 @@ +! { dg-do run { target vect_simd_clones } } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +program fibonacci + implicit none + integer,parameter :: N=45 + integer :: a(0:N-1), b(0:N-1) + integer :: a_ref(0:N-1), b_ref(0:N-1) + integer :: i + integer, external :: fib + + !$omp simd + do i = 0,N-1 + b(i) = i + end do + + do i = 0,N-1 + b_ref(i) = i + end do + + !$omp simd + do i=0,N-1 + a(i) = fib(b(i)) + end do + + do i=0,N-1 + a_ref(i) = fib(b_ref(i)) + end do + + do i = 0, N-1 + if (a(i) .ne. a_ref(i)) call abort () + end do + + if (a(44) .ne. 1134903170) call abort() + +end program + +recursive function fib(n) result(r) +!$omp declare simd(fib) inbranch + integer :: n, r + + if (n <= 2) then + r = n + else + r = fib(n-1) + fib(n-2) + endif + +end function fib diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90 new file mode 100644 index 00000000000..a58093730dd --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90 @@ -0,0 +1,48 @@ +! { dg-do run } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + +module work + +integer :: P(1000) +real :: A(1000) + +contains +function do_work(arr) result(pri) + implicit none + real, dimension(*) :: arr + + real :: pri + integer :: i, j + + !$omp simd private(j) lastprivate(pri) + do i = 1, 999 + j = P(i) + + pri = 0.5 + if (mod(j-1, 2) == 0) then + pri = A(j+1) + arr(i) + endif + A(j) = pri * 1.5 + pri = pri + A(j) + end do + +end function do_work + +end module work + +program simd_8f + use work + implicit none + real :: pri, arr(1000) + integer :: i + + do i = 1, 1000 + P(i) = i + A(i) = (i-1) * 1.5 + arr(i) = (i-1) * 1.8 + end do + pri = do_work(arr) + if (pri .ne. 8237.25) call abort () + +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.50.1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target-1.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.50.1.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target-1.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.50.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target-2.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.50.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target-2.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.50.3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target-3.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.50.3.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target-3.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.50.4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target-4.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.50.4.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target-4.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.50.5.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target-5.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.50.5.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target-5.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-1.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.1.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-1.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-2.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-2.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-3.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.3.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-3.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-4.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.4.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-4.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.5.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-5.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.5.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-5.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.6.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-6.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.6.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-6.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.51.7.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_data-7.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.51.7.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_data-7.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.52.1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_update-1.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.52.1.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_update-1.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.52.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/target_update-2.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.52.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/target_update-2.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90 new file mode 100644 index 00000000000..78201ea860e --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90 @@ -0,0 +1,16 @@ +! { dg-do run } + +program example + integer :: x + x = 1 + !$omp parallel + !$omp single + !$omp task shared(x) depend(out: x) + x = 2 + !$omp end task + !$omp task shared(x) depend(in: x) + if (x .ne. 2) call abort () + !$omp end task + !$omp end single + !$omp end parallel +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90 new file mode 100644 index 00000000000..5afd76dbf43 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90 @@ -0,0 +1,16 @@ +! { dg-do run } + +program example + integer :: x + x = 1 + !$omp parallel + !$omp single + !$omp task shared(x) depend(in: x) + if (x .ne. 1) call abort () + !$omp end task + !$omp task shared(x) depend(out: x) + x = 2 + !$omp end task + !$omp end single + !$omp end parallel +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90 new file mode 100644 index 00000000000..c8d58205858 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90 @@ -0,0 +1,18 @@ +! { dg-do run } + +program example + integer :: x + x = 0 + !$omp parallel + !$omp single + !$omp task shared(x) depend(out: x) + x = 1 + !$omp end task + !$omp task shared(x) depend(out: x) + x = 2 + !$omp end task + !$omp taskwait + if ((x .ne. 1) .and. (x .ne. 2)) call abort() + !$omp end single + !$omp end parallel +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90 new file mode 100644 index 00000000000..7fe24c347df --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90 @@ -0,0 +1,19 @@ +! { dg-do run } + +program example + integer :: x + x = 1 + !$omp parallel + !$omp single + !$omp task shared(x) depend(out: x) + x = 2 + !$omp end task + !$omp task shared(x) depend(in: x) + if (x .ne. 2) call abort () + !$omp end task + !$omp task shared(x) depend(in: x) + if (x .ne. 2) call abort () + !$omp end task + !$omp end single + !$omp end parallel +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90 new file mode 100644 index 00000000000..f12b42c19ce --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90 @@ -0,0 +1,100 @@ +! { dg-do run } + +module task_dep5_mod +contains + subroutine matmul_depend (N, BS, A, B, C) + implicit none + integer :: N, BS, BM + real, dimension(N, N) :: A, B, C + integer :: i, j, k, ii, jj, kk + BM = BS - 1 + do i = 1, N, BS + do j = 1, N, BS + do k = 1, N, BS + !$omp task shared(A,B,C) private(ii,jj,kk) & ! I,J,K are firstprivate by default + !$omp depend ( in: A(i:i+BM, k:k+BM), B(k:k+BM, j:j+BM) ) & + !$omp depend ( inout: C(i:i+BM, j:j+BM) ) + do ii = i, i+BM + do jj = j, j+BM + do kk = k, k+BM + C(jj,ii) = C(jj,ii) + A(kk,ii) * B(jj,kk) + end do + end do + end do + !$omp end task + end do + end do + end do + end subroutine + + subroutine matmul_ref (N, A, B, C) + implicit none + integer :: N + real, dimension(N, N) :: A, B, C + integer :: i, j, k + do i = 1, N + do j = 1, N + do k = 1, N + C(j,i) = C(j,i) + A(k,i) * B(j,k) + end do + end do + end do + end subroutine + + subroutine check (N, A, B) + integer :: N + integer :: i, j + integer, parameter :: EPS = 0.000001 + real, dimension(N,N) :: A, B + real :: diff + do i = 1, N + do j = 1, N + diff = A(i, j) - B(i, j) + if (diff > EPS .or. -diff > EPS) then + call abort () + end if + end do + end do + end subroutine + + subroutine init (N, A, B) + integer :: N + integer :: i, j, s + real, dimension(N,N) :: A, B + s = -1 + do i = 1, N + do j = 1, N + A(i, j) = i*j*s + B(i, j) = i+j + s = -s + end do + end do + end subroutine + + subroutine zero_init (N, A, B) + integer :: N + integer :: i, j + real, dimension(N,N) :: A, B + do i = 1, N + do j = 1, N + A(i, j) = 0 + B(i, j) = 0 + end do + end do + end subroutine + +end module + +program main + use task_dep5_mod + real, dimension(32, 32) :: A, B, C, C_ref + + call init (32, A, B) + call zero_init (32, C, C_ref) + + call matmul_depend(32, 4, A, B, C) + call matmul_ref(32, A, B, C_ref) + + call check (32, C, C_ref) + +end program diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/teams-2.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/teams-2.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.54.3.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/teams-3.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.54.3.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/teams-3.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.54.4.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/teams-4.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.54.4.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/teams-4.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.54.5.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.54.5.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90 diff --git a/libgomp/testsuite/libgomp.fortran/examples-4/e.54.6.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90 similarity index 100% rename from libgomp/testsuite/libgomp.fortran/examples-4/e.54.6.f90 rename to libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90 -- 2.30.2