https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114750
Bug ID: 114750 Summary: converting load/store of simd fails compilation on ARM Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: mkretz at gcc dot gnu.org Target Milestone: --- https://compiler-explorer.com/z/jh5YeqzEe Testcase: #include <experimental/simd> namespace stdx = std::experimental; void f(long double* ptr, double* dptr, float* fptr) { stdx::simd<int> x; //stdx::fixed_size_simd<int, 3> x; x.copy_from(ptr, stdx::element_aligned); x.copy_to(dptr, stdx::element_aligned); x.copy_from(dptr, stdx::element_aligned); x.copy_to(fptr, stdx::element_aligned); x.copy_from(fptr, stdx::element_aligned); x.copy_to(ptr, stdx::element_aligned); } This fails when using 'std::experimental::parallelism_v2::__intrinsic_type<long double, 16, void>' in the load and store implementations. The same failure can occur for '__intrinsic_type<double, 16, void>' and '__intrinsic_type<float, 16, void>'. A condition, checking whether the type is actually vectorizable for the target is missing.