72 lines
2.0 KiB
C
72 lines
2.0 KiB
C
#ifndef IMDI_ARCH_H
|
|
#define IMDI_ARCH_H
|
|
|
|
/* Integer Multi-Dimensional Interpolation */
|
|
|
|
/*
|
|
* Copyright 2000 - 2007 Graeme W. Gill
|
|
* All rights reserved.
|
|
*
|
|
* This material is licenced under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 :-
|
|
* see the License.txt file for licencing details.
|
|
*/
|
|
|
|
/*
|
|
* Contained here is any architecture/platform specific facilities,
|
|
* used by the runtime code, and used by the code generation code
|
|
* in generating the runtime code (used in the generation code itself
|
|
* only in discovering the architecture automatically),
|
|
* and the architecture table that describes the architecture to the
|
|
* code generation.
|
|
*
|
|
* The mach_arch structure is not used by the runtime, since it is implicit
|
|
* that the runtime is setup for the described architecture.
|
|
*
|
|
*/
|
|
|
|
#ifdef ALLOW64
|
|
|
|
#define STR_DEF(def) #def
|
|
|
|
/* Detect machine/compiler specifics here */
|
|
#if defined(NT)
|
|
#define longlong __int64
|
|
#else /* !NT, assume standard */
|
|
#define longlong long long
|
|
#endif /* !NT */
|
|
#define str_longlong STR_DEF(longlong)
|
|
|
|
#endif /* ALLOW64 */
|
|
|
|
/* Machine/Language architectural specifications */
|
|
typedef struct {
|
|
int bits; /* Bits in this data type */
|
|
char *name; /* Name used to specify this type */
|
|
int align; /* Non-zero if this type should be accessed aligned */
|
|
} dtypes;
|
|
|
|
#define MXDTYPES 6
|
|
|
|
typedef struct {
|
|
int bigend; /* Non-zero if this is a bigendian architecture */
|
|
int uwa; /* Use wide memory access */
|
|
|
|
int pbits; /* Number of bits in a pointer */
|
|
|
|
int nords; /* Number of ord types */
|
|
dtypes ords[MXDTYPES]; /* Ordinal types, in size order */
|
|
int natord; /* Index of natural machine ordinal */
|
|
|
|
int nints; /* Number of int types */
|
|
dtypes ints[MXDTYPES]; /* Integer types, in size order */
|
|
int natint; /* Index of natural machine integer */
|
|
|
|
/* Optimisation settings */
|
|
int shfm; /* Non-zero to use shifts for masking */
|
|
int oscale; /* Maximum power of 2 scaled indexing mode, 0 for none. */
|
|
int smmul; /* Has fast small multiply for index scaling */
|
|
|
|
} mach_arch;
|
|
|
|
#endif /* IMDI_ARCH_H */
|