annotate gcc/testsuite/gcc.target/powerpc/float128-complex-2.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile { target { powerpc*-*-linux* } } } */
kono
parents:
diff changeset
2 /* { dg-require-effective-target powerpc_float128_hw_ok } */
kono
parents:
diff changeset
3 /* { dg-options "-O2 -mpower9-vector -mfloat128-hardware" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #ifndef NO_FLOAT
kono
parents:
diff changeset
6 typedef _Complex float float_complex;
kono
parents:
diff changeset
7 extern float_complex cfloat1 (void);
kono
parents:
diff changeset
8 extern float_complex cfloat2 (void);
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 #define FLOAT_ARG(NAME, OP) ARG_OP(float, float_complex, NAME, OP)
kono
parents:
diff changeset
11 #define FLOAT_PTR(NAME, OP) PTR_OP(float, float_complex, NAME, OP)
kono
parents:
diff changeset
12 #define FLOAT_CALL() CALL_OP(float, float_complex, cfloat1, cfloat2)
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 #else
kono
parents:
diff changeset
15 #define FLOAT_ARG(NAME, OP)
kono
parents:
diff changeset
16 #define FLOAT_PTR(NAME, OP)
kono
parents:
diff changeset
17 #define FLOAT_CALL()
kono
parents:
diff changeset
18 #endif
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 #ifndef NO_DOUBLE
kono
parents:
diff changeset
21 typedef _Complex double double_complex;
kono
parents:
diff changeset
22 extern double_complex cdouble1 (void);
kono
parents:
diff changeset
23 extern double_complex cdouble2 (void);
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 #define DOUBLE_ARG(NAME, OP) ARG_OP(double, double_complex, NAME, OP)
kono
parents:
diff changeset
26 #define DOUBLE_PTR(NAME, OP) PTR_OP(double, double_complex, NAME, OP)
kono
parents:
diff changeset
27 #define DOUBLE_CALL() CALL_OP(double, double_complex, cdouble1, cdouble2)
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 #else
kono
parents:
diff changeset
30 #define DOUBLE_ARG(NAME, OP)
kono
parents:
diff changeset
31 #define DOUBLE_PTR(NAME, OP)
kono
parents:
diff changeset
32 #define DOUBLE_CALL()
kono
parents:
diff changeset
33 #endif
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 #ifndef NO_FLOAT128
kono
parents:
diff changeset
36 #ifdef __VSX__
kono
parents:
diff changeset
37 typedef _Complex float __attribute__((mode(KC))) float128_complex;
kono
parents:
diff changeset
38 #else
kono
parents:
diff changeset
39 typedef _Complex float __attribute__((mode(TC))) float128_complex;
kono
parents:
diff changeset
40 #endif
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 extern float128_complex cfloat128_1 (void);
kono
parents:
diff changeset
43 extern float128_complex cfloat128_2 (void);
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 #define FLOAT128_ARG(NAME, OP) ARG_OP(float128, float128_complex, NAME, OP)
kono
parents:
diff changeset
46 #define FLOAT128_PTR(NAME, OP) PTR_OP(float128, float128_complex, NAME, OP)
kono
parents:
diff changeset
47 #define FLOAT128_CALL() CALL_OP(float128, float128_complex, cfloat128_1, cfloat128_2)
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 #else
kono
parents:
diff changeset
50 #define FLOAT128_ARG(NAME, OP)
kono
parents:
diff changeset
51 #define FLOAT128_PTR(NAME, OP)
kono
parents:
diff changeset
52 #define FLOAT128_CALL()
kono
parents:
diff changeset
53 #endif
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 #ifndef NO_LDOUBLE
kono
parents:
diff changeset
56 typedef _Complex long double ldouble_complex;
kono
parents:
diff changeset
57 extern ldouble_complex cldouble1 (void);
kono
parents:
diff changeset
58 extern ldouble_complex cldouble2 (void);
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 #define LDOUBLE_ARG(NAME, OP) ARG_OP(ldouble, ldouble_complex, NAME, OP)
kono
parents:
diff changeset
61 #define LDOUBLE_PTR(NAME, OP) PTR_OP(ldouble, ldouble_complex, NAME, OP)
kono
parents:
diff changeset
62 #define LDOUBLE_CALL() CALL_OP(ldouble, ldouble_complex, cldouble1, cldouble2)
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 #else
kono
parents:
diff changeset
65 #define LDOUBLE_ARG(NAME, OP)
kono
parents:
diff changeset
66 #define LDOUBLE_PTR(NAME, OP)
kono
parents:
diff changeset
67 #define LDOUBLE_CALL()
kono
parents:
diff changeset
68 #endif
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 #define ARG_OP(SUFFIX, TYPE, NAME, OP) \
kono
parents:
diff changeset
72 TYPE arg_ ## NAME ## _ ## SUFFIX (TYPE a, TYPE b) \
kono
parents:
diff changeset
73 { \
kono
parents:
diff changeset
74 return a OP b; \
kono
parents:
diff changeset
75 }
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 #define PTR_OP(SUFFIX, TYPE, NAME, OP) \
kono
parents:
diff changeset
78 void ptr_ ## NAME ## _ ## SUFFIX (TYPE *p, TYPE *a, TYPE *b) \
kono
parents:
diff changeset
79 { \
kono
parents:
diff changeset
80 *p = *a OP *b; \
kono
parents:
diff changeset
81 }
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 #define CALL_OP(SUFFIX, TYPE, FUNC1, FUNC2) \
kono
parents:
diff changeset
84 TYPE call_ ## SUFFIX (void) \
kono
parents:
diff changeset
85 { \
kono
parents:
diff changeset
86 TYPE value1 = FUNC1 (); \
kono
parents:
diff changeset
87 TYPE value2 = FUNC2 (); \
kono
parents:
diff changeset
88 return value1 + value2; \
kono
parents:
diff changeset
89 }
kono
parents:
diff changeset
90
kono
parents:
diff changeset
91 #ifndef NO_ARG
kono
parents:
diff changeset
92 #ifndef NO_ADD
kono
parents:
diff changeset
93 FLOAT_ARG (add, +)
kono
parents:
diff changeset
94 DOUBLE_ARG (add, +)
kono
parents:
diff changeset
95 FLOAT128_ARG (add, +)
kono
parents:
diff changeset
96 LDOUBLE_ARG (add, +)
kono
parents:
diff changeset
97 #endif
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 #ifndef NO_SUB
kono
parents:
diff changeset
100 FLOAT_ARG (sub, -)
kono
parents:
diff changeset
101 DOUBLE_ARG (sub, -)
kono
parents:
diff changeset
102 FLOAT128_ARG (sub, -)
kono
parents:
diff changeset
103 LDOUBLE_ARG (sub, -)
kono
parents:
diff changeset
104 #endif
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 #ifndef NO_MUL
kono
parents:
diff changeset
107 FLOAT_ARG (mul, *)
kono
parents:
diff changeset
108 DOUBLE_ARG (mul, *)
kono
parents:
diff changeset
109 FLOAT128_ARG (mul, *)
kono
parents:
diff changeset
110 LDOUBLE_ARG (mul, *)
kono
parents:
diff changeset
111 #endif
kono
parents:
diff changeset
112
kono
parents:
diff changeset
113 #ifndef NO_DIV
kono
parents:
diff changeset
114 FLOAT_ARG (div, /)
kono
parents:
diff changeset
115 DOUBLE_ARG (div, /)
kono
parents:
diff changeset
116 FLOAT128_ARG (div, /)
kono
parents:
diff changeset
117 LDOUBLE_ARG (div, /)
kono
parents:
diff changeset
118 #endif
kono
parents:
diff changeset
119 #endif
kono
parents:
diff changeset
120
kono
parents:
diff changeset
121 #ifndef NO_PTR
kono
parents:
diff changeset
122 #ifndef NO_ADD
kono
parents:
diff changeset
123 FLOAT_PTR (add, +)
kono
parents:
diff changeset
124 DOUBLE_PTR (add, +)
kono
parents:
diff changeset
125 FLOAT128_PTR (add, +)
kono
parents:
diff changeset
126 LDOUBLE_PTR (add, +)
kono
parents:
diff changeset
127 #endif
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 #ifndef NO_SUB
kono
parents:
diff changeset
130 FLOAT_PTR (sub, -)
kono
parents:
diff changeset
131 DOUBLE_PTR (sub, -)
kono
parents:
diff changeset
132 FLOAT128_PTR (sub, -)
kono
parents:
diff changeset
133 LDOUBLE_PTR (sub, -)
kono
parents:
diff changeset
134 #endif
kono
parents:
diff changeset
135
kono
parents:
diff changeset
136 #ifndef NO_MUL
kono
parents:
diff changeset
137 FLOAT_PTR (mul, *)
kono
parents:
diff changeset
138 DOUBLE_PTR (mul, *)
kono
parents:
diff changeset
139 FLOAT128_PTR (mul, *)
kono
parents:
diff changeset
140 LDOUBLE_PTR (mul, *)
kono
parents:
diff changeset
141 #endif
kono
parents:
diff changeset
142
kono
parents:
diff changeset
143 #ifndef NO_DIV
kono
parents:
diff changeset
144 FLOAT_PTR (div, /)
kono
parents:
diff changeset
145 DOUBLE_PTR (div, /)
kono
parents:
diff changeset
146 FLOAT128_PTR (div, /)
kono
parents:
diff changeset
147 LDOUBLE_PTR (div, /)
kono
parents:
diff changeset
148 #endif
kono
parents:
diff changeset
149 #endif
kono
parents:
diff changeset
150
kono
parents:
diff changeset
151 #ifndef NO_CALL
kono
parents:
diff changeset
152 FLOAT_CALL ()
kono
parents:
diff changeset
153 DOUBLE_CALL ()
kono
parents:
diff changeset
154 FLOAT128_CALL ()
kono
parents:
diff changeset
155 LDOUBLE_CALL ()
kono
parents:
diff changeset
156 #endif
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 /* { dg-final { scan-assembler "xsaddqp" } } */
kono
parents:
diff changeset
159 /* { dg-final { scan-assembler "xssubqp" } } */