blob: 6f0d3b5f096ad65f540633180cb00feda227a054 [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"/>
Eric Kunze58098a72022-08-05 15:40:12 -070053 <xs:enumeration value="resize_t"/>
Eric Kunze58098a72022-08-05 15:40:12 -070054 <xs:enumeration value="value_t"/>
55 <xs:enumeration value="table_t"/>
56 <xs:enumeration value="TABLE_SIZE"/>
57 </xs:restriction>
58</xs:simpleType>
59
60<xs:simpleType name="argumentcategory">
61 <xs:restriction base="xs:string">
62 <xs:enumeration value="input"/>
63 <xs:enumeration value="output"/>
64 <xs:enumeration value="attribute"/>
65 <xs:enumeration value="input(MT)|attribute(BI,MI)"/>
66 </xs:restriction>
67</xs:simpleType>
68
69<!-- Element definitions -->
70
Kevin Petit36f2d642022-12-06 11:56:15 +000071<xs:element name="version">
72 <xs:complexType>
73 <xs:attribute name="major" type="xs:int" use="required"/>
74 <xs:attribute name="minor" type="xs:int" use="required"/>
75 <xs:attribute name="patch" type="xs:int" use="required"/>
76 <xs:attribute name="draft" type="xs:boolean" use="required"/>
77 </xs:complexType>
78</xs:element>
79
Eric Kunze58098a72022-08-05 15:40:12 -070080<xs:element name="profile">
81 <xs:complexType>
82 <xs:simpleContent>
83 <xs:extension base="xs:string">
84 <xs:attribute name="name" type="profile" use="required"/>
85 </xs:extension>
86 </xs:simpleContent>
87 </xs:complexType>
88</xs:element>
89
Dominic Symese4d6a1b2022-11-04 18:00:03 +000090<xs:element name="level">
91 <xs:complexType>
92 <xs:simpleContent>
93 <xs:extension base="xs:string">
94 <xs:attribute name="name" type="levelname" use="required"/>
95 <xs:attribute name="max_rank" type="xs:int" use="required"/>
96 <xs:attribute name="max_kernel" type="xs:int" use="required"/>
97 <xs:attribute name="max_stride" type="xs:int" use="required"/>
98 <xs:attribute name="max_scale" type="xs:int" use="required"/>
99 </xs:extension>
100 </xs:simpleContent>
101 </xs:complexType>
102</xs:element>
103
104<xs:element name="levellimit">
105 <xs:complexType>
106 <xs:attribute name="value" type="xs:string" use="required"/>
107 <xs:attribute name="limit" type="levelmax" use="required"/>
108 </xs:complexType>
109</xs:element>
110
Eric Kunze58098a72022-08-05 15:40:12 -0700111<xs:element name="profiles">
112 <xs:complexType>
113 <xs:sequence>
114 <xs:element ref="profile" maxOccurs="unbounded"/>
115 </xs:sequence>
116 </xs:complexType>
117</xs:element>
118
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000119<xs:element name="levels">
120 <xs:complexType>
121 <xs:sequence>
122 <xs:element ref="level" maxOccurs="unbounded"/>
123 </xs:sequence>
124 </xs:complexType>
125</xs:element>
126
Eric Kunze58098a72022-08-05 15:40:12 -0700127<!-- TODO pattern for attribute name -->
128<!-- TODO enumerations/patterns for attribute type -->
129<!-- TODO enumerations/patterns for attribute shape -->
130<xs:element name="argument">
131 <xs:complexType>
132 <xs:sequence>
133 <xs:element name="description" type="xs:string"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000134 <xs:element ref="levellimit" minOccurs="0" maxOccurs="unbounded"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700135 </xs:sequence>
136 <xs:attribute name="category" type="argumentcategory" use="required"/>
137 <xs:attribute name="name" type="xs:string" use="required"/>
138 <xs:attribute name="type" type="xs:string" use="required"/>
139 <xs:attribute name="shape" type="xs:string" use="required"/>
140 </xs:complexType>
141</xs:element>
142
143<xs:element name="arguments">
144 <xs:complexType>
145 <xs:sequence>
146 <xs:element ref="argument" maxOccurs="unbounded"/>
147 </xs:sequence>
148 </xs:complexType>
149</xs:element>
150
151<xs:element name="type">
152 <xs:complexType>
153 <xs:attribute name="name" type="typename" use="required"/>
154 </xs:complexType>
155</xs:element>
156
157<xs:element name="types">
158 <xs:complexType>
159 <xs:sequence>
160 <xs:element ref="type" maxOccurs="unbounded"/>
161 </xs:sequence>
162 </xs:complexType>
163</xs:element>
164
165<xs:element name="typesupport">
166 <xs:complexType>
167 <xs:choice minOccurs="0" maxOccurs="unbounded">
168 <xs:element ref="profile"/>
169 </xs:choice>
170 <xs:attribute name="mode" type="xs:string" use="required"/>
171 <xs:attribute name="in_t" type="datatype"/>
172 <xs:attribute name="out_t" type="datatype"/>
173 <xs:attribute name="in_out_t" type="datatype"/>
174 <xs:attribute name="weight_t" type="datatype"/>
175 <xs:attribute name="acc_t" type="datatype"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700176 <xs:attribute name="resize_t" type="datatype"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700177 <xs:attribute name="value_t" type="datatype"/>
178 <xs:attribute name="table_t" type="datatype"/>
179 <xs:attribute name="TABLE_SIZE" type="xs:int"/>
180 </xs:complexType>
181</xs:element>
182
183<xs:element name="operator">
184 <xs:complexType>
185 <xs:sequence>
186 <xs:element name="name"/> <!-- TODO pattern -->
187 <xs:element ref="arguments"/>
188 <xs:element ref="types" minOccurs="0" />
189 <xs:element ref="typesupport" minOccurs="0" maxOccurs="unbounded"/>
190 </xs:sequence>
191 </xs:complexType>
192</xs:element>
193
194<xs:element name="operatorgroup">
195 <xs:complexType>
196 <xs:sequence>
197 <xs:element ref="operator" maxOccurs="unbounded"/>
198 </xs:sequence>
199 <xs:attribute name="name" type="xs:string" use="required"/>
200 </xs:complexType>
201</xs:element>
202
203<xs:element name="operators">
204 <xs:complexType>
205 <xs:sequence>
206 <xs:element ref="operatorgroup" maxOccurs="unbounded"/>
207 </xs:sequence>
208 </xs:complexType>
209</xs:element>
210
211<xs:element name="tosa">
212 <xs:complexType>
213 <xs:sequence>
Kevin Petit36f2d642022-12-06 11:56:15 +0000214 <xs:element ref="version" minOccurs="1" maxOccurs="1"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700215 <xs:element ref="profiles"/>
Dominic Symese4d6a1b2022-11-04 18:00:03 +0000216 <xs:element ref="levels"/>
Eric Kunze58098a72022-08-05 15:40:12 -0700217 <xs:element ref="operators"/>
218 </xs:sequence>
219 </xs:complexType>
220</xs:element>
221
222</xs:schema>