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

Side by Side Diff: src/trusted/validator_arm/armv7.table

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
« no previous file with comments | « no previous file | src/trusted/validator_arm/build.scons » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # ARMv7 Instruction Encodings 1 # ARMv7 Instruction Encodings
2 # 2 #
3 # This table is derived from the "ARM Architecture Reference Manual, ARMv7-A 3 # This table is derived from the "ARM Architecture Reference Manual, ARMv7-A
4 # and ARMv7-R edition" and is used here with the permission of ARM Limited. 4 # and ARMv7-R edition" and is used here with the permission of ARM Limited.
5 # Reproduction for purposes other than the development and distribution of 5 # Reproduction for purposes other than the development and distribution of
6 # Native Client may require the explicit permission of ARM Limited. 6 # Native Client may require the explicit permission of ARM Limited.
7 7
8 # This file defines the Native Client "instruction classes" assigned to every 8 # This file defines the Native Client "instruction classes" assigned to every
9 # possible ARMv7 instruction encoding. It is organized into a series of tables, 9 # possible ARMv7 instruction encoding. It is organized into a series of tables,
10 # and directly parallels the ARM Architecture Reference Manual cited above. 10 # and directly parallels the ARM Architecture Reference Manual cited above.
(...skipping 1763 matching lines...) Expand 10 before | Expand all | Expand 10 after
1774 pattern := cccc01110101ddddaaaammmm11r1nnnn; 1774 pattern := cccc01110101ddddaaaammmm11r1nnnn;
1775 rule := SMMLS; 1775 rule := SMMLS;
1776 | else: = Undefined # Note associated with table. 1776 | else: = Undefined # Note associated with table.
1777 +-- 1777 +--
1778 1778
1779 +-- branch_branch_with_link_and_block_data_transfer (See Section A5.5) 1779 +-- branch_branch_with_link_and_block_data_transfer (See Section A5.5)
1780 *RnRegs 1780 *RnRegs
1781 { cond(31:28), W(21), Rn(19:16), register_list(15:0) } 1781 { cond(31:28), W(21), Rn(19:16), register_list(15:0) }
1782 registers := RegisterList(register_list); wback := W=1; 1782 registers := RegisterList(register_list); wback := W=1;
1783 base := Rn; 1783 base := Rn;
1784 small_imm_base_wb := true; 1784 small_imm_base_wb := wback;
1785 safety := Rn == Pc | NumGPRs(registers) < 1 => UNPREDICTABLE; 1785 safety := Rn == Pc | NumGPRs(registers) < 1 => UNPREDICTABLE;
1786 *LdRnRegs *RnRegs 1786 *LdRnRegs *RnRegs
1787 baseline := LoadRegisterList; 1787 baseline := LoadRegisterList;
1788 defs := Union({Rn if wback else None}, registers); 1788 defs := Union({Rn if wback else None}, registers);
1789 uses := {Rn}; 1789 uses := {Rn};
1790 safety := super.safety & 1790 safety := super.safety &
1791 wback & Contains(registers, Rn) => UNKNOWN & 1791 wback & Contains(registers, Rn) => UNKNOWN &
1792 Contains(registers, Pc) => FORBIDDEN_OPERANDS; 1792 Contains(registers, Pc) => FORBIDDEN_OPERANDS;
1793 *StRnRegs *RnRegs 1793 *StRnRegs *RnRegs
1794 baseline := StoreRegisterList; 1794 baseline := StoreRegisterList;
1795 defs := {Rn if wback else None}; 1795 defs := {Rn if wback else None};
1796 uses := Union({Rn}, registers); 1796 uses := Union({Rn}, registers);
1797 safety := super.safety & 1797 safety := super.safety &
1798 wback & Contains(registers, Rn) & 1798 wback & Contains(registers, Rn) &
1799 Rn != SmallestGPR(registers) => UNKNOWN; 1799 Rn != SmallestGPR(registers) => UNKNOWN;
1800 *Branch 1800 *Branch
1801 { Cond(31:28), imm24(23:0) } 1801 { Cond(31:28), imm24(23:0) }
1802 baseline := BranchImmediate24; 1802 baseline := BranchImmediate24;
1803 imm32 := SignExtend(imm24:'00', 32); 1803 imm32 := SignExtend(imm24:'00', 32);
1804 defs := {Pc}; 1804 defs := {Pc};
1805 uses := {Pc}; 1805 uses := {Pc};
1806 relative := true; 1806 relative := true;
1807 relative_offset := imm32; 1807 # The ARM manual states that "PC reads as the address of the current
1808 # instruction plus 8.
1809 relative_offset := imm32 + 8;
1808 safety := true => MAY_BE_SAFE; 1810 safety := true => MAY_BE_SAFE;
1809 *BranchLink *Branch 1811 *BranchLink *Branch
1810 defs := {Pc, Lr}; 1812 defs := {Pc, Lr};
1811 *Forbidden 1813 *Forbidden
1812 baseline := ForbiddenCondDecoder; 1814 baseline := ForbiddenCondDecoder;
1813 +-- 1815 +--
1814 | op(25:20) R(15) Rn(19:16) 1816 | op(25:20) R(15) Rn(19:16)
1815 | 0000x0 - - = *StRnRegs 1817 | 0000x0 - - = *StRnRegs
1816 pattern := cccc100000w0nnnnrrrrrrrrrrrrrrrr; 1818 pattern := cccc100000w0nnnnrrrrrrrrrrrrrrrr;
1817 rule := STMDA_STMED; 1819 rule := STMDA_STMED;
(...skipping 1991 matching lines...) Expand 10 before | Expand all | Expand 10 after
3809 rule := VLD3_single_3_element_structure_to_all_lanes; 3811 rule := VLD3_single_3_element_structure_to_all_lanes;
3810 | " " 0x11 = *VLSS4 3812 | " " 0x11 = *VLSS4
3811 pattern := 111101001d10nnnnddddss11aaaammmm; 3813 pattern := 111101001d10nnnnddddss11aaaammmm;
3812 rule := VLD4_single_4_element_structure_to_one_lane; 3814 rule := VLD4_single_4_element_structure_to_one_lane;
3813 | " " 1011 " 3815 | " " 1011 "
3814 | " " 1111 = *VLS4A 3816 | " " 1111 = *VLS4A
3815 pattern := 111101001d10nnnndddd1111sstammmm; 3817 pattern := 111101001d10nnnndddd1111sstammmm;
3816 rule := VLD4_single_4_element_structure_to_all_lanes; 3818 rule := VLD4_single_4_element_structure_to_all_lanes;
3817 | else: = Undefined 3819 | else: = Undefined
3818 +-- 3820 +--
OLDNEW
« no previous file with comments | « no previous file | src/trusted/validator_arm/build.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698