|
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 |
| -/* This returns 1 when avx2 is available at runtime but support for it isn't |
30 |
| - * compiled in, 0 in all other cases */ |
31 |
| -int |
32 |
| -pg_avx2_at_runtime_but_uncompiled() |
33 |
| -{ |
34 |
| - if (SDL_HasAVX2()) { |
35 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
36 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
37 |
| - return 0; |
38 |
| -#else |
39 |
| - return 1; |
40 |
| -#endif /* defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
41 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) */ |
42 |
| - } |
43 |
| - return 0; |
44 |
| -} |
45 |
| - |
46 | 3 | /* just prints the first/lower 128 bits, in two chunks */
|
47 | 4 | // static void
|
48 | 5 | //_debug_print256_num(__m256i var, const char *msg)
|
@@ -190,8 +147,7 @@ pg_avx2_at_runtime_but_uncompiled()
|
190 | 147 | _mm256_srli_epi16( \
|
191 | 148 | _mm256_mulhi_epu16(MM256I, _mm256_set1_epi16((short)0x8081)), 7);
|
192 | 149 |
|
193 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
194 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
| 150 | +#ifdef PG_HAS_AVX2 |
195 | 151 | void
|
196 | 152 | alphablit_alpha_avx2_argb_no_surf_alpha_opaque_dst(SDL_BlitInfo *info)
|
197 | 153 | {
|
@@ -258,17 +214,7 @@ alphablit_alpha_avx2_argb_no_surf_alpha_opaque_dst(SDL_BlitInfo *info)
|
258 | 214 | * surfaces. */
|
259 | 215 | pixels_dst = _mm256_and_si256(pixels_dst, mask_out_alpha);)
|
260 | 216 | }
|
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 | 217 |
|
270 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
271 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
272 | 218 | void
|
273 | 219 | alphablit_alpha_avx2_argb_no_surf_alpha(SDL_BlitInfo *info)
|
274 | 220 | {
|
@@ -324,17 +270,7 @@ alphablit_alpha_avx2_argb_no_surf_alpha(SDL_BlitInfo *info)
|
324 | 270 | shuff_dst =
|
325 | 271 | _mm256_blendv_epi8(shuff_dst, new_dst_alpha, combine_rgba_mask);))
|
326 | 272 | }
|
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 | 273 |
|
336 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
337 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
338 | 274 | void
|
339 | 275 | alphablit_alpha_avx2_argb_surf_alpha(SDL_BlitInfo *info)
|
340 | 276 | {
|
@@ -406,17 +342,6 @@ alphablit_alpha_avx2_argb_surf_alpha(SDL_BlitInfo *info)
|
406 | 342 | shuff_dst =
|
407 | 343 | _mm256_blendv_epi8(shuff_dst, new_dst_alpha, combine_rgba_mask);))
|
408 | 344 | }
|
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 | 345 | void
|
421 | 346 | blit_blend_rgba_mul_avx2(SDL_BlitInfo *info)
|
422 | 347 | {
|
@@ -524,17 +449,6 @@ blit_blend_rgba_mul_avx2(SDL_BlitInfo *info)
|
524 | 449 | dstp = (Uint32 *)dstp256 + dstskip;
|
525 | 450 | }
|
526 | 451 | }
|
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 | 452 | void
|
539 | 453 | blit_blend_rgb_mul_avx2(SDL_BlitInfo *info)
|
540 | 454 | {
|
@@ -653,17 +567,6 @@ blit_blend_rgb_mul_avx2(SDL_BlitInfo *info)
|
653 | 567 | dstp = (Uint32 *)dstp256 + dstskip;
|
654 | 568 | }
|
655 | 569 | }
|
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 | 570 | void
|
668 | 571 | blit_blend_rgba_add_avx2(SDL_BlitInfo *info)
|
669 | 572 | {
|
@@ -725,17 +628,6 @@ blit_blend_rgba_add_avx2(SDL_BlitInfo *info)
|
725 | 628 | dstp = (Uint32 *)dstp256 + dstskip;
|
726 | 629 | }
|
727 | 630 | }
|
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 | 631 | void
|
740 | 632 | blit_blend_rgb_add_avx2(SDL_BlitInfo *info)
|
741 | 633 | {
|
@@ -805,17 +697,6 @@ blit_blend_rgb_add_avx2(SDL_BlitInfo *info)
|
805 | 697 | dstp = (Uint32 *)dstp256 + dstskip;
|
806 | 698 | }
|
807 | 699 | }
|
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 | 700 | void
|
820 | 701 | blit_blend_rgba_sub_avx2(SDL_BlitInfo *info)
|
821 | 702 | {
|
@@ -877,17 +758,6 @@ blit_blend_rgba_sub_avx2(SDL_BlitInfo *info)
|
877 | 758 | dstp = (Uint32 *)dstp256 + dstskip;
|
878 | 759 | }
|
879 | 760 | }
|
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 | 761 | void
|
892 | 762 | blit_blend_rgb_sub_avx2(SDL_BlitInfo *info)
|
893 | 763 | {
|
@@ -957,17 +827,6 @@ blit_blend_rgb_sub_avx2(SDL_BlitInfo *info)
|
957 | 827 | dstp = (Uint32 *)dstp256 + dstskip;
|
958 | 828 | }
|
959 | 829 | }
|
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 | 830 | void
|
972 | 831 | blit_blend_rgba_max_avx2(SDL_BlitInfo *info)
|
973 | 832 | {
|
@@ -1029,17 +888,6 @@ blit_blend_rgba_max_avx2(SDL_BlitInfo *info)
|
1029 | 888 | dstp = (Uint32 *)dstp256 + dstskip;
|
1030 | 889 | }
|
1031 | 890 | }
|
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 | 891 | void
|
1044 | 892 | blit_blend_rgb_max_avx2(SDL_BlitInfo *info)
|
1045 | 893 | {
|
@@ -1109,17 +957,6 @@ blit_blend_rgb_max_avx2(SDL_BlitInfo *info)
|
1109 | 957 | dstp = (Uint32 *)dstp256 + dstskip;
|
1110 | 958 | }
|
1111 | 959 | }
|
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 | 960 | void
|
1124 | 961 | blit_blend_rgba_min_avx2(SDL_BlitInfo *info)
|
1125 | 962 | {
|
@@ -1181,17 +1018,6 @@ blit_blend_rgba_min_avx2(SDL_BlitInfo *info)
|
1181 | 1018 | dstp = (Uint32 *)dstp256 + dstskip;
|
1182 | 1019 | }
|
1183 | 1020 | }
|
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 | 1021 | void
|
1196 | 1022 | blit_blend_rgb_min_avx2(SDL_BlitInfo *info)
|
1197 | 1023 | {
|
@@ -1261,17 +1087,6 @@ blit_blend_rgb_min_avx2(SDL_BlitInfo *info)
|
1261 | 1087 | dstp = (Uint32 *)dstp256 + dstskip;
|
1262 | 1088 | }
|
1263 | 1089 | }
|
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 | 1090 | void
|
1276 | 1091 | blit_blend_premultiplied_avx2(SDL_BlitInfo *info)
|
1277 | 1092 | {
|
@@ -1521,14 +1336,6 @@ blit_blend_premultiplied_avx2(SDL_BlitInfo *info)
|
1521 | 1336 | dstp = (Uint32 *)dstp256 + dstskip;
|
1522 | 1337 | }
|
1523 | 1338 | }
|
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 | 1339 |
|
1533 | 1340 | #define PREMUL_ALPHA_CODE \
|
1534 | 1341 | /* extract the alpha */ \
|
@@ -1558,8 +1365,6 @@ blit_blend_premultiplied_avx2(SDL_BlitInfo *info)
|
1558 | 1365 | /*add the original alpha back in*/ \
|
1559 | 1366 | mm_dst = _mm256_or_si256(mm_dst, mm_alpha_in);
|
1560 | 1367 |
|
1561 |
| -#if defined(__AVX2__) && defined(HAVE_IMMINTRIN_H) && \ |
1562 |
| - !defined(SDL_DISABLE_IMMINTRIN_H) |
1563 | 1368 | void
|
1564 | 1369 | premul_surf_color_by_alpha_avx2(SDL_Surface *src, SDL_Surface *dst)
|
1565 | 1370 | {
|
@@ -1635,11 +1440,4 @@ premul_surf_color_by_alpha_avx2(SDL_Surface *src, SDL_Surface *dst)
|
1635 | 1440 | dstp += dst_skip;
|
1636 | 1441 | }
|
1637 | 1442 | }
|
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) */ |
| 1443 | +#endif /* PG_HAS_AVX2 */ |
0 commit comments