]> gcc.gnu.org Git - gcc.git/commitdiff
Update libgomp/testsuite/*/examples-4/* according to latest version (4.0.2)
authorMaxim Blumenthal <maxim.blumenthal@intel.com>
Mon, 13 Jul 2015 13:08:13 +0000 (13:08 +0000)
committerIlya Verbin <iverbin@gcc.gnu.org>
Mon, 13 Jul 2015 13:08:13 +0000 (13:08 +0000)
2015-07-13  Maxim Blumenthal  <maxim.blumenthal@intel.com>

* 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

89 files changed:
libgomp/ChangeLog
libgomp/testsuite/libgomp.c++/examples-4/declare_target-2.C [moved from libgomp/testsuite/libgomp.c++/examples-4/e.53.2.C with 100% similarity]
libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C [moved from libgomp/testsuite/libgomp.c++/examples-4/e.51.5.C with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/array_sections-3.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.56.3.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/array_sections-4.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.56.4.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/async_target-1.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.55.1.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/async_target-2.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.55.2.c with 89% similarity]
libgomp/testsuite/libgomp.c/examples-4/declare_target-1.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.53.1.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/declare_target-3.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.53.3.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/declare_target-4.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.53.4.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/declare_target-5.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.53.5.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/device-1.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.57.1.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/device-2.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.57.2.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/device-3.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.57.3.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/simd-1.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-2.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-3.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-4.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-5.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-6.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-7.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/simd-8.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/target-1.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.50.1.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target-2.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.50.2.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target-3.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.50.3.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target-4.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.50.4.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target-5.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.50.5.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_data-1.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.51.1.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_data-2.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.51.2.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_data-3.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.51.3.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_data-4.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.51.4.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_data-6.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.51.6.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_data-7.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.51.7.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_update-1.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.52.1.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/target_update-2.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.52.2.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c [new file with mode: 0644]
libgomp/testsuite/libgomp.c/examples-4/teams-2.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.54.2.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/teams-3.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.54.3.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/teams-4.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.54.4.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/teams-5.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.54.5.c with 100% similarity]
libgomp/testsuite/libgomp.c/examples-4/teams-6.c [moved from libgomp/testsuite/libgomp.c/examples-4/e.54.6.c with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/array_sections-3.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.56.3.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.56.4.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.55.1.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.55.2.f90 with 98% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.53.1.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.53.2.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.53.3.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.53.4.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.53.5.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/device-1.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.57.1.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/device-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.57.2.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/device-3.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.57.3.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/target-1.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.50.1.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.50.2.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target-3.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.50.3.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target-4.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.50.4.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target-5.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.50.5.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-1.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.1.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.2.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-3.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.3.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-4.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.4.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-5.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.5.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-6.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.6.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_data-7.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.51.7.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_update-1.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.52.1.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/target_update-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.52.2.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/examples-4/teams-2.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/teams-3.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.54.3.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/teams-4.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.54.4.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.54.5.f90 with 100% similarity]
libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90 [moved from libgomp/testsuite/libgomp.fortran/examples-4/e.54.6.f90 with 100% similarity]

index ff1fd17ab3626cb1a962f0abf66c4c8980565a4b..16b84c505444a2c87988ccd3f1bab522117bcf18 100644 (file)
@@ -1,3 +1,161 @@
+2015-07-13  Maxim Blumenthal  <maxim.blumenthal@intel.com>
+
+       * 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  <tom@codesourcery.com>
 
        * testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95: New test.
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 f03cae372fffaca7818f5c13b341fc1898fa019a..ce63328a7b4278afe71a237a176306f3c244ee37 100644 (file)
@@ -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/simd-1.c b/libgomp/testsuite/libgomp.c/examples-4/simd-1.c
new file mode 100644 (file)
index 0000000..5baaf30
--- /dev/null
@@ -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 <stdlib.h>
+
+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 (file)
index 0000000..6527db9
--- /dev/null
@@ -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 <stdlib.h>
+
+void init(double *a, double *a_ref, double *b, int n)
+{
+   int i;
+   for ( i=0; i<N; i++ )
+   {
+      a[i] = i;
+      a_ref[i] = i;
+      b[i] = N-i;
+   }
+}
+
+#pragma omp declare simd uniform(fact)
+double add1(double a, double b, double fact)
+{
+   double c;
+   c = a + b + fact;
+   return c;
+}
+
+#pragma omp declare simd uniform(a,b,fact) linear(i:1)
+double add2(double *a, double *b, int i, double fact)
+{
+   double c;
+   c = a[i] + b[i] + fact;
+   return c;
+}
+
+#pragma omp declare simd uniform(fact) linear(a,b:1)
+double add3(double *a, double *b, double fact)
+{
+   double c;
+   c = *a + *b + fact;
+   return c;
+}
+
+void work( double *a, double *b, int n )
+{
+   int i;
+   double tmp;
+   #pragma omp simd private(tmp)
+   for ( i = 0; i < n; i++ ) {
+      tmp  = add1( a[i],  b[i], 1.0);
+      a[i] = add2( a,     b, i, 1.0) + tmp;
+      a[i] = add3(&a[i], &b[i], 1.0);
+   }
+}
+
+void work_ref( double *a, double *b, int n )
+{
+   int i;
+   double tmp;
+   for ( i = 0; i < n; i++ ) {
+      tmp  = add1( a[i],  b[i], 1.0);
+      a[i] = add2( a,     b, i, 1.0) + tmp;
+      a[i] = add3(&a[i], &b[i], 1.0);
+   }
+}
+
+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 ()
+{
+   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 (file)
index 0000000..9f33713
--- /dev/null
@@ -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 <stdlib.h>
+
+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 (file)
index 0000000..1aa0425
--- /dev/null
@@ -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 <stdlib.h>
+
+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 (file)
index 0000000..ce037ac
--- /dev/null
@@ -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 <stdlib.h>
+
+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 (file)
index 0000000..a326b45
--- /dev/null
@@ -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 <stdlib.h>
+#include <stdio.h>
+
+void init(int *b, float *y, int n)
+{
+   int i, s = -1;
+   for ( i=0; i<N; i++ )
+   {
+      b[i] = i*i*s;
+      y[i] = b[i] * 0.1f;
+      s = -s;
+   }
+}
+
+#pragma omp declare simd linear(p:1) notinbranch
+int foo(int *p){
+  *p = *p + 10;
+  return *p;
+}
+
+int myaddint(int *a, int *b, int n)
+{
+#pragma omp simd
+  for (int i=0; i<n; i++){
+      a[i]  = foo(&b[i]);  /* foo is not called under a condition */
+  }
+  return a[n-1];
+}
+
+int myaddint_ref(int *a, int *b, int n)
+{
+  for (int i=0; i<n; i++){
+      a[i]  = foo(&b[i]);
+  }
+  return a[n-1];
+}
+
+#pragma omp declare simd linear(p:1) inbranch
+float goo(float *p){
+  *p = *p + 18.5f;
+  return *p;
+}
+
+int myaddfloat(float *x, float *y, int n)
+{
+#pragma omp simd
+  for (int i=0; i<n; i++){
+     x[i] = (x[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<n; i++){
+     x[i] = (x[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 (file)
index 0000000..4aab962
--- /dev/null
@@ -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 <stdio.h>
+#include <stdlib.h>
+
+#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 (file)
index 0000000..397e2a3
--- /dev/null
@@ -0,0 +1,49 @@
+/* { dg-do run } */
+/* { dg-additional-options "-msse2" { target sse2_runtime } } */
+/* { dg-additional-options "-mavx" { target avx_runtime } } */
+
+#include <stdlib.h>
+#include <math.h>
+
+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/task_dep-1.c b/libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c
new file mode 100644 (file)
index 0000000..8d397a5
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-do run } */
+
+#include <stdlib.h>
+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 (file)
index 0000000..f583f09
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-do run } */
+
+#include <stdlib.h>
+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 (file)
index 0000000..189d5e0
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+
+#include <stdlib.h>
+
+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 (file)
index 0000000..77aa57a
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+
+#include <stdlib.h>
+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 (file)
index 0000000..066edc7
--- /dev/null
@@ -0,0 +1,81 @@
+/* { dg-do run } */
+
+#define N 128
+#define BS 16
+#define EPS 0.000001
+
+#include <stdlib.h>
+
+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;
+}
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 dfcb5f40ca90b80127843823b90e1de428fb6e61..b12b0eaa890ed82a18d1d375bd8e3dd514c6ee25 100644 (file)
@@ -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/simd-1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90
new file mode 100644 (file)
index 0000000..b1af859
--- /dev/null
@@ -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 (file)
index 0000000..74a0303
--- /dev/null
@@ -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 (file)
index 0000000..f2e0047
--- /dev/null
@@ -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 (file)
index 0000000..414f8bc
--- /dev/null
@@ -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 (file)
index 0000000..e64e1d5
--- /dev/null
@@ -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 (file)
index 0000000..5cb1e04
--- /dev/null
@@ -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 (file)
index 0000000..a61bb03
--- /dev/null
@@ -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 (file)
index 0000000..a580937
--- /dev/null
@@ -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/task_dep-1.f90 b/libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90
new file mode 100644 (file)
index 0000000..78201ea
--- /dev/null
@@ -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 (file)
index 0000000..5afd76d
--- /dev/null
@@ -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 (file)
index 0000000..c8d5820
--- /dev/null
@@ -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 (file)
index 0000000..7fe24c3
--- /dev/null
@@ -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 (file)
index 0000000..f12b42c
--- /dev/null
@@ -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
This page took 0.159177 seconds and 5 git commands to generate.