diff options
Diffstat (limited to 'src/cuda-sim/ptx_ir.h')
| -rw-r--r-- | src/cuda-sim/ptx_ir.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/cuda-sim/ptx_ir.h b/src/cuda-sim/ptx_ir.h index ffd0c58..044bce6 100644 --- a/src/cuda-sim/ptx_ir.h +++ b/src/cuda-sim/ptx_ir.h @@ -994,14 +994,16 @@ private: class param_info { public: - param_info() { m_valid = false; m_value_set=false; m_size = 0; } - param_info( std::string name, int type, size_t size ) + param_info() { m_valid = false; m_value_set=false; m_size = 0; m_is_ptr = false; } + param_info( std::string name, int type, size_t size, bool is_ptr, memory_space_t ptr_space ) { m_valid = true; m_value_set = false; m_name = name; m_type = type; m_size = size; + m_is_ptr = is_ptr; + m_ptr_space = ptr_space; } void add_data( param_t v ) { assert( (!m_value_set) || (m_value.size == v.size) ); // if this fails concurrent kernel launches might execute incorrectly @@ -1014,6 +1016,7 @@ public: int get_type() const { assert(m_valid); return m_type; } param_t get_value() const { assert(m_value_set); return m_value; } size_t get_size() const { assert(m_valid); return m_size; } + bool is_ptr_shared() const { assert(m_valid); return (m_is_ptr and m_ptr_space == shared_space); } private: bool m_valid; std::string m_name; @@ -1022,6 +1025,8 @@ private: bool m_value_set; param_t m_value; unsigned m_offset; + bool m_is_ptr; + memory_space_t m_ptr_space; }; class function_info { @@ -1093,7 +1098,7 @@ public: { m_kernel_params[ name ] = value; } - void add_param_name_type_size( unsigned index, std::string name, int type, size_t size ); + void add_param_name_type_size( unsigned index, std::string name, int type, size_t size, bool ptr, memory_space_t space ); void add_param_data( unsigned argn, struct gpgpu_ptx_sim_arg *args ); void add_return_var( const symbol *rv ) { |
