Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

misc.h File Reference

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <signal.h>
#include <ctype.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include <assert.h>
#include <math.h>
#include <vector>
#include <algorithm>

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Defines

#define _LAME_CC_
#define ALPHA   0
#define AVR   1
#define PROG_HALT_STR   ((arch==ALPHA)? "unknown" : "__stop_progIi_")
#define NATIVE_DATA_SIZE   ((arch==ALPHA)? 8 : 1)
#define MAX_NATIVE_DATA_VALUE   (1<<(8*NATIVE_DATA_SIZE - 1))
#define STR_SIZE   128
#define SHORT_STR_SIZE   (STR_SIZE/4)
#define LONG_STR_SIZE   (2*STR_SIZE)
#define HUGE_STR_SIZE   (32*STR_SIZE)
#define INVALID   (-1)
#define INVALID_UC   (255)
#define UNKNOWN   (-2)
#define BC   0
#define WC   1
#define FAIL_START   cout << "---------- START OF FAILURE REPORT DUMP ------------\n";
#define FAIL(msg)
#define FALSE   (0)
#define TRUE   (1)
#define PLURAL(x)   ((x>1)? "s":"")
#define MIN(a, b)   ((a < b)? a : b)
#define MAX(a, b)   ((a > b)? a : b)
#define TAB(index)   ( tab_string[index] )
#define REG_NAME_PREFIX   ((arch == ALPHA)? '$' : 'r')
#define FP_REG_NAME_PREFIX   ((arch == ALPHA)? "$f": "rf")
#define UNDERSCORE_REG_NAME_PREFIX   ((arch == ALPHA)? "_$" : "_r")
#define PC_SYMBOL   ((arch == ALPHA)? "_PC_" : "_PC_")
#define MAX_PREDECESSORS   (16)
#define MAX_SUCCESSORS   (2)
#define MAX_GP_REG   (31)
#define MAX_REG   (MAX_GP_REG+8)
#define NUM_AVR_FLAGS   (8)
#define C_FLAG   (MAX_GP_REG+1)
#define Z_FLAG   (MAX_GP_REG+2)
#define N_FLAG   (MAX_GP_REG+3)
#define V_FLAG   (MAX_GP_REG+4)
#define S_FLAG   (MAX_GP_REG+5)
#define H_FLAG   (MAX_GP_REG+6)
#define T_FLAG   (MAX_GP_REG+7)
#define I_FLAG   (MAX_GP_REG+8)
#define FIRST_FLAG   (C_FLAG)
#define IS_FLAG(x)   ((x > MAX_GP_REG) && (x < FIRST_VIRTUAL_REG))
#define LOOK_UP_FLAG_NAME(x)   (IS_FLAG(x)? Flag_Names[x-MAX_GP_REG-1] : "")
#define FIRST_VIRTUAL_REG   (I_FLAG+1)
#define ZERO_REG_NUMBER   ((arch == ALPHA)? 31 : 0)
#define MIN_FP_REG_NUMBER   ((arch == ALPHA)? (ZERO_REG_NUMBER+1) : -1)
#define MAX_REG_NUMBER   ((arch == ALPHA)? ZERO_REG_NUMBER : 31)
#define MIN_S_REG_NUMBER   ((arch == ALPHA)? 9 : -1)
#define MAX_S_REG_NUMBER   ((arch == ALPHA)? 15 : -1)
#define FP_REG_NUMBER   ((arch == ALPHA)? 15 : -1)
#define RA_REG_NUMBER   ((arch == ALPHA)? 26 : -1)
#define AT_REG_NUMBER   ((arch == ALPHA)? 28 : -1)
#define GP_REG_NUMBER   ((arch == ALPHA)? 29 : -1)
#define SPH_REG_NUMBER   ((arch == ALPHA)? 30 : 29)
#define SPL_REG_NUMBER   ((arch == ALPHA)? -1 : 28)
#define PAD_COUNTER_REGISTER   ((arch == ALPHA)? -1 : 16)
#define MULT_REG_LOW   ((arch == ALPHA)? -1 : 0)
#define MULT_REG_HIGH   ((arch == ALPHA)? -1 : 1)
#define PM_PTR_REG_LOW   ((arch == ALPHA)? -1 : 30)
#define PM_PTR_REG_HIGH   ((arch == ALPHA)? -1 : 31)
#define PM_DATA_REG   ((arch == ALPHA)? -1 : 0)
#define IND_BRNCH_PTR_REG_LOW   ((arch == ALPHA)? -1 : 30)
#define IND_BRNCH_PTR_REG_HIGH   ((arch == ALPHA)? -1 : 31)
#define SAT_MIN(a, b)   (((a != INVALID) && (b!=INVALID))? ((a < b)? a : b) : INVALID)
#define SAT_MAX(a, b)   (((a != INVALID) && (b!=INVALID))? ((a > b)? a : b) : INVALID)
#define IS_S_REG(a)   ((a >= MIN_S_REG_NUMBER) && (a <= MAX_S_REG_NUMBER))
#define IS_FP_REG(a)   ((arch == ALPHA) && (a >= MIN_FP_REG_NUMBER) && (a <= MAX_REG))
#define IS_SYS_REG(a)
#define ORIGINAL   0
#define VIRTUAL   1
#define FINAL   2
#define LATEST   3
#define OPER_DEF   0
#define OPER_USE0   1
#define OPER_USE1   2
#define HOST   0
#define GUEST   1
#define HOST_N_GUEST   2
#define DEFAULT_GUEST_TOLERANCE   3
#define LOOSE_DATA_FLOW_ANALYSIS
#define NEVER   0
#define SOMETIMES   1
#define ALWAYS   3
#define USE   1
#define DEF   2
#define ASM_FILE_SUFFIX   ".s"
#define FILE_DIR_PREFIX   ".file"
#define VCG_FILE_SUFFIX_AISEE   ".gdl"
#define VCG_FILE_SUFFIX_XVCG   ".vcg"
#define LOOP_SPLIT_BEGIN_SUFFIX   "_B"
#define LOOP_SPLIT_END_SUFFIX   "_E"
#define LOOP_PEEL_SUFFIX   "_Peel"
#define LOOP_PEEL_PAD_SUFFIX   "_PeelPad"
#define LOOP_HOST_GUARD_SUFFIX   "_HostGrd"
#define LOOP_GUEST_GUARD_SUFFIX   "_GstGrd"
#define LOOP_FUSE_HOST_TEST_SUFFIX   "_HostFuse"
#define LOOP_FUSE_GUEST_TEST_SUFFIX   "_GstFuse"
#define IO_PAD_SUFFIX   "_IOPad"
#define JUMP_NODE_SUFFIX   "_Jmp"
#define JUMP_NODE_SUFFIX_LEN   (strlen(JUMP_NODE_SUFFIX))
#define GUARD_SUFFIX   "_G"
#define JUMP_OVER_GUARDED_CODE_SUFFIX   "_JoGC"
#define POST_GUARDED_CODE_TARGET_SUFFIX   "_EoGC"
#define SEG_NUMBER_SUFFIX   "_Seg"
#define BBC_CTL_REG   (3)
#define BBC_CTL_BIT_GUEST_A_EN   (3)
#define BBC_CTL_BIT_GUEST_B_EN   (2)
#define BBC_CTL_BIT_COCALL_A_EN   (1)
#define BBC_CTL_BIT_COCALL_B_EN   (0)
#define PAD_LOOP_THRESHOLD   10
#define SKIP_PADDING_THRESHOLD   (3)
#define DEFAULT_UNKNOWN_ITERATIONS   10

