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.