Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/i386/i386-modes.def @ 56:3c8a44c06a95
Added tag gcc-4.4.5 for changeset 77e2b8dfacca
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:41:23 +0900 |
parents | 77e2b8dfacca |
children | 04ced10e8804 |
rev | line source |
---|---|
0 | 1 /* Definitions of target machine for GCC for IA-32. |
2 Copyright (C) 2002, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GCC. | |
5 | |
6 GCC is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 3, or (at your option) | |
9 any later version. | |
10 | |
11 GCC is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 /* The x86_64 ABI specifies both XF and TF modes. | |
21 XFmode is __float80 is IEEE extended; TFmode is __float128 | |
22 is IEEE quad. */ | |
23 | |
24 FRACTIONAL_FLOAT_MODE (XF, 80, 12, ieee_extended_intel_96_format); | |
25 FLOAT_MODE (TF, 16, ieee_quad_format); | |
26 | |
27 /* In ILP32 mode, XFmode has size 12 and alignment 4. | |
28 In LP64 mode, XFmode has size and alignment 16. */ | |
29 ADJUST_FLOAT_FORMAT (XF, (TARGET_128BIT_LONG_DOUBLE | |
30 ? &ieee_extended_intel_128_format | |
31 : TARGET_96_ROUND_53_LONG_DOUBLE | |
32 ? &ieee_extended_intel_96_round_53_format | |
33 : &ieee_extended_intel_96_format)); | |
34 ADJUST_BYTESIZE (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 12); | |
35 ADJUST_ALIGNMENT (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 4); | |
36 | |
37 /* Add any extra modes needed to represent the condition code. | |
38 | |
39 For the i386, we need separate modes when floating-point | |
40 equality comparisons are being done. | |
41 | |
42 Add CCNO to indicate comparisons against zero that requires | |
43 Overflow flag to be unset. Sign bit test is used instead and | |
44 thus can be used to form "a&b>0" type of tests. | |
45 | |
46 Add CCGC to indicate comparisons against zero that allows | |
47 unspecified garbage in the Carry flag. This mode is used | |
48 by inc/dec instructions. | |
49 | |
50 Add CCGOC to indicate comparisons against zero that allows | |
51 unspecified garbage in the Carry and Overflow flag. This | |
52 mode is used to simulate comparisons of (a-b) and (a+b) | |
53 against zero using sub/cmp/add operations. | |
54 | |
55 Add CCA to indicate that only the Above flag is valid. | |
56 Add CCC to indicate that only the Carry flag is valid. | |
57 Add CCO to indicate that only the Overflow flag is valid. | |
58 Add CCS to indicate that only the Sign flag is valid. | |
59 Add CCZ to indicate that only the Zero flag is valid. */ | |
60 | |
61 CC_MODE (CCGC); | |
62 CC_MODE (CCGOC); | |
63 CC_MODE (CCNO); | |
64 CC_MODE (CCA); | |
65 CC_MODE (CCC); | |
66 CC_MODE (CCO); | |
67 CC_MODE (CCS); | |
68 CC_MODE (CCZ); | |
69 CC_MODE (CCFP); | |
70 CC_MODE (CCFPU); | |
71 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
72 /* Vector modes. Note that VEC_CONCAT patterns require vector |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
73 sizes twice as big as implemented in hardware. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
74 VECTOR_MODES (INT, 4); /* V4QI V2HI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
75 VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
76 VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
77 VECTOR_MODES (INT, 32); /* V32QI V16HI V8SI V4DI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
78 VECTOR_MODES (INT, 64); /* V64QI V32HI V16SI V8DI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
79 VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
80 VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
81 VECTOR_MODES (FLOAT, 32); /* V16HF V8SF V4DF */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
82 VECTOR_MODES (FLOAT, 64); /* V32HF V16SF V8DF */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
83 VECTOR_MODE (INT, TI, 1); /* V1TI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
84 VECTOR_MODE (INT, DI, 1); /* V1DI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
85 VECTOR_MODE (INT, SI, 1); /* V1SI */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
86 VECTOR_MODE (INT, QI, 2); /* V2QI */ |
0 | 87 |
88 INT_MODE (OI, 32); | |
89 | |
90 /* The symbol Pmode stands for one of the above machine modes (usually SImode). | |
91 The tm.h file specifies which one. It is not a distinct mode. */ |