]>
Commit | Line | Data |
---|---|---|
6f432b58 | 1 | /* Definitions of target machine for GNU compiler, for ARM. |
fbd26352 | 2 | Copyright (C) 2002-2019 Free Software Foundation, Inc. |
6f432b58 | 3 | Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) |
4 | and Martin Simmons (@harleqn.co.uk). | |
5 | More major hacks by Richard Earnshaw (rearnsha@arm.com) | |
6 | Minor hacks by Nick Clifton (nickc@cygnus.com) | |
7 | ||
acf6ed70 | 8 | This file is part of GCC. |
6f432b58 | 9 | |
acf6ed70 | 10 | GCC is free software; you can redistribute it and/or modify it |
11 | under the terms of the GNU General Public License as published | |
038d1e19 | 12 | by the Free Software Foundation; either version 3, or (at your |
acf6ed70 | 13 | option) any later version. |
6f432b58 | 14 | |
acf6ed70 | 15 | GCC is distributed in the hope that it will be useful, but WITHOUT |
16 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
17 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
18 | License for more details. | |
6f432b58 | 19 | |
acf6ed70 | 20 | You should have received a copy of the GNU General Public License |
038d1e19 | 21 | along with GCC; see the file COPYING3. If not see |
22 | <http://www.gnu.org/licenses/>. */ | |
6f432b58 | 23 | |
15460c97 | 24 | |
9b8516be | 25 | /* Half-precision floating point */ |
26 | FLOAT_MODE (HF, 2, 0); | |
27 | ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE) | |
28 | ? &arm_half_format : &ieee_half_format)); | |
29 | ||
6f432b58 | 30 | /* CCFPEmode should be used with floating inequalities, |
31 | CCFPmode should be used with floating equalities. | |
32 | CC_NOOVmode should be used with SImode integer equalities. | |
33 | CC_Zmode should be used if only the Z flag is set correctly | |
2df9477b | 34 | CC_Cmode should be used if only the C flag is set correctly, after an |
35 | addition. | |
58d6528b | 36 | CC_Nmode should be used if only the N (sign) flag is set correctly |
a8045a4f | 37 | CC_CZmode should be used if only the C and Z flags are correct |
38 | (used for DImode unsigned comparisons). | |
39 | CC_NCVmode should be used if only the N, C, and V flags are correct | |
40 | (used for DImode signed comparisons). | |
674a8f0b | 41 | CCmode should be used otherwise. */ |
6f432b58 | 42 | |
15460c97 | 43 | CC_MODE (CC_NOOV); |
44 | CC_MODE (CC_Z); | |
a8045a4f | 45 | CC_MODE (CC_CZ); |
46 | CC_MODE (CC_NCV); | |
15460c97 | 47 | CC_MODE (CC_SWP); |
48 | CC_MODE (CCFP); | |
49 | CC_MODE (CCFPE); | |
50 | CC_MODE (CC_DNE); | |
51 | CC_MODE (CC_DEQ); | |
52 | CC_MODE (CC_DLE); | |
53 | CC_MODE (CC_DLT); | |
54 | CC_MODE (CC_DGE); | |
55 | CC_MODE (CC_DGT); | |
56 | CC_MODE (CC_DLEU); | |
57 | CC_MODE (CC_DLTU); | |
58 | CC_MODE (CC_DGEU); | |
59 | CC_MODE (CC_DGTU); | |
60 | CC_MODE (CC_C); | |
58d6528b | 61 | CC_MODE (CC_N); |
f6c98a9a | 62 | CC_MODE (CC_V); |
c40d47cc | 63 | |
64 | /* Vector modes. */ | |
65 | VECTOR_MODES (INT, 4); /* V4QI V2HI */ | |
66 | VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */ | |
67 | VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */ | |
68 | VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */ | |
69 | VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */ | |
00b2ca01 | 70 | VECTOR_MODE (FLOAT, HF, 2); /* V2HF */ |
c40d47cc | 71 | |
bbbe4599 | 72 | /* Fraction and accumulator vector modes. */ |
73 | VECTOR_MODES (FRACT, 4); /* V4QQ V2HQ */ | |
74 | VECTOR_MODES (UFRACT, 4); /* V4UQQ V2UHQ */ | |
75 | VECTOR_MODES (ACCUM, 4); /* V2HA */ | |
76 | VECTOR_MODES (UACCUM, 4); /* V2UHA */ | |
77 | ||
d98a3884 | 78 | /* Opaque integer modes for 3, 4, 6 or 8 Neon double registers (2 is |
79 | TImode). */ | |
80 | INT_MODE (EI, 24); | |
81 | INT_MODE (OI, 32); | |
82 | INT_MODE (CI, 48); | |
33a0b99d | 83 | INT_MODE (XI, 64); |