summaryrefslogtreecommitdiff
path: root/src/abstract_hardware_model.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/abstract_hardware_model.h')
-rw-r--r--src/abstract_hardware_model.h15
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;