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

Side by Side Diff: opcodes/i386-opc.h

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 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
« no previous file with comments | « opcodes/i386-init.h ('k') | opcodes/i386-opc.tbl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Declarations for Intel 80386 opcode table 1 /* Declarations for Intel 80386 opcode table
2 Copyright 2007, 2008, 2009, 2010 2 Copyright 2007, 2008, 2009, 2010, 2012
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5 This file is part of the GNU opcodes library. 5 This file is part of the GNU opcodes library.
6 6
7 This library is free software; you can redistribute it and/or modify 7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option) 9 the Free Software Foundation; either version 3, or (at your option)
10 any later version. 10 any later version.
11 11
12 It is distributed in the hope that it will be useful, but WITHOUT 12 It is distributed in the hope that it will be useful, but WITHOUT
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 /* FSGSBASE Instructions required */ 127 /* FSGSBASE Instructions required */
128 CpuFSGSBase, 128 CpuFSGSBase,
129 /* RDRND Instructions required */ 129 /* RDRND Instructions required */
130 CpuRdRnd, 130 CpuRdRnd,
131 /* F16C Instructions required */ 131 /* F16C Instructions required */
132 CpuF16C, 132 CpuF16C,
133 /* Intel BMI2 support required */ 133 /* Intel BMI2 support required */
134 CpuBMI2, 134 CpuBMI2,
135 /* LZCNT support required */ 135 /* LZCNT support required */
136 CpuLZCNT, 136 CpuLZCNT,
137 /* HLE support required */
138 CpuHLE,
139 /* RTM support required */
140 CpuRTM,
137 /* INVPCID Instructions required */ 141 /* INVPCID Instructions required */
138 CpuINVPCID, 142 CpuINVPCID,
143 /* VMFUNC Instruction required */
144 CpuVMFUNC,
139 /* 64bit support available, used by -march= in assembler. */ 145 /* 64bit support available, used by -march= in assembler. */
140 CpuLM, 146 CpuLM,
147 /* RDRSEED instruction required. */
148 CpuRDSEED,
149 /* Multi-presisionn add-carry instructions are required. */
150 CpuADX,
151 /* Supports prefetchw instruction. */
152 CpuPRFCHW,
141 /* 64bit support required */ 153 /* 64bit support required */
142 Cpu64, 154 Cpu64,
143 /* Not supported in the 64bit mode */ 155 /* Not supported in the 64bit mode */
144 CpuNo64, 156 CpuNo64,
145 /* The last bitfield in i386_cpu_flags. */ 157 /* The last bitfield in i386_cpu_flags. */
146 CpuMax = CpuNo64 158 CpuMax = CpuNo64
147 }; 159 };
148 160
149 #define CpuNumOfUints \ 161 #define CpuNumOfUints \
150 (CpuMax / sizeof (unsigned int) / CHAR_BIT + 1) 162 (CpuMax / sizeof (unsigned int) / CHAR_BIT + 1)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 unsigned int cpubmi:1; 217 unsigned int cpubmi:1;
206 unsigned int cputbm:1; 218 unsigned int cputbm:1;
207 unsigned int cpumovbe:1; 219 unsigned int cpumovbe:1;
208 unsigned int cpuept:1; 220 unsigned int cpuept:1;
209 unsigned int cpurdtscp:1; 221 unsigned int cpurdtscp:1;
210 unsigned int cpufsgsbase:1; 222 unsigned int cpufsgsbase:1;
211 unsigned int cpurdrnd:1; 223 unsigned int cpurdrnd:1;
212 unsigned int cpuf16c:1; 224 unsigned int cpuf16c:1;
213 unsigned int cpubmi2:1; 225 unsigned int cpubmi2:1;
214 unsigned int cpulzcnt:1; 226 unsigned int cpulzcnt:1;
227 unsigned int cpuhle:1;
228 unsigned int cpurtm:1;
215 unsigned int cpuinvpcid:1; 229 unsigned int cpuinvpcid:1;
230 unsigned int cpuvmfunc:1;
216 unsigned int cpulm:1; 231 unsigned int cpulm:1;
232 unsigned int cpurdseed:1;
233 unsigned int cpuadx:1;
234 unsigned int cpuprfchw:1;
217 unsigned int cpu64:1; 235 unsigned int cpu64:1;
218 unsigned int cpuno64:1; 236 unsigned int cpuno64:1;
219 #ifdef CpuUnused 237 #ifdef CpuUnused
220 unsigned int unused:(CpuNumOfBits - CpuUnused); 238 unsigned int unused:(CpuNumOfBits - CpuUnused);
221 #endif 239 #endif
222 } bitfield; 240 } bitfield;
223 unsigned int array[CpuNumOfUints]; 241 unsigned int array[CpuNumOfUints];
224 } i386_cpu_flags; 242 } i386_cpu_flags;
225 243
226 /* Position of opcode_modifier bits. */ 244 /* Position of opcode_modifier bits. */
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 IsString, 301 IsString,
284 /* quick test for lockable instructions */ 302 /* quick test for lockable instructions */
285 IsLockable, 303 IsLockable,
286 /* fake an extra reg operand for clr, imul and special register 304 /* fake an extra reg operand for clr, imul and special register
287 processing for some instructions. */ 305 processing for some instructions. */
288 RegKludge, 306 RegKludge,
289 /* The first operand must be xmm0 */ 307 /* The first operand must be xmm0 */
290 FirstXmm0, 308 FirstXmm0,
291 /* An implicit xmm0 as the first operand */ 309 /* An implicit xmm0 as the first operand */
292 Implicit1stXmm0, 310 Implicit1stXmm0,
311 /* The HLE prefix is OK:
312 1. With a LOCK prefix.
313 2. With or without a LOCK prefix.
314 3. With a RELEASE (0xf3) prefix.
315 */
316 #define HLEPrefixNone 0
317 #define HLEPrefixLock 1
318 #define HLEPrefixAny 2
319 #define HLEPrefixRelease 3
320 HLEPrefixOk,
321 /* An instruction on which a "rep" prefix is acceptable. */
322 RepPrefixOk,
293 /* Convert to DWORD */ 323 /* Convert to DWORD */
294 ToDword, 324 ToDword,
295 /* Convert to QWORD */ 325 /* Convert to QWORD */
296 ToQword, 326 ToQword,
297 /* Address prefix changes operand 0 */ 327 /* Address prefix changes operand 0 */
298 AddrPrefixOp0, 328 AddrPrefixOp0,
299 /* opcode is a prefix */ 329 /* opcode is a prefix */
300 IsPrefix, 330 IsPrefix,
301 /* instruction has extension in 8 bit imm */ 331 /* instruction has extension in 8 bit imm */
302 ImmExt, 332 ImmExt,
303 /* instruction don't need Rex64 prefix. */ 333 /* instruction don't need Rex64 prefix. */
304 NoRex64, 334 NoRex64,
305 /* instruction require Rex64 prefix. */ 335 /* instruction require Rex64 prefix. */
306 Rex64, 336 Rex64,
307 /* deprecated fp insn, gets a warning */ 337 /* deprecated fp insn, gets a warning */
308 Ugh, 338 Ugh,
309 /* insn has VEX prefix: 339 /* insn has VEX prefix:
310 1: 128bit VEX prefix. 340 1: 128bit VEX prefix.
311 2: 256bit VEX prefix. 341 2: 256bit VEX prefix.
312 3: Scalar VEX prefix. 342 3: Scalar VEX prefix.
313 */ 343 */
314 #define VEX128 1 344 #define VEX128 1
315 #define VEX256 2 345 #define VEX256 2
316 #define VEXScalar 3 346 #define VEXScalar 3
317 Vex, 347 Vex,
318 /* How to encode VEX.vvvv: 348 /* How to encode VEX.vvvv:
319 0: VEX.vvvv must be 1111b. 349 0: VEX.vvvv must be 1111b.
320 1: VEX.NDS. Register-only source is encoded in VEX.vvvv where 350 1: VEX.NDS. Register-only source is encoded in VEX.vvvv where
321 the content of source registers will be preserved. 351 the content of source registers will be preserved.
322 » VEX.DDS. The second register operand is encoded in VEX.vvvv 352 » VEX.DDS. The second register operand is encoded in VEX.vvvv
323 where the content of first source register will be overwritten 353 where the content of first source register will be overwritten
324 by the result. 354 by the result.
325 VEX.NDD2. The second destination register operand is encoded in 355 VEX.NDD2. The second destination register operand is encoded in
326 VEX.vvvv for instructions with 2 destination register operands. 356 VEX.vvvv for instructions with 2 destination register operands.
327 For assembler, there are no difference between VEX.NDS, VEX.DDS 357 For assembler, there are no difference between VEX.NDS, VEX.DDS
328 and VEX.NDD2. 358 and VEX.NDD2.
329 2. VEX.NDD. Register destination is encoded in VEX.vvvv for 359 2. VEX.NDD. Register destination is encoded in VEX.vvvv for
330 instructions with 1 destination register operand. 360 instructions with 1 destination register operand.
331 3. VEX.LWP. Register destination is encoded in VEX.vvvv and one 361 3. VEX.LWP. Register destination is encoded in VEX.vvvv and one
332 of the operands can access a memory location. 362 of the operands can access a memory location.
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 unsigned int no_lsuf:1; 446 unsigned int no_lsuf:1;
417 unsigned int no_ssuf:1; 447 unsigned int no_ssuf:1;
418 unsigned int no_qsuf:1; 448 unsigned int no_qsuf:1;
419 unsigned int no_ldsuf:1; 449 unsigned int no_ldsuf:1;
420 unsigned int fwait:1; 450 unsigned int fwait:1;
421 unsigned int isstring:1; 451 unsigned int isstring:1;
422 unsigned int islockable:1; 452 unsigned int islockable:1;
423 unsigned int regkludge:1; 453 unsigned int regkludge:1;
424 unsigned int firstxmm0:1; 454 unsigned int firstxmm0:1;
425 unsigned int implicit1stxmm0:1; 455 unsigned int implicit1stxmm0:1;
456 unsigned int hleprefixok:2;
457 unsigned int repprefixok:1;
426 unsigned int todword:1; 458 unsigned int todword:1;
427 unsigned int toqword:1; 459 unsigned int toqword:1;
428 unsigned int addrprefixop0:1; 460 unsigned int addrprefixop0:1;
429 unsigned int isprefix:1; 461 unsigned int isprefix:1;
430 unsigned int immext:1; 462 unsigned int immext:1;
431 unsigned int norex64:1; 463 unsigned int norex64:1;
432 unsigned int rex64:1; 464 unsigned int rex64:1;
433 unsigned int ugh:1; 465 unsigned int ugh:1;
434 unsigned int vex:2; 466 unsigned int vex:2;
435 unsigned int vexvvvv:2; 467 unsigned int vexvvvv:2;
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 unsigned int base_opcode; 667 unsigned int base_opcode;
636 #define Opcode_D 0x2 /* Direction bit: 668 #define Opcode_D 0x2 /* Direction bit:
637 set if Reg --> Regmem; 669 set if Reg --> Regmem;
638 unset if Regmem --> Reg. */ 670 unset if Regmem --> Reg. */
639 #define Opcode_FloatR 0x8 /* Bit to swap src/dest for float insns. */ 671 #define Opcode_FloatR 0x8 /* Bit to swap src/dest for float insns. */
640 #define Opcode_FloatD 0x400 /* Direction bit for float insns. */ 672 #define Opcode_FloatD 0x400 /* Direction bit for float insns. */
641 673
642 /* extension_opcode is the 3 bit extension for group <n> insns. 674 /* extension_opcode is the 3 bit extension for group <n> insns.
643 This field is also used to store the 8-bit opcode suffix for the 675 This field is also used to store the 8-bit opcode suffix for the
644 AMD 3DNow! instructions. 676 AMD 3DNow! instructions.
645 If this template has no extension opcode (the usual case) use None 677 If this template has no extension opcode (the usual case) use None
646 Instructions */ 678 Instructions */
647 unsigned int extension_opcode; 679 unsigned int extension_opcode;
648 #define None 0xffff /* If no extension_opcode is possible. */ 680 #define None 0xffff /* If no extension_opcode is possible. */
649 681
650 /* Opcode length. */ 682 /* Opcode length. */
651 unsigned char opcode_length; 683 unsigned char opcode_length;
652 684
653 /* cpu feature flags */ 685 /* cpu feature flags */
654 i386_cpu_flags cpu_flags; 686 i386_cpu_flags cpu_flags;
655 687
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 unsigned int seg_prefix; 735 unsigned int seg_prefix;
704 } 736 }
705 seg_entry; 737 seg_entry;
706 738
707 extern const seg_entry cs; 739 extern const seg_entry cs;
708 extern const seg_entry ds; 740 extern const seg_entry ds;
709 extern const seg_entry ss; 741 extern const seg_entry ss;
710 extern const seg_entry es; 742 extern const seg_entry es;
711 extern const seg_entry fs; 743 extern const seg_entry fs;
712 extern const seg_entry gs; 744 extern const seg_entry gs;
OLDNEW
« no previous file with comments | « opcodes/i386-init.h ('k') | opcodes/i386-opc.tbl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698