]> sourceware.org Git - newlib-cygwin.git/commitdiff
Add AMD athlon support to x86 assembler and disassembler.
authorAlan Modra <modra@gmail.com>
Sat, 21 Aug 1999 12:40:35 +0000 (12:40 +0000)
committerAlan Modra <modra@gmail.com>
Sat, 21 Aug 1999 12:40:35 +0000 (12:40 +0000)
include/opcode/ChangeLog
include/opcode/i386.h

index 41c3eead68bb71ffa9f20b85f289feff98672232..40c31891ff3ea59c63c50da25474709491db1b76 100644 (file)
@@ -1,3 +1,9 @@
+1999-08-21  Alan Modra  <alan@spri.levels.unisa.edu.au>
+
+       * i386.h: Add AMD athlon instructions, pfnacc, pfpnacc, pswapd.
+       Document pf2iw and pi2fw as athlon insns.  Remove pswapw.
+       Alphabetically sort PIII insns.
+
 Wed Aug 18 18:14:40 1999  Doug Evans  <devans@canuck.cygnus.com>
 
        * cgen.h (CGEN_INSN_MACH_HAS_P): New macro.
index 9d73ebde79a6dfdc75b6d94a3a8d4a846207f1d7..3df27f212df034836651746c201ebee0c76a8944 100644 (file)
@@ -917,36 +917,35 @@ static const template i386_optab[] = {
 {"addss",     2, 0xf30f58,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
 {"andnps",    2, 0x0f55,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
 {"andps",     2, 0x0f54,    X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpps",     3, 0x0fc2,    X, FP|Modrm,       { Imm8, RegXMM|LLongMem, RegXMM } },
-{"cmpss",     3, 0xf30fc2,  X, FP|Modrm,       { Imm8, RegXMM|WordMem, RegXMM } },
 {"cmpeqps",   2, 0x0fc2,    0, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
 {"cmpeqss",   2, 0xf30fc2,  0, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpltps",   2, 0x0fc2,    1, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpltss",   2, 0xf30fc2,  1, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
 {"cmpleps",   2, 0x0fc2,    2, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
 {"cmpless",   2, 0xf30fc2,  2, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpunordps",2, 0x0fc2,    3, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpunordss",2, 0xf30fc2,  3, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpltps",   2, 0x0fc2,    1, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpltss",   2, 0xf30fc2,  1, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
 {"cmpneqps",  2, 0x0fc2,    4, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
 {"cmpneqss",  2, 0xf30fc2,  4, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpnltps",  2, 0x0fc2,    5, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpnltss",  2, 0xf30fc2,  5, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
 {"cmpnleps",  2, 0x0fc2,    6, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
 {"cmpnless",  2, 0xf30fc2,  6, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpnltps",  2, 0x0fc2,    5, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnltss",  2, 0xf30fc2,  5, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
 {"cmpordps",  2, 0x0fc2,    7, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
 {"cmpordss",  2, 0xf30fc2,  7, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpunordps",2, 0x0fc2,    3, FP|Modrm|ImmExt,        { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpunordss",2, 0xf30fc2,  3, FP|Modrm|ImmExt,        { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpps",     3, 0x0fc2,    X, FP|Modrm,       { Imm8, RegXMM|LLongMem, RegXMM } },
+{"cmpss",     3, 0xf30fc2,  X, FP|Modrm,       { Imm8, RegXMM|WordMem, RegXMM } },
 {"comiss",    2, 0x0f2f,    X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
 {"cvtpi2ps",  2, 0x0f2a,    X, FP|Modrm,       { RegMMX|LLongMem, RegXMM, 0 } },
-{"cvtsi2ss",  2, 0xf30f2a,  X, FP|Modrm,       { Reg32|WordMem, RegXMM, 0 } },
 {"cvtps2pi",  2, 0x0f2d,    X, FP|Modrm,       { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvtsi2ss",  2, 0xf30f2a,  X, FP|Modrm,       { Reg32|WordMem, RegXMM, 0 } },
 {"cvtss2si",  2, 0xf30f2d,  X, FP|Modrm,       { RegXMM|WordMem, Reg32, 0 } },
 {"cvttps2pi", 2, 0x0f2c,    X, FP|Modrm,       { RegXMM|LLongMem, RegMMX, 0 } },
 {"cvttss2si", 2, 0xf30f2c,  X, FP|Modrm,       { RegXMM|WordMem, Reg32, 0 } },
 {"divps",     2, 0x0f5e,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
 {"divss",     2, 0xf30f5e,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
 {"ldmxcsr",   1, 0x0fae,    2, FP|Modrm,       { WordMem, 0, 0 } },
-{"stmxcsr",   1, 0x0fae,    3, FP|Modrm,       { WordMem, 0, 0 } },
-{"sfence",    0, 0x0faef8,  X, FP,             { 0, 0, 0 } },
+{"maskmovq",  2, 0x0ff7,    X, FP|Modrm,       { RegMMX|InvMem, RegMMX, 0 } },
 {"maxps",     2, 0x0f5f,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
 {"maxss",     2, 0xf30f5f,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
 {"minps",     2, 0x0f5d,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
@@ -960,26 +959,15 @@ static const template i386_optab[] = {
 {"movlps",    2, 0x0f12,    X, FP|Modrm,       { LLongMem, RegXMM, 0 } },
 {"movlps",    2, 0x0f13,    X, FP|Modrm,       { RegXMM, LLongMem, 0 } },
 {"movmskps",  2, 0x0f50,    X, FP|Modrm,       { RegXMM|InvMem, Reg32, 0 } },
-{"movups",    2, 0x0f10,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"movups",    2, 0x0f11,    X, FP|Modrm,       { RegXMM, RegXMM|LLongMem, 0 } },
+{"movntps",   2, 0x0f2b,    X, FP|Modrm,       { RegXMM, LLongMem, 0 } },
+{"movntq",    2, 0x0fe7,    X, FP|Modrm,       { RegMMX, LLongMem, 0 } },
 {"movss",     2, 0xf30f10,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
 {"movss",     2, 0xf30f11,  X, FP|Modrm,       { RegXMM, RegXMM|WordMem, 0 } },
+{"movups",    2, 0x0f10,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"movups",    2, 0x0f11,    X, FP|Modrm,       { RegXMM, RegXMM|LLongMem, 0 } },
 {"mulps",     2, 0x0f59,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
 {"mulss",     2, 0xf30f59,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
 {"orps",      2, 0x0f56,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"rcpps",     2, 0x0f53,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"rcpss",     2, 0xf30f53,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
-{"rsqrtps",   2, 0x0f52,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"rsqrtss",   2, 0xf30f52,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
-{"shufps",    3, 0x0fc6,    X, FP|Modrm,       { Imm8, RegXMM|LLongMem, RegXMM } },
-{"sqrtps",    2, 0x0f51,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"sqrtss",    2, 0xf30f51,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
-{"subps",     2, 0x0f5c,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"subss",     2, 0xf30f5c,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
-{"ucomiss",   2, 0x0f2e,    X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
-{"unpckhps",  2, 0x0f15,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"unpcklps",  2, 0x0f14,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
-{"xorps",     2, 0x0f57,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
 {"pavgb",     2, 0x0fe0,    X, FP|Modrm,       { RegMMX|LLongMem, RegMMX, 0 } },
 {"pavgw",     2, 0x0fe3,    X, FP|Modrm,       { RegMMX|LLongMem, RegMMX, 0 } },
 {"pextrw",    3, 0x0fc5,    X, FP|Modrm,       { Imm8, RegMMX, Reg32|InvMem } },
@@ -990,15 +978,27 @@ static const template i386_optab[] = {
 {"pminub",    2, 0x0fda,    X, FP|Modrm,       { RegMMX|LLongMem, RegMMX, 0 } },
 {"pmovmskb",  2, 0x0fd7,    X, FP|Modrm,       { RegMMX, Reg32|InvMem, 0 } },
 {"pmulhuw",   2, 0x0fe4,    X, FP|Modrm,       { RegMMX|LLongMem, RegMMX, 0 } },
-{"psadbw",    2, 0x0ff6,    X, FP|Modrm,       { RegMMX|LLongMem, RegMMX, 0 } },
-{"pshufw",    3, 0x0f70,    X, FP|Modrm,       { Imm8, RegMMX|LLongMem, RegMMX } },
-{"maskmovq",  2, 0x0ff7,    X, FP|Modrm,       { RegMMX|InvMem, RegMMX, 0 } },
-{"movntps",   2, 0x0f2b,    X, FP|Modrm,       { RegXMM, LLongMem, 0 } },
-{"movntq",    2, 0x0fe7,    X, FP|Modrm,       { RegMMX, LLongMem, 0 } },
 {"prefetchnta", 1, 0x0f18,  0, FP|Modrm,       { LLongMem, 0, 0 } },
 {"prefetcht0",  1, 0x0f18,  1, FP|Modrm,       { LLongMem, 0, 0 } },
 {"prefetcht1",  1, 0x0f18,  2, FP|Modrm,       { LLongMem, 0, 0 } },
 {"prefetcht2",  1, 0x0f18,  3, FP|Modrm,       { LLongMem, 0, 0 } },
+{"psadbw",    2, 0x0ff6,    X, FP|Modrm,       { RegMMX|LLongMem, RegMMX, 0 } },
+{"pshufw",    3, 0x0f70,    X, FP|Modrm,       { Imm8, RegMMX|LLongMem, RegMMX } },
+{"rcpps",     2, 0x0f53,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"rcpss",     2, 0xf30f53,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
+{"rsqrtps",   2, 0x0f52,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"rsqrtss",   2, 0xf30f52,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
+{"sfence",    0, 0x0faef8,  X, FP,             { 0, 0, 0 } },
+{"shufps",    3, 0x0fc6,    X, FP|Modrm,       { Imm8, RegXMM|LLongMem, RegXMM } },
+{"sqrtps",    2, 0x0f51,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"sqrtss",    2, 0xf30f51,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
+{"stmxcsr",   1, 0x0fae,    3, FP|Modrm,       { WordMem, 0, 0 } },
+{"subps",     2, 0x0f5c,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"subss",     2, 0xf30f5c,  X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
+{"ucomiss",   2, 0x0f2e,    X, FP|Modrm,       { RegXMM|WordMem, RegXMM, 0 } },
+{"unpckhps",  2, 0x0f15,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"unpcklps",  2, 0x0f14,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
+{"xorps",     2, 0x0f57,    X, FP|Modrm,       { RegXMM|LLongMem, RegXMM, 0 } },
 
 /* AMD 3DNow! instructions */
 
@@ -1007,7 +1007,7 @@ static const template i386_optab[] = {
 {"femms",    0, 0x0f0e,           X, FP,               { 0, 0, 0 } },
 {"pavgusb",  2, 0x0f0f, 0xbf, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pf2id",    2, 0x0f0f, 0x1d, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pf2iw",    2, 0x0f0f, 0x1c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Unofficial! See http://www.x86.org/articles/3dnow/amd_3dnow.html */
+{"pf2iw",    2, 0x0f0f, 0x1c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
 {"pfacc",    2, 0x0f0f, 0xae, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfadd",    2, 0x0f0f, 0x9e, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfcmpeq",  2, 0x0f0f, 0xb0, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
@@ -1016,6 +1016,8 @@ static const template i386_optab[] = {
 {"pfmax",    2, 0x0f0f, 0xa4, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfmin",    2, 0x0f0f, 0x94, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfmul",    2, 0x0f0f, 0xb4, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfnacc",   2, 0x0f0f, 0x8a, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
+{"pfpnacc",  2, 0x0f0f, 0x8e, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
 {"pfrcp",    2, 0x0f0f, 0x96, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfrcpit1", 2, 0x0f0f, 0xa6, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfrcpit2", 2, 0x0f0f, 0xb6, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
@@ -1024,9 +1026,9 @@ static const template i386_optab[] = {
 {"pfsub",    2, 0x0f0f, 0x9a, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pfsubr",   2, 0x0f0f, 0xaa, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
 {"pi2fd",    2, 0x0f0f, 0x0d, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pi2fw",    2, 0x0f0f, 0x0c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Unofficial! */
+{"pi2fw",    2, 0x0f0f, 0x0c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
 {"pmulhrw",  2, 0x0f0f, 0xb7, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pswapw",   2, 0x0f0f, 0xbb, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Unofficial! */
+{"pswapd",   2, 0x0f0f, 0xbb, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
 
 {NULL, 0, 0, 0, 0, { 0, 0, 0} }        /* sentinel */
 };
This page took 0.038539 seconds and 5 git commands to generate.