pixman: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 13 17:56:31 UTC 2024


 meson.build             |   41 -----------------------------------------
 meson_options.txt       |   11 -----------
 pixman/meson.build      |   12 +++++-------
 pixman/pixman-arm.c     |   14 +++-----------
 pixman/pixman-mmx.c     |   25 ++-----------------------
 pixman/pixman-private.h |    2 +-
 6 files changed, 11 insertions(+), 94 deletions(-)

New commits:
commit 2e29b7c43d5a3be7b70d4326f975ad1cdf18ac81
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Aug 8 16:10:12 2024 -0400

    iwmmxt: Drop support
    
    In all likelyhood unused for at least many years, and possibly ever.
    
    Support is deprecated and will be removed in gcc-15. See deprecation
    notice in https://gcc.gnu.org/gcc-13/changes.html
    
    Closes: https://gitlab.freedesktop.org/pixman/pixman/-/issues/98

diff --git a/meson.build b/meson.build
index 3dd3b12..8a6fda3 100644
--- a/meson.build
+++ b/meson.build
@@ -332,47 +332,6 @@ elif use_a64neon.enabled()
   error('A64 NEON Support unavailable, but required')
 endif
 
-use_iwmmxt = get_option('iwmmxt')
-have_iwmmxt = false
-iwmmxt_flags = ['-flax-vector-conversions', '-Winline']
-if not use_iwmmxt.disabled()
-  if get_option('iwmmxt2')
-    iwmmxt_flags += '-march=iwmmxt2'
-  else
-    iwmmxt_flags += '-march=iwmmxt'
-  endif
-
-  if host_machine.cpu_family() == 'arm'
-    if cc.compiles('''
-        #ifndef __IWMMXT__
-        #error "IWMMXT not enabled (with -march=iwmmxt)"
-        #endif
-        #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
-        #error "Need GCC >= 4.8 for IWMMXT intrinsics"
-        #endif
-        #include <mmintrin.h>
-        int main () {
-          union {
-            __m64 v;
-            char c[8];
-          } a = { .c = {1, 2, 3, 4, 5, 6, 7, 8} };
-          int b = 4;
-          __m64 c = _mm_srli_si64 (a.v, b);
-        }
-        ''',
-        args : iwmmxt_flags,
-        name : 'IWMMXT Intrinsic Support')
-      have_iwmmxt = true
-    endif
-  endif
-endif
-
-if have_iwmmxt
-  config.set10('USE_ARM_IWMMXT', true)
-elif use_iwmmxt.enabled()
-  error('IWMMXT Support unavailable, but required')
-endif
-
 use_mips_dspr2 = get_option('mips-dspr2')
 have_mips_dspr2 = false
 mips_dspr2_flags = ['-mdspr2']
diff --git a/meson_options.txt b/meson_options.txt
index df10889..0d0eb19 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -58,17 +58,6 @@ option(
   type : 'feature',
   description : 'Use ARM A64 NEON intrinsic optimized paths',
 )
-option(
-  'iwmmxt',
-  type : 'feature',
-  description : 'Use ARM IWMMXT intrinsic optimized paths',
-)
-option(
-  'iwmmxt2',
-  type : 'boolean',
-  value : true,
-  description : 'Use ARM IWMMXT2 intrinsic instead of IWMMXT',
-)
 option(
   'mips-dspr2',
   type : 'feature',
diff --git a/pixman/meson.build b/pixman/meson.build
index 62ec66b..a7ca346 100644
--- a/pixman/meson.build
+++ b/pixman/meson.build
@@ -38,15 +38,13 @@ endif
 
 pixman_simd_libs = []
 simds = [
-  # the mmx library can be compiled with mmx on x86/x86_64, iwmmxt on
-  # some arm cores, or loongson mmi on loongson mips systems. The
-  # libraries will all have the same name, "pixman-mmx", but there is
-  # no chance of more than one version being built in the same build
-  # because no system could have mmx, iwmmxt, and mmi, and it
-  # simplifies the build logic to give them the same name.
+  # the mmx library can be compiled with mmx on x86/x86_64 or loongson
+  # mmi on loongson mips systems. The libraries will all have the same
+  # name, "pixman-mmx", but there is no chance of more than one version
+  # being built in the same build because no system could have mmx and
+  # mmi, and it simplifies the build logic to give them the same name.
   ['mmx', have_mmx, mmx_flags, []],
   ['mmx', have_loongson_mmi, loongson_mmi_flags, []],
-  ['mmx', have_iwmmxt, iwmmxt_flags, []],
 
   ['sse2', have_sse2, sse2_flags, []],
   ['ssse3', have_ssse3, ssse3_flags, []],
diff --git a/pixman/pixman-arm.c b/pixman/pixman-arm.c
index 288172b..d271e96 100644
--- a/pixman/pixman-arm.c
+++ b/pixman/pixman-arm.c
@@ -30,11 +30,10 @@ typedef enum
     ARM_V7		= (1 << 0),
     ARM_V6		= (1 << 1),
     ARM_VFP		= (1 << 2),
-    ARM_NEON		= (1 << 3),
-    ARM_IWMMXT		= (1 << 4)
+    ARM_NEON		= (1 << 3)
 } arm_cpu_features_t;
 
-#if defined(USE_ARM_SIMD) || defined(USE_ARM_NEON) || defined(USE_ARM_IWMMXT)
+#if defined(USE_ARM_SIMD) || defined(USE_ARM_NEON)
 
 #if defined(_MSC_VER)
 
@@ -154,8 +153,6 @@ detect_cpu_features (void)
 		 */
 		if ((hwcap & 64) != 0)
 		    features |= ARM_VFP;
-		if ((hwcap & 512) != 0)
-		    features |= ARM_IWMMXT;
 		/* this flag is only present on kernel 2.6.29 */
 		if ((hwcap & 4096) != 0)
 		    features |= ARM_NEON;
@@ -226,7 +223,7 @@ have_feature (arm_cpu_features_t feature)
     return (features & feature) == feature;
 }
 
