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

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

Issue 11569019: Fix uses in ARM table media_instructions. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years 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 # 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 1311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1322 | 0 0x111 - - - 1322 | 0 0x111 - - -
1323 = baseline := ForbiddenCondDecoder; 1323 = baseline := ForbiddenCondDecoder;
1324 pattern := cccc0100u111nnnnttttiiiiiiiiiiii; rule := LDRBT_A1; 1324 pattern := cccc0100u111nnnnttttiiiiiiiiiiii; rule := LDRBT_A1;
1325 | 1 0x111 0 - - 1325 | 1 0x111 0 - -
1326 = baseline := ForbiddenCondDecoder; 1326 = baseline := ForbiddenCondDecoder;
1327 pattern := cccc0110u111nnnnttttiiiiitt0mmmm; rule := LDRBT_A2; 1327 pattern := cccc0110u111nnnnttttiiiiitt0mmmm; rule := LDRBT_A2;
1328 # Instructions with A==1 and B==1 are in media_instructions. 1328 # Instructions with A==1 and B==1 are in media_instructions.
1329 # TODO(jfb) Should we mark them as unreachable? 1329 # TODO(jfb) Should we mark them as unreachable?
1330 +-- 1330 +--
1331 1331
1332 # TODO(karl): Add uses to corresponding classes.
1333 +-- media_instructions (See Section A5.4) 1332 +-- media_instructions (See Section A5.4)
1333 *RdRnRm
1334 { cond(31:28), Rd(19:16), Rm(11:8), Rn(3:0) }
1335 baseline := Binary3RegisterOpAltA;
1336 defs := {Rd};
1337 uses := {Rn, Rm};
1338 safety := Pc in {Rd, Rn, Rm} => UNPREDICTABLE;
1339 *RdRnRmRa
1340 { cond(31:28), Rd(19:16), Ra(15:12), Rm(11:8), Rn(3:0) }
1341 baseline := Binary4RegisterDualOp;
1342 defs := {Rd};
1343 uses := {Rn, Rm, Ra};
1344 safety := Ra == Pc => DECODER_ERROR &
1345 Pc in {Rd, Rn, Rm} => UNPREDICTABLE;
1346 *RdRnLsbMsb
1347 { cond(31:28), msb(20:16), Rd(15:12), lsb(11:7), Rn(3:0) }
1348 baseline := Binary2RegisterBitRangeMsbGeLsb;
1349 defs := {Rd};
1350 uses := {Rn, Rd};
1351 safety := Rn == Pc => DECODER_ERROR &
1352 Rd == Pc => UNPREDICTABLE &
1353 msb < lsb => UNPREDICTABLE;
1354 *RdRnLsbWidth
1355 { cond(31:28), widthm1(20:16), Rd(15:12), lsb(11:7), Rn(3:0) }
1356 baseline := Binary2RegisterBitRangeNotRnIsPcBitfieldExtract;
1357 defs := {Rd};
1358 uses := {Rn};
1359 safety := Pc in {Rd, Rn} => UNPREDICTABLE &
1360 lsb + widthm1 > 31 => UNPREDICTABLE;
1361 *RdLsbWidth
1362 { cond(31:28), msb(20:16), Rd(15:12), lsb(11:7) }
1363 baseline := Unary1RegisterBitRangeMsbGeLsb;
1364 defs := {Rd};
1365 uses := {Rd};
1366 safety := Rd == Pc => UNPREDICTABLE &
1367 msb < lsb => UNPREDICTABLE;
1368 +--
1334 | op1(24:20) op2(7:5) Rd(15:12) Rn(3:0) 1369 | op1(24:20) op2(7:5) Rd(15:12) Rn(3:0)
1335 | 000xx - - - ->parallel_addition_and_subtraction_signed 1370 | 000xx - - - ->parallel_addition_and_subtraction_signed
1336 | 001xx - - - ->parallel_addition_and_subtraction_unsign ed 1371 | 001xx - - - ->parallel_addition_and_subtraction_unsign ed
1337 | 01xxx - - - ->packing_unpacking_saturation_and_reversa l 1372 | 01xxx - - - ->packing_unpacking_saturation_and_reversa l
1338 | 10xxx - - - ->signed_multiply_signed_and_unsigned_divi de 1373 | 10xxx - - - ->signed_multiply_signed_and_unsigned_divi de
1339 | 11000 000 1111 - = Binary3RegisterOpAltA 1374 | 11000 000 1111 -
1340 => Defs16To19CondsDontCareRdRmRnNotPc 1375 = *RdRnRm
1341 Usad8_Rule_253_A1_P500 1376 pattern := cccc01111000dddd1111mmmm0001nnnn;
1342 cccc01111000dddd1111mmmm0001nnnn 1377 rule := USAD8; arch := v6;
1343 RegsNotPc (v6) 1378 | " " ~1111 -
1344 | " " ~1111 - = Binary4RegisterDualOp 1379 = *RdRnRmRa
1345 => Defs16To19CondsDontCareRdRaRmRnNotPc 1380 pattern := cccc01111000ddddaaaammmm0001nnnn;
1346 Usada8_Rule_254_A1_P502 1381 rule := USADA8; arch := v6;
1347 cccc01111000ddddaaaammmm0001nnnn 1382 | 1101x x10 - -
1348 # Note: In baseline class, bits(15:12) 1383 = *RdRnLsbWidth
1349 # is Ra (not Rd as column name 1384 pattern := cccc0111101wwwwwddddlllll101nnnn;
1350 # suggests). 1385 rule := SBFX; arch := v6T2;
1351 RegsNotPc (v6) 1386 | 1110x x00 - 1111
1352 | 1101x x10 - - = Binary2RegisterBitRangeNotRnIsPcBitfield Extract 1387 = *RdLsbWidth
1353 => Defs12To15CondsDontCareRdRnNotPcBitfi eldExtract 1388 pattern := cccc0111110mmmmmddddlllll0011111;
1354 Sbfx_Rule_154_A1_P308 1389 rule := BFC; arch := v6T2;
1355 cccc0111101wwwwwddddlllll101nnnn 1390 | " " - ~1111
1356 RegsNotPc (v6T2) 1391 = *RdRnLsbMsb
1357 | 1110x x00 - 1111 = Unary1RegisterBitRangeMsbGeLsb 1392 pattern := cccc0111110mmmmmddddlllll001nnnn;
1358 Bfc_17_A1_P46 1393 rule := BFI; arch := v6T2;
1359 cccc0111110mmmmmddddlllll0011111 1394 | 1111x x10 - -
1360 RegsNotPc (v6T2) 1395 = *RdRnLsbWidth
1361 | " " - ~1111 = Binary2RegisterBitRangeMsbGeLsb 1396 pattern := cccc0111111mmmmmddddlllll101nnnn;
1362 => Defs12To15CondsDontCareMsbGeLsb 1397 rule := UBFX; arch := v6T2;
1363 Bfi_Rule_18_A1_P48 1398 | 11111 111 - -
1364 cccc0111110mmmmmddddlllll001nnnn 1399 = baseline := PermanentlyUndefined;
1365 RegsNotPc (v6T2) 1400 pattern := cccc01111111iiiiiiiiiiii1111iiii;
1366 | 1111x x10 - - = Binary2RegisterBitRangeNotRnIsPcBitfield Extract 1401 # Note: the UDF mnemonic only applies
1367 => Defs12To15CondsDontCareRdRnNotPcBitfi eldExtract 1402 # when cond == 0b1110, but all
1368 Ubfx_Rule_236_A1_P466 1403 # encodings are permanently undefined.
1369 cccc0111111mmmmmddddlllll101nnnn 1404 rule := UDF;
1370 RegsNotPc (v6T2) 1405 | else: = Undefined # Note on table a5.4
1371 | 11111 111 - - = PermanentlyUndefined
1372 # Note: the UDF mnemonic only applies
1373 # when cond == 0b1110, but all
1374 # encodings are permanently undefined.
1375 Udf_Rule_A1
1376 cccc01111111iiiiiiiiiiii1111iiii
1377 | else: = Undefined # Note on page A5-21
1378 +-- 1406 +--
1379 1407
1380 # TODO(karl): Add uses to corresponding classes. 1408 # TODO(karl): Add uses to corresponding classes.
1381 # None of the instructions in the following table set NZCV flags. 1409 # None of the instructions in the following table set NZCV flags.
1382 # Some do set the APSR's sticky Q bit (for saturation) or the GE bits, 1410 # Some do set the APSR's sticky Q bit (for saturation) or the GE bits,
1383 # but we don't model them. 1411 # but we don't model them.
1384 +-- parallel_addition_and_subtraction_signed (See Section A5.4.1) 1412 +-- parallel_addition_and_subtraction_signed (See Section A5.4.1)
1385 | op1(21:20) op2(7:5) 1413 | op1(21:20) op2(7:5)
1386 | 01 000 = Binary3RegisterOpAltBNoCondUpdates 1414 | 01 000 = Binary3RegisterOpAltBNoCondUpdates
1387 => Defs12To15CondsDontCareRnRdRmNotPc 1415 => Defs12To15CondsDontCareRnRdRmNotPc
(...skipping 1834 matching lines...) Expand 10 before | Expand all | Expand 10 after
3222 rule := VLD3_single_3_element_structure_to_all_lanes; 3250 rule := VLD3_single_3_element_structure_to_all_lanes;
3223 | " " 0x11 = *VLSS4 3251 | " " 0x11 = *VLSS4
3224 pattern := 111101001d10nnnnddddss11aaaammmm; 3252 pattern := 111101001d10nnnnddddss11aaaammmm;
3225 rule := VLD4_single_4_element_structure_to_one_lane; 3253 rule := VLD4_single_4_element_structure_to_one_lane;
3226 | " " 1011 " 3254 | " " 1011 "
3227 | " " 1111 = *VLS4A 3255 | " " 1111 = *VLS4A
3228 pattern := 111101001d10nnnndddd1111sstammmm; 3256 pattern := 111101001d10nnnndddd1111sstammmm;
3229 rule := VLD4_single_4_element_structure_to_all_lanes; 3257 rule := VLD4_single_4_element_structure_to_all_lanes;
3230 | else: = Undefined 3258 | else: = Undefined
3231 +-- 3259 +--
OLDNEW
« no previous file with comments | « src/trusted/validator_arm/actual_classes.cc ('k') | src/trusted/validator_arm/baseline_classes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698