cleanups/fixes for ASM handling
[libfirm] / ir / be / test / LongLong.c
1 /*$ -std=c99 $*/
2 /*
3  * Project:     GCC-firm
4  * File name:   test/Long.c
5  * Purpose:     Long integer test program
6  * Author:      Goetz Lindenmaier
7  * Modified by: Michael Beck
8  * Created:     XX.04.2002
9  * CVS-ID:      $Id$
10  * Copyright:   (c) 2002 Universitaet Karlsruhe
11  * Licence:
12  */
13
14 #include <stdio.h>
15
16 static int hide_int (int i) {
17     return i;
18 }
19
20 int main (int argc, char *argv[]) {
21     long long lmax, lmin, lmin1, limax, limin1, limin, l1, l;
22     int i;
23
24     printf("LongLong.c\n");
25
26     lmax   =  9223372036854775807LL; /* java.lang.Long.MAX_VALUE */
27     lmin1  = -9223372036854775807LL; /* java.lang.Long.MIN_VALUE */
28     lmin   = -9223372036854775808LL; /* java.lang.Long.MIN_VALUE */
29     limax  =  2147483647L;          /* java.lang.Integer.MAX_VALUE */
30     limin1 = -2147483647L;          /* java.lang.Integer.MAX_VALUE-1 */
31     limin  = -2147483648L;          /* java.lang.Integer.MIN_VALUE */
32
33     printf(" Long long values allowed in C:\n");
34     /* So far, these values are not representable by libfirm. */
35     printf("  LongLong.MAX_VALUE   ( 9223372036854775807LL) = %lld\n", lmax);
36     printf("  LongLong.MIN_VALUE-1 (-9223372036854775807LL) = %lld\n", lmin1);
37     printf("  LongLong.MIN_VALUE   (-9223372036854775808LL) = %lld\n", lmin);
38
39     printf("\n Extreme integer values represented as long long:\n");
40     printf("  Long.MAX_VALUE   ( 2147483647L) = %lld\n", limax);
41     printf("  Long.MIN_VALUE-1 (-2147483647L) = %lld\n", limin1);
42     printf("  Long.MIN_VALUE   (-2147483648L) = %lld\n", limin);
43
44     printf("\n Computations exceeding these barriers:\n");
45     i =  2147483647;
46     //i =  2;
47     l =  hide_int(i) + 3LL;
48     printf("  long long l = (int i = 2147483647) + 3LL (2147483650): %lld\n", l);
49     l = 2 * l;
50     printf("  long long l = 2 * l (4294967300): %lld\n", l);
51     l = l * -1;
52     printf("  long long l = l * -1 (-4294967300): %lld\n", l);
53     l = l / 3;
54     printf("  long long l = l / 3 (-1431655766): %lld\n", l);
55     l = l % 1000000000;
56     printf("  long long l = l %% 1000000000 (-431655766): %lld\n", l);
57
58     return 0;
59 }