From f8a8a50c421879a6ccc369663b3080fbec2428d1 Mon Sep 17 00:00:00 2001 From: Inderpreet Singh Date: Wed, 25 Jul 2012 19:52:21 -0800 Subject: SIMT stack is now implementated as a stack to allow arbitrary recursion depth [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13519] --- src/abstract_hardware_model.h | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'src/abstract_hardware_model.h') diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h index 428b5fc..f3957c4 100644 --- a/src/abstract_hardware_model.h +++ b/src/abstract_hardware_model.h @@ -82,6 +82,7 @@ enum _memory_op_t { #include #include #include +#include #if !defined(__VECTOR_TYPES_H__) struct dim3 { @@ -241,10 +242,23 @@ typedef std::bitset active_mask_t; typedef std::bitset simt_mask_t; typedef std::vector addr_vector_t; +enum stack_entry_type { + STACK_ENTRY_TYPE_NORMAL = 0, + STACK_ENTRY_TYPE_CALL +}; + +struct simt_stack_entry { + address_type m_pc; + unsigned int m_calldepth; + simt_mask_t m_active_mask; + address_type m_recvg_pc; + unsigned long long m_branch_div_cycle; + stack_entry_type m_type; +}; + class simt_stack { public: simt_stack( unsigned wid, unsigned warpSize); - ~simt_stack(); void reset(); void launch( address_type start_pc, const simt_mask_t &active_mask ); @@ -257,22 +271,9 @@ public: 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; + std::deque m_stack; }; #define GLOBAL_HEAP_START 0x80000000 -- cgit v1.3