diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-05-05 21:16:46 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-05-05 21:16:46 +0000 |
commit | 3abaf9306257b38220c4546be265c6c086e83063 (patch) | |
tree | 29679d5efcb6ee175389bde3b1a56fa808281f57 /include/opcode | |
parent | 41b96d55e8e973fc7eebc1d1b94b9e0f91213d7e (diff) | |
download | gdb-3abaf9306257b38220c4546be265c6c086e83063.zip gdb-3abaf9306257b38220c4546be265c6c086e83063.tar.gz gdb-3abaf9306257b38220c4546be265c6c086e83063.tar.bz2 |
* i386.h: Add MMX instructions.
Diffstat (limited to 'include/opcode')
-rw-r--r-- | include/opcode/ChangeLog | 4 | ||||
-rw-r--r-- | include/opcode/i386.h | 65 |
2 files changed, 68 insertions, 1 deletions
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index accc90a..1172bf2 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,7 @@ +Mon May 5 17:16:21 1997 Ian Lance Taylor <ian@cygnus.com> + + * i386.h: Add MMX instructions. + Mon May 5 12:45:19 1997 H.J. Lu <hjl@gnu.ai.mit.edu> * i386.h: Remove W modifier from conditional move instructions. diff --git a/include/opcode/i386.h b/include/opcode/i386.h index 1ee5a03..e4b7579 100644 --- a/include/opcode/i386.h +++ b/include/opcode/i386.h @@ -808,6 +808,66 @@ static const template i386_optab[] = { {"fcomip", 2, 0xdff0, _, ShortForm, { FloatReg, FloatAcc, 0} }, {"fucomip",2, 0xdfe8, _, ShortForm, { FloatReg, FloatAcc, 0} }, +/* MMX instructions. */ + +{"emms", 0, 0x0f77, _, NoModrm, { 0, 0, 0 } }, +{"movd", 2, 0x0f6e, _, Modrm, { WordReg|WordMem, RegMMX, 0 } }, +{"movd", 2, 0x0f7e, _, Modrm, { RegMMX, WordReg|WordMem, 0 } }, +{"movq", 2, 0x0f6f, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"movq", 2, 0x0f7f, _, Modrm, { RegMMX, RegMMX|WordMem, 0 } }, +{"packssdw", 2, 0x0f6b, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"packsswb", 2, 0x0f63, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"packuswb", 2, 0x0f67, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddb", 2, 0x0ffc, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddw", 2, 0x0ffd, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddd", 2, 0x0ffe, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddsb", 2, 0x0fec, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddsw", 2, 0x0fed, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddusb", 2, 0x0fdc, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"paddusw", 2, 0x0fdd, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pand", 2, 0x0fda, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pandn", 2, 0x0fdf, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pcmpeqb", 2, 0x0f74, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pcmpeqw", 2, 0x0f75, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pcmpeqd", 2, 0x0f76, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pcmpgtb", 2, 0x0f64, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pcmpgtw", 2, 0x0f65, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pcmpgtd", 2, 0x0f66, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pmaddwd", 2, 0x0ff5, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pmulhw", 2, 0x0fe5, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pmullw", 2, 0x0fd5, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"por", 2, 0x0feb, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psllw", 2, 0x0ff1, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psllw", 2, 0x0f71, 6, Modrm, { Imm8, RegMMX, 0 } }, +{"pslld", 2, 0x0ff2, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pslld", 2, 0x0f72, 6, Modrm, { Imm8, RegMMX, 0 } }, +{"psllq", 2, 0x0ff3, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psllq", 2, 0x0f73, 6, Modrm, { Imm8, RegMMX, 0 } }, +{"psraw", 2, 0x0fe1, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psraw", 2, 0x0f71, 4, Modrm, { Imm8, RegMMX, 0 } }, +{"psrad", 2, 0x0fe2, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psrad", 2, 0x0f72, 4, Modrm, { Imm8, RegMMX, 0 } }, +{"psrlw", 2, 0x0fd1, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psrlw", 2, 0x0f71, 2, Modrm, { Imm8, RegMMX, 0 } }, +{"psrld", 2, 0x0fd2, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psrld", 2, 0x0f72, 2, Modrm, { Imm8, RegMMX, 0 } }, +{"psrlq", 2, 0x0fd3, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psrlq", 2, 0x0f73, 2, Modrm, { Imm8, RegMMX, 0 } }, +{"psubb", 2, 0x0ff8, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psubw", 2, 0x0ff9, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psubd", 2, 0x0ffa, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psubsb", 2, 0x0fe8, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psubsw", 2, 0x0fe9, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psubusb", 2, 0x0fd8, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"psubusw", 2, 0x0fd9, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"punpckhbw", 2, 0x0f68, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"punpckhwd", 2, 0x0f69, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"punpckhdq", 2, 0x0f6a, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"punpcklbw", 2, 0x0f60, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"punpcklwd", 2, 0x0f61, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"punpckldq", 2, 0x0f62, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, +{"pxor", 2, 0x0fef, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } }, + {"", 0, 0, 0, 0, { 0, 0, 0} } /* sentinel */ }; #undef _ @@ -847,7 +907,10 @@ static const reg_entry i386_regtab[] = { {"st", FloatReg|FloatAcc, 0}, {"st(1)", FloatReg, 1}, {"st(2)", FloatReg, 2}, {"st(3)", FloatReg, 3}, {"st(4)", FloatReg, 4}, {"st(5)", FloatReg, 5}, - {"st(6)", FloatReg, 6}, {"st(7)", FloatReg, 7} + {"st(6)", FloatReg, 6}, {"st(7)", FloatReg, 7}, + {"mm0", RegMMX, 0}, {"mm1", RegMMX, 1}, {"mm2", RegMMX, 2}, + {"mm3", RegMMX, 3}, {"mm4", RegMMX, 4}, {"mm5", RegMMX, 5}, + {"mm6", RegMMX, 6}, {"mm7", RegMMX, 7} }; #define MAX_REG_NAME_SIZE 8 /* for parsing register names from input */ |