PTX instruction wrapper functions for accessing special on-GPU-core registers.
More...
#include "detail/define_macros.cuh"
#include "detail/undefine_macros.cuh"
|
| | kat::ptx |
| | Code exposing CUDA's PTX intermediate representation instructions to C++ code.
|
| |
| | kat::ptx::special_registers |
| | Wrappers for instructions obtaining the value of one of the special hardware registers on nVIDIA GPUs.
|
| |
|
|
#define | CUDA_KAT_PTX_SPECIAL_REGISTERS_CUH_ |
| |
| #define | DEFINE_SPECIAL_REGISTER_GETTER(special_register_name, ptx_value_type) |
| |
|
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (laneid, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (gridid, u64) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (smid, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (nsmid, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (clock, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (clock_hi, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (clock64, u64) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (globaltimer_hi, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (globaltimer_lo, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (globaltimer, u64) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (lanemask_lt, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (lanemask_le, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (lanemask_eq, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (lanemask_ge, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (lanemask_gt, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (dynamic_smem_size, u32) |
| |
|
| kat::ptx::special_registers::DEFINE_SPECIAL_REGISTER_GETTER (total_smem_size, u32) |
| |
PTX instruction wrapper functions for accessing special on-GPU-core registers.
§ DEFINE_SPECIAL_REGISTER_GETTER
| #define DEFINE_SPECIAL_REGISTER_GETTER |
( |
|
special_register_name, |
|
|
|
ptx_value_type |
|
) |
| |
Value:KAT_FD CPP_TYPE_BY_PTX_TYPE(ptx_value_type) special_register_name() \
{ \
CPP_TYPE_BY_PTX_TYPE(ptx_value_type) ret; \
asm volatile ("mov." PTX_STRINGIFY(ptx_value_type) "%0, %" PTX_STRINGIFY(special_register_name) ";" : "=" SIZE_CONSTRAINT(ptx_value_type) (ret)); \
return ret; \
} \