xref: /linux/tools/perf/arch/x86/tests/gen-insn-x86-dat.awk (revision d95c3885865b71e56d8d60c8617f2ce1f0fa079d)
1#!/bin/awk -f
2# SPDX-License-Identifier: GPL-2.0-only
3# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test
4# Copyright (c) 2015, Intel Corporation.
5#
6
7BEGIN {
8	print "/*"
9	print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk"
10	print " * from insn-x86-dat-src.c for inclusion by insn-x86.c"
11	print " * Do not change this code."
12	print "*/\n"
13	op = ""
14	branch = ""
15	rel = 0
16	going = 0
17}
18
19/ Start here / {
20	going = 1
21}
22
23/ Stop here / {
24	going = 0
25}
26
27/^\s*[0-9a-fA-F]+\:/ {
28	if (going) {
29		colon_pos = index($0, ":")
30		useful_line = substr($0, colon_pos + 1)
31		first_pos = match(useful_line, "[0-9a-fA-F]")
32		useful_line = substr(useful_line, first_pos)
33		gsub("\t", "\\t", useful_line)
34		printf "{{"
35		len = 0
36		for (i = 2; i <= NF; i++) {
37			if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) {
38				printf "0x%s, ", $i
39				len += 1
40			} else {
41				break
42			}
43		}
44		printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch
45		printf "\n\"%s\",},\n", useful_line
46		op = ""
47		branch = ""
48		rel = 0
49	}
50}
51
52/ Expecting: / {
53	expecting_str = " Expecting: "
54	expecting_len = length(expecting_str)
55	expecting_pos = index($0, expecting_str)
56	useful_line = substr($0, expecting_pos + expecting_len)
57	for (i = 1; i <= NF; i++) {
58		if ($i == "Expecting:") {
59			i++
60			op = $i
61			i++
62			branch = $i
63			i++
64			rel = $i
65			break
66		}
67	}
68}
69