]> granicus.if.org Git - clang/commitdiff
Add a few more AVX2 intrinsics and fix the type strings on a couple SSE intrinsics.
authorCraig Topper <craig.topper@gmail.com>
Wed, 21 Dec 2011 08:35:05 +0000 (08:35 +0000)
committerCraig Topper <craig.topper@gmail.com>
Wed, 21 Dec 2011 08:35:05 +0000 (08:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147048 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsX86.def
lib/Headers/avx2intrin.h
test/CodeGen/avx2-builtins.c

index 6a77468314fefb790ee6e4726f513b16659e5c73..a32a3b8808a94720204b5a97428da397238d8c8b 100644 (file)
@@ -230,7 +230,7 @@ BUILTIN(__builtin_ia32_phaddsw128, "V8sV8sV8s", "")
 BUILTIN(__builtin_ia32_phsubw128, "V8sV8sV8s", "")
 BUILTIN(__builtin_ia32_phsubd128, "V4iV4iV4i", "")
 BUILTIN(__builtin_ia32_phsubsw128, "V8sV8sV8s", "")
-BUILTIN(__builtin_ia32_pmaddubsw128, "V16cV16cV16c", "")
+BUILTIN(__builtin_ia32_pmaddubsw128, "V8sV16cV16c", "")
 BUILTIN(__builtin_ia32_pmulhrsw128, "V8sV8sV8s", "")
 BUILTIN(__builtin_ia32_pshufb128, "V16cV16cV16c", "")
 BUILTIN(__builtin_ia32_psignb128, "V16cV16cV16c", "")
@@ -298,7 +298,7 @@ BUILTIN(__builtin_ia32_psrldi128, "V4iV4ii", "")
 BUILTIN(__builtin_ia32_psrlqi128, "V2LLiV2LLii", "")
 BUILTIN(__builtin_ia32_psrawi128, "V8sV8si", "")
 BUILTIN(__builtin_ia32_psradi128, "V4iV4ii", "")
-BUILTIN(__builtin_ia32_pmaddwd128, "V8sV8sV8s", "")
+BUILTIN(__builtin_ia32_pmaddwd128, "V4iV8sV8s", "")
 BUILTIN(__builtin_ia32_monitor, "vv*UiUi", "")
 BUILTIN(__builtin_ia32_mwait, "vUiUi", "")
 BUILTIN(__builtin_ia32_lddqu, "V16ccC*", "")
@@ -500,5 +500,7 @@ BUILTIN(__builtin_ia32_phaddsw256, "V16sV16sV16s", "")
 BUILTIN(__builtin_ia32_phsubw256, "V16sV16sV16s", "")
 BUILTIN(__builtin_ia32_phsubd256, "V8iV8iV8i", "")
 BUILTIN(__builtin_ia32_phsubsw256, "V16sV16sV16s", "")
+BUILTIN(__builtin_ia32_pmaddubsw256, "V16sV32cV32c", "")
+BUILTIN(__builtin_ia32_pmaddwd256, "V8iV16sV16s", "")
 
 #undef BUILTIN
index 38891670a0c382a5ef82013a767ed08b5470c448..ce6075388c655cd351157e52b63a733169764dec 100644 (file)
@@ -243,6 +243,18 @@ _mm256_hsubs_epi16(__m256i a, __m256i b)
     return (__m256i)__builtin_ia32_phsubsw256((__v16hi)a, (__v16hi)b);
 }
 
+static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
+_mm256_maddubs_epi16(__m256i a, __m256i b)
+{
+    return (__m256i)__builtin_ia32_pmaddubsw256((__v32qi)a, (__v32qi)b);
+}
+
+static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
+_mm256_madd_epi16(__m256i a, __m256i b)
+{
+  return (__m256i)__builtin_ia32_pmaddwd256((__v16hi)a, (__v16hi)b);
+}
+
 static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
 _mm256_or_si256(__m256i a, __m256i b)
 {
index cc252d7d55136d96f8cddcb4d98065970ca0f42b..592a196dc84d20d797ec8fd3d89f181e41a66e80 100644 (file)
@@ -245,3 +245,13 @@ __m256 test_mm256_hsubs_epi16(__m256 a, __m256 b) {
   // CHECK: @llvm.x86.avx2.phsub.sw
   return _mm256_hsubs_epi16(a, b);
 }
+
+__m256 test_mm256_maddubs_epi16(__m256 a, __m256 b) {
+  // CHECK: @llvm.x86.avx2.pmadd.ub.sw
+  return _mm256_maddubs_epi16(a, b);
+}
+
+__m256 test_mm256_madd_epi16(__m256 a, __m256 b) {
+  // CHECK: @llvm.x86.avx2.pmadd.wd
+  return _mm256_madd_epi16(a, b);
+}