xref: /linux/tools/perf/arch/x86/tests/gen-insn-x86-dat.awk (revision e58e871becec2d3b04ed91c0c16fe8deac9c9dfa)
1#!/bin/awk -f
2# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test
3# Copyright (c) 2015, Intel Corporation.
4#
5# This program is free software; you can redistribute it and/or modify it
6# under the terms and conditions of the GNU General Public License,
7# version 2, as published by the Free Software Foundation.
8#
9# This program is distributed in the hope it will be useful, but WITHOUT
10# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12# more details.
13
14BEGIN {
15	print "/*"
16	print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk"
17	print " * from insn-x86-dat-src.c for inclusion by insn-x86.c"
18	print " * Do not change this code."
19	print "*/\n"
20	op = ""
21	branch = ""
22	rel = 0
23	going = 0
24}
25
26/ Start here / {
27	going = 1
28}
29
30/ Stop here / {
31	going = 0
32}
33
34/^\s*[0-9a-fA-F]+\:/ {
35	if (going) {
36		colon_pos = index($0, ":")
37		useful_line = substr($0, colon_pos + 1)
38		first_pos = match(useful_line, "[0-9a-fA-F]")
39		useful_line = substr(useful_line, first_pos)
40		gsub("\t", "\\t", useful_line)
41		printf "{{"
42		len = 0
43		for (i = 2; i <= NF; i++) {
44			if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) {
45				printf "0x%s, ", $i
46				len += 1
47			} else {
48				break
49			}
50		}
51		printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch
52		printf "\n\"%s\",},\n", useful_line
53		op = ""
54		branch = ""
55		rel = 0
56	}
57}
58
59/ Expecting: / {
60	expecting_str = " Expecting: "
61	expecting_len = length(expecting_str)
62	expecting_pos = index($0, expecting_str)
63	useful_line = substr($0, expecting_pos + expecting_len)
64	for (i = 1; i <= NF; i++) {
65		if ($i == "Expecting:") {
66			i++
67			op = $i
68			i++
69			branch = $i
70			i++
71			rel = $i
72			break
73		}
74	}
75}
76