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

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

Issue 10949006: Change table data_processing_immediate to use the new notation. Also (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 3 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/dgen_core.py » ('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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 # are not Pc (R15). 98 # are not Pc (R15).
99 # NotRnIsPcAndRegsNotPc - Parse precondition Rn!=pc and safety 99 # NotRnIsPcAndRegsNotPc - Parse precondition Rn!=pc and safety
100 # constraint that all registers defined by the instruction 100 # constraint that all registers defined by the instruction
101 # are not Pc (R15). 101 # are not Pc (R15).
102 102
103 ############################################################## 103 ##############################################################
104 # The following define common entries for each (action) row. 104 # The following define common entries for each (action) row.
105 # 105 #
106 # base: The register used as the base for the effective address 106 # base: The register used as the base for the effective address
107 # for reads and writes. 107 # for reads and writes.
108 # target: The register use to compute an indirect branch, 108 # clear_bits: True implies that the masked bits are cleared.
109 # if defined (defaults to None). 109 # (defaults to false). Corresponds to virtual clear_bits.
110 # defs: The set of registers defined. (missing implies {}). 110 # defs: The set of registers defined. (missing implies {}).
111 # imm_defs: The set of registers that are set through 111 # imm_defs: The set of registers that are set through
112 # immediate indexed addressing writeback, where the 112 # immediate indexed addressing writeback, where the
113 # immediate value is "small". (missing implies {}). 113 # immediate value is "small". (missing implies {}).
114 # immediate: True if the instruction does a read/write 114 # immediate: True if the instruction does a read/write
115 # as "base + immediate". (missing implies false). 115 # as "base + immediate". (missing implies false).
116 # pool_head: Defines instruction to start a literal pool. 116 # pool_head: Defines instruction to start a literal pool.
117 # (missing implies false). 117 # (missing implies false).
118 # relative: Defines if the instruction is a direct relative 118 # relative: Defines if the instruction is a direct relative
119 # branch (R15 + constant offset). (missing implies false.) 119 # branch (R15 + constant offset). (missing implies false.)
120 # relative_offset: Defines the constant offset used in a direct 120 # relative_offset: Defines the constant offset used in a direct
121 # relative branch. 121 # relative branch.
122 # safety: How safety is defined for the class (missing implies true). 122 # safety: How safety is defined for the class (missing implies true).
123 # sets_Z_if_clear_bits: True implies that it sets the Z (condition)
124 # bit if mask bits are cleared. (defaults to false).
125 # Corresponds to defining virtual sets_Z_if_clear_bits.
126 # target: The register use to compute an indirect branch,
127 # if defined (defaults to None).
123 # uses: The set of registers used. (missing imlies {}) 128 # uses: The set of registers used. (missing imlies {})
124 #
125 # TODO(karl): How do we model class decoder virtuals clear_bits
126 # and sets_Z_if_bits_clear.
127 ############################################################## 129 ##############################################################
128 130
129 ############################################################## 131 ##############################################################
130 # It should be noted that one can define a local dictionary at 132 # It should be noted that one can define a local dictionary at
131 # the top of each table. The dictionary enties are prefixed by 133 # the top of each table. The dictionary enties are prefixed by
132 # "*n" which defines entry n. Each entry can be an action template. 134 # "*n" which defines entry n. Each entry can be an action template.
133 # These templates can then be referred to in actual rows by using 135 # These templates can then be referred to in actual rows by using
134 # a "*n" in place of the action. When this is done, the action 136 # a "*n" in place of the action. When this is done, the action
135 # inherits the corresponding action from the table's local dictionary. 137 # inherits the corresponding action from the table's local dictionary.
136 # Following the "*n" in the row, you can define additional fields. 138 # Following the "*n" in the row, you can define additional fields.
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 rule := BIC_register_shifted_register_A1; 384 rule := BIC_register_shifted_register_A1;
383 | 1111x - = *4 pattern := cccc0001111s0000ddddssss0tt1mmmm; 385 | 1111x - = *4 pattern := cccc0001111s0000ddddssss0tt1mmmm;
384 rule := MVN_register_shifted_register_A1; 386 rule := MVN_register_shifted_register_A1;
385 +-- 387 +--
386 388
387 +-- data_processing_immediate (See Section A5.2.3) 389 +-- data_processing_immediate (See Section A5.2.3)
388 # Note: The two interesting instructions in this set are 390 # Note: The two interesting instructions in this set are
389 # TestIfAddressMasked and MaskAddress. These two instructions are the 391 # TestIfAddressMasked and MaskAddress. These two instructions are the
390 # ones that we allow testing/setting of bits to mask data addresses 392 # ones that we allow testing/setting of bits to mask data addresses
391 # appropriately. 393 # appropriately.
394 *1 Binary2RegisterImmediateOp => Defs12To15
395 { cond(31:28), S(20), Rn(19:16), Rd(15:12), imm12(11:0) }
396 setflags := S=1; imm32 := ARMExpandImm(imm12);
JF 2012/09/19 01:14:23 ARMExpandImm_C
Karl 2012/09/20 19:47:42 Done.
397 defs := {Rd, NZCV if setflags else None};
398 safety := (Rd=1111 & S=1) => UNDEFINED & # ARM
JF 2012/09/19 01:14:23 Rd=1111 & S=1 is actually the SUB PC, LR instructi
Karl 2012/09/20 19:47:42 The real problem is that we don't have a value tha
Karl 2012/09/20 19:47:42 Changed to DECODER_ERROR.
399 Rd=1111 => FORBIDDEN_OPERANDS; # NaCl
400 uses := {Rn};
401 *2 Binary2RegisterImmediateOp => Defs12To15
JF 2012/09/19 01:14:23 Why make this different from *1? The only differen
Karl 2012/09/20 19:47:42 Like above, made a DECODER_ERROR entry.
402 { cond(31:28), S(20), Rn(19:16), Rd(15:12), imm12(11:0) }
403 setflags := S=1; imm32 := ARMExpandImm(imm12);
404 defs := {Rd, NZCV if setflags else None};
405 safety := (Rd=1111 & S=1) => UNDEFINED & # ARM
406 (Rn=1111 & S=0) => UNDEFINED &
407 Rd=1111 => FORBIDDEN_OPERANDS; # NaCl
408 uses := {Rn};
409 *3 Unary1RegisterImmediateOp => Defs12To15
410 { cond(31:28), Rd(15:12), imm12(11:0) }
411 imm32 := ARMExpandImm(imm12); add := false;
412 defs := {Rd};
413 safety := Rd=1111 => FORBIDDEN_OPERANDS; # NaCl
414 uses := {Pc};
415 *4 Unary1RegisterImmediateOp => Defs12To15
JF 2012/09/19 01:14:23 *4 is only different from *3 in the add variable.
Karl 2012/09/20 19:47:42 Merged.
416 { cond(31:28), Rd(15:12), imm12(11:0) }
417 imm32 := ARMExpandImm(imm12); add := true;
418 defs := {Rd};
419 safety := Rd=1111 => FORBIDDEN_OPERANDS; # NaCl
420 uses := {Pc};
421 *5 BinaryRegisterImmediateTest => DontCareInst
422 { cond(31:28), Rn(19:15), imm12(11:0) }
JF 2012/09/19 01:14:23 Rn(19:16)
Karl 2012/09/20 19:47:42 Done.
423 imm32 := AMRExpandImm(imm12);
JF 2012/09/19 01:14:23 ARMExpandImm_C
Karl 2012/09/20 19:47:42 Done.
424 defs := {NZCV};
JF 2012/09/19 01:14:23 uses := {Rn};
Karl 2012/09/20 19:47:42 Done.
425 *6 MaskedBinaryRegisterImmediateTest => TestIfAddressMasked
426 # Note: This instruction is used to test if the immediate value
427 # appropriately (data address) masks the value in Rn. Otherwise,
428 # it would be the same as *5 above.
429 { cond(31:28), Rn(19:15), imm12(11:0) }
JF 2012/09/19 01:14:23 Rn(19:16)
Karl 2012/09/20 19:47:42 Done.
430 imm32 := AMRExpandImm(imm12);
JF 2012/09/19 01:14:23 ARMExpandImm_C
Karl 2012/09/20 19:47:42 Done.
431 defs := {NZCV};
432 sets_Z_if_bits_clear := true;
JF 2012/09/19 01:14:23 uses := {Rn};
Karl 2012/09/20 19:47:42 Done.
433 *7 Unary1RegisterImmediateOp => Defs12To15
JF 2012/09/19 01:14:23 *7 is wrong and encodes encoding A2, not A1. It sh
Karl 2012/09/20 19:47:42 Fixed.
434 { cond(31:28), imm4(19:16), Rd(15:12), imm12(11:0) }
435 setflags := false; imm32 := ZeroExtend(imm4:imm12, 32);
436 defs := {Rd};
437 safety := Rd=1111 => UNPREDICTABLE; # ARM and NaCl
438 *8 MaskedBinary2RegisterImmediateOp => MaskAddress
439 # Note: This instruction is used to mask memory addresses. Otherwise,
440 # it would be the same as *1.
441 { cond(31:28), S(20), Rn(19:16), Rd(15:12), imm12(11:0) }
442 setflags := S=1; imm32 := ARMExpandImm(imm12);
JF 2012/09/19 01:14:23 ARMExpandImm_C
Karl 2012/09/20 19:47:42 Done.
443 defs := {Rd, NZCV if setflags else None};
444 safety := (Rd=1111 & S=1) => UNDEFINED & # ARM
JF 2012/09/19 01:14:23 FORBIDDEN_OPERANDS, as above.
Karl 2012/09/20 19:47:42 Changed to DECODER_ERROR.
445 Rd=1111 => FORBIDDEN_OPERANDS; # NaCl
446 uses := {Rn};
447 clears_bits := true;
448 *9 Unary1RegisterImmediateOp => Defs12To15
JF 2012/09/19 01:14:23 This is the same as *7 that I've defined above (ex
Karl 2012/09/20 19:47:42 Merged.
449 { cond(31:28), S(20), Rd(15:12), imm12(11:0) }
450 setflags := S=1; imm32 := ARMExpandImm(imm12);
451 defs := {Rd, NZCV if setflags else None};
452 safety := (Rd=1111 & S=1) => UNDEFINED & # ARM
453 Rd=1111 => FORBIDDEN_OPERANDS; # NaCl
454 +--
392 | op(24:20) Rn(19:16) 455 | op(24:20) Rn(19:16)
393 | 0000x - = Binary2RegisterImmediateOp 456 | 0000x - = *1 pattern := cccc0010000snnnnddddiiiiiiiiiiii
394 => Defs12To15 457 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Why this restriction? Won't the safety make this c
Karl 2012/09/20 19:47:42 This is a testing infrastructure issue. It is need
395 And_Rule_11_A1_P34 458 rule := AND_immediate_A1;
396 cccc0010000snnnnddddiiiiiiiiiiii NotRdIsPcAndS 459 | 0001x - = *1 pattern := cccc0010001snnnnddddiiiiiiiiiiii
397 | 0001x - = Binary2RegisterImmediateOp 460 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
398 => Defs12To15 461 rule := EOR_immediate_A1;
399 Eor_Rule_44_A1_P94 462 | 0010x ~1111 = *2 pattern := cccc0010010snnnnddddiiiiiiiiiiii
JF 2012/09/19 01:14:23 As noted above, change *2 to *1.
Karl 2012/09/20 19:47:42 Done.
400 cccc0010001snnnnddddiiiiiiiiiiii NotRdIsPcAndS 463 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
401 | 0010x ~1111 = Binary2RegisterImmediateOp 464 # Note: For arm, the case where Rn=SP is not a special case (only in thumb2).
402 => Defs12To15 465 # Hence, parse restriction does not apply (See SUB (SP minus immediate)).
JF 2012/09/19 01:14:23 Why this note? It confuses me.
Karl 2012/09/20 19:47:42 removed
403 Sub_Rule_212_A1_P420 466 rule := SUB_immediate_A1;
404 cccc0010010snnnnddddiiiiiiiiiiii 467 | 0010x 1111 = *3 pattern := cccc001001001111ddddiiiiiiiiiiii;
405 NeitherRdIsPcAndSNorRnIsPcAndNotS 468 rule := ADR_A2;
406 # Note: Table says that op=0010x for ADR, but 469 | 0011x - = *1 pattern := cccc0010011snnnnddddiiiiiiiiiiii
407 # patterns for ADR do not match (page A8-32). 470 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
408 # Causes parsing conflicts with SUB (previous 471 rule := RSB_immediate_A1;
409 # row). Added restriction to ADR that bit 20 472 | 0100x ~1111 = *2 pattern := cccc0010100snnnnddddiiiiiiiiiiii
JF 2012/09/19 01:14:23 As noted above, change *2 to *1.
Karl 2012/09/20 19:47:42 Done.
410 # (updates flags register) must be 0 (rather than 473 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
411 # x), to match what is on A8.6.10 (page A8-32). 474 # Note: For arm, the case where Rn=SP is not a special case (only in thumb2).
412 # Note that this also matches restrictions of 475 # Hence, parse restriction does not apply (See ADD (SP plus immediate)).
JF 2012/09/19 01:14:23 Ditto on my confusion.
Karl 2012/09/20 19:47:42 removed
413 # A8.6.212 (page A8-420). 476 rule := ADD_immediate_A1;
414 | 00100 1111 = Unary1RegisterImmediateOp 477 | 0100x 1111 = *4 pattern := cccc001010001111ddddiiiiiiiiiiii;
JF 2012/09/19 01:14:23 As noted above, change to *3.
Karl 2012/09/20 19:47:42 Done.
415 => Defs12To15 478 rule := ADR_A1;
416 Adr_Rule_10_A2_P32 479 | 0101x - = *1 pattern := cccc0010101snnnnddddiiiiiiiiiiii
417 cccc001001001111ddddiiiiiiiiiiii 480 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
418 | 00101 1111 = ForbiddenCondDecoder => Forbidden 481 rule := ADC_immediate_A1;
419 Subs_Pc_Lr_and_related_instructions_Rule_A1a 482 | 0110x - = *1 pattern := cccc0010110snnnnddddiiiiiiiiiiii
420 cccc00100101nnnn1111iiiiiiiiiiii 483 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
421 | 0011x - = Binary2RegisterImmediateOp 484 rule := SBC_immediate_A1;
422 => Defs12To15 485 | 0111x - = *1 pattern := cccc0010111snnnnddddiiiiiiiiiiii
423 Rsb_Rule_142_A1_P284 486 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
424 cccc0010011snnnnddddiiiiiiiiiiii NotRdIsPcAndS 487 rule := RSC_immediate_A1;
425 | 0100x ~1111 = Binary2RegisterImmediateOp
426 => Defs12To15
427 Add_Rule_5_A1_P22
428 cccc0010100snnnnddddiiiiiiiiiiii
429 NeitherRdIsPcAndSNorRnIsPcAndNotS
430 # Note: Table says that op=0100x for ADR, but
431 # patterns for ADR do not match (page A8-32).
432 # Causes parsing conflicts with ADD (previous
433 # row). Added restriction to ADR that bit 20
434 # (updates flags register) must be 0 (rather than
435 # x), to match what is on A8.6.10 (page A8-32).
436 # Note that this also matches restrictions of
437 # A8.6.5 (page A8-22).
438 | 01000 1111 = Unary1RegisterImmediateOp
439 => Defs12To15
440 Adr_Rule_10_A1_P32
441 cccc001010001111ddddiiiiiiiiiiii
442 | 01001 1111 = ForbiddenCondDecoder => Forbidden
443 Subs_Pc_Lr_and_related_instructions_Rule_A1b
444 cccc00101001nnnn1111iiiiiiiiiiii
445 | 0101x - = Binary2RegisterImmediateOp
446 => Defs12To15
447 Adc_Rule_6_A1_P14
448 cccc0010101snnnnddddiiiiiiiiiiii NotRdIsPcAndS
449 | 0110x - = Binary2RegisterImmediateOp
450 => Defs12To15
451 Sbc_Rule_151_A1_P302
452 cccc0010110snnnnddddiiiiiiiiiiii NotRdIsPcAndS
453 | 0111x - = Binary2RegisterImmediateOp
454 => Defs12To15
455 Rsc_Rule_145_A1_P290
456 cccc0010111snnnnddddiiiiiiiiiiii NotRdIsPcAndS
457 # TODO(jfb) op==10xx0 should be unreachable from here: 488 # TODO(jfb) op==10xx0 should be unreachable from here:
458 # the previous table should handle it. 489 # the previous table should handle it.
459 # Note: Following instruction is used to test 490 | 10001 - = *6 pattern := cccc00110001nnnn0000iiiiiiiiiiii;
460 # if the immediate value appropriately (data address) 491 rule := TST_immediate_A1;
461 # masks the value in Rn. 492 | 10011 - = *5 pattern := cccc00110011nnnn0000iiiiiiiiiiii;
462 | 10001 - = MaskedBinaryRegisterImmediateTest 493 rule := TEQ_immediate_A1;
463 => TestIfAddressMasked 494 | 10101 - = *5 pattern := cccc00110101nnnn0000iiiiiiiiiiii;
464 Tst_Rule_230_A1_P454 495 rule := CMP_immediate_A1;
465 cccc00110001nnnn0000iiiiiiiiiiii 496 | 10111 - = *5 pattern := cccc00110111nnnn0000iiiiiiiiiiii;
466 | 10011 - = BinaryRegisterImmediateTest 497 rule := CMN_immediate_A1;
467 => DontCareInst 498 | 1100x - = *1 pattern := cccc0011100snnnnddddiiiiiiiiiiii
468 Teq_Rule_227_A1_P448 499 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
469 cccc00110011nnnn0000iiiiiiiiiiii 500 rule := ORR_immediate_A1;
470 | 10101 - = BinaryRegisterImmediateTest 501 | 1101x - = *7 pattern := cccc0011101s0000ddddiiiiiiiiiiii;
471 => DontCareInst 502 rule := MOV_immediate_A1;
472 Cmp_Rule_35_A1_P80 503 | 1110x - = *8 pattern := cccc0011110snnnnddddiiiiiiiiiiii
473 cccc00110101nnnn0000iiiiiiiiiiii 504 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
474 | 10111 - = BinaryRegisterImmediateTest 505 rule := BIC_immediate_A1;
475 => DontCareInst 506 | 1111x - = *9 pattern := cccc0011111s0000ddddiiiiiiiiiiii
JF 2012/09/19 01:14:23 Change to *7.
Karl 2012/09/20 19:47:42 Done.
476 Cmn_Rule_32_A1_P74 507 & not (Rd=1111 & S=1);
JF 2012/09/19 01:14:23 Ditto on UNDEFINED restriction.
Karl 2012/09/20 19:47:42 removed
477 cccc00110111nnnn0000iiiiiiiiiiii 508 rule := MVN_immediate_A1;
478 | 1100x - = Binary2RegisterImmediateOp
479 => Defs12To15
480 Orr_Rule_113_A1_P228
481 cccc0011100snnnnddddiiiiiiiiiiii NotRdIsPcAndS
482 | 1101x - = Unary1RegisterImmediateOp
483 => Defs12To15
484 Mov_Rule_96_A1_P194
485 cccc0011101s0000ddddiiiiiiiiiiii NotRdIsPcAndS
486 # Note: The following instruction is used to mask
487 # memory addresses.
488 | 1110x - = MaskedBinary2RegisterImmediateOp
489 => MaskAddress
490 Bic_Rule_19_A1_P50
491 cccc0011110snnnnddddiiiiiiiiiiii NotRdIsPcAndS
492 | 1111x - = Unary1RegisterImmediateOp
493 => Defs12To15
494 Mvn_Rule_106_A1_P214
495 cccc0011111s0000ddddiiiiiiiiiiii NotRdIsPcAndS
496 +-- 509 +--
497 510
498 # Note: in all of these cases there's a currently unhandled restriction: 511 # Note: in all of these cases there's a currently unhandled restriction:
499 # if ArchVersion() < 6 && d == n then Unpredictable. 512 # if ArchVersion() < 6 && d == n then Unpredictable.
500 # And for long versions: 513 # And for long versions:
501 # if ArchVersion() < 6 && ((dhi == n) || (dlo == n)) then Unpredictable. 514 # if ArchVersion() < 6 && ((dhi == n) || (dlo == n)) then Unpredictable.
502 # Revisit if we want to support chips before v6. 515 # Revisit if we want to support chips before v6.
503 +-- multiply_and_multiply_accumulate (See Section A5.2.5) 516 +-- multiply_and_multiply_accumulate (See Section A5.2.5)
504 | op(23:20) 517 | op(23:20)
505 | 000x = Binary3RegisterOpAltA 518 | 000x = Binary3RegisterOpAltA
(...skipping 1426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1932 | " 1001 " 1945 | " 1001 "
1933 | " 1101 =VectorLoad # VLD2(single, all lanes) 1946 | " 1101 =VectorLoad # VLD2(single, all lanes)
1934 | " 0x10 =VectorLoad # VLD3(single) 1947 | " 0x10 =VectorLoad # VLD3(single)
1935 | " 1010 " 1948 | " 1010 "
1936 | " 1110 =VectorLoad # VLD3(single, all lanes) 1949 | " 1110 =VectorLoad # VLD3(single, all lanes)
1937 | " 0x11 =VectorLoad # VLD4(single) 1950 | " 0x11 =VectorLoad # VLD4(single)
1938 | " 1011 " 1951 | " 1011 "
1939 | " 1111 =VectorLoad # VLD4(single, all lanes) 1952 | " 1111 =VectorLoad # VLD4(single, all lanes)
1940 | else: =Undefined # Note on page A7-27 1953 | else: =Undefined # Note on page A7-27
1941 +-- 1954 +--
OLDNEW
« no previous file with comments | « no previous file | src/trusted/validator_arm/dgen_core.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698