PCBox / PCBox

Emulator of PC-based machines based on 86Box.
GNU General Public License v2.0
94 stars 14 forks source link

K6-2+ and 6x86MX missing instructions #39

Open Torinde opened 2 years ago

Torinde commented 2 years ago

K6-2+, K6-III+ and 6x86MX are listed cpu.h, but I don't see the extra instructions added by those CPUs in the code

K6-2+ : PF2IW, PFNACC, PFPNACC, PI2FW, PSWAPD (relevant also for the future Athlon emulation) 6x86MX : PAVEB, PADDSIW, PMAGW, PDISTIB, PSUBSIW, PMVZB, PMVNZB, PMVLZB, PMVGEZB, PMULHRIW, PMACHRIW; FTSTP, FRINT2, FRICHOP, FRINEAR

Of course, I couldn't find also the 3DNow! Pro from Geode GX/LX) : PFRSQRTV, PFRCPV - but those CPUs aren't listed, so that's as expected.

Related to joncampbell123/dosbox-x#3217, sarah-walker-pcem/pcem#85

fuel-pcbox commented 2 years ago

Do you know of any software that actually uses said instructions? I might end up removing 6x86MX support from the code, but K6-2+ is rather important. I could go ahead and implement the K6-2+ instructions, but I have no idea how to test them.

Torinde commented 2 years ago

List of games and software in 3DNow! mode Some versions of Bochs utilize 3DNow (and some emulate it)

Not sure which software uses 3DNow!+ vs regular 3DNow!...

Cyrix EMMI - info 1,3,4 and maybe software: 6x86ctl1.zip, 6xopt080.zip From here - in the same folder are other Cyrix CPU tools, maybe some of all those at least checks for MII/M2/MX ?

For example, the 6x86opt has: 6X86OPT.EXE 45296 bytes 6x86opt, the optimizer 6X86OPT.TXT 32317 bytes This textfile 6X86SET.EXE 102656 bytes 6x86set, the setup utility for M1 6x86SET2.EXE 107136 bytes 6x86set for the 6x86MX == M2 6X86SET.TXT 5819 bytes Info on 6x86set CPUIDEN.EXE 10528 bytes CPUID instruction enabler/disabler/toggler

One of those has a switch " -MMXPLUS(-M) ; Set the MMXPLUS bit (CCR7:0). M2 only. This bit enables the Cyrix Extended MMX instructions."

Ideally, I would assume there must be at least some Cyrix demo/benchmark utilized when promoting the product...

There is also a CPU flag in Linux for those: cxmmx Cyrix MMX extensions

Torinde commented 1 year ago

Cyrix EMMI is supported also by later MediaGXm and Geode GX1 well into the 2000s, so maybe some embedded or other application used those.

Torinde commented 1 year ago

K6-2+ instructions apparently were added by https://github.com/PCBox/PCBox/commit/fc53fceda729ce8ec9c007292d54e3e75c3cfc07

Remains:

..and if support is added for appropriate platforms: