123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- //Original:/testcases/core/c_dsp32shiftim_ahalf_lp_s/c_dsp32shiftim_ahalf_lp_s.dsp
- // Spec Reference: dspshiftimm dreg_lo(hi) = ashift (dreg_lo(hi) by imm5) saturated
- # mach: bfin
- .include "testutils.inc"
- start
- imm32 r0, 0x00100a00;
- imm32 r1, 0x00100a01;
- imm32 r2, 0x00100a02;
- imm32 r3, 0x00100a03;
- imm32 r4, 0x00100a04;
- imm32 r5, 0x00100a05;
- imm32 r6, 0x00100a06;
- imm32 r7, 0x00100a07;
- R7.L = R0.L << 0 (S);
- R0.L = R1.L << 1 (S);
- R1.L = R2.L << 2 (S);
- R2.L = R3.L << 3 (S);
- R3.L = R4.L << 4 (S);
- R4.L = R5.L << 5 (S);
- R5.L = R6.L << 6 (S);
- R6.L = R7.L << 7 (S);
- CHECKREG r1, 0x00102808;
- CHECKREG r0, 0x00101402;
- CHECKREG r2, 0x00105018;
- CHECKREG r3, 0x00107FFF;
- CHECKREG r4, 0x00107FFF;
- CHECKREG r5, 0x00107FFF;
- CHECKREG r6, 0x00107FFF;
- CHECKREG r7, 0x00100A00;
- imm32 r0, 0x00200018;
- imm32 r1, 0x00200019;
- imm32 r2, 0x0020001a;
- imm32 r3, 0x0020001b;
- imm32 r4, 0x0020001c;
- imm32 r5, 0x0020001d;
- imm32 r6, 0x0020001e;
- imm32 r7, 0x0020001f;
- R2.L = R0.L << 8 (S);
- R3.L = R1.L << 9 (S);
- R4.L = R2.L << 10 (S);
- R5.L = R3.L << 11 (S);
- R6.L = R4.L << 12 (S);
- R7.L = R5.L << 13 (S);
- R0.L = R6.L << 14 (S);
- R1.L = R7.L << 15 (S);
- CHECKREG r0, 0x00207FFF;
- CHECKREG r1, 0x00207FFF;
- CHECKREG r2, 0x00201800;
- CHECKREG r3, 0x00203200;
- CHECKREG r4, 0x00207FFF;
- CHECKREG r5, 0x00207FFF;
- CHECKREG r6, 0x00207FFF;
- CHECKREG r7, 0x00207FFF;
- imm32 r0, 0x05002001;
- imm32 r1, 0x05002001;
- imm32 r2, 0x0500000f;
- imm32 r3, 0x05002003;
- imm32 r4, 0x05002004;
- imm32 r5, 0x05002005;
- imm32 r6, 0x05002006;
- imm32 r7, 0x05002007;
- R3.L = R0.L << 0 (S);
- R4.L = R1.L << 1 (S);
- R5.L = R2.L << 2 (S);
- R6.L = R3.L << 3 (S);
- R7.L = R4.L << 4 (S);
- R0.L = R5.L << 5 (S);
- R1.L = R6.L << 6 (S);
- R2.L = R7.L << 7 (S);
- CHECKREG r0, 0x05000780;
- CHECKREG r1, 0x05007FFF;
- CHECKREG r2, 0x05007FFF;
- CHECKREG r3, 0x05002001;
- CHECKREG r4, 0x05004002;
- CHECKREG r5, 0x0500003C;
- CHECKREG r6, 0x05007FFF;
- CHECKREG r7, 0x05007FFF;
- imm32 r0, 0x03000031;
- imm32 r1, 0x03000031;
- imm32 r2, 0x03000032;
- imm32 r3, 0x03000030;
- imm32 r4, 0x03000034;
- imm32 r5, 0x03000035;
- imm32 r6, 0x03000036;
- imm32 r7, 0x03000037;
- R4.L = R0.L << 8 (S);
- R5.L = R1.L << 9 (S);
- R6.L = R2.L << 10 (S);
- R7.L = R3.L << 11 (S);
- R0.L = R4.L << 12 (S);
- R1.L = R5.L << 13 (S);
- R2.L = R6.L << 14 (S);
- R3.L = R7.L << 15 (S);
- CHECKREG r0, 0x03007FFF;
- CHECKREG r1, 0x03007FFF;
- CHECKREG r2, 0x03007FFF;
- CHECKREG r3, 0x03007FFF;
- CHECKREG r4, 0x03003100;
- CHECKREG r5, 0x03006200;
- CHECKREG r6, 0x03007FFF;
- CHECKREG r7, 0x03007FFF;
- // RHx by RLx
- imm32 r0, 0x03000000;
- imm32 r1, 0x03000000;
- imm32 r2, 0x03000000;
- imm32 r3, 0x03000000;
- imm32 r4, 0x03003100;
- imm32 r5, 0x03006200;
- imm32 r6, 0x0300C800;
- imm32 r7, 0x03008000;
- R5.L = R0.H << 0 (S);
- R6.L = R1.H << 1 (S);
- R7.L = R2.H << 2 (S);
- R0.L = R3.H << 3 (S);
- R1.L = R4.H << 4 (S);
- R2.L = R5.H << 5 (S);
- R3.L = R6.H << 6 (S);
- R4.L = R7.H << 7 (S);
- CHECKREG r0, 0x03001800;
- CHECKREG r1, 0x03003000;
- CHECKREG r2, 0x03006000;
- CHECKREG r3, 0x03007FFF;
- CHECKREG r4, 0x03007FFF;
- CHECKREG r5, 0x03000300;
- CHECKREG r6, 0x03000600;
- CHECKREG r7, 0x03000C00;
- imm32 r0, 0x05018000;
- imm32 r1, 0x05018001;
- imm32 r2, 0x05028000;
- imm32 r3, 0x05038000;
- imm32 r4, 0x05048000;
- imm32 r5, 0x05058000;
- imm32 r6, 0x05068000;
- imm32 r7, 0x05078000;
- R6.L = R0.H << 8 (S);
- R7.L = R1.H << 9 (S);
- R0.L = R2.H << 10 (S);
- R1.L = R3.H << 11 (S);
- R2.L = R4.H << 12 (S);
- R3.L = R5.H << 13 (S);
- R4.L = R6.H << 14 (S);
- R5.L = R7.H << 15 (S);
- CHECKREG r0, 0x05017FFF;
- CHECKREG r1, 0x05017FFF;
- CHECKREG r2, 0x05027FFF;
- CHECKREG r3, 0x05037FFF;
- CHECKREG r4, 0x05047FFF;
- CHECKREG r5, 0x05057FFF;
- CHECKREG r6, 0x05067FFF;
- CHECKREG r7, 0x05077FFF;
- imm32 r0, 0x60019000;
- imm32 r1, 0x60019000;
- imm32 r2, 0x6002900f;
- imm32 r3, 0x60039000;
- imm32 r4, 0x60049000;
- imm32 r5, 0x60059000;
- imm32 r6, 0x60069000;
- imm32 r7, 0x60079000;
- R7.L = R0.H << 0 (S);
- R0.L = R1.H << 1 (S);
- R1.L = R2.H << 2 (S);
- R2.L = R3.H << 3 (S);
- R3.L = R4.H << 4 (S);
- R4.L = R5.H << 5 (S);
- R5.L = R6.H << 6 (S);
- R6.L = R7.H << 7 (S);
- CHECKREG r0, 0x60017FFF;
- CHECKREG r1, 0x60017FFF;
- CHECKREG r2, 0x60027FFF;
- CHECKREG r3, 0x60037FFF;
- CHECKREG r4, 0x60047FFF;
- CHECKREG r5, 0x60057FFF;
- CHECKREG r6, 0x60067FFF;
- CHECKREG r7, 0x60076001;
- imm32 r0, 0x70010001;
- imm32 r1, 0x70010001;
- imm32 r2, 0x70020002;
- imm32 r3, 0x77030010;
- imm32 r4, 0x70040004;
- imm32 r5, 0x70050005;
- imm32 r6, 0x70060006;
- imm32 r7, 0x70070007;
- R0.L = R0.H << 8 (S);
- R1.L = R1.H << 9 (S);
- R2.L = R2.H << 10 (S);
- R3.L = R3.H << 11 (S);
- R4.L = R4.H << 12 (S);
- R5.L = R5.H << 13 (S);
- R6.L = R6.H << 14 (S);
- R7.L = R7.H << 15 (S);
- CHECKREG r0, 0x70017FFF;
- CHECKREG r1, 0x70017FFF;
- CHECKREG r2, 0x70027FFF;
- CHECKREG r3, 0x77037FFF;
- CHECKREG r4, 0x70047FFF;
- CHECKREG r5, 0x70057FFF;
- CHECKREG r6, 0x70067FFF;
- CHECKREG r7, 0x70077FFF;
- // d_hi = lshft (d_lo BY d_lo)
- // RLx by RLx
- imm32 r0, 0xa8000000;
- imm32 r1, 0xa8000001;
- imm32 r2, 0xa8000002;
- imm32 r3, 0xa8000003;
- imm32 r4, 0xa8000004;
- imm32 r5, 0xa8000005;
- imm32 r6, 0xa8000006;
- imm32 r7, 0xa8000007;
- R0.H = R0.L << 0 (S);
- R1.H = R1.L << 1 (S);
- R2.H = R2.L << 2 (S);
- R3.H = R3.L << 3 (S);
- R4.H = R4.L << 4 (S);
- R5.H = R5.L << 5 (S);
- R6.H = R6.L << 6 (S);
- R7.H = R7.L << 7 (S);
- CHECKREG r0, 0x00000000;
- CHECKREG r1, 0x00020001;
- CHECKREG r2, 0x00080002;
- CHECKREG r3, 0x00180003;
- CHECKREG r4, 0x00400004;
- CHECKREG r5, 0x00A00005;
- CHECKREG r6, 0x01800006;
- CHECKREG r7, 0x03800007;
- imm32 r0, 0xf0090001;
- imm32 r1, 0xf0090001;
- imm32 r2, 0xf0090002;
- imm32 r3, 0xf0090003;
- imm32 r4, 0xf0090004;
- imm32 r5, 0xf0090005;
- imm32 r6, 0xf0000006;
- imm32 r7, 0xf0000007;
- R1.H = R0.L << 8 (S);
- R2.H = R1.L << 9 (S);
- R3.H = R2.L << 10 (S);
- R4.H = R3.L << 11 (S);
- R5.H = R4.L << 12 (S);
- R6.H = R5.L << 13 (S);
- R7.H = R6.L << 14 (S);
- R0.H = R7.L << 15 (S);
- CHECKREG r1, 0x01000001;
- CHECKREG r2, 0x02000002;
- CHECKREG r3, 0x08000003;
- CHECKREG r4, 0x18000004;
- CHECKREG r5, 0x40000005;
- CHECKREG r6, 0x7FFF0006;
- CHECKREG r7, 0x7FFF0007;
- CHECKREG r0, 0x7FFF0001;
- imm32 r0, 0x07000001;
- imm32 r1, 0x07000001;
- imm32 r2, 0x0700000f;
- imm32 r3, 0x07000003;
- imm32 r4, 0x07000004;
- imm32 r5, 0x07000005;
- imm32 r6, 0x07000006;
- imm32 r7, 0x07000007;
- R3.H = R0.L << 0 (S);
- R4.H = R1.L << 1 (S);
- R5.H = R2.L << 2 (S);
- R6.H = R3.L << 3 (S);
- R7.H = R4.L << 4 (S);
- R0.H = R5.L << 5 (S);
- R1.H = R6.L << 6 (S);
- R2.H = R7.L << 7 (S);
- CHECKREG r0, 0x00A00001;
- CHECKREG r1, 0x01800001;
- CHECKREG r2, 0x0380000F;
- CHECKREG r3, 0x00010003;
- CHECKREG r4, 0x00020004;
- CHECKREG r5, 0x003C0005;
- CHECKREG r6, 0x00180006;
- CHECKREG r7, 0x00400007;
- imm32 r0, 0x00000501;
- imm32 r1, 0x00000501;
- imm32 r2, 0x00000502;
- imm32 r3, 0x00000510;
- imm32 r4, 0x00000504;
- imm32 r5, 0x00000505;
- imm32 r6, 0x00000506;
- imm32 r7, 0x00000507;
- R4.H = R0.L << 8 (S);
- R5.H = R1.L << 9 (S);
- R6.H = R2.L << 10 (S);
- R7.H = R3.L << 11 (S);
- R0.H = R4.L << 12 (S);
- R1.H = R5.L << 13 (S);
- R2.H = R6.L << 14 (S);
- R3.H = R7.L << 15 (S);
- CHECKREG r0, 0x7FFF0501;
- CHECKREG r1, 0x7FFF0501;
- CHECKREG r2, 0x7FFF0502;
- CHECKREG r3, 0x7FFF0510;
- CHECKREG r4, 0x7FFF0504;
- CHECKREG r5, 0x7FFF0505;
- CHECKREG r6, 0x7FFF0506;
- CHECKREG r7, 0x7FFF0507;
- imm32 r0, 0x00a00800;
- imm32 r1, 0x00a10800;
- imm32 r2, 0x00a20800;
- imm32 r3, 0x00a30800;
- imm32 r4, 0x00a40800;
- imm32 r5, 0x00a50800;
- imm32 r6, 0x00a60800;
- imm32 r7, 0x00a70800;
- R5.H = R0.H << 0 (S);
- R6.H = R1.H << 1 (S);
- R7.H = R2.H << 2 (S);
- R0.H = R3.H << 3 (S);
- R1.H = R4.H << 4 (S);
- R2.H = R5.H << 5 (S);
- R3.H = R6.H << 6 (S);
- R4.H = R7.H << 7 (S);
- CHECKREG r0, 0x05180800;
- CHECKREG r1, 0x0A400800;
- CHECKREG r2, 0x14000800;
- CHECKREG r3, 0x50800800;
- CHECKREG r4, 0x7FFF0800;
- CHECKREG r5, 0x00A00800;
- CHECKREG r6, 0x01420800;
- CHECKREG r7, 0x02880800;
- imm32 r0, 0x0c010000;
- imm32 r1, 0x0c010001;
- imm32 r2, 0x0c020000;
- imm32 r3, 0x0c030000;
- imm32 r4, 0x0c040000;
- imm32 r5, 0x0c050000;
- imm32 r6, 0x0c060000;
- imm32 r7, 0x0c070000;
- R6.H = R0.H << 8 (S);
- R7.H = R1.H << 9 (S);
- R0.H = R2.H << 10 (S);
- R1.H = R3.H << 11 (S);
- R2.H = R4.H << 12 (S);
- R3.H = R5.H << 13 (S);
- R4.H = R6.H << 14 (S);
- R5.H = R7.H << 15 (S);
- CHECKREG r0, 0x7FFF0000;
- CHECKREG r1, 0x7FFF0001;
- CHECKREG r2, 0x7FFF0000;
- CHECKREG r3, 0x7FFF0000;
- CHECKREG r4, 0x7FFF0000;
- CHECKREG r5, 0x7FFF0000;
- CHECKREG r6, 0x7FFF0000;
- CHECKREG r7, 0x7FFF0000;
- imm32 r0, 0x00b10000;
- imm32 r1, 0x00b10000;
- imm32 r2, 0x00b2000f;
- imm32 r3, 0x00b30000;
- imm32 r4, 0x00b40000;
- imm32 r5, 0x00b50000;
- imm32 r6, 0x00b60000;
- imm32 r7, 0x00b70000;
- R7.L = R0.H << 0 (S);
- R0.L = R1.H << 1 (S);
- R1.L = R2.H << 2 (S);
- R2.L = R3.H << 3 (S);
- R3.L = R4.H << 4 (S);
- R4.L = R5.H << 5 (S);
- R5.L = R6.H << 6 (S);
- R6.L = R7.H << 7 (S);
- CHECKREG r0, 0x00B10162;
- CHECKREG r1, 0x00B102C8;
- CHECKREG r2, 0x00B20598;
- CHECKREG r3, 0x00B30B40;
- CHECKREG r4, 0x00B416A0;
- CHECKREG r5, 0x00B52D80;
- CHECKREG r6, 0x00B65B80;
- CHECKREG r7, 0x00B700B1;
- imm32 r0, 0x0a010700;
- imm32 r1, 0x0a010700;
- imm32 r2, 0x0a020700;
- imm32 r3, 0x0a030710;
- imm32 r4, 0x0a040700;
- imm32 r5, 0x0a050700;
- imm32 r6, 0x0a060700;
- imm32 r7, 0x0a070700;
- R0.H = R0.H << 8 (S);
- R1.H = R1.H << 9 (S);
- R2.H = R2.H << 10 (S);
- R3.H = R3.H << 11 (S);
- R4.H = R4.H << 12 (S);
- R5.H = R5.H << 13 (S);
- R6.H = R6.H << 14 (S);
- R7.H = R7.H << 15 (S);
- CHECKREG r0, 0x7FFF0700;
- CHECKREG r1, 0x7FFF0700;
- CHECKREG r2, 0x7FFF0700;
- CHECKREG r3, 0x7FFF0710;
- CHECKREG r4, 0x7FFF0700;
- CHECKREG r5, 0x7FFF0700;
- CHECKREG r6, 0x7FFF0700;
- CHECKREG r7, 0x7FFF0700;
- pass
|