1 //Original:/testcases/core/c_dsp32shift_lhalf_rp/c_dsp32shift_lhalf_rp.dsp 2 // Spec Reference: dsp32shift lshift 3 # mach: bfin 4 5 .include "testutils.inc" 6 start 7 8 9 10 // lshift : positive data, count (+)=left (half reg) 11 // d_lo = lshift (d_lo BY d_lo) 12 // RLx by RLx 13 imm32 r0, 0x00000000; 14 R0.L = -1; 15 imm32 r1, 0x00000001; 16 imm32 r2, 0x00000002; 17 imm32 r3, 0x00000003; 18 imm32 r4, 0x00000004; 19 imm32 r5, 0x00000005; 20 imm32 r6, 0x00000006; 21 imm32 r7, 0x00000007; 22 //rl0 = lshift (rl0 by rl0); 23 R1.L = LSHIFT R1.L BY R0.L; 24 R2.L = LSHIFT R2.L BY R0.L; 25 R3.L = LSHIFT R3.L BY R0.L; 26 R4.L = LSHIFT R4.L BY R0.L; 27 R5.L = LSHIFT R5.L BY R0.L; 28 R6.L = LSHIFT R6.L BY R0.L; 29 R7.L = LSHIFT R7.L BY R0.L; 30 //CHECKREG r0, 0x00000000; 31 CHECKREG r1, 0x00000000; 32 CHECKREG r2, 0x00000001; 33 CHECKREG r3, 0x00000001; 34 CHECKREG r4, 0x00000002; 35 CHECKREG r5, 0x00000002; 36 CHECKREG r6, 0x00000003; 37 CHECKREG r7, 0x00000003; 38 39 imm32 r0, 0x00001001; 40 R1.L = -1; 41 imm32 r2, 0x00002002; 42 imm32 r3, 0x00003003; 43 imm32 r4, 0x00004004; 44 imm32 r5, 0x00005005; 45 imm32 r6, 0x00006006; 46 imm32 r7, 0x00007007; 47 R0.L = LSHIFT R0.L BY R1.L; 48 //rl1 = lshift (rl1 by rl1); 49 R2.L = LSHIFT R2.L BY R1.L; 50 R3.L = LSHIFT R3.L BY R1.L; 51 R4.L = LSHIFT R4.L BY R1.L; 52 R5.L = LSHIFT R5.L BY R1.L; 53 R6.L = LSHIFT R6.L BY R1.L; 54 R7.L = LSHIFT R7.L BY R1.L; 55 CHECKREG r0, 0x00000800; 56 //CHECKREG r1, 0x00000001; 57 CHECKREG r2, 0x00001001; 58 CHECKREG r3, 0x00001801; 59 CHECKREG r4, 0x00002002; 60 CHECKREG r5, 0x00002802; 61 CHECKREG r6, 0x00003003; 62 CHECKREG r7, 0x00003803; 63 64 65 imm32 r0, 0x00001001; 66 imm32 r1, 0x00001001; 67 R2.L = -15; 68 imm32 r3, 0x00003003; 69 imm32 r4, 0x00004004; 70 imm32 r5, 0x00005005; 71 imm32 r6, 0x00006006; 72 imm32 r7, 0x00007007; 73 R0.L = LSHIFT R0.L BY R2.L; 74 R1.L = LSHIFT R1.L BY R2.L; 75 //rl2 = lshift (rl2 by rl2); 76 R3.L = LSHIFT R3.L BY R2.L; 77 R4.L = LSHIFT R4.L BY R2.L; 78 R5.L = LSHIFT R5.L BY R2.L; 79 R6.L = LSHIFT R6.L BY R2.L; 80 R7.L = LSHIFT R7.L BY R2.L; 81 CHECKREG r0, 0x00000000; 82 CHECKREG r1, 0x00000000; 83 //CHECKREG r2, 0x0000000f; 84 CHECKREG r3, 0x00000000; 85 CHECKREG r4, 0x00000000; 86 CHECKREG r5, 0x00000000; 87 CHECKREG r6, 0x00000000; 88 CHECKREG r7, 0x00000000; 89 90 imm32 r0, 0x00001001; 91 imm32 r1, 0x00001001; 92 imm32 r2, 0x00002002; 93 R3.L = -16; 94 imm32 r4, 0x00004004; 95 imm32 r5, 0x00005005; 96 imm32 r6, 0x00006006; 97 imm32 r7, 0x00007007; 98 R0.L = LSHIFT R0.L BY R3.L; 99 R1.L = LSHIFT R1.L BY R3.L; 100 R2.L = LSHIFT R2.L BY R3.L; 101 //rl3 = lshift (rl3 by rl3); 102 R4.L = LSHIFT R4.L BY R3.L; 103 R5.L = LSHIFT R5.L BY R3.L; 104 R6.L = LSHIFT R6.L BY R3.L; 105 R7.L = LSHIFT R7.L BY R3.L; 106 CHECKREG r0, 0x00000000; 107 CHECKREG r1, 0x00000000; 108 CHECKREG r2, 0x00000000; 109 //CHECKREG r3, 0x00000010; 110 CHECKREG r4, 0x00000000; 111 CHECKREG r5, 0x00000000; 112 CHECKREG r6, 0x00000000; 113 CHECKREG r7, 0x00000000; 114 115 // d_lo = ashft (d_hi BY d_lo) 116 // RHx by RLx 117 imm32 r0, 0x00000000; 118 imm32 r1, 0x00010000; 119 imm32 r2, 0x00020000; 120 imm32 r3, 0x00030000; 121 imm32 r4, 0x00040000; 122 imm32 r5, 0x00050000; 123 imm32 r6, 0x00060000; 124 imm32 r7, 0x00070000; 125 R0.L = LSHIFT R0.H BY R0.L; 126 R1.L = LSHIFT R1.H BY R0.L; 127 R2.L = LSHIFT R2.H BY R0.L; 128 R3.L = LSHIFT R3.H BY R0.L; 129 R4.L = LSHIFT R4.H BY R0.L; 130 R5.L = LSHIFT R5.H BY R0.L; 131 R6.L = LSHIFT R6.H BY R0.L; 132 R7.L = LSHIFT R7.H BY R0.L; 133 CHECKREG r0, 0x00000000; 134 CHECKREG r1, 0x00010001; 135 CHECKREG r2, 0x00020002; 136 CHECKREG r3, 0x00030003; 137 CHECKREG r4, 0x00040004; 138 CHECKREG r5, 0x00050005; 139 CHECKREG r6, 0x00060006; 140 CHECKREG r7, 0x00070007; 141 142 imm32 r0, 0x10010000; 143 R1.L = -1; 144 imm32 r2, 0x20020000; 145 imm32 r3, 0x30030000; 146 imm32 r4, 0x40040000; 147 imm32 r5, 0x50050000; 148 imm32 r6, 0x60060000; 149 imm32 r7, 0x70070000; 150 R0.L = LSHIFT R0.H BY R1.L; 151 //rl1 = lshift (rh1 by rl1); 152 R2.L = LSHIFT R2.H BY R1.L; 153 R3.L = LSHIFT R3.H BY R1.L; 154 R4.L = LSHIFT R4.H BY R1.L; 155 R5.L = LSHIFT R5.H BY R1.L; 156 R6.L = LSHIFT R6.H BY R1.L; 157 R7.L = LSHIFT R7.H BY R1.L; 158 CHECKREG r0, 0x10010800; 159 //CHECKREG r1, 0x00010001; 160 CHECKREG r2, 0x20021001; 161 CHECKREG r3, 0x30031801; 162 CHECKREG r4, 0x40042002; 163 CHECKREG r5, 0x50052802; 164 CHECKREG r6, 0x60063003; 165 CHECKREG r7, 0x70073803; 166 167 168 imm32 r0, 0x10010000; 169 imm32 r1, 0x10010000; 170 R2.L = -15; 171 imm32 r3, 0x30030000; 172 imm32 r4, 0x40040000; 173 imm32 r5, 0x50050000; 174 imm32 r6, 0x60060000; 175 imm32 r7, 0x70070000; 176 R0.L = LSHIFT R0.H BY R2.L; 177 R1.L = LSHIFT R1.H BY R2.L; 178 //rl2 = lshift (rh2 by rl2); 179 R3.L = LSHIFT R3.H BY R2.L; 180 R4.L = LSHIFT R4.H BY R2.L; 181 R5.L = LSHIFT R5.H BY R2.L; 182 R6.L = LSHIFT R6.H BY R2.L; 183 R7.L = LSHIFT R7.H BY R2.L; 184 CHECKREG r0, 0x10010000; 185 CHECKREG r1, 0x10010000; 186 //CHECKREG r2, 0x2002000f; 187 CHECKREG r3, 0x30030000; 188 CHECKREG r4, 0x40040000; 189 CHECKREG r5, 0x50050000; 190 CHECKREG r6, 0x60060000; 191 CHECKREG r7, 0x70070000; 192 193 imm32 r0, 0x10010001; 194 imm32 r1, 0x10010001; 195 imm32 r2, 0x20020002; 196 R3.L = -16; 197 imm32 r4, 0x40040004; 198 imm32 r5, 0x50050005; 199 imm32 r6, 0x60060006; 200 imm32 r7, 0x70070007; 201 R0.L = LSHIFT R0.H BY R3.L; 202 R1.L = LSHIFT R1.H BY R3.L; 203 R2.L = LSHIFT R2.H BY R3.L; 204 //rl3 = lshift (rh3 by rl3); 205 R4.L = LSHIFT R4.H BY R3.L; 206 R5.L = LSHIFT R5.H BY R3.L; 207 R6.L = LSHIFT R6.H BY R3.L; 208 R7.L = LSHIFT R7.H BY R3.L; 209 CHECKREG r0, 0x10010000; 210 CHECKREG r1, 0x10010000; 211 CHECKREG r2, 0x20020000; 212 //CHECKREG r3, 0x30030010; 213 CHECKREG r4, 0x40040000; 214 CHECKREG r5, 0x50050000; 215 CHECKREG r6, 0x60060000; 216 CHECKREG r7, 0x70070000; 217 218 // d_hi = ashft (d_lo BY d_lo) 219 // RLx by RLx 220 imm32 r0, 0x00000001; 221 imm32 r1, 0x00000001; 222 imm32 r2, 0x00000002; 223 imm32 r3, 0x00000003; 224 imm32 r4, 0x00000000; 225 imm32 r5, 0x00000005; 226 imm32 r6, 0x00000006; 227 imm32 r7, 0x00000007; 228 R0.H = LSHIFT R0.L BY R4.L; 229 R1.H = LSHIFT R1.L BY R4.L; 230 R2.H = LSHIFT R2.L BY R4.L; 231 R3.H = LSHIFT R3.L BY R4.L; 232 //rh4 = lshift (rl4 by rl4); 233 R5.H = LSHIFT R5.L BY R4.L; 234 R6.H = LSHIFT R6.L BY R4.L; 235 R7.H = LSHIFT R7.L BY R4.L; 236 CHECKREG r0, 0x00010001; 237 CHECKREG r1, 0x00010001; 238 CHECKREG r2, 0x00020002; 239 CHECKREG r3, 0x00030003; 240 //CHECKREG r4, 0x00040004; 241 CHECKREG r5, 0x00050005; 242 CHECKREG r6, 0x00060006; 243 CHECKREG r7, 0x00070007; 244 245 imm32 r0, 0x00000001; 246 imm32 r1, 0x00000001; 247 imm32 r2, 0x00000002; 248 imm32 r3, 0x00000003; 249 imm32 r4, 0x00000004; 250 R5.L = -1; 251 imm32 r6, 0x00000006; 252 imm32 r7, 0x00000007; 253 R0.H = LSHIFT R0.L BY R5.L; 254 R1.H = LSHIFT R1.L BY R5.L; 255 R2.H = LSHIFT R2.L BY R5.L; 256 R3.H = LSHIFT R3.L BY R5.L; 257 R4.H = LSHIFT R4.L BY R5.L; 258 //rh5 = lshift (rl5 by rl5); 259 R6.H = LSHIFT R6.L BY R5.L; 260 R7.H = LSHIFT R7.L BY R5.L; 261 CHECKREG r0, 0x00000001; 262 CHECKREG r1, 0x00000001; 263 CHECKREG r2, 0x00010002; 264 CHECKREG r3, 0x00010003; 265 CHECKREG r4, 0x00020004; 266 //CHECKREG r5, 0x00020005; 267 CHECKREG r6, 0x00030006; 268 CHECKREG r7, 0x00030007; 269 270 271 imm32 r0, 0x00001001; 272 imm32 r1, 0x00001001; 273 imm32 r1, 0x00002002; 274 imm32 r3, 0x00003003; 275 imm32 r4, 0x00004004; 276 imm32 r5, 0x00005005; 277 R6.L = -15; 278 imm32 r7, 0x00007007; 279 R0.H = LSHIFT R0.L BY R6.L; 280 R1.H = LSHIFT R1.L BY R6.L; 281 R2.H = LSHIFT R2.L BY R6.L; 282 R3.H = LSHIFT R3.L BY R6.L; 283 R4.H = LSHIFT R4.L BY R6.L; 284 R5.H = LSHIFT R5.L BY R6.L; 285 //rh6 = lshift (rl6 by rl6); 286 R7.H = LSHIFT R7.L BY R6.L; 287 CHECKREG r0, 0x00001001; 288 CHECKREG r1, 0x00002002; 289 CHECKREG r2, 0x00000002; 290 CHECKREG r3, 0x00003003; 291 CHECKREG r4, 0x00004004; 292 CHECKREG r5, 0x00005005; 293 //CHECKREG r6, 0x00006006; 294 CHECKREG r7, 0x00007007; 295 296 imm32 r0, 0x00001001; 297 imm32 r1, 0x00002001; 298 imm32 r2, 0x00002002; 299 imm32 r3, 0x00003003; 300 imm32 r4, 0x00004004; 301 imm32 r5, 0x00005005; 302 imm32 r6, 0x00006006; 303 R7.L = -16; 304 R0.H = LSHIFT R0.L BY R7.L; 305 R1.H = LSHIFT R1.L BY R7.L; 306 R2.H = LSHIFT R2.L BY R7.L; 307 R3.H = LSHIFT R3.L BY R7.L; 308 R4.H = LSHIFT R4.L BY R7.L; 309 R5.H = LSHIFT R5.L BY R7.L; 310 R6.H = LSHIFT R6.L BY R7.L; 311 R7.H = LSHIFT R7.L BY R7.L; 312 CHECKREG r0, 0x00001001; 313 CHECKREG r1, 0x00002001; 314 CHECKREG r2, 0x00002002; 315 CHECKREG r3, 0x00003003; 316 CHECKREG r4, 0x00004004; 317 CHECKREG r5, 0x00005005; 318 CHECKREG r6, 0x00006006; 319 //CHECKREG r7, 0x00007007; 320 321 // d_lo = ashft (d_hi BY d_lo) 322 // RHx by RLx 323 imm32 r0, 0x00010000; 324 imm32 r1, 0x00010000; 325 imm32 r2, 0x00020000; 326 imm32 r3, 0x00030000; 327 R4.L = -1; 328 imm32 r5, 0x00050000; 329 imm32 r6, 0x00060000; 330 imm32 r7, 0x00070000; 331 R0.H = LSHIFT R0.H BY R4.L; 332 R1.H = LSHIFT R1.H BY R4.L; 333 R2.H = LSHIFT R2.H BY R4.L; 334 R3.H = LSHIFT R3.H BY R4.L; 335 //rh4 = lshift (rh4 by rl4); 336 R5.H = LSHIFT R5.H BY R4.L; 337 R6.H = LSHIFT R6.H BY R4.L; 338 R7.H = LSHIFT R7.H BY R4.L; 339 CHECKREG r0, 0x00000000; 340 CHECKREG r1, 0x00000000; 341 CHECKREG r2, 0x00010000; 342 CHECKREG r3, 0x00010000; 343 //CHECKREG r4, 0x00020000; 344 CHECKREG r5, 0x00020000; 345 CHECKREG r6, 0x00030000; 346 CHECKREG r7, 0x00030000; 347 348 imm32 r0, 0x10010000; 349 imm32 r1, 0x10010000; 350 imm32 r2, 0x20020000; 351 imm32 r3, 0x30030000; 352 imm32 r4, 0x40040000; 353 R5.L = -1; 354 imm32 r6, 0x60060000; 355 imm32 r7, 0x70070000; 356 R0.H = LSHIFT R0.H BY R5.L; 357 R1.H = LSHIFT R1.H BY R5.L; 358 R2.H = LSHIFT R2.H BY R5.L; 359 R3.H = LSHIFT R3.H BY R5.L; 360 R4.H = LSHIFT R4.H BY R5.L; 361 //rh5 = lshift (rh5 by rl5); 362 R6.H = LSHIFT R6.H BY R5.L; 363 R7.H = LSHIFT R7.H BY R5.L; 364 CHECKREG r0, 0x08000000; 365 CHECKREG r1, 0x08000000; 366 CHECKREG r2, 0x10010000; 367 CHECKREG r3, 0x18010000; 368 CHECKREG r4, 0x20020000; 369 //CHECKREG r5, 0x28020000; 370 CHECKREG r6, 0x30030000; 371 CHECKREG r7, 0x38030000; 372 373 374 imm32 r0, 0x10010000; 375 imm32 r1, 0x10010000; 376 imm32 r2, 0x20020000; 377 imm32 r3, 0x30030000; 378 imm32 r4, 0x40040000; 379 imm32 r5, 0x50050000; 380 R6.L = -15; 381 imm32 r7, 0x70070000; 382 R0.L = LSHIFT R0.H BY R6.L; 383 R1.L = LSHIFT R1.H BY R6.L; 384 R2.L = LSHIFT R2.H BY R6.L; 385 R3.L = LSHIFT R3.H BY R6.L; 386 R4.L = LSHIFT R4.H BY R6.L; 387 R5.L = LSHIFT R5.H BY R6.L; 388 //rl6 = lshift (rh6 by rl6); 389 R7.L = LSHIFT R7.H BY R6.L; 390 CHECKREG r0, 0x10010000; 391 CHECKREG r1, 0x10010000; 392 CHECKREG r2, 0x20020000; 393 CHECKREG r3, 0x30030000; 394 CHECKREG r4, 0x40040000; 395 CHECKREG r5, 0x50050000; 396 //CHECKREG r6, 0x60060000; 397 CHECKREG r7, 0x70070000; 398 399 imm32 r0, 0x10010000; 400 imm32 r1, 0x10010000; 401 imm32 r2, 0x20020000; 402 imm32 r2, 0x30030000; 403 imm32 r4, 0x40040000; 404 imm32 r5, 0x50050000; 405 imm32 r6, 0x60060000; 406 R7.L = -16; 407 R0.H = LSHIFT R0.H BY R7.L; 408 R1.H = LSHIFT R1.H BY R7.L; 409 R2.H = LSHIFT R2.H BY R7.L; 410 R3.H = LSHIFT R3.H BY R7.L; 411 R4.H = LSHIFT R4.H BY R7.L; 412 R5.H = LSHIFT R5.H BY R7.L; 413 R6.H = LSHIFT R6.H BY R7.L; 414 //rh7 = lshift (rh7 by rl7); 415 CHECKREG r0, 0x00000000; 416 CHECKREG r1, 0x00000000; 417 CHECKREG r2, 0x00000000; 418 CHECKREG r3, 0x00000000; 419 CHECKREG r4, 0x00000000; 420 CHECKREG r5, 0x00000000; 421 CHECKREG r6, 0x00000000; 422 //CHECKREG r7, -16; 423 pass 424