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

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

Powered by Google App Engine
This is Rietveld 408576698