Enumerations

enum  NODE_TYPE {
  UNINIT, CODE, LOOP, IRRLOOP,
  PRED, CALLL, PROC, MULTIPRED
}
enum  TRUTH_VALUE_TYPE { TV_A = 0, TV_T, TV_F, TV_ANY }
enum  PLOT_TYPE { SEGMENT, JITTER }
enum  REALLOC_TYPE { NONE, QND, CHAITIN }
enum  DATA_TYPE { INT_DATA, FLOAT_DATA }
enum  THREAD_TYPE { THREAD_UNKNOWN, THREAD_PRIMARY, THREAD_SECONDARY }
enum  PROC_TYPE { PROC_UNKNOWN, PROC_BIT_LEVEL, PROC_MSG_LEVEL }
enum  THRINT_CONFIG { STI_BASIC_C, STI_BBCP_C, STI_UNKNOWN_C }
enum  POS_TYPE {
  POS_UNINIT = 0, BEFORE, WITHIN, AFTER,
  AFTER_PADDING, AFTER_IN_GUARD, AS_LAST_CHILD
}
enum  INT_OVHD_TYPE {
  NOT_OVHD = 0, PADDING, GUARD, FUSION,
  DISCRETE_GUEST, COCALL
}
enum  LOOP_TX_TYPE {
  LTX_UNINIT = 0, LTX_SPLIT, LTX_SPLIT_AND_PEEL, LTX_GUARD_GUEST,
  LTX_PEEL, LTX_MAKE_GUARDED_CLEANUP
}
enum  GUEST_STATE_TYPE { PRECEDING_IMPLICIT, EXPLICIT, FOLLOWING_IMPLICIT }

