28 struct tdesc_feature *feature;
29 tdesc_type *element_type, *field_type;
30 tdesc_type_with_fields *type_with_fields;
34 element_type = tdesc_named_type (feature,
"uint128");
35 tdesc_create_vector (feature,
"svevqu", element_type, scale);
37 element_type = tdesc_named_type (feature,
"int128");
38 tdesc_create_vector (feature,
"svevqs", element_type, scale);
40 element_type = tdesc_named_type (feature,
"ieee_double");
41 tdesc_create_vector (feature,
"svevdf", element_type, 2 * scale);
43 element_type = tdesc_named_type (feature,
"uint64");
44 tdesc_create_vector (feature,
"svevdu", element_type, 2 * scale);
46 element_type = tdesc_named_type (feature,
"int64");
47 tdesc_create_vector (feature,
"svevds", element_type, 2 * scale);
49 element_type = tdesc_named_type (feature,
"ieee_single");
50 tdesc_create_vector (feature,
"svevsf", element_type, 4 * scale);
52 element_type = tdesc_named_type (feature,
"uint32");
53 tdesc_create_vector (feature,
"svevsu", element_type, 4 * scale);
55 element_type = tdesc_named_type (feature,
"int32");
56 tdesc_create_vector (feature,
"svevss", element_type, 4 * scale);
58 element_type = tdesc_named_type (feature,
"ieee_half");
59 tdesc_create_vector (feature,
"svevhf", element_type, 8 * scale);
61 element_type = tdesc_named_type (feature,
"uint16");
62 tdesc_create_vector (feature,
"svevhu", element_type, 8 * scale);
64 element_type = tdesc_named_type (feature,
"int16");
65 tdesc_create_vector (feature,
"svevhs", element_type, 8 * scale);
67 element_type = tdesc_named_type (feature,
"uint8");
68 tdesc_create_vector (feature,
"svevbu", element_type, 16 * scale);
70 element_type = tdesc_named_type (feature,
"int8");
71 tdesc_create_vector (feature,
"svevbs", element_type, 16 * scale);
73 type_with_fields = tdesc_create_union (feature,
"svevnq");
74 field_type = tdesc_named_type (feature,
"svevqu");
75 tdesc_add_field (type_with_fields,
"u", field_type);
76 field_type = tdesc_named_type (feature,
"svevqs");
77 tdesc_add_field (type_with_fields,
"s", field_type);
79 type_with_fields = tdesc_create_union (feature,
"svevnd");
80 field_type = tdesc_named_type (feature,
"svevdf");
81 tdesc_add_field (type_with_fields,
"f", field_type);
82 field_type = tdesc_named_type (feature,
"svevdu");
83 tdesc_add_field (type_with_fields,
"u", field_type);
84 field_type = tdesc_named_type (feature,
"svevds");
85 tdesc_add_field (type_with_fields,
"s", field_type);
87 type_with_fields = tdesc_create_union (feature,
"svevns");
88 field_type = tdesc_named_type (feature,
"svevsf");
89 tdesc_add_field (type_with_fields,
"f", field_type);
90 field_type = tdesc_named_type (feature,
"svevsu");
91 tdesc_add_field (type_with_fields,
"u", field_type);
92 field_type = tdesc_named_type (feature,
"svevss");
93 tdesc_add_field (type_with_fields,
"s", field_type);
95 type_with_fields = tdesc_create_union (feature,
"svevnh");
96 field_type = tdesc_named_type (feature,
"svevhf");
97 tdesc_add_field (type_with_fields,
"f", field_type);
98 field_type = tdesc_named_type (feature,
"svevhu");
99 tdesc_add_field (type_with_fields,
"u", field_type);
100 field_type = tdesc_named_type (feature,
"svevhs");
101 tdesc_add_field (type_with_fields,
"s", field_type);
103 type_with_fields = tdesc_create_union (feature,
"svevnb");
104 field_type = tdesc_named_type (feature,
"svevbu");
105 tdesc_add_field (type_with_fields,
"u", field_type);
106 field_type = tdesc_named_type (feature,
"svevbs");
107 tdesc_add_field (type_with_fields,
"s", field_type);
109 type_with_fields = tdesc_create_union (feature,
"svev");
110 field_type = tdesc_named_type (feature,
"svevnq");
111 tdesc_add_field (type_with_fields,
"q", field_type);
112 field_type = tdesc_named_type (feature,
"svevnd");
113 tdesc_add_field (type_with_fields,
"d", field_type);
114 field_type = tdesc_named_type (feature,
"svevns");
115 tdesc_add_field (type_with_fields,
"s", field_type);
116 field_type = tdesc_named_type (feature,
"svevnh");
117 tdesc_add_field (type_with_fields,
"h", field_type);
118 field_type = tdesc_named_type (feature,
"svevnb");
119 tdesc_add_field (type_with_fields,
"b", field_type);
121 field_type = tdesc_named_type (feature,
"uint8");
122 tdesc_create_vector (feature,
"svep", field_type, 2 * scale);
125 type_with_fields = tdesc_create_flags (feature,
"fpsr_flags", 4);
126 tdesc_add_flag (type_with_fields, 0,
"IOC");
127 tdesc_add_flag (type_with_fields, 1,
"DZC");
128 tdesc_add_flag (type_with_fields, 2,
"OFC");
129 tdesc_add_flag (type_with_fields, 3,
"UFC");
130 tdesc_add_flag (type_with_fields, 4,
"IXC");
131 tdesc_add_flag (type_with_fields, 7,
"IDC");
132 tdesc_add_flag (type_with_fields, 27,
"QC");
133 tdesc_add_flag (type_with_fields, 28,
"V");
134 tdesc_add_flag (type_with_fields, 29,
"C");
135 tdesc_add_flag (type_with_fields, 30,
"Z");
136 tdesc_add_flag (type_with_fields, 31,
"N");
139 type_with_fields = tdesc_create_flags (feature,
"fpcr_flags", 4);
140 tdesc_add_flag (type_with_fields, 0,
"FIZ");
141 tdesc_add_flag (type_with_fields, 1,
"AH");
142 tdesc_add_flag (type_with_fields, 2,
"NEP");
143 tdesc_add_flag (type_with_fields, 8,
"IOE");
144 tdesc_add_flag (type_with_fields, 9,
"DZE");
145 tdesc_add_flag (type_with_fields, 10,
"OFE");
146 tdesc_add_flag (type_with_fields, 11,
"UFE");
147 tdesc_add_flag (type_with_fields, 12,
"IXE");
148 tdesc_add_flag (type_with_fields, 13,
"EBF");
149 tdesc_add_flag (type_with_fields, 15,
"IDE");
150 tdesc_add_bitfield (type_with_fields,
"Len", 16, 18);
151 tdesc_add_flag (type_with_fields, 19,
"FZ16");
152 tdesc_add_bitfield (type_with_fields,
"Stride", 20, 21);
153 tdesc_add_bitfield (type_with_fields,
"RMode", 22, 23);
154 tdesc_add_flag (type_with_fields, 24,
"FZ");
155 tdesc_add_flag (type_with_fields, 25,
"DN");
156 tdesc_add_flag (type_with_fields, 26,
"AHP");
158 tdesc_create_reg (feature,
"z0",
regnum++, 1, NULL, 128 * scale,
"svev");
159 tdesc_create_reg (feature,
"z1",
regnum++, 1, NULL, 128 * scale,
"svev");
160 tdesc_create_reg (feature,
"z2",
regnum++, 1, NULL, 128 * scale,
"svev");
161 tdesc_create_reg (feature,
"z3",
regnum++, 1, NULL, 128 * scale,
"svev");
162 tdesc_create_reg (feature,
"z4",
regnum++, 1, NULL, 128 * scale,
"svev");
163 tdesc_create_reg (feature,
"z5",
regnum++, 1, NULL, 128 * scale,
"svev");
164 tdesc_create_reg (feature,
"z6",
regnum++, 1, NULL, 128 * scale,
"svev");
165 tdesc_create_reg (feature,
"z7",
regnum++, 1, NULL, 128 * scale,
"svev");
166 tdesc_create_reg (feature,
"z8",
regnum++, 1, NULL, 128 * scale,
"svev");
167 tdesc_create_reg (feature,
"z9",
regnum++, 1, NULL, 128 * scale,
"svev");
168 tdesc_create_reg (feature,
"z10",
regnum++, 1, NULL, 128 * scale,
"svev");
169 tdesc_create_reg (feature,
"z11",
regnum++, 1, NULL, 128 * scale,
"svev");
170 tdesc_create_reg (feature,
"z12",
regnum++, 1, NULL, 128 * scale,
"svev");
171 tdesc_create_reg (feature,
"z13",
regnum++, 1, NULL, 128 * scale,
"svev");
172 tdesc_create_reg (feature,
"z14",
regnum++, 1, NULL, 128 * scale,
"svev");
173 tdesc_create_reg (feature,
"z15",
regnum++, 1, NULL, 128 * scale,
"svev");
174 tdesc_create_reg (feature,
"z16",
regnum++, 1, NULL, 128 * scale,
"svev");
175 tdesc_create_reg (feature,
"z17",
regnum++, 1, NULL, 128 * scale,
"svev");
176 tdesc_create_reg (feature,
"z18",
regnum++, 1, NULL, 128 * scale,
"svev");
177 tdesc_create_reg (feature,
"z19",
regnum++, 1, NULL, 128 * scale,
"svev");
178 tdesc_create_reg (feature,
"z20",
regnum++, 1, NULL, 128 * scale,
"svev");
179 tdesc_create_reg (feature,
"z21",
regnum++, 1, NULL, 128 * scale,
"svev");
180 tdesc_create_reg (feature,
"z22",
regnum++, 1, NULL, 128 * scale,
"svev");
181 tdesc_create_reg (feature,
"z23",
regnum++, 1, NULL, 128 * scale,
"svev");
182 tdesc_create_reg (feature,
"z24",
regnum++, 1, NULL, 128 * scale,
"svev");
183 tdesc_create_reg (feature,
"z25",
regnum++, 1, NULL, 128 * scale,
"svev");
184 tdesc_create_reg (feature,
"z26",
regnum++, 1, NULL, 128 * scale,
"svev");
185 tdesc_create_reg (feature,
"z27",
regnum++, 1, NULL, 128 * scale,
"svev");
186 tdesc_create_reg (feature,
"z28",
regnum++, 1, NULL, 128 * scale,
"svev");
187 tdesc_create_reg (feature,
"z29",
regnum++, 1, NULL, 128 * scale,
"svev");
188 tdesc_create_reg (feature,
"z30",
regnum++, 1, NULL, 128 * scale,
"svev");
189 tdesc_create_reg (feature,
"z31",
regnum++, 1, NULL, 128 * scale,
"svev");
190 tdesc_create_reg (feature,
"fpsr",
regnum++, 1, NULL, 32,
"fpsr_flags");
191 tdesc_create_reg (feature,
"fpcr",
regnum++, 1, NULL, 32,
"fpcr_flags");
192 tdesc_create_reg (feature,
"p0",
regnum++, 1, NULL, 16 * scale,
"svep");
193 tdesc_create_reg (feature,
"p1",
regnum++, 1, NULL, 16 * scale,
"svep");
194 tdesc_create_reg (feature,
"p2",
regnum++, 1, NULL, 16 * scale,
"svep");
195 tdesc_create_reg (feature,
"p3",
regnum++, 1, NULL, 16 * scale,
"svep");
196 tdesc_create_reg (feature,
"p4",
regnum++, 1, NULL, 16 * scale,
"svep");
197 tdesc_create_reg (feature,
"p5",
regnum++, 1, NULL, 16 * scale,
"svep");
198 tdesc_create_reg (feature,
"p6",
regnum++, 1, NULL, 16 * scale,
"svep");
199 tdesc_create_reg (feature,
"p7",
regnum++, 1, NULL, 16 * scale,
"svep");
200 tdesc_create_reg (feature,
"p8",
regnum++, 1, NULL, 16 * scale,
"svep");
201 tdesc_create_reg (feature,
"p9",
regnum++, 1, NULL, 16 * scale,
"svep");
202 tdesc_create_reg (feature,
"p10",
regnum++, 1, NULL, 16 * scale,
"svep");
203 tdesc_create_reg (feature,
"p11",
regnum++, 1, NULL, 16 * scale,
"svep");
204 tdesc_create_reg (feature,
"p12",
regnum++, 1, NULL, 16 * scale,
"svep");
205 tdesc_create_reg (feature,
"p13",
regnum++, 1, NULL, 16 * scale,
"svep");
206 tdesc_create_reg (feature,
"p14",
regnum++, 1, NULL, 16 * scale,
"svep");
207 tdesc_create_reg (feature,
"p15",
regnum++, 1, NULL, 16 * scale,
"svep");
208 tdesc_create_reg (feature,
"ffr",
regnum++, 1, NULL, 16 * scale,
"svep");
209 tdesc_create_reg (feature,
"vg",
regnum++, 1, NULL, 64,
"int");