Add more test cases: sqrshrn, uqrshrn, sqshrn, uqshrn, sqrshrun,
sqshrun, sqshl, uqshl, sqshlu, sqxtn, uqxtn, sqxtun, srhadd, urhadd,
sshl, ushl, shl, sshr, ushr, ssra, usra, srshl, urshl, srshr, urshr,
srsra, ursra, suqadd, usqadd.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13969 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/none/tests/arm64/fp_and_simd.c b/none/tests/arm64/fp_and_simd.c
index bbad9e0..bac3565 100644
--- a/none/tests/arm64/fp_and_simd.c
+++ b/none/tests/arm64/fp_and_simd.c
@@ -1007,66 +1007,66 @@
 
 GEN_SHIFT_TEST(ushr, 2d, 2d, 1)
 GEN_SHIFT_TEST(ushr, 2d, 2d, 13)
-GEN_SHIFT_TEST(ushr, 2d, 2d, 63)
+GEN_SHIFT_TEST(ushr, 2d, 2d, 64)
 GEN_SHIFT_TEST(sshr, 2d, 2d, 1)
 GEN_SHIFT_TEST(sshr, 2d, 2d, 13)
-GEN_SHIFT_TEST(sshr, 2d, 2d, 63)
-GEN_SHIFT_TEST(shl,  2d, 2d, 1)
+GEN_SHIFT_TEST(sshr, 2d, 2d, 64)
+GEN_SHIFT_TEST(shl,  2d, 2d, 0)
 GEN_SHIFT_TEST(shl,  2d, 2d, 13)
 GEN_SHIFT_TEST(shl,  2d, 2d, 63)
 
 GEN_SHIFT_TEST(ushr, 4s, 4s, 1)
 GEN_SHIFT_TEST(ushr, 4s, 4s, 13)
-GEN_SHIFT_TEST(ushr, 4s, 4s, 31)
+GEN_SHIFT_TEST(ushr, 4s, 4s, 32)
 GEN_SHIFT_TEST(sshr, 4s, 4s, 1)
 GEN_SHIFT_TEST(sshr, 4s, 4s, 13)
-GEN_SHIFT_TEST(sshr, 4s, 4s, 31)
-GEN_SHIFT_TEST(shl,  4s, 4s, 1)
+GEN_SHIFT_TEST(sshr, 4s, 4s, 32)
+GEN_SHIFT_TEST(shl,  4s, 4s, 0)
 GEN_SHIFT_TEST(shl,  4s, 4s, 13)
 GEN_SHIFT_TEST(shl,  4s, 4s, 31)
 
 GEN_SHIFT_TEST(ushr, 2s, 2s, 1)
 GEN_SHIFT_TEST(ushr, 2s, 2s, 13)
-GEN_SHIFT_TEST(ushr, 2s, 2s, 31)
+GEN_SHIFT_TEST(ushr, 2s, 2s, 32)
 GEN_SHIFT_TEST(sshr, 2s, 2s, 1)
 GEN_SHIFT_TEST(sshr, 2s, 2s, 13)
-GEN_SHIFT_TEST(sshr, 2s, 2s, 31)
-GEN_SHIFT_TEST(shl,  2s, 2s, 1)
+GEN_SHIFT_TEST(sshr, 2s, 2s, 32)
+GEN_SHIFT_TEST(shl,  2s, 2s, 0)
 GEN_SHIFT_TEST(shl,  2s, 2s, 13)
 GEN_SHIFT_TEST(shl,  2s, 2s, 31)
 
 GEN_SHIFT_TEST(ushr, 8h, 8h, 1)
 GEN_SHIFT_TEST(ushr, 8h, 8h, 13)
-GEN_SHIFT_TEST(ushr, 8h, 8h, 15)
+GEN_SHIFT_TEST(ushr, 8h, 8h, 16)
 GEN_SHIFT_TEST(sshr, 8h, 8h, 1)
 GEN_SHIFT_TEST(sshr, 8h, 8h, 13)
-GEN_SHIFT_TEST(sshr, 8h, 8h, 15)
-GEN_SHIFT_TEST(shl,  8h, 8h, 1)
+GEN_SHIFT_TEST(sshr, 8h, 8h, 16)
+GEN_SHIFT_TEST(shl,  8h, 8h, 0)
 GEN_SHIFT_TEST(shl,  8h, 8h, 13)
 GEN_SHIFT_TEST(shl,  8h, 8h, 15)
 
 GEN_SHIFT_TEST(ushr, 4h, 4h, 1)
 GEN_SHIFT_TEST(ushr, 4h, 4h, 13)
-GEN_SHIFT_TEST(ushr, 4h, 4h, 15)
+GEN_SHIFT_TEST(ushr, 4h, 4h, 16)
 GEN_SHIFT_TEST(sshr, 4h, 4h, 1)
 GEN_SHIFT_TEST(sshr, 4h, 4h, 13)
-GEN_SHIFT_TEST(sshr, 4h, 4h, 15)
-GEN_SHIFT_TEST(shl,  4h, 4h, 1)
+GEN_SHIFT_TEST(sshr, 4h, 4h, 16)
+GEN_SHIFT_TEST(shl,  4h, 4h, 0)
 GEN_SHIFT_TEST(shl,  4h, 4h, 13)
 GEN_SHIFT_TEST(shl,  4h, 4h, 15)
 
 GEN_SHIFT_TEST(ushr, 16b, 16b, 1)
-GEN_SHIFT_TEST(ushr, 16b, 16b, 7)
+GEN_SHIFT_TEST(ushr, 16b, 16b, 8)
 GEN_SHIFT_TEST(sshr, 16b, 16b, 1)
-GEN_SHIFT_TEST(sshr, 16b, 16b, 7)
-GEN_SHIFT_TEST(shl,  16b, 16b, 1)
+GEN_SHIFT_TEST(sshr, 16b, 16b, 8)
+GEN_SHIFT_TEST(shl,  16b, 16b, 0)
 GEN_SHIFT_TEST(shl,  16b, 16b, 7)
 
 GEN_SHIFT_TEST(ushr, 8b, 8b, 1)
-GEN_SHIFT_TEST(ushr, 8b, 8b, 7)
+GEN_SHIFT_TEST(ushr, 8b, 8b, 8)
 GEN_SHIFT_TEST(sshr, 8b, 8b, 1)
-GEN_SHIFT_TEST(sshr, 8b, 8b, 7)
-GEN_SHIFT_TEST(shl,  8b, 8b, 1)
+GEN_SHIFT_TEST(sshr, 8b, 8b, 8)
+GEN_SHIFT_TEST(shl,  8b, 8b, 0)
 GEN_SHIFT_TEST(shl,  8b, 8b, 7)
 
 GEN_SHIFT_TEST(ushll,  2d, 2s, 0)
@@ -1075,13 +1075,38 @@
 GEN_SHIFT_TEST(ushll2, 2d, 4s, 0)
 GEN_SHIFT_TEST(ushll2, 2d, 4s, 15)
 GEN_SHIFT_TEST(ushll2, 2d, 4s, 31)
+GEN_SHIFT_TEST(ushll,  4s, 4h,  0)
+GEN_SHIFT_TEST(ushll,  4s, 4h,  7)
+GEN_SHIFT_TEST(ushll,  4s, 4h,  15)
+GEN_SHIFT_TEST(ushll2, 4s, 8h,  0)
+GEN_SHIFT_TEST(ushll2, 4s, 8h,  7)
+GEN_SHIFT_TEST(ushll2, 4s, 8h,  15)
+GEN_SHIFT_TEST(ushll,  8h, 8b,  0)
+GEN_SHIFT_TEST(ushll,  8h, 8b,  3)
+GEN_SHIFT_TEST(ushll,  8h, 8b,  7)
+GEN_SHIFT_TEST(ushll2, 8h, 16b, 0)
+GEN_SHIFT_TEST(ushll2, 8h, 16b, 3)
+GEN_SHIFT_TEST(ushll2, 8h, 16b, 7)
 
-GEN_SHIFT_TEST(sshll,  2d, 2s, 0)
-GEN_SHIFT_TEST(sshll,  2d, 2s, 15)
-GEN_SHIFT_TEST(sshll,  2d, 2s, 31)
-GEN_SHIFT_TEST(sshll2, 2d, 4s, 0)
-GEN_SHIFT_TEST(sshll2, 2d, 4s, 15)
-GEN_SHIFT_TEST(sshll2, 2d, 4s, 31)
+GEN_SHIFT_TEST(sshll,  2d, 2s,  0)
+GEN_SHIFT_TEST(sshll,  2d, 2s,  15)
+GEN_SHIFT_TEST(sshll,  2d, 2s,  31)
+GEN_SHIFT_TEST(sshll2, 2d, 4s,  0)
+GEN_SHIFT_TEST(sshll2, 2d, 4s,  15)
+GEN_SHIFT_TEST(sshll2, 2d, 4s,  31)
+GEN_SHIFT_TEST(sshll,  4s, 4h,  0)
+GEN_SHIFT_TEST(sshll,  4s, 4h,  7)
+GEN_SHIFT_TEST(sshll,  4s, 4h,  15)
+GEN_SHIFT_TEST(sshll2, 4s, 8h,  0)
+GEN_SHIFT_TEST(sshll2, 4s, 8h,  7)
+GEN_SHIFT_TEST(sshll2, 4s, 8h,  15)
+GEN_SHIFT_TEST(sshll,  8h, 8b,  0)
+GEN_SHIFT_TEST(sshll,  8h, 8b,  3)
+GEN_SHIFT_TEST(sshll,  8h, 8b,  7)
+GEN_SHIFT_TEST(sshll2, 8h, 16b, 0)
+GEN_SHIFT_TEST(sshll2, 8h, 16b, 3)
+GEN_SHIFT_TEST(sshll2, 8h, 16b, 7)
+
 
 GEN_UNARY_TEST(xtn,  2s, 2d)
 GEN_UNARY_TEST(xtn2, 4s, 2d)
@@ -2336,6 +2361,504 @@
 GEN_TWOVEC_TEST(sqshrun_b_h_4,  "sqshrun b2, h5, #4",  2, 5)
 GEN_TWOVEC_TEST(sqshrun_b_h_8,  "sqshrun b2, h5, #8",  2, 5)
 
