Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2012 The Native Client Authors. All rights reserved. | 2 * Copyright 2012 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can | 3 * Use of this source code is governed by a BSD-style license that can |
| 4 * be found in the LICENSE file. | 4 * be found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 /* | 7 /* |
| 8 * DO NOT EDIT: GENERATED CODE | 8 * DO NOT EDIT: GENERATED CODE |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef NACL_TRUSTED_BUT_NOT_TCB | |
| 12 #error("This file is not meant for use in the TCB") | |
| 13 #endif | |
| 14 | |
| 11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_H_ | 15 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_H_ |
| 12 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_H_ | 16 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_H_ |
| 13 | 17 |
| 14 #include "native_client/src/trusted/validator_arm/decode.h" | 18 #include "native_client/src/trusted/validator_arm/decode.h" |
| 15 | 19 #include "native_client/src/trusted/validator_arm/named_class_decoder.h" |
| 20 | |
| 21 /* | |
| 22 * Define rule decoder classes | |
| 23 */ | |
| 16 namespace nacl_arm_dec { | 24 namespace nacl_arm_dec { |
| 17 | 25 |
| 18 struct NamedCoprocessorOp : public CoprocessorOp { | 26 class Add_Rule_7_A1_P26 : public Binary4RegisterShiftedOp { |
| 27 public: | |
| 28 virtual ~Add_Rule_7_A1_P26() {} | |
| 29 }; | |
| 30 | |
| 31 } // namespace nacl_arm_dec | |
| 32 | |
| 33 namespace nacl_arm_test { | |
| 34 | |
| 35 /* | |
| 36 * Define name class decoders for each class decoder | |
| 37 */ | |
| 38 | |
| 39 class NamedCoprocessorOp : public NamedClassDecoder { | |
|
robertm
2012/04/11 01:28:43
can you add a comment about the purpose of these c
Karl
2012/04/16 23:18:10
Added comment in dgen_test_output.py that generate
| |
| 40 public: | |
| 41 NamedCoprocessorOp(); | |
| 19 virtual ~NamedCoprocessorOp() {} | 42 virtual ~NamedCoprocessorOp() {} |
| 20 virtual const char* name() const; | 43 private: |
| 21 }; | 44 nacl_arm_dec::CoprocessorOp named_decoder_; |
| 22 | 45 }; |
| 23 struct NamedImmediateBic : public ImmediateBic { | 46 |
| 47 class NamedMoveToStatusRegister : public NamedClassDecoder { | |
| 48 public: | |
| 49 NamedMoveToStatusRegister(); | |
| 50 virtual ~NamedMoveToStatusRegister() {} | |
| 51 private: | |
| 52 nacl_arm_dec::MoveToStatusRegister named_decoder_; | |
| 53 }; | |
| 54 | |
| 55 class NamedImmediateBic : public NamedClassDecoder { | |
| 56 public: | |
| 57 NamedImmediateBic(); | |
| 24 virtual ~NamedImmediateBic() {} | 58 virtual ~NamedImmediateBic() {} |
| 25 virtual const char* name() const; | 59 private: |
| 26 }; | 60 nacl_arm_dec::ImmediateBic named_decoder_; |
| 27 | 61 }; |
| 28 struct NamedLoadMultiple : public LoadMultiple { | 62 |
| 63 class NamedLoadMultiple : public NamedClassDecoder { | |
| 64 public: | |
| 65 NamedLoadMultiple(); | |
| 29 virtual ~NamedLoadMultiple() {} | 66 virtual ~NamedLoadMultiple() {} |
| 30 virtual const char* name() const; | 67 private: |
| 31 }; | 68 nacl_arm_dec::LoadMultiple named_decoder_; |
| 32 | 69 }; |
| 33 struct NamedLoadCoprocessor : public LoadCoprocessor { | 70 |
| 71 class NamedLoadCoprocessor : public NamedClassDecoder { | |
| 72 public: | |
| 73 NamedLoadCoprocessor(); | |
| 34 virtual ~NamedLoadCoprocessor() {} | 74 virtual ~NamedLoadCoprocessor() {} |
| 35 virtual const char* name() const; | 75 private: |
| 36 }; | 76 nacl_arm_dec::LoadCoprocessor named_decoder_; |
| 37 | 77 }; |
| 38 struct NamedLoadDoubleExclusive : public LoadDoubleExclusive { | 78 |
| 79 class NamedLongMultiply : public NamedClassDecoder { | |
| 80 public: | |
| 81 NamedLongMultiply(); | |
| 82 virtual ~NamedLongMultiply() {} | |
| 83 private: | |
| 84 nacl_arm_dec::LongMultiply named_decoder_; | |
| 85 }; | |
| 86 | |
| 87 class NamedBranch : public NamedClassDecoder { | |
| 88 public: | |
| 89 NamedBranch(); | |
| 90 virtual ~NamedBranch() {} | |
| 91 private: | |
| 92 nacl_arm_dec::Branch named_decoder_; | |
| 93 }; | |
| 94 | |
| 95 class NamedTest : public NamedClassDecoder { | |
| 96 public: | |
| 97 NamedTest(); | |
| 98 virtual ~NamedTest() {} | |
| 99 private: | |
| 100 nacl_arm_dec::Test named_decoder_; | |
| 101 }; | |
| 102 | |
| 103 class NamedStoreRegister : public NamedClassDecoder { | |
| 104 public: | |
| 105 NamedStoreRegister(); | |
| 106 virtual ~NamedStoreRegister() {} | |
| 107 private: | |
| 108 nacl_arm_dec::StoreRegister named_decoder_; | |
| 109 }; | |
| 110 | |
| 111 class NamedLoadRegister : public NamedClassDecoder { | |
| 112 public: | |
| 113 NamedLoadRegister(); | |
| 114 virtual ~NamedLoadRegister() {} | |
| 115 private: | |
| 116 nacl_arm_dec::LoadRegister named_decoder_; | |
| 117 }; | |
| 118 | |
| 119 class NamedTestImmediate : public NamedClassDecoder { | |
| 120 public: | |
| 121 NamedTestImmediate(); | |
| 122 virtual ~NamedTestImmediate() {} | |
| 123 private: | |
| 124 nacl_arm_dec::TestImmediate named_decoder_; | |
| 125 }; | |
| 126 | |
| 127 class NamedVectorLoad : public NamedClassDecoder { | |
| 128 public: | |
| 129 NamedVectorLoad(); | |
| 130 virtual ~NamedVectorLoad() {} | |
| 131 private: | |
| 132 nacl_arm_dec::VectorLoad named_decoder_; | |
| 133 }; | |
| 134 | |
| 135 class NamedEffectiveNoOp : public NamedClassDecoder { | |
| 136 public: | |
| 137 NamedEffectiveNoOp(); | |
| 138 virtual ~NamedEffectiveNoOp() {} | |
| 139 private: | |
| 140 nacl_arm_dec::EffectiveNoOp named_decoder_; | |
| 141 }; | |
| 142 | |
| 143 class NamedLoadDoubleExclusive : public NamedClassDecoder { | |
| 144 public: | |
| 145 NamedLoadDoubleExclusive(); | |
| 39 virtual ~NamedLoadDoubleExclusive() {} | 146 virtual ~NamedLoadDoubleExclusive() {} |
| 40 virtual const char* name() const; | 147 private: |
| 41 }; | 148 nacl_arm_dec::LoadDoubleExclusive named_decoder_; |
| 42 | 149 }; |
| 43 struct NamedBranch : public Branch { | 150 |
| 44 virtual ~NamedBranch() {} | 151 class NamedBinary4RegisterShiftedOp : public NamedClassDecoder { |
| 45 virtual const char* name() const; | 152 public: |
| 46 }; | 153 NamedBinary4RegisterShiftedOp(); |
| 47 | 154 virtual ~NamedBinary4RegisterShiftedOp() {} |
| 48 struct NamedTest : public Test { | 155 private: |
| 49 virtual ~NamedTest() {} | 156 nacl_arm_dec::Binary4RegisterShiftedOp named_decoder_; |
| 50 virtual const char* name() const; | 157 }; |
| 51 }; | 158 |
| 52 | 159 class NamedBreakpoint : public NamedClassDecoder { |
| 53 struct NamedStoreRegister : public StoreRegister { | 160 public: |
| 54 virtual ~NamedStoreRegister() {} | 161 NamedBreakpoint(); |
| 55 virtual const char* name() const; | 162 virtual ~NamedBreakpoint() {} |
| 56 }; | 163 private: |
| 57 | 164 nacl_arm_dec::Breakpoint named_decoder_; |
| 58 struct NamedMoveDoubleFromCoprocessor : public MoveDoubleFromCoprocessor { | 165 }; |
| 166 | |
| 167 class NamedMultiply : public NamedClassDecoder { | |
| 168 public: | |
| 169 NamedMultiply(); | |
| 170 virtual ~NamedMultiply() {} | |
| 171 private: | |
| 172 nacl_arm_dec::Multiply named_decoder_; | |
| 173 }; | |
| 174 | |
| 175 class NamedAdd_Rule_7_A1_P26 : public NamedClassDecoder { | |
| 176 public: | |
| 177 NamedAdd_Rule_7_A1_P26(); | |
| 178 virtual ~NamedAdd_Rule_7_A1_P26() {} | |
| 179 private: | |
| 180 nacl_arm_dec::Add_Rule_7_A1_P26 named_decoder_; | |
| 181 }; | |
| 182 | |
| 183 class NamedPackSatRev : public NamedClassDecoder { | |
| 184 public: | |
| 185 NamedPackSatRev(); | |
| 186 virtual ~NamedPackSatRev() {} | |
| 187 private: | |
| 188 nacl_arm_dec::PackSatRev named_decoder_; | |
| 189 }; | |
| 190 | |
| 191 class NamedLoadExclusive : public NamedClassDecoder { | |
| 192 public: | |
| 193 NamedLoadExclusive(); | |
| 194 virtual ~NamedLoadExclusive() {} | |
| 195 private: | |
| 196 nacl_arm_dec::LoadExclusive named_decoder_; | |
| 197 }; | |
| 198 | |
| 199 class NamedVectorStore : public NamedClassDecoder { | |
| 200 public: | |
| 201 NamedVectorStore(); | |
| 202 virtual ~NamedVectorStore() {} | |
| 203 private: | |
| 204 nacl_arm_dec::VectorStore named_decoder_; | |
| 205 }; | |
| 206 | |
| 207 class NamedUnary3RegisterShiftedOp : public NamedClassDecoder { | |
| 208 public: | |
| 209 NamedUnary3RegisterShiftedOp(); | |
| 210 virtual ~NamedUnary3RegisterShiftedOp() {} | |
| 211 private: | |
| 212 nacl_arm_dec::Unary3RegisterShiftedOp named_decoder_; | |
| 213 }; | |
| 214 | |
| 215 class NamedUndefined : public NamedClassDecoder { | |
| 216 public: | |
| 217 NamedUndefined(); | |
| 218 virtual ~NamedUndefined() {} | |
| 219 private: | |
| 220 nacl_arm_dec::Undefined named_decoder_; | |
| 221 }; | |
| 222 | |
| 223 class NamedDataProc : public NamedClassDecoder { | |
| 224 public: | |
| 225 NamedDataProc(); | |
| 226 virtual ~NamedDataProc() {} | |
| 227 private: | |
| 228 nacl_arm_dec::DataProc named_decoder_; | |
| 229 }; | |
| 230 | |
| 231 class NamedDeprecated : public NamedClassDecoder { | |
| 232 public: | |
| 233 NamedDeprecated(); | |
| 234 virtual ~NamedDeprecated() {} | |
| 235 private: | |
| 236 nacl_arm_dec::Deprecated named_decoder_; | |
| 237 }; | |
| 238 | |
| 239 class NamedLoadImmediate : public NamedClassDecoder { | |
| 240 public: | |
| 241 NamedLoadImmediate(); | |
| 242 virtual ~NamedLoadImmediate() {} | |
| 243 private: | |
| 244 nacl_arm_dec::LoadImmediate named_decoder_; | |
| 245 }; | |
| 246 | |
| 247 class NamedStoreCoprocessor : public NamedClassDecoder { | |
| 248 public: | |
| 249 NamedStoreCoprocessor(); | |
| 250 virtual ~NamedStoreCoprocessor() {} | |
| 251 private: | |
| 252 nacl_arm_dec::StoreCoprocessor named_decoder_; | |
| 253 }; | |
| 254 | |
| 255 class NamedRoadblock : public NamedClassDecoder { | |
| 256 public: | |
| 257 NamedRoadblock(); | |
| 258 virtual ~NamedRoadblock() {} | |
| 259 private: | |
| 260 nacl_arm_dec::Roadblock named_decoder_; | |
| 261 }; | |
| 262 | |
| 263 class NamedMoveFromCoprocessor : public NamedClassDecoder { | |
| 264 public: | |
| 265 NamedMoveFromCoprocessor(); | |
| 266 virtual ~NamedMoveFromCoprocessor() {} | |
| 267 private: | |
| 268 nacl_arm_dec::MoveFromCoprocessor named_decoder_; | |
| 269 }; | |
| 270 | |
| 271 class NamedStoreExclusive : public NamedClassDecoder { | |
| 272 public: | |
| 273 NamedStoreExclusive(); | |
| 274 virtual ~NamedStoreExclusive() {} | |
| 275 private: | |
| 276 nacl_arm_dec::StoreExclusive named_decoder_; | |
| 277 }; | |
| 278 | |
| 279 class NamedStoreImmediate : public NamedClassDecoder { | |
| 280 public: | |
| 281 NamedStoreImmediate(); | |
| 282 virtual ~NamedStoreImmediate() {} | |
| 283 private: | |
| 284 nacl_arm_dec::StoreImmediate named_decoder_; | |
| 285 }; | |
| 286 | |
| 287 class NamedMoveDoubleFromCoprocessor : public NamedClassDecoder { | |
| 288 public: | |
| 289 NamedMoveDoubleFromCoprocessor(); | |
| 59 virtual ~NamedMoveDoubleFromCoprocessor() {} | 290 virtual ~NamedMoveDoubleFromCoprocessor() {} |
| 60 virtual const char* name() const; | 291 private: |
| 61 }; | 292 nacl_arm_dec::MoveDoubleFromCoprocessor named_decoder_; |
| 62 | 293 }; |
| 63 struct NamedTestImmediate : public TestImmediate { | 294 |
| 64 virtual ~NamedTestImmediate() {} | 295 class NamedSatAddSub : public NamedClassDecoder { |
| 65 virtual const char* name() const; | 296 public: |
| 66 }; | 297 NamedSatAddSub(); |
| 67 | 298 virtual ~NamedSatAddSub() {} |
| 68 struct NamedBxBlx : public BxBlx { | 299 private: |
| 300 nacl_arm_dec::SatAddSub named_decoder_; | |
| 301 }; | |
| 302 | |
| 303 class NamedLoadDoubleI : public NamedClassDecoder { | |
| 304 public: | |
| 305 NamedLoadDoubleI(); | |
| 306 virtual ~NamedLoadDoubleI() {} | |
| 307 private: | |
| 308 nacl_arm_dec::LoadDoubleI named_decoder_; | |
| 309 }; | |
| 310 | |
| 311 class NamedBinary3RegisterShiftedTest : public NamedClassDecoder { | |
| 312 public: | |
| 313 NamedBinary3RegisterShiftedTest(); | |
| 314 virtual ~NamedBinary3RegisterShiftedTest() {} | |
| 315 private: | |
| 316 nacl_arm_dec::Binary3RegisterShiftedTest named_decoder_; | |
| 317 }; | |
| 318 | |
| 319 class NamedUnpredictable : public NamedClassDecoder { | |
| 320 public: | |
| 321 NamedUnpredictable(); | |
| 322 virtual ~NamedUnpredictable() {} | |
| 323 private: | |
| 324 nacl_arm_dec::Unpredictable named_decoder_; | |
| 325 }; | |
| 326 | |
| 327 class NamedForbidden : public NamedClassDecoder { | |
| 328 public: | |
| 329 NamedForbidden(); | |
| 330 virtual ~NamedForbidden() {} | |
| 331 private: | |
| 332 nacl_arm_dec::Forbidden named_decoder_; | |
| 333 }; | |
| 334 | |
| 335 class NamedBxBlx : public NamedClassDecoder { | |
| 336 public: | |
| 337 NamedBxBlx(); | |
| 69 virtual ~NamedBxBlx() {} | 338 virtual ~NamedBxBlx() {} |
| 70 virtual const char* name() const; | 339 private: |
| 71 }; | 340 nacl_arm_dec::BxBlx named_decoder_; |
| 72 | 341 }; |
| 73 struct NamedEffectiveNoOp : public EffectiveNoOp { | 342 |
| 74 virtual ~NamedEffectiveNoOp() {} | 343 class NamedLoadDoubleR : public NamedClassDecoder { |
| 75 virtual const char* name() const; | 344 public: |
| 76 }; | 345 NamedLoadDoubleR(); |
| 77 | |
| 78 struct NamedLongMultiply : public LongMultiply { | |
| 79 virtual ~NamedLongMultiply() {} | |
| 80 virtual const char* name() const; | |
| 81 }; | |
| 82 | |
| 83 struct NamedBinary4RegisterShiftedOp : public Binary4RegisterShiftedOp { | |
| 84 virtual ~NamedBinary4RegisterShiftedOp() {} | |
| 85 virtual const char* name() const; | |
| 86 }; | |
| 87 | |
| 88 struct NamedBreakpoint : public Breakpoint { | |
| 89 virtual ~NamedBreakpoint() {} | |
| 90 virtual const char* name() const; | |
| 91 }; | |
| 92 | |
| 93 struct NamedMultiply : public Multiply { | |
| 94 virtual ~NamedMultiply() {} | |
| 95 virtual const char* name() const; | |
| 96 }; | |
| 97 | |
| 98 struct NamedPackSatRev : public PackSatRev { | |
| 99 virtual ~NamedPackSatRev() {} | |
| 100 virtual const char* name() const; | |
| 101 }; | |
| 102 | |
| 103 struct NamedLoadExclusive : public LoadExclusive { | |
| 104 virtual ~NamedLoadExclusive() {} | |
| 105 virtual const char* name() const; | |
| 106 }; | |
| 107 | |
| 108 struct NamedVectorStore : public VectorStore { | |
| 109 virtual ~NamedVectorStore() {} | |
| 110 virtual const char* name() const; | |
| 111 }; | |
| 112 | |
| 113 struct NamedUnary3RegisterShiftedOp : public Unary3RegisterShiftedOp { | |
| 114 virtual ~NamedUnary3RegisterShiftedOp() {} | |
| 115 virtual const char* name() const; | |
| 116 }; | |
| 117 | |
| 118 struct NamedUndefined : public Undefined { | |
| 119 virtual ~NamedUndefined() {} | |
| 120 virtual const char* name() const; | |
| 121 }; | |
| 122 | |
| 123 struct NamedDataProc : public DataProc { | |
| 124 virtual ~NamedDataProc() {} | |
| 125 virtual const char* name() const; | |
| 126 }; | |
| 127 | |
| 128 struct NamedDeprecated : public Deprecated { | |
| 129 virtual ~NamedDeprecated() {} | |
| 130 virtual const char* name() const; | |
| 131 }; | |
| 132 | |
| 133 struct NamedLoadImmediate : public LoadImmediate { | |
| 134 virtual ~NamedLoadImmediate() {} | |
| 135 virtual const char* name() const; | |
| 136 }; | |
| 137 | |
| 138 struct NamedStoreCoprocessor : public StoreCoprocessor { | |
| 139 virtual ~NamedStoreCoprocessor() {} | |
| 140 virtual const char* name() const; | |
| 141 }; | |
| 142 | |
| 143 struct NamedRoadblock : public Roadblock { | |
| 144 virtual ~NamedRoadblock() {} | |
| 145 virtual const char* name() const; | |
| 146 }; | |
| 147 | |
| 148 struct NamedLoadDoubleR : public LoadDoubleR { | |
| 149 virtual ~NamedLoadDoubleR() {} | 346 virtual ~NamedLoadDoubleR() {} |
| 150 virtual const char* name() const; | 347 private: |
| 151 }; | 348 nacl_arm_dec::LoadDoubleR named_decoder_; |
| 152 | |
| 153 struct NamedStoreExclusive : public StoreExclusive { | |
| 154 virtual ~NamedStoreExclusive() {} | |
| 155 virtual const char* name() const; | |
| 156 }; | |
| 157 | |
| 158 struct NamedStoreImmediate : public StoreImmediate { | |
| 159 virtual ~NamedStoreImmediate() {} | |
| 160 virtual const char* name() const; | |
| 161 }; | |
| 162 | |
| 163 struct NamedMoveFromCoprocessor : public MoveFromCoprocessor { | |
| 164 virtual ~NamedMoveFromCoprocessor() {} | |
| 165 virtual const char* name() const; | |
| 166 }; | |
| 167 | |
| 168 struct NamedLoadRegister : public LoadRegister { | |
| 169 virtual ~NamedLoadRegister() {} | |
| 170 virtual const char* name() const; | |
| 171 }; | |
| 172 | |
| 173 struct NamedLoadDoubleI : public LoadDoubleI { | |
| 174 virtual ~NamedLoadDoubleI() {} | |
| 175 virtual const char* name() const; | |
| 176 }; | |
| 177 | |
| 178 struct NamedBinary3RegisterShiftedTest : public Binary3RegisterShiftedTest { | |
| 179 virtual ~NamedBinary3RegisterShiftedTest() {} | |
| 180 virtual const char* name() const; | |
| 181 }; | |
| 182 | |
| 183 struct NamedUnpredictable : public Unpredictable { | |
| 184 virtual ~NamedUnpredictable() {} | |
| 185 virtual const char* name() const; | |
| 186 }; | |
| 187 | |
| 188 struct NamedForbidden : public Forbidden { | |
| 189 virtual ~NamedForbidden() {} | |
| 190 virtual const char* name() const; | |
| 191 }; | |
| 192 | |
| 193 struct NamedVectorLoad : public VectorLoad { | |
| 194 virtual ~NamedVectorLoad() {} | |
| 195 virtual const char* name() const; | |
| 196 }; | |
| 197 | |
| 198 struct NamedMoveToStatusRegister : public MoveToStatusRegister { | |
| 199 virtual ~NamedMoveToStatusRegister() {} | |
| 200 virtual const char* name() const; | |
| 201 }; | |
| 202 | |
| 203 struct NamedSatAddSub : public SatAddSub { | |
| 204 virtual ~NamedSatAddSub() {} | |
| 205 virtual const char* name() const; | |
| 206 }; | 349 }; |
| 207 | 350 |
| 208 /* | 351 /* |
| 209 * Defines a stateless decoder class selector for instructions | 352 * Defines a stateless decoder class selector for instructions |
| 210 */ | 353 */ |
| 211 /* | 354 class NamedArm32DecoderState : nacl_arm_dec::DecoderState { |
| 212 * Define the class decoders used by this decoder state. | 355 public: |
| 213 */ | 356 /* |
| 214 class NamedArm32DecoderState : DecoderState { | 357 * Generates an instance of a decoder state. |
| 215 public: | 358 */ |
| 216 // Generates an instance of a decoder state. | |
| 217 explicit NamedArm32DecoderState(); | 359 explicit NamedArm32DecoderState(); |
| 218 virtual ~NamedArm32DecoderState(); | 360 virtual ~NamedArm32DecoderState(); |
| 219 | 361 |
| 220 // Parses the given instruction, returning the decoder to use. | 362 /* |
| 221 virtual const class ClassDecoder &decode(const Instruction) const; | 363 * Parses the given instruction, returning the decoder to use. |
| 222 | 364 */ |
| 223 // Define the decoders to use in this decoder state | 365 const NamedClassDecoder &decode_named( const nacl_arm_dec::Instruction) co nst; |
| 224 NamedCoprocessorOp CoprocessorOp_instance_; | 366 virtual const class nacl_arm_dec::ClassDecoder |
| 225 NamedImmediateBic ImmediateBic_instance_; | 367 &decode(const nacl_arm_dec::Instruction) const; |
| 226 NamedLoadMultiple LoadMultiple_instance_; | 368 /* |
| 227 NamedLoadCoprocessor LoadCoprocessor_instance_; | 369 * Define the class decoders used by this decoder state. |
| 228 NamedLoadDoubleExclusive LoadDoubleExclusive_instance_; | 370 */ |
| 229 NamedBranch Branch_instance_; | 371 const NamedCoprocessorOp CoprocessorOp_instance_; |
| 230 NamedTest Test_instance_; | 372 const NamedMoveToStatusRegister MoveToStatusRegister_instance_; |
| 231 NamedStoreRegister StoreRegister_instance_; | 373 const NamedImmediateBic ImmediateBic_instance_; |
| 232 NamedMoveDoubleFromCoprocessor MoveDoubleFromCoprocessor_instance_; | 374 const NamedLoadMultiple LoadMultiple_instance_; |
| 233 NamedTestImmediate TestImmediate_instance_; | 375 const NamedLoadCoprocessor LoadCoprocessor_instance_; |
| 234 NamedBxBlx BxBlx_instance_; | 376 const NamedLongMultiply LongMultiply_instance_; |
| 235 NamedEffectiveNoOp EffectiveNoOp_instance_; | 377 const NamedBranch Branch_instance_; |
| 236 NamedLongMultiply LongMultiply_instance_; | 378 const NamedTest Test_instance_; |
| 237 NamedBinary4RegisterShiftedOp Binary4RegisterShiftedOp_instance_; | 379 const NamedStoreRegister StoreRegister_instance_; |
| 238 NamedBreakpoint Breakpoint_instance_; | 380 const NamedLoadRegister LoadRegister_instance_; |
| 239 NamedMultiply Multiply_instance_; | 381 const NamedTestImmediate TestImmediate_instance_; |
| 240 NamedPackSatRev PackSatRev_instance_; | 382 const NamedVectorLoad VectorLoad_instance_; |
| 241 NamedLoadExclusive LoadExclusive_instance_; | 383 const NamedEffectiveNoOp EffectiveNoOp_instance_; |
| 242 NamedVectorStore VectorStore_instance_; | 384 const NamedLoadDoubleExclusive LoadDoubleExclusive_instance_; |
| 243 NamedUnary3RegisterShiftedOp Unary3RegisterShiftedOp_instance_; | 385 const NamedBinary4RegisterShiftedOp Binary4RegisterShiftedOp_instance_; |
| 244 NamedUndefined Undefined_instance_; | 386 const NamedBreakpoint Breakpoint_instance_; |
| 245 NamedDataProc DataProc_instance_; | 387 const NamedMultiply Multiply_instance_; |
| 246 NamedDeprecated Deprecated_instance_; | 388 const NamedAdd_Rule_7_A1_P26 Add_Rule_7_A1_P26_instance_; |
| 247 NamedLoadImmediate LoadImmediate_instance_; | 389 const NamedPackSatRev PackSatRev_instance_; |
| 248 NamedStoreCoprocessor StoreCoprocessor_instance_; | 390 const NamedLoadExclusive LoadExclusive_instance_; |
| 249 NamedRoadblock Roadblock_instance_; | 391 const NamedVectorStore VectorStore_instance_; |
| 250 NamedLoadDoubleR LoadDoubleR_instance_; | 392 const NamedUnary3RegisterShiftedOp Unary3RegisterShiftedOp_instance_; |
| 251 NamedStoreExclusive StoreExclusive_instance_; | 393 const NamedUndefined Undefined_instance_; |
| 252 NamedStoreImmediate StoreImmediate_instance_; | 394 const NamedDataProc DataProc_instance_; |
| 253 NamedMoveFromCoprocessor MoveFromCoprocessor_instance_; | 395 const NamedDeprecated Deprecated_instance_; |
| 254 NamedLoadRegister LoadRegister_instance_; | 396 const NamedLoadImmediate LoadImmediate_instance_; |
| 255 NamedLoadDoubleI LoadDoubleI_instance_; | 397 const NamedStoreCoprocessor StoreCoprocessor_instance_; |
| 256 NamedBinary3RegisterShiftedTest Binary3RegisterShiftedTest_instance_; | 398 const NamedRoadblock Roadblock_instance_; |
| 257 NamedUnpredictable Unpredictable_instance_; | 399 const NamedMoveFromCoprocessor MoveFromCoprocessor_instance_; |
| 258 NamedForbidden Forbidden_instance_; | 400 const NamedStoreExclusive StoreExclusive_instance_; |
| 259 NamedVectorLoad VectorLoad_instance_; | 401 const NamedStoreImmediate StoreImmediate_instance_; |
| 260 NamedMoveToStatusRegister MoveToStatusRegister_instance_; | 402 const NamedMoveDoubleFromCoprocessor MoveDoubleFromCoprocessor_instance_; |
| 261 NamedSatAddSub SatAddSub_instance_; | 403 const NamedSatAddSub SatAddSub_instance_; |
| 262 | 404 const NamedLoadDoubleI LoadDoubleI_instance_; |
| 263 private: | 405 const NamedBinary3RegisterShiftedTest Binary3RegisterShiftedTest_instance_; |
| 264 // Don't allow the following! | 406 const NamedUnpredictable Unpredictable_instance_; |
| 265 explicit NamedArm32DecoderState(const NamedArm32DecoderState&); | 407 const NamedForbidden Forbidden_instance_; |
| 266 void operator=(const NamedArm32DecoderState&); | 408 const NamedBxBlx BxBlx_instance_; |
| 409 const NamedLoadDoubleR LoadDoubleR_instance_; | |
| 410 | |
| 411 | |
| 412 private: | |
| 413 /* | |
| 414 * Prototypes for static table-matching functions. | |
| 415 */ | |
| 416 inline const NamedClassDecoder &decode_ARMv7( const nacl_arm_dec::Instruct ion insn) const; | |
| 417 | |
| 418 inline const NamedClassDecoder &decode_dp_misc( const nacl_arm_dec::Instru ction insn) const; | |
| 419 | |
| 420 inline const NamedClassDecoder &decode_dp_reg( const nacl_arm_dec::Instruc tion insn) const; | |
| 421 | |
| 422 inline const NamedClassDecoder &decode_dp_reg_shifted( const nacl_arm_dec: :Instruction insn) const; | |
| 423 | |
| 424 inline const NamedClassDecoder &decode_dp_immed( const nacl_arm_dec::Instr uction insn) const; | |
| 425 | |
| 426 inline const NamedClassDecoder &decode_mult( const nacl_arm_dec::Instructi on insn) const; | |
| 427 | |
| 428 inline const NamedClassDecoder &decode_sat_add_sub( const nacl_arm_dec::In struction insn) const; | |
| 429 | |
| 430 inline const NamedClassDecoder &decode_half_mult( const nacl_arm_dec::Inst ruction insn) const; | |
| 431 | |
| 432 inline const NamedClassDecoder &decode_extra_load_store( const nacl_arm_de c::Instruction insn) const; | |
| 433 | |
| 434 inline const NamedClassDecoder &decode_sync( const nacl_arm_dec::Instructi on insn) const; | |
| 435 | |
| 436 inline const NamedClassDecoder &decode_msr_and_hints( const nacl_arm_dec:: Instruction insn) const; | |
| 437 | |
| 438 inline const NamedClassDecoder &decode_misc( const nacl_arm_dec::Instructi on insn) const; | |
| 439 | |
| 440 inline const NamedClassDecoder &decode_load_store_word_byte( const nacl_ar m_dec::Instruction insn) const; | |
| 441 | |
| 442 inline const NamedClassDecoder &decode_media( const nacl_arm_dec::Instruct ion insn) const; | |
| 443 | |
| 444 inline const NamedClassDecoder &decode_parallel_add_sub( const nacl_arm_de c::Instruction insn) const; | |
| 445 | |
| 446 inline const NamedClassDecoder &decode_pack_sat_rev( const nacl_arm_dec::I nstruction insn) const; | |
| 447 | |
| 448 inline const NamedClassDecoder &decode_signed_mult( const nacl_arm_dec::In struction insn) const; | |
| 449 | |
| 450 inline const NamedClassDecoder &decode_branch_block_xfer( const nacl_arm_d ec::Instruction insn) const; | |
| 451 | |
| 452 inline const NamedClassDecoder &decode_super_cop( const nacl_arm_dec::Inst ruction insn) const; | |
| 453 | |
| 454 inline const NamedClassDecoder &decode_unconditional( const nacl_arm_dec:: Instruction insn) const; | |
| 455 | |
| 456 inline const NamedClassDecoder &decode_misc_hints_simd( const nacl_arm_dec ::Instruction insn) const; | |
| 457 | |
| 458 inline const NamedClassDecoder &decode_simd_dp( const nacl_arm_dec::Instru ction insn) const; | |
| 459 | |
| 460 inline const NamedClassDecoder &decode_simd_dp_3same( const nacl_arm_dec:: Instruction insn) const; | |
| 461 | |
| 462 inline const NamedClassDecoder &decode_simd_dp_3diff( const nacl_arm_dec:: Instruction insn) const; | |
| 463 | |
| 464 inline const NamedClassDecoder &decode_simd_dp_2scalar( const nacl_arm_dec ::Instruction insn) const; | |
| 465 | |
| 466 inline const NamedClassDecoder &decode_simd_dp_2shift( const nacl_arm_dec: :Instruction insn) const; | |
| 467 | |
| 468 inline const NamedClassDecoder &decode_simd_dp_2misc( const nacl_arm_dec:: Instruction insn) const; | |
| 469 | |
| 470 inline const NamedClassDecoder &decode_simd_dp_1imm( const nacl_arm_dec::I nstruction insn) const; | |
| 471 | |
| 472 inline const NamedClassDecoder &decode_simd_load_store( const nacl_arm_dec ::Instruction insn) const; | |
| 473 | |
| 474 inline const NamedClassDecoder &decode_simd_load_store_l0( const nacl_arm_ dec::Instruction insn) const; | |
| 475 | |
| 476 inline const NamedClassDecoder &decode_simd_load_store_l1( const nacl_arm_ dec::Instruction insn) const; | |
| 477 | |
| 267 }; | 478 }; |
| 268 | 479 |
| 269 } // namespace | 480 } // namespace |
| 270 #endif // NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_H_ | 481 #endif // NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_GEN_ARM32_DECODE_NAMED_H_ |
| OLD | NEW |