Skip to content

Commit a67f368

Browse files
committed
[VCRUNTIME] Fix emmintrin.h
1 parent f493606 commit a67f368

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

sdk/include/vcruntime/emmintrin.h

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,20 @@ typedef signed char __v16qs __attribute__((__vector_size__(16)));
6363

6464
#ifdef __clang__
6565
#define __ATTRIBUTE_SSE2__ __attribute__((__target__("sse2"),__min_vector_width__(128)))
66+
#define __ATTRIBUTE_MMXSSE2__ __attribute__((__target__("mmx,sse2"),__min_vector_width__(128)))
6667
#else
6768
#define __ATTRIBUTE_SSE2__ __attribute__((__target__("sse2")))
69+
#define __ATTRIBUTE_MMXSSE2__ __attribute__((__target__("mmx,sse2")))
6870
#endif
6971
#define __INTRIN_INLINE_SSE2 __INTRIN_INLINE __ATTRIBUTE_SSE2__
72+
#define __INTRIN_INLINE_MMXSSE2 __INTRIN_INLINE __ATTRIBUTE_MMXSSE2__
7073

7174
#endif /* _MSC_VER */
7275

76+
#ifdef __cplusplus
77+
extern "C" {
78+
#endif
79+
7380
extern __m128d _mm_add_sd(__m128d a, __m128d b);
7481
extern __m128d _mm_add_pd(__m128d a, __m128d b);
7582
extern __m128d _mm_sub_sd(__m128d a, __m128d b);
@@ -495,12 +502,12 @@ void _mm_pause(void);
495502
#pragma intrinsic(_mm_loadu_si128)
496503
#pragma intrinsic(_mm_loadl_epi64)
497504
//#pragma intrinsic(_mm_undefined_si128)
498-
#pragma intrinsic(_mm_set_epi64x)
505+
//#pragma intrinsic(_mm_set_epi64x)
499506
//#pragma intrinsic(_mm_set_epi64)
500507
#pragma intrinsic(_mm_set_epi32)
501508
#pragma intrinsic(_mm_set_epi16)
502509
#pragma intrinsic(_mm_set_epi8)
503-
#pragma intrinsic(_mm_set1_epi64x)
510+
//#pragma intrinsic(_mm_set1_epi64x)
504511
//#pragma intrinsic(_mm_set1_epi64)
505512
#pragma intrinsic(_mm_set1_epi32)
506513
#pragma intrinsic(_mm_set1_epi16)
@@ -904,17 +911,17 @@ __INTRIN_INLINE_SSE2 int _mm_cvttsd_si32(__m128d a)
904911
return __builtin_ia32_cvttsd2si((__v2df)a);
905912
}
906913

907-
__INTRIN_INLINE_MMX __m64 _mm_cvtpd_pi32(__m128d a)
914+
__INTRIN_INLINE_MMXSSE2 __m64 _mm_cvtpd_pi32(__m128d a)
908915
{
909916
return (__m64)__builtin_ia32_cvtpd2pi((__v2df)a);
910917
}
911918

912-
__INTRIN_INLINE_MMX __m64 _mm_cvttpd_pi32(__m128d a)
919+
__INTRIN_INLINE_MMXSSE2 __m64 _mm_cvttpd_pi32(__m128d a)
913920
{
914921
return (__m64)__builtin_ia32_cvttpd2pi((__v2df)a);
915922
}
916923

917-
__INTRIN_INLINE_SSE __m128d _mm_cvtpi32_pd(__m64 a)
924+
__INTRIN_INLINE_MMXSSE2 __m128d _mm_cvtpi32_pd(__m64 a)
918925
{
919926
return __builtin_ia32_cvtpi2pd((__v2si)a);
920927
}
@@ -1130,7 +1137,7 @@ __INTRIN_INLINE_SSE2 __m128i _mm_add_epi32(__m128i a, __m128i b)
11301137
return (__m128i)((__v4su)a + (__v4su)b);
11311138
}
11321139

1133-
__INTRIN_INLINE_MMX __m64 _mm_add_si64(__m64 a, __m64 b)
1140+
__INTRIN_INLINE_MMXSSE2 __m64 _mm_add_si64(__m64 a, __m64 b)
11341141
{
11351142
return (__m64)__builtin_ia32_paddq((__v1di)a, (__v1di)b);
11361143
}
@@ -1242,7 +1249,7 @@ __INTRIN_INLINE_SSE2 __m128i _mm_mullo_epi16(__m128i a, __m128i b)
12421249
return (__m128i)((__v8hu)a * (__v8hu)b);
12431250
}
12441251

1245-
__INTRIN_INLINE_MMX __m64 _mm_mul_su32(__m64 a, __m64 b)
1252+
__INTRIN_INLINE_MMXSSE2 __m64 _mm_mul_su32(__m64 a, __m64 b)
12461253
{
12471254
return (__m64)__builtin_ia32_pmuludq((__v2si)a, (__v2si)b);
12481255
}
@@ -1272,7 +1279,7 @@ __INTRIN_INLINE_SSE2 __m128i _mm_sub_epi32(__m128i a, __m128i b)
12721279
return (__m128i)((__v4su)a - (__v4su)b);
12731280
}
12741281

1275-
__INTRIN_INLINE_MMX __m64 _mm_sub_si64(__m64 a, __m64 b)
1282+
__INTRIN_INLINE_MMXSSE2 __m64 _mm_sub_si64(__m64 a, __m64 b)
12761283
{
12771284
return (__m64)__builtin_ia32_psubq((__v1di)a, (__v1di)b);
12781285
}
@@ -1936,6 +1943,8 @@ void _mm_pause(void);
19361943

19371944
#endif /* _MSC_VER */
19381945

1939-
1946+
#ifdef __cplusplus
1947+
} // extern "C"
1948+
#endif
19401949

19411950
#endif /* _INCLUDED_EMM */

0 commit comments

Comments
 (0)