https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85058
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- The same page also says: <quote> The following built-in function is available when -mfsgsbase is used. All of them generate the machine instruction that is part of the name. unsigned int __builtin_ia32_rdfsbase32 (void) unsigned long long __builtin_ia32_rdfsbase64 (void) unsigned int __builtin_ia32_rdgsbase32 (void) unsigned long long __builtin_ia32_rdgsbase64 (void) void _writefsbase_u32 (unsigned int) void _writefsbase_u64 (unsigned long long) void _writegsbase_u32 (unsigned int) void _writegsbase_u64 (unsigned long long) </quote> The last four are the <immintrin.h> names, not the built-ins. They should be: __builtin_ia32_wrfsbase32 __builtin_ia32_wrfsbase64 __builtin_ia32_wrgsbase32 __builtin_ia32_wrgsbase64