| //! Tests for ARM+v7+neon table lookup (vtbl, vtbx) intrinsics. |
| //! |
| //! These are included in `{arm, aarch64}::neon`. |
| |
| use super::*; |
| |
| #[cfg(target_arch = "aarch64")] |
| use crate::core_arch::aarch64::*; |
| |
| #[cfg(target_arch = "arm")] |
| use crate::core_arch::arm::*; |
| |
| use crate::core_arch::simd::*; |
| use std::mem; |
| use stdarch_test::simd_test; |
| |
| macro_rules! test_vtbl { |
| ($test_name:ident => $fn_id:ident: |
| - table[$table_t:ident]: [$($table_v:expr),*] | |
| $(- ctrl[$ctrl_t:ident]: [$($ctrl_v:expr),*] => [$($exp_v:expr),*])|* |
| ) => { |
| #[simd_test(enable = "neon")] |
| unsafe fn $test_name() { |
| // create table as array, and transmute it to |
| // arm's table type |
| let table: $table_t = mem::transmute([$($table_v),*]); |
| |
| // For each control vector, perform a table lookup and |
| // verify the result: |
| $( |
| { |
| let ctrl: $ctrl_t = mem::transmute([$($ctrl_v),*]); |
| let result = $fn_id(table, mem::transmute(ctrl)); |
| let result: $ctrl_t = mem::transmute(result); |
| let expected: $ctrl_t = mem::transmute([$($exp_v),*]); |
| assert_eq!(result, expected); |
| } |
| )* |
| } |
| } |
| } |
| |
| // ARM+v7+neon and AArch64+neon tests |
| |
| 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] |
| ); |
| |
| test_vtbl!( |
| test_vtbl1_u8 => vtbl1_u8: |
| - table[uint8x8_t]: [0_u8, 1, 2, 3, 4, 5, 6, 7] | |
| - ctrl[u8x8]: [3_u8, 4, 1, 6, 0, 2, 7, 5] => [3_u8, 4, 1, 6, 0, 2, 7, 5] | |
| - ctrl[u8x8]: [3_u8, 8, 1, 9, 10, 2, 15, 5] => [3_u8, 0, 1, 0, 0, 2, 0, 5] |
| ); |
| |
| test_vtbl!( |
| test_vtbl1_p8 => vtbl1_p8: |
| - table[poly8x8_t]: [0_u8, 1, 2, 3, 4, 5, 6, 7] | |
| - ctrl[u8x8]: [3_u8, 4, 1, 6, 0, 2, 7, 5] => [3_u8, 4, 1, 6, 0, 2, 7, 5] | |
| - ctrl[u8x8]: [3_u8, 8, 1, 9, 10, 2, 15, 5] => [3_u8, 0, 1, 0, 0, 2, 0, 5] |
| ); |
| |
| test_vtbl!( |
| test_vtbl2_s8 => vtbl2_s8: |
| - table[int8x8x2_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -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] |
| ); |
| |
| test_vtbl!( |
| test_vtbl2_u8 => vtbl2_u8: |
| - table[uint8x8x2_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 136, 153, 170, 187, 204, 221, 238, 255 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 14, 2, 13, 3, 12] => [0_u8, 255, 17, 238, 34, 221, 51, 204] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 19, 7, 18] => [68_u8, 187, 0, 170, 102, 0, 119, 0] |
| ); |
| |
| test_vtbl!( |
| test_vtbl2_p8 => vtbl2_p8: |
| - table[poly8x8x2_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 136, 153, 170, 187, 204, 221, 238, 255 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 14, 2, 13, 3, 12] => [0_u8, 255, 17, 238, 34, 221, 51, 204] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 19, 7, 18] => [68_u8, 187, 0, 170, 102, 0, 119, 0] |
| ); |
| |
| test_vtbl!( |
| test_vtbl3_s8 => vtbl3_s8: |
| - table[int8x8x3_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -106, -93, -84, -117, -104, -116, -72, -121, |
| 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] |
| ); |
| |
| test_vtbl!( |
| test_vtbl3_u8 => vtbl3_u8: |
| - table[uint8x8x3_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 136, 153, 170, 187, 204, 221, 238, 255, |
| 0, 1, 2, 3, 4, 5, 6, 7 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 19, 2, 13, 21, 12] => [0_u8, 255, 17, 3, 34, 221, 5, 204] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 27, 7, 18] => [68_u8, 187, 0, 170, 102, 0, 119, 2] |
| ); |
| |
| test_vtbl!( |
| test_vtbl3_p8 => vtbl3_p8: |
| - table[poly8x8x3_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 136, 153, 170, 187, 204, 221, 238, 255, |
| 0, 1, 2, 3, 4, 5, 6, 7 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 19, 2, 13, 21, 12] => [0_u8, 255, 17, 3, 34, 221, 5, 204] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 27, 7, 18] => [68_u8, 187, 0, 170, 102, 0, 119, 2] |
| ); |
| |
| test_vtbl!( |
| test_vtbl4_s8 => vtbl4_s8: |
| - table[int8x8x4_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -106, -93, -84, -117, -104, -116, -72, -121, |
| 0, 1, -2, 3, 4, -5, 6, 7, |
| 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, -33, 27, 7, 18] => [68_i8, -117, 0, -84, 0, 11, 119, -2] |
| ); |
| |
| test_vtbl!( |
| test_vtbl4_u8 => vtbl4_u8: |
| - table[uint8x8x4_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 136, 153, 170, 187, 204, 221, 238, 255, |
| 0, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 19, 2, 13, 21, 12] => [0_u8, 255, 17, 3, 34, 221, 5, 204] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 27, 7, 18] => [68_u8, 187, 0, 170, 102, 11, 119, 2] |
| ); |
| |
| test_vtbl!( |
| test_vtbl4_p8 => vtbl4_p8: |
| - table[poly8x8x4_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 136, 153, 170, 187, 204, 221, 238, 255, |
| 0, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 19, 2, 13, 21, 12] => [0_u8, 255, 17, 3, 34, 221, 5, 204] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 27, 7, 18] => [68_u8, 187, 0, 170, 102, 11, 119, 2] |
| ); |
| |
| macro_rules! test_vtbx { |
| ($test_name:ident => $fn_id:ident: |
| - table[$table_t:ident]: [$($table_v:expr),*] | |
| - ext[$ext_t:ident]: [$($ext_v:expr),*] | |
| $(- ctrl[$ctrl_t:ident]: [$($ctrl_v:expr),*] => [$($exp_v:expr),*])|* |
| ) => { |
| #[simd_test(enable = "neon")] |
| unsafe fn $test_name() { |
| // create table as array, and transmute it to |
| // arm's table type |
| let table: $table_t = mem::transmute([$($table_v),*]); |
| let ext: $ext_t = mem::transmute([$($ext_v),*]); |
| |
| // For each control vector, perform a table lookup and |
| // verify the result: |
| $( |
| { |
| let ctrl: $ctrl_t = mem::transmute([$($ctrl_v),*]); |
| let result = $fn_id(ext, table, mem::transmute(ctrl)); |
| let result: $ctrl_t = mem::transmute(result); |
| let expected: $ctrl_t = mem::transmute([$($exp_v),*]); |
| assert_eq!(result, expected); |
| } |
| )* |
| } |
| } |
| } |
| |
| 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_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!( |
| test_vtbx1_u8 => vtbx1_u8: |
| - table[uint8x8_t]: [0_u8, 1, 2, 3, 4, 5, 6, 7] | |
| - ext[uint8x8_t]: [50_u8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 4, 1, 6, 0, 2, 7, 5] => [3_u8, 4, 1, 6, 0, 2, 7, 5] | |
| - ctrl[u8x8]: [3_u8, 8, 1, 9, 10, 2, 15, 5] => [3_u8, 51, 1, 53, 54, 2, 56, 5] |
| ); |
| |
| test_vtbx!( |
| test_vtbx1_p8 => vtbx1_p8: |
| - table[poly8x8_t]: [0_u8, 1, 2, 3, 4, 5, 6, 7] | |
| - ext[poly8x8_t]: [50_u8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 4, 1, 6, 0, 2, 7, 5] => [3_u8, 4, 1, 6, 0, 2, 7, 5] | |
| - ctrl[u8x8]: [3_u8, 8, 1, 9, 10, 2, 15, 5] => [3_u8, 51, 1, 53, 54, 2, 56, 5] |
| ); |
| |
| 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_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!( |
| test_vtbx2_u8 => vtbx2_u8: |
| - table[uint8x8x2_t]: [0_i8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] | |
| - ext[uint8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 4, 1, 6, 10, 2, 7, 15] => [3_i8, 4, 1, 6, 10, 2, 7, 15] | |
| - ctrl[u8x8]: [3_u8, 8, 1, 10, 17, 2, 15, 19] => [3_i8, 8, 1, 10, 54, 2, 15, 57] |
| ); |
| |
| test_vtbx!( |
| test_vtbx2_p8 => vtbx2_p8: |
| - table[poly8x8x2_t]: [0_i8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] | |
| - ext[poly8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 4, 1, 6, 10, 2, 7, 15] => [3_i8, 4, 1, 6, 10, 2, 7, 15] | |
| - ctrl[u8x8]: [3_u8, 8, 1, 10, 17, 2, 15, 19] => [3_i8, 8, 1, 10, 54, 2, 15, 57] |
| ); |
| |
| test_vtbx!( |
| test_vtbx3_s8 => vtbx3_s8: |
| - table[int8x8x3_t]: [ |
| 0_i8, 1, 2, -3, 4, 5, 6, 7, |
| 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_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!( |
| test_vtbx3_u8 => vtbx3_u8: |
| - table[uint8x8x3_t]: [ |
| 0_i8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23 ] | |
| - ext[uint8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 4, 17, 22, 10, 2, 7, 15] => [3_i8, 4, 17, 22, 10, 2, 7, 15] | |
| - ctrl[u8x8]: [3_u8, 8, 17, 10, 37, 2, 19, 29] => [3_i8, 8, 17, 10, 54, 2, 19, 57] |
| ); |
| |
| test_vtbx!( |
| test_vtbx3_p8 => vtbx3_p8: |
| - table[poly8x8x3_t]: [ |
| 0_i8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23 ] | |
| - ext[poly8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 4, 17, 22, 10, 2, 7, 15] => [3_i8, 4, 17, 22, 10, 2, 7, 15] | |
| - ctrl[u8x8]: [3_u8, 8, 17, 10, 37, 2, 19, 29] => [3_i8, 8, 17, 10, 54, 2, 19, 57] |
| ); |
| |
| test_vtbx!( |
| test_vtbx4_s8 => vtbx4_s8: |
| - table[int8x8x4_t]: [ |
| 0_i8, 1, 2, -3, 4, 5, 6, 7, |
| 8, 9, -10, 11, 12, -13, 14, 15, |
| 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_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!( |
| test_vtbx4_u8 => vtbx4_u8: |
| - table[uint8x8x4_t]: [ |
| 0_i8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31] | |
| - ext[uint8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 31, 17, 22, 10, 29, 7, 15] => [3_i8, 31, 17, 22, 10, 29, 7, 15] | |
| - ctrl[u8x8]: [3_u8, 8, 17, 10, 37, 2, 19, 42] => [3_i8, 8, 17, 10, 54, 2, 19, 57] |
| ); |
| |
| test_vtbx!( |
| test_vtbx4_p8 => vtbx4_p8: |
| - table[poly8x8x4_t]: [ |
| 0_i8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31] | |
| - ext[poly8x8_t]: [50_i8, 51, 52, 53, 54, 55, 56, 57] | |
| - ctrl[u8x8]: [3_u8, 31, 17, 22, 10, 29, 7, 15] => [3_i8, 31, 17, 22, 10, 29, 7, 15] | |
| - ctrl[u8x8]: [3_u8, 8, 17, 10, 37, 2, 19, 42] => [3_i8, 8, 17, 10, 54, 2, 19, 57] |
| ); |
| |
| // Aarch64 tests |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl1_s8 => vqtbl1_s8: |
| - table[int8x16_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -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] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl1q_s8 => vqtbl1q_s8: |
| - table[int8x16_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -106, -93, -84, -117, -104, -116, -72, -121 |
| ] | |
| - ctrl[i8x16]: [127_i8, 15, 1, 14, 2, 13, 3, 12, 4_i8, 11, 16, 10, 6, 19, 7, 18] |
| => [0_i8, -121, -17, -72, 34, -116, 51, -104, 68, -117, 0, -84, 102, 0, 119, 0] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl1_u8 => vqtbl1_u8: |
| - table[uint8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 14, 2, 13, 3, 12] => [0_u8, 121, 17, 72, 34, 116, 51, 104] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 19, 7, 18] => [68_u8, 117, 0, 84, 102, 0, 119, 0] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl1q_u8 => vqtbl1q_u8: |
| - table[uint8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ctrl[u8x16]: [127_u8, 15, 1, 14, 2, 13, 3, 12, 4_u8, 11, 16, 10, 6, 19, 7, 18] |
| => [0_u8, 121, 17, 72, 34, 116, 51, 104, 68, 117, 0, 84, 102, 0, 119, 0] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl1_p8 => vqtbl1_p8: |
| - table[poly8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 14, 2, 13, 3, 12] => [0_u8, 121, 17, 72, 34, 116, 51, 104] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 19, 7, 18] => [68_u8, 117, 0, 84, 102, 0, 119, 0] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl1q_p8 => vqtbl1q_p8: |
| - table[poly8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ctrl[u8x16]: [127_u8, 15, 1, 14, 2, 13, 3, 12, 4_u8, 11, 16, 10, 6, 19, 7, 18] |
| => [0_u8, 121, 17, 72, 34, 116, 51, 104, 68, 117, 0, 84, 102, 0, 119, 0] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl2_s8 => vqtbl2_s8: |
| - table[int8x16x2_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31 |
| ] | |
| - ctrl[i8x8]: [80_i8, 15, 1, 24, 2, 13, 3, 29] => [0_i8, -15, -1, 24, 2, -13, -3, -29] | |
| - ctrl[i8x8]: [4_i8, 31, 32, 10, 6, 49, 7, 18] => [4_i8, -31, 0, 10, 6, 0, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl2q_s8 => vqtbl2q_s8: |
| - table[int8x16x2_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31 |
| ] | |
| - ctrl[i8x16]: [80_i8, 15, 1, 24, 2, 13, 3, 29, 4_i8, 31, 32, 10, 6, 49, 7, 18] |
| => [0_i8, -15, -1, 24, 2, -13, -3, -29, 4, -31, 0, 10, 6, 0, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl2_u8 => vqtbl2_u8: |
| - table[uint8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [0_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 31, 32, 10, 6, 49, 7, 18] => [4_u8, 31, 0, 10, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl2q_u8 => vqtbl2q_u8: |
| - table[uint8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 31, 32, 10, 6, 49, 7, 18] |
| => [0_u8, 15, 1, 24, 2, 13, 3, 29, 4, 31, 0, 10, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl2_p8 => vqtbl2_p8: |
| - table[poly8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [0_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 31, 32, 10, 6, 49, 7, 18] => [4_u8, 31, 0, 10, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl2q_p8 => vqtbl2q_p8: |
| - table[poly8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 31, 32, 10, 6, 49, 7, 18] |
| => [0_u8, 15, 1, 24, 2, 13, 3, 29, 4, 31, 0, 10, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl3_s8 => vqtbl3_s8: |
| - table[int8x16x3_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47 |
| ] | |
| - ctrl[i8x8]: [80_i8, 15, 1, 24, 2, 13, 3, 29] => [0_i8, -15, -1, 24, 2, -13, -3, -29] | |
| - ctrl[i8x8]: [4_i8, 32, 46, 51, 6, 49, 7, 18] => [4_i8, 32, 46, 0, 6, 0, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl3q_s8 => vqtbl3q_s8: |
| - table[int8x16x3_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47 |
| ] | |
| - ctrl[i8x16]: [80_i8, 15, 1, 24, 2, 13, 3, 29, 4_i8, 32, 46, 51, 6, 49, 7, 18] |
| => [0_i8, -15, -1, 24, 2, -13, -3, -29, 4, 32, 46, 0, 6, 0, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl3_u8 => vqtbl3_u8: |
| - table[uint8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [0_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 32, 46, 51, 6, 49, 7, 18] => [4_u8, 32, 46, 0, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl3q_u8 => vqtbl3q_u8: |
| - table[uint8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 32, 46, 51, 6, 49, 7, 18] |
| => [0_u8, 15, 1, 24, 2, 13, 3, 29, 4, 32, 46, 0, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl3_p8 => vqtbl3_p8: |
| - table[poly8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [0_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 32, 46, 51, 6, 49, 7, 18] => [4_u8, 32, 46, 0, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl3q_p8 => vqtbl3q_p8: |
| - table[poly8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 32, 46, 51, 6, 49, 7, 18] |
| => [0_u8, 15, 1, 24, 2, 13, 3, 29, 4, 32, 46, 0, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl4_s8 => vqtbl4_s8: |
| - table[int8x16x4_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47, |
| 48, -49, 50, -51, 52, -53, 54, -55, |
| 56, -57, 58, -59, 60, -61, 62, -63 |
| ] | |
| - ctrl[i8x8]: [80_i8, 15, 1, 24, 2, 13, 3, 29] => [0_i8, -15, -1, 24, 2, -13, -3, -29] | |
| - ctrl[i8x8]: [4_i8, 46, 64, 51, 6, 71, 7, 18] => [4_i8, 46, 0, -51, 6, 0, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl4q_s8 => vqtbl4q_s8: |
| - table[int8x16x4_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47, |
| 48, -49, 50, -51, 52, -53, 54, -55, |
| 56, -57, 58, -59, 60, -61, 62, -63 |
| ] | |
| - ctrl[i8x16]: [80_i8, 15, 1, 24, 2, 13, 3, 29, 4_i8, 46, 64, 51, 6, 71, 7, 18] |
| => [0_i8, -15, -1, 24, 2, -13, -3, -29, 4, 46, 0, -51, 6, 0, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl4_u8 => vqtbl4_u8: |
| - table[uint8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [0_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 46, 64, 51, 6, 71, 7, 18] => [4_u8, 46, 0, 51, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl4q_u8 => vqtbl4q_u8: |
| - table[uint8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 46, 64, 51, 6, 71, 7, 18] |
| => [0_u8, 15, 1, 24, 2, 13, 3, 29, 4, 46, 0, 51, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl4_p8 => vqtbl4_p8: |
| - table[poly8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [0_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 46, 64, 51, 6, 71, 7, 18] => [4_u8, 46, 0, 51, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbl!( |
| test_vqtbl4q_p8 => vqtbl4q_p8: |
| - table[poly8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 46, 64, 51, 6, 71, 7, 18] |
| => [0_u8, 15, 1, 24, 2, 13, 3, 29, 4, 46, 0, 51, 6, 0, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx1_s8 => vqtbx1_s8: |
| - table[int8x16_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -106, -93, -84, -117, -104, -116, -72, -121 |
| ] | |
| - ext[int8x8_t]: [100_i8, -101, 102, -103, 104, -105, 106, -107] | |
| - ctrl[i8x8]: [127_i8, 15, 1, 14, 2, 13, 3, 12] => [100_i8, -121, -17, -72, 34, -116, 51, -104] | |
| - ctrl[i8x8]: [4_i8, 11, 16, 10, 6, 19, 7, 18] => [68_i8, -117, 102, -84, 102, -105, 119, -107] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx1q_s8 => vqtbx1q_s8: |
| - table[int8x16_t]: [ |
| 0_i8, -17, 34, 51, 68, 85, 102, 119, |
| -106, -93, -84, -117, -104, -116, -72, -121 |
| ] | |
| - ext[int8x16_t]: [ |
| 100_i8, -101, 102, -103, 104, -105, 106, -107, |
| 108, -109, 110, -111, 112, -113, 114, -115 |
| ] | |
| - ctrl[i8x16]: [127_i8, 15, 1, 14, 2, 13, 3, 12, 4_i8, 11, 16, 10, 6, 19, 7, 18] |
| => [100_i8, -121, -17, -72, 34, -116, 51, -104, 68, -117, 110, -84, 102, -113, 119, -115] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx1_u8 => vqtbx1_u8: |
| - table[uint8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ext[uint8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 14, 2, 13, 3, 12] => [100_u8, 121, 17, 72, 34, 116, 51, 104] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 19, 7, 18] => [68_u8, 117, 102, 84, 102, 105, 119, 107] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx1q_u8 => vqtbx1q_u8: |
| - table[uint8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ext[uint8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [127_u8, 15, 1, 14, 2, 13, 3, 12, 4_u8, 11, 16, 10, 6, 19, 7, 18] |
| => [100_u8, 121, 17, 72, 34, 116, 51, 104, 68, 117, 110, 84, 102, 113, 119, 115] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx1_p8 => vqtbx1_p8: |
| - table[poly8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ext[poly8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [127_u8, 15, 1, 14, 2, 13, 3, 12] => [100_u8, 121, 17, 72, 34, 116, 51, 104] | |
| - ctrl[u8x8]: [4_u8, 11, 16, 10, 6, 19, 7, 18] => [68_u8, 117, 102, 84, 102, 105, 119, 107] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx1q_p8 => vqtbx1q_p8: |
| - table[poly8x16_t]: [ |
| 0_u8, 17, 34, 51, 68, 85, 102, 119, |
| 106, 93, 84, 117, 104, 116, 72, 121 |
| ] | |
| - ext[poly8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [127_u8, 15, 1, 14, 2, 13, 3, 12, 4_u8, 11, 16, 10, 6, 19, 7, 18] |
| => [100_u8, 121, 17, 72, 34, 116, 51, 104, 68, 117, 110, 84, 102, 113, 119, 115] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx2_s8 => vqtbx2_s8: |
| - table[int8x16x2_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31 |
| ] | |
| - ext[int8x8_t]: [100_i8, -101, 102, -103, 104, -105, 106, -107] | |
| - ctrl[i8x8]: [80_i8, 15, 1, 24, 2, 13, 3, 29] => [100_i8, -15, -1, 24, 2, -13, -3, -29] | |
| - ctrl[i8x8]: [4_i8, 31, 32, 10, 6, 49, 7, 18] => [4_i8, -31, 102, 10, 6, -105, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx2q_s8 => vqtbx2q_s8: |
| - table[int8x16x2_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31 |
| ] | |
| - ext[int8x16_t]: [ |
| 100_i8, -101, 102, -103, 104, -105, 106, -107, |
| 108, -109, 110, -111, 112, -113, 114, -115 |
| ] | |
| - ctrl[i8x16]: [80_i8, 15, 1, 24, 2, 13, 3, 29, 4_i8, 31, 32, 10, 6, 49, 7, 18] |
| => [100_i8, -15, -1, 24, 2, -13, -3, -29, 4, -31, 110, 10, 6, -113, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx2_u8 => vqtbx2_u8: |
| - table[uint8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ext[uint8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [100_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 31, 32, 10, 6, 49, 7, 18] => [4_u8, 31, 102, 10, 6, 105, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx2q_u8 => vqtbx2q_u8: |
| - table[uint8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ext[uint8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 31, 32, 10, 6, 49, 7, 18] |
| => [100_u8, 15, 1, 24, 2, 13, 3, 29, 4, 31, 110, 10, 6, 113, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx2_p8 => vqtbx2_p8: |
| - table[poly8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ext[poly8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [100_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 31, 32, 10, 6, 49, 7, 18] => [4_u8, 31, 102, 10, 6, 105, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx2q_p8 => vqtbx2q_p8: |
| - table[poly8x16x2_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31 |
| ] | |
| - ext[poly8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 31, 32, 10, 6, 49, 7, 18] |
| => [100_u8, 15, 1, 24, 2, 13, 3, 29, 4, 31, 110, 10, 6, 113, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx3_s8 => vqtbx3_s8: |
| - table[int8x16x3_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47 |
| ] | |
| - ext[int8x8_t]: [100_i8, -101, 102, -103, 104, -105, 106, -107] | |
| - ctrl[i8x8]: [80_i8, 15, 1, 24, 2, 13, 3, 29] => [100_i8, -15, -1, 24, 2, -13, -3, -29] | |
| - ctrl[i8x8]: [4_i8, 32, 46, 51, 6, 49, 7, 18] => [4_i8, 32, 46, -103, 6, -105, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx3q_s8 => vqtbx3q_s8: |
| - table[int8x16x3_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47 |
| ] | |
| - ext[int8x16_t]: [ |
| 100_i8, -101, 102, -103, 104, -105, 106, -107, |
| 108, -109, 110, -111, 112, -113, 114, -115 |
| ] | |
| - ctrl[i8x16]: [80_i8, 15, 1, 24, 2, 13, 3, 29, 4_i8, 32, 46, 51, 6, 49, 7, 18] |
| => [100_i8, -15, -1, 24, 2, -13, -3, -29, 4, 32, 46, -111, 6, -113, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx3_u8 => vqtbx3_u8: |
| - table[uint8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ext[uint8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [100_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 32, 46, 51, 6, 49, 7, 18] => [4_u8, 32, 46, 103, 6, 105, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx3q_u8 => vqtbx3q_u8: |
| - table[uint8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ext[uint8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 32, 46, 51, 6, 49, 7, 18] |
| => [100_u8, 15, 1, 24, 2, 13, 3, 29, 4, 32, 46, 111, 6, 113, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx3_p8 => vqtbx3_p8: |
| - table[poly8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ext[poly8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [100_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 32, 46, 51, 6, 49, 7, 18] => [4_u8, 32, 46, 103, 6, 105, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx3q_p8 => vqtbx3q_p8: |
| - table[poly8x16x3_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47 |
| ] | |
| - ext[poly8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 32, 46, 51, 6, 49, 7, 18] |
| => [100_u8, 15, 1, 24, 2, 13, 3, 29, 4, 32, 46, 111, 6, 113, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx4_s8 => vqtbx4_s8: |
| - table[int8x16x4_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47, |
| 48, -49, 50, -51, 52, -53, 54, -55, |
| 56, -57, 58, -59, 60, -61, 62, -63 |
| ] | |
| - ext[int8x8_t]: [100_i8, -101, 102, -103, 104, -105, 106, -107] | |
| - ctrl[i8x8]: [80_i8, 15, 1, 24, 2, 13, 3, 29] => [100_i8, -15, -1, 24, 2, -13, -3, -29] | |
| - ctrl[i8x8]: [4_i8, 46, 64, 51, 6, 71, 7, 18] => [4_i8, 46, 102, -51, 6, -105, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx4q_s8 => vqtbx4q_s8: |
| - table[int8x16x4_t]: [ |
| 0_i8, -1, 2, -3, 4, -5, 6, -7, |
| 8, -9, 10, -11, 12, -13, 14, -15, |
| 16, -17, 18, -19, 20, -21, 22, -23, |
| 24, -25, 26, -27, 28, -29, 30, -31, |
| 32, -33, 34, -35, 36, -37, 38, -39, |
| 40, -41, 42, -43, 44, -45, 46, -47, |
| 48, -49, 50, -51, 52, -53, 54, -55, |
| 56, -57, 58, -59, 60, -61, 62, -63 |
| ] | |
| - ext[int8x16_t]: [ |
| 100_i8, -101, 102, -103, 104, -105, 106, -107, |
| 108, -109, 110, -111, 112, -113, 114, -115 |
| ] | |
| - ctrl[i8x16]: [80_i8, 15, 1, 24, 2, 13, 3, 29, 4_i8, 46, 64, 51, 6, 71, 7, 18] |
| => [100_i8, -15, -1, 24, 2, -13, -3, -29, 4, 46, 110, -51, 6, -113, -7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx4_u8 => vqtbx4_u8: |
| - table[uint8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ext[uint8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [100_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 46, 64, 51, 6, 71, 7, 18] => [4_u8, 46, 102, 51, 6, 105, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx4q_u8 => vqtbx4q_u8: |
| - table[uint8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ext[uint8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 46, 64, 51, 6, 71, 7, 18] |
| => [100_u8, 15, 1, 24, 2, 13, 3, 29, 4, 46, 110, 51, 6, 113, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx4_p8 => vqtbx4_p8: |
| - table[poly8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ext[poly8x8_t]: [100_u8, 101, 102, 103, 104, 105, 106, 107] | |
| - ctrl[u8x8]: [80_u8, 15, 1, 24, 2, 13, 3, 29] => [100_u8, 15, 1, 24, 2, 13, 3, 29] | |
| - ctrl[u8x8]: [4_u8, 46, 64, 51, 6, 71, 7, 18] => [4_u8, 46, 102, 51, 6, 105, 7, 18] |
| ); |
| |
| #[cfg(target_arch = "aarch64")] |
| test_vtbx!( |
| test_vqtbx4q_p8 => vqtbx4q_p8: |
| - table[poly8x16x4_t]: [ |
| 0_u8, 1, 2, 3, 4, 5, 6, 7, |
| 8, 9, 10, 11, 12, 13, 14, 15, |
| 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, 27, 28, 29, 30, 31, |
| 32, 33, 34, 35, 36, 37, 38, 39, |
| 40, 41, 42, 43, 44, 45, 46, 47, |
| 48, 49, 50, 51, 52, 53, 54, 55, |
| 56, 57, 58, 59, 60, 61, 62, 63 |
| ] | |
| - ext[poly8x16_t]: [ |
| 100_u8, 101, 102, 103, 104, 105, 106, 107, |
| 108, 109, 110, 111, 112, 113, 114, 115 |
| ] | |
| - ctrl[u8x16]: [80_u8, 15, 1, 24, 2, 13, 3, 29, 4_u8, 46, 64, 51, 6, 71, 7, 18] |
| => [100_u8, 15, 1, 24, 2, 13, 3, 29, 4, 46, 110, 51, 6, 113, 7, 18] |
| ); |