Skip to content

Commit a9a0978

Browse files
ningxinrRKSimon
andauthored
[Headers][X86] Allow MMX/SSE2/AVX2/AVX512BW integer saturated arithmetic intrinsics to be used in constexpr (llvm#153088)
This PR allows the following MMX/SSE2/AVX2/AVX512BW integer saturated arithmetic intrinsics to be used in constexpr ``` _mm_adds_pi8 _mm_adds_pi16 _mm_subs_pi8 _mm_subs_pi16 _mm_adds_pu8 _mm_adds_pu16 _mm_subs_pu8 _mm_subs_pu16 _mm_adds_epi8 _mm_adds_epi16 _mm_subs_epi8 _mm_subs_epi16 _mm_adds_epu8 _mm_adds_epu16 _mm_subs_epu8 _mm_subs_epu16 _mm256_adds_epi8 _mm256_adds_epi16 _mm256_subs_epi8 _mm256_subs_epi16 _mm256_adds_epu8 _mm256_adds_epu16 _mm256_subs_epu8 _mm256_subs_epu16 _mm512_adds_epi8 _mm512_adds_epi16 _mm512_subs_epi8 _mm512_subs_epi16 _mm512_adds_epu8 _mm512_adds_epu16 _mm512_subs_epu8 _mm512_subs_epu16 ``` Fixes llvm#152506 --------- Co-authored-by: Simon Pilgrim <[email protected]>
1 parent c68b4d6 commit a9a0978

File tree

9 files changed

+176
-96
lines changed

9 files changed

+176
-96
lines changed

clang/lib/Headers/avx2intrin.h

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -367,9 +367,8 @@ _mm256_add_epi64(__m256i __a, __m256i __b)
367367
/// \param __b
368368
/// A 256-bit integer vector containing one of the source operands.
369369
/// \returns A 256-bit integer vector containing the sums.
370-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
371-
_mm256_adds_epi8(__m256i __a, __m256i __b)
372-
{
370+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
371+
_mm256_adds_epi8(__m256i __a, __m256i __b) {
373372
return (__m256i)__builtin_elementwise_add_sat((__v32qs)__a, (__v32qs)__b);
374373
}
375374

@@ -385,9 +384,8 @@ _mm256_adds_epi8(__m256i __a, __m256i __b)
385384
/// \param __b
386385
/// A 256-bit vector of [16 x i16] containing one of the source operands.
387386
/// \returns A 256-bit vector of [16 x i16] containing the sums.
388-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
389-
_mm256_adds_epi16(__m256i __a, __m256i __b)
390-
{
387+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
388+
_mm256_adds_epi16(__m256i __a, __m256i __b) {
391389
return (__m256i)__builtin_elementwise_add_sat((__v16hi)__a, (__v16hi)__b);
392390
}
393391

@@ -404,9 +402,8 @@ _mm256_adds_epi16(__m256i __a, __m256i __b)
404402
/// \param __b
405403
/// A 256-bit integer vector containing one of the source operands.
406404
/// \returns A 256-bit integer vector containing the sums.
407-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
408-
_mm256_adds_epu8(__m256i __a, __m256i __b)
409-
{
405+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
406+
_mm256_adds_epu8(__m256i __a, __m256i __b) {
410407
return (__m256i)__builtin_elementwise_add_sat((__v32qu)__a, (__v32qu)__b);
411408
}
412409

@@ -422,9 +419,8 @@ _mm256_adds_epu8(__m256i __a, __m256i __b)
422419
/// \param __b
423420
/// A 256-bit vector of [16 x i16] containing one of the source operands.
424421
/// \returns A 256-bit vector of [16 x i16] containing the sums.
425-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
426-
_mm256_adds_epu16(__m256i __a, __m256i __b)
427-
{
422+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
423+
_mm256_adds_epu16(__m256i __a, __m256i __b) {
428424
return (__m256i)__builtin_elementwise_add_sat((__v16hu)__a, (__v16hu)__b);
429425
}
430426

@@ -2607,9 +2603,8 @@ _mm256_sub_epi64(__m256i __a, __m256i __b)
26072603
/// \param __b
26082604
/// A 256-bit integer vector containing the subtrahends.
26092605
/// \returns A 256-bit integer vector containing the differences.
2610-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
2611-
_mm256_subs_epi8(__m256i __a, __m256i __b)
2612-
{
2606+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
2607+
_mm256_subs_epi8(__m256i __a, __m256i __b) {
26132608
return (__m256i)__builtin_elementwise_sub_sat((__v32qs)__a, (__v32qs)__b);
26142609
}
26152610

@@ -2633,9 +2628,8 @@ _mm256_subs_epi8(__m256i __a, __m256i __b)
26332628
/// \param __b
26342629
/// A 256-bit vector of [16 x i16] containing the subtrahends.
26352630
/// \returns A 256-bit vector of [16 x i16] containing the differences.
2636-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
2637-
_mm256_subs_epi16(__m256i __a, __m256i __b)
2638-
{
2631+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
2632+
_mm256_subs_epi16(__m256i __a, __m256i __b) {
26392633
return (__m256i)__builtin_elementwise_sub_sat((__v16hi)__a, (__v16hi)__b);
26402634
}
26412635

@@ -2660,9 +2654,8 @@ _mm256_subs_epi16(__m256i __a, __m256i __b)
26602654
/// \param __b
26612655
/// A 256-bit integer vector containing the subtrahends.
26622656
/// \returns A 256-bit integer vector containing the differences.
2663-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
2664-
_mm256_subs_epu8(__m256i __a, __m256i __b)
2665-
{
2657+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
2658+
_mm256_subs_epu8(__m256i __a, __m256i __b) {
26662659
return (__m256i)__builtin_elementwise_sub_sat((__v32qu)__a, (__v32qu)__b);
26672660
}
26682661

@@ -2686,9 +2679,8 @@ _mm256_subs_epu8(__m256i __a, __m256i __b)
26862679
/// \param __b
26872680
/// A 256-bit vector of [16 x i16] containing the subtrahends.
26882681
/// \returns A 256-bit vector of [16 x i16] containing the differences.
2689-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
2690-
_mm256_subs_epu16(__m256i __a, __m256i __b)
2691-
{
2682+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
2683+
_mm256_subs_epu16(__m256i __a, __m256i __b) {
26922684
return (__m256i)__builtin_elementwise_sub_sat((__v16hu)__a, (__v16hu)__b);
26932685
}
26942686

clang/lib/Headers/avx512bwintrin.h

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -613,9 +613,8 @@ _mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B)
613613
(__v64qi)_mm512_setzero_si512());
614614
}
615615

616-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
617-
_mm512_adds_epi8 (__m512i __A, __m512i __B)
618-
{
616+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
617+
_mm512_adds_epi8(__m512i __A, __m512i __B) {
619618
return (__m512i)__builtin_elementwise_add_sat((__v64qs)__A, (__v64qs)__B);
620619
}
621620

@@ -635,9 +634,8 @@ _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
635634
(__v64qi)_mm512_setzero_si512());
636635
}
637636

638-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
639-
_mm512_adds_epi16 (__m512i __A, __m512i __B)
640-
{
637+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
638+
_mm512_adds_epi16(__m512i __A, __m512i __B) {
641639
return (__m512i)__builtin_elementwise_add_sat((__v32hi)__A, (__v32hi)__B);
642640
}
643641

@@ -657,9 +655,8 @@ _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
657655
(__v32hi)_mm512_setzero_si512());
658656
}
659657

660-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
661-
_mm512_adds_epu8 (__m512i __A, __m512i __B)
662-
{
658+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
659+
_mm512_adds_epu8(__m512i __A, __m512i __B) {
663660
return (__m512i)__builtin_elementwise_add_sat((__v64qu) __A, (__v64qu) __B);
664661
}
665662

@@ -679,9 +676,8 @@ _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
679676
(__v64qi)_mm512_setzero_si512());
680677
}
681678

682-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
683-
_mm512_adds_epu16 (__m512i __A, __m512i __B)
684-
{
679+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
680+
_mm512_adds_epu16(__m512i __A, __m512i __B) {
685681
return (__m512i)__builtin_elementwise_add_sat((__v32hu) __A, (__v32hu) __B);
686682
}
687683

@@ -946,9 +942,8 @@ _mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
946942
(__v64qi)_mm512_setzero_si512());
947943
}
948944

949-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
950-
_mm512_subs_epi8 (__m512i __A, __m512i __B)
951-
{
945+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
946+
_mm512_subs_epi8(__m512i __A, __m512i __B) {
952947
return (__m512i)__builtin_elementwise_sub_sat((__v64qs)__A, (__v64qs)__B);
953948
}
954949

@@ -968,9 +963,8 @@ _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
968963
(__v64qi)_mm512_setzero_si512());
969964
}
970965

971-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
972-
_mm512_subs_epi16 (__m512i __A, __m512i __B)
973-
{
966+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
967+
_mm512_subs_epi16(__m512i __A, __m512i __B) {
974968
return (__m512i)__builtin_elementwise_sub_sat((__v32hi)__A, (__v32hi)__B);
975969
}
976970

@@ -990,9 +984,8 @@ _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
990984
(__v32hi)_mm512_setzero_si512());
991985
}
992986

