|
|
1.1 root 1: /* This file contains the definitions and documentation for the
2: machine modes used in the the GNU compiler.
3: Copyright (C) 1987 Free Software Foundation, Inc.
4:
5: This file is part of GNU CC.
6:
7: GNU CC is distributed in the hope that it will be useful,
8: but WITHOUT ANY WARRANTY. No author or distributor
9: accepts responsibility to anyone for the consequences of using it
10: or for whether it serves any particular purpose or works at all,
11: unless he says so in writing. Refer to the GNU CC General Public
12: License for full details.
13:
14: Everyone is granted permission to copy, modify and redistribute
15: GNU CC, but only under the conditions described in the
16: GNU CC General Public License. A copy of this license is
17: supposed to have been given to you along with GNU CC so you
18: can know your rights and responsibilities. It should be in a
19: file named COPYING. Among other things, the copyright notice
20: and this notice must be preserved on all copies. */
21:
22:
23: /* This file defines all the MACHINE MODES used by GNU CC.
24:
25: A machine mode specifies a size and format of data
26: at the machine level.
27:
28: Each RTL expression has a machine mode.
29:
30: At the syntax tree level, each ..._TYPE and each ..._DECL node
31: has a machine mode which describes data of that type or the
32: data of the variable declared. */
33:
34: /* The first argument is the internal name of the machine mode
35: used in the C source.
36: By convention these are in UPPER_CASE, except for the word "mode".
37:
38: The second argument is the name of the machine mode in the
39: external ASCII format read by for both the rtl and tree.
40: By convention these names in UPPER_CASE.
41:
42: Third argument states the kind of representation:
43: MODE_INT - integer
44: MODE_FLOAT - floating
45: MODE_COMPLEX_INT - pair of integers
46: MODE_COMPLEX_FLOAT - pair of floats
47: MODE_FUNCTION - Algol or Pascal function-variable incl. static chain
48: MODE_RANDOM - anything else
49:
50: Fourth argument is the size of the object, in bytes.
51: It is zero when the size is meaningless or not determined.
52:
53: Fifth arg is size of subunits of the object, in bytes.
54: It is same as the fourth argument except for complexes and EPmode,
55: since they are really made of two equal size subunits. */
56:
57: /* VOIDmode is used when no mode needs to be specified,
58: as for example on CONST_INT RTL expressions. */
59: DEF_MACHMODE (VOIDmode, "VOID", MODE_RANDOM, 0, 0)
60:
61: DEF_MACHMODE (QImode, "QI", MODE_INT, 1, 1) /* signed types */
62: DEF_MACHMODE (HImode, "HI", MODE_INT, 2, 2)
63: DEF_MACHMODE (SImode, "SI", MODE_INT, 4, 4)
64: DEF_MACHMODE (DImode, "DI", MODE_INT, 8, 8)
65: DEF_MACHMODE (TImode, "TI", MODE_INT, 16, 16)
66: DEF_MACHMODE (QFmode, "QF", MODE_FLOAT, 1, 1)
67: DEF_MACHMODE (HFmode, "HF", MODE_FLOAT, 2, 2) /* floating types */
68: DEF_MACHMODE (SFmode, "SF", MODE_FLOAT, 4, 4)
69: DEF_MACHMODE (DFmode, "DF", MODE_FLOAT, 8, 8)
70: DEF_MACHMODE (TFmode, "TF", MODE_FLOAT, 16, 16)
71: DEF_MACHMODE (CQImode, "CQI", MODE_COMPLEX_INT, 2, 1)
72: DEF_MACHMODE (CHImode, "CHI", MODE_COMPLEX_INT, 4, 2) /* complex ints */
73: DEF_MACHMODE (CSImode, "CSI", MODE_COMPLEX_INT, 8, 4)
74: DEF_MACHMODE (CDImode, "CDI", MODE_COMPLEX_INT, 16, 8)
75: DEF_MACHMODE (CTImode, "CTI", MODE_COMPLEX_INT, 32, 16)
76: DEF_MACHMODE (CQFmode, "CQF", MODE_COMPLEX_FLOAT, 2, 1)
77: DEF_MACHMODE (CHFmode, "CHF", MODE_COMPLEX_FLOAT, 4, 2) /* complex floats */
78: DEF_MACHMODE (CSFmode, "CSF", MODE_COMPLEX_FLOAT, 8, 4)
79: DEF_MACHMODE (CDFmode, "CDF", MODE_COMPLEX_FLOAT, 16, 8)
80: DEF_MACHMODE (CTFmode, "CTF", MODE_COMPLEX_FLOAT, 32, 16)
81:
82: /* BImode is used only in FIELD_DECL nodes for bit fields
83: whose size and alignment are not such as to fit any other mode. */
84: DEF_MACHMODE (BImode, "BI", MODE_INT, 0, 0) /* signed bit field */
85:
86: /* BLKmode is used for structures, arrays, etc.
87: that fit no more specific mode. */
88: DEF_MACHMODE (BLKmode, "BLK", MODE_RANDOM, 0, 0)
89:
90: /* Function-variable that includes a static chain. */
91: DEF_MACHMODE (EPmode, "EP", MODE_RANDOM, 8, 4)
92:
93: /* The symbol Pmode stands for one of the above machine modes (usually SImode).
94: The tm file specifies which one. It is not a distinct mode. */
95:
96: /*
97: Local variables:
98: mode:c
99: version-control: t
100: End:
101: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.