1
2 #ifndef fma_1
3 #define fma_1
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
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) * a + b;
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) * a - b;
99 }
100
101 #endif
102