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);
ssat r0, #31, r1, ASR #1 :: rd 0xcf4700c2 rm 0x9e8e0185, carryin 0, cpsr 0x00000000 ge[3:0]=0000
ssat r0, #31, r1, ASR #1 :: rd 0x184b7897 rm 0x3096f12e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
ssat r0, #31, r1, ASR #1 :: rd 0xffe09a6f rm 0xffc134df, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+----------------- SSAT16 sat_imm -----------------
+ssat16 r0, #1, r1 :: rd 0x00000000 rm 0x00000001, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0x00000000 rm 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0x0000ffff rm 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0x0000ffff rm 0x0000fffe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0x00000004 rm 0x00000004, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0x00000003 rm 0x00000003, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0x0000fff8 rm 0x0000fff8, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0x0000fff8 rm 0x0000fff7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0x00040000 rm 0x00040000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0x00030000 rm 0x00030000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0xfff80000 rm 0xfff80000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0xfff80000 rm 0xfff70000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #4, r1 :: rd 0xfff8fff8 rm 0xfff7fff7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0x00003fff rm 0x00007fff, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #16, r1 :: rd 0x0123abcd rm 0x0123abcd, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0xffffffff rm 0xffcdabcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #5, r1 :: rd 0x000ffff0 rm 0x0123feff, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #8, r1 :: rd 0x007fff80 rm 0x0123abcd, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #11, r1 :: rd 0x03ff0000 rm 0x11110000, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #13, r1 :: rd 0x0ffff111 rm 0x1111f111, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0x00001111 rm 0x00001111, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #16, r1 :: rd 0xebbff82b rm 0xebbff82b, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0xffffffff rm 0xebbff82b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #3, r1 :: rd 0x0003fffc rm 0x50c28082, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #5, r1 :: rd 0x000f000f rm 0x17962e8f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #8, r1 :: rd 0xff80007f rm 0xc57243b7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #10, r1 :: rd 0xfe00fe00 rm 0xf20fb90f, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #11, r1 :: rd 0xfc0003ff rm 0xbb151055, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #13, r1 :: rd 0xf0000fff rm 0x957440d2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #14, r1 :: rd 0x1fff1fff rm 0x728b7771, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0xf13c20f3 rm 0xf13c20f3, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #16, r1 :: rd 0x86398371 rm 0x86398371, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0x0000ffff rm 0x03d0fb78, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #3, r1 :: rd 0xfffcfffc rm 0xd0d49b7c, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #5, r1 :: rd 0x000f000f rm 0x76354a58, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #8, r1 :: rd 0xff80007f rm 0x9fa45fb7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #10, r1 :: rd 0x01fffe00 rm 0x7572bdec, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #11, r1 :: rd 0xfea5fc00 rm 0xfea59eb6, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #13, r1 :: rd 0xf266f000 rm 0xf2669090, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #14, r1 :: rd 0xe000f573 rm 0xbc1ff573, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0x3fff26ac rm 0x7eb226ac, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #16, r1 :: rd 0x22b65db1 rm 0x22b65db1, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0x00000000 rm 0x776c41c7, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #3, r1 :: rd 0xfffcfffc rm 0xe50dd77c, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #5, r1 :: rd 0xfff0fff0 rm 0xd6f9a698, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #8, r1 :: rd 0xff80007f rm 0xeda5110c, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #10, r1 :: rd 0x01ff01ff rm 0x0be36f70, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #11, r1 :: rd 0xfc00fc00 rm 0xd759eb72, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #13, r1 :: rd 0xf000f000 rm 0xd9c4b1f4, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #14, r1 :: rd 0xe000e000 rm 0xa29eb320, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0xcf1e3fff rm 0xcf1e4487, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #16, r1 :: rd 0x2eb68500 rm 0x2eb68500, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0xffffffff rm 0xcdb7ed11, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #3, r1 :: rd 0x0003fffc rm 0x2eaea305, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #5, r1 :: rd 0x000f000f rm 0x6ebd04d9, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #8, r1 :: rd 0xff80007f rm 0xa5ec1aa8, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #10, r1 :: rd 0x01ff01ff rm 0x72f33509, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #11, r1 :: rd 0xfc00fc00 rm 0xa3e6f759, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #13, r1 :: rd 0xfacef000 rm 0xfaceab39, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #14, r1 :: rd 0x1ffff0ff rm 0x2738f0ff, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0xe79fd570 rm 0xe79fd570, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #16, r1 :: rd 0x55ea3e4e rm 0x55ea3e4e, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssat16 r0, #1, r1 :: rd 0x0000ffff rm 0x2b62ba5a, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #3, r1 :: rd 0xfffcfffc rm 0x9b41bfb1, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #5, r1 :: rd 0x000f000f rm 0x557c7ba2, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #8, r1 :: rd 0x007fff80 rm 0x2973c051, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #10, r1 :: rd 0x01fffe00 rm 0x6a228b19, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #11, r1 :: rd 0x03fffc00 rm 0x0cdafabe, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #13, r1 :: rd 0x0fff0fff rm 0x50865114, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #14, r1 :: rd 0xe000e000 rm 0xd83b849b, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
+ssat16 r0, #15, r1 :: rd 0xca5e3fff rm 0xca5e5605, carryin 0, cpsr 0x08000000 Q ge[3:0]=0000
---------------- SADD8 -----------------
sadd8 r0, r1, r2 :: rd 0x00dffffc rm 0x00f7ffff, rn 0x00e800fd, carryin 0, cpsr 0x00080000 ge[3:0]=1000
sadd8 r0, r1, r2 :: rd 0x00dffffc rm 0x00e800fd, rn 0x00f7ffff, carryin 0, cpsr 0x00080000 ge[3:0]=1000