1/* { dg-do compile } */
2/* { dg-require-effective-target ilp32 } */
3/* { dg-options "-O1 -mvis3" } */
4
5float fnegs (float a)
6{
7  return -a;
8}
9
10double fnegd (double a)
11{
12  return -a;
13}
14
15float fmuls (float a, float b)
16{
17  return a * b;
18}
19
20double fmuld (double a, double b)
21{
22  return a * b;
23}
24
25double fsmuld (float a, float b)
26{
27  return (double)a * (double)b;
28}
29
30double fnsmuld (float a, float b)
31{
32  return -((double)a * (double)b);
33}
34
35/* { dg-final { scan-assembler-times "movwtos\t%" 13 } } */
36/* { dg-final { scan-assembler "fnegs\t%" } } */
37/* { dg-final { scan-assembler "fnegd\t%" } } */
38/* { dg-final { scan-assembler "fmuls\t%" } } */
39/* { dg-final { scan-assembler "fmuld\t%" } } */
40/* { dg-final { scan-assembler "fsmuld\t%" } } */
41/* { dg-final { scan-assembler "fnsmuld\t%" } } */
42