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