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