1//Original:/testcases/core/c_dsp32shift_lhalf_rn/c_dsp32shift_lhalf_rn.dsp 2// Spec Reference: dsp32shift lshift 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9 10 11// lshift : positive data, count (+)=left (half reg) 12// d_lo = lshift (d_lo BY d_lo) 13// RLx by RLx 14imm32 r0, 0x00000000; 15R0.L = -1; 16imm32 r1, 0x00008001; 17imm32 r2, 0x00008002; 18imm32 r3, 0x00008003; 19imm32 r4, 0x00008004; 20imm32 r5, 0x00008005; 21imm32 r6, 0x00008006; 22imm32 r7, 0x00008007; 23//rl0 = lshift (rl0 by rl0); 24R1.L = LSHIFT R1.L BY R0.L; 25R2.L = LSHIFT R2.L BY R0.L; 26R3.L = LSHIFT R3.L BY R0.L; 27R4.L = LSHIFT R4.L BY R0.L; 28R5.L = LSHIFT R5.L BY R0.L; 29R6.L = LSHIFT R6.L BY R0.L; 30R7.L = LSHIFT R7.L BY R0.L; 31//CHECKREG r0, 0x00000000; 32CHECKREG r1, 0x00004000; 33CHECKREG r2, 0x00004001; 34CHECKREG r3, 0x00004001; 35CHECKREG r4, 0x00004002; 36CHECKREG r5, 0x00004002; 37CHECKREG r6, 0x00004003; 38CHECKREG r7, 0x00004003; 39 40imm32 r0, 0x00008001; 41R1.L = -1; 42imm32 r2, 0x00008002; 43imm32 r3, 0x00008003; 44imm32 r4, 0x00008004; 45imm32 r5, 0x00008005; 46imm32 r6, 0x00008006; 47imm32 r7, 0x00008007; 48R0.L = LSHIFT R0.L BY R1.L; 49//rl1 = lshift (rl1 by rl1); 50R2.L = LSHIFT R2.L BY R1.L; 51R3.L = LSHIFT R3.L BY R1.L; 52R4.L = LSHIFT R4.L BY R1.L; 53R5.L = LSHIFT R5.L BY R1.L; 54R6.L = LSHIFT R6.L BY R1.L; 55R7.L = LSHIFT R7.L BY R1.L; 56CHECKREG r0, 0x00004000; 57//CHECKREG r1, 0x00000001; 58CHECKREG r2, 0x00004001; 59CHECKREG r3, 0x00004001; 60CHECKREG r4, 0x00004002; 61CHECKREG r5, 0x00004002; 62CHECKREG r6, 0x00004003; 63CHECKREG r7, 0x00004003; 64 65 66imm32 r0, 0x00008001; 67imm32 r1, 0x00008001; 68R2.L = -15; 69imm32 r3, 0x00008003; 70imm32 r4, 0x00008004; 71imm32 r5, 0x00008005; 72imm32 r6, 0x00008006; 73imm32 r7, 0x00008007; 74R0.L = LSHIFT R0.L BY R2.L; 75R1.L = LSHIFT R1.L BY R2.L; 76//rl2 = lshift (rl2 by rl2); 77R3.L = LSHIFT R3.L BY R2.L; 78R4.L = LSHIFT R4.L BY R2.L; 79R5.L = LSHIFT R5.L BY R2.L; 80R6.L = LSHIFT R6.L BY R2.L; 81R7.L = LSHIFT R7.L BY R2.L; 82CHECKREG r0, 0x00000001; 83CHECKREG r1, 0x00000001; 84//CHECKREG r2, 0x0000000f; 85CHECKREG r3, 0x00000001; 86CHECKREG r4, 0x00000001; 87CHECKREG r5, 0x00000001; 88CHECKREG r6, 0x00000001; 89CHECKREG r7, 0x00000001; 90 91imm32 r0, 0x00008001; 92imm32 r1, 0x00008001; 93imm32 r2, 0x00008002; 94R3.L = -16; 95imm32 r4, 0x00008004; 96imm32 r5, 0x00008005; 97imm32 r6, 0x00008006; 98imm32 r7, 0x00008007; 99R0.L = LSHIFT R0.L BY R3.L; 100R1.L = LSHIFT R1.L BY R3.L; 101R2.L = LSHIFT R2.L BY R3.L; 102//rl3 = lshift (rl3 by rl3); 103R4.L = LSHIFT R4.L BY R3.L; 104R5.L = LSHIFT R5.L BY R3.L; 105R6.L = LSHIFT R6.L BY R3.L; 106R7.L = LSHIFT R7.L BY R3.L; 107CHECKREG r0, 0x00000000; 108CHECKREG r1, 0x00000000; 109CHECKREG r2, 0x00000000; 110//CHECKREG r3, 0x00000010; 111CHECKREG r4, 0x00000000; 112CHECKREG r5, 0x00000000; 113CHECKREG r6, 0x00000000; 114CHECKREG r7, 0x00000000; 115 116// d_lo = ashft (d_hi BY d_lo) 117// RHx by RLx 118imm32 r0, 0x00000000; 119imm32 r1, 0x80010000; 120imm32 r2, 0x80020000; 121imm32 r3, 0x80030000; 122imm32 r4, 0x80040000; 123imm32 r5, 0x80050000; 124imm32 r6, 0x80060000; 125imm32 r7, 0x80070000; 126R0.L = LSHIFT R0.H BY R0.L; 127R1.L = LSHIFT R1.H BY R0.L; 128R2.L = LSHIFT R2.H BY R0.L; 129R3.L = LSHIFT R3.H BY R0.L; 130R4.L = LSHIFT R4.H BY R0.L; 131R5.L = LSHIFT R5.H BY R0.L; 132R6.L = LSHIFT R6.H BY R0.L; 133R7.L = LSHIFT R7.H BY R0.L; 134CHECKREG r0, 0x00000000; 135CHECKREG r1, 0x80018001; 136CHECKREG r2, 0x80028002; 137CHECKREG r3, 0x80038003; 138CHECKREG r4, 0x80048004; 139CHECKREG r5, 0x80058005; 140CHECKREG r6, 0x80068006; 141CHECKREG r7, 0x80078007; 142 143imm32 r0, 0x80010000; 144R1.L = -1; 145imm32 r2, 0x80020000; 146imm32 r3, 0x80030000; 147imm32 r4, 0x80040000; 148imm32 r5, 0x80050000; 149imm32 r6, 0x80060000; 150imm32 r7, 0x80070000; 151R0.L = LSHIFT R0.H BY R1.L; 152//rl1 = lshift (rh1 by rl1); 153R2.L = LSHIFT R2.H BY R1.L; 154R3.L = LSHIFT R3.H BY R1.L; 155R4.L = LSHIFT R4.H BY R1.L; 156R5.L = LSHIFT R5.H BY R1.L; 157R6.L = LSHIFT R6.H BY R1.L; 158R7.L = LSHIFT R7.H BY R1.L; 159CHECKREG r0, 0x80014000; 160//CHECKREG r1, 0x00010001; 161CHECKREG r2, 0x80024001; 162CHECKREG r3, 0x80034001; 163CHECKREG r4, 0x80044002; 164CHECKREG r5, 0x80054002; 165CHECKREG r6, 0x80064003; 166CHECKREG r7, 0x80074003; 167 168 169imm32 r0, 0xa0010000; 170imm32 r1, 0xa0010000; 171R2.L = -15; 172imm32 r3, 0xa0030000; 173imm32 r4, 0xa0040000; 174imm32 r5, 0xa0050000; 175imm32 r6, 0xa0060000; 176imm32 r7, 0xa0070000; 177R0.L = LSHIFT R0.H BY R2.L; 178R1.L = LSHIFT R1.H BY R2.L; 179//rl2 = lshift (rh2 by rl2); 180R3.L = LSHIFT R3.H BY R2.L; 181R4.L = LSHIFT R4.H BY R2.L; 182R5.L = LSHIFT R5.H BY R2.L; 183R6.L = LSHIFT R6.H BY R2.L; 184R7.L = LSHIFT R7.H BY R2.L; 185CHECKREG r0, 0xa0010001; 186CHECKREG r1, 0xa0010001; 187//CHECKREG r2, 0x2002000f; 188CHECKREG r3, 0xa0030001; 189CHECKREG r4, 0xa0040001; 190CHECKREG r5, 0xa0050001; 191CHECKREG r6, 0xa0060001; 192CHECKREG r7, 0xa0070001; 193 194imm32 r0, 0xb0010001; 195imm32 r1, 0xb0010001; 196imm32 r2, 0xb0020002; 197R3.L = -16; 198imm32 r4, 0xb0040004; 199imm32 r5, 0xb0050005; 200imm32 r6, 0xb0060006; 201imm32 r7, 0xb0070007; 202R0.L = LSHIFT R0.H BY R3.L; 203R1.L = LSHIFT R1.H BY R3.L; 204R2.L = LSHIFT R2.H BY R3.L; 205//rl3 = lshift (rh3 by rl3); 206R4.L = LSHIFT R4.H BY R3.L; 207R5.L = LSHIFT R5.H BY R3.L; 208R6.L = LSHIFT R6.H BY R3.L; 209R7.L = LSHIFT R7.H BY R3.L; 210CHECKREG r0, 0xb0010000; 211CHECKREG r1, 0xb0010000; 212CHECKREG r2, 0xb0020000; 213//CHECKREG r3, 0x30030010; 214CHECKREG r4, 0xb0040000; 215CHECKREG r5, 0xb0050000; 216CHECKREG r6, 0xb0060000; 217CHECKREG r7, 0xb0070000; 218 219// d_hi = ashft (d_lo BY d_lo) 220// RLx by RLx 221imm32 r0, 0x00000001; 222imm32 r1, 0x00000001; 223imm32 r2, 0x00000002; 224imm32 r3, 0x00000003; 225imm32 r4, 0x00000000; 226imm32 r5, 0x00000005; 227imm32 r6, 0x00000006; 228imm32 r7, 0x00000007; 229R0.H = LSHIFT R0.L BY R4.L; 230R1.H = LSHIFT R1.L BY R4.L; 231R2.H = LSHIFT R2.L BY R4.L; 232R3.H = LSHIFT R3.L BY R4.L; 233//rh4 = lshift (rl4 by rl4); 234R5.H = LSHIFT R5.L BY R4.L; 235R6.H = LSHIFT R6.L BY R4.L; 236R7.H = LSHIFT R7.L BY R4.L; 237CHECKREG r0, 0x00010001; 238CHECKREG r1, 0x00010001; 239CHECKREG r2, 0x00020002; 240CHECKREG r3, 0x00030003; 241//CHECKREG r4, 0x00040004; 242CHECKREG r5, 0x00050005; 243CHECKREG r6, 0x00060006; 244CHECKREG r7, 0x00070007; 245 246imm32 r0, 0x00008001; 247imm32 r1, 0x00008001; 248imm32 r2, 0x00008002; 249imm32 r3, 0x00008003; 250imm32 r4, 0x00008004; 251R5.L = -1; 252imm32 r6, 0x00008006; 253imm32 r7, 0x00008007; 254R0.H = LSHIFT R0.L BY R5.L; 255R1.H = LSHIFT R1.L BY R5.L; 256R2.H = LSHIFT R2.L BY R5.L; 257R3.H = LSHIFT R3.L BY R5.L; 258R4.H = LSHIFT R4.L BY R5.L; 259//rh5 = lshift (rl5 by rl5); 260R6.H = LSHIFT R6.L BY R5.L; 261R7.H = LSHIFT R7.L BY R5.L; 262CHECKREG r0, 0x40008001; 263CHECKREG r1, 0x40008001; 264CHECKREG r2, 0x40018002; 265CHECKREG r3, 0x40018003; 266CHECKREG r4, 0x40028004; 267//CHECKREG r5, 0x00020005; 268CHECKREG r6, 0x40038006; 269CHECKREG r7, 0x40038007; 270 271 272imm32 r0, 0x00009001; 273imm32 r1, 0x00009001; 274imm32 r2, 0x00009002; 275imm32 r3, 0x00009003; 276imm32 r4, 0x00009004; 277imm32 r5, 0x00009005; 278R6.L = -15; 279imm32 r7, 0x00009007; 280R0.H = LSHIFT R0.L BY R6.L; 281R1.H = LSHIFT R1.L BY R6.L; 282R2.H = LSHIFT R2.L BY R6.L; 283R3.H = LSHIFT R3.L BY R6.L; 284R4.H = LSHIFT R4.L BY R6.L; 285R5.H = LSHIFT R5.L BY R6.L; 286//rh6 = lshift (rl6 by rl6); 287R7.H = LSHIFT R7.L BY R6.L; 288CHECKREG r0, 0x00019001; 289CHECKREG r1, 0x00019001; 290CHECKREG r2, 0x00019002; 291CHECKREG r3, 0x00019003; 292CHECKREG r4, 0x00019004; 293CHECKREG r5, 0x00019005; 294//CHECKREG r6, 0x00006006; 295CHECKREG r7, 0x00019007; 296 297imm32 r0, 0x0000a001; 298imm32 r1, 0x0000a001; 299imm32 r2, 0x0000a002; 300imm32 r3, 0x0000a003; 301imm32 r4, 0x0000a004; 302imm32 r5, 0x0000a005; 303imm32 r6, 0x0000a006; 304R7.L = -16; 305R0.H = LSHIFT R0.L BY R7.L; 306R1.H = LSHIFT R1.L BY R7.L; 307R2.H = LSHIFT R2.L BY R7.L; 308R3.H = LSHIFT R3.L BY R7.L; 309R4.H = LSHIFT R4.L BY R7.L; 310R5.H = LSHIFT R5.L BY R7.L; 311R6.H = LSHIFT R6.L BY R7.L; 312R7.H = LSHIFT R7.L BY R7.L; 313CHECKREG r0, 0x0000a001; 314CHECKREG r1, 0x0000a001; 315CHECKREG r2, 0x0000a002; 316CHECKREG r3, 0x0000a003; 317CHECKREG r4, 0x0000a004; 318CHECKREG r5, 0x0000a005; 319CHECKREG r6, 0x0000a006; 320//CHECKREG r7, 0x00007007; 321 322// d_lo = ashft (d_hi BY d_lo) 323// RHx by RLx 324imm32 r0, 0x80010000; 325imm32 r1, 0x80010000; 326imm32 r2, 0x80020000; 327imm32 r3, 0x80030000; 328R4.L = -1; 329imm32 r5, 0x80050000; 330imm32 r6, 0x80060000; 331imm32 r7, 0x80070000; 332R0.H = LSHIFT R0.H BY R4.L; 333R1.H = LSHIFT R1.H BY R4.L; 334R2.H = LSHIFT R2.H BY R4.L; 335R3.H = LSHIFT R3.H BY R4.L; 336//rh4 = lshift (rh4 by rl4); 337R5.H = LSHIFT R5.H BY R4.L; 338R6.H = LSHIFT R6.H BY R4.L; 339R7.H = LSHIFT R7.H BY R4.L; 340CHECKREG r0, 0x40000000; 341CHECKREG r1, 0x40000000; 342CHECKREG r2, 0x40010000; 343CHECKREG r3, 0x40010000; 344//CHECKREG r4, 0x00020000; 345CHECKREG r5, 0x40020000; 346CHECKREG r6, 0x40030000; 347CHECKREG r7, 0x40030000; 348 349imm32 r0, 0x80010000; 350imm32 r1, 0x80010000; 351imm32 r2, 0x80020000; 352imm32 r3, 0x80030000; 353imm32 r4, 0x80040000; 354R5.L = -1; 355imm32 r6, 0x80060000; 356imm32 r7, 0x80070000; 357R0.H = LSHIFT R0.H BY R5.L; 358R1.H = LSHIFT R1.H BY R5.L; 359R2.H = LSHIFT R2.H BY R5.L; 360R3.H = LSHIFT R3.H BY R5.L; 361R4.H = LSHIFT R4.H BY R5.L; 362//rh5 = lshift (rh5 by rl5); 363R6.H = LSHIFT R6.H BY R5.L; 364R7.H = LSHIFT R7.H BY R5.L; 365CHECKREG r0, 0x40000000; 366CHECKREG r1, 0x40000000; 367CHECKREG r2, 0x40010000; 368CHECKREG r3, 0x40010000; 369CHECKREG r4, 0x40020000; 370//CHECKREG r5, 0x28020000; 371CHECKREG r6, 0x40030000; 372CHECKREG r7, 0x40030000; 373 374 375imm32 r0, 0xd0010000; 376imm32 r1, 0xd0010000; 377imm32 r2, 0xd0020000; 378imm32 r3, 0xd0030000; 379imm32 r4, 0xd0040000; 380imm32 r5, 0xd0050000; 381R6.L = -15; 382imm32 r7, 0xd0070000; 383R0.L = LSHIFT R0.H BY R6.L; 384R1.L = LSHIFT R1.H BY R6.L; 385R2.L = LSHIFT R2.H BY R6.L; 386R3.L = LSHIFT R3.H BY R6.L; 387R4.L = LSHIFT R4.H BY R6.L; 388R5.L = LSHIFT R5.H BY R6.L; 389//rl6 = lshift (rh6 by rl6); 390R7.L = LSHIFT R7.H BY R6.L; 391CHECKREG r0, 0xd0010001; 392CHECKREG r1, 0xd0010001; 393CHECKREG r2, 0xd0020001; 394CHECKREG r3, 0xd0030001; 395CHECKREG r4, 0xd0040001; 396CHECKREG r5, 0xd0050001; 397//CHECKREG r6, 0x60060000; 398CHECKREG r7, 0xd0070001; 399 400imm32 r0, 0xe0010000; 401imm32 r1, 0xe0010000; 402imm32 r2, 0xe0020000; 403imm32 r3, 0xe0030000; 404imm32 r4, 0xe0040000; 405imm32 r5, 0xe0050000; 406imm32 r6, 0xe0060000; 407R7.L = -16; 408R0.H = LSHIFT R0.H BY R7.L; 409R1.H = LSHIFT R1.H BY R7.L; 410R2.H = LSHIFT R2.H BY R7.L; 411R3.H = LSHIFT R3.H BY R7.L; 412R4.H = LSHIFT R4.H BY R7.L; 413R5.H = LSHIFT R5.H BY R7.L; 414R6.H = LSHIFT R6.H BY R7.L; 415//rh7 = lshift (rh7 by rl7); 416CHECKREG r0, 0x00000000; 417CHECKREG r1, 0x00000000; 418CHECKREG r2, 0x00000000; 419CHECKREG r3, 0x00000000; 420CHECKREG r4, 0x00000000; 421CHECKREG r5, 0x00000000; 422CHECKREG r6, 0x00000000; 423//CHECKREG r7, -16; 424 425pass 426