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

Side by Side Diff: src/trusted/validator_arm/gen/arm32_decode.cc

Issue 10459058: Define a baseline and testing patterns for ARM load_store_word_byte table. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // DO NOT EDIT: GENERATED CODE 7 // DO NOT EDIT: GENERATED CODE
8 8
9 9
10 #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h" 10 #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h"
(...skipping 23 matching lines...) Expand all
34 , DontCareInst_instance_() 34 , DontCareInst_instance_()
35 , EffectiveNoOp_instance_() 35 , EffectiveNoOp_instance_()
36 , Forbidden_instance_() 36 , Forbidden_instance_()
37 , LdrImmediate_instance_() 37 , LdrImmediate_instance_()
38 , LdrImmediateDouble_instance_() 38 , LdrImmediateDouble_instance_()
39 , LdrRegister_instance_() 39 , LdrRegister_instance_()
40 , LdrRegisterDouble_instance_() 40 , LdrRegisterDouble_instance_()
41 , LoadCoprocessor_instance_() 41 , LoadCoprocessor_instance_()
42 , LoadDoubleExclusive_instance_() 42 , LoadDoubleExclusive_instance_()
43 , LoadExclusive_instance_() 43 , LoadExclusive_instance_()
44 , LoadImmediate_instance_()
45 , LoadMultiple_instance_() 44 , LoadMultiple_instance_()
46 , LoadRegister_instance_()
47 , LongMultiply_instance_() 45 , LongMultiply_instance_()
48 , MaskAddress_instance_() 46 , MaskAddress_instance_()
49 , MoveDoubleFromCoprocessor_instance_() 47 , MoveDoubleFromCoprocessor_instance_()
50 , MoveFromCoprocessor_instance_() 48 , MoveFromCoprocessor_instance_()
51 , MoveToStatusRegister_instance_() 49 , MoveToStatusRegister_instance_()
52 , Multiply_instance_() 50 , Multiply_instance_()
53 , PackSatRev_instance_() 51 , PackSatRev_instance_()
54 , Roadblock_instance_() 52 , Roadblock_instance_()
55 , SatAddSub_instance_() 53 , SatAddSub_instance_()
56 , StoreCoprocessor_instance_() 54 , StoreCoprocessor_instance_()
57 , StoreExclusive_instance_() 55 , StoreExclusive_instance_()
58 , StoreImmediate_instance_() 56 , StoreImmediate_instance_()
59 , StoreRegister_instance_()
60 , StrImmediate_instance_() 57 , StrImmediate_instance_()
61 , StrImmediateDouble_instance_() 58 , StrImmediateDouble_instance_()
62 , StrRegister_instance_() 59 , StrRegister_instance_()
63 , StrRegisterDouble_instance_() 60 , StrRegisterDouble_instance_()
64 , TestIfAddressMasked_instance_() 61 , TestIfAddressMasked_instance_()
65 , Unary1RegisterBitRange_instance_() 62 , Unary1RegisterBitRange_instance_()
66 , Unary1RegisterImmediateOp_instance_() 63 , Unary1RegisterImmediateOp_instance_()
67 , Unary3RegisterShiftedOp_instance_() 64 , Unary3RegisterShiftedOp_instance_()
68 , Undefined_instance_() 65 , Undefined_instance_()
69 , Unpredictable_instance_() 66 , Unpredictable_instance_()
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 446
450 // Implementation of table: load_store_word_byte. 447 // Implementation of table: load_store_word_byte.
451 // Specified by: See Section A5.3 448 // Specified by: See Section A5.3
452 const ClassDecoder& Arm32DecoderState::decode_load_store_word_byte( 449 const ClassDecoder& Arm32DecoderState::decode_load_store_word_byte(
453 const Instruction insn) const 450 const Instruction insn) const
454 { 451 {
455 UNREFERENCED_PARAMETER(insn); 452 UNREFERENCED_PARAMETER(insn);
456 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 453 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
457 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ && 454 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ &&
458 true) 455 true)
459 return StoreImmediate_instance_; 456 return StrImmediate_instance_;
460 457
461 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 458 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
462 (insn.Bits() & 0x01300000) == 0x00100000 /* op1(24:20) == 0xx01 */ && 459 (insn.Bits() & 0x01300000) == 0x00100000 /* op1(24:20) == 0xx01 */ &&
463 true) 460 true)
464 return LoadImmediate_instance_; 461 return LdrImmediate_instance_;
465 462
466 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 463 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
467 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ && 464 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ &&
468 true) 465 true)
469 return StoreImmediate_instance_; 466 return StrImmediate_instance_;
470 467
471 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 468 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
472 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ && 469 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ &&
473 true) 470 true)
474 return LoadImmediate_instance_; 471 return LdrImmediate_instance_;
475 472
476 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 473 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
477 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ && 474 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ &&
478 true) 475 true)
479 return Forbidden_instance_; 476 return Forbidden_instance_;
480 477
481 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 478 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
482 (insn.Bits() & 0x01700000) == 0x00500000 /* op1(24:20) == 0x101 */ && 479 (insn.Bits() & 0x01700000) == 0x00500000 /* op1(24:20) == 0x101 */ &&
483 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 480 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
484 return LoadRegister_instance_; 481 return LdrRegister_instance_;
485 482
486 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 483 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
487 (insn.Bits() & 0x00700000) == 0x00100000 /* op1(24:20) == xx001 */ && 484 (insn.Bits() & 0x00700000) == 0x00100000 /* op1(24:20) == xx001 */ &&
488 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 485 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
489 return LoadRegister_instance_; 486 return LdrRegister_instance_;
490 487
491 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 488 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
492 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ && 489 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ &&
493 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 490 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
494 return StoreRegister_instance_; 491 return StrRegister_instance_;
495 492
496 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 493 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
497 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ && 494 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ &&
498 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 495 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
499 return StoreRegister_instance_; 496 return StrRegister_instance_;
500 497
501 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 498 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
502 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ && 499 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ &&
503 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 500 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
504 return LoadRegister_instance_; 501 return LdrRegister_instance_;
505 502
506 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 503 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
507 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ && 504 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ &&
508 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 505 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
509 return Forbidden_instance_; 506 return Forbidden_instance_;
510 507
511 // Catch any attempt to fall though ... 508 // Catch any attempt to fall though ...
512 fprintf(stderr, "TABLE IS INCOMPLETE: load_store_word_byte could not parse %08 X", 509 fprintf(stderr, "TABLE IS INCOMPLETE: load_store_word_byte could not parse %08 X",
513 insn.Bits()); 510 insn.Bits());
514 return Forbidden_instance_; 511 return Forbidden_instance_;
(...skipping 1181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1696 fprintf(stderr, "TABLE IS INCOMPLETE: unconditional could not parse %08X", 1693 fprintf(stderr, "TABLE IS INCOMPLETE: unconditional could not parse %08X",
1697 insn.Bits()); 1694 insn.Bits());
1698 return Forbidden_instance_; 1695 return Forbidden_instance_;
1699 } 1696 }
1700 1697
1701 const ClassDecoder& Arm32DecoderState::decode(const Instruction insn) const { 1698 const ClassDecoder& Arm32DecoderState::decode(const Instruction insn) const {
1702 return decode_ARMv7(insn); 1699 return decode_ARMv7(insn);
1703 } 1700 }
1704 1701
1705 } // namespace nacl_arm_dec 1702 } // namespace nacl_arm_dec
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698