1 //Original:/testcases/core/c_dsp32shiftim_ahalf_rp_s/c_dsp32shiftim_ahalf_rp_s.dsp 2 // Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5) saturated 3 # mach: bfin 4 5 .include "testutils.inc" 6 start 7 8 9 10 // Ashift : positive data, count (+)=right (half reg) 11 // d_lo = ashft (d_lo BY d_lo) 12 // RLx by RLx 13 imm32 r0, 0x00000000; 14 R0.L = -1; 15 imm32 r1, 0x00010001; 16 imm32 r2, 0x00010002; 17 imm32 r3, 0x00010003; 18 imm32 r4, 0x00010004; 19 imm32 r5, 0x00010005; 20 imm32 r6, 0x00010006; 21 imm32 r7, 0x00010007; 22 R0.L = R0.L >>> 1; 23 R1.L = R1.L >>> 1; 24 R2.L = R2.L >>> 1; 25 R3.L = R3.L >>> 1; 26 R4.L = R4.L >>> 1; 27 R5.L = R5.L >>> 1; 28 R6.L = R6.L >>> 1; 29 R7.L = R7.L >>> 1; 30 CHECKREG r0, 0x0000FFFF; 31 CHECKREG r1, 0x00010000; 32 CHECKREG r2, 0x00010001; 33 CHECKREG r3, 0x00010001; 34 CHECKREG r4, 0x00010002; 35 CHECKREG r5, 0x00010002; 36 CHECKREG r6, 0x00010003; 37 CHECKREG r7, 0x00010003; 38 39 imm32 r0, 0x00201001; 40 R1.L = -1; 41 imm32 r2, 0x00202002; 42 imm32 r3, 0x00203003; 43 imm32 r4, 0x00204004; 44 imm32 r5, 0x00205005; 45 imm32 r6, 0x00206006; 46 imm32 r7, 0x00207007; 47 R7.L = R0.L >>> 5; 48 R0.L = R1.L >>> 5; 49 R1.L = R2.L >>> 5; 50 R2.L = R3.L >>> 5; 51 R3.L = R4.L >>> 5; 52 R4.L = R5.L >>> 5; 53 R5.L = R6.L >>> 5; 54 R6.L = R7.L >>> 5; 55 CHECKREG r0, 0x0020FFFF; 56 CHECKREG r1, 0x00010100; 57 CHECKREG r2, 0x00200180; 58 CHECKREG r3, 0x00200200; 59 CHECKREG r4, 0x00200280; 60 CHECKREG r5, 0x00200300; 61 CHECKREG r6, 0x00200004; 62 CHECKREG r7, 0x00200080; 63 64 65 imm32 r0, 0x03001001; 66 imm32 r1, 0x03001001; 67 R2.L = -15; 68 imm32 r3, 0x03003003; 69 imm32 r4, 0x03004004; 70 imm32 r5, 0x03005005; 71 imm32 r6, 0x03006006; 72 imm32 r7, 0x03007007; 73 R6.L = R0.L >>> 2; 74 R7.L = R1.L >>> 2; 75 R0.L = R2.L >>> 2; 76 R1.L = R3.L >>> 2; 77 R2.L = R4.L >>> 2; 78 R3.L = R5.L >>> 2; 79 R4.L = R6.L >>> 2; 80 R5.L = R7.L >>> 2; 81 CHECKREG r0, 0x0300FFFC; 82 CHECKREG r1, 0x03000C00; 83 CHECKREG r2, 0x00201001; 84 CHECKREG r3, 0x03001401; 85 CHECKREG r4, 0x03000100; 86 CHECKREG r5, 0x03000100; 87 CHECKREG r6, 0x03000400; 88 CHECKREG r7, 0x03000400; 89 90 imm32 r0, 0x40001001; 91 imm32 r1, 0x40001001; 92 imm32 r2, 0x40002002; 93 R3.L = -16; 94 imm32 r4, 0x40004004; 95 imm32 r5, 0x40005005; 96 imm32 r6, 0x40006006; 97 imm32 r7, 0x40007007; 98 R5.L = R0.L >>> 13; 99 R6.L = R1.L >>> 13; 100 R7.L = R2.L >>> 13; 101 R0.L = R3.L >>> 13; 102 R1.L = R4.L >>> 13; 103 R2.L = R5.L >>> 13; 104 R3.L = R6.L >>> 13; 105 R4.L = R7.L >>> 13; 106 CHECKREG r0, 0x4000FFFF; 107 CHECKREG r1, 0x40000002; 108 CHECKREG r2, 0x40000000; 109 CHECKREG r3, 0x03000000; 110 CHECKREG r4, 0x40000000; 111 CHECKREG r5, 0x40000000; 112 CHECKREG r6, 0x40000000; 113 CHECKREG r7, 0x40000001; 114 115 // d_lo = ashift (d_hi BY d_lo) 116 // RHx by RLx 117 imm32 r0, 0x50000000; 118 imm32 r1, 0x50010000; 119 imm32 r2, 0x50020000; 120 imm32 r3, 0x50030000; 121 imm32 r4, 0x50040000; 122 imm32 r5, 0x50050000; 123 imm32 r6, 0x50060000; 124 imm32 r7, 0x50070000; 125 R3.L = R0.H >>> 10; 126 R4.L = R1.H >>> 10; 127 R5.L = R2.H >>> 10; 128 R6.L = R3.H >>> 10; 129 R7.L = R4.H >>> 10; 130 R0.L = R5.H >>> 10; 131 R1.L = R6.H >>> 10; 132 R2.L = R7.H >>> 10; 133 CHECKREG r0, 0x50000014; 134 CHECKREG r1, 0x50010014; 135 CHECKREG r2, 0x50020014; 136 CHECKREG r3, 0x50030014; 137 CHECKREG r4, 0x50040014; 138 CHECKREG r5, 0x50050014; 139 CHECKREG r6, 0x50060014; 140 CHECKREG r7, 0x50070014; 141 142 imm32 r0, 0x10016000; 143 R1.L = -1; 144 imm32 r2, 0x20026000; 145 imm32 r3, 0x30036000; 146 imm32 r4, 0x40046000; 147 imm32 r5, 0x50056000; 148 imm32 r6, 0x60060000; 149 imm32 r7, 0x70076000; 150 R0.L = R0.H >>> 11; 151 R1.L = R1.H >>> 11; 152 R2.L = R2.H >>> 11; 153 R3.L = R3.H >>> 11; 154 R4.L = R4.H >>> 11; 155 R5.L = R5.H >>> 11; 156 R6.L = R6.H >>> 11; 157 R7.L = R7.H >>> 11; 158 CHECKREG r0, 0x10010002; 159 CHECKREG r1, 0x5001000A; 160 CHECKREG r2, 0x20020004; 161 CHECKREG r3, 0x30030006; 162 CHECKREG r4, 0x40040008; 163 CHECKREG r5, 0x5005000A; 164 CHECKREG r6, 0x6006000C; 165 CHECKREG r7, 0x7007000E; 166 167 168 imm32 r0, 0x10010700; 169 imm32 r1, 0x10010700; 170 R2.L = -15; 171 imm32 r3, 0x30030700; 172 imm32 r4, 0x40040000; 173 imm32 r5, 0x50050700; 174 imm32 r6, 0x60060000; 175 imm32 r7, 0x70070700; 176 R0.L = R0.H >>> 15; 177 R1.L = R1.H >>> 15; 178 R2.L = R2.H >>> 15; 179 R3.L = R3.H >>> 15; 180 R4.L = R4.H >>> 15; 181 R5.L = R5.H >>> 15; 182 R6.L = R6.H >>> 15; 183 R7.L = R7.H >>> 15; 184 CHECKREG r0, 0x10010000; 185 CHECKREG r1, 0x10010000; 186 CHECKREG r2, 0x20020000; 187 CHECKREG r3, 0x30030000; 188 CHECKREG r4, 0x40040000; 189 CHECKREG r5, 0x50050000; 190 CHECKREG r6, 0x60060000; 191 CHECKREG r7, 0x70070000; 192 193 imm32 r0, 0x18010001; 194 imm32 r1, 0x18010001; 195 imm32 r2, 0x28020002; 196 R3.L = -16; 197 imm32 r4, 0x48040004; 198 imm32 r5, 0x58050005; 199 imm32 r6, 0x68060006; 200 imm32 r7, 0x78070007; 201 R0.L = R0.H >>> 13; 202 R1.L = R1.H >>> 13; 203 R2.L = R2.H >>> 13; 204 R3.L = R3.H >>> 13; 205 R4.L = R4.H >>> 13; 206 R5.L = R5.H >>> 13; 207 R6.L = R6.H >>> 13; 208 R7.L = R7.H >>> 13; 209 CHECKREG r0, 0x18010000; 210 CHECKREG r1, 0x18010000; 211 CHECKREG r2, 0x28020001; 212 CHECKREG r3, 0x30030001; 213 CHECKREG r4, 0x48040002; 214 CHECKREG r5, 0x58050002; 215 CHECKREG r6, 0x68060003; 216 CHECKREG r7, 0x78070003; 217 218 // d_hi = ashft (d_lo BY d_lo) 219 // RLx by RLx 220 imm32 r0, 0x09000091; 221 imm32 r1, 0x09000091; 222 imm32 r2, 0x09000092; 223 imm32 r3, 0x09000093; 224 imm32 r4, 0x09000090; 225 imm32 r5, 0x09000095; 226 imm32 r6, 0x09000096; 227 imm32 r7, 0x09000097; 228 R0.H = R0.L >>> 14; 229 R1.H = R1.L >>> 14; 230 R2.H = R2.L >>> 14; 231 R3.H = R3.L >>> 14; 232 R4.H = R4.L >>> 14; 233 R5.H = R5.L >>> 14; 234 R6.H = R6.L >>> 14; 235 R7.H = R7.L >>> 14; 236 CHECKREG r0, 0x00000091; 237 CHECKREG r1, 0x00000091; 238 CHECKREG r2, 0x00000092; 239 CHECKREG r3, 0x00000093; 240 CHECKREG r4, 0x00000090; 241 CHECKREG r5, 0x00000095; 242 CHECKREG r6, 0x00000096; 243 CHECKREG r7, 0x00000097; 244 245 imm32 r0, 0xa0000001; 246 imm32 r1, 0xa0000001; 247 imm32 r2, 0xa0000002; 248 imm32 r3, 0xa0000003; 249 imm32 r4, 0xa0000004; 250 R5.L = -1; 251 imm32 r6, 0xa0000006; 252 imm32 r7, 0xa0000007; 253 R0.H = R0.L >>> 15; 254 R1.H = R1.L >>> 15; 255 R2.H = R2.L >>> 15; 256 R3.H = R3.L >>> 15; 257 R4.H = R4.L >>> 15; 258 R5.H = R5.L >>> 15; 259 R6.H = R6.L >>> 15; 260 R7.H = R7.L >>> 15; 261 CHECKREG r0, 0x00000001; 262 CHECKREG r1, 0x00000001; 263 CHECKREG r2, 0x00000002; 264 CHECKREG r3, 0x00000003; 265 CHECKREG r4, 0x00000004; 266 CHECKREG r5, 0xFFFFFFFF; 267 CHECKREG r6, 0x00000006; 268 CHECKREG r7, 0x00000007; 269 270 271 imm32 r0, 0xb0001001; 272 imm32 r1, 0xb0001001; 273 imm32 r1, 0xb0002002; 274 imm32 r3, 0xb0003003; 275 imm32 r4, 0xb0004004; 276 imm32 r5, 0xb0005005; 277 R6.L = -15; 278 imm32 r7, 0xb0007007; 279 R0.H = R0.L >>> 6; 280 R1.H = R1.L >>> 6; 281 R2.H = R2.L >>> 6; 282 R3.H = R3.L >>> 6; 283 R4.H = R4.L >>> 6; 284 R5.H = R5.L >>> 6; 285 R6.H = R6.L >>> 6; 286 R7.H = R7.L >>> 6; 287 CHECKREG r0, 0x00401001; 288 CHECKREG r1, 0x00802002; 289 CHECKREG r2, 0x00000002; 290 CHECKREG r3, 0x00C03003; 291 CHECKREG r4, 0x01004004; 292 CHECKREG r5, 0x01405005; 293 CHECKREG r6, 0xFFFFFFF1; 294 CHECKREG r7, 0x01C07007; 295 296 imm32 r0, 0x0c001c01; 297 imm32 r1, 0x0c002c01; 298 imm32 r2, 0x0c002c02; 299 imm32 r3, 0x0c003c03; 300 imm32 r4, 0x0c004c04; 301 imm32 r5, 0x0c005c05; 302 imm32 r6, 0x0c006c06; 303 R7.L = -16; 304 R0.H = R0.L >>> 7; 305 R1.H = R1.L >>> 7; 306 R2.H = R2.L >>> 7; 307 R3.H = R3.L >>> 7; 308 R4.H = R4.L >>> 7; 309 R5.H = R5.L >>> 7; 310 R6.H = R6.L >>> 7; 311 R7.H = R7.L >>> 7; 312 CHECKREG r0, 0x00381C01; 313 CHECKREG r1, 0x00582C01; 314 CHECKREG r2, 0x00582C02; 315 CHECKREG r3, 0x00783C03; 316 CHECKREG r4, 0x00984C04; 317 CHECKREG r5, 0x00B85C05; 318 CHECKREG r6, 0x00D86C06; 319 CHECKREG r7, 0xFFFFFFF0; 320 321 // d_lo = ashft (d_hi BY d_lo) 322 // RHx by RLx 323 imm32 r0, 0x0d01d000; 324 imm32 r1, 0x0d01d000; 325 imm32 r2, 0x0d02d000; 326 imm32 r3, 0x0d03d000; 327 R4.L = -1; 328 imm32 r5, 0x0d05d000; 329 imm32 r6, 0x0d06d000; 330 imm32 r7, 0x0d07d000; 331 R0.H = R0.H >>> 4; 332 R1.H = R1.H >>> 4; 333 R2.H = R2.H >>> 4; 334 R3.H = R3.H >>> 4; 335 R4.H = R4.H >>> 4; 336 R5.H = R5.H >>> 4; 337 R6.H = R6.H >>> 4; 338 R7.H = R6.H >>> 4; 339 CHECKREG r0, 0x00D0D000; 340 CHECKREG r1, 0x00D0D000; 341 CHECKREG r2, 0x00D0D000; 342 CHECKREG r3, 0x00D0D000; 343 CHECKREG r4, 0x0009FFFF; 344 CHECKREG r5, 0x00D0D000; 345 CHECKREG r6, 0x00D0D000; 346 CHECKREG r7, 0x000DD000; 347 348 imm32 r0, 0x1e010000; 349 imm32 r1, 0x1e010000; 350 imm32 r2, 0x2e020000; 351 imm32 r3, 0x3e030000; 352 imm32 r4, 0x4e040000; 353 R5.L = -1; 354 imm32 r6, 0x6e060000; 355 imm32 r7, 0x7e070000; 356 R7.H = R0.H >>> 15; 357 R6.H = R1.H >>> 15; 358 R0.H = R2.H >>> 15; 359 R1.H = R3.H >>> 15; 360 R2.H = R4.H >>> 15; 361 R3.H = R5.H >>> 15; 362 R4.H = R6.H >>> 15; 363 R5.H = R7.H >>> 15; 364 CHECKREG r0, 0x00000000; 365 CHECKREG r1, 0x00000000; 366 CHECKREG r2, 0x00000000; 367 CHECKREG r3, 0x00000000; 368 CHECKREG r4, 0x00000000; 369 CHECKREG r5, 0x0000FFFF; 370 CHECKREG r6, 0x00000000; 371 CHECKREG r7, 0x00000000; 372 373 imm32 r0, 0x1f010000; 374 imm32 r1, 0x1f010000; 375 imm32 r2, 0x2f020000; 376 imm32 r3, 0x3f030000; 377 imm32 r4, 0x4f040000; 378 imm32 r5, 0x5f050000; 379 R6.L = -15; 380 imm32 r7, 0x70070000; 381 R6.H = R0.H >>> 6; 382 R7.H = R1.H >>> 6; 383 R5.H = R2.H >>> 6; 384 R0.H = R3.H >>> 6; 385 R1.H = R4.H >>> 6; 386 R2.H = R5.H >>> 6; 387 R3.H = R6.H >>> 6; 388 R4.H = R7.H >>> 6; 389 CHECKREG r0, 0x00FC0000; 390 CHECKREG r1, 0x013C0000; 391 CHECKREG r2, 0x00020000; 392 CHECKREG r3, 0x00010000; 393 CHECKREG r4, 0x00010000; 394 CHECKREG r5, 0x00BC0000; 395 CHECKREG r6, 0x007CFFF1; 396 CHECKREG r7, 0x007C0000; 397 398 imm32 r0, 0x11010a00; 399 imm32 r1, 0x11010b00; 400 imm32 r2, 0x21020d00; 401 imm32 r2, 0x31030c00; 402 imm32 r4, 0x41040d00; 403 imm32 r5, 0x51050e00; 404 imm32 r6, 0x610600f0; 405 R7.L = -16; 406 R5.H = R0.H >>> 7; 407 R6.H = R1.H >>> 7; 408 R7.H = R2.H >>> 7; 409 R2.H = R3.H >>> 7; 410 R3.H = R4.H >>> 7; 411 R4.H = R5.H >>> 7; 412 R0.H = R6.H >>> 7; 413 R1.H = R7.H >>> 7; 414 CHECKREG r0, 0x00000A00; 415 CHECKREG r1, 0x00000B00; 416 CHECKREG r2, 0x00000C00; 417 CHECKREG r3, 0x00820000; 418 CHECKREG r4, 0x00000D00; 419 CHECKREG r5, 0x00220E00; 420 CHECKREG r6, 0x002200F0; 421 CHECKREG r7, 0x0062FFF0; 422 pass 423