Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

K6-2+ and 6x86MX missing instructions #39

Open
Torinde opened this issue Jun 1, 2022 · 4 comments
Open

K6-2+ and 6x86MX missing instructions #39

Torinde opened this issue Jun 1, 2022 · 4 comments
Labels
bug Something isn't working

Comments

@Torinde
Copy link

Torinde commented Jun 1, 2022

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

@Torinde Torinde added the bug Something isn't working label Jun 1, 2022
@fuel-pcbox
Copy link

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
Copy link
Author

Torinde commented Jun 6, 2022

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 ?

  • x86c2.zip B 18627 960923 Enables advanced features of Cyrix Cx5x86 CPU
  • 686fast4.zip B 18769 981114 686FAST: Speedup for Cyrix/IBM/TI CPU
  • 6x86ctl1.zip B 13765 970103 Change/view the Cyrix 6x86 CPU options
  • 6xopt080.zip B 143858 981222 6x86opt v0.80: Optimizes the 6x86 (M1/M2) CPU
  • cyrix100.zip B 122481 940406 Cyrix 486DLC/486DR/486SLC CPU config. utility

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
Copy link
Author

Torinde commented Nov 27, 2022

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
Copy link
Author

Torinde commented Dec 1, 2022

K6-2+ instructions apparently were added by fc53fce

Remains:

  • 6x86MX: Cyrix core EMMI

..and if support is added for appropriate platforms:

  • Geode GXm/GXLV/GX1 / MediaGXm: Cyrix core EMMI
  • Geode GX2/GX/LX: Cyrix core 3DNow! Pro PFRSQRTV, PFRCPV
  • Geode NX: Athlon XP core

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants