Disable NEON intrinsics on big-endian ARM
These are currently broken because the order of elements inside vectors is reversed on big-endian systems: the ARM ABI requires that element 0 is located at the highest address of the vector type. However LLVM intrinsics expect element 0 to be located at the lowest address. See https://llvm.org/docs/BigEndianNEON.html and `arm_neon.h` in Clang for more details. Although this is a breaking change, this is acceptable for 2 reasons: - big endian ARM targets are only tier 3. - it is preferable to stop existing code from compiling than to let it run and produce incorrect results.
This commit is contained in:
parent
45f28923ce
commit
7f5fd0955a
6 changed files with 14 additions and 98 deletions
|
|
@ -6,7 +6,10 @@
|
|||
//! [arm_ref]: http://infocenter.arm.com/help/topic/com.arm.doc.ihi0073a/IHI0073A_arm_neon_intrinsics_ref.pdf
|
||||
//! [arm_dat]: https://developer.arm.com/technologies/neon/intrinsics
|
||||
|
||||
// NEON intrinsics are currently broken on big-endian, so don't expose them. (#1484)
|
||||
#[cfg(target_endian = "little")]
|
||||
mod neon;
|
||||
#[cfg(target_endian = "little")]
|
||||
pub use self::neon::*;
|
||||
|
||||
mod tme;
|
||||
|
|
|
|||
|
|
@ -2106,7 +2106,6 @@ pub unsafe fn vcombine_f64(low: float64x1_t, high: float64x1_t) -> float64x2_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2116,7 +2115,6 @@ pub unsafe fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2126,7 +2124,6 @@ pub unsafe fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2136,7 +2133,6 @@ pub unsafe fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2146,7 +2142,6 @@ pub unsafe fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2156,7 +2151,6 @@ pub unsafe fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2166,7 +2160,6 @@ pub unsafe fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2179,7 +2172,6 @@ pub unsafe fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2192,7 +2184,6 @@ pub unsafe fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2205,7 +2196,6 @@ pub unsafe fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2218,7 +2208,6 @@ pub unsafe fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2231,7 +2220,6 @@ pub unsafe fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2244,7 +2232,6 @@ pub unsafe fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2256,7 +2243,6 @@ pub unsafe fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2268,7 +2254,6 @@ pub unsafe fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2280,7 +2265,6 @@ pub unsafe fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2290,7 +2274,6 @@ pub unsafe fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2300,7 +2283,6 @@ pub unsafe fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2310,7 +2292,6 @@ pub unsafe fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2326,7 +2307,6 @@ pub unsafe fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2342,7 +2322,6 @@ pub unsafe fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2358,7 +2337,6 @@ pub unsafe fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2372,7 +2350,6 @@ pub unsafe fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2386,7 +2363,6 @@ pub unsafe fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2400,7 +2376,6 @@ pub unsafe fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2410,7 +2385,6 @@ pub unsafe fn vqtbl1_s8(t: int8x16_t, idx: uint8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2420,7 +2394,6 @@ pub unsafe fn vqtbl1q_s8(t: int8x16_t, idx: uint8x16_t) -> int8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2430,7 +2403,6 @@ pub unsafe fn vqtbl1_u8(t: uint8x16_t, idx: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2440,7 +2412,6 @@ pub unsafe fn vqtbl1q_u8(t: uint8x16_t, idx: uint8x16_t) -> uint8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2450,7 +2421,6 @@ pub unsafe fn vqtbl1_p8(t: poly8x16_t, idx: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2460,7 +2430,6 @@ pub unsafe fn vqtbl1q_p8(t: poly8x16_t, idx: uint8x16_t) -> poly8x16_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2470,7 +2439,6 @@ pub unsafe fn vqtbx1_s8(a: int8x8_t, t: int8x16_t, idx: uint8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2480,7 +2448,6 @@ pub unsafe fn vqtbx1q_s8(a: int8x16_t, t: int8x16_t, idx: uint8x16_t) -> int8x16
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2490,7 +2457,6 @@ pub unsafe fn vqtbx1_u8(a: uint8x8_t, t: uint8x16_t, idx: uint8x8_t) -> uint8x8_
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2500,7 +2466,6 @@ pub unsafe fn vqtbx1q_u8(a: uint8x16_t, t: uint8x16_t, idx: uint8x16_t) -> uint8
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2510,7 +2475,6 @@ pub unsafe fn vqtbx1_p8(a: poly8x8_t, t: poly8x16_t, idx: uint8x8_t) -> poly8x8_
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2520,7 +2484,6 @@ pub unsafe fn vqtbx1q_p8(a: poly8x16_t, t: poly8x16_t, idx: uint8x16_t) -> poly8
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2530,7 +2493,6 @@ pub unsafe fn vqtbl2_s8(t: int8x16x2_t, idx: uint8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2540,7 +2502,6 @@ pub unsafe fn vqtbl2q_s8(t: int8x16x2_t, idx: uint8x16_t) -> int8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2550,7 +2511,6 @@ pub unsafe fn vqtbl2_u8(t: uint8x16x2_t, idx: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2560,7 +2520,6 @@ pub unsafe fn vqtbl2q_u8(t: uint8x16x2_t, idx: uint8x16_t) -> uint8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2570,7 +2529,6 @@ pub unsafe fn vqtbl2_p8(t: poly8x16x2_t, idx: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2580,7 +2538,6 @@ pub unsafe fn vqtbl2q_p8(t: poly8x16x2_t, idx: uint8x16_t) -> poly8x16_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2590,7 +2547,6 @@ pub unsafe fn vqtbx2_s8(a: int8x8_t, t: int8x16x2_t, idx: uint8x8_t) -> int8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2600,7 +2556,6 @@ pub unsafe fn vqtbx2q_s8(a: int8x16_t, t: int8x16x2_t, idx: uint8x16_t) -> int8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2615,7 +2570,6 @@ pub unsafe fn vqtbx2_u8(a: uint8x8_t, t: uint8x16x2_t, idx: uint8x8_t) -> uint8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2630,7 +2584,6 @@ pub unsafe fn vqtbx2q_u8(a: uint8x16_t, t: uint8x16x2_t, idx: uint8x16_t) -> uin
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2645,7 +2598,6 @@ pub unsafe fn vqtbx2_p8(a: poly8x8_t, t: poly8x16x2_t, idx: uint8x8_t) -> poly8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2660,7 +2612,6 @@ pub unsafe fn vqtbx2q_p8(a: poly8x16_t, t: poly8x16x2_t, idx: uint8x16_t) -> pol
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2670,7 +2621,6 @@ pub unsafe fn vqtbl3_s8(t: int8x16x3_t, idx: uint8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2680,7 +2630,6 @@ pub unsafe fn vqtbl3q_s8(t: int8x16x3_t, idx: uint8x16_t) -> int8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2695,7 +2644,6 @@ pub unsafe fn vqtbl3_u8(t: uint8x16x3_t, idx: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2710,7 +2658,6 @@ pub unsafe fn vqtbl3q_u8(t: uint8x16x3_t, idx: uint8x16_t) -> uint8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2725,7 +2672,6 @@ pub unsafe fn vqtbl3_p8(t: poly8x16x3_t, idx: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2740,7 +2686,6 @@ pub unsafe fn vqtbl3q_p8(t: poly8x16x3_t, idx: uint8x16_t) -> poly8x16_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2750,7 +2695,6 @@ pub unsafe fn vqtbx3_s8(a: int8x8_t, t: int8x16x3_t, idx: uint8x8_t) -> int8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2760,7 +2704,6 @@ pub unsafe fn vqtbx3q_s8(a: int8x16_t, t: int8x16x3_t, idx: uint8x16_t) -> int8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2776,7 +2719,6 @@ pub unsafe fn vqtbx3_u8(a: uint8x8_t, t: uint8x16x3_t, idx: uint8x8_t) -> uint8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2792,7 +2734,6 @@ pub unsafe fn vqtbx3q_u8(a: uint8x16_t, t: uint8x16x3_t, idx: uint8x16_t) -> uin
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2808,7 +2749,6 @@ pub unsafe fn vqtbx3_p8(a: poly8x8_t, t: poly8x16x3_t, idx: uint8x8_t) -> poly8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2824,7 +2764,6 @@ pub unsafe fn vqtbx3q_p8(a: poly8x16_t, t: poly8x16x3_t, idx: uint8x16_t) -> pol
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2834,7 +2773,6 @@ pub unsafe fn vqtbl4_s8(t: int8x16x4_t, idx: uint8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2844,7 +2782,6 @@ pub unsafe fn vqtbl4q_s8(t: int8x16x4_t, idx: uint8x16_t) -> int8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2860,7 +2797,6 @@ pub unsafe fn vqtbl4_u8(t: uint8x16x4_t, idx: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2876,7 +2812,6 @@ pub unsafe fn vqtbl4q_u8(t: uint8x16x4_t, idx: uint8x16_t) -> uint8x16_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2892,7 +2827,6 @@ pub unsafe fn vqtbl4_p8(t: poly8x16x4_t, idx: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2908,7 +2842,6 @@ pub unsafe fn vqtbl4q_p8(t: poly8x16x4_t, idx: uint8x16_t) -> poly8x16_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2918,7 +2851,6 @@ pub unsafe fn vqtbx4_s8(a: int8x8_t, t: int8x16x4_t, idx: uint8x8_t) -> int8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2928,7 +2860,6 @@ pub unsafe fn vqtbx4q_s8(a: int8x16_t, t: int8x16x4_t, idx: uint8x16_t) -> int8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2945,7 +2876,6 @@ pub unsafe fn vqtbx4_u8(a: uint8x8_t, t: uint8x16x4_t, idx: uint8x8_t) -> uint8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2962,7 +2892,6 @@ pub unsafe fn vqtbx4q_u8(a: uint8x16_t, t: uint8x16x4_t, idx: uint8x16_t) -> uin
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -2979,7 +2908,6 @@ pub unsafe fn vqtbx4_p8(a: poly8x8_t, t: poly8x16x4_t, idx: uint8x8_t) -> poly8x
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||
|
|
@ -5299,7 +5227,6 @@ mod tests {
|
|||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[path = "../../arm_shared/neon/table_lookup_tests.rs"]
|
||||
mod table_lookup_tests;
|
||||
|
||||
|
|
|
|||
|
|
@ -61,8 +61,11 @@ pub use crate::core_arch::arm_shared::*;
|
|||
#[cfg(test)]
|
||||
use stdarch_test::assert_instr;
|
||||
|
||||
// NEON intrinsics are currently broken on big-endian, so don't expose them. (#1484)
|
||||
#[cfg(target_endian = "little")]
|
||||
#[cfg(any(target_feature = "v7", doc))]
|
||||
pub(crate) mod neon;
|
||||
#[cfg(target_endian = "little")]
|
||||
#[cfg(any(target_feature = "v7", doc))]
|
||||
pub use neon::*;
|
||||
|
||||
|
|
|
|||
|
|
@ -515,7 +515,6 @@ pub unsafe fn vst1q_f32(ptr: *mut f32, a: float32x4_t) {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -524,7 +523,6 @@ pub unsafe fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -533,7 +531,6 @@ pub unsafe fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -542,7 +539,6 @@ pub unsafe fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -551,7 +547,6 @@ pub unsafe fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -560,7 +555,6 @@ pub unsafe fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -569,7 +563,6 @@ pub unsafe fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -578,7 +571,6 @@ pub unsafe fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -592,7 +584,6 @@ pub unsafe fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -606,7 +597,6 @@ pub unsafe fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -615,7 +605,6 @@ pub unsafe fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -630,7 +619,6 @@ pub unsafe fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -645,7 +633,6 @@ pub unsafe fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -654,7 +641,6 @@ pub unsafe fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -663,7 +649,6 @@ pub unsafe fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -672,7 +657,6 @@ pub unsafe fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -681,7 +665,6 @@ pub unsafe fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -695,7 +678,6 @@ pub unsafe fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -709,7 +691,6 @@ pub unsafe fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -718,7 +699,6 @@ pub unsafe fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -733,7 +713,6 @@ pub unsafe fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -748,7 +727,6 @@ pub unsafe fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -757,7 +735,6 @@ pub unsafe fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -773,7 +750,6 @@ pub unsafe fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
|
||||
|
|
|
|||
|
|
@ -64,13 +64,20 @@ mod crc;
|
|||
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
|
||||
pub use crc::*;
|
||||
|
||||
// NEON intrinsics are currently broken on big-endian, so don't expose them. (#1484)
|
||||
#[cfg(target_endian = "little")]
|
||||
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
|
||||
mod crypto;
|
||||
// NEON intrinsics are currently broken on big-endian, so don't expose them. (#1484)
|
||||
#[cfg(target_endian = "little")]
|
||||
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
|
||||
pub use self::crypto::*;
|
||||
|
||||
// NEON intrinsics are currently broken on big-endian, so don't expose them. (#1484)
|
||||
#[cfg(target_endian = "little")]
|
||||
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
|
||||
pub(crate) mod neon;
|
||||
#[cfg(target_endian = "little")]
|
||||
#[cfg(any(target_arch = "aarch64", target_feature = "v7", doc))]
|
||||
pub use self::neon::*;
|
||||
|
||||
|
|
|
|||
|
|
@ -12699,7 +12699,7 @@ mod tests {
|
|||
test_vcombine!(test_vcombine_f64 => vcombine_f64([-3_f64], [13_f64]));
|
||||
}
|
||||
|
||||
#[cfg(all(test, target_arch = "arm", target_endian = "little"))]
|
||||
#[cfg(all(test, target_arch = "arm"))]
|
||||
mod table_lookup_tests;
|
||||
|
||||
#[cfg(all(test, target_arch = "arm"))]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue