25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: cpu_alpha_instr_alu.c,v 1.2 2006/01/01 16:08:25 debug Exp $ |
* $Id: cpu_alpha_instr_alu.c,v 1.3 2006/06/03 06:46:44 debug Exp $ |
29 |
* |
* |
30 |
* Alpha ALU instructions. (Included from tmp_alpha_misc.c.) |
* Alpha ALU instructions. (Included from tmp_alpha_misc.c.) |
31 |
* |
* |
45 |
* ALU_MSK masks |
* ALU_MSK masks |
46 |
* ALU_CMOV conditional moves |
* ALU_CMOV conditional moves |
47 |
* ALU_CMP compares |
* ALU_CMP compares |
48 |
|
* ALU_CMPBGE byte compare |
49 |
* none of the above everything else (add, sub, ...) |
* none of the above everything else (add, sub, ...) |
50 |
*/ |
*/ |
51 |
|
|
193 |
|
|
194 |
#else /* ! CMOV */ |
#else /* ! CMOV */ |
195 |
|
|
196 |
|
#ifdef ALU_CMPBGE |
197 |
|
|
198 |
|
uint64_t ra = *((uint64_t *)ic->arg[1]), rc = 0, rb = |
199 |
|
#ifdef ALU_IMM |
200 |
|
(uint64_t)ic->arg[2] |
201 |
|
#else |
202 |
|
(*((uint64_t *)ic->arg[2])) |
203 |
|
#endif |
204 |
|
; |
205 |
|
int i; |
206 |
|
for (i=7; i>=0; i--) { |
207 |
|
if ((uint8_t)ra >= (uint8_t)rb) |
208 |
|
rc |= (1 << i); |
209 |
|
rb >>= 8; ra >>= 8; |
210 |
|
} |
211 |
|
|
212 |
|
*((uint64_t *)ic->arg[0]) = rc; |
213 |
|
|
214 |
|
#else /* ! CMPBGE */ |
215 |
|
|
216 |
#ifdef ALU_CMP |
#ifdef ALU_CMP |
217 |
|
|
218 |
uint64_t x; |
uint64_t x; |
350 |
#endif /* !ALU_CMP */ |
#endif /* !ALU_CMP */ |
351 |
|
|
352 |
*((uint64_t *)ic->arg[0]) = x; |
*((uint64_t *)ic->arg[0]) = x; |
353 |
|
#endif /* ! CMPBGE */ |
354 |
#endif /* ! CMOV */ |
#endif /* ! CMOV */ |
355 |
#endif /* ! MSK */ |
#endif /* ! MSK */ |
356 |
#endif /* ! EXT */ |
#endif /* ! EXT */ |