Lines Matching refs:ctx

42 int rnndec_varadd(struct rnndeccontext *ctx, char *varset, const char *variant) {
43 struct rnnenum *en = rnn_findenum(ctx->db, varset);
54 ADDARRAY(ctx->vars, ci);
63 for (j = 0; j < ctx->varsnum; j++) {
64 if (ctx->vars[j]->en == en) {
65 ctx->vars[j]->variant = i;
70 if (i == ctx->varsnum) {
74 ADDARRAY(ctx->vars, ci);
80 int rnndec_varmatch(struct rnndeccontext *ctx, struct rnnvarinfo *vi) {
86 for (j = 0; j < ctx->varsnum; j++)
87 if (vi->varsets[i]->venum == ctx->vars[j]->en)
89 if (j == ctx->varsnum) {
92 if (!vi->varsets[i]->variants[ctx->vars[j]->variant])
130 static const char *rnndec_decode_enum_val(struct rnndeccontext *ctx,
135 if (rnndec_varmatch(ctx, &vals[i]->varinfo) &&
141 const char *rnndec_decode_enum(struct rnndeccontext *ctx, const char *enumname, uint64_t enumval)
143 struct rnnenum *en = rnn_findenum (ctx->db, enumname);
145 return rnndec_decode_enum_val(ctx, en->vals, en->valsnum, enumval);
159 char *rnndec_decodeval(struct rnndeccontext *ctx, struct rnntypeinfo *ti, uint64_t value) {
187 ctmp = rnndec_decode_enum_val(ctx, vals, valsnum, value);
189 asprintf (&res, "%s%s%s", ctx->colors->eval, ctmp, ctx->colors->reset);
191 rnndec_varadd(ctx, ti->eenum->name, ctmp);
207 if (!rnndec_varmatch(ctx, &bitfields[i]->varinfo))
215 ctx->colors->err : ctx->colors->mod;
218 asprintf (&res, "%s%s%s", color, bitfields[i]->name, ctx->colors->reset);
220 asprintf (&tmp, "%s | %s%s%s", res, color, bitfields[i]->name, ctx->colors->reset);
232 asprintf (&subval, "%s%#"PRIx64"%s", ctx->colors->err, field_val, ctx->colors->reset);
234 subval = rnndec_decodeval(ctx, &bitfields[i]->typeinfo, value & type_mask);
237 asprintf (&res, "%s%s%s = %s", ctx->colors->rname, bitfields[i]->name, ctx->colors->reset, subval);
239 asprintf (&tmp, "%s | %s%s%s = %s", res, ctx->colors->rname, bitfields[i]->name, ctx->colors->reset, subval);
247 asprintf (&res, "%s%#"PRIx64"%s", ctx->colors->err, value & ~mask, ctx->colors->reset);
249 asprintf (&tmp, "%s | %s%#"PRIx64"%s", res, ctx->colors->err, value & ~mask, ctx->colors->reset);
255 asprintf (&res, "%s0%s", ctx->colors->num, ctx->colors->reset);
260 return rnndec_decodeval(ctx, &ti->spectype->typeinfo, value);
262 asprintf (&res, "%s%#"PRIx64"%s", ctx->colors->num, value, ctx->colors->reset);
266 asprintf (&res, "%s-%lf%s", ctx->colors->num,
268 ctx->colors->reset);
273 asprintf (&res, "%s%lf%s", ctx->colors->num,
275 ctx->colors->reset);
278 asprintf (&res, "%sr%"PRIu64".%c%s", ctx->colors->num, (value >> 2), "xyzw"[value & 0x3], ctx->colors->reset);
281 asprintf (&res, "%s%"PRIu64"%s", ctx->colors->num, value, ctx->colors->reset);
285 asprintf (&res, "%s-%"PRIi64"%s", ctx->colors->num, (UINT64_C(1) << width) - value, ctx->colors->reset);
287 asprintf (&res, "%s%"PRIi64"%s", ctx->colors->num, value, ctx->colors->reset);
291 asprintf (&res, "%sFALSE%s", ctx->colors->eval, ctx->colors->reset);
293 asprintf (&res, "%sTRUE%s", ctx->colors->eval, ctx->colors->reset);
300 asprintf(&res, "%s%f%s", ctx->colors->num,
301 val.d, ctx->colors->reset);
303 asprintf(&res, "%s%f%s", ctx->colors->num,
304 val.f, ctx->colors->reset);
306 asprintf(&res, "%s%f%s", ctx->colors->num,
307 float16(value), ctx->colors->reset);
315 asprintf (&res, "%s%#"PRIx64"%s", ctx->colors->num, value, ctx->colors->reset);
319 asprintf (&tmp, "%s | %s%#"PRIx64"%s", res, ctx->colors->err, value_orig & ~typeinfo_mask(ti), ctx->colors->reset);
326 static char *appendidx (struct rnndeccontext *ctx, char *name, uint64_t idx, struct rnnenum *index) {
331 index_name = rnndec_decode_enum_val(ctx, index->vals, index->valsnum, idx);
334 asprintf (&res, "%s[%s%s%s]", name, ctx->colors->eval, index_name, ctx->colors->reset);
336 asprintf (&res, "%s[%s%#"PRIx64"%s]", name, ctx->colors->num, idx, ctx->colors->reset);
370 static struct rnndecaddrinfo *trymatch (struct rnndeccontext *ctx, struct rnndelem **elems, int elemsnum, uint64_t addr, int write, int dwidth, uint64_t *indices, int indicesnum) {
374 if (!rnndec_varmatch(ctx, &elems[i]->varinfo))
396 asprintf (&res->name, "%s%s%s", ctx->colors->rname, elems[i]->name, ctx->colors->reset);
398 res->name = appendidx(ctx, res->name, indices[j], NULL);
400 res->name = appendidx(ctx, res->name, idx, elems[i]->index);
408 asprintf (&tmp, "%s+%s%#"PRIx64"%s", res->name, ctx->colors->err, offset, ctx->colors->reset);
428 res = trymatch (ctx, elems[i]->subelems, elems[i]->subelemsnum, offset, write, dwidth, nind, nindnum);
433 asprintf (&name, "%s%s%s", ctx->colors->rname, elems[i]->name, ctx->colors->reset);
435 name = appendidx(ctx, name, indices[j], NULL);
437 name = appendidx(ctx, name, idx, elems[i]->index);
448 asprintf (&name, "%s%s%s", ctx->colors->rname, elems[i]->name, ctx->colors->reset);
450 name = appendidx(ctx, name, indices[j], NULL);
452 name = appendidx(ctx, name, idx, elems[i]->index);
453 if ((res = trymatch (ctx, elems[i]->subelems, elems[i]->subelemsnum, offset, write, dwidth, 0, 0))) {
461 asprintf (&tmp, "%s+%s%#"PRIx64"%s", name, ctx->colors->err, offset, ctx->colors->reset);
472 int rnndec_checkaddr(struct rnndeccontext *ctx, struct rnndomain *domain, uint64_t addr, int write) {
473 struct rnndecaddrinfo *res = trymatch(ctx, domain->subelems, domain->subelemsnum, addr, write, domain->width, 0, 0);
481 struct rnndecaddrinfo *rnndec_decodeaddr(struct rnndeccontext *ctx, struct rnndomain *domain, uint64_t addr, int write) {
482 struct rnndecaddrinfo *res = trymatch(ctx, domain->subelems, domain->subelemsnum, addr, write, domain->width, 0, 0);
486 asprintf (&res->name, "%s%#"PRIx64"%s", ctx->colors->err, addr, ctx->colors->reset);
490 static unsigned tryreg(struct rnndeccontext *ctx, struct rnndelem **elems, int elemsnum,
511 if (!rnndec_varmatch(ctx, &elem->varinfo))
529 ret = tryreg(ctx, elem->subelems, elem->subelemsnum, dwidth,
537 ret = tryreg(ctx, elem->subelems, elem->subelemsnum, dwidth, child, offset);
551 uint64_t rnndec_decodereg(struct rnndeccontext *ctx, struct rnndomain *domain, const char *name)
554 if (tryreg(ctx, domain->subelems, domain->subelemsnum, domain->width, name, &offset)) {