|
1 | 1 | #include "simd_blitters.h"
|
2 | 2 |
|
3 |
| -#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) |
4 |
| -#include <immintrin.h> |
5 |
| -#endif /* defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) */ |
6 |
| - |
7 |
| -#define BAD_AVX2_FUNCTION_CALL \ |
8 |
| - printf( \ |
9 |
| - "Fatal Error: Attempted calling an AVX2 function when both compile " \ |
10 |
| - "time and runtime support is missing. If you are seeing this " \ |
11 |
| - "message, you have stumbled across a pygame bug, please report it " \ |
12 |
| - "to the devs!"); \ |
13 |
| - PG_EXIT(1) |
14 |
| - |
15 |
| -/* helper function that does a runtime check for AVX2. It has the added |
16 |
| - * functionality of also returning 0 if compile time support is missing */ |
17 |
| -int |
18 |
| -pg_has_avx2() |
19 |
| -{ |
20 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
21 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
22 |
| - return SDL_HasAVX2(); |
23 |
| -#else |
24 |
| - return 0; |
25 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
26 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
27 |
| -} |
28 |
| - |
29 | 3 | /* This returns 1 when avx2 is available at runtime but support for it isn't
|
30 | 4 | * compiled in, 0 in all other cases */
|
31 | 5 | int
|
32 | 6 | pg_avx2_at_runtime_but_uncompiled()
|
33 | 7 | {
|
34 | 8 | if (SDL_HasAVX2()) {
|
35 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
36 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
| 9 | +#ifdef PG_HAS_AVX2 |
37 | 10 | return 0;
|
38 | 11 | #else
|
39 | 12 | return 1;
|
40 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
41 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
| 13 | +#endif /* PG_HAS_AVX2 */ |
42 | 14 | }
|
43 | 15 | return 0;
|
44 | 16 | }
|
@@ -190,8 +162,7 @@ pg_avx2_at_runtime_but_uncompiled()
|
190 | 162 | _mm256_srli_epi16( \
|
191 | 163 | _mm256_mulhi_epu16(MM256I, _mm256_set1_epi16((short)0x8081)), 7);
|
192 | 164 |
|
193 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
194 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
| 165 | +#ifdef PG_HAS_AVX2 |
195 | 166 | void
|
196 | 167 | alphablit_alpha_avx2_argb_no_surf_alpha_opaque_dst(SDL_BlitInfo *info)
|
197 | 168 | {
|
@@ -258,17 +229,7 @@ alphablit_alpha_avx2_argb_no_surf_alpha_opaque_dst(SDL_BlitInfo *info)
|
258 | 229 | * surfaces. */
|
259 | 230 | pixels_dst = _mm256_and_si256(pixels_dst, mask_out_alpha);)
|
260 | 231 | }
|
261 |
| -#else |
262 |
| -void |
263 |
| -alphablit_alpha_avx2_argb_no_surf_alpha_opaque_dst(SDL_BlitInfo *info) |
264 |
| -{ |
265 |
| - BAD_AVX2_FUNCTION_CALL; |
266 |
| -} |
267 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
268 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
269 | 232 |
|
270 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
271 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
272 | 233 | void
|
273 | 234 | alphablit_alpha_avx2_argb_no_surf_alpha(SDL_BlitInfo *info)
|
274 | 235 | {
|
@@ -324,17 +285,7 @@ alphablit_alpha_avx2_argb_no_surf_alpha(SDL_BlitInfo *info)
|
324 | 285 | shuff_dst =
|
325 | 286 | _mm256_blendv_epi8(shuff_dst, new_dst_alpha, combine_rgba_mask);))
|
326 | 287 | }
|
327 |
| -#else |
328 |
| -void |
329 |
| -alphablit_alpha_avx2_argb_no_surf_alpha(SDL_BlitInfo *info) |
330 |
| -{ |
331 |
| - BAD_AVX2_FUNCTION_CALL; |
332 |
| -} |
333 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
334 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
335 | 288 |
|
336 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
337 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
338 | 289 | void
|
339 | 290 | alphablit_alpha_avx2_argb_surf_alpha(SDL_BlitInfo *info)
|
340 | 291 | {
|
@@ -406,17 +357,6 @@ alphablit_alpha_avx2_argb_surf_alpha(SDL_BlitInfo *info)
|
406 | 357 | shuff_dst =
|
407 | 358 | _mm256_blendv_epi8(shuff_dst, new_dst_alpha, combine_rgba_mask);))
|
408 | 359 | }
|
409 |
| -#else |
410 |
| -void |
411 |
| -alphablit_alpha_avx2_argb_surf_alpha(SDL_BlitInfo *info) |
412 |
| -{ |
413 |
| - BAD_AVX2_FUNCTION_CALL; |
414 |
| -} |
415 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
416 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
417 |
| - |
418 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
419 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
420 | 360 | void
|
421 | 361 | blit_blend_rgba_mul_avx2(SDL_BlitInfo *info)
|
422 | 362 | {
|
@@ -524,17 +464,6 @@ blit_blend_rgba_mul_avx2(SDL_BlitInfo *info)
|
524 | 464 | dstp = (Uint32 *)dstp256 + dstskip;
|
525 | 465 | }
|
526 | 466 | }
|
527 |
| -#else |
528 |
| -void |
529 |
| -blit_blend_rgba_mul_avx2(SDL_BlitInfo *info) |
530 |
| -{ |
531 |
| - BAD_AVX2_FUNCTION_CALL; |
532 |
| -} |
533 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
534 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
535 |
| - |
536 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
537 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
538 | 467 | void
|
539 | 468 | blit_blend_rgb_mul_avx2(SDL_BlitInfo *info)
|
540 | 469 | {
|
@@ -653,17 +582,6 @@ blit_blend_rgb_mul_avx2(SDL_BlitInfo *info)
|
653 | 582 | dstp = (Uint32 *)dstp256 + dstskip;
|
654 | 583 | }
|
655 | 584 | }
|
656 |
| -#else |
657 |
| -void |
658 |
| -blit_blend_rgb_mul_avx2(SDL_BlitInfo *info) |
659 |
| -{ |
660 |
| - BAD_AVX2_FUNCTION_CALL; |
661 |
| -} |
662 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
663 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
664 |
| - |
665 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
666 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
667 | 585 | void
|
668 | 586 | blit_blend_rgba_add_avx2(SDL_BlitInfo *info)
|
669 | 587 | {
|
@@ -725,17 +643,6 @@ blit_blend_rgba_add_avx2(SDL_BlitInfo *info)
|
725 | 643 | dstp = (Uint32 *)dstp256 + dstskip;
|
726 | 644 | }
|
727 | 645 | }
|
728 |
| -#else |
729 |
| -void |
730 |
| -blit_blend_rgba_add_avx2(SDL_BlitInfo *info) |
731 |
| -{ |
732 |
| - BAD_AVX2_FUNCTION_CALL; |
733 |
| -} |
734 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
735 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
736 |
| - |
737 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
738 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
739 | 646 | void
|
740 | 647 | blit_blend_rgb_add_avx2(SDL_BlitInfo *info)
|
741 | 648 | {
|
@@ -805,17 +712,6 @@ blit_blend_rgb_add_avx2(SDL_BlitInfo *info)
|
805 | 712 | dstp = (Uint32 *)dstp256 + dstskip;
|
806 | 713 | }
|
807 | 714 | }
|
808 |
| -#else |
809 |
| -void |
810 |
| -blit_blend_rgb_add_avx2(SDL_BlitInfo *info) |
811 |
| -{ |
812 |
| - BAD_AVX2_FUNCTION_CALL; |
813 |
| -} |
814 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
815 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
816 |
| - |
817 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
818 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
819 | 715 | void
|
820 | 716 | blit_blend_rgba_sub_avx2(SDL_BlitInfo *info)
|
821 | 717 | {
|
@@ -877,17 +773,6 @@ blit_blend_rgba_sub_avx2(SDL_BlitInfo *info)
|
877 | 773 | dstp = (Uint32 *)dstp256 + dstskip;
|
878 | 774 | }
|
879 | 775 | }
|
880 |
| -#else |
881 |
| -void |
882 |
| -blit_blend_rgba_sub_avx2(SDL_BlitInfo *info) |
883 |
| -{ |
884 |
| - BAD_AVX2_FUNCTION_CALL; |
885 |
| -} |
886 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
887 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
888 |
| - |
889 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
890 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
891 | 776 | void
|
892 | 777 | blit_blend_rgb_sub_avx2(SDL_BlitInfo *info)
|
893 | 778 | {
|
@@ -957,17 +842,6 @@ blit_blend_rgb_sub_avx2(SDL_BlitInfo *info)
|
957 | 842 | dstp = (Uint32 *)dstp256 + dstskip;
|
958 | 843 | }
|
959 | 844 | }
|
960 |
| -#else |
961 |
| -void |
962 |
| -blit_blend_rgb_sub_avx2(SDL_BlitInfo *info) |
963 |
| -{ |
964 |
| - BAD_AVX2_FUNCTION_CALL; |
965 |
| -} |
966 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
967 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
968 |
| - |
969 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
970 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
971 | 845 | void
|
972 | 846 | blit_blend_rgba_max_avx2(SDL_BlitInfo *info)
|
973 | 847 | {
|
@@ -1029,17 +903,6 @@ blit_blend_rgba_max_avx2(SDL_BlitInfo *info)
|
1029 | 903 | dstp = (Uint32 *)dstp256 + dstskip;
|
1030 | 904 | }
|
1031 | 905 | }
|
1032 |
| -#else |
1033 |
| -void |
1034 |
| -blit_blend_rgba_max_avx2(SDL_BlitInfo *info) |
1035 |
| -{ |
1036 |
| - BAD_AVX2_FUNCTION_CALL; |
1037 |
| -} |
1038 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1039 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
1040 |
| - |
1041 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1042 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
1043 | 906 | void
|
1044 | 907 | blit_blend_rgb_max_avx2(SDL_BlitInfo *info)
|
1045 | 908 | {
|
@@ -1109,17 +972,6 @@ blit_blend_rgb_max_avx2(SDL_BlitInfo *info)
|
1109 | 972 | dstp = (Uint32 *)dstp256 + dstskip;
|
1110 | 973 | }
|
1111 | 974 | }
|
1112 |
| -#else |
1113 |
| -void |
1114 |
| -blit_blend_rgb_max_avx2(SDL_BlitInfo *info) |
1115 |
| -{ |
1116 |
| - BAD_AVX2_FUNCTION_CALL; |
1117 |
| -} |
1118 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1119 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
1120 |
| - |
1121 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1122 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
1123 | 975 | void
|
1124 | 976 | blit_blend_rgba_min_avx2(SDL_BlitInfo *info)
|
1125 | 977 | {
|
@@ -1181,17 +1033,6 @@ blit_blend_rgba_min_avx2(SDL_BlitInfo *info)
|
1181 | 1033 | dstp = (Uint32 *)dstp256 + dstskip;
|
1182 | 1034 | }
|
1183 | 1035 | }
|
1184 |
| -#else |
1185 |
| -void |
1186 |
| -blit_blend_rgba_min_avx2(SDL_BlitInfo *info) |
1187 |
| -{ |
1188 |
| - BAD_AVX2_FUNCTION_CALL; |
1189 |
| -} |
1190 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1191 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
1192 |
| - |
1193 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1194 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
1195 | 1036 | void
|
1196 | 1037 | blit_blend_rgb_min_avx2(SDL_BlitInfo *info)
|
1197 | 1038 | {
|
@@ -1261,17 +1102,6 @@ blit_blend_rgb_min_avx2(SDL_BlitInfo *info)
|
1261 | 1102 | dstp = (Uint32 *)dstp256 + dstskip;
|
1262 | 1103 | }
|
1263 | 1104 | }
|
1264 |
| -#else |
1265 |
| -void |
1266 |
| -blit_blend_rgb_min_avx2(SDL_BlitInfo *info) |
1267 |
| -{ |
1268 |
| - BAD_AVX2_FUNCTION_CALL; |
1269 |
| -} |
1270 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1271 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
1272 |
| - |
1273 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1274 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
1275 | 1105 | void
|
1276 | 1106 | blit_blend_premultiplied_avx2(SDL_BlitInfo *info)
|
1277 | 1107 | {
|
@@ -1521,14 +1351,6 @@ blit_blend_premultiplied_avx2(SDL_BlitInfo *info)
|
1521 | 1351 | dstp = (Uint32 *)dstp256 + dstskip;
|
1522 | 1352 | }
|
1523 | 1353 | }
|
1524 |
| -#else |
1525 |
| -void |
1526 |
| -blit_blend_premultiplied_avx2(SDL_BlitInfo *info) |
1527 |
| -{ |
1528 |
| - BAD_AVX2_FUNCTION_CALL; |
1529 |
| -} |
1530 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1531 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
1532 | 1354 |
|
1533 | 1355 | #define PREMUL_ALPHA_CODE \
|
1534 | 1356 | /* extract the alpha */ \
|
@@ -1558,8 +1380,6 @@ blit_blend_premultiplied_avx2(SDL_BlitInfo *info)
|
1558 | 1380 | /*add the original alpha back in*/ \
|
1559 | 1381 | mm_dst = _mm256_or_si256(mm_dst, mm_alpha_in);
|
1560 | 1382 |
|
1561 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1562 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
1563 | 1383 | void
|
1564 | 1384 | premul_surf_color_by_alpha_avx2(SDL_Surface *src, SDL_Surface *dst)
|
1565 | 1385 | {
|
@@ -1635,11 +1455,4 @@ premul_surf_color_by_alpha_avx2(SDL_Surface *src, SDL_Surface *dst)
|
1635 | 1455 | dstp += dst_skip;
|
1636 | 1456 | }
|
1637 | 1457 | }
|
1638 |
| -#else |
1639 |
| -void |
1640 |
| -premul_surf_color_by_alpha_avx2(SDL_Surface *src, SDL_Surface *dst) |
1641 |
| -{ |
1642 |
| - BAD_AVX2_FUNCTION_CALL; |
1643 |
| -} |
1644 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1645 |
| -!defined(SDL_DISABLE_IMMINTRIN_H) */ |
| 1458 | +#endif /* PG_HAS_AVX2 */ |
0 commit comments