]>
Commit | Line | Data |
---|---|---|
188fc5b5 | 1 | /* Definitions of target machine for GCC for IA-32. |
a5381466 ZW |
2 | Copyright (C) 2002 Free Software Foundation, Inc. |
3 | ||
188fc5b5 | 4 | This file is part of GCC. |
a5381466 | 5 | |
188fc5b5 | 6 | GCC is free software; you can redistribute it and/or modify |
a5381466 ZW |
7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 2, or (at your option) | |
9 | any later version. | |
10 | ||
188fc5b5 | 11 | GCC is distributed in the hope that it will be useful, |
a5381466 ZW |
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 | |
188fc5b5 | 17 | along with GCC; see the file COPYING. If not, write to |
a5381466 ZW |
18 | the Free Software Foundation, 59 Temple Place - Suite 330, |
19 | Boston, MA 02111-1307, USA. */ | |
20 | ||
f8a1ebc6 JH |
21 | /* x86_64 ABI specifies both XF and TF modes. |
22 | XFmode is __float80 is IEEE extended; TFmode is __float128 | |
23 | is IEEE quad. | |
24 | ||
25 | IEEE extended is 128 bits wide, except in ILP32 mode, but we | |
26 | have to say it's 12 bytes so that the bitsize and wider_mode | |
27 | tables are correctly set up. We correct its size below. */ | |
94134f42 ZW |
28 | |
29 | FLOAT_MODE (XF, 12, ieee_extended_intel_96_format); | |
ac3ef3f5 JH |
30 | ADJUST_FLOAT_FORMAT (XF, (TARGET_128BIT_LONG_DOUBLE |
31 | ? &ieee_extended_intel_128_format | |
32 | : &ieee_extended_intel_96_format)); | |
f8a1ebc6 JH |
33 | ADJUST_BYTESIZE (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 12); |
34 | ADJUST_ALIGNMENT (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 4); | |
35 | FLOAT_MODE (TF, 16, ieee_quad_format); | |
94134f42 | 36 | |
a5381466 ZW |
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 | ||
4aae8a9a | 46 | Add CCGC to indicate comparisons against zero that allows |
a5381466 ZW |
47 | unspecified garbage in the Carry flag. This mode is used |
48 | by inc/dec instructions. | |
49 | ||
4aae8a9a | 50 | Add CCGOC to indicate comparisons against zero that allows |
a5381466 ZW |
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 CCZ to indicate that only the Zero flag is valid. */ | |
56 | ||
94134f42 ZW |
57 | CC_MODE (CCGC); |
58 | CC_MODE (CCGOC); | |
59 | CC_MODE (CCNO); | |
60 | CC_MODE (CCZ); | |
61 | CC_MODE (CCFP); | |
62 | CC_MODE (CCFPU); |