Skip various cmp-mem-const tests on lp64 hppa*-*-*
[official-gcc.git] / gcc / config / cris / cris-modes.def
blobd6421ee4eae66a8e075a11e43afd95c5c1bf7ebb
1 /* Definitions of target machine for GNU compiler, for CRIS.
2 Copyright (C) 2002-2024 Free Software Foundation, Inc.
4 This file is part of GCC.
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.
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.
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/>. */
20 /* Node: Condition Code */
22 /* The mode used for condition-codes depends on both the way the
23 condition-codes are generated (the CC-setter, typically the compare
24 instruction), and used (the CC-user, typically a branch). For CRIS, we
25 have ordinary compares and incidental condition-code settings from
26 preceding instructions, setting a subset of N, Z, V and C to usable
27 values, from the perspective of comparing the result against zero
28 (referred to below as "fpcraz"). The two subsets meaningful to gcc are
29 all of N, Z, V, C versus just N, Z; some CC-users care only about N
30 and/or Z and some that care about at least one of those flags together
31 with V and/or C.
33 The plain "CC_MODE (CC)" (which is always present in gcc), is used to
34 reflect the "unoptimized" state, where the CC-setter is a compare
35 against zero and the CC-user is any branch or s<condition> instruction,
36 before reload. After reload, a need for C or V is reflected as
37 CC_NZVCmode in both setters and users, and others remain CCmode, until
38 or if optimization of CC-setter and CC-users, when CCmode setters can
39 be changed or replaced by either CC_NZmode or CC_NZVCmode. To wit, all
40 users that require CC_NZVCmode must match only that mode at any time.
41 All other users must match all of CCmode, CC_NZmode, and CC_NZVCmode.
42 All setters that set only CC_NZmode must match setting only that mode.
43 All other setters must match setting all of CCmode, CC_NZmode, and
44 CC_NZVCmode.
46 There's also other modes (i.e. CC_ZnNmode) with a separate set of
47 setters and users not matched by the others. */
49 /* Z and N flags only. For a condition-code setter: only the Z and N
50 flags are set to usable values, fpcraz. For a condition-code user: the
51 operation using the condition codes only care about the Z and N flags. */
52 CC_MODE (CC_NZ);
54 /* Z and N *and* V and C flags. For a condition-code setter: all flags
55 are set to usable values, fpcraz. For a condition-code user: at least
56 one of V and C are used and possibly N and Z too. */
57 CC_MODE (CC_NZVC);
59 /* The result of a btst / btstq instruction for extracting a single bit
60 goes negated into the N flag, or in olde cc0-parlance, CC_Z_IN_NOT_N. */
61 CC_MODE (CC_ZnN);