1e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#include <stdio.h> 2e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 3e584b0e99b31e6d257cc58c630cd6067550539e3sewardjunsigned int mem[] = { 4e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0x121f1e1f, 0, 3, -1, 5e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 6e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 7e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c 8e584b0e99b31e6d257cc58c630cd6067550539e3sewardj}; 9e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 10e584b0e99b31e6d257cc58c630cd6067550539e3sewardjunsigned int mem1[] = { 11e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0, 0, 0, 0, 12e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0, 0, 0, 0, 13e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0xffffffff, 0, 0, 0, 14e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 0, 0, 0, 0 15e584b0e99b31e6d257cc58c630cd6067550539e3sewardj}; 16e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 17e584b0e99b31e6d257cc58c630cd6067550539e3sewardjunsigned int mem2[] = { 18e584b0e99b31e6d257cc58c630cd6067550539e3sewardj0x0000e680, 0x00010700, 0x0000e7dc, 0x0000b0d0, 19e584b0e99b31e6d257cc58c630cd6067550539e3sewardj0x2ab05fd0, 0x0000b6a0, 0x0000be80, 0x0000de10, 20e584b0e99b31e6d257cc58c630cd6067550539e3sewardj0x0000df20, 0x2ab05fe0, 0x0000dfd0, 0x00010300 21e584b0e99b31e6d257cc58c630cd6067550539e3sewardj}; 22e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 23e584b0e99b31e6d257cc58c630cd6067550539e3sewardj// sb $t0, 0($t1) 24e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#define TESTINST1(instruction, RTval, offset, RT, RS) \ 25e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{ \ 26e584b0e99b31e6d257cc58c630cd6067550539e3sewardj unsigned int out; \ 27e584b0e99b31e6d257cc58c630cd6067550539e3sewardj __asm__ volatile( \ 28e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "move $" #RS", %1\n\t" \ 29e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "li $" #RT", " #RTval"\n\t" \ 30e584b0e99b31e6d257cc58c630cd6067550539e3sewardj instruction "\n\t" \ 31e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "lw %0, "#offset"($"#RS")\n\t" \ 32e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : "=&r" (out) \ 33e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : "r" (mem1), "r" (RTval) \ 34e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : #RT, "cc", "memory" \ 35e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ); \ 36e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("%s :: RTval: 0x%x, out: 0x%x\n", \ 37e584b0e99b31e6d257cc58c630cd6067550539e3sewardj instruction, RTval, out); \ 38e584b0e99b31e6d257cc58c630cd6067550539e3sewardj out = 0; \ 39e584b0e99b31e6d257cc58c630cd6067550539e3sewardj __asm__ volatile( \ 40e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "move $" #RS", %1\n\t" \ 41e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "li $" #RT", " #RTval"\n\t" \ 42e584b0e99b31e6d257cc58c630cd6067550539e3sewardj instruction "\n\t" \ 43e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "lw %0, "#offset"($"#RS")\n\t" \ 44e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : "=&r" (out) \ 45e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : "r" (mem), "r" (RTval) \ 46e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : #RT, "cc", "memory" \ 47e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ); \ 48e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("%s :: RTval: 0x%x, out: 0x%x\n", \ 49e584b0e99b31e6d257cc58c630cd6067550539e3sewardj instruction, RTval, out); \ 50e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} 51e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 52e584b0e99b31e6d257cc58c630cd6067550539e3sewardj// swl $t0, 3($t1) 53e584b0e99b31e6d257cc58c630cd6067550539e3sewardj// swr $t0, 0($t1) 54e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#define TESTINSTsw(RTval, offset, RT, RS) \ 55e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{ \ 56e584b0e99b31e6d257cc58c630cd6067550539e3sewardj unsigned int out; \ 57e584b0e99b31e6d257cc58c630cd6067550539e3sewardj __asm__ volatile( \ 58e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "move $" #RS", %1\n\t" \ 59e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "addiu $"#RS", $"#RS", "#offset"\n\t" \ 60e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "li $" #RT", " #RTval"\n\t" \ 61e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "swl $t0, 3($t1) \n\t" \ 62e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "swr $t0, 0($t1) \n\t" \ 63e584b0e99b31e6d257cc58c630cd6067550539e3sewardj "lw %0, 0($"#RS")\n\t" \ 64e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : "=&r" (out) \ 65e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : "r" (mem2), "r" (RTval) \ 66e584b0e99b31e6d257cc58c630cd6067550539e3sewardj : #RT, #RS, "cc", "memory" \ 67e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ); \ 68e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("swl $t0, 3($t1)\nswr $t0, 0($t1)\n :: RTval: 0x%x, out: 0x%x\n", \ 69e584b0e99b31e6d257cc58c630cd6067550539e3sewardj RTval, out); \ 70e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} 71e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 72751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanjvoid ppMem(unsigned int* m, int len) 73e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{ 74e584b0e99b31e6d257cc58c630cd6067550539e3sewardj int i; 75e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("MEM1:\n"); 76e584b0e99b31e6d257cc58c630cd6067550539e3sewardj for (i = 0; i < len; i=i+4) 77e584b0e99b31e6d257cc58c630cd6067550539e3sewardj { 78751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj printf("0x%x, 0x%x, 0x%x, 0x%x\n", m[i], m[i+1], m[i+2], m[i+3]); 79751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i] = 0; 80751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i+1] = 0; 81751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i+2] = 0; 82751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i+3] = 0; 8334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj if (i == 2) 84e584b0e99b31e6d257cc58c630cd6067550539e3sewardj { 85751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i] = 0xffffffff; 86751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i+1] = 0; 87751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i+2] = 0; 88751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[i+3] = 0; 89e584b0e99b31e6d257cc58c630cd6067550539e3sewardj } 90e584b0e99b31e6d257cc58c630cd6067550539e3sewardj } 91e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} 92e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 93751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanjvoid ppMem1(unsigned int* m, int len) 94e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{ 95e584b0e99b31e6d257cc58c630cd6067550539e3sewardj int i; 96e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("MEM:\n"); 97e584b0e99b31e6d257cc58c630cd6067550539e3sewardj for (i = 0; i < len; i=i+4) 98e584b0e99b31e6d257cc58c630cd6067550539e3sewardj { 99751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj printf("0x%x, 0x%x, 0x%x, 0x%x\n", m[i], m[i+1], m[i+2], m[i+3]); 100e584b0e99b31e6d257cc58c630cd6067550539e3sewardj } 101751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[0] = 0x121f1e1f; 102751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[1] = 0; 103751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[2] = 3; 104751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[3] = -1; 105751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[4] = 0x232f2e2f; 106751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[5] = 0x242c2b2b; 107751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[6] = 0x252a2e2b; 108751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[7] = 0x262d2d2a; 109751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[8] = 0x3f343f3e; 110751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[9] = 0x3e353d3c; 111751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[10] = 0x363a3c3b; 112751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[11] = 0x3b373b3a; 113751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[12] = 0x454f4e45; 114751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[13] = 0x4e464d46; 115751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[14] = 0x474d474c; 116751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[15] = 0x4a484a4c; 117e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} 118e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 119751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanjvoid ppMem0(unsigned int* m, int len) 120e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{ 121e584b0e99b31e6d257cc58c630cd6067550539e3sewardj int i; 122e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("MEM:\n"); 123e584b0e99b31e6d257cc58c630cd6067550539e3sewardj for (i = 0; i < len; i=i+4) 124e584b0e99b31e6d257cc58c630cd6067550539e3sewardj { 125751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj printf("0x%x, 0x%x, 0x%x, 0x%x\n", m[i], m[i+1], m[i+2], m[i+3]); 126e584b0e99b31e6d257cc58c630cd6067550539e3sewardj } 127e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 128751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[0] = 0x0000e680; 129751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[1] = 0x00010700; 130751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[2] = 0x0000e7dc; 131751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[3] = 0x0000b0d0; 132751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[4] = 0x2ab05fd0; 133751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[5] = 0x0000b6a0; 134751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[6] = 0x0000be80; 135751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[7] = 0x0000de10; 136751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[8] = 0x0000df20; 137751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[9] = 0x2ab05fe0; 138751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[10] = 0x0000dfd0; 139751c1e6e1657cbafe30baaf36ad9bd011c3a179bdejanj m[11] = 0x00010300; 140e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} 141e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 142e584b0e99b31e6d257cc58c630cd6067550539e3sewardjint main() 143e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{ 144e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("sb\n"); 145e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 0, 0, t0, t1); 146e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 0x31415927, 0, t0, t1); 147e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 148e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 0x80000000, 0, t0, t1); 149e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 2($t1)", 0x80000000, 2, t0, t1); 150e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 151e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 152e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 8($t1)", -1, 8, t0, t1); 153e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 0x31415927, 0, t0, t1); 154e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 155e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 655, 0, t0, t1); 156e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", -655, 0, t0, t1); 157e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 15, 0, t0, t1); 158e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 1, 0, t0, t1); 159e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 0($t1)", 53, 0, t0, t1); 160e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 2($t1)", 0xffffffff, 2, t0, t1); 161e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 2($t1)", 0xffffffff, 2, t0, t1); 162e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 32($t1)", 0xffffffff, 32, t0, t1); 163e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 36($t1)", 0xffffffff, 36, t0, t1); 164e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 40($t1)", 0x31415927, 40, t0, t1); 165e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 166e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 48($t1)", 0x80000000, 48, t0, t1); 167e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sb $t0, 52($t1)", 655, 52, t0, t1); 168e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 169e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 170e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 171e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("sh\n"); 172e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 0, 0, t0, t1); 173e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 0x31415927, 0, t0, t1); 174e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 175e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 0x80000000, 0, t0, t1); 176e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 2($t1)", 0x80000000, 2, t0, t1); 177e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 178e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 179e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 8($t1)", -1, 8, t0, t1); 180e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 0x31415927, 0, t0, t1); 181e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 182e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 655, 0, t0, t1); 183e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", -655, 0, t0, t1); 184e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 15, 0, t0, t1); 185e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 1, 0, t0, t1); 186e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 0($t1)", 53, 0, t0, t1); 187e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 2($t1)", 0xffffffff, 2, t0, t1); 188e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 2($t1)", 0xffffffff, 2, t0, t1); 189e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 32($t1)", 0xffffffff, 32, t0, t1); 190e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 36($t1)", 0xffffffff, 36, t0, t1); 191e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 40($t1)", 0x31415927, 40, t0, t1); 192e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 193e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 48($t1)", 0x80000000, 48, t0, t1); 194e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sh $t0, 52($t1)", 655, 52, t0, t1); 195e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 196e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 197e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 198e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("sw\n"); 199e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 0, 0, t0, t1); 200e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 0x31415927, 0, t0, t1); 201e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 202e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 0x80000000, 0, t0, t1); 203e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 2($t1)", 0x80000000, 2, t0, t1); 204e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 205e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 206e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 8($t1)", -1, 8, t0, t1); 207e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 0x31415927, 0, t0, t1); 208e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 209e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 655, 0, t0, t1); 210e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", -655, 0, t0, t1); 211e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 15, 0, t0, t1); 212e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 1, 0, t0, t1); 213e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 0($t1)", 53, 0, t0, t1); 214e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 215e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 216e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 32($t1)", 0xffffffff, 32, t0, t1); 217e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 36($t1)", 0xffffffff, 36, t0, t1); 218e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 40($t1)", 0x31415927, 40, t0, t1); 219e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 220e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 48($t1)", 0x80000000, 48, t0, t1); 221e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("sw $t0, 52($t1)", 655, 52, t0, t1); 222e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 223e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 224e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 225e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("swl\n"); 226e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 0, 0, t0, t1); 227e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 0x31415927, 0, t0, t1); 228e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 229e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 0x80000000, 0, t0, t1); 230e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 2($t1)", 0x80000000, 2, t0, t1); 231e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 232e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 233e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 8($t1)", -1, 8, t0, t1); 234e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 0x31415927, 0, t0, t1); 235e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 236e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 655, 0, t0, t1); 237e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", -655, 0, t0, t1); 238e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 15, 0, t0, t1); 239e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 1, 0, t0, t1); 240e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 0($t1)", 53, 0, t0, t1); 241e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 2($t1)", 0xffffffff, 2, t0, t1); 242e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 2($t1)", 0xffffffff, 2, t0, t1); 243e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 32($t1)", 0xffffffff, 32, t0, t1); 244e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 36($t1)", 0xffffffff, 36, t0, t1); 245e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 40($t1)", 0x31415927, 40, t0, t1); 246e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 247e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 48($t1)", 0x80000000, 48, t0, t1); 248e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swl $t0, 52($t1)", 655, 52, t0, t1); 249e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 250e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 251e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 252e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("swr\n"); 253e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 0, 0, t0, t1); 254e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 0x31415927, 0, t0, t1); 255e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 256e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 0x80000000, 0, t0, t1); 257e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 2($t1)", 0x80000000, 2, t0, t1); 258e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 259e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 260e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 8($t1)", -1, 8, t0, t1); 261e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 0x31415927, 0, t0, t1); 262e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 263e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 655, 0, t0, t1); 264e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", -655, 0, t0, t1); 265e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 15, 0, t0, t1); 266e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 1, 0, t0, t1); 267e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 0($t1)", 53, 0, t0, t1); 268e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 2($t1)", 0xffffffff, 2, t0, t1); 269e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 2($t1)", 0xffffffff, 2, t0, t1); 270e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 32($t1)", 0xffffffff, 32, t0, t1); 271e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 36($t1)", 0xffffffff, 36, t0, t1); 272e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 40($t1)", 0x31415927, 40, t0, t1); 273e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 274e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 48($t1)", 0x80000000, 48, t0, t1); 275e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("swr $t0, 52($t1)", 655, 52, t0, t1); 276e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 277e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 278e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 279e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("ulw\n"); 280e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 0, 0, t0, t1); 281e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 0x31415927, 0, t0, t1); 282e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 283e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 0x80000000, 0, t0, t1); 284e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 2($t1)", 0x80000000, 2, t0, t1); 285e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 286e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 287e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 8($t1)", -1, 8, t0, t1); 288e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 0x31415927, 0, t0, t1); 289e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 290e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 655, 0, t0, t1); 291e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", -655, 0, t0, t1); 292e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 15, 0, t0, t1); 293e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 1, 0, t0, t1); 294e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 0($t1)", 53, 0, t0, t1); 295e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 296e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 297e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 32($t1)", 0xffffffff, 32, t0, t1); 298e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 36($t1)", 0xffffffff, 36, t0, t1); 299e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 40($t1)", 0x31415927, 40, t0, t1); 300e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 301e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 48($t1)", 0x80000000, 48, t0, t1); 302e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("ulw $t0, 52($t1)", 655, 52, t0, t1); 303e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 304e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 305e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 306e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("usw\n"); 307e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 0, 0, t0, t1); 308e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 0x31415927, 0, t0, t1); 309e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 310e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 0x80000000, 0, t0, t1); 311e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 2($t1)", 0x80000000, 2, t0, t1); 312e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 313e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 314e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 8($t1)", -1, 8, t0, t1); 315e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 0x31415927, 0, t0, t1); 316e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 317e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 655, 0, t0, t1); 318e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", -655, 0, t0, t1); 319e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 15, 0, t0, t1); 320e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 1, 0, t0, t1); 321e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 0($t1)", 53, 0, t0, t1); 322e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 323e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 324e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 32($t1)", 0xffffffff, 32, t0, t1); 325e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 36($t1)", 0xffffffff, 36, t0, t1); 326e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 40($t1)", 0x31415927, 40, t0, t1); 327e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 328e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 48($t1)", 0x80000000, 48, t0, t1); 329e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINST1("usw $t0, 52($t1)", 655, 52, t0, t1); 330e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem(mem1, 16); 331e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem1(mem, 16); 332e584b0e99b31e6d257cc58c630cd6067550539e3sewardj 333e584b0e99b31e6d257cc58c630cd6067550539e3sewardj printf("swl $t0, 3($t0)\nswr $t0, 0($t0)\n"); 334e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x4853000, 0, t0, t1); 335e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 336e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x4853000, 4, t0, t1); 337e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 338e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x4863700, 8, t0, t1); 339e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 340e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x48aedd0, 12, t0, t1); 341e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 342e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x2aaee700, 16, t0, t1); 343e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 344e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x2aaee7ff, 20, t0, t1); 345e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 346e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x2aaeffff, 24, t0, t1); 347e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 348e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x4863700, 28, t0, t1); 349e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 350e584b0e99b31e6d257cc58c630cd6067550539e3sewardj TESTINSTsw(0x2aaee700, 32, t0, t1); 351e584b0e99b31e6d257cc58c630cd6067550539e3sewardj ppMem0(mem2, 12); 352e584b0e99b31e6d257cc58c630cd6067550539e3sewardj return 0; 353e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} 354