Functions

CCDGNodeListParse_Asm (char *filename)
 Parses an AVR assembly file.

bool truncate_suffix (char *searchee, char *pattern)
bool TVs_Are_Complements (TRUTH_VALUE_TYPE t1, TRUTH_VALUE_TYPE t2)

Variables

bool trace_const
bool trace_parse
bool trace_parse_summary
bool trace_seg
bool trace_loops
bool dump_info
bool trace_labels
bool trace_traversal
bool trace_vars
bool trace_regreal
bool trace_pad
bool trace_ITA
bool trace_graph_output
bool trace_dump_cintegrationdata
bool trace_directives
bool create_graphs
bool create_small_graphs
bool trace_STA
bool use_alt_CDG_formation
bool create_reg_info_in_graphs
bool inc_instrs_in_graphs
bool inc_CSource_in_graphs
bool create_asm
bool create_var_files
bool inc_cycles_in_graphs
bool opt_graph_for_printing
bool split_vars
bool reallocate_regs
bool warn_user
bool debug_output
bool trace_int
bool do_int
bool animate_graphs
bool do_comm_protocols
bool inc_def_use_in_graphs
bool registers_virtualized
bool skip_ldgp
bool skip_file_dir
bool skip_DFA
bool resched_often
bool skip_loop_control_analysis
bool PC_mode
bool opt_speed
bool opt_memory
bool skip_directives
bool do_verify_timing
bool relax_timing
bool use_xvcg
bool web_output
bool est_memory_size
bool est_performance
bool redirect_OS_signals
bool make_movie
bool pad_w_loops
bool do_guest_timing_analysis
bool do_host_timing_analysis
bool parsing
bool external_SRAM
int arch
 Architecture. Valid options are AVR or ALPHA.

char tab_string [][20]
char filename [LONG_STR_SIZE]
char asm_filename [LONG_STR_SIZE]
char root_filename [LONG_STR_SIZE]
long max_req_jitter
int node_counter
unsigned int ext_mem_wait_states
char Access_Names [][2]
char PosType_Names [][16]
char IntOvhdType_Names [][32]
char LoopTxType_Names [][32]
char NodeType_Names [][10]
char TVType_Names [][16]
char Flag_Names [][2]
int padding_instructions_created
int instructions_created
int instructions_destroyed
bool use_new_idparser
pid_t foo_xvcg_pid
float cpu_clock_freq
CCDGNodeListprocs
CCDGNodeListnodes
ofstream int_log_stream
THRINT_CONFIG config
REALLOC_TYPE reg_reallocation_method


Define Documentation

#define _LAME_CC_
 

#define ALPHA   0
 

#define ALWAYS   3
 

#define ASM_FILE_SUFFIX   ".s"
 

#define AT_REG_NUMBER   ((arch == ALPHA)? 28 : -1)
 

#define AVR   1
 

#define BBC_CTL_BIT_COCALL_A_EN   (1)
 

#define BBC_CTL_BIT_COCALL_B_EN   (0)
 

#define BBC_CTL_BIT_GUEST_A_EN   (3)
 

#define BBC_CTL_BIT_GUEST_B_EN   (2)
 

#define BBC_CTL_REG   (3)
 

#define BC   0
 

#define C_FLAG   (MAX_GP_REG+1)
 

#define DEF   2
 

#define DEFAULT_GUEST_TOLERANCE   3
 

#define DEFAULT_UNKNOWN_ITERATIONS   10
 

#define FAIL msg   ) 
 

Value:

{ cout << msg << endl << "File: " << __FILE__ << "\tLine: " \
 << __LINE__ << "\tFunction: " << __FUNCTION__ << endl; exit(EXIT_FAILURE); }

#define FAIL_START   cout << "---------- START OF FAILURE REPORT DUMP ------------\n";
 

#define FALSE   (0)
 

#define FILE_DIR_PREFIX   ".file"
 

#define FINAL   2
 

#define FIRST_FLAG   (C_FLAG)
 

#define FIRST_VIRTUAL_REG   (I_FLAG+1)
 

#define FP_REG_NAME_PREFIX   ((arch == ALPHA)? "$f": "rf")
 

#define FP_REG_NUMBER   ((arch == ALPHA)? 15 : -1)
 

#define GP_REG_NUMBER   ((arch == ALPHA)? 29 : -1)
 

#define GUARD_SUFFIX   "_G"
 

#define GUEST   1
 

#define H_FLAG   (MAX_GP_REG+6)
 

#define HOST   0
 

#define HOST_N_GUEST   2
 

#define I_FLAG   (MAX_GP_REG+8)
 

#define IND_BRNCH_PTR_REG_HIGH   ((arch == ALPHA)? -1 : 31)
 

#define IND_BRNCH_PTR_REG_LOW   ((arch == ALPHA)? -1 : 30)
 

#define INVALID   (-1)
 

#define INVALID_UC   (255)
 

#define IO_PAD_SUFFIX   "_IOPad"
 

#define IS_FLAG  )     ((x > MAX_GP_REG) && (x < FIRST_VIRTUAL_REG))
 

#define IS_FP_REG  )     ((arch == ALPHA) && (a >= MIN_FP_REG_NUMBER) && (a <= MAX_REG))
 

#define IS_S_REG  )     ((a >= MIN_S_REG_NUMBER) && (a <= MAX_S_REG_NUMBER))
 

#define IS_SYS_REG  ) 
 

Value:

((a==FP_REG_NUMBER) || (a==AT_REG_NUMBER) || \
                       (a==GP_REG_NUMBER) || (a==SPH_REG_NUMBER) ||\
               (a==SPL_REG_NUMBER))

#define JUMP_NODE_SUFFIX   "_Jmp"
 

#define JUMP_NODE_SUFFIX_LEN   (strlen(JUMP_NODE_SUFFIX))
 

#define JUMP_OVER_GUARDED_CODE_SUFFIX   "_JoGC"
 

#define LATEST   3
 

#define LOOK_UP_FLAG_NAME  )     (IS_FLAG(x)? Flag_Names[x-MAX_GP_REG-1] : "")
 

#define LOOP_FUSE_GUEST_TEST_SUFFIX   "_GstFuse"
 

#define LOOP_FUSE_HOST_TEST_SUFFIX   "_HostFuse"
 

#define LOOP_GUEST_GUARD_SUFFIX   "_GstGrd"
 

#define LOOP_HOST_GUARD_SUFFIX   "_HostGrd"
 

#define LOOP_PEEL_PAD_SUFFIX   "_PeelPad"
 

#define LOOP_PEEL_SUFFIX   "_Peel"
 

#define LOOP_SPLIT_BEGIN_SUFFIX   "_B"
 

#define LOOP_SPLIT_END_SUFFIX   "_E"
 

#define LOOSE_DATA_FLOW_ANALYSIS
 

#define MAX a,
 )     ((a > b)? a : b)
 

#define MAX_GP_REG   (31)
 

#define MAX_NATIVE_DATA_VALUE   (1<<(8*NATIVE_DATA_SIZE - 1))
 

#define MAX_PREDECESSORS   (16)
 

#define MAX_REG   (MAX_GP_REG+8)
 

#define MAX_REG_NUMBER   ((arch == ALPHA)? ZERO_REG_NUMBER : 31)
 

#define MAX_S_REG_NUMBER   ((arch == ALPHA)? 15 : -1)
 

#define MAX_SUCCESSORS   (2)
 

#define MIN a,
 )     ((a < b)? a : b)
 

