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