Mail Archives: djgpp/1999/04/14/14:06:45
Message-ID: | <3714D43E.30777234@vortex.ufrgs.br>
|
Date: | Wed, 14 Apr 1999 14:45:34 -0300
|
From: | "Luciano R. M. Silva" <lrms AT vortex DOT ufrgs DOT br>
|
X-Mailer: | Mozilla 4.51 [en] (Win95; I)
|
X-Accept-Language: | en
|
MIME-Version: | 1.0
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | 3DNow! with DJGGP/GAS
|
Lines: | 45
|
NNTP-Posting-Host: | irc.ez-poa.com.br
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Reply-To: | djgpp AT delorie DOT com
|
Is there any version of GAS that supports 3DNow! opcodes...
I started trying to add 3DNow! support to it but I dind't really
understood well the format of I386.h in the way I could implement 3DNow!
opcodes, which have two prefix bytes 0F0F then ModR/M byte and the real
opcode byte in the end...
That was my first guess (before a discovered that the opcode byte (after
the 0xf0f0) must be really on the end)
/* 3DNow! instructions */
{"femms", 0, 0x0f0e, _, NoModrm, { 0, 0, 0 } },
{"pavgusb", 2, 0x0f0fbf, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pf2id", 2, 0x0f0f1d, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfacc", 2, 0x0f0fae, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfadd", 2, 0x0f0f9e, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfcmpeq", 2, 0x0f0fb0, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfcmpge", 2, 0x0f0f90, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfcmpgt", 2, 0x0f0fa0, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfmax", 2, 0x0f0fa4, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfmin", 2, 0x0f0f94, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfmul", 2, 0x0f0fb4, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfrcp", 2, 0x0f0f96, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfrcpit1", 2, 0x0f0fa6, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfrcpit2", 2, 0x0f0fb6, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfrsqit1", 2, 0x0f0fa7, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfrsqrt", 2, 0x0f0f97, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfsub", 2, 0x0f0f9a, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pfsubr", 2, 0x0f0faa, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pi2fd", 2, 0x0f0f0d, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"pmulhrw", 2, 0x0f0fb7, _, Modrm, { RegMMX|WordMem, RegMMX, 0 } },
{"prefetch", 1, 0x0f0d, 0, Modrm, { Mem, 0, 0 } },
{"prefetchw", 1, 0x0f0d, 1, Modrm, { Mem, 0, 0 } },
As the new GAS from binu2.8.1 already supports MMX (and it's registers)
it's all almost done.
I can't want to make programs with DJGPP supporting 3DNow!
optimizations...
BTW even if a wrong table I couldn't even recompile GAS because of the
'sh' commands and other things I didn't understand in the makefiles.
Can anyone help me ?
Thanks
- Raw text -