#define MIN_FP_REG_NUMBER   ((arch == ALPHA)? (ZERO_REG_NUMBER+1) : -1)
 

#define MIN_S_REG_NUMBER   ((arch == ALPHA)? 9 : -1)
 

#define MULT_REG_HIGH   ((arch == ALPHA)? -1 : 1)
 

#define MULT_REG_LOW   ((arch == ALPHA)? -1 : 0)
 

#define N_FLAG   (MAX_GP_REG+3)
 

#define NATIVE_DATA_SIZE   ((arch==ALPHA)? 8 : 1)
 

#define NEVER   0
 

#define NUM_AVR_FLAGS   (8)
 

#define OPER_DEF   0
 

#define OPER_USE0   1
 

#define OPER_USE1   2
 

#define ORIGINAL   0
 

#define PAD_COUNTER_REGISTER   ((arch == ALPHA)? -1 : 16)
 

#define PAD_LOOP_THRESHOLD   10
 

#define PC_SYMBOL   ((arch == ALPHA)? "_PC_" : "_PC_")
 

#define PLURAL  )     ((x>1)? "s":"")
 

#define PM_DATA_REG   ((arch == ALPHA)? -1 : 0)
 

#define PM_PTR_REG_HIGH   ((arch == ALPHA)? -1 : 31)
 

#define PM_PTR_REG_LOW   ((arch == ALPHA)? -1 : 30)
 

#define POST_GUARDED_CODE_TARGET_SUFFIX   "_EoGC"
 

#define PROG_HALT_STR   ((arch==ALPHA)? "unknown" : "__stop_progIi_")
 

#define RA_REG_NUMBER   ((arch == ALPHA)? 26 : -1)
 

#define REG_NAME_PREFIX   ((arch == ALPHA)? '$' : 'r')
 

#define S_FLAG   (MAX_GP_REG+5)
 

#define SAT_MAX a,
 )     (((a != INVALID) && (b!=INVALID))? ((a > b)? a : b) : INVALID)
 

#define SAT_MIN a,
 )     (((a != INVALID) && (b!=INVALID))? ((a < b)? a : b) : INVALID)
 

#define SEG_NUMBER_SUFFIX   "_Seg"
 

#define SKIP_PADDING_THRESHOLD   (3)
 

#define SOMETIMES   1
 

#define SPH_REG_NUMBER   ((arch == ALPHA)? 30 : 29)
 

#define SPL_REG_NUMBER   ((arch == ALPHA)? -1 : 28)
 

#define T_FLAG   (MAX_GP_REG+7)
 

#define TAB index   )     ( tab_string[index] )
 

#define TRUE   (1)
 

#define UNDERSCORE_REG_NAME_PREFIX   ((arch == ALPHA)? "_$" : "_r")
 

#define UNKNOWN   (-2)
 

#define USE   1
 

#define V_FLAG   (MAX_GP_REG+4)
 

#define VCG_FILE_SUFFIX_AISEE   ".gdl"
 

#define VCG_FILE_SUFFIX_XVCG   ".vcg"
 

#define VIRTUAL   1
 

#define WC   1
 

#define Z_FLAG   (MAX_GP_REG+2)
 

#define ZERO_REG_NUMBER   ((arch == ALPHA)? 31 : 0)
 


Enumeration Type Documentation

enum DATA_TYPE
 

Enumeration values:
INT_DATA 
FLOAT_DATA 

enum GUEST_STATE_TYPE
 

Enumeration values:
PRECEDING_IMPLICIT 
EXPLICIT 
FOLLOWING_IMPLICIT 

enum INT_OVHD_TYPE
 

Enumeration values:
NOT_OVHD 
PADDING 
GUARD 
FUSION 
DISCRETE_GUEST 
COCALL 

enum LOOP_TX_TYPE
 

Enumeration values:
LTX_UNINIT 
LTX_SPLIT 
LTX_SPLIT_AND_PEEL 
LTX_GUARD_GUEST 
LTX_PEEL 
LTX_MAKE_GUARDED_CLEANUP 

enum NODE_TYPE
 

Enumeration values:
UNINIT 
CODE 
LOOP 
IRRLOOP 
PRED 
CALLL 
PROC 
MULTIPRED 

