OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [x86_64/] [abi/] [defines.h] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 691 jeremybenn
#ifndef DEFINED_DEFINES_H
2
#define DEFINED_DEFINES_H
3
 
4
/* Get __m64 and __m128. */
5
#include <xmmintrin.h>
6
 
7
typedef unsigned long ulong;
8
typedef long double ldouble;
9
 
10
/* These defines determines what part of the test should be run.  When
11
   GCC implements these parts, the defines should be uncommented to
12
   enable testing.  */
13
 
14
/* Scalar type __int128.  */
15
/* #define CHECK_INT128 */
16
 
17
/* Scalar type long double.  */
18
#define CHECK_LONG_DOUBLE
19
 
20
/* Scalar type __float128.  */
21
/* #define CHECK_FLOAT128 */
22
 
23
/* Scalar types __m64 and __m128.  */
24
#define CHECK_M64_M128
25
 
26
/* Returning of complex type.  */
27
#define CHECK_COMPLEX
28
 
29
/* Structs with size >= 16.  */
30
#define CHECK_LARGER_STRUCTS
31
 
32
/* Checks for passing floats and doubles.  */
33
#define CHECK_FLOAT_DOUBLE_PASSING
34
 
35
/* Union passing with not-extremely-simple unions.  */
36
#define CHECK_LARGER_UNION_PASSING
37
 
38
/* Variable args.  */
39
#define CHECK_VARARGS
40
 
41
/* Check argument passing and returning for scalar types with sizeof = 16.  */
42
/* TODO: Implement these tests. Don't activate them for now.  */
43
#define CHECK_LARGE_SCALAR_PASSING
44
 
45
/* Defines for sizing and alignment.  */
46
 
47
#define TYPE_SIZE_CHAR         1
48
#define TYPE_SIZE_SHORT        2
49
#define TYPE_SIZE_INT          4
50
#define TYPE_SIZE_LONG         8
51
#define TYPE_SIZE_LONG_LONG    8
52
#define TYPE_SIZE_INT128       16
53
#define TYPE_SIZE_FLOAT        4
54
#define TYPE_SIZE_DOUBLE       8
55
#define TYPE_SIZE_LONG_DOUBLE  16
56
#define TYPE_SIZE_FLOAT128     16
57
#define TYPE_SIZE_M64          8
58
#define TYPE_SIZE_M128         16
59
#define TYPE_SIZE_ENUM         4
60
#define TYPE_SIZE_POINTER      8
61
 
62
#define TYPE_ALIGN_CHAR        1
63
#define TYPE_ALIGN_SHORT       2
64
#define TYPE_ALIGN_INT         4
65
#define TYPE_ALIGN_LONG        8
66
#define TYPE_ALIGN_LONG_LONG   8
67
#define TYPE_ALIGN_INT128      16
68
#define TYPE_ALIGN_FLOAT       4
69
#define TYPE_ALIGN_DOUBLE      8
70
#define TYPE_ALIGN_LONG_DOUBLE 16
71
#define TYPE_ALIGN_FLOAT128    16
72
#define TYPE_ALIGN_M64         8
73
#define TYPE_ALIGN_M128        16
74
#define TYPE_ALIGN_ENUM        4
75
#define TYPE_ALIGN_POINTER     8
76
 
77
/* These defines control the building of the list of types to check. There
78
   is a string identifying the type (with a comma after), a size of the type
79
   (also with a comma and an integer for adding to the total amount of types)
80
   and an alignment of the type (which is currently not really needed since
81
   the abi specifies that alignof == sizeof for all scalar types).  */
82
#ifdef CHECK_INT128
83
#define CI128_STR "__int128",
84
#define CI128_SIZ TYPE_SIZE_INT128,
85
#define CI128_ALI TYPE_ALIGN_INT128,
86
#define CI128_RET "???",
87
#else
88
#define CI128_STR
89
#define CI128_SIZ
90
#define CI128_ALI
91
#define CI128_RET
92
#endif
93
#ifdef CHECK_LONG_DOUBLE
94
#define CLD_STR "long double",
95
#define CLD_SIZ TYPE_SIZE_LONG_DOUBLE,
96
#define CLD_ALI TYPE_ALIGN_LONG_DOUBLE,
97
#define CLD_RET "x87_regs[0]._ldouble",
98
#else
99
#define CLD_STR
100
#define CLD_SIZ
101
#define CLD_ALI
102
#define CLD_RET
103
#endif
104
#ifdef CHECK_FLOAT128
105
#define CF128_STR "__float128",
106
#define CF128_SIZ TYPE_SIZE_FLOAT128,
107
#define CF128_ALI TYPE_ALIGN_FLOAT128, 
108
#define CF128_RET "???",
109
#else
110
#define CF128_STR
111
#define CF128_SIZ
112
#define CF128_ALI
113
#define CF128_RET
114
#endif
115
#ifdef CHECK_M64_M128
116
#define CMM_STR "__m64", "__m128",
117
#define CMM_SIZ TYPE_SIZE_M64, TYPE_SIZE_M128,
118
#define CMM_ALI TYPE_ALIGN_M64, TYPE_ALIGN_M128,
119
#define CMM_RET "???", "???",
120
#else
121
#define CMM_STR
122
#define CMM_SIZ
123
#define CMM_ALI
124
#define CMM_RET
125
#endif
126
 
127
/* Used in size and alignment tests.  */
128
enum dummytype { enumtype };
129
 
130
extern void abort (void);
131
 
132
/* Assertion macro.  */
133
#define assert(test) if (!(test)) abort()
134
 
135
#ifdef __GNUC__
136
#define ATTRIBUTE_UNUSED __attribute__((__unused__))
137
#else
138
#define ATTRIBUTE_UNUSED
139
#endif
140
 
141
#ifdef __GNUC__
142
#define PACKED __attribute__((__packed__))
143
#else
144
#warning Some tests will fail due to missing __packed__ support
145
#define PACKED
146
#endif
147
 
148
#endif /* DEFINED_DEFINES_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.