7 template<u
int32_t RAS_SIZE, u
int32_t CALL_INSTR_SIZE_TRACKERS>
12 uint64_t
ras[RAS_SIZE];
58 std::cout <<
"RAS size: " << RAS_SIZE << std::endl;
59 for (uint32_t i = 0; i < RAS_SIZE; i++) {
63 for (uint32_t i = 0; i < CALL_INSTR_SIZE_TRACKERS; i++) {
86 uint64_t estimated_call_instr_size =
abs_addr_dist(call_ip, branch_target);
87 if (estimated_call_instr_size <= 10) {
uint64_t ras[RAS_SIZE]
Definition: ras.h:12
uint64_t call_instr_sizes[CALL_INSTR_SIZE_TRACKERS]
Definition: ras.h:22
void initialize()
Definition: ras.h:57
uint64_t pop_ras()
Definition: ras.h:41
uint64_t predict()
Definition: ras.h:68
uint64_t call_size_tracker_hash(uint64_t ip)
Definition: ras.h:51
uint64_t abs_addr_dist(uint64_t addr1, uint64_t addr2)
Definition: ras.h:24
void push_ras(uint64_t ip)
Definition: ras.h:31
int ras_index
Definition: ras.h:13
void update(uint64_t ip, uint64_t branch_target, uint8_t taken, uint8_t branch_type)
Definition: ras.h:76
uint64_t peek_ras()
Definition: ras.h:39
uint64_t get_call_size(uint64_t ip)
Definition: ras.h:53
branch_type
Definition: instruction.h:30
@ BRANCH_INDIRECT_CALL
Definition: instruction.h:36
@ BRANCH_DIRECT_CALL
Definition: instruction.h:35
@ BRANCH_RETURN
Definition: instruction.h:37