Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 79 additions & 74 deletions crates/core_arch/src/aarch64/neon/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,19 +268,6 @@ pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
}
}
#[doc = "Unsigned Absolute difference Long"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]
#[inline]
#[target_feature(enable = "neon")]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
#[cfg_attr(all(test, target_endian = "little"), assert_instr(uabdl2))]
pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
unsafe {
let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
simd_cast(vabd_u8(c, d))
}
}
#[doc = "Unsigned Absolute difference Long"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u16)"]
#[inline]
#[target_feature(enable = "neon")]
Expand All @@ -306,6 +293,19 @@ pub fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
simd_cast(vabd_u32(c, d))
}
}
#[doc = "Unsigned Absolute difference Long"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]
#[inline]
#[target_feature(enable = "neon")]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
#[cfg_attr(all(test, target_endian = "little"), assert_instr(uabdl2))]
pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
unsafe {
let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
simd_cast(vabd_u8(c, d))
}
}
#[doc = "Floating-point absolute value"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_f64)"]
#[inline]
Expand Down Expand Up @@ -25952,7 +25952,7 @@ pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
#[cfg_attr(test, assert_instr(tbl))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
unsafe { vqtbl1(transmute(vcombine_s8(a.0, a.1)), transmute(b)) }
vqtbl1_s8(vcombine_s8(a.0, a.1), vreinterpret_u8_s8(b))
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
Expand All @@ -25961,7 +25961,7 @@ pub fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
#[cfg_attr(test, assert_instr(tbl))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
unsafe { transmute(vqtbl1(transmute(vcombine_u8(a.0, a.1)), b)) }
vqtbl1_u8(vcombine_u8(a.0, a.1), b)
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
Expand All @@ -25970,7 +25970,7 @@ pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
#[cfg_attr(test, assert_instr(tbl))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
unsafe { transmute(vqtbl1(transmute(vcombine_p8(a.0, a.1)), b)) }
vqtbl1_p8(vcombine_p8(a.0, a.1), b)
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_s8)"]
Expand All @@ -25983,7 +25983,7 @@ pub fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
vcombine_s8(a.0, a.1),
vcombine_s8(a.2, unsafe { crate::mem::zeroed() }),
);
unsafe { transmute(vqtbl2(transmute(x.0), transmute(x.1), transmute(b))) }
vqtbl2_s8(x, vreinterpret_u8_s8(b))
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
Expand All @@ -25996,7 +25996,7 @@ pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
vcombine_u8(a.0, a.1),
vcombine_u8(a.2, unsafe { crate::mem::zeroed() }),
);
unsafe { transmute(vqtbl2(transmute(x.0), transmute(x.1), b)) }
vqtbl2_u8(x, b)
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
Expand All @@ -26009,7 +26009,7 @@ pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
vcombine_p8(a.0, a.1),
vcombine_p8(a.2, unsafe { crate::mem::zeroed() }),
);
unsafe { transmute(vqtbl2(transmute(x.0), transmute(x.1), b)) }
vqtbl2_p8(x, b)
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_s8)"]
Expand All @@ -26019,7 +26019,7 @@ pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
let x = int8x16x2_t(vcombine_s8(a.0, a.1), vcombine_s8(a.2, a.3));
unsafe { transmute(vqtbl2(transmute(x.0), transmute(x.1), transmute(b))) }
vqtbl2_s8(x, vreinterpret_u8_s8(b))
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
Expand All @@ -26029,7 +26029,7 @@ pub fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
let x = uint8x16x2_t(vcombine_u8(a.0, a.1), vcombine_u8(a.2, a.3));
unsafe { transmute(vqtbl2(transmute(x.0), transmute(x.1), b)) }
vqtbl2_u8(x, b)
}
#[doc = "Table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
Expand All @@ -26039,7 +26039,7 @@ pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
let x = poly8x16x2_t(vcombine_p8(a.0, a.1), vcombine_p8(a.2, a.3));
unsafe { transmute(vqtbl2(transmute(x.0), transmute(x.1), b)) }
vqtbl2_p8(x, b)
}
#[doc = "Extended table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_s8)"]
Expand All @@ -26051,11 +26051,11 @@ pub fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
unsafe {
simd_select(
simd_lt::<int8x8_t, int8x8_t>(c, transmute(i8x8::splat(8))),
transmute(vqtbx1(
transmute(a),
transmute(vcombine_s8(b, crate::mem::zeroed())),
transmute(c),
)),
vqtbx1_s8(
a,
vcombine_s8(b, crate::mem::zeroed()),
vreinterpret_u8_s8(c),
),
a,
)
}
Expand All @@ -26070,11 +26070,7 @@ pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
unsafe {
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(8))),
transmute(vqtbx1(
transmute(a),
transmute(vcombine_u8(b, crate::mem::zeroed())),
c,
)),
vqtbx1_u8(a, vcombine_u8(b, crate::mem::zeroed()), c),
a,
)
}
Expand All @@ -26089,11 +26085,7 @@ pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
unsafe {
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(8))),
transmute(vqtbx1(
transmute(a),
transmute(vcombine_p8(b, crate::mem::zeroed())),
c,
)),
vqtbx1_p8(a, vcombine_p8(b, crate::mem::zeroed()), c),
a,
)
}
Expand All @@ -26105,7 +26097,13 @@ pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
#[cfg_attr(test, assert_instr(tbx))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
unsafe { vqtbx1(transmute(a), transmute(vcombine_s8(b.0, b.1)), transmute(c)) }
unsafe {
simd_select(
simd_lt::<int8x8_t, int8x8_t>(c, transmute(i8x8::splat(16))),
vqtbx1_s8(a, vcombine_s8(b.0, b.1), vreinterpret_u8_s8(c)),
a,
)
}
}
#[doc = "Extended table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
Expand All @@ -26114,7 +26112,13 @@ pub fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
#[cfg_attr(test, assert_instr(tbx))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
unsafe { transmute(vqtbx1(transmute(a), transmute(vcombine_u8(b.0, b.1)), c)) }
unsafe {
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(16))),
vqtbx1_u8(a, vcombine_u8(b.0, b.1), c),
a,
)
}
}
#[doc = "Extended table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
Expand All @@ -26123,7 +26127,13 @@ pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
#[cfg_attr(test, assert_instr(tbx))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
unsafe { transmute(vqtbx1(transmute(a), transmute(vcombine_p8(b.0, b.1)), c)) }
unsafe {
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(16))),
vqtbx1_p8(a, vcombine_p8(b.0, b.1), c),
a,
)
}
}
#[doc = "Extended table look-up"]
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_s8)"]
Expand All @@ -26137,16 +26147,11 @@ pub fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
vcombine_s8(b.2, unsafe { crate::mem::zeroed() }),
);
unsafe {
transmute(simd_select(
simd_lt::<int8x8_t, int8x8_t>(transmute(c), transmute(i8x8::splat(24))),
transmute(vqtbx2(
transmute(a),
transmute(x.0),
transmute(x.1),
transmute(c),
)),
simd_select(
simd_lt::<int8x8_t, int8x8_t>(c, transmute(i8x8::splat(24))),
vqtbx2_s8(a, x, vreinterpret_u8_s8(c)),
a,
))
)
}
}
#[doc = "Extended table look-up"]
Expand All @@ -26161,11 +26166,11 @@ pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
vcombine_u8(b.2, unsafe { crate::mem::zeroed() }),
);
unsafe {
transmute(simd_select(
simd_lt::<uint8x8_t, int8x8_t>(transmute(c), transmute(u8x8::splat(24))),
transmute(vqtbx2(transmute(a), transmute(x.0), transmute(x.1), c)),
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(24))),
vqtbx2_u8(a, x, c),
a,
))
)
}
}
#[doc = "Extended table look-up"]
Expand All @@ -26180,11 +26185,11 @@ pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
vcombine_p8(b.2, unsafe { crate::mem::zeroed() }),
);
unsafe {
transmute(simd_select(
simd_lt::<poly8x8_t, int8x8_t>(transmute(c), transmute(u8x8::splat(24))),
transmute(vqtbx2(transmute(a), transmute(x.0), transmute(x.1), c)),
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(24))),
vqtbx2_p8(a, x, c),
a,
))
)
}
}
#[doc = "Extended table look-up"]
Expand All @@ -26194,12 +26199,12 @@ pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
#[cfg_attr(test, assert_instr(tbx))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
let x = int8x16x2_t(vcombine_s8(b.0, b.1), vcombine_s8(b.2, b.3));
unsafe {
vqtbx2(
transmute(a),
transmute(vcombine_s8(b.0, b.1)),
transmute(vcombine_s8(b.2, b.3)),
transmute(c),
simd_select(
simd_lt::<int8x8_t, int8x8_t>(c, transmute(i8x8::splat(32))),
vqtbx2_s8(a, x, vreinterpret_u8_s8(c)),
a,
)
}
}
Expand All @@ -26210,13 +26215,13 @@ pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
#[cfg_attr(test, assert_instr(tbx))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
let x = uint8x16x2_t(vcombine_u8(b.0, b.1), vcombine_u8(b.2, b.3));
unsafe {
transmute(vqtbx2(
transmute(a),
transmute(vcombine_u8(b.0, b.1)),
transmute(vcombine_u8(b.2, b.3)),
c,
))
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(32))),
vqtbx2_u8(a, x, c),
a,
)
}
}
#[doc = "Extended table look-up"]
Expand All @@ -26226,13 +26231,13 @@ pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
#[cfg_attr(test, assert_instr(tbx))]
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
let x = poly8x16x2_t(vcombine_p8(b.0, b.1), vcombine_p8(b.2, b.3));
unsafe {
transmute(vqtbx2(
transmute(a),
transmute(vcombine_p8(b.0, b.1)),
transmute(vcombine_p8(b.2, b.3)),
c,
))
simd_select(
simd_lt::<uint8x8_t, int8x8_t>(c, transmute(u8x8::splat(32))),
vqtbx2_p8(a, x, c),
a,
)
}
}
#[doc = "Transpose vectors"]
Expand Down
Loading
Loading