Update libgomp/testsuite/*/examples-4/* according to latest version (4.0.2)
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
This commit is contained in:
parent
36d2f81e95
commit
343587dc64
89 changed files with 1623 additions and 5 deletions
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
65
libgomp/testsuite/libgomp.c/examples-4/simd-1.c
Normal file
65
libgomp/testsuite/libgomp.c/examples-4/simd-1.c
Normal file
|
@ -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;
|
||||
}
|
90
libgomp/testsuite/libgomp.c/examples-4/simd-2.c
Normal file
90
libgomp/testsuite/libgomp.c/examples-4/simd-2.c
Normal file
|
@ -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;
|
||||
}
|
61
libgomp/testsuite/libgomp.c/examples-4/simd-3.c
Normal file
61
libgomp/testsuite/libgomp.c/examples-4/simd-3.c
Normal file
|
@ -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;
|
||||
}
|
58
libgomp/testsuite/libgomp.c/examples-4/simd-4.c
Normal file
58
libgomp/testsuite/libgomp.c/examples-4/simd-4.c
Normal file
|
@ -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;
|
||||
}
|
76
libgomp/testsuite/libgomp.c/examples-4/simd-5.c
Normal file
76
libgomp/testsuite/libgomp.c/examples-4/simd-5.c
Normal file
|
@ -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;
|
||||
}
|
105
libgomp/testsuite/libgomp.c/examples-4/simd-6.c
Normal file
105
libgomp/testsuite/libgomp.c/examples-4/simd-6.c
Normal file
|
@ -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;
|
||||
}
|
41
libgomp/testsuite/libgomp.c/examples-4/simd-7.c
Normal file
41
libgomp/testsuite/libgomp.c/examples-4/simd-7.c
Normal file
|
@ -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;
|
||||
}
|
49
libgomp/testsuite/libgomp.c/examples-4/simd-8.c
Normal file
49
libgomp/testsuite/libgomp.c/examples-4/simd-8.c
Normal file
|
@ -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;
|
||||
}
|
17
libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c
Normal file
17
libgomp/testsuite/libgomp.c/examples-4/task_dep-1.c
Normal file
|
@ -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;
|
||||
}
|
17
libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c
Normal file
17
libgomp/testsuite/libgomp.c/examples-4/task_dep-2.c
Normal file
|
@ -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;
|
||||
}
|
20
libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c
Normal file
20
libgomp/testsuite/libgomp.c/examples-4/task_dep-3.c
Normal file
|
@ -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;
|
||||
}
|
20
libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c
Normal file
20
libgomp/testsuite/libgomp.c/examples-4/task_dep-4.c
Normal file
|
@ -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;
|
||||
}
|
81
libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c
Normal file
81
libgomp/testsuite/libgomp.c/examples-4/task_dep-5.c
Normal file
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
67
libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90
Normal file
67
libgomp/testsuite/libgomp.fortran/examples-4/simd-1.f90
Normal file
|
@ -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
|
72
libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90
Normal file
72
libgomp/testsuite/libgomp.fortran/examples-4/simd-2.f90
Normal file
|
@ -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
|
59
libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90
Normal file
59
libgomp/testsuite/libgomp.fortran/examples-4/simd-3.f90
Normal file
|
@ -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
|
64
libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90
Normal file
64
libgomp/testsuite/libgomp.fortran/examples-4/simd-4.f90
Normal file
|
@ -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
|
76
libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90
Normal file
76
libgomp/testsuite/libgomp.fortran/examples-4/simd-5.f90
Normal file
|
@ -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
|
151
libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90
Normal file
151
libgomp/testsuite/libgomp.fortran/examples-4/simd-6.f90
Normal file
|
@ -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
|
49
libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90
Normal file
49
libgomp/testsuite/libgomp.fortran/examples-4/simd-7.f90
Normal file
|
@ -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
|
48
libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90
Normal file
48
libgomp/testsuite/libgomp.fortran/examples-4/simd-8.f90
Normal file
|
@ -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
|
16
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90
Normal file
16
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-1.f90
Normal file
|
@ -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
|
16
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90
Normal file
16
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-2.f90
Normal file
|
@ -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
|
18
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90
Normal file
18
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-3.f90
Normal file
|
@ -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
|
19
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90
Normal file
19
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-4.f90
Normal file
|
@ -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
|
100
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90
Normal file
100
libgomp/testsuite/libgomp.fortran/examples-4/task_dep-5.f90
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue