aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/lib
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@redhat.com>2009-09-08 12:32:46 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2009-09-10 19:12:34 -0400
commitf12b4f546b4e327d5620a544a2bddab68de66027 (patch)
treef4c4a9b19e4633efed77a365e89666e54dd12838 /arch/x86/lib
parent8f8ffe2485bcaa890800681451d380779cea06af (diff)
x86: Add MMX support for instruction decoder
Add MMX/SSE instructions to x86 opcode maps, since some of those instructions are used in the kernel. This also fixes failures in the x86 instruction decoder seftest. Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: Jim Keniston <jkenisto@us.ibm.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> LKML-Reference: <20090908163246.23516.78835.stgit@dhcp-100-2-132.bos.redhat.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'arch/x86/lib')
-rw-r--r--arch/x86/lib/x86-opcode-map.txt307
1 files changed, 200 insertions, 107 deletions
diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
index 083dd59dd74b..59e20d5c2a52 100644
--- a/arch/x86/lib/x86-opcode-map.txt
+++ b/arch/x86/lib/x86-opcode-map.txt
@@ -310,14 +310,14 @@ Referrer: 2-byte escape
3100e: 3100e:
3110f: 3110f:
312# 0x0f 0x10-0x1f 312# 0x0f 0x10-0x1f
31310: 31310: movups Vps,Wps | movss Vss,Wss (F3) | movupd Vpd,Wpd (66) | movsd Vsd,Wsd (F2)
31411: 31411: movups Wps,Vps | movss Wss,Vss (F3) | movupd Wpd,Vpd (66) | movsd Wsd,Vsd (F2)
31512: 31512: movlps Vq,Mq | movlpd Vq,Mq (66) | movhlps Vq,Uq | movddup Vq,Wq (F2) | movsldup Vq,Wq (F3)
31613: 31613: mpvlps Mq,Vq | movlpd Mq,Vq (66)
31714: 31714: unpcklps Vps,Wq | unpcklpd Vpd,Wq (66)
31815: 31815: unpckhps Vps,Wq | unpckhpd Vpd,Wq (66)
31916: 31916: movhps Vq,Mq | movhpd Vq,Mq (66) | movlsps Vq,Uq | movshdup Vq,Wq (F3)
32017: 32017: movhps Mq,Vq | movhpd Mq,Vq (66)
32118: Grp16 (1A) 32118: Grp16 (1A)
32219: 32219:
3231a: 3231a:
@@ -337,12 +337,12 @@ Referrer: 2-byte escape
33727: 33727:
33828: movaps Vps,Wps | movapd Vpd,Wpd (66) 33828: movaps Vps,Wps | movapd Vpd,Wpd (66)
33929: movaps Wps,Vps | movapd Wpd,Vpd (66) 33929: movaps Wps,Vps | movapd Wpd,Vpd (66)
3402a: 3402a: cvtpi2ps Vps,Qpi | cvtsi2ss Vss,Ed/q (F3) | cvtpi2pd Vpd,Qpi (66) | cvtsi2sd Vsd,Ed/q (F2)
3412b: 3412b: movntps Mps,Vps | movntpd Mpd,Vpd (66)
3422c: 3422c: cvttps2pi Ppi,Wps | cvttss2si Gd/q,Wss (F3) | cvttpd2pi Ppi,Wpd (66) | cvttsd2si Gd/q,Wsd (F2)
3432d: 3432d: cvtps2pi Ppi,Wps | cvtss2si Gd/q,Wss (F3) | cvtpd2pi Qpi,Wpd (66) | cvtsd2si Gd/q,Wsd (F2)
3442e: 3442e: ucomiss Vss,Wss | ucomisd Vsd,Wsd (66)
3452f: 3452f: comiss Vss,Wss | comisd Vsd,Wsd (66)
346# 0x0f 0x30-0x3f 346# 0x0f 0x30-0x3f
34730: WRMSR 34730: WRMSR
34831: RDTSC 34831: RDTSC
@@ -378,56 +378,56 @@ Referrer: 2-byte escape
3784e: CMOVLE/NG Gv,Ev 3784e: CMOVLE/NG Gv,Ev
3794f: CMOVNLE/G Gv,Ev 3794f: CMOVNLE/G Gv,Ev
380# 0x0f 0x50-0x5f 380# 0x0f 0x50-0x5f
38150: 38150: movmskps Gd/q,Ups | movmskpd Gd/q,Upd (66)
38251: 38251: sqrtps Vps,Wps | sqrtss Vss,Wss (F3) | sqrtpd Vpd,Wpd (66) | sqrtsd Vsd,Wsd (F2)
38352: 38352: rsqrtps Vps,Wps | rsqrtss Vss,Wss (F3)
38453: 38453: rcpps Vps,Wps | rcpss Vss,Wss (F3)
38554: 38554: andps Vps,Wps | andpd Vpd,Wpd (66)
38655: 38655: andnps Vps,Wps | andnpd Vpd,Wpd (66)
38756: 38756: orps Vps,Wps | orpd Vpd,Wpd (66)
38857: 38857: xorps Vps,Wps | xorpd Vpd,Wpd (66)
38958: 38958: addps Vps,Wps | addss Vss,Wss (F3) | addpd Vpd,Wpd (66) | addsd Vsd,Wsd (F2)
39059: 39059: mulps Vps,Wps | mulss Vss,Wss (F3) | mulpd Vpd,Wpd (66) | mulsd Vsd,Wsd (F2)
3915a: 3915a: cvtps2pd Vpd,Wps | cvtss2sd Vsd,Wss (F3) | cvtpd2ps Vps,Wpd (66) | cvtsd2ss Vsd,Wsd (F2)
3925b: 3925b: cvtdq2ps Vps,Wdq | cvtps2dq Vdq,Wps (66) | cvttps2dq Vdq,Wps (F3)
3935c: 3935c: subps Vps,Wps | subss Vss,Wss (F3) | subpd Vpd,Wpd (66) | subsd Vsd,Wsd (F2)
3945d: 3945d: minps Vps,Wps | minss Vss,Wss (F3) | minpd Vpd,Wpd (66) | minsd Vsd,Wsd (F2)
3955e: 3955e: divps Vps,Wps | divss Vss,Wss (F3) | divpd Vpd,Wpd (66) | divsd Vsd,Wsd (F2)
3965f: 3965f: maxps Vps,Wps | maxss Vss,Wss (F3) | maxpd Vpd,Wpd (66) | maxsd Vsd,Wsd (F2)
397# 0x0f 0x60-0x6f 397# 0x0f 0x60-0x6f
39860: 39860: punpcklbw Pq,Qd | punpcklbw Vdq,Wdq (66)
39961: 39961: punpcklwd Pq,Qd | punpcklwd Vdq,Wdq (66)
40062: 40062: punpckldq Pq,Qd | punpckldq Vdq,Wdq (66)
40163: 40163: packsswb Pq,Qq | packsswb Vdq,Wdq (66)
40264: 40264: pcmpgtb Pq,Qq | pcmpgtb Vdq,Wdq (66)
40365: 40365: pcmpgtw Pq,Qq | pcmpgtw(66) Vdq,Wdq
40466: 40466: pcmpgtd Pq,Qq | pcmpgtd Vdq,Wdq (66)
40567: 40567: packuswb Pq,Qq | packuswb(66) Vdq,Wdq
40668: 40668: punpckhbw Pq,Qd | punpckhbw Vdq,Wdq (66)
40769: 40769: punpckhwd Pq,Qd | punpckhwd Vdq,Wdq (66)
4086a: 4086a: punpckhdq Pq,Qd | punpckhdq Vdq,Wdq (66)
4096b: 4096b: packssdw Pq,Qd | packssdw Vdq,Wdq (66)
4106c: 4106c: punpcklqdq Vdq,Wdq (66)
4116d: 4116d: punpckhqdq Vdq,Wdq (66)
4126e: 4126e: movd/q/ Pd,Ed/q | movd/q Vdq,Ed/q (66)
4136f: 4136f: movq Pq,Qq | movdqa Vdq,Wdq (66) | movdqu Vdq,Wdq (F3)
414# 0x0f 0x70-0x7f 414# 0x0f 0x70-0x7f
41570: 41570: pshufw Pq,Qq,Ib | pshufd Vdq,Wdq,Ib (66) | pshufhw Vdq,Wdq,Ib (F3) | pshuflw VdqWdq,Ib (F2)
41671: Grp12 (1A) 41671: Grp12 (1A)
41772: Grp13 (1A) 41772: Grp13 (1A)
41873: Grp14 (1A) 41873: Grp14 (1A)
41974: 41974: pcmpeqb Pq,Qq | pcmpeqb Vdq,Wdq (66)
42075: 42075: pcmpeqw Pq,Qq | pcmpeqw Vdq,Wdq (66)
42176: 42176: pcmpeqd Pq,Qq | pcmpeqd Vdq,Wdq (66)
42277: 42277: emms
42378: VMREAD Ed/q,Gd/q 42378: VMREAD Ed/q,Gd/q
42479: VMWRITE Gd/q,Ed/q 42479: VMWRITE Gd/q,Ed/q
4257a: 4257a:
4267b: 4267b:
4277c: 4277c: haddps(F2) Vps,Wps | haddpd(66) Vpd,Wpd
4287d: 4287d: hsubps(F2) Vps,Wps | hsubpd(66) Vpd,Wpd
4297e: 4297e: movd/q Ed/q,Pd | movd/q Ed/q,Vdq (66) | movq Vq,Wq (F3)
4307f: 4307f: movq Qq,Pq | movdqa Wdq,Vdq (66) | movdqu Wdq,Vdq (F3)
431# 0x0f 0x80-0x8f 431# 0x0f 0x80-0x8f
43280: JO Jz (f64) 43280: JO Jz (f64)
43381: JNO Jz (f64) 43381: JNO Jz (f64)
@@ -499,11 +499,11 @@ bf: MOVSX Gv,Ew
499# 0x0f 0xc0-0xcf 499# 0x0f 0xc0-0xcf
500c0: XADD Eb,Gb 500c0: XADD Eb,Gb
501c1: XADD Ev,Gv 501c1: XADD Ev,Gv
502c2: 502c2: cmpps Vps,Wps,Ib | cmpss Vss,Wss,Ib (F3) | cmppd Vpd,Wpd,Ib (66) | cmpsd Vsd,Wsd,Ib (F2)
503c3: movnti Md/q,Gd/q 503c3: movnti Md/q,Gd/q
504c4: 504c4: pinsrw Pq,Rd/q/Mw,Ib | pinsrw Vdq,Rd/q/Mw,Ib (66)
505c5: 505c5: pextrw Gd,Nq,Ib | pextrw Gd,Udq,Ib (66)
506c6: 506c6: shufps Vps,Wps,Ib | shufpd Vpd,Wpd,Ib (66)
507c7: Grp9 (1A) 507c7: Grp9 (1A)
508c8: BSWAP RAX/EAX/R8/R8D 508c8: BSWAP RAX/EAX/R8/R8D
509c9: BSWAP RCX/ECX/R9/R9D 509c9: BSWAP RCX/ECX/R9/R9D
@@ -514,60 +514,131 @@ cd: BSWAP RBP/EBP/R13/R13D
514ce: BSWAP RSI/ESI/R14/R14D 514ce: BSWAP RSI/ESI/R14/R14D
515cf: BSWAP RDI/EDI/R15/R15D 515cf: BSWAP RDI/EDI/R15/R15D
516# 0x0f 0xd0-0xdf 516# 0x0f 0xd0-0xdf
517d0: 517d0: addsubps Vps,Wps (F2) | addsubpd Vpd,Wpd (66)
518d1: 518d1: psrlw Pq,Qq | psrlw Vdq,Wdq (66)
519d2: 519d2: psrld Pq,Qq | psrld Vdq,Wdq (66)
520d3: 520d3: psrlq Pq,Qq | psrlq Vdq,Wdq (66)
521d4: 521d4: paddq Pq,Qq | paddq Vdq,Wdq (66)
522d5: 522d5: pmullw Pq,Qq | pmullw Vdq,Wdq (66)
523d6: 523d6: movq Wq,Vq (66) | movq2dq Vdq,Nq (F3) | movdq2q Pq,Uq (F2)
524d7: 524d7: pmovmskb Gd,Nq | pmovmskb Gd,Udq (66)
525d8: 525d8: psubusb Pq,Qq | psubusb Vdq,Wdq (66)
526d9: 526d9: psubusw Pq,Qq | psubusw Vdq,Wdq (66)
527da: 527da: pminub Pq,Qq | pminub Vdq,Wdq (66)
528db: 528db: pand Pq,Qq | pand Vdq,Wdq (66)
529dc: 529dc: paddusb Pq,Qq | paddusb Vdq,Wdq (66)
530dd: 530dd: paddusw Pq,Qq | paddusw Vdq,Wdq (66)
531de: 531de: pmaxub Pq,Qq | pmaxub Vdq,Wdq (66)
532df: 532df: pandn Pq,Qq | pandn Vdq,Wdq (66)
533# 0x0f 0xe0-0xef 533# 0x0f 0xe0-0xef
534e0: 534e0: pavgb Pq,Qq | pavgb Vdq,Wdq (66)
535e1: 535e1: psraw Pq,Qq | psraw Vdq,Wdq (66)
536e2: 536e2: psrad Pq,Qq | psrad Vdq,Wdq (66)
537e3: 537e3: pavgw Pq,Qq | pavgw Vdq,Wdq (66)
538e4: 538e4: pmulhuw Pq,Qq | pmulhuw Vdq,Wdq (66)
539e5: 539e5: pmulhw Pq,Qq | pmulhw Vdq,Wdq (66)
540e6: 540e6: cvtpd2dq Vdq,Wpd (F2) | cvttpd2dq Vdq,Wpd (66) | cvtdq2pd Vpd,Wdq (F3)
541e7: 541e7: movntq Mq,Pq | movntdq Mdq,Vdq (66)
542e8: 542e8: psubsb Pq,Qq | psubsb Vdq,Wdq (66)
543e9: 543e9: psubsw Pq,Qq | psubsw Vdq,Wdq (66)
544ea: 544ea: pminsw Pq,Qq | pminsw Vdq,Wdq (66)
545eb: 545eb: por Pq,Qq | por Vdq,Wdq (66)
546ec: 546ec: paddsb Pq,Qq | paddsb Vdq,Wdq (66)
547ed: 547ed: paddsw Pq,Qq | paddsw Vdq,Wdq (66)
548ee: 548ee: pmaxsw Pq,Qq | pmaxsw Vdq,Wdq (66)
549ef: 549ef: pxor Pq,Qq | pxor Vdq,Wdq (66)
550# 0x0f 0xf0-0xff 550# 0x0f 0xf0-0xff
551f0: 551f0: lddqu Vdq,Mdq (F2)
552f1: 552f1: psllw Pq,Qq | psllw Vdq,Wdq (66)
553f2: 553f2: pslld Pq,Qq | pslld Vdq,Wdq (66)
554f3: 554f3: psllq Pq,Qq | psllq Vdq,Wdq (66)
555f4: 555f4: pmuludq Pq,Qq | pmuludq Vdq,Wdq (66)
556f5: 556f5: pmaddwd Pq,Qq | pmaddwd Vdq,Wdq (66)
557f6: 557f6: psadbw Pq,Qq | psadbw Vdq,Wdq (66)
558f7: 558f7: maskmovq Pq,Nq | maskmovdqu Vdq,Udq (66)
559f8: 559f8: psubb Pq,Qq | psubb Vdq,Wdq (66)
560f9: 560f9: psubw Pq,Qq | psubw Vdq,Wdq (66)
561fa: 561fa: psubd Pq,Qq | psubd Vdq,Wdq (66)
562fb: 562fb: psubq Pq,Qq | psubq Vdq,Wdq (66)
563fc: 563fc: paddb Pq,Qq | paddb Vdq,Wdq (66)
564fd: 564fd: paddw Pq,Qq | paddw Vdq,Wdq (66)
565fe: 565fe: paddd Pq,Qq | paddd Vdq,Wdq (66)
566ff: 566ff:
567EndTable 567EndTable
568 568
569Table: 3-byte opcode 1 569Table: 3-byte opcode 1
570Referrer: 3-byte escape 1 570Referrer: 3-byte escape 1
571# 0x0f 0x38 0x00-0x0f
57200: pshufb Pq,Qq | pshufb Vdq,Wdq (66)
57301: phaddw Pq,Qq | phaddw Vdq,Wdq (66)
57402: phaddd Pq,Qq | phaddd Vdq,Wdq (66)
57503: phaddsw Pq,Qq | phaddsw Vdq,Wdq (66)
57604: pmaddubsw Pq,Qq | pmaddubsw (66)Vdq,Wdq
57705: phsubw Pq,Qq | phsubw Vdq,Wdq (66)
57806: phsubd Pq,Qq | phsubd Vdq,Wdq (66)
57907: phsubsw Pq,Qq | phsubsw Vdq,Wdq (66)
58008: psignb Pq,Qq | psignb Vdq,Wdq (66)
58109: psignw Pq,Qq | psignw Vdq,Wdq (66)
5820a: psignd Pq,Qq | psignd Vdq,Wdq (66)
5830b: pmulhrsw Pq,Qq | pmulhrsw Vdq,Wdq (66)
5840c:
5850d:
5860e:
5870f:
588# 0x0f 0x38 0x10-0x1f
58910: pblendvb Vdq,Wdq (66)
59011:
59112:
59213:
59314: blendvps Vdq,Wdq (66)
59415: blendvpd Vdq,Wdq (66)
59516:
59617: ptest Vdq,Wdq (66)
59718:
59819:
5991a:
6001b:
6011c: pabsb Pq,Qq | pabsb Vdq,Wdq (66)
6021d: pabsw Pq,Qq | pabsw Vdq,Wdq (66)
6031e: pabsd Pq,Qq | pabsd Vdq,Wdq (66)
6041f:
605# 0x0f 0x38 0x20-0x2f
60620: pmovsxbw Vdq,Udq/Mq (66)
60721: pmovsxbd Vdq,Udq/Md (66)
60822: pmovsxbq Vdq,Udq/Mw (66)
60923: pmovsxwd Vdq,Udq/Mq (66)
61024: pmovsxwq Vdq,Udq/Md (66)
61125: pmovsxdq Vdq,Udq/Mq (66)
61226:
61327:
61428: pmuldq Vdq,Wdq (66)
61529: pcmpeqq Vdq,Wdq (66)
6162a: movntdqa Vdq,Mdq (66)
6172b: packusdw Vdq,Wdq (66)
6182c:
6192d:
6202e:
6212f:
622# 0x0f 0x38 0x30-0x3f
62330: pmovzxbw Vdq,Udq/Mq (66)
62431: pmovzxbd Vdq,Udq/Md (66)
62532: pmovzxbq Vdq,Udq/Mw (66)
62633: pmovzxwd Vdq,Udq/Mq (66)
62734: pmovzxwq Vdq,Udq/Md (66)
62835: pmovzxdq Vdq,Udq/Mq (66)
62936:
63037: pcmpgtq Vdq,Wdq (66)
63138: pminsb Vdq,Wdq (66)
63239: pminsd Vdq,Wdq (66)
6333a: pminuw Vdq,Wdq (66)
6343b: pminud Vdq,Wdq (66)
6353c: pmaxsb Vdq,Wdq (66)
6363d: pmaxsd Vdq,Wdq (66)
6373e: pmaxuw Vdq,Wdq (66)
6383f: pmaxud Vdq,Wdq (66)
639# 0x0f 0x38 0x4f-0xff
64040: pmulld Vdq,Wdq (66)
64141: phminposuw Vdq,Wdq (66)
57180: INVEPT Gd/q,Mdq (66) 64280: INVEPT Gd/q,Mdq (66)
57281: INVPID Gd/q,Mdq (66) 64381: INVPID Gd/q,Mdq (66)
573f0: MOVBE Gv,Mv | CRC32 Gd,Eb (F2) 644f0: MOVBE Gv,Mv | CRC32 Gd,Eb (F2)
@@ -576,7 +647,29 @@ EndTable
576 647
577Table: 3-byte opcode 2 648Table: 3-byte opcode 2
578Referrer: 3-byte escape 2 649Referrer: 3-byte escape 2
579# all opcode is for SSE 650# 0x0f 0x3a 0x00-0xff
65108: roundps Vdq,Wdq,Ib (66)
65209: roundpd Vdq,Wdq,Ib (66)
6530a: roundss Vss,Wss,Ib (66)
6540b: roundsd Vsd,Wsd,Ib (66)
6550c: blendps Vdq,Wdq,Ib (66)
6560d: blendpd Vdq,Wdq,Ib (66)
6570e: pblendw Vdq,Wdq,Ib (66)
6580f: palignr Pq,Qq,Ib | palignr Vdq,Wdq,Ib (66)
65914: pextrb Rd/Mb,Vdq,Ib (66)
66015: pextrw Rd/Mw,Vdq,Ib (66)
66116: pextrd/pextrq Ed/q,Vdq,Ib (66)
66217: extractps Ed,Vdq,Ib (66)
66320: pinsrb Vdq,Rd/q/Mb,Ib (66)
66421: insertps Vdq,Udq/Md,Ib (66)
66522: pinsrd/pinsrq Vdq,Ed/q,Ib (66)
66640: dpps Vdq,Wdq,Ib (66)
66741: dppd Vdq,Wdq,Ib (66)
66842: mpsadbw Vdq,Wdq,Ib (66)
66960: pcmpestrm Vdq,Wdq,Ib (66)
67061: pcmpestri Vdq,Wdq,Ib (66)
67162: pcmpistrm Vdq,Wdq,Ib (66)
67263: pcmpistri Vdq,Wdq,Ib (66)
580EndTable 673EndTable
581 674
582GrpTable: Grp1 675GrpTable: Grp1