/test/tests.c
C | 4105 lines | 3077 code | 960 blank | 68 comment | 84 complexity | da3e32b1e548277369befce9a7478c91 MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- #include "syn68k_public.h"
- #include "driver.h"
- #include "setup.h"
- #include <stdio.h>
- #define TEST(f, cc_mask, size, changes_memory, max_calls) void f (uint16 *code)
- #define MEM (US_TO_SYN68K (&mem[0]))
- #define MEMEND (US_TO_SYN68K (&mem[MEM_SIZE - 1]))
- #define MEMMID (US_TO_SYN68K (&mem[(MEM_SIZE) / 2]))
- #define GNUC_LOSES_WITH_EXPONENTIAL_GROWTH
- #ifdef GNUC_LOSES_WITH_EXPONENTIAL_GROWTH
- static inline int
- MASK (const char *s, int c)
- {
- int i, ret;
-
- for (i = 0, ret = 0; i < 16; i++)
- ret |= ((s[i] == c) << (15 - i));
- return ret;
- }
- #else
- #define MASK(s,c) (( (s[0 ] == (c)) << 15) | ((s[1 ] == (c)) << 14) \
- | ((s[2 ] == (c)) << 13) | ((s[3 ] == (c)) << 12) \
- | ((s[4 ] == (c)) << 11) | ((s[5 ] == (c)) << 10) \
- | ((s[6 ] == (c)) << 9) | ((s[7 ] == (c)) << 8) \
- | ((s[8 ] == (c)) << 7) | ((s[9 ] == (c)) << 6) \
- | ((s[10] == (c)) << 5) | ((s[11] == (c)) << 4) \
- | ((s[12] == (c)) << 3) | ((s[13] == (c)) << 2) \
- | ((s[14] == (c)) << 1) | ((s[15] == (c))))
- #endif
- #define B(s) MASK(s, '1')
- #define R(s) (B(s) | (MASK(s, 'r') & randint (0, 65535)))
- #define NOP_OPCODE 0x4E71
- #define RANDOM_SIZE() (randint (0, 2) << 6)
- /* The WRITE4 macro does not write out values in big-endian! Rather, it
- * writes out the words in big endian format and leaves the bytes within
- * each word in whatever format. This is because we always byte swap
- * words later, if appropriate.
- */
- #define WRITE4(c,n) \
- { \
- uint32 tmp = (n); \
- code[c] = tmp >> 16; \
- code[(c) + 1] = tmp; \
- }
- TEST (unpk_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1000rrr110000rrr");
- code[1] = randnum ();
- }
- TEST (unpk_mem, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("1000rrr110001rrr");
- code[1] = randnum ();
- }
- TEST (unlk, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- uint8 *p;
- for (p = mem; p < mem + MEM_SIZE; )
- {
- uint32 addr = randint (MEM + 50, MEMEND - 50) & ~1;
- *p++ = addr >> 24;
- *p++ = addr >> 16;
- *p++ = addr >> 8;
- *p++ = addr;
- }
- /* NOTE: "unlk a7" wedges my 68040 NeXT, so I am skipping that test here.
- * "unlk a7" works on a 68030 NeXT, so it may be worth modifying this
- * code to test that case when we run it on a non-68040 based machine.
- */
- /* WARNING! Assumes that mem is aligned % 4 */
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 3);
- code[0] = R ("0100111001011000") | randint (0, 6);
- }
- TEST (movewl_ind_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("001rrrr000000rrr") /* Randomly either word or long. */
- | (randint (2, 4) << 6) /* Random amode [2, 4] */
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- }
- TEST (divsl_ll_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int divisor_reg = randint (0, 7);
- do { EM_DREG (divisor_reg) = randnum ();} while (EM_DREG (divisor_reg) == 0);
- code[0] = B ("0100110001000000") | divisor_reg;
- code[1] = R ("0rrr1r0000000rrr");
- }
- TEST (divsl_ll_ind, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- uint16 *p;
- int i;
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- for (i = 0, p = (uint16 *)mem; i < MEM_SIZE / sizeof (uint16); i++)
- *p++ = SWAPUW_IFLE (randint (1, 65535));
- code[0] = R ("0100110001000rrr") | (randint (2, 4) << 3);
- code[1] = R ("0rrr1r0000000rrr");
- }
- TEST (divsl_ll_absl, ALL_CCS, 4, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- uint16 *p;
- int i;
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- for (i = 0, p = (uint16 *)mem; i < MEM_SIZE / sizeof (uint16); i++)
- *p++ = SWAPUW_IFLE (randint (1, 65535));
- code[0] = B ("0100110001111001");
- code[1] = R ("0rrr1r0000000rrr");
- WRITE4 (2, randint (MEM + 50, MEMEND - 50) & ~1);
- }
- TEST (lea_pc_ind_preix, ALL_CCS, 50, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size = randint (2, 3), od_size = randint (1, 3);
- int scale = randint (0, 3);
- randomize_mem ();
- randomize_regs (0, 15, 0, 8 >> scale, (4 >> scale) - 1);
- /* Put out some initial NOPs */
- for (i = 0; i < 4; i++)
- code[i] = NOP_OPCODE; /* nop */
- /* Output the main opcode. */
- code[i] = R ("0100rrr111111011");
- code[i + 1] = (R ("rrrrr0010r000000") | (scale << 9)
- | (bd_size << 4) | od_size);
- i += 2;
- /* Output the base displacement. */
- switch (bd_size) {
- case 2:
- code[i] = (5 + (od_size - 1)) * 2 + (randint (0, 5) * 4);
- i++;
- break;
- case 3:
- WRITE4 (i, (6 + (od_size - 1)) * 2 + (randint (0, 5) * 4));
- i += 2;
- break;
- }
- /* Output outer displacement (if any). */
- switch (od_size) {
- case 1:
- break;
- case 2:
- code[i] = randint (-20, 20);
- i++;
- break;
- case 3:
- WRITE4 (i, randint (-20, 20));
- i += 2;
- break;
- }
- /* Skip over array of addresses. */
- code[i] = 0x4EF9; /* jmp absl */
- WRITE4 (i + 1, (unsigned long) (code - (MEMORY_OFFSET / 2) + 50));
-
- for (i += 3; i < 49; i += 2)
- WRITE4 (i, randint (MEM + 50, MEMEND - 50));
- }
- TEST (lea_pc_ind_postix, ALL_CCS, 50, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size = randint (2, 3), od_size = randint (1, 3);
- int scale = randint (0, 3);
- randomize_mem ();
- randomize_regs (0, 15, -6, 6, 0);
- /* Put out some initial NOPs */
- for (i = 0; i < 4; i++)
- code[i] = NOP_OPCODE; /* nop */
- /* Output the main opcode. */
- code[i] = R ("0100rrr111111011");
- code[i + 1] = (R ("rrrrr0010r000100") | (scale << 9)
- | (bd_size << 4) | od_size);
- i += 2;
- /* Output the base displacement. */
- switch (bd_size) {
- case 2:
- code[i] = (5 + (od_size - 1)) * 2 + (randint (0, 5) * 4);
- i++;
- break;
- case 3:
- WRITE4 (i, (6 + (od_size - 1)) * 2 + (randint (0, 5) * 4));
- i += 2;
- break;
- }
- /* Output outer displacement (if any). */
- switch (od_size) {
- case 1:
- break;
- case 2:
- code[i] = randint (-20, 20);
- i++;
- break;
- case 3:
- WRITE4 (i, randint (-20, 20));
- i += 2;
- break;
- }
- /* Skip over array of addresses. */
- code[i] = 0x4EF9; /* jmp absl */
- WRITE4 (i + 1, (unsigned long) (code - (MEMORY_OFFSET / 2) + 50));
-
- for (i += 3; i < 49; i += 2)
- WRITE4 (i, randint (MEM + 100, MEMEND - 100));
- }
- TEST (moveb_pc_ind_preix_dreg, ALL_CCS, 50, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size = randint (2, 3), od_size = randint (1, 3);
- int scale = randint (0, 3);
- randomize_mem ();
- randomize_regs (0, 15, 0, 8 >> scale, (4 >> scale) - 1);
- /* Put out some initial NOPs */
- for (i = 0; i < 4; i++)
- code[i] = NOP_OPCODE; /* nop */
- /* Output the main opcode. */
- code[i] = R ("0001rrr000111011");
- code[i + 1] = (R ("rrrrr0010r000000") | (scale << 9)
- | (bd_size << 4) | od_size);
- i += 2;
- /* Output the base displacement. */
- switch (bd_size) {
- case 2:
- code[i] = (5 + (od_size - 1)) * 2 + (randint (0, 5) * 4);
- i++;
- break;
- case 3:
- WRITE4 (i, (6 + (od_size - 1)) * 2 + (randint (0, 5) * 4));
- i += 2;
- break;
- }
- /* Output outer displacement (if any). */
- switch (od_size) {
- case 1:
- break;
- case 2:
- code[i] = randint (-20, 20);
- i++;
- break;
- case 3:
- WRITE4 (i, randint (-20, 20));
- i += 2;
- break;
- }
- /* Skip over array of addresses. */
- code[i] = 0x4EF9; /* jmp absl */
- WRITE4 (i + 1, (unsigned long) (code - (MEMORY_OFFSET / 2) + 50));
-
- for (i += 3; i < 49; i += 2)
- WRITE4 (i, randint (MEM + 50, MEMEND - 50));
- }
- TEST (moveb_pc_ind_postix_dreg, ALL_CCS, 50, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size = randint (2, 3), od_size = randint (1, 3);
- int scale = randint (0, 3);
- randomize_mem ();
- randomize_regs (0, 15, -6, 6, 0);
- /* Put out some initial NOPs */
- for (i = 0; i < 4; i++)
- code[i] = NOP_OPCODE; /* nop */
- /* Output the main opcode. */
- code[i] = R ("0001rrr000111011");
- code[i + 1] = (R ("rrrrr0010r000100") | (scale << 9)
- | (bd_size << 4) | od_size);
- i += 2;
- /* Output the base displacement. */
- switch (bd_size) {
- case 2:
- code[i] = (5 + (od_size - 1)) * 2 + (randint (0, 5) * 4);
- i++;
- break;
- case 3:
- WRITE4 (i, (6 + (od_size - 1)) * 2 + (randint (0, 5) * 4));
- i += 2;
- break;
- }
- /* Output outer displacement (if any). */
- switch (od_size) {
- case 1:
- break;
- case 2:
- code[i] = randint (-20, 20);
- i++;
- break;
- case 3:
- WRITE4 (i, randint (-20, 20));
- i += 2;
- break;
- }
- /* Skip over array of addresses. */
- code[i] = 0x4EF9; /* jmp absl */
- WRITE4 (i + 1, (unsigned long) (code - (MEMORY_OFFSET / 2) + 50));
-
- for (i += 3; i < 49; i += 2)
- WRITE4 (i, randint (MEM + 100, MEMEND - 100));
- }
- TEST (moveb_pcd16_dreg, ALL_CCS, 6, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- code[0] = NOP_OPCODE; /* nop */
- code[1] = NOP_OPCODE; /* nop */
- code[2] = R ("0001rrr000111010");
- code[3] = randint (-4, 4);
- code[4] = NOP_OPCODE; /* nop */
- code[5] = NOP_OPCODE; /* nop */
- }
- TEST (movewl_pcd16_dreg, ALL_CCS, 6, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- code[0] = NOP_OPCODE; /* nop */
- code[1] = NOP_OPCODE; /* nop */
- code[2] = R ("001rrrr000111010");
- code[3] = randint (-4, 4) & ~1;
- code[4] = NOP_OPCODE; /* nop */
- code[5] = NOP_OPCODE; /* nop */
- }
- TEST (moveb_pcd8_dreg, ALL_CCS, 40, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int long_ix = randint (0, 1); /* Are we using a index reg as a long? */
- randomize_mem ();
- randomize_regs (0, 15, -2, 2, 0);
- /* If we have a word sized index, blow away high word of all regs so
- * that we know the high word is being properly ignored.
- */
- if (!long_ix)
- {
- for (i = 0; i < 16; i++)
- cpu_state.regs[i].ul.n = ((cpu_state.regs[i].ul.n & 0xFFFF)
- | (randnum () << 16));
- }
- for (i = 0; i < 20; i++)
- code[i] = NOP_OPCODE; /* nop */
- code[i] = R ("0001rrr000111011");
- code[i + 1] = (R ("rrrr0rr000000000") | (long_ix << 11)
- | (randint (-4, 4) & 0xFF));
- for (i += 2; i < 40; i++)
- code[i] = NOP_OPCODE; /* nop */
- }
- TEST (movewl_pcd8_dreg, ALL_CCS, 40, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- randomize_mem ();
- randomize_regs (0, 15, -2, 2, 1);
- for (i = 0; i < 20; i++)
- code[i] = NOP_OPCODE; /* nop */
- code[i] = R ("001rrrr000111011");
- code[i + 1] = R ("rrrrrrr000000000") | (randint (-4, 4) & 0xFE);
- for (i += 2; i < 40; i++)
- code[i] = NOP_OPCODE; /* nop */
- }
- TEST (moveb_pc_ind_ix_dreg, ALL_CCS, 40, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size = randint (1, 3);
- randomize_mem ();
- randomize_regs (0, 15, -2, 2, 0);
- for (i = 0; i < 20; i++)
- code[i] = NOP_OPCODE; /* nop */
- code[i] = R ("0001rrr000111011");
- code[i + 1] = R ("rrrrrrr10r000000") | (bd_size << 4);
- switch (bd_size) {
- case 1:
- i += 2;
- break;
- case 2:
- code[i + 2] = randint (-4, 4);
- i += 3;
- break;
- case 3:
- WRITE4 (i + 2, randint (-4, 4));
- i += 4;
- break;
- }
- for (; i < 40; i++)
- code[i] = NOP_OPCODE; /* nop */
- }
- TEST (movewl_pc_ind_ix_dreg, ALL_CCS, 40, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size = randint (1, 3);
- randomize_mem ();
- randomize_regs (0, 15, -2, 2, 1);
- for (i = 0; i < 20; i++)
- code[i] = NOP_OPCODE; /* nop */
- code[i] = R ("001rrrr000111011");
- code[i + 1] = R ("rrrrrrr10r000000") | (bd_size << 4);
- switch (bd_size) {
- case 1:
- i += 2;
- break;
- case 2:
- code[i + 2] = randint (-4, 4) & ~1;
- i += 3;
- break;
- case 3:
- WRITE4 (i + 2, randint (-4, 4) & ~1);
- i += 4;
- break;
- }
- for (; i < 40; i++)
- code[i] = NOP_OPCODE; /* nop */
- }
- TEST (lea_ind_preix, ALL_CCS, 50, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size, od_size = randint (1, 3);
- int scale = randint (0, 3);
- int base_address_reg = randint (0, 7);
- int base_suppress = randint (0, 1);
- int ixreg_specifier;
- randomize_mem ();
- randomize_regs (0, 15, 0, 8 >> scale, (4 >> scale) - 1);
- /* Put out some initial NOPs */
- for (i = 0; i < 4; i++)
- code[i] = NOP_OPCODE; /* nop */
- /* Determine the index reg. Make sure it's not the same as our base reg. */
- do
- {
- ixreg_specifier = randint (0, 15);
- }
- while ((ixreg_specifier & 8) && (ixreg_specifier & 7) == base_address_reg);
- if (base_suppress)
- bd_size = 3;
- else
- bd_size = randint (2, 3);
- /* Output the main opcode. */
- code[i] = R ("0100rrr111110000") | base_address_reg;
- code[i + 1] = (R ("0000r0010r000000") | (ixreg_specifier << 12)
- | (base_suppress << 7) | (scale << 9) | (bd_size << 4)
- | od_size);
- i += 2;
- /* Put the address of a block of random memory into our base register. */
- cpu_state.regs[8 + base_address_reg].ul.n
- = randint (MEM + 32, MEM + 128) & ~1;
- /* Output the base displacement. */
- if (!base_suppress)
- {
- /* Since we aren't suppressing the base, make this a small offset. */
- switch (bd_size) {
- case 2:
- code[i] = (5 + (od_size - 1)) * 2 + (randint (0, 5) * 4);
- i++;
- break;
- case 3:
- WRITE4 (i, (6 + (od_size - 1)) * 2 + (randint (0, 5) * 4));
- i += 2;
- break;
- }
- }
- else /* base_suppress */
- {
- /* Since we're suppressing the base, we must make it larger and
- * point directly to the base of the addresses in which we
- * are interested.
- */
- WRITE4 (i, MEM + 32 + (randint (0, 50) * 4));
- i += 2;
- }
- /* Output outer displacement (if any). */
- switch (od_size) {
- case 1:
- break;
- case 2:
- code[i] = randint (-20, 20);
- i++;
- break;
- case 3:
- WRITE4 (i, randint (-20, 20));
- i += 2;
- break;
- }
- /* Skip over array of addresses. */
- code[i] = 0x4EF9; /* jmp absl */
- WRITE4 (i + 1, (unsigned long) (code - (MEMORY_OFFSET / 2) + 50));
-
- for (i += 3; i < 49; i += 2)
- WRITE4 (i, randint (MEM + 50, MEMEND - 50));
- }
- TEST (lea_ind_postix, ALL_CCS, 50, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- int i;
- int bd_size, od_size = randint (1, 3);
- int scale = randint (0, 3);
- int base_address_reg = randint (0, 7);
- int base_suppress = randint (0, 1);
- int ixreg_specifier = randint (0, 15);
- randomize_mem ();
- randomize_regs (0, 15, -1024, 1024, 1);
- /* Put out some initial NOPs */
- for (i = 0; i < 4; i++)
- code[i] = NOP_OPCODE; /* nop */
- if (base_suppress)
- bd_size = 3;
- else
- bd_size = randint (2, 3);
- /* Output the main opcode. */
- code[i] = R ("0100rrr111110000") | base_address_reg;
- code[i + 1] = (R ("0000r0010r000100") | (ixreg_specifier << 12)
- | (base_suppress << 7) | (scale << 9) | (bd_size << 4)
- | od_size);
- i += 2;
- /* Put the address of a block of random memory into our base register. */
- cpu_state.regs[8 + base_address_reg].ul.n
- = randint (MEM + 32, MEMEND - 128) & ~1;
- /* Output the base displacement. */
- if (!base_suppress)
- {
- /* Since we aren't suppressing the base, make this a small offset. */
- switch (bd_size) {
- case 2:
- code[i] = (5 + (od_size - 1)) * 2 + (randint (0, 5) * 4);
- i++;
- break;
- case 3:
- WRITE4 (i, (6 + (od_size - 1)) * 2 + (randint (0, 5) * 4));
- i += 2;
- break;
- }
- }
- else /* base_suppress */
- {
- /* Since we're suppressing the base, we must make it larger and
- * point directly to the base of the addresses in which we
- * are interested.
- */
- WRITE4 (i, MEM + 32 + (randint (0, 50) * 4));
- i += 2;
- }
- /* Output outer displacement (if any). */
- switch (od_size) {
- case 1:
- break;
- case 2:
- code[i] = randint (-20, 20);
- i++;
- break;
- case 3:
- WRITE4 (i, randint (-20, 20));
- i += 2;
- break;
- }
- /* Skip over array of addresses. */
- code[i] = 0x4EF9; /* jmp absl */
- WRITE4 (i + 1, (unsigned long) (code - (MEMORY_OFFSET / 2) + 50));
-
- for (i += 3; i < 49; i += 2)
- WRITE4 (i, randint (MEM + 50, MEMEND - 50));
- }
- TEST (add_absl_dreg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- code[0] = R ("1101rrr000111001") | RANDOM_SIZE ();
- WRITE4 (1, randint (MEM + 8, MEMEND - 8) & ~1);
- }
- TEST (abcd_reg, C_BIT | Z_BIT | X_BIT, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1100rrr100000rrr");
- }
- TEST (abcd_mem, C_BIT | Z_BIT | X_BIT, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("1100rrr100001rrr");
- }
- TEST (addb_dreg_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr000000rrr");
- }
- TEST (addw_reg_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr00100rrrr");
- }
- TEST (addl_reg_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr01000rrrr");
- }
- TEST (add_d16_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1101rrr000101rrr") | RANDOM_SIZE ();
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (addb_const_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr000111100");
- code[1] = randint (0, 65535);
- }
- TEST (addw_const_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr001111100");
- code[1] = randint (0, 65535);
- }
- TEST (add_dreg_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("1101rrr100000rrr")
- | RANDOM_SIZE ()
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- }
- TEST (add_ind_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("1101rrr000000rrr")
- | RANDOM_SIZE ()
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- }
- TEST (addl_const_dreg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1101rrr010111100");
- WRITE4 (1, randnum ());
- }
- TEST (add_dreg_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1101rrr100101rrr") | RANDOM_SIZE ();
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (add_dreg_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1101rrr100111001") | RANDOM_SIZE ();
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (addaw_reg_areg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr01100rrrr");
- }
- TEST (addal_reg_areg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr11100rrrr");
- }
- TEST (adda_ind_areg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("1101rrrr11000rrr") /* Random size. */
- | (randint (2, 4) << 3)); /* Random amode [2, 4]; */
- }
- TEST (adda_d16_areg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1101rrrr11101rrr"); /* Random size. */
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (adda_absl_areg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1101rrrr11111001"); /* Random size. */
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (addaw_const_areg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr011111100");
- code[1] = randint (0, 65535);
- }
- TEST (addal_const_areg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr111111100");
- code[1] = randint (0, 65535);
- code[2] = randint (0, 65535);
- }
- TEST (addibw_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("000001100r000rrr"); /* Randomly either byte or word */
- code[1] = randnum ();
- }
- TEST (addil_dreg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000011010000rrr");
- WRITE4 (1, randnum ());
- }
- TEST (addibw_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("000001100r000rrr") /* Randomly either byte or word. */
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- code[1] = randnum ();
- }
- TEST (addil_ind, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("0000011010000rrr")
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- WRITE4 (1, randnum ());
- }
- TEST (addibw_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("000001100r101rrr"); /* Randomly either byte or word. */
- code[1] = randnum ();
- code[2] = randint (-290, 290) & ~1;
- }
- TEST (addil_d16, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("0000011010101rrr");
- WRITE4 (1, randnum ());
- code[3] = randint (-290, 290) & ~1;
- }
- TEST (addibw_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("000001100r111001"); /* Randomly either byte or word. */
- code[1] = randnum ();
- WRITE4 (2, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (addil_absl, ALL_CCS, 5, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000011010111001"); /* Randomly either byte or word. */
- WRITE4 (1, randnum ());
- WRITE4 (3, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (addq_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0101rrr000000rrr") | RANDOM_SIZE ();
- }
- TEST (addq_areg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0101rrr000001rrr") | (randint (1, 2) << 6); /* word or long */
- }
- TEST (addq_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("0101rrr000000rrr")
- | RANDOM_SIZE ()
- | (randint (2, 4) << 3)); /* random amode [2, 4] */
- }
- TEST (addq_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("0101rrr000101rrr") | RANDOM_SIZE ();
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (addq_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0101rrr000111001") | RANDOM_SIZE ();
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (addx_reg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1101rrr100000rrr") | RANDOM_SIZE ();
- }
- TEST (addx_mem, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("1101rrr100001rrr") | RANDOM_SIZE ();
- }
- TEST (and_dreg_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1100rrr000000rrr") | RANDOM_SIZE ();
- }
- TEST (and_ind_dreg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("1100rrr000000rrr")
- | RANDOM_SIZE ()
- | (randint (2, 4) << 3));
- }
- TEST (and_d16_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1100rrr000101rrr") | RANDOM_SIZE ();
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (and_absl_dreg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- code[0] = R ("1100rrr000111001") | RANDOM_SIZE ();
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (andbw_const_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1100rrr00r111100"); /* randomly byte or word */
- code[1] = randnum ();
- }
- TEST (andl_const_dreg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1100rrr010111100");
- WRITE4 (1, randnum ());
- }
- TEST (and_dreg_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("1100rrr100000rrr")
- | RANDOM_SIZE ()
- | (randint (2, 4) << 3));
- }
- TEST (and_dreg_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1100rrr100101rrr") | RANDOM_SIZE ();
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (and_dreg_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1100rrr100111001") | RANDOM_SIZE ();
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (andibw_dreg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("000000100r000rrr");
- code[1] = randnum ();
- }
- TEST (andil_dreg, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000001010000rrr");
- WRITE4 (1, randnum ());
- }
- TEST (andibw_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("000000100r000rrr") | (randint (2, 4) << 3);
- code[1] = randnum ();
- }
- TEST (andil_ind, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("0000001010000rrr") | (randint (2, 4) << 3);
- WRITE4 (1, randnum ());
- }
- TEST (andibw_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("000000100r101rrr"); /* randomly either byte or word. */
- code[1] = randnum ();
- code[2] = randint (-290, 290) & ~1;
- }
- TEST (andil_d16, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("0000001010101rrr");
- WRITE4 (1, randnum ());
- code[3] = randint (-290, 290) & ~1;
- }
- TEST (andibw_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("000000100r111001");
- code[1] = randnum ();
- WRITE4 (2, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (andil_absl, ALL_CCS, 5, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = B ("0000001010111001");
- WRITE4 (1, randnum ());
- WRITE4 (3, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (andi_to_ccr, ALL_CCS, 2, WONT_CHANGE_MEMORY, 32)
- {
- code[0] = B ("0000001000111100");
- code[1] = times_called;
- }
- TEST (asl_dx_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr100100rrr") | RANDOM_SIZE ();
- }
- TEST (asl_const_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr100000rrr") | RANDOM_SIZE ();
- }
- TEST (asl_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("1110000111000rrr") | (randint (2, 4) << 3);
- }
- TEST (asl_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1110000111101rrr");
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (asl_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = B ("1110000111111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (asr_dx_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr000100rrr") | RANDOM_SIZE ();
- }
- TEST (asr_const_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr000000rrr") | RANDOM_SIZE ();
- }
- TEST (asr_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("1110000011000rrr") | (randint (2, 4) << 3);
- }
- TEST (asr_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1110000011101rrr");
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (asr_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = B ("1110000011111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (lsl_dx_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr100101rrr") | RANDOM_SIZE ();
- }
- TEST (lsl_const_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr100001rrr") | RANDOM_SIZE ();
- }
- TEST (lsl_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("1110001111000rrr") | (randint (2, 4) << 3);
- }
- TEST (lsl_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1110001111101rrr");
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (lsl_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = B ("1110001111111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- TEST (lsr_dx_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr000101rrr") | RANDOM_SIZE ();
- }
- TEST (lsr_const_dy, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110rrr000001rrr") | RANDOM_SIZE ();
- }
- TEST (lsr_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("1110001011000rrr") | (randint (2, 4) << 3);
- }
- TEST (lsr_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 1);
- code[0] = R ("1110001011101rrr");
- code[1] = randint (-290, 290) & ~1;
- }
- TEST (lsr_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = B ("1110001011111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4) & ~1);
- }
- #define BCC_TEST_B(bits) \
- code[0] = 0x6004 | ((bits) << 8); /* b?? * + 4 */ \
- code[1] = B ("0111000000000000"); /* moveq #0,d0 */ \
- code[2] = 0x6002; /* bra * + 2 */ \
- code[3] = B ("0111000000000001"); /* moveq #1,d0 */ \
- code[4] = NOP_OPCODE /* nop */
- TEST (bra_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x0); }
- /* 0x1 is reserved for bsr */
- TEST (bhi_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x2); }
- TEST (bls_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x3); }
- TEST (bcc_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x4); }
- TEST (bcs_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x5); }
- TEST (bne_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x6); }
- TEST (beq_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x7); }
- TEST (bvc_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x8); }
- TEST (bvs_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0x9); }
- TEST (bpl_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0xA); }
- TEST (bmi_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0xB); }
- TEST (bge_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0xC); }
- TEST (blt_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0xD); }
- TEST (bgt_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0xE); }
- TEST (ble_b, ALL_CCS, 5, WONT_CHANGE_MEMORY, 2) { BCC_TEST_B (0xF); }
- #undef BCC_TEST_B
- #define BCC_TEST_W(bits) \
- code[0] = 0x6000 | ((bits) << 8); /* b?? * + 8 */ \
- code[1] = 0x0006; /* (offset) */ \
- code[2] = B ("0111000000000000"); /* moveq #0,d0 */ \
- code[3] = 0x6002; /* bra * + 2 */ \
- code[4] = B ("0111000000000001"); /* moveq #1,d0 */ \
- code[5] = NOP_OPCODE /* nop */
- TEST (bra_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x0); }
- /* 0x1 is reserved for bsr */
- TEST (bhi_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x2); }
- TEST (bls_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x3); }
- TEST (bcc_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x4); }
- TEST (bcs_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x5); }
- TEST (bne_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x6); }
- TEST (beq_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x7); }
- TEST (bvc_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x8); }
- TEST (bvs_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0x9); }
- TEST (bpl_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0xA); }
- TEST (bmi_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0xB); }
- TEST (bge_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0xC); }
- TEST (blt_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0xD); }
- TEST (bgt_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0xE); }
- TEST (ble_w, ALL_CCS, 6, WONT_CHANGE_MEMORY, 2) { BCC_TEST_W (0xF); }
- #undef BCC_TEST_W
- #define BCC_TEST_L(bits) \
- code[0] = 0x60FF | ((bits) << 8); /* b?? * + 8 */ \
- code[1] = 0x0000; /* (offset hi) */ \
- code[2] = 0x0008; /* (offset lo) */ \
- code[3] = B ("0111000000000000"); /* moveq #0,d0 */ \
- code[4] = 0x6002; /* bra * + 2 */ \
- code[5] = B ("0111000000000001"); /* moveq #1,d0 */ \
- code[6] = NOP_OPCODE /* nop */
- TEST (bra_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x0); }
- /* 0x1 is reserved for bsr */
- TEST (bhi_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x2); }
- TEST (bls_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x3); }
- TEST (bcc_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x4); }
- TEST (bcs_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x5); }
- TEST (bne_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x6); }
- TEST (beq_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x7); }
- TEST (bvc_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x8); }
- TEST (bvs_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0x9); }
- TEST (bpl_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0xA); }
- TEST (bmi_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0xB); }
- TEST (bge_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0xC); }
- TEST (blt_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0xD); }
- TEST (bgt_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0xE); }
- TEST (ble_l, ALL_CCS, 7, WONT_CHANGE_MEMORY, 2) { BCC_TEST_L (0xF); }
- #undef BCC_TEST_L
- TEST (bchg_reg_reg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr101000rrr");
- }
- TEST (bchg_const_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100001000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bchg_reg_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000rrr101000rrr") | (randint (2, 4) << 3);
- }
- TEST (bchg_const_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000100001000rrr") | (randint (2, 4) << 3);
- code[1] = randint (0, 65535);
- }
- TEST (bchg_reg_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000rrr101101rrr");
- code[1] = randint (-290, 290);
- }
- TEST (bchg_const_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000100001101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-290, 290);
- }
- TEST (bchg_reg_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr101111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4));
- }
- TEST (bchg_const_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100001111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 4, MEMEND - 4));
- }
- TEST (bclr_reg_reg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr110000rrr");
- }
- TEST (bclr_const_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100010000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bclr_reg_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000rrr110000rrr") | (randint (2, 4) << 3);
- }
- TEST (bclr_const_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000100010000rrr") | (randint (2, 4) << 3);
- code[1] = randint (0, 65535);
- }
- TEST (bclr_reg_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000rrr110101rrr");
- code[1] = randint (-290, 290);
- }
- TEST (bclr_const_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000100010101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-290, 290);
- }
- TEST (bclr_reg_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr110111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4));
- }
- TEST (bclr_const_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100010111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 4, MEMEND - 4));
- }
- TEST (bset_reg_reg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr111000rrr");
- }
- TEST (bset_const_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100011000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bset_reg_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000rrr111000rrr") | (randint (2, 4) << 3);
- }
- TEST (bset_const_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000100011000rrr") | (randint (2, 4) << 3);
- code[1] = randint (0, 65535);
- }
- TEST (bset_reg_d16, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000rrr111101rrr");
- code[1] = randint (-290, 290);
- }
- TEST (bset_const_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000100011101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-290, 290);
- }
- TEST (bset_reg_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr111111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4));
- }
- TEST (bset_const_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100011111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 4, MEMEND - 4));
- }
- TEST (btst_reg_reg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000rrr100000rrr");
- }
- TEST (btst_const_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0000100000000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (btst_reg_ind, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000rrr100000rrr") | (randint (2, 4) << 3);
- }
- TEST (btst_const_ind, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0000100000000rrr") | (randint (2, 4) << 3);
- code[1] = randint (0, 65535);
- }
- TEST (btst_reg_d16, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000rrr100101rrr");
- code[1] = randint (-290, 290);
- }
- TEST (btst_const_d16, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0);
- code[0] = R ("0000100000101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-290, 290);
- }
- TEST (btst_reg_absl, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- code[0] = R ("0000rrr100111001");
- WRITE4 (1, randint (MEM + 4, MEMEND - 4));
- }
- TEST (btst_const_absl, ALL_CCS, 4, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- code[0] = B ("0000100000111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 4, MEMEND - 4));
- }
- TEST (bfchg_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110101011000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfchg_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110101011010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfchg_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110101011101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfchg_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110101011111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bfclr_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110110011000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfclr_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110110011010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfclr_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110110011101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfclr_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110110011111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bfset_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110111011000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfset_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110111011010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfset_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110111011101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfset_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110111011111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bftst_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110100011000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bftst_ind, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110100011010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bftst_d16, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110100011101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bftst_absl, ALL_CCS, 4, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110100011111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bfexts_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110101111000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfexts_ind, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110101111010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfexts_d16, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110101111101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfexts_absl, ALL_CCS, 4, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110101111111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bfextu_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110100111000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfextu_ind, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110100111010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfextu_d16, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110100111101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfextu_absl, ALL_CCS, 4, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110100111111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bfffo_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110110111000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfffo_ind, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110110111010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfffo_d16, ALL_CCS, 3, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_mem ();
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110110111101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfffo_absl, ALL_CCS, 4, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_mem ();
- code[0] = B ("1110110111111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bfins_reg, ALL_CCS, 2, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("1110111111000rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfins_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -250 * 8, 250 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110111111010rrr");
- code[1] = randint (0, 65535);
- }
- TEST (bfins_d16, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- randomize_regs (8, 8 + 7, MEM + 300, MEMEND - 300, 0); /* Base */
- code[0] = R ("1110111111101rrr");
- code[1] = randint (0, 65535);
- code[2] = randint (-130, 130);
- }
- TEST (bfins_absl, ALL_CCS, 4, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7, -130 * 8, 130 * 8, 0); /* Offset/width */
- code[0] = B ("1110111111111001");
- code[1] = randint (0, 65535);
- WRITE4 (2, randint (MEM + 200, MEMEND - 200));
- }
- TEST (bsr_b, ALL_CCS, 6, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (15, 15, MEM + 50, MEMEND - 50, 1); /* random sp */
- code[0] = 0x6104; /* bsr * + 4 */
- code[1] = 0x5280; /* addql #1,d0 */
- code[2] = 0x6004; /* bra * + 4 */
- code[3] = R ("01110000rrrrrrrr"); /* moveq #<random>,d0 */
- code[4] = 0x4E75; /* rts */
- code[5] = NOP_OPCODE; /* nop */
- }
- TEST (bsr_w, ALL_CCS, 7, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (15, 15, MEM + 50, MEMEND - 50, 1); /* random sp */
- code[0] = 0x6100; /* bsr * + 6 */
- code[1] = 0x0006;
- code[2] = 0x5280; /* addql #1,d0 */
- code[3] = 0x6004; /* bra * + 4 */
- code[4] = R ("01110000rrrrrrrr"); /* moveq #<random>,d0 */
- code[5] = 0x4E75; /* rts */
- code[6] = NOP_OPCODE; /* nop */
- }
- TEST (bsr_l, ALL_CCS, 8, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (15, 15, MEM + 50, MEMEND - 50, 1); /* random sp */
- code[0] = 0x61FF; /* bsr * + 8 */
- code[1] = 0x0000;
- code[2] = 0x0008;
- code[3] = 0x5280; /* addql #1,d0 */
- code[4] = 0x6004; /* bra * + 4 */
- code[5] = R ("01110000rrrrrrrr"); /* moveq #<random>,d0 */
- code[6] = 0x4E75; /* rts */
- code[7] = NOP_OPCODE; /* nop */
- }
- TEST (cas_ind, ALL_CCS, 2, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (7, 7 + 8, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("0000100011000rrr")
- | (randint (1, 3) << 9) /* Random size */
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- code[1] = randint (0, 65535);
- }
- TEST (cas2_areg, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (7, 7 + 8, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("000011r011111100"); /* Randomly either word or long. */
- code[1] = R ("1rrr000rrr000rrr");
- code[2] = R ("1rrr000rrr000rrr");
- }
- TEST (cas2_anyreg, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (0, 7 + 8, MEM + 50, MEMEND - 50, 1);
- code[0] = R ("000011r011111100"); /* Randomly either word or long. */
- code[1] = R ("rrrr000rrr000rrr");
- code[2] = R ("rrrr000rrr000rrr");
- }
- TEST (clr_reg, ALL_CCS, 1, WONT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = R ("0100001000000rrr") | RANDOM_SIZE ();
- }
- TEST (clrb_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (7, 7 + 8, MEM + 50, MEMEND - 50, 0);
- code[0] = R ("0100001000000rrr") | (randint (2, 4) << 3);
- }
- TEST (clrwl_ind, ALL_CCS, 1, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- randomize_regs (7, 7 + 8, MEM + 50, MEMEND - 50, 1);
- code[0] = (R ("0100001000000rrr")
- | (randint (1, 2) << 6) /* Randomly either word or long. */
- | (randint (2, 4) << 3)); /* Random amode [2, 4] */
- }
- TEST (clrb_absl, ALL_CCS, 3, MIGHT_CHANGE_MEMORY, NO_LIMIT)
- {
- code[0] = B ("0100001000111001");
- WRITE4 (1, randint…
Large files files are truncated, but you can click here to view the full file