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