1 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tahiti
-show-encoding
%s | FileCheck
-check-prefix
=SICI
%s
2 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=bonaire
-show-encoding
%s | FileCheck
-check-prefix
=SICI
%s
3 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tonga
-show-encoding
%s | FileCheck
-check-prefix
=VI
%s
5 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tahiti
%s
2>&1 | FileCheck
-check-prefixes
=GCN-ERR
,SICI-ERR
--implicit-check-
not=error
: %s
6 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=bonaire
%s
2>&1 | FileCheck
-check-prefixes
=GCN-ERR
,SICI-ERR
--implicit-check-
not=error
: %s
7 // RUN
: not llvm-mc
-arch
=amdgcn
-mcpu
=tonga
%s
2>&1 | FileCheck
-check-prefixes
=GCN-ERR
,VI-ERR
--implicit-check-
not=error
: %s
9 //===----------------------------------------------------------------------===//
10 // Positive tests for legacy dfmt
/nfmt syntax.
11 //===----------------------------------------------------------------------===//
13 tbuffer_load_format_x v1
, off
, s
[4:7], dfmt
:15, nfmt
:2, s1
14 // SICI
: tbuffer_load_format_x v1
, off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x78,0xe9,0x00,0x01,0x01,0x01]
15 // VI
: tbuffer_load_format_x v1
, off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x78,0xe9,0x00,0x01,0x01,0x01]
17 tbuffer_load_format_xy v
[1:2], off
, s
[4:7], dfmt
:15, nfmt
:2, s1
18 // SICI
: tbuffer_load_format_xy v
[1:2], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x79,0xe9,0x00,0x01,0x01,0x01]
19 // VI
: tbuffer_load_format_xy v
[1:2], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x78,0xe9,0x00,0x01,0x01,0x01]
21 tbuffer_load_format_xyz v
[1:3], off
, s
[4:7], dfmt
:15, nfmt
:2, s1
22 // SICI
: tbuffer_load_format_xyz v
[1:3], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7a,0xe9,0x00,0x01,0x01,0x01]
23 // VI
: tbuffer_load_format_xyz v
[1:3], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x79,0xe9,0x00,0x01,0x01,0x01]
25 tbuffer_load_format_xyzw v
[1:4], off
, s
[4:7], dfmt
:15, nfmt
:2, s1
26 // SICI
: tbuffer_load_format_xyzw v
[1:4], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7b,0xe9,0x00,0x01,0x01,0x01]
27 // VI
: tbuffer_load_format_xyzw v
[1:4], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x79,0xe9,0x00,0x01,0x01,0x01]
29 tbuffer_store_format_x v1
, off
, s
[4:7], dfmt
:15, nfmt
:2, s1
30 // SICI
: tbuffer_store_format_x v1
, off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7c,0xe9,0x00,0x01,0x01,0x01]
31 // VI
: tbuffer_store_format_x v1
, off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7a,0xe9,0x00,0x01,0x01,0x01]
33 tbuffer_store_format_xy v
[1:2], off
, s
[4:7], dfmt
:15, nfmt
:2, s1
34 // SICI
: tbuffer_store_format_xy v
[1:2], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7d,0xe9,0x00,0x01,0x01,0x01]
35 // VI
: tbuffer_store_format_xy v
[1:2], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x7a,0xe9,0x00,0x01,0x01,0x01]
37 tbuffer_store_format_xyzw v
[1:4], off
, s
[4:7], dfmt
:15, nfmt
:2, s1
38 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7f,0xe9,0x00,0x01,0x01,0x01]
39 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, s
[4:7], s1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x7b,0xe9,0x00,0x01,0x01,0x01]
41 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], dfmt
:15, nfmt
:2, ttmp1
42 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7f,0xe9,0x00,0x01,0x1d,0x71]
43 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x7b,0xe9,0x00,0x01,0x1d,0x71]
46 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], dfmt
:15, ttmp1
47 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
] ; encoding
: [0x00,0x00,0x7f,0xe8,0x00,0x01,0x1d,0x71]
48 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
] ; encoding
: [0x00,0x80,0x7b,0xe8,0x00,0x01,0x1d,0x71]
51 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], nfmt
:2, ttmp1
52 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x0f,0xe9,0x00,0x01,0x1d,0x71]
53 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x0b,0xe9,0x00,0x01,0x1d,0x71]
55 // nfmt
and dfmt can
be in either order
:
56 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], nfmt
:2, dfmt
:15, ttmp1
57 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x7f,0xe9,0x00,0x01,0x1d,0x71]
58 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x7b,0xe9,0x00,0x01,0x1d,0x71]
60 // nfmt
and dfmt may
be omitted
:
61 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1
62 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 ; encoding
: [0x00,0x00,0x0f,0xe8,0x00,0x01,0x1d,0x71]
63 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 ; encoding
: [0x00,0x80,0x0b,0xe8,0x00,0x01,0x1d,0x71]
65 // Check dfmt
/nfmt min values
66 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], dfmt
:0, nfmt
:0, ttmp1
67 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_INVALID
] ; encoding
: [0x00,0x00,0x07,0xe8,0x00,0x01,0x1d,0x71]
68 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_INVALID
] ; encoding
: [0x00,0x80,0x03,0xe8,0x00,0x01,0x1d,0x71]
70 // Check dfmt
/nfmt max values
71 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], dfmt
:15, nfmt
:7, ttmp1
72 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x00,0xff,0xeb,0x00,0x01,0x1d,0x71]
73 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x80,0xfb,0xeb,0x00,0x01,0x1d,0x71]
75 // Check default dfmt
/nfmt values
76 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], dfmt
:1, nfmt
:0, ttmp1
77 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 ; encoding
: [0x00,0x00,0x0f,0xe8,0x00,0x01,0x1d,0x71]
78 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 ; encoding
: [0x00,0x80,0x0b,0xe8,0x00,0x01,0x1d,0x71]
80 // Check that comma separators are optional
81 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:15 nfmt
:7 ttmp1
82 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x00,0xff,0xeb,0x00,0x01,0x1d,0x71]
83 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x80,0xfb,0xeb,0x00,0x01,0x1d,0x71]
87 // Check expressions with dfmt
88 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:-1+dfmt+
1 nfmt
:nfmt ttmp1
89 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x00,0xff,0xeb,0x00,0x01,0x1d,0x71]
90 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], ttmp1 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x80,0xfb,0xeb,0x00,0x01,0x1d,0x71]
92 //===----------------------------------------------------------------------===//
93 // Negative tests for legacy dfmt
/nfmt syntax.
94 //===----------------------------------------------------------------------===//
96 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:-1 nfmt
:1 s0
97 // GCN-ERR
: error
: out of range dfmt
99 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:16 nfmt
:1 s0
100 // GCN-ERR
: error
: out of range dfmt
102 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1 nfmt
:-1 s0
103 // GCN-ERR
: error
: out of range nfmt
105 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1 nfmt
:8 s0
106 // GCN-ERR
: error
: out of range nfmt
108 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7]
109 // GCN-ERR
: error
: too few operands for instruction
111 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7],, dfmt
:1 nfmt
:1 s0
112 // GCN-ERR
: error
: unknown token in expression
114 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1,, nfmt
:1 s0
115 // GCN-ERR
: error
: unknown token in expression
117 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1 nfmt
:1,, s0
118 // GCN-ERR
: error
: unknown token in expression
120 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1 dfmt
:1 s0
121 // GCN-ERR
: error
: invalid operand for instruction
123 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] nfmt
:1 nfmt
:1 s0
124 // GCN-ERR
: error
: invalid operand for instruction
126 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1 nfmt
:1 dfmt
:1 s0
127 // GCN-ERR
: error
: invalid operand for instruction
129 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] nfmt
:1 dfmt
:1 nfmt
:1 s0
130 // GCN-ERR
: error
: invalid operand for instruction
132 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1: nfmt
:1 s0
133 // GCN-ERR
: error
: unknown token in expression
135 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7] dfmt
:1 nfmt
:1: s0
136 // GCN-ERR
: error
: unknown token in expression
138 //===----------------------------------------------------------------------===//
139 // Tests for symbolic MTBUF format
140 //===----------------------------------------------------------------------===//
142 // Format may
be specified in numeric form
(min value
).
143 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:0
144 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_INVALID
] ; encoding
: [0x00,0x00,0x07,0xe8,0x00,0x01,0x1d,0x00]
145 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_INVALID
] ; encoding
: [0x00,0x80,0x03,0xe8,0x00,0x01,0x1d,0x00]
147 // Format may
be specified in numeric form
(max value
).
148 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:127
149 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x00,0xff,0xeb,0x00,0x01,0x1d,0x00]
150 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_RESERVED_15
,BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x80,0xfb,0xeb,0x00,0x01,0x1d,0x00]
152 // Format may
be specified as an expression.
153 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:(2 + 3 * 16)
154 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16
,BUF_NUM_FORMAT_SSCALED
] ; encoding
: [0x00,0x00,0x97,0xe9,0x00,0x01,0x1d,0x00]
155 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16
,BUF_NUM_FORMAT_SSCALED
] ; encoding
: [0x00,0x80,0x93,0xe9,0x00,0x01,0x1d,0x00]
157 // format may
be specified as
a list of dfmt
, nfmt
:
158 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8
,BUF_NUM_FORMAT_UNORM
]
159 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 ; encoding
: [0x00,0x00,0x0f,0xe8,0x00,0x01,0x1d,0x00]
160 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 ; encoding
: [0x00,0x80,0x0b,0xe8,0x00,0x01,0x1d,0x00]
162 // nfmt
and dfmt can
be in either order
:
163 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SNORM
, BUF_DATA_FORMAT_16
]
164 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16
,BUF_NUM_FORMAT_SNORM
] ; encoding
: [0x00,0x00,0x97,0xe8,0x00,0x01,0x1d,0x00]
165 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16
,BUF_NUM_FORMAT_SNORM
] ; encoding
: [0x00,0x80,0x93,0xe8,0x00,0x01,0x1d,0x00]
167 // nfmt may
be omitted
:
168 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[ BUF_DATA_FORMAT_8_8
]
169 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8_8
] ; encoding
: [0x00,0x00,0x1f,0xe8,0x00,0x01,0x1d,0x00]
170 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8_8
] ; encoding
: [0x00,0x80,0x1b,0xe8,0x00,0x01,0x1d,0x00]
172 // dfmt may
be omitted
:
173 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_USCALED
]
174 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x00,0x0f,0xe9,0x00,0x01,0x1d,0x00]
175 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_USCALED
] ; encoding
: [0x00,0x80,0x0b,0xe9,0x00,0x01,0x1d,0x00]
177 // Check dfmt formats
178 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
]
179 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
] ; encoding
: [0x00,0x00,0x27,0xe8,0x00,0x01,0x1d,0x00]
180 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
] ; encoding
: [0x00,0x80,0x23,0xe8,0x00,0x01,0x1d,0x00]
182 // Check dfmt formats
183 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16_16
]
184 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16_16
] ; encoding
: [0x00,0x00,0x2f,0xe8,0x00,0x01,0x1d,0x00]
185 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16_16
] ; encoding
: [0x00,0x80,0x2b,0xe8,0x00,0x01,0x1d,0x00]
187 // Check dfmt formats
188 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_10_11_11
]
189 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_10_11_11
] ; encoding
: [0x00,0x00,0x37,0xe8,0x00,0x01,0x1d,0x00]
190 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_10_11_11
] ; encoding
: [0x00,0x80,0x33,0xe8,0x00,0x01,0x1d,0x00]
192 // Check dfmt formats
193 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_11_11_10
]
194 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_11_11_10
] ; encoding
: [0x00,0x00,0x3f,0xe8,0x00,0x01,0x1d,0x00]
195 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_11_11_10
] ; encoding
: [0x00,0x80,0x3b,0xe8,0x00,0x01,0x1d,0x00]
197 // Check dfmt formats
198 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_10_10_10_2
]
199 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_10_10_10_2
] ; encoding
: [0x00,0x00,0x47,0xe8,0x00,0x01,0x1d,0x00]
200 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_10_10_10_2
] ; encoding
: [0x00,0x80,0x43,0xe8,0x00,0x01,0x1d,0x00]
202 // Check dfmt formats
203 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_2_10_10_10
]
204 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_2_10_10_10
] ; encoding
: [0x00,0x00,0x4f,0xe8,0x00,0x01,0x1d,0x00]
205 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_2_10_10_10
] ; encoding
: [0x00,0x80,0x4b,0xe8,0x00,0x01,0x1d,0x00]
207 // Check dfmt formats
208 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8_8_8_8
]
209 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8_8_8_8
] ; encoding
: [0x00,0x00,0x57,0xe8,0x00,0x01,0x1d,0x00]
210 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8_8_8_8
] ; encoding
: [0x00,0x80,0x53,0xe8,0x00,0x01,0x1d,0x00]
212 // Check dfmt formats
213 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32
]
214 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32
] ; encoding
: [0x00,0x00,0x5f,0xe8,0x00,0x01,0x1d,0x00]
215 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32
] ; encoding
: [0x00,0x80,0x5b,0xe8,0x00,0x01,0x1d,0x00]
217 // Check dfmt formats
218 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16_16_16_16
]
219 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16_16_16_16
] ; encoding
: [0x00,0x00,0x67,0xe8,0x00,0x01,0x1d,0x00]
220 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_16_16_16_16
] ; encoding
: [0x00,0x80,0x63,0xe8,0x00,0x01,0x1d,0x00]
222 // Check dfmt formats
223 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32_32
]
224 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32_32
] ; encoding
: [0x00,0x00,0x6f,0xe8,0x00,0x01,0x1d,0x00]
225 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32_32
] ; encoding
: [0x00,0x80,0x6b,0xe8,0x00,0x01,0x1d,0x00]
227 // Check dfmt formats
228 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32_32_32
]
229 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32_32_32
] ; encoding
: [0x00,0x00,0x77,0xe8,0x00,0x01,0x1d,0x00]
230 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32_32_32_32
] ; encoding
: [0x00,0x80,0x73,0xe8,0x00,0x01,0x1d,0x00]
232 // Check dfmt formats
233 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_RESERVED_15
]
234 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_RESERVED_15
] ; encoding
: [0x00,0x00,0x7f,0xe8,0x00,0x01,0x1d,0x00]
235 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_RESERVED_15
] ; encoding
: [0x00,0x80,0x7b,0xe8,0x00,0x01,0x1d,0x00]
237 // Check dfmt formats
238 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_INVALID
]
239 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_INVALID
] ; encoding
: [0x00,0x00,0x07,0xe8,0x00,0x01,0x1d,0x00]
240 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_INVALID
] ; encoding
: [0x00,0x80,0x03,0xe8,0x00,0x01,0x1d,0x00]
242 // Check nfmt formats
243 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SSCALED
]
244 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SSCALED
] ; encoding
: [0x00,0x00,0x8f,0xe9,0x00,0x01,0x1d,0x00]
245 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SSCALED
] ; encoding
: [0x00,0x80,0x8b,0xe9,0x00,0x01,0x1d,0x00]
247 // Check nfmt formats
248 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT
]
249 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT
] ; encoding
: [0x00,0x00,0x0f,0xea,0x00,0x01,0x1d,0x00]
250 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT
] ; encoding
: [0x00,0x80,0x0b,0xea,0x00,0x01,0x1d,0x00]
252 // Check nfmt formats
253 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SINT
]
254 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SINT
] ; encoding
: [0x00,0x00,0x8f,0xea,0x00,0x01,0x1d,0x00]
255 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SINT
] ; encoding
: [0x00,0x80,0x8b,0xea,0x00,0x01,0x1d,0x00]
257 // Check nfmt formats
258 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_FLOAT
]
259 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x00,0x8f,0xeb,0x00,0x01,0x1d,0x00]
260 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_FLOAT
] ; encoding
: [0x00,0x80,0x8b,0xeb,0x00,0x01,0x1d,0x00]
262 // Check optional comma separators
263 tbuffer_store_format_xyzw v
[1:4], v1
, ttmp
[4:7], s0
, format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
], idxen
264 // SICI
: tbuffer_store_format_xyzw v
[1:4], v1
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] idxen ; encoding
: [0x00,0x20,0xa7,0xeb,0x01,0x01,0x1d,0x00]
265 // VI
: tbuffer_store_format_xyzw v
[1:4], v1
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] idxen ; encoding
: [0x00,0xa0,0xa3,0xeb,0x01,0x01,0x1d,0x00]
267 // Check offen
and offset
268 tbuffer_store_format_xyzw v
[1:4], v1
, ttmp
[4:7], s0
, format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] offen offset
:52
269 // SICI
: tbuffer_store_format_xyzw v
[1:4], v1
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] offen offset
:52 ; encoding
: [0x34,0x10,0xa7,0xeb,0x01,0x01,0x1d,0x00]
270 // VI
: tbuffer_store_format_xyzw v
[1:4], v1
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] offen offset
:52 ; encoding
: [0x34,0x90,0xa3,0xeb,0x01,0x01,0x1d,0x00]
272 // Check idxen
and offen
273 tbuffer_store_format_xyzw v
[1:4], v
[1:2], ttmp
[4:7], s0
, format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] idxen offen offset
:52
274 // SICI
: tbuffer_store_format_xyzw v
[1:4], v
[1:2], ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] idxen offen offset
:52 ; encoding
: [0x34,0x30,0xa7,0xeb,0x01,0x01,0x1d,0x00]
275 // VI
: tbuffer_store_format_xyzw v
[1:4], v
[1:2], ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] idxen offen offset
:52 ; encoding
: [0x34,0xb0,0xa3,0xeb,0x01,0x01,0x1d,0x00]
278 tbuffer_store_format_xyzw v
[1:4], v
[1:2], ttmp
[4:7], s0
, format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] addr64
279 // SICI
: tbuffer_store_format_xyzw v
[1:4], v
[1:2], ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
] addr64 ; encoding
: [0x00,0x80,0xa7,0xeb,0x01,0x01,0x1d,0x00]
280 // VI-ERR
: error
: operands are
not valid for this GPU
or mode
282 //===----------------------------------------------------------------------===//
283 // Tests for symbolic format errors handling
284 //===----------------------------------------------------------------------===//
287 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], format
:[BUF_DATA_FORMAT_32
]
288 // GCN-ERR
: error
: not a valid operand.
291 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s
[255] format
:[BUF_NUM_FORMAT_FLOAT
]
292 // GCN-ERR
: error
: register index is out of range
294 // Both legacy
and symbolic formats are specified
295 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], dfmt
:1 s0 format
:[BUF_NUM_FORMAT_FLOAT
]
296 // GCN-ERR
: error
: duplicate format
298 // Missing format number
299 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
: offset
:52
300 // GCN-ERR
: error
: expected absolute expression
303 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:-1
304 // GCN-ERR
: error
: out of range format
307 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:128
308 // GCN-ERR
: error
: out of range format
311 // Invalid expression
312 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:MAXVAL+
1
313 // GCN-ERR
: error
: out of range format
316 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[]
317 // GCN-ERR
: error
: expected
a format string
319 // More than
2 format specifiers
320 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
,BUF_DATA_FORMAT_8
]
321 // GCN-ERR
: error
: expected
a closing square bracket
323 // More than
2 format specifiers
324 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT
,BUF_DATA_FORMAT_32
,BUF_NUM_FORMAT_FLOAT
]
325 // GCN-ERR
: error
: expected
a closing square bracket
328 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:BUF_NUM_FORMAT_UINT
329 // GCN-ERR
: error
: expected absolute expression
332 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT
333 // GCN-ERR
: error
: expected
a closing square bracket
336 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:BUF_NUM_FORMAT_UINT
]
337 // GCN-ERR
: error
: expected absolute expression
340 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT BUF_DATA_FORMAT_32
]
341 // GCN-ERR
: error
: expected
a closing square bracket
344 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_DATA_FORMAT_32
]
345 // GCN-ERR
: error
: duplicate data format
348 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_32
,BUF_DATA_FORMAT_8
]
349 // GCN-ERR
: error
: duplicate data format
352 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_UINT
,BUF_NUM_FORMAT_FLOAT
]
353 // GCN-ERR
: error
: duplicate numeric format
355 // Unknown format specifier
356 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT
]
357 // GCN-ERR
: error
: unsupported format
359 // Valid but unsupported format specifier
(SNORM_OGL is supported for SI
/CI only
)
360 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SNORM_OGL
]
361 // SICI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_SNORM_OGL
] ; encoding
: [0x00,0x00,0x0f,0xeb,0x00,0x01,0x1d,0x00]
362 // VI-ERR
: error
: unsupported format
364 // Valid but unsupported format specifier
(RESERVED_6 is supported for VI
/GFX9 only
)
365 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_RESERVED_6
]
366 // SICI-ERR
: error
: unsupported format
367 // VI
: tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_NUM_FORMAT_RESERVED_6
] ; encoding
: [0x00,0x80,0x0b,0xeb,0x00,0x01,0x1d,0x00]
370 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7],, s0 format
:[BUF_DATA_FORMAT_8
]
371 // GCN-ERR
: error
: unknown token in expression
374 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0
,, format
:[BUF_DATA_FORMAT_8
]
375 // GCN-ERR
: error
: not a valid operand.
378 tbuffer_store_format_xyzw v
[1:4], off
, ttmp
[4:7], s0 format
:[BUF_DATA_FORMAT_8
],, offset
:52
379 // GCN-ERR
: error
: unknown token in expression