Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1209)

Unified Diff: src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.c

Issue 625923004: Delete old x86 validator. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: rebase master Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.c
diff --git a/src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.c b/src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.c
deleted file mode 100644
index 78650113e36835971d07d91abdc98e011753189f..0000000000000000000000000000000000000000
--- a/src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2012 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.
- */
-
-/* Some useful utilities for validator patterns. */
-
-#include "native_client/src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.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/decoder/nc_decode_tables.h"
-#include "native_client/src/trusted/validator/x86/decoder/nc_inst_iter.h"
-#include "native_client/src/trusted/validator/x86/decoder/nc_inst_state_internal.h"
-#include "native_client/src/trusted/validator/x86/decoder/nc_inst_trans.h"
-#include "native_client/src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_iter.h"
-#include "native_client/src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_iter_internal.h"
-
-/* To turn on debugging of instruction decoding, change value of
- * DEBUGGING to 1.
- */
-#define DEBUGGING 0
-
-#include "native_client/src/shared/utils/debugging.h"
-
-#include "native_client/src/trusted/validator/x86/decoder/ncopcode_desc_inl.c"
-#include "native_client/src/trusted/validator/x86/decoder/ncop_exps_inl.c"
-#include "native_client/src/trusted/validator/x86/decoder/nc_inst_iter_inl.c"
-
-const NaClOpFlags NaClOpSetOrUse = NACL_OPFLAG(OpSet) | NACL_OPFLAG(OpUse);
-
-Bool NaClIsBinaryUsingRegisters(const NaClInst* inst,
- NaClMnemonic name,
- NaClExpVector* vector,
- NaClOpKind reg_1,
- NaClOpKind reg_2) {
- return name == inst->name &&
- 2 == NaClGetInstNumberOperandsInline(inst) &&
- /* Note: Since the vector contains a list of operand expressions, the
- * first operand reference is always at index zero, and its first child
- * (where the register would be defined) is at index 1.
- */
- ExprRegister == vector->node[1].kind &&
- reg_1 == NaClGetExpRegisterInline(&vector->node[1]) &&
- /* Note: Since the first subtree is a register operand, it uses
- * nodes 0 and 1 in the vector (node 0 is the operand reference, and
- * node 1 is its child defining a register value). The second operand
- * reference therefore lies at node 2, and if the operand is defined by
- * a register, it is the first kid of node 2, which is node 3.
- */
- ExprRegister == vector->node[3].kind &&
- reg_2 == NaClGetExpRegisterInline(&vector->node[3]);
-}
-
-Bool NaClIsMovUsingRegisters(const NaClDecodeTables* tables,
- const NaClInst* inst,
- NaClExpVector* vector,
- NaClOpKind reg_set,
- NaClOpKind reg_use) {
- return NaClIsBinaryUsingRegisters(inst, InstMov, vector, reg_set, reg_use) &&
- NACL_OPFLAG(OpSet) ==
- (NaClGetInstOperandInline(tables, inst, 0)->flags & NaClOpSetOrUse) &&
- NACL_OPFLAG(OpUse) ==
- (NaClGetInstOperandInline(tables, inst, 1)->flags & NaClOpSetOrUse);
-}
-
-Bool NaClIsBinarySetUsingRegisters(const NaClDecodeTables* tables,
- const NaClInst* inst,
- NaClMnemonic name,
- NaClExpVector* vector,
- NaClOpKind reg_1,
- NaClOpKind reg_2) {
- return NaClIsBinaryUsingRegisters(inst, name, vector, reg_1, reg_2) &&
- NaClOpSetOrUse ==
- (NaClGetInstOperandInline(tables, inst, 0)->flags & NaClOpSetOrUse) &&
- NACL_OPFLAG(OpUse) ==
- (NaClGetInstOperandInline(tables, inst, 1)->flags & NaClOpSetOrUse);
-}
-
-Bool NaClOperandOneIsRegisterSet(NaClInstState* inst,
- NaClOpKind reg_name) {
- /* Note: Since the vector contains a list of operand expressions, the
- * first operand reference is always at index zero, and its first child
- * (where the register would be defined) is at index 1.
- */
- Bool result = FALSE;
- NaClExpVector* vector = NaClInstStateExpVector(inst);
- DEBUG(NaClLog(LOG_INFO,
- "->NaClOperandOneIsRegisterSet %s\n",
- NaClOpKindName(reg_name)));
- DEBUG(NaClExpVectorPrint(NaClLogGetGio(), inst));
- if (vector->number_expr_nodes >= 2) {
- NaClExp* op_reg = &vector->node[1];
- result = (ExprRegister == op_reg->kind &&
- reg_name == NaClGetExpRegisterInline(op_reg) &&
- (op_reg->flags & NACL_EFLAG(ExprSet)));
- }
- DEBUG(NaClLog(LOG_INFO,
- "<-NaClOperandOneIsRegisterSet = %"NACL_PRIdBool"\n", result));
- return result;
-}
-
-Bool NaClOperandOneZeroExtends(NaClInstState* state) {
- Bool result = FALSE;
- const NaClInst* inst = NaClInstStateInst(state);
- DEBUG(NaClLog(LOG_INFO, "->NaClOperandOneZeroExtends\n"));
- DEBUG_OR_ERASE(NaClInstPrint(NaClLogGetGio(), state->decoder_tables, inst));
- result = (1 <= NaClGetInstNumberOperandsInline(inst) &&
- (NaClGetInstOperandInline(state->decoder_tables, inst, 0)->flags &
- NACL_OPFLAG(OperandZeroExtends_v)) &&
- 4 == NaClInstStateOperandSize(state));
- DEBUG(NaClLog(LOG_INFO,
- "<-NcOPerandOneZeroExtends = %"NACL_PRIdBool"\n", result));
- return result;
-}
-
-static INLINE Bool NaClAssignsRegisterWithZeroExtends(NaClInstState* state,
- NaClOpKind reg_name) {
- return NaClOperandOneIsRegisterSet(state, reg_name) &&
- NaClOperandOneZeroExtends(state);
-}
-
-Bool NaClAssignsRegisterWithZeroExtends32(
- struct NaClValidatorState* state,
- size_t distance,
- NaClOpKind reg32) {
- Bool result = FALSE;
- DEBUG(NaClLog(LOG_INFO, "zero extend precond? %s %u\n",
- NaClOpKindName(reg32), (unsigned) distance));
-#ifdef NCVAL_TESTING
- /* Assume we match previous instructions when generating pre/post
- * conditions.
- */
- if (distance > 0) return TRUE;
-#endif
-
- if (NaClInstIterHasLookbackStateInline(state->cur_iter, distance)) {
- result = NaClAssignsRegisterWithZeroExtends(
- NaClInstIterGetLookbackStateInline(state->cur_iter, distance), reg32);
- }
-
- DEBUG(if (result)
- NaClValidatorMessage(
- LOG_INFO, state, "zero extends = %d\n", result));
- return result;
-}
-
-Bool NaClAssignsRegisterWithZeroExtends64(
- struct NaClValidatorState* state,
- size_t distance,
- NaClOpKind reg64) {
- NaClOpKind reg32 = NaClGet32For64BitReg(reg64);
- return (RegUnknown != reg32) &&
- NaClAssignsRegisterWithZeroExtends32(state, distance, reg32);
-}
« no previous file with comments | « src/trusted/validator/x86/ncval_reg_sfi/ncvalidate_utils.h ('k') | src/trusted/validator/x86/ncval_seg_sfi/README » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698