1/* Vector Dot Product 2 * This program computes a simple vector dot product using hard 3 * wired input buffers of 128 samples each. These values are in 4 * 1.15 signed . 5 */ 6# mach: bfin 7 8.include "testutils.inc" 9 start 10 11 // load buffer addresses into pointer regs 12 loadsym I0, data0; 13 loadsym I1, data1; 14 15 // loop control 16 // number of loop iterations is 2^N with r4|=1<<N 17 // to process 128 samples need 64 iterations 18 P4 = 63; 19 LSETUP ( loop1 , loop1 ) LC0 = P4; 20 A1 = A0 = 0; 21 22 // For now, serialize two 32b loads. 23 // These should be done in parallel with the dual mac. 24 25 R0 = [ I0 ++ ]; R1 = [ I1 ++ ]; 26 27loop1: A1 += R0.H * R1.H, A0 += R0.L * R1.L || R0 = [ I0 ++ ] || R1 = [ I1 ++ ]; 28 29 A1 += R0.H * R1.H, A0 += R0.L * R1.L; 30 31 // extract two partial results from accumulators 32 // and do final addition 33 R0 = ( A0 += A1 ); 34 35 DBGA ( R0.L , 0x5600 ); // 0x00545600 = 0.002574 fract 36 DBGA ( R0.H , 0x0054 ); 37 38 pass 39 40 .data 41data0: 42 .dw 0x0 43 .dw 0x2 44 .dw 0x4 45 .dw 0x6 46 .dw 0x8 47 .dw 0xA 48 .dw 0xC 49 .dw 0xE 50 .dw 0x10 51 .dw 0x12 52 .dw 0x14 53 .dw 0x16 54 .dw 0x18 55 .dw 0x1A 56 .dw 0x1C 57 .dw 0x1E 58 .dw 0x20 59 .dw 0x22 60 .dw 0x24 61 .dw 0x26 62 .dw 0x28 63 .dw 0x2A 64 .dw 0x2C 65 .dw 0x2E 66 .dw 0x30 67 .dw 0x32 68 .dw 0x34 69 .dw 0x36 70 .dw 0x38 71 .dw 0x3A 72 .dw 0x3C 73 .dw 0x3E 74 .dw 0x40 75 .dw 0x42 76 .dw 0x44 77 .dw 0x46 78 .dw 0x48 79 .dw 0x4A 80 .dw 0x4C 81 .dw 0x4E 82 .dw 0x50 83 .dw 0x52 84 .dw 0x54 85 .dw 0x56 86 .dw 0x58 87 .dw 0x5A 88 .dw 0x5C 89 .dw 0x5E 90 .dw 0x60 91 .dw 0x62 92 .dw 0x64 93 .dw 0x66 94 .dw 0x68 95 .dw 0x6A 96 .dw 0x6C 97 .dw 0x6E 98 .dw 0x70 99 .dw 0x72 100 .dw 0x74 101 .dw 0x76 102 .dw 0x78 103 .dw 0x7A 104 .dw 0x7C 105 .dw 0x7E 106 .dw 0x80 107 .dw 0x82 108 .dw 0x84 109 .dw 0x86 110 .dw 0x88 111 .dw 0x8A 112 .dw 0x8C 113 .dw 0x8E 114 .dw 0x90 115 .dw 0x92 116 .dw 0x94 117 .dw 0x96 118 .dw 0x98 119 .dw 0x9A 120 .dw 0x9C 121 .dw 0x9E 122 .dw 0xA0 123 .dw 0xA2 124 .dw 0xA4 125 .dw 0xA6 126 .dw 0xA8 127 .dw 0xAA 128 .dw 0xAC 129 .dw 0xAE 130 .dw 0xB0 131 .dw 0xB2 132 .dw 0xB4 133 .dw 0xB6 134 .dw 0xB8 135 .dw 0xBA 136 .dw 0xBC 137 .dw 0xBE 138 .dw 0xC0 139 .dw 0xC2 140 .dw 0xC4 141 .dw 0xC6 142 .dw 0xC8 143 .dw 0xCA 144 .dw 0xCC 145 .dw 0xCE 146 .dw 0xD0 147 .dw 0xD2 148 .dw 0xD4 149 .dw 0xD6 150 .dw 0xD8 151 .dw 0xDA 152 .dw 0xDC 153 .dw 0xDE 154 .dw 0xE0 155 .dw 0xE2 156 .dw 0xE4 157 .dw 0xE6 158 .dw 0xE8 159 .dw 0xEA 160 .dw 0xEC 161 .dw 0xEE 162 .dw 0xF0 163 .dw 0xF2 164 .dw 0xF4 165 .dw 0xF6 166 .dw 0xF8 167 .dw 0xFA 168 .dw 0xFC 169 .dw 0xFE 170 171data1: 172 .dw 0x0 173 .dw 0x2 174 .dw 0x4 175 .dw 0x6 176 .dw 0x8 177 .dw 0xA 178 .dw 0xC 179 .dw 0xE 180 .dw 0x10 181 .dw 0x12 182 .dw 0x14 183 .dw 0x16 184 .dw 0x18 185 .dw 0x1A 186 .dw 0x1C 187 .dw 0x1E 188 .dw 0x20 189 .dw 0x22 190 .dw 0x24 191 .dw 0x26 192 .dw 0x28 193 .dw 0x2A 194 .dw 0x2C 195 .dw 0x2E 196 .dw 0x30 197 .dw 0x32 198 .dw 0x34 199 .dw 0x36 200 .dw 0x38 201 .dw 0x3A 202 .dw 0x3C 203 .dw 0x3E 204 .dw 0x40 205 .dw 0x42 206 .dw 0x44 207 .dw 0x46 208 .dw 0x48 209 .dw 0x4A 210 .dw 0x4C 211 .dw 0x4E 212 .dw 0x50 213 .dw 0x52 214 .dw 0x54 215 .dw 0x56 216 .dw 0x58 217 .dw 0x5A 218 .dw 0x5C 219 .dw 0x5E 220 .dw 0x60 221 .dw 0x62 222 .dw 0x64 223 .dw 0x66 224 .dw 0x68 225 .dw 0x6A 226 .dw 0x6C 227 .dw 0x6E 228 .dw 0x70 229 .dw 0x72 230 .dw 0x74 231 .dw 0x76 232 .dw 0x78 233 .dw 0x7A 234 .dw 0x7C 235 .dw 0x7E 236 .dw 0x80 237 .dw 0x82 238 .dw 0x84 239 .dw 0x86 240 .dw 0x88 241 .dw 0x8A 242 .dw 0x8C 243 .dw 0x8E 244 .dw 0x90 245 .dw 0x92 246 .dw 0x94 247 .dw 0x96 248 .dw 0x98 249 .dw 0x9A 250 .dw 0x9C 251 .dw 0x9E 252 .dw 0xA0 253 .dw 0xA2 254 .dw 0xA4 255 .dw 0xA6 256 .dw 0xA8 257 .dw 0xAA 258 .dw 0xAC 259 .dw 0xAE 260 .dw 0xB0 261 .dw 0xB2 262 .dw 0xB4 263 .dw 0xB6 264 .dw 0xB8 265 .dw 0xBA 266 .dw 0xBC 267 .dw 0xBE 268 .dw 0xC0 269 .dw 0xC2 270 .dw 0xC4 271 .dw 0xC6 272 .dw 0xC8 273 .dw 0xCA 274 .dw 0xCC 275 .dw 0xCE 276 .dw 0xD0 277 .dw 0xD2 278 .dw 0xD4 279 .dw 0xD6 280 .dw 0xD8 281 .dw 0xDA 282 .dw 0xDC 283 .dw 0xDE 284 .dw 0xE0 285 .dw 0xE2 286 .dw 0xE4 287 .dw 0xE6 288 .dw 0xE8 289 .dw 0xEA 290 .dw 0xEC 291 .dw 0xEE 292 .dw 0xF0 293 .dw 0xF2 294 .dw 0xF4 295 .dw 0xF6 296 .dw 0xF8 297 .dw 0xFA 298 .dw 0xFC 299 .dw 0xFE 300