[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / dform-2.c
blobd9d0111638727e12065eee97705a572f3a30b81c
1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* Now O2 enables vectorization by default, which generates unexpected float
4 conversion for vector construction, so simply disable it. */
5 /* { dg-options "-mvsx -O2 -fno-tree-vectorize" } */
6 /* { dg-additional-options "-mdejagnu-cpu=power9" { target { ! has_arch_pwr9 } } } */
8 #ifndef TYPE
9 #define TYPE float
10 #endif
12 #ifndef TYPE_IN
13 #define TYPE_IN TYPE
14 #endif
16 #ifndef TYPE_OUT
17 #define TYPE_OUT TYPE
18 #endif
20 #ifndef ITYPE
21 #define ITYPE long
22 #endif
24 #ifdef DO_CALL
25 extern ITYPE get_bits (ITYPE);
27 #else
28 #define get_bits(X) (X)
29 #endif
31 void test (ITYPE *bits, ITYPE n, TYPE one, TYPE_IN *p, TYPE_OUT *q)
33 TYPE x_00 = p[ 0];
34 TYPE x_01 = p[ 1];
35 TYPE x_02 = p[ 2];
36 TYPE x_03 = p[ 3];
37 TYPE x_04 = p[ 4];
38 TYPE x_05 = p[ 5];
39 TYPE x_06 = p[ 6];
40 TYPE x_07 = p[ 7];
41 TYPE x_08 = p[ 8];
42 TYPE x_09 = p[ 9];
44 TYPE x_10 = p[10];
45 TYPE x_11 = p[11];
46 TYPE x_12 = p[12];
47 TYPE x_13 = p[13];
48 TYPE x_14 = p[14];
49 TYPE x_15 = p[15];
50 TYPE x_16 = p[16];
51 TYPE x_17 = p[17];
52 TYPE x_18 = p[18];
53 TYPE x_19 = p[19];
55 TYPE x_20 = p[20];
56 TYPE x_21 = p[21];
57 TYPE x_22 = p[22];
58 TYPE x_23 = p[23];
59 TYPE x_24 = p[24];
60 TYPE x_25 = p[25];
61 TYPE x_26 = p[26];
62 TYPE x_27 = p[27];
63 TYPE x_28 = p[28];
64 TYPE x_29 = p[29];
66 TYPE x_30 = p[30];
67 TYPE x_31 = p[31];
68 TYPE x_32 = p[32];
69 TYPE x_33 = p[33];
70 TYPE x_34 = p[34];
71 TYPE x_35 = p[35];
72 TYPE x_36 = p[36];
73 TYPE x_37 = p[37];
74 TYPE x_38 = p[38];
75 TYPE x_39 = p[39];
77 TYPE x_40 = p[40];
78 TYPE x_41 = p[41];
79 TYPE x_42 = p[42];
80 TYPE x_43 = p[43];
81 TYPE x_44 = p[44];
82 TYPE x_45 = p[45];
83 TYPE x_46 = p[46];
84 TYPE x_47 = p[47];
85 TYPE x_48 = p[48];
86 TYPE x_49 = p[49];
88 ITYPE i;
90 for (i = 0; i < n; i++)
92 ITYPE bit = get_bits (bits[i]);
94 if ((bit & ((ITYPE)1) << 0) != 0) x_00 += one;
95 if ((bit & ((ITYPE)1) << 1) != 0) x_01 += one;
96 if ((bit & ((ITYPE)1) << 2) != 0) x_02 += one;
97 if ((bit & ((ITYPE)1) << 3) != 0) x_03 += one;
98 if ((bit & ((ITYPE)1) << 4) != 0) x_04 += one;
99 if ((bit & ((ITYPE)1) << 5) != 0) x_05 += one;
100 if ((bit & ((ITYPE)1) << 6) != 0) x_06 += one;
101 if ((bit & ((ITYPE)1) << 7) != 0) x_07 += one;
102 if ((bit & ((ITYPE)1) << 8) != 0) x_08 += one;
103 if ((bit & ((ITYPE)1) << 9) != 0) x_09 += one;
105 if ((bit & ((ITYPE)1) << 10) != 0) x_10 += one;
106 if ((bit & ((ITYPE)1) << 11) != 0) x_11 += one;
107 if ((bit & ((ITYPE)1) << 12) != 0) x_12 += one;
108 if ((bit & ((ITYPE)1) << 13) != 0) x_13 += one;
109 if ((bit & ((ITYPE)1) << 14) != 0) x_14 += one;
110 if ((bit & ((ITYPE)1) << 15) != 0) x_15 += one;
111 if ((bit & ((ITYPE)1) << 16) != 0) x_16 += one;
112 if ((bit & ((ITYPE)1) << 17) != 0) x_17 += one;
113 if ((bit & ((ITYPE)1) << 18) != 0) x_18 += one;
114 if ((bit & ((ITYPE)1) << 19) != 0) x_19 += one;
116 if ((bit & ((ITYPE)1) << 20) != 0) x_20 += one;
117 if ((bit & ((ITYPE)1) << 21) != 0) x_21 += one;
118 if ((bit & ((ITYPE)1) << 22) != 0) x_22 += one;
119 if ((bit & ((ITYPE)1) << 23) != 0) x_23 += one;
120 if ((bit & ((ITYPE)1) << 24) != 0) x_24 += one;
121 if ((bit & ((ITYPE)1) << 25) != 0) x_25 += one;
122 if ((bit & ((ITYPE)1) << 26) != 0) x_26 += one;
123 if ((bit & ((ITYPE)1) << 27) != 0) x_27 += one;
124 if ((bit & ((ITYPE)1) << 28) != 0) x_28 += one;
125 if ((bit & ((ITYPE)1) << 29) != 0) x_29 += one;
127 if ((bit & ((ITYPE)1) << 30) != 0) x_30 += one;
128 if ((bit & ((ITYPE)1) << 31) != 0) x_31 += one;
129 if ((bit & ((ITYPE)1) << 32) != 0) x_32 += one;
130 if ((bit & ((ITYPE)1) << 33) != 0) x_33 += one;
131 if ((bit & ((ITYPE)1) << 34) != 0) x_34 += one;
132 if ((bit & ((ITYPE)1) << 35) != 0) x_35 += one;
133 if ((bit & ((ITYPE)1) << 36) != 0) x_36 += one;
134 if ((bit & ((ITYPE)1) << 37) != 0) x_37 += one;
135 if ((bit & ((ITYPE)1) << 38) != 0) x_38 += one;
136 if ((bit & ((ITYPE)1) << 39) != 0) x_39 += one;
138 if ((bit & ((ITYPE)1) << 40) != 0) x_40 += one;
139 if ((bit & ((ITYPE)1) << 41) != 0) x_41 += one;
140 if ((bit & ((ITYPE)1) << 42) != 0) x_42 += one;
141 if ((bit & ((ITYPE)1) << 43) != 0) x_43 += one;
142 if ((bit & ((ITYPE)1) << 44) != 0) x_44 += one;
143 if ((bit & ((ITYPE)1) << 45) != 0) x_45 += one;
144 if ((bit & ((ITYPE)1) << 46) != 0) x_46 += one;
145 if ((bit & ((ITYPE)1) << 47) != 0) x_47 += one;
146 if ((bit & ((ITYPE)1) << 48) != 0) x_48 += one;
147 if ((bit & ((ITYPE)1) << 49) != 0) x_49 += one;
150 q[ 0] = x_00;
151 q[ 1] = x_01;
152 q[ 2] = x_02;
153 q[ 3] = x_03;
154 q[ 4] = x_04;
155 q[ 5] = x_05;
156 q[ 6] = x_06;
157 q[ 7] = x_07;
158 q[ 8] = x_08;
159 q[ 9] = x_09;
161 q[10] = x_10;
162 q[11] = x_11;
163 q[12] = x_12;
164 q[13] = x_13;
165 q[14] = x_14;
166 q[15] = x_15;
167 q[16] = x_16;
168 q[17] = x_17;
169 q[18] = x_18;
170 q[19] = x_19;
172 q[20] = x_20;
173 q[21] = x_21;
174 q[22] = x_22;
175 q[23] = x_23;
176 q[24] = x_24;
177 q[25] = x_25;
178 q[26] = x_26;
179 q[27] = x_27;
180 q[28] = x_28;
181 q[29] = x_29;
183 q[30] = x_30;
184 q[31] = x_31;
185 q[32] = x_32;
186 q[33] = x_33;
187 q[34] = x_34;
188 q[35] = x_35;
189 q[36] = x_36;
190 q[37] = x_37;
191 q[38] = x_38;
192 q[39] = x_39;
194 q[40] = x_40;
195 q[41] = x_41;
196 q[42] = x_42;
197 q[43] = x_43;
198 q[44] = x_44;
199 q[45] = x_45;
200 q[46] = x_46;
201 q[47] = x_47;
202 q[48] = x_48;
203 q[49] = x_49;
206 /* { dg-final { scan-assembler "lxssp " } } */
207 /* { dg-final { scan-assembler "stxssp " } } */
208 /* { dg-final { scan-assembler-not "mfvsrd " } } */
209 /* { dg-final { scan-assembler-not "mtvsrd " } } */
210 /* { dg-final { scan-assembler-not "xscvdpspn " } } */