* Tracking Issues for this and the previous patch: gcc#120622 gh#serge-sans-paille/pythran#2321 gh#serge-sans-paille/pythran#2324 gh#serge-sans-paille/pythran#2325 boo#1243779 - Fix failures with GCC15: GCC15_fix_Add-missing-operators-to-nditerator.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-pythran?expand=0&rev=58
130 lines
4.1 KiB
Diff
130 lines
4.1 KiB
Diff
From 14b78f0db9cbd253414b751d14644843354e7557 Mon Sep 17 00:00:00 2001
|
|
From: cielavenir <cielartisan@gmail.com>
|
|
Date: Fri, 6 Jun 2025 16:21:52 +0900
|
|
Subject: [PATCH 1/5] Add missing operators to nditerator
|
|
|
|
---
|
|
pythran/pythonic/include/types/nditerator.hpp | 9 +++
|
|
pythran/pythonic/types/nditerator.hpp | 57 +++++++++++++++++++
|
|
2 files changed, 66 insertions(+)
|
|
|
|
diff --git a/pythran/pythonic/include/types/nditerator.hpp b/pythran/pythonic/include/types/nditerator.hpp
|
|
index 0d1f8281a..934e5cc0a 100644
|
|
--- a/pythran/pythonic/include/types/nditerator.hpp
|
|
+++ b/pythran/pythonic/include/types/nditerator.hpp
|
|
@@ -66,6 +66,9 @@ namespace types
|
|
bool operator!=(nditerator<E> const &other) const;
|
|
bool operator==(nditerator<E> const &other) const;
|
|
bool operator<(nditerator<E> const &other) const;
|
|
+ bool operator>(nditerator<E> const &other) const;
|
|
+ bool operator<=(nditerator<E> const &other) const;
|
|
+ bool operator>=(nditerator<E> const &other) const;
|
|
nditerator &operator=(nditerator const &other);
|
|
};
|
|
|
|
@@ -92,6 +95,9 @@ namespace types
|
|
bool operator!=(const_nditerator<E> const &other) const;
|
|
bool operator==(const_nditerator<E> const &other) const;
|
|
bool operator<(const_nditerator<E> const &other) const;
|
|
+ bool operator>(const_nditerator<E> const &other) const;
|
|
+ bool operator<=(const_nditerator<E> const &other) const;
|
|
+ bool operator>=(const_nditerator<E> const &other) const;
|
|
const_nditerator &operator=(const_nditerator const &other);
|
|
};
|
|
#ifdef USE_XSIMD
|
|
@@ -115,6 +121,9 @@ namespace types
|
|
bool operator!=(const_simd_nditerator const &other) const;
|
|
bool operator==(const_simd_nditerator const &other) const;
|
|
bool operator<(const_simd_nditerator const &other) const;
|
|
+ bool operator>(const_simd_nditerator const &other) const;
|
|
+ bool operator<=(const_simd_nditerator const &other) const;
|
|
+ bool operator>=(const_simd_nditerator const &other) const;
|
|
const_simd_nditerator &operator=(const_simd_nditerator const &other);
|
|
void store(xsimd::batch<typename E::dtype> const &);
|
|
};
|
|
diff --git a/pythran/pythonic/types/nditerator.hpp b/pythran/pythonic/types/nditerator.hpp
|
|
index 2cb2b9047..ef2b7c4a8 100644
|
|
--- a/pythran/pythonic/types/nditerator.hpp
|
|
+++ b/pythran/pythonic/types/nditerator.hpp
|
|
@@ -97,6 +97,24 @@ namespace types
|
|
return index < other.index;
|
|
}
|
|
|
|
+ template <class E>
|
|
+ bool nditerator<E>::operator>(nditerator<E> const &other) const
|
|
+ {
|
|
+ return index > other.index;
|
|
+ }
|
|
+
|
|
+ template <class E>
|
|
+ bool nditerator<E>::operator<=(nditerator<E> const &other) const
|
|
+ {
|
|
+ return !(index > other.index);
|
|
+ }
|
|
+
|
|
+ template <class E>
|
|
+ bool nditerator<E>::operator>=(nditerator<E> const &other) const
|
|
+ {
|
|
+ return !(index < other.index);
|
|
+ }
|
|
+
|
|
template <class E>
|
|
nditerator<E> &nditerator<E>::operator=(nditerator<E> const &other)
|
|
{
|
|
@@ -188,6 +206,24 @@ namespace types
|
|
return index < other.index;
|
|
}
|
|
|
|
+ template <class E>
|
|
+ bool const_nditerator<E>::operator>(const_nditerator<E> const &other) const
|
|
+ {
|
|
+ return index > other.index;
|
|
+ }
|
|
+
|
|
+ template <class E>
|
|
+ bool const_nditerator<E>::operator<=(const_nditerator<E> const &other) const
|
|
+ {
|
|
+ return !(index > other.index);
|
|
+ }
|
|
+
|
|
+ template <class E>
|
|
+ bool const_nditerator<E>::operator>=(const_nditerator<E> const &other) const
|
|
+ {
|
|
+ return !(index < other.index);
|
|
+ }
|
|
+
|
|
template <class E>
|
|
const_nditerator<E> &
|
|
const_nditerator<E>::operator=(const_nditerator const &other)
|
|
@@ -271,6 +307,27 @@ namespace types
|
|
return data < other.data;
|
|
}
|
|
|
|
+ template <class E>
|
|
+ bool const_simd_nditerator<E>::operator>(
|
|
+ const_simd_nditerator<E> const &other) const
|
|
+ {
|
|
+ return data > other.data;
|
|
+ }
|
|
+
|
|
+ template <class E>
|
|
+ bool const_simd_nditerator<E>::operator<=(
|
|
+ const_simd_nditerator<E> const &other) const
|
|
+ {
|
|
+ return !(data > other.data);
|
|
+ }
|
|
+
|
|
+ template <class E>
|
|
+ bool const_simd_nditerator<E>::operator>=(
|
|
+ const_simd_nditerator<E> const &other) const
|
|
+ {
|
|
+ return !(data < other.data);
|
|
+ }
|
|
+
|
|
template <class E>
|
|
const_simd_nditerator<E> &
|
|
const_simd_nditerator<E>::operator=(const_simd_nditerator const &other)
|
|
--
|
|
2.49.0
|
|
|