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