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