1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* How to compile: 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown gcc -O -g -Wall -mcpu=cortex-a8 -o testarmv6int testarmv6int.c 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/ 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h> 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* test macros to generate and output the result of a single instruction */ 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINST2(instruction, RMval, RD, RM, carryin) \ 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \ 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int out; \ 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int cpsr; \ 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\ 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __asm__ volatile( \ 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "movs %3,%3;" \ 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "msrne cpsr_f,#(1<<29);" \ 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "msreq cpsr_f,#0;" \ 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "mov " #RM ",%2;" \ 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* set #RD to 0x55555555 so we can see which parts get overwritten */ \ 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "mov " #RD ", #0x55" "\n\t" \ 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "orr " #RD "," #RD "," #RD ", LSL #8" "\n\t" \ 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown "orr " #RD "," #RD "," #RD ", LSL #16" "\n\t" \ 23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction ";" \ 24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov %0," #RD ";" \ 25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mrs %1,cpsr;" \ 26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "=&r" (out), "=&r" (cpsr) \ 27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "r" (RMval), "r" (carryin) \ 28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : #RD, #RM, "cc", "memory" \ 29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("%s :: rd 0x%08x rm 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction, out, RMval, \ 32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov carryin ? 1 : 0, \ 33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cpsr & 0xffff0000, \ 34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<31) & cpsr) ? 'N' : ' ', \ 35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<30) & cpsr) ? 'Z' : ' ', \ 36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<29) & cpsr) ? 'C' : ' ', \ 37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<28) & cpsr) ? 'V' : ' ' \ 38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINST3(instruction, RMval, RNval, RD, RM, RN, carryin) \ 42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \ 43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int out; \ 44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int cpsr; \ 45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\ 46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ volatile( \ 47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movs %4,%4;" \ 48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "msrne cpsr_f,#(1<<29);" \ 49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "msreq cpsr_f,#0;" \ 50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RM ",%2;" \ 51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RN ",%3;" \ 52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction ";" \ 53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov %0," #RD ";" \ 54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mrs %1,cpsr;" \ 55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "=&r" (out), "=&r" (cpsr) \ 56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "r" (RMval), "r" (RNval), "r" (carryin) \ 57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : #RD, #RM, #RN, "cc", "memory" \ 58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction, out, RMval, RNval, \ 61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov carryin ? 1 : 0, \ 62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cpsr & 0xffff0000, \ 63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<31) & cpsr) ? 'N' : ' ', \ 64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<30) & cpsr) ? 'Z' : ' ', \ 65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<29) & cpsr) ? 'C' : ' ', \ 66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<28) & cpsr) ? 'V' : ' ' \ 67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINST4(instruction, RMval, RNval, RSval, RD, RM, RN, RS, carryin) \ 71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \ 72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int out; \ 73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int cpsr; \ 74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\ 75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ volatile( \ 76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movs %5,%5;" \ 77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "msrne cpsr_f,#(1<<29);" \ 78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "msreq cpsr_f,#0;" \ 79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RM ",%2;" \ 80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RN ",%3;" \ 81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RS ",%4;" \ 82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction ";" \ 83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov %0," #RD ";" \ 84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mrs %1,cpsr;" \ 85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "=&r" (out), "=&r" (cpsr) \ 86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "r" (RMval), "r" (RNval), "r" (RSval), "r" (carryin) \ 87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : #RD, #RM, #RN, #RS, "cc", "memory" \ 88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction, out, RMval, RNval, RSval, \ 91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov carryin ? 1 : 0, \ 92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cpsr & 0xffff0000, \ 93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<31) & cpsr) ? 'N' : ' ', \ 94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<30) & cpsr) ? 'Z' : ' ', \ 95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<29) & cpsr) ? 'C' : ' ', \ 96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<28) & cpsr) ? 'V' : ' ' \ 97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINST4_2OUT(instruction, RDval, RD2val, RMval, RSval, RD, RD2, RM, RS, carryin) \ 101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \ 102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int out; \ 103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int out2; \ 104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov unsigned int cpsr; \ 105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\ 106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ volatile( \ 107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movs %7,%7;" \ 108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "msrne cpsr_f,#(1<<29);" \ 109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "msreq cpsr_f,#0;" \ 110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RD ",%3;" \ 111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RD2 ",%4;" \ 112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RM ",%5;" \ 113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov " #RS ",%6;" \ 114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction ";" \ 115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov %0," #RD ";" \ 116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mov %1," #RD2 ";" \ 117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "mrs %2,cpsr;" \ 118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \ 119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : "r" (RDval), "r" (RD2val), "r" (RMval), "r" (RSval), "r" (carryin) \ 120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : #RD, #RD2, #RM, #RS, "cc", "memory" \ 121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("%s :: rd 0x%08x rd2 0x%08x, rm 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c\n", \ 123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov instruction, out, out2, RMval, RSval, \ 124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov carryin ? 1 : 0, \ 125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov cpsr & 0xffff0000, \ 126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<31) & cpsr) ? 'N' : ' ', \ 127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<30) & cpsr) ? 'Z' : ' ', \ 128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<29) & cpsr) ? 'C' : ' ', \ 129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ((1<<28) & cpsr) ? 'V' : ' ' \ 130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); \ 131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* helpers */ 134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTCARRY { int c = 0; for (c = 0; c < 2; c++) { 135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTCARRYEND }} 136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint main(int argc, char **argv) 141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MOV\n"); 144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mov r0, r1", 1, r0, r1, 0); 145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("cpy r0, r1", 1, r0, r1, 0); 146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mov r0, #0", 0, r0, r1, 0); 147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mov r0, #1", 0, r0, r1, 0); 148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("movs r0, r1", 1, r0, r1, c); 150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("movs r0, r1", 0, r0, r1, c); 151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("movs r0, r1", 0x80000000, r0, r1, c); 152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("movs r0, #0", 0, r0, r1, c); 153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("movs r0, #1", 0, r0, r1, c); 154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MVN\n"); 157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mvn r0, r1", 1, r0, r1, 0); 158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mvns r0, r1", 1, r0, r1, c); 160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mvns r0, r1", 0, r0, r1, c); 161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("mvns r0, r1", 0x80000000, r0, r1, c); 162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ADD\n"); 165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 0, 0, r0, r1, r2, 0); 166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 0, 1, r0, r1, r2, 0); 167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 1, 0, r0, r1, r2, 0); 168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 1, 1, r0, r1, r2, 0); 169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 0, -1, r0, r1, r2, 0); 170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 1, -1, r0, r1, r2, 0); 171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, 0); 172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 0x80000000, -1, r0, r1, r2, 0); 173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adds r0, r1, r2", 0x80000000, 0, r0, r1, r2, 0); 174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ADC\n"); 176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adcs r0, r1, r2", 0, 0, r0, r1, r2, 0); 177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("adcs r0, r1, r2", 0, 0, r0, r1, r2, 1); 178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSL\n"); 180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 1, r0, r1, r2, 0); 182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 2, r0, r1, r2, 0); 183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 31, r0, r1, r2, 0); 184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 32, r0, r1, r2, 0); 185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 33, r0, r1, r2, 0); 186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 63, r0, r1, r2, 0); 187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 64, r0, r1, r2, 0); 188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 255, r0, r1, r2, 0); 189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0xffffffff, 256, r0, r1, r2, 0); 190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0x1, 0, r0, r1, r2, 0); 192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0x1, 1, r0, r1, r2, 0); 193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0x1, 31, r0, r1, r2, 0); 194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsl r0, r1, r2", 0x2, 31, r0, r1, r2, 0); 195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSLS\n"); 197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0xffffffff, 256, r0, r1, r2, c); 208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0x1, 0, r0, r1, r2, c); 209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0x1, 1, r0, r1, r2, c); 210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0x1, 31, r0, r1, r2, c); 211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsls r0, r1, r2", 0x2, 31, r0, r1, r2, c); 212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSL immediate\n"); 215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #0", 0xffffffff, r0, r1, c); 217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #1", 0xffffffff, r0, r1, c); 218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #31", 0xffffffff, r0, r1, c); 219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #0", 0x1, r0, r1, c); 220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #1", 0x1, r0, r1, c); 221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #31", 0x1, r0, r1, c); 222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsl r0, r1, #31", 0x2, r0, r1, c); 223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSLS immediate\n"); 226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #0", 0xffffffff, r0, r1, c); 228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #1", 0xffffffff, r0, r1, c); 229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #31", 0xffffffff, r0, r1, c); 230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #0", 0x1, r0, r1, c); 231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #1", 0x1, r0, r1, c); 232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #31", 0x1, r0, r1, c); 233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsls r0, r1, #31", 0x2, r0, r1, c); 234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSR\n"); 237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 1, r0, r1, r2, 0); 239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 2, r0, r1, r2, 0); 240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 31, r0, r1, r2, 0); 241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 32, r0, r1, r2, 0); 242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 33, r0, r1, r2, 0); 243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 63, r0, r1, r2, 0); 244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 64, r0, r1, r2, 0); 245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 255, r0, r1, r2, 0); 246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsr r0, r1, r2", 0xffffffff, 256, r0, r1, r2, 0); 247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSRS\n"); 249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("lsrs r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSR immediate\n"); 262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #0", 0xffffffff, r0, r1, 0); 263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #1", 0xffffffff, r0, r1, 0); 264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #31", 0xffffffff, r0, r1, 0); 265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #32", 0xffffffff, r0, r1, 0); 266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #16", 0x00010000, r0, r1, 0); 267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #17", 0x00010000, r0, r1, 0); 268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsr r0, r1, #18", 0x00010000, r0, r1, 0); 269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("LSRS immediate\n"); 271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #0", 0xffffffff, r0, r1, c); 273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #1", 0xffffffff, r0, r1, c); 274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #31", 0xffffffff, r0, r1, c); 275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #32", 0xffffffff, r0, r1, c); 276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #16", 0x00010000, r0, r1, c); 277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #17", 0x00010000, r0, r1, c); 278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("lsrs r0, r1, #18", 0x00010000, r0, r1, c); 279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ASR\n"); 282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0xffffffff, 256, r0, r1, r2, c); 293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 0, r0, r1, r2, c); 294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, c); 295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 2, r0, r1, r2, c); 296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 31, r0, r1, r2, c); 297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 32, r0, r1, r2, c); 298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 33, r0, r1, r2, c); 299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 63, r0, r1, r2, c); 300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 64, r0, r1, r2, c); 301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 255, r0, r1, r2, c); 302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asr r0, r1, r2", 0x7fffffff, 256, r0, r1, r2, c); 303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ASRS\n"); 306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 0, r0, r1, r2, c); 308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 1, r0, r1, r2, c); 309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 2, r0, r1, r2, c); 310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 31, r0, r1, r2, c); 311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 32, r0, r1, r2, c); 312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 33, r0, r1, r2, c); 313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 63, r0, r1, r2, c); 314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 64, r0, r1, r2, c); 315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 255, r0, r1, r2, c); 316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0xffffffff, 256, r0, r1, r2, c); 317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 0, r0, r1, r2, c); 318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, c); 319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 2, r0, r1, r2, c); 320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 31, r0, r1, r2, c); 321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 32, r0, r1, r2, c); 322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 33, r0, r1, r2, c); 323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 63, r0, r1, r2, c); 324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 64, r0, r1, r2, c); 325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 255, r0, r1, r2, c); 326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x7fffffff, 256, r0, r1, r2, c); 327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x8, 0, r0, r1, r2, c); 331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x8, 1, r0, r1, r2, c); 332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x8, 2, r0, r1, r2, c); 333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x8, 3, r0, r1, r2, c); 334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x8, 4, r0, r1, r2, c); 335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x8, 5, r0, r1, r2, c); 336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x80000001, 1, r0, r1, r2, 0); 339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("asrs r0, r1, r2", 0x80000001, 2, r0, r1, r2, 0); 340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ASR immediate\n"); 342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #0", 0xffffffff, r0, r1, 0); 343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #1", 0xffffffff, r0, r1, 0); 344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #31", 0xffffffff, r0, r1, 0); 345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #32", 0xffffffff, r0, r1, 0); 346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #0", 0x7fffffff, r0, r1, 0); 347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #1", 0x7fffffff, r0, r1, 0); 348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #31", 0x7fffffff, r0, r1, 0); 349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #32", 0x7fffffff, r0, r1, 0); 350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #16", 0x00010000, r0, r1, 0); 351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #17", 0x00010000, r0, r1, 0); 352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asr r0, r1, #18", 0x00010000, r0, r1, 0); 353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ASRS immediate\n"); 355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #0", 0xffffffff, r0, r1, c); 357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #1", 0xffffffff, r0, r1, c); 358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #31", 0xffffffff, r0, r1, c); 359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #32", 0xffffffff, r0, r1, c); 360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #0", 0x7fffffff, r0, r1, c); 361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #1", 0x7fffffff, r0, r1, c); 362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #31", 0x7fffffff, r0, r1, c); 363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #32", 0x7fffffff, r0, r1, c); 364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #16", 0x00010000, r0, r1, c); 365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #17", 0x00010000, r0, r1, c); 366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("asrs r0, r1, #18", 0x00010000, r0, r1, c); 367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ROR\n"); 370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 0, r0, r1, r2, c); 372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x80088000, 1, r0, r1, r2, c); 373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 1, r0, r1, r2, c); 374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 2, r0, r1, r2, c); 375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 31, r0, r1, r2, c); 376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 32, r0, r1, r2, c); 377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 33, r0, r1, r2, c); 378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 63, r0, r1, r2, c); 379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 64, r0, r1, r2, c); 380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 255, r0, r1, r2, c); 381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 256, r0, r1, r2, c); 382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x80088000, 256, r0, r1, r2, c); 383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("ror r0, r1, r2", 0x00088000, 257, r0, r1, r2, c); 384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("RORS\n"); 387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 0, r0, r1, r2, c); 389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x80088000, 0, r0, r1, r2, c); 390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 1, r0, r1, r2, c); 391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 2, r0, r1, r2, c); 392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 31, r0, r1, r2, c); 393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 32, r0, r1, r2, c); 394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 33, r0, r1, r2, c); 395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 63, r0, r1, r2, c); 396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 64, r0, r1, r2, c); 397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 255, r0, r1, r2, c); 398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 256, r0, r1, r2, c); 399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x80088000, 256, r0, r1, r2, c); 400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("rors r0, r1, r2", 0x00088000, 257, r0, r1, r2, c); 401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("ROR immediate\n"); 404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ror r0, r1, #0", 0x00088000, r0, r1, c); 406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ror r0, r1, #1", 0x00088000, r0, r1, c); 407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ror r0, r1, #31", 0x00088000, r0, r1, c); 408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ror r0, r1, #16", 0x00010000, r0, r1, c); 409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ror r0, r1, #17", 0x00010000, r0, r1, c); 410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ror r0, r1, #18", 0x00010000, r0, r1, c); 411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("RORS immediate\n"); 414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("rors r0, r1, #0", 0x00088000, r0, r1, c); 416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("rors r0, r1, #1", 0x00088000, r0, r1, c); 417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("rors r0, r1, #31", 0x00088000, r0, r1, c); 418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("rors r0, r1, #16", 0x00010000, r0, r1, c); 419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("rors r0, r1, #17", 0x00010000, r0, r1, c); 420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("rors r0, r1, #18", 0x00010000, r0, r1, c); 421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("shift with barrel shifter\n"); 424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsl r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 0, r0, r1, r2, r3, c); 438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 1, r0, r1, r2, r3, c); 439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 31, r0, r1, r2, r3, c); 440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 32, r0, r1, r2, r3, c); 441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 255, r0, r1, r2, r3, c); 442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x7fffffff, 256, r0, r1, r2, r3, c); 443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 0, r0, r1, r2, r3, c); 448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 1, r0, r1, r2, r3, c); 449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 2, r0, r1, r2, r3, c); 450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 3, r0, r1, r2, r3, c); 451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 4, r0, r1, r2, r3, c); 452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, asr r3", 0, 0x8, 5, r0, r1, r2, r3, c); 453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 0, r0, r1, r2, r3, c); 457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x80088000, 0, r0, r1, r2, r3, c); 458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 1, r0, r1, r2, r3, c); 459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 31, r0, r1, r2, r3, c); 460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 32, r0, r1, r2, r3, c); 461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 255, r0, r1, r2, r3, c); 462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 256, r0, r1, r2, r3, c); 463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x80088000, 256, r0, r1, r2, r3, c); 464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("add r0, r1, r2, ror r3", 0, 0x00088000, 257, r0, r1, r2, r3, c); 465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 31, r0, r1, r2, r3, c); 477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 32, r0, r1, r2, r3, c); 478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 255, r0, r1, r2, r3, c); 479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, c); 480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 0, r0, r1, r2, r3, c); 482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x80088000, 0, r0, r1, r2, r3, c); 483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 1, r0, r1, r2, r3, c); 484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 31, r0, r1, r2, r3, c); 485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 32, r0, r1, r2, r3, c); 486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 255, r0, r1, r2, r3, c); 487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 256, r0, r1, r2, r3, c); 488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x80088000, 256, r0, r1, r2, r3, c); 489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 257, r0, r1, r2, r3, c); 490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adcs r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adcs r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, c); 495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adcs r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("adcs r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, c); 497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MUL\n"); 500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("mul r0, r1, r2", 0, 0, r0, r1, r2, 0); 501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("mul r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("mul r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("mul r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("mul r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("mul r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MULS\n"); 508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("muls r0, r1, r2", 0, 0, r0, r1, r2, 0); 509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("muls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("muls r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("muls r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("muls r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("muls r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MLA\n"); 516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mla r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); 517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mla r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); 518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mla r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); 519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mla r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); 520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mla r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); 521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mla r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); 522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MLAS\n"); 524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mlas r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); 525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); 526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mlas r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); 527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); 528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mlas r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); 529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mlas r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); 530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("MLS\n"); 532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mls r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0); 533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mls r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0); 534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mls r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0); 535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mls r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0); 536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mls r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0); 537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4("mls r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0); 538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("UMULL\n"); 540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umull r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("SMULL\n"); 554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smull r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("UMLAL\n"); 568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("SMLAL\n"); 588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlal r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0); 598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0); 599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0); 600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0); 601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0); 602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0); 603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0); 604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0); 605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0); 606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("CLZ\n"); 608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRY 609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("clz r0, r1", 0, r0, r1, c); 610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("clz r0, r1", 1, r0, r1, c); 611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("clz r0, r1", 0x10, r0, r1, c); 612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("clz r0, r1", 0xffffffff, r0, r1, c); 613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTCARRYEND 614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("extend instructions\n"); 616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1", 0, r0, r1, 0); 617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1", 1, r0, r1, 0); 618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1", 0xff, r0, r1, 0); 619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1", 0xffffffff, r0, r1, 0); 620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb r0, r1", 0, r0, r1, 0); 621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb r0, r1", 1, r0, r1, 0); 622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb r0, r1", 0xff, r0, r1, 0); 623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb r0, r1", 0xffffffff, r0, r1, 0); 624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxth r0, r1", 0, r0, r1, 0); 626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxth r0, r1", 1, r0, r1, 0); 627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxth r0, r1", 0xffff, r0, r1, 0); 628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxth r0, r1", 0xffffffff, r0, r1, 0); 629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 0, r0, r1, 0); 630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 1, r0, r1, 0); 631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 0x7fff, r0, r1, 0); 632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 0xffff, r0, r1, 0); 633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 0x10ffff, r0, r1, 0); 634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 0x107fff, r0, r1, 0); 635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxth r0, r1", 0xffffffff, r0, r1, 0); 636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1, ror #0", 0x000000ff, r0, r1, 0); 638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1, ror #8", 0x000000ff, r0, r1, 0); 639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1, ror #8", 0x0000ff00, r0, r1, 0); 640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1, ror #16", 0x00ff0000, r0, r1, 0); 641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb r0, r1, ror #24", 0xff000000, r0, r1, 0); 642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb16 r0, r1", 0xffffffff, r0, r1, 0); 644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("uxtb16 r0, r1, ror #16", 0x0000ffff, r0, r1, 0); 645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb16 r0, r1", 0xffffffff, r0, r1, 0); 646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb16 r0, r1", 0x00ff00ff, r0, r1, 0); 647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sxtb16 r0, r1", 0x007f007f, r0, r1, 0); 648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ BFI ------------\n"); 650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* bfi rDst, rSrc, #lsb-in-dst, #number-of-bits-to-copy */ 652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); 653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); 654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #19, #11", 0xFFFFFFFF, r0, r1, 0); 657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #20, #11", 0xFFFFFFFF, r0, r1, 0); 658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #21, #11", 0xFFFFFFFF, r0, r1, 0); 659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #0, #32", 0xFFFFFFFF, r0, r1, 0); 661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #1, #31", 0xFFFFFFFF, r0, r1, 0); 662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #29, #3", 0xFFFFFFFF, r0, r1, 0); 664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #30, #2", 0xFFFFFFFF, r0, r1, 0); 665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfi r0, r1, #31, #1", 0xFFFFFFFF, r0, r1, 0); 666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ BFC ------------\n"); 668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* bfi rDst, #lsb-in-dst, #number-of-bits-to-copy */ 670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #0, #11", 0xAAAAAAAA, r0, r1, 0); 671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #1, #11", 0xAAAAAAAA, r0, r1, 0); 672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #2, #11", 0xAAAAAAAA, r0, r1, 0); 673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #19, #11", 0xFFFFFFFF, r0, r1, 0); 675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #20, #11", 0xFFFFFFFF, r0, r1, 0); 676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #21, #11", 0xFFFFFFFF, r0, r1, 0); 677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #0, #32", 0xFFFFFFFF, r0, r1, 0); 679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #1, #31", 0xFFFFFFFF, r0, r1, 0); 680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #29, #3", 0xFFFFFFFF, r0, r1, 0); 682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #30, #2", 0xFFFFFFFF, r0, r1, 0); 683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("bfc r0, #31, #1", 0xFFFFFFFF, r0, r1, 0); 684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ SBFX ------------\n"); 686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* sbfx rDst, rSrc, #lsb, #width */ 688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #0, #1", 0x00000000, r0, r1, 0); 689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #0, #1", 0x00000001, r0, r1, 0); 690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #1", 0x00000000, r0, r1, 0); 691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #1", 0x00000001, r0, r1, 0); 692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #1", 0x00000002, r0, r1, 0); 693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #1", 0x00000003, r0, r1, 0); 694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #0, #2", 0x00000000, r0, r1, 0); 696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #0, #2", 0x00000001, r0, r1, 0); 697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #2", 0x00000000, r0, r1, 0); 698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #2", 0x00000001, r0, r1, 0); 699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #2", 0x00000002, r0, r1, 0); 700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #2", 0x00000003, r0, r1, 0); 701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); 703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); 704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0); 709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("sbfx r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0); 710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ UBFX ------------\n"); 712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* ubfx rDst, rSrc, #lsb, #width */ 714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #0, #1", 0x00000000, r0, r1, 0); 715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #0, #1", 0x00000001, r0, r1, 0); 716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #1", 0x00000000, r0, r1, 0); 717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #1", 0x00000001, r0, r1, 0); 718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #1", 0x00000002, r0, r1, 0); 719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #1", 0x00000003, r0, r1, 0); 720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #0, #2", 0x00000000, r0, r1, 0); 722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #0, #2", 0x00000001, r0, r1, 0); 723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #2", 0x00000000, r0, r1, 0); 724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #2", 0x00000001, r0, r1, 0); 725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #2", 0x00000002, r0, r1, 0); 726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #2", 0x00000003, r0, r1, 0); 727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0); 729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0); 730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0); 733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0); 735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST2("ubfx r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0); 736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ SMULL{B,T}{B,T} ------------\n"); 738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* SMULxx rD, rN, rM */ 739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("smulbb r0, r1, r2", 0x00030000, 0x00040000, r0, r1, r2, 0); 741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("smulbb r0, r1, r2", 0x00030001, 0x00040002, r0, r1, r2, 0); 742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("smulbb r0, r1, r2", 0x00038001, 0x00047fff, r0, r1, r2, 0); 743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("smulbb r0, r1, r2", 0x00037fff, 0x00047fff, r0, r1, r2, 0); 744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("smulbb r0, r1, r2", 0x0003ffff, 0x0004ffff, r0, r1, r2, 0); 745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ SXTAB ------------\n"); 747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819, 752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819, 754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, 757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, 759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899, 761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899, 763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ UXTAB ------------\n"); 766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819, 771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819, 773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, 776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, 778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899, 780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899, 782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ SXTAH ------------\n"); 785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, 790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, 792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, 795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, 797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, 799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, 801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ UXTAH ------------\n"); 804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, 805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, 807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, 809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, 811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, 814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, 816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, 818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, 820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov r0, r1, r2, 0); 821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ PLD/PLDW (begin) ------------\n"); 823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* These don't have any effect on the architected state, so, 824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov uh, there's no result values to check. Just _do_ some of 825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov them and check Valgrind's instruction decoder eats them up 826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov without complaining. */ 827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov { int alocal; 828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("pld reg +/- imm12 cases\n"); 829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, #128]" : :/*in*/"r"(&alocal) ); 830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, #-128]" : :/*in*/"r"(&alocal) ); 831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [r15, #-128]" : :/*in*/"r"(&alocal) ); 832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // apparently pldw is v7 only 834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov //__asm__ __volatile__( "pldw [%0, #128]" : :/*in*/"r"(&alocal) ); 835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov //__asm__ __volatile__( "pldw [%0, #-128]" : :/*in*/"r"(&alocal) ); 836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov //__asm__ __volatile__( "pldw [r15, #128]" : :/*in*/"r"(&alocal) ); 837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("pld reg +/- shifted reg cases\n"); 839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, %1]" : : /*in*/"r"(&alocal), "r"(0) ); 840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, %1, LSL #1]" : : /*in*/"r"(&alocal), "r"(0) ); 841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, %1, LSR #1]" : : /*in*/"r"(&alocal), "r"(0) ); 842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, %1, ASR #1]" : : /*in*/"r"(&alocal), "r"(0) ); 843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, %1, ROR #1]" : : /*in*/"r"(&alocal), "r"(0) ); 844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( "pld [%0, %1, RRX]" : : /*in*/"r"(&alocal), "r"(0) ); 845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("------------ PLD/PLDW (done) ------------\n"); 847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("------------ RBIT ------------\n"); 849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x00000000, r0, r1, 0); 850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xFFFFFFFF, r0, r1, 0); 851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x80000000, r0, r1, 0); 852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x00000001, r0, r1, 0); 853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x31415927, r0, r1, 0); 854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x14141562, r0, r1, 0); 855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xabe8391f, r0, r1, 0); 856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x9028aa80, r0, r1, 0); 857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xead1fc6d, r0, r1, 0); 858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x35c98c55, r0, r1, 0); 859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x534af1eb, r0, r1, 0); 860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x45511b08, r0, r1, 0); 861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x90077f71, r0, r1, 0); 862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xde8ca84b, r0, r1, 0); 863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xe37a0dda, r0, r1, 0); 864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xe5b83d4b, r0, r1, 0); 865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0xbb6d14ec, r0, r1, 0); 866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rbit r0, r1", 0x68983cc9, r0, r1, 0); 867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("------------ REV ------------\n"); 869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x00000000, r0, r1, 0); 870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xFFFFFFFF, r0, r1, 0); 871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x80000000, r0, r1, 0); 872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x00000001, r0, r1, 0); 873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x31415927, r0, r1, 0); 874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x14141562, r0, r1, 0); 875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xabe8391f, r0, r1, 0); 876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x9028aa80, r0, r1, 0); 877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xead1fc6d, r0, r1, 0); 878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x35c98c55, r0, r1, 0); 879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x534af1eb, r0, r1, 0); 880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x45511b08, r0, r1, 0); 881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x90077f71, r0, r1, 0); 882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xde8ca84b, r0, r1, 0); 883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xe37a0dda, r0, r1, 0); 884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xe5b83d4b, r0, r1, 0); 885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0xbb6d14ec, r0, r1, 0); 886ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev r0, r1", 0x68983cc9, r0, r1, 0); 887ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 888ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("------------ REV16 ------------\n"); 889ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x00000000, r0, r1, 0); 890ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xFFFFFFFF, r0, r1, 0); 891ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x80000000, r0, r1, 0); 892ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x00000001, r0, r1, 0); 893ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x31415927, r0, r1, 0); 894ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x14141562, r0, r1, 0); 895ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xabe8391f, r0, r1, 0); 896ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x9028aa80, r0, r1, 0); 897ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xead1fc6d, r0, r1, 0); 898ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x35c98c55, r0, r1, 0); 899ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x534af1eb, r0, r1, 0); 900ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x45511b08, r0, r1, 0); 901ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x90077f71, r0, r1, 0); 902ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xde8ca84b, r0, r1, 0); 903ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xe37a0dda, r0, r1, 0); 904ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xe5b83d4b, r0, r1, 0); 905ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0xbb6d14ec, r0, r1, 0); 906ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown TESTINST2("rev16 r0, r1", 0x68983cc9, r0, r1, 0); 907ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 908ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("------------ NOP (begin) ------------\n"); 909ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("nop\n"); 910ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __asm__ __volatile__("nop" ::: "memory","cc"); 911ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("nopeq\n"); 912ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __asm__ __volatile__("nopeq" ::: "memory","cc"); 913ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("nopne\n"); 914ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __asm__ __volatile__("nopne" ::: "memory","cc"); 915ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("------------ NOP (end) ------------\n"); 916ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 917663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("------------ SMMUL ------------\n"); 918663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0, 0, r0, r1, r2, 0); 919663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 920663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 921663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 922663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 923663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 924663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); 925663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); 926663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); 927663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); 928663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmul r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); 929663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 930663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0, 0, r0, r1, r2, 0); 931663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0); 932663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0); 933663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0); 934663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0); 935663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0); 936663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0); 937663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0); 938663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0); 939663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0); 940663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST3("smmulr r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0); 941663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 942ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 943ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 944