-#endif /* USE_ARM_SIMD || USE_ARM_NEON || USE_ARM_IWMMXT */
+#endif /* USE_ARM_SIMD || USE_ARM_NEON */
 
 pixman_implementation_t *
 _pixman_arm_get_implementations (pixman_implementation_t *imp)
@@ -236,11 +233,6 @@ _pixman_arm_get_implementations (pixman_implementation_t *imp)
 	imp = _pixman_implementation_create_arm_simd (imp);
 #endif
 
-#ifdef USE_ARM_IWMMXT
-    if (!_pixman_disabled ("arm-iwmmxt") && have_feature (ARM_IWMMXT))
-	imp = _pixman_implementation_create_mmx (imp);
-#endif
-
 #ifdef USE_ARM_NEON
     if (!_pixman_disabled ("arm-neon") && have_feature (ARM_NEON))
 	imp = _pixman_implementation_create_arm_neon (imp);
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 52c70e9..110a98f 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -33,7 +33,7 @@
 #include <pixman-config.h>
 #endif
 
-#if defined USE_X86_MMX || defined USE_ARM_IWMMXT || defined USE_LOONGSON_MMI
+#if defined USE_X86_MMX || defined USE_LOONGSON_MMI
 
 #ifdef USE_LOONGSON_MMI
 #include <loongson-mmintrin.h>
@@ -50,15 +50,6 @@
 #define CHECKPOINT()
 #endif
 
-#if defined USE_ARM_IWMMXT && __GNUC__ == 4 && __GNUC_MINOR__ < 8
-/* Empty the multimedia state. For some reason, ARM's mmintrin.h doesn't provide this.  */
-extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_empty (void)
-{
-
-}
-#endif
-
 #ifdef USE_X86_MMX
 # if (defined(__SSE2__) || defined(__SUNPRO_C) || defined(_MSC_VER) || defined(_WIN64))
 #  include <xmmintrin.h>
@@ -391,13 +382,6 @@ static force_inline __m64 ldq_u(__m64 *p)
     __m64 r;
     memcpy(&r, p, sizeof(__m64));
     return r;
-#elif defined USE_ARM_IWMMXT
-    int align = (uintptr_t)p & 7;
-    __m64 *aligned_p;
-    if (align == 0)
-	return *p;
-    aligned_p = (__m64 *)((uintptr_t)p & ~7);
-    return (__m64) _mm_align_si64 (aligned_p[0], aligned_p[1], align);
 #else
     struct __una_u64 { __m64 x __attribute__((packed)); };
     const struct __una_u64 *ptr = (const struct __una_u64 *) p;
@@ -656,13 +640,8 @@ pack_4xpacked565 (__m64 a, __m64 b)
     t1 = _mm_or_si64 (t1, g1);
 
     t0 = shift(t0, -5);
-#ifdef USE_ARM_IWMMXT
-    t1 = shift(t1, -5);
-    return _mm_packs_pu32 (t0, t1);
-#else
     t1 = shift(t1, -5 + 16);
     return _mm_shuffle_pi16 (_mm_or_si64 (t0, t1), _MM_SHUFFLE (3, 1, 2, 0));
-#endif
 }
 
 #ifndef _MSC_VER
@@ -4150,4 +4129,4 @@ _pixman_implementation_create_mmx (pixman_implementation_t *fallback)
     return imp;
 }
 
-#endif /* USE_X86_MMX || USE_ARM_IWMMXT || USE_LOONGSON_MMI */
+#endif /* USE_X86_MMX || USE_LOONGSON_MMI */
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index 34fb69b..9754e46 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -615,7 +615,7 @@ _pixman_implementation_create_fast_path (pixman_implementation_t *fallback);
 pixman_implementation_t *
 _pixman_implementation_create_noop (pixman_implementation_t *fallback);
 
-#if defined USE_X86_MMX || defined USE_ARM_IWMMXT || defined USE_LOONGSON_MMI
+#if defined USE_X86_MMX || defined USE_LOONGSON_MMI
 pixman_implementation_t *
 _pixman_implementation_create_mmx (pixman_implementation_t *fallback);
 #endif


More information about the xorg-commit mailing list