Table lookup fixes (#547)
* test table lookup intrinsics with negative indices * provide table lookup intrinsics only on little endian targets
This commit is contained in:
parent
e6370ca22a
commit
bdf9127d41
3 changed files with 110 additions and 12 deletions
|
|
@ -765,6 +765,7 @@ pub unsafe fn vcombine_f64(
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
pub unsafe fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -773,6 +774,7 @@ 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))]
|
||||
pub unsafe fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -781,6 +783,7 @@ 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))]
|
||||
pub unsafe fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -789,6 +792,7 @@ 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))]
|
||||
pub unsafe fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -797,6 +801,7 @@ 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))]
|
||||
pub unsafe fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -805,6 +810,7 @@ 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))]
|
||||
pub unsafe fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -813,6 +819,7 @@ 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))]
|
||||
pub unsafe fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -824,6 +831,7 @@ 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))]
|
||||
pub unsafe fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -835,6 +843,7 @@ 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))]
|
||||
pub unsafe fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -846,6 +855,7 @@ 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))]
|
||||
pub unsafe fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -857,6 +867,7 @@ 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))]
|
||||
pub unsafe fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -868,6 +879,7 @@ 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))]
|
||||
pub unsafe fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -879,6 +891,7 @@ 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))]
|
||||
pub unsafe fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -890,6 +903,7 @@ 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))]
|
||||
pub unsafe fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -901,6 +915,7 @@ 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))]
|
||||
pub unsafe fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -912,6 +927,7 @@ 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))]
|
||||
pub unsafe fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -920,6 +936,7 @@ 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))]
|
||||
pub unsafe fn vtbx2_u8(
|
||||
|
|
@ -930,6 +947,7 @@ pub unsafe fn vtbx2_u8(
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vtbx2_p8(
|
||||
|
|
@ -940,6 +958,7 @@ pub unsafe fn vtbx2_p8(
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -955,6 +974,7 @@ 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))]
|
||||
pub unsafe fn vtbx3_u8(
|
||||
|
|
@ -972,6 +992,7 @@ pub unsafe fn vtbx3_u8(
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vtbx3_p8(
|
||||
|
|
@ -989,6 +1010,7 @@ pub unsafe fn vtbx3_p8(
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
|
||||
|
|
@ -1001,6 +1023,7 @@ 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))]
|
||||
pub unsafe fn vtbx4_u8(
|
||||
|
|
@ -1015,6 +1038,7 @@ pub unsafe fn vtbx4_u8(
|
|||
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vtbx4_p8(
|
||||
|
|
@ -1029,6 +1053,7 @@ pub unsafe fn vtbx4_p8(
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
pub unsafe fn vqtbl1_s8(t: int8x16_t, idx: uint8x8_t) -> int8x8_t {
|
||||
|
|
@ -1036,6 +1061,7 @@ 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))]
|
||||
pub unsafe fn vqtbl1q_s8(t: int8x16_t, idx: uint8x16_t) -> int8x16_t {
|
||||
|
|
@ -1043,6 +1069,7 @@ 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))]
|
||||
pub unsafe fn vqtbl1_u8(t: uint8x16_t, idx: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -1050,6 +1077,7 @@ 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))]
|
||||
pub unsafe fn vqtbl1q_u8(t: uint8x16_t, idx: uint8x16_t) -> uint8x16_t {
|
||||
|
|
@ -1057,6 +1085,7 @@ 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))]
|
||||
pub unsafe fn vqtbl1_p8(t: poly8x16_t, idx: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -1064,6 +1093,7 @@ 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))]
|
||||
pub unsafe fn vqtbl1q_p8(t: poly8x16_t, idx: uint8x16_t) -> poly8x16_t {
|
||||
|
|
@ -1071,6 +1101,7 @@ 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))]
|
||||
pub unsafe fn vqtbx1_s8(
|
||||
|
|
@ -1080,6 +1111,7 @@ pub unsafe fn vqtbx1_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx1q_s8(
|
||||
|
|
@ -1089,6 +1121,7 @@ pub unsafe fn vqtbx1q_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx1_u8(
|
||||
|
|
@ -1102,6 +1135,7 @@ pub unsafe fn vqtbx1_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx1q_u8(
|
||||
|
|
@ -1115,6 +1149,7 @@ pub unsafe fn vqtbx1q_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx1_p8(
|
||||
|
|
@ -1128,6 +1163,7 @@ pub unsafe fn vqtbx1_p8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx1q_p8(
|
||||
|
|
@ -1142,6 +1178,7 @@ pub unsafe fn vqtbx1q_p8(
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
pub unsafe fn vqtbl2_s8(t: int8x16x2_t, idx: uint8x8_t) -> int8x8_t {
|
||||
|
|
@ -1149,6 +1186,7 @@ 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))]
|
||||
pub unsafe fn vqtbl2q_s8(t: int8x16x2_t, idx: uint8x16_t) -> int8x16_t {
|
||||
|
|
@ -1156,6 +1194,7 @@ 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))]
|
||||
pub unsafe fn vqtbl2_u8(t: uint8x16x2_t, idx: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -1167,6 +1206,7 @@ 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))]
|
||||
pub unsafe fn vqtbl2q_u8(t: uint8x16x2_t, idx: uint8x16_t) -> uint8x16_t {
|
||||
|
|
@ -1178,6 +1218,7 @@ 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))]
|
||||
pub unsafe fn vqtbl2_p8(t: poly8x16x2_t, idx: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -1189,6 +1230,7 @@ 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))]
|
||||
pub unsafe fn vqtbl2q_p8(t: poly8x16x2_t, idx: uint8x16_t) -> poly8x16_t {
|
||||
|
|
@ -1200,6 +1242,7 @@ 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))]
|
||||
pub unsafe fn vqtbx2_s8(
|
||||
|
|
@ -1209,6 +1252,7 @@ pub unsafe fn vqtbx2_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx2q_s8(
|
||||
|
|
@ -1218,6 +1262,7 @@ pub unsafe fn vqtbx2q_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx2_u8(
|
||||
|
|
@ -1232,6 +1277,7 @@ pub unsafe fn vqtbx2_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx2q_u8(
|
||||
|
|
@ -1246,6 +1292,7 @@ pub unsafe fn vqtbx2q_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx2_p8(
|
||||
|
|
@ -1260,6 +1307,7 @@ pub unsafe fn vqtbx2_p8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx2q_p8(
|
||||
|
|
@ -1275,6 +1323,7 @@ pub unsafe fn vqtbx2q_p8(
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
pub unsafe fn vqtbl3_s8(t: int8x16x3_t, idx: uint8x8_t) -> int8x8_t {
|
||||
|
|
@ -1282,6 +1331,7 @@ 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))]
|
||||
pub unsafe fn vqtbl3q_s8(t: int8x16x3_t, idx: uint8x16_t) -> int8x16_t {
|
||||
|
|
@ -1289,6 +1339,7 @@ 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))]
|
||||
pub unsafe fn vqtbl3_u8(t: uint8x16x3_t, idx: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -1301,6 +1352,7 @@ 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))]
|
||||
pub unsafe fn vqtbl3q_u8(t: uint8x16x3_t, idx: uint8x16_t) -> uint8x16_t {
|
||||
|
|
@ -1313,6 +1365,7 @@ 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))]
|
||||
pub unsafe fn vqtbl3_p8(t: poly8x16x3_t, idx: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -1325,6 +1378,7 @@ 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))]
|
||||
pub unsafe fn vqtbl3q_p8(t: poly8x16x3_t, idx: uint8x16_t) -> poly8x16_t {
|
||||
|
|
@ -1337,6 +1391,7 @@ 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))]
|
||||
pub unsafe fn vqtbx3_s8(
|
||||
|
|
@ -1346,6 +1401,7 @@ pub unsafe fn vqtbx3_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx3q_s8(
|
||||
|
|
@ -1355,6 +1411,7 @@ pub unsafe fn vqtbx3q_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx3_u8(
|
||||
|
|
@ -1370,6 +1427,7 @@ pub unsafe fn vqtbx3_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx3q_u8(
|
||||
|
|
@ -1385,6 +1443,7 @@ pub unsafe fn vqtbx3q_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx3_p8(
|
||||
|
|
@ -1400,6 +1459,7 @@ pub unsafe fn vqtbx3_p8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx3q_p8(
|
||||
|
|
@ -1416,6 +1476,7 @@ pub unsafe fn vqtbx3q_p8(
|
|||
|
||||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbl))]
|
||||
pub unsafe fn vqtbl4_s8(t: int8x16x4_t, idx: uint8x8_t) -> int8x8_t {
|
||||
|
|
@ -1423,6 +1484,7 @@ 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))]
|
||||
pub unsafe fn vqtbl4q_s8(t: int8x16x4_t, idx: uint8x16_t) -> int8x16_t {
|
||||
|
|
@ -1430,6 +1492,7 @@ 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))]
|
||||
pub unsafe fn vqtbl4_u8(t: uint8x16x4_t, idx: uint8x8_t) -> uint8x8_t {
|
||||
|
|
@ -1443,6 +1506,7 @@ 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))]
|
||||
pub unsafe fn vqtbl4q_u8(t: uint8x16x4_t, idx: uint8x16_t) -> uint8x16_t {
|
||||
|
|
@ -1456,6 +1520,7 @@ 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))]
|
||||
pub unsafe fn vqtbl4_p8(t: poly8x16x4_t, idx: uint8x8_t) -> poly8x8_t {
|
||||
|
|
@ -1469,6 +1534,7 @@ 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))]
|
||||
pub unsafe fn vqtbl4q_p8(t: poly8x16x4_t, idx: uint8x16_t) -> poly8x16_t {
|
||||
|
|
@ -1482,6 +1548,7 @@ 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))]
|
||||
pub unsafe fn vqtbx4_s8(
|
||||
|
|
@ -1491,6 +1558,7 @@ pub unsafe fn vqtbx4_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx4q_s8(
|
||||
|
|
@ -1500,6 +1568,7 @@ pub unsafe fn vqtbx4q_s8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx4_u8(
|
||||
|
|
@ -1516,6 +1585,7 @@ pub unsafe fn vqtbx4_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx4q_u8(
|
||||
|
|
@ -1532,6 +1602,7 @@ pub unsafe fn vqtbx4q_u8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx4_p8(
|
||||
|
|
@ -1548,6 +1619,7 @@ pub unsafe fn vqtbx4_p8(
|
|||
}
|
||||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon")]
|
||||
#[cfg_attr(test, assert_instr(tbx))]
|
||||
pub unsafe fn vqtbx4q_p8(
|
||||
|
|
@ -2064,5 +2136,6 @@ mod tests {
|
|||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[path = "../arm/table_lookup_tests.rs"]
|
||||
mod table_lookup_tests;
|
||||
|
|
|
|||
|
|
@ -767,6 +767,7 @@ pub unsafe fn vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -776,6 +777,7 @@ pub unsafe fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -785,6 +787,7 @@ pub unsafe fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbl))]
|
||||
pub unsafe fn vtbl1_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
|
||||
|
|
@ -794,6 +797,7 @@ pub unsafe fn vtbl1_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -803,6 +807,7 @@ pub unsafe fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -816,6 +821,7 @@ pub unsafe fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -829,6 +835,7 @@ pub unsafe fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -838,6 +845,7 @@ pub unsafe fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -852,6 +860,7 @@ pub unsafe fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -866,6 +875,7 @@ pub unsafe fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -875,6 +885,7 @@ pub unsafe fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -890,6 +901,7 @@ pub unsafe fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
|
|||
/// Table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -905,6 +917,7 @@ pub unsafe fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -914,6 +927,7 @@ pub unsafe fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -927,6 +941,7 @@ pub unsafe fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -940,6 +955,7 @@ pub unsafe fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -949,6 +965,7 @@ pub unsafe fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx2_u8(
|
||||
|
|
@ -965,6 +982,7 @@ pub unsafe fn vtbx2_u8(
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx2_p8(
|
||||
|
|
@ -981,6 +999,7 @@ pub unsafe fn vtbx2_p8(
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -990,6 +1009,7 @@ pub unsafe fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx3_u8(
|
||||
|
|
@ -1007,6 +1027,7 @@ pub unsafe fn vtbx3_u8(
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx3_p8(
|
||||
|
|
@ -1024,6 +1045,7 @@ pub unsafe fn vtbx3_p8(
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[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 {
|
||||
|
|
@ -1033,6 +1055,7 @@ pub unsafe fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx4_u8(
|
||||
|
|
@ -1051,6 +1074,7 @@ pub unsafe fn vtbx4_u8(
|
|||
/// Extended table look-up
|
||||
#[inline]
|
||||
#[cfg(target_arch = "arm")]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[target_feature(enable = "neon,v7")]
|
||||
#[cfg_attr(test, assert_instr(vtbx))]
|
||||
pub unsafe fn vtbx4_p8(
|
||||
|
|
@ -1593,5 +1617,6 @@ mod tests {
|
|||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[cfg(target_endian = "little")]
|
||||
#[path = "table_lookup_tests.rs"]
|
||||
mod table_lookup_tests;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ test_vtbl!(
|
|||
test_vtbl1_s8 => vtbl1_s8:
|
||||
- table[int8x8_t]: [0_i8, -11, 2, 3, 4, 5, 6, 7] |
|
||||
- ctrl[i8x8]: [3_i8, 4, 1, 6, 0, 2, 7, 5] => [3_i8, 4, -11, 6, 0, 2, 7, 5] |
|
||||
- ctrl[i8x8]: [3_i8, 8, 1, 9, 10, 2, 15, 5] => [3_i8, 0, -11, 0, 0, 2, 0, 5]
|
||||
- ctrl[i8x8]: [3_i8, 8, 1, -9, 10, 2, 15, 5] => [3_i8, 0, -11, 0, 0, 2, 0, 5]
|
||||
);
|
||||
|
||||
test_vtbl!(
|
||||
|
|
@ -70,7 +70,7 @@ test_vtbl!(
|
|||
-106, -93, -84, -117, -104, -116, -72, -121
|
||||
] |
|
||||
- ctrl[i8x8]: [127_i8, 15, 1, 14, 2, 13, 3, 12] => [0_i8, -121, -17, -72, 34, -116, 51, -104] |
|
||||
- ctrl[i8x8]: [4_i8, 11, 16, 10, 6, 19, 7, 18] => [68_i8, -117, 0, -84, 102, 0, 119, 0]
|
||||
- ctrl[i8x8]: [4_i8, 11, 16, 10, 6, -19, 7, 18] => [68_i8, -117, 0, -84, 102, 0, 119, 0]
|
||||
);
|
||||
|
||||
test_vtbl!(
|
||||
|
|
@ -101,7 +101,7 @@ test_vtbl!(
|
|||
0, 1, -2, 3, 4, -5, 6, 7
|
||||
] |
|
||||
- ctrl[i8x8]: [127_i8, 15, 1, 19, 2, 13, 21, 12] => [0_i8, -121, -17, 3, 34, -116, -5, -104] |
|
||||
- ctrl[i8x8]: [4_i8, 11, 16, 10, 6, 27, 7, 18] => [68_i8, -117, 0, -84, 102, 0, 119, -2]
|
||||
- ctrl[i8x8]: [4_i8, 11, 16, 10, 6, -27, 7, 18] => [68_i8, -117, 0, -84, 102, 0, 119, -2]
|
||||
);
|
||||
|
||||
test_vtbl!(
|
||||
|
|
@ -135,7 +135,7 @@ test_vtbl!(
|
|||
8, -9, 10, 11, 12, -13, 14, 15
|
||||
] |
|
||||
- ctrl[i8x8]: [127_i8, 15, 1, 19, 2, 13, 25, 12] => [0_i8, -121, -17, 3, 34, -116, -9, -104] |
|
||||
- ctrl[i8x8]: [4_i8, 11, 32, 10, 6, 27, 7, 18] => [68_i8, -117, 0, -84, 102, 11, 119, -2]
|
||||
- ctrl[i8x8]: [4_i8, 11, 32, 10, -33, 27, 7, 18] => [68_i8, -117, 0, -84, 0, 11, 119, -2]
|
||||
);
|
||||
|
||||
test_vtbl!(
|
||||
|
|
@ -194,8 +194,8 @@ test_vtbx!(
|
|||
test_vtbx1_s8 => vtbx1_s8:
|
||||
- table[int8x8_t]: [0_i8, 1, 2, -3, 4, 5, 6, 7] |
|
||||
- ext[int8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] |
|
||||
- ctrl[i8x8]: [3_u8, 4, 1, 6, 0, 2, 7, 5] => [-3_i8, 4, 1, 6, 0, 2, 7, 5] |
|
||||
- ctrl[i8x8]: [3_u8, 8, 1, 9, 10, 2, 15, 5] => [-3_i8, 51, 1, 53, 54, 2, 56, 5]
|
||||
- ctrl[i8x8]: [3_i8, 4, 1, 6, 0, 2, 7, 5] => [-3_i8, 4, 1, 6, 0, 2, 7, 5] |
|
||||
- ctrl[i8x8]: [3_i8, 8, 1, 9, 10, 2, -15, 5] => [-3_i8, 51, 1, 53, 54, 2, 56, 5]
|
||||
);
|
||||
|
||||
test_vtbx!(
|
||||
|
|
@ -218,8 +218,8 @@ test_vtbx!(
|
|||
test_vtbx2_s8 => vtbx2_s8:
|
||||
- table[int8x8x2_t]: [0_i8, 1, 2, -3, 4, 5, 6, 7, 8, 9, -10, 11, 12, -13, 14, 15] |
|
||||
- ext[int8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] |
|
||||
- ctrl[i8x8]: [3_u8, 4, 1, 6, 10, 2, 7, 15] => [-3_i8, 4, 1, 6, -10, 2, 7, 15] |
|
||||
- ctrl[i8x8]: [3_u8, 8, 1, 10, 17, 2, 15, 19] => [-3_i8, 8, 1, -10, 54, 2, 15, 57]
|
||||
- ctrl[i8x8]: [3_i8, 4, 1, 6, 10, 2, 7, 15] => [-3_i8, 4, 1, 6, -10, 2, 7, 15] |
|
||||
- ctrl[i8x8]: [3_i8, 8, 1, 10, 17, 2, 15, -19] => [-3_i8, 8, 1, -10, 54, 2, 15, 57]
|
||||
);
|
||||
|
||||
test_vtbx!(
|
||||
|
|
@ -245,8 +245,8 @@ test_vtbx!(
|
|||
8, 9, -10, 11, 12, -13, 14, 15,
|
||||
16, -17, 18, 19, 20, 21, 22, 23 ] |
|
||||
- ext[int8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] |
|
||||
- ctrl[i8x8]: [3_u8, 4, 17, 22, 10, 2, 7, 15] => [-3_i8, 4, -17, 22, -10, 2, 7, 15] |
|
||||
- ctrl[i8x8]: [3_u8, 8, 17, 10, 37, 2, 19, 29] => [-3_i8, 8, -17, -10, 54, 2, 19, 57]
|
||||
- ctrl[i8x8]: [3_i8, 4, 17, 22, 10, 2, 7, 15] => [-3_i8, 4, -17, 22, -10, 2, 7, 15] |
|
||||
- ctrl[i8x8]: [3_i8, 8, 17, 10, 37, 2, 19, -29] => [-3_i8, 8, -17, -10, 54, 2, 19, 57]
|
||||
);
|
||||
|
||||
test_vtbx!(
|
||||
|
|
@ -279,8 +279,8 @@ test_vtbx!(
|
|||
16, -17, 18, 19, 20, 21, 22, 23,
|
||||
-24, 25, 26, -27, 28, -29, 30, 31] |
|
||||
- ext[int8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] |
|
||||
- ctrl[i8x8]: [3_u8, 31, 17, 22, 10, 29, 7, 15] => [-3_i8, 31, -17, 22, -10, -29, 7, 15] |
|
||||
- ctrl[i8x8]: [3_u8, 8, 17, 10, 37, 2, 19, 42] => [-3_i8, 8, -17, -10, 54, 2, 19, 57]
|
||||
- ctrl[i8x8]: [3_i8, 31, 17, 22, 10, 29, 7, 15] => [-3_i8, 31, -17, 22, -10, -29, 7, 15] |
|
||||
- ctrl[i8x8]: [3_i8, 8, 17, 10, 37, 2, 19, -42] => [-3_i8, 8, -17, -10, 54, 2, 19, 57]
|
||||
);
|
||||
|
||||
test_vtbx!(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue