So I was messing with quake1 & DJGPP/DOSBox. So yes that means this table is largely nonsense. My larger goal was to see if a strictly softfloat could run Quake1. The answer, is no.
However I got some weird answers from messing around with the flags & fps from a timedemo of demo1
FPS 67.7 113.4 130.1 131.9 101.3 73.0 71.7 31.1 44.6 32.7
CFLAGS -O0 -m386 -m80387 -O2 -m486 -m80387 -O2 -m486 -m80387 -mhard-float -mno-soft-float -mieee-fp -mfp-ret-in-387 -O2 -m386 -m80387 -O2 -m386 -m80387 -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -O2 -m486 -O2 -O2 -msoft-float -m386 -funroll-loops -fomit-frame-pointer -fexpensive-optimizations -O2 -msoft-float -m386 -O2 -msoft-float -m486
This needs to be a table! it’s unreadable!
So surprisingly -O2 -m386 -m80387 produced the fastest code using GCC 22.214.171.124. On DOSBox so yeah that means literally nothing. Rebuilding DOSBox with no floating support code gave a weird error about the pov being out of range.
Obviously the next thing to do is run this stuff natively.. .which means GCC 126.96.36.199 for NT. Oh this is going to be fun, but utterly pointless. Or maybe not.
I re-ran the tests using VMware. There is no audio drivers involved just plain MS-DOS. The red is DOS-Box while green is VMware for the graph with FPS being the measurement. Interesting how the numbers aren’t as varied like DOSBox, however the -m386 -m80387 proved the be the worst for VMware, while the 386 soft float was so incredibly slow on DOSBox but performs great on VMware. yay?