1 /* { dg-do compile } */
2 /* { dg-additional-options "--save-temps -O1" } */
3 /* { dg-final { check-function-bodies "**" "" "" } } */
4
5 #include <stdint.h>
6
7 #pragma GCC target "+cssc"
8
9 #define MIN(X, Y) ((X) > (Y) ? (Y) : (X))
10 #define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
11
12 /*
13 ** uminw:
14 ** umin w0, w[01], w[01]
15 ** ret
16 */
17
18 uint32_t
19 uminw (uint32_t a, uint32_t b)
20 {
21 return MIN (a, b);
22 }
23
24 /*
25 ** uminx:
26 ** umin x0, x[01], x[01]
27 ** ret
28 */
29
30 uint64_t
31 uminx (uint64_t a, uint64_t b)
32 {
33 return MIN (a, b);
34 }
35
36 /*
37 ** sminw:
38 ** smin w0, w[01], w[01]
39 ** ret
40 */
41
42 int32_t
43 sminw (int32_t a, int32_t b)
44 {
45 return MIN (a, b);
46 }
47
48 /*
49 ** sminx:
50 ** smin x0, x[01], x[01]
51 ** ret
52 */
53
54 int64_t
55 sminx (int64_t a, int64_t b)
56 {
57 return MIN (a, b);
58 }
59
60 /*
61 ** umaxw:
62 ** umax w0, w[01], w[01]
63 ** ret
64 */
65
66 uint32_t
67 umaxw (uint32_t a, uint32_t b)
68 {
69 return MAX (a, b);
70 }
71
72 /*
73 ** umaxx:
74 ** umax x0, x[01], x[01]
75 ** ret
76 */
77
78 uint64_t
79 umaxx (uint64_t a, uint64_t b)
80 {
81 return MAX (a, b);
82 }
83
84 /*
85 ** smaxw:
86 ** smax w0, w[01], w[01]
87 ** ret
88 */
89
90 int32_t
91 smaxw (int32_t a, int32_t b)
92 {
93 return MAX (a, b);
94 }
95
96 /*
97 ** smaxx:
98 ** smax x0, x[01], x[01]
99 ** ret
100 */
101
102 int64_t
103 smaxx (int64_t a, int64_t b)
104 {
105 return MAX (a, b);
106 }
107