annotate gcc/config/arc/genmultilib.awk @ 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
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1 # Copyright (C) 2016-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
2 #
kono
parents:
diff changeset
3 # This file is part of GCC.
kono
parents:
diff changeset
4 #
kono
parents:
diff changeset
5 # GCC is free software; you can redistribute it and/or modify it under
kono
parents:
diff changeset
6 # the terms of the GNU General Public License as published by the Free
kono
parents:
diff changeset
7 # Software Foundation; either version 3, or (at your option) any later
kono
parents:
diff changeset
8 # version.
kono
parents:
diff changeset
9 #
kono
parents:
diff changeset
10 # GCC is distributed in the hope that it will be useful, but WITHOUT ANY
kono
parents:
diff changeset
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or
kono
parents:
diff changeset
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
kono
parents:
diff changeset
13 # for more details.
kono
parents:
diff changeset
14 #
kono
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
16 # along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
17 # <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 ##################################################################
kono
parents:
diff changeset
20 #
kono
parents:
diff changeset
21 # This file is using AVR's genmultilib.awk idea.
kono
parents:
diff changeset
22 # Transform CPU Information from arc-cpu.def to a
kono
parents:
diff changeset
23 # Representation that is understood by GCC's multilib Machinery.
kono
parents:
diff changeset
24 #
kono
parents:
diff changeset
25 # The Script works as a Filter from STDIN to STDOUT.
kono
parents:
diff changeset
26 #
kono
parents:
diff changeset
27 # FORMAT = "Makefile": Generate Makefile Snipet that sets some
kono
parents:
diff changeset
28 # MULTILIB_* Variables as needed.
kono
parents:
diff changeset
29 #
kono
parents:
diff changeset
30 ##################################################################
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 BEGIN {
kono
parents:
diff changeset
33 FS ="[(, \t)]+"
kono
parents:
diff changeset
34 comment = 1
kono
parents:
diff changeset
35 n_cores = 0
kono
parents:
diff changeset
36 n_reuse = 0
kono
parents:
diff changeset
37 }
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 ##################################################################
kono
parents:
diff changeset
40 # Add some Comments to the generated Files and copy-paste
kono
parents:
diff changeset
41 # Copyright Notice from above.
kono
parents:
diff changeset
42 ##################################################################
kono
parents:
diff changeset
43 /^#/ {
kono
parents:
diff changeset
44 if (!comment)
kono
parents:
diff changeset
45 next
kono
parents:
diff changeset
46 else if (comment == 1)
kono
parents:
diff changeset
47 {
kono
parents:
diff changeset
48 if (FORMAT == "Makefile")
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 print "# Auto-generated Makefile Snip"
kono
parents:
diff changeset
51 print "# Generated by : ./gcc/config/arc/genmultilib.awk"
kono
parents:
diff changeset
52 print "# Generated from : ./gcc/config/arc/arc-cpu.def"
kono
parents:
diff changeset
53 print "# Used by : tmake_file from Makefile and genmultilib"
kono
parents:
diff changeset
54 print ""
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56 }
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 comment = 2;
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 print
kono
parents:
diff changeset
61 }
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 /^$/ {
kono
parents:
diff changeset
64 # The first empty line stops copy-pasting the GPL comments
kono
parents:
diff changeset
65 # from this file to the generated file.
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 comment = 0
kono
parents:
diff changeset
68 }
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 /^ARC_CPU/ {
kono
parents:
diff changeset
72 name = $2
kono
parents:
diff changeset
73 # gsub ("\"", "", name)
kono
parents:
diff changeset
74
kono
parents:
diff changeset
75 if ($4 != "0")
kono
parents:
diff changeset
76 {
kono
parents:
diff changeset
77 arch = $3
kono
parents:
diff changeset
78 if (arch == "6xx")
kono
parents:
diff changeset
79 arch = 601
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 n = split ($4, cpu_flg, "|")
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 line = "mcpu." arch
kono
parents:
diff changeset
84 for (i = 1; i <= n; i++)
kono
parents:
diff changeset
85 {
kono
parents:
diff changeset
86 if (cpu_flg[i] == "FL_MPYOPT_0")
kono
parents:
diff changeset
87 line = line "/mmpy-option.0"
kono
parents:
diff changeset
88 else if (cpu_flg[i] == "FL_MPYOPT_1")
kono
parents:
diff changeset
89 line = line "/mmpy-option.1"
kono
parents:
diff changeset
90 else if (cpu_flg[i] == "FL_MPYOPT_2")
kono
parents:
diff changeset
91 line = line "/mmpy-option.2"
kono
parents:
diff changeset
92 else if (cpu_flg[i] == "FL_MPYOPT_3")
kono
parents:
diff changeset
93 line = line "/mmpy-option.3"
kono
parents:
diff changeset
94 else if (cpu_flg[i] == "FL_MPYOPT_4")
kono
parents:
diff changeset
95 line = line "/mmpy-option.4"
kono
parents:
diff changeset
96 else if (cpu_flg[i] == "FL_MPYOPT_5")
kono
parents:
diff changeset
97 line = line "/mmpy-option.5"
kono
parents:
diff changeset
98 else if (cpu_flg[i] == "FL_MPYOPT_6")
kono
parents:
diff changeset
99 line = line "/mmpy-option.6"
kono
parents:
diff changeset
100 else if (cpu_flg[i] == "FL_MPYOPT_7")
kono
parents:
diff changeset
101 line = line "/mmpy-option.7"
kono
parents:
diff changeset
102 else if (cpu_flg[i] == "FL_MPYOPT_8")
kono
parents:
diff changeset
103 line = line "/mmpy-option.8"
kono
parents:
diff changeset
104 else if (cpu_flg[i] == "FL_MPYOPT_9")
kono
parents:
diff changeset
105 line = line "/mmpy-option.9"
kono
parents:
diff changeset
106 else if (cpu_flg[i] == "FL_CD")
kono
parents:
diff changeset
107 line = line "/mcode-density"
kono
parents:
diff changeset
108 else if (cpu_flg[i] == "FL_BS")
kono
parents:
diff changeset
109 line = line "/mbarrel-shifter"
kono
parents:
diff changeset
110 else if (cpu_flg[i] == "FL_DIVREM")
kono
parents:
diff changeset
111 line = line "/mdiv-rem"
kono
parents:
diff changeset
112 else if (cpu_flg[i] == "FL_NORM" \
kono
parents:
diff changeset
113 || cpu_flg[i] == "FL_SWAP")
kono
parents:
diff changeset
114 line = line "/mnorm"
kono
parents:
diff changeset
115 else if (cpu_flg[i] == "FL_FPU_FPUS")
kono
parents:
diff changeset
116 line = line "/mfpu.fpus"
kono
parents:
diff changeset
117 else if (cpu_flg[i] == "FL_FPU_FPUDA")
kono
parents:
diff changeset
118 line = line "/mfpu.fpuda"
kono
parents:
diff changeset
119 else if (cpu_flg[i] == "FL_FPU_FPUD_ALL")
kono
parents:
diff changeset
120 line = line "/mfpu.fpud_all"
kono
parents:
diff changeset
121 else if (cpu_flg[i] == "FL_LL64")
kono
parents:
diff changeset
122 line = line "/mll64"
kono
parents:
diff changeset
123 else if (cpu_flg[i] == "FL_MUL64")
kono
parents:
diff changeset
124 line = line "/mmul64"
kono
parents:
diff changeset
125 else if (cpu_flg[i] == "FL_MUL32x16")
kono
parents:
diff changeset
126 line = line "/mmul32x16"
kono
parents:
diff changeset
127 else if (cpu_flg[i] == "FL_FPX_QUARK")
kono
parents:
diff changeset
128 line = line "/quark"
kono
parents:
diff changeset
129 else if (cpu_flg[i] == "FL_SPFP")
kono
parents:
diff changeset
130 line = line "/spfp"
kono
parents:
diff changeset
131 else if (cpu_flg[i] == "FL_DPFP")
kono
parents:
diff changeset
132 line = line "/dpfp"
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
133 else if (cpu_flg[i] == "FL_RF16")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
134 line = line "/mrf16"
111
kono
parents:
diff changeset
135 else
kono
parents:
diff changeset
136 {
kono
parents:
diff changeset
137 print "Don't know the flag " cpu_flg[i] > "/dev/stderr"
kono
parents:
diff changeset
138 exit 1
kono
parents:
diff changeset
139 }
kono
parents:
diff changeset
140 }
kono
parents:
diff changeset
141 line = "mcpu." name "=" line
kono
parents:
diff changeset
142 reuse[n_reuse] = line
kono
parents:
diff changeset
143 n_reuse++
kono
parents:
diff changeset
144 }
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 core = name
kono
parents:
diff changeset
147 cores[n_cores] = core
kono
parents:
diff changeset
148 n_cores++
kono
parents:
diff changeset
149 }
kono
parents:
diff changeset
150
kono
parents:
diff changeset
151 ##################################################################
kono
parents:
diff changeset
152 #
kono
parents:
diff changeset
153 # We gathered all the Information, now build/output the following:
kono
parents:
diff changeset
154 #
kono
parents:
diff changeset
155 # awk Variable target Variable FORMAT
kono
parents:
diff changeset
156 # -----------------------------------------------------------
kono
parents:
diff changeset
157 # m_options <-> MULTILIB_OPTIONS Makefile
kono
parents:
diff changeset
158 # m_dirnames <-> MULTILIB_DIRNAMES "
kono
parents:
diff changeset
159 #
kono
parents:
diff changeset
160 ##################################################################
kono
parents:
diff changeset
161
kono
parents:
diff changeset
162 END {
kono
parents:
diff changeset
163 m_options = "\nMULTILIB_OPTIONS = "
kono
parents:
diff changeset
164 m_dirnames = "\nMULTILIB_DIRNAMES ="
kono
parents:
diff changeset
165 m_reuse = "\nMULTILIB_REUSE ="
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 sep = ""
kono
parents:
diff changeset
168 for (c = 0; c < n_cores; c++)
kono
parents:
diff changeset
169 {
kono
parents:
diff changeset
170 m_options = m_options sep "mcpu=" cores[c]
kono
parents:
diff changeset
171 m_dirnames = m_dirnames " " cores[c]
kono
parents:
diff changeset
172 sep = "/"
kono
parents:
diff changeset
173 }
kono
parents:
diff changeset
174
kono
parents:
diff changeset
175 sep = ""
kono
parents:
diff changeset
176 for (c = 0; c < n_reuse; c++)
kono
parents:
diff changeset
177 {
kono
parents:
diff changeset
178 m_reuse = m_reuse sep reuse[c]
kono
parents:
diff changeset
179 sep = "\nMULTILIB_REUSE +="
kono
parents:
diff changeset
180 }
kono
parents:
diff changeset
181 ############################################################
kono
parents:
diff changeset
182 # Output that Stuff
kono
parents:
diff changeset
183 ############################################################
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 if (FORMAT == "Makefile")
kono
parents:
diff changeset
186 {
kono
parents:
diff changeset
187 # Intended Target: ./gcc/config/arc/t-multilib
kono
parents:
diff changeset
188
kono
parents:
diff changeset
189 print m_options
kono
parents:
diff changeset
190 print m_dirnames
kono
parents:
diff changeset
191
kono
parents:
diff changeset
192 ############################################################
kono
parents:
diff changeset
193 # Legacy Aliases
kono
parents:
diff changeset
194 ############################################################
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 print ""
kono
parents:
diff changeset
197 print "# Aliases:"
kono
parents:
diff changeset
198 print "MULTILIB_MATCHES = mcpu?arc600=mcpu?ARC600"
kono
parents:
diff changeset
199 print "MULTILIB_MATCHES += mcpu?arc600=mARC600"
kono
parents:
diff changeset
200 print "MULTILIB_MATCHES += mcpu?arc600=mA6"
kono
parents:
diff changeset
201 print "MULTILIB_MATCHES += mcpu?arc601=mcpu?ARC601"
kono
parents:
diff changeset
202 print "MULTILIB_MATCHES += mcpu?arc700=mA7"
kono
parents:
diff changeset
203 print "MULTILIB_MATCHES += mcpu?arc700=mARC700"
kono
parents:
diff changeset
204 }
kono
parents:
diff changeset
205 }