/* EPC Imp to C Translation Release 4 Version Apr 95 */ #include "imptoc.h" /** sprvars3.inc */ /** 30-08-91 - New module for merge of M88110 FORTRAN changes with */ /** generic code generator. (rt) */ /** sprvars2.inc */ /** 13-06-91 - Merge of SPARC and M88K code generators. (rt) */ /***/ /** 19-11-90 - This module created from subset of definitions spregvars1.inc*/ /** in include file sparc13.3.3.inc. The */ /** intention of this module is to hold all */ /** architecture dependent definitions relating to */ /** integer and floating register variables. (rt) */ /***/ /***/ /******************************************************************************/ /** REGISTER VARIABLE DEFINITIONS **/ /******************************************************************************/ /***/ /*----------------------------------------------------------------------------*/ /* FOR USE BY FORTRAN REGISTER ALLOCATION */ /*----------------------------------------------------------------------------*/ #define Smallregset 9 #define Largeregset 16 /***/ #define smallfregset 10 #define smallfregpairset 9 #define largefregset 26 #define largefregpairset 25 /***/ #define Cfregsmaskconst (0x7FFF0) /*bit set if (register identify -32) is potentially*/ /* allocatable by the Optimiser for FregVars */ /***/ #define Cnumregsregs 1 /*the number of registers available to*/ /*the optimiser for its own allocation*/ static const unsigned char CregMap [31+1] = {0,1, 2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31 } /* Dummy for now*/; /***/ #define Cnumfregsregs 16 /*the maximum number of floating point */ /* registers which the optimiser may*/ /* allocate */ static const unsigned char CfregMap [31+1] = {32, 33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55, 56,57,58,59,60,61,62,63 } /* dummy for now*/; /**/ /**/ /**/ /*----------------------------------------------------------------------------*/ /* FOR USE BY C AND C++ REGISTER ALLOCATION */ /*----------------------------------------------------------------------------*/ /**/ #define CRetIntReg 2 /* $2 - The integer return register */ #define CRetFloatReg 36 /* $f0 - The float return register */ #define CQCResultReg 50 /* ?: expression result register */ #define NUMPARAMREGS 6 /* Number of parameters passed in registers */ #define CTotalRegVars 29 static const unsigned char CRegVarMap [63+1] = {0, 1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31, 32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55, 56,57,58,59,60,61,62,63 } /* dummy for now*/; /* The following is a properties array for each register which is available */ /* for optimiser allocation. The property byte associated with each register */ /* is a bit vector detailing the data types that the register may hold. If a */ /* register can hold a greater than 32 bit quantity then it is assummed */ /* that this requires grouping with adjacent registers in the array */ #define CRVP32BitInt (0x1) /* integer */ #define CRVP64BitInt (0x2) /* long integer - NOT IMPLEMENTED */ #define CRVP32BitFloat (0x4) /* float */ #define CRVP64BitFloat (0x8) /* double */ #define CRVP128BitFloat (0x10) /* long double - NOT IMPLEMENTED */ #define CRVPDescending (0x20) /* adjacent logical is predecessor */ #define CRVPWideReg (0x40) /* logical has wide property */ #define CRVPInteger (0x3) /* generic integer type */ #define CRVPFloat (0x1C) /* generic float type */ static const unsigned char CRegVarProp [CTotalRegVars+7] = {0x3 /*%l0*/, 0x1 /*%l1*/,0x3 /*%l2*/,0x1 /*%l3*/,0x3 /*%l4*/,0x1 /*%l5*/,0x1 /*%l6*/,0x21 /*%i5*/, 0x21 /*%i4*/,0x21 /*%i3*/,0x21 /*%i2*/,0x21 /*%i1*/,0x21 /*%i0*/,0x1C /*%f12*/,0x4 /*%f13*/,0xC /*%f14*/, 0x4 /*%f15*/,0x1C /*%f16*/,0x4 /*%f17*/,0xC /*%f18*/,0x4 /*%f19*/,0x1C /*%f20*/,0x4 /*%f21*/,0xC /*%f22*/, 0x4 /*%f23*/,0x1C /*%f24*/,0x4 /*%f25*/,0xC /*%f26*/,0x4 /*%f27*/,0x20 /*%o5*/,0x20 /*%o4*/,0x20 /*%o3*/, 0x20 /*%o2*/,0x20 /*%o1*/,0x20 /*%o0*/,0x0}; /*%f0*/ /* The logical numbers (in CRegVarMap) of incoming function parameters */ static const unsigned char CParRegMap [5+1] = {13, 12,11,10,9,8}; /* The logical numbers (in CRegVarMap) of outgoing function parameters */ static const unsigned char CParOutMap [5+1] = {35, 34,33,32,31,30}; /**/ /***/ /************************* end of sprvars.inc *****************************/ /***/ /* end of automatic translation */