1 /* { dg-do run } */
2 /* { dg-options "-save-temps -O2 -fno-inline" } */
3
4 extern void abort (void);
5
6 #define N 30
7 #define M 25089992
8
9 int
10 foonegsi (int a)
11 {
12 return a ? N : -N;
13 }
14
15 /* { dg-final { scan-assembler "csneg\tw\[0-9\]*.*" } } */
16
17
18 int
19 fooinvsi (int a)
20 {
21 return a ? N : ~N;
22 }
23
24 /* { dg-final { scan-assembler "csinv\tw\[0-9\]*.*" } } */
25
26
27 long long
28 foonegdi (long long a)
29 {
30 return a ? N : -N;
31 }
32
33 long long
34 largefooneg (long long a)
35 {
36 return a ? M : -M;
37 }
38
39 /* { dg-final { scan-assembler "csneg\tx\[0-9\]*.*" } } */
40
41 long long
42 fooinvdi (long long a)
43 {
44 return a ? N : ~N;
45 }
46
47 long long
48 largefooinv (long long a)
49 {
50 return a ? M : ~M;
51 }
52
53 /* { dg-final { scan-assembler "csinv\tx\[0-9\]*.*" } } */
54
55
56 int
57 main (void)
58 {
59 if (foonegsi (1) != N)
60 abort ();
61
62 if (foonegsi (0) != -N)
63 abort ();
64
65 if (fooinvsi (1) != N)
66 abort ();
67
68 if (fooinvsi (0) != ~N)
69 abort ();
70
71 if (foonegdi (1) != N)
72 abort ();
73
74 if (foonegdi (0) != -N)
75 abort ();
76
77 if (fooinvdi (1) != N)
78 abort ();
79
80 if (fooinvdi (0) != ~N)
81 abort ();
82
83 if (largefooinv (0) != ~M)
84 abort ();
85
86 if (largefooneg (0) != -M)
87 abort ();
88
89 if (largefooinv (1) != M)
90 abort ();
91
92 if (largefooneg (1) != M)
93 abort ();
94
95 return 0;
96 }
97
98 /* { dg-final { scan-assembler-not "csel\tx\[0-9\]*.*" } } */
99 /* { dg-final { scan-assembler-not "csel\tw\[0-9\]*.*" } } */