https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103727
Bug ID: 103727 Summary: [aarch64] Too strict built-in decl check Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: linkw at gcc dot gnu.org Target Milestone: --- As PR102347 discussed and tested, aarch64 also does too strict built-in function decl check. Here is one test case copied from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102347#c3 Testcase: int64x2_t v1 = {100, 200}; int32x4_t v2 = {11, 22, 33, 44}; #pragma GCC target ("+simd") int main() { uint64x2_t vres = (uint64x2_t) __builtin_aarch64_usubw2v4si (v1, v2); printf("vres: %lld %lld\n", vres[0], vres[1]); return 0; } -march=armv8-a+nosimd // PASS -march=armv8-a+nosimd -flto // FAIL Andrew had more insightful comments (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102347#c5) "Right for aarch64, most people won't use +simd/+nosimd combo (though it might show up inside the kernel) but they might use +sve/+nosve ... So the aarch64 bug should be fixed"