diff options
Diffstat (limited to 'none/tests/s390x/add.c')
-rw-r--r-- | none/tests/s390x/add.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/none/tests/s390x/add.c b/none/tests/s390x/add.c new file mode 100644 index 00000000..01e87a35 --- /dev/null +++ b/none/tests/s390x/add.c @@ -0,0 +1,66 @@ +#include <stdio.h> +#include "add.h" + +static void do_imm_insns(void) +{ + immsweep(ahi, 0, 0); + immsweep(ahi, -1, 0); + immsweep(ahi, -32768, 0); + immsweep(ahi, 32767, 0); + immsweep(aghi, 0, 0); + immsweep(aghi, -1, 0); + immsweep(aghi, -32768, 0); + immsweep(aghi, 32767, 0); +} + + +static void do_regmem_insns(unsigned long s2) +{ + memsweep(a, s2, 0); + memsweep(ah, s2, 0); + memsweep(ag, s2, 0); + memsweep(agf, s2, 0); + memsweep(al, s2, 0); + memsweep(alg, s2, 0); + memsweep(agf, s2, 0); + memsweep(algf, s2, 0); + regsweep(ar, s2, 0); + regsweep(agr, s2, 0); + regsweep(agfr, s2, 0); + regsweep(alr, s2, 0); + regsweep(algr, s2, 0); + regsweep(algfr, s2, 0); + memsweep(alc, s2, 0); + memsweep(alcg, s2, 0); + regsweep(alcr, s2, 0); + regsweep(alcgr, s2, 0); + memsweep(alc, s2, 1); + memsweep(alcg, s2, 1); + regsweep(alcr, s2, 1); + regsweep(alcgr, s2, 1); + memsweep(ahy, s2, 0); + memsweep(ay, s2, 0); + memsweep(aly, s2, 0); +} + +int main() +{ + do_regmem_insns(0x0ul); + do_regmem_insns(0x7ffffffffffffffful); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xfffffffffffffffful); + do_regmem_insns(0x7fffffff00000000ul); + do_regmem_insns(0x8000000000000000ul); + do_regmem_insns(0xffffffff00000000ul); + do_regmem_insns(0x000000007ffffffful); + do_regmem_insns(0x0000000080000000ul); + do_regmem_insns(0x00000000fffffffful); + do_regmem_insns(0x000000000000fffful); + do_regmem_insns(0x0000000000007ffful); + do_regmem_insns(0x0000000000008000ul); + do_regmem_insns(0x000000000000fffful); + + do_imm_insns(); + + return 0; +} |