diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2022-11-21 15:22:35 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2022-11-21 15:22:35 +0100 |
commit | 6edcb5dc42625cb0cf84b19c6fe4f944f6322ea0 (patch) | |
tree | ccdd4a3ffada1157c4881060c4e1d7e42d160214 /libgomp/plugin | |
parent | 711f56ad9093b18197ca82415317f4a3748d45ae (diff) | |
download | gcc-6edcb5dc42625cb0cf84b19c6fe4f944f6322ea0.zip gcc-6edcb5dc42625cb0cf84b19c6fe4f944f6322ea0.tar.gz gcc-6edcb5dc42625cb0cf84b19c6fe4f944f6322ea0.tar.bz2 |
libgomp/gcn: fix/improve struct output
output.printf_data.(value union) contains text[128], which has the size
of 128 bytes, sufficient for 16 uint64_t variables; hence value_u64[2]
could be extended to value_u64[6] - sufficient for all required arguments
to gomp_target_rev. Additionally, next_output.printf_data.(msg union)
contained msg_u64 which then is no longer needed and also caused 32bit
vs 64bit alignment issues.
libgomp/
* config/gcn/libgomp-gcn.h (struct output):
Remove 'msg_u64' from the union, change
value_u64[2] to value_u64[6].
* config/gcn/target.c (GOMP_target_ext): Update accordingly.
* plugin/plugin-gcn.c (process_reverse_offload, console_output):
Likewise.
Diffstat (limited to 'libgomp/plugin')
-rw-r--r-- | libgomp/plugin/plugin-gcn.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c index ffe5cf5..99a7002 100644 --- a/libgomp/plugin/plugin-gcn.c +++ b/libgomp/plugin/plugin-gcn.c @@ -1919,16 +1919,12 @@ create_kernel_dispatch (struct kernel_info *kernel, int num_teams) } static void -process_reverse_offload (uint64_t fn, uint64_t mapnum, uint64_t rev_data, - uint64_t dev_num64) +process_reverse_offload (uint64_t fn, uint64_t mapnum, uint64_t hostaddrs, + uint64_t sizes, uint64_t kinds, uint64_t dev_num64) { int dev_num = dev_num64; - uint64_t addrs_sizes_kinds[3]; - GOMP_OFFLOAD_host2dev (dev_num, &addrs_sizes_kinds, (void *) rev_data, - sizeof (addrs_sizes_kinds)); - GOMP_PLUGIN_target_rev (fn, mapnum, addrs_sizes_kinds[0], - addrs_sizes_kinds[1], addrs_sizes_kinds[2], - dev_num, NULL, NULL, NULL); + GOMP_PLUGIN_target_rev (fn, mapnum, hostaddrs, sizes, kinds, dev_num, + NULL, NULL, NULL); } /* Output any data written to console output from the kernel. It is expected @@ -1976,8 +1972,9 @@ console_output (struct kernel_info *kernel, struct kernargs *kernargs, case 2: printf ("%.128s%.128s\n", data->msg, data->text); break; case 3: printf ("%.128s%.128s", data->msg, data->text); break; case 4: - process_reverse_offload (data->msg_u64[0], data->msg_u64[1], - data->value_u64[0],data->value_u64[1]); + process_reverse_offload (data->value_u64[0], data->value_u64[1], + data->value_u64[2], data->value_u64[3], + data->value_u64[4], data->value_u64[5]); break; default: printf ("GCN print buffer error!\n"); break; } |