https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88698
Bug ID: 88698 Summary: Relax generic vector conversions Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: husseydevin at gmail dot com Target Milestone: --- GCC is far too strict about vector conversions. Currently, mixing generic vector extensions and platform-specific intrinsics almost always requires either a cast or -flax-vector-extensions, which is annoying and breaks a lot of things Clang happily accepts. Here is my proposal: * x86's __mNi should implicitly convert between any N-bit vector. This matches the void pointer-like behavior of SSE's vectors. * Any vector with equivalent lane types and number of lanes should convert without an issue. For example, uint32_t vector_size(16) and NEON's uint32x4_t have no reason not to be compatible. * Signed <-> unsigned should act like other implicit signed <-> unsigned conversions, -Wextra in C and warning in C++. * Implicit conversions between different vectors of the same size should emit an error.