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