00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068 #ifndef EKAPI_IA64_INCLUDED
00069 #define EKAPI_IA64_INCLUDED
00070
00071 #ifdef __cplusplus
00072 extern "C" {
00073 #endif
00074
00075 #include <stdio.h>
00076 #include <string.h>
00077 #include <assert.h>
00078 #include <stdlib.h>
00079
00080 #include "kapi.h"
00081 #include "kapi_ia64.h"
00082
00083 typedef signed long long INT64;
00084 typedef unsigned long long UINT64;
00085 typedef int BOOL;
00086 typedef unsigned char mUINT8;
00087
00088
00089
00090 typedef struct{
00091
00092 int isa_mask;
00093 int min_regnum;
00094 int max_regnum;
00095 int bit_size;
00096 int can_store;
00097 int multiple_save;
00098 char *name;
00099 char *naming_rule;
00100 char *special_array;
00101
00102 } EKAPI_REGISTER_CLASS_INFO;
00103
00104 typedef struct{
00105 INT64 min;
00106 INT64 max;
00107 }EKAPI_RANGE;
00108
00109 typedef struct {
00110 int *source;
00111 int *opnduse;
00112 int *result;
00113 int num_source;
00114 int num_result;
00115 }EKAPI_OPNDGRP_INFO;
00116
00117 typedef struct {
00118 char *opndname;
00119 int oddlatency;
00120 }ODD_LATENCY;
00121
00122 #define Is_True_On 1
00123
00124
00125 #define FmtAssert(Cond, ParmList ) \
00126 ( Cond ? (void) 1 \
00127 : ( printf ParmList, \
00128 exit(0) ) )
00129
00130 #ifdef Is_True_On
00131 #define Is_True FmtAssert
00132 #else
00133 #define Is_True(a, b) ((void) 1)
00134 #endif
00135
00136
00137
00138
00139 extern int EKAPI_OpCount(void *pknobs);
00140
00141
00142 extern char * EKAPI_OpName4id(void *pknobs, int index);
00143
00144
00145 extern char *EKAPI_Op2Fu( void *pknobs, int index);
00146
00147
00148 extern int EKAPI_Op2FuIndex(void *pknobs, int index);
00149
00150
00151
00152
00153 extern char *EKAPI_Op2SubSet( void *pknobs, int index);
00154
00155
00156 extern int EKAPI_SubsetCount(void *pknobs);
00157
00158
00159 extern char *EKAPI_SubsetName4id(void *pknobs, int index);
00160
00161
00162
00163
00164
00165 extern int EKAPI_RegClassCount(void *pknobs);
00166
00167
00168 extern int EKAPI_RegClassid4name(void *pknobs, char *name);
00169
00170
00171 extern void EKAPI_RegStruct4id(void *pknobs, EKAPI_REGISTER_CLASS_INFO *reginfo, int rcid);
00172
00173
00174 extern int EKAPI_GetRegNum(EKAPI_REGISTER_CLASS_INFO *reginfo);
00175
00176
00177 extern int EKAPI_GetRegIsaMask(EKAPI_REGISTER_CLASS_INFO *reginfo);
00178
00179
00180 extern char *EKAPI_GetRegClassName(EKAPI_REGISTER_CLASS_INFO *reginfo);
00181
00182
00183 extern int EKAPI_GetRegMinNum(EKAPI_REGISTER_CLASS_INFO *reginfo);
00184
00185
00186 extern int EKAPI_GetRegMaxNum(EKAPI_REGISTER_CLASS_INFO *reginfo);
00187
00188
00189 extern int EKAPI_GetRegBitSize(EKAPI_REGISTER_CLASS_INFO *reginfo);
00190
00191
00192 extern int EKAPI_GetRegCanStore(EKAPI_REGISTER_CLASS_INFO *reginfo);
00193
00194
00195 extern int EKAPI_GetRegMultiSave(EKAPI_REGISTER_CLASS_INFO *reginfo);
00196
00197
00198 extern char *EKAPI_GetRegName(void *pknobs, EKAPI_REGISTER_CLASS_INFO *reginfo, int rid);
00199
00200
00201 extern int EKAPI_RegSubclassCount(void *pknobs);
00202
00203
00204 extern char *EKAPI_RegSubclassName(void *pknobs, int rsubid);
00205
00206
00207 extern int EKAPI_RegSubclassid4name(void *pknobs, char *name);
00208
00209
00210
00211 extern int EKAPI_RegSubclassMember(void *pknobs, int regsubclass,
00212 int *regclass, int member[]);
00213
00214
00215 int EKAPI_ABICount(void *pknobs);
00216
00217
00218 char *EKAPI_ABIName(void *pknobs, int id);
00219
00220
00221 int EKAPI_ABIPropCount(void *pknobs);
00222
00223
00224 char *EKAPI_ABIPropName(void *pknobs, int id);
00225
00226
00227 extern int EKAPI_RegPropMask(void *pknobs, int regclass, bv32_t flags[]);
00228
00229
00230
00231
00232 extern int EKAPI_GetMaxSlot(void *pknobs);
00233
00234
00235 extern int EKAPI_GetBundleWidth(void *pknobs);
00236
00237
00238 extern int EKAPI_ExecUnitCount(void *pknobs);
00239
00240
00241 extern int EKAPI_TemplateCount(void *pknobs);
00242
00243
00244 extern char *EKAPI_TemplateName(void *pknobs, int index);
00245
00246
00247 extern char *EKAPI_TemplateAsmName(void *pknobs, int index);
00248
00249
00250 extern char *EKAPI_ExecUnitName(void *pknobs, int index);
00251
00252
00253 extern int EKAPI_EunName2id(void *pknobs, char *name);
00254
00255
00256 extern bv32_t EKAPI_EunMask4op(void *pknbs, int opid);
00257
00258
00259 extern void EKAPI_BundleType4bid(void *pknobs, kapi_bid_t bid, int *slt);
00260
00261
00262 int Syl2Eun(void *pknobs, int sylid);
00263
00264
00265 extern int EKAPI_BundleCompCount(void *pknobs);
00266
00267
00268 extern char *EKAPI_BundleCompName(void *pknobs, int index);
00269
00270
00271 extern int EKAPI_BundleCompWidth(void *pknobs, int index);
00272
00273
00274 extern BOOL EKAPI_Split_Before_Bundle(void *pknobs, int index);
00275
00276
00277 extern BOOL EKAPI_Split_After_Bundle(void *pknobs, int index);
00278
00279
00280
00281
00282
00283 extern int EKAPI_EnumClassCount(void *pknob);
00284
00285
00286 extern char *EKAPI_EnumClassName(void *pknobs, int index);
00287
00288
00289 int EKAPI_EnumClassid4name(void *pknobs, char *name);
00290
00291
00292 extern int EKAPI_EvClassCount(void *pknob);
00293
00294
00295 extern char *EKAPI_EvClassName(void *pknobs, int index);
00296
00297
00298 char *EKAPI_EvClassAsmName(void *pknobs, int index);
00299
00300
00301 extern int EKAPI_EvClassValue(void *pknobs, int index);
00302
00303
00304 extern int EKAPI_EcFirstValue(void *pknob, int ecid);
00305
00306
00307 extern int EKAPI_EcLastValue(void *pknobs, int ecid);
00308
00309
00310
00311
00312 extern int EKAPI_LitClassCount(void *pknobs);
00313
00314
00315 extern char *EKAPI_LitClassName(void *pknobs, int lcid);
00316
00317
00318 extern int EKAPI_LitClassid4name(void *pknobs, char *name);
00319
00320
00321 extern BOOL EKAPI_LitIsSigned(void *pknobs, int lcid);
00322
00323
00324
00325 extern int EKAPI_GetLcRange(void *pknobs, int lcid, EKAPI_RANGE ranges[]);
00326
00327
00328
00329
00330
00331 extern int EKAPI_Op2Opndsgrp(void *pknobs, int index);
00332
00333
00334 extern int EKAPI_OpndGrpCount(void *pknobs);
00335
00336
00337
00338 extern void EKAPI_GetOperandInfo4Grp(void *pknobs, int grpindex,EKAPI_OPNDGRP_INFO *info);
00339
00340
00341 extern int EKAPI_GetSrcOpndsMax(void *pknobs);
00342
00343
00344 extern int EKAPI_GetDestOpndsMax(void *pknobs);
00345
00346
00347 extern int *EKAPI_Src4Opndgrp(EKAPI_OPNDGRP_INFO info);
00348
00349
00350 extern int EKAPI_SrcOpndCount(EKAPI_OPNDGRP_INFO info );
00351
00352
00353 extern int EKAPI_ResultOpndCount(EKAPI_OPNDGRP_INFO info );
00354
00355
00356 extern int *EKAPI_Result4Opndgrp(EKAPI_OPNDGRP_INFO info );
00357
00358
00359 extern int *EKAPI_Use4Opndgrp(EKAPI_OPNDGRP_INFO info);
00360
00361
00362 extern int EKAPI_OpndTypeCount(void *pknobs);
00363
00364
00365 extern char *EKAPI_OpndTypeName(void *pknobs, int index);
00366
00367
00368 extern int EKAPI_OpndUseCount(void *pknobs);
00369
00370
00371 extern char *EKAPI_OpndUseName(void *pknobs, int index);
00372
00373
00374 extern int EKAPI_RegClass4otid(void *pknobs, int otid);
00375
00376
00377 extern int EKAPI_RegSubclass4otid(void *pknobs, int otid);
00378
00379
00380 extern int EKAPI_LitClass4otid(void *pknobs, int otid);
00381
00382
00383 extern int EKAPI_EnumClass4otid(void *pknobs, int otid);
00384
00385
00386 extern int EKAPI_Size4otid(void *pknobs, int otid);
00387
00388
00389 extern int EKAPI_Flag4otid(void *pknobs, int otid);
00390
00391
00392 extern int EKAPI_GetRelocatableOpnd(void *pknobs, int opid);
00393
00394
00395
00396 BOOL EKAPI_RegInfo4Name(void *pknobs, char *regname, int *regclassid, int *regid);
00397
00398
00399
00400
00401 extern int EKAPI_OppCount(void *pknobs);
00402
00403
00404 extern int EKAPI_FalseOppCount(void *pknobs);
00405
00406
00407 extern char *EKAPI_Oppid2Name(void *pknobs, int index);
00408
00409
00410 extern char *EKAPI_FalseOppid2Name(void *pknobs, int index);
00411
00412
00413 extern UINT64 EKAPI_OppMask4op(void *pknobs, int opid);
00414
00415
00416
00417
00418 inline char *EKAPI_ProcessName(void *pknobs)
00419 {
00420 return KAPI_GetStringVariable(pknobs, "processor_name", -1);
00421 }
00422
00423
00424
00425 extern void EKAPI_MapResource(void *pknobs, char *name, kapi_cluster_t cluster, ...);
00426
00427
00428
00429 extern void EKAPI_CreatResource(char *name, int count, int is_issue = 0);
00430
00431 extern void EKAPI_ClearResource(void);
00432
00433
00434
00435
00436 extern ODD_LATENCY *EKAPI_OddLatencyList(void *pknobs, kapi_fu_t fuid, int *listnum);
00437
00438
00439
00440 extern int EKAPI_CacheNameCount(void *pknobs);
00441
00442 extern char *EKAPI_CacheName(void *pknobs, int index);
00443
00444 #ifdef __cplusplus
00445 }
00446 #endif
00447 #endif