xref: /aosp_15_r20/external/mesa3d/src/freedreno/registers/text-format.txt (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker1. Introduction to rules-ng-ng text format
2*61046927SAndroid Build Coastguard Worker
3*61046927SAndroid Build Coastguard WorkerThis-specification defines a text format that can be converted to and from rules-ng-ng XML.
4*61046927SAndroid Build Coastguard WorkerIt is intended to allow to create rules-ng-ng files with much less typing and with a more readable text.
5*61046927SAndroid Build Coastguard Workerxml2text can convert rules-ng-ng XML to this text format
6*61046927SAndroid Build Coastguard Workertext2xml can convert this text format to rules-ng-ng XML
7*61046927SAndroid Build Coastguard Worker
8*61046927SAndroid Build Coastguard WorkerThis specification is an addendum to the rules-ng-ng specification and assumes familiarity with it.
9*61046927SAndroid Build Coastguard Worker
10*61046927SAndroid Build Coastguard Worker2. Format
11*61046927SAndroid Build Coastguard Worker
12*61046927SAndroid Build Coastguard Worker2.1. Line format
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard WorkerThe initial indentation of a line is divided by 8 and the result determines the position in the document structure (similar to the Python language).
15*61046927SAndroid Build Coastguard WorkerA "//" anywhere in the line causes the rest to be converted to an XML comment (like C++)
16*61046927SAndroid Build Coastguard WorkerA line starting with ":" creates a <doc> tag with the rest of the line (excluding anything starting with //).
17*61046927SAndroid Build Coastguard WorkerThe content of multiple lines starting with ":" is merged in a single <doc> tag.
18*61046927SAndroid Build Coastguard Worker
19*61046927SAndroid Build Coastguard Worker2.2. Tokenization
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard WorkerThe line is then tokenized.
22*61046927SAndroid Build Coastguard WorkerToken are generally continuous strings on non-whitespace characters, with some exceptions
23*61046927SAndroid Build Coastguard WorkerSome characters (such as ":", "=" and "-") form a single-character token.
24*61046927SAndroid Build Coastguard WorkerText within double quotes generates a <brief> tag.
25*61046927SAndroid Build Coastguard WorkerAny token formatted as ATTR(VALUE) generates an ATTR="VALUE" attribute. No whitespace allowed between ATTR and the '(' character.
26*61046927SAndroid Build Coastguard WorkerAny token formatted as (VALUE) generates a variants="VALUE" attribute.
27*61046927SAndroid Build Coastguard WorkerAny token formatted as (VARSET=VALUE) generates a varset="VARSET" variants="VALUE" attribute.
28*61046927SAndroid Build Coastguard Worker
29*61046927SAndroid Build Coastguard Worker2.3. Special token sequences
30*61046927SAndroid Build Coastguard Worker
31*61046927SAndroid Build Coastguard WorkerThese sequences are recognized and extracted before matching the line format:
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard Worker: NUM
34*61046927SAndroid Build Coastguard Worker	set REGLIKE to regNUM
35*61046927SAndroid Build Coastguard Worker	you must specify a type if the reg is anonymous
36*61046927SAndroid Build Coastguard Worker	the : is recognized only if it is the third or successive token (and not the last) to avoid ambiguity with bitfields and generic tags
37*61046927SAndroid Build Coastguard Worker
38*61046927SAndroid Build Coastguard Worker{ STRIDE }
39*61046927SAndroid Build Coastguard Worker	stride="STRIDE" attribute
40*61046927SAndroid Build Coastguard Worker
41*61046927SAndroid Build Coastguard Worker[ LENGTH ]
42*61046927SAndroid Build Coastguard Worker	length="LENGTH" attribute
43*61046927SAndroid Build Coastguard Worker
44*61046927SAndroid Build Coastguard Worker!FLAGS
45*61046927SAndroid Build Coastguard Worker	access="FLAGS"
46*61046927SAndroid Build Coastguard Worker	no whitespace allowed after '!'
47*61046927SAndroid Build Coastguard Worker
48*61046927SAndroid Build Coastguard Worker:=
49*61046927SAndroid Build Coastguard Worker	at the end of the line
50*61046927SAndroid Build Coastguard Worker	set REGLIKE to "stripe"
51*61046927SAndroid Build Coastguard Worker
52*61046927SAndroid Build Coastguard Worker=
53*61046927SAndroid Build Coastguard Worker	at the end of the line
54*61046927SAndroid Build Coastguard Worker	set REGLIKE to "array"
55*61046927SAndroid Build Coastguard Worker
56*61046927SAndroid Build Coastguard Workerinline
57*61046927SAndroid Build Coastguard Worker	at the beginning of the line
58*61046927SAndroid Build Coastguard Worker	inline="yes" attribute
59*61046927SAndroid Build Coastguard Worker
60*61046927SAndroid Build Coastguard Worker2.4. Line patterns
61*61046927SAndroid Build Coastguard Worker
62*61046927SAndroid Build Coastguard WorkerThe following line patterns are understood.
63*61046927SAndroid Build Coastguard WorkerOnly word tokens are used to match lines.
64*61046927SAndroid Build Coastguard WorkerAll tokens with special meaning are treated separately as described above.
65*61046927SAndroid Build Coastguard Worker[FOO] means that FOO is optional
66*61046927SAndroid Build Coastguard Worker
67*61046927SAndroid Build Coastguard Worker#import "FILE"
68*61046927SAndroid Build Coastguard Worker	<import file="FILE"/>
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard Worker#pragma regNUM
71*61046927SAndroid Build Coastguard Worker	REGLIKE is now set by default to regNUM instead of reg32
72*61046927SAndroid Build Coastguard Worker
73*61046927SAndroid Build Coastguard Worker@TAG [NAME]
74*61046927SAndroid Build Coastguard Worker	<TAG name="NAME"/>
75*61046927SAndroid Build Coastguard Worker	use this if there are no children
76*61046927SAndroid Build Coastguard Worker
77*61046927SAndroid Build Coastguard WorkerTAG [NAME] :
78*61046927SAndroid Build Coastguard Worker	<TAG name="NAME">
79*61046927SAndroid Build Coastguard Worker	use this if there are children
80*61046927SAndroid Build Coastguard Worker
81*61046927SAndroid Build Coastguard WorkerTOKEN
82*61046927SAndroid Build Coastguard Worker	<value value="TOKEN" /> if inside a reg or enum and TOKEN starts with a digit
83*61046927SAndroid Build Coastguard Worker	<value name="TOKEN" /> if inside a reg or enum and TOKEN does not start with a digit
84*61046927SAndroid Build Coastguard Worker	<REGLIKE offset="TOKEN" /> otherwise
85*61046927SAndroid Build Coastguard Worker
86*61046927SAndroid Build Coastguard WorkerPOS NAME
87*61046927SAndroid Build Coastguard Worker	<bitfield low="POS" high="POS" name="NAME"/> if inside a reg or bitset
88*61046927SAndroid Build Coastguard Worker	<REGLIKE offset="POS" name="NAME"> otherwise
89*61046927SAndroid Build Coastguard Worker
90*61046927SAndroid Build Coastguard WorkerLOW - HIGH NAME [TYPE]
91*61046927SAndroid Build Coastguard Worker	<bitfield low="LOW" high="HIGH" name="NAME" type="TYPE"/>
92*61046927SAndroid Build Coastguard Worker
93*61046927SAndroid Build Coastguard WorkerVALUE = NAME
94*61046927SAndroid Build Coastguard Worker	<value value="VALUE" name="NAME"/>
95*61046927SAndroid Build Coastguard Worker
96*61046927SAndroid Build Coastguard Workeruse WHAT NAME
97*61046927SAndroid Build Coastguard Worker	<use-WHAT name="NAME" />
98*61046927SAndroid Build Coastguard Worker
99*61046927SAndroid Build Coastguard WorkerOFFSET NAME [TYPE]
100*61046927SAndroid Build Coastguard Worker	<REGLIKE offset="OFFSET" name="NAME" type="TYPE">
101*61046927SAndroid Build Coastguard Worker
102