Skip to content

Commit

Permalink
Add some negatives
Browse files Browse the repository at this point in the history
  • Loading branch information
Licenser committed Apr 5, 2020
1 parent 74b8e04 commit 5a276b6
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 80 deletions.
48 changes: 24 additions & 24 deletions crates/core_arch/src/aarch64/neon/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,89 +299,89 @@ mod test {

#[simd_test(enable = "neon")]
unsafe fn test_vceq_u64() {
let a: u64x1 = u64x1::new(0x00);
let b: u64x1 = u64x1::new(0x00);
let a: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let b: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let e: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x1 = transmute(vceq_u64(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u64x1 = u64x1::new(0x00);
let b: u64x1 = u64x1::new(0x00);
let a: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let b: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let e: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x1 = transmute(vceq_u64(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_u64() {
let a: u64x2 = u64x2::new(0x00, 0x01);
let b: u64x2 = u64x2::new(0x00, 0x01);
let a: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0x01);
let b: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0x01);
let e: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x2 = transmute(vceqq_u64(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u64x2 = u64x2::new(0x00, 0x01);
let b: u64x2 = u64x2::new(0x00, 0x00);
let a: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0xFF_FF_FF_FF_FF_FF_FF_FF);
let b: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0);
let e: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0);
let r: u64x2 = transmute(vceqq_u64(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceq_s64() {
let a: i64x1 = i64x1::new(0x00);
let b: i64x1 = i64x1::new(0x00);
let a: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let b: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let e: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x1 = transmute(vceq_s64(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i64x1 = i64x1::new(0x00);
let b: i64x1 = i64x1::new(0x00);
let a: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let b: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let e: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x1 = transmute(vceq_s64(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_s64() {
let a: i64x2 = i64x2::new(0x00, 0x01);
let b: i64x2 = i64x2::new(0x00, 0x01);
let a: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, 0x01);
let b: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, 0x01);
let e: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x2 = transmute(vceqq_s64(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i64x2 = i64x2::new(0x00, 0x01);
let b: i64x2 = i64x2::new(0x00, 0x00);
let a: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, 0x7F_FF_FF_FF_FF_FF_FF_FF);
let b: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, -9223372036854775808i64);
let e: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0);
let r: u64x2 = transmute(vceqq_s64(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceq_p64() {
let a: i64x1 = i64x1::new(0x00);
let b: i64x1 = i64x1::new(0x00);
let a: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let b: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let e: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x1 = transmute(vceq_p64(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i64x1 = i64x1::new(0x00);
let b: i64x1 = i64x1::new(0x00);
let a: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let b: i64x1 = i64x1::new(0x7F_FF_FF_FF_FF_FF_FF_FF);
let e: u64x1 = u64x1::new(0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x1 = transmute(vceq_p64(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_p64() {
let a: i64x2 = i64x2::new(0x00, 0x01);
let b: i64x2 = i64x2::new(0x00, 0x01);
let a: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, 0x01);
let b: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, 0x01);
let e: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0xFF_FF_FF_FF_FF_FF_FF_FF);
let r: u64x2 = transmute(vceqq_p64(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i64x2 = i64x2::new(0x00, 0x01);
let b: i64x2 = i64x2::new(0x00, 0x00);
let a: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, 0x7F_FF_FF_FF_FF_FF_FF_FF);
let b: i64x2 = i64x2::new(0x7F_FF_FF_FF_FF_FF_FF_FF, -9223372036854775808i64);
let e: u64x2 = u64x2::new(0xFF_FF_FF_FF_FF_FF_FF_FF, 0);
let r: u64x2 = transmute(vceqq_p64(transmute(a), transmute(b)));
assert_eq!(r, e);
Expand Down
113 changes: 57 additions & 56 deletions crates/core_arch/src/arm/neon/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2463,6 +2463,7 @@ pub unsafe fn vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
}

#[cfg(test)]
#[allow(overflowing_literals)]
mod test {
use super::*;
use crate::core_arch::simd::*;
Expand Down Expand Up @@ -3071,14 +3072,14 @@ mod test {

#[simd_test(enable = "neon")]
unsafe fn test_vceq_u8() {
let a: u8x8 = u8x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u8x8 = u8x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let a: u8x8 = u8x8::new(0xFF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u8x8 = u8x8::new(0xFF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let e: u8x8 = u8x8::new(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
let r: u8x8 = transmute(vceq_u8(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u8x8 = u8x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u8x8 = u8x8::new(0x00, 0x00, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let a: u8x8 = u8x8::new(0xFF, 0xFF, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u8x8 = u8x8::new(0xFF, 0, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let e: u8x8 = u8x8::new(0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0);
let r: u8x8 = transmute(vceq_u8(transmute(a), transmute(b)));
assert_eq!(r, e);
Expand All @@ -3087,12 +3088,12 @@ mod test {
#[simd_test(enable = "neon")]
unsafe fn test_vceqq_u8() {
let a: u8x16 = u8x16::new(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F,
0xFF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0,
);
let b: u8x16 = u8x16::new(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F,
0xFF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0,
);
let e: u8x16 = u8x16::new(
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Expand All @@ -3102,12 +3103,12 @@ mod test {
assert_eq!(r, e);

let a: u8x16 = u8x16::new(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F,
0xFF, 0xFF, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0xCC, 0x0D,
0xEE, 0,
);
let b: u8x16 = u8x16::new(
0x00, 0x00, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08, 0x08, 0x00, 0x0A, 0x0A, 0x0C, 0x10,
0x0E, 0x1F,
0xFF, 0, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08, 0x08, 0x00, 0x0A, 0x0A, 0xCC, 0xD0, 0xEE,
0xFF,
);
let e: u8x16 = u8x16::new(
0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0,
Expand All @@ -3118,76 +3119,76 @@ mod test {

#[simd_test(enable = "neon")]
unsafe fn test_vceq_u16() {
let a: u16x4 = u16x4::new(0x00, 0x01, 0x02, 0x03);
let b: u16x4 = u16x4::new(0x00, 0x01, 0x02, 0x03);
let a: u16x4 = u16x4::new(0xFF_FF, 0x01, 0x02, 0x03);
let b: u16x4 = u16x4::new(0xFF_FF, 0x01, 0x02, 0x03);
let e: u16x4 = u16x4::new(0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF);
let r: u16x4 = transmute(vceq_u16(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u16x4 = u16x4::new(0x00, 0x01, 0x02, 0x03);
let b: u16x4 = u16x4::new(0x00, 0x00, 0x02, 0x04);
let a: u16x4 = u16x4::new(0xFF_FF, 0xFF_FF, 0x02, 0x03);
let b: u16x4 = u16x4::new(0xFF_FF, 0, 0x02, 0x04);
let e: u16x4 = u16x4::new(0xFF_FF, 0, 0xFF_FF, 0);
let r: u16x4 = transmute(vceq_u16(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_u16() {
let a: u16x8 = u16x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u16x8 = u16x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let a: u16x8 = u16x8::new(0xFF_FF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u16x8 = u16x8::new(0xFF_FF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let e: u16x8 = u16x8::new(
0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF,
);
let r: u16x8 = transmute(vceqq_u16(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u16x8 = u16x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u16x8 = u16x8::new(0x00, 0x00, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let a: u16x8 = u16x8::new(0xFF_FF, 0xFF_FF, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: u16x8 = u16x8::new(0xFF_FF, 0, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let e: u16x8 = u16x8::new(0xFF_FF, 0, 0xFF_FF, 0, 0xFF_FF, 0, 0xFF_FF, 0);
let r: u16x8 = transmute(vceqq_u16(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceq_u32() {
let a: u32x2 = u32x2::new(0x00, 0x01);
let b: u32x2 = u32x2::new(0x00, 0x01);
let a: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0x01);
let b: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0x01);
let e: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0xFF_FF_FF_FF);
let r: u32x2 = transmute(vceq_u32(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u32x2 = u32x2::new(0x00, 0x01);
let b: u32x2 = u32x2::new(0x00, 0x00);
let a: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0xFF_FF_FF_FF);
let b: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0);
let e: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0);
let r: u32x2 = transmute(vceq_u32(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_u32() {
let a: u32x4 = u32x4::new(0x00, 0x01, 0x02, 0x03);
let b: u32x4 = u32x4::new(0x00, 0x01, 0x02, 0x03);
let a: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0x01, 0x02, 0x03);
let b: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0x01, 0x02, 0x03);
let e: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0xFF_FF_FF_FF, 0xFF_FF_FF_FF, 0xFF_FF_FF_FF);
let r: u32x4 = transmute(vceqq_u32(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: u32x4 = u32x4::new(0x00, 0x01, 0x02, 0x03);
let b: u32x4 = u32x4::new(0x00, 0x00, 0x02, 0x04);
let a: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0xFF_FF_FF_FF, 0x02, 0x03);
let b: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0, 0x02, 0x04);
let e: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0, 0xFF_FF_FF_FF, 0);
let r: u32x4 = transmute(vceqq_u32(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceq_s8() {
let a: i8x8 = i8x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i8x8 = i8x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let a: i8x8 = i8x8::new(0x7F, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i8x8 = i8x8::new(0x7F, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let e: u8x8 = u8x8::new(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
let r: u8x8 = transmute(vceq_s8(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i8x8 = i8x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i8x8 = i8x8::new(0x00, 0x00, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let a: i8x8 = i8x8::new(0x7F, 0x7F, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i8x8 = i8x8::new(0x7F, -128i8, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let e: u8x8 = u8x8::new(0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0);
let r: u8x8 = transmute(vceq_s8(transmute(a), transmute(b)));
assert_eq!(r, e);
Expand All @@ -3196,12 +3197,12 @@ mod test {
#[simd_test(enable = "neon")]
unsafe fn test_vceqq_s8() {
let a: i8x16 = i8x16::new(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F,
0x7F, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, -128i8,
);
let b: i8x16 = i8x16::new(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F,
0x7F, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, -128i8,
);
let e: u8x16 = u8x16::new(
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Expand All @@ -3211,12 +3212,12 @@ mod test {
assert_eq!(r, e);

let a: i8x16 = i8x16::new(
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F,
0x7F, 0x7F, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0xCC, 0x0D,
0xEE, -128i8,
);
let b: i8x16 = i8x16::new(
0x00, 0x00, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08, 0x08, 0x00, 0x0A, 0x0A, 0x0C, 0x10,
0x0E, 0x1F,
0x7F, -128i8, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08, 0x08, 0x00, 0x0A, 0x0A, 0xCC, 0xD0,
0xEE, 0x7F,
);
let e: u8x16 = u8x16::new(
0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0,
Expand All @@ -3227,61 +3228,61 @@ mod test {

#[simd_test(enable = "neon")]
unsafe fn test_vceq_s16() {
let a: i16x4 = i16x4::new(0x00, 0x01, 0x02, 0x03);
let b: i16x4 = i16x4::new(0x00, 0x01, 0x02, 0x03);
let a: i16x4 = i16x4::new(0x7F_FF, 0x01, 0x02, 0x03);
let b: i16x4 = i16x4::new(0x7F_FF, 0x01, 0x02, 0x03);
let e: u16x4 = u16x4::new(0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF);
let r: u16x4 = transmute(vceq_s16(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i16x4 = i16x4::new(0x00, 0x01, 0x02, 0x03);
let b: i16x4 = i16x4::new(0x00, 0x00, 0x02, 0x04);
let a: i16x4 = i16x4::new(0x7F_FF, 0x7F_FF, 0x02, 0x03);
let b: i16x4 = i16x4::new(0x7F_FF, -32768i16, 0x02, 0x04);
let e: u16x4 = u16x4::new(0xFF_FF, 0, 0xFF_FF, 0);
let r: u16x4 = transmute(vceq_s16(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_s16() {
let a: i16x8 = i16x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i16x8 = i16x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let a: i16x8 = i16x8::new(0x7F_FF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i16x8 = i16x8::new(0x7F_FF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let e: u16x8 = u16x8::new(
0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF, 0xFF_FF,
);
let r: u16x8 = transmute(vceqq_s16(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i16x8 = i16x8::new(0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i16x8 = i16x8::new(0x00, 0x00, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let a: i16x8 = i16x8::new(0x7F_FF, 0x7F_FF, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07);
let b: i16x8 = i16x8::new(0x7F_FF, -32768i16, 0x02, 0x04, 0x04, 0x00, 0x06, 0x08);
let e: u16x8 = u16x8::new(0xFF_FF, 0, 0xFF_FF, 0, 0xFF_FF, 0, 0xFF_FF, 0);
let r: u16x8 = transmute(vceqq_s16(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceq_s32() {
let a: i32x2 = i32x2::new(0x00, 0x01);
let b: i32x2 = i32x2::new(0x00, 0x01);
let a: i32x2 = i32x2::new(0x7F_FF_FF_FF, 0x01);
let b: i32x2 = i32x2::new(0x7F_FF_FF_FF, 0x01);
let e: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0xFF_FF_FF_FF);
let r: u32x2 = transmute(vceq_s32(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i32x2 = i32x2::new(0x00, 0x01);
let b: i32x2 = i32x2::new(0x00, 0x00);
let a: i32x2 = i32x2::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
let b: i32x2 = i32x2::new(0x7F_FF_FF_FF, -2147483648i32);
let e: u32x2 = u32x2::new(0xFF_FF_FF_FF, 0);
let r: u32x2 = transmute(vceq_s32(transmute(a), transmute(b)));
assert_eq!(r, e);
}

#[simd_test(enable = "neon")]
unsafe fn test_vceqq_s32() {
let a: i32x4 = i32x4::new(0x00, 0x01, 0x02, 0x03);
let b: i32x4 = i32x4::new(0x00, 0x01, 0x02, 0x03);
let a: i32x4 = i32x4::new(0x7F_FF_FF_FF, 0x01, 0x02, 0x03);
let b: i32x4 = i32x4::new(0x7F_FF_FF_FF, 0x01, 0x02, 0x03);
let e: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0xFF_FF_FF_FF, 0xFF_FF_FF_FF, 0xFF_FF_FF_FF);
let r: u32x4 = transmute(vceqq_s32(transmute(a), transmute(b)));
assert_eq!(r, e);

let a: i32x4 = i32x4::new(0x00, 0x01, 0x02, 0x03);
let b: i32x4 = i32x4::new(0x00, 0x00, 0x02, 0x04);
let a: i32x4 = i32x4::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x02, 0x03);
let b: i32x4 = i32x4::new(0x7F_FF_FF_FF, -2147483648i32, 0x02, 0x04);
let e: u32x4 = u32x4::new(0xFF_FF_FF_FF, 0, 0xFF_FF_FF_FF, 0);
let r: u32x4 = transmute(vceqq_s32(transmute(a), transmute(b)));
assert_eq!(r, e);
Expand Down

0 comments on commit 5a276b6

Please sign in to comment.