diff options
| author | Mike Pall <mike> | 2010-09-16 02:06:20 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2010-09-16 02:06:20 +0200 |
| commit | 028f80c599b558787b1b7098405690b20140d25e (patch) | |
| tree | aea43fca8b2cb3e3569978d59a7faa3afcabdafa | |
| parent | 3f32f4ac99c9ec9f8d58c021a7b623ee1d2467bc (diff) | |
| download | luajit-028f80c599b558787b1b7098405690b20140d25e.tar.gz luajit-028f80c599b558787b1b7098405690b20140d25e.tar.bz2 luajit-028f80c599b558787b1b7098405690b20140d25e.zip | |
PPC: Avoid comparison with NaN in BC_ISEQN/BC_ISNEN.
| -rw-r--r-- | src/buildvm_ppc.dasc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 28258e5e..699056f6 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
| @@ -1313,15 +1313,26 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
| 1313 | | evlddx TMP1, KBASE, RD | 1313 | | evlddx TMP1, KBASE, RD |
| 1314 | | addis TMP3, PC, -(BCBIAS_J*4 >> 16) | 1314 | | addis TMP3, PC, -(BCBIAS_J*4 >> 16) |
| 1315 | | lwz INS, -4(PC) | 1315 | | lwz INS, -4(PC) |
| 1316 | | efdcmpeq TMP0, TMP1 // NYI: avoid comparison with NaN. | 1316 | | checknum TMP0 |
| 1317 | | checkfail >5 | ||
| 1318 | | efdcmpeq TMP0, TMP1 | ||
| 1319 | |1: | ||
| 1317 | | decode_RD4 TMP2, INS | 1320 | | decode_RD4 TMP2, INS |
| 1318 | | add TMP2, TMP2, TMP3 | 1321 | | add TMP2, TMP2, TMP3 |
| 1319 | if (vk) { | 1322 | if (vk) { |
| 1320 | | iselgt PC, TMP2, PC | 1323 | | iselgt PC, TMP2, PC |
| 1324 | |5: | ||
| 1321 | } else { | 1325 | } else { |
| 1322 | | iselgt PC, PC, TMP2 | 1326 | | iselgt PC, PC, TMP2 |
| 1323 | } | 1327 | } |
| 1328 | |3: | ||
| 1324 | | ins_next | 1329 | | ins_next |
| 1330 | if (!vk) { | ||
| 1331 | |5: | ||
| 1332 | | decode_RD4 TMP2, INS | ||
| 1333 | | add PC, TMP2, TMP3 | ||
| 1334 | | b <3 | ||
| 1335 | } | ||
| 1325 | break; | 1336 | break; |
| 1326 | 1337 | ||
| 1327 | case BC_ISEQP: case BC_ISNEP: | 1338 | case BC_ISEQP: case BC_ISNEP: |
