PPC: Fix ordered comparisons for NaN operands.

This commit is contained in:
Mike Pall 2010-09-16 02:09:19 +02:00
parent 028f80c599
commit 4f1d43d03e

View File

@ -1207,18 +1207,18 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
| addi PC, PC, 4 | addi PC, PC, 4
| evlddx TMP1, BASE, RD | evlddx TMP1, BASE, RD
| addis TMP3, PC, -(BCBIAS_J*4 >> 16) | addis TMP3, PC, -(BCBIAS_J*4 >> 16)
| lwz INS, -4(PC) | lwz TMP2, -4(PC)
| evmergehi RB, TMP0, TMP1 | evmergehi RB, TMP0, TMP1
| decode_RD4 TMP2, INS | decode_RD4 TMP2, TMP2
| checknum RB | checknum RB
| add TMP2, TMP2, TMP3 | add TMP2, TMP2, TMP3
| checkanyfail ->vmeta_comp | checkanyfail ->vmeta_comp
if (op == BC_ISLT || op == BC_ISGE) { | efdcmplt TMP0, TMP1
| efdcmplt TMP0, TMP1 if (op == BC_ISLE || op == BC_ISGT) {
} else { | efdcmpeq cr1, TMP0, TMP1
| efdcmpgt TMP0, TMP1 | cror 4*cr0+gt, 4*cr0+gt, 4*cr1+gt
} }
if (op == BC_ISLT || op == BC_ISGT) { if (op == BC_ISLT || op == BC_ISLE) {
| iselgt PC, TMP2, PC | iselgt PC, TMP2, PC
} else { } else {
| iselgt PC, PC, TMP2 | iselgt PC, PC, TMP2