/*===---- avx10_2copyintrin.h - AVX10.2 Copy intrinsics -------------------=== * * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. * See https://llvm.org/LICENSE.txt for license information. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception * *===-----------------------------------------------------------------------=== */ #ifndef __IMMINTRIN_H #error \ "Never use directly; include instead." #endif // __IMMINTRIN_H #ifndef __AVX10_2COPYINTRIN_H #define __AVX10_2COPYINTRIN_H /* Define the default attributes for the functions in this file. */ #define __DEFAULT_FN_ATTRS128 \ __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ __min_vector_width__(128))) /// Constructs a 128-bit integer vector, setting the lower 32 bits to the /// lower 32 bits of the parameter \a __A; the upper bits are zeoroed. /// /// \code{.operation} /// result[31:0] := __A[31:0] /// result[MAX:32] := 0 /// \endcode /// /// \headerfile /// /// This intrinsic corresponds to the VMOVD instruction. /// /// \param __A /// A 128-bit integer vector. /// \returns A 128-bit integer vector. The lower 32 bits are copied from the /// parameter \a __A; the upper bits are zeroed. static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_move_epi32(__m128i __A) { return (__m128i)__builtin_shufflevector( (__v4si)__A, (__v4si)_mm_setzero_si128(), 0, 4, 4, 4); } /// Constructs a 128-bit integer vector, setting the lower 16 bits to the /// lower 16 bits of the parameter \a __A; the upper bits are zeoroed. /// /// \code{.operation} /// result[15:0] := __A[15:0] /// result[MAX:16] := 0 /// \endcode /// /// \headerfile /// /// This intrinsic corresponds to the VMOVW instruction. /// /// \param __A /// A 128-bit integer vector. /// \returns A 128-bit integer vector. The lower 16 bits are copied from the /// parameter \a __A; the upper bits are zeroed. static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_move_epi16(__m128i __A) { return (__m128i)__builtin_shufflevector( (__v8hi)__A, (__v8hi)_mm_setzero_si128(), 0, 8, 8, 8, 8, 8, 8, 8); } #undef __DEFAULT_FN_ATTRS128 #endif // __AVX10_2COPYINTRIN_H