69 lines · plain
1#!/bin/awk -f2# SPDX-License-Identifier: GPL-2.0-only3# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test4# 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 = 016 going = 017}18 19/ Start here / {20 going = 121}22 23/ Stop here / {24 going = 025}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 = 036 for (i = 2; i <= NF; i++) {37 if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) {38 printf "0x%s, ", $i39 len += 140 } else {41 break42 }43 }44 printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch45 printf "\n\"%s\",},\n", useful_line46 op = ""47 branch = ""48 rel = 049 }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 = $i61 i++62 branch = $i63 i++64 rel = $i65 break66 }67 }68}69