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

Unified Diff: src/trusted/validator_arm/gen/arm32_decode_named_decoder.h

Issue 9960043: Finish separation of testing from sel_ldr validation. Also, automate (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 8 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_arm/gen/arm32_decode_named_decoder.h
===================================================================
--- src/trusted/validator_arm/gen/arm32_decode_named_decoder.h (revision 0)
+++ src/trusted/validator_arm/gen/arm32_decode_named_decoder.h (revision 0)
@@ -0,0 +1,236 @@
+
+
+/*
+ * Copyright 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.
+ */
+
+// DO NOT EDIT: GENERATED CODE
+
+
+#ifndef NACL_TRUSTED_BUT_NOT_TCB
+#error This file is not meant for use in the TCB
+#endif
+
+
+
+#ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_DECODER_H_
+#define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_DECODER_H_
+
+#include "native_client/src/trusted/validator_arm/decode.h"
+#include "native_client/src/trusted/validator_arm/gen/arm32_decode_named_classes.h"
+#include "native_client/src/trusted/validator_arm/named_class_decoder.h"
+
+namespace nacl_arm_test {
+
+// Defines a (named) decoder class selector for instructions
+class NamedArm32DecoderState : nacl_arm_dec::DecoderState {
+ public:
+ explicit NamedArm32DecoderState();
+ virtual ~NamedArm32DecoderState();
+
+ // Parses the given instruction, returning the named class
+ // decoder to use.
+ const NamedClassDecoder& decode_named(
+ const nacl_arm_dec::Instruction) const;
+
+ // Parses the given instruction, returning the class decoder
+ // to use.
+ virtual const nacl_arm_dec::ClassDecoder& decode(
+ const nacl_arm_dec::Instruction) const;
+
+ // The following fields define the set of class decoders
+ // that can be returned by the API function "decode_name". They
sehr (please use chromium) 2012/04/19 21:54:46 decode_named?
Karl 2012/04/24 19:58:27 Done.
+ // are created once as instance fields, and then returned
+ // by the table methods above. This speeds up the code since
+ // the class decoders need to only be bulit once (and reused
+ // for each call to "decode_named").
+
+ const NamedBinary3RegisterShiftedTest Binary3RegisterShiftedTest_instance_;
+
+ const NamedBinary4RegisterShiftedOp Binary4RegisterShiftedOp_instance_;
+
+ const NamedBranch Branch_instance_;
+
+ const NamedBreakpoint Breakpoint_instance_;
+
+ const NamedBxBlx BxBlx_instance_;
+
+ const NamedCoprocessorOp CoprocessorOp_instance_;
+
+ const NamedDataProc DataProc_instance_;
+
+ const NamedDeprecated Deprecated_instance_;
+
+ const NamedEffectiveNoOp EffectiveNoOp_instance_;
+
+ const NamedForbidden Forbidden_instance_;
+
+ const NamedImmediateBic ImmediateBic_instance_;
+
+ const NamedLoadCoprocessor LoadCoprocessor_instance_;
+
+ const NamedLoadDoubleExclusive LoadDoubleExclusive_instance_;
+
+ const NamedLoadDoubleI LoadDoubleI_instance_;
+
+ const NamedLoadDoubleR LoadDoubleR_instance_;
+
+ const NamedLoadExclusive LoadExclusive_instance_;
+
+ const NamedLoadImmediate LoadImmediate_instance_;
+
+ const NamedLoadMultiple LoadMultiple_instance_;
+
+ const NamedLoadRegister LoadRegister_instance_;
+
+ const NamedLongMultiply LongMultiply_instance_;
+
+ const NamedMoveDoubleFromCoprocessor MoveDoubleFromCoprocessor_instance_;
+
+ const NamedMoveFromCoprocessor MoveFromCoprocessor_instance_;
+
+ const NamedMoveToStatusRegister MoveToStatusRegister_instance_;
+
+ const NamedMultiply Multiply_instance_;
+
+ const NamedPackSatRev PackSatRev_instance_;
+
+ const NamedRoadblock Roadblock_instance_;
+
+ const NamedSatAddSub SatAddSub_instance_;
+
+ const NamedStoreCoprocessor StoreCoprocessor_instance_;
+
+ const NamedStoreExclusive StoreExclusive_instance_;
+
+ const NamedStoreImmediate StoreImmediate_instance_;
+
+ const NamedStoreRegister StoreRegister_instance_;
+
+ const NamedTest Test_instance_;
+
+ const NamedTestImmediate TestImmediate_instance_;
+
+ const NamedUnary3RegisterShiftedOp Unary3RegisterShiftedOp_instance_;
+
+ const NamedUndefined Undefined_instance_;
+
+ const NamedUnpredictable Unpredictable_instance_;
+
+ const NamedVectorLoad VectorLoad_instance_;
+
+ const NamedVectorStore VectorStore_instance_;
+
+ const NamedAdd_Rule_7_A1_P26Binary4RegisterShiftedOp Add_Rule_7_A1_P26Binary4RegisterShiftedOp_instance_;
+
+ const NamedRsb_Rule_144_A1_P288Binary4RegisterShiftedOp Rsb_Rule_144_A1_P288Binary4RegisterShiftedOp_instance_;
+
+ private:
+
+ // The following list of methods correspond to each decoder table,
+ // and implements the pattern matching of the corresponding bit
+ // patterns. After matching the corresponding bit patterns, they
+ // either call other methods in this list (corresponding to another
+ // decoder table), or they return the instance field that implements
+ // the class decoder that should be used to decode the particular
+ // instruction.
+
+ inline const NamedClassDecoder& decode_ARMv7(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_branch_block_xfer(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_dp_immed(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_dp_misc(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_dp_reg(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_dp_reg_shifted(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_extra_load_store(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_half_mult(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_load_store_word_byte(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_media(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_misc(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_misc_hints_simd(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_msr_and_hints(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_mult(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_pack_sat_rev(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_parallel_add_sub(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_sat_add_sub(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_signed_mult(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp_1imm(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp_2misc(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp_2scalar(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp_2shift(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp_3diff(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_dp_3same(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_load_store(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_load_store_l0(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_simd_load_store_l1(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_super_cop(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_sync(
+ const nacl_arm_dec::Instruction insn) const;
+
+ inline const NamedClassDecoder& decode_unconditional(
+ const nacl_arm_dec::Instruction insn) const;
+
+};
+
+} // namespace nacl_arm_test
+#endif // NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_DECODER_H_

Powered by Google App Engine
This is Rietveld 408576698