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

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 24 matching lines...) Expand all
35 , DontCareInstRnRsRmNotPc_instance_() 35 , DontCareInstRnRsRmNotPc_instance_()
36 , EffectiveNoOp_instance_() 36 , EffectiveNoOp_instance_()
37 , Forbidden_instance_() 37 , Forbidden_instance_()
38 , LdrImmediate_instance_() 38 , LdrImmediate_instance_()
39 , LdrImmediateDouble_instance_() 39 , LdrImmediateDouble_instance_()
40 , LdrRegister_instance_() 40 , LdrRegister_instance_()
41 , LdrRegisterDouble_instance_() 41 , LdrRegisterDouble_instance_()
42 , LoadCoprocessor_instance_() 42 , LoadCoprocessor_instance_()
43 , LoadDoubleExclusive_instance_() 43 , LoadDoubleExclusive_instance_()
44 , LoadExclusive_instance_() 44 , LoadExclusive_instance_()
45 , LoadImmediate_instance_()
46 , LoadMultiple_instance_() 45 , LoadMultiple_instance_()
47 , LoadRegister_instance_()
48 , LongMultiply_instance_() 46 , LongMultiply_instance_()
49 , MaskAddress_instance_() 47 , MaskAddress_instance_()
50 , MoveDoubleFromCoprocessor_instance_() 48 , MoveDoubleFromCoprocessor_instance_()
51 , MoveFromCoprocessor_instance_() 49 , MoveFromCoprocessor_instance_()
52 , MoveToStatusRegister_instance_() 50 , MoveToStatusRegister_instance_()
53 , Multiply_instance_() 51 , Multiply_instance_()
54 , PackSatRev_instance_() 52 , PackSatRev_instance_()
55 , Roadblock_instance_() 53 , Roadblock_instance_()
56 , SatAddSub_instance_() 54 , SatAddSub_instance_()
57 , StoreCoprocessor_instance_() 55 , StoreCoprocessor_instance_()
58 , StoreExclusive_instance_() 56 , StoreExclusive_instance_()
59 , StoreImmediate_instance_() 57 , StoreImmediate_instance_()
60 , StoreRegister_instance_()
61 , StrImmediate_instance_() 58 , StrImmediate_instance_()
62 , StrImmediateDouble_instance_() 59 , StrImmediateDouble_instance_()
63 , StrRegister_instance_() 60 , StrRegister_instance_()
64 , StrRegisterDouble_instance_() 61 , StrRegisterDouble_instance_()
65 , TestIfAddressMasked_instance_() 62 , TestIfAddressMasked_instance_()
66 , Unary1RegisterBitRange_instance_() 63 , Unary1RegisterBitRange_instance_()
67 , Unary1RegisterImmediateOp_instance_() 64 , Unary1RegisterImmediateOp_instance_()
68 , Undefined_instance_() 65 , Undefined_instance_()
69 , Unpredictable_instance_() 66 , Unpredictable_instance_()
70 , VectorLoad_instance_() 67 , VectorLoad_instance_()
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 454
458 // Implementation of table: load_store_word_byte. 455 // Implementation of table: load_store_word_byte.
459 // Specified by: See Section A5.3 456 // Specified by: See Section A5.3
460 const ClassDecoder& Arm32DecoderState::decode_load_store_word_byte( 457 const ClassDecoder& Arm32DecoderState::decode_load_store_word_byte(
461 const Instruction insn) const 458 const Instruction insn) const
462 { 459 {
463 UNREFERENCED_PARAMETER(insn); 460 UNREFERENCED_PARAMETER(insn);
464 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 461 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
465 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ && 462 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ &&
466 true) 463 true)
467 return StoreImmediate_instance_; 464 return StrImmediate_instance_;
468 465
469 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 466 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
470 (insn.Bits() & 0x01300000) == 0x00100000 /* op1(24:20) == 0xx01 */ && 467 (insn.Bits() & 0x01300000) == 0x00100000 /* op1(24:20) == 0xx01 */ &&
471 true) 468 true)
472 return LoadImmediate_instance_; 469 return LdrImmediate_instance_;
473 470
474 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 471 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
475 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ && 472 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ &&
476 true) 473 true)
477 return StoreImmediate_instance_; 474 return StrImmediate_instance_;
478 475
479 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 476 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
480 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ && 477 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ &&
481 true) 478 true)
482 return LoadImmediate_instance_; 479 return LdrImmediate_instance_;
483 480
484 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ && 481 if ((insn.Bits() & 0x02000000) == 0x00000000 /* A(25:25) == 0 */ &&
485 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ && 482 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ &&
486 true) 483 true)
487 return Forbidden_instance_; 484 return Forbidden_instance_;
488 485
489 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 486 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
490 (insn.Bits() & 0x01700000) == 0x00500000 /* op1(24:20) == 0x101 */ && 487 (insn.Bits() & 0x01700000) == 0x00500000 /* op1(24:20) == 0x101 */ &&
491 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 488 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
492 return LoadRegister_instance_; 489 return LdrRegister_instance_;
493 490
494 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 491 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
495 (insn.Bits() & 0x00700000) == 0x00100000 /* op1(24:20) == xx001 */ && 492 (insn.Bits() & 0x00700000) == 0x00100000 /* op1(24:20) == xx001 */ &&
496 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 493 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
497 return LoadRegister_instance_; 494 return LdrRegister_instance_;
498 495
499 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 496 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
500 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ && 497 (insn.Bits() & 0x01300000) == 0x00000000 /* op1(24:20) == 0xx00 */ &&
501 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 498 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
502 return StoreRegister_instance_; 499 return StrRegister_instance_;
503 500
504 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 501 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
505 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ && 502 (insn.Bits() & 0x01100000) == 0x01000000 /* op1(24:20) == 1xxx0 */ &&
506 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 503 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
507 return StoreRegister_instance_; 504 return StrRegister_instance_;
508 505
509 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 506 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
510 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ && 507 (insn.Bits() & 0x01100000) == 0x01100000 /* op1(24:20) == 1xxx1 */ &&
511 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 508 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
512 return LoadRegister_instance_; 509 return LdrRegister_instance_;
513 510
514 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ && 511 if ((insn.Bits() & 0x02000000) == 0x02000000 /* A(25:25) == 1 */ &&
515 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ && 512 (insn.Bits() & 0x01200000) == 0x00200000 /* op1(24:20) == 0xx1x */ &&
516 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */) 513 (insn.Bits() & 0x00000010) == 0x00000000 /* B(4:4) == 0 */)
517 return Forbidden_instance_; 514 return Forbidden_instance_;
518 515
519 // Catch any attempt to fall though ... 516 // Catch any attempt to fall though ...
520 fprintf(stderr, "TABLE IS INCOMPLETE: load_store_word_byte could not parse %08 X", 517 fprintf(stderr, "TABLE IS INCOMPLETE: load_store_word_byte could not parse %08 X",
521 insn.Bits()); 518 insn.Bits());
522 return Forbidden_instance_; 519 return Forbidden_instance_;
(...skipping 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1748 fprintf(stderr, "TABLE IS INCOMPLETE: unconditional could not parse %08X", 1745 fprintf(stderr, "TABLE IS INCOMPLETE: unconditional could not parse %08X",
1749 insn.Bits()); 1746 insn.Bits());
1750 return Forbidden_instance_; 1747 return Forbidden_instance_;
1751 } 1748 }
1752 1749
1753 const ClassDecoder& Arm32DecoderState::decode(const Instruction insn) const { 1750 const ClassDecoder& Arm32DecoderState::decode(const Instruction insn) const {
1754 return decode_ARMv7(insn); 1751 return decode_ARMv7(insn);
1755 } 1752 }
1756 1753
1757 } // namespace nacl_arm_dec 1754 } // namespace nacl_arm_dec
OLDNEW
« no previous file with comments | « src/trusted/validator_arm/gen/arm32_decode.h ('k') | src/trusted/validator_arm/gen/arm32_decode_named.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698