Author: kromanova Date: Fri Jan 22 00:50:50 2016 New Revision: 258492 URL: http://llvm.org/viewvc/llvm-project?rev=258492&view=rev Log: 2 missing intrinsics _cvtss_sh and _mm_cvtps_ph were added to the intrinsics header f16intrin.h Differential Revision: http://reviews.llvm.org/D16177
Modified: cfe/trunk/lib/Headers/f16cintrin.h cfe/trunk/test/CodeGen/f16c-builtins.c Modified: cfe/trunk/lib/Headers/f16cintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/f16cintrin.h?rev=258492&r1=258491&r2=258492&view=diff ============================================================================== --- cfe/trunk/lib/Headers/f16cintrin.h (original) +++ cfe/trunk/lib/Headers/f16cintrin.h Fri Jan 22 00:50:50 2016 @@ -29,10 +29,23 @@ #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) Modified: cfe/trunk/test/CodeGen/f16c-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/f16c-builtins.c?rev=258492&r1=258491&r2=258492&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/f16c-builtins.c (original) +++ cfe/trunk/test/CodeGen/f16c-builtins.c Fri Jan 22 00:50:50 2016 @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits