00001 /* 00002 * Copyright (C) 2007 PathScale, LLC. All Rights Reserved. 00003 */ 00004 /* 00005 * Copyright 2003, 2004, 2005, 2006 PathScale, Inc. All Rights Reserved. 00006 */ 00007 00008 /* 00009 00010 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 00011 00012 This program is free software; you can redistribute it and/or modify it 00013 under the terms of version 2 of the GNU General Public License as 00014 published by the Free Software Foundation. 00015 00016 This program is distributed in the hope that it would be useful, but 00017 WITHOUT ANY WARRANTY; without even the implied warranty of 00018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00019 00020 Further, this software is distributed without any warranty that it is 00021 free of the rightful claim of any third person regarding infringement 00022 or the like. Any license provided herein, whether implied or 00023 otherwise, applies only to this software file. Patent licenses, if 00024 any, provided herein do not apply to combinations of this program with 00025 other software, or any other product whatsoever. 00026 00027 You should have received a copy of the GNU General Public License along 00028 with this program; if not, write the Free Software Foundation, Inc., 59 00029 Temple Place - Suite 330, Boston MA 02111-1307, USA. 00030 00031 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 00032 Mountain View, CA 94043, or: 00033 00034 http://www.sgi.com 00035 00036 For further information regarding this notice, see: 00037 00038 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00039 00040 */ 00041 00042 00043 /* See ti_si.h for detailed interface description. */ 00044 00045 #ifndef TI_SI_TYPES_H_INCLUDED 00046 #define TI_SI_TYPES_H_INCLUDED 00047 #ifdef __cplusplus 00048 extern "C" { 00049 #endif 00050 00051 typedef enum topcode TOPCODE; 00052 00053 #include <topcode.h> 00054 00055 /**************************************************************************** 00056 ****************************************************************************/ 00057 00058 typedef struct { 00059 mUINT64 dw[2]; 00060 } SI_BAD_II_SET; 00061 00062 enum { SI_BAD_II_SET_MAX=127 }; 00063 00064 /**************************************************************************** 00065 ****************************************************************************/ 00066 00067 typedef UINT SI_RESOURCE_ID; 00068 00069 typedef const struct { 00070 const char* name; 00071 SI_RESOURCE_ID id; 00072 mUINT8 avail_per_cycle; 00073 mUINT8 word_index; 00074 mUINT8 bit_index; 00075 } SI_RESOURCE; 00076 00077 /**************************************************************************** 00078 ****************************************************************************/ 00079 00080 typedef mUINT64 SI_RESOURCE_ID_SET; 00081 00082 00083 /**************************************************************************** 00084 ****************************************************************************/ 00085 00086 /* SI_RRW -- A resource reservation word */ 00087 typedef mUINT64 SI_RRW; 00088 00089 /**************************************************************************** 00090 ****************************************************************************/ 00091 00092 typedef const struct { 00093 const char* name; 00094 mINT32 skew; 00095 mINT32 avail_per_cycle; 00096 } SI_ISSUE_SLOT; 00097 00098 /**************************************************************************** 00099 ****************************************************************************/ 00100 00101 typedef const struct { 00102 SI_RESOURCE* resource; 00103 mINT32 total_used; 00104 } SI_RESOURCE_TOTAL; 00105 00106 /**************************************************************************** 00107 ****************************************************************************/ 00108 00109 typedef const SI_RRW* SI_RR; 00110 00111 /**************************************************************************** 00112 ****************************************************************************/ 00113 typedef UINT SI_ID; 00114 00115 typedef const struct { 00116 const char* name; 00117 SI_ID id; 00118 const mUINT8 *operand_access_times; 00119 const mUINT8 *result_available_times; 00120 mINT32 load_access_time; 00121 mINT32 last_issue_cycle; 00122 mINT32 store_available_time; 00123 SI_RR rr; 00124 #if defined(TARG_SL) 00125 SI_RR alter_rr; 00126 #endif 00127 const SI_RESOURCE_ID_SET *resources_used; 00128 mUINT32 ii_info_size; 00129 const SI_RR *ii_rr; 00130 const SI_RESOURCE_ID_SET * const *ii_resources_used; 00131 SI_BAD_II_SET bad_iis; 00132 mINT32 valid_issue_slot_count; 00133 SI_ISSUE_SLOT * const *valid_issue_slots; 00134 mINT32 resource_total_vector_size; 00135 SI_RESOURCE_TOTAL *resource_total_vector; 00136 mUINT8 write_write_interlock; 00137 } SI; 00138 00139 /**************************************************************************** 00140 ****************************************************************************/ 00141 00142 #ifdef __cplusplus 00143 } 00144 #endif 00145 #endif
1.5.6