This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Cyrix EMMI patch
- From: Petr Sebor <petr at scssoft dot com>
- To: binutils at sources dot redhat dot com
- Date: Tue, 10 Dec 2002 13:15:01 +0100
- Subject: Cyrix EMMI patch
- Organization: SCS Software
Hello,
I'd like to contribute a support for the Cyrix MII extended multimedia
instructions
to the binutils package. Please let me know what you think...
-Petr
diff -ur binutils-2.13.90.0.14~/gas/config/tc-i386.c binutils-2.13.90.0.14/gas/config/tc-i386.c
--- binutils-2.13.90.0.14~/gas/config/tc-i386.c Sat Oct 12 18:02:23 2002
+++ binutils-2.13.90.0.14/gas/config/tc-i386.c Tue Dec 10 13:03:21 2002
@@ -411,6 +411,7 @@
{"k6", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuK6|CpuMMX|Cpu3dnow },
{"athlon", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuAthlon|CpuMMX|Cpu3dnow },
{"sledgehammer",Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuAthlon|CpuSledgehammer|CpuMMX|Cpu3dnow|CpuSSE|CpuSSE2 },
+ {"cyrix", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuMMX|CpuCxMMX},
{NULL, 0 }
};
diff -ur binutils-2.13.90.0.14~/gas/config/tc-i386.h binutils-2.13.90.0.14/gas/config/tc-i386.h
--- binutils-2.13.90.0.14~/gas/config/tc-i386.h Tue Dec 10 13:07:41 2002
+++ binutils-2.13.90.0.14/gas/config/tc-i386.h Tue Dec 10 13:08:28 2002
@@ -243,13 +243,14 @@
#define CpuSSE 0x1000 /* Streaming SIMD extensions required */
#define CpuSSE2 0x2000 /* Streaming SIMD extensions 2 required */
#define Cpu3dnow 0x4000 /* 3dnow! support required */
+#define CpuEMMI 0x8000 /* Cyrix EMMI support required */
/* These flags are set by gas depending on the flag_code. */
#define Cpu64 0x4000000 /* 64bit support required */
#define CpuNo64 0x8000000 /* Not supported in the 64bit mode */
/* The default value for unknown CPUs - enable all features to avoid problems. */
-#define CpuUnknownFlags (Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuSledgehammer|CpuMMX|CpuSSE|CpuSSE2|Cpu3dnow|CpuK6|CpuAthlon)
+#define CpuUnknownFlags (Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuSledgehammer|CpuMMX|CpuSSE|CpuSSE2|Cpu3dnow|CpuEMMI|CpuK6|CpuAthlon)
/* the bits in opcode_modifier are used to generate the final opcode from
the base_opcode. These bits also are used to detect alternate forms of
diff -ur binutils-2.13.90.0.14~/include/opcode/i386.h binutils-2.13.90.0.14/include/opcode/i386.h
--- binutils-2.13.90.0.14~/include/opcode/i386.h Wed Jul 17 20:38:29 2002
+++ binutils-2.13.90.0.14/include/opcode/i386.h Tue Dec 10 13:09:14 2002
@@ -1337,6 +1337,21 @@
{"sysret", 0, 0x0f07, X, CpuK6, lq_Suf|DefaultSize, { 0, 0, 0} },
{"swapgs", 0, 0x0f01, 0xf8, Cpu64, NoSuf|ImmExt, { 0, 0, 0} },
+/* Cyrix MII Extended MMX */
+{"paddsiw", 2, 0x0f51, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paveb", 2, 0x0f50, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pdistib", 2, 0x0f54, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmachriw", 2, 0x0f5e, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmagw", 2, 0x0f52, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmagw", 2, 0x0f52, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmulhrw", 2, 0x0f59, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmulhriw", 2, 0x0f5d, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmvzb", 2, 0x0f58, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmvnzb", 2, 0x0f5a, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmvlzb", 2, 0x0f5b, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmvgezb", 2, 0x0f5c, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubsiw", 2, 0x0f55, X, CpuEMMI, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+
/* sentinel */
{NULL, 0, 0, 0, 0, 0, { 0, 0, 0} }
};