https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107563
Bug ID: 107563 Summary: __builtin_shufflevector fails to use pshufb and pshufd instructions under default x86_64 compilation toggle which is the sse2 one Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: unlvsur at live dot com Target Milestone: --- #if defined(__SSE2__) using temp_vec_type [[__gnu__::__vector_size__ (16)]] = char; void foo(temp_vec_type& v) noexcept { v=__builtin_shufflevector(v,v,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0); } #endif g++ -S pq.cc -Ofast proves sse2 is enabled by default, but it does not call https://www.felixcloutier.com/x86/pshufb neither https://www.felixcloutier.com/x86/pshufd while g++ -S pq.cc -Ofast -msse4.2 will generate them correctly. Which is buggy