1//Original:/testcases/core/c_dsp32shift_lhalf_ln/c_dsp32shift_lhalf_ln.dsp 2// Spec Reference: dsp32shift lshift 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9 10// lshift : neg data, count (+)=left (half reg) 11// d_lo = lshift (d_lo BY d_lo) 12// RLx by RLx 13imm32 r0, 0x00000000; 14imm32 r1, 0x0000c001; 15imm32 r2, 0x0000c002; 16imm32 r3, 0x0000c003; 17imm32 r4, 0x0000c004; 18imm32 r5, 0x0000c005; 19imm32 r6, 0x0000c006; 20imm32 r7, 0x0000c007; 21R0.L = LSHIFT R0.L BY R0.L; 22R1.L = LSHIFT R1.L BY R0.L; 23R2.L = LSHIFT R2.L BY R0.L; 24R3.L = LSHIFT R3.L BY R0.L; 25R4.L = LSHIFT R4.L BY R0.L; 26R5.L = LSHIFT R5.L BY R0.L; 27R6.L = LSHIFT R6.L BY R0.L; 28R7.L = LSHIFT R7.L BY R0.L; 29CHECKREG r0, 0x00000000; 30CHECKREG r1, 0x0000c001; 31CHECKREG r2, 0x0000c002; 32CHECKREG r3, 0x0000c003; 33CHECKREG r4, 0x0000c004; 34CHECKREG r5, 0x0000c005; 35CHECKREG r6, 0x0000c006; 36CHECKREG r7, 0x0000c007; 37 38imm32 r0, 0x00008001; 39imm32 r1, 0x00000001; 40imm32 r2, 0x0000d002; 41imm32 r3, 0x0000e003; 42imm32 r4, 0x0000f004; 43imm32 r5, 0x0000c005; 44imm32 r6, 0x0000d006; 45imm32 r7, 0x0000e007; 46R0.L = LSHIFT R0.L BY R1.L; 47//rl1 = lshift (rl1 by rl1); 48R2.L = LSHIFT R2.L BY R1.L; 49R3.L = LSHIFT R3.L BY R1.L; 50R4.L = LSHIFT R4.L BY R1.L; 51R5.L = LSHIFT R5.L BY R1.L; 52R6.L = LSHIFT R6.L BY R1.L; 53R7.L = LSHIFT R7.L BY R1.L; 54//CHECKREG r0, 0x00008002; /* why fail with real data R0 = 0x00000002 */ 55CHECKREG r1, 0x00000001; 56CHECKREG r2, 0x0000a004; 57CHECKREG r3, 0x0000c006; 58CHECKREG r4, 0x0000e008; 59CHECKREG r5, 0x0000800a; 60CHECKREG r6, 0x0000a00c; 61CHECKREG r7, 0x0000c00e; 62 63 64imm32 r0, 0x0000c001; 65imm32 r1, 0x0000d001; 66imm32 r2, 0x0000000f; 67imm32 r3, 0x0000e003; 68imm32 r4, 0x0000f004; 69imm32 r5, 0x0000f005; 70imm32 r6, 0x0000f006; 71imm32 r7, 0x0000f007; 72R0.L = LSHIFT R0.L BY R2.L; 73R1.L = LSHIFT R1.L BY R2.L; 74//rl2 = lshift (rl2 by rl2); 75R3.L = LSHIFT R3.L BY R2.L; 76R4.L = LSHIFT R4.L BY R2.L; 77R5.L = LSHIFT R5.L BY R2.L; 78R6.L = LSHIFT R6.L BY R2.L; 79R7.L = LSHIFT R7.L BY R2.L; 80CHECKREG r0, 0x00008000; 81CHECKREG r1, 0x00008000; 82CHECKREG r2, 0x0000000f; 83CHECKREG r3, 0x00008000; 84CHECKREG r4, 0x00000000; 85CHECKREG r5, 0x00008000; 86CHECKREG r6, 0x00000000; 87CHECKREG r7, 0x00008000; 88 89imm32 r0, 0x00009001; 90imm32 r1, 0x0000a001; 91imm32 r2, 0x0000b002; 92imm32 r3, 0x00000010; 93imm32 r4, 0x0000c004; 94imm32 r5, 0x0000d005; 95imm32 r6, 0x0000e006; 96imm32 r7, 0x0000f007; 97R0.L = LSHIFT R0.L BY R3.L; 98R1.L = LSHIFT R1.L BY R3.L; 99R2.L = LSHIFT R2.L BY R3.L; 100//rl3 = lshift (rl3 by rl3); 101R4.L = LSHIFT R4.L BY R3.L; 102R5.L = LSHIFT R5.L BY R3.L; 103R6.L = LSHIFT R6.L BY R3.L; 104R7.L = LSHIFT R7.L BY R3.L; 105CHECKREG r0, 0x00000000; 106CHECKREG r1, 0x00000000; 107CHECKREG r2, 0x00000000; 108CHECKREG r3, 0x00000010; 109CHECKREG r4, 0x00000000; 110CHECKREG r5, 0x00000000; 111CHECKREG r6, 0x00000000; 112CHECKREG r7, 0x00000000; 113 114// d_lo = lshft (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 = LSHIFT R0.H BY R0.L; 125R1.L = LSHIFT R1.H BY R0.L; 126R2.L = LSHIFT R2.H BY R0.L; 127R3.L = LSHIFT R3.H BY R0.L; 128R4.L = LSHIFT R4.H BY R0.L; 129R5.L = LSHIFT R5.H BY R0.L; 130R6.L = LSHIFT R6.H BY R0.L; 131R7.L = LSHIFT R7.H BY R0.L; 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, 0x90010000; 142imm32 r1, 0x00010001; 143imm32 r2, 0x90020000; 144imm32 r3, 0x90030000; 145imm32 r4, 0x90040000; 146imm32 r5, 0x90050000; 147imm32 r6, 0x90060000; 148imm32 r7, 0x90070000; 149R0.L = LSHIFT R0.H BY R1.L; 150//rl1 = lshift (rh1 by rl1); 151R2.L = LSHIFT R2.H BY R1.L; 152R3.L = LSHIFT R3.H BY R1.L; 153R4.L = LSHIFT R4.H BY R1.L; 154R5.L = LSHIFT R5.H BY R1.L; 155R6.L = LSHIFT R6.H BY R1.L; 156R7.L = LSHIFT R7.H BY R1.L; 157CHECKREG r0, 0x90012002; 158CHECKREG r1, 0x00010001; 159CHECKREG r2, 0x90022004; 160CHECKREG r3, 0x90032006; 161CHECKREG r4, 0x90042008; 162CHECKREG r5, 0x9005200a; 163CHECKREG r6, 0x9006200c; 164CHECKREG r7, 0x9007200e; 165 166 167imm32 r0, 0xa0010000; 168imm32 r1, 0xa0010000; 169imm32 r2, 0xa002000f; 170imm32 r3, 0xa0030000; 171imm32 r4, 0xa0040000; 172imm32 r5, 0xa0050000; 173imm32 r6, 0xa0060000; 174imm32 r7, 0xa0070000; 175R0.L = LSHIFT R0.H BY R2.L; 176R1.L = LSHIFT R1.H BY R2.L; 177//rl2 = lshift (rh2 by rl2); 178R3.L = LSHIFT R3.H BY R2.L; 179R4.L = LSHIFT R4.H BY R2.L; 180R5.L = LSHIFT R5.H BY R2.L; 181R6.L = LSHIFT R6.H BY R2.L; 182R7.L = LSHIFT R7.H BY R2.L; 183CHECKREG r0, 0xa0018000; 184CHECKREG r1, 0xa0018000; 185CHECKREG r2, 0xa002000f; 186CHECKREG r3, 0xa0038000; 187CHECKREG r4, 0xa0040000; 188CHECKREG r5, 0xa0058000; 189CHECKREG r6, 0xa0060000; 190CHECKREG r7, 0xa0078000; 191 192imm32 r0, 0xc0010001; 193imm32 r1, 0xc0010001; 194imm32 r2, 0xc0020002; 195imm32 r3, 0xc0030010; 196imm32 r4, 0xc0040004; 197imm32 r5, 0xc0050005; 198imm32 r6, 0xc0060006; 199imm32 r7, 0xc0070007; 200R0.L = LSHIFT R0.H BY R3.L; 201R1.L = LSHIFT R1.H BY R3.L; 202R2.L = LSHIFT R2.H BY R3.L; 203//rl3 = lshift (rh3 by rl3); 204R4.L = LSHIFT R4.H BY R3.L; 205R5.L = LSHIFT R5.H BY R3.L; 206R6.L = LSHIFT R6.H BY R3.L; 207R7.L = LSHIFT R7.H BY R3.L; 208CHECKREG r0, 0xc0010000; 209CHECKREG r1, 0xc0010000; 210CHECKREG r2, 0xc0020000; 211CHECKREG r3, 0xc0030010; 212CHECKREG r4, 0xc0040000; 213CHECKREG r5, 0xc0050000; 214CHECKREG r6, 0xc0060000; 215CHECKREG r7, 0xc0070000; 216 217// d_hi = lshft (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 = LSHIFT R0.L BY R0.L; 228R1.H = LSHIFT R1.L BY R0.L; 229R2.H = LSHIFT R2.L BY R0.L; 230R3.H = LSHIFT R3.L BY R0.L; 231R4.H = LSHIFT R4.L BY R0.L; 232R5.H = LSHIFT R5.L BY R0.L; 233R6.H = LSHIFT R6.L BY R0.L; 234R7.H = LSHIFT R7.L BY R0.L; 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, 0x0000d001; 245imm32 r1, 0x00000001; 246imm32 r2, 0x0000d002; 247imm32 r3, 0x0000d003; 248imm32 r4, 0x0000d004; 249imm32 r5, 0x0000d005; 250imm32 r6, 0x0000d006; 251imm32 r7, 0x0000d007; 252R0.H = LSHIFT R0.L BY R1.L; 253R1.H = LSHIFT R1.L BY R1.L; 254R2.H = LSHIFT R2.L BY R1.L; 255R3.H = LSHIFT R3.L BY R1.L; 256R4.H = LSHIFT R4.L BY R1.L; 257R5.H = LSHIFT R5.L BY R1.L; 258R6.H = LSHIFT R6.L BY R1.L; 259R7.H = LSHIFT R7.L BY R1.L; 260CHECKREG r0, 0xa002d001; 261CHECKREG r1, 0x00020001; 262CHECKREG r2, 0xa004d002; 263CHECKREG r3, 0xa006d003; 264CHECKREG r4, 0xa008d004; 265CHECKREG r5, 0xa00ad005; 266CHECKREG r6, 0xa00cd006; 267CHECKREG r7, 0xa00ed007; 268 269 270imm32 r0, 0x0000e001; 271imm32 r1, 0x0000e001; 272imm32 r2, 0x0000000f; 273imm32 r3, 0x0000e003; 274imm32 r4, 0x0000e004; 275imm32 r5, 0x0000e005; 276imm32 r6, 0x0000e006; 277imm32 r7, 0x0000e007; 278R0.H = LSHIFT R0.L BY R2.L; 279R1.H = LSHIFT R1.L BY R2.L; 280//rh2 = lshift (rl2 by rl2); 281R3.H = LSHIFT R3.L BY R2.L; 282R4.H = LSHIFT R4.L BY R2.L; 283R5.H = LSHIFT R5.L BY R2.L; 284R6.H = LSHIFT R6.L BY R2.L; 285R7.H = LSHIFT R7.L BY R2.L; 286CHECKREG r0, 0x8000e001; 287CHECKREG r1, 0x8000e001; 288CHECKREG r2, 0x0000000f; 289CHECKREG r3, 0x8000e003; 290CHECKREG r4, 0x0000e004; 291CHECKREG r5, 0x8000e005; 292CHECKREG r6, 0x0000e006; 293CHECKREG r7, 0x8000e007; 294 295imm32 r0, 0x0000f001; 296imm32 r1, 0x0000f001; 297imm32 r2, 0x0000f002; 298imm32 r3, 0x00000010; 299imm32 r4, 0x0000f004; 300imm32 r5, 0x0000f005; 301imm32 r6, 0x0000f006; 302imm32 r7, 0x0000f007; 303R0.H = LSHIFT R0.L BY R3.L; 304R1.H = LSHIFT R1.L BY R3.L; 305R2.H = LSHIFT R2.L BY R3.L; 306R3.H = LSHIFT R3.L BY R3.L; 307R4.H = LSHIFT R4.L BY R3.L; 308R5.H = LSHIFT R5.L BY R3.L; 309R6.H = LSHIFT R6.L BY R3.L; 310R7.H = LSHIFT R7.L BY R3.L; 311CHECKREG r0, 0x0000f001; 312CHECKREG r1, 0x0000f001; 313CHECKREG r2, 0x0000f002; 314CHECKREG r3, 0x00000010; 315CHECKREG r4, 0x0000f004; 316CHECKREG r5, 0x0000f005; 317CHECKREG r6, 0x0000f006; 318CHECKREG r7, 0x0000f007; 319 320// d_lo = lshft (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 = LSHIFT R0.H BY R0.L; 331R1.H = LSHIFT R1.H BY R0.L; 332R2.H = LSHIFT R2.H BY R0.L; 333R3.H = LSHIFT R3.H BY R0.L; 334R4.H = LSHIFT R4.H BY R0.L; 335R5.H = LSHIFT R5.H BY R0.L; 336R6.H = LSHIFT R6.H BY R0.L; 337R7.H = LSHIFT R7.H BY R0.L; 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, 0xa0010000; 348imm32 r1, 0x00010001; 349imm32 r2, 0xa0020000; 350imm32 r3, 0xa0030000; 351imm32 r4, 0xa0040000; 352imm32 r5, 0xa0050000; 353imm32 r6, 0xa0060000; 354imm32 r7, 0xa0070000; 355R0.H = LSHIFT R0.H BY R1.L; 356R1.H = LSHIFT R1.H BY R1.L; 357R2.H = LSHIFT R2.H BY R1.L; 358R3.H = LSHIFT R3.H BY R1.L; 359R4.H = LSHIFT R4.H BY R1.L; 360R5.H = LSHIFT R5.H BY R1.L; 361R6.H = LSHIFT R6.H BY R1.L; 362R7.H = LSHIFT R7.H BY R1.L; 363CHECKREG r0, 0x40020000; 364CHECKREG r1, 0x00020001; 365CHECKREG r2, 0x40040000; 366CHECKREG r3, 0x40060000; 367CHECKREG r4, 0x40080000; 368CHECKREG r5, 0x400a0000; 369CHECKREG r6, 0x400c0000; 370CHECKREG r7, 0x400e0000; 371 372 373imm32 r0, 0xb0010000; 374imm32 r1, 0xb0010000; 375imm32 r2, 0xb002000f; 376imm32 r3, 0xb0030000; 377imm32 r4, 0xb0040000; 378imm32 r5, 0xb0050000; 379imm32 r6, 0xb0060000; 380imm32 r7, 0xb0070000; 381R0.L = LSHIFT R0.H BY R2.L; 382R1.L = LSHIFT R1.H BY R2.L; 383//rl2 = lshift (rh2 by rl2); 384R3.L = LSHIFT R3.H BY R2.L; 385R4.L = LSHIFT R4.H BY R2.L; 386R5.L = LSHIFT R5.H BY R2.L; 387R6.L = LSHIFT R6.H BY R2.L; 388R7.L = LSHIFT R7.H BY R2.L; 389CHECKREG r0, 0xb0018000; 390CHECKREG r1, 0xb0018000; 391CHECKREG r2, 0xb002000f; 392CHECKREG r3, 0xb0038000; 393CHECKREG r4, 0xb0040000; 394CHECKREG r5, 0xb0058000; 395CHECKREG r6, 0xb0060000; 396CHECKREG r7, 0xb0078000; 397 398imm32 r0, 0xd0010000; 399imm32 r1, 0xd0010000; 400imm32 r2, 0xd0020000; 401imm32 r3, 0xd0030010; 402imm32 r4, 0xd0040000; 403imm32 r5, 0xd0050000; 404imm32 r6, 0xd0060000; 405imm32 r7, 0xd0070000; 406R0.H = LSHIFT R0.H BY R3.L; 407R1.H = LSHIFT R1.H BY R3.L; 408R2.H = LSHIFT R2.H BY R3.L; 409R3.H = LSHIFT R3.H BY R3.L; 410R4.H = LSHIFT R4.H BY R3.L; 411R5.H = LSHIFT R5.H BY R3.L; 412R6.H = LSHIFT R6.H BY R3.L; 413R7.H = LSHIFT R7.H BY R3.L; 414CHECKREG r0, 0x00000000; 415CHECKREG r1, 0x00000000; 416CHECKREG r2, 0x00000000; 417CHECKREG r3, 0x00000010; 418CHECKREG r4, 0x00000000; 419CHECKREG r5, 0x00000000; 420CHECKREG r6, 0x00000000; 421CHECKREG r7, 0x00000000; 422pass 423