Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/i386/i386-modes.def @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
rev | line source |
---|---|
0 | 1 /* Definitions of target machine for GCC for IA-32. |
131 | 2 Copyright (C) 2002-2018 Free Software Foundation, Inc. |
0 | 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 | |
111 | 42 Add CCNO to indicate comparisons against zero that require |
0 | 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 | |
111 | 46 Add CCGC to indicate comparisons against zero that allow |
0 | 47 unspecified garbage in the Carry flag. This mode is used |
48 by inc/dec instructions. | |
49 | |
111 | 50 Add CCGOC to indicate comparisons against zero that allow |
0 | 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 | |
111 | 55 Add CCGZ to indicate comparisons that allow unspecified garbage |
56 in the Zero flag. This mode is used in double-word comparisons. | |
57 | |
0 | 58 Add CCA to indicate that only the Above flag is valid. |
59 Add CCC to indicate that only the Carry flag is valid. | |
60 Add CCO to indicate that only the Overflow flag is valid. | |
111 | 61 Add CCP to indicate that only the Parity flag is valid. |
0 | 62 Add CCS to indicate that only the Sign flag is valid. |
63 Add CCZ to indicate that only the Zero flag is valid. */ | |
64 | |
65 CC_MODE (CCGC); | |
66 CC_MODE (CCGOC); | |
67 CC_MODE (CCNO); | |
111 | 68 CC_MODE (CCGZ); |
0 | 69 CC_MODE (CCA); |
70 CC_MODE (CCC); | |
71 CC_MODE (CCO); | |
111 | 72 CC_MODE (CCP); |
0 | 73 CC_MODE (CCS); |
74 CC_MODE (CCZ); | |
131 | 75 |
0 | 76 CC_MODE (CCFP); |
77 | |
55
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. 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
|
79 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
|
80 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
|
81 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
|
82 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
|
83 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
|
84 VECTOR_MODES (INT, 64); /* V64QI V32HI V16SI V8DI */ |
111 | 85 VECTOR_MODES (INT, 128); /* V128QI V64HI V32SI V16DI */ |
86 VECTOR_MODES (FLOAT, 8); /* V2SF */ | |
87 VECTOR_MODES (FLOAT, 16); /* V4SF V2DF */ | |
88 VECTOR_MODES (FLOAT, 32); /* V8SF V4DF V2TF */ | |
89 VECTOR_MODES (FLOAT, 64); /* V16SF V8DF V4TF */ | |
90 VECTOR_MODES (FLOAT, 128); /* V32SF V16DF V8TF */ | |
91 VECTOR_MODES (FLOAT, 256); /* V64SF V32DF V16TF */ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
92 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
|
93 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
|
94 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
|
95 VECTOR_MODE (INT, QI, 2); /* V2QI */ |
111 | 96 VECTOR_MODE (INT, QI, 12); /* V12QI */ |
97 VECTOR_MODE (INT, QI, 14); /* V14QI */ | |
98 VECTOR_MODE (INT, HI, 6); /* V6HI */ | |
99 VECTOR_MODE (INT, SI, 64); /* V64SI */ | |
100 | |
0 | 101 INT_MODE (OI, 32); |
111 | 102 INT_MODE (XI, 64); |
103 | |
104 /* Keep the OI and XI modes from confusing the compiler into thinking | |
105 that these modes could actually be used for computation. They are | |
106 only holders for vectors during data movement. */ | |
107 #define MAX_BITSIZE_MODE_ANY_INT (128) | |
0 | 108 |
109 /* The symbol Pmode stands for one of the above machine modes (usually SImode). | |
110 The tm.h file specifies which one. It is not a distinct mode. */ |