993-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
994-
_mm512_subs_epu8 (__m512i __A, __m512i __B)
995-
{
987+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
988+
_mm512_subs_epu8(__m512i __A, __m512i __B) {
996989
return (__m512i)__builtin_elementwise_sub_sat((__v64qu) __A, (__v64qu) __B);
997990
}
998991

@@ -1012,9 +1005,8 @@ _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
10121005
(__v64qi)_mm512_setzero_si512());
10131006
}
10141007

1015-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1016-
_mm512_subs_epu16 (__m512i __A, __m512i __B)
1017-
{
1008+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1009+
_mm512_subs_epu16(__m512i __A, __m512i __B) {
10181010
return (__m512i)__builtin_elementwise_sub_sat((__v32hu) __A, (__v32hu) __B);
10191011
}
10201012

clang/lib/Headers/emmintrin.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2170,8 +2170,8 @@ _mm_add_epi64(__m128i __a, __m128i __b) {
21702170
/// A 128-bit signed [16 x i8] vector.
21712171
/// \returns A 128-bit signed [16 x i8] vector containing the saturated sums of
21722172
/// both parameters.
2173-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi8(__m128i __a,
2174-
__m128i __b) {
2173+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2174+
_mm_adds_epi8(__m128i __a, __m128i __b) {
21752175
return (__m128i)__builtin_elementwise_add_sat((__v16qs)__a, (__v16qs)__b);
21762176
}
21772177

@@ -2192,8 +2192,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi8(__m128i __a,
21922192
/// A 128-bit signed [8 x i16] vector.
21932193
/// \returns A 128-bit signed [8 x i16] vector containing the saturated sums of
21942194
/// both parameters.
2195-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi16(__m128i __a,
2196-
__m128i __b) {
2195+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2196+
_mm_adds_epi16(__m128i __a, __m128i __b) {
21972197
return (__m128i)__builtin_elementwise_add_sat((__v8hi)__a, (__v8hi)__b);
21982198
}
21992199

@@ -2214,8 +2214,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi16(__m128i __a,
22142214
/// A 128-bit unsigned [16 x i8] vector.
22152215
/// \returns A 128-bit unsigned [16 x i8] vector containing the saturated sums
22162216
/// of both parameters.
2217-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epu8(__m128i __a,
2218-
__m128i __b) {
2217+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2218+
_mm_adds_epu8(__m128i __a, __m128i __b) {
22192219
return (__m128i)__builtin_elementwise_add_sat((__v16qu)__a, (__v16qu)__b);
22202220
}
22212221

@@ -2236,8 +2236,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epu8(__m128i __a,
22362236
/// A 128-bit unsigned [8 x i16] vector.
22372237
/// \returns A 128-bit unsigned [8 x i16] vector containing the saturated sums
22382238
/// of both parameters.
2239-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epu16(__m128i __a,
2240-
__m128i __b) {
2239+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2240+
_mm_adds_epu16(__m128i __a, __m128i __b) {
22412241
return (__m128i)__builtin_elementwise_add_sat((__v8hu)__a, (__v8hu)__b);
22422242
}
22432243

@@ -2597,8 +2597,8 @@ _mm_sub_epi64(__m128i __a, __m128i __b) {
25972597
/// A 128-bit integer vector containing the subtrahends.
25982598
/// \returns A 128-bit integer vector containing the differences of the values
25992599
/// in the operands.
2600-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi8(__m128i __a,
2601-
__m128i __b) {
2600+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2601+
_mm_subs_epi8(__m128i __a, __m128i __b) {
26022602
return (__m128i)__builtin_elementwise_sub_sat((__v16qs)__a, (__v16qs)__b);
26032603
}
26042604

@@ -2619,8 +2619,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi8(__m128i __a,
26192619
/// A 128-bit integer vector containing the subtrahends.
26202620
/// \returns A 128-bit integer vector containing the differences of the values
26212621
/// in the operands.
2622-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi16(__m128i __a,
2623-
__m128i __b) {
2622+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2623+
_mm_subs_epi16(__m128i __a, __m128i __b) {
26242624
return (__m128i)__builtin_elementwise_sub_sat((__v8hi)__a, (__v8hi)__b);
26252625
}
26262626

@@ -2640,8 +2640,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi16(__m128i __a,
26402640
/// A 128-bit integer vector containing the subtrahends.
26412641
/// \returns A 128-bit integer vector containing the unsigned integer
26422642
/// differences of the values in the operands.
2643-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epu8(__m128i __a,
2644-
__m128i __b) {
2643+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2644+
_mm_subs_epu8(__m128i __a, __m128i __b) {
26452645
return (__m128i)__builtin_elementwise_sub_sat((__v16qu)__a, (__v16qu)__b);
26462646
}
26472647

@@ -2661,8 +2661,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epu8(__m128i __a,
26612661
/// A 128-bit integer vector containing the subtrahends.
26622662
/// \returns A 128-bit integer vector containing the unsigned integer
26632663
/// differences of the values in the operands.
2664-
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epu16(__m128i __a,
2665-
__m128i __b) {
2664+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
2665+
_mm_subs_epu16(__m128i __a, __m128i __b) {
26662666
return (__m128i)__builtin_elementwise_sub_sat((__v8hu)__a, (__v8hu)__b);
26672667
}
26682668

clang/lib/Headers/mmintrin.h

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -448,10 +448,9 @@ _mm_add_pi32(__m64 __m1, __m64 __m2)
448448
/// A 64-bit integer vector of [8 x i8].
449449
/// \returns A 64-bit integer vector of [8 x i8] containing the saturated sums
450450
/// of both parameters.
451-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
452-
_mm_adds_pi8(__m64 __m1, __m64 __m2)
453-
{
454-
return (__m64)__builtin_elementwise_add_sat((__v8qs)__m1, (__v8qs)__m2);
451+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
452+
_mm_adds_pi8(__m64 __m1, __m64 __m2) {
453+
return (__m64)__builtin_elementwise_add_sat((__v8qs)__m1, (__v8qs)__m2);
455454
}
456455

457456
/// Adds, with saturation, each 16-bit signed integer element of the first
@@ -472,10 +471,9 @@ _mm_adds_pi8(__m64 __m1, __m64 __m2)
472471
/// A 64-bit integer vector of [4 x i16].
473472
/// \returns A 64-bit integer vector of [4 x i16] containing the saturated sums
474473
/// of both parameters.
475-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
476-
_mm_adds_pi16(__m64 __m1, __m64 __m2)
477-
{
478-
return (__m64)__builtin_elementwise_add_sat((__v4hi)__m1, (__v4hi)__m2);
474+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
475+
_mm_adds_pi16(__m64 __m1, __m64 __m2) {
476+
return (__m64)__builtin_elementwise_add_sat((__v4hi)__m1, (__v4hi)__m2);
479477
}
480478

481479
/// Adds, with saturation, each 8-bit unsigned integer element of the first
@@ -495,10 +493,9 @@ _mm_adds_pi16(__m64 __m1, __m64 __m2)
495493
/// A 64-bit integer vector of [8 x i8].
496494
/// \returns A 64-bit integer vector of [8 x i8] containing the saturated
497495
/// unsigned sums of both parameters.
498-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
499-
_mm_adds_pu8(__m64 __m1, __m64 __m2)
500-
{
501-
return (__m64)__builtin_elementwise_add_sat((__v8qu)__m1, (__v8qu)__m2);
496+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
497+
_mm_adds_pu8(__m64 __m1, __m64 __m2) {
498+
return (__m64)__builtin_elementwise_add_sat((__v8qu)__m1, (__v8qu)__m2);
502499
}
503500

504501
/// Adds, with saturation, each 16-bit unsigned integer element of the first
@@ -518,10 +515,9 @@ _mm_adds_pu8(__m64 __m1, __m64 __m2)
518515
/// A 64-bit integer vector of [4 x i16].
519516
/// \returns A 64-bit integer vector of [4 x i16] containing the saturated
520517
/// unsigned sums of both parameters.
521-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
522-
_mm_adds_pu16(__m64 __m1, __m64 __m2)
523-
{
524-
return (__m64)__builtin_elementwise_add_sat((__v4hu)__m1, (__v4hu)__m2);
518+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
519+
_mm_adds_pu16(__m64 __m1, __m64 __m2) {
520+
return (__m64)__builtin_elementwise_add_sat((__v4hu)__m1, (__v4hu)__m2);
525521
}
526522

527523
/// Subtracts each 8-bit integer element of the second 64-bit integer
@@ -605,10 +601,9 @@ _mm_sub_pi32(__m64 __m1, __m64 __m2)
605601
/// A 64-bit integer vector of [8 x i8] containing the subtrahends.
606602
/// \returns A 64-bit integer vector of [8 x i8] containing the saturated
607603
/// differences of both parameters.
608-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
609-
_mm_subs_pi8(__m64 __m1, __m64 __m2)
610-
{
611-
return (__m64)__builtin_elementwise_sub_sat((__v8qs)__m1, (__v8qs)__m2);
604+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
605+
_mm_subs_pi8(__m64 __m1, __m64 __m2) {
606+
return (__m64)__builtin_elementwise_sub_sat((__v8qs)__m1, (__v8qs)__m2);
612607
}
613608

614609
/// Subtracts, with saturation, each 16-bit signed integer element of the
@@ -629,10 +624,9 @@ _mm_subs_pi8(__m64 __m1, __m64 __m2)
629624
/// A 64-bit integer vector of [4 x i16] containing the subtrahends.
630625
/// \returns A 64-bit integer vector of [4 x i16] containing the saturated
631626
/// differences of both parameters.
632-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
633-
_mm_subs_pi16(__m64 __m1, __m64 __m2)
634-
{
635-
return (__m64)__builtin_elementwise_sub_sat((__v4hi)__m1, (__v4hi)__m2);
627+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
628+
_mm_subs_pi16(__m64 __m1, __m64 __m2) {
629+
return (__m64)__builtin_elementwise_sub_sat((__v4hi)__m1, (__v4hi)__m2);
636630
}
637631

638632
/// Subtracts each 8-bit unsigned integer element of the second 64-bit
@@ -653,10 +647,9 @@ _mm_subs_pi16(__m64 __m1, __m64 __m2)
653647
/// A 64-bit integer vector of [8 x i8] containing the subtrahends.
654648
/// \returns A 64-bit integer vector of [8 x i8] containing the saturated
655649
/// differences of both parameters.
656-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
657-
_mm_subs_pu8(__m64 __m1, __m64 __m2)
658-
{
659-
return (__m64)__builtin_elementwise_sub_sat((__v8qu)__m1, (__v8qu)__m2);
650+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
651+
_mm_subs_pu8(__m64 __m1, __m64 __m2) {
652+
return (__m64)__builtin_elementwise_sub_sat((__v8qu)__m1, (__v8qu)__m2);
660653
}
661654

662655
/// Subtracts each 16-bit unsigned integer element of the second 64-bit
@@ -677,10 +670,9 @@ _mm_subs_pu8(__m64 __m1, __m64 __m2)
677670
/// A 64-bit integer vector of [4 x i16] containing the subtrahends.
678671
/// \returns A 64-bit integer vector of [4 x i16] containing the saturated
679672
/// differences of both parameters.
680-
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
681-
_mm_subs_pu16(__m64 __m1, __m64 __m2)
682-
{
683-
return (__m64)__builtin_elementwise_sub_sat((__v4hu)__m1, (__v4hu)__m2);
673+
static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
674+
_mm_subs_pu16(__m64 __m1, __m64 __m2) {
675+
return (__m64)__builtin_elementwise_sub_sat((__v4hu)__m1, (__v4hu)__m2);
684676
}
685677

686678
/// Multiplies each 16-bit signed integer element of the first 64-bit

0 commit comments

Comments
 (0)