blob: 0cde8c23c4098387e8fca97aeab1a2d4011acb49 [file] [log] [blame]
//Original:/proj/frio/dv/testcases/core/c_ccflag_pr_pr_uu/c_ccflag_pr_pr_uu.dsp
// Spec Reference: ccflag pr-pr (uu)
# mach: bfin
.include "testutils.inc"
start
INIT_R_REGS 0;
//imm32 p0, 0x00110022;
imm32 p1, 0x00110022;
imm32 p2, 0x00330044;
imm32 p3, 0x00550066;
imm32 p4, 0x00770088;
imm32 p5, 0x009900aa;
imm32 fp, 0x00bb00cc;
imm32 sp, 0x00000000;
ASTAT = R0;
R4 = ASTAT;
// positive preg-1 EQUAL to positive preg-2
CC = P2 < P1 (IU);
R6 = ASTAT;
CC = P2 <= P1 (IU);
R7 = ASTAT;
CHECKREG r4, 0x00000000;
CHECKREG r5, 0x00000000;
CHECKREG r6, 0x00000000;
CHECKREG r7, 0x00000000;
// positive preg-1 GREATER than positive preg-2
CC = P3 < P2 (IU);
R6 = ASTAT;
CC = P3 <= P2 (IU);
R7 = ASTAT;
CHECKREG r6, 0x00000000;
CHECKREG r7, 0x00000000;
// positive preg-1 LESS than positive preg-2
CC = P2 < P3 (IU);
R6 = ASTAT;
CC = P2 <= P3 (IU);
R7 = ASTAT;
CHECKREG r6, 0x00000020;
CHECKREG r7, 0x00000020;
//imm32 p0, 0x01230123;
imm32 p1, 0x81230123;
imm32 p2, 0x04560456;
imm32 p3, 0x87890789;
// operate on negative number
R0 = 0;
ASTAT = R0;
R4 = ASTAT;
// positive preg-1 GREATER than negative preg-2
CC = P2 < P1 (IU);
R6 = ASTAT;
CC = P2 <= P1 (IU);
R7 = ASTAT;
CHECKREG r4, 0x00000000;
CHECKREG r6, 0x00000020;
CHECKREG r7, 0x00000020;
// negative preg-1 LESS than POSITIVE preg-2 small
CC = P3 < P2 (IU);
R6 = ASTAT;
CC = P3 <= P2 (IU);
R7 = ASTAT;
CHECKREG r6, 0x00000000;
CHECKREG r7, 0x00000000;
// negative preg-1 GREATER than negative preg-2
CC = P1 < P3 (IU);
R6 = ASTAT;
CC = P1 <= P3 (IU);
R7 = ASTAT;
CHECKREG r6, 0x00000020;
CHECKREG r7, 0x00000020;
// negative preg-1 LESS than negative preg-2
CC = P3 < P1 (IU);
R6 = ASTAT;
CC = P3 <= P1 (IU);
R7 = ASTAT;
CHECKREG r6, 0x00000000;
CHECKREG r7, 0x00000000;
//imm32 p0, 0x80230123;
imm32 p1, 0x00230123;
imm32 p2, 0x80560056;
imm32 p3, 0x00890089;
// operate on negative number
R0 = 0;
ASTAT = R0;
R4 = ASTAT;
// negative preg-1 LESS than POSITIVE preg-2
CC = P2 < P3 (IU);
R6 = ASTAT;
CC = P2 <= P3 (IU);
R7 = ASTAT;
CHECKREG r4, 0x00000000; // overflow and carry but not negative
CHECKREG r6, 0x00000000; // cc overflow, carry and negative
CHECKREG r7, 0x00000000;
imm32 p4, 0x44444444;
imm32 p5, 0x55555555;
imm32 fp, 0x66666666;
imm32 sp, 0x77777777;
//imm32 p0, 0x00000000;
imm32 p1, 0x11111111;
imm32 p2, 0x00000000;
imm32 p3, 0x33333333;
ASTAT = R0;
R3 = ASTAT;
CHECKREG r3, 0x00000000;
// positive preg-1 EQUAL to positive preg-2
CC = P4 < P5;
R1 = ASTAT;
CC = P4 <= P5;
R2 = ASTAT;
CHECKREG r1, 0x00000020;
CHECKREG r2, 0x00000020;
// positive preg-1 GREATER than positive preg-2
CC = SP < FP (IU);
R1 = ASTAT;
CC = SP <= FP (IU);
R2 = ASTAT;
CHECKREG r1, 0x00000000;
CHECKREG r2, 0x00000000;
// positive preg-1 LESS than positive preg-2
CC = FP < SP (IU);
R1 = ASTAT;
CC = FP <= SP (IU);
R2 = ASTAT;
CHECKREG r1, 0x00000020;
CHECKREG r2, 0x00000020;
imm32 p4, 0x01230123;
imm32 p5, 0x81230123;
imm32 fp, 0x04560456;
imm32 sp, 0x87890789;
// operate on negative number
R0 = 0;
ASTAT = R0;
R3 = ASTAT; // nop;
CHECKREG r3, 0x00000000;
// positive preg-1 GREATER than negative preg-2
CC = P4 < P5 (IU);
R2 = ASTAT;
CC = P4 <= P5 (IU);
R3 = ASTAT;
CHECKREG r2, 0x00000020;
CHECKREG r3, 0x00000020;
// negative preg-1 LESS than POSITIVE preg-2 small
CC = SP < FP (IU);
R1 = ASTAT;
CC = SP <= FP (IU);
R2 = ASTAT;
CHECKREG r1, 0x00000000;
CHECKREG r2, 0x00000000;
// negative preg-1 GREATER than negative preg-2
CC = P5 < SP (IU);
R1 = ASTAT;
CC = P5 <= SP (IU);
R2 = ASTAT;
CHECKREG r1, 0x00000020;
CHECKREG r2, 0x00000020;
// negative preg-1 LESS than negative preg-2
CC = SP < P5 (IU);
R2 = ASTAT;
CC = SP <= P5 (IU);
R3 = ASTAT;
CHECKREG r1, 0x00000020;
CHECKREG r2, 0x00000000;
CHECKREG r3, 0x00000000;
imm32 p4, 0x80230123;
imm32 p5, 0x00230123;
imm32 fp, 0x80560056;
imm32 sp, 0x00890089;
// operate on negative number
R0 = 0;
ASTAT = R0;
R0 = ASTAT;
// negative preg-1 LESS than POSITIVE preg-2
CC = R6 < R7 (IU);
R2 = ASTAT;
CC = R6 <= R7 (IU);
R3 = ASTAT;
CHECKREG r0, 0x00000000; // overflow and carry but not negative
CHECKREG r2, 0x00001005; // cc overflow, carry and negative
CHECKREG r3, 0x00001025;
pass;