diff options
| author | Ahmed El-Shafiey <[email protected]> | 2012-08-14 13:53:25 -0800 |
|---|---|---|
| committer | Andrew Boktor <[email protected]> | 2014-08-14 13:48:54 -0700 |
| commit | 0ce06988a6a13f9a8f48f2230b1b9727ee86081e (patch) | |
| tree | 08a4f172a71b3a9b0de5bea1b1c74f38d97036cb /src/cuda-sim/ptx_ir.h | |
| parent | 8f2b4a6f61ef30d86b9bae7c92ed62f223550a76 (diff) | |
Fixing bugs 169, 170, 171
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13761]
Diffstat (limited to 'src/cuda-sim/ptx_ir.h')
| -rw-r--r-- | src/cuda-sim/ptx_ir.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/cuda-sim/ptx_ir.h b/src/cuda-sim/ptx_ir.h index 15c6743..4078e6b 100644 --- a/src/cuda-sim/ptx_ir.h +++ b/src/cuda-sim/ptx_ir.h @@ -342,6 +342,7 @@ public: m_const_mem_offset = 0; m_uid = get_uid(); m_valid = false; + m_immediate_address=false; } operand_info( const symbol *addr ) { @@ -376,6 +377,7 @@ public: m_vector = false; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( const symbol *addr1, const symbol *addr2 ) { @@ -396,6 +398,7 @@ public: m_vector = false; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( int builtin_id, int dim_mod ) { @@ -412,6 +415,7 @@ public: m_addr_offset = dim_mod; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( const symbol *addr, int offset ) { @@ -428,6 +432,7 @@ public: m_addr_offset = offset; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( unsigned x ) { @@ -441,9 +446,10 @@ public: m_vector = false; m_type = unsigned_t; m_value.m_unsigned = x; - m_addr_offset = 0; + m_addr_offset = x; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=true; } operand_info( int x ) { @@ -460,6 +466,7 @@ public: m_addr_offset = 0; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( float x ) { @@ -476,6 +483,7 @@ public: m_addr_offset = 0; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( double x ) { @@ -492,6 +500,7 @@ public: m_addr_offset = 0; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } operand_info( const symbol *s1, const symbol *s2, const symbol *s3, const symbol *s4 ) { @@ -512,11 +521,12 @@ public: m_addr_offset = 0; m_neg_pred = false; m_is_return_var = false; + m_immediate_address=false; } void make_memory_operand() { m_type = memory_t;} void set_return() { m_is_return_var = true; } - + void set_immediate_addr() {m_immediate_address=true;} const std::string &name() const { assert( m_type == symbolic_t || m_type == reg_t || m_type == address_t || m_type == memory_t || m_type == label_t); @@ -606,6 +616,10 @@ public: return (m_addr_space!=undefined_space); } + bool is_immediate_address() const { + return m_immediate_address; + } + bool is_literal() const { return m_type == int_t || m_type == float_op_t || m_type == double_op_t || @@ -678,7 +692,7 @@ private: bool m_valid; bool m_vector; enum operand_type m_type; - + bool m_immediate_address; enum _memory_space_t m_addr_space; int m_operand_lohi; int m_double_operand_type; |