+GEN_TWOVEC_TEST(sqrshrn_2s_2d_1,   "sqrshrn  v4.2s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn_2s_2d_17,  "sqrshrn  v4.2s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqrshrn_2s_2d_32,  "sqrshrn  v4.2s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_4s_2d_1,  "sqrshrn2 v4.4s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_4s_2d_17, "sqrshrn2 v4.4s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_4s_2d_32, "sqrshrn2 v4.4s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqrshrn_4h_4s_1,   "sqrshrn  v4.4h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn_4h_4s_9,   "sqrshrn  v4.4h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn_4h_4s_16,  "sqrshrn  v4.4h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_8h_4s_1,  "sqrshrn2 v4.8h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_8h_4s_9,  "sqrshrn2 v4.8h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_8h_4s_16, "sqrshrn2 v4.8h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqrshrn_8b_8h_1,   "sqrshrn  v4.8b,  v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn_8b_8h_4,   "sqrshrn  v4.8b,  v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn_8b_8h_8,   "sqrshrn  v4.8b,  v29.8h, #8",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_16b_8h_1, "sqrshrn2 v4.16b, v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_16b_8h_4, "sqrshrn2 v4.16b, v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqrshrn2_16b_8h_8, "sqrshrn2 v4.16b, v29.8h, #8",  4, 29)
+
+GEN_TWOVEC_TEST(uqrshrn_2s_2d_1,   "uqrshrn  v4.2s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn_2s_2d_17,  "uqrshrn  v4.2s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(uqrshrn_2s_2d_32,  "uqrshrn  v4.2s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_4s_2d_1,  "uqrshrn2 v4.4s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_4s_2d_17, "uqrshrn2 v4.4s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_4s_2d_32, "uqrshrn2 v4.4s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(uqrshrn_4h_4s_1,   "uqrshrn  v4.4h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn_4h_4s_9,   "uqrshrn  v4.4h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn_4h_4s_16,  "uqrshrn  v4.4h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_8h_4s_1,  "uqrshrn2 v4.8h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_8h_4s_9,  "uqrshrn2 v4.8h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_8h_4s_16, "uqrshrn2 v4.8h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(uqrshrn_8b_8h_1,   "uqrshrn  v4.8b,  v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn_8b_8h_4,   "uqrshrn  v4.8b,  v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn_8b_8h_8,   "uqrshrn  v4.8b,  v29.8h, #8",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_16b_8h_1, "uqrshrn2 v4.16b, v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_16b_8h_4, "uqrshrn2 v4.16b, v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(uqrshrn2_16b_8h_8, "uqrshrn2 v4.16b, v29.8h, #8",  4, 29)
+
+GEN_TWOVEC_TEST(sqshrn_2s_2d_1,   "sqshrn  v4.2s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrn_2s_2d_17,  "sqshrn  v4.2s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqshrn_2s_2d_32,  "sqshrn  v4.2s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqshrn2_4s_2d_1,  "sqshrn2 v4.4s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrn2_4s_2d_17, "sqshrn2 v4.4s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqshrn2_4s_2d_32, "sqshrn2 v4.4s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqshrn_4h_4s_1,   "sqshrn  v4.4h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrn_4h_4s_9,   "sqshrn  v4.4h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqshrn_4h_4s_16,  "sqshrn  v4.4h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqshrn2_8h_4s_1,  "sqshrn2 v4.8h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrn2_8h_4s_9,  "sqshrn2 v4.8h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqshrn2_8h_4s_16, "sqshrn2 v4.8h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqshrn_8b_8h_1,   "sqshrn  v4.8b,  v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrn_8b_8h_4,   "sqshrn  v4.8b,  v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqshrn_8b_8h_8,   "sqshrn  v4.8b,  v29.8h, #8",  4, 29)
+GEN_TWOVEC_TEST(sqshrn2_16b_8h_1, "sqshrn2 v4.16b, v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrn2_16b_8h_4, "sqshrn2 v4.16b, v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqshrn2_16b_8h_8, "sqshrn2 v4.16b, v29.8h, #8",  4, 29)
+
+GEN_TWOVEC_TEST(uqshrn_2s_2d_1,   "uqshrn  v4.2s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(uqshrn_2s_2d_17,  "uqshrn  v4.2s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(uqshrn_2s_2d_32,  "uqshrn  v4.2s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(uqshrn2_4s_2d_1,  "uqshrn2 v4.4s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(uqshrn2_4s_2d_17, "uqshrn2 v4.4s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(uqshrn2_4s_2d_32, "uqshrn2 v4.4s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(uqshrn_4h_4s_1,   "uqshrn  v4.4h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(uqshrn_4h_4s_9,   "uqshrn  v4.4h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(uqshrn_4h_4s_16,  "uqshrn  v4.4h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(uqshrn2_8h_4s_1,  "uqshrn2 v4.8h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(uqshrn2_8h_4s_9,  "uqshrn2 v4.8h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(uqshrn2_8h_4s_16, "uqshrn2 v4.8h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(uqshrn_8b_8h_1,   "uqshrn  v4.8b,  v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(uqshrn_8b_8h_4,   "uqshrn  v4.8b,  v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(uqshrn_8b_8h_8,   "uqshrn  v4.8b,  v29.8h, #8",  4, 29)
+GEN_TWOVEC_TEST(uqshrn2_16b_8h_1, "uqshrn2 v4.16b, v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(uqshrn2_16b_8h_4, "uqshrn2 v4.16b, v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(uqshrn2_16b_8h_8, "uqshrn2 v4.16b, v29.8h, #8",  4, 29)
+
+GEN_TWOVEC_TEST(sqrshrun_2s_2d_1,   "sqrshrun  v4.2s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun_2s_2d_17,  "sqrshrun  v4.2s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqrshrun_2s_2d_32,  "sqrshrun  v4.2s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_4s_2d_1,  "sqrshrun2 v4.4s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_4s_2d_17, "sqrshrun2 v4.4s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_4s_2d_32, "sqrshrun2 v4.4s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqrshrun_4h_4s_1,   "sqrshrun  v4.4h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun_4h_4s_9,   "sqrshrun  v4.4h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun_4h_4s_16,  "sqrshrun  v4.4h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_8h_4s_1,  "sqrshrun2 v4.8h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_8h_4s_9,  "sqrshrun2 v4.8h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_8h_4s_16, "sqrshrun2 v4.8h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqrshrun_8b_8h_1,   "sqrshrun  v4.8b,  v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun_8b_8h_4,   "sqrshrun  v4.8b,  v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun_8b_8h_8,   "sqrshrun  v4.8b,  v29.8h, #8",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_16b_8h_1, "sqrshrun2 v4.16b, v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_16b_8h_4, "sqrshrun2 v4.16b, v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqrshrun2_16b_8h_8, "sqrshrun2 v4.16b, v29.8h, #8",  4, 29)
+
+GEN_TWOVEC_TEST(sqshrun_2s_2d_1,   "sqshrun  v4.2s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrun_2s_2d_17,  "sqshrun  v4.2s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqshrun_2s_2d_32,  "sqshrun  v4.2s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqshrun2_4s_2d_1,  "sqshrun2 v4.4s,  v29.2d, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrun2_4s_2d_17, "sqshrun2 v4.4s,  v29.2d, #17", 4, 29)
+GEN_TWOVEC_TEST(sqshrun2_4s_2d_32, "sqshrun2 v4.4s,  v29.2d, #32", 4, 29)
+GEN_TWOVEC_TEST(sqshrun_4h_4s_1,   "sqshrun  v4.4h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrun_4h_4s_9,   "sqshrun  v4.4h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqshrun_4h_4s_16,  "sqshrun  v4.4h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqshrun2_8h_4s_1,  "sqshrun2 v4.8h,  v29.4s, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrun2_8h_4s_9,  "sqshrun2 v4.8h,  v29.4s, #9",  4, 29)
+GEN_TWOVEC_TEST(sqshrun2_8h_4s_16, "sqshrun2 v4.8h,  v29.4s, #16", 4, 29)
+GEN_TWOVEC_TEST(sqshrun_8b_8h_1,   "sqshrun  v4.8b,  v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrun_8b_8h_4,   "sqshrun  v4.8b,  v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqshrun_8b_8h_8,   "sqshrun  v4.8b,  v29.8h, #8",  4, 29)
+GEN_TWOVEC_TEST(sqshrun2_16b_8h_1, "sqshrun2 v4.16b, v29.8h, #1",  4, 29)
+GEN_TWOVEC_TEST(sqshrun2_16b_8h_4, "sqshrun2 v4.16b, v29.8h, #4",  4, 29)
+GEN_TWOVEC_TEST(sqshrun2_16b_8h_8, "sqshrun2 v4.16b, v29.8h, #8",  4, 29)
+
+GEN_TWOVEC_TEST(sqshl_d_d_0,  "sqshl d5, d28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshl_d_d_32, "sqshl d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(sqshl_d_d_63, "sqshl d5, d28, #63", 5, 28)
+GEN_TWOVEC_TEST(sqshl_s_s_0,  "sqshl s5, s28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshl_s_s_16, "sqshl s5, s28, #16", 5, 28)
+GEN_TWOVEC_TEST(sqshl_s_s_31, "sqshl s5, s28, #31", 5, 28)
+GEN_TWOVEC_TEST(sqshl_h_h_0,  "sqshl h5, h28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshl_h_h_8,  "sqshl h5, h28, #8",  5, 28)
+GEN_TWOVEC_TEST(sqshl_h_h_15, "sqshl h5, h28, #15", 5, 28)
+GEN_TWOVEC_TEST(sqshl_b_b_0,  "sqshl b5, b28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshl_b_b_4,  "sqshl b5, b28, #4",  5, 28)
+GEN_TWOVEC_TEST(sqshl_b_b_7,  "sqshl b5, b28, #7",  5, 28)
+
+GEN_TWOVEC_TEST(uqshl_d_d_0,  "uqshl d5, d28, #0",  5, 28)
+GEN_TWOVEC_TEST(uqshl_d_d_32, "uqshl d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(uqshl_d_d_63, "uqshl d5, d28, #63", 5, 28)
+GEN_TWOVEC_TEST(uqshl_s_s_0,  "uqshl s5, s28, #0",  5, 28)
+GEN_TWOVEC_TEST(uqshl_s_s_16, "uqshl s5, s28, #16", 5, 28)
+GEN_TWOVEC_TEST(uqshl_s_s_31, "uqshl s5, s28, #31", 5, 28)
+GEN_TWOVEC_TEST(uqshl_h_h_0,  "uqshl h5, h28, #0",  5, 28)
+GEN_TWOVEC_TEST(uqshl_h_h_8,  "uqshl h5, h28, #8",  5, 28)
+GEN_TWOVEC_TEST(uqshl_h_h_15, "uqshl h5, h28, #15", 5, 28)
+GEN_TWOVEC_TEST(uqshl_b_b_0,  "uqshl b5, b28, #0",  5, 28)
+GEN_TWOVEC_TEST(uqshl_b_b_4,  "uqshl b5, b28, #4",  5, 28)
+GEN_TWOVEC_TEST(uqshl_b_b_7,  "uqshl b5, b28, #7",  5, 28)
+
+GEN_TWOVEC_TEST(sqshlu_d_d_0,  "sqshlu d5, d28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshlu_d_d_32, "sqshlu d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(sqshlu_d_d_63, "sqshlu d5, d28, #63", 5, 28)
+GEN_TWOVEC_TEST(sqshlu_s_s_0,  "sqshlu s5, s28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshlu_s_s_16, "sqshlu s5, s28, #16", 5, 28)
+GEN_TWOVEC_TEST(sqshlu_s_s_31, "sqshlu s5, s28, #31", 5, 28)
+GEN_TWOVEC_TEST(sqshlu_h_h_0,  "sqshlu h5, h28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshlu_h_h_8,  "sqshlu h5, h28, #8",  5, 28)
+GEN_TWOVEC_TEST(sqshlu_h_h_15, "sqshlu h5, h28, #15", 5, 28)
+GEN_TWOVEC_TEST(sqshlu_b_b_0,  "sqshlu b5, b28, #0",  5, 28)
+GEN_TWOVEC_TEST(sqshlu_b_b_4,  "sqshlu b5, b28, #4",  5, 28)
+GEN_TWOVEC_TEST(sqshlu_b_b_7,  "sqshlu b5, b28, #7",  5, 28)
+
+GEN_TWOVEC_TEST(sqshl_2d_2d_0,   "sqshl v6.2d,  v27.2d, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshl_2d_2d_32,  "sqshl v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(sqshl_2d_2d_63,  "sqshl v6.2d,  v27.2d, #63", 6, 27)
+GEN_TWOVEC_TEST(sqshl_4s_4s_0,   "sqshl v6.4s,  v27.4s, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshl_4s_4s_16,  "sqshl v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(sqshl_4s_4s_31,  "sqshl v6.4s,  v27.4s, #31", 6, 27)
+GEN_TWOVEC_TEST(sqshl_2s_2s_0,   "sqshl v6.2s,  v27.2s, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshl_2s_2s_16,  "sqshl v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(sqshl_2s_2s_31,  "sqshl v6.2s,  v27.2s, #31", 6, 27)
+GEN_TWOVEC_TEST(sqshl_8h_8h_0,   "sqshl v6.8h,  v27.8h, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshl_8h_8h_8,   "sqshl v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(sqshl_8h_8h_15,  "sqshl v6.8h,  v27.8h, #15", 6, 27)
+GEN_TWOVEC_TEST(sqshl_4h_4h_0,   "sqshl v6.4h,  v27.4h, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshl_4h_4h_8,   "sqshl v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(sqshl_4h_4h_15,  "sqshl v6.4h,  v27.4h, #15", 6, 27)
+GEN_TWOVEC_TEST(sqshl_16b_16b_0, "sqshl v6.16b, v27.16b, #0", 6, 27)
+GEN_TWOVEC_TEST(sqshl_16b_16b_3, "sqshl v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(sqshl_16b_16b_7, "sqshl v6.16b, v27.16b, #7", 6, 27)
+GEN_TWOVEC_TEST(sqshl_8b_8b_0,   "sqshl v6.8b,  v27.8b, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshl_8b_8b_3,   "sqshl v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(sqshl_8b_8b_7,   "sqshl v6.8b,  v27.8b, #7",  6, 27)
+
+GEN_TWOVEC_TEST(uqshl_2d_2d_0,   "uqshl v6.2d,  v27.2d, #0",  6, 27)
+GEN_TWOVEC_TEST(uqshl_2d_2d_32,  "uqshl v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(uqshl_2d_2d_63,  "uqshl v6.2d,  v27.2d, #63", 6, 27)
+GEN_TWOVEC_TEST(uqshl_4s_4s_0,   "uqshl v6.4s,  v27.4s, #0",  6, 27)
+GEN_TWOVEC_TEST(uqshl_4s_4s_16,  "uqshl v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(uqshl_4s_4s_31,  "uqshl v6.4s,  v27.4s, #31", 6, 27)
+GEN_TWOVEC_TEST(uqshl_2s_2s_0,   "uqshl v6.2s,  v27.2s, #0",  6, 27)
+GEN_TWOVEC_TEST(uqshl_2s_2s_16,  "uqshl v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(uqshl_2s_2s_31,  "uqshl v6.2s,  v27.2s, #31", 6, 27)
+GEN_TWOVEC_TEST(uqshl_8h_8h_0,   "uqshl v6.8h,  v27.8h, #0",  6, 27)
+GEN_TWOVEC_TEST(uqshl_8h_8h_8,   "uqshl v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(uqshl_8h_8h_15,  "uqshl v6.8h,  v27.8h, #15", 6, 27)
+GEN_TWOVEC_TEST(uqshl_4h_4h_0,   "uqshl v6.4h,  v27.4h, #0",  6, 27)
+GEN_TWOVEC_TEST(uqshl_4h_4h_8,   "uqshl v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(uqshl_4h_4h_15,  "uqshl v6.4h,  v27.4h, #15", 6, 27)
+GEN_TWOVEC_TEST(uqshl_16b_16b_0, "uqshl v6.16b, v27.16b, #0", 6, 27)
+GEN_TWOVEC_TEST(uqshl_16b_16b_3, "uqshl v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(uqshl_16b_16b_7, "uqshl v6.16b, v27.16b, #7", 6, 27)
+GEN_TWOVEC_TEST(uqshl_8b_8b_0,   "uqshl v6.8b,  v27.8b, #0",  6, 27)
+GEN_TWOVEC_TEST(uqshl_8b_8b_3,   "uqshl v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(uqshl_8b_8b_7,   "uqshl v6.8b,  v27.8b, #7",  6, 27)
+
+GEN_TWOVEC_TEST(sqshlu_2d_2d_0,   "sqshlu v6.2d,  v27.2d, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_2d_2d_32,  "sqshlu v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_2d_2d_63,  "sqshlu v6.2d,  v27.2d, #63", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_4s_4s_0,   "sqshlu v6.4s,  v27.4s, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_4s_4s_16,  "sqshlu v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_4s_4s_31,  "sqshlu v6.4s,  v27.4s, #31", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_2s_2s_0,   "sqshlu v6.2s,  v27.2s, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_2s_2s_16,  "sqshlu v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_2s_2s_31,  "sqshlu v6.2s,  v27.2s, #31", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_8h_8h_0,   "sqshlu v6.8h,  v27.8h, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_8h_8h_8,   "sqshlu v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_8h_8h_15,  "sqshlu v6.8h,  v27.8h, #15", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_4h_4h_0,   "sqshlu v6.4h,  v27.4h, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_4h_4h_8,   "sqshlu v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_4h_4h_15,  "sqshlu v6.4h,  v27.4h, #15", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_16b_16b_0, "sqshlu v6.16b, v27.16b, #0", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_16b_16b_3, "sqshlu v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_16b_16b_7, "sqshlu v6.16b, v27.16b, #7", 6, 27)
+GEN_TWOVEC_TEST(sqshlu_8b_8b_0,   "sqshlu v6.8b,  v27.8b, #0",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_8b_8b_3,   "sqshlu v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(sqshlu_8b_8b_7,   "sqshlu v6.8b,  v27.8b, #7",  6, 27)
+
+GEN_TWOVEC_TEST(sqxtn_s_d,  "sqxtn s31,  d0", 31, 0)
+GEN_TWOVEC_TEST(sqxtn_h_s,  "sqxtn h31,  s0", 31, 0)
+GEN_TWOVEC_TEST(sqxtn_b_h,  "sqxtn b31,  h0", 31, 0)
+GEN_TWOVEC_TEST(uqxtn_s_d,  "uqxtn s31,  d0", 31, 0)
+GEN_TWOVEC_TEST(uqxtn_h_s,  "uqxtn h31,  s0", 31, 0)
+GEN_TWOVEC_TEST(uqxtn_b_h,  "uqxtn b31,  h0", 31, 0)
+GEN_TWOVEC_TEST(sqxtun_s_d, "sqxtun s31, d0", 31, 0)
+GEN_TWOVEC_TEST(sqxtun_h_s, "sqxtun h31, s0", 31, 0)
+GEN_TWOVEC_TEST(sqxtun_b_h, "sqxtun b31, h0", 31, 0)
+
+GEN_UNARY_TEST(sqxtn,   2s, 2d)
+GEN_UNARY_TEST(sqxtn2,  4s, 2d)
+GEN_UNARY_TEST(sqxtn,   4h, 4s)
+GEN_UNARY_TEST(sqxtn2,  8h, 4s)
+GEN_UNARY_TEST(sqxtn,   8b, 8h)
+GEN_UNARY_TEST(sqxtn2, 16b, 8h)
+
+GEN_UNARY_TEST(uqxtn,   2s, 2d)
+GEN_UNARY_TEST(uqxtn2,  4s, 2d)
+GEN_UNARY_TEST(uqxtn,   4h, 4s)
+GEN_UNARY_TEST(uqxtn2,  8h, 4s)
+GEN_UNARY_TEST(uqxtn,   8b, 8h)
+GEN_UNARY_TEST(uqxtn2, 16b, 8h)
+
+GEN_UNARY_TEST(sqxtun,   2s, 2d)
+GEN_UNARY_TEST(sqxtun2,  4s, 2d)
+GEN_UNARY_TEST(sqxtun,   4h, 4s)
+GEN_UNARY_TEST(sqxtun2,  8h, 4s)
+GEN_UNARY_TEST(sqxtun,   8b, 8h)
+GEN_UNARY_TEST(sqxtun2, 16b, 8h)
+
+GEN_THREEVEC_TEST(srhadd_4s_4s_4s,"srhadd v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
+GEN_THREEVEC_TEST(srhadd_2s_2s_2s,"srhadd v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
+GEN_THREEVEC_TEST(srhadd_8h_8h_8h,"srhadd v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
+GEN_THREEVEC_TEST(srhadd_4h_4h_4h,"srhadd v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
+GEN_THREEVEC_TEST(srhadd_16b_16b_16b,
+                                  "srhadd v2.16b, v11.16b, v29.16b", 2, 11, 29)
+GEN_THREEVEC_TEST(srhadd_8b_8b_8b,"srhadd v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
+
+GEN_THREEVEC_TEST(urhadd_4s_4s_4s,"urhadd v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
+GEN_THREEVEC_TEST(urhadd_2s_2s_2s,"urhadd v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
+GEN_THREEVEC_TEST(urhadd_8h_8h_8h,"urhadd v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
+GEN_THREEVEC_TEST(urhadd_4h_4h_4h,"urhadd v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
+GEN_THREEVEC_TEST(urhadd_16b_16b_16b,
+                                  "urhadd v2.16b, v11.16b, v29.16b", 2, 11, 29)
+GEN_THREEVEC_TEST(urhadd_8b_8b_8b,"urhadd v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
+
+GEN_THREEVEC_TEST(sshl_d_d_d, "sshl d29, d28, d27", 29, 28, 27)
+GEN_THREEVEC_TEST(ushl_d_d_d, "ushl d29, d28, d27", 29, 28, 27)
+
+GEN_THREEVEC_TEST(sshl_2d_2d_2d,    "sshl v29.2d, v28.2d, v27.2d", 29,28,27)
+GEN_THREEVEC_TEST(sshl_4s_4s_4s,    "sshl v29.4s, v28.4s, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(sshl_2s_2s_2s,    "sshl v29.2s, v28.2s, v27.2s", 29,28,27)
+GEN_THREEVEC_TEST(sshl_8h_8h_8h,    "sshl v29.8h, v28.8h, v27.8h", 29,28,27)
+GEN_THREEVEC_TEST(sshl_4h_4h_4h,    "sshl v29.4h, v28.4h, v27.4h", 29,28,27)
+GEN_THREEVEC_TEST(sshl_16b_16b_16b, "sshl v29.16b, v28.16b, v27.16b", 29,28,27)
+GEN_THREEVEC_TEST(sshl_8b_8b_8b,    "sshl v29.8b, v28.8b, v27.8b", 29,28,27)
+
+GEN_THREEVEC_TEST(ushl_2d_2d_2d,    "ushl v29.2d, v28.2d, v27.2d", 29,28,27)
+GEN_THREEVEC_TEST(ushl_4s_4s_4s,    "ushl v29.4s, v28.4s, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(ushl_2s_2s_2s,    "ushl v29.2s, v28.2s, v27.2s", 29,28,27)
+GEN_THREEVEC_TEST(ushl_8h_8h_8h,    "ushl v29.8h, v28.8h, v27.8h", 29,28,27)
+GEN_THREEVEC_TEST(ushl_4h_4h_4h,    "ushl v29.4h, v28.4h, v27.4h", 29,28,27)
+GEN_THREEVEC_TEST(ushl_16b_16b_16b, "ushl v29.16b, v28.16b, v27.16b", 29,28,27)
+GEN_THREEVEC_TEST(ushl_8b_8b_8b,    "ushl v29.8b, v28.8b, v27.8b", 29,28,27)
+
+GEN_TWOVEC_TEST(shl_d_d_0,  "shl d5, d28, #0",  5, 28)
+GEN_TWOVEC_TEST(shl_d_d_32, "shl d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(shl_d_d_63, "shl d5, d28, #63", 5, 28)
+
+GEN_TWOVEC_TEST(sshr_d_d_1,  "sshr d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(sshr_d_d_32, "sshr d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(sshr_d_d_64, "sshr d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(ushr_d_d_1,  "ushr d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(ushr_d_d_32, "ushr d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(ushr_d_d_64, "ushr d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(ssra_d_d_1,  "ssra d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(ssra_d_d_32, "ssra d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(ssra_d_d_64, "ssra d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(usra_d_d_1,  "usra d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(usra_d_d_32, "usra d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(usra_d_d_64, "usra d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(ssra_2d_2d_1,   "ssra v6.2d,  v27.2d, #1",  6, 27)
+GEN_TWOVEC_TEST(ssra_2d_2d_32,  "ssra v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(ssra_2d_2d_64,  "ssra v6.2d,  v27.2d, #64", 6, 27)
+GEN_TWOVEC_TEST(ssra_4s_4s_1,   "ssra v6.4s,  v27.4s, #1",  6, 27)
+GEN_TWOVEC_TEST(ssra_4s_4s_16,  "ssra v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(ssra_4s_4s_32,  "ssra v6.4s,  v27.4s, #32", 6, 27)
+GEN_TWOVEC_TEST(ssra_2s_2s_1,   "ssra v6.2s,  v27.2s, #1",  6, 27)
+GEN_TWOVEC_TEST(ssra_2s_2s_16,  "ssra v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(ssra_2s_2s_32,  "ssra v6.2s,  v27.2s, #32", 6, 27)
+GEN_TWOVEC_TEST(ssra_8h_8h_1,   "ssra v6.8h,  v27.8h, #1",  6, 27)
+GEN_TWOVEC_TEST(ssra_8h_8h_8,   "ssra v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(ssra_8h_8h_16,  "ssra v6.8h,  v27.8h, #16", 6, 27)
+GEN_TWOVEC_TEST(ssra_4h_4h_1,   "ssra v6.4h,  v27.4h, #1",  6, 27)
+GEN_TWOVEC_TEST(ssra_4h_4h_8,   "ssra v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(ssra_4h_4h_16,  "ssra v6.4h,  v27.4h, #16", 6, 27)
+GEN_TWOVEC_TEST(ssra_16b_16b_1, "ssra v6.16b, v27.16b, #1", 6, 27)
+GEN_TWOVEC_TEST(ssra_16b_16b_3, "ssra v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(ssra_16b_16b_8, "ssra v6.16b, v27.16b, #8", 6, 27)
+GEN_TWOVEC_TEST(ssra_8b_8b_1,   "ssra v6.8b,  v27.8b, #1",  6, 27)
+GEN_TWOVEC_TEST(ssra_8b_8b_3,   "ssra v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(ssra_8b_8b_8,   "ssra v6.8b,  v27.8b, #8",  6, 27)
+
+GEN_TWOVEC_TEST(usra_2d_2d_1,   "usra v6.2d,  v27.2d, #1",  6, 27)
+GEN_TWOVEC_TEST(usra_2d_2d_32,  "usra v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(usra_2d_2d_64,  "usra v6.2d,  v27.2d, #64", 6, 27)
+GEN_TWOVEC_TEST(usra_4s_4s_1,   "usra v6.4s,  v27.4s, #1",  6, 27)
+GEN_TWOVEC_TEST(usra_4s_4s_16,  "usra v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(usra_4s_4s_32,  "usra v6.4s,  v27.4s, #32", 6, 27)
+GEN_TWOVEC_TEST(usra_2s_2s_1,   "usra v6.2s,  v27.2s, #1",  6, 27)
+GEN_TWOVEC_TEST(usra_2s_2s_16,  "usra v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(usra_2s_2s_32,  "usra v6.2s,  v27.2s, #32", 6, 27)
+GEN_TWOVEC_TEST(usra_8h_8h_1,   "usra v6.8h,  v27.8h, #1",  6, 27)
+GEN_TWOVEC_TEST(usra_8h_8h_8,   "usra v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(usra_8h_8h_16,  "usra v6.8h,  v27.8h, #16", 6, 27)
+GEN_TWOVEC_TEST(usra_4h_4h_1,   "usra v6.4h,  v27.4h, #1",  6, 27)
+GEN_TWOVEC_TEST(usra_4h_4h_8,   "usra v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(usra_4h_4h_16,  "usra v6.4h,  v27.4h, #16", 6, 27)
+GEN_TWOVEC_TEST(usra_16b_16b_1, "usra v6.16b, v27.16b, #1", 6, 27)
+GEN_TWOVEC_TEST(usra_16b_16b_3, "usra v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(usra_16b_16b_8, "usra v6.16b, v27.16b, #8", 6, 27)
+GEN_TWOVEC_TEST(usra_8b_8b_1,   "usra v6.8b,  v27.8b, #1",  6, 27)
+GEN_TWOVEC_TEST(usra_8b_8b_3,   "usra v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(usra_8b_8b_8,   "usra v6.8b,  v27.8b, #8",  6, 27)
+
+GEN_THREEVEC_TEST(srshl_d_d_d, "srshl d29, d28, d27", 29, 28, 27)
+GEN_THREEVEC_TEST(urshl_d_d_d, "urshl d29, d28, d27", 29, 28, 27)
+
+GEN_THREEVEC_TEST(srshl_2d_2d_2d,   "srshl v29.2d, v28.2d, v27.2d", 29,28,27)
+GEN_THREEVEC_TEST(srshl_4s_4s_4s,   "srshl v29.4s, v28.4s, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(srshl_2s_2s_2s,   "srshl v29.2s, v28.2s, v27.2s", 29,28,27)
+GEN_THREEVEC_TEST(srshl_8h_8h_8h,   "srshl v29.8h, v28.8h, v27.8h", 29,28,27)
+GEN_THREEVEC_TEST(srshl_4h_4h_4h,   "srshl v29.4h, v28.4h, v27.4h", 29,28,27)
+GEN_THREEVEC_TEST(srshl_16b_16b_16b,"srshl v29.16b, v28.16b, v27.16b", 29,28,27)
+GEN_THREEVEC_TEST(srshl_8b_8b_8b,   "srshl v29.8b, v28.8b, v27.8b", 29,28,27)
+
+GEN_THREEVEC_TEST(urshl_2d_2d_2d,   "urshl v29.2d, v28.2d, v27.2d", 29,28,27)
+GEN_THREEVEC_TEST(urshl_4s_4s_4s,   "urshl v29.4s, v28.4s, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(urshl_2s_2s_2s,   "urshl v29.2s, v28.2s, v27.2s", 29,28,27)
+GEN_THREEVEC_TEST(urshl_8h_8h_8h,   "urshl v29.8h, v28.8h, v27.8h", 29,28,27)
+GEN_THREEVEC_TEST(urshl_4h_4h_4h,   "urshl v29.4h, v28.4h, v27.4h", 29,28,27)
+GEN_THREEVEC_TEST(urshl_16b_16b_16b,"urshl v29.16b, v28.16b, v27.16b", 29,28,27)
+GEN_THREEVEC_TEST(urshl_8b_8b_8b,   "urshl v29.8b, v28.8b, v27.8b", 29,28,27)
+
+GEN_TWOVEC_TEST(srshr_d_d_1,  "srshr d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(srshr_d_d_32, "srshr d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(srshr_d_d_64, "srshr d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(urshr_d_d_1,  "urshr d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(urshr_d_d_32, "urshr d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(urshr_d_d_64, "urshr d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(srshr_2d_2d_1,   "srshr v6.2d,  v27.2d, #1",  6, 27)
+GEN_TWOVEC_TEST(srshr_2d_2d_32,  "srshr v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(srshr_2d_2d_64,  "srshr v6.2d,  v27.2d, #64", 6, 27)
+GEN_TWOVEC_TEST(srshr_4s_4s_1,   "srshr v6.4s,  v27.4s, #1",  6, 27)
+GEN_TWOVEC_TEST(srshr_4s_4s_16,  "srshr v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(srshr_4s_4s_32,  "srshr v6.4s,  v27.4s, #32", 6, 27)
+GEN_TWOVEC_TEST(srshr_2s_2s_1,   "srshr v6.2s,  v27.2s, #1",  6, 27)
+GEN_TWOVEC_TEST(srshr_2s_2s_16,  "srshr v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(srshr_2s_2s_32,  "srshr v6.2s,  v27.2s, #32", 6, 27)
+GEN_TWOVEC_TEST(srshr_8h_8h_1,   "srshr v6.8h,  v27.8h, #1",  6, 27)
+GEN_TWOVEC_TEST(srshr_8h_8h_8,   "srshr v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(srshr_8h_8h_16,  "srshr v6.8h,  v27.8h, #16", 6, 27)
+GEN_TWOVEC_TEST(srshr_4h_4h_1,   "srshr v6.4h,  v27.4h, #1",  6, 27)
+GEN_TWOVEC_TEST(srshr_4h_4h_8,   "srshr v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(srshr_4h_4h_16,  "srshr v6.4h,  v27.4h, #16", 6, 27)
+GEN_TWOVEC_TEST(srshr_16b_16b_1, "srshr v6.16b, v27.16b, #1", 6, 27)
+GEN_TWOVEC_TEST(srshr_16b_16b_3, "srshr v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(srshr_16b_16b_8, "srshr v6.16b, v27.16b, #8", 6, 27)
+GEN_TWOVEC_TEST(srshr_8b_8b_1,   "srshr v6.8b,  v27.8b, #1",  6, 27)
+GEN_TWOVEC_TEST(srshr_8b_8b_3,   "srshr v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(srshr_8b_8b_8,   "srshr v6.8b,  v27.8b, #8",  6, 27)
+
+GEN_TWOVEC_TEST(urshr_2d_2d_1,   "urshr v6.2d,  v27.2d, #1",  6, 27)
+GEN_TWOVEC_TEST(urshr_2d_2d_32,  "urshr v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(urshr_2d_2d_64,  "urshr v6.2d,  v27.2d, #64", 6, 27)
+GEN_TWOVEC_TEST(urshr_4s_4s_1,   "urshr v6.4s,  v27.4s, #1",  6, 27)
+GEN_TWOVEC_TEST(urshr_4s_4s_16,  "urshr v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(urshr_4s_4s_32,  "urshr v6.4s,  v27.4s, #32", 6, 27)
+GEN_TWOVEC_TEST(urshr_2s_2s_1,   "urshr v6.2s,  v27.2s, #1",  6, 27)
+GEN_TWOVEC_TEST(urshr_2s_2s_16,  "urshr v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(urshr_2s_2s_32,  "urshr v6.2s,  v27.2s, #32", 6, 27)
+GEN_TWOVEC_TEST(urshr_8h_8h_1,   "urshr v6.8h,  v27.8h, #1",  6, 27)
+GEN_TWOVEC_TEST(urshr_8h_8h_8,   "urshr v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(urshr_8h_8h_16,  "urshr v6.8h,  v27.8h, #16", 6, 27)
+GEN_TWOVEC_TEST(urshr_4h_4h_1,   "urshr v6.4h,  v27.4h, #1",  6, 27)
+GEN_TWOVEC_TEST(urshr_4h_4h_8,   "urshr v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(urshr_4h_4h_16,  "urshr v6.4h,  v27.4h, #16", 6, 27)
+GEN_TWOVEC_TEST(urshr_16b_16b_1, "urshr v6.16b, v27.16b, #1", 6, 27)
+GEN_TWOVEC_TEST(urshr_16b_16b_3, "urshr v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(urshr_16b_16b_8, "urshr v6.16b, v27.16b, #8", 6, 27)
+GEN_TWOVEC_TEST(urshr_8b_8b_1,   "urshr v6.8b,  v27.8b, #1",  6, 27)
+GEN_TWOVEC_TEST(urshr_8b_8b_3,   "urshr v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(urshr_8b_8b_8,   "urshr v6.8b,  v27.8b, #8",  6, 27)
+
+GEN_TWOVEC_TEST(srsra_d_d_1,  "srsra d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(srsra_d_d_32, "srsra d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(srsra_d_d_64, "srsra d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(ursra_d_d_1,  "ursra d5, d28, #1",  5, 28)
+GEN_TWOVEC_TEST(ursra_d_d_32, "ursra d5, d28, #32", 5, 28)
+GEN_TWOVEC_TEST(ursra_d_d_64, "ursra d5, d28, #64", 5, 28)
+
+GEN_TWOVEC_TEST(srsra_2d_2d_1,   "srsra v6.2d,  v27.2d, #1",  6, 27)
+GEN_TWOVEC_TEST(srsra_2d_2d_32,  "srsra v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(srsra_2d_2d_64,  "srsra v6.2d,  v27.2d, #64", 6, 27)
+GEN_TWOVEC_TEST(srsra_4s_4s_1,   "srsra v6.4s,  v27.4s, #1",  6, 27)
+GEN_TWOVEC_TEST(srsra_4s_4s_16,  "srsra v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(srsra_4s_4s_32,  "srsra v6.4s,  v27.4s, #32", 6, 27)
+GEN_TWOVEC_TEST(srsra_2s_2s_1,   "srsra v6.2s,  v27.2s, #1",  6, 27)
+GEN_TWOVEC_TEST(srsra_2s_2s_16,  "srsra v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(srsra_2s_2s_32,  "srsra v6.2s,  v27.2s, #32", 6, 27)
+GEN_TWOVEC_TEST(srsra_8h_8h_1,   "srsra v6.8h,  v27.8h, #1",  6, 27)
+GEN_TWOVEC_TEST(srsra_8h_8h_8,   "srsra v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(srsra_8h_8h_16,  "srsra v6.8h,  v27.8h, #16", 6, 27)
+GEN_TWOVEC_TEST(srsra_4h_4h_1,   "srsra v6.4h,  v27.4h, #1",  6, 27)
+GEN_TWOVEC_TEST(srsra_4h_4h_8,   "srsra v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(srsra_4h_4h_16,  "srsra v6.4h,  v27.4h, #16", 6, 27)
+GEN_TWOVEC_TEST(srsra_16b_16b_1, "srsra v6.16b, v27.16b, #1", 6, 27)
+GEN_TWOVEC_TEST(srsra_16b_16b_3, "srsra v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(srsra_16b_16b_8, "srsra v6.16b, v27.16b, #8", 6, 27)
+GEN_TWOVEC_TEST(srsra_8b_8b_1,   "srsra v6.8b,  v27.8b, #1",  6, 27)
+GEN_TWOVEC_TEST(srsra_8b_8b_3,   "srsra v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(srsra_8b_8b_8,   "srsra v6.8b,  v27.8b, #8",  6, 27)
+
+GEN_TWOVEC_TEST(ursra_2d_2d_1,   "ursra v6.2d,  v27.2d, #1",  6, 27)
+GEN_TWOVEC_TEST(ursra_2d_2d_32,  "ursra v6.2d,  v27.2d, #32", 6, 27)
+GEN_TWOVEC_TEST(ursra_2d_2d_64,  "ursra v6.2d,  v27.2d, #64", 6, 27)
+GEN_TWOVEC_TEST(ursra_4s_4s_1,   "ursra v6.4s,  v27.4s, #1",  6, 27)
+GEN_TWOVEC_TEST(ursra_4s_4s_16,  "ursra v6.4s,  v27.4s, #16", 6, 27)
+GEN_TWOVEC_TEST(ursra_4s_4s_32,  "ursra v6.4s,  v27.4s, #32", 6, 27)
+GEN_TWOVEC_TEST(ursra_2s_2s_1,   "ursra v6.2s,  v27.2s, #1",  6, 27)
+GEN_TWOVEC_TEST(ursra_2s_2s_16,  "ursra v6.2s,  v27.2s, #16", 6, 27)
+GEN_TWOVEC_TEST(ursra_2s_2s_32,  "ursra v6.2s,  v27.2s, #32", 6, 27)
+GEN_TWOVEC_TEST(ursra_8h_8h_1,   "ursra v6.8h,  v27.8h, #1",  6, 27)
+GEN_TWOVEC_TEST(ursra_8h_8h_8,   "ursra v6.8h,  v27.8h, #8",  6, 27)
+GEN_TWOVEC_TEST(ursra_8h_8h_16,  "ursra v6.8h,  v27.8h, #16", 6, 27)
+GEN_TWOVEC_TEST(ursra_4h_4h_1,   "ursra v6.4h,  v27.4h, #1",  6, 27)
+GEN_TWOVEC_TEST(ursra_4h_4h_8,   "ursra v6.4h,  v27.4h, #8",  6, 27)
+GEN_TWOVEC_TEST(ursra_4h_4h_16,  "ursra v6.4h,  v27.4h, #16", 6, 27)
+GEN_TWOVEC_TEST(ursra_16b_16b_1, "ursra v6.16b, v27.16b, #1", 6, 27)
+GEN_TWOVEC_TEST(ursra_16b_16b_3, "ursra v6.16b, v27.16b, #3", 6, 27)
+GEN_TWOVEC_TEST(ursra_16b_16b_8, "ursra v6.16b, v27.16b, #8", 6, 27)
+GEN_TWOVEC_TEST(ursra_8b_8b_1,   "ursra v6.8b,  v27.8b, #1",  6, 27)
+GEN_TWOVEC_TEST(ursra_8b_8b_3,   "ursra v6.8b,  v27.8b, #3",  6, 27)
+GEN_TWOVEC_TEST(ursra_8b_8b_8,   "ursra v6.8b,  v27.8b, #8",  6, 27)
+
+GEN_TWOVEC_TEST(suqadd_d_d,  "suqadd d22, d23",   22, 23)
+GEN_TWOVEC_TEST(suqadd_s_s,  "suqadd s22, s23",   22, 23)
+GEN_TWOVEC_TEST(suqadd_h_h,  "suqadd h22, h23",   22, 23)
+GEN_TWOVEC_TEST(suqadd_b_b,  "suqadd b22, b23",   22, 23)
+
+GEN_TWOVEC_TEST(suqadd_2d_2d,   "suqadd v6.2d,  v27.2d",  6, 27)
+GEN_TWOVEC_TEST(suqadd_4s_4s,   "suqadd v6.4s,  v27.4s",  6, 27)
+GEN_TWOVEC_TEST(suqadd_2s_2s,   "suqadd v6.2s,  v27.2s",  6, 27)
+GEN_TWOVEC_TEST(suqadd_8h_8h,   "suqadd v6.8h,  v27.8h",  6, 27)
+GEN_TWOVEC_TEST(suqadd_4h_4h,   "suqadd v6.4h,  v27.4h",  6, 27)
+GEN_TWOVEC_TEST(suqadd_16b_16b, "suqadd v6.16b, v27.16b", 6, 27)
+GEN_TWOVEC_TEST(suqadd_8b_8b,   "suqadd v6.8b,  v27.8b",  6, 27)
+
+GEN_TWOVEC_TEST(usqadd_d_d,  "usqadd d22, d23",   22, 23)
+GEN_TWOVEC_TEST(usqadd_s_s,  "usqadd s22, s23",   22, 23)
+GEN_TWOVEC_TEST(usqadd_h_h,  "usqadd h22, h23",   22, 23)
+GEN_TWOVEC_TEST(usqadd_b_b,  "usqadd b22, b23",   22, 23)
+
+GEN_TWOVEC_TEST(usqadd_2d_2d,   "usqadd v6.2d,  v27.2d",  6, 27)
+GEN_TWOVEC_TEST(usqadd_4s_4s,   "usqadd v6.4s,  v27.4s",  6, 27)
+GEN_TWOVEC_TEST(usqadd_2s_2s,   "usqadd v6.2s,  v27.2s",  6, 27)
+GEN_TWOVEC_TEST(usqadd_8h_8h,   "usqadd v6.8h,  v27.8h",  6, 27)
+GEN_TWOVEC_TEST(usqadd_4h_4h,   "usqadd v6.4h,  v27.4h",  6, 27)
+GEN_TWOVEC_TEST(usqadd_16b_16b, "usqadd v6.16b, v27.16b", 6, 27)
+GEN_TWOVEC_TEST(usqadd_8b_8b,   "usqadd v6.8b,  v27.8b",  6, 27)
+
 
 /* ---------------------------------------------------------------- */
 /* -- main()                                                     -- */
@@ -3937,134 +4460,618 @@
    // uqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
    // sqrshrun{2}  2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
    // sqshrun{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
+   test_sqrshrn_2s_2d_1(TyD);
+   test_sqrshrn_2s_2d_17(TyD);
+   test_sqrshrn_2s_2d_32(TyD);
+   test_sqrshrn2_4s_2d_1(TyD);
+   test_sqrshrn2_4s_2d_17(TyD);
+   test_sqrshrn2_4s_2d_32(TyD);
+   test_sqrshrn_4h_4s_1(TyS);
+   test_sqrshrn_4h_4s_9(TyS);
+   test_sqrshrn_4h_4s_16(TyS);
+   test_sqrshrn2_8h_4s_1(TyS);
+   test_sqrshrn2_8h_4s_9(TyS);
+   test_sqrshrn2_8h_4s_16(TyS);
+   test_sqrshrn_8b_8h_1(TyH);
+   test_sqrshrn_8b_8h_4(TyH);
+   test_sqrshrn_8b_8h_8(TyH);
+   test_sqrshrn2_16b_8h_1(TyH);
+   test_sqrshrn2_16b_8h_4(TyH);
+   test_sqrshrn2_16b_8h_8(TyH);
+   test_uqrshrn_2s_2d_1(TyD);
+   test_uqrshrn_2s_2d_17(TyD);
+   test_uqrshrn_2s_2d_32(TyD);
+   test_uqrshrn2_4s_2d_1(TyD);
+   test_uqrshrn2_4s_2d_17(TyD);
+   test_uqrshrn2_4s_2d_32(TyD);
+   test_uqrshrn_4h_4s_1(TyS);
+   test_uqrshrn_4h_4s_9(TyS);
+   test_uqrshrn_4h_4s_16(TyS);
+   test_uqrshrn2_8h_4s_1(TyS);
+   test_uqrshrn2_8h_4s_9(TyS);
+   test_uqrshrn2_8h_4s_16(TyS);
+   test_uqrshrn_8b_8h_1(TyH);
+   test_uqrshrn_8b_8h_4(TyH);
+   test_uqrshrn_8b_8h_8(TyH);
+   test_uqrshrn2_16b_8h_1(TyH);
+   test_uqrshrn2_16b_8h_4(TyH);
+   test_uqrshrn2_16b_8h_8(TyH);
+   test_sqshrn_2s_2d_1(TyD);
+   test_sqshrn_2s_2d_17(TyD);
+   test_sqshrn_2s_2d_32(TyD);
+   test_sqshrn2_4s_2d_1(TyD);
+   test_sqshrn2_4s_2d_17(TyD);
+   test_sqshrn2_4s_2d_32(TyD);
+   test_sqshrn_4h_4s_1(TyS);
+   test_sqshrn_4h_4s_9(TyS);
+   test_sqshrn_4h_4s_16(TyS);
+   test_sqshrn2_8h_4s_1(TyS);
+   test_sqshrn2_8h_4s_9(TyS);
+   test_sqshrn2_8h_4s_16(TyS);
+   test_sqshrn_8b_8h_1(TyH);
+   test_sqshrn_8b_8h_4(TyH);
+   test_sqshrn_8b_8h_8(TyH);
+   test_sqshrn2_16b_8h_1(TyH);
+   test_sqshrn2_16b_8h_4(TyH);
+   test_sqshrn2_16b_8h_8(TyH);
+   test_uqshrn_2s_2d_1(TyD);
+   test_uqshrn_2s_2d_17(TyD);
+   test_uqshrn_2s_2d_32(TyD);
+   test_uqshrn2_4s_2d_1(TyD);
+   test_uqshrn2_4s_2d_17(TyD);
+   test_uqshrn2_4s_2d_32(TyD);
+   test_uqshrn_4h_4s_1(TyS);
+   test_uqshrn_4h_4s_9(TyS);
+   test_uqshrn_4h_4s_16(TyS);
+   test_uqshrn2_8h_4s_1(TyS);
+   test_uqshrn2_8h_4s_9(TyS);
+   test_uqshrn2_8h_4s_16(TyS);
+   test_uqshrn_8b_8h_1(TyH);
+   test_uqshrn_8b_8h_4(TyH);
+   test_uqshrn_8b_8h_8(TyH);
+   test_uqshrn2_16b_8h_1(TyH);
+   test_uqshrn2_16b_8h_4(TyH);
+   test_uqshrn2_16b_8h_8(TyH);
+   test_sqrshrun_2s_2d_1(TyD);
+   test_sqrshrun_2s_2d_17(TyD);
+   test_sqrshrun_2s_2d_32(TyD);
+   test_sqrshrun2_4s_2d_1(TyD);
+   test_sqrshrun2_4s_2d_17(TyD);
+   test_sqrshrun2_4s_2d_32(TyD);
+   test_sqrshrun_4h_4s_1(TyS);
+   test_sqrshrun_4h_4s_9(TyS);
+   test_sqrshrun_4h_4s_16(TyS);
+   test_sqrshrun2_8h_4s_1(TyS);
+   test_sqrshrun2_8h_4s_9(TyS);
+   test_sqrshrun2_8h_4s_16(TyS);
+   test_sqrshrun_8b_8h_1(TyH);
+   test_sqrshrun_8b_8h_4(TyH);
+   test_sqrshrun_8b_8h_8(TyH);
+   test_sqrshrun2_16b_8h_1(TyH);
+   test_sqrshrun2_16b_8h_4(TyH);
+   test_sqrshrun2_16b_8h_8(TyH);
+   test_sqshrun_2s_2d_1(TyD);
+   test_sqshrun_2s_2d_17(TyD);
+   test_sqshrun_2s_2d_32(TyD);
+   test_sqshrun2_4s_2d_1(TyD);
+   test_sqshrun2_4s_2d_17(TyD);
+   test_sqshrun2_4s_2d_32(TyD);
+   test_sqshrun_4h_4s_1(TyS);
+   test_sqshrun_4h_4s_9(TyS);
+   test_sqshrun_4h_4s_16(TyS);
+   test_sqshrun2_8h_4s_1(TyS);
+   test_sqshrun2_8h_4s_9(TyS);
+   test_sqshrun2_8h_4s_16(TyS);
+   test_sqshrun_8b_8h_1(TyH);
+   test_sqshrun_8b_8h_4(TyH);
+   test_sqshrun_8b_8h_8(TyH);
+   test_sqshrun2_16b_8h_1(TyH);
+   test_sqshrun2_16b_8h_4(TyH);
+   test_sqshrun2_16b_8h_8(TyH);
 
    // sqshl (imm)  d,s,h,b   _#imm
    // uqshl (imm)  d,s,h,b   _#imm
    // sqshlu (imm) d,s,h,b   _#imm
+   test_sqshl_d_d_0(TyD);
+   test_sqshl_d_d_32(TyD);
+   test_sqshl_d_d_63(TyD);
+   test_sqshl_s_s_0(TyS);
+   test_sqshl_s_s_16(TyS);
+   test_sqshl_s_s_31(TyS);
+   test_sqshl_h_h_0(TyH);
+   test_sqshl_h_h_8(TyH);
+   test_sqshl_h_h_15(TyH);
+   test_sqshl_b_b_0(TyB);
+   test_sqshl_b_b_4(TyB);
+   test_sqshl_b_b_7(TyB);
+   test_uqshl_d_d_0(TyD);
+   test_uqshl_d_d_32(TyD);
+   test_uqshl_d_d_63(TyD);
+   test_uqshl_s_s_0(TyS);
+   test_uqshl_s_s_16(TyS);
+   test_uqshl_s_s_31(TyS);
+   test_uqshl_h_h_0(TyH);
+   test_uqshl_h_h_8(TyH);
+   test_uqshl_h_h_15(TyH);
+   test_uqshl_b_b_0(TyB);
+   test_uqshl_b_b_4(TyB);
+   test_uqshl_b_b_7(TyB);
+   test_sqshlu_d_d_0(TyD);
+   test_sqshlu_d_d_32(TyD);
+   test_sqshlu_d_d_63(TyD);
+   test_sqshlu_s_s_0(TyS);
+   test_sqshlu_s_s_16(TyS);
+   test_sqshlu_s_s_31(TyS);
+   test_sqshlu_h_h_0(TyH);
+   test_sqshlu_h_h_8(TyH);
+   test_sqshlu_h_h_15(TyH);
+   test_sqshlu_b_b_0(TyB);
+   test_sqshlu_b_b_4(TyB);
+   test_sqshlu_b_b_7(TyB);
 
    // sqshl (imm)  2d,4s,2s,8h,4h,16b,8b   _#imm
    // uqshl (imm)  2d,4s,2s,8h,4h,16b,8b   _#imm
    // sqshlu (imm) 2d,4s,2s,8h,4h,16b,8b   _#imm
+   test_sqshl_2d_2d_0(TyD);
+   test_sqshl_2d_2d_32(TyD);
+   test_sqshl_2d_2d_63(TyD);
+   test_sqshl_4s_4s_0(TyS);
+   test_sqshl_4s_4s_16(TyS);
+   test_sqshl_4s_4s_31(TyS);
+   test_sqshl_2s_2s_0(TyS);
+   test_sqshl_2s_2s_16(TyS);
+   test_sqshl_2s_2s_31(TyS);
+   test_sqshl_8h_8h_0(TyH);
+   test_sqshl_8h_8h_8(TyH);
+   test_sqshl_8h_8h_15(TyH);
+   test_sqshl_4h_4h_0(TyH);
+   test_sqshl_4h_4h_8(TyH);
+   test_sqshl_4h_4h_15(TyH);
+   test_sqshl_16b_16b_0(TyB);
+   test_sqshl_16b_16b_3(TyB);
+   test_sqshl_16b_16b_7(TyB);
+   test_sqshl_8b_8b_0(TyB);
+   test_sqshl_8b_8b_3(TyB);
+   test_sqshl_8b_8b_7(TyB);
+   test_uqshl_2d_2d_0(TyD);
+   test_uqshl_2d_2d_32(TyD);
+   test_uqshl_2d_2d_63(TyD);
+   test_uqshl_4s_4s_0(TyS);
+   test_uqshl_4s_4s_16(TyS);
+   test_uqshl_4s_4s_31(TyS);
+   test_uqshl_2s_2s_0(TyS);
+   test_uqshl_2s_2s_16(TyS);
+   test_uqshl_2s_2s_31(TyS);
+   test_uqshl_8h_8h_0(TyH);
+   test_uqshl_8h_8h_8(TyH);
+   test_uqshl_8h_8h_15(TyH);
+   test_uqshl_4h_4h_0(TyH);
+   test_uqshl_4h_4h_8(TyH);
+   test_uqshl_4h_4h_15(TyH);
+   test_uqshl_16b_16b_0(TyB);
+   test_uqshl_16b_16b_3(TyB);
+   test_uqshl_16b_16b_7(TyB);
+   test_uqshl_8b_8b_0(TyB);
+   test_uqshl_8b_8b_3(TyB);
+   test_uqshl_8b_8b_7(TyB);
+   test_sqshlu_2d_2d_0(TyD);
+   test_sqshlu_2d_2d_32(TyD);
+   test_sqshlu_2d_2d_63(TyD);
+   test_sqshlu_4s_4s_0(TyS);
+   test_sqshlu_4s_4s_16(TyS);
+   test_sqshlu_4s_4s_31(TyS);
+   test_sqshlu_2s_2s_0(TyS);
+   test_sqshlu_2s_2s_16(TyS);
+   test_sqshlu_2s_2s_31(TyS);
+   test_sqshlu_8h_8h_0(TyH);
+   test_sqshlu_8h_8h_8(TyH);
+   test_sqshlu_8h_8h_15(TyH);
+   test_sqshlu_4h_4h_0(TyH);
+   test_sqshlu_4h_4h_8(TyH);
+   test_sqshlu_4h_4h_15(TyH);
+   test_sqshlu_16b_16b_0(TyB);
+   test_sqshlu_16b_16b_3(TyB);
+   test_sqshlu_16b_16b_7(TyB);
+   test_sqshlu_8b_8b_0(TyB);
+   test_sqshlu_8b_8b_3(TyB);
+   test_sqshlu_8b_8b_7(TyB);
 
    // sqxtn        s_d,h_s,b_h
    // uqxtn        s_d,h_s,b_h
    // sqxtun       s_d,h_s,b_h
+   test_sqxtn_s_d(TyD);
+   test_sqxtn_h_s(TyS);
+   test_sqxtn_b_h(TyH);
+   test_uqxtn_s_d(TyD);
+   test_uqxtn_h_s(TyS);
+   test_uqxtn_b_h(TyH);
+   test_sqxtun_s_d(TyD);
+   test_sqxtun_h_s(TyS);
+   test_sqxtun_b_h(TyH);
 
    // sqxtn{2}     2s/4s_2d, 4h/8h_4s, 8b/16b_8h
    // uqxtn{2}     2s/4s_2d, 4h/8h_4s, 8b/16b_8h
    // sqxtun{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
+   test_sqxtn_2s_2d(TyD);
+   test_sqxtn2_4s_2d(TyD);
+   test_sqxtn_4h_4s(TyS);
+   test_sqxtn2_8h_4s(TyS);
+   test_sqxtn_8b_8h(TyH);
+   test_sqxtn2_16b_8h(TyH);
+   test_uqxtn_2s_2d(TyD);
+   test_uqxtn2_4s_2d(TyD);
+   test_uqxtn_4h_4s(TyS);
+   test_uqxtn2_8h_4s(TyS);
+   test_uqxtn_8b_8h(TyH);
+   test_uqxtn2_16b_8h(TyH);
+   test_sqxtun_2s_2d(TyD);
+   test_sqxtun2_4s_2d(TyD);
+   test_sqxtun_4h_4s(TyS);
+   test_sqxtun2_8h_4s(TyS);
+   test_sqxtun_8b_8h(TyH);
+   test_sqxtun2_16b_8h(TyH);
 
    // srhadd       4s,2s,8h,4h,16b,8b
    // urhadd       4s,2s,8h,4h,16b,8b
+   test_srhadd_4s_4s_4s(TyS);
+   test_srhadd_2s_2s_2s(TyS);
+   test_srhadd_8h_8h_8h(TyH);
+   test_srhadd_4h_4h_4h(TyH);
+   test_srhadd_16b_16b_16b(TyB);
+   test_srhadd_8b_8b_8b(TyB);
+   test_urhadd_4s_4s_4s(TyS);
+   test_urhadd_2s_2s_2s(TyS);
+   test_urhadd_8h_8h_8h(TyH);
+   test_urhadd_4h_4h_4h(TyH);
+   test_urhadd_16b_16b_16b(TyB);
+   test_urhadd_8b_8b_8b(TyB);
 
    // sshl (reg)   d
    // ushl (reg)   d
+   test_sshl_d_d_d(TyD);
+   test_ushl_d_d_d(TyD);
+
    // sshl (reg)   2d,4s,2s,8h,4h,16b,8b
    // ushl (reg)   2d,4s,2s,8h,4h,16b,8b
+   test_sshl_2d_2d_2d(TyD);
+   test_sshl_4s_4s_4s(TyS);
+   test_sshl_2s_2s_2s(TyS);
+   test_sshl_8h_8h_8h(TyH);
+   test_sshl_4h_4h_4h(TyH);
+   test_sshl_16b_16b_16b(TyB);
+   test_sshl_8b_8b_8b(TyB);
+   test_ushl_2d_2d_2d(TyD);
+   test_ushl_4s_4s_4s(TyS);
+   test_ushl_2s_2s_2s(TyS);
+   test_ushl_8h_8h_8h(TyH);
+   test_ushl_4h_4h_4h(TyH);
+   test_ushl_16b_16b_16b(TyB);
+   test_ushl_8b_8b_8b(TyB);
 
    // shl  (imm)   d
    // sshr (imm)   d
    // ushr (imm)   d
+   test_shl_d_d_0(TyD);
+   test_shl_d_d_32(TyD);
+   test_shl_d_d_63(TyD);
+   test_sshr_d_d_1(TyD);
+   test_sshr_d_d_32(TyD);
+   test_sshr_d_d_64(TyD);
+   test_ushr_d_d_1(TyD);
+   test_ushr_d_d_32(TyD);
+   test_ushr_d_d_64(TyD);
 
    // shl  (imm)   16b,8b,8h,4h,4s,2s,2d
    // sshr (imm)   2d,4s,2s,8h,4h,16b,8b
    // ushr (imm)   2d,4s,2s,8h,4h,16b,8b
-   test_shl_2d_2d_1(TyD);
+   test_shl_2d_2d_0(TyD);
    test_shl_2d_2d_13(TyD);
    test_shl_2d_2d_63(TyD);
-   test_shl_4s_4s_1(TyS);
+   test_shl_4s_4s_0(TyS);
    test_shl_4s_4s_13(TyS);
    test_shl_4s_4s_31(TyS);
-   test_shl_2s_2s_1(TyS);
+   test_shl_2s_2s_0(TyS);
    test_shl_2s_2s_13(TyS);
    test_shl_2s_2s_31(TyS);
-   test_shl_8h_8h_1(TyH);
+   test_shl_8h_8h_0(TyH);
    test_shl_8h_8h_13(TyH);
    test_shl_8h_8h_15(TyH);
-   test_shl_4h_4h_1(TyH);
+   test_shl_4h_4h_0(TyH);
    test_shl_4h_4h_13(TyH);
    test_shl_4h_4h_15(TyH);
-   test_shl_16b_16b_1(TyB);
+   test_shl_16b_16b_0(TyB);
    test_shl_16b_16b_7(TyB);
-   test_shl_8b_8b_1(TyB);
+   test_shl_8b_8b_0(TyB);
    test_shl_8b_8b_7(TyB);
    test_sshr_2d_2d_1(TyD);
    test_sshr_2d_2d_13(TyD);
-   test_sshr_2d_2d_63(TyD);
+   test_sshr_2d_2d_64(TyD);
    test_sshr_4s_4s_1(TyS);
    test_sshr_4s_4s_13(TyS);
-   test_sshr_4s_4s_31(TyS);
+   test_sshr_4s_4s_32(TyS);
    test_sshr_2s_2s_1(TyS);
    test_sshr_2s_2s_13(TyS);
-   test_sshr_2s_2s_31(TyS);
+   test_sshr_2s_2s_32(TyS);
    test_sshr_8h_8h_1(TyH);
    test_sshr_8h_8h_13(TyH);
-   test_sshr_8h_8h_15(TyH);
+   test_sshr_8h_8h_16(TyH);
    test_sshr_4h_4h_1(TyH);
    test_sshr_4h_4h_13(TyH);
-   test_sshr_4h_4h_15(TyH);
+   test_sshr_4h_4h_16(TyH);
    test_sshr_16b_16b_1(TyB);
-   test_sshr_16b_16b_7(TyB);
+   test_sshr_16b_16b_8(TyB);
    test_sshr_8b_8b_1(TyB);
-   test_sshr_8b_8b_7(TyB);
+   test_sshr_8b_8b_8(TyB);
    test_ushr_2d_2d_1(TyD);
    test_ushr_2d_2d_13(TyD);
-   test_ushr_2d_2d_63(TyD);
+   test_ushr_2d_2d_64(TyD);
    test_ushr_4s_4s_1(TyS);
    test_ushr_4s_4s_13(TyS);
-   test_ushr_4s_4s_31(TyS);
+   test_ushr_4s_4s_32(TyS);
    test_ushr_2s_2s_1(TyS);
    test_ushr_2s_2s_13(TyS);
-   test_ushr_2s_2s_31(TyS);
+   test_ushr_2s_2s_32(TyS);
    test_ushr_8h_8h_1(TyH);
    test_ushr_8h_8h_13(TyH);
-   test_ushr_8h_8h_15(TyH);
+   test_ushr_8h_8h_16(TyH);
    test_ushr_4h_4h_1(TyH);
    test_ushr_4h_4h_13(TyH);
-   test_ushr_4h_4h_15(TyH);
+   test_ushr_4h_4h_16(TyH);
    test_ushr_16b_16b_1(TyB);
-   test_ushr_16b_16b_7(TyB);
+   test_ushr_16b_16b_8(TyB);
    test_ushr_8b_8b_1(TyB);
-   test_ushr_8b_8b_7(TyB);
+   test_ushr_8b_8b_8(TyB);
 
    // ssra (imm)   d
    // usra (imm)   d
+   test_ssra_d_d_1(TyD);
+   test_ssra_d_d_32(TyD);
+   test_ssra_d_d_64(TyD);
+   test_usra_d_d_1(TyD);
+   test_usra_d_d_32(TyD);
+   test_usra_d_d_64(TyD);
+
    // ssra (imm)   2d,4s,2s,8h,4h,16b,8b
    // usra (imm)   2d,4s,2s,8h,4h,16b,8b
+   test_ssra_2d_2d_1(TyD);
+   test_ssra_2d_2d_32(TyD);
+   test_ssra_2d_2d_64(TyD);
+   test_ssra_4s_4s_1(TyS);
+   test_ssra_4s_4s_16(TyS);
+   test_ssra_4s_4s_32(TyS);
+   test_ssra_2s_2s_1(TyS);
+   test_ssra_2s_2s_16(TyS);
+   test_ssra_2s_2s_32(TyS);
+   test_ssra_8h_8h_1(TyH);
+   test_ssra_8h_8h_8(TyH);
+   test_ssra_8h_8h_16(TyH);
+   test_ssra_4h_4h_1(TyH);
+   test_ssra_4h_4h_8(TyH);
+   test_ssra_4h_4h_16(TyH);
+   test_ssra_16b_16b_1(TyB);
+   test_ssra_16b_16b_3(TyB);
+   test_ssra_16b_16b_8(TyB);
+   test_ssra_8b_8b_1(TyB);
+   test_ssra_8b_8b_3(TyB);
+   test_ssra_8b_8b_8(TyB);
+   test_usra_2d_2d_1(TyD);
+   test_usra_2d_2d_32(TyD);
+   test_usra_2d_2d_64(TyD);
+   test_usra_4s_4s_1(TyS);
+   test_usra_4s_4s_16(TyS);
+   test_usra_4s_4s_32(TyS);
+   test_usra_2s_2s_1(TyS);
+   test_usra_2s_2s_16(TyS);
+   test_usra_2s_2s_32(TyS);
+   test_usra_8h_8h_1(TyH);
+   test_usra_8h_8h_8(TyH);
+   test_usra_8h_8h_16(TyH);
+   test_usra_4h_4h_1(TyH);
+   test_usra_4h_4h_8(TyH);
+   test_usra_4h_4h_16(TyH);
+   test_usra_16b_16b_1(TyB);
+   test_usra_16b_16b_3(TyB);
+   test_usra_16b_16b_8(TyB);
+   test_usra_8b_8b_1(TyB);
+   test_usra_8b_8b_3(TyB);
+   test_usra_8b_8b_8(TyB);
 
    // srshl (reg)  d
    // urshl (reg)  d
+   test_srshl_d_d_d(TyD);
+   test_urshl_d_d_d(TyD);
+
    // srshl (reg)  2d,4s,2s,8h,4h,16b,8b
    // urshl (reg)  2d,4s,2s,8h,4h,16b,8b
+   test_srshl_2d_2d_2d(TyD);
+   test_srshl_4s_4s_4s(TyS);
+   test_srshl_2s_2s_2s(TyS);
+   test_srshl_8h_8h_8h(TyH);
+   test_srshl_4h_4h_4h(TyH);
+   test_srshl_16b_16b_16b(TyB);
+   test_srshl_8b_8b_8b(TyB);
+   test_urshl_2d_2d_2d(TyD);
+   test_urshl_4s_4s_4s(TyS);
+   test_urshl_2s_2s_2s(TyS);
+   test_urshl_8h_8h_8h(TyH);
+   test_urshl_4h_4h_4h(TyH);
+   test_urshl_16b_16b_16b(TyB);
+   test_urshl_8b_8b_8b(TyB);
 
    // srshr (imm)  d
    // urshr (imm)  d
+   test_srshr_d_d_1(TyD);
+   test_srshr_d_d_32(TyD);
+   test_srshr_d_d_64(TyD);
+   test_urshr_d_d_1(TyD);
+   test_urshr_d_d_32(TyD);
+   test_urshr_d_d_64(TyD);
+
    // srshr (imm)  2d,4s,2s,8h,4h,16b,8b
    // urshr (imm)  2d,4s,2s,8h,4h,16b,8b
+   test_srshr_2d_2d_1(TyD);
+   test_srshr_2d_2d_32(TyD);
+   test_srshr_2d_2d_64(TyD);
+   test_srshr_4s_4s_1(TyS);
+   test_srshr_4s_4s_16(TyS);
+   test_srshr_4s_4s_32(TyS);
+   test_srshr_2s_2s_1(TyS);
+   test_srshr_2s_2s_16(TyS);
+   test_srshr_2s_2s_32(TyS);
+   test_srshr_8h_8h_1(TyH);
+   test_srshr_8h_8h_8(TyH);
+   test_srshr_8h_8h_16(TyH);
+   test_srshr_4h_4h_1(TyH);
+   test_srshr_4h_4h_8(TyH);
+   test_srshr_4h_4h_16(TyH);
+   test_srshr_16b_16b_1(TyB);
+   test_srshr_16b_16b_3(TyB);
+   test_srshr_16b_16b_8(TyB);
+   test_srshr_8b_8b_1(TyB);
+   test_srshr_8b_8b_3(TyB);
+   test_srshr_8b_8b_8(TyB);
+   test_urshr_2d_2d_1(TyD);
+   test_urshr_2d_2d_32(TyD);
+   test_urshr_2d_2d_64(TyD);
+   test_urshr_4s_4s_1(TyS);
+   test_urshr_4s_4s_16(TyS);
+   test_urshr_4s_4s_32(TyS);
+   test_urshr_2s_2s_1(TyS);
+   test_urshr_2s_2s_16(TyS);
+   test_urshr_2s_2s_32(TyS);
+   test_urshr_8h_8h_1(TyH);
+   test_urshr_8h_8h_8(TyH);
+   test_urshr_8h_8h_16(TyH);
+   test_urshr_4h_4h_1(TyH);
+   test_urshr_4h_4h_8(TyH);
+   test_urshr_4h_4h_16(TyH);
+   test_urshr_16b_16b_1(TyB);
+   test_urshr_16b_16b_3(TyB);
+   test_urshr_16b_16b_8(TyB);
+   test_urshr_8b_8b_1(TyB);
+   test_urshr_8b_8b_3(TyB);
+   test_urshr_8b_8b_8(TyB);
 
    // srsra (imm)  d
    // ursra (imm)  d
+   test_srsra_d_d_1(TyD);
+   test_srsra_d_d_32(TyD);
+   test_srsra_d_d_64(TyD);
+   test_ursra_d_d_1(TyD);
+   test_ursra_d_d_32(TyD);
+   test_ursra_d_d_64(TyD);
+
    // srsra (imm)  2d,4s,2s,8h,4h,16b,8b
    // ursra (imm)  2d,4s,2s,8h,4h,16b,8b
+   test_srsra_2d_2d_1(TyD);
+   test_srsra_2d_2d_32(TyD);
+   test_srsra_2d_2d_64(TyD);
+   test_srsra_4s_4s_1(TyS);
+   test_srsra_4s_4s_16(TyS);
+   test_srsra_4s_4s_32(TyS);
+   test_srsra_2s_2s_1(TyS);
+   test_srsra_2s_2s_16(TyS);
+   test_srsra_2s_2s_32(TyS);
+   test_srsra_8h_8h_1(TyH);
+   test_srsra_8h_8h_8(TyH);
+   test_srsra_8h_8h_16(TyH);
+   test_srsra_4h_4h_1(TyH);
+   test_srsra_4h_4h_8(TyH);
+   test_srsra_4h_4h_16(TyH);
+   test_srsra_16b_16b_1(TyB);
+   test_srsra_16b_16b_3(TyB);
+   test_srsra_16b_16b_8(TyB);
+   test_srsra_8b_8b_1(TyB);
+   test_srsra_8b_8b_3(TyB);
+   test_srsra_8b_8b_8(TyB);
+   test_ursra_2d_2d_1(TyD);
+   test_ursra_2d_2d_32(TyD);
+   test_ursra_2d_2d_64(TyD);
+   test_ursra_4s_4s_1(TyS);
+   test_ursra_4s_4s_16(TyS);
+   test_ursra_4s_4s_32(TyS);
+   test_ursra_2s_2s_1(TyS);
+   test_ursra_2s_2s_16(TyS);
+   test_ursra_2s_2s_32(TyS);
+   test_ursra_8h_8h_1(TyH);
+   test_ursra_8h_8h_8(TyH);
+   test_ursra_8h_8h_16(TyH);
+   test_ursra_4h_4h_1(TyH);
+   test_ursra_4h_4h_8(TyH);
+   test_ursra_4h_4h_16(TyH);
+   test_ursra_16b_16b_1(TyB);
+   test_ursra_16b_16b_3(TyB);
+   test_ursra_16b_16b_8(TyB);
+   test_ursra_8b_8b_1(TyB);
+   test_ursra_8b_8b_3(TyB);
+   test_ursra_8b_8b_8(TyB);
 
    // sshll{2} (imm)  2d_2s/4s, 4s_4h/8h, 8h_8b/16b
    // ushll{2} (imm)  2d_2s/4s, 4s_4h/8h, 8h_8b/16b
-   // INCOMPLETE
    test_sshll_2d_2s_0(TyS);
    test_sshll_2d_2s_15(TyS);
    test_sshll_2d_2s_31(TyS);
    test_sshll2_2d_4s_0(TyS);
    test_sshll2_2d_4s_15(TyS);
    test_sshll2_2d_4s_31(TyS);
+   test_sshll_4s_4h_0(TyH);
+   test_sshll_4s_4h_7(TyH);
+   test_sshll_4s_4h_15(TyH);
+   test_sshll2_4s_8h_0(TyH);
+   test_sshll2_4s_8h_7(TyH);
+   test_sshll2_4s_8h_15(TyH);
+   test_sshll_8h_8b_0(TyB);
+   test_sshll_8h_8b_3(TyB);
+   test_sshll_8h_8b_7(TyB);
+   test_sshll2_8h_16b_0(TyB);
+   test_sshll2_8h_16b_3(TyB);
+   test_sshll2_8h_16b_7(TyB);
    test_ushll_2d_2s_0(TyS);
    test_ushll_2d_2s_15(TyS);
    test_ushll_2d_2s_31(TyS);
    test_ushll2_2d_4s_0(TyS);
    test_ushll2_2d_4s_15(TyS);
    test_ushll2_2d_4s_31(TyS);
+   test_ushll_4s_4h_0(TyH);
+   test_ushll_4s_4h_7(TyH);
+   test_ushll_4s_4h_15(TyH);
+   test_ushll2_4s_8h_0(TyH);
+   test_ushll2_4s_8h_7(TyH);
+   test_ushll2_4s_8h_15(TyH);
+   test_ushll_8h_8b_0(TyB);
+   test_ushll_8h_8b_3(TyB);
+   test_ushll_8h_8b_7(TyB);
+   test_ushll2_8h_16b_0(TyB);
+   test_ushll2_8h_16b_3(TyB);
+   test_ushll2_8h_16b_7(TyB);
 
    // suqadd  d,s,h,b
+   // usqadd  d,s,h,b
+   test_suqadd_d_d(TyD);
+   test_suqadd_s_s(TyS);
+   test_suqadd_h_h(TyH);
+   test_suqadd_b_b(TyB);
+   test_usqadd_d_d(TyD);
+   test_usqadd_s_s(TyS);
+   test_usqadd_h_h(TyH);
+   test_usqadd_b_b(TyB);
+
    // suqadd  2d,4s,2s,8h,4h,16b,8b
+   // usqadd  2d,4s,2s,8h,4h,16b,8b
+   test_suqadd_2d_2d(TyD);
+   test_suqadd_4s_4s(TyS);
+   test_suqadd_2s_2s(TyS);
+   test_suqadd_8h_8h(TyH);
+   test_suqadd_4h_4h(TyH);
+   test_suqadd_16b_16b(TyB);
+   test_suqadd_8b_8b(TyB);
+   test_usqadd_2d_2d(TyD);
+   test_usqadd_4s_4s(TyS);
+   test_usqadd_2s_2s(TyS);
+   test_usqadd_8h_8h(TyH);
+   test_usqadd_4h_4h(TyH);
+   test_usqadd_16b_16b(TyB);
+   test_usqadd_8b_8b(TyB);
 
    // tbl     8b_{16b}_8b, 16b_{16b}_16b
    // tbl     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
@@ -4099,9 +5106,6 @@
 
    // ursqrte     4s,2s
 
-   // usqadd      d,s,h,b
-   // usqadd      2d,4s,2s,8h,4h,16b,8b
-
    // uzp1      2d,4s,2s,8h,4h,16b,8b
    // uzp2      2d,4s,2s,8h,4h,16b,8b