10 #define test32_1 (T) 0x001200AB
11 #define test32_2 (T) 0x00341501
12 #define test32_shift 5
16 T tname(test_add_) (T a, T b) {
20 T tname(test_addi_) (T a) {
24 T tname(test_sub_) (T a, T b) {
28 T tname(test_subi_) (T a) {
32 T tname(test_subfi_) (T a) {
36 T tname(test_mul_) (T a, T b) {
40 T tname(test_muli_) (T a) {
44 T tname(test_div_) (T a, T b) {
48 T tname(test_divi_) (T a) {
53 T tname(test_abs_) (T a) {
54 return a < 0 ? -a : a;
57 T tname(test_neg_) (T a) {
63 T tname(test_shl_) (T a, T b) {
67 T tname(test_shli_) (T a) {
71 T tname(test_shr_) (T a, T b) {
75 T tname(test_shri_) (T a) {
79 T tname(test_mod_) (T a, T b) {
84 T tname(test_cmp_) (T a, T b) {
88 T tname(test_cmpi_) (T a) {
89 return (a>IMM) ? 1 : 0;
92 T tname(res16_) [TESTANZ];
93 T tname(res32_) [TESTANZ];
95 void tname(test_) () {
97 T *res16 = tname(res16_);
98 memset(res16, 0, TESTANZ * sizeof(res16[0]));
99 T *res32 = tname(res32_);
100 memset(res32, 0, TESTANZ * sizeof(res32[0]));
102 res16[ 0] = tname(test_add_) (test16_1, test16_2);
103 res16[ 1] = tname(test_sub_) (test16_1, test16_2);
104 res16[ 2] = tname(test_mul_) (test16_1, test16_2);
105 res16[ 3] = tname(test_div_) (test16_1, test16_2);
107 res16[ 4] = tname(test_shl_) (test16_1, test16_shift);
108 res16[ 5] = tname(test_shr_) (test16_1, test16_shift);
109 res16[ 6] = tname(test_mod_) (test16_1, test16_2);
111 res16[ 7] = tname(test_div_) (test16_1, test16_2);
112 res16[ 8] = tname(test_cmp_) (test16_1, test16_2);
113 res16[ 9] = tname(test_addi_) (test16_1);
114 res16[10] = tname(test_subi_) (test16_1);
115 res16[11] = tname(test_subfi_)(test16_1);
116 res16[12] = tname(test_muli_) (test16_1);
117 res16[13] = tname(test_divi_) (test16_1);
119 res16[14] = tname(test_shli_) (test16_1);
120 res16[15] = tname(test_shri_) (test16_1);
122 res16[16] = tname(test_cmpi_) (test16_1);
123 #ifndef TEST_UNSIGNED
124 res16[17] = tname(test_neg_) (test16_1);
125 res16[18] = tname(test_neg_) (-test16_1);
126 res16[19] = tname(test_abs_) (test16_1);
127 res16[20] = tname(test_abs_) (-test16_1);
130 res32[ 0] = tname(test_add_) (test32_1, test32_2);
131 res32[ 1] = tname(test_sub_) (test32_1, test32_2);
132 res32[ 2] = tname(test_mul_) (test32_1, test32_2);
133 res32[ 3] = tname(test_div_) (test32_1, test32_2);
135 res32[ 4] = tname(test_shl_) (test32_1, test32_shift);
136 res32[ 5] = tname(test_shr_) (test32_1, test32_shift);
137 res32[ 6] = tname(test_mod_) (test32_1, test32_2);
139 res32[ 7] = tname(test_div_) (test32_1, test32_2);
140 res32[ 8] = tname(test_cmp_) (test32_1, test32_2);
141 res32[ 9] = tname(test_addi_) (test32_1);
142 res32[10] = tname(test_subi_) (test32_1);
143 res32[11] = tname(test_subfi_)(test32_1);
144 res32[12] = tname(test_muli_) (test32_1);
145 res32[13] = tname(test_divi_) (test32_1);
147 res32[14] = tname(test_shli_) (test32_1);
148 res32[15] = tname(test_shri_) (test32_1);
150 res32[16] = tname(test_cmpi_) (test32_1);
151 #ifndef TEST_UNSIGNED
152 res32[17] = tname(test_neg_) (test32_1);
153 res32[18] = tname(test_neg_) (-test32_1);
154 res32[19] = tname(test_abs_) (test32_1);
155 res32[20] = tname(test_abs_) (-test32_1);
158 printf("Result for %s\n", __PRETTY_FUNCTION__);
159 for (i=0; i<TESTANZ; i++) {
161 printf("res16[%d] = %d\n", i, res16[i]);
162 printf("res32[%d] = %d\n", i, res32[i]);
164 printf("res16[%d] = %f\n", i, res16[i]);
165 printf("res32[%d] = %f\n", i, res32[i]);