https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84508
--- Comment #8 from Jeffrey Walton <noloader at gmail dot com> --- (In reply to Jeffrey Walton from comment #0) > According to Intel > (https://software.intel.com/sites/landingpage/IntrinsicsGuide), there are no > alignment requirements for _mm_load_sd, _mm_store_sd and _mm_loaddup_pd. For > example, from _mm_load_sd: > > Description > > Load a double-precision (64-bit) floating-point element from > memory into the lower of dst, and zero the upper element. > mem_addr does not need to be aligned on any particular boundary. The opening sentence was incorrect. The *_sd functions do not have alignment requirements. Searching through the Intrinsic Guide reveals the following functions do not have the alignment requirements: * _mm_load_sd * _mm_store_sd * _mm_load_ss * _mm_loadh_pi * _mm_loadl_pd * _mm_loadl_pi * _mm_loadu_pd * _mm_loadu_ps * _mm_loadu_si128 * _mm_store_sd * _mm_store_ss * _mm_storeu_pd * _mm_storeu_ps * _mm_storeu_si128 All the functions listed above specifically state "mem_addr does not need to be aligned on any particular boundary." The remaining functions have natural alignment or 16-byte alignment requirements.