blob: 1a37bc4d4929abb085f4ff5802230f8e462bc3ec [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"/>
27 </xs:restriction>
28</xs:simpleType>
29
Eric Kunze58098a72022-08-05 15:40:12 -070030<xs:simpleType name="datatype">
31 <xs:restriction base="xs:string">
32 <xs:enumeration value="bool_t"/>
33 <xs:enumeration value="int4_t"/>
34 <xs:enumeration value="int8_t"/>
35 <xs:enumeration value="uint8_t"/>
36 <xs:enumeration value="int16_t"/>
37 <xs:enumeration value="uint16_t"/>
38 <xs:enumeration value="int32_t"/>
39 <xs:enumeration value="int48_t"/>
40 <xs:enumeration value="fp16_t"/>
41 <xs:enumeration value="bf16_t"/>
42 <xs:enumeration value="fp32_t"/>
43 </xs:restriction>
44</xs:simpleType>
45
46<xs:simpleType name="typename">
47 <xs:restriction base="xs:string">
48 <xs:enumeration value="in_t"/>
49 <xs:enumeration value="out_t"/>
50 <xs:enumeration value="in_out_t"/>
51 <xs:enumeration value="acc_t"/>
52 <xs:enumeration value="weight_t"/>
53 <xs:enumeration value="cmp_t"/>
54 <xs:enumeration value="resize_t"/>
55 <xs:enumeration value="index_t"/>
56 <xs:enumeration value="value_t"/>
57 <xs:enumeration value="table_t"/>
58 <xs:enumeration value="TABLE_SIZE"/>
59 </xs:restriction>
60</xs:simpleType>
61
62<xs:simpleType name="argumentcategory">
63 <xs:restriction base="xs:string">
64 <xs:enumeration value="input"/>
65 <xs:enumeration value="output"/>
66 <xs:enumeration value="attribute"/>
67 <xs:enumeration value="input(MT)|attribute(BI,MI)"/>
68 </xs:restriction>
69</xs:simpleType>
70
71<!-- Element definitions -->
72
73<xs:element name="profile">
74 <xs:complexType>
75 <xs:simpleContent>
76 <xs:extension base="xs:string">
77 <xs:attribute name="name" type="profile" use="required"/>
78 </xs:extension>
79 </xs:simpleContent>
80 </xs:complexType>
81</xs:element>
82
Dominic Symese4d6a1b2022-11-04 18:00:03 +000083<xs:element name="level">
84 <xs:complexType>
85 <xs:simpleContent>
86 <xs:extension base="xs:string">
87 <xs:attribute name="name" type="levelname" use="required"/>
88 <xs:attribute name="max_rank" type="xs:int" use="required"/>
89 <xs:attribute name="max_kernel" type="xs:int" use="required"/>
90 <xs:attribute name="max_stride" type="xs:int" use="required"/>
91 <xs:attribute name="max_scale" type="xs:int" use="required"/>
92 </xs:extension>
93 </xs:simpleContent>
94 </xs:complexType>
95</xs:element>
96
97<xs:element name="levellimit">
98 <xs:complexType>
99 <xs:attribute name="value" type="xs:string" use="required"/>
100 <xs:attribute name="limit" type="levelmax" use="required"/>
101 </xs:complexType>
102</xs:element>
103
Eric Kunze58098a72022-08-05 15:40:12 -0700104<xs:element name="profiles">
105 <xs:complexType>
106 <xs:sequence>
107 <xs:element ref="profile" maxOccurs="unbounded"/>
108 </xs:sequence>
109 </xs:complexType>
110</xs:element>
111
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000112<xs:element name="levels">
113 <xs:complexType>
114 <xs:sequence>
115 <xs:element ref="level" maxOccurs="unbounded"/>
116 </xs:sequence>
117 </xs:complexType>
118</xs:element>
119
Eric Kunze58098a72022-08-05 15:40:12 -0700120<!-- TODO pattern for attribute name -->
121<!-- TODO enumerations/patterns for attribute type -->
122<!-- TODO enumerations/patterns for attribute shape -->
123<xs:element name="argument">
124 <xs:complexType>
125 <xs:sequence>
126 <xs:element name="description" type="xs:string"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000127 <xs:element ref="levellimit" minOccurs="0" maxOccurs="unbounded"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700128 </xs:sequence>
129 <xs:attribute name="category" type="argumentcategory" use="required"/>
130 <xs:attribute name="name" type="xs:string" use="required"/>
131 <xs:attribute name="type" type="xs:string" use="required"/>
132 <xs:attribute name="shape" type="xs:string" use="required"/>
133 </xs:complexType>
134</xs:element>
135
136<xs:element name="arguments">
137 <xs:complexType>
138 <xs:sequence>
139 <xs:element ref="argument" maxOccurs="unbounded"/>
140 </xs:sequence>
141 </xs:complexType>
142</xs:element>
143
144<xs:element name="type">
145 <xs:complexType>
146 <xs:attribute name="name" type="typename" use="required"/>
147 </xs:complexType>
148</xs:element>
149
150<xs:element name="types">
151 <xs:complexType>
152 <xs:sequence>
153 <xs:element ref="type" maxOccurs="unbounded"/>
154 </xs:sequence>
155 </xs:complexType>
156</xs:element>
157
158<xs:element name="typesupport">
159 <xs:complexType>
160 <xs:choice minOccurs="0" maxOccurs="unbounded">
161 <xs:element ref="profile"/>
162 </xs:choice>
163 <xs:attribute name="mode" type="xs:string" use="required"/>
164 <xs:attribute name="in_t" type="datatype"/>
165 <xs:attribute name="out_t" type="datatype"/>
166 <xs:attribute name="in_out_t" type="datatype"/>
167 <xs:attribute name="weight_t" type="datatype"/>
168 <xs:attribute name="acc_t" type="datatype"/>
169 <xs:attribute name="cmp_t" type="datatype"/>
170 <xs:attribute name="resize_t" type="datatype"/>
171 <xs:attribute name="index_t" type="datatype"/>
172 <xs:attribute name="value_t" type="datatype"/>
173 <xs:attribute name="table_t" type="datatype"/>
174 <xs:attribute name="TABLE_SIZE" type="xs:int"/>
175 </xs:complexType>
176</xs:element>
177
178<xs:element name="operator">
179 <xs:complexType>
180 <xs:sequence>
181 <xs:element name="name"/> <!-- TODO pattern -->
182 <xs:element ref="arguments"/>
183 <xs:element ref="types" minOccurs="0" />
184 <xs:element ref="typesupport" minOccurs="0" maxOccurs="unbounded"/>
185 </xs:sequence>
186 </xs:complexType>
187</xs:element>
188
189<xs:element name="operatorgroup">
190 <xs:complexType>
191 <xs:sequence>
192 <xs:element ref="operator" maxOccurs="unbounded"/>
193 </xs:sequence>
194 <xs:attribute name="name" type="xs:string" use="required"/>
195 </xs:complexType>
196</xs:element>
197
198<xs:element name="operators">
199 <xs:complexType>
200 <xs:sequence>
201 <xs:element ref="operatorgroup" maxOccurs="unbounded"/>
202 </xs:sequence>
203 </xs:complexType>
204</xs:element>
205
206<xs:element name="tosa">
207 <xs:complexType>
208 <xs:sequence>
209 <xs:element ref="profiles"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000210 <xs:element ref="levels"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700211 <xs:element ref="operators"/>
212 </xs:sequence>
213 </xs:complexType>
214</xs:element>
215
216</xs:schema>