Lets the amdgpu plugin write to omptarget_device_environment
to enable debugging. Intend to use in the near future to record the
wavesize that a given deviceRTL was compiled with for running on hardware
that supports 32 or 64.
Patch sets all the attributes that are useful. Notably .data means the variable
is set by writing to host memory before copying to the GPU instead of launching
a kernel to update the image. Can simplify the plugin slightly to drop the
code for patching after load if this is used consistently.
NFC on nvptx, cuda plugin seems to work fine without any annotations.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D108698
#define INLINE inline
#define NOINLINE __attribute__((noinline))
#define ALIGN(N) __attribute__((aligned(N)))
+#define PLUGIN_ACCESSIBLE \
+ __attribute__((used)) /* Don't discard values the plugin reads */ \
+ __attribute__((visibility("default"))) /* Access via SHT_HASH */ \
+ __attribute__((section(".data"))) /* Not .bss, can write before load */
#include "llvm/Frontend/OpenMP/OMPGridValues.h"
// global device environment
////////////////////////////////////////////////////////////////////////////////
+PLUGIN_ACCESSIBLE
omptarget_device_environmentTy omptarget_device_environment;
////////////////////////////////////////////////////////////////////////////////
#define INLINE inline __attribute__((always_inline))
#define NOINLINE __attribute__((noinline))
#define ALIGN(N) __attribute__((aligned(N)))
+#define PLUGIN_ACCESSIBLE /* no annotation needed for cuda plugin */
#include "llvm/Frontend/OpenMP/OMPGridValues.h"