I was kinda surprised as well that you couldn’t annotate the function or something. But then again, an attribute like “please don’t use this instruction” sounds like something that’s pretty hard to integrate in the code generation. What kind of flag would you use? I don’t think you want to apply that flag to everything, just to that particular function.
I would expect it to apply to everything. You don’t want to hit the issues in the first place.
It seems like a weighing of (safe) CPU support vs better generated instructions. If you don’t care about a CPU generation, maybe because it’s old enough, or your target environment is restricted/controlled, you don’t enable it. If it’s still out there and you want to or have to support it, you enable it.
I would imagine a “CPU-Workaround-<Manufacturer>-<Generation>” or something, and if you enable it, it completely evades the instruction constellations that cause the issues and uses alternatives instead.
Maybe it could have “evade completely” (same code runs on every CPU) and “generate cpu-checked workaround code branches” (faulty CPUs execute a different branch) as alternatives.
I was kinda surprised as well that you couldn’t annotate the function or something. But then again, an attribute like “please don’t use this instruction” sounds like something that’s pretty hard to integrate in the code generation. What kind of flag would you use? I don’t think you want to apply that flag to everything, just to that particular function.
I would expect it to apply to everything. You don’t want to hit the issues in the first place.
It seems like a weighing of (safe) CPU support vs better generated instructions. If you don’t care about a CPU generation, maybe because it’s old enough, or your target environment is restricted/controlled, you don’t enable it. If it’s still out there and you want to or have to support it, you enable it.
I would imagine a “CPU-Workaround-<Manufacturer>-<Generation>” or something, and if you enable it, it completely evades the instruction constellations that cause the issues and uses alternatives instead.
Maybe it could have “evade completely” (same code runs on every CPU) and “generate cpu-checked workaround code branches” (faulty CPUs execute a different branch) as alternatives.