diff options
Diffstat (limited to 'apps/plugins/puzzles/src/spectre-tables-auto.h')
-rw-r--r-- | apps/plugins/puzzles/src/spectre-tables-auto.h | 1220 |
1 files changed, 1220 insertions, 0 deletions
diff --git a/apps/plugins/puzzles/src/spectre-tables-auto.h b/apps/plugins/puzzles/src/spectre-tables-auto.h new file mode 100644 index 0000000000..a41c4e1d18 --- /dev/null +++ b/apps/plugins/puzzles/src/spectre-tables-auto.h | |||
@@ -0,0 +1,1220 @@ | |||
1 | /* | ||
2 | * Autogenerated transition tables for the Spectre tiling. | ||
3 | * Generated by auxiliary/spectre-gen.c. | ||
4 | */ | ||
5 | |||
6 | static const struct MapEntry hexmap_G[] = { | ||
7 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
8 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
9 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
10 | { false, 2, 0 }, /* edge 3 of hex 0 (F) */ | ||
11 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
12 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
13 | { true, 0, 2 }, /* edge 0 of hex 1 (X) */ | ||
14 | { true, 3, 4 }, /* edge 1 of hex 1 (X) */ | ||
15 | { false, 3, 1 }, /* edge 2 of hex 1 (X) */ | ||
16 | { false, 3, 0 }, /* edge 3 of hex 1 (X) */ | ||
17 | { false, 2, 2 }, /* edge 4 of hex 1 (X) */ | ||
18 | { false, 2, 1 }, /* edge 5 of hex 1 (X) */ | ||
19 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
20 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
21 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
22 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
23 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
24 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
25 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
26 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
27 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
28 | { false, 3, 2 }, /* edge 3 of hex 3 (S) */ | ||
29 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
30 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
31 | { true, 5, 2 }, /* edge 0 of hex 4 (P) */ | ||
32 | { true, 2, 2 }, /* edge 1 of hex 4 (P) */ | ||
33 | { false, 0, 0 }, /* edge 2 of hex 4 (P) */ | ||
34 | { false, 5, 1 }, /* edge 3 of hex 4 (P) */ | ||
35 | { false, 5, 0 }, /* edge 4 of hex 4 (P) */ | ||
36 | { false, 4, 4 }, /* edge 5 of hex 4 (P) */ | ||
37 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
38 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
39 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
40 | { false, 4, 3 }, /* edge 3 of hex 5 (D) */ | ||
41 | { false, 4, 2 }, /* edge 4 of hex 5 (D) */ | ||
42 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
43 | { true, 3, 2 }, /* edge 0 of hex 6 (J) */ | ||
44 | { true, 5, 5 }, /* edge 1 of hex 6 (J) */ | ||
45 | { false, 4, 1 }, /* edge 2 of hex 6 (J) */ | ||
46 | { false, 4, 0 }, /* edge 3 of hex 6 (J) */ | ||
47 | { false, 3, 4 }, /* edge 4 of hex 6 (J) */ | ||
48 | { false, 3, 3 }, /* edge 5 of hex 6 (J) */ | ||
49 | }; | ||
50 | static const struct MapEdge hexedges_G[] = { | ||
51 | { 0, 2 }, | ||
52 | { 2, 3 }, | ||
53 | { 5, 3 }, | ||
54 | { 8, 5 }, | ||
55 | { 13, 5 }, | ||
56 | { 18, 2 }, | ||
57 | }; | ||
58 | static const struct MapEntry hexin_G[] = { | ||
59 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
60 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
61 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
62 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
63 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
64 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
65 | { true, 1, 5 }, /* subedge 1 of edge 2 */ | ||
66 | { true, 1, 4 }, /* subedge 2 of edge 2 */ | ||
67 | { true, 1, 3 }, /* subedge 0 of edge 3 */ | ||
68 | { true, 1, 2 }, /* subedge 1 of edge 3 */ | ||
69 | { true, 3, 3 }, /* subedge 2 of edge 3 */ | ||
70 | { true, 6, 5 }, /* subedge 3 of edge 3 */ | ||
71 | { true, 6, 4 }, /* subedge 4 of edge 3 */ | ||
72 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
73 | { true, 6, 2 }, /* subedge 1 of edge 4 */ | ||
74 | { true, 5, 4 }, /* subedge 2 of edge 4 */ | ||
75 | { true, 5, 3 }, /* subedge 3 of edge 4 */ | ||
76 | { true, 4, 5 }, /* subedge 4 of edge 4 */ | ||
77 | { true, 4, 4 }, /* subedge 0 of edge 5 */ | ||
78 | { true, 4, 3 }, /* subedge 1 of edge 5 */ | ||
79 | }; | ||
80 | static const struct MapEntry hexmap_D[] = { | ||
81 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
82 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
83 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
84 | { false, 1, 3 }, /* edge 3 of hex 0 (F) */ | ||
85 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
86 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
87 | { true, 0, 2 }, /* edge 0 of hex 1 (P) */ | ||
88 | { true, 3, 4 }, /* edge 1 of hex 1 (P) */ | ||
89 | { false, 3, 0 }, /* edge 2 of hex 1 (P) */ | ||
90 | { false, 2, 1 }, /* edge 3 of hex 1 (P) */ | ||
91 | { false, 2, 0 }, /* edge 4 of hex 1 (P) */ | ||
92 | { false, 1, 4 }, /* edge 5 of hex 1 (P) */ | ||
93 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
94 | { false, 0, 2 }, /* edge 1 of hex 2 (G) */ | ||
95 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
96 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
97 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
98 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
99 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
100 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
101 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
102 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
103 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
104 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
105 | { true, 5, 2 }, /* edge 0 of hex 4 (X) */ | ||
106 | { true, 2, 2 }, /* edge 1 of hex 4 (X) */ | ||
107 | { false, 0, 1 }, /* edge 2 of hex 4 (X) */ | ||
108 | { false, 0, 0 }, /* edge 3 of hex 4 (X) */ | ||
109 | { false, 5, 4 }, /* edge 4 of hex 4 (X) */ | ||
110 | { false, 5, 3 }, /* edge 5 of hex 4 (X) */ | ||
111 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
112 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
113 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
114 | { false, 5, 2 }, /* edge 3 of hex 5 (D) */ | ||
115 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
116 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
117 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
118 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
119 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
120 | { false, 4, 0 }, /* edge 3 of hex 6 (F) */ | ||
121 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
122 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
123 | { true, 6, 2 }, /* edge 0 of hex 7 (X) */ | ||
124 | { true, 5, 4 }, /* edge 1 of hex 7 (X) */ | ||
125 | { false, 5, 1 }, /* edge 2 of hex 7 (X) */ | ||
126 | { false, 5, 0 }, /* edge 3 of hex 7 (X) */ | ||
127 | { false, 4, 2 }, /* edge 4 of hex 7 (X) */ | ||
128 | { false, 4, 1 }, /* edge 5 of hex 7 (X) */ | ||
129 | }; | ||
130 | static const struct MapEdge hexedges_D[] = { | ||
131 | { 0, 3 }, | ||
132 | { 3, 5 }, | ||
133 | { 8, 2 }, | ||
134 | { 10, 4 }, | ||
135 | { 14, 3 }, | ||
136 | { 17, 5 }, | ||
137 | }; | ||
138 | static const struct MapEntry hexin_D[] = { | ||
139 | { true, 4, 3 }, /* subedge 0 of edge 0 */ | ||
140 | { true, 4, 2 }, /* subedge 1 of edge 0 */ | ||
141 | { true, 2, 1 }, /* subedge 2 of edge 0 */ | ||
142 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
143 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
144 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
145 | { true, 0, 3 }, /* subedge 3 of edge 1 */ | ||
146 | { true, 1, 5 }, /* subedge 4 of edge 1 */ | ||
147 | { true, 1, 4 }, /* subedge 0 of edge 2 */ | ||
148 | { true, 1, 3 }, /* subedge 1 of edge 2 */ | ||
149 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
150 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
151 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
152 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
153 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
154 | { true, 7, 5 }, /* subedge 1 of edge 4 */ | ||
155 | { true, 7, 4 }, /* subedge 2 of edge 4 */ | ||
156 | { true, 7, 3 }, /* subedge 0 of edge 5 */ | ||
157 | { true, 7, 2 }, /* subedge 1 of edge 5 */ | ||
158 | { true, 5, 3 }, /* subedge 2 of edge 5 */ | ||
159 | { true, 4, 5 }, /* subedge 3 of edge 5 */ | ||
160 | { true, 4, 4 }, /* subedge 4 of edge 5 */ | ||
161 | }; | ||
162 | static const struct MapEntry hexmap_J[] = { | ||
163 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
164 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
165 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
166 | { false, 1, 3 }, /* edge 3 of hex 0 (F) */ | ||
167 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
168 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
169 | { true, 0, 2 }, /* edge 0 of hex 1 (P) */ | ||
170 | { true, 3, 4 }, /* edge 1 of hex 1 (P) */ | ||
171 | { false, 3, 0 }, /* edge 2 of hex 1 (P) */ | ||
172 | { false, 2, 1 }, /* edge 3 of hex 1 (P) */ | ||
173 | { false, 2, 0 }, /* edge 4 of hex 1 (P) */ | ||
174 | { false, 1, 4 }, /* edge 5 of hex 1 (P) */ | ||
175 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
176 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
177 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
178 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
179 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
180 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
181 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
182 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
183 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
184 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
185 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
186 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
187 | { true, 5, 2 }, /* edge 0 of hex 4 (Y) */ | ||
188 | { true, 2, 2 }, /* edge 1 of hex 4 (Y) */ | ||
189 | { false, 0, 0 }, /* edge 2 of hex 4 (Y) */ | ||
190 | { false, 5, 4 }, /* edge 3 of hex 4 (Y) */ | ||
191 | { false, 5, 3 }, /* edge 4 of hex 4 (Y) */ | ||
192 | { false, 5, 2 }, /* edge 5 of hex 4 (Y) */ | ||
193 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
194 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
195 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
196 | { false, 5, 1 }, /* edge 3 of hex 5 (D) */ | ||
197 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
198 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
199 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
200 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
201 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
202 | { false, 3, 4 }, /* edge 3 of hex 6 (F) */ | ||
203 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
204 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
205 | { true, 6, 2 }, /* edge 0 of hex 7 (P) */ | ||
206 | { true, 5, 4 }, /* edge 1 of hex 7 (P) */ | ||
207 | { false, 5, 0 }, /* edge 2 of hex 7 (P) */ | ||
208 | { false, 4, 1 }, /* edge 3 of hex 7 (P) */ | ||
209 | { false, 4, 0 }, /* edge 4 of hex 7 (P) */ | ||
210 | { false, 3, 5 }, /* edge 5 of hex 7 (P) */ | ||
211 | }; | ||
212 | static const struct MapEdge hexedges_J[] = { | ||
213 | { 0, 2 }, | ||
214 | { 2, 5 }, | ||
215 | { 7, 2 }, | ||
216 | { 9, 6 }, | ||
217 | { 15, 2 }, | ||
218 | { 17, 5 }, | ||
219 | }; | ||
220 | static const struct MapEntry hexin_J[] = { | ||
221 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
222 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
223 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
224 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
225 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
226 | { true, 0, 3 }, /* subedge 3 of edge 1 */ | ||
227 | { true, 1, 5 }, /* subedge 4 of edge 1 */ | ||
228 | { true, 1, 4 }, /* subedge 0 of edge 2 */ | ||
229 | { true, 1, 3 }, /* subedge 1 of edge 2 */ | ||
230 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
231 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
232 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
233 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
234 | { true, 6, 3 }, /* subedge 4 of edge 3 */ | ||
235 | { true, 7, 5 }, /* subedge 5 of edge 3 */ | ||
236 | { true, 7, 4 }, /* subedge 0 of edge 4 */ | ||
237 | { true, 7, 3 }, /* subedge 1 of edge 4 */ | ||
238 | { true, 7, 2 }, /* subedge 0 of edge 5 */ | ||
239 | { true, 5, 3 }, /* subedge 1 of edge 5 */ | ||
240 | { true, 4, 5 }, /* subedge 2 of edge 5 */ | ||
241 | { true, 4, 4 }, /* subedge 3 of edge 5 */ | ||
242 | { true, 4, 3 }, /* subedge 4 of edge 5 */ | ||
243 | }; | ||
244 | static const struct MapEntry hexmap_L[] = { | ||
245 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
246 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
247 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
248 | { false, 1, 3 }, /* edge 3 of hex 0 (F) */ | ||
249 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
250 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
251 | { true, 0, 2 }, /* edge 0 of hex 1 (P) */ | ||
252 | { true, 3, 4 }, /* edge 1 of hex 1 (P) */ | ||
253 | { false, 3, 0 }, /* edge 2 of hex 1 (P) */ | ||
254 | { false, 2, 1 }, /* edge 3 of hex 1 (P) */ | ||
255 | { false, 2, 0 }, /* edge 4 of hex 1 (P) */ | ||
256 | { false, 1, 4 }, /* edge 5 of hex 1 (P) */ | ||
257 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
258 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
259 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
260 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
261 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
262 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
263 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
264 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
265 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
266 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
267 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
268 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
269 | { true, 5, 2 }, /* edge 0 of hex 4 (Y) */ | ||
270 | { true, 2, 2 }, /* edge 1 of hex 4 (Y) */ | ||
271 | { false, 0, 0 }, /* edge 2 of hex 4 (Y) */ | ||
272 | { false, 5, 5 }, /* edge 3 of hex 4 (Y) */ | ||
273 | { false, 5, 4 }, /* edge 4 of hex 4 (Y) */ | ||
274 | { false, 5, 3 }, /* edge 5 of hex 4 (Y) */ | ||
275 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
276 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
277 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
278 | { false, 5, 2 }, /* edge 3 of hex 5 (D) */ | ||
279 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
280 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
281 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
282 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
283 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
284 | { false, 4, 0 }, /* edge 3 of hex 6 (F) */ | ||
285 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
286 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
287 | { true, 6, 2 }, /* edge 0 of hex 7 (X) */ | ||
288 | { true, 5, 4 }, /* edge 1 of hex 7 (X) */ | ||
289 | { false, 5, 1 }, /* edge 2 of hex 7 (X) */ | ||
290 | { false, 5, 0 }, /* edge 3 of hex 7 (X) */ | ||
291 | { false, 4, 2 }, /* edge 4 of hex 7 (X) */ | ||
292 | { false, 4, 1 }, /* edge 5 of hex 7 (X) */ | ||
293 | }; | ||
294 | static const struct MapEdge hexedges_L[] = { | ||
295 | { 0, 2 }, | ||
296 | { 2, 5 }, | ||
297 | { 7, 2 }, | ||
298 | { 9, 4 }, | ||
299 | { 13, 3 }, | ||
300 | { 16, 6 }, | ||
301 | }; | ||
302 | static const struct MapEntry hexin_L[] = { | ||
303 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
304 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
305 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
306 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
307 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
308 | { true, 0, 3 }, /* subedge 3 of edge 1 */ | ||
309 | { true, 1, 5 }, /* subedge 4 of edge 1 */ | ||
310 | { true, 1, 4 }, /* subedge 0 of edge 2 */ | ||
311 | { true, 1, 3 }, /* subedge 1 of edge 2 */ | ||
312 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
313 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
314 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
315 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
316 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
317 | { true, 7, 5 }, /* subedge 1 of edge 4 */ | ||
318 | { true, 7, 4 }, /* subedge 2 of edge 4 */ | ||
319 | { true, 7, 3 }, /* subedge 0 of edge 5 */ | ||
320 | { true, 7, 2 }, /* subedge 1 of edge 5 */ | ||
321 | { true, 5, 3 }, /* subedge 2 of edge 5 */ | ||
322 | { true, 4, 5 }, /* subedge 3 of edge 5 */ | ||
323 | { true, 4, 4 }, /* subedge 4 of edge 5 */ | ||
324 | { true, 4, 3 }, /* subedge 5 of edge 5 */ | ||
325 | }; | ||
326 | static const struct MapEntry hexmap_X[] = { | ||
327 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
328 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
329 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
330 | { false, 2, 0 }, /* edge 3 of hex 0 (F) */ | ||
331 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
332 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
333 | { true, 0, 2 }, /* edge 0 of hex 1 (Y) */ | ||
334 | { true, 3, 4 }, /* edge 1 of hex 1 (Y) */ | ||
335 | { false, 3, 0 }, /* edge 2 of hex 1 (Y) */ | ||
336 | { false, 2, 3 }, /* edge 3 of hex 1 (Y) */ | ||
337 | { false, 2, 2 }, /* edge 4 of hex 1 (Y) */ | ||
338 | { false, 2, 1 }, /* edge 5 of hex 1 (Y) */ | ||
339 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
340 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
341 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
342 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
343 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
344 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
345 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
346 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
347 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
348 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
349 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
350 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
351 | { true, 5, 2 }, /* edge 0 of hex 4 (Y) */ | ||
352 | { true, 2, 2 }, /* edge 1 of hex 4 (Y) */ | ||
353 | { false, 0, 0 }, /* edge 2 of hex 4 (Y) */ | ||
354 | { false, 5, 4 }, /* edge 3 of hex 4 (Y) */ | ||
355 | { false, 5, 3 }, /* edge 4 of hex 4 (Y) */ | ||
356 | { false, 5, 2 }, /* edge 5 of hex 4 (Y) */ | ||
357 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
358 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
359 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
360 | { false, 5, 1 }, /* edge 3 of hex 5 (D) */ | ||
361 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
362 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
363 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
364 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
365 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
366 | { false, 3, 4 }, /* edge 3 of hex 6 (F) */ | ||
367 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
368 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
369 | { true, 6, 2 }, /* edge 0 of hex 7 (P) */ | ||
370 | { true, 5, 4 }, /* edge 1 of hex 7 (P) */ | ||
371 | { false, 5, 0 }, /* edge 2 of hex 7 (P) */ | ||
372 | { false, 4, 1 }, /* edge 3 of hex 7 (P) */ | ||
373 | { false, 4, 0 }, /* edge 4 of hex 7 (P) */ | ||
374 | { false, 3, 5 }, /* edge 5 of hex 7 (P) */ | ||
375 | }; | ||
376 | static const struct MapEdge hexedges_X[] = { | ||
377 | { 0, 2 }, | ||
378 | { 2, 3 }, | ||
379 | { 5, 4 }, | ||
380 | { 9, 6 }, | ||
381 | { 15, 2 }, | ||
382 | { 17, 5 }, | ||
383 | }; | ||
384 | static const struct MapEntry hexin_X[] = { | ||
385 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
386 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
387 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
388 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
389 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
390 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
391 | { true, 1, 5 }, /* subedge 1 of edge 2 */ | ||
392 | { true, 1, 4 }, /* subedge 2 of edge 2 */ | ||
393 | { true, 1, 3 }, /* subedge 3 of edge 2 */ | ||
394 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
395 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
396 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
397 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
398 | { true, 6, 3 }, /* subedge 4 of edge 3 */ | ||
399 | { true, 7, 5 }, /* subedge 5 of edge 3 */ | ||
400 | { true, 7, 4 }, /* subedge 0 of edge 4 */ | ||
401 | { true, 7, 3 }, /* subedge 1 of edge 4 */ | ||
402 | { true, 7, 2 }, /* subedge 0 of edge 5 */ | ||
403 | { true, 5, 3 }, /* subedge 1 of edge 5 */ | ||
404 | { true, 4, 5 }, /* subedge 2 of edge 5 */ | ||
405 | { true, 4, 4 }, /* subedge 3 of edge 5 */ | ||
406 | { true, 4, 3 }, /* subedge 4 of edge 5 */ | ||
407 | }; | ||
408 | static const struct MapEntry hexmap_P[] = { | ||
409 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
410 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
411 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
412 | { false, 2, 0 }, /* edge 3 of hex 0 (F) */ | ||
413 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
414 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
415 | { true, 0, 2 }, /* edge 0 of hex 1 (Y) */ | ||
416 | { true, 3, 4 }, /* edge 1 of hex 1 (Y) */ | ||
417 | { false, 3, 0 }, /* edge 2 of hex 1 (Y) */ | ||
418 | { false, 2, 3 }, /* edge 3 of hex 1 (Y) */ | ||
419 | { false, 2, 2 }, /* edge 4 of hex 1 (Y) */ | ||
420 | { false, 2, 1 }, /* edge 5 of hex 1 (Y) */ | ||
421 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
422 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
423 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
424 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
425 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
426 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
427 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
428 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
429 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
430 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
431 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
432 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
433 | { true, 5, 2 }, /* edge 0 of hex 4 (Y) */ | ||
434 | { true, 2, 2 }, /* edge 1 of hex 4 (Y) */ | ||
435 | { false, 0, 0 }, /* edge 2 of hex 4 (Y) */ | ||
436 | { false, 5, 5 }, /* edge 3 of hex 4 (Y) */ | ||
437 | { false, 5, 4 }, /* edge 4 of hex 4 (Y) */ | ||
438 | { false, 5, 3 }, /* edge 5 of hex 4 (Y) */ | ||
439 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
440 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
441 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
442 | { false, 5, 2 }, /* edge 3 of hex 5 (D) */ | ||
443 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
444 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
445 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
446 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
447 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
448 | { false, 4, 0 }, /* edge 3 of hex 6 (F) */ | ||
449 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
450 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
451 | { true, 6, 2 }, /* edge 0 of hex 7 (X) */ | ||
452 | { true, 5, 4 }, /* edge 1 of hex 7 (X) */ | ||
453 | { false, 5, 1 }, /* edge 2 of hex 7 (X) */ | ||
454 | { false, 5, 0 }, /* edge 3 of hex 7 (X) */ | ||
455 | { false, 4, 2 }, /* edge 4 of hex 7 (X) */ | ||
456 | { false, 4, 1 }, /* edge 5 of hex 7 (X) */ | ||
457 | }; | ||
458 | static const struct MapEdge hexedges_P[] = { | ||
459 | { 0, 2 }, | ||
460 | { 2, 3 }, | ||
461 | { 5, 4 }, | ||
462 | { 9, 4 }, | ||
463 | { 13, 3 }, | ||
464 | { 16, 6 }, | ||
465 | }; | ||
466 | static const struct MapEntry hexin_P[] = { | ||
467 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
468 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
469 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
470 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
471 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
472 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
473 | { true, 1, 5 }, /* subedge 1 of edge 2 */ | ||
474 | { true, 1, 4 }, /* subedge 2 of edge 2 */ | ||
475 | { true, 1, 3 }, /* subedge 3 of edge 2 */ | ||
476 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
477 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
478 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
479 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
480 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
481 | { true, 7, 5 }, /* subedge 1 of edge 4 */ | ||
482 | { true, 7, 4 }, /* subedge 2 of edge 4 */ | ||
483 | { true, 7, 3 }, /* subedge 0 of edge 5 */ | ||
484 | { true, 7, 2 }, /* subedge 1 of edge 5 */ | ||
485 | { true, 5, 3 }, /* subedge 2 of edge 5 */ | ||
486 | { true, 4, 5 }, /* subedge 3 of edge 5 */ | ||
487 | { true, 4, 4 }, /* subedge 4 of edge 5 */ | ||
488 | { true, 4, 3 }, /* subedge 5 of edge 5 */ | ||
489 | }; | ||
490 | static const struct MapEntry hexmap_S[] = { | ||
491 | { true, 2, 5 }, /* edge 0 of hex 0 (L) */ | ||
492 | { true, 3, 5 }, /* edge 1 of hex 0 (L) */ | ||
493 | { true, 1, 0 }, /* edge 2 of hex 0 (L) */ | ||
494 | { false, 1, 1 }, /* edge 3 of hex 0 (L) */ | ||
495 | { false, 1, 0 }, /* edge 4 of hex 0 (L) */ | ||
496 | { false, 0, 4 }, /* edge 5 of hex 0 (L) */ | ||
497 | { true, 0, 2 }, /* edge 0 of hex 1 (P) */ | ||
498 | { true, 3, 4 }, /* edge 1 of hex 1 (P) */ | ||
499 | { false, 3, 0 }, /* edge 2 of hex 1 (P) */ | ||
500 | { false, 2, 1 }, /* edge 3 of hex 1 (P) */ | ||
501 | { false, 2, 0 }, /* edge 4 of hex 1 (P) */ | ||
502 | { false, 1, 2 }, /* edge 5 of hex 1 (P) */ | ||
503 | { false, 0, 3 }, /* edge 0 of hex 2 (G) */ | ||
504 | { false, 0, 2 }, /* edge 1 of hex 2 (G) */ | ||
505 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
506 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
507 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
508 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
509 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
510 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
511 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
512 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
513 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
514 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
515 | { true, 5, 2 }, /* edge 0 of hex 4 (X) */ | ||
516 | { true, 2, 2 }, /* edge 1 of hex 4 (X) */ | ||
517 | { false, 0, 1 }, /* edge 2 of hex 4 (X) */ | ||
518 | { false, 0, 0 }, /* edge 3 of hex 4 (X) */ | ||
519 | { false, 5, 4 }, /* edge 4 of hex 4 (X) */ | ||
520 | { false, 5, 3 }, /* edge 5 of hex 4 (X) */ | ||
521 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
522 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
523 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
524 | { false, 5, 2 }, /* edge 3 of hex 5 (D) */ | ||
525 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
526 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
527 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
528 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
529 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
530 | { false, 4, 0 }, /* edge 3 of hex 6 (F) */ | ||
531 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
532 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
533 | { true, 6, 2 }, /* edge 0 of hex 7 (X) */ | ||
534 | { true, 5, 4 }, /* edge 1 of hex 7 (X) */ | ||
535 | { false, 5, 1 }, /* edge 2 of hex 7 (X) */ | ||
536 | { false, 5, 0 }, /* edge 3 of hex 7 (X) */ | ||
537 | { false, 4, 2 }, /* edge 4 of hex 7 (X) */ | ||
538 | { false, 4, 1 }, /* edge 5 of hex 7 (X) */ | ||
539 | }; | ||
540 | static const struct MapEdge hexedges_S[] = { | ||
541 | { 0, 5 }, | ||
542 | { 5, 3 }, | ||
543 | { 8, 2 }, | ||
544 | { 10, 4 }, | ||
545 | { 14, 3 }, | ||
546 | { 17, 5 }, | ||
547 | }; | ||
548 | static const struct MapEntry hexin_S[] = { | ||
549 | { true, 4, 3 }, /* subedge 0 of edge 0 */ | ||
550 | { true, 4, 2 }, /* subedge 1 of edge 0 */ | ||
551 | { true, 2, 1 }, /* subedge 2 of edge 0 */ | ||
552 | { true, 2, 0 }, /* subedge 3 of edge 0 */ | ||
553 | { true, 0, 5 }, /* subedge 4 of edge 0 */ | ||
554 | { true, 0, 4 }, /* subedge 0 of edge 1 */ | ||
555 | { true, 0, 3 }, /* subedge 1 of edge 1 */ | ||
556 | { true, 1, 5 }, /* subedge 2 of edge 1 */ | ||
557 | { true, 1, 4 }, /* subedge 0 of edge 2 */ | ||
558 | { true, 1, 3 }, /* subedge 1 of edge 2 */ | ||
559 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
560 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
561 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
562 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
563 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
564 | { true, 7, 5 }, /* subedge 1 of edge 4 */ | ||
565 | { true, 7, 4 }, /* subedge 2 of edge 4 */ | ||
566 | { true, 7, 3 }, /* subedge 0 of edge 5 */ | ||
567 | { true, 7, 2 }, /* subedge 1 of edge 5 */ | ||
568 | { true, 5, 3 }, /* subedge 2 of edge 5 */ | ||
569 | { true, 4, 5 }, /* subedge 3 of edge 5 */ | ||
570 | { true, 4, 4 }, /* subedge 4 of edge 5 */ | ||
571 | }; | ||
572 | static const struct MapEntry hexmap_F[] = { | ||
573 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
574 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
575 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
576 | { false, 1, 3 }, /* edge 3 of hex 0 (F) */ | ||
577 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
578 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
579 | { true, 0, 2 }, /* edge 0 of hex 1 (P) */ | ||
580 | { true, 3, 4 }, /* edge 1 of hex 1 (P) */ | ||
581 | { false, 3, 0 }, /* edge 2 of hex 1 (P) */ | ||
582 | { false, 2, 1 }, /* edge 3 of hex 1 (P) */ | ||
583 | { false, 2, 0 }, /* edge 4 of hex 1 (P) */ | ||
584 | { false, 1, 4 }, /* edge 5 of hex 1 (P) */ | ||
585 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
586 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
587 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
588 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
589 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
590 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
591 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
592 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
593 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
594 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
595 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
596 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
597 | { true, 5, 2 }, /* edge 0 of hex 4 (Y) */ | ||
598 | { true, 2, 2 }, /* edge 1 of hex 4 (Y) */ | ||
599 | { false, 0, 0 }, /* edge 2 of hex 4 (Y) */ | ||
600 | { false, 5, 4 }, /* edge 3 of hex 4 (Y) */ | ||
601 | { false, 5, 3 }, /* edge 4 of hex 4 (Y) */ | ||
602 | { false, 5, 2 }, /* edge 5 of hex 4 (Y) */ | ||
603 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
604 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
605 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
606 | { false, 5, 1 }, /* edge 3 of hex 5 (D) */ | ||
607 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
608 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
609 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
610 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
611 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
612 | { false, 4, 0 }, /* edge 3 of hex 6 (F) */ | ||
613 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
614 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
615 | { true, 6, 2 }, /* edge 0 of hex 7 (Y) */ | ||
616 | { true, 5, 4 }, /* edge 1 of hex 7 (Y) */ | ||
617 | { false, 5, 0 }, /* edge 2 of hex 7 (Y) */ | ||
618 | { false, 4, 3 }, /* edge 3 of hex 7 (Y) */ | ||
619 | { false, 4, 2 }, /* edge 4 of hex 7 (Y) */ | ||
620 | { false, 4, 1 }, /* edge 5 of hex 7 (Y) */ | ||
621 | }; | ||
622 | static const struct MapEdge hexedges_F[] = { | ||
623 | { 0, 2 }, | ||
624 | { 2, 5 }, | ||
625 | { 7, 2 }, | ||
626 | { 9, 4 }, | ||
627 | { 13, 4 }, | ||
628 | { 17, 5 }, | ||
629 | }; | ||
630 | static const struct MapEntry hexin_F[] = { | ||
631 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
632 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
633 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
634 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
635 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
636 | { true, 0, 3 }, /* subedge 3 of edge 1 */ | ||
637 | { true, 1, 5 }, /* subedge 4 of edge 1 */ | ||
638 | { true, 1, 4 }, /* subedge 0 of edge 2 */ | ||
639 | { true, 1, 3 }, /* subedge 1 of edge 2 */ | ||
640 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
641 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
642 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
643 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
644 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
645 | { true, 7, 5 }, /* subedge 1 of edge 4 */ | ||
646 | { true, 7, 4 }, /* subedge 2 of edge 4 */ | ||
647 | { true, 7, 3 }, /* subedge 3 of edge 4 */ | ||
648 | { true, 7, 2 }, /* subedge 0 of edge 5 */ | ||
649 | { true, 5, 3 }, /* subedge 1 of edge 5 */ | ||
650 | { true, 4, 5 }, /* subedge 2 of edge 5 */ | ||
651 | { true, 4, 4 }, /* subedge 3 of edge 5 */ | ||
652 | { true, 4, 3 }, /* subedge 4 of edge 5 */ | ||
653 | }; | ||
654 | static const struct MapEntry hexmap_Y[] = { | ||
655 | { true, 2, 5 }, /* edge 0 of hex 0 (F) */ | ||
656 | { true, 3, 5 }, /* edge 1 of hex 0 (F) */ | ||
657 | { true, 1, 0 }, /* edge 2 of hex 0 (F) */ | ||
658 | { false, 2, 0 }, /* edge 3 of hex 0 (F) */ | ||
659 | { false, 1, 2 }, /* edge 4 of hex 0 (F) */ | ||
660 | { false, 1, 1 }, /* edge 5 of hex 0 (F) */ | ||
661 | { true, 0, 2 }, /* edge 0 of hex 1 (Y) */ | ||
662 | { true, 3, 4 }, /* edge 1 of hex 1 (Y) */ | ||
663 | { false, 3, 0 }, /* edge 2 of hex 1 (Y) */ | ||
664 | { false, 2, 3 }, /* edge 3 of hex 1 (Y) */ | ||
665 | { false, 2, 2 }, /* edge 4 of hex 1 (Y) */ | ||
666 | { false, 2, 1 }, /* edge 5 of hex 1 (Y) */ | ||
667 | { false, 1, 0 }, /* edge 0 of hex 2 (G) */ | ||
668 | { false, 0, 1 }, /* edge 1 of hex 2 (G) */ | ||
669 | { true, 4, 1 }, /* edge 2 of hex 2 (G) */ | ||
670 | { true, 5, 1 }, /* edge 3 of hex 2 (G) */ | ||
671 | { true, 3, 0 }, /* edge 4 of hex 2 (G) */ | ||
672 | { true, 0, 0 }, /* edge 5 of hex 2 (G) */ | ||
673 | { true, 2, 4 }, /* edge 0 of hex 3 (S) */ | ||
674 | { true, 5, 0 }, /* edge 1 of hex 3 (S) */ | ||
675 | { true, 6, 0 }, /* edge 2 of hex 3 (S) */ | ||
676 | { false, 3, 1 }, /* edge 3 of hex 3 (S) */ | ||
677 | { true, 1, 1 }, /* edge 4 of hex 3 (S) */ | ||
678 | { true, 0, 1 }, /* edge 5 of hex 3 (S) */ | ||
679 | { true, 5, 2 }, /* edge 0 of hex 4 (Y) */ | ||
680 | { true, 2, 2 }, /* edge 1 of hex 4 (Y) */ | ||
681 | { false, 0, 0 }, /* edge 2 of hex 4 (Y) */ | ||
682 | { false, 5, 4 }, /* edge 3 of hex 4 (Y) */ | ||
683 | { false, 5, 3 }, /* edge 4 of hex 4 (Y) */ | ||
684 | { false, 5, 2 }, /* edge 5 of hex 4 (Y) */ | ||
685 | { true, 3, 1 }, /* edge 0 of hex 5 (D) */ | ||
686 | { true, 2, 3 }, /* edge 1 of hex 5 (D) */ | ||
687 | { true, 4, 0 }, /* edge 2 of hex 5 (D) */ | ||
688 | { false, 5, 1 }, /* edge 3 of hex 5 (D) */ | ||
689 | { true, 7, 1 }, /* edge 4 of hex 5 (D) */ | ||
690 | { true, 6, 1 }, /* edge 5 of hex 5 (D) */ | ||
691 | { true, 3, 2 }, /* edge 0 of hex 6 (F) */ | ||
692 | { true, 5, 5 }, /* edge 1 of hex 6 (F) */ | ||
693 | { true, 7, 0 }, /* edge 2 of hex 6 (F) */ | ||
694 | { false, 4, 0 }, /* edge 3 of hex 6 (F) */ | ||
695 | { false, 3, 3 }, /* edge 4 of hex 6 (F) */ | ||
696 | { false, 3, 2 }, /* edge 5 of hex 6 (F) */ | ||
697 | { true, 6, 2 }, /* edge 0 of hex 7 (Y) */ | ||
698 | { true, 5, 4 }, /* edge 1 of hex 7 (Y) */ | ||
699 | { false, 5, 0 }, /* edge 2 of hex 7 (Y) */ | ||
700 | { false, 4, 3 }, /* edge 3 of hex 7 (Y) */ | ||
701 | { false, 4, 2 }, /* edge 4 of hex 7 (Y) */ | ||
702 | { false, 4, 1 }, /* edge 5 of hex 7 (Y) */ | ||
703 | }; | ||
704 | static const struct MapEdge hexedges_Y[] = { | ||
705 | { 0, 2 }, | ||
706 | { 2, 3 }, | ||
707 | { 5, 4 }, | ||
708 | { 9, 4 }, | ||
709 | { 13, 4 }, | ||
710 | { 17, 5 }, | ||
711 | }; | ||
712 | static const struct MapEntry hexin_Y[] = { | ||
713 | { true, 4, 2 }, /* subedge 0 of edge 0 */ | ||
714 | { true, 2, 1 }, /* subedge 1 of edge 0 */ | ||
715 | { true, 2, 0 }, /* subedge 0 of edge 1 */ | ||
716 | { true, 0, 5 }, /* subedge 1 of edge 1 */ | ||
717 | { true, 0, 4 }, /* subedge 2 of edge 1 */ | ||
718 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
719 | { true, 1, 5 }, /* subedge 1 of edge 2 */ | ||
720 | { true, 1, 4 }, /* subedge 2 of edge 2 */ | ||
721 | { true, 1, 3 }, /* subedge 3 of edge 2 */ | ||
722 | { true, 1, 2 }, /* subedge 0 of edge 3 */ | ||
723 | { true, 3, 3 }, /* subedge 1 of edge 3 */ | ||
724 | { true, 6, 5 }, /* subedge 2 of edge 3 */ | ||
725 | { true, 6, 4 }, /* subedge 3 of edge 3 */ | ||
726 | { true, 6, 3 }, /* subedge 0 of edge 4 */ | ||
727 | { true, 7, 5 }, /* subedge 1 of edge 4 */ | ||
728 | { true, 7, 4 }, /* subedge 2 of edge 4 */ | ||
729 | { true, 7, 3 }, /* subedge 3 of edge 4 */ | ||
730 | { true, 7, 2 }, /* subedge 0 of edge 5 */ | ||
731 | { true, 5, 3 }, /* subedge 1 of edge 5 */ | ||
732 | { true, 4, 5 }, /* subedge 2 of edge 5 */ | ||
733 | { true, 4, 4 }, /* subedge 3 of edge 5 */ | ||
734 | { true, 4, 3 }, /* subedge 4 of edge 5 */ | ||
735 | }; | ||
736 | static const struct MapEntry specmap_G[] = { | ||
737 | { false, 2, 2 }, /* edge 0 of Spectre 0 */ | ||
738 | { false, 2, 1 }, /* edge 1 of Spectre 0 */ | ||
739 | { false, 2, 0 }, /* edge 2 of Spectre 0 */ | ||
740 | { false, 1, 2 }, /* edge 3 of Spectre 0 */ | ||
741 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
742 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
743 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
744 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
745 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
746 | { false, 5, 2 }, /* edge 9 of Spectre 0 */ | ||
747 | { true, 1, 7 }, /* edge 10 of Spectre 0 */ | ||
748 | { true, 1, 6 }, /* edge 11 of Spectre 0 */ | ||
749 | { true, 1, 5 }, /* edge 12 of Spectre 0 */ | ||
750 | { true, 1, 4 }, /* edge 13 of Spectre 0 */ | ||
751 | { false, 4, 1 }, /* edge 0 of Spectre 1 */ | ||
752 | { false, 4, 0 }, /* edge 1 of Spectre 1 */ | ||
753 | { false, 3, 1 }, /* edge 2 of Spectre 1 */ | ||
754 | { false, 3, 0 }, /* edge 3 of Spectre 1 */ | ||
755 | { true, 0, 13 }, /* edge 4 of Spectre 1 */ | ||
756 | { true, 0, 12 }, /* edge 5 of Spectre 1 */ | ||
757 | { true, 0, 11 }, /* edge 6 of Spectre 1 */ | ||
758 | { true, 0, 10 }, /* edge 7 of Spectre 1 */ | ||
759 | { false, 5, 1 }, /* edge 8 of Spectre 1 */ | ||
760 | { false, 5, 0 }, /* edge 9 of Spectre 1 */ | ||
761 | { false, 4, 5 }, /* edge 10 of Spectre 1 */ | ||
762 | { false, 4, 4 }, /* edge 11 of Spectre 1 */ | ||
763 | { false, 4, 3 }, /* edge 12 of Spectre 1 */ | ||
764 | { false, 4, 2 }, /* edge 13 of Spectre 1 */ | ||
765 | }; | ||
766 | static const struct MapEdge specedges_G[] = { | ||
767 | { 0, 3 }, | ||
768 | { 3, 3 }, | ||
769 | { 6, 3 }, | ||
770 | { 9, 2 }, | ||
771 | { 11, 6 }, | ||
772 | { 17, 3 }, | ||
773 | }; | ||
774 | static const struct MapEntry specin_G[] = { | ||
775 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
776 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
777 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
778 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
779 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
780 | { true, 0, 3 }, /* subedge 2 of edge 1 */ | ||
781 | { true, 0, 2 }, /* subedge 0 of edge 2 */ | ||
782 | { true, 0, 1 }, /* subedge 1 of edge 2 */ | ||
783 | { true, 0, 0 }, /* subedge 2 of edge 2 */ | ||
784 | { true, 1, 3 }, /* subedge 0 of edge 3 */ | ||
785 | { true, 1, 2 }, /* subedge 1 of edge 3 */ | ||
786 | { true, 1, 1 }, /* subedge 0 of edge 4 */ | ||
787 | { true, 1, 0 }, /* subedge 1 of edge 4 */ | ||
788 | { true, 1, 13 }, /* subedge 2 of edge 4 */ | ||
789 | { true, 1, 12 }, /* subedge 3 of edge 4 */ | ||
790 | { true, 1, 11 }, /* subedge 4 of edge 4 */ | ||
791 | { true, 1, 10 }, /* subedge 5 of edge 4 */ | ||
792 | { true, 1, 9 }, /* subedge 0 of edge 5 */ | ||
793 | { true, 1, 8 }, /* subedge 1 of edge 5 */ | ||
794 | { true, 0, 9 }, /* subedge 2 of edge 5 */ | ||
795 | }; | ||
796 | static const struct MapEntry specmap_D[] = { | ||
797 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
798 | { false, 2, 2 }, /* edge 1 of Spectre 0 */ | ||
799 | { false, 2, 1 }, /* edge 2 of Spectre 0 */ | ||
800 | { false, 2, 0 }, /* edge 3 of Spectre 0 */ | ||
801 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
802 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
803 | { false, 0, 1 }, /* edge 6 of Spectre 0 */ | ||
804 | { false, 0, 0 }, /* edge 7 of Spectre 0 */ | ||
805 | { false, 5, 1 }, /* edge 8 of Spectre 0 */ | ||
806 | { false, 5, 0 }, /* edge 9 of Spectre 0 */ | ||
807 | { false, 4, 2 }, /* edge 10 of Spectre 0 */ | ||
808 | { false, 4, 1 }, /* edge 11 of Spectre 0 */ | ||
809 | { false, 4, 0 }, /* edge 12 of Spectre 0 */ | ||
810 | { false, 3, 1 }, /* edge 13 of Spectre 0 */ | ||
811 | }; | ||
812 | static const struct MapEdge specedges_D[] = { | ||
813 | { 0, 2 }, | ||
814 | { 2, 2 }, | ||
815 | { 4, 3 }, | ||
816 | { 7, 2 }, | ||
817 | { 9, 3 }, | ||
818 | { 12, 2 }, | ||
819 | }; | ||
820 | static const struct MapEntry specin_D[] = { | ||
821 | { true, 0, 7 }, /* subedge 0 of edge 0 */ | ||
822 | { true, 0, 6 }, /* subedge 1 of edge 0 */ | ||
823 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
824 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
825 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
826 | { true, 0, 2 }, /* subedge 1 of edge 2 */ | ||
827 | { true, 0, 1 }, /* subedge 2 of edge 2 */ | ||
828 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
829 | { true, 0, 13 }, /* subedge 1 of edge 3 */ | ||
830 | { true, 0, 12 }, /* subedge 0 of edge 4 */ | ||
831 | { true, 0, 11 }, /* subedge 1 of edge 4 */ | ||
832 | { true, 0, 10 }, /* subedge 2 of edge 4 */ | ||
833 | { true, 0, 9 }, /* subedge 0 of edge 5 */ | ||
834 | { true, 0, 8 }, /* subedge 1 of edge 5 */ | ||
835 | }; | ||
836 | static const struct MapEntry specmap_J[] = { | ||
837 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
838 | { false, 2, 2 }, /* edge 1 of Spectre 0 */ | ||
839 | { false, 2, 1 }, /* edge 2 of Spectre 0 */ | ||
840 | { false, 2, 0 }, /* edge 3 of Spectre 0 */ | ||
841 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
842 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
843 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
844 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
845 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
846 | { false, 5, 1 }, /* edge 9 of Spectre 0 */ | ||
847 | { false, 5, 0 }, /* edge 10 of Spectre 0 */ | ||
848 | { false, 4, 2 }, /* edge 11 of Spectre 0 */ | ||
849 | { false, 4, 1 }, /* edge 12 of Spectre 0 */ | ||
850 | { false, 4, 0 }, /* edge 13 of Spectre 0 */ | ||
851 | }; | ||
852 | static const struct MapEdge specedges_J[] = { | ||
853 | { 0, 3 }, | ||
854 | { 3, 2 }, | ||
855 | { 5, 3 }, | ||
856 | { 8, 1 }, | ||
857 | { 9, 3 }, | ||
858 | { 12, 2 }, | ||
859 | }; | ||
860 | static const struct MapEntry specin_J[] = { | ||
861 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
862 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
863 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
864 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
865 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
866 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
867 | { true, 0, 2 }, /* subedge 1 of edge 2 */ | ||
868 | { true, 0, 1 }, /* subedge 2 of edge 2 */ | ||
869 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
870 | { true, 0, 13 }, /* subedge 0 of edge 4 */ | ||
871 | { true, 0, 12 }, /* subedge 1 of edge 4 */ | ||
872 | { true, 0, 11 }, /* subedge 2 of edge 4 */ | ||
873 | { true, 0, 10 }, /* subedge 0 of edge 5 */ | ||
874 | { true, 0, 9 }, /* subedge 1 of edge 5 */ | ||
875 | }; | ||
876 | static const struct MapEntry specmap_L[] = { | ||
877 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
878 | { false, 2, 2 }, /* edge 1 of Spectre 0 */ | ||
879 | { false, 2, 1 }, /* edge 2 of Spectre 0 */ | ||
880 | { false, 2, 0 }, /* edge 3 of Spectre 0 */ | ||
881 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
882 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
883 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
884 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
885 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
886 | { false, 5, 0 }, /* edge 9 of Spectre 0 */ | ||
887 | { false, 4, 2 }, /* edge 10 of Spectre 0 */ | ||
888 | { false, 4, 1 }, /* edge 11 of Spectre 0 */ | ||
889 | { false, 4, 0 }, /* edge 12 of Spectre 0 */ | ||
890 | { false, 3, 1 }, /* edge 13 of Spectre 0 */ | ||
891 | }; | ||
892 | static const struct MapEdge specedges_L[] = { | ||
893 | { 0, 3 }, | ||
894 | { 3, 2 }, | ||
895 | { 5, 3 }, | ||
896 | { 8, 2 }, | ||
897 | { 10, 3 }, | ||
898 | { 13, 1 }, | ||
899 | }; | ||
900 | static const struct MapEntry specin_L[] = { | ||
901 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
902 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
903 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
904 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
905 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
906 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
907 | { true, 0, 2 }, /* subedge 1 of edge 2 */ | ||
908 | { true, 0, 1 }, /* subedge 2 of edge 2 */ | ||
909 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
910 | { true, 0, 13 }, /* subedge 1 of edge 3 */ | ||
911 | { true, 0, 12 }, /* subedge 0 of edge 4 */ | ||
912 | { true, 0, 11 }, /* subedge 1 of edge 4 */ | ||
913 | { true, 0, 10 }, /* subedge 2 of edge 4 */ | ||
914 | { true, 0, 9 }, /* subedge 0 of edge 5 */ | ||
915 | }; | ||
916 | static const struct MapEntry specmap_X[] = { | ||
917 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
918 | { false, 2, 1 }, /* edge 1 of Spectre 0 */ | ||
919 | { false, 2, 0 }, /* edge 2 of Spectre 0 */ | ||
920 | { false, 1, 2 }, /* edge 3 of Spectre 0 */ | ||
921 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
922 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
923 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
924 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
925 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
926 | { false, 5, 1 }, /* edge 9 of Spectre 0 */ | ||
927 | { false, 5, 0 }, /* edge 10 of Spectre 0 */ | ||
928 | { false, 4, 2 }, /* edge 11 of Spectre 0 */ | ||
929 | { false, 4, 1 }, /* edge 12 of Spectre 0 */ | ||
930 | { false, 4, 0 }, /* edge 13 of Spectre 0 */ | ||
931 | }; | ||
932 | static const struct MapEdge specedges_X[] = { | ||
933 | { 0, 3 }, | ||
934 | { 3, 3 }, | ||
935 | { 6, 2 }, | ||
936 | { 8, 1 }, | ||
937 | { 9, 3 }, | ||
938 | { 12, 2 }, | ||
939 | }; | ||
940 | static const struct MapEntry specin_X[] = { | ||
941 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
942 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
943 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
944 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
945 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
946 | { true, 0, 3 }, /* subedge 2 of edge 1 */ | ||
947 | { true, 0, 2 }, /* subedge 0 of edge 2 */ | ||
948 | { true, 0, 1 }, /* subedge 1 of edge 2 */ | ||
949 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
950 | { true, 0, 13 }, /* subedge 0 of edge 4 */ | ||
951 | { true, 0, 12 }, /* subedge 1 of edge 4 */ | ||
952 | { true, 0, 11 }, /* subedge 2 of edge 4 */ | ||
953 | { true, 0, 10 }, /* subedge 0 of edge 5 */ | ||
954 | { true, 0, 9 }, /* subedge 1 of edge 5 */ | ||
955 | }; | ||
956 | static const struct MapEntry specmap_P[] = { | ||
957 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
958 | { false, 2, 1 }, /* edge 1 of Spectre 0 */ | ||
959 | { false, 2, 0 }, /* edge 2 of Spectre 0 */ | ||
960 | { false, 1, 2 }, /* edge 3 of Spectre 0 */ | ||
961 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
962 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
963 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
964 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
965 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
966 | { false, 5, 0 }, /* edge 9 of Spectre 0 */ | ||
967 | { false, 4, 2 }, /* edge 10 of Spectre 0 */ | ||
968 | { false, 4, 1 }, /* edge 11 of Spectre 0 */ | ||
969 | { false, 4, 0 }, /* edge 12 of Spectre 0 */ | ||
970 | { false, 3, 1 }, /* edge 13 of Spectre 0 */ | ||
971 | }; | ||
972 | static const struct MapEdge specedges_P[] = { | ||
973 | { 0, 3 }, | ||
974 | { 3, 3 }, | ||
975 | { 6, 2 }, | ||
976 | { 8, 2 }, | ||
977 | { 10, 3 }, | ||
978 | { 13, 1 }, | ||
979 | }; | ||
980 | static const struct MapEntry specin_P[] = { | ||
981 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
982 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
983 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
984 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
985 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
986 | { true, 0, 3 }, /* subedge 2 of edge 1 */ | ||
987 | { true, 0, 2 }, /* subedge 0 of edge 2 */ | ||
988 | { true, 0, 1 }, /* subedge 1 of edge 2 */ | ||
989 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
990 | { true, 0, 13 }, /* subedge 1 of edge 3 */ | ||
991 | { true, 0, 12 }, /* subedge 0 of edge 4 */ | ||
992 | { true, 0, 11 }, /* subedge 1 of edge 4 */ | ||
993 | { true, 0, 10 }, /* subedge 2 of edge 4 */ | ||
994 | { true, 0, 9 }, /* subedge 0 of edge 5 */ | ||
995 | }; | ||
996 | static const struct MapEntry specmap_S[] = { | ||
997 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
998 | { false, 2, 2 }, /* edge 1 of Spectre 0 */ | ||
999 | { false, 2, 1 }, /* edge 2 of Spectre 0 */ | ||
1000 | { false, 2, 0 }, /* edge 3 of Spectre 0 */ | ||
1001 | { false, 0, 3 }, /* edge 4 of Spectre 0 */ | ||
1002 | { false, 0, 2 }, /* edge 5 of Spectre 0 */ | ||
1003 | { false, 0, 1 }, /* edge 6 of Spectre 0 */ | ||
1004 | { false, 0, 0 }, /* edge 7 of Spectre 0 */ | ||
1005 | { false, 5, 1 }, /* edge 8 of Spectre 0 */ | ||
1006 | { false, 5, 0 }, /* edge 9 of Spectre 0 */ | ||
1007 | { false, 4, 2 }, /* edge 10 of Spectre 0 */ | ||
1008 | { false, 4, 1 }, /* edge 11 of Spectre 0 */ | ||
1009 | { false, 4, 0 }, /* edge 12 of Spectre 0 */ | ||
1010 | { false, 3, 1 }, /* edge 13 of Spectre 0 */ | ||
1011 | }; | ||
1012 | static const struct MapEdge specedges_S[] = { | ||
1013 | { 0, 6 }, | ||
1014 | { 6, 2 }, | ||
1015 | { 8, 3 }, | ||
1016 | { 11, 2 }, | ||
1017 | { 13, 3 }, | ||
1018 | { 16, 2 }, | ||
1019 | }; | ||
1020 | static const struct MapEntry specin_S[] = { | ||
1021 | { true, 0, 7 }, /* subedge 0 of edge 0 */ | ||
1022 | { true, 0, 6 }, /* subedge 1 of edge 0 */ | ||
1023 | { true, 0, 5 }, /* subedge 2 of edge 0 */ | ||
1024 | { true, 0, 4 }, /* subedge 3 of edge 0 */ | ||
1025 | { false, 1, 1 }, /* subedge 4 of edge 0 */ | ||
1026 | { false, 1, 0 }, /* subedge 5 of edge 0 */ | ||
1027 | { false, 0, 5 }, /* subedge 0 of edge 1 */ | ||
1028 | { false, 0, 4 }, /* subedge 1 of edge 1 */ | ||
1029 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
1030 | { true, 0, 2 }, /* subedge 1 of edge 2 */ | ||
1031 | { true, 0, 1 }, /* subedge 2 of edge 2 */ | ||
1032 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
1033 | { true, 0, 13 }, /* subedge 1 of edge 3 */ | ||
1034 | { true, 0, 12 }, /* subedge 0 of edge 4 */ | ||
1035 | { true, 0, 11 }, /* subedge 1 of edge 4 */ | ||
1036 | { true, 0, 10 }, /* subedge 2 of edge 4 */ | ||
1037 | { true, 0, 9 }, /* subedge 0 of edge 5 */ | ||
1038 | { true, 0, 8 }, /* subedge 1 of edge 5 */ | ||
1039 | }; | ||
1040 | static const struct MapEntry specmap_F[] = { | ||
1041 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
1042 | { false, 2, 2 }, /* edge 1 of Spectre 0 */ | ||
1043 | { false, 2, 1 }, /* edge 2 of Spectre 0 */ | ||
1044 | { false, 2, 0 }, /* edge 3 of Spectre 0 */ | ||
1045 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
1046 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
1047 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
1048 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
1049 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
1050 | { false, 5, 1 }, /* edge 9 of Spectre 0 */ | ||
1051 | { false, 5, 0 }, /* edge 10 of Spectre 0 */ | ||
1052 | { false, 4, 1 }, /* edge 11 of Spectre 0 */ | ||
1053 | { false, 4, 0 }, /* edge 12 of Spectre 0 */ | ||
1054 | { false, 3, 1 }, /* edge 13 of Spectre 0 */ | ||
1055 | }; | ||
1056 | static const struct MapEdge specedges_F[] = { | ||
1057 | { 0, 3 }, | ||
1058 | { 3, 2 }, | ||
1059 | { 5, 3 }, | ||
1060 | { 8, 2 }, | ||
1061 | { 10, 2 }, | ||
1062 | { 12, 2 }, | ||
1063 | }; | ||
1064 | static const struct MapEntry specin_F[] = { | ||
1065 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
1066 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
1067 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
1068 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
1069 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
1070 | { true, 0, 3 }, /* subedge 0 of edge 2 */ | ||
1071 | { true, 0, 2 }, /* subedge 1 of edge 2 */ | ||
1072 | { true, 0, 1 }, /* subedge 2 of edge 2 */ | ||
1073 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
1074 | { true, 0, 13 }, /* subedge 1 of edge 3 */ | ||
1075 | { true, 0, 12 }, /* subedge 0 of edge 4 */ | ||
1076 | { true, 0, 11 }, /* subedge 1 of edge 4 */ | ||
1077 | { true, 0, 10 }, /* subedge 0 of edge 5 */ | ||
1078 | { true, 0, 9 }, /* subedge 1 of edge 5 */ | ||
1079 | }; | ||
1080 | static const struct MapEntry specmap_Y[] = { | ||
1081 | { false, 3, 0 }, /* edge 0 of Spectre 0 */ | ||
1082 | { false, 2, 1 }, /* edge 1 of Spectre 0 */ | ||
1083 | { false, 2, 0 }, /* edge 2 of Spectre 0 */ | ||
1084 | { false, 1, 2 }, /* edge 3 of Spectre 0 */ | ||
1085 | { false, 1, 1 }, /* edge 4 of Spectre 0 */ | ||
1086 | { false, 1, 0 }, /* edge 5 of Spectre 0 */ | ||
1087 | { false, 0, 2 }, /* edge 6 of Spectre 0 */ | ||
1088 | { false, 0, 1 }, /* edge 7 of Spectre 0 */ | ||
1089 | { false, 0, 0 }, /* edge 8 of Spectre 0 */ | ||
1090 | { false, 5, 1 }, /* edge 9 of Spectre 0 */ | ||
1091 | { false, 5, 0 }, /* edge 10 of Spectre 0 */ | ||
1092 | { false, 4, 1 }, /* edge 11 of Spectre 0 */ | ||
1093 | { false, 4, 0 }, /* edge 12 of Spectre 0 */ | ||
1094 | { false, 3, 1 }, /* edge 13 of Spectre 0 */ | ||
1095 | }; | ||
1096 | static const struct MapEdge specedges_Y[] = { | ||
1097 | { 0, 3 }, | ||
1098 | { 3, 3 }, | ||
1099 | { 6, 2 }, | ||
1100 | { 8, 2 }, | ||
1101 | { 10, 2 }, | ||
1102 | { 12, 2 }, | ||
1103 | }; | ||
1104 | static const struct MapEntry specin_Y[] = { | ||
1105 | { true, 0, 8 }, /* subedge 0 of edge 0 */ | ||
1106 | { true, 0, 7 }, /* subedge 1 of edge 0 */ | ||
1107 | { true, 0, 6 }, /* subedge 2 of edge 0 */ | ||
1108 | { true, 0, 5 }, /* subedge 0 of edge 1 */ | ||
1109 | { true, 0, 4 }, /* subedge 1 of edge 1 */ | ||
1110 | { true, 0, 3 }, /* subedge 2 of edge 1 */ | ||
1111 | { true, 0, 2 }, /* subedge 0 of edge 2 */ | ||
1112 | { true, 0, 1 }, /* subedge 1 of edge 2 */ | ||
1113 | { true, 0, 0 }, /* subedge 0 of edge 3 */ | ||
1114 | { true, 0, 13 }, /* subedge 1 of edge 3 */ | ||
1115 | { true, 0, 12 }, /* subedge 0 of edge 4 */ | ||
1116 | { true, 0, 11 }, /* subedge 1 of edge 4 */ | ||
1117 | { true, 0, 10 }, /* subedge 0 of edge 5 */ | ||
1118 | { true, 0, 9 }, /* subedge 1 of edge 5 */ | ||
1119 | }; | ||
1120 | static const struct Possibility poss_G[] = { | ||
1121 | { HEX_G, 2, PROB_G }, | ||
1122 | { HEX_D, 2, PROB_D }, | ||
1123 | { HEX_J, 2, PROB_J }, | ||
1124 | { HEX_L, 2, PROB_L }, | ||
1125 | { HEX_X, 2, PROB_X }, | ||
1126 | { HEX_P, 2, PROB_P }, | ||
1127 | { HEX_S, 2, PROB_S }, | ||
1128 | { HEX_F, 2, PROB_F }, | ||
1129 | { HEX_Y, 2, PROB_Y }, | ||
1130 | }; | ||
1131 | static const struct Possibility poss_D[] = { | ||
1132 | { HEX_G, 5, PROB_G }, | ||
1133 | { HEX_D, 5, PROB_D }, | ||
1134 | { HEX_J, 5, PROB_J }, | ||
1135 | { HEX_L, 5, PROB_L }, | ||
1136 | { HEX_X, 5, PROB_X }, | ||
1137 | { HEX_P, 5, PROB_P }, | ||
1138 | { HEX_S, 5, PROB_S }, | ||
1139 | { HEX_F, 5, PROB_F }, | ||
1140 | { HEX_Y, 5, PROB_Y }, | ||
1141 | }; | ||
1142 | static const struct Possibility poss_J[] = { | ||
1143 | { HEX_G, 6, PROB_G }, | ||
1144 | }; | ||
1145 | static const struct Possibility poss_L[] = { | ||
1146 | { HEX_S, 0, PROB_S }, | ||
1147 | }; | ||
1148 | static const struct Possibility poss_X[] = { | ||
1149 | { HEX_G, 1, PROB_G }, | ||
1150 | { HEX_D, 4, PROB_D }, | ||
1151 | { HEX_D, 7, PROB_D }, | ||
1152 | { HEX_L, 7, PROB_L }, | ||
1153 | { HEX_P, 7, PROB_P }, | ||
1154 | { HEX_S, 4, PROB_S }, | ||
1155 | { HEX_S, 7, PROB_S }, | ||
1156 | }; | ||
1157 | static const struct Possibility poss_P[] = { | ||
1158 | { HEX_G, 4, PROB_G }, | ||
1159 | { HEX_D, 1, PROB_D }, | ||
1160 | { HEX_J, 1, PROB_J }, | ||
1161 | { HEX_J, 7, PROB_J }, | ||
1162 | { HEX_L, 1, PROB_L }, | ||
1163 | { HEX_X, 7, PROB_X }, | ||
1164 | { HEX_S, 1, PROB_S }, | ||
1165 | { HEX_F, 1, PROB_F }, | ||
1166 | }; | ||
1167 | static const struct Possibility poss_S[] = { | ||
1168 | { HEX_G, 3, PROB_G }, | ||
1169 | { HEX_D, 3, PROB_D }, | ||
1170 | { HEX_J, 3, PROB_J }, | ||
1171 | { HEX_L, 3, PROB_L }, | ||
1172 | { HEX_X, 3, PROB_X }, | ||
1173 | { HEX_P, 3, PROB_P }, | ||
1174 | { HEX_S, 3, PROB_S }, | ||
1175 | { HEX_F, 3, PROB_F }, | ||
1176 | { HEX_Y, 3, PROB_Y }, | ||
1177 | }; | ||
1178 | static const struct Possibility poss_F[] = { | ||
1179 | { HEX_G, 0, PROB_G }, | ||
1180 | { HEX_D, 0, PROB_D }, | ||
1181 | { HEX_D, 6, PROB_D }, | ||
1182 | { HEX_J, 0, PROB_J }, | ||
1183 | { HEX_J, 6, PROB_J }, | ||
1184 | { HEX_L, 0, PROB_L }, | ||
1185 | { HEX_L, 6, PROB_L }, | ||
1186 | { HEX_X, 0, PROB_X }, | ||
1187 | { HEX_X, 6, PROB_X }, | ||
1188 | { HEX_P, 0, PROB_P }, | ||
1189 | { HEX_P, 6, PROB_P }, | ||
1190 | { HEX_S, 6, PROB_S }, | ||
1191 | { HEX_F, 0, PROB_F }, | ||
1192 | { HEX_F, 6, PROB_F }, | ||
1193 | { HEX_Y, 0, PROB_Y }, | ||
1194 | { HEX_Y, 6, PROB_Y }, | ||
1195 | }; | ||
1196 | static const struct Possibility poss_Y[] = { | ||
1197 | { HEX_J, 4, PROB_J }, | ||
1198 | { HEX_L, 4, PROB_L }, | ||
1199 | { HEX_X, 1, PROB_X }, | ||
1200 | { HEX_X, 4, PROB_X }, | ||
1201 | { HEX_P, 1, PROB_P }, | ||
1202 | { HEX_P, 4, PROB_P }, | ||
1203 | { HEX_F, 4, PROB_F }, | ||
1204 | { HEX_F, 7, PROB_F }, | ||
1205 | { HEX_Y, 1, PROB_Y }, | ||
1206 | { HEX_Y, 4, PROB_Y }, | ||
1207 | { HEX_Y, 7, PROB_Y }, | ||
1208 | }; | ||
1209 | static const struct Possibility poss_spectre[] = { | ||
1210 | { HEX_G, 0, PROB_G }, | ||
1211 | { HEX_G, 1, PROB_G }, | ||
1212 | { HEX_D, 0, PROB_D }, | ||
1213 | { HEX_J, 0, PROB_J }, | ||
1214 | { HEX_L, 0, PROB_L }, | ||
1215 | { HEX_X, 0, PROB_X }, | ||
1216 | { HEX_P, 0, PROB_P }, | ||
1217 | { HEX_S, 0, PROB_S }, | ||
1218 | { HEX_F, 0, PROB_F }, | ||
1219 | { HEX_Y, 0, PROB_Y }, | ||
1220 | }; | ||