Lines Matching refs:elem

234 static void printdelem (struct rnndelem *elem, uint64_t offset, const char *str) {
238 if (elem->varinfo.dead)
241 use_offset_fxn = elem->offsets || elem->doffset || elem->doffsets;
242 assert((!!elem->offsets + !!elem->doffset + !!elem->doffsets) <= 1);
245 asprintf(&offsetfn, "__offset_%s", elem->name);
247 if (elem->length != 1) {
248 ADDARRAY(elems, elem);
252 if (elem->name) {
255 asprintf(&regname, "REG_%s_%s", elem->fullname, str);
257 asprintf(&regname, "REG_%s", elem->fullname);
261 FILE *dst = findfout(elem->file);
266 if (elem->index)
267 fprintf(dst, "enum %s", elem->index->name);
272 if (elem->doffset) {
273 fprintf(dst, "\treturn (%s) + (%#" PRIx64 "*idx);\n", elem->doffset, elem->stride);
275 int valuesnum = elem->doffsets ? elem->doffsetsnum : elem->offsetsnum;
281 if (elem->index) {
283 for (j = 0; j < elem->index->valsnum; j++) {
284 if (elem->index->vals[j]->value == i) {
285 val = elem->index->vals[j];
295 if (elem->offsets) {
296 fprintf(dst, ": return 0x%08"PRIx64";\n", elem->offsets[i]);
298 fprintf(dst, ": return (%s);\n", elem->doffsets[i]);
317 fprintf (dst, "0x%08"PRIx64"", offset + elem->offset);
326 printdef (regname, 0, 0, offset + elem->offset, elem->file);
330 if (elem->stride)
331 printdef (elem->fullname, "ESIZE", 0, elem->stride, elem->file);
332 if (elem->length != 1)
333 printdef (elem->fullname, "LEN", 0, elem->length, elem->file);
335 printtypeinfo (&elem->typeinfo, NULL, elem->fullname, elem->file);
337 fprintf (findfout(elem->file), "\n");
339 for (j = 0; j < elem->subelemsnum; j++) {
340 printdelem(elem->subelems[j], offset + elem->offset, elem->varinfo.prefixstr);
342 if (elem->length != 1) {