Daily bump.
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / cssc_5.c
blob51495195eaea745b62df00e47f590faaaba348ae
1 /* { dg-do compile } */
2 /* { dg-additional-options "--save-temps -O1" } */
3 /* { dg-final { check-function-bodies "**" "" "" } } */
5 #include <stdint.h>
7 #pragma GCC target "+cssc"
9 #define MIN(X, Y) ((X) > (Y) ? (Y) : (X))
10 #define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
12 #define FUNC(T, OP, IMM) \
13 T \
14 T##_##OP##_##IMM (T a) \
15 { \
16 return OP (a, IMM); \
17 } \
19 #define FUNCNEG(T, OP, IMM) \
20 T \
21 T##_##OP##_m##IMM (T a) \
22 { \
23 return OP (a, - (IMM)); \
24 } \
27 ** uint32_t_MIN_255:
28 ** umin w0, w0, 255
29 ** ret
32 FUNC (uint32_t, MIN, 255)
35 ** uint64_t_MIN_255:
36 ** umin x0, x0, 255
37 ** ret
40 FUNC (uint64_t, MIN, 255)
43 ** uint32_t_MAX_255:
44 ** umax w0, w0, 255
45 ** ret
48 FUNC (uint32_t, MAX, 255)
52 ** uint64_t_MAX_255:
53 ** umax x0, x0, 255
54 ** ret
57 FUNC (uint64_t, MAX, 255)
60 ** int32_t_MIN_m128:
61 ** smin w0, w0, -128
62 ** ret
65 FUNCNEG (int32_t, MIN, 128)
68 ** int32_t_MIN_127:
69 ** smin w0, w0, 127
70 ** ret
73 FUNC (int32_t, MIN, 127)
76 ** int64_t_MIN_m128:
77 ** smin x0, x0, -128
78 ** ret
81 FUNCNEG (int64_t, MIN, 128)
84 ** int64_t_MIN_127:
85 ** smin x0, x0, 127
86 ** ret
89 FUNC (int64_t, MIN, 127)
92 ** int32_t_MAX_m128:
93 ** smax w0, w0, -128
94 ** ret
97 FUNCNEG (int32_t, MAX, 128)
100 ** int32_t_MAX_127:
101 ** smax w0, w0, 127
102 ** ret
105 FUNC (int32_t, MAX, 127)
108 ** int64_t_MAX_m128:
109 ** smax x0, x0, -128
110 ** ret
113 FUNCNEG (int64_t, MAX, 128)
116 ** int64_t_MAX_127:
117 ** smax x0, x0, 127
118 ** ret
121 FUNC (int64_t, MAX, 127)
124 ** int32_t_MIN_0:
125 ** smin w0, w0, 0
126 ** ret
129 FUNC (int32_t, MIN, 0)
132 ** int64_t_MIN_0:
133 ** smin x0, x0, 0
134 ** ret
137 FUNC (int64_t, MIN, 0)
140 ** int32_t_MAX_0:
141 ** smax w0, w0, 0
142 ** ret
145 FUNC (int32_t, MAX, 0)
148 ** int64_t_MAX_0:
149 ** smax x0, x0, 0
150 ** ret
153 FUNC (int64_t, MAX, 0)