OSDN Git Service

Merge branch 'binutils' into tmp
[pf3gnuchains/pf3gnuchains4x.git] / sim / testsuite / sim / bfin / c_dsp32shiftim_lhalf_lp.s
diff --git a/sim/testsuite/sim/bfin/c_dsp32shiftim_lhalf_lp.s b/sim/testsuite/sim/bfin/c_dsp32shiftim_lhalf_lp.s
new file mode 100644 (file)
index 0000000..53e53f2
--- /dev/null
@@ -0,0 +1,418 @@
+//Original:/testcases/core/c_dsp32shiftim_lhalf_lp/c_dsp32shiftim_lhalf_lp.dsp
+// Spec Reference: dspshiftimm dreg_lo(hi) = lshift (dreg_lo(hi) by imm5)
+# mach: bfin
+
+.include "testutils.inc"
+       start
+
+
+
+// lshift : positive data, count (+)=left (half reg)
+// d_lo = lshift (d_lo BY imm5)
+// RLx by imm5
+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;
+R0.L = R1.L << 1;
+R1.L = R2.L << 2;
+R2.L = R3.L << 3;
+R3.L = R4.L << 4;
+R4.L = R5.L << 5;
+R5.L = R6.L << 6;
+R6.L = R7.L << 7;
+CHECKREG r1, 0x00102808;
+CHECKREG r0, 0x00101402;
+CHECKREG r2, 0x00105018;
+CHECKREG r3, 0x0010A040;
+CHECKREG r4, 0x001040A0;
+CHECKREG r5, 0x00108180;
+CHECKREG r6, 0x00100000;
+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;
+R3.L = R1.L << 9;
+R4.L = R2.L << 10;
+R5.L = R3.L << 11;
+R6.L = R4.L << 12;
+R7.L = R5.L << 13;
+R0.L = R6.L << 14;
+R1.L = R7.L << 15;
+CHECKREG r0, 0x00200000;
+CHECKREG r1, 0x00200000;
+CHECKREG r2, 0x00201800;
+CHECKREG r3, 0x00203200;
+CHECKREG r4, 0x00200000;
+CHECKREG r5, 0x00200000;
+CHECKREG r6, 0x00200000;
+CHECKREG r7, 0x00200000;
+
+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;
+R4.L = R1.L << 1;
+R5.L = R2.L << 2;
+R6.L = R3.L << 3;
+R7.L = R4.L << 4;
+R0.L = R5.L << 5;
+R1.L = R6.L << 6;
+R2.L = R7.L << 7;
+CHECKREG r0, 0x05000780;
+CHECKREG r1, 0x05000200;
+CHECKREG r2, 0x05001000;
+CHECKREG r3, 0x05002001;
+CHECKREG r4, 0x05004002;
+CHECKREG r5, 0x0500003C;
+CHECKREG r6, 0x05000008;
+CHECKREG r7, 0x05000020;
+
+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;
+R5.L = R1.L << 9;
+R6.L = R2.L << 10;
+R7.L = R3.L << 11;
+R0.L = R4.L << 12;
+R1.L = R5.L << 13;
+R2.L = R6.L << 14;
+R3.L = R7.L << 15;
+CHECKREG r0, 0x03000000;
+CHECKREG r1, 0x03000000;
+CHECKREG r2, 0x03000000;
+CHECKREG r3, 0x03000000;
+CHECKREG r4, 0x03003100;
+CHECKREG r5, 0x03006200;
+CHECKREG r6, 0x0300C800;
+CHECKREG r7, 0x03008000;
+// 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;
+R6.L = R1.H << 1;
+R7.L = R2.H << 2;
+R0.L = R3.H << 3;
+R1.L = R4.H << 4;
+R2.L = R5.H << 5;
+R3.L = R6.H << 6;
+R4.L = R7.H << 7;
+CHECKREG r0, 0x03001800;
+CHECKREG r1, 0x03003000;
+CHECKREG r2, 0x03006000;
+CHECKREG r3, 0x0300C000;
+CHECKREG r4, 0x03008000;
+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;
+R7.L = R1.H << 9;
+R0.L = R2.H << 10;
+R1.L = R3.H << 11;
+R2.L = R4.H << 12;
+R3.L = R5.H << 13;
+R4.L = R6.H << 14;
+R5.L = R7.H << 15;
+CHECKREG r0, 0x05010800;
+CHECKREG r1, 0x05011800;
+CHECKREG r2, 0x05024000;
+CHECKREG r3, 0x0503A000;
+CHECKREG r4, 0x05048000;
+CHECKREG r5, 0x05058000;
+CHECKREG r6, 0x05060100;
+CHECKREG r7, 0x05070200;
+
+
+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;
+R0.L = R1.H << 1;
+R1.L = R2.H << 2;
+R2.L = R3.H << 3;
+R3.L = R4.H << 4;
+R4.L = R5.H << 5;
+R5.L = R6.H << 6;
+R6.L = R7.H << 7;
+CHECKREG r0, 0x6001C002;
+CHECKREG r1, 0x60018008;
+CHECKREG r2, 0x60020018;
+CHECKREG r3, 0x60030040;
+CHECKREG r4, 0x600400A0;
+CHECKREG r5, 0x60050180;
+CHECKREG r6, 0x60060380;
+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;
+R1.L = R1.H << 9;
+R2.L = R2.H << 10;
+R3.L = R3.H << 11;
+R4.L = R4.H << 12;
+R5.L = R5.H << 13;
+R6.L = R6.H << 14;
+R7.L = R7.H << 15;
+CHECKREG r0, 0x70010100;
+CHECKREG r1, 0x70010200;
+CHECKREG r2, 0x70020800;
+CHECKREG r3, 0x77031800;
+CHECKREG r4, 0x70044000;
+CHECKREG r5, 0x7005A000;
+CHECKREG r6, 0x70068000;
+CHECKREG r7, 0x70078000;
+
+// 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;
+R1.H = R1.L << 1;
+R2.H = R2.L << 2;
+R3.H = R3.L << 3;
+R4.H = R4.L << 4;
+R5.H = R5.L << 5;
+R6.H = R6.L << 6;
+R7.H = R7.L << 7;
+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;
+R2.H = R1.L << 9;
+R3.H = R2.L << 10;
+R4.H = R3.L << 11;
+R5.H = R4.L << 12;
+R6.H = R5.L << 13;
+R7.H = R6.L << 14;
+R0.H = R7.L << 15;
+CHECKREG r1, 0x01000001;
+CHECKREG r2, 0x02000002;
+CHECKREG r3, 0x08000003;
+CHECKREG r4, 0x18000004;
+CHECKREG r5, 0x40000005;
+CHECKREG r6, 0xA0000006;
+CHECKREG r7, 0x80000007;
+CHECKREG r0, 0x80000001;
+
+
+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;
+R4.H = R1.L << 1;
+R5.H = R2.L << 2;
+R6.H = R3.L << 3;
+R7.H = R4.L << 4;
+R0.H = R5.L << 5;
+R1.H = R6.L << 6;
+R2.H = R7.L << 7;
+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;
+R5.H = R1.L << 9;
+R6.H = R2.L << 10;
+R7.H = R3.L << 11;
+R0.H = R4.L << 12;
+R1.H = R5.L << 13;
+R2.H = R6.L << 14;
+R3.H = R7.L << 15;
+CHECKREG r0, 0x40000501;
+CHECKREG r1, 0xA0000501;
+CHECKREG r2, 0x80000502;
+CHECKREG r3, 0x80000510;
+CHECKREG r4, 0x01000504;
+CHECKREG r5, 0x02000505;
+CHECKREG r6, 0x08000506;
+CHECKREG r7, 0x80000507;
+
+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;
+R6.H = R1.H << 1;
+R7.H = R2.H << 2;
+R0.H = R3.H << 3;
+R1.H = R4.H << 4;
+R2.H = R5.H << 5;
+R3.H = R6.H << 6;
+R4.H = R7.H << 7;
+CHECKREG r0, 0x05180800;
+CHECKREG r1, 0x0A400800;
+CHECKREG r2, 0x14000800;
+CHECKREG r3, 0x50800800;
+CHECKREG r4, 0x44000800;
+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;
+R7.H = R1.H << 9;
+R0.H = R2.H << 10;
+R1.H = R3.H << 11;
+R2.H = R4.H << 12;
+R3.H = R5.H << 13;
+R4.H = R6.H << 14;
+R5.H = R7.H << 15;
+CHECKREG r0, 0x08000000;
+CHECKREG r1, 0x18000001;
+CHECKREG r2, 0x40000000;
+CHECKREG r3, 0xA0000000;
+CHECKREG r4, 0x00000000;
+CHECKREG r5, 0x00000000;
+CHECKREG r6, 0x01000000;
+CHECKREG r7, 0x02000000;
+
+
+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;
+R0.L = R1.H << 1;
+R1.L = R2.H << 2;
+R2.L = R3.H << 3;
+R3.L = R4.H << 4;
+R4.L = R5.H << 5;
+R5.L = R6.H << 6;
+R6.L = R7.H << 7;
+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;
+R1.H = R1.H << 9;
+R2.H = R2.H << 10;
+R3.H = R3.H << 11;
+R4.H = R4.H << 12;
+R5.H = R5.H << 13;
+R6.H = R6.H << 14;
+R7.H = R7.H << 15;
+CHECKREG r0, 0x01000700;
+CHECKREG r1, 0x02000700;
+CHECKREG r2, 0x08000700;
+CHECKREG r3, 0x18000710;
+CHECKREG r4, 0x40000700;
+CHECKREG r5, 0xA0000700;
+CHECKREG r6, 0x80000700;
+CHECKREG r7, 0x80000700;
+
+pass