]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - tools/perf/arch/x86/tests/gen-insn-x86-dat.awk
Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / tools / perf / arch / x86 / tests / gen-insn-x86-dat.awk
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
14 BEGIN {
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 }