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