blob: c4af523ea33f481d7496d7d6709cb2fa73db73c1 [file] [log] [blame]
Eric Kunze58098a72022-08-05 15:40:12 -07001<?xml version="1.0"?>
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
4<!-- Type definitions -->
5
6<xs:simpleType name="profile">
7 <xs:restriction base="xs:string">
8 <xs:enumeration value="BI"/>
9 <xs:enumeration value="MI"/>
10 <xs:enumeration value="MT"/>
11 </xs:restriction>
12</xs:simpleType>
13
Dominic Symese4d6a1b2022-11-04 18:00:03 +000014<xs:simpleType name="levelname">
15 <xs:restriction base="xs:string">
16 <xs:enumeration value="none"/>
17 <xs:enumeration value="8K"/>
18 </xs:restriction>
19</xs:simpleType>
20
21<xs:simpleType name="levelmax">
22 <xs:restriction base="xs:string">
23 <xs:enumeration value="MAX_KERNEL"/>
24 <xs:enumeration value="MAX_STRIDE"/>
25 <xs:enumeration value="MAX_SCALE"/>
26 <xs:enumeration value="MAX_RANK"/>
Dominic Symesbc72ba82023-04-24 17:08:02 +010027 <xs:enumeration value="MAX_LOG2_SIZE"/>
Dominic Symes7b0f1c92023-07-20 14:26:38 +010028 <xs:enumeration value="MAX_NESTING"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +000029 </xs:restriction>
30</xs:simpleType>
31
Eric Kunze58098a72022-08-05 15:40:12 -070032<xs:simpleType name="datatype">
33 <xs:restriction base="xs:string">
Kevin Petit5333c252023-05-16 09:08:48 +010034 <xs:enumeration value="-"/>
Eric Kunze58098a72022-08-05 15:40:12 -070035 <xs:enumeration value="bool_t"/>
Eric Kunzefb0284e2023-07-18 15:20:53 -070036 <xs:enumeration value="i4_t"/>
37 <xs:enumeration value="i8_t"/>
38 <xs:enumeration value="i16_t"/>
39 <xs:enumeration value="i32_t"/>
40 <xs:enumeration value="i48_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070041 <xs:enumeration value="fp16_t"/>
42 <xs:enumeration value="bf16_t"/>
43 <xs:enumeration value="fp32_t"/>
Dominic Symes830b43b2023-05-09 10:14:49 +010044 <xs:enumeration value="shape_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070045 </xs:restriction>
46</xs:simpleType>
47
Kevin Petit5333c252023-05-16 09:08:48 +010048<xs:simpleType name="enumtypename">
49 <xs:restriction base="xs:string">
50 <xs:enumeration value="resize_mode_t"/>
51 <xs:enumeration value="acc_size_t"/>
52 </xs:restriction>
53</xs:simpleType>
54
Eric Kunze58098a72022-08-05 15:40:12 -070055<xs:simpleType name="typename">
56 <xs:restriction base="xs:string">
57 <xs:enumeration value="in_t"/>
58 <xs:enumeration value="out_t"/>
59 <xs:enumeration value="in_out_t"/>
60 <xs:enumeration value="acc_t"/>
61 <xs:enumeration value="weight_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070062 <xs:enumeration value="resize_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070063 <xs:enumeration value="table_t"/>
Kevin Petit5333c252023-05-16 09:08:48 +010064 <xs:enumeration value="index_t"/>
65 <xs:enumeration value="mul_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070066 <xs:enumeration value="TABLE_SIZE"/>
Jerry Ge0fc278b2023-08-11 16:43:30 +000067 <xs:enumeration value="var_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070068 </xs:restriction>
69</xs:simpleType>
70
71<xs:simpleType name="argumentcategory">
72 <xs:restriction base="xs:string">
73 <xs:enumeration value="input"/>
74 <xs:enumeration value="output"/>
75 <xs:enumeration value="attribute"/>
76 <xs:enumeration value="input(MT)|attribute(BI,MI)"/>
77 </xs:restriction>
78</xs:simpleType>
79
Kevin Petit5333c252023-05-16 09:08:48 +010080<xs:simpleType name="argument-type">
81 <xs:restriction base="xs:string">
82 <xs:enumeration value="tensor_t"/>
83 <xs:enumeration value="tensor_list_t"/>
84 <xs:enumeration value="tosa_graph_t"/>
Eric Kunze633a3d92023-07-11 14:10:44 -070085 <xs:enumeration value="String"/>
Kevin Petit5333c252023-05-16 09:08:48 +010086 </xs:restriction>
87</xs:simpleType>
88
89<xs:simpleType name="argument-tensor-element-type">
90 <xs:union memberTypes="datatype typename enumtypename"/>
91</xs:simpleType>
92
Eric Kunze58098a72022-08-05 15:40:12 -070093<!-- Element definitions -->
94
Kevin Petit36f2d642022-12-06 11:56:15 +000095<xs:element name="version">
96 <xs:complexType>
97 <xs:attribute name="major" type="xs:int" use="required"/>
98 <xs:attribute name="minor" type="xs:int" use="required"/>
99 <xs:attribute name="patch" type="xs:int" use="required"/>
100 <xs:attribute name="draft" type="xs:boolean" use="required"/>
101 </xs:complexType>
102</xs:element>
103
Eric Kunze58098a72022-08-05 15:40:12 -0700104<xs:element name="profile">
105 <xs:complexType>
106 <xs:simpleContent>
107 <xs:extension base="xs:string">
108 <xs:attribute name="name" type="profile" use="required"/>
109 </xs:extension>
110 </xs:simpleContent>
111 </xs:complexType>
112</xs:element>
113
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000114<xs:element name="level">
115 <xs:complexType>
116 <xs:simpleContent>
117 <xs:extension base="xs:string">
118 <xs:attribute name="name" type="levelname" use="required"/>
119 <xs:attribute name="max_rank" type="xs:int" use="required"/>
120 <xs:attribute name="max_kernel" type="xs:int" use="required"/>
121 <xs:attribute name="max_stride" type="xs:int" use="required"/>
122 <xs:attribute name="max_scale" type="xs:int" use="required"/>
Dominic Symesbc72ba82023-04-24 17:08:02 +0100123 <xs:attribute name="max_log2_size" type="xs:int" use="required"/>
Dominic Symes7b0f1c92023-07-20 14:26:38 +0100124 <xs:attribute name="max_nesting" type="xs:int" use="required"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000125 </xs:extension>
126 </xs:simpleContent>
127 </xs:complexType>
128</xs:element>
129
130<xs:element name="levellimit">
131 <xs:complexType>
132 <xs:attribute name="value" type="xs:string" use="required"/>
133 <xs:attribute name="limit" type="levelmax" use="required"/>
134 </xs:complexType>
135</xs:element>
136
Eric Kunze58098a72022-08-05 15:40:12 -0700137<xs:element name="profiles">
138 <xs:complexType>
139 <xs:sequence>
140 <xs:element ref="profile" maxOccurs="unbounded"/>
141 </xs:sequence>
142 </xs:complexType>
143</xs:element>
144
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000145<xs:element name="levels">
146 <xs:complexType>
147 <xs:sequence>
148 <xs:element ref="level" maxOccurs="unbounded"/>
149 </xs:sequence>
150 </xs:complexType>
151</xs:element>
152
Eric Kunze42085e32023-01-09 11:16:51 -0800153<!--- Valid values for the rank choices, either an integer or a string
154 starting with MAX_RANK (to allow things like MAX_RANK - 1)
155-->
156<xs:simpleType name="validRank">
157 <xs:union>
158 <xs:simpleType>
159 <xs:restriction base="xs:integer"/>
160 </xs:simpleType>
161 <xs:simpleType>
162 <xs:restriction base="xs:string">
163 <xs:pattern value="MAX_RANK.*"/>
164 </xs:restriction>
165 </xs:simpleType>
166 </xs:union>
167</xs:simpleType>
168
169<xs:element name="rank">
170 <xs:complexType>
171 <xs:attribute name="min" type="validRank" use="required"/>
172 <xs:attribute name="max" type="validRank" use="required"/>
173 </xs:complexType>
174</xs:element>
175
Eric Kunze58098a72022-08-05 15:40:12 -0700176<!-- TODO pattern for attribute name -->
177<!-- TODO enumerations/patterns for attribute type -->
178<!-- TODO enumerations/patterns for attribute shape -->
Eric Kunze544227e2023-02-13 16:19:34 -0800179
180<xs:element name="enumval">
181 <xs:complexType>
182 <xs:attribute name="name" type="xs:string"/>
183 <xs:attribute name="value" type="xs:integer"/>
184 <xs:attribute name="description" type="xs:string"/>
185 </xs:complexType>
186</xs:element>
187
188<xs:element name="enum">
189 <xs:complexType>
190 <xs:sequence>
191 <xs:element ref="enumval" minOccurs="1" maxOccurs="unbounded"/>
192 </xs:sequence>
193 <xs:attribute name="name" type="xs:string" use="required"/>
194 <xs:attribute name="description" type="xs:string" use="required"/>
195 </xs:complexType>
196</xs:element>
197
Eric Kunze58098a72022-08-05 15:40:12 -0700198<xs:element name="argument">
199 <xs:complexType>
200 <xs:sequence>
201 <xs:element name="description" type="xs:string"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000202 <xs:element ref="levellimit" minOccurs="0" maxOccurs="unbounded"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800203 <xs:element ref="rank" minOccurs="0" maxOccurs="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700204 </xs:sequence>
205 <xs:attribute name="category" type="argumentcategory" use="required"/>
206 <xs:attribute name="name" type="xs:string" use="required"/>
Kevin Petit5333c252023-05-16 09:08:48 +0100207 <xs:attribute name="type" type="argument-type" use="required"/>
208 <xs:attribute name="tensor-element-type" type="argument-tensor-element-type" use="required"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700209 <xs:attribute name="shape" type="xs:string" use="required"/>
Jerry Ge0fc278b2023-08-11 16:43:30 +0000210 <xs:attribute name="optional" type="xs:boolean"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700211 </xs:complexType>
212</xs:element>
213
214<xs:element name="arguments">
215 <xs:complexType>
216 <xs:sequence>
217 <xs:element ref="argument" maxOccurs="unbounded"/>
218 </xs:sequence>
219 </xs:complexType>
220</xs:element>
221
222<xs:element name="type">
223 <xs:complexType>
224 <xs:attribute name="name" type="typename" use="required"/>
225 </xs:complexType>
226</xs:element>
227
228<xs:element name="types">
229 <xs:complexType>
230 <xs:sequence>
231 <xs:element ref="type" maxOccurs="unbounded"/>
232 </xs:sequence>
233 </xs:complexType>
234</xs:element>
235
236<xs:element name="typesupport">
237 <xs:complexType>
238 <xs:choice minOccurs="0" maxOccurs="unbounded">
239 <xs:element ref="profile"/>
240 </xs:choice>
241 <xs:attribute name="mode" type="xs:string" use="required"/>
242 <xs:attribute name="in_t" type="datatype"/>
243 <xs:attribute name="out_t" type="datatype"/>
244 <xs:attribute name="in_out_t" type="datatype"/>
245 <xs:attribute name="weight_t" type="datatype"/>
246 <xs:attribute name="acc_t" type="datatype"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700247 <xs:attribute name="resize_t" type="datatype"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700248 <xs:attribute name="table_t" type="datatype"/>
249 <xs:attribute name="TABLE_SIZE" type="xs:int"/>
250 </xs:complexType>
251</xs:element>
252
253<xs:element name="operator">
254 <xs:complexType>
255 <xs:sequence>
256 <xs:element name="name"/> <!-- TODO pattern -->
257 <xs:element ref="arguments"/>
258 <xs:element ref="types" minOccurs="0" />
259 <xs:element ref="typesupport" minOccurs="0" maxOccurs="unbounded"/>
260 </xs:sequence>
261 </xs:complexType>
262</xs:element>
263
264<xs:element name="operatorgroup">
265 <xs:complexType>
266 <xs:sequence>
267 <xs:element ref="operator" maxOccurs="unbounded"/>
268 </xs:sequence>
269 <xs:attribute name="name" type="xs:string" use="required"/>
270 </xs:complexType>
271</xs:element>
272
273<xs:element name="operators">
274 <xs:complexType>
275 <xs:sequence>
276 <xs:element ref="operatorgroup" maxOccurs="unbounded"/>
277 </xs:sequence>
278 </xs:complexType>
279</xs:element>
280
281<xs:element name="tosa">
282 <xs:complexType>
283 <xs:sequence>
Kevin Petit36f2d642022-12-06 11:56:15 +0000284 <xs:element ref="version" minOccurs="1" maxOccurs="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700285 <xs:element ref="profiles"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000286 <xs:element ref="levels"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700287 <xs:element ref="operators"/>
Eric Kunze544227e2023-02-13 16:19:34 -0800288 <xs:element ref="enum" maxOccurs="unbounded"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700289 </xs:sequence>
290 </xs:complexType>
291</xs:element>
292
293</xs:schema>