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

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 1762 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 pattern := cccc01110101ddddaaaammmm11r1nnnn; 1773 pattern := cccc01110101ddddaaaammmm11r1nnnn;
1774 rule := SMMLS; 1774 rule := SMMLS;
1775 | else: = Undefined # Note associated with table. 1775 | else: = Undefined # Note associated with table.
1776 +-- 1776 +--
1777 1777
1778 +-- branch_branch_with_link_and_block_data_transfer (See Section A5.5) 1778 +-- branch_branch_with_link_and_block_data_transfer (See Section A5.5)
1779 *RnRegs 1779 *RnRegs
1780 { cond(31:28), W(21), Rn(19:16), register_list(15:0) } 1780 { cond(31:28), W(21), Rn(19:16), register_list(15:0) }
1781 registers := RegisterList(register_list); wback := W=1; 1781 registers := RegisterList(register_list); wback := W=1;
1782 base := Rn; 1782 base := Rn;
1783 small_imm_base_wb := true; 1783 small_imm_base_wb := wback;
1784 safety := Rn == Pc | NumGPRs(registers) < 1 => UNPREDICTABLE; 1784 safety := Rn == Pc | NumGPRs(registers) < 1 => UNPREDICTABLE;
1785 *LdRnRegs *RnRegs 1785 *LdRnRegs *RnRegs
1786 baseline := LoadRegisterList; 1786 baseline := LoadRegisterList;
1787 defs := Union({Rn if wback else None}, registers); 1787 defs := Union({Rn if wback else None}, registers);
1788 uses := {Rn}; 1788 uses := {Rn};
1789 safety := super.safety & 1789 safety := super.safety &
1790 wback & Contains(registers, Rn) => UNKNOWN & 1790 wback & Contains(registers, Rn) => UNKNOWN &
1791 Contains(registers, Pc) => FORBIDDEN_OPERANDS; 1791 Contains(registers, Pc) => FORBIDDEN_OPERANDS;
1792 *StRnRegs *RnRegs 1792 *StRnRegs *RnRegs
1793 baseline := StoreRegisterList; 1793 baseline := StoreRegisterList;
1794 defs := {Rn if wback else None}; 1794 defs := {Rn if wback else None};
1795 uses := Union({Rn}, registers); 1795 uses := Union({Rn}, registers);
1796 safety := super.safety & 1796 safety := super.safety &
1797 wback & Contains(registers, Rn) & 1797 wback & Contains(registers, Rn) &
1798 Rn != SmallestGPR(registers) => UNKNOWN; 1798 Rn != SmallestGPR(registers) => UNKNOWN;
1799 *Branch 1799 *Branch
1800 { Cond(31:28), imm24(23:0) } 1800 { Cond(31:28), imm24(23:0) }
1801 baseline := BranchImmediate24; 1801 baseline := BranchImmediate24;
1802 imm32 := SignExtend(imm24:'00', 32); 1802 imm32 := SignExtend(imm24:'00', 32);
1803 defs := {Pc}; 1803 defs := {Pc};
1804 uses := {Pc}; 1804 uses := {Pc};
1805 relative := true; 1805 relative := true;
1806 relative_offset := imm32; 1806 relative_offset := imm32 + 8; # r15 is 8 bytes ahead of instruction address.
JF 2013/02/11 19:40:38 I'd change the comment to be the same as other pla
Karl 2013/02/11 22:12:43 Done.
1807 safety := true => MAY_BE_SAFE; 1807 safety := true => MAY_BE_SAFE;
1808 *BranchLink *Branch 1808 *BranchLink *Branch
1809 defs := {Pc, Lr}; 1809 defs := {Pc, Lr};
1810 *Forbidden 1810 *Forbidden
1811 baseline := ForbiddenCondDecoder; 1811 baseline := ForbiddenCondDecoder;
1812 +-- 1812 +--
1813 | op(25:20) R(15) Rn(19:16) 1813 | op(25:20) R(15) Rn(19:16)
1814 | 0000x0 - - = *StRnRegs 1814 | 0000x0 - - = *StRnRegs
1815 pattern := cccc100000w0nnnnrrrrrrrrrrrrrrrr; 1815 pattern := cccc100000w0nnnnrrrrrrrrrrrrrrrr;
1816 rule := STMDA_STMED; 1816 rule := STMDA_STMED;
(...skipping 1987 matching lines...) Expand 10 before | Expand all | Expand 10 after
3804 rule := VLD3_single_3_element_structure_to_all_lanes; 3804 rule := VLD3_single_3_element_structure_to_all_lanes;
3805 | " " 0x11 = *VLSS4 3805 | " " 0x11 = *VLSS4
3806 pattern := 111101001d10nnnnddddss11aaaammmm; 3806 pattern := 111101001d10nnnnddddss11aaaammmm;
3807 rule := VLD4_single_4_element_structure_to_one_lane; 3807 rule := VLD4_single_4_element_structure_to_one_lane;
3808 | " " 1011 " 3808 | " " 1011 "
3809 | " " 1111 = *VLS4A 3809 | " " 1111 = *VLS4A
3810 pattern := 111101001d10nnnndddd1111sstammmm; 3810 pattern := 111101001d10nnnndddd1111sstammmm;
3811 rule := VLD4_single_4_element_structure_to_all_lanes; 3811 rule := VLD4_single_4_element_structure_to_all_lanes;
3812 | else: = Undefined 3812 | else: = Undefined
3813 +-- 3813 +--
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