1321936Shselasky/* { dg-do compile } */
2321936Shselasky/* { dg-require-effective-target ilp32 } */
3321936Shselasky/* { dg-options "-O1 -mvis3" } */
4321936Shselasky
5321936Shselaskyfloat fnegs (float a)
6321936Shselasky{
7321936Shselasky  return -a;
8321936Shselasky}
9321936Shselasky
10321936Shselaskydouble fnegd (double a)
11321936Shselasky{
12321936Shselasky  return -a;
13321936Shselasky}
14321936Shselasky
15321936Shselaskyfloat fmuls (float a, float b)
16321936Shselasky{
17321936Shselasky  return a * b;
18321936Shselasky}
19321936Shselasky
20321936Shselaskydouble fmuld (double a, double b)
21321936Shselasky{
22321936Shselasky  return a * b;
23321936Shselasky}
24321936Shselasky
25321936Shselaskydouble fsmuld (float a, float b)
26321936Shselasky{
27321936Shselasky  return (double)a * (double)b;
28321936Shselasky}
29321936Shselasky
30321936Shselaskydouble fnsmuld (float a, float b)
31321936Shselasky{
32321936Shselasky  return -((double)a * (double)b);
33321936Shselasky}
34321936Shselasky
35321936Shselasky/* { dg-final { scan-assembler-times "movwtos\t%" 13 } } */
36321936Shselasky/* { dg-final { scan-assembler "fnegs\t%" } } */
37321936Shselasky/* { dg-final { scan-assembler "fnegd\t%" } } */
38321936Shselasky/* { dg-final { scan-assembler "fmuls\t%" } } */
39321936Shselasky/* { dg-final { scan-assembler "fmuld\t%" } } */
40321936Shselasky/* { dg-final { scan-assembler "fsmuld\t%" } } */
41321936Shselasky/* { dg-final { scan-assembler "fnsmuld\t%" } } */
42321936Shselasky