Remove build dependence on HSA run-time
authorMartin Liska <mliska@suse.cz>
Wed, 23 Nov 2016 12:27:13 +0000 (13:27 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Wed, 23 Nov 2016 12:27:13 +0000 (13:27 +0100)
commitb8d89b03db5f212919e4571671ebb4f5f8b1e19d
treeca8d3a25bea7a0869227ad33aafc39ca9eff7e0e
parent3615816da830d41f67a5d8955ae588eba7f0b6fb
Remove build dependence on HSA run-time

2016-11-23  Martin Liska  <mliska@suse.cz>
            Martin Jambor  <mjambor@suse.cz>

gcc/
* doc/install.texi: Remove entry about --with-hsa-kmt-lib.

libgomp/
* plugin/hsa.h: New file.
* plugin/hsa_ext_finalize.h: New file.
* plugin/configfrag.ac: Remove hsa-kmt-lib test.  Added checks for
header file unistd.h, and functions secure_getenv, __secure_getenv,
getuid, geteuid, getgid and getegid.
* plugin/Makefrag.am (libgomp_plugin_hsa_la_CPPFLAGS): Added
-D_GNU_SOURCE.
* plugin/plugin-hsa.c: Include config.h, inttypes.h and stdbool.h.
Handle various cases of secure_getenv presence, add an implementation
when we can test effective UID and GID.
(struct hsa_runtime_fn_info): New structure.
(hsa_runtime_fn_info hsa_fns): New variable.
(hsa_runtime_lib): Likewise.
(support_cpu_devices): Likewise.
(init_enviroment_variables): Load newly introduced ENV
variables.
(hsa_warn): Call hsa run-time functions via hsa_fns structure.
(hsa_fatal): Likewise.
(DLSYM_FN): New macro.
(init_hsa_runtime_functions): New function.
(suitable_hsa_agent_p): Call hsa run-time functions via hsa_fns
structure.  Depending on environment, also allow CPU devices.
(init_hsa_context): Call hsa run-time functions via hsa_fns structure.
(get_kernarg_memory_region): Likewise.
(GOMP_OFFLOAD_init_device): Likewise.
(destroy_hsa_program): Likewise.
(init_basic_kernel_info): New function.
(GOMP_OFFLOAD_load_image): Use it.
(create_and_finalize_hsa_program): Call hsa run-time functions via
hsa_fns structure.
(create_single_kernel_dispatch): Likewise.
(release_kernel_dispatch): Likewise.
(init_single_kernel): Likewise.
(parse_target_attributes): Allow up multiple HSA grid dimensions.
(get_group_size): New function.
(run_kernel): Likewise.
(GOMP_OFFLOAD_run): Outline most functionality to run_kernel.
(GOMP_OFFLOAD_fini_device): Call hsa run-time functions via hsa_fns
structure.
* testsuite/lib/libgomp.exp: Remove hsa_kmt_lib support.
* testsuite/libgomp-test-support.exp.in: Likewise.
* Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* config.h.in: Likewise.
* configure: Likewise.
* testsuite/Makefile.in: Likewise.

Co-Authored-By: Martin Jambor <mjambor@suse.cz>
From-SVN: r242749
15 files changed:
gcc/ChangeLog
gcc/doc/install.texi
libgomp/ChangeLog
libgomp/Makefile.in
libgomp/aclocal.m4
libgomp/config.h.in
libgomp/configure
libgomp/plugin/Makefrag.am
libgomp/plugin/configfrag.ac
libgomp/plugin/hsa.h [new file with mode: 0644]
libgomp/plugin/hsa_ext_finalize.h [new file with mode: 0644]
libgomp/plugin/plugin-hsa.c
libgomp/testsuite/Makefile.in
libgomp/testsuite/lib/libgomp.exp
libgomp/testsuite/libgomp-test-support.exp.in