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:
Maxim Blumenthal 2015-07-13 13:08:13 +00:00 committed by Ilya Verbin
parent 36d2f81e95
commit 343587dc64
89 changed files with 1623 additions and 5 deletions

View 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.

View 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);

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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