diff options
| author | Mike Pall <mike> | 2011-10-13 20:53:01 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2011-10-13 20:53:01 +0200 |
| commit | 882537a8744a75681355fb520923e6e867f99d23 (patch) | |
| tree | 4f73b13fb14f5c9a38534a83c8fcb47bbe442c12 /src | |
| parent | bc95d54ec932fddca832e35344efbecf1344e984 (diff) | |
| download | luajit-882537a8744a75681355fb520923e6e867f99d23.tar.gz luajit-882537a8744a75681355fb520923e6e867f99d23.tar.bz2 luajit-882537a8744a75681355fb520923e6e867f99d23.zip | |
FFI: Fix unfused loads of float fields.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_asm_x86.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index 0803ecef..840484d0 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h | |||
| @@ -1147,13 +1147,13 @@ static void asm_strref(ASMState *as, IRIns *ir) | |||
| 1147 | 1147 | ||
| 1148 | static void asm_fxload(ASMState *as, IRIns *ir) | 1148 | static void asm_fxload(ASMState *as, IRIns *ir) |
| 1149 | { | 1149 | { |
| 1150 | Reg dest = ra_dest(as, ir, irt_isnum(ir->t) ? RSET_FPR : RSET_GPR); | 1150 | Reg dest = ra_dest(as, ir, irt_isfp(ir->t) ? RSET_FPR : RSET_GPR); |
| 1151 | x86Op xo; | 1151 | x86Op xo; |
| 1152 | if (ir->o == IR_FLOAD) | 1152 | if (ir->o == IR_FLOAD) |
| 1153 | asm_fusefref(as, ir, RSET_GPR); | 1153 | asm_fusefref(as, ir, RSET_GPR); |
| 1154 | else | 1154 | else |
| 1155 | asm_fusexref(as, ir->op1, RSET_GPR); | 1155 | asm_fusexref(as, ir->op1, RSET_GPR); |
| 1156 | /* ir->op2 is ignored -- unaligned loads are ok on x86. */ | 1156 | /* ir->op2 is ignored -- unaligned loads are ok on x86. */ |
| 1157 | switch (irt_type(ir->t)) { | 1157 | switch (irt_type(ir->t)) { |
| 1158 | case IRT_I8: xo = XO_MOVSXb; break; | 1158 | case IRT_I8: xo = XO_MOVSXb; break; |
| 1159 | case IRT_U8: xo = XO_MOVZXb; break; | 1159 | case IRT_U8: xo = XO_MOVZXb; break; |
