]> granicus.if.org Git - clang/commitdiff
2 missing intrinsics _cvtss_sh and _mm_cvtps_ph were added to the intrinsics header...
authorEkaterina Romanova <katya_romanova@playstation.sony.com>
Fri, 22 Jan 2016 06:50:50 +0000 (06:50 +0000)
committerEkaterina Romanova <katya_romanova@playstation.sony.com>
Fri, 22 Jan 2016 06:50:50 +0000 (06:50 +0000)
Differential Revision: http://reviews.llvm.org/D16177

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258492 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/f16cintrin.h
test/CodeGen/f16c-builtins.c

index c655d98ee9ab77c22dc877475096816c91abea5a..0ed966abbce97a28ba0b226450a53de05af52a5f 100644 (file)
 #define __F16CINTRIN_H
 
 /* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("f16c")))
+#define __DEFAULT_FN_ATTRS \ 
+  __attribute__((__always_inline__, __nodebug__, __target__("f16c")))
 
-#define _mm_cvtps_ph(a, imm) __extension__ ({ \
- (__m128i)__builtin_ia32_vcvtps2ph((__v4sf)(__m128)(a), (imm)); })
+static __inline float __DEFAULT_FN_ATTRS
+_cvtsh_ss(unsigned short a)
+{
+  __v8hi v = {(short)a, 0, 0, 0, 0, 0, 0, 0};
+  __v4sf r = __builtin_ia32_vcvtph2ps(v);
+  return r[0];
+}
+
+#define _cvtss_sh(a, imm)  \
+  ((unsigned short)(((__v8hi)__builtin_ia32_vcvtps2ph((__v4sf){a, 0, 0, 0}, \
+                                                      (imm)))[0]))
+
+#define _mm_cvtps_ph(a, imm) \
+  ((__m128i)__builtin_ia32_vcvtps2ph((__v4sf)(__m128)(a), (imm)))
 
 static __inline __m128 __DEFAULT_FN_ATTRS
 _mm_cvtph_ps(__m128i __a)
index f9cfa0d8fb3b817972e8a5380220559bef2003cb..b0f660ab0a8d5fd66916ccc22d3f4df22d5edbef 100644 (file)
@@ -5,6 +5,18 @@
 
 #include <x86intrin.h>
 
+float test_cvtsh_ss(unsigned short a) {
+  // CHECK-LABEL: test_cvtsh_ss
+  // CHECK: @llvm.x86.vcvtph2ps.128
+  return _cvtsh_ss(a);
+}
+
+unsigned short test_cvtss_sh(float a) {
+  // CHECK-LABEL: test_cvtss_sh
+  // CHECK: @llvm.x86.vcvtps2ph.128
+  return _cvtss_sh(a, 0);
+}
+
 __m128 test_mm_cvtph_ps(__m128i a) {
   // CHECK-LABEL: test_mm_cvtph_ps
   // CHECK: @llvm.x86.vcvtph2ps.128