forked from OSchip/llvm-project
2 missing intrinsics _cvtss_sh and _mm_cvtps_ph were added to the intrinsics header f16intrin.h
Differential Revision: http://reviews.llvm.org/D16177 llvm-svn: 258492
This commit is contained in:
parent
d033ad21d0
commit
08d1f2431d
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue