MDS.xcc

Benoit Dupont de Dinechin (Benoit.Dupont-de-Dinechin@st.com).

Copyright 2002 - 2007 STMicroelectronics. Copyright 1995 - 1998 Commissariat a l'Energie Atomique.

This program is free software; you can redistribute it and/or modify it under the terms of either (at your option): the GNU General Public License (GPL) version 2; the GNU Lesser General Public License (LGPL) version 2.1; any later version of these licences as published by the Free Software Foundation.

Platform— Enumeration.
typedef uint8_t Platform;
extern const int Platform__COUNT;
#define Platform__UNDEF 0
Resource— Enumeration.
typedef uint8_t Resource;
extern const int Resource__COUNT;
#define Resource__FIXME 8
#define Resource__UNDEF 0
#define Resource__ISSUE 1
Processor— Enumeration.
typedef uint8_t Processor;
extern const int Processor__COUNT;
#define Processor__UNDEF 0
#define Processor__DEFAULT 1
Encoding— Enumeration.
typedef uint8_t Encoding;
extern const int Encoding__COUNT;
#define Encoding__UNDEF 0
#ifdef MDS_FAMILY_arm
#define Encoding_SIZE_MAX 4     //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define Encoding_SIZE_MAX 8     //FIXME!
#endif//MDS_FAMILY_st200
NativeType— Enumeration.
typedef uint8_t NativeType;
extern const int NativeType__COUNT;
#define NativeType__UNDEF 0
StorageCell— Enumeration.
typedef uint8_t StorageCell;
extern const int StorageCell__COUNT;
extern const int StorageCell__Volatile;
extern const int StorageCell__Control;
extern const int StorageCell__Memory;
#define StorageCell__UNDEF 0
#ifdef MDS_FAMILY_arm
#define RegisterStorageCells_COUNT_MAX 32       //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define RegisterStorageCells_COUNT_MAX 2        //FIXME!
#endif//MDS_FAMILY_st200
Register— Enumeration.
typedef uint8_t Register;
extern const int Register__COUNT;
#define Register__FIXME 128
#define Register__UNDEF 0
#define Register__Volatile (Register__COUNT + 0)
#define Register__Control (Register__COUNT + 1)
#define Register__Memory (Register__COUNT + 2)
#define Register__XCOUNT (Register__COUNT + 3)
#ifdef MDS_FAMILY_arm
#define RegisterSet_WORDTYPE uint32_t   //FIXME!
#define RegisterList_COUNT_MAX 74
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define RegisterSet_WORDTYPE uint32_t   //FIXME!
#define RegisterList_COUNT_MAX 104      //FIXME!
#endif//MDS_FAMILY_st200
#define RegisterSet_WORDTYPE uint32_t   //FIXME!
#define RegisterSet_WORDCOUNT (RegisterSet_MAJOR(104) + 1)      //FIXME!
#define RegisterSet_WORDBITS (sizeof(RegisterSet_WORDTYPE)*8)   //FIXME!
#define RegisterSet_MAJOR(member) ((Register)(member)/(RegisterSet_WORDBITS))   //FIXME!
#define RegisterSet_MINOR(member) ((Register)(member)&(RegisterSet_WORDBITS - 1))   //FIXME!
typedef RegisterSet_WORDTYPE RegisterSetWord;
RegFile— Enumeration.
typedef uint8_t RegFile;
extern const int RegFile__COUNT;
#define RegFile__FIXME 8
#define RegFile__UNDEF 0
RegClass— Enumeration.
typedef uint8_t RegClass;
extern const int RegClass__COUNT;
#define RegClass__UNDEF 0
RegMask— Enumeration.
typedef uint8_t RegMask;
extern const int RegMask__COUNT;
#define RegMask__UNDEF 0
Modifier— Enumeration.
typedef uint8_t Modifier;
extern const int Modifier__COUNT;
#define Modifier__UNDEF 0
ModifierMember— Enumeration.
typedef uint8_t ModifierMember;
extern const int ModifierMember__COUNT;
#define ModifierMember__UNDEF 0
Relocation— Enumeration.
typedef uint8_t Relocation;
extern const int Relocation__COUNT;
#define Relocation__UNDEF 0
Immediate— Enumeration.
typedef uint8_t Immediate;
extern const int Immediate__COUNT;
#define Immediate__UNDEF 0
#ifdef MDS_FAMILY_arm
#define ImmediateRelocations_COUNT_MAX 1        //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define ImmediateRelocations_COUNT_MAX 4        //FIXME!
#endif//MDS_FAMILY_st200
Operand— Enumeration.
typedef uint8_t Operand;
extern const int Operand__COUNT;
#define Operand__UNDEF 0
#ifdef MDS_FAMILY_arm
#define Operands_COUNT_MAX 7    //FIXME!
#define Operands_IMMEDIATE_COUNT_MAX 2  //FIXME!
#define Operands_REGMASK_COUNT_MAX 1    //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define Operands_COUNT_MAX 5    //FIXME!
#define Operands_IMMEDIATE_COUNT_MAX 1  //FIXME!
#define Operands_REGMASK_COUNT_MAX 0    //FIXME!
#endif//MDS_FAMILY_st200
Operands— Enumeration.
typedef uint8_t Operands;
extern const int Operands__COUNT;
#define Operands__UNDEF 0
Format— Enumeration.
typedef uint8_t Format;
extern const int Format__COUNT;
#define Format__UNDEF 0
Syntax— Enumeration.
typedef uint8_t Syntax;
extern const int Syntax__COUNT;
#define Syntax__UNDEF 0
Instance— Enumeration.
typedef uint16_t Instance;
extern const int Instance__COUNT;
#define Instance__UNDEF 0
Operator— Enumeration.
typedef uint16_t Operator;
extern const int Operator__COUNT;
#define Operator__UNDEF 0       //FIXME!
#define Operator_ENTRY 1        //FIXME!
#define Operator_LABEL 2        //FIXME!
#define Operator_FALL 3 //FIXME!
#define Operator_LOOP 4 //FIXME!
#define Operator_GOTO 5 //FIXME!
#define Operator_GOTRUE 6       //FIXME!
#define Operator_GOFALSE 7      //FIXME!
#define Operator_JUMP 8 //FIXME!
#define Operator_CALL 9 //FIXME!
#define Operator_LINK 10        //FIXME!
#define Operator_RETURN 11      //FIXME!
#define Operator_PHI 12 //FIXME!
#define Operator_PSI 13 //FIXME!
#define Operator_SIGMA 14       //FIXME!
#define Operator_KILL 15        //FIXME!
#define Operator_PCOPY 16       //FIXME!
#define Operator_ECOPY 17       //FIXME!
#define Operator_LCOPY 18       //FIXME!
#define Operator_COPY 19        //FIXME!
#define Operator_SKIP 20        //FIXME!
#define Operator_LNOT 21        //FIXME!
#define Operator_BNOT 22        //FIXME!
#define Operator_NEG  23        //FIXME!
#define Operator_ADD 24 //FIXME!
#define Operator_SUB 25 //FIXME!
#define Operator_MUL 26 //FIXME!
#define Operator_DIV 27 //FIXME!
#define Operator_REM 28 //FIXME!
#define Operator_SHL 29 //FIXME!
#define Operator_ASHR 30        //FIXME!
#define Operator_LSHR 31        //FIXME!
#define Operator_LAND 32        //FIXME!
#define Operator_LIOR 33        //FIXME!
#define Operator_LXOR 34        //FIXME!
#define Operator_BAND 35        //FIXME!
#define Operator_BIOR 36        //FIXME!
#define Operator_BXOR 37        //FIXME!
#define Operator_MIN 38 //FIXME!
#define Operator_MAX 39 //FIXME!
#define Operator_SELECT 40      //FIXME!
#define Operator_APPLY 41       //FIXME!
#ifdef MDS_FAMILY_arm
#define OperatorParameterArray_COUNT_MAX 11     //FIXME!
#define OperatorParameter_CONFLICTS_COUNT_MAX 4 //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define OperatorParameterArray_COUNT_MAX 5      //FIXME!
#define OperatorParameter_CONFLICTS_COUNT_MAX 0 //FIXME!
#endif//MDS_FAMILY_st200
Bundling— Enumeration.
typedef uint8_t Bundling;
extern const int Bundling__COUNT;
#define Bundling__UNDEF 0
#define Bundling__BIAS  1
Template— Enumeration.
typedef uint16_t Template;
extern const int Template__COUNT;
#define Template__UNDEF 0
Bundle— Enumeration.
typedef uint16_t Bundle;
extern const int Bundle__COUNT;
#define Bundle__UNDEF 0
#ifdef MDS_FAMILY_arm
#define Bundle_ISSUE_MAX 0      //FIXME!
#define BundleMatch_COUNT_MAX 0 //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define Bundle_ISSUE_MAX 4      //FIXME!
#define BundleMatch_COUNT_MAX 4 //FIXME!
#endif//MDS_FAMILY_st200
Reservation— Enumeration.
typedef uint8_t Reservation;
extern const int Reservation__COUNT;
#define Reservation__FIXME 32
#define Reservation__UNDEF 0
#ifdef MDS_FAMILY_arm
#define Reservation_COLUMNS_COUNT_MAX 6 //FIXME!
#endif//MDS_FAMILY_arm
#ifdef MDS_FAMILY_st200
#define Reservation_COLUMNS_COUNT_MAX 1 //FIXME!
#endif//MDS_FAMILY_st200
Scheduling— Enumeration.
typedef uint8_t Scheduling;
extern const int Scheduling__COUNT;
#define Scheduling__UNDEF 0
Convention— Enumeration.
typedef uint8_t Convention;
extern const int Convention__COUNT;
#define Convention__UNDEF 0
#define Convention__DEFAULT 1
MDS_TRACE— File handle used to trace the MDS.
extern FILE *MDS_TRACE;
#ifdef ECL_NTRACE
#define MDS_TRACE NULL
#endif//ECL_NTRACE

Variables used to control MDS in non-release mode.

extern int FORCE_MAXISSUE;
extern int FORCE_MINTAKEN;
MDS_INIT— MDS init function.
void
MDS_INIT(void);
MDS_FINI— MDS fini function.
void
MDS_FINI(void);