Lines Matching refs:insn
22 struct insn { struct
44 struct insn *insn; argument
154 struct insn insn; in read_instructions() local
158 rc = scanf("%s %s %s", insn.opcode, insn.name, insn.format); in read_instructions()
163 insn.type = insn_format_to_type(insn.format); in read_instructions()
164 insn.name_len = strlen(insn.name); in read_instructions()
165 for (i = 0; i <= insn.name_len; i++) in read_instructions()
166 insn.upper[i] = toupper((unsigned char)insn.name[i]); in read_instructions()
168 desc->insn = realloc(desc->insn, desc->nr * sizeof(*desc->insn)); in read_instructions()
169 if (!desc->insn) in read_instructions()
171 desc->insn[desc->nr - 1] = insn; in read_instructions()
177 return strcmp(((struct insn *)a)->format, ((struct insn *)b)->format); in cmpformat()
185 qsort(desc->insn, desc->nr, sizeof(*desc->insn), cmpformat); in print_formats()
190 if (!strcmp(format, desc->insn[i].format)) in print_formats()
193 format = desc->insn[i].format; in print_formats()
201 return strcmp(((struct insn *)a)->name, ((struct insn *)b)->name); in cmp_long_insn()
206 struct insn *insn; in print_long_insn() local
209 qsort(desc->insn, desc->nr, sizeof(*desc->insn), cmp_long_insn); in print_long_insn()
213 insn = &desc->insn[i]; in print_long_insn()
214 if (insn->name_len < 6) in print_long_insn()
216 printf("\tLONG_INSN_%s,\n", insn->upper); in print_long_insn()
223 insn = &desc->insn[i]; in print_long_insn()
224 if (insn->name_len < 6) in print_long_insn()
226 printf("\t[LONG_INSN_%s] = \"%s\", \\\n", insn->upper, insn->name); in print_long_insn()
231 static void print_opcode(struct insn *insn, int nr) in print_opcode() argument
235 opcode = insn->opcode; in print_opcode()
236 if (insn->type->byte != 0) in print_opcode()
238 printf("\t[%4d] = { .opfrag = 0x%s, .format = INSTR_%s, ", nr, opcode, insn->format); in print_opcode()
239 if (insn->name_len < 6) in print_opcode()
240 printf(".name = \"%s\" ", insn->name); in print_opcode()
242 printf(".offset = LONG_INSN_%s ", insn->upper); in print_opcode()
246 static void add_to_group(struct gen_opcode *desc, struct insn *insn, int offset) in add_to_group() argument
251 if (group && (!strncmp(group->opcode, insn->opcode, 2) || group->type->byte == 0)) { in add_to_group()
260 memcpy(group->opcode, insn->opcode, 2); in add_to_group()
261 group->type = insn->type; in add_to_group()
268 return strcmp(((struct insn *)a)->opcode, ((struct insn *)b)->opcode); in cmpopcode()
274 struct insn *insn; in print_opcode_table() local
277 qsort(desc->insn, desc->nr, sizeof(*desc->insn), cmpopcode); in print_opcode_table()
281 insn = &desc->insn[i]; in print_opcode_table()
282 if (insn->type->byte == 0) in print_opcode_table()
284 add_to_group(desc, insn, offset); in print_opcode_table()
285 if (strncmp(opcode, insn->opcode, 2)) { in print_opcode_table()
286 memcpy(opcode, insn->opcode, 2); in print_opcode_table()
289 print_opcode(insn, offset); in print_opcode_table()
294 insn = &desc->insn[i]; in print_opcode_table()
295 if (insn->type->byte != 0) in print_opcode_table()
297 add_to_group(desc, insn, offset); in print_opcode_table()
298 print_opcode(insn, offset); in print_opcode_table()