https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57202

--- Comment #10 from Thiago Macieira <thiago at kde dot org> ---
> But that's what this bug report is for - to make the intrinsicsalways
available.

I never asked for them to be available in undecorated functions. Yes, that's
how both the Intel and Microsoft compilers behave, but I actually find that GCC
and Clang's behaviour makes sense too. This allows a clear demarcation of where
different instructions may be used by the compiler, so the CPU check code can
be sure of no leakage. What's more, it allows the compiler to use other
instructions that you didn't specifically use.

It's not perfect, but neither is unrestricted use. I've seen code generated by
either ICC or MSVC (don't remember which) when using an AVX2 instruction like
VPMOVXZBW be surrounded by non-VEX-encoded SSE2 instructions because we never
told the compiler it was ok to to use VEX.

Reply via email to