blob: 110feee58b9a45c648e771f59b08b4933aa6d251 [file] [log] [blame]
//Original:/testcases/core/c_logi2op_arith_shft/c_logi2op_arith_shft.dsp
// Spec Reference: Logi2op >>>=
# mach: bfin
.include "testutils.inc"
start
// Arithmetic >>>= : negative data
// bit 0-7
imm32 r0, 0x81111111;
imm32 r1, 0x81111111;
imm32 r2, 0x81111111;
imm32 r3, 0x81111111;
imm32 r4, 0x81111111;
imm32 r5, 0x81111111;
imm32 r6, 0x81111111;
imm32 r7, 0x81111111;
R0 >>>= 0; /* r0 = 0x81111111 */
R1 >>>= 1; /* r1 = 0xC0888888 */
R2 >>>= 2; /* r2 = 0xE0444444 */
R3 >>>= 3; /* r3 = 0xF0222222 */
R4 >>>= 4; /* r4 = 0xF8111111 */
R5 >>>= 5; /* r5 = 0xFC088888 */
R6 >>>= 6; /* r6 = 0xFE044444 */
R7 >>>= 7; /* r7 = 0xFF022222 */
CHECKREG r0, 0x81111111;
CHECKREG r1, 0xC0888888;
CHECKREG r2, 0xE0444444;
CHECKREG r3, 0xF0222222;
CHECKREG r4, 0xF8111111;
CHECKREG r5, 0xFC088888;
CHECKREG r6, 0xFE044444;
CHECKREG r7, 0xFF022222;
// bit 8-15
imm32 r0, 0x82222222;
imm32 r1, 0x82222222;
imm32 r2, 0x82222222;
imm32 r3, 0x82222222;
imm32 r4, 0x82222222;
imm32 r5, 0x82222222;
imm32 r6, 0x82222222;
imm32 r7, 0x82222222;
R0 >>>= 8; /* r0 = 0xFF822222 */
R1 >>>= 9; /* r1 = 0xFFC11111 */
R2 >>>= 10; /* r2 = 0xFFE08888 */
R3 >>>= 11; /* r3 = 0xFFF04444 */
R4 >>>= 12; /* r4 = 0xFFF82222 */
R5 >>>= 13; /* r5 = 0xFFFC1111 */
R6 >>>= 14; /* r6 = 0xFFFE0888 */
R7 >>>= 15; /* r7 = 0xFFFF0444 */
CHECKREG r0, 0xFF822222;
CHECKREG r1, 0xFFC11111;
CHECKREG r2, 0xFFE08888;
CHECKREG r3, 0xFFF04444;
CHECKREG r4, 0xFFF82222;
CHECKREG r5, 0xFFFC1111;
CHECKREG r6, 0xFFFE0888;
CHECKREG r7, 0xFFFF0444;
// bit 16-23
imm32 r0, 0x83333333;
imm32 r1, 0x83333333;
imm32 r2, 0x83333333;
imm32 r3, 0x83333333;
imm32 r4, 0x83333333;
imm32 r5, 0x83333333;
imm32 r6, 0x83333333;
imm32 r7, 0x83333333;
R0 >>>= 16; /* r0 = 0xFFFF8333 */
R1 >>>= 17; /* r1 = 0xFFFFC199 */
R2 >>>= 18; /* r2 = 0xFFFFE0CC */
R3 >>>= 19; /* r3 = 0xFFFFF066 */
R4 >>>= 20; /* r4 = 0xFFFFF833 */
R5 >>>= 21; /* r5 = 0xFFFFFC19 */
R6 >>>= 22; /* r6 = 0xFFFFFE0C */
R7 >>>= 23; /* r7 = 0xFFFFFF06 */
CHECKREG r0, 0xFFFF8333;
CHECKREG r1, 0xFFFFC199;
CHECKREG r2, 0xFFFFE0CC;
CHECKREG r3, 0xFFFFF066;
CHECKREG r4, 0xFFFFF833;
CHECKREG r5, 0xFFFFFC19;
CHECKREG r6, 0xFFFFFE0C;
CHECKREG r7, 0xFFFFFF06;
// bit 24-31
imm32 r0, 0x84444444;
imm32 r1, 0x84444444;
imm32 r2, 0x84444444;
imm32 r3, 0x84444444;
imm32 r4, 0x84444444;
imm32 r5, 0x84444444;
imm32 r6, 0x84444444;
imm32 r7, 0x84444444;
R0 >>>= 24; /* r0 = 0xFFFFFF84 */
R1 >>>= 25; /* r1 = 0xFFFFFFC2 */
R2 >>>= 26; /* r2 = 0xFFFFFFE1 */
R3 >>>= 27; /* r3 = 0xFFFFFFF0 */
R4 >>>= 28; /* r4 = 0xFFFFFFF8 */
R5 >>>= 29; /* r5 = 0xFFFFFFFC */
R6 >>>= 30; /* r6 = 0xFFFFFFFE */
R7 >>>= 31; /* r7 = 0xFFFFFFFF */
CHECKREG r0, 0xFFFFFF84;
CHECKREG r1, 0xFFFFFFC2;
CHECKREG r2, 0xFFFFFFE1;
CHECKREG r3, 0xFFFFFFF0;
CHECKREG r4, 0xFFFFFFF8;
CHECKREG r5, 0xFFFFFFFC;
CHECKREG r6, 0xFFFFFFFE;
CHECKREG r7, 0xFFFFFFFF;
// Arithmetic >>>= : positive data
// bit 0-7
imm32 r0, 0x41111111;
imm32 r1, 0x41111111;
imm32 r2, 0x41111111;
imm32 r3, 0x41111111;
imm32 r4, 0x41111111;
imm32 r5, 0x41111111;
imm32 r6, 0x41111111;
imm32 r7, 0x41111111;
R0 >>>= 0; /* r0 = 0x41111111 */
R1 >>>= 1; /* r1 = 0x20888888 */
R2 >>>= 2; /* r2 = 0x10444444 */
R3 >>>= 3; /* r3 = 0x08222222 */
R4 >>>= 4; /* r4 = 0x04111111 */
R5 >>>= 5; /* r5 = 0x02088888 */
R6 >>>= 6; /* r6 = 0x01044444 */
R7 >>>= 7; /* r7 = 0x00822222 */
CHECKREG r0, 0x41111111;
CHECKREG r1, 0x20888888;
CHECKREG r2, 0x10444444;
CHECKREG r3, 0x08222222;
CHECKREG r4, 0x04111111;
CHECKREG r5, 0x02088888;
CHECKREG r6, 0x01044444;
CHECKREG r7, 0x00822222;
// bit 8-15
imm32 r0, 0x42222222;
imm32 r1, 0x42222222;
imm32 r2, 0x42222222;
imm32 r3, 0x42222222;
imm32 r4, 0x42222222;
imm32 r5, 0x42222222;
imm32 r6, 0x42222222;
imm32 r7, 0x42222222;
R0 >>>= 8; /* r0 = 0x00422222 */
R1 >>>= 9; /* r1 = 0x00211111 */
R2 >>>= 10; /* r2 = 0x00108888 */
R3 >>>= 11; /* r3 = 0x00084444 */
R4 >>>= 12; /* r4 = 0x00042222 */
R5 >>>= 13; /* r5 = 0x00021111 */
R6 >>>= 14; /* r6 = 0x00010888 */
R7 >>>= 15; /* r7 = 0x00008444 */
CHECKREG r0, 0x00422222;
CHECKREG r1, 0x00211111;
CHECKREG r2, 0x00108888;
CHECKREG r3, 0x00084444;
CHECKREG r4, 0x00042222;
CHECKREG r5, 0x00021111;
CHECKREG r6, 0x00010888;
CHECKREG r7, 0x00008444;
// bit 16-23
imm32 r0, 0x43333333;
imm32 r1, 0x43333333;
imm32 r2, 0x43333333;
imm32 r3, 0x43333333;
imm32 r4, 0x43333333;
imm32 r5, 0x43333333;
imm32 r6, 0x43333333;
imm32 r7, 0x43333333;
R0 >>>= 16; /* r0 = 0x00004333 */
R1 >>>= 17; /* r1 = 0x00002199 */
R2 >>>= 18; /* r2 = 0x000010CC */
R3 >>>= 19; /* r3 = 0x00000866 */
R4 >>>= 20; /* r4 = 0x00000433 */
R5 >>>= 21; /* r5 = 0x00000219 */
R6 >>>= 22; /* r6 = 0x0000010C */
R7 >>>= 23; /* r7 = 0x00000086 */
CHECKREG r0, 0x00004333;
CHECKREG r1, 0x00002199;
CHECKREG r2, 0x000010CC;
CHECKREG r3, 0x00000866;
CHECKREG r4, 0x00000433;
CHECKREG r5, 0x00000219;
CHECKREG r6, 0x0000010C;
CHECKREG r7, 0x00000086;
// bit 24-31
imm32 r0, 0x44444444;
imm32 r1, 0x44444444;
imm32 r2, 0x44444444;
imm32 r3, 0x44444444;
imm32 r4, 0x44444444;
imm32 r5, 0x44444444;
imm32 r6, 0x44444444;
imm32 r7, 0x44444444;
R0 >>>= 24; /* r0 = 0x00000044 */
R1 >>>= 25; /* r1 = 0x00000022 */
R2 >>>= 26; /* r2 = 0x00000011 */
R3 >>>= 27; /* r3 = 0x00000008 */
R4 >>>= 28; /* r4 = 0x00000004 */
R5 >>>= 29; /* r5 = 0x00000002 */
R6 >>>= 30; /* r6 = 0x00000001 */
R7 >>>= 31; /* r7 = 0x00000000 */
CHECKREG r0, 0x00000044;
CHECKREG r1, 0x00000022;
CHECKREG r2, 0x00000011;
CHECKREG r3, 0x00000008;
CHECKREG r4, 0x00000004;
CHECKREG r5, 0x00000002;
CHECKREG r6, 0x00000001;
CHECKREG r7, 0x00000000;
pass