Unroll slightly to avoid an inner loop jump to loop end on zero crossing
[stack_machine.git] / mul.c
1 #include <stdio.h>
2
3 int main(void) {
4   printf("%08x\n", 0x00001234 * 0x00000056);
5   printf("%08x\n", 0x00006543 * 0x00000021);
6   printf("%08x\n", 0x0000b975 * 0x00000031);
7   printf("%08x\n", 0x0000db97 * 0x00000531);
8
9   printf("%08x\n", 0x00001234 * 0x00000056);
10   printf("%08x\n", 0x00006543 * 0x00000021);
11   printf("%08x\n", (int)0xffffb975 * 0x00000031);
12   printf("%08x\n", (int)0xffffdb97 * 0x00000531);
13
14   printf("%08x\n", -0x00001234 * 0x00000056);
15   printf("%08x\n", -0x00006543 * 0x00000021);
16   printf("%08x\n", -(int)0xffffb975 * 0x00000031);
17   printf("%08x\n", -(int)0xffffdb97 * 0x00000531);
18
19   printf("%08x\n", 0x00001234 * -0x00000056);
20   printf("%08x\n", 0x00006543 * -0x00000021);
21   printf("%08x\n", (int)0xffffb975 * -0x00000031);
22   printf("%08x\n", (int)0xffffdb97 * -0x00000531);
23
24   printf("%08x\n", -0x00001234 * -0x00000056);
25   printf("%08x\n", -0x00006543 * -0x00000021);
26   printf("%08x\n", -(int)0xffffb975 * -0x00000031);
27   printf("%08x\n", -(int)0xffffdb97 * -0x00000531);
28
29   printf("%016lx\n", 0x000000001357db97L * 0x00000000fdb97531L);
30   printf("%016lx\n", 0x000000001357db97L * 0xfffffffffdb97531L);
31   printf("%016lx\n", ~0x000000001357db97L * 0xfffffffffdb97531L);
32   printf("%016lx\n", 0x000000001357db97L * ~0xfffffffffdb97531L);
33   printf("%016lx\n", ~0x000000001357db97L * ~0xfffffffffdb97531L);
34
35   return 0;
36 }