diff options
| author | Inderpreet Singh <[email protected]> | 2012-07-18 23:17:29 -0800 |
|---|---|---|
| committer | Andrew Boktor <[email protected]> | 2014-08-14 13:47:33 -0700 |
| commit | 8d59181b80697dfc717abcd55da9c899e4cf0d07 (patch) | |
| tree | e34982e972f5cea3585a902e06bc38a006b042f0 /src/abstract_hardware_model.h | |
| parent | 896e5c9a34e1b1230a67fb714d8290cd6f7f979b (diff) | |
Copied in Arun's SIMT stack fix for recursive calls (CL8574)
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13410]
Diffstat (limited to 'src/abstract_hardware_model.h')
| -rw-r--r-- | src/abstract_hardware_model.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 1fc10b9..4cde89a 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -64,7 +64,9 @@ enum uarch_op_t { STORE_OP, BRANCH_OP, BARRIER_OP, - MEMORY_BARRIER_OP + MEMORY_BARRIER_OP, + CALL_OPS, + RET_OPS }; typedef enum uarch_op_t op_type; @@ -245,7 +247,7 @@ public: void reset(); void launch( address_type start_pc, const simt_mask_t &active_mask ); - void update( simt_mask_t &thread_done, addr_vector_t &next_pc, address_type recvg_pc ); + void update( simt_mask_t &thread_done, addr_vector_t &next_pc, address_type recvg_pc, op_type next_inst_op ); const simt_mask_t &get_active_mask() const; void get_pdom_stack_top_info( unsigned *pc, unsigned *rpc ) const; @@ -256,12 +258,19 @@ protected: unsigned m_warp_id; unsigned m_stack_top; unsigned m_warp_size; + unsigned m_max_stack_size; address_type *m_pc; simt_mask_t *m_active_mask; address_type *m_recvg_pc; unsigned int *m_calldepth; + enum stack_entry_type { + NORMAL = 0, + CALL + }; + stack_entry_type *m_type; + unsigned long long *m_branch_div_cycle; }; @@ -683,6 +692,7 @@ public: m_per_scalar_thread_valid=false; m_mem_accesses_created=false; m_cache_hit=false; + m_is_printf=false; } virtual ~warp_inst_t(){ } @@ -814,6 +824,7 @@ protected: unsigned long long issue_cycle; unsigned cycles; // used for implementing initiation interval delay bool m_isatomic; + bool m_is_printf; unsigned m_warp_id; const core_config *m_config; active_mask_t m_warp_active_mask; |
