1 //Original:/proj/frio/dv/testcases/core/c_ccflag_dr_imm3/c_ccflag_dr_imm3.dsp 2 // Spec Reference: ccflag dr-imm3 3 # mach: bfin 4 5 .include "testutils.inc" 6 start 7 8 9 imm32 r0, 0x00000001; 10 imm32 r1, 0x00000002; 11 imm32 r2, 0x00000003; 12 imm32 r3, 0x00000004; 13 14 imm32 r4, 0x00770088; 15 imm32 r5, 0x009900aa; 16 imm32 r6, 0x00bb00cc; 17 imm32 r7, 0x00000000; 18 19 ASTAT = R7; 20 R4 = ASTAT; 21 22 // positive dreg EQUAL to positive imm3 23 CC = R0 == 1; 24 R5 = ASTAT; 25 CC = R0 < 1; 26 R6 = ASTAT; 27 CHECKREG r4, 0x00000000; 28 CHECKREG r5, 0x00001025; 29 CHECKREG r6, 0x00001005; 30 CC = R0 <= 1; 31 R5 = ASTAT; 32 CC = R0 < 1; 33 R6 = ASTAT; 34 CC = R0 <= 1; 35 R7 = ASTAT; 36 CHECKREG r5, 0x00001025; 37 CHECKREG r6, 0x00001005; 38 CHECKREG r7, 0x00001025; 39 40 // positive dreg GREATER than to positive imm3 41 CC = R1 == 1; 42 R5 = ASTAT; 43 CC = R1 < 1; 44 R6 = ASTAT; 45 CC = R1 <= 1; 46 R7 = ASTAT; 47 CHECKREG r5, 0x00001004; // carry 48 CHECKREG r6, 0x00001004; 49 CHECKREG r7, 0x00001004; 50 51 // positive dreg LESS than to positive imm3 52 CC = R0 == 2; 53 R5 = ASTAT; 54 CC = R0 < 2; 55 R6 = ASTAT; 56 CC = R0 <= 2; 57 R7 = ASTAT; 58 CHECKREG r5, 0x00000002; 59 CHECKREG r6, 0x00000022; 60 CHECKREG r7, 0x00000022; 61 62 // positive dreg GREATER than to neg imm3 63 CC = R2 == -4; 64 R5 = ASTAT; 65 CC = R2 < -4; 66 R6 = ASTAT; 67 CC = R2 <= -4; 68 R7 = ASTAT; 69 CHECKREG r5, 0x00000000; 70 CHECKREG r6, 0x00000000; 71 CHECKREG r7, 0x00000000; 72 73 imm32 r0, -1; 74 imm32 r1, -2; 75 imm32 r2, -3; 76 imm32 r3, -4; 77 // negative dreg and positive imm3 78 R7 = 0; 79 ASTAT = R7; 80 R4 = ASTAT; 81 82 CC = R3 == 1; 83 R5 = ASTAT; 84 CC = R3 < 1; 85 R6 = ASTAT; 86 CC = R3 <= 1; 87 R7 = ASTAT; 88 CHECKREG r4, 0x00000000; 89 CHECKREG r5, 0x00001006; 90 CHECKREG r6, 0x00001026; 91 CHECKREG r7, 0x00001026; 92 93 // negative dreg LESS than neg imm3 94 CC = R2 == -1; 95 R4 = ASTAT; 96 CC = R2 < -1; 97 R5 = ASTAT; 98 CC = R2 <= -1; 99 R6 = ASTAT; 100 CHECKREG r4, 0x00000002; 101 CHECKREG r5, 0x00000022; 102 CHECKREG r6, 0x00000022; 103 104 // negative dreg GREATER neg imm3 105 CC = R0 == -4; 106 R4 = ASTAT; 107 CC = R0 < -4; 108 R5 = ASTAT; 109 CC = R0 <= -4; 110 R6 = ASTAT; 111 CHECKREG r4, 0x00001004; 112 CHECKREG r5, 0x00001004; 113 CHECKREG r6, 0x00001004; 114 115 116 imm32 r0, 0x00000000; 117 imm32 r1, 0x00000000; 118 imm32 r2, 0x00000000; 119 imm32 r3, 0x00000000; 120 121 imm32 r4, 0x00000001; 122 imm32 r5, 0x00000002; 123 imm32 r6, 0x00000003; 124 imm32 r7, 0x00000004; 125 126 ASTAT = R0; 127 R3 = ASTAT; 128 129 // positive dreg EQUAL to positive imm3 130 CC = R4 == 1; 131 R1 = ASTAT; 132 CC = R4 < 1; 133 R2 = ASTAT; 134 CHECKREG r0, 0x00000000; 135 CHECKREG r1, 0x00001025; 136 CHECKREG r2, 0x00001005; 137 CC = R4 <= 1; 138 R1 = ASTAT; 139 CC = R4 < 1; 140 R2 = ASTAT; 141 CC = R4 <= 1; 142 R3 = ASTAT; 143 CHECKREG r1, 0x00001025; 144 CHECKREG r2, 0x00001005; 145 CHECKREG r3, 0x00001025; 146 147 // positive dreg GREATER than to positive imm3 148 CC = R5 == 1; 149 R1 = ASTAT; 150 CC = R5 < 1; 151 R2 = ASTAT; 152 CC = R5 <= 1; 153 R3 = ASTAT; 154 CHECKREG r1, 0x00001004; // carry 155 CHECKREG r2, 0x00001004; 156 CHECKREG r3, 0x00001004; 157 158 // positive dreg LESS than to positive imm3 159 CC = R6 == 2; 160 R1 = ASTAT; 161 CC = R6 < 2; 162 R2 = ASTAT; 163 CC = R6 <= 2; 164 R3 = ASTAT; 165 CHECKREG r1, 0x00001004; 166 CHECKREG r2, 0x00001004; 167 CHECKREG r3, 0x00001004; 168 169 // positive dreg GREATER than to neg imm3 170 CC = R6 == -4; 171 R1 = ASTAT; 172 CC = R6 < -4; 173 R2 = ASTAT; 174 CC = R6 <= -4; 175 R3 = ASTAT; 176 CHECKREG r1, 0x00000000; 177 CHECKREG r2, 0x00000000; 178 CHECKREG r3, 0x00000000; 179 180 imm32 r4, -1; 181 imm32 r5, -2; 182 imm32 r6, -3; 183 imm32 r7, -4; 184 // negative dreg and positive imm3 185 R3 = 0; 186 ASTAT = R3; 187 R0 = ASTAT; 188 189 CC = R7 == 1; 190 R1 = ASTAT; 191 CC = R7 < 1; 192 R2 = ASTAT; 193 CC = R7 <= 1; 194 R3 = ASTAT; 195 CHECKREG r0, 0x00000000; 196 CHECKREG r1, 0x00001006; 197 CHECKREG r2, 0x00001026; 198 CHECKREG r3, 0x00001026; 199 200 // negative dreg LESS than neg imm3 201 CC = R6 == -1; 202 R0 = ASTAT; 203 CC = R6 < -1; 204 R1 = ASTAT; 205 CC = R6 <= -1; 206 R2 = ASTAT; 207 CHECKREG r0, 0x00000002; 208 CHECKREG r1, 0x00000022; 209 CHECKREG r2, 0x00000022; 210 211 // negative dreg GREATER neg imm3 212 CC = R4 == -4; 213 R0 = ASTAT; 214 CC = R4 < -4; 215 R1 = ASTAT; 216 CC = R4 <= -4; 217 R2 = ASTAT; 218 CHECKREG r0, 0x00001004; 219 CHECKREG r1, 0x00001004; 220 CHECKREG r2, 0x00001004; 221 222 223 224 pass; 225