Add test cases for SSAT16.  See #318929.
(Vasily Golubev, w.golubev@mail.ru)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13396 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/none/tests/arm/v6media.c b/none/tests/arm/v6media.c
index ad94879..21490d1 100644
--- a/none/tests/arm/v6media.c
+++ b/none/tests/arm/v6media.c
@@ -3066,6 +3066,79 @@
 TESTINST2("ssat  r0, #32, r1, ASR #32", 0xffc134df, r0, r1, 0);
 #endif
 
+  printf("----------------- SSAT16 sat_imm ----------------- \n");
+  TESTINST2("ssat16  r0, #1,  r1",  0b00000000000000000000000000000001, r0, r1, 0);
+  TESTINST2("ssat16  r0, #1,  r1",  0b00000000000000000000000000000000, r0, r1, 0);
+  TESTINST2("ssat16  r0, #1,  r1",  0b00000000000000001111111111111111, r0, r1, 0);
+  TESTINST2("ssat16  r0, #1,  r1",  0b00000000000000001111111111111110, r0, r1, 0);
+  TESTINST2("ssat16  r0, #4,  r1",  0b00000000000000000000000000000100, r0, r1, 0);
+  TESTINST2("ssat16  r0, #4,  r1",  0b00000000000000000000000000000011, r0, r1, 0);
+  TESTINST2("ssat16  r0, #4,  r1",  0b00000000000000001111111111111000, r0, r1, 0);
+  TESTINST2("ssat16  r0, #4,  r1",  0b00000000000000001111111111110111, r0, r1, 0);
+TESTINST2("ssat16  r0, #4,  r1",  0b00000000000001000000000000000000, r0, r1, 0);
+TESTINST2("ssat16  r0, #4,  r1",  0b00000000000000110000000000000000, r0, r1, 0);
+TESTINST2("ssat16  r0, #4,  r1",  0b11111111111110000000000000000000, r0, r1, 0);
+TESTINST2("ssat16  r0, #4,  r1",  0b11111111111101110000000000000000, r0, r1, 0);
+TESTINST2("ssat16  r0, #4,  r1",  0b11111111111101111111111111110111, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1",  0b00000000000000000111111111111111, r0, r1, 0);
+TESTINST2("ssat16  r0, #16,  r1", 0x0123abcd, r0, r1, 0);
+TESTINST2("ssat16  r0, #1,  r1", 0xffcdabcd, r0, r1, 0);
+TESTINST2("ssat16  r0, #5,  r1", 0x0123feff, r0, r1, 0);
+TESTINST2("ssat16  r0, #8,  r1", 0x0123abcd, r0, r1, 0);
+TESTINST2("ssat16  r0, #11, r1", 0x11110000, r0, r1, 0);
+TESTINST2("ssat16  r0, #13, r1", 0x1111f111, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1", 0x00001111, r0, r1, 0);
+TESTINST2("ssat16  r0, #16,  r1", 0xebbff82b, r0, r1, 0);
+TESTINST2("ssat16  r0, #1,  r1", 0xebbff82b, r0, r1, 0);
+TESTINST2("ssat16  r0, #3,  r1", 0x50c28082, r0, r1, 0);
+TESTINST2("ssat16  r0, #5,  r1", 0x17962e8f, r0, r1, 0);
+TESTINST2("ssat16  r0, #8,  r1", 0xc57243b7, r0, r1, 0);
+TESTINST2("ssat16  r0, #10, r1", 0xf20fb90f, r0, r1, 0);
+TESTINST2("ssat16  r0, #11, r1", 0xbb151055, r0, r1, 0);
+TESTINST2("ssat16  r0, #13, r1", 0x957440d2, r0, r1, 0);
+TESTINST2("ssat16  r0, #14, r1", 0x728b7771, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1", 0xf13c20f3, r0, r1, 0);
+TESTINST2("ssat16  r0, #16,  r1", 0x86398371, r0, r1, 0);
+TESTINST2("ssat16  r0, #1,  r1", 0x03d0fb78, r0, r1, 0);
+TESTINST2("ssat16  r0, #3,  r1", 0xd0d49b7c, r0, r1, 0);
+TESTINST2("ssat16  r0, #5,  r1", 0x76354a58, r0, r1, 0);
+TESTINST2("ssat16  r0, #8,  r1", 0x9fa45fb7, r0, r1, 0);
+TESTINST2("ssat16  r0, #10, r1", 0x7572bdec, r0, r1, 0);
+TESTINST2("ssat16  r0, #11, r1", 0xfea59eb6, r0, r1, 0);
+TESTINST2("ssat16  r0, #13, r1", 0xf2669090, r0, r1, 0);
+TESTINST2("ssat16  r0, #14, r1", 0xbc1ff573, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1", 0x7eb226ac, r0, r1, 0);
+TESTINST2("ssat16  r0, #16,  r1", 0x22b65db1, r0, r1, 0);
+TESTINST2("ssat16  r0, #1,  r1", 0x776c41c7, r0, r1, 0);
+TESTINST2("ssat16  r0, #3,  r1", 0xe50dd77c, r0, r1, 0);
+TESTINST2("ssat16  r0, #5,  r1", 0xd6f9a698, r0, r1, 0);
+TESTINST2("ssat16  r0, #8,  r1", 0xeda5110c, r0, r1, 0);
+TESTINST2("ssat16  r0, #10, r1", 0x0be36f70, r0, r1, 0);
+TESTINST2("ssat16  r0, #11, r1", 0xd759eb72, r0, r1, 0);
+TESTINST2("ssat16  r0, #13, r1", 0xd9c4b1f4, r0, r1, 0);
+TESTINST2("ssat16  r0, #14, r1", 0xa29eb320, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1", 0xcf1e4487, r0, r1, 0);
+TESTINST2("ssat16  r0, #16,  r1", 0x2eb68500, r0, r1, 0);
+TESTINST2("ssat16  r0, #1,  r1", 0xcdb7ed11, r0, r1, 0);
+TESTINST2("ssat16  r0, #3,  r1", 0x2eaea305, r0, r1, 0);
+TESTINST2("ssat16  r0, #5,  r1", 0x6ebd04d9, r0, r1, 0);
+TESTINST2("ssat16  r0, #8,  r1", 0xa5ec1aa8, r0, r1, 0);
+TESTINST2("ssat16  r0, #10, r1", 0x72f33509, r0, r1, 0);
+TESTINST2("ssat16  r0, #11, r1", 0xa3e6f759, r0, r1, 0);
+TESTINST2("ssat16  r0, #13, r1", 0xfaceab39, r0, r1, 0);
+TESTINST2("ssat16  r0, #14, r1", 0x2738f0ff, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1", 0xe79fd570, r0, r1, 0);
+TESTINST2("ssat16  r0, #16,  r1", 0x55ea3e4e, r0, r1, 0);
+TESTINST2("ssat16  r0, #1,  r1", 0x2b62ba5a, r0, r1, 0);
+TESTINST2("ssat16  r0, #3,  r1", 0x9b41bfb1, r0, r1, 0);
+TESTINST2("ssat16  r0, #5,  r1", 0x557c7ba2, r0, r1, 0);
+TESTINST2("ssat16  r0, #8,  r1", 0x2973c051, r0, r1, 0);
+TESTINST2("ssat16  r0, #10, r1", 0x6a228b19, r0, r1, 0);
+TESTINST2("ssat16  r0, #11, r1", 0x0cdafabe, r0, r1, 0);
+TESTINST2("ssat16  r0, #13, r1", 0x50865114, r0, r1, 0);
+TESTINST2("ssat16  r0, #14, r1", 0xd83b849b, r0, r1, 0);
+TESTINST2("ssat16  r0, #15, r1", 0xca5e5605, r0, r1, 0);
+
   printf("---------------- SADD8 ----------------- \n");
   TESTINST3("sadd8 r0, r1, r2", 0x00f7ffff, 0x00e800fd, r0, r1, r2, 0);
   TESTINST3("sadd8 r0, r1, r2", 0x00e800fd, 0x00f7ffff, r0, r1, r2, 0);