1
2#ifndef fma_4
3#define fma_4
4
5TYPE __attribute__((sseregparm))
6test_noneg_add_noneg_add (TYPE a, TYPE b, TYPE c)
7{
8  return ((a * b) + c) * b + c;
9}
10
11TYPE __attribute__((sseregparm))
12test_noneg_add_noneg_sub (TYPE a, TYPE b, TYPE c)
13{
14  return ((a * b) + c) * b - c;
15}
16
17TYPE __attribute__((sseregparm))
18test_noneg_add_neg_add (TYPE a, TYPE b, TYPE c)
19{
20  return -((a * b) + c) * b + c;
21}
22
23TYPE __attribute__((sseregparm))
24test_noneg_add_neg_sub (TYPE a, TYPE b, TYPE c)
25{
26  return -((a * b) + c) * b - c;
27}
28
29TYPE __attribute__((sseregparm))
30test_noneg_sub_noneg_add (TYPE a, TYPE b, TYPE c)
31{
32  return ((a * b) - c) * b + c;
33}
34
35TYPE __attribute__((sseregparm))
36test_noneg_sub_noneg_sub (TYPE a, TYPE b, TYPE c)
37{
38  return ((a * b) - c) * b - c;
39}
40
41TYPE __attribute__((sseregparm))
42test_noneg_sub_neg_add (TYPE a, TYPE b, TYPE c)
43{
44  return -((a * b) - c) * b + c;
45}
46
47TYPE __attribute__((sseregparm))
48test_noneg_sub_neg_sub (TYPE a, TYPE b, TYPE c)
49{
50  return -((a * b) - c) * b - c;
51}
52
53TYPE __attribute__((sseregparm))
54test_neg_add_noneg_add (TYPE a, TYPE b, TYPE c)
55{
56  return (-(a * b) + c) * b + c;
57}
58
59TYPE __attribute__((sseregparm))
60test_neg_add_noneg_sub (TYPE a, TYPE b, TYPE c)
61{
62  return (-(a * b) + c) * b - c;
63}
64
65TYPE __attribute__((sseregparm))
66test_neg_add_neg_add (TYPE a, TYPE b, TYPE c)
67{
68  return -(-(a * b) + c) * b + c;
69}
70
71TYPE __attribute__((sseregparm))
72test_neg_add_neg_sub (TYPE a, TYPE b, TYPE c)
73{
74  return -(-(a * b) + c) * b - c;
75}
76
77TYPE __attribute__((sseregparm))
78test_neg_sub_noneg_add (TYPE a, TYPE b, TYPE c)
79{
80  return (-(a * b) - c) * b + c;
81}
82
83TYPE __attribute__((sseregparm))
84test_neg_sub_noneg_sub (TYPE a, TYPE b, TYPE c)
85{
86  return (-(a * b) - c) * b - c;
87}
88
89TYPE __attribute__((sseregparm))
90test_neg_sub_neg_add (TYPE a, TYPE b, TYPE c)
91{
92  return -(-(a * b) - c) * b + c;
93}
94
95TYPE __attribute__((sseregparm))
96test_neg_sub_neg_sub (TYPE a, TYPE b, TYPE c)
97{
98  return -(-(a * b) - c) * b - c;
99}
100
101#endif
102