LLVM: lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp Source File (original) (raw)
1
2
3
4
5
6
7
11
13
14
15
16
17
18
19
20
21
22
23
24template <size_t N>
26 unsigned Encoding,
28
30 std::lower_bound(Table, Table + N, Encoding,
31 [](const CustomOperand &Entry, unsigned TargetEncoding) {
32 return Entry.Encoding < TargetEncoding;
33 });
34
35
36 for (auto It = First; It != Table + N && It->Encoding == Encoding; ++It) {
37 if (It->Encoding == Encoding && (!It->Cond || It->Cond(STI)))
38 return It->Name;
39 }
40
41 return "";
42}
43
44
45template <size_t N>
51 if (Entry.Name != Name)
52 continue;
53
54 if (!Entry.Cond || Entry.Cond(STI))
55 return Entry.Encoding;
56
58 }
59
60 return InvalidEncoding;
61}
62
64
65
67
69 {{"depctr_sa_sdst"}, 1, 1, 0, 1},
70 {{"depctr_va_vdst"}, 15, 15, 12, 4},
71 {{"depctr_va_sdst"}, 7, 7, 9, 3},
72 {{"depctr_va_ssrc"}, 1, 1, 8, 1},
73 {{"depctr_va_vcc"}, 1, 1, 1, 1},
74 {{"depctr_vm_vsrc"}, 7, 7, 2, 3},
75};
76
77
80
81}
82
84
85
86
87
88
116
123
130
131
132
133
137
141
147
156
157}
158
159namespace Hwreg {
160
161
162
163
166 {{"HW_REG_MODE"}, ID_MODE},
226
227};
228
229
230
234
238
239}
240
241namespace MTBUFFormat {
242
244 "BUF_DATA_FORMAT_INVALID",
245 "BUF_DATA_FORMAT_8",
246 "BUF_DATA_FORMAT_16",
247 "BUF_DATA_FORMAT_8_8",
248 "BUF_DATA_FORMAT_32",
249 "BUF_DATA_FORMAT_16_16",
250 "BUF_DATA_FORMAT_10_11_11",
251 "BUF_DATA_FORMAT_11_11_10",
252 "BUF_DATA_FORMAT_10_10_10_2",
253 "BUF_DATA_FORMAT_2_10_10_10",
254 "BUF_DATA_FORMAT_8_8_8_8",
255 "BUF_DATA_FORMAT_32_32",
256 "BUF_DATA_FORMAT_16_16_16_16",
257 "BUF_DATA_FORMAT_32_32_32",
258 "BUF_DATA_FORMAT_32_32_32_32",
259 "BUF_DATA_FORMAT_RESERVED_15"
260};
261
263 "BUF_NUM_FORMAT_UNORM",
264 "BUF_NUM_FORMAT_SNORM",
265 "BUF_NUM_FORMAT_USCALED",
266 "BUF_NUM_FORMAT_SSCALED",
267 "BUF_NUM_FORMAT_UINT",
268 "BUF_NUM_FORMAT_SINT",
269 "",
270 "BUF_NUM_FORMAT_FLOAT"
271};
272
274 "BUF_NUM_FORMAT_UNORM",
275 "BUF_NUM_FORMAT_SNORM",
276 "BUF_NUM_FORMAT_USCALED",
277 "BUF_NUM_FORMAT_SSCALED",
278 "BUF_NUM_FORMAT_UINT",
279 "BUF_NUM_FORMAT_SINT",
280 "BUF_NUM_FORMAT_SNORM_OGL",
281 "BUF_NUM_FORMAT_FLOAT"
282};
283
285 "BUF_NUM_FORMAT_UNORM",
286 "BUF_NUM_FORMAT_SNORM",
287 "BUF_NUM_FORMAT_USCALED",
288 "BUF_NUM_FORMAT_SSCALED",
289 "BUF_NUM_FORMAT_UINT",
290 "BUF_NUM_FORMAT_SINT",
291 "BUF_NUM_FORMAT_RESERVED_6",
292 "BUF_NUM_FORMAT_FLOAT"
293};
294
296 "BUF_FMT_INVALID",
297
298 "BUF_FMT_8_UNORM",
299 "BUF_FMT_8_SNORM",
300 "BUF_FMT_8_USCALED",
301 "BUF_FMT_8_SSCALED",
302 "BUF_FMT_8_UINT",
303 "BUF_FMT_8_SINT",
304
305 "BUF_FMT_16_UNORM",
306 "BUF_FMT_16_SNORM",
307 "BUF_FMT_16_USCALED",
308 "BUF_FMT_16_SSCALED",
309 "BUF_FMT_16_UINT",
310 "BUF_FMT_16_SINT",
311 "BUF_FMT_16_FLOAT",
312
313 "BUF_FMT_8_8_UNORM",
314 "BUF_FMT_8_8_SNORM",
315 "BUF_FMT_8_8_USCALED",
316 "BUF_FMT_8_8_SSCALED",
317 "BUF_FMT_8_8_UINT",
318 "BUF_FMT_8_8_SINT",
319
320 "BUF_FMT_32_UINT",
321 "BUF_FMT_32_SINT",
322 "BUF_FMT_32_FLOAT",
323
324 "BUF_FMT_16_16_UNORM",
325 "BUF_FMT_16_16_SNORM",
326 "BUF_FMT_16_16_USCALED",
327 "BUF_FMT_16_16_SSCALED",
328 "BUF_FMT_16_16_UINT",
329 "BUF_FMT_16_16_SINT",
330 "BUF_FMT_16_16_FLOAT",
331
332 "BUF_FMT_10_11_11_UNORM",
333 "BUF_FMT_10_11_11_SNORM",
334 "BUF_FMT_10_11_11_USCALED",
335 "BUF_FMT_10_11_11_SSCALED",
336 "BUF_FMT_10_11_11_UINT",
337 "BUF_FMT_10_11_11_SINT",
338 "BUF_FMT_10_11_11_FLOAT",
339
340 "BUF_FMT_11_11_10_UNORM",
341 "BUF_FMT_11_11_10_SNORM",
342 "BUF_FMT_11_11_10_USCALED",
343 "BUF_FMT_11_11_10_SSCALED",
344 "BUF_FMT_11_11_10_UINT",
345 "BUF_FMT_11_11_10_SINT",
346 "BUF_FMT_11_11_10_FLOAT",
347
348 "BUF_FMT_10_10_10_2_UNORM",
349 "BUF_FMT_10_10_10_2_SNORM",
350 "BUF_FMT_10_10_10_2_USCALED",
351 "BUF_FMT_10_10_10_2_SSCALED",
352 "BUF_FMT_10_10_10_2_UINT",
353 "BUF_FMT_10_10_10_2_SINT",
354
355 "BUF_FMT_2_10_10_10_UNORM",
356 "BUF_FMT_2_10_10_10_SNORM",
357 "BUF_FMT_2_10_10_10_USCALED",
358 "BUF_FMT_2_10_10_10_SSCALED",
359 "BUF_FMT_2_10_10_10_UINT",
360 "BUF_FMT_2_10_10_10_SINT",
361
362 "BUF_FMT_8_8_8_8_UNORM",
363 "BUF_FMT_8_8_8_8_SNORM",
364 "BUF_FMT_8_8_8_8_USCALED",
365 "BUF_FMT_8_8_8_8_SSCALED",
366 "BUF_FMT_8_8_8_8_UINT",
367 "BUF_FMT_8_8_8_8_SINT",
368
369 "BUF_FMT_32_32_UINT",
370 "BUF_FMT_32_32_SINT",
371 "BUF_FMT_32_32_FLOAT",
372
373 "BUF_FMT_16_16_16_16_UNORM",
374 "BUF_FMT_16_16_16_16_SNORM",
375 "BUF_FMT_16_16_16_16_USCALED",
376 "BUF_FMT_16_16_16_16_SSCALED",
377 "BUF_FMT_16_16_16_16_UINT",
378 "BUF_FMT_16_16_16_16_SINT",
379 "BUF_FMT_16_16_16_16_FLOAT",
380
381 "BUF_FMT_32_32_32_UINT",
382 "BUF_FMT_32_32_32_SINT",
383 "BUF_FMT_32_32_32_FLOAT",
384 "BUF_FMT_32_32_32_32_UINT",
385 "BUF_FMT_32_32_32_32_SINT",
386 "BUF_FMT_32_32_32_32_FLOAT"
387};
388
391
398
406
413
417
425
433
441
448
455
462
466
474
481};
482
484 "BUF_FMT_INVALID",
485
486 "BUF_FMT_8_UNORM",
487 "BUF_FMT_8_SNORM",
488 "BUF_FMT_8_USCALED",
489 "BUF_FMT_8_SSCALED",
490 "BUF_FMT_8_UINT",
491 "BUF_FMT_8_SINT",
492
493 "BUF_FMT_16_UNORM",
494 "BUF_FMT_16_SNORM",
495 "BUF_FMT_16_USCALED",
496 "BUF_FMT_16_SSCALED",
497 "BUF_FMT_16_UINT",
498 "BUF_FMT_16_SINT",
499 "BUF_FMT_16_FLOAT",
500
501 "BUF_FMT_8_8_UNORM",
502 "BUF_FMT_8_8_SNORM",
503 "BUF_FMT_8_8_USCALED",
504 "BUF_FMT_8_8_SSCALED",
505 "BUF_FMT_8_8_UINT",
506 "BUF_FMT_8_8_SINT",
507
508 "BUF_FMT_32_UINT",
509 "BUF_FMT_32_SINT",
510 "BUF_FMT_32_FLOAT",
511
512 "BUF_FMT_16_16_UNORM",
513 "BUF_FMT_16_16_SNORM",
514 "BUF_FMT_16_16_USCALED",
515 "BUF_FMT_16_16_SSCALED",
516 "BUF_FMT_16_16_UINT",
517 "BUF_FMT_16_16_SINT",
518 "BUF_FMT_16_16_FLOAT",
519
520 "BUF_FMT_10_11_11_FLOAT",
521
522 "BUF_FMT_11_11_10_FLOAT",
523
524 "BUF_FMT_10_10_10_2_UNORM",
525 "BUF_FMT_10_10_10_2_SNORM",
526 "BUF_FMT_10_10_10_2_UINT",
527 "BUF_FMT_10_10_10_2_SINT",
528
529 "BUF_FMT_2_10_10_10_UNORM",
530 "BUF_FMT_2_10_10_10_SNORM",
531 "BUF_FMT_2_10_10_10_USCALED",
532 "BUF_FMT_2_10_10_10_SSCALED",
533 "BUF_FMT_2_10_10_10_UINT",
534 "BUF_FMT_2_10_10_10_SINT",
535
536 "BUF_FMT_8_8_8_8_UNORM",
537 "BUF_FMT_8_8_8_8_SNORM",
538 "BUF_FMT_8_8_8_8_USCALED",
539 "BUF_FMT_8_8_8_8_SSCALED",
540 "BUF_FMT_8_8_8_8_UINT",
541 "BUF_FMT_8_8_8_8_SINT",
542
543 "BUF_FMT_32_32_UINT",
544 "BUF_FMT_32_32_SINT",
545 "BUF_FMT_32_32_FLOAT",
546
547 "BUF_FMT_16_16_16_16_UNORM",
548 "BUF_FMT_16_16_16_16_SNORM",
549 "BUF_FMT_16_16_16_16_USCALED",
550 "BUF_FMT_16_16_16_16_SSCALED",
551 "BUF_FMT_16_16_16_16_UINT",
552 "BUF_FMT_16_16_16_16_SINT",
553 "BUF_FMT_16_16_16_16_FLOAT",
554
555 "BUF_FMT_32_32_32_UINT",
556 "BUF_FMT_32_32_32_SINT",
557 "BUF_FMT_32_32_32_FLOAT",
558 "BUF_FMT_32_32_32_32_UINT",
559 "BUF_FMT_32_32_32_32_SINT",
560 "BUF_FMT_32_32_32_32_FLOAT"
561};
562
565
572
580
587
591
599
601
603
608
615
622
626
634
641};
642
643}
644
646
647
648
650 "QUAD_PERM",
651 "BITMASK_PERM",
652 "SWAP",
653 "REVERSE",
654 "BROADCAST",
655 "FFT",
656 "ROTATE",
657};
658
659
660}
661
662namespace VGPRIndexMode {
663
664
666 "SRC0",
667 "SRC1",
668 "SRC2",
669 "DST",
670};
671
672}
673
675
677
678
679 static const GFXVersion Versions[] = {{"UC_VERSION_GFX7", 0},
680 {"UC_VERSION_GFX10", 4},
681 {"UC_VERSION_GFX11", 6},
682 {"UC_VERSION_GFX12", 9}};
683
684 return Versions;
685}
686
687}
688
689}
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static std::vector< std::pair< int, unsigned > > Swizzle(std::vector< std::pair< int, unsigned > > Src, R600InstrInfo::BankSwizzle Swz)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Generic base class for all target subtargets.
A wrapper around a string literal that serves as a proxy for constructing global tables of StringRefs...
StringRef - Represent a constant reference to a string, i.e.
Definition AMDGPUAsmUtils.cpp:63
const int DEP_CTR_SIZE
Definition AMDGPUAsmUtils.cpp:78
const CustomOperandVal DepCtrInfo[]
Definition AMDGPUAsmUtils.cpp:66
@ ID_PERF_SNAPSHOT_PC_HI_gfx11
@ ID_PERF_SNAPSHOT_PC_LO_gfx11
@ ID_SQ_PERF_SNAPSHOT_PC_LO
@ ID_SQ_PERF_SNAPSHOT_DATA1
@ ID_SQ_PERF_SNAPSHOT_DATA
@ ID_PERF_SNAPSHOT_PC_LO_gfx12
@ ID_PERF_SNAPSHOT_DATA_gfx12
@ ID_PERF_SNAPSHOT_DATA_gfx11
@ ID_PERF_SNAPSHOT_PC_HI_gfx12
@ ID_SQ_PERF_SNAPSHOT_PC_HI
StringRef getHwreg(uint64_t Encoding, const MCSubtargetInfo &STI)
Definition AMDGPUAsmUtils.cpp:235
int64_t getHwregId(StringRef Name, const MCSubtargetInfo &STI)
Definition AMDGPUAsmUtils.cpp:231
static constexpr CustomOperand Operands[]
Definition AMDGPUAsmUtils.cpp:164
StringLiteral const UfmtSymbolicGFX11[]
Definition AMDGPUAsmUtils.cpp:483
unsigned const DfmtNfmt2UFmtGFX10[]
Definition AMDGPUAsmUtils.cpp:389
StringLiteral const DfmtSymbolic[]
Definition AMDGPUAsmUtils.cpp:243
StringLiteral const NfmtSymbolicGFX10[]
Definition AMDGPUAsmUtils.cpp:262
unsigned const DfmtNfmt2UFmtGFX11[]
Definition AMDGPUAsmUtils.cpp:563
StringLiteral const NfmtSymbolicVI[]
Definition AMDGPUAsmUtils.cpp:284
StringLiteral const NfmtSymbolicSICI[]
Definition AMDGPUAsmUtils.cpp:273
StringLiteral const UfmtSymbolicGFX10[]
Definition AMDGPUAsmUtils.cpp:295
int64_t getMsgOpId(int64_t MsgId, StringRef Name, const MCSubtargetInfo &STI)
Map from a symbolic name for a sendmsg operation to the operation portion of the immediate encoding.
Definition AMDGPUAsmUtils.cpp:142
int64_t getMsgId(StringRef Name, const MCSubtargetInfo &STI)
Map from a symbolic name for a msg_id to the message portion of the immediate encoding.
Definition AMDGPUAsmUtils.cpp:134
static constexpr CustomOperand SysMsgOperands[]
Definition AMDGPUAsmUtils.cpp:117
@ ID_RTN_GET_CLUSTER_BARRIER_STATE
@ ID_DEALLOC_VGPRS_GFX11Plus
@ ID_HS_TESSFACTOR_GFX11Plus
static constexpr CustomOperand StreamMsgOperands[]
Definition AMDGPUAsmUtils.cpp:124
@ OP_SYS_ECC_ERR_INTERRUPT
StringRef getMsgName(uint64_t Encoding, const MCSubtargetInfo &STI)
Map from an encoding to the symbolic name for a msg_id immediate.
Definition AMDGPUAsmUtils.cpp:138
static constexpr CustomOperand MsgOperands[]
Definition AMDGPUAsmUtils.cpp:89
StringRef getMsgOpName(int64_t MsgId, uint64_t Encoding, const MCSubtargetInfo &STI)
Map from an encoding to the symbolic name for a sendmsg operation.
Definition AMDGPUAsmUtils.cpp:148
bool msgRequiresOp(int64_t MsgId, const MCSubtargetInfo &STI)
const char *const IdSymbolic[]
Definition AMDGPUAsmUtils.cpp:649
Definition AMDGPUAsmUtils.cpp:674
ArrayRef< GFXVersion > getGFXVersions()
Definition AMDGPUAsmUtils.cpp:676
const char *const IdSymbolic[]
Definition AMDGPUAsmUtils.cpp:665
bool isGFX10_BEncoding(const MCSubtargetInfo &STI)
bool isGFX10_GFX11(const MCSubtargetInfo &STI)
bool isGFX10Before1030(const MCSubtargetInfo &STI)
const int OPR_ID_UNSUPPORTED
bool isGFX10(const MCSubtargetInfo &STI)
static int64_t getEncodingFromOperandTable(const CustomOperand(&Table)[N], StringRef Name, const MCSubtargetInfo &STI)
Map from a symbolic name for a sendmsg/hwreg asm operand to it's encoding.
Definition AMDGPUAsmUtils.cpp:46
bool isGFX12Plus(const MCSubtargetInfo &STI)
bool isGFX940(const MCSubtargetInfo &STI)
bool isGFX11(const MCSubtargetInfo &STI)
bool isGFX10_3_GFX11(const MCSubtargetInfo &STI)
bool isGFX8_GFX9_GFX10(const MCSubtargetInfo &STI)
bool isNotGFX10Plus(const MCSubtargetInfo &STI)
static StringRef getNameFromOperandTable(const CustomOperand(&Table)[N], unsigned Encoding, const MCSubtargetInfo &STI)
Map from the encoding of a sendmsg/hwreg asm operand to it's name.
Definition AMDGPUAsmUtils.cpp:25
bool isNotGFX11Plus(const MCSubtargetInfo &STI)
bool isGFX11Plus(const MCSubtargetInfo &STI)
bool isGFX10Plus(const MCSubtargetInfo &STI)
bool isNotGFX9Plus(const MCSubtargetInfo &STI)
bool isGFX9Plus(const MCSubtargetInfo &STI)
bool isGFX1250(const MCSubtargetInfo &STI)
bool isNotGFX12Plus(const MCSubtargetInfo &STI)
bool isGFX9_GFX10_GFX11(const MCSubtargetInfo &STI)
bool isGFX9_GFX10(const MCSubtargetInfo &STI)
@ First
Helpers to iterate all locations in the MemoryEffectsBase class.