1/*******************************************************************************
2* Copyright 2019-2021 Intel Corporation
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*******************************************************************************/
16
17/*
18 * When compiling nGEN in C++11 or C++14 mode, this header file should be
19 * #include'd exactly once in your source code.
20 */
21
22#if (defined(NGEN_CPP11) || defined(NGEN_CPP14)) && !defined(NGEN_GLOBAL_REGS)
23
24#include "ngen.hpp"
25
26#define NGEN_REGISTER_DECL_MAIN(CG, PREFIX) \
27PREFIX constexpr ngen::IndirectRegisterFrame CG::indirect; \
28\
29PREFIX constexpr ngen::GRF CG::r0; \
30PREFIX constexpr ngen::GRF CG::r1; \
31PREFIX constexpr ngen::GRF CG::r2; \
32PREFIX constexpr ngen::GRF CG::r3; \
33PREFIX constexpr ngen::GRF CG::r4; \
34PREFIX constexpr ngen::GRF CG::r5; \
35PREFIX constexpr ngen::GRF CG::r6; \
36PREFIX constexpr ngen::GRF CG::r7; \
37PREFIX constexpr ngen::GRF CG::r8; \
38PREFIX constexpr ngen::GRF CG::r9; \
39PREFIX constexpr ngen::GRF CG::r10; \
40PREFIX constexpr ngen::GRF CG::r11; \
41PREFIX constexpr ngen::GRF CG::r12; \
42PREFIX constexpr ngen::GRF CG::r13; \
43PREFIX constexpr ngen::GRF CG::r14; \
44PREFIX constexpr ngen::GRF CG::r15; \
45PREFIX constexpr ngen::GRF CG::r16; \
46PREFIX constexpr ngen::GRF CG::r17; \
47PREFIX constexpr ngen::GRF CG::r18; \
48PREFIX constexpr ngen::GRF CG::r19; \
49PREFIX constexpr ngen::GRF CG::r20; \
50PREFIX constexpr ngen::GRF CG::r21; \
51PREFIX constexpr ngen::GRF CG::r22; \
52PREFIX constexpr ngen::GRF CG::r23; \
53PREFIX constexpr ngen::GRF CG::r24; \
54PREFIX constexpr ngen::GRF CG::r25; \
55PREFIX constexpr ngen::GRF CG::r26; \
56PREFIX constexpr ngen::GRF CG::r27; \
57PREFIX constexpr ngen::GRF CG::r28; \
58PREFIX constexpr ngen::GRF CG::r29; \
59PREFIX constexpr ngen::GRF CG::r30; \
60PREFIX constexpr ngen::GRF CG::r31; \
61PREFIX constexpr ngen::GRF CG::r32; \
62PREFIX constexpr ngen::GRF CG::r33; \
63PREFIX constexpr ngen::GRF CG::r34; \
64PREFIX constexpr ngen::GRF CG::r35; \
65PREFIX constexpr ngen::GRF CG::r36; \
66PREFIX constexpr ngen::GRF CG::r37; \
67PREFIX constexpr ngen::GRF CG::r38; \
68PREFIX constexpr ngen::GRF CG::r39; \
69PREFIX constexpr ngen::GRF CG::r40; \
70PREFIX constexpr ngen::GRF CG::r41; \
71PREFIX constexpr ngen::GRF CG::r42; \
72PREFIX constexpr ngen::GRF CG::r43; \
73PREFIX constexpr ngen::GRF CG::r44; \
74PREFIX constexpr ngen::GRF CG::r45; \
75PREFIX constexpr ngen::GRF CG::r46; \
76PREFIX constexpr ngen::GRF CG::r47; \
77PREFIX constexpr ngen::GRF CG::r48; \
78PREFIX constexpr ngen::GRF CG::r49; \
79PREFIX constexpr ngen::GRF CG::r50; \
80PREFIX constexpr ngen::GRF CG::r51; \
81PREFIX constexpr ngen::GRF CG::r52; \
82PREFIX constexpr ngen::GRF CG::r53; \
83PREFIX constexpr ngen::GRF CG::r54; \
84PREFIX constexpr ngen::GRF CG::r55; \
85PREFIX constexpr ngen::GRF CG::r56; \
86PREFIX constexpr ngen::GRF CG::r57; \
87PREFIX constexpr ngen::GRF CG::r58; \
88PREFIX constexpr ngen::GRF CG::r59; \
89PREFIX constexpr ngen::GRF CG::r60; \
90PREFIX constexpr ngen::GRF CG::r61; \
91PREFIX constexpr ngen::GRF CG::r62; \
92PREFIX constexpr ngen::GRF CG::r63; \
93PREFIX constexpr ngen::GRF CG::r64; \
94PREFIX constexpr ngen::GRF CG::r65; \
95PREFIX constexpr ngen::GRF CG::r66; \
96PREFIX constexpr ngen::GRF CG::r67; \
97PREFIX constexpr ngen::GRF CG::r68; \
98PREFIX constexpr ngen::GRF CG::r69; \
99PREFIX constexpr ngen::GRF CG::r70; \
100PREFIX constexpr ngen::GRF CG::r71; \
101PREFIX constexpr ngen::GRF CG::r72; \
102PREFIX constexpr ngen::GRF CG::r73; \
103PREFIX constexpr ngen::GRF CG::r74; \
104PREFIX constexpr ngen::GRF CG::r75; \
105PREFIX constexpr ngen::GRF CG::r76; \
106PREFIX constexpr ngen::GRF CG::r77; \
107PREFIX constexpr ngen::GRF CG::r78; \
108PREFIX constexpr ngen::GRF CG::r79; \
109PREFIX constexpr ngen::GRF CG::r80; \
110PREFIX constexpr ngen::GRF CG::r81; \
111PREFIX constexpr ngen::GRF CG::r82; \
112PREFIX constexpr ngen::GRF CG::r83; \
113PREFIX constexpr ngen::GRF CG::r84; \
114PREFIX constexpr ngen::GRF CG::r85; \
115PREFIX constexpr ngen::GRF CG::r86; \
116PREFIX constexpr ngen::GRF CG::r87; \
117PREFIX constexpr ngen::GRF CG::r88; \
118PREFIX constexpr ngen::GRF CG::r89; \
119PREFIX constexpr ngen::GRF CG::r90; \
120PREFIX constexpr ngen::GRF CG::r91; \
121PREFIX constexpr ngen::GRF CG::r92; \
122PREFIX constexpr ngen::GRF CG::r93; \
123PREFIX constexpr ngen::GRF CG::r94; \
124PREFIX constexpr ngen::GRF CG::r95; \
125PREFIX constexpr ngen::GRF CG::r96; \
126PREFIX constexpr ngen::GRF CG::r97; \
127PREFIX constexpr ngen::GRF CG::r98; \
128PREFIX constexpr ngen::GRF CG::r99; \
129PREFIX constexpr ngen::GRF CG::r100; \
130PREFIX constexpr ngen::GRF CG::r101; \
131PREFIX constexpr ngen::GRF CG::r102; \
132PREFIX constexpr ngen::GRF CG::r103; \
133PREFIX constexpr ngen::GRF CG::r104; \
134PREFIX constexpr ngen::GRF CG::r105; \
135PREFIX constexpr ngen::GRF CG::r106; \
136PREFIX constexpr ngen::GRF CG::r107; \
137PREFIX constexpr ngen::GRF CG::r108; \
138PREFIX constexpr ngen::GRF CG::r109; \
139PREFIX constexpr ngen::GRF CG::r110; \
140PREFIX constexpr ngen::GRF CG::r111; \
141PREFIX constexpr ngen::GRF CG::r112; \
142PREFIX constexpr ngen::GRF CG::r113; \
143PREFIX constexpr ngen::GRF CG::r114; \
144PREFIX constexpr ngen::GRF CG::r115; \
145PREFIX constexpr ngen::GRF CG::r116; \
146PREFIX constexpr ngen::GRF CG::r117; \
147PREFIX constexpr ngen::GRF CG::r118; \
148PREFIX constexpr ngen::GRF CG::r119; \
149PREFIX constexpr ngen::GRF CG::r120; \
150PREFIX constexpr ngen::GRF CG::r121; \
151PREFIX constexpr ngen::GRF CG::r122; \
152PREFIX constexpr ngen::GRF CG::r123; \
153PREFIX constexpr ngen::GRF CG::r124; \
154PREFIX constexpr ngen::GRF CG::r125; \
155PREFIX constexpr ngen::GRF CG::r126; \
156PREFIX constexpr ngen::GRF CG::r127; \
157\
158PREFIX constexpr ngen::NullRegister CG::null; \
159PREFIX constexpr ngen::AddressRegister CG::a0; \
160PREFIX constexpr ngen::AccumulatorRegister CG::acc0; \
161PREFIX constexpr ngen::AccumulatorRegister CG::acc1; \
162PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc2; \
163PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc3; \
164PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc4; \
165PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc5; \
166PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc6; \
167PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc7; \
168PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc8; \
169PREFIX constexpr ngen::SpecialAccumulatorRegister CG::acc9; \
170PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme0; \
171PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme1; \
172PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme2; \
173PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme3; \
174PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme4; \
175PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme5; \
176PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme6; \
177PREFIX constexpr ngen::SpecialAccumulatorRegister CG::mme7; \
178PREFIX constexpr ngen::SpecialAccumulatorRegister CG::nomme; \
179PREFIX constexpr ngen::SpecialAccumulatorRegister CG::noacc; \
180PREFIX constexpr ngen::FlagRegister CG::f0; \
181PREFIX constexpr ngen::FlagRegister CG::f1; \
182PREFIX constexpr ngen::FlagRegister CG::f0_0; \
183PREFIX constexpr ngen::FlagRegister CG::f0_1; \
184PREFIX constexpr ngen::FlagRegister CG::f1_0; \
185PREFIX constexpr ngen::FlagRegister CG::f1_1; \
186PREFIX constexpr ngen::ChannelEnableRegister CG::ce0; \
187PREFIX constexpr ngen::StackPointerRegister CG::sp; \
188PREFIX constexpr ngen::StateRegister CG::sr0; \
189PREFIX constexpr ngen::StateRegister CG::sr1; \
190PREFIX constexpr ngen::ControlRegister CG::cr0; \
191PREFIX constexpr ngen::NotificationRegister CG::n0; \
192PREFIX constexpr ngen::InstructionPointerRegister CG::ip; \
193PREFIX constexpr ngen::ThreadDependencyRegister CG::tdr0; \
194PREFIX constexpr ngen::PerformanceRegister CG::tm0; \
195PREFIX constexpr ngen::PerformanceRegister CG::tm1; \
196PREFIX constexpr ngen::PerformanceRegister CG::tm2; \
197PREFIX constexpr ngen::PerformanceRegister CG::tm3; \
198PREFIX constexpr ngen::PerformanceRegister CG::tm4; \
199PREFIX constexpr ngen::PerformanceRegister CG::pm0; \
200PREFIX constexpr ngen::PerformanceRegister CG::tp0; \
201PREFIX constexpr ngen::DebugRegister CG::dbg0; \
202PREFIX constexpr ngen::FlowControlRegister CG::fc0; \
203PREFIX constexpr ngen::FlowControlRegister CG::fc1; \
204PREFIX constexpr ngen::FlowControlRegister CG::fc2; \
205PREFIX constexpr ngen::FlowControlRegister CG::fc3; \
206\
207PREFIX constexpr ngen::InstructionModifier CG::NoDDClr; \
208PREFIX constexpr ngen::InstructionModifier CG::NoDDChk; \
209PREFIX constexpr ngen::InstructionModifier CG::AccWrEn; \
210PREFIX constexpr ngen::InstructionModifier CG::NoSrcDepSet; \
211PREFIX constexpr ngen::InstructionModifier CG::Breakpoint; \
212PREFIX constexpr ngen::InstructionModifier CG::sat; \
213PREFIX constexpr ngen::InstructionModifier CG::NoMask; \
214PREFIX constexpr ngen::InstructionModifier CG::AutoSWSB; \
215PREFIX constexpr ngen::InstructionModifier CG::Serialize; \
216PREFIX constexpr ngen::InstructionModifier CG::EOT; \
217PREFIX constexpr ngen::InstructionModifier CG::Align1; \
218PREFIX constexpr ngen::InstructionModifier CG::Align16; \
219PREFIX constexpr ngen::InstructionModifier CG::Atomic; \
220PREFIX constexpr ngen::InstructionModifier CG::Switch; \
221PREFIX constexpr ngen::InstructionModifier CG::NoPreempt; \
222\
223PREFIX constexpr ngen::PredCtrl CG::anyv; \
224PREFIX constexpr ngen::PredCtrl CG::allv; \
225PREFIX constexpr ngen::PredCtrl CG::any2h; \
226PREFIX constexpr ngen::PredCtrl CG::all2h; \
227PREFIX constexpr ngen::PredCtrl CG::any4h; \
228PREFIX constexpr ngen::PredCtrl CG::all4h; \
229PREFIX constexpr ngen::PredCtrl CG::any8h; \
230PREFIX constexpr ngen::PredCtrl CG::all8h; \
231PREFIX constexpr ngen::PredCtrl CG::any16h; \
232PREFIX constexpr ngen::PredCtrl CG::all16h; \
233PREFIX constexpr ngen::PredCtrl CG::any32h; \
234PREFIX constexpr ngen::PredCtrl CG::all32h; \
235\
236PREFIX constexpr ngen::InstructionModifier CG::x_repl; \
237PREFIX constexpr ngen::InstructionModifier CG::y_repl; \
238PREFIX constexpr ngen::InstructionModifier CG::z_repl; \
239PREFIX constexpr ngen::InstructionModifier CG::w_repl; \
240\
241PREFIX constexpr ngen::InstructionModifier CG::ze; \
242PREFIX constexpr ngen::InstructionModifier CG::eq; \
243PREFIX constexpr ngen::InstructionModifier CG::nz; \
244PREFIX constexpr ngen::InstructionModifier CG::ne; \
245PREFIX constexpr ngen::InstructionModifier CG::gt; \
246PREFIX constexpr ngen::InstructionModifier CG::ge; \
247PREFIX constexpr ngen::InstructionModifier CG::lt; \
248PREFIX constexpr ngen::InstructionModifier CG::le; \
249PREFIX constexpr ngen::InstructionModifier CG::ov; \
250PREFIX constexpr ngen::InstructionModifier CG::un; \
251PREFIX constexpr ngen::InstructionModifier CG::eo; \
252\
253PREFIX constexpr ngen::InstructionModifier CG::M0; \
254PREFIX constexpr ngen::InstructionModifier CG::M4; \
255PREFIX constexpr ngen::InstructionModifier CG::M8; \
256PREFIX constexpr ngen::InstructionModifier CG::M12; \
257PREFIX constexpr ngen::InstructionModifier CG::M16; \
258PREFIX constexpr ngen::InstructionModifier CG::M20; \
259PREFIX constexpr ngen::InstructionModifier CG::M24; \
260PREFIX constexpr ngen::InstructionModifier CG::M28; \
261\
262PREFIX constexpr ngen::SBID CG::sb0; \
263PREFIX constexpr ngen::SBID CG::sb1; \
264PREFIX constexpr ngen::SBID CG::sb2; \
265PREFIX constexpr ngen::SBID CG::sb3; \
266PREFIX constexpr ngen::SBID CG::sb4; \
267PREFIX constexpr ngen::SBID CG::sb5; \
268PREFIX constexpr ngen::SBID CG::sb6; \
269PREFIX constexpr ngen::SBID CG::sb7; \
270PREFIX constexpr ngen::SBID CG::sb8; \
271PREFIX constexpr ngen::SBID CG::sb9; \
272PREFIX constexpr ngen::SBID CG::sb10; \
273PREFIX constexpr ngen::SBID CG::sb11; \
274PREFIX constexpr ngen::SBID CG::sb12; \
275PREFIX constexpr ngen::SBID CG::sb13; \
276PREFIX constexpr ngen::SBID CG::sb14; \
277PREFIX constexpr ngen::SBID CG::sb15; \
278\
279PREFIX constexpr ngen::AddressBase CG::A32; \
280PREFIX constexpr ngen::AddressBase CG::A32NC; \
281PREFIX constexpr ngen::AddressBase CG::A64; \
282PREFIX constexpr ngen::AddressBase CG::A64NC; \
283PREFIX constexpr ngen::AddressBase CG::SLM; \
284
285#define NGEN_REGISTER_DECL_EXTRA1(CG,PREFIX) \
286PREFIX constexpr ngen::GRF CG::r128; \
287PREFIX constexpr ngen::GRF CG::r129; \
288PREFIX constexpr ngen::GRF CG::r130; \
289PREFIX constexpr ngen::GRF CG::r131; \
290PREFIX constexpr ngen::GRF CG::r132; \
291PREFIX constexpr ngen::GRF CG::r133; \
292PREFIX constexpr ngen::GRF CG::r134; \
293PREFIX constexpr ngen::GRF CG::r135; \
294PREFIX constexpr ngen::GRF CG::r136; \
295PREFIX constexpr ngen::GRF CG::r137; \
296PREFIX constexpr ngen::GRF CG::r138; \
297PREFIX constexpr ngen::GRF CG::r139; \
298PREFIX constexpr ngen::GRF CG::r140; \
299PREFIX constexpr ngen::GRF CG::r141; \
300PREFIX constexpr ngen::GRF CG::r142; \
301PREFIX constexpr ngen::GRF CG::r143; \
302PREFIX constexpr ngen::GRF CG::r144; \
303PREFIX constexpr ngen::GRF CG::r145; \
304PREFIX constexpr ngen::GRF CG::r146; \
305PREFIX constexpr ngen::GRF CG::r147; \
306PREFIX constexpr ngen::GRF CG::r148; \
307PREFIX constexpr ngen::GRF CG::r149; \
308PREFIX constexpr ngen::GRF CG::r150; \
309PREFIX constexpr ngen::GRF CG::r151; \
310PREFIX constexpr ngen::GRF CG::r152; \
311PREFIX constexpr ngen::GRF CG::r153; \
312PREFIX constexpr ngen::GRF CG::r154; \
313PREFIX constexpr ngen::GRF CG::r155; \
314PREFIX constexpr ngen::GRF CG::r156; \
315PREFIX constexpr ngen::GRF CG::r157; \
316PREFIX constexpr ngen::GRF CG::r158; \
317PREFIX constexpr ngen::GRF CG::r159; \
318PREFIX constexpr ngen::GRF CG::r160; \
319PREFIX constexpr ngen::GRF CG::r161; \
320PREFIX constexpr ngen::GRF CG::r162; \
321PREFIX constexpr ngen::GRF CG::r163; \
322PREFIX constexpr ngen::GRF CG::r164; \
323PREFIX constexpr ngen::GRF CG::r165; \
324PREFIX constexpr ngen::GRF CG::r166; \
325PREFIX constexpr ngen::GRF CG::r167; \
326PREFIX constexpr ngen::GRF CG::r168; \
327PREFIX constexpr ngen::GRF CG::r169; \
328PREFIX constexpr ngen::GRF CG::r170; \
329PREFIX constexpr ngen::GRF CG::r171; \
330PREFIX constexpr ngen::GRF CG::r172; \
331PREFIX constexpr ngen::GRF CG::r173; \
332PREFIX constexpr ngen::GRF CG::r174; \
333PREFIX constexpr ngen::GRF CG::r175; \
334PREFIX constexpr ngen::GRF CG::r176; \
335PREFIX constexpr ngen::GRF CG::r177; \
336PREFIX constexpr ngen::GRF CG::r178; \
337PREFIX constexpr ngen::GRF CG::r179; \
338PREFIX constexpr ngen::GRF CG::r180; \
339PREFIX constexpr ngen::GRF CG::r181; \
340PREFIX constexpr ngen::GRF CG::r182; \
341PREFIX constexpr ngen::GRF CG::r183; \
342PREFIX constexpr ngen::GRF CG::r184; \
343PREFIX constexpr ngen::GRF CG::r185; \
344PREFIX constexpr ngen::GRF CG::r186; \
345PREFIX constexpr ngen::GRF CG::r187; \
346PREFIX constexpr ngen::GRF CG::r188; \
347PREFIX constexpr ngen::GRF CG::r189; \
348PREFIX constexpr ngen::GRF CG::r190; \
349PREFIX constexpr ngen::GRF CG::r191; \
350PREFIX constexpr ngen::GRF CG::r192; \
351PREFIX constexpr ngen::GRF CG::r193; \
352PREFIX constexpr ngen::GRF CG::r194; \
353PREFIX constexpr ngen::GRF CG::r195; \
354PREFIX constexpr ngen::GRF CG::r196; \
355PREFIX constexpr ngen::GRF CG::r197; \
356PREFIX constexpr ngen::GRF CG::r198; \
357PREFIX constexpr ngen::GRF CG::r199; \
358PREFIX constexpr ngen::GRF CG::r200; \
359PREFIX constexpr ngen::GRF CG::r201; \
360PREFIX constexpr ngen::GRF CG::r202; \
361PREFIX constexpr ngen::GRF CG::r203; \
362PREFIX constexpr ngen::GRF CG::r204; \
363PREFIX constexpr ngen::GRF CG::r205; \
364PREFIX constexpr ngen::GRF CG::r206; \
365PREFIX constexpr ngen::GRF CG::r207; \
366PREFIX constexpr ngen::GRF CG::r208; \
367PREFIX constexpr ngen::GRF CG::r209; \
368PREFIX constexpr ngen::GRF CG::r210; \
369PREFIX constexpr ngen::GRF CG::r211; \
370PREFIX constexpr ngen::GRF CG::r212; \
371PREFIX constexpr ngen::GRF CG::r213; \
372PREFIX constexpr ngen::GRF CG::r214; \
373PREFIX constexpr ngen::GRF CG::r215; \
374PREFIX constexpr ngen::GRF CG::r216; \
375PREFIX constexpr ngen::GRF CG::r217; \
376PREFIX constexpr ngen::GRF CG::r218; \
377PREFIX constexpr ngen::GRF CG::r219; \
378PREFIX constexpr ngen::GRF CG::r220; \
379PREFIX constexpr ngen::GRF CG::r221; \
380PREFIX constexpr ngen::GRF CG::r222; \
381PREFIX constexpr ngen::GRF CG::r223; \
382PREFIX constexpr ngen::GRF CG::r224; \
383PREFIX constexpr ngen::GRF CG::r225; \
384PREFIX constexpr ngen::GRF CG::r226; \
385PREFIX constexpr ngen::GRF CG::r227; \
386PREFIX constexpr ngen::GRF CG::r228; \
387PREFIX constexpr ngen::GRF CG::r229; \
388PREFIX constexpr ngen::GRF CG::r230; \
389PREFIX constexpr ngen::GRF CG::r231; \
390PREFIX constexpr ngen::GRF CG::r232; \
391PREFIX constexpr ngen::GRF CG::r233; \
392PREFIX constexpr ngen::GRF CG::r234; \
393PREFIX constexpr ngen::GRF CG::r235; \
394PREFIX constexpr ngen::GRF CG::r236; \
395PREFIX constexpr ngen::GRF CG::r237; \
396PREFIX constexpr ngen::GRF CG::r238; \
397PREFIX constexpr ngen::GRF CG::r239; \
398PREFIX constexpr ngen::GRF CG::r240; \
399PREFIX constexpr ngen::GRF CG::r241; \
400PREFIX constexpr ngen::GRF CG::r242; \
401PREFIX constexpr ngen::GRF CG::r243; \
402PREFIX constexpr ngen::GRF CG::r244; \
403PREFIX constexpr ngen::GRF CG::r245; \
404PREFIX constexpr ngen::GRF CG::r246; \
405PREFIX constexpr ngen::GRF CG::r247; \
406PREFIX constexpr ngen::GRF CG::r248; \
407PREFIX constexpr ngen::GRF CG::r249; \
408PREFIX constexpr ngen::GRF CG::r250; \
409PREFIX constexpr ngen::GRF CG::r251; \
410PREFIX constexpr ngen::GRF CG::r252; \
411PREFIX constexpr ngen::GRF CG::r253; \
412PREFIX constexpr ngen::GRF CG::r254; \
413PREFIX constexpr ngen::GRF CG::r255;
414
415#define NGEN_REGISTER_DECL_EXTRA2(CG,PREFIX) \
416PREFIX constexpr ngen::DataSpecLSC CG::D8; \
417PREFIX constexpr ngen::DataSpecLSC CG::D16; \
418PREFIX constexpr ngen::DataSpecLSC CG::D32; \
419PREFIX constexpr ngen::DataSpecLSC CG::D64; \
420PREFIX constexpr ngen::DataSpecLSC CG::D8U32; \
421PREFIX constexpr ngen::DataSpecLSC CG::D16U32; \
422PREFIX constexpr ngen::DataSpecLSC CG::D8T; \
423PREFIX constexpr ngen::DataSpecLSC CG::D16T; \
424PREFIX constexpr ngen::DataSpecLSC CG::D32T; \
425PREFIX constexpr ngen::DataSpecLSC CG::D64T; \
426PREFIX constexpr ngen::DataSpecLSC CG::D8U32T; \
427PREFIX constexpr ngen::DataSpecLSC CG::D16U32T; \
428PREFIX constexpr ngen::DataSpecLSC CG::V1; \
429PREFIX constexpr ngen::DataSpecLSC CG::V2; \
430PREFIX constexpr ngen::DataSpecLSC CG::V3; \
431PREFIX constexpr ngen::DataSpecLSC CG::V4; \
432PREFIX constexpr ngen::DataSpecLSC CG::V8; \
433PREFIX constexpr ngen::DataSpecLSC CG::V16; \
434PREFIX constexpr ngen::DataSpecLSC CG::V32; \
435PREFIX constexpr ngen::DataSpecLSC CG::V64; \
436PREFIX constexpr ngen::DataSpecLSC CG::V1T; \
437PREFIX constexpr ngen::DataSpecLSC CG::V2T; \
438PREFIX constexpr ngen::DataSpecLSC CG::V3T; \
439PREFIX constexpr ngen::DataSpecLSC CG::V4T; \
440PREFIX constexpr ngen::DataSpecLSC CG::V8T; \
441PREFIX constexpr ngen::DataSpecLSC CG::V16T; \
442PREFIX constexpr ngen::DataSpecLSC CG::V32T; \
443PREFIX constexpr ngen::DataSpecLSC CG::V64T; \
444PREFIX constexpr ngen::DataSpecLSC CG::transpose; \
445PREFIX constexpr ngen::CacheSettingsLSC CG::L1UC_L3UC; \
446PREFIX constexpr ngen::CacheSettingsLSC CG::L1UC_L3C; \
447PREFIX constexpr ngen::CacheSettingsLSC CG::L1C_L3UC; \
448PREFIX constexpr ngen::CacheSettingsLSC CG::L1C_L3C; \
449PREFIX constexpr ngen::CacheSettingsLSC CG::L1S_L3UC; \
450PREFIX constexpr ngen::CacheSettingsLSC CG::L1S_L3C; \
451PREFIX constexpr ngen::CacheSettingsLSC CG::L1IAR_L3C; \
452PREFIX constexpr ngen::CacheSettingsLSC CG::L1UC_L3WB; \
453PREFIX constexpr ngen::CacheSettingsLSC CG::L1WT_L3UC; \
454PREFIX constexpr ngen::CacheSettingsLSC CG::L1WT_L3WB; \
455PREFIX constexpr ngen::CacheSettingsLSC CG::L1S_L3WB; \
456PREFIX constexpr ngen::CacheSettingsLSC CG::L1WB_L3WB;
457
458#define NGEN_REGISTER_DECL_EXTRA3(CG,PREFIX) \
459PREFIX constexpr ngen::PredCtrl CG::any; \
460PREFIX constexpr ngen::PredCtrl CG::all; \
461PREFIX constexpr ngen::FlagRegister CG::f2; \
462PREFIX constexpr ngen::FlagRegister CG::f3; \
463PREFIX constexpr ngen::SBID CG::sb16; \
464PREFIX constexpr ngen::SBID CG::sb17; \
465PREFIX constexpr ngen::SBID CG::sb18; \
466PREFIX constexpr ngen::SBID CG::sb19; \
467PREFIX constexpr ngen::SBID CG::sb20; \
468PREFIX constexpr ngen::SBID CG::sb21; \
469PREFIX constexpr ngen::SBID CG::sb22; \
470PREFIX constexpr ngen::SBID CG::sb23; \
471PREFIX constexpr ngen::SBID CG::sb24; \
472PREFIX constexpr ngen::SBID CG::sb25; \
473PREFIX constexpr ngen::SBID CG::sb26; \
474PREFIX constexpr ngen::SBID CG::sb27; \
475PREFIX constexpr ngen::SBID CG::sb28; \
476PREFIX constexpr ngen::SBID CG::sb29; \
477PREFIX constexpr ngen::SBID CG::sb30; \
478PREFIX constexpr ngen::SBID CG::sb31; \
479PREFIX constexpr ngen::SWSBInfo CG::NoAccSBSet; \
480PREFIX constexpr ngen::DataSpecLSC CG::vnni;
481
482#ifndef NGEN_SHORT_NAMES
483#define NGEN_REGISTER_DECL_EXTRA4(CG,PREFIX)
484#else
485#define NGEN_REGISTER_DECL_EXTRA4(CG,PREFIX) \
486PREFIX constexpr const ngen::IndirectRegisterFrame &CG::r; \
487PREFIX constexpr const ngen::InstructionModifier &CG::W;
488#endif
489
490#define NGEN_REGISTER_DECL(CG,PREFIX) \
491NGEN_REGISTER_DECL_MAIN(CG,PREFIX) \
492NGEN_REGISTER_DECL_EXTRA1(CG,PREFIX) \
493NGEN_REGISTER_DECL_EXTRA2(CG,PREFIX) \
494NGEN_REGISTER_DECL_EXTRA3(CG,PREFIX) \
495NGEN_REGISTER_DECL_EXTRA4(CG,PREFIX)
496
497#include "ngen.hpp"
498NGEN_REGISTER_DECL(ngen::BinaryCodeGenerator<hw>, template <ngen::HW hw>)
499
500#ifdef NGEN_ASM
501#include "ngen_asm.hpp"
502NGEN_REGISTER_DECL(ngen::AsmCodeGenerator, /* nothing */)
503#endif
504
505template class ngen::BinaryCodeGenerator<ngen::HW::Unknown>;
506template class ngen::BinaryCodeGenerator<ngen::HW::Gen9>;
507template class ngen::BinaryCodeGenerator<ngen::HW::Gen10>;
508template class ngen::BinaryCodeGenerator<ngen::HW::Gen11>;
509template class ngen::BinaryCodeGenerator<ngen::HW::Gen12LP>;
510template class ngen::BinaryCodeGenerator<ngen::HW::XeHP>;
511template class ngen::BinaryCodeGenerator<ngen::HW::XeHPG>;
512template class ngen::BinaryCodeGenerator<ngen::HW::XeHPC>;
513
514#endif /* (defined(NGEN_CPP11) || defined(NGEN_CPP14)) && !defined(NGEN_GLOBAL_REGS) */
515