1 #include <arm_neon.h> 2 #include "arm-neon-ref.h" 3 #include "compute-ref-data.h" 4 5 /* Expected results splitted in several chunks. */ 6 /* Chunk 0. */ 7 VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf1, 0x11, 0x11, 8 0xf2, 0xf3, 0x11, 0x11 }; 9 VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff1, 0x22, 0x22 }; 10 VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 }; 11 VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf1, 0x55, 0x55, 12 0xf2, 0xf3, 0x55, 0x55 }; 13 VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0x66 }; 14 VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 }; 15 VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf1, 0x55, 0x55, 16 0xf2, 0xf3, 0x55, 0x55 }; 17 VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0x66 }; 18 #if defined (FP16_SUPPORTED) 19 VECT_VAR_DECL (expected0, hfloat, 16, 4) [] = { 0xcc00, 0xcb80, 20 0x4b4d, 0x4b4d }; 21 #endif 22 VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 }; 23 VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf1, 0x11, 0x11, 24 0xf2, 0xf3, 0x11, 0x11, 25 0xf4, 0xf5, 0x11, 0x11, 26 0xf6, 0xf7, 0x11, 0x11 }; 27 VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff1, 0x22, 0x22, 28 0xfff2, 0xfff3, 0x22, 0x22 }; 29 VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x33, 0x33 }; 30 VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55, 31 0xf2, 0xf3, 0x55, 0x55, 32 0xf4, 0xf5, 0x55, 0x55, 33 0xf6, 0xf7, 0x55, 0x55 }; 34 VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff1, 0x66, 0x66, 35 0xfff2, 0xfff3, 0x66, 0x66 }; 36 VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x77, 0x77 }; 37 VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55, 38 0xf2, 0xf3, 0x55, 0x55, 39 0xf4, 0xf5, 0x55, 0x55, 40 0xf6, 0xf7, 0x55, 0x55 }; 41 VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff1, 0x66, 0x66, 42 0xfff2, 0xfff3, 0x66, 0x66 }; 43 #if defined (FP16_SUPPORTED) 44 VECT_VAR_DECL (expected0, hfloat, 16, 8) [] = { 0xcc00, 0xcb80, 45 0x4b4d, 0x4b4d, 46 0xcb00, 0xca80, 47 0x4b4d, 0x4b4d }; 48 #endif 49 VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000, 50 0x42073333, 0x42073333 }; 51 52 /* Chunk 1. */ 53 VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf4, 0xf5, 0x11, 0x11, 54 0xf6, 0xf7, 0x11, 0x11 }; 55 VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff2, 0xfff3, 0x22, 0x22 }; 56 VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 }; 57 VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf4, 0xf5, 0x55, 0x55, 58 0xf6, 0xf7, 0x55, 0x55 }; 59 VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 }; 60 VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 }; 61 VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf4, 0xf5, 0x55, 0x55, 62 0xf6, 0xf7, 0x55, 0x55 }; 63 VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 }; 64 #if defined (FP16_SUPPORTED) 65 VECT_VAR_DECL (expected1, hfloat, 16, 4) [] = { 0xcb00, 0xca80, 66 0x4b4d, 0x4b4d }; 67 #endif 68 VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0x42066666, 0x42066666 }; 69 VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf8, 0xf9, 0x11, 0x11, 70 0xfa, 0xfb, 0x11, 0x11, 71 0xfc, 0xfd, 0x11, 0x11, 72 0xfe, 0xff, 0x11, 0x11 }; 73 VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff4, 0xfff5, 0x22, 0x22, 74 0xfff6, 0xfff7, 0x22, 0x22 }; 75 VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff2, 0xfffffff3, 0x33, 0x33 }; 76 VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55, 77 0xfa, 0xfb, 0x55, 0x55, 78 0xfc, 0xfd, 0x55, 0x55, 79 0xfe, 0xff, 0x55, 0x55 }; 80 VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff4, 0xfff5, 0x66, 0x66, 81 0xfff6, 0xfff7, 0x66, 0x66 }; 82 VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff2, 0xfffffff3, 0x77, 0x77 }; 83 VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55, 84 0xfa, 0xfb, 0x55, 0x55, 85 0xfc, 0xfd, 0x55, 0x55, 86 0xfe, 0xff, 0x55, 0x55 }; 87 VECT_VAR_DECL(expected1,poly,16,8) [] = { 0xfff4, 0xfff5, 0x66, 0x66, 88 0xfff6, 0xfff7, 0x66, 0x66 }; 89 #if defined (FP16_SUPPORTED) 90 VECT_VAR_DECL (expected1, hfloat, 16, 8) [] = { 0xca00, 0xc980, 91 0x4b4d, 0x4b4d, 92 0xc900, 0xc880, 93 0x4b4d, 0x4b4d }; 94 #endif 95 VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0xc1600000, 0xc1500000, 96 0x42073333, 0x42073333 }; 97 98 #define INSN_NAME vtrn 99 #define TEST_MSG "VTRN/VTRNQ" 100 101 #include "vshuffle.inc" 102