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

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

Issue 12223046: Use generated actual decoders for ARM table: (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 7 years, 10 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 2013 The Native Client Authors. All rights reserved. 2 * Copyright 2013 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 #include "native_client/src/trusted/validator_arm/gen/arm32_decode_baselines.h" 9 #include "native_client/src/trusted/validator_arm/gen/arm32_decode_baselines.h"
10 #include "native_client/src/trusted/validator_arm/inst_classes.h" 10 #include "native_client/src/trusted/validator_arm/inst_classes.h"
(...skipping 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after
1416 // uses: '{inst(3:0)}' 1416 // uses: '{inst(3:0)}'
1417 return RegisterList(). 1417 return RegisterList().
1418 Add(Register((inst.Bits() & 0x0000000F))); 1418 Add(Register((inst.Bits() & 0x0000000F)));
1419 } 1419 }
1420 1420
1421 // BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0: 1421 // BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0:
1422 // 1422 //
1423 // {Cond: Cond(31:28), 1423 // {Cond: Cond(31:28),
1424 // Lr: 14, 1424 // Lr: 14,
1425 // Pc: 15, 1425 // Pc: 15,
1426 // actual: Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1,
1426 // baseline: BranchImmediate24, 1427 // baseline: BranchImmediate24,
1427 // constraints: , 1428 // constraints: ,
1428 // defs: {Pc, Lr}, 1429 // defs: {Pc, Lr},
1429 // fields: [Cond(31:28), imm24(23:0)], 1430 // fields: [Cond(31:28), imm24(23:0)],
1430 // generated_baseline: BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case _0, 1431 // generated_baseline: BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case _0,
1431 // imm24: imm24(23:0), 1432 // imm24: imm24(23:0),
1432 // imm32: SignExtend(imm24:'00'(1:0), 32), 1433 // imm32: SignExtend(imm24:'00'(1:0), 32),
1433 // pattern: cccc1011iiiiiiiiiiiiiiiiiiiiiiii, 1434 // pattern: cccc1011iiiiiiiiiiiiiiiiiiiiiiii,
1434 // relative: true, 1435 // relative: true,
1435 // relative_offset: imm32, 1436 // relative_offset: imm32 + 8,
1436 // rule: BL_BLX_immediate, 1437 // rule: BL_BLX_immediate,
1437 // safety: [true => MAY_BE_SAFE], 1438 // safety: [true => MAY_BE_SAFE],
1438 // true: true, 1439 // true: true,
1439 // uses: {Pc}} 1440 // uses: {Pc}}
1440 RegisterList BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1441 RegisterList BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1441 defs(Instruction inst) const { 1442 defs(Instruction inst) const {
1442 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1443 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1443 // defs: '{15, 14}' 1444 // defs: '{15, 14}'
1444 return RegisterList(). 1445 return RegisterList().
1445 Add(Register(15)). 1446 Add(Register(15)).
1446 Add(Register(14)); 1447 Add(Register(14));
1447 } 1448 }
1448 1449
1449 bool BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1450 bool BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1450 is_relative_branch(Instruction inst) const { 1451 is_relative_branch(Instruction inst) const {
1451 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1452 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1452 // relative: 'true' 1453 // relative: 'true'
1453 return true; 1454 return true;
1454 } 1455 }
1455 1456
1456 int32_t BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1457 int32_t BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1457 branch_target_offset(Instruction inst) const { 1458 branch_target_offset(Instruction inst) const {
1458 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1459 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1459 // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32)" 1460 // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32) + 8"
1460 return (((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) & 0x020000 00) 1461 return (((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) & 0x020000 00)
1461 ? ((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) | 0xFC00000 0) 1462 ? ((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) | 0xFC00000 0)
1462 : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))); 1463 : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) + 8;
1463 } 1464 }
1464 1465
1465 SafetyLevel BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1466 SafetyLevel BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1466 safety(Instruction inst) const { 1467 safety(Instruction inst) const {
1467 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1468 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1468 1469
1469 // true => MAY_BE_SAFE 1470 // true => MAY_BE_SAFE
1470 if (true) 1471 if (true)
1471 return MAY_BE_SAFE; 1472 return MAY_BE_SAFE;
1472 1473
1473 return MAY_BE_SAFE; 1474 return MAY_BE_SAFE;
1474 } 1475 }
1475 1476
1476 1477
1477 RegisterList BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1478 RegisterList BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1478 uses(Instruction inst) const { 1479 uses(Instruction inst) const {
1479 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1480 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1480 // uses: '{15}' 1481 // uses: '{15}'
1481 return RegisterList(). 1482 return RegisterList().
1482 Add(Register(15)); 1483 Add(Register(15));
1483 } 1484 }
1484 1485
1485 // B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0: 1486 // B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0:
1486 // 1487 //
1487 // {Cond: Cond(31:28), 1488 // {Cond: Cond(31:28),
1488 // Pc: 15, 1489 // Pc: 15,
1490 // actual: Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1,
1489 // baseline: BranchImmediate24, 1491 // baseline: BranchImmediate24,
1490 // constraints: , 1492 // constraints: ,
1491 // defs: {Pc}, 1493 // defs: {Pc},
1492 // fields: [Cond(31:28), imm24(23:0)], 1494 // fields: [Cond(31:28), imm24(23:0)],
1493 // generated_baseline: B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0, 1495 // generated_baseline: B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0,
1494 // imm24: imm24(23:0), 1496 // imm24: imm24(23:0),
1495 // imm32: SignExtend(imm24:'00'(1:0), 32), 1497 // imm32: SignExtend(imm24:'00'(1:0), 32),
1496 // pattern: cccc1010iiiiiiiiiiiiiiiiiiiiiiii, 1498 // pattern: cccc1010iiiiiiiiiiiiiiiiiiiiiiii,
1497 // relative: true, 1499 // relative: true,
1498 // relative_offset: imm32, 1500 // relative_offset: imm32 + 8,
1499 // rule: B, 1501 // rule: B,
1500 // safety: [true => MAY_BE_SAFE], 1502 // safety: [true => MAY_BE_SAFE],
1501 // true: true, 1503 // true: true,
1502 // uses: {Pc}} 1504 // uses: {Pc}}
1503 RegisterList B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1505 RegisterList B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1504 defs(Instruction inst) const { 1506 defs(Instruction inst) const {
1505 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1507 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1506 // defs: '{15}' 1508 // defs: '{15}'
1507 return RegisterList(). 1509 return RegisterList().
1508 Add(Register(15)); 1510 Add(Register(15));
1509 } 1511 }
1510 1512
1511 bool B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1513 bool B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1512 is_relative_branch(Instruction inst) const { 1514 is_relative_branch(Instruction inst) const {
1513 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1515 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1514 // relative: 'true' 1516 // relative: 'true'
1515 return true; 1517 return true;
1516 } 1518 }
1517 1519
1518 int32_t B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1520 int32_t B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1519 branch_target_offset(Instruction inst) const { 1521 branch_target_offset(Instruction inst) const {
1520 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1522 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1521 // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32)" 1523 // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32) + 8"
1522 return (((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) & 0x020000 00) 1524 return (((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) & 0x020000 00)
1523 ? ((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) | 0xFC00000 0) 1525 ? ((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) | 0xFC00000 0)
1524 : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))); 1526 : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) + 8;
1525 } 1527 }
1526 1528
1527 SafetyLevel B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0:: 1529 SafetyLevel B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0::
1528 safety(Instruction inst) const { 1530 safety(Instruction inst) const {
1529 UNREFERENCED_PARAMETER(inst); // To silence compiler. 1531 UNREFERENCED_PARAMETER(inst); // To silence compiler.
1530 1532
1531 // true => MAY_BE_SAFE 1533 // true => MAY_BE_SAFE
1532 if (true) 1534 if (true)
1533 return MAY_BE_SAFE; 1535 return MAY_BE_SAFE;
1534 1536
(...skipping 1147 matching lines...) Expand 10 before | Expand all | Expand 10 after
2682 // uses: '{}' 2684 // uses: '{}'
2683 return RegisterList(); 2685 return RegisterList();
2684 } 2686 }
2685 2687
2686 // LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0: 2688 // LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0:
2687 // 2689 //
2688 // {None: 32, 2690 // {None: 32,
2689 // Pc: 15, 2691 // Pc: 15,
2690 // Rn: Rn(19:16), 2692 // Rn: Rn(19:16),
2691 // W: W(21), 2693 // W: W(21),
2694 // actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
2692 // base: Rn, 2695 // base: Rn,
2693 // baseline: LoadRegisterList, 2696 // baseline: LoadRegisterList,
2694 // cond: cond(31:28), 2697 // cond: cond(31:28),
2695 // constraints: , 2698 // constraints: ,
2696 // defs: Union({Rn 2699 // defs: Union({Rn
2697 // if wback 2700 // if wback
2698 // else None}, registers), 2701 // else None}, registers),
2699 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)], 2702 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)],
2700 // generated_baseline: LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0, 2703 // generated_baseline: LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0,
2701 // pattern: cccc100000w1nnnnrrrrrrrrrrrrrrrr, 2704 // pattern: cccc100000w1nnnnrrrrrrrrrrrrrrrr,
2702 // register_list: register_list(15:0), 2705 // register_list: register_list(15:0),
2703 // registers: RegisterList(register_list), 2706 // registers: RegisterList(register_list),
2704 // rule: LDMDA_LDMFA, 2707 // rule: LDMDA_LDMFA,
2705 // safety: [Rn == 2708 // safety: [Rn ==
2706 // Pc || 2709 // Pc ||
2707 // NumGPRs(registers) < 2710 // NumGPRs(registers) <
2708 // 1 => UNPREDICTABLE, 2711 // 1 => UNPREDICTABLE,
2709 // wback && 2712 // wback &&
2710 // Contains(registers, Rn) => UNKNOWN, 2713 // Contains(registers, Rn) => UNKNOWN,
2711 // Contains(registers, Pc) => FORBIDDEN_OPERANDS], 2714 // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
2712 // small_imm_base_wb: true, 2715 // small_imm_base_wb: wback,
2713 // true: true,
2714 // uses: {Rn}, 2716 // uses: {Rn},
2715 // wback: W(21)=1} 2717 // wback: W(21)=1}
2716 Register LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2718 Register LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0::
2717 base_address_register(Instruction inst) const { 2719 base_address_register(Instruction inst) const {
2718 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2720 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2719 // base: 'inst(19:16)' 2721 // base: 'inst(19:16)'
2720 return Register(((inst.Bits() & 0x000F0000) >> 16)); 2722 return Register(((inst.Bits() & 0x000F0000) >> 16));
2721 } 2723 }
2722 2724
2723 RegisterList LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2725 RegisterList LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0::
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2757 return FORBIDDEN_OPERANDS; 2759 return FORBIDDEN_OPERANDS;
2758 2760
2759 return MAY_BE_SAFE; 2761 return MAY_BE_SAFE;
2760 } 2762 }
2761 2763
2762 2764
2763 bool LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2765 bool LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0::
2764 base_address_register_writeback_small_immediate( 2766 base_address_register_writeback_small_immediate(
2765 Instruction inst) const { 2767 Instruction inst) const {
2766 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2768 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2767 // small_imm_base_wb: 'true' 2769 // small_imm_base_wb: 'inst(21)=1'
2768 return true; 2770 return (inst.Bits() & 0x00200000) ==
2771 0x00200000;
2769 } 2772 }
2770 2773
2771 RegisterList LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2774 RegisterList LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0::
2772 uses(Instruction inst) const { 2775 uses(Instruction inst) const {
2773 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2776 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2774 // uses: '{inst(19:16)}' 2777 // uses: '{inst(19:16)}'
2775 return RegisterList(). 2778 return RegisterList().
2776 Add(Register(((inst.Bits() & 0x000F0000) >> 16))); 2779 Add(Register(((inst.Bits() & 0x000F0000) >> 16)));
2777 } 2780 }
2778 2781
2779 // LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0: 2782 // LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0:
2780 // 2783 //
2781 // {None: 32, 2784 // {None: 32,
2782 // Pc: 15, 2785 // Pc: 15,
2783 // Rn: Rn(19:16), 2786 // Rn: Rn(19:16),
2784 // W: W(21), 2787 // W: W(21),
2788 // actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
2785 // base: Rn, 2789 // base: Rn,
2786 // baseline: LoadRegisterList, 2790 // baseline: LoadRegisterList,
2787 // cond: cond(31:28), 2791 // cond: cond(31:28),
2788 // constraints: , 2792 // constraints: ,
2789 // defs: Union({Rn 2793 // defs: Union({Rn
2790 // if wback 2794 // if wback
2791 // else None}, registers), 2795 // else None}, registers),
2792 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)], 2796 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)],
2793 // generated_baseline: LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0, 2797 // generated_baseline: LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0,
2794 // pattern: cccc100100w1nnnnrrrrrrrrrrrrrrrr, 2798 // pattern: cccc100100w1nnnnrrrrrrrrrrrrrrrr,
2795 // register_list: register_list(15:0), 2799 // register_list: register_list(15:0),
2796 // registers: RegisterList(register_list), 2800 // registers: RegisterList(register_list),
2797 // rule: LDMDB_LDMEA, 2801 // rule: LDMDB_LDMEA,
2798 // safety: [Rn == 2802 // safety: [Rn ==
2799 // Pc || 2803 // Pc ||
2800 // NumGPRs(registers) < 2804 // NumGPRs(registers) <
2801 // 1 => UNPREDICTABLE, 2805 // 1 => UNPREDICTABLE,
2802 // wback && 2806 // wback &&
2803 // Contains(registers, Rn) => UNKNOWN, 2807 // Contains(registers, Rn) => UNKNOWN,
2804 // Contains(registers, Pc) => FORBIDDEN_OPERANDS], 2808 // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
2805 // small_imm_base_wb: true, 2809 // small_imm_base_wb: wback,
2806 // true: true,
2807 // uses: {Rn}, 2810 // uses: {Rn},
2808 // wback: W(21)=1} 2811 // wback: W(21)=1}
2809 Register LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2812 Register LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0::
2810 base_address_register(Instruction inst) const { 2813 base_address_register(Instruction inst) const {
2811 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2814 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2812 // base: 'inst(19:16)' 2815 // base: 'inst(19:16)'
2813 return Register(((inst.Bits() & 0x000F0000) >> 16)); 2816 return Register(((inst.Bits() & 0x000F0000) >> 16));
2814 } 2817 }
2815 2818
2816 RegisterList LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2819 RegisterList LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0::
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2850 return FORBIDDEN_OPERANDS; 2853 return FORBIDDEN_OPERANDS;
2851 2854
2852 return MAY_BE_SAFE; 2855 return MAY_BE_SAFE;
2853 } 2856 }
2854 2857
2855 2858
2856 bool LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2859 bool LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0::
2857 base_address_register_writeback_small_immediate( 2860 base_address_register_writeback_small_immediate(
2858 Instruction inst) const { 2861 Instruction inst) const {
2859 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2862 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2860 // small_imm_base_wb: 'true' 2863 // small_imm_base_wb: 'inst(21)=1'
2861 return true; 2864 return (inst.Bits() & 0x00200000) ==
2865 0x00200000;
2862 } 2866 }
2863 2867
2864 RegisterList LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2868 RegisterList LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0::
2865 uses(Instruction inst) const { 2869 uses(Instruction inst) const {
2866 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2870 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2867 // uses: '{inst(19:16)}' 2871 // uses: '{inst(19:16)}'
2868 return RegisterList(). 2872 return RegisterList().
2869 Add(Register(((inst.Bits() & 0x000F0000) >> 16))); 2873 Add(Register(((inst.Bits() & 0x000F0000) >> 16)));
2870 } 2874 }
2871 2875
2872 // LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0: 2876 // LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0:
2873 // 2877 //
2874 // {None: 32, 2878 // {None: 32,
2875 // Pc: 15, 2879 // Pc: 15,
2876 // Rn: Rn(19:16), 2880 // Rn: Rn(19:16),
2877 // W: W(21), 2881 // W: W(21),
2882 // actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
2878 // base: Rn, 2883 // base: Rn,
2879 // baseline: LoadRegisterList, 2884 // baseline: LoadRegisterList,
2880 // cond: cond(31:28), 2885 // cond: cond(31:28),
2881 // constraints: , 2886 // constraints: ,
2882 // defs: Union({Rn 2887 // defs: Union({Rn
2883 // if wback 2888 // if wback
2884 // else None}, registers), 2889 // else None}, registers),
2885 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)], 2890 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)],
2886 // generated_baseline: LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0, 2891 // generated_baseline: LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0,
2887 // pattern: cccc100110w1nnnnrrrrrrrrrrrrrrrr, 2892 // pattern: cccc100110w1nnnnrrrrrrrrrrrrrrrr,
2888 // register_list: register_list(15:0), 2893 // register_list: register_list(15:0),
2889 // registers: RegisterList(register_list), 2894 // registers: RegisterList(register_list),
2890 // rule: LDMIB_LDMED, 2895 // rule: LDMIB_LDMED,
2891 // safety: [Rn == 2896 // safety: [Rn ==
2892 // Pc || 2897 // Pc ||
2893 // NumGPRs(registers) < 2898 // NumGPRs(registers) <
2894 // 1 => UNPREDICTABLE, 2899 // 1 => UNPREDICTABLE,
2895 // wback && 2900 // wback &&
2896 // Contains(registers, Rn) => UNKNOWN, 2901 // Contains(registers, Rn) => UNKNOWN,
2897 // Contains(registers, Pc) => FORBIDDEN_OPERANDS], 2902 // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
2898 // small_imm_base_wb: true, 2903 // small_imm_base_wb: wback,
2899 // true: true,
2900 // uses: {Rn}, 2904 // uses: {Rn},
2901 // wback: W(21)=1} 2905 // wback: W(21)=1}
2902 Register LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2906 Register LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0::
2903 base_address_register(Instruction inst) const { 2907 base_address_register(Instruction inst) const {
2904 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2908 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2905 // base: 'inst(19:16)' 2909 // base: 'inst(19:16)'
2906 return Register(((inst.Bits() & 0x000F0000) >> 16)); 2910 return Register(((inst.Bits() & 0x000F0000) >> 16));
2907 } 2911 }
2908 2912
2909 RegisterList LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2913 RegisterList LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0::
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2943 return FORBIDDEN_OPERANDS; 2947 return FORBIDDEN_OPERANDS;
2944 2948
2945 return MAY_BE_SAFE; 2949 return MAY_BE_SAFE;
2946 } 2950 }
2947 2951
2948 2952
2949 bool LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2953 bool LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0::
2950 base_address_register_writeback_small_immediate( 2954 base_address_register_writeback_small_immediate(
2951 Instruction inst) const { 2955 Instruction inst) const {
2952 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2956 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2953 // small_imm_base_wb: 'true' 2957 // small_imm_base_wb: 'inst(21)=1'
2954 return true; 2958 return (inst.Bits() & 0x00200000) ==
2959 0x00200000;
2955 } 2960 }
2956 2961
2957 RegisterList LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0:: 2962 RegisterList LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0::
2958 uses(Instruction inst) const { 2963 uses(Instruction inst) const {
2959 UNREFERENCED_PARAMETER(inst); // To silence compiler. 2964 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2960 // uses: '{inst(19:16)}' 2965 // uses: '{inst(19:16)}'
2961 return RegisterList(). 2966 return RegisterList().
2962 Add(Register(((inst.Bits() & 0x000F0000) >> 16))); 2967 Add(Register(((inst.Bits() & 0x000F0000) >> 16)));
2963 } 2968 }
2964 2969
2965 // LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0: 2970 // LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0:
2966 // 2971 //
2967 // {None: 32, 2972 // {None: 32,
2968 // Pc: 15, 2973 // Pc: 15,
2969 // Rn: Rn(19:16), 2974 // Rn: Rn(19:16),
2970 // W: W(21), 2975 // W: W(21),
2976 // actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
2971 // base: Rn, 2977 // base: Rn,
2972 // baseline: LoadRegisterList, 2978 // baseline: LoadRegisterList,
2973 // cond: cond(31:28), 2979 // cond: cond(31:28),
2974 // constraints: , 2980 // constraints: ,
2975 // defs: Union({Rn 2981 // defs: Union({Rn
2976 // if wback 2982 // if wback
2977 // else None}, registers), 2983 // else None}, registers),
2978 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)], 2984 // fields: [cond(31:28), W(21), Rn(19:16), register_list(15:0)],
2979 // generated_baseline: LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_ 0, 2985 // generated_baseline: LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_ 0,
2980 // pattern: cccc100010w1nnnnrrrrrrrrrrrrrrrr, 2986 // pattern: cccc100010w1nnnnrrrrrrrrrrrrrrrr,
2981 // register_list: register_list(15:0), 2987 // register_list: register_list(15:0),
2982 // registers: RegisterList(register_list), 2988 // registers: RegisterList(register_list),
2983 // rule: LDM_LDMIA_LDMFD, 2989 // rule: LDM_LDMIA_LDMFD,
2984 // safety: [Rn == 2990 // safety: [Rn ==
2985 // Pc || 2991 // Pc ||
2986 // NumGPRs(registers) < 2992 // NumGPRs(registers) <
2987 // 1 => UNPREDICTABLE, 2993 // 1 => UNPREDICTABLE,
2988 // wback && 2994 // wback &&
2989 // Contains(registers, Rn) => UNKNOWN, 2995 // Contains(registers, Rn) => UNKNOWN,
2990 // Contains(registers, Pc) => FORBIDDEN_OPERANDS], 2996 // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
2991 // small_imm_base_wb: true, 2997 // small_imm_base_wb: wback,
2992 // true: true,
2993 // uses: {Rn}, 2998 // uses: {Rn},
2994 // wback: W(21)=1} 2999 // wback: W(21)=1}
2995 Register LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0:: 3000 Register LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0::
2996 base_address_register(Instruction inst) const { 3001 base_address_register(Instruction inst) const {
2997 UNREFERENCED_PARAMETER(inst); // To silence compiler. 3002 UNREFERENCED_PARAMETER(inst); // To silence compiler.
2998 // base: 'inst(19:16)' 3003 // base: 'inst(19:16)'
2999 return Register(((inst.Bits() & 0x000F0000) >> 16)); 3004 return Register(((inst.Bits() & 0x000F0000) >> 16));
3000 } 3005 }
3001 3006
3002 RegisterList LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0:: 3007 RegisterList LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0::
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
3036 return FORBIDDEN_OPERANDS; 3041 return FORBIDDEN_OPERANDS;
3037 3042
3038 return MAY_BE_SAFE; 3043 return MAY_BE_SAFE;
3039 } 3044 }
3040 3045
3041 3046
3042 bool LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0:: 3047 bool LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0::
3043 base_address_register_writeback_small_immediate( 3048 base_address_register_writeback_small_immediate(
3044 Instruction inst) const { 3049 Instruction inst) const {
3045 UNREFERENCED_PARAMETER(inst); // To silence compiler. 3050 UNREFERENCED_PARAMETER(inst); // To silence compiler.
3046 // small_imm_base_wb: 'true' 3051 // small_imm_base_wb: 'inst(21)=1'
3047 return true; 3052 return (inst.Bits() & 0x00200000) ==
3053 0x00200000;
3048 } 3054 }
3049 3055
3050 RegisterList LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0:: 3056 RegisterList LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0::
3051 uses(Instruction inst) const { 3057 uses(Instruction inst) const {
3052 UNREFERENCED_PARAMETER(inst); // To silence compiler. 3058 UNREFERENCED_PARAMETER(inst); // To silence compiler.
3053 // uses: '{inst(19:16)}' 3059 // uses: '{inst(19:16)}'
3054 return RegisterList(). 3060 return RegisterList().
3055 Add(Register(((inst.Bits() & 0x000F0000) >> 16))); 3061 Add(Register(((inst.Bits() & 0x000F0000) >> 16)));
3056 } 3062 }
3057 3063
(...skipping 7708 matching lines...) Expand 10 before | Expand all | Expand 10 after
10766 UNREFERENCED_PARAMETER(inst); // To silence compiler. 10772 UNREFERENCED_PARAMETER(inst); // To silence compiler.
10767 // uses: '{inst(19:16), inst(15:12), inst(11:8), inst(3:0)}' 10773 // uses: '{inst(19:16), inst(15:12), inst(11:8), inst(3:0)}'
10768 return RegisterList(). 10774 return RegisterList().
10769 Add(Register(((inst.Bits() & 0x000F0000) >> 16))). 10775 Add(Register(((inst.Bits() & 0x000F0000) >> 16))).
10770 Add(Register(((inst.Bits() & 0x0000F000) >> 12))). 10776 Add(Register(((inst.Bits() & 0x0000F000) >> 12))).
10771 Add(Register(((inst.Bits() & 0x00000F00) >> 8))). 10777 Add(Register(((inst.Bits() & 0x00000F00) >> 8))).
10772 Add(Register((inst.Bits() & 0x0000000F))); 10778 Add(Register((inst.Bits() & 0x0000000F)));
10773 } 10779 }
10774 10780
10775 } // namespace nacl_arm_dec 10781 } // namespace nacl_arm_dec
OLDNEW
« no previous file with comments | « src/trusted/validator_arm/gen/arm32_decode_baselines_1.h ('k') | src/trusted/validator_arm/gen/arm32_decode_baselines_2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698