delorie.com/archives/browse.cgi   search  
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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019