enum PLOT_TYPE
 

Enumeration values:
SEGMENT 
JITTER 

enum POS_TYPE
 

Enumeration values:
POS_UNINIT 
BEFORE 
WITHIN 
AFTER 
AFTER_PADDING 
AFTER_IN_GUARD 
AS_LAST_CHILD 

enum PROC_TYPE
 

Enumeration values:
PROC_UNKNOWN 
PROC_BIT_LEVEL 
PROC_MSG_LEVEL 

enum REALLOC_TYPE
 

Enumeration values:
NONE 
QND 
CHAITIN 

enum THREAD_TYPE
 

Enumeration values:
THREAD_UNKNOWN 
THREAD_PRIMARY 
THREAD_SECONDARY 

enum THRINT_CONFIG
 

Enumeration values:
STI_BASIC_C 
STI_BBCP_C 
STI_UNKNOWN_C 

enum TRUTH_VALUE_TYPE
 

Enumeration values:
TV_A 
TV_T 
TV_F 
TV_ANY 


Function Documentation

CCDGNodeList* Parse_Asm char *  filename  ) 
 

Parses an AVR assembly file.

Parameters:
filename AVR assembly file to parse.
Returns:
A list of instructions read from specified file.

bool truncate_suffix char *  searchee,
char *  pattern
 

bool TVs_Are_Complements TRUTH_VALUE_TYPE  t1,
TRUTH_VALUE_TYPE  t2
 


Variable Documentation

char Access_Names[][2]
 

bool animate_graphs
 

int arch
 

Architecture. Valid options are AVR or ALPHA.

char asm_filename[LONG_STR_SIZE]
 

THRINT_CONFIG config
 

float cpu_clock_freq
 

bool create_asm
 

bool create_graphs
 

bool create_reg_info_in_graphs
 

bool create_small_graphs
 

bool create_var_files
 

bool debug_output
 

bool do_comm_protocols
 

bool do_guest_timing_analysis
 

bool do_host_timing_analysis
 

bool do_int
 

bool do_verify_timing
 

bool dump_info
 

bool est_memory_size
 

bool est_performance
 

unsigned int ext_mem_wait_states
 

bool external_SRAM
 

char filename[LONG_STR_SIZE]
 

char Flag_Names[][2]
 

pid_t foo_xvcg_pid
 

bool inc_CSource_in_graphs
 

bool inc_cycles_in_graphs
 

bool inc_def_use_in_graphs
 

bool inc_instrs_in_graphs
 

int instructions_created
 

int instructions_destroyed
 

ofstream int_log_stream
 

char IntOvhdType_Names[][32]
 

char LoopTxType_Names[][32]
 

bool make_movie
 

long max_req_jitter
 

int node_counter
 

CCDGNodeList * nodes
 

char NodeType_Names[][10]
 

bool opt_graph_for_printing
 

bool opt_memory
 

bool opt_speed
 

bool pad_w_loops
 

int padding_instructions_created
 

bool parsing
 

bool PC_mode
 

char PosType_Names[][16]
 

CCDGNodeList* procs
 

bool reallocate_regs
 

bool redirect_OS_signals
 

REALLOC_TYPE reg_reallocation_method
 

bool registers_virtualized
 

bool relax_timing
 

bool resched_often
 

char root_filename[LONG_STR_SIZE]
 

bool skip_DFA
 

bool skip_directives
 

bool skip_file_dir
 

bool skip_ldgp
 

bool skip_loop_control_analysis
 

bool split_vars
 

char tab_string[][20]
 

bool trace_const
 

bool trace_directives
 

bool trace_dump_cintegrationdata
 

bool trace_graph_output
 

bool trace_int
 

bool trace_ITA
 

bool trace_labels
 

bool trace_loops
 

bool trace_pad
 

bool trace_parse
 

bool trace_parse_summary
 

bool trace_regreal
 

bool trace_seg
 

bool trace_STA
 

bool trace_traversal
 

bool trace_vars
 

char TVType_Names[][16]
 

bool use_alt_CDG_formation
 

bool use_new_idparser
 

bool use_xvcg
 

bool warn_user
 

bool web_output
 


Generated on Sat May 8 14:08:48 2004 for Thrint by doxygen 1.3.6