diff options
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gcc.target/i386/fma_6.h')
-rw-r--r-- | gcc-4.8/gcc/testsuite/gcc.target/i386/fma_6.h | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/fma_6.h b/gcc-4.8/gcc/testsuite/gcc.target/i386/fma_6.h new file mode 100644 index 000000000..a6bb4b0cd --- /dev/null +++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/fma_6.h @@ -0,0 +1,101 @@ + +#ifndef fma_6 +#define fma_6 + +TYPE __attribute__((sseregparm)) +test_noneg_add_noneg_add (TYPE a, TYPE b, TYPE c) +{ + return ((a * b) + c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_add_noneg_sub (TYPE a, TYPE b, TYPE c) +{ + return ((a * b) + c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_add_neg_add (TYPE a, TYPE b, TYPE c) +{ + return -((a * b) + c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_add_neg_sub (TYPE a, TYPE b, TYPE c) +{ + return -((a * b) + c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_sub_noneg_add (TYPE a, TYPE b, TYPE c) +{ + return ((a * b) - c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_sub_noneg_sub (TYPE a, TYPE b, TYPE c) +{ + return ((a * b) - c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_sub_neg_add (TYPE a, TYPE b, TYPE c) +{ + return -((a * b) - c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_noneg_sub_neg_sub (TYPE a, TYPE b, TYPE c) +{ + return -((a * b) - c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_neg_add_noneg_add (TYPE a, TYPE b, TYPE c) +{ + return (-(a * b) + c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_neg_add_noneg_sub (TYPE a, TYPE b, TYPE c) +{ + return (-(a * b) + c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_neg_add_neg_add (TYPE a, TYPE b, TYPE c) +{ + return -(-(a * b) + c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_neg_add_neg_sub (TYPE a, TYPE b, TYPE c) +{ + return -(-(a * b) + c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_neg_sub_noneg_add (TYPE a, TYPE b, TYPE c) +{ + return (-(a * b) - c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_neg_sub_noneg_sub (TYPE a, TYPE b, TYPE c) +{ + return (-(a * b) - c) * c - b; +} + +TYPE __attribute__((sseregparm)) +test_neg_sub_neg_add (TYPE a, TYPE b, TYPE c) +{ + return -(-(a * b) - c) * c + b; +} + +TYPE __attribute__((sseregparm)) +test_neg_sub_neg_sub (TYPE a, TYPE b, TYPE c) +{ + return -(-(a * b) - c) * c - b; +} + +#endif |