aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaul A. Clarke <pc@us.ibm.com>2020-09-23 14:10:19 -0500
committerPaul A. Clarke <pc@us.ibm.com>2020-09-28 08:11:51 -0500
commit4d09cc91574bfd4f4d49f7f45e54af4fe0a35e9a (patch)
tree44cc1d3500401a8412b3b21377dbe51d2a831924 /gcc
parent5c609842d13a4c9c6be1a10f7980a74d27daeb85 (diff)
downloadgcc-4d09cc91574bfd4f4d49f7f45e54af4fe0a35e9a.zip
gcc-4d09cc91574bfd4f4d49f7f45e54af4fe0a35e9a.tar.gz
gcc-4d09cc91574bfd4f4d49f7f45e54af4fe0a35e9a.tar.bz2
rs6000: Support _mm_insert_epi{8,32,64}
Add compatibility implementations for SSE4.1 intrinsics _mm_insert_epi8, _mm_insert_epi32, _mm_insert_epi64. 2020-09-23 Paul A. Clarke <pc@us.ibm.com> gcc/ * config/rs6000/smmintrin.h (_mm_insert_epi8): New. (_mm_insert_epi32): New. (_mm_insert_epi64): New.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/smmintrin.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/config/rs6000/smmintrin.h b/gcc/config/rs6000/smmintrin.h
index d78ddba..4c0fc86 100644
--- a/gcc/config/rs6000/smmintrin.h
+++ b/gcc/config/rs6000/smmintrin.h
@@ -42,6 +42,36 @@
#include <altivec.h>
#include <tmmintrin.h>
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi8 (__m128i const __A, int const __D, int const __N)
+{
+ __v16qi result = (__v16qi)__A;
+
+ result [__N & 0xf] = __D;
+
+ return (__m128i) result;
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi32 (__m128i const __A, int const __D, int const __N)
+{
+ __v4si result = (__v4si)__A;
+
+ result [__N & 3] = __D;
+
+ return (__m128i) result;
+}
+
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_insert_epi64 (__m128i const __A, long long const __D, int const __N)
+{
+ __v2di result = (__v2di)__A;
+
+ result [__N & 1] = __D;
+
+ return (__m128i) result;
+}
+
extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_extract_epi8 (__m128i __X, const int __N)
{