diff options
| author | Artem Tamazov <artem.tamazov@amd.com> | 2016-05-26 17:00:33 +0000 |
|---|---|---|
| committer | Artem Tamazov <artem.tamazov@amd.com> | 2016-05-26 17:00:33 +0000 |
| commit | 6edc135d0f4e4a5636bf0707971b6e619d5dc0c6 (patch) | |
| tree | ec2434e2e87221ada903bb03c00c9cfa8a02757f /llvm/lib/Target/AMDGPU/SIDefines.h | |
| parent | d486f84c579d7365be3d64c48a4cf1138b483818 (diff) | |
| download | bcm5719-llvm-6edc135d0f4e4a5636bf0707971b6e619d5dc0c6.tar.gz bcm5719-llvm-6edc135d0f4e4a5636bf0707971b6e619d5dc0c6.zip | |
[AMDGPU][llvm-mc] s_getreg/setreg* - hwreg - factor out strings/literals etc.
Hwreg(...) syntax implementation unified with sendmsg(...).
Common strings moved to Utils
MathExtras.h functionality utilized.
Added missing build dependency in Disassembler.
Differential Revision: http://reviews.llvm.org/D20381
llvm-svn: 270871
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIDefines.h')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIDefines.h | 50 |
1 files changed, 41 insertions, 9 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIDefines.h b/llvm/lib/Target/AMDGPU/SIDefines.h index 465c5b1d908..8dcfc8a8942 100644 --- a/llvm/lib/Target/AMDGPU/SIDefines.h +++ b/llvm/lib/Target/AMDGPU/SIDefines.h @@ -122,7 +122,7 @@ namespace llvm { namespace AMDGPU { namespace SendMsg { // Encoding of SIMM16 used in s_sendmsg* insns. -enum Id { // Message ID, width(3) [3:0]. +enum Id { // Message ID, width(4) [3:0]. ID_UNKNOWN_ = -1, ID_INTERRUPT = 1, ID_GS, @@ -130,11 +130,14 @@ enum Id { // Message ID, width(3) [3:0]. ID_SYSMSG = 15, ID_GAPS_LAST_, // Indicate that sequence has gaps. ID_GAPS_FIRST_ = ID_INTERRUPT, - ID_MASK_ = 0xf + ID_SHIFT_ = 0, + ID_WIDTH_ = 4, + ID_MASK_ = (((1 << ID_WIDTH_) - 1) << ID_SHIFT_) }; enum Op { // Both GS and SYS operation IDs. OP_UNKNOWN_ = -1, + OP_SHIFT_ = 4, // width(2) [5:4] OP_GS_NOP = 0, OP_GS_CUT, @@ -142,7 +145,8 @@ enum Op { // Both GS and SYS operation IDs. OP_GS_EMIT_CUT, OP_GS_LAST_, OP_GS_FIRST_ = OP_GS_NOP, - OP_GS_MASK_ = (0x3 << 4), + OP_GS_WIDTH_ = 2, + OP_GS_MASK_ = (((1 << OP_GS_WIDTH_) - 1) << OP_SHIFT_), // width(3) [6:4] OP_SYS_ECC_ERR_INTERRUPT = 1, OP_SYS_REG_RD, @@ -150,19 +154,47 @@ enum Op { // Both GS and SYS operation IDs. OP_SYS_TTRACE_PC, OP_SYS_LAST_, OP_SYS_FIRST_ = OP_SYS_ECC_ERR_INTERRUPT, - OP_SYS_MASK_ = (0x7 << 4), - OP_SHIFT_ = 4 + OP_SYS_WIDTH_ = 3, + OP_SYS_MASK_ = (((1 << OP_SYS_WIDTH_) - 1) << OP_SHIFT_) }; enum StreamId { // Stream ID, (2) [9:8]. - STREAM_ID_DEFAULT = 0, + STREAM_ID_DEFAULT_ = 0, STREAM_ID_LAST_ = 4, - STREAM_ID_FIRST_ = STREAM_ID_DEFAULT, - STREAM_ID_MASK_ = (0x3 << 8), - STREAM_ID_SHIFT_ = 8 + STREAM_ID_FIRST_ = STREAM_ID_DEFAULT_, + STREAM_ID_SHIFT_ = 8, + STREAM_ID_WIDTH_= 2, + STREAM_ID_MASK_ = (((1 << STREAM_ID_WIDTH_) - 1) << STREAM_ID_SHIFT_) }; } // namespace SendMsg + +namespace Hwreg { // Encoding of SIMM16 used in s_setreg/getreg* insns. + +enum Id { // HwRegCode, (6) [5:0] + ID_UNKNOWN_ = -1, + ID_SYMBOLIC_FIRST_ = 1, // There are corresponding symbolic names defined. + ID_SYMBOLIC_LAST_ = 8, + ID_SHIFT_ = 0, + ID_WIDTH_ = 6, + ID_MASK_ = (((1 << ID_WIDTH_) - 1) << ID_SHIFT_) +}; + +enum Offset { // Offset, (5) [10:6] + OFFSET_DEFAULT_ = 0, + OFFSET_SHIFT_ = 6, + OFFSET_WIDTH_ = 5, + OFFSET_MASK_ = (((1 << OFFSET_WIDTH_) - 1) << OFFSET_SHIFT_) +}; + +enum WidthMinusOne { // WidthMinusOne, (5) [15:11] + WIDTH_M1_DEFAULT_ = 31, + WIDTH_M1_SHIFT_ = 11, + WIDTH_M1_WIDTH_ = 5, + WIDTH_M1_MASK_ = (((1 << WIDTH_M1_WIDTH_) - 1) << WIDTH_M1_SHIFT_) +}; + +} // namespace Hwreg } // namespace AMDGPU } // namespace llvm |

