1 2 /* How to compile: 3 gcc -O -g -Wall -mcpu=cortex-a8 -o testarmv6int testarmv6int.c 4 */ 5 6 #include <stdio.h> 7 8 /* test macros to generate and output the result of a single instruction */ 9 #define TESTINST2(instruction, RMval, RD, RM, carryin) \ 10 { \ 11 unsigned int out; \ 12 unsigned int cpsr; \ 13 \ 14 __asm__ volatile( \ 15 "movs %3,%3;" \ 16 "msrne cpsr_f,#(1<<29);" \ 17 "msreq cpsr_f,#0;" \ 18 "mov " #RM ",%2;" \ 19 /* set #RD to 0x55555555 so we can see which parts get overwritten */ \ 20 "mov " #RD ", #0x55" "\n\t" \ 21 "orr " #RD "," #RD "," #RD ", LSL #8" "\n\t" \ 22 "orr " #RD "," #RD "," #RD ", LSL #16" "\n\t" \ 23 instruction ";" \ 24 "mov %0," #RD ";" \ 25 "mrs %1,cpsr;" \ 26 : "=&r" (out), "=&r" (cpsr) \ 27 : "r" (RMval), "r" (carryin) \ 28 : #RD, #RM, "cc", "memory" \ 29 ); \ 30 printf("%s :: rd 0x%08x rm 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 31 instruction, out, RMval, \ 32 carryin ? 1 : 0, \ 33 cpsr & 0xffff0000, \ 34 ((1<<31) & cpsr) ? 'N' : ' ', \ 35 ((1<<30) & cpsr) ? 'Z' : ' ', \ 36 ((1<<29) & cpsr) ? 'C' : ' ', \ 37 ((1<<28) & cpsr) ? 'V' : ' ' \ 38 ); \ 39 } 40 41 #define TESTINST3(instruction, RMval, RNval, RD, RM, RN, carryin) \ 42 { \ 43 unsigned int out; \ 44 unsigned int cpsr; \ 45 \ 46 __asm__ volatile( \ 47 "movs %4,%4;" \ 48 "msrne cpsr_f,#(1<<29);" \ 49 "msreq cpsr_f,#0;" \ 50 "mov " #RM ",%2;" \ 51 "mov " #RN ",%3;" \ 52 instruction ";" \ 53 "mov %0," #RD ";" \ 54 "mrs %1,cpsr;" \ 55 : "=&r" (out), "=&r" (cpsr) \ 56 : "r" (RMval), "r" (RNval), "r" (carryin) \ 57 : #RD, #RM, #RN, "cc", "memory" \ 58 ); \ 59 printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 60 instruction, out, RMval, RNval, \ 61 carryin ? 1 : 0, \ 62 cpsr & 0xffff0000, \ 63 ((1<<31) & cpsr) ? 'N' : ' ', \ 64 ((1<<30) & cpsr) ? 'Z' : ' ', \ 65 ((1<<29) & cpsr) ? 'C' : ' ', \ 66 ((1<<28) & cpsr) ? 'V' : ' ' \ 67 ); \ 68 } 69 70 #define TESTINST4(instruction, RMval, RNval, RSval, RD, RM, RN, RS, carryin) \ 71 { \ 72 unsigned int out; \ 73 unsigned int cpsr; \ 74 \ 75 __asm__ volatile( \ 76 "movs %5,%5;" \ 77 "msrne cpsr_f,#(1<<29);" \ 78 "msreq cpsr_f,#0;" \ 79 "mov " #RM ",%2;" \ 80 "mov " #RN ",%3;" \ 81 "mov " #RS ",%4;" \ 82 instruction ";" \ 83 "mov %0," #RD ";" \ 84 "mrs %1,cpsr;" \ 85 : "=&r" (out), "=&r" (cpsr) \ 86 : "r" (RMval), "r" (RNval), "r" (RSval), "r" (carryin) \ 87 : #RD, #RM, #RN, #RS, "cc", "memory" \ 88 ); \ 89 printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 90 instruction, out, RMval, RNval, RSval, \ 91 carryin ? 1 : 0, \ 92 cpsr & 0xffff0000, \ 93 ((1<<31) & cpsr) ? 'N' : ' ', \ 94 ((1<<30) & cpsr) ? 'Z' : ' ', \ 95 ((1<<29) & cpsr) ? 'C' : ' ', \ 96 ((1<<28) & cpsr) ? 'V' : ' ' \ 97 ); \ 98 } 99 100 #define TESTINST4_2OUT(instruction, RDval, RD2val, RMval, RSval, RD, RD2, RM, RS, carryin) \ 101 { \ 102 unsigned int out; \ 103 unsigned int out2; \ 104 unsigned int cpsr; \ 105 \ 106 __asm__ volatile( \ 107 "movs %7,%7;" \ 108 "msrne cpsr_f,#(1<<29);" \ 109 "msreq cpsr_f,#0;" \ 110 "mov " #RD ",%3;" \ 111 "mov " #RD2 ",%4;" \ 112 "mov " #RM ",%5;" \ 113 "mov " #RS ",%6;" \ 114 instruction ";" \ 115 "mov %0," #RD ";" \ 116 "mov %1," #RD2 ";" \ 117 "mrs %2,cpsr;" \ 118 : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \ 119 : "r" (RDval), "r" (RD2val), "r" (RMval), "r" (RSval), "r" (carryin) \ 120 : #RD, #RD2, #RM, #RS, "cc", "memory" \ 121 ); \ 122 printf("%s :: rd 0x%08x rd2 0x%08x, rm 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 123 instruction, out, out2, RMval, RSval, \ 124 carryin ? 1 : 0, \ 125 cpsr & 0xffff0000, \ 126 ((1<<31) & cpsr) ? 'N' : ' ', \ 127 ((1<<30) & cpsr) ? 'Z' : ' ', \ 128 ((1<<29) & cpsr) ? 'C' : ' ', \ 129 ((1<<28) & cpsr) ? 'V' : ' ' \ 130 ); \ 131 } 132 133 /* helpers */ 134 #define TESTCARRY { int c = 0; for (c = 0; c < 2; c++) { 135 #define TESTCARRYEND }} 136 137 138 139 140 int main(int argc, char **argv) 141 { 142 143 printf("MOV\n"); 144 TESTINST2("mov r0, r1", 1, r0, r1, 0); 145 TESTINST2("cpy r0, r1", 1, r0, r1, 0); 146 TESTINST2("mov r0, #0", 0, r0, r1, 0); 147 TESTINST2("mov r0, #1", 0, r0, r1, 0); 148 TESTCARRY 149 TESTINST2("movs r0, r1", 1, r0, r1, c); 150 TESTINST2("movs r0, r1", 0, r0, r1, c); 151 TESTINST2("movs r0, r1", 0x80000000, r0, r1, c); 152 TESTINST2("movs r0, #0", 0, r0, r1, c); 153 TESTINST2("movs r0, #1", 0, r0, r1, c); 154 TESTCARRYEND 155 156 printf("MVN\n"); 157 TESTINST2("mvn r0, r1", 1, r0, r1, 0); 158 TESTCARRY 159 TESTINST2("mvns r0, r1", 1, r0, r1, c); 160 TESTINST2("mvns r0, r1", 0, r0, r1, c); 161 TESTINST2("mvns r0, r1", 0x80000000, r0, r1, c); 162 TESTCARRYEND 163 164 printf("ADD\n"); 165 TESTINST3("adds r0, r1, r2", 0, 0, r0, r1, r2, 0); 166 TESTINST3("adds r0, r1, r2", 0, 1, r0, r1, r2, 0); 167 TESTINST3("adds r0, r1, r2", 1, 0, r0, r1, r2, 0); 168 TESTINST3("adds r0, r1, r2", 1, 1, r0, r1, r2, 0); 169 TESTINST3("adds r0, r1, r2", 0, -1, r0, r1, r2, 0); 170 TESTINST3("adds r0, r1, r2", 1, -1, r0, r1, r2, 0); 171 TESTINST3("adds r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, 0); 172 TESTINST3("adds r0, r1, r2", 0x80000000, -1, r0, r1, r2, 0); 173 TESTINST3("adds r0, r1, r2", 0x80000000, 0, r0, r1, r2, 0); 174 175 printf("ADC\n"); 176 TESTINST3("adcs r0, r1, r2", 0, 0, r0, r1, r2, 0); 177 TESTINST3("adcs r0, r1, r2", 0, 0, r0, r1, r2, 1); 178 179 printf("LSL\n"); 180 TESTINST3("lsl r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 181 TESTINST3("lsl r0, r1, r2", 0xffffffff, 1, r0, r1, r2, 0); 182 TESTINST3("lsl r0, r1, r2", 0xffffffff, 2, r0, r1, r2, 0); 183 TESTINST3("lsl r0, r1, r2", 0xffffffff, 31, r0, r1, r2, 0); 184 TESTINST3("lsl r0, r1, r2", 0xffffffff, 32, r0, r1, r2, 0); 185 TESTINST3("lsl r0, r1, r2", 0xffffffff, 33, r0, r1, r2, 0); 186 TESTINST3("lsl r0, r1, r2", 0xffffffff, 63, r0, r1, r2, 0); 187 TESTINST3("lsl r0, r1, r2", 0xffffffff, 64, r0, r1, r2, 0); 188 TESTINST3("lsl r0, r1, r2", 0xffffffff, 255, r0, r1, r2, 0); 189 TESTINST3("lsl r0, r1, r2", 0xffffffff, 256, r0, r1, r2, 0); 190 191 TESTINST3("lsl r0, r1, r2", 0x1, 0, r0, r1, r2, 0); 192 TESTINST3("lsl r0, r1, r2", 0x1, 1, r0, r1, r2, 0); 193 TESTINST3("lsl r0, r1, r2", 0x1, 31, r0, r1, r2, 0); 194 TESTINST3("lsl r0, r1, r2", 0x2, 31, r0, r1, r2, 0); 195 196 printf("LSLS\n"); 197 TESTCARRY 198 TESTINST3("lsls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 199 TESTINST3("lsls r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 200 TESTINST3("lsls r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 201 TESTINST3("lsls r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 202 TESTINST3("lsls r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 203 TESTINST3("lsls r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 204 TESTINST3("lsls r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 205 TESTINST3("lsls r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 206 TESTINST3("lsls r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 207 TESTINST3("lsls r0, r1, r2", 0xffffffff, 256, r0, r1, r2, c); 208 TESTINST3("lsls r0, r1, r2", 0x1, 0, r0, r1, r2, c); 209 TESTINST3("lsls r0, r1, r2", 0x1, 1, r0, r1, r2, c); 210 TESTINST3("lsls r0, r1, r2", 0x1, 31, r0, r1, r2, c); 211 TESTINST3("lsls r0, r1, r2", 0x2, 31, r0, r1, r2, c); 212 TESTCARRYEND 213 214 printf("LSL immediate\n"); 215 TESTCARRY 216 TESTINST2("lsl r0, r1, #0", 0xffffffff, r0, r1, c); 217 TESTINST2("lsl r0, r1, #1", 0xffffffff, r0, r1, c); 218 TESTINST2("lsl r0, r1, #31", 0xffffffff, r0, r1, c); 219 TESTINST2("lsl r0, r1, #0", 0x1, r0, r1, c); 220 TESTINST2("lsl r0, r1, #1", 0x1, r0, r1, c); 221 TESTINST2("lsl r0, r1, #31", 0x1, r0, r1, c); 222 TESTINST2("lsl r0, r1, #31", 0x2, r0, r1, c); 223 TESTCARRYEND 224 225 printf("LSLS immediate\n"); 226 TESTCARRY 227 TESTINST2("lsls r0, r1, #0", 0xffffffff, r0, r1, c); 228 TESTINST2("lsls r0, r1, #1", 0xffffffff, r0, r1, c); 229 TESTINST2("lsls r0, r1, #31", 0xffffffff, r0, r1, c); 230 TESTINST2("lsls r0, r1, #0", 0x1, r0, r1, c); 231 TESTINST2("lsls r0, r1, #1", 0x1, r0, r1, c); 232 TESTINST2("lsls r0, r1, #31", 0x1, r0, r1, c); 233 TESTINST2("lsls r0, r1, #31", 0x2, r0, r1, c); 234 TESTCARRYEND 235 236 printf("LSR\n"); 237 TESTINST3("lsr r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 238 TESTINST3("lsr r0, r1, r2", 0xffffffff, 1, r0, r1, r2, 0); 239 TESTINST3("lsr r0, r1, r2", 0xffffffff, 2, r0, r1, r2, 0); 240 TESTINST3("lsr r0, r1, r2", 0xffffffff, 31, r0, r1, r2, 0); 241 TESTINST3("lsr r0, r1, r2", 0xffffffff, 32, r0, r1, r2, 0); 242 TESTINST3("lsr r0, r1, r2", 0xffffffff, 33, r0, r1, r2, 0); 243 TESTINST3("lsr r0, r1, r2", 0xffffffff, 63, r0, r1, r2, 0); 244 TESTINST3("lsr r0, r1, r2", 0xffffffff, 64, r0, r1, r2, 0); 245 TESTINST3("lsr r0, r1, r2", 0xffffffff, 255, r0, r1, r2, 0); 246 TESTINST3("lsr r0, r1, r2", 0xffffffff, 256, r0, r1, r2, 0); 247 248 printf("LSRS\n"); 249 TESTCARRY 250 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 251 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 252 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 253 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 254 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 255 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 256 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 257 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 258 TESTINST3("lsrs r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 259 TESTCARRYEND 260 261 printf("LSR immediate\n"); 262 TESTINST2("lsr r0, r1, #0", 0xffffffff, r0, r1, 0); 263 TESTINST2("lsr r0, r1, #1", 0xffffffff, r0, r1, 0); 264 TESTINST2("lsr r0, r1, #31", 0xffffffff, r0, r1, 0); 265 TESTINST2("lsr r0, r1, #32", 0xffffffff, r0, r1, 0); 266 TESTINST2("lsr r0, r1, #16", 0x00010000, r0, r1, 0); 267 TESTINST2("lsr r0, r1, #17", 0x00010000, r0, r1, 0); 268 TESTINST2("lsr r0, r1, #18", 0x00010000, r0, r1, 0); 269 270 printf("LSRS immediate\n"); 271 TESTCARRY 272 TESTINST2("lsrs r0, r1, #0", 0xffffffff, r0, r1, c); 273 TESTINST2("lsrs r0, r1, #1", 0xffffffff, r0, r1, c); 274 TESTINST2("lsrs r0, r1, #31", 0xffffffff, r0, r1, c); 275 TESTINST2("lsrs r0, r1, #32", 0xffffffff, r0, r1, c); 276 TESTINST2("lsrs r0, r1, #16", 0x00010000, r0, r1, c); 277 TESTINST2("lsrs r0, r1, #17", 0x00010000, r0, r1, c); 278 TESTINST2("lsrs r0, r1, #18", 0x00010000, r0, r1, c); 279 TESTCARRYEND 280 281 printf("ASR\n"); 282 TESTCARRY 283 TESTINST3("asr r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 284 TESTINST3("asr r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 285 TESTINST3("asr r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 286 TESTINST3("asr r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 287 TESTINST3("asr r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 288 TESTINST3("asr r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 289 TESTINST3("asr r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 290 TESTINST3("asr r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 291 TESTINST3("asr r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 292 TESTINST3("asr r0, r1, r2", 0xffffffff, 256, r0, r1, r2, c); 293 TESTINST3("asr r0, r1, r2", 0x7fffffff, 0, r0, r1, r2, c); 294 TESTINST3("asr r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, c); 295 TESTINST3("asr r0, r1, r2", 0x7fffffff, 2, r0, r1, r2, c); 296 TESTINST3("asr r0, r1, r2", 0x7fffffff, 31, r0, r1, r2, c); 297 TESTINST3("asr r0, r1, r2", 0x7fffffff, 32, r0, r1, r2, c); 298 TESTINST3("asr r0, r1, r2", 0x7fffffff, 33, r0, r1, r2, c); 299 TESTINST3("asr r0, r1, r2", 0x7fffffff, 63, r0, r1, r2, c); 300 TESTINST3("asr r0, r1, r2", 0x7fffffff, 64, r0, r1, r2, c); 301 TESTINST3("asr r0, r1, r2", 0x7fffffff, 255, r0, r1, r2, c); 302 TESTINST3("asr r0, r1, r2", 0x7fffffff, 256, r0, r1, r2, c); 303 TESTCARRYEND 304 305 printf("ASRS\n"); 306 TESTCARRY 307 TESTINST3("asrs r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 308 TESTINST3("asrs r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 309 TESTINST3("asrs r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 310 TESTINST3("asrs r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 311 TESTINST3("asrs r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 312 TESTINST3("asrs r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 313 TESTINST3("asrs r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 314 TESTINST3("asrs r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 315 TESTINST3("asrs r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 316 TESTINST3("asrs r0, r1, r2", 0xffffffff, 256, r0, r1, r2, c); 317 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 0, r0, r1, r2, c); 318 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, c); 319 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 2, r0, r1, r2, c); 320 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 31, r0, r1, r2, c); 321 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 32, r0, r1, r2, c); 322 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 33, r0, r1, r2, c); 323 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 63, r0, r1, r2, c); 324 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 64, r0, r1, r2, c); 325 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 255, r0, r1, r2, c); 326 TESTINST3("asrs r0, r1, r2", 0x7fffffff, 256, r0, r1, r2, c); 327 TESTCARRYEND 328 329 TESTCARRY 330 TESTINST3("asrs r0, r1, r2", 0x8, 0, r0, r1, r2, c); 331 TESTINST3("asrs r0, r1, r2", 0x8, 1, r0, r1, r2, c); 332 TESTINST3("asrs r0, r1, r2", 0x8, 2, r0, r1, r2, c); 333 TESTINST3("asrs r0, r1, r2", 0x8, 3, r0, r1, r2, c); 334 TESTINST3("asrs r0, r1, r2", 0x8, 4, r0, r1, r2, c); 335 TESTINST3("asrs r0, r1, r2", 0x8, 5, r0, r1, r2, c); 336 TESTCARRYEND 337 338 TESTINST3("asrs r0, r1, r2", 0x80000001, 1, r0, r1, r2, 0); 339 TESTINST3("asrs r0, r1, r2", 0x80000001, 2, r0, r1, r2, 0); 340 341 printf("ASR immediate\n"); 342 TESTINST2("asr r0, r1, #0", 0xffffffff, r0, r1, 0); 343 TESTINST2("asr r0, r1, #1", 0xffffffff, r0, r1, 0); 344 TESTINST2("asr r0, r1, #31", 0xffffffff, r0, r1, 0); 345 TESTINST2("asr r0, r1, #32", 0xffffffff, r0, r1, 0); 346 TESTINST2("asr r0, r1, #0", 0x7fffffff, r0, r1, 0); 347 TESTINST2("asr r0, r1, #1", 0x7fffffff, r0, r1, 0); 348 TESTINST2("asr r0, r1, #31", 0x7fffffff, r0, r1, 0); 349 TESTINST2("asr r0, r1, #32", 0x7fffffff, r0, r1, 0); 350 TESTINST2("asr r0, r1, #16", 0x00010000, r0, r1, 0); 351 TESTINST2("asr r0, r1, #17", 0x00010000, r0, r1, 0); 352 TESTINST2("asr r0, r1, #18", 0x00010000, r0, r1, 0); 353 354 printf("ASRS immediate\n"); 355 TESTCARRY 356 TESTINST2("asrs r0, r1, #0", 0xffffffff, r0, r1, c); 357 TESTINST2("asrs r0, r1, #1", 0xffffffff, r0, r1, c); 358 TESTINST2("asrs r0, r1, #31", 0xffffffff, r0, r1, c); 359 TESTINST2("asrs r0, r1, #32", 0xffffffff, r0, r1, c); 360 TESTINST2("asrs r0, r1, #0", 0x7fffffff, r0, r1, c); 361 TESTINST2("asrs r0, r1, #1", 0x7fffffff, r0, r1, c); 362 TESTINST2("asrs r0, r1, #31", 0x7fffffff, r0, r1, c); 363 TESTINST2("asrs r0, r1, #32", 0x7fffffff, r0, r1, c); 364 TESTINST2("asrs r0, r1, #16", 0x00010000, r0, r1, c); 365 TESTINST2("asrs r0, r1, #17", 0x00010000, r0, r1, c); 366 TESTINST2("asrs r0, r1, #18", 0x00010000, r0, r1, c); 367 TESTCARRYEND 368 369 printf("ROR\n"); 370 TESTCARRY 371 TESTINST3("ror r0, r1, r2", 0x00088000, 0, r0, r1, r2, c); 372 TESTINST3("ror r0, r1, r2", 0x80088000, 1, r0, r1, r2, c); 373 TESTINST3("ror r0, r1, r2", 0x00088000, 1, r0, r1, r2, c); 374 TESTINST3("ror r0, r1, r2", 0x00088000, 2, r0, r1, r2, c); 375 TESTINST3("ror r0, r1, r2", 0x00088000, 31, r0, r1, r2, c); 376 TESTINST3("ror r0, r1, r2", 0x00088000, 32, r0, r1, r2, c); 377 TESTINST3("ror r0, r1, r2", 0x00088000, 33, r0, r1, r2, c); 378 TESTINST3("ror r0, r1, r2", 0x00088000, 63, r0, r1, r2, c); 379 TESTINST3("ror r0, r1, r2", 0x00088000, 64, r0, r1, r2, c); 380 TESTINST3("ror r0, r1, r2", 0x00088000, 255, r0, r1, r2, c); 381 TESTINST3("ror r0, r1, r2", 0x00088000, 256, r0, r1, r2, c); 382 TESTINST3("ror r0, r1, r2", 0x80088000, 256, r0, r1, r2, c); 383 TESTINST3("ror r0, r1, r2", 0x00088000, 257, r0, r1, r2, c); 384 TESTCARRYEND 385 386 printf("RORS\n"); 387 TESTCARRY 388 TESTINST3("rors r0, r1, r2", 0x00088000, 0, r0, r1, r2, c); 389 TESTINST3("rors r0, r1, r2", 0x80088000, 0, r0, r1, r2, c); 390 TESTINST3("rors r0, r1, r2", 0x00088000, 1, r0, r1, r2, c); 391 TESTINST3("rors r0, r1, r2", 0x00088000, 2, r0, r1, r2, c); 392 TESTINST3("rors r0, r1, r2", 0x00088000, 31, r0, r1, r2, c); 393 TESTINST3("rors r0, r1, r2", 0x00088000, 32, r0, r1, r2, c); 394 TESTINST3("rors r0, r1, r2", 0x00088000, 33, r0, r1, r2, c); 395 TESTINST3("rors r0, r1, r2", 0x00088000, 63, r0, r1, r2, c); 396 TESTINST3("rors r0, r1, r2", 0x00088000, 64, r0, r1, r2, c); 397 TESTINST3("rors r0, r1, r2", 0x00088000, 255, r0, r1, r2, c); 398 TESTINST3("rors r0, r1, r2", 0x00088000, 256, r0, r1, r2, c); 399 TESTINST3("rors r0, r1, r2", 0x80088000, 256, r0, r1, r2, c); 400 TESTINST3("rors r0, r1, r2", 0x00088000, 257, r0, r1, r2, c); 401 TESTCARRYEND 402 403 printf("ROR immediate\n"); 404 TESTCARRY 405 TESTINST2("ror r0, r1, #0", 0x00088000, r0, r1, c); 406 TESTINST2("ror r0, r1, #1", 0x00088000, r0, r1, c); 407 TESTINST2("ror r0, r1, #31", 0x00088000, r0, r1, c); 408 TESTINST2("ror r0, r1, #16", 0x00010000, r0, r1, c); 409 TESTINST2("ror r0, r1, #17", 0x00010000, r0, r1, c); 410 TESTINST2("ror r0, r1, #18", 0x00010000, r0, r1, c); 411 TESTCARRYEND 412 413 printf("RORS immediate\n"); 414 TESTCARRY 415 TESTINST2("rors r0, r1, #0", 0x00088000, r0, r1, c); 416 TESTINST2("rors r0, r1, #1", 0x00088000, r0, r1, c); 417 TESTINST2("rors r0, r1, #31", 0x00088000, r0, r1, c); 418 TESTINST2("rors r0, r1, #16", 0x00010000, r0, r1, c); 419 TESTINST2("rors r0, r1, #17", 0x00010000, r0, r1, c); 420 TESTINST2("rors r0, r1, #18", 0x00010000, r0, r1, c); 421 TESTCARRYEND 422 423 printf("shift with barrel shifter\n"); 424 TESTCARRY 425 TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 426 TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 427 TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 428 TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 429 TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 430 TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 431 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 432 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 433 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 434 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 435 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 436 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 437 TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 0, r0, r1, r2, r3, c); 438 TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 1, r0, r1, r2, r3, c); 439 TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 31, r0, r1, r2, r3, c); 440 TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 32, r0, r1, r2, r3, c); 441 TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 255, r0, r1, r2, r3, c); 442 TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 256, r0, r1, r2, r3, c); 443 TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 444 TESTCARRYEND 445 446 TESTCARRY 447 TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 0, r0, r1, r2, r3, c); 448 TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 1, r0, r1, r2, r3, c); 449 TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 2, r0, r1, r2, r3, c); 450 TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 3, r0, r1, r2, r3, c); 451 TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 4, r0, r1, r2, r3, c); 452 TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 5, r0, r1, r2, r3, c); 453 TESTCARRYEND 454 455 TESTCARRY 456 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 0, r0, r1, r2, r3, c); 457 TESTINST4("add r0, r1, r2, ror r3", 0, 0x80088000, 0, r0, r1, r2, r3, c); 458 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 1, r0, r1, r2, r3, c); 459 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 31, r0, r1, r2, r3, c); 460 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 32, r0, r1, r2, r3, c); 461 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 255, r0, r1, r2, r3, c); 462 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 256, r0, r1, r2, r3, c); 463 TESTINST4("add r0, r1, r2, ror r3", 0, 0x80088000, 256, r0, r1, r2, r3, c); 464 TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 257, r0, r1, r2, r3, c); 465 TESTCARRYEND 466 467 TESTCARRY 468 TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 469 TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 470 TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 471 TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 472 TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 473 TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 474 TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 475 TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 476 TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 477 TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 478 TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 479 TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 480 481 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 0, r0, r1, r2, r3, c); 482 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x80088000, 0, r0, r1, r2, r3, c); 483 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 1, r0, r1, r2, r3, c); 484 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 31, r0, r1, r2, r3, c); 485 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 32, r0, r1, r2, r3, c); 486 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 255, r0, r1, r2, r3, c); 487 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 256, r0, r1, r2, r3, c); 488 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x80088000, 256, r0, r1, r2, r3, c); 489 TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 257, r0, r1, r2, r3, c); 490 TESTCARRYEND 491 492 TESTCARRY 493 TESTINST4("adcs r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 494 TESTINST4("adcs r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 495 TESTINST4("adcs r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 496 TESTINST4("adcs r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 497 TESTCARRYEND 498 499 printf("MUL\n"); 500 TESTINST3("mul r0, r1, r2", 0, 0, r0, r1, r2, 0); 501 TESTINST3("mul r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 502 TESTINST3("mul r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 503 TESTINST3("mul r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 504 TESTINST3("mul r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 505 TESTINST3("mul r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 506 507 printf("MULS\n"); 508 TESTINST3("muls r0, r1, r2", 0, 0, r0, r1, r2, 0); 509 TESTINST3("muls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 510 TESTINST3("muls r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 511 TESTINST3("muls r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 512 TESTINST3("muls r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 513 TESTINST3("muls r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 514 515 printf("MLA\n"); 516 TESTINST4("mla r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); 517 TESTINST4("mla r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); 518 TESTINST4("mla r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); 519 TESTINST4("mla r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); 520 TESTINST4("mla r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); 521 TESTINST4("mla r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); 522 523 printf("MLAS\n"); 524 TESTINST4("mlas r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); 525 TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); 526 TESTINST4("mlas r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); 527 TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); 528 TESTINST4("mlas r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); 529 TESTINST4("mlas r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); 530 531 printf("MLS\n"); 532 TESTINST4("mls r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); 533 TESTINST4("mls r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); 534 TESTINST4("mls r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); 535 TESTINST4("mls r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); 536 TESTINST4("mls r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); 537 TESTINST4("mls r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); 538 539 printf("UMULL\n"); 540 TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 541 TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 542 TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 543 TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 544 TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 545 TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 546 TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 547 TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 548 TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 549 TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 550 TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 551 TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 552 553 printf("SMULL\n"); 554 TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 555 TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 556 TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 557 TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 558 TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 559 TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 560 TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 561 TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 562 TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 563 TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 564 TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 565 TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 566 567 printf("UMLAL\n"); 568 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 569 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 570 TESTINST4_2OUT("umlal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 571 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 572 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 573 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 574 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 575 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 576 TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 577 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 578 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 579 TESTINST4_2OUT("umlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 580 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 581 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 582 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 583 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 584 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 585 TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 586 587 printf("SMLAL\n"); 588 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 589 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 590 TESTINST4_2OUT("smlal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 591 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 592 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 593 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 594 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 595 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 596 TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 597 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 598 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 599 TESTINST4_2OUT("smlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 600 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 601 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 602 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 603 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 604 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 605 TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 606 607 printf("SMLALD\n"); 608 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 609 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 610 TESTINST4_2OUT("smlald r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 611 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 612 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 613 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 614 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 615 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 616 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 617 TESTINST4_2OUT("smlald r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0); 618 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 619 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 620 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 621 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 622 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 623 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 624 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 625 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 626 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 627 TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0); 628 629 printf("SMLSLD\n"); 630 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 631 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 632 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 633 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 634 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 635 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 636 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 637 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 638 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 639 TESTINST4_2OUT("smlsld r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0); 640 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 641 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 642 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 643 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 644 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 645 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 646 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 647 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 648 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 649 TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0); 650 651 printf("CLZ\n"); 652 TESTCARRY 653 TESTINST2("clz r0, r1", 0, r0, r1, c); 654 TESTINST2("clz r0, r1", 1, r0, r1, c); 655 TESTINST2("clz r0, r1", 0x10, r0, r1, c); 656 TESTINST2("clz r0, r1", 0xffffffff, r0, r1, c); 657 TESTCARRYEND 658 659 printf("extend instructions\n"); 660 TESTINST2("uxtb r0, r1", 0, r0, r1, 0); 661 TESTINST2("uxtb r0, r1", 1, r0, r1, 0); 662 TESTINST2("uxtb r0, r1", 0xff, r0, r1, 0); 663 TESTINST2("uxtb r0, r1", 0xffffffff, r0, r1, 0); 664 TESTINST2("sxtb r0, r1", 0, r0, r1, 0); 665 TESTINST2("sxtb r0, r1", 1, r0, r1, 0); 666 TESTINST2("sxtb r0, r1", 0xff, r0, r1, 0); 667 TESTINST2("sxtb r0, r1", 0xffffffff, r0, r1, 0); 668 669 TESTINST2("uxth r0, r1", 0, r0, r1, 0); 670 TESTINST2("uxth r0, r1", 1, r0, r1, 0); 671 TESTINST2("uxth r0, r1", 0xffff, r0, r1, 0); 672 TESTINST2("uxth r0, r1", 0xffffffff, r0, r1, 0); 673 TESTINST2("sxth r0, r1", 0, r0, r1, 0); 674 TESTINST2("sxth r0, r1", 1, r0, r1, 0); 675 TESTINST2("sxth r0, r1", 0x7fff, r0, r1, 0); 676 TESTINST2("sxth r0, r1", 0xffff, r0, r1, 0); 677 TESTINST2("sxth r0, r1", 0x10ffff, r0, r1, 0); 678 TESTINST2("sxth r0, r1", 0x107fff, r0, r1, 0); 679 TESTINST2("sxth r0, r1", 0xffffffff, r0, r1, 0); 680 681 TESTINST2("uxtb r0, r1, ror #0", 0x000000ff, r0, r1, 0); 682 TESTINST2("uxtb r0, r1, ror #8", 0x000000ff, r0, r1, 0); 683 TESTINST2("uxtb r0, r1, ror #8", 0x0000ff00, r0, r1, 0); 684 TESTINST2("uxtb r0, r1, ror #16", 0x00ff0000, r0, r1, 0); 685 TESTINST2("uxtb r0, r1, ror #24", 0xff000000, r0, r1, 0); 686 687 TESTINST2("uxtb16 r0, r1", 0xffffffff, r0, r1, 0); 688 TESTINST2("uxtb16 r0, r1, ror #16", 0x0000ffff, r0, r1, 0); 689 TESTINST2("sxtb16 r0, r1", 0xffffffff, r0, r1, 0); 690 TESTINST2("sxtb16 r0, r1", 0x00ff00ff, r0, r1, 0); 691 TESTINST2("sxtb16 r0, r1", 0x007f007f, r0, r1, 0); 692 693 printf("------------ BFI ------------\n"); 694 695 /* bfi rDst, rSrc, #lsb-in-dst, #number-of-bits-to-copy */ 696 TESTINST2("bfi r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); 697 TESTINST2("bfi r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); 698 TESTINST2("bfi r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 699 700 TESTINST2("bfi r0, r1, #19, #11", 0xFFFFFFFF, r0, r1, 0); 701 TESTINST2("bfi r0, r1, #20, #11", 0xFFFFFFFF, r0, r1, 0); 702 TESTINST2("bfi r0, r1, #21, #11", 0xFFFFFFFF, r0, r1, 0); 703 704 TESTINST2("bfi r0, r1, #0, #32", 0xFFFFFFFF, r0, r1, 0); 705 TESTINST2("bfi r0, r1, #1, #31", 0xFFFFFFFF, r0, r1, 0); 706 707 TESTINST2("bfi r0, r1, #29, #3", 0xFFFFFFFF, r0, r1, 0); 708 TESTINST2("bfi r0, r1, #30, #2", 0xFFFFFFFF, r0, r1, 0); 709 TESTINST2("bfi r0, r1, #31, #1", 0xFFFFFFFF, r0, r1, 0); 710 711 printf("------------ BFC ------------\n"); 712 713 /* bfi rDst, #lsb-in-dst, #number-of-bits-to-copy */ 714 TESTINST2("bfc r0, #0, #11", 0xAAAAAAAA, r0, r1, 0); 715 TESTINST2("bfc r0, #1, #11", 0xAAAAAAAA, r0, r1, 0); 716 TESTINST2("bfc r0, #2, #11", 0xAAAAAAAA, r0, r1, 0); 717 718 TESTINST2("bfc r0, #19, #11", 0xFFFFFFFF, r0, r1, 0); 719 TESTINST2("bfc r0, #20, #11", 0xFFFFFFFF, r0, r1, 0); 720 TESTINST2("bfc r0, #21, #11", 0xFFFFFFFF, r0, r1, 0); 721 722 TESTINST2("bfc r0, #0, #32", 0xFFFFFFFF, r0, r1, 0); 723 TESTINST2("bfc r0, #1, #31", 0xFFFFFFFF, r0, r1, 0); 724 725 TESTINST2("bfc r0, #29, #3", 0xFFFFFFFF, r0, r1, 0); 726 TESTINST2("bfc r0, #30, #2", 0xFFFFFFFF, r0, r1, 0); 727 TESTINST2("bfc r0, #31, #1", 0xFFFFFFFF, r0, r1, 0); 728 729 printf("------------ SBFX ------------\n"); 730 731 /* sbfx rDst, rSrc, #lsb, #width */ 732 TESTINST2("sbfx r0, r1, #0, #1", 0x00000000, r0, r1, 0); 733 TESTINST2("sbfx r0, r1, #0, #1", 0x00000001, r0, r1, 0); 734 TESTINST2("sbfx r0, r1, #1, #1", 0x00000000, r0, r1, 0); 735 TESTINST2("sbfx r0, r1, #1, #1", 0x00000001, r0, r1, 0); 736 TESTINST2("sbfx r0, r1, #1, #1", 0x00000002, r0, r1, 0); 737 TESTINST2("sbfx r0, r1, #1, #1", 0x00000003, r0, r1, 0); 738 739 TESTINST2("sbfx r0, r1, #0, #2", 0x00000000, r0, r1, 0); 740 TESTINST2("sbfx r0, r1, #0, #2", 0x00000001, r0, r1, 0); 741 TESTINST2("sbfx r0, r1, #1, #2", 0x00000000, r0, r1, 0); 742 TESTINST2("sbfx r0, r1, #1, #2", 0x00000001, r0, r1, 0); 743 TESTINST2("sbfx r0, r1, #1, #2", 0x00000002, r0, r1, 0); 744 TESTINST2("sbfx r0, r1, #1, #2", 0x00000003, r0, r1, 0); 745 746 TESTINST2("sbfx r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); 747 TESTINST2("sbfx r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); 748 TESTINST2("sbfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 749 750 TESTINST2("sbfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 751 752 TESTINST2("sbfx r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0); 753 TESTINST2("sbfx r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0); 754 755 printf("------------ UBFX ------------\n"); 756 757 /* ubfx rDst, rSrc, #lsb, #width */ 758 TESTINST2("ubfx r0, r1, #0, #1", 0x00000000, r0, r1, 0); 759 TESTINST2("ubfx r0, r1, #0, #1", 0x00000001, r0, r1, 0); 760 TESTINST2("ubfx r0, r1, #1, #1", 0x00000000, r0, r1, 0); 761 TESTINST2("ubfx r0, r1, #1, #1", 0x00000001, r0, r1, 0); 762 TESTINST2("ubfx r0, r1, #1, #1", 0x00000002, r0, r1, 0); 763 TESTINST2("ubfx r0, r1, #1, #1", 0x00000003, r0, r1, 0); 764 765 TESTINST2("ubfx r0, r1, #0, #2", 0x00000000, r0, r1, 0); 766 TESTINST2("ubfx r0, r1, #0, #2", 0x00000001, r0, r1, 0); 767 TESTINST2("ubfx r0, r1, #1, #2", 0x00000000, r0, r1, 0); 768 TESTINST2("ubfx r0, r1, #1, #2", 0x00000001, r0, r1, 0); 769 TESTINST2("ubfx r0, r1, #1, #2", 0x00000002, r0, r1, 0); 770 TESTINST2("ubfx r0, r1, #1, #2", 0x00000003, r0, r1, 0); 771 772 TESTINST2("ubfx r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); 773 TESTINST2("ubfx r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); 774 TESTINST2("ubfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 775 776 TESTINST2("ubfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 777 778 TESTINST2("ubfx r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0); 779 TESTINST2("ubfx r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0); 780 781 printf("------------ SMULL{B,T}{B,T} ------------\n"); 782 /* SMULxx rD, rN, rM */ 783 784 TESTINST3("smulbb r0, r1, r2", 0x00030000, 0x00040000, r0, r1, r2, 0); 785 TESTINST3("smulbb r0, r1, r2", 0x00030001, 0x00040002, r0, r1, r2, 0); 786 TESTINST3("smulbb r0, r1, r2", 0x00038001, 0x00047fff, r0, r1, r2, 0); 787 TESTINST3("smulbb r0, r1, r2", 0x00037fff, 0x00047fff, r0, r1, r2, 0); 788 TESTINST3("smulbb r0, r1, r2", 0x0003ffff, 0x0004ffff, r0, r1, r2, 0); 789 790 printf("------------ SXTAB ------------\n"); 791 TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 792 r0, r1, r2, 0); 793 TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 794 r0, r1, r2, 0); 795 TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819, 796 r0, r1, r2, 0); 797 TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819, 798 r0, r1, r2, 0); 799 800 TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, 801 r0, r1, r2, 0); 802 TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, 803 r0, r1, r2, 0); 804 TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899, 805 r0, r1, r2, 0); 806 TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899, 807 r0, r1, r2, 0); 808 809 printf("------------ UXTAB ------------\n"); 810 TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 811 r0, r1, r2, 0); 812 TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 813 r0, r1, r2, 0); 814 TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819, 815 r0, r1, r2, 0); 816 TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819, 817 r0, r1, r2, 0); 818 819 TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, 820 r0, r1, r2, 0); 821 TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, 822 r0, r1, r2, 0); 823 TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899, 824 r0, r1, r2, 0); 825 TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899, 826 r0, r1, r2, 0); 827 828 printf("------------ SXTAH ------------\n"); 829 TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 830 r0, r1, r2, 0); 831 TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 832 r0, r1, r2, 0); 833 TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, 834 r0, r1, r2, 0); 835 TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, 836 r0, r1, r2, 0); 837 838 TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, 839 r0, r1, r2, 0); 840 TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, 841 r0, r1, r2, 0); 842 TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, 843 r0, r1, r2, 0); 844 TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, 845 r0, r1, r2, 0); 846 847 printf("------------ UXTAH ------------\n"); 848 TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 849 r0, r1, r2, 0); 850 TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 851 r0, r1, r2, 0); 852 TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, 853 r0, r1, r2, 0); 854 TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, 855 r0, r1, r2, 0); 856 857 TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, 858 r0, r1, r2, 0); 859 TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, 860 r0, r1, r2, 0); 861 TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, 862 r0, r1, r2, 0); 863 TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, 864 r0, r1, r2, 0); 865 866 printf("------------ PLD/PLDW (begin) ------------\n"); 867 /* These don't have any effect on the architected state, so, 868 uh, there's no result values to check. Just _do_ some of 869 them and check Valgrind's instruction decoder eats them up 870 without complaining. */ 871 { int alocal; 872 printf("pld reg +/- imm12 cases\n"); 873 __asm__ __volatile__( "pld [%0, #128]" : :/*in*/"r"(&alocal) ); 874 __asm__ __volatile__( "pld [%0, #-128]" : :/*in*/"r"(&alocal) ); 875 __asm__ __volatile__( "pld [r15, #-128]" : :/*in*/"r"(&alocal) ); 876 877 // apparently pldw is v7 only 878 //__asm__ __volatile__( "pldw [%0, #128]" : :/*in*/"r"(&alocal) ); 879 //__asm__ __volatile__( "pldw [%0, #-128]" : :/*in*/"r"(&alocal) ); 880 //__asm__ __volatile__( "pldw [r15, #128]" : :/*in*/"r"(&alocal) ); 881 882 printf("pld reg +/- shifted reg cases\n"); 883 __asm__ __volatile__( "pld [%0, %1]" : : /*in*/"r"(&alocal), "r"(0) ); 884 __asm__ __volatile__( "pld [%0, %1, LSL #1]" : : /*in*/"r"(&alocal), "r"(0) ); 885 __asm__ __volatile__( "pld [%0, %1, LSR #1]" : : /*in*/"r"(&alocal), "r"(0) ); 886 __asm__ __volatile__( "pld [%0, %1, ASR #1]" : : /*in*/"r"(&alocal), "r"(0) ); 887 __asm__ __volatile__( "pld [%0, %1, ROR #1]" : : /*in*/"r"(&alocal), "r"(0) ); 888 __asm__ __volatile__( "pld [%0, %1, RRX]" : : /*in*/"r"(&alocal), "r"(0) ); 889 } 890 printf("------------ PLD/PLDW (done) ------------\n"); 891 892 printf("------------ RBIT ------------\n"); 893 TESTINST2("rbit r0, r1", 0x00000000, r0, r1, 0); 894 TESTINST2("rbit r0, r1", 0xFFFFFFFF, r0, r1, 0); 895 TESTINST2("rbit r0, r1", 0x80000000, r0, r1, 0); 896 TESTINST2("rbit r0, r1", 0x00000001, r0, r1, 0); 897 TESTINST2("rbit r0, r1", 0x31415927, r0, r1, 0); 898 TESTINST2("rbit r0, r1", 0x14141562, r0, r1, 0); 899 TESTINST2("rbit r0, r1", 0xabe8391f, r0, r1, 0); 900 TESTINST2("rbit r0, r1", 0x9028aa80, r0, r1, 0); 901 TESTINST2("rbit r0, r1", 0xead1fc6d, r0, r1, 0); 902 TESTINST2("rbit r0, r1", 0x35c98c55, r0, r1, 0); 903 TESTINST2("rbit r0, r1", 0x534af1eb, r0, r1, 0); 904 TESTINST2("rbit r0, r1", 0x45511b08, r0, r1, 0); 905 TESTINST2("rbit r0, r1", 0x90077f71, r0, r1, 0); 906 TESTINST2("rbit r0, r1", 0xde8ca84b, r0, r1, 0); 907 TESTINST2("rbit r0, r1", 0xe37a0dda, r0, r1, 0); 908 TESTINST2("rbit r0, r1", 0xe5b83d4b, r0, r1, 0); 909 TESTINST2("rbit r0, r1", 0xbb6d14ec, r0, r1, 0); 910 TESTINST2("rbit r0, r1", 0x68983cc9, r0, r1, 0); 911 912 printf("------------ REV ------------\n"); 913 TESTINST2("rev r0, r1", 0x00000000, r0, r1, 0); 914 TESTINST2("rev r0, r1", 0xFFFFFFFF, r0, r1, 0); 915 TESTINST2("rev r0, r1", 0x80000000, r0, r1, 0); 916 TESTINST2("rev r0, r1", 0x00000001, r0, r1, 0); 917 TESTINST2("rev r0, r1", 0x31415927, r0, r1, 0); 918 TESTINST2("rev r0, r1", 0x14141562, r0, r1, 0); 919 TESTINST2("rev r0, r1", 0xabe8391f, r0, r1, 0); 920 TESTINST2("rev r0, r1", 0x9028aa80, r0, r1, 0); 921 TESTINST2("rev r0, r1", 0xead1fc6d, r0, r1, 0); 922 TESTINST2("rev r0, r1", 0x35c98c55, r0, r1, 0); 923 TESTINST2("rev r0, r1", 0x534af1eb, r0, r1, 0); 924 TESTINST2("rev r0, r1", 0x45511b08, r0, r1, 0); 925 TESTINST2("rev r0, r1", 0x90077f71, r0, r1, 0); 926 TESTINST2("rev r0, r1", 0xde8ca84b, r0, r1, 0); 927 TESTINST2("rev r0, r1", 0xe37a0dda, r0, r1, 0); 928 TESTINST2("rev r0, r1", 0xe5b83d4b, r0, r1, 0); 929 TESTINST2("rev r0, r1", 0xbb6d14ec, r0, r1, 0); 930 TESTINST2("rev r0, r1", 0x68983cc9, r0, r1, 0); 931 932 printf("------------ REV16 ------------\n"); 933 TESTINST2("rev16 r0, r1", 0x00000000, r0, r1, 0); 934 TESTINST2("rev16 r0, r1", 0xFFFFFFFF, r0, r1, 0); 935 TESTINST2("rev16 r0, r1", 0x80000000, r0, r1, 0); 936 TESTINST2("rev16 r0, r1", 0x00000001, r0, r1, 0); 937 TESTINST2("rev16 r0, r1", 0x31415927, r0, r1, 0); 938 TESTINST2("rev16 r0, r1", 0x14141562, r0, r1, 0); 939 TESTINST2("rev16 r0, r1", 0xabe8391f, r0, r1, 0); 940 TESTINST2("rev16 r0, r1", 0x9028aa80, r0, r1, 0); 941 TESTINST2("rev16 r0, r1", 0xead1fc6d, r0, r1, 0); 942 TESTINST2("rev16 r0, r1", 0x35c98c55, r0, r1, 0); 943 TESTINST2("rev16 r0, r1", 0x534af1eb, r0, r1, 0); 944 TESTINST2("rev16 r0, r1", 0x45511b08, r0, r1, 0); 945 TESTINST2("rev16 r0, r1", 0x90077f71, r0, r1, 0); 946 TESTINST2("rev16 r0, r1", 0xde8ca84b, r0, r1, 0); 947 TESTINST2("rev16 r0, r1", 0xe37a0dda, r0, r1, 0); 948 TESTINST2("rev16 r0, r1", 0xe5b83d4b, r0, r1, 0); 949 TESTINST2("rev16 r0, r1", 0xbb6d14ec, r0, r1, 0); 950 TESTINST2("rev16 r0, r1", 0x68983cc9, r0, r1, 0); 951 952 printf("------------ REVSH ------------\n"); 953 TESTINST2("revsh r0, r1", 0x00000000, r0, r1, 0); 954 TESTINST2("revsh r0, r1", 0xFFFFFFFF, r0, r1, 0); 955 TESTINST2("revsh r0, r1", 0x80000000, r0, r1, 0); 956 TESTINST2("revsh r0, r1", 0x00000001, r0, r1, 0); 957 TESTINST2("revsh r0, r1", 0x31415927, r0, r1, 0); 958 TESTINST2("revsh r0, r1", 0x14141562, r0, r1, 0); 959 TESTINST2("revsh r0, r1", 0xabe8391f, r0, r1, 0); 960 TESTINST2("revsh r0, r1", 0x9028aa80, r0, r1, 0); 961 TESTINST2("revsh r0, r1", 0xead1fc6d, r0, r1, 0); 962 TESTINST2("revsh r0, r1", 0x35c98c55, r0, r1, 0); 963 TESTINST2("revsh r0, r1", 0x534af1eb, r0, r1, 0); 964 TESTINST2("revsh r0, r1", 0x45511b08, r0, r1, 0); 965 TESTINST2("revsh r0, r1", 0x90077f71, r0, r1, 0); 966 TESTINST2("revsh r0, r1", 0xde8ca84b, r0, r1, 0); 967 TESTINST2("revsh r0, r1", 0xe37a0dda, r0, r1, 0); 968 TESTINST2("revsh r0, r1", 0xe5b83d4b, r0, r1, 0); 969 TESTINST2("revsh r0, r1", 0xbb6d14ec, r0, r1, 0); 970 TESTINST2("revsh r0, r1", 0x68983cc9, r0, r1, 0); 971 972 printf("------------ NOP (begin) ------------\n"); 973 printf("nop\n"); 974 __asm__ __volatile__("nop" ::: "memory","cc"); 975 printf("nopeq\n"); 976 __asm__ __volatile__("nopeq" ::: "memory","cc"); 977 printf("nopne\n"); 978 __asm__ __volatile__("nopne" ::: "memory","cc"); 979 printf("------------ NOP (end) ------------\n"); 980 981 printf("------------ SMMUL ------------\n"); 982 TESTINST3("smmul r0, r1, r2", 0, 0, r0, r1, r2, 0); 983 TESTINST3("smmul r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 984 TESTINST3("smmul r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 985 TESTINST3("smmul r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 986 TESTINST3("smmul r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 987 TESTINST3("smmul r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 988 TESTINST3("smmul r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); 989 TESTINST3("smmul r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); 990 TESTINST3("smmul r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); 991 TESTINST3("smmul r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); 992 TESTINST3("smmul r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); 993 994 TESTINST3("smmulr r0, r1, r2", 0, 0, r0, r1, r2, 0); 995 TESTINST3("smmulr r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 996 TESTINST3("smmulr r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 997 TESTINST3("smmulr r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 998 TESTINST3("smmulr r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 999 TESTINST3("smmulr r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 1000 TESTINST3("smmulr r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); 1001 TESTINST3("smmulr r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); 1002 TESTINST3("smmulr r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); 1003 TESTINST3("smmulr r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); 1004 TESTINST3("smmulr r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); 1005 1006 printf("------------ UMAAL ------------\n"); 1007 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 1008 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 1009 TESTINST4_2OUT("umaal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 1010 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 1011 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 1012 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 1013 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 1014 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 1015 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 1016 1017 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0x27182846, 0x31415927, 0x14141356, 0x1773250A, 1018 r0, r1, r2, r3, 0); 1019 TESTINST4_2OUT("umaal r0, r1, r2, r3", 0x01415927, 0x74141356, 0x5773250A, 0xA7182846, 1020 r0, r1, r2, r3, 1); 1021 1022 printf("----------------- SMMLA{R} ----------------- \n"); 1023 TESTINST4("smmla r0, r1, r2, r3", 1024 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); 1025 TESTINST4("smmla r0, r1, r2, r3", 1026 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); 1027 TESTINST4("smmla r0, r1, r2, r3", 1028 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); 1029 TESTINST4("smmla r0, r1, r2, r3", 1030 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); 1031 TESTINST4("smmla r0, r1, r2, r3", 1032 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); 1033 TESTINST4("smmla r0, r1, r2, r3", 1034 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); 1035 TESTINST4("smmla r0, r1, r2, r3", 1036 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); 1037 TESTINST4("smmla r0, r1, r2, r3", 1038 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); 1039 TESTINST4("smmla r0, r1, r2, r3", 1040 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); 1041 TESTINST4("smmla r0, r1, r2, r3", 1042 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); 1043 TESTINST4("smmla r0, r1, r2, r3", 1044 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); 1045 TESTINST4("smmla r0, r1, r2, r3", 1046 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); 1047 TESTINST4("smmla r0, r1, r2, r3", 1048 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); 1049 TESTINST4("smmla r0, r1, r2, r3", 1050 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); 1051 TESTINST4("smmla r0, r1, r2, r3", 1052 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); 1053 TESTINST4("smmla r0, r1, r2, r3", 1054 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); 1055 TESTINST4("smmla r0, r1, r2, r3", 1056 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); 1057 TESTINST4("smmla r0, r1, r2, r3", 1058 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); 1059 TESTINST4("smmla r0, r1, r2, r3", 1060 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); 1061 TESTINST4("smmla r0, r1, r2, r3", 1062 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); 1063 TESTINST4("smmla r0, r1, r2, r3", 1064 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); 1065 TESTINST4("smmla r0, r1, r2, r3", 1066 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); 1067 TESTINST4("smmla r0, r1, r2, r3", 1068 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); 1069 TESTINST4("smmla r0, r1, r2, r3", 1070 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); 1071 TESTINST4("smmla r0, r1, r2, r3", 1072 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); 1073 TESTINST4("smmla r0, r1, r2, r3", 1074 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); 1075 TESTINST4("smmla r0, r1, r2, r3", 1076 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); 1077 TESTINST4("smmla r0, r1, r2, r3", 1078 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); 1079 TESTINST4("smmla r0, r1, r2, r3", 1080 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); 1081 TESTINST4("smmla r0, r1, r2, r3", 1082 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); 1083 TESTINST4("smmla r0, r1, r2, r3", 1084 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); 1085 TESTINST4("smmla r0, r1, r2, r3", 1086 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); 1087 TESTINST4("smmla r0, r1, r2, r3", 1088 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); 1089 TESTINST4("smmla r0, r1, r2, r3", 1090 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); 1091 TESTINST4("smmla r0, r1, r2, r3", 1092 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); 1093 TESTINST4("smmla r0, r1, r2, r3", 1094 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); 1095 TESTINST4("smmla r0, r1, r2, r3", 1096 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); 1097 TESTINST4("smmla r0, r1, r2, r3", 1098 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); 1099 TESTINST4("smmla r0, r1, r2, r3", 1100 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); 1101 TESTINST4("smmla r0, r1, r2, r3", 1102 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); 1103 TESTINST4("smmla r0, r1, r2, r3", 1104 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); 1105 TESTINST4("smmla r0, r1, r2, r3", 1106 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); 1107 TESTINST4("smmla r0, r1, r2, r3", 1108 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); 1109 TESTINST4("smmla r0, r1, r2, r3", 1110 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); 1111 TESTINST4("smmla r0, r1, r2, r3", 1112 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); 1113 TESTINST4("smmla r0, r1, r2, r3", 1114 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); 1115 TESTINST4("smmla r0, r1, r2, r3", 1116 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); 1117 TESTINST4("smmla r0, r1, r2, r3", 1118 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); 1119 TESTINST4("smmla r0, r1, r2, r3", 1120 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); 1121 TESTINST4("smmla r0, r1, r2, r3", 1122 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); 1123 TESTINST4("smmla r0, r1, r2, r3", 1124 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); 1125 TESTINST4("smmla r0, r1, r2, r3", 1126 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); 1127 TESTINST4("smmla r0, r1, r2, r3", 1128 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); 1129 TESTINST4("smmla r0, r1, r2, r3", 1130 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); 1131 TESTINST4("smmla r0, r1, r2, r3", 1132 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); 1133 TESTINST4("smmla r0, r1, r2, r3", 1134 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); 1135 TESTINST4("smmla r0, r1, r2, r3", 1136 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); 1137 TESTINST4("smmla r0, r1, r2, r3", 1138 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); 1139 1140 TESTINST4("smmlar r0, r1, r2, r3", 1141 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); 1142 TESTINST4("smmlar r0, r1, r2, r3", 1143 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); 1144 TESTINST4("smmlar r0, r1, r2, r3", 1145 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); 1146 TESTINST4("smmlar r0, r1, r2, r3", 1147 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); 1148 TESTINST4("smmlar r0, r1, r2, r3", 1149 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); 1150 TESTINST4("smmlar r0, r1, r2, r3", 1151 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); 1152 TESTINST4("smmlar r0, r1, r2, r3", 1153 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); 1154 TESTINST4("smmlar r0, r1, r2, r3", 1155 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); 1156 TESTINST4("smmlar r0, r1, r2, r3", 1157 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); 1158 TESTINST4("smmlar r0, r1, r2, r3", 1159 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); 1160 TESTINST4("smmlar r0, r1, r2, r3", 1161 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); 1162 TESTINST4("smmlar r0, r1, r2, r3", 1163 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); 1164 TESTINST4("smmlar r0, r1, r2, r3", 1165 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); 1166 TESTINST4("smmlar r0, r1, r2, r3", 1167 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); 1168 TESTINST4("smmlar r0, r1, r2, r3", 1169 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); 1170 TESTINST4("smmlar r0, r1, r2, r3", 1171 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); 1172 TESTINST4("smmlar r0, r1, r2, r3", 1173 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); 1174 TESTINST4("smmlar r0, r1, r2, r3", 1175 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); 1176 TESTINST4("smmlar r0, r1, r2, r3", 1177 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); 1178 TESTINST4("smmlar r0, r1, r2, r3", 1179 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); 1180 TESTINST4("smmlar r0, r1, r2, r3", 1181 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); 1182 TESTINST4("smmlar r0, r1, r2, r3", 1183 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); 1184 TESTINST4("smmlar r0, r1, r2, r3", 1185 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); 1186 TESTINST4("smmlar r0, r1, r2, r3", 1187 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); 1188 TESTINST4("smmlar r0, r1, r2, r3", 1189 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); 1190 TESTINST4("smmlar r0, r1, r2, r3", 1191 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); 1192 TESTINST4("smmlar r0, r1, r2, r3", 1193 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); 1194 TESTINST4("smmlar r0, r1, r2, r3", 1195 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); 1196 TESTINST4("smmlar r0, r1, r2, r3", 1197 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); 1198 TESTINST4("smmlar r0, r1, r2, r3", 1199 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); 1200 TESTINST4("smmlar r0, r1, r2, r3", 1201 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); 1202 TESTINST4("smmlar r0, r1, r2, r3", 1203 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); 1204 TESTINST4("smmlar r0, r1, r2, r3", 1205 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); 1206 TESTINST4("smmlar r0, r1, r2, r3", 1207 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); 1208 TESTINST4("smmlar r0, r1, r2, r3", 1209 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); 1210 TESTINST4("smmlar r0, r1, r2, r3", 1211 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); 1212 TESTINST4("smmlar r0, r1, r2, r3", 1213 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); 1214 TESTINST4("smmlar r0, r1, r2, r3", 1215 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); 1216 TESTINST4("smmlar r0, r1, r2, r3", 1217 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); 1218 TESTINST4("smmlar r0, r1, r2, r3", 1219 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); 1220 TESTINST4("smmlar r0, r1, r2, r3", 1221 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); 1222 TESTINST4("smmlar r0, r1, r2, r3", 1223 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); 1224 TESTINST4("smmlar r0, r1, r2, r3", 1225 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); 1226 TESTINST4("smmlar r0, r1, r2, r3", 1227 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); 1228 TESTINST4("smmlar r0, r1, r2, r3", 1229 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); 1230 TESTINST4("smmlar r0, r1, r2, r3", 1231 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); 1232 TESTINST4("smmlar r0, r1, r2, r3", 1233 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); 1234 TESTINST4("smmlar r0, r1, r2, r3", 1235 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); 1236 TESTINST4("smmlar r0, r1, r2, r3", 1237 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); 1238 TESTINST4("smmlar r0, r1, r2, r3", 1239 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); 1240 TESTINST4("smmlar r0, r1, r2, r3", 1241 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); 1242 TESTINST4("smmlar r0, r1, r2, r3", 1243 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); 1244 TESTINST4("smmlar r0, r1, r2, r3", 1245 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); 1246 TESTINST4("smmlar r0, r1, r2, r3", 1247 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); 1248 TESTINST4("smmlar r0, r1, r2, r3", 1249 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); 1250 TESTINST4("smmlar r0, r1, r2, r3", 1251 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); 1252 TESTINST4("smmlar r0, r1, r2, r3", 1253 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); 1254 TESTINST4("smmlar r0, r1, r2, r3", 1255 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); 1256 1257 printf("----------------- SMMLS{R} ----------------- \n"); 1258 TESTINST4("smmls r0, r1, r2, r3", 1259 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); 1260 TESTINST4("smmls r0, r1, r2, r3", 1261 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); 1262 TESTINST4("smmls r0, r1, r2, r3", 1263 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); 1264 TESTINST4("smmls r0, r1, r2, r3", 1265 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); 1266 TESTINST4("smmls r0, r1, r2, r3", 1267 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); 1268 TESTINST4("smmls r0, r1, r2, r3", 1269 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); 1270 TESTINST4("smmls r0, r1, r2, r3", 1271 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); 1272 TESTINST4("smmls r0, r1, r2, r3", 1273 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); 1274 TESTINST4("smmls r0, r1, r2, r3", 1275 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); 1276 TESTINST4("smmls r0, r1, r2, r3", 1277 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); 1278 TESTINST4("smmls r0, r1, r2, r3", 1279 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); 1280 TESTINST4("smmls r0, r1, r2, r3", 1281 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); 1282 TESTINST4("smmls r0, r1, r2, r3", 1283 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); 1284 TESTINST4("smmls r0, r1, r2, r3", 1285 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); 1286 TESTINST4("smmls r0, r1, r2, r3", 1287 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); 1288 TESTINST4("smmls r0, r1, r2, r3", 1289 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); 1290 TESTINST4("smmls r0, r1, r2, r3", 1291 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); 1292 TESTINST4("smmls r0, r1, r2, r3", 1293 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); 1294 TESTINST4("smmls r0, r1, r2, r3", 1295 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); 1296 TESTINST4("smmls r0, r1, r2, r3", 1297 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); 1298 TESTINST4("smmls r0, r1, r2, r3", 1299 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); 1300 TESTINST4("smmls r0, r1, r2, r3", 1301 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); 1302 TESTINST4("smmls r0, r1, r2, r3", 1303 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); 1304 TESTINST4("smmls r0, r1, r2, r3", 1305 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); 1306 TESTINST4("smmls r0, r1, r2, r3", 1307 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); 1308 TESTINST4("smmls r0, r1, r2, r3", 1309 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); 1310 TESTINST4("smmls r0, r1, r2, r3", 1311 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); 1312 TESTINST4("smmls r0, r1, r2, r3", 1313 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); 1314 TESTINST4("smmls r0, r1, r2, r3", 1315 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); 1316 TESTINST4("smmls r0, r1, r2, r3", 1317 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); 1318 TESTINST4("smmls r0, r1, r2, r3", 1319 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); 1320 TESTINST4("smmls r0, r1, r2, r3", 1321 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); 1322 TESTINST4("smmls r0, r1, r2, r3", 1323 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); 1324 TESTINST4("smmls r0, r1, r2, r3", 1325 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); 1326 TESTINST4("smmls r0, r1, r2, r3", 1327 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); 1328 TESTINST4("smmls r0, r1, r2, r3", 1329 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); 1330 TESTINST4("smmls r0, r1, r2, r3", 1331 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); 1332 TESTINST4("smmls r0, r1, r2, r3", 1333 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); 1334 TESTINST4("smmls r0, r1, r2, r3", 1335 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); 1336 TESTINST4("smmls r0, r1, r2, r3", 1337 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); 1338 TESTINST4("smmls r0, r1, r2, r3", 1339 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); 1340 TESTINST4("smmls r0, r1, r2, r3", 1341 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); 1342 TESTINST4("smmls r0, r1, r2, r3", 1343 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); 1344 TESTINST4("smmls r0, r1, r2, r3", 1345 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); 1346 TESTINST4("smmls r0, r1, r2, r3", 1347 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); 1348 TESTINST4("smmls r0, r1, r2, r3", 1349 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); 1350 TESTINST4("smmls r0, r1, r2, r3", 1351 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); 1352 TESTINST4("smmls r0, r1, r2, r3", 1353 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); 1354 TESTINST4("smmls r0, r1, r2, r3", 1355 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); 1356 TESTINST4("smmls r0, r1, r2, r3", 1357 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); 1358 TESTINST4("smmls r0, r1, r2, r3", 1359 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); 1360 TESTINST4("smmls r0, r1, r2, r3", 1361 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); 1362 TESTINST4("smmls r0, r1, r2, r3", 1363 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); 1364 TESTINST4("smmls r0, r1, r2, r3", 1365 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); 1366 TESTINST4("smmls r0, r1, r2, r3", 1367 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); 1368 TESTINST4("smmls r0, r1, r2, r3", 1369 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); 1370 TESTINST4("smmls r0, r1, r2, r3", 1371 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); 1372 TESTINST4("smmls r0, r1, r2, r3", 1373 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); 1374 1375 TESTINST4("smmlsr r0, r1, r2, r3", 1376 0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0); 1377 TESTINST4("smmlsr r0, r1, r2, r3", 1378 0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0); 1379 TESTINST4("smmlsr r0, r1, r2, r3", 1380 0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0); 1381 TESTINST4("smmlsr r0, r1, r2, r3", 1382 0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0); 1383 TESTINST4("smmlsr r0, r1, r2, r3", 1384 0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0); 1385 TESTINST4("smmlsr r0, r1, r2, r3", 1386 0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0); 1387 TESTINST4("smmlsr r0, r1, r2, r3", 1388 0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0); 1389 TESTINST4("smmlsr r0, r1, r2, r3", 1390 0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0); 1391 TESTINST4("smmlsr r0, r1, r2, r3", 1392 0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0); 1393 TESTINST4("smmlsr r0, r1, r2, r3", 1394 0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0); 1395 TESTINST4("smmlsr r0, r1, r2, r3", 1396 0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0); 1397 TESTINST4("smmlsr r0, r1, r2, r3", 1398 0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0); 1399 TESTINST4("smmlsr r0, r1, r2, r3", 1400 0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0); 1401 TESTINST4("smmlsr r0, r1, r2, r3", 1402 0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0); 1403 TESTINST4("smmlsr r0, r1, r2, r3", 1404 0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0); 1405 TESTINST4("smmlsr r0, r1, r2, r3", 1406 0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0); 1407 TESTINST4("smmlsr r0, r1, r2, r3", 1408 0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0); 1409 TESTINST4("smmlsr r0, r1, r2, r3", 1410 0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0); 1411 TESTINST4("smmlsr r0, r1, r2, r3", 1412 0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0); 1413 TESTINST4("smmlsr r0, r1, r2, r3", 1414 0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0); 1415 TESTINST4("smmlsr r0, r1, r2, r3", 1416 0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0); 1417 TESTINST4("smmlsr r0, r1, r2, r3", 1418 0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0); 1419 TESTINST4("smmlsr r0, r1, r2, r3", 1420 0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0); 1421 TESTINST4("smmlsr r0, r1, r2, r3", 1422 0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0); 1423 TESTINST4("smmlsr r0, r1, r2, r3", 1424 0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0); 1425 TESTINST4("smmlsr r0, r1, r2, r3", 1426 0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0); 1427 TESTINST4("smmlsr r0, r1, r2, r3", 1428 0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0); 1429 TESTINST4("smmlsr r0, r1, r2, r3", 1430 0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0); 1431 TESTINST4("smmlsr r0, r1, r2, r3", 1432 0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0); 1433 TESTINST4("smmlsr r0, r1, r2, r3", 1434 0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0); 1435 TESTINST4("smmlsr r0, r1, r2, r3", 1436 0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0); 1437 TESTINST4("smmlsr r0, r1, r2, r3", 1438 0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0); 1439 TESTINST4("smmlsr r0, r1, r2, r3", 1440 0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0); 1441 TESTINST4("smmlsr r0, r1, r2, r3", 1442 0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0); 1443 TESTINST4("smmlsr r0, r1, r2, r3", 1444 0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0); 1445 TESTINST4("smmlsr r0, r1, r2, r3", 1446 0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0); 1447 TESTINST4("smmlsr r0, r1, r2, r3", 1448 0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0); 1449 TESTINST4("smmlsr r0, r1, r2, r3", 1450 0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0); 1451 TESTINST4("smmlsr r0, r1, r2, r3", 1452 0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0); 1453 TESTINST4("smmlsr r0, r1, r2, r3", 1454 0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0); 1455 TESTINST4("smmlsr r0, r1, r2, r3", 1456 0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0); 1457 TESTINST4("smmlsr r0, r1, r2, r3", 1458 0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0); 1459 TESTINST4("smmlsr r0, r1, r2, r3", 1460 0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0); 1461 TESTINST4("smmlsr r0, r1, r2, r3", 1462 0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0); 1463 TESTINST4("smmlsr r0, r1, r2, r3", 1464 0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0); 1465 TESTINST4("smmlsr r0, r1, r2, r3", 1466 0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0); 1467 TESTINST4("smmlsr r0, r1, r2, r3", 1468 0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0); 1469 TESTINST4("smmlsr r0, r1, r2, r3", 1470 0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0); 1471 TESTINST4("smmlsr r0, r1, r2, r3", 1472 0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0); 1473 TESTINST4("smmlsr r0, r1, r2, r3", 1474 0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0); 1475 TESTINST4("smmlsr r0, r1, r2, r3", 1476 0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0); 1477 TESTINST4("smmlsr r0, r1, r2, r3", 1478 0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0); 1479 TESTINST4("smmlsr r0, r1, r2, r3", 1480 0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0); 1481 TESTINST4("smmlsr r0, r1, r2, r3", 1482 0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0); 1483 TESTINST4("smmlsr r0, r1, r2, r3", 1484 0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0); 1485 TESTINST4("smmlsr r0, r1, r2, r3", 1486 0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0); 1487 TESTINST4("smmlsr r0, r1, r2, r3", 1488 0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0); 1489 TESTINST4("smmlsr r0, r1, r2, r3", 1490 0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0); 1491 1492 return 0; 1493 } 1494