Index: src/trusted/validator/x86/decoder/generator/nacl_regsgen.c |
diff --git a/src/trusted/validator/x86/decoder/generator/nacl_regsgen.c b/src/trusted/validator/x86/decoder/generator/nacl_regsgen.c |
deleted file mode 100644 |
index d559490de7e8f525a89883d2b27f1c3ed5156357..0000000000000000000000000000000000000000 |
--- a/src/trusted/validator/x86/decoder/generator/nacl_regsgen.c |
+++ /dev/null |
@@ -1,321 +0,0 @@ |
-/* |
- * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-/* |
- * Generates file nc_subregs.h |
- * |
- * TODO(karl) Fix naming conventions for array names so that they |
- * are consistent. |
- */ |
- |
-#include "native_client/src/trusted/validator/x86/decoder/generator/nacl_regsgen.h" |
- |
-#include "native_client/src/include/portability_io.h" |
-#include "native_client/src/shared/platform/nacl_log.h" |
-#include "native_client/src/trusted/validator/x86/nacl_regs.h" |
-#include "native_client/src/trusted/validator/x86/nacl_regs32.h" |
-#include "native_client/src/trusted/validator/x86/nacl_regs64.h" |
-#include "native_client/src/trusted/validator/x86/decoder/generator/ncdecode_tablegen.h" |
- |
-/* Contains mapping from nacl operand kind, to the |
- * the corresponding general purpose 64 bit register index |
- * that it is a subpart of. |
- * That is, the index into NaClRegTable64, or NACL_REGISTER_UNDEFINED |
- * if not a general purpose register. |
- */ |
-static int nacl_gp_subreg_index[NaClOpKindEnumSize]; |
- |
-/* |
- * Contains the mapping from nacl operand kind, to the |
- * corresponding general purpose 64 bit register index. |
- * That is, the index into NaClRegTable64, or NACL_REGISTERED_UNDEFIND |
- * if not a general purpose 64 bit register. |
- */ |
-static int nacl_gp_reg_64_index[NaClOpKindEnumSize]; |
- |
-/* |
- * Define the default buffer size to use. |
- */ |
-#define BUFFER_SIZE 256 |
- |
-/* |
- * Given a subregister table, and a table corresponding to |
- * how those subregisters layout to the corresponding registers |
- * in the 64 bit table (i.e. NaClRegTable64), update the |
- * regsiter index to map the corresponding operand kinds to |
- * the corresponding 64 bit table entries. |
- * |
- * Parameters: |
- * register_index - Table from operand kind to position in 64-bit table. |
- * register_index_name - Name of register_index (for debugging messages). |
- * subreg_table - Table of subregisters to fold into register_index. |
- * subreg_table_name - Name of subreg_table (for debugging messages). |
- * to64Index - Mapping from subregister to corresponding position in |
- * NaClRegTable64. |
- */ |
-static void NaClFoldSubregisters( |
- int register_index[NaClOpKindEnumSize], |
- const char* register_index_name, |
- const NaClOpKind* subreg_table, |
- const char* subreg_tablename, |
- const int* to64index, |
- const int subreg_table_size, |
- const int register_undefined) { |
- int i; |
- for (i = 0; i < subreg_table_size; ++i) { |
- NaClOpKind subreg = subreg_table[i]; |
- if (subreg != RegUnknown) { |
- int old_index = register_index[subreg]; |
- if (old_index == register_undefined) { |
- register_index[subreg] = to64index[i]; |
- } else if (old_index != to64index[i]) { |
- NaClLog(LOG_INFO, "%s[%d] = %s, cant replace %s[%s] = %d with %d\n", |
- subreg_tablename, i, NaClOpKindName(subreg), |
- register_index_name, |
- NaClOpKindName(subreg), |
- old_index, |
- to64index[i]); |
- NaClFatal("Fix before continuing\n"); |
- } |
- } |
- } |
-} |
- |
-/* |
- * Define a mapping from NaClRegTable8Rex_32 indices, to the corresponding |
- * register index in NaClRegTable64_32, for which each register in |
- * NaClRegTable8Rex_32 is a subregister in NaClRegTable64_32, assuming the |
- * REX prefix isn't defined for the instruction. |
- * Note: this index will only be used if the corresponding index in |
- * NaClRegTable8NoRex_32 is not RegUnknown. |
- */ |
-static const int NaClRegTable8NoRexTo64_32[NACL_REG_TABLE_SIZE_32] = { |
- 0, |
- 1, |
- 2, |
- 3, |
- 0, |
- 1, |
- 2, |
- 3, |
-}; |
- |
-/* |
- * Define a mapping from NaClRegTable8Rex_64 indices, to the corresponding |
- * register index in NaClRegTable64_64, for which each register in |
- * NaClRegTable8Rex_64 is a subregister in NaClRegTable64_64, assuming the |
- * REX prefix isn't defined for the instruction. |
- * Note: this index will only be used if the corresponding index in |
- * NaClRegTable8NoRex_64 is not RegUnknown. |
- */ |
-static const int NaClRegTable8NoRexTo64_64[NACL_REG_TABLE_SIZE_64] = { |
- 0, |
- 1, |
- 2, |
- 3, |
- 0, |
- 1, |
- 2, |
- 3, |
- 0, |
- 0, |
- 0, |
- 0, |
- 0, |
- 0, |
- 0, |
- 0 |
-}; |
- |
-/* Define a mapping from NaClRegTable8Rex_32 indices, to the corresponding |
- * register index in NaClRegTable64_32, for which each register in |
- * NaClRegTable8Rex_32 is a subregister in NaClRegTable64_32, assuming the |
- * REX prefix is defined for the instruction. |
- * Note: this index will only be used if the corresponding index in |
- * NaClRegTable8Rex_32 is not RegUnknown. |
- */ |
-static const int NaClRegTable8RexTo64_32[NACL_REG_TABLE_SIZE_32] = { |
- 0, |
- 1, |
- 2, |
- 3, |
- 0, |
- 1, |
- 2, |
- 3 |
-}; |
- |
-/* Define a mapping from NaClRegTable8Rex_64 indices, to the corresponding |
- * register index in NaClRegTable64_64, for which each register in |
- * NaClRegTable8Rex is a subregister in NaClRegTable64_64, assuming the |
- * REX prefix is defined for the instruction. |
- * Note: this index will only be used if the corresponding index in |
- * NaClRegTable8Rex_64 is not RegUnknown. |
- */ |
-static const int NaClRegTable8RexTo64_64[NACL_REG_TABLE_SIZE_64] = { |
- 0, |
- 1, |
- 2, |
- 3, |
- 4, |
- 5, |
- 6, |
- 7, |
- 8, |
- 9, |
- 10, |
- 11, |
- 12, |
- 13, |
- 14, |
- 15 |
-}; |
- |
-/* Define the default mapping for register tables for register indexes |
- * in NaClRegTable64_32. This table does no reordering. |
- */ |
-static const int NaClRegTableDefaultTo64_32[NACL_REG_TABLE_SIZE_32] = { |
- 0, |
- 1, |
- 2, |
- 3, |
- 4, |
- 5, |
- 6, |
- 7, |
-}; |
- |
-/* Define the default mapping for register tables for register indexes |
- * in NaClRegTable64_64. This table does no reordering. |
- */ |
-static const int NaClRegTableDefaultTo64_64[NACL_REG_TABLE_SIZE_64] = { |
- 0, |
- 1, |
- 2, |
- 3, |
- 4, |
- 5, |
- 6, |
- 7, |
- 8, |
- 9, |
- 10, |
- 11, |
- 12, |
- 13, |
- 14, |
- 15 |
-}; |
- |
-/* |
- * Build NaClSubreg64RegRex and NaClSubreg64RegNoRex using encoded register |
- * tables. |
- */ |
-static void NaClBuildGpRegisterIndexes( |
- const NaClOpKind* reg_table_8_no_rex, |
- const int* reg_table_8_no_rex_to_64, |
- const NaClOpKind* reg_table_8_rex, |
- const int* reg_table_8_rex_to_64, |
- const NaClOpKind* reg_table_16, |
- const NaClOpKind* reg_table_32, |
- const NaClOpKind* reg_table_64, |
- const int* reg_table_default_to_64, |
- int subreg_table_size, |
- int register_undefined) { |
- int i; |
- |
- /* Initialize indices to general purpose registers to defaultx. */ |
- for (i = 0; i < NaClOpKindEnumSize; ++i) { |
- nacl_gp_subreg_index[i] = register_undefined; |
- nacl_gp_reg_64_index[i] = register_undefined; |
- } |
- |
- /* Fold in subregister to full register map values. */ |
- NaClFoldSubregisters(nacl_gp_subreg_index, "nacl_gp_subreg_index", |
- reg_table_8_no_rex, "reg_table_8_no_rex", |
- reg_table_8_no_rex_to_64, |
- subreg_table_size, |
- register_undefined); |
- NaClFoldSubregisters(nacl_gp_subreg_index, "nacl_gp_subreg_index", |
- reg_table_8_rex, "rex_table_8_rex", |
- reg_table_8_rex_to_64, |
- subreg_table_size, |
- register_undefined); |
- NaClFoldSubregisters(nacl_gp_subreg_index, "nacl_gp_subreg_index", |
- reg_table_16, "reg_table_16", |
- reg_table_default_to_64, |
- subreg_table_size, |
- register_undefined); |
- NaClFoldSubregisters(nacl_gp_subreg_index, "nacl_gp_subreg_index", |
- reg_table_32, "reg_table_32", |
- reg_table_default_to_64, |
- subreg_table_size, |
- register_undefined); |
- NaClFoldSubregisters(nacl_gp_reg_64_index, "nacl_gp_reg_64_index", |
- reg_table_64, "reg_table_64", |
- reg_table_default_to_64, |
- subreg_table_size, |
- register_undefined); |
-} |
- |
-/* Print out table entries using index values and symbolic constants. */ |
-static char* NaClPrintIndexName(int i, int register_undefined) { |
- static char buf[BUFFER_SIZE]; |
- if (i == register_undefined) { |
- return "NACL_REGISTER_UNDEFINED"; |
- } else { |
- SNPRINTF(buf, BUFFER_SIZE, "%3d", i); |
- return buf; |
- } |
-} |
- |
-/* Print out a operand kind lookup table. */ |
-static void NaClPrintGpRegIndex(struct Gio* f, |
- const char* register_index_name, |
- const int register_index[NaClOpKindEnumSize], |
- int register_undefined) { |
- NaClOpKind i; |
- gprintf(f, "static int %s[NaClOpKindEnumSize] = {\n", register_index_name); |
- for (i = 0; i < NaClOpKindEnumSize; ++i) { |
- gprintf(f, " /* %20s */ %s,\n", NaClOpKindName(i), |
- NaClPrintIndexName(register_index[i], register_undefined)); |
- } |
- gprintf(f, "};\n\n"); |
-} |
- |
-void NaClPrintGpRegisterIndexes_32(struct Gio* f) { |
- NaClBuildGpRegisterIndexes(NaClRegTable8NoRex_32, |
- NaClRegTable8NoRexTo64_32, |
- NaClRegTable8Rex_32, |
- NaClRegTable8RexTo64_32, |
- NaClRegTable16_32, |
- NaClRegTable32_32, |
- NaClRegTable64_32, |
- NaClRegTableDefaultTo64_32, |
- NACL_REG_TABLE_SIZE_32, |
- NACL_REGISTER_UNDEFINED_32); |
- NaClPrintGpRegIndex(f, "NaClGpSubregIndex", nacl_gp_subreg_index, |
- NACL_REGISTER_UNDEFINED_32); |
- NaClPrintGpRegIndex(f, "NaClGpReg64Index", nacl_gp_reg_64_index, |
- NACL_REGISTER_UNDEFINED_32); |
-} |
- |
-void NaClPrintGpRegisterIndexes_64(struct Gio* f) { |
- NaClBuildGpRegisterIndexes(NaClRegTable8NoRex_64, |
- NaClRegTable8NoRexTo64_64, |
- NaClRegTable8Rex_64, |
- NaClRegTable8RexTo64_64, |
- NaClRegTable16_64, |
- NaClRegTable32_64, |
- NaClRegTable64_64, |
- NaClRegTableDefaultTo64_64, |
- NACL_REG_TABLE_SIZE_64, |
- NACL_REGISTER_UNDEFINED_64); |
- NaClPrintGpRegIndex(f, "NaClGpSubregIndex", nacl_gp_subreg_index, |
- NACL_REGISTER_UNDEFINED_64); |
- NaClPrintGpRegIndex(f, "NaClGpReg64Index", nacl_gp_reg_64_index, |
- NACL_REGISTER_UNDEFINED_64); |
-} |