1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
3 /* { dg-require-effective-target powerpc_p9vector_ok } */
4 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
5 /* { dg-options "-mcpu=power9 -O3 -mupper-regs-df -mupper-regs-sf -funroll-loops" } */
7 /* derived from 20021120-1.c, compiled for -mcpu=power9. */
9 extern void abort (void);
10 extern void exit (int);
12 volatile double gd
[32];
13 volatile float gf
[32];
18 double d00
, d10
, d20
, d30
, d01
, d11
, d21
, d31
, d02
, d12
, d22
, d32
, d03
, d13
,
19 d23
, d33
, d04
, d14
, d24
, d34
, d05
, d15
, d25
, d35
, d06
, d16
, d26
, d36
, d07
,
21 float f00
, f10
, f20
, f30
, f01
, f11
, f21
, f31
, f02
, f12
, f22
, f32
, f03
, f13
,
22 f23
, f33
, f04
, f14
, f24
, f34
, f05
, f15
, f25
, f35
, f06
, f16
, f26
, f36
, f07
,
29 d00
= *(pd
++), d10
= *(pd
++), d20
= *(pd
++), d30
= *(pd
++), d01
=
30 *(pd
++), d11
= *(pd
++), d21
= *(pd
++), d31
= *(pd
++), d02
= *(pd
++), d12
=
31 *(pd
++), d22
= *(pd
++), d32
= *(pd
++), d03
= *(pd
++), d13
= *(pd
++), d23
=
32 *(pd
++), d33
= *(pd
++), d04
= *(pd
++), d14
= *(pd
++), d24
= *(pd
++), d34
=
33 *(pd
++), d05
= *(pd
++), d15
= *(pd
++), d25
= *(pd
++), d35
= *(pd
++), d06
=
34 *(pd
++), d16
= *(pd
++), d26
= *(pd
++), d36
= *(pd
++), d07
= *(pd
++), d17
=
35 *(pd
++), d27
= *(pd
++), d37
= *(pd
++);
36 for (i
= 0; i
< n
; i
++)
39 f00
= *(pf
++), f10
= *(pf
++), f20
= *(pf
++), f30
= *(pf
++), f01
=
40 *(pf
++), f11
= *(pf
++), f21
= *(pf
++), f31
= *(pf
++), f02
=
41 *(pf
++), f12
= *(pf
++), f22
= *(pf
++), f32
= *(pf
++), f03
=
42 *(pf
++), f13
= *(pf
++), f23
= *(pf
++), f33
= *(pf
++), f04
=
43 *(pf
++), f14
= *(pf
++), f24
= *(pf
++), f34
= *(pf
++), f05
=
44 *(pf
++), f15
= *(pf
++), f25
= *(pf
++), f35
= *(pf
++), f06
=
45 *(pf
++), f16
= *(pf
++), f26
= *(pf
++), f36
= *(pf
++), f07
=
46 *(pf
++), f17
= *(pf
++), f27
= *(pf
++), f37
= *(pf
++);
48 d00
+= *(pd
++), d10
+= *(pd
++), d20
+= *(pd
++), d30
+= *(pd
++), d01
+=
49 *(pd
++), d11
+= *(pd
++), d21
+= *(pd
++), d31
+= *(pd
++), d02
+=
50 *(pd
++), d12
+= *(pd
++), d22
+= *(pd
++), d32
+= *(pd
++), d03
+=
51 *(pd
++), d13
+= *(pd
++), d23
+= *(pd
++), d33
+= *(pd
++), d04
+=
52 *(pd
++), d14
+= *(pd
++), d24
+= *(pd
++), d34
+= *(pd
++), d05
+=
53 *(pd
++), d15
+= *(pd
++), d25
+= *(pd
++), d35
+= *(pd
++), d06
+=
54 *(pd
++), d16
+= *(pd
++), d26
+= *(pd
++), d36
+= *(pd
++), d07
+=
55 *(pd
++), d17
+= *(pd
++), d27
+= *(pd
++), d37
+= *(pd
++);
57 d00
+= *(pd
++), d10
+= *(pd
++), d20
+= *(pd
++), d30
+= *(pd
++), d01
+=
58 *(pd
++), d11
+= *(pd
++), d21
+= *(pd
++), d31
+= *(pd
++), d02
+=
59 *(pd
++), d12
+= *(pd
++), d22
+= *(pd
++), d32
+= *(pd
++), d03
+=
60 *(pd
++), d13
+= *(pd
++), d23
+= *(pd
++), d33
+= *(pd
++), d04
+=
61 *(pd
++), d14
+= *(pd
++), d24
+= *(pd
++), d34
+= *(pd
++), d05
+=
62 *(pd
++), d15
+= *(pd
++), d25
+= *(pd
++), d35
+= *(pd
++), d06
+=
63 *(pd
++), d16
+= *(pd
++), d26
+= *(pd
++), d36
+= *(pd
++), d07
+=
64 *(pd
++), d17
+= *(pd
++), d27
+= *(pd
++), d37
+= *(pd
++);
66 d00
+= *(pd
++), d10
+= *(pd
++), d20
+= *(pd
++), d30
+= *(pd
++), d01
+=
67 *(pd
++), d11
+= *(pd
++), d21
+= *(pd
++), d31
+= *(pd
++), d02
+=
68 *(pd
++), d12
+= *(pd
++), d22
+= *(pd
++), d32
+= *(pd
++), d03
+=
69 *(pd
++), d13
+= *(pd
++), d23
+= *(pd
++), d33
+= *(pd
++), d04
+=
70 *(pd
++), d14
+= *(pd
++), d24
+= *(pd
++), d34
+= *(pd
++), d05
+=
71 *(pd
++), d15
+= *(pd
++), d25
+= *(pd
++), d35
+= *(pd
++), d06
+=
72 *(pd
++), d16
+= *(pd
++), d26
+= *(pd
++), d36
+= *(pd
++), d07
+=
73 *(pd
++), d17
+= *(pd
++), d27
+= *(pd
++), d37
+= *(pd
++);
75 *(pf
++) = f00
, *(pf
++) = f10
, *(pf
++) = f20
, *(pf
++) = f30
, *(pf
++) =
76 f01
, *(pf
++) = f11
, *(pf
++) = f21
, *(pf
++) = f31
, *(pf
++) =
77 f02
, *(pf
++) = f12
, *(pf
++) = f22
, *(pf
++) = f32
, *(pf
++) =
78 f03
, *(pf
++) = f13
, *(pf
++) = f23
, *(pf
++) = f33
, *(pf
++) =
79 f04
, *(pf
++) = f14
, *(pf
++) = f24
, *(pf
++) = f34
, *(pf
++) =
80 f05
, *(pf
++) = f15
, *(pf
++) = f25
, *(pf
++) = f35
, *(pf
++) =
81 f06
, *(pf
++) = f16
, *(pf
++) = f26
, *(pf
++) = f36
, *(pf
++) =
82 f07
, *(pf
++) = f17
, *(pf
++) = f27
, *(pf
++) = f37
;
85 *(pd
++) = d00
, *(pd
++) = d10
, *(pd
++) = d20
, *(pd
++) = d30
, *(pd
++) =
86 d01
, *(pd
++) = d11
, *(pd
++) = d21
, *(pd
++) = d31
, *(pd
++) = d02
, *(pd
++) =
87 d12
, *(pd
++) = d22
, *(pd
++) = d32
, *(pd
++) = d03
, *(pd
++) = d13
, *(pd
++) =
88 d23
, *(pd
++) = d33
, *(pd
++) = d04
, *(pd
++) = d14
, *(pd
++) = d24
, *(pd
++) =
89 d34
, *(pd
++) = d05
, *(pd
++) = d15
, *(pd
++) = d25
, *(pd
++) = d35
, *(pd
++) =
90 d06
, *(pd
++) = d16
, *(pd
++) = d26
, *(pd
++) = d36
, *(pd
++) = d07
, *(pd
++) =
91 d17
, *(pd
++) = d27
, *(pd
++) = d37
;
99 for (i
= 0; i
< 32; i
++)
100 gd
[i
] = i
, gf
[i
] = i
;
102 for (i
= 0; i
< 32; i
++)
103 if (gd
[i
] != i
* 4 || gf
[i
] != i
)
108 /* { dg-final { scan-assembler-not "stxsd \[0-9\]+,\[0-9\]+,\[0-9\]" } } */