1/* { dg-do compile { target { s390*-*-* } } } */
2/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
3
4typedef __attribute__((vector_size(16))) double v2df;
5
6v2df
7adddbl (v2df a, v2df b)
8{
9  return a + b;
10}
11/* { dg-final { scan-assembler-times "vfadb" 1 } } */
12
13v2df
14subdbl (v2df a, v2df b)
15{
16  return a - b;
17}
18/* { dg-final { scan-assembler-times "vfsdb" 1 } } */
19
20v2df
21muldbl (v2df a, v2df b)
22{
23  return a * b;
24}
25/* { dg-final { scan-assembler-times "vfmdb" 1 } } */
26
27v2df
28divdbl (v2df a, v2df b)
29{
30  return a / b;
31}
32/* { dg-final { scan-assembler-times "vfd" 1 } } */
33
34v2df
35fmadbl (v2df a, v2df b, v2df c)
36{
37  return a * b + c;
38}
39/* { dg-final { scan-assembler-times "vfma" 1 } } */
40
41v2df
42fmsdbl (v2df a, v2df b, v2df c)
43{
44  return a * b - c;
45}
46/* { dg-final { scan-assembler-times "vfms" 1 } } */
47
48/* { dg-final { cleanup-saved-temps } } */
49