Lines Matching refs:ins

65 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
67 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
72 struct ins *instructions;
101 struct ins *new_instructions; in arch__grow_instructions()
108 new_instructions = realloc(arch->instructions, new_nr_allocated * sizeof(struct ins)); in arch__grow_instructions()
119 new_instructions = calloc(new_nr_allocated, sizeof(struct ins)); in arch__grow_instructions()
129 struct ins *ins; in arch__associate_ins_ops() local
135 ins = &arch->instructions[arch->nr_instructions]; in arch__associate_ins_ops()
136 ins->name = strdup(name); in arch__associate_ins_ops()
137 if (!ins->name) in arch__associate_ins_ops()
140 ins->ops = ops; in arch__associate_ins_ops()
234 static int ins__raw_scnprintf(struct ins *ins, char *bf, size_t size, in ins__raw_scnprintf() argument
237 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->raw); in ins__raw_scnprintf()
240 int ins__scnprintf(struct ins *ins, char *bf, size_t size, in ins__scnprintf() argument
243 if (ins->ops->scnprintf) in ins__scnprintf()
244 return ins->ops->scnprintf(ins, bf, size, ops, max_ins_name); in ins__scnprintf()
246 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name); in ins__scnprintf()
309 static int call__scnprintf(struct ins *ins, char *bf, size_t size, in call__scnprintf() argument
313 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name); in call__scnprintf()
316 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name); in call__scnprintf()
319 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.name); in call__scnprintf()
321 return scnprintf(bf, size, "%-*s *%" PRIx64, max_ins_name, ins->name, ops->target.addr); in call__scnprintf()
329 bool ins__is_call(const struct ins *ins) in ins__is_call() argument
331 return ins->ops == &call_ops || ins->ops == &s390_call_ops || ins->ops == &loongarch_call_ops; in ins__is_call()
432 static int jump__scnprintf(struct ins *ins, char *bf, size_t size, in jump__scnprintf() argument
438 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name); in jump__scnprintf()
441 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name); in jump__scnprintf()
461 ins->name, c ? c - ops->raw : 0, ops->raw, in jump__scnprintf()
470 bool ins__is_jump(const struct ins *ins) in ins__is_jump() argument
472 return ins->ops == &jump_ops || ins->ops == &loongarch_jump_ops; in ins__is_jump()
508 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0) in lock__parse()
511 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name); in lock__parse()
513 if (ops->locked.ins.ops == NULL) in lock__parse()
516 if (ops->locked.ins.ops->parse && in lock__parse()
517 ops->locked.ins.ops->parse(arch, ops->locked.ops, ms) < 0) in lock__parse()
527 static int lock__scnprintf(struct ins *ins, char *bf, size_t size, in lock__scnprintf() argument
532 if (ops->locked.ins.ops == NULL) in lock__scnprintf()
533 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name); in lock__scnprintf()
535 printed = scnprintf(bf, size, "%-*s ", max_ins_name, ins->name); in lock__scnprintf()
536 return printed + ins__scnprintf(&ops->locked.ins, bf + printed, in lock__scnprintf()
542 struct ins *ins = &ops->locked.ins; in lock__delete() local
544 if (ins->ops && ins->ops->free) in lock__delete()
545 ins->ops->free(ops->locked.ops); in lock__delete()
621 static int mov__scnprintf(struct ins *ins, char *bf, size_t size, in mov__scnprintf() argument
624 return scnprintf(bf, size, "%-*s %s,%s", max_ins_name, ins->name, in mov__scnprintf()
661 static int dec__scnprintf(struct ins *ins, char *bf, size_t size, in dec__scnprintf() argument
664 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, in dec__scnprintf()
673 static int nop__scnprintf(struct ins *ins __maybe_unused, char *bf, size_t size, in nop__scnprintf()
687 bool ins__is_ret(const struct ins *ins) in ins__is_ret() argument
689 return ins->ops == &ret_ops; in ins__is_ret()
692 bool ins__is_lock(const struct ins *ins) in ins__is_lock() argument
694 return ins->ops == &lock_ops; in ins__is_lock()
699 const struct ins *ins = insp; in ins__key_cmp() local
701 return strcmp(name, ins->name); in ins__key_cmp()
706 const struct ins *ia = a; in ins__cmp()
707 const struct ins *ib = b; in ins__cmp()
716 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp); in ins__sort()
721 struct ins *ins; in __ins__find() local
729 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp); in __ins__find()
730 if (ins) in __ins__find()
731 return ins->ops; in __ins__find()
748 ins = bsearch(tmp, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp); in __ins__find()
750 return ins ? ins->ops : NULL; in __ins__find()
1165 dl->ins.ops = ins__find(arch, dl->ins.name); in disasm_line__init_ins()
1167 if (!dl->ins.ops) in disasm_line__init_ins()
1170 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, ms) < 0) in disasm_line__init_ins()
1171 dl->ins.ops = NULL; in disasm_line__init_ins()
1265 if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0) in disasm_line__new()
1282 if (dl->ins.ops && dl->ins.ops->free) in disasm_line__free()
1283 dl->ins.ops->free(&dl->ops); in disasm_line__free()
1286 zfree(&dl->ins.name); in disasm_line__free()
1293 if (raw || !dl->ins.ops) in disasm_line__scnprintf()
1294 return scnprintf(bf, size, "%-*s %s", max_ins_name, dl->ins.name, dl->ops.raw); in disasm_line__scnprintf()
1296 return ins__scnprintf(&dl->ins, bf, size, &dl->ops, max_ins_name); in disasm_line__scnprintf()
1638 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.sym) { in symbol__parse_objdump_line()
1667 if (dl->ins.ops) { in delete_last_nop()
1668 if (dl->ins.ops != &nop_ops) in delete_last_nop()
2732 printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name); in disasm_line__fprintf()
2755 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins) || in disasm_line__is_valid_local_jump()
2842 len = strlen(disasm_line(al)->ins.name); in annotation__max_ins_name()
3026 if (dl->ins.ops && dl->ins.ops->scnprintf) { in disasm_line__write()
3027 if (ins__is_jump(&dl->ins)) { in disasm_line__write()
3035 } else if (ins__is_call(&dl->ins)) { in disasm_line__write()
3039 } else if (ins__is_ret(&dl->ins)) { in disasm_line__write()
3206 } else if (ins__is_call(&disasm_line(al)->ins) && in __annotation_line__write()