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

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

Issue 12223041: Add uses to two ARM tables. (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/gen/arm32_decode_actuals_2.h » ('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 3494 matching lines...) Expand 10 before | Expand all | Expand 10 after
3505 rule := VRECPE; 3505 rule := VRECPE;
3506 | " 10x1x = *V2RM_IF32 3506 | " 10x1x = *V2RM_IF32
3507 pattern := 111100111d11ss11dddd010f1qm0mmmm; 3507 pattern := 111100111d11ss11dddd010f1qm0mmmm;
3508 rule := VRSQRTE; 3508 rule := VRSQRTE;
3509 | " 11xxx = *V2RM_CVT_F2I 3509 | " 11xxx = *V2RM_CVT_F2I
3510 pattern := 111100111d11ss11dddd011ppqm0mmmm; 3510 pattern := 111100111d11ss11dddd011ppqm0mmmm;
3511 rule := VCVT; 3511 rule := VCVT;
3512 | else: = Undefined 3512 | else: = Undefined
3513 +-- 3513 +--
3514 3514
3515 # TODO(karl): Add uses to corresponding classes.
3516 +-- simd_dp_1imm (See Section A7.4.6) 3515 +-- simd_dp_1imm (See Section A7.4.6)
3517 *V1RI 3516 *V1RI
3518 { i(24), D(22), imm3(18:16), Vd(15:12), cmode(11:8), Q(6), op(5), imm4(3:0) } 3517 { i(24), D(22), imm3(18:16), Vd(15:12), cmode(11:8), Q(6), op(5), imm4(3:0) }
3519 baseline := Vector1RegisterImmediate; 3518 baseline := Vector1RegisterImmediate;
3520 imm64 := AdvSIMDExpandImm(op, cmode, i:imm3:imm4); 3519 imm64 := AdvSIMDExpandImm(op, cmode, i:imm3:imm4);
3521 d := D:Vd; regs := 1 if Q=0 else 2; 3520 d := D:Vd; regs := 1 if Q=0 else 2;
3521 # TODO(karl): Add vector defs/uses etc.
3522 defs := {};
3523 uses := {};
3522 arch := ASIMD; 3524 arch := ASIMD;
3523 *V1RI_MOV *V1RI 3525 *V1RI_MOV *V1RI
3524 baseline := Vector1RegisterImmediate_MOV; 3526 baseline := Vector1RegisterImmediate_MOV;
3525 single_register := false; 3527 single_register := false;
3526 safety := op=0 & cmode(0)=1 & cmode(3:2)=~11 => DECODER_ERROR & 3528 safety := op=0 & cmode(0)=1 & cmode(3:2)=~11 => DECODER_ERROR &
3527 op=1 & cmode=~1110 => DECODER_ERROR & 3529 op=1 & cmode=~1110 => DECODER_ERROR &
3528 Q=1 & Vd(0)=1 => UNDEFINED; 3530 Q=1 & Vd(0)=1 => UNDEFINED;
3529 *V1RI_BIT *V1RI 3531 *V1RI_BIT *V1RI
3530 baseline := Vector1RegisterImmediate_BIT; 3532 baseline := Vector1RegisterImmediate_BIT;
3531 safety := cmode(0)=0 | cmode(3:2)=11 => DECODER_ERROR & 3533 safety := cmode(0)=0 | cmode(3:2)=11 => DECODER_ERROR &
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
3565 rule := VBIC_immediate; 3567 rule := VBIC_immediate;
3566 | " 110x = *V1RI_MVN 3568 | " 110x = *V1RI_MVN
3567 pattern := 1111001i1d000mmmddddcccc0q11mmmm; 3569 pattern := 1111001i1d000mmmddddcccc0q11mmmm;
3568 rule := VMVN_immediate; 3570 rule := VMVN_immediate;
3569 | " 1110 = *V1RI_MOV 3571 | " 1110 = *V1RI_MOV
3570 pattern := 1111001m1d000mmmddddcccc0qp1mmmm; 3572 pattern := 1111001m1d000mmmddddcccc0qp1mmmm;
3571 rule := VMOV_immediate_A1; 3573 rule := VMOV_immediate_A1;
3572 | " 1111 = Undefined 3574 | " 1111 = Undefined
3573 +-- 3575 +--
3574 3576
3575 # TODO(karl): Add uses to corresponding classes.
3576 +-- advanced_simd_element_or_structure_load_store_instructions (See Section A7.7 ) 3577 +-- advanced_simd_element_or_structure_load_store_instructions (See Section A7.7 )
3577 *VLSM 3578 *VLSM
3578 { D(22), Rn(19:16), Vd(15:12), type(11:8), size(7:6), align(5:4), Rm(3:0) } 3579 { D(22), Rn(19:16), Vd(15:12), type(11:8), size(7:6), align(5:4), Rm(3:0) }
3579 baseline := VectorLoadStoreMultiple; 3580 baseline := VectorLoadStoreMultiple;
3580 alignment := 1 if align=00 else 4 << align; 3581 alignment := 1 if align=00 else 4 << align;
3581 ebytes := 1 << size; esize := 8 * ebytes; elements := 8 / ebytes; 3582 ebytes := 1 << size; esize := 8 * ebytes; elements := 8 / ebytes;
3582 d := D:Vd; n := Rn; m := Rm; 3583 d := D:Vd; n := Rn; m := Rm;
3583 wback := (m != Pc); register_index := (m != Pc & m != Sp); 3584 wback := (m != Pc); register_index := (m != Pc & m != Sp);
3584 base := n; 3585 base := n;
3586 # TODO(karl): Add vector defs/uses etc.
3585 # defs ignores FPRs. It only models GPRs and conditions. 3587 # defs ignores FPRs. It only models GPRs and conditions.
3586 defs := { base } if wback else {}; 3588 defs := { base } if wback else {};
3587 # Note: register_index defines if Rm is used (rather than a small constant). 3589 # Note: register_index defines if Rm is used (rather than a small constant).
3588 small_imm_base_wb := not register_index; 3590 small_imm_base_wb := not register_index;
3589 # uses ignores FPRs. It only models GPRs. 3591 # uses ignores FPRs. It only models GPRs.
3590 uses := { m if wback else None , n }; 3592 uses := { m if wback else None , n };
3591 arch := ASIMD; 3593 arch := ASIMD;
3592 *VLSM1 *VLSM 3594 *VLSM1 *VLSM
3593 baseline := VectorLoadStoreMultiple1; 3595 baseline := VectorLoadStoreMultiple1;
3594 regs := 1 if type=0111 else 3596 regs := 1 if type=0111 else
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3633 index_align(3:2) if size=01 else 3635 index_align(3:2) if size=01 else
3634 index_align(3) if size=10 else 3636 index_align(3) if size=10 else
3635 0; # error value. 3637 0; # error value.
3636 inc := 1 if size=00 else 3638 inc := 1 if size=00 else
3637 (1 if index_align(1)=0 else 2) if size=01 else 3639 (1 if index_align(1)=0 else 2) if size=01 else
3638 (1 if index_align(2)=0 else 2) if size=10 else 3640 (1 if index_align(2)=0 else 2) if size=10 else
3639 0; # error value. 3641 0; # error value.
3640 d := D:Vd; n := Rn; m := Rm; 3642 d := D:Vd; n := Rn; m := Rm;
3641 wback := (m != Pc); register_index := (m != Pc & m != Sp); 3643 wback := (m != Pc); register_index := (m != Pc & m != Sp);
3642 base := n; 3644 base := n;
3645 # TODO(karl): Add vector defs/uses etc.
3643 # defs ignores FPRs. It only models GPRs and conditions. 3646 # defs ignores FPRs. It only models GPRs and conditions.
3644 defs := { base } if wback else {}; 3647 defs := { base } if wback else {};
3645 # Note: register_index defines if Rm is used (rather than a small constant). 3648 # Note: register_index defines if Rm is used (rather than a small constant).
3646 small_imm_base_wb := not register_index; 3649 small_imm_base_wb := not register_index;
3647 # uses ignores FPRs. It only models GPRs. 3650 # uses ignores FPRs. It only models GPRs.
3648 uses := { m if wback else None , n }; 3651 uses := { m if wback else None , n };
3649 arch := ASIMD; 3652 arch := ASIMD;
3650 *VLSS1 *VLSS 3653 *VLSS1 *VLSS
3651 baseline := VectorLoadStoreSingle1; 3654 baseline := VectorLoadStoreSingle1;
3652 alignment := 1 if size=00 else 3655 alignment := 1 if size=00 else
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3690 safety := size=11 => UNDEFINED & 3693 safety := size=11 => UNDEFINED &
3691 size=10 & index_align(1:0)=11 => UNDEFINED & 3694 size=10 & index_align(1:0)=11 => UNDEFINED &
3692 n == Pc | d4 > 31 => UNPREDICTABLE; 3695 n == Pc | d4 > 31 => UNPREDICTABLE;
3693 *VLSA 3696 *VLSA
3694 { D(22), Rn(19:16), Vd(15:12), size(7:6), T(5), a(4), Rm(3:0) } 3697 { D(22), Rn(19:16), Vd(15:12), size(7:6), T(5), a(4), Rm(3:0) }
3695 baseline := VectorLoadSingleAllLanes; 3698 baseline := VectorLoadSingleAllLanes;
3696 ebytes := 1 << size; elements := 8 / ebytes; 3699 ebytes := 1 << size; elements := 8 / ebytes;
3697 d := D:Vd; n := Rn; m := Rm; 3700 d := D:Vd; n := Rn; m := Rm;
3698 wback := (m != Pc); register_index := (m != Pc & m != Sp); 3701 wback := (m != Pc); register_index := (m != Pc & m != Sp);
3699 base := n; 3702 base := n;
3703 # TODO(karl): Add vector defs/uses etc.
3700 # defs ignores FPRs. It only models GPRs and conditions. 3704 # defs ignores FPRs. It only models GPRs and conditions.
3701 defs := { base } if wback else {}; 3705 defs := { base } if wback else {};
3702 # Note: register_index defines if Rm is used (rather than a small constant). 3706 # Note: register_index defines if Rm is used (rather than a small constant).
3703 small_imm_base_wb := not register_index; 3707 small_imm_base_wb := not register_index;
3704 # uses ignores FPRs. It only models GPRs. 3708 # uses ignores FPRs. It only models GPRs.
3705 uses := { m if wback else None , n }; 3709 uses := { m if wback else None , n };
3706 arch := ASIMD; 3710 arch := ASIMD;
3707 *VLS1A *VLSA 3711 *VLS1A *VLSA
3708 baseline := VectorLoadSingle1AllLanes; 3712 baseline := VectorLoadSingle1AllLanes;
3709 alignment := 1 if a=0 else ebytes; 3713 alignment := 1 if a=0 else ebytes;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
3804 rule := VLD3_single_3_element_structure_to_all_lanes; 3808 rule := VLD3_single_3_element_structure_to_all_lanes;
3805 | " " 0x11 = *VLSS4 3809 | " " 0x11 = *VLSS4
3806 pattern := 111101001d10nnnnddddss11aaaammmm; 3810 pattern := 111101001d10nnnnddddss11aaaammmm;
3807 rule := VLD4_single_4_element_structure_to_one_lane; 3811 rule := VLD4_single_4_element_structure_to_one_lane;
3808 | " " 1011 " 3812 | " " 1011 "
3809 | " " 1111 = *VLS4A 3813 | " " 1111 = *VLS4A
3810 pattern := 111101001d10nnnndddd1111sstammmm; 3814 pattern := 111101001d10nnnndddd1111sstammmm;
3811 rule := VLD4_single_4_element_structure_to_all_lanes; 3815 rule := VLD4_single_4_element_structure_to_all_lanes;
3812 | else: = Undefined 3816 | else: = Undefined
3813 +-- 3817 +--
OLDNEW
« no previous file with comments | « no previous file | src/trusted/validator_arm/gen/arm32_decode_actuals_2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698