1 //Original:/proj/frio/dv/testcases/core/c_ccflag_pr_pr/c_ccflag_pr_pr.dsp 2 // Spec Reference: ccflag pr-pr 3 # mach: bfin 4 5 .include "testutils.inc" 6 start 7 8 INIT_P_REGS 0; 9 INIT_R_REGS 0; 10 11 12 //imm32 p0, 0x00110022; 13 imm32 p1, 0x00110022; 14 imm32 p2, 0x00330044; 15 imm32 p3, 0x00550066; 16 17 imm32 p4, 0x00770088; 18 imm32 p5, 0x009900aa; 19 imm32 fp, 0x00bb00cc; 20 imm32 sp, 0x00000000; 21 22 R0 = 0; 23 ASTAT = R0; 24 R4 = ASTAT; 25 26 // positive preg-1 EQUAL to positive preg-2 27 CC = P2 == P1; 28 R5 = ASTAT; 29 P5 = R5; 30 CC = P2 < P1; 31 R6 = ASTAT; 32 CC = P2 <= P1; 33 R7 = ASTAT; 34 CHECKREG r4, 0x00000000; 35 CHECKREG r5, 0x00000000; 36 CHECKREG r6, 0x00000000; 37 CHECKREG r7, 0x00000000; 38 39 // positive preg-1 GREATER than positive preg-2 40 CC = P3 == P2; 41 R5 = ASTAT; 42 CC = P3 < P2; 43 R6 = ASTAT; 44 CC = P3 <= P2; 45 R7 = ASTAT; 46 CHECKREG r5, 0x00000000; 47 CHECKREG r6, 0x00000000; 48 CHECKREG r7, 0x00000000; 49 // positive preg-1 LESS than positive preg-2 50 CC = P2 == P3; 51 R5 = ASTAT; 52 CC = P2 < P3; 53 R6 = ASTAT; 54 CC = P2 <= P3; 55 R7 = ASTAT; 56 CHECKREG r5, 0x00000000; 57 CHECKREG r6, 0x00000020; 58 CHECKREG r7, 0x00000020; 59 60 //imm32 p0, 0x01230123; 61 imm32 p1, 0x81230123; 62 imm32 p2, 0x04560456; 63 imm32 p3, 0x87890789; 64 // operate on negative number 65 R0 = 0; 66 ASTAT = R0; 67 R4 = ASTAT; 68 69 // positive preg-1 GREATER than negative preg-2 70 CC = P2 == P1; 71 R5 = ASTAT; 72 CC = P2 < P1; 73 R6 = ASTAT; 74 CC = P2 <= P1; 75 R7 = ASTAT; 76 CHECKREG r4, 0x00000000; 77 CHECKREG r5, 0x00000000; 78 CHECKREG r6, 0x00000000; 79 CHECKREG r7, 0x00000000; 80 81 // negative preg-1 LESS than POSITIVE preg-2 small 82 CC = P3 == P2; 83 R5 = ASTAT; 84 CC = P3 < P2; 85 R6 = ASTAT; 86 CC = P3 <= P2; 87 R7 = ASTAT; 88 CHECKREG r5, 0x00000000; 89 CHECKREG r6, 0x00000020; 90 CHECKREG r7, 0x00000020; 91 92 // negative preg-1 GREATER than negative preg-2 93 CC = P1 == P3; 94 R5 = ASTAT; 95 CC = P1 < P3; 96 R6 = ASTAT; 97 CC = P1 <= P3; 98 R7 = ASTAT; 99 CHECKREG r5, 0x00000000; 100 CHECKREG r6, 0x00000020; 101 CHECKREG r7, 0x00000020; 102 103 // negative preg-1 LESS than negative preg-2 104 CC = P3 == P1; 105 R5 = ASTAT; 106 CC = P3 < P1; 107 R6 = ASTAT; 108 CC = P3 <= P1; 109 R7 = ASTAT; 110 CHECKREG r5, 0x00000000; 111 CHECKREG r6, 0x00000000; 112 CHECKREG r7, 0x00000000; 113 114 115 //imm32 p0, 0x80230123; 116 imm32 p1, 0x00230123; 117 imm32 p2, 0x80560056; 118 imm32 p3, 0x00890089; 119 // operate on negative number 120 R0 = 0; 121 ASTAT = R0; 122 R4 = ASTAT; 123 124 // negative preg-1 LESS than POSITIVE preg-2 125 CC = P2 == P3; 126 R5 = ASTAT; 127 CC = P2 < P3; 128 R6 = ASTAT; 129 CC = P2 <= P3; 130 R7 = ASTAT; 131 CHECKREG r4, 0x00000000; 132 CHECKREG r5, 0x00000000; // overflow and carry but not negative 133 CHECKREG r6, 0x00000020; // cc overflow, carry and negative 134 CHECKREG r7, 0x00000020; 135 136 137 imm32 p4, 0x44444444; 138 imm32 p5, 0x55555555; 139 imm32 fp, 0x66666666; 140 imm32 sp, 0x77777777; 141 142 //imm32 p0, 0x00000000; 143 imm32 p1, 0x11111111; 144 imm32 p2, 0x00000000; 145 imm32 p3, 0x33333333; 146 147 ASTAT = R0; 148 R3 = ASTAT; 149 CHECKREG r3, 0x00000000; 150 151 // positive preg-1 EQUAL to positive preg-2 152 CC = P4 == P5; 153 R0 = ASTAT; 154 CC = P4 < P5; 155 R1 = ASTAT; 156 CC = P4 <= P5; 157 R2 = ASTAT; 158 CHECKREG r0, 0x00000000; 159 CHECKREG r1, 0x00000020; 160 CHECKREG r2, 0x00000020; 161 162 // positive preg-1 GREATER than positive preg-2 163 CC = SP == FP; 164 R0 = ASTAT; 165 CC = SP < FP; 166 R1 = ASTAT; 167 CC = SP <= FP; 168 R2 = ASTAT; 169 CHECKREG r0, 0x00000000; 170 CHECKREG r1, 0x00000000; 171 CHECKREG r2, 0x00000000; 172 173 174 // positive preg-1 LESS than positive preg-2 175 CC = FP == SP; 176 R0 = ASTAT; 177 CC = FP < SP; 178 R1 = ASTAT; 179 CC = FP <= SP; 180 R2 = ASTAT; 181 CHECKREG r0, 0x00000000; 182 CHECKREG r1, 0x00000020; 183 CHECKREG r2, 0x00000020; 184 185 imm32 p4, 0x01230123; 186 imm32 p5, 0x81230123; 187 imm32 fp, 0x04560456; 188 imm32 sp, 0x87890789; 189 // operate on negative number 190 R0 = 0; 191 ASTAT = R0; 192 R3 = ASTAT; // nop; 193 CHECKREG r3, 0x00000000; 194 195 // positive preg-1 GREATER than negative preg-2 196 CC = P4 == P5; 197 R1 = ASTAT; 198 CC = P4 < P5; 199 R2 = ASTAT; 200 CC = P4 <= P5; 201 R3 = ASTAT; 202 CHECKREG r1, 0x00000000; 203 CHECKREG r2, 0x00000000; 204 CHECKREG r3, 0x00000000; 205 206 // negative preg-1 LESS than POSITIVE preg-2 small 207 CC = SP == FP; 208 R0 = ASTAT; 209 CC = SP < FP; 210 R1 = ASTAT; 211 CC = SP <= FP; 212 R2 = ASTAT; 213 CHECKREG r0, 0x00000000; 214 CHECKREG r1, 0x00000020; 215 CHECKREG r2, 0x00000020; 216 217 // negative preg-1 GREATER than negative preg-2 218 CC = P5 == SP; 219 R0 = ASTAT; 220 CC = P5 < SP; 221 R1 = ASTAT; 222 CC = P5 <= SP; 223 R2 = ASTAT; 224 CHECKREG r0, 0x00000000; 225 CHECKREG r1, 0x00000020; 226 CHECKREG r2, 0x00000020; 227 228 // negative preg-1 LESS than negative preg-2 229 CC = SP == P5; 230 R1 = ASTAT; 231 CC = SP < P5; 232 R2 = ASTAT; 233 CC = SP <= P5; 234 R3 = ASTAT; 235 CHECKREG r1, 0x00000000; 236 CHECKREG r2, 0x00000000; 237 CHECKREG r3, 0x00000000; 238 239 240 imm32 p4, 0x80230123; 241 imm32 p5, 0x00230123; 242 imm32 fp, 0x80560056; 243 imm32 sp, 0x00890089; 244 // operate on negative number 245 P3 = 0; 246 ASTAT = P3; 247 R0 = ASTAT; 248 249 // negative preg-1 LESS than POSITIVE preg-2 250 CC = R6 == R7; 251 R1 = ASTAT; 252 CC = R6 < R7; 253 R2 = ASTAT; 254 CC = R6 <= R7; 255 R3 = ASTAT; 256 CHECKREG r0, 0x00000000; 257 CHECKREG r1, 0x00001025; // overflow and carry but not negative 258 CHECKREG r2, 0x00001005; // cc overflow, carry and negative 259 CHECKREG r3, 0x00001025; 260 261 262 pass; 263