cuda-kat
CUDA kernel author's tools
Namespaces | Macros | Functions
special_registers.cuh File Reference

PTX instruction wrapper functions for accessing special on-GPU-core registers. More...

#include "detail/define_macros.cuh"
#include "detail/undefine_macros.cuh"

Namespaces

 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.
 

Macros

#define CUDA_KAT_PTX_SPECIAL_REGISTERS_CUH_
 
#define DEFINE_SPECIAL_REGISTER_GETTER(special_register_name, ptx_value_type)
 

Functions

 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)
 

Detailed Description

PTX instruction wrapper functions for accessing special on-GPU-core registers.

Macro Definition Documentation

§ 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; \
} \