/* { dg-do compile } */ /* { dg-options "-msse4.1 -O2" } */ /* { dg-final { scan-assembler-times {(?n)pmovzxbq[ \t]+} "4" } } */ /* { dg-final { scan-assembler-not {(?n)pinsrw[ \t]+} } } */ #include __m128i foo (void *p){ return _mm_cvtepu8_epi64(_mm_loadu_si16(p)); } __m128i foo2 (short a){ return _mm_cvtepu8_epi64(_mm_set_epi16(0, 0, 0, 0, 0, 0, 0, a)); } __m128i foo3 (void *p){ return _mm_cvtepu8_epi64((__m128i)__extension__(__m128h) {*(_Float16 const*)p, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); } __m128i foo4 (_Float16 a){ return _mm_cvtepu8_epi64((__m128i)__extension__(__m128h) {a, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); }