https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87558

            Bug ID: 87558
           Summary: Missing _mm_storeu_si64() intrinsic
           Product: gcc
           Version: 8.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gcc at gms dot tf
  Target Milestone: ---

Minimal example:

#include <emmintrin.h>
void foo(__m128i x, unsigned char*o)
{
    _mm_storeu_si64((void*)o, x);
}

Excpected behaviour: compiles fine with gcc -march=haswell

Actual behaviour: '_mm_storeu_si64' was not declared in this scope. Also tested
with gcc 7.2 and trunk. Same issue.

FWIW, clang <= 7 also misses this intrinsic, but clang trunk has it.

GCC does include _mm_storel_epi64(), though.

The Intel Intrinsics Guide lists both as:

void _mm_storeu_si64 (void* mem_addr, __m128i a)
#include <immintrin.h>
Instruction: movq m64, xmm
CPUID Flags: SSE

void _mm_storel_epi64 (__m128i* mem_addr, __m128i a)
#include <emmintrin.h>
Instruction: movq m64, xmm
CPUID Flags: SSE2

Reply via email to