162306a36Sopenharmony_ci#!/bin/awk -f 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 362306a36Sopenharmony_ci# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test 462306a36Sopenharmony_ci# Copyright (c) 2015, Intel Corporation. 562306a36Sopenharmony_ci# 662306a36Sopenharmony_ci 762306a36Sopenharmony_ciBEGIN { 862306a36Sopenharmony_ci print "/*" 962306a36Sopenharmony_ci print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk" 1062306a36Sopenharmony_ci print " * from insn-x86-dat-src.c for inclusion by insn-x86.c" 1162306a36Sopenharmony_ci print " * Do not change this code." 1262306a36Sopenharmony_ci print "*/\n" 1362306a36Sopenharmony_ci op = "" 1462306a36Sopenharmony_ci branch = "" 1562306a36Sopenharmony_ci rel = 0 1662306a36Sopenharmony_ci going = 0 1762306a36Sopenharmony_ci} 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/ Start here / { 2062306a36Sopenharmony_ci going = 1 2162306a36Sopenharmony_ci} 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci/ Stop here / { 2462306a36Sopenharmony_ci going = 0 2562306a36Sopenharmony_ci} 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/^\s*[0-9a-fA-F]+\:/ { 2862306a36Sopenharmony_ci if (going) { 2962306a36Sopenharmony_ci colon_pos = index($0, ":") 3062306a36Sopenharmony_ci useful_line = substr($0, colon_pos + 1) 3162306a36Sopenharmony_ci first_pos = match(useful_line, "[0-9a-fA-F]") 3262306a36Sopenharmony_ci useful_line = substr(useful_line, first_pos) 3362306a36Sopenharmony_ci gsub("\t", "\\t", useful_line) 3462306a36Sopenharmony_ci printf "{{" 3562306a36Sopenharmony_ci len = 0 3662306a36Sopenharmony_ci for (i = 2; i <= NF; i++) { 3762306a36Sopenharmony_ci if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) { 3862306a36Sopenharmony_ci printf "0x%s, ", $i 3962306a36Sopenharmony_ci len += 1 4062306a36Sopenharmony_ci } else { 4162306a36Sopenharmony_ci break 4262306a36Sopenharmony_ci } 4362306a36Sopenharmony_ci } 4462306a36Sopenharmony_ci printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch 4562306a36Sopenharmony_ci printf "\n\"%s\",},\n", useful_line 4662306a36Sopenharmony_ci op = "" 4762306a36Sopenharmony_ci branch = "" 4862306a36Sopenharmony_ci rel = 0 4962306a36Sopenharmony_ci } 5062306a36Sopenharmony_ci} 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/ Expecting: / { 5362306a36Sopenharmony_ci expecting_str = " Expecting: " 5462306a36Sopenharmony_ci expecting_len = length(expecting_str) 5562306a36Sopenharmony_ci expecting_pos = index($0, expecting_str) 5662306a36Sopenharmony_ci useful_line = substr($0, expecting_pos + expecting_len) 5762306a36Sopenharmony_ci for (i = 1; i <= NF; i++) { 5862306a36Sopenharmony_ci if ($i == "Expecting:") { 5962306a36Sopenharmony_ci i++ 6062306a36Sopenharmony_ci op = $i 6162306a36Sopenharmony_ci i++ 6262306a36Sopenharmony_ci branch = $i 6362306a36Sopenharmony_ci i++ 6462306a36Sopenharmony_ci rel = $i 6562306a36Sopenharmony_ci break 6662306a36Sopenharmony_ci } 6762306a36Sopenharmony_ci } 6862306a36Sopenharmony_ci} 69