blob: 7e2782f0fc21092a80b56431b320771024b2c175 [file] [log] [blame]
//! Implements `PartialEq` for vector types.
macro_rules! impl_cmp_partial_eq {
(
[$elem_ty:ident; $elem_count:expr]:
$id:ident | $test_tt:tt |
($true:expr, $false:expr)
) => {
// FIXME: https://github.com/rust-lang-nursery/rust-clippy/issues/2892
#[cfg_attr(feature = "cargo-clippy", allow(clippy::partialeq_ne_impl))]
impl crate::cmp::PartialEq<$id> for $id {
#[inline]
fn eq(&self, other: &Self) -> bool {
$id::eq(*self, *other).all()
}
#[inline]
fn ne(&self, other: &Self) -> bool {
$id::ne(*self, *other).any()
}
}
// FIXME: https://github.com/rust-lang-nursery/rust-clippy/issues/2892
#[cfg_attr(feature = "cargo-clippy", allow(clippy::partialeq_ne_impl))]
impl crate::cmp::PartialEq<LexicographicallyOrdered<$id>>
for LexicographicallyOrdered<$id>
{
#[inline]
fn eq(&self, other: &Self) -> bool {
self.0 == other.0
}
#[inline]
fn ne(&self, other: &Self) -> bool {
self.0 != other.0
}
}
test_if!{
$test_tt:
paste::item! {
pub mod [<$id _cmp_PartialEq>] {
use super::*;
#[cfg_attr(not(target_arch = "wasm32"), test)] #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
fn partial_eq() {
let a = $id::splat($false);
let b = $id::splat($true);
assert!(a != b);
assert!(!(a == b));
assert!(a == a);
assert!(!(a != a));
if $id::lanes() > 1 {
let a = $id::splat($false).replace(0, $true);
let b = $id::splat($true);
assert!(a != b);
assert!(!(a == b));
assert!(a == a);
assert!(!(a != a));
}
}
}
}
}
};
}