I sent my synth to a friend for testing and he is not able to even start it (Win and Linux).
On Linux (standalone application) he simply get the output
Illegal Instruction (core dumped)
On Windows (VST2 plugin) hosts will not see the plugin at all.
I did some research and found that at this is probably due to some optimization using CPU instructiions which might be not available on older CPU models. I looked into it and the release configs of my Linux release build are -O3, on Windows there seems to be no optimization (/Od).
Thinking about it, the Windows and Linux problems might be separate issues.
However at least the Linux build seems to be incorporating exotic CPU instructions.
Changing the optimization level won’t help here, but changing the used vector extensions.
Try compiling with SSE2 or even lower. On MSVS you might find that setting in Project settings -> code generation. However I am not totally sure, as I am on mac
Depends on how much the optimizer could make use of the advanced instruction set, which fully depends on the code itself. In a plug-in we made use of SIMDRegisters to increase performance of over 800 IIR filters, which helps a lot as it brings it down by a factor of 4 (SSE) or even 16 (AVX).
Normally, the compilation will target the base for the architecture in question (so, say, x64), and that doesn’t include AVX support since that isn’t required (it needs only SSE and SSE2). If however you’ve specified -march=native, then you’ll get a binary which takes advantage of the instructions available on your processor, and if it supports stuff like AVX2, the code generator could include these instructions, causing issues on earlier processors.
One of the reasons to use fancy libraries is that these often have runtime checks for processor capabilities, and are built with code paths optimised for different processor features, so enabling AVX2 for example, if it’s supported, but falling back to AVX, or SSE3 etc depending on the processor.
So, have a look to see if you’ve specified -march=native and if so, that’s the culprit
Whew that doesn’t sound right to me either…
I mean most developers will have rather fancy build machines I guess.
This should be an option really in the Projucer, so people don’t run into the same problem I think.