blob: a52c1a706dd51920a6d5278282cc6f6229e65fb0 [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"/>
Eric Kunze526f6c72024-01-12 17:18:42 -080044 <xs:enumeration value="size_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="mul_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070065 <xs:enumeration value="TABLE_SIZE"/>
Jerry Ge0fc278b2023-08-11 16:43:30 +000066 <xs:enumeration value="var_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070067 </xs:restriction>
68</xs:simpleType>
69
70<xs:simpleType name="argumentcategory">
71 <xs:restriction base="xs:string">
72 <xs:enumeration value="input"/>
73 <xs:enumeration value="output"/>
74 <xs:enumeration value="attribute"/>
75 <xs:enumeration value="input(MT)|attribute(BI,MI)"/>
76 </xs:restriction>
77</xs:simpleType>
78
Kevin Petit5333c252023-05-16 09:08:48 +010079<xs:simpleType name="argument-type">
80 <xs:restriction base="xs:string">
81 <xs:enumeration value="tensor_t"/>
82 <xs:enumeration value="tensor_list_t"/>
83 <xs:enumeration value="tosa_graph_t"/>
Eric Kunze633a3d92023-07-11 14:10:44 -070084 <xs:enumeration value="String"/>
Eric Kunze526f6c72024-01-12 17:18:42 -080085 <xs:enumeration value="shape_t"/>
86 <xs:enumeration value="shape_list_t"/>
Kevin Petit5333c252023-05-16 09:08:48 +010087 </xs:restriction>
88</xs:simpleType>
89
90<xs:simpleType name="argument-tensor-element-type">
91 <xs:union memberTypes="datatype typename enumtypename"/>
92</xs:simpleType>
93
Eric Kunze58098a72022-08-05 15:40:12 -070094<!-- Element definitions -->
95
Kevin Petit36f2d642022-12-06 11:56:15 +000096<xs:element name="version">
97 <xs:complexType>
98 <xs:attribute name="major" type="xs:int" use="required"/>
99 <xs:attribute name="minor" type="xs:int" use="required"/>
100 <xs:attribute name="patch" type="xs:int" use="required"/>
101 <xs:attribute name="draft" type="xs:boolean" use="required"/>
102 </xs:complexType>
103</xs:element>
104
Eric Kunze58098a72022-08-05 15:40:12 -0700105<xs:element name="profile">
106 <xs:complexType>
107 <xs:simpleContent>
108 <xs:extension base="xs:string">
109 <xs:attribute name="name" type="profile" use="required"/>
110 </xs:extension>
111 </xs:simpleContent>
112 </xs:complexType>
113</xs:element>
114
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000115<xs:element name="level">
116 <xs:complexType>
117 <xs:simpleContent>
118 <xs:extension base="xs:string">
119 <xs:attribute name="name" type="levelname" use="required"/>
120 <xs:attribute name="max_rank" type="xs:int" use="required"/>
121 <xs:attribute name="max_kernel" type="xs:int" use="required"/>
122 <xs:attribute name="max_stride" type="xs:int" use="required"/>
123 <xs:attribute name="max_scale" type="xs:int" use="required"/>
Dominic Symesbc72ba82023-04-24 17:08:02 +0100124 <xs:attribute name="max_log2_size" type="xs:int" use="required"/>
Dominic Symes7b0f1c92023-07-20 14:26:38 +0100125 <xs:attribute name="max_nesting" type="xs:int" use="required"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000126 </xs:extension>
127 </xs:simpleContent>
128 </xs:complexType>
129</xs:element>
130
131<xs:element name="levellimit">
132 <xs:complexType>
133 <xs:attribute name="value" type="xs:string" use="required"/>
134 <xs:attribute name="limit" type="levelmax" use="required"/>
135 </xs:complexType>
136</xs:element>
137
Eric Kunze58098a72022-08-05 15:40:12 -0700138<xs:element name="profiles">
139 <xs:complexType>
140 <xs:sequence>
141 <xs:element ref="profile" maxOccurs="unbounded"/>
142 </xs:sequence>
143 </xs:complexType>
144</xs:element>
145
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000146<xs:element name="levels">
147 <xs:complexType>
148 <xs:sequence>
149 <xs:element ref="level" maxOccurs="unbounded"/>
150 </xs:sequence>
151 </xs:complexType>
152</xs:element>
153
Eric Kunze42085e32023-01-09 11:16:51 -0800154<!--- Valid values for the rank choices, either an integer or a string
155 starting with MAX_RANK (to allow things like MAX_RANK - 1)
156-->
157<xs:simpleType name="validRank">
158 <xs:union>
159 <xs:simpleType>
160 <xs:restriction base="xs:integer"/>
161 </xs:simpleType>
162 <xs:simpleType>
163 <xs:restriction base="xs:string">
164 <xs:pattern value="MAX_RANK.*"/>
165 </xs:restriction>
166 </xs:simpleType>
167 </xs:union>
168</xs:simpleType>
169
170<xs:element name="rank">
171 <xs:complexType>
172 <xs:attribute name="min" type="validRank" use="required"/>
173 <xs:attribute name="max" type="validRank" use="required"/>
174 </xs:complexType>
175</xs:element>
176
Eric Kunze58098a72022-08-05 15:40:12 -0700177<!-- TODO pattern for attribute name -->
178<!-- TODO enumerations/patterns for attribute type -->
179<!-- TODO enumerations/patterns for attribute shape -->
Eric Kunze544227e2023-02-13 16:19:34 -0800180
181<xs:element name="enumval">
182 <xs:complexType>
183 <xs:attribute name="name" type="xs:string"/>
184 <xs:attribute name="value" type="xs:integer"/>
185 <xs:attribute name="description" type="xs:string"/>
186 </xs:complexType>
187</xs:element>
188
189<xs:element name="enum">
190 <xs:complexType>
191 <xs:sequence>
192 <xs:element ref="enumval" minOccurs="1" maxOccurs="unbounded"/>
193 </xs:sequence>
194 <xs:attribute name="name" type="xs:string" use="required"/>
195 <xs:attribute name="description" type="xs:string" use="required"/>
196 </xs:complexType>
197</xs:element>
198
Eric Kunze58098a72022-08-05 15:40:12 -0700199<xs:element name="argument">
200 <xs:complexType>
201 <xs:sequence>
202 <xs:element name="description" type="xs:string"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000203 <xs:element ref="levellimit" minOccurs="0" maxOccurs="unbounded"/>
Eric Kunze42085e32023-01-09 11:16:51 -0800204 <xs:element ref="rank" minOccurs="0" maxOccurs="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700205 </xs:sequence>
206 <xs:attribute name="category" type="argumentcategory" use="required"/>
207 <xs:attribute name="name" type="xs:string" use="required"/>
Kevin Petit5333c252023-05-16 09:08:48 +0100208 <xs:attribute name="type" type="argument-type" use="required"/>
209 <xs:attribute name="tensor-element-type" type="argument-tensor-element-type" use="required"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700210 <xs:attribute name="shape" type="xs:string" use="required"/>
Jerry Ge0fc278b2023-08-11 16:43:30 +0000211 <xs:attribute name="optional" type="xs:boolean"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700212 </xs:complexType>
213</xs:element>
214
215<xs:element name="arguments">
216 <xs:complexType>
217 <xs:sequence>
218 <xs:element ref="argument" maxOccurs="unbounded"/>
219 </xs:sequence>
220 </xs:complexType>
221</xs:element>
222
223<xs:element name="type">
224 <xs:complexType>
225 <xs:attribute name="name" type="typename" use="required"/>
226 </xs:complexType>
227</xs:element>
228
229<xs:element name="types">
230 <xs:complexType>
231 <xs:sequence>
232 <xs:element ref="type" maxOccurs="unbounded"/>
233 </xs:sequence>
234 </xs:complexType>
235</xs:element>
236
237<xs:element name="typesupport">
238 <xs:complexType>
239 <xs:choice minOccurs="0" maxOccurs="unbounded">
240 <xs:element ref="profile"/>
241 </xs:choice>
242 <xs:attribute name="mode" type="xs:string" use="required"/>
243 <xs:attribute name="in_t" type="datatype"/>
244 <xs:attribute name="out_t" type="datatype"/>
245 <xs:attribute name="in_out_t" type="datatype"/>
246 <xs:attribute name="weight_t" type="datatype"/>
247 <xs:attribute name="acc_t" type="datatype"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700248 <xs:attribute name="resize_t" type="datatype"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700249 <xs:attribute name="table_t" type="datatype"/>
250 <xs:attribute name="TABLE_SIZE" type="xs:int"/>
251 </xs:complexType>
252</xs:element>
253
254<xs:element name="operator">
255 <xs:complexType>
256 <xs:sequence>
257 <xs:element name="name"/> <!-- TODO pattern -->
258 <xs:element ref="arguments"/>
259 <xs:element ref="types" minOccurs="0" />
260 <xs:element ref="typesupport" minOccurs="0" maxOccurs="unbounded"/>
261 </xs:sequence>
262 </xs:complexType>
263</xs:element>
264
265<xs:element name="operatorgroup">
266 <xs:complexType>
267 <xs:sequence>
268 <xs:element ref="operator" maxOccurs="unbounded"/>
269 </xs:sequence>
270 <xs:attribute name="name" type="xs:string" use="required"/>
271 </xs:complexType>
272</xs:element>
273
274<xs:element name="operators">
275 <xs:complexType>
276 <xs:sequence>
277 <xs:element ref="operatorgroup" maxOccurs="unbounded"/>
278 </xs:sequence>
279 </xs:complexType>
280</xs:element>
281
282<xs:element name="tosa">
283 <xs:complexType>
284 <xs:sequence>
Kevin Petit36f2d642022-12-06 11:56:15 +0000285 <xs:element ref="version" minOccurs="1" maxOccurs="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700286 <xs:element ref="profiles"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000287 <xs:element ref="levels"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700288 <xs:element ref="operators"/>
Eric Kunze544227e2023-02-13 16:19:34 -0800289 <xs:element ref="enum" maxOccurs="unbounded"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700290 </xs:sequence>
291 </xs:complexType>
292</xs:element>
293
294</xs:schema>