18c2ecf20Sopenharmony_ci#!/bin/awk -f 28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 38c2ecf20Sopenharmony_ci# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test 48c2ecf20Sopenharmony_ci# Copyright (c) 2015, Intel Corporation. 58c2ecf20Sopenharmony_ci# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ciBEGIN { 88c2ecf20Sopenharmony_ci print "/*" 98c2ecf20Sopenharmony_ci print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk" 108c2ecf20Sopenharmony_ci print " * from insn-x86-dat-src.c for inclusion by insn-x86.c" 118c2ecf20Sopenharmony_ci print " * Do not change this code." 128c2ecf20Sopenharmony_ci print "*/\n" 138c2ecf20Sopenharmony_ci op = "" 148c2ecf20Sopenharmony_ci branch = "" 158c2ecf20Sopenharmony_ci rel = 0 168c2ecf20Sopenharmony_ci going = 0 178c2ecf20Sopenharmony_ci} 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci/ Start here / { 208c2ecf20Sopenharmony_ci going = 1 218c2ecf20Sopenharmony_ci} 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci/ Stop here / { 248c2ecf20Sopenharmony_ci going = 0 258c2ecf20Sopenharmony_ci} 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci/^\s*[0-9a-fA-F]+\:/ { 288c2ecf20Sopenharmony_ci if (going) { 298c2ecf20Sopenharmony_ci colon_pos = index($0, ":") 308c2ecf20Sopenharmony_ci useful_line = substr($0, colon_pos + 1) 318c2ecf20Sopenharmony_ci first_pos = match(useful_line, "[0-9a-fA-F]") 328c2ecf20Sopenharmony_ci useful_line = substr(useful_line, first_pos) 338c2ecf20Sopenharmony_ci gsub("\t", "\\t", useful_line) 348c2ecf20Sopenharmony_ci printf "{{" 358c2ecf20Sopenharmony_ci len = 0 368c2ecf20Sopenharmony_ci for (i = 2; i <= NF; i++) { 378c2ecf20Sopenharmony_ci if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) { 388c2ecf20Sopenharmony_ci printf "0x%s, ", $i 398c2ecf20Sopenharmony_ci len += 1 408c2ecf20Sopenharmony_ci } else { 418c2ecf20Sopenharmony_ci break 428c2ecf20Sopenharmony_ci } 438c2ecf20Sopenharmony_ci } 448c2ecf20Sopenharmony_ci printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch 458c2ecf20Sopenharmony_ci printf "\n\"%s\",},\n", useful_line 468c2ecf20Sopenharmony_ci op = "" 478c2ecf20Sopenharmony_ci branch = "" 488c2ecf20Sopenharmony_ci rel = 0 498c2ecf20Sopenharmony_ci } 508c2ecf20Sopenharmony_ci} 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci/ Expecting: / { 538c2ecf20Sopenharmony_ci expecting_str = " Expecting: " 548c2ecf20Sopenharmony_ci expecting_len = length(expecting_str) 558c2ecf20Sopenharmony_ci expecting_pos = index($0, expecting_str) 568c2ecf20Sopenharmony_ci useful_line = substr($0, expecting_pos + expecting_len) 578c2ecf20Sopenharmony_ci for (i = 1; i <= NF; i++) { 588c2ecf20Sopenharmony_ci if ($i == "Expecting:") { 598c2ecf20Sopenharmony_ci i++ 608c2ecf20Sopenharmony_ci op = $i 618c2ecf20Sopenharmony_ci i++ 628c2ecf20Sopenharmony_ci branch = $i 638c2ecf20Sopenharmony_ci i++ 648c2ecf20Sopenharmony_ci rel = $i 658c2ecf20Sopenharmony_ci break 668c2ecf20Sopenharmony_ci } 678c2ecf20Sopenharmony_ci } 688c2ecf20Sopenharmony_ci} 69