Revision 019702c8
b/target-ppc/op_helper.c | ||
---|---|---|
3343 | 3343 |
HELPER_SPE_VECTOR_ARITH(fsdiv); |
3344 | 3344 |
|
3345 | 3345 |
/* Single-precision floating-point comparisons */ |
3346 |
static inline uint32_t efststlt(uint32_t op1, uint32_t op2)
|
|
3346 |
static inline uint32_t efscmplt(uint32_t op1, uint32_t op2)
|
|
3347 | 3347 |
{ |
3348 | 3348 |
CPU_FloatU u1, u2; |
3349 | 3349 |
u1.l = op1; |
... | ... | |
3351 | 3351 |
return float32_lt(u1.f, u2.f, &env->vec_status) ? 4 : 0; |
3352 | 3352 |
} |
3353 | 3353 |
|
3354 |
static inline uint32_t efststgt(uint32_t op1, uint32_t op2)
|
|
3354 |
static inline uint32_t efscmpgt(uint32_t op1, uint32_t op2)
|
|
3355 | 3355 |
{ |
3356 | 3356 |
CPU_FloatU u1, u2; |
3357 | 3357 |
u1.l = op1; |
... | ... | |
3359 | 3359 |
return float32_le(u1.f, u2.f, &env->vec_status) ? 0 : 4; |
3360 | 3360 |
} |
3361 | 3361 |
|
3362 |
static inline uint32_t efststeq(uint32_t op1, uint32_t op2)
|
|
3362 |
static inline uint32_t efscmpeq(uint32_t op1, uint32_t op2)
|
|
3363 | 3363 |
{ |
3364 | 3364 |
CPU_FloatU u1, u2; |
3365 | 3365 |
u1.l = op1; |
3366 | 3366 |
u2.l = op2; |
3367 |
return float32_eq_quiet(u1.f, u2.f, &env->vec_status) ? 4 : 0;
|
|
3367 |
return float32_eq(u1.f, u2.f, &env->vec_status) ? 4 : 0; |
|
3368 | 3368 |
} |
3369 | 3369 |
|
3370 |
static inline uint32_t efscmplt(uint32_t op1, uint32_t op2)
|
|
3370 |
static inline uint32_t efststlt(uint32_t op1, uint32_t op2)
|
|
3371 | 3371 |
{ |
3372 |
/* XXX: TODO: test special values (NaN, infinites, ...) */
|
|
3373 |
return efststlt(op1, op2);
|
|
3372 |
/* XXX: TODO: ignore special values (NaN, infinites, ...) */
|
|
3373 |
return efscmplt(op1, op2);
|
|
3374 | 3374 |
} |
3375 | 3375 |
|
3376 |
static inline uint32_t efscmpgt(uint32_t op1, uint32_t op2)
|
|
3376 |
static inline uint32_t efststgt(uint32_t op1, uint32_t op2)
|
|
3377 | 3377 |
{ |
3378 |
/* XXX: TODO: test special values (NaN, infinites, ...) */
|
|
3379 |
return efststgt(op1, op2);
|
|
3378 |
/* XXX: TODO: ignore special values (NaN, infinites, ...) */
|
|
3379 |
return efscmpgt(op1, op2);
|
|
3380 | 3380 |
} |
3381 | 3381 |
|
3382 |
static inline uint32_t efscmpeq(uint32_t op1, uint32_t op2)
|
|
3382 |
static inline uint32_t efststeq(uint32_t op1, uint32_t op2)
|
|
3383 | 3383 |
{ |
3384 |
/* XXX: TODO: test special values (NaN, infinites, ...) */
|
|
3385 |
return efststeq(op1, op2);
|
|
3384 |
/* XXX: TODO: ignore special values (NaN, infinites, ...) */
|
|
3385 |
return efscmpeq(op1, op2);
|
|
3386 | 3386 |
} |
3387 | 3387 |
|
3388 | 3388 |
#define HELPER_SINGLE_SPE_CMP(name) \ |
Also available in: Unified diff