8 #define test32_1 0x001200AB
9 #define test32_2 0x00341501
10 #define test32_shift 5
14 T tname(test_add_) (T a, T b) {
18 T tname(test_addi_) (T a) {
22 T tname(test_sub_) (T a, T b) {
26 T tname(test_subi_) (T a) {
30 T tname(test_subfi_) (T a) {
34 T tname(test_mul_) (T a, T b) {
38 T tname(test_muli_) (T a) {
42 T tname(test_div_) (T a, T b) {
46 T tname(test_divi_) (T a) {
51 T tname(test_abs_) (T a) {
52 return a < 0 ? -a : a;
55 T tname(test_neg_) (T a) {
61 T tname(test_shl_) (T a, T b) {
65 T tname(test_shli_) (T a) {
69 T tname(test_shr_) (T a, T b) {
73 T tname(test_shri_) (T a) {
77 T tname(test_mod_) (T a, T b) {
82 T tname(test_cmp_) (T a, T b) {
86 T tname(test_cmpi_) (T a) {
87 return (a>IMM) ? 1 : 0;
90 T tname(res16_) [TESTANZ];
91 T tname(res32_) [TESTANZ];
93 void tname(test_) () {
95 T *res16 = tname(res16_);
96 memset(res16, 0, TESTANZ * sizeof(res16[0]));
97 T *res32 = tname(res32_);
98 memset(res32, 0, TESTANZ * sizeof(res32[0]));
100 res16[ 0] = tname(test_add_) (test16_1, test16_2);
101 res16[ 1] = tname(test_sub_) (test16_1, test16_2);
102 res16[ 2] = tname(test_mul_) (test16_1, test16_2);
103 res16[ 3] = tname(test_div_) (test16_1, test16_2);
105 res16[ 4] = tname(test_shl_) (test16_1, test16_shift);
106 res16[ 5] = tname(test_shr_) (test16_1, test16_shift);
107 res16[ 6] = tname(test_mod_) (test16_1, test16_2);
109 res16[ 7] = tname(test_div_) (test16_1, test16_2);
110 res16[ 8] = tname(test_cmp_) (test16_1, test16_2);
111 res16[ 9] = tname(test_addi_) (test16_1);
112 res16[10] = tname(test_subi_) (test16_1);
113 res16[11] = tname(test_subfi_)(test16_1);
114 res16[12] = tname(test_muli_) (test16_1);
115 res16[13] = tname(test_divi_) (test16_1);
117 res16[14] = tname(test_shli_) (test16_1);
118 res16[15] = tname(test_shri_) (test16_1);
120 res16[16] = tname(test_cmpi_) (test16_1);
121 #ifndef TEST_UNSIGNED
122 res16[17] = tname(test_neg_) (test16_1);
123 res16[18] = tname(test_neg_) (-test16_1);
124 res16[19] = tname(test_abs_) (test16_1);
125 res16[20] = tname(test_abs_) (-test16_1);
128 res32[ 0] = tname(test_add_) (test32_1, test32_2);
129 res32[ 1] = tname(test_sub_) (test32_1, test32_2);
130 res32[ 2] = tname(test_mul_) (test32_1, test32_2);
131 res32[ 3] = tname(test_div_) (test32_1, test32_2);
133 res32[ 4] = tname(test_shl_) (test32_1, test32_shift);
134 res32[ 5] = tname(test_shr_) (test32_1, test32_shift);
135 res32[ 6] = tname(test_mod_) (test32_1, test32_2);
137 res32[ 7] = tname(test_div_) (test32_1, test32_2);
138 res32[ 8] = tname(test_cmp_) (test32_1, test32_2);
139 res32[ 9] = tname(test_addi_) (test32_1);
140 res32[10] = tname(test_subi_) (test32_1);
141 res32[11] = tname(test_subfi_)(test32_1);
142 res32[12] = tname(test_muli_) (test32_1);
143 res32[13] = tname(test_divi_) (test32_1);
145 res32[14] = tname(test_shli_) (test32_1);
146 res32[15] = tname(test_shri_) (test32_1);
148 res32[16] = tname(test_cmpi_) (test32_1);
149 #ifndef TEST_UNSIGNED
150 res32[17] = tname(test_neg_) (test32_1);
151 res32[18] = tname(test_neg_) (-test32_1);
152 res32[19] = tname(test_abs_) (test32_1);
153 res32[20] = tname(test_abs_) (-test32_1);
156 printf("Result for %s\n", __PRETTY_FUNCTION__);
157 for (i=0; i<TESTANZ; i++) {
159 printf("res16[%d] = %d\n", i, res16[i]);
160 printf("res32[%d] = %d\n", i, res32[i]);
162 printf("res16[%d] = %f\n", i, res16[i]);
163 printf("res32[%d] = %f\n", i, res32[i]);