1663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <stdio.h> 2663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 3663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengunsigned int mem[] = { 4663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0x121f1e1f, 0, 3, -1, 5663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 6663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 7663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c 8663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}; 9663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengunsigned int mem1[] = { 11663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0, 0, 0, 0, 12663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0, 0, 0, 0, 13663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0xffffffff, 0, 0, 0, 14663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 0, 0, 0, 0 15663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}; 16663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 17663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengunsigned int mem2[] = { 18663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng0x0000e680, 0x00010700, 0x0000e7dc, 0x0000b0d0, 19663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng0x2ab05fd0, 0x0000b6a0, 0x0000be80, 0x0000de10, 20663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng0x0000df20, 0x2ab05fe0, 0x0000dfd0, 0x00010300 21663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}; 22663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 23663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// sb $t0, 0($t1) 24663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINST1(instruction, RTval, offset, RT, RS) \ 25663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \ 26663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng unsigned int out; \ 27663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng __asm__ volatile( \ 28663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "move $" #RS", %1\n\t" \ 29663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "li $" #RT", " #RTval"\n\t" \ 30663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng instruction "\n\t" \ 31663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "lw %0, "#offset"($"#RS")\n\t" \ 32663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : "=&r" (out) \ 33663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : "r" (mem1), "r" (RTval) \ 34663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : #RT, "cc", "memory" \ 35663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ); \ 36663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("%s :: RTval: 0x%x, out: 0x%x\n", \ 37663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng instruction, RTval, out); \ 38663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng out = 0; \ 39663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng __asm__ volatile( \ 40663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "move $" #RS", %1\n\t" \ 41663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "li $" #RT", " #RTval"\n\t" \ 42663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng instruction "\n\t" \ 43663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "lw %0, "#offset"($"#RS")\n\t" \ 44663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : "=&r" (out) \ 45663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : "r" (mem), "r" (RTval) \ 46663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : #RT, "cc", "memory" \ 47663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ); \ 48663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("%s :: RTval: 0x%x, out: 0x%x\n", \ 49663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng instruction, RTval, out); \ 50663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 51663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 52663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// swl $t0, 3($t1) 53663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// swr $t0, 0($t1) 54663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSTsw(RTval, offset, RT, RS) \ 55663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \ 56663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng unsigned int out; \ 57663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng __asm__ volatile( \ 58663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "move $" #RS", %1\n\t" \ 59663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "addiu $"#RS", $"#RS", "#offset"\n\t" \ 60663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "li $" #RT", " #RTval"\n\t" \ 61663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "swl $t0, 3($t1) \n\t" \ 62663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "swr $t0, 0($t1) \n\t" \ 63663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng "lw %0, 0($"#RS")\n\t" \ 64663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : "=&r" (out) \ 65663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : "r" (mem2), "r" (RTval) \ 66663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng : #RT, #RS, "cc", "memory" \ 67663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ); \ 68663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("swl $t0, 3($t1)\nswr $t0, 0($t1)\n :: RTval: 0x%x, out: 0x%x\n", \ 69663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng RTval, out); \ 70663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 71663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 72436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovvoid ppMem(unsigned int* m, int len) 73663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ 74663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int i; 75663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("MEM1:\n"); 76663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (i = 0; i < len; i=i+4) 77663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng { 78436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov printf("0x%x, 0x%x, 0x%x, 0x%x\n", m[i], m[i+1], m[i+2], m[i+3]); 79436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i] = 0; 80436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i+1] = 0; 81436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i+2] = 0; 82436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i+3] = 0; 83436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov if (i == 2) 84663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng { 85436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i] = 0xffffffff; 86436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i+1] = 0; 87436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i+2] = 0; 88436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[i+3] = 0; 89663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 90663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 91663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 92663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 93436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovvoid ppMem1(unsigned int* m, int len) 94663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ 95663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int i; 96663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("MEM:\n"); 97663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (i = 0; i < len; i=i+4) 98663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng { 99436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov printf("0x%x, 0x%x, 0x%x, 0x%x\n", m[i], m[i+1], m[i+2], m[i+3]); 100663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 101436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[0] = 0x121f1e1f; 102436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[1] = 0; 103436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[2] = 3; 104436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[3] = -1; 105436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[4] = 0x232f2e2f; 106436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[5] = 0x242c2b2b; 107436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[6] = 0x252a2e2b; 108436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[7] = 0x262d2d2a; 109436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[8] = 0x3f343f3e; 110436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[9] = 0x3e353d3c; 111436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[10] = 0x363a3c3b; 112436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[11] = 0x3b373b3a; 113436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[12] = 0x454f4e45; 114436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[13] = 0x4e464d46; 115436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[14] = 0x474d474c; 116436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[15] = 0x4a484a4c; 117663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 118663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 119436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovvoid ppMem0(unsigned int* m, int len) 120663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ 121663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int i; 122663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("MEM:\n"); 123663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (i = 0; i < len; i=i+4) 124663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng { 125436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov printf("0x%x, 0x%x, 0x%x, 0x%x\n", m[i], m[i+1], m[i+2], m[i+3]); 126663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 127663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 128436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[0] = 0x0000e680; 129436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[1] = 0x00010700; 130436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[2] = 0x0000e7dc; 131436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[3] = 0x0000b0d0; 132436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[4] = 0x2ab05fd0; 133436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[5] = 0x0000b6a0; 134436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[6] = 0x0000be80; 135436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[7] = 0x0000de10; 136436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[8] = 0x0000df20; 137436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[9] = 0x2ab05fe0; 138436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[10] = 0x0000dfd0; 139436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov m[11] = 0x00010300; 140663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 141663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 142663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengint main() 143663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ 144663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("sb\n"); 145663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 0, 0, t0, t1); 146663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 0x31415927, 0, t0, t1); 147663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 148663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 0x80000000, 0, t0, t1); 149663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 2($t1)", 0x80000000, 2, t0, t1); 150663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 151663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 152663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 8($t1)", -1, 8, t0, t1); 153663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 0x31415927, 0, t0, t1); 154663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 155663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 655, 0, t0, t1); 156663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", -655, 0, t0, t1); 157663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 15, 0, t0, t1); 158663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 1, 0, t0, t1); 159663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 0($t1)", 53, 0, t0, t1); 160663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 2($t1)", 0xffffffff, 2, t0, t1); 161663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 2($t1)", 0xffffffff, 2, t0, t1); 162663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 32($t1)", 0xffffffff, 32, t0, t1); 163663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 36($t1)", 0xffffffff, 36, t0, t1); 164663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 40($t1)", 0x31415927, 40, t0, t1); 165663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 166663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 48($t1)", 0x80000000, 48, t0, t1); 167663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sb $t0, 52($t1)", 655, 52, t0, t1); 168663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 169663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 170663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 171663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("sh\n"); 172663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 0, 0, t0, t1); 173663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 0x31415927, 0, t0, t1); 174663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 175663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 0x80000000, 0, t0, t1); 176663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 2($t1)", 0x80000000, 2, t0, t1); 177663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 178663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 179663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 8($t1)", -1, 8, t0, t1); 180663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 0x31415927, 0, t0, t1); 181663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 182663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 655, 0, t0, t1); 183663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", -655, 0, t0, t1); 184663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 15, 0, t0, t1); 185663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 1, 0, t0, t1); 186663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 0($t1)", 53, 0, t0, t1); 187663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 2($t1)", 0xffffffff, 2, t0, t1); 188663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 2($t1)", 0xffffffff, 2, t0, t1); 189663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 32($t1)", 0xffffffff, 32, t0, t1); 190663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 36($t1)", 0xffffffff, 36, t0, t1); 191663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 40($t1)", 0x31415927, 40, t0, t1); 192663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 193663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 48($t1)", 0x80000000, 48, t0, t1); 194663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sh $t0, 52($t1)", 655, 52, t0, t1); 195663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 196663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 197663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 198663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("sw\n"); 199663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 0, 0, t0, t1); 200663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 0x31415927, 0, t0, t1); 201663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 202663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 0x80000000, 0, t0, t1); 203663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 2($t1)", 0x80000000, 2, t0, t1); 204663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 205663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 206663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 8($t1)", -1, 8, t0, t1); 207663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 0x31415927, 0, t0, t1); 208663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 209663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 655, 0, t0, t1); 210663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", -655, 0, t0, t1); 211663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 15, 0, t0, t1); 212663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 1, 0, t0, t1); 213663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 0($t1)", 53, 0, t0, t1); 214663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 215663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 216663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 32($t1)", 0xffffffff, 32, t0, t1); 217663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 36($t1)", 0xffffffff, 36, t0, t1); 218663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 40($t1)", 0x31415927, 40, t0, t1); 219663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 220663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 48($t1)", 0x80000000, 48, t0, t1); 221663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("sw $t0, 52($t1)", 655, 52, t0, t1); 222663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 223663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 224663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 225663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("swl\n"); 226663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 0, 0, t0, t1); 227663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 0x31415927, 0, t0, t1); 228663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 229663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 0x80000000, 0, t0, t1); 230663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 2($t1)", 0x80000000, 2, t0, t1); 231663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 232663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 233663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 8($t1)", -1, 8, t0, t1); 234663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 0x31415927, 0, t0, t1); 235663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 236663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 655, 0, t0, t1); 237663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", -655, 0, t0, t1); 238663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 15, 0, t0, t1); 239663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 1, 0, t0, t1); 240663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 0($t1)", 53, 0, t0, t1); 241663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 2($t1)", 0xffffffff, 2, t0, t1); 242663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 2($t1)", 0xffffffff, 2, t0, t1); 243663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 32($t1)", 0xffffffff, 32, t0, t1); 244663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 36($t1)", 0xffffffff, 36, t0, t1); 245663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 40($t1)", 0x31415927, 40, t0, t1); 246663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 247663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 48($t1)", 0x80000000, 48, t0, t1); 248663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swl $t0, 52($t1)", 655, 52, t0, t1); 249663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 250663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 251663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 252663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("swr\n"); 253663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 0, 0, t0, t1); 254663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 0x31415927, 0, t0, t1); 255663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 256663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 0x80000000, 0, t0, t1); 257663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 2($t1)", 0x80000000, 2, t0, t1); 258663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 259663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 260663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 8($t1)", -1, 8, t0, t1); 261663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 0x31415927, 0, t0, t1); 262663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 263663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 655, 0, t0, t1); 264663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", -655, 0, t0, t1); 265663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 15, 0, t0, t1); 266663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 1, 0, t0, t1); 267663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 0($t1)", 53, 0, t0, t1); 268663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 2($t1)", 0xffffffff, 2, t0, t1); 269663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 2($t1)", 0xffffffff, 2, t0, t1); 270663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 32($t1)", 0xffffffff, 32, t0, t1); 271663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 36($t1)", 0xffffffff, 36, t0, t1); 272663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 40($t1)", 0x31415927, 40, t0, t1); 273663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 274663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 48($t1)", 0x80000000, 48, t0, t1); 275663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("swr $t0, 52($t1)", 655, 52, t0, t1); 276663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 277663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 278663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 279663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("ulw\n"); 280663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 0, 0, t0, t1); 281663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 0x31415927, 0, t0, t1); 282663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 283663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 0x80000000, 0, t0, t1); 284663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 2($t1)", 0x80000000, 2, t0, t1); 285663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 286663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 287663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 8($t1)", -1, 8, t0, t1); 288663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 0x31415927, 0, t0, t1); 289663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 290663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 655, 0, t0, t1); 291663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", -655, 0, t0, t1); 292663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 15, 0, t0, t1); 293663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 1, 0, t0, t1); 294663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 0($t1)", 53, 0, t0, t1); 295663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 296663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 297663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 32($t1)", 0xffffffff, 32, t0, t1); 298663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 36($t1)", 0xffffffff, 36, t0, t1); 299663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 40($t1)", 0x31415927, 40, t0, t1); 300663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 301663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 48($t1)", 0x80000000, 48, t0, t1); 302663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("ulw $t0, 52($t1)", 655, 52, t0, t1); 303663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 304663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 305663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 306663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("usw\n"); 307663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 0, 0, t0, t1); 308663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 0x31415927, 0, t0, t1); 309663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 0x7fffffff, 0, t0, t1); 310663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 0x80000000, 0, t0, t1); 311663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 2($t1)", 0x80000000, 2, t0, t1); 312663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 6($t1)", 0x7fffffff, 6, t0, t1); 313663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 10($t1)", 0x7fffffff, 10, t0, t1); 314663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 8($t1)", -1, 8, t0, t1); 315663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 0x31415927, 0, t0, t1); 316663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 0x0dd00000, 0, t0, t1); 317663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 655, 0, t0, t1); 318663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", -655, 0, t0, t1); 319663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 15, 0, t0, t1); 320663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 1, 0, t0, t1); 321663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 0($t1)", 53, 0, t0, t1); 322663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 323663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 2($t1)", 0xffffffff, 2, t0, t1); 324663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 32($t1)", 0xffffffff, 32, t0, t1); 325663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 36($t1)", 0xffffffff, 36, t0, t1); 326663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 40($t1)", 0x31415927, 40, t0, t1); 327663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 44($t1)", 0x7fffffff, 44, t0, t1); 328663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 48($t1)", 0x80000000, 48, t0, t1); 329663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINST1("usw $t0, 52($t1)", 655, 52, t0, t1); 330663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem(mem1, 16); 331663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem1(mem, 16); 332663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 333663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng printf("swl $t0, 3($t0)\nswr $t0, 0($t0)\n"); 334663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x4853000, 0, t0, t1); 335663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 336663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x4853000, 4, t0, t1); 337663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 338663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x4863700, 8, t0, t1); 339663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 340663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x48aedd0, 12, t0, t1); 341663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 342663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x2aaee700, 16, t0, t1); 343663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 344663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x2aaee7ff, 20, t0, t1); 345663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 346663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x2aaeffff, 24, t0, t1); 347663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 348663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x4863700, 28, t0, t1); 349663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 350663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng TESTINSTsw(0x2aaee700, 32, t0, t1); 351663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng ppMem0(mem2, 12); 352663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng return 0; 353663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 354