annotate gcc/config/nds32/iterators.md @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ;; Code and mode itertator and attribute definitions
kono
parents:
diff changeset
2 ;; of Andes NDS32 cpu for GNU compiler
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 ;; Copyright (C) 2012-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
4 ;; Contributed by Andes Technology Corporation.
kono
parents:
diff changeset
5 ;;
kono
parents:
diff changeset
6 ;; This file is part of GCC.
kono
parents:
diff changeset
7 ;;
kono
parents:
diff changeset
8 ;; GCC is free software; you can redistribute it and/or modify it
kono
parents:
diff changeset
9 ;; under the terms of the GNU General Public License as published
kono
parents:
diff changeset
10 ;; by the Free Software Foundation; either version 3, or (at your
kono
parents:
diff changeset
11 ;; option) any later version.
kono
parents:
diff changeset
12 ;;
kono
parents:
diff changeset
13 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
kono
parents:
diff changeset
14 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
kono
parents:
diff changeset
15 ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
kono
parents:
diff changeset
16 ;; License for more details.
kono
parents:
diff changeset
17 ;;
kono
parents:
diff changeset
18 ;; You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
19 ;; along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
20 ;; <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
23 ;; Mode iterators.
kono
parents:
diff changeset
24 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 ;; A list of integer modes that are up to one word long.
kono
parents:
diff changeset
27 (define_mode_iterator QIHISI [QI HI SI])
kono
parents:
diff changeset
28
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
29 ;; A list of integer modes for one word and double word.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
30 (define_mode_iterator SIDI [SI DI])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
31
111
kono
parents:
diff changeset
32 ;; A list of integer modes that are up to one half-word long.
kono
parents:
diff changeset
33 (define_mode_iterator QIHI [QI HI])
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 ;; A list of the modes that are up to double-word long.
kono
parents:
diff changeset
36 (define_mode_iterator DIDF [DI DF])
kono
parents:
diff changeset
37
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
38 ;; A list of the modes that are up to one word long vector.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
39 (define_mode_iterator VQIHI [V4QI V2HI])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
40
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 ;; A list of the modes that are up to one word long vector
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
42 ;; and scalar for varies mode.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
43 (define_mode_iterator VSHI [V2HI HI])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
44 (define_mode_iterator VSQIHI [V4QI V2HI QI HI])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
45 (define_mode_iterator VSQIHIDI [V4QI V2HI QI HI DI])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
46 (define_mode_iterator VQIHIDI [V4QI V2HI DI])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
47
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
48 ;; A list of the modes that are up to double-word long.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
49 (define_mode_iterator ANYF [(SF "TARGET_FPU_SINGLE")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
50 (DF "TARGET_FPU_DOUBLE")])
111
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
53 ;; Mode attributes.
kono
parents:
diff changeset
54 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
55
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
56 (define_mode_attr size [(QI "b") (HI "h") (SI "w") (SF "s") (DF "d")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
57
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
58 (define_mode_attr byte [(QI "1") (HI "2") (SI "4") (V4QI "4") (V2HI "4")])
111
kono
parents:
diff changeset
59
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
60 (define_mode_attr bits [(V4QI "8") (QI "8") (V2HI "16") (HI "16") (DI "64")])
111
kono
parents:
diff changeset
61
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
62 (define_mode_attr VELT [(V4QI "QI") (V2HI "HI")])
111
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
65 ;; Code iterators.
kono
parents:
diff changeset
66 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
67
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68 ;; shifts
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
69 (define_code_iterator shift_rotate [ashift ashiftrt lshiftrt rotatert])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
70
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
71 (define_code_iterator shifts [ashift ashiftrt lshiftrt])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
72
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
73 (define_code_iterator shiftrt [ashiftrt lshiftrt])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
74
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
75 (define_code_iterator sat_plus [ss_plus us_plus])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
76
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
77 (define_code_iterator all_plus [plus ss_plus us_plus])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
78
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
79 (define_code_iterator sat_minus [ss_minus us_minus])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
80
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
81 (define_code_iterator all_minus [minus ss_minus us_minus])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
82
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
83 (define_code_iterator plus_minus [plus minus])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
84
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
85 (define_code_iterator extend [sign_extend zero_extend])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
86
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
87 (define_code_iterator sumax [smax umax])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
88
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
89 (define_code_iterator sumin [smin umin])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
90
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
91 (define_code_iterator sumin_max [smax umax smin umin])
111
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
94 ;; Code attributes.
kono
parents:
diff changeset
95 ;;----------------------------------------------------------------------------
kono
parents:
diff changeset
96
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
97 ;; shifts
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
98 (define_code_attr shift
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
99 [(ashift "ashl") (ashiftrt "ashr") (lshiftrt "lshr") (rotatert "rotr")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
100
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
101 (define_code_attr su
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
102 [(ashiftrt "") (lshiftrt "u") (sign_extend "s") (zero_extend "u")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
103
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
104 (define_code_attr zs
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
105 [(sign_extend "s") (zero_extend "z")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
106
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
107 (define_code_attr uk
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
108 [(plus "") (ss_plus "k") (us_plus "uk")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
109 (minus "") (ss_minus "k") (us_minus "uk")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
110
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
111 (define_code_attr opcode
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
112 [(plus "add") (minus "sub") (smax "smax") (umax "umax") (smin "smin") (umin "umin")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
113
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
114 (define_code_attr add_rsub
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
115 [(plus "a") (minus "rs")])
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
116
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
117 (define_code_attr add_sub
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
118 [(plus "a") (minus "s")])
111
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 ;;----------------------------------------------------------------------------