unsafe mode for float to int conversion
[libfirm] / ir / be / test / conv.c
1 int convs16_s32( short t) __attribute__((noinline));
2 short convs32_s16( int t) __attribute__((noinline));
3
4 int convu16_s32( unsigned short t) __attribute__((noinline));
5 short convu32_s16( unsigned int t) __attribute__((noinline));
6
7 unsigned int convs16_u32( short t) __attribute__((noinline));
8 unsigned short convs32_u16( int t) __attribute__((noinline));
9
10 unsigned int convu16_u32( unsigned short t) __attribute__((noinline));
11 unsigned short convu32_u16( unsigned int t) __attribute__((noinline));
12
13 int convs16_s32( short t)
14 {
15   return t;
16 }
17
18 short convs32_s16( int t)
19 {
20   return t;
21 }
22
23 int convu16_s32( unsigned short t)
24 {
25   return t;
26 }
27
28 short convu32_s16( unsigned int t)
29 {
30   return t;
31 }
32
33 unsigned int convs16_u32( short t)
34 {
35   return t;
36 }
37
38 unsigned short convs32_u16( int t)
39 {
40   return t;
41 }
42
43 unsigned int convu16_u32( unsigned short t)
44 {
45   return t;
46 }
47
48 unsigned short convu32_u16( unsigned int t)
49 {
50   return t;
51 }
52
53 int main()
54 {
55   short s = 0x8000;
56   int i = 0xF0008000;
57   int a;
58
59   printf(" %d -> %d = %d\n", s, i, convs16_s32( s));
60   printf(" %d -> %d = %d\n", i, s, convs32_s16( i));
61
62   printf(" %d -> %d = %d\n", i, s, convu32_s16( i));
63   printf(" %d -> %d = %d\n", i, s, convu32_s16( i));
64
65   printf(" %d -> %d = %d\n", i, s, convs32_u16( i));
66   printf(" %d -> %d = %d\n", i, s, convs32_u16( i));
67
68   printf(" %d -> %d = %d\n", i, s, convu32_u16( i));
69   printf(" %d -> %d = %d\n", i, s, convu32_u16( i));
70
71   return 0;
72 }