Bug 476042 Integrate sparc nanojit, fix for LDUB/LDUH, r=gal

This commit is contained in:
Ginn Chen 2009-02-27 17:17:08 +08:00
parent 6166e0dd40
commit db99836469
2 changed files with 16 additions and 16 deletions

View File

@ -770,9 +770,9 @@ namespace nanojit
int d = disp->constval(); int d = disp->constval();
Register ra = getBaseReg(base, d, GpRegs); Register ra = getBaseReg(base, d, GpRegs);
if (op == LIR_ldcb) { if (op == LIR_ldcb) {
LDSB32(ra, d, rr); LDUB32(ra, d, rr);
} else if (op == LIR_ldcs) { } else if (op == LIR_ldcs) {
LDSH32(ra, d, rr); LDUH32(ra, d, rr);
} else { } else {
LDSW32(ra, d, rr); LDSW32(ra, d, rr);
} }

View File

@ -511,28 +511,28 @@ namespace nanojit
Format_3_1I(3, rd, 0x20, rs1, simm13); \ Format_3_1I(3, rd, 0x20, rs1, simm13); \
} while (0) } while (0)
#define LDSB(rs1, rs2, rd) \ #define LDUB(rs1, rs2, rd) \
do { \ do { \
asm_output("ld [%s + %s], %s", gpn(rs1), gpn(rs2), gpn(rd)); \ asm_output("ld [%s + %s], %s", gpn(rs1), gpn(rs2), gpn(rd)); \
Format_3_1(3, rd, 0x9, rs1, 0, rs2); \ Format_3_1(3, rd, 0x1, rs1, 0, rs2); \
} while (0) } while (0)
#define LDSBI(rs1, simm13, rd) \ #define LDUBI(rs1, simm13, rd) \
do { \ do { \
asm_output("ld [%s + %d], %s", gpn(rs1), simm13, gpn(rd)); \ asm_output("ld [%s + %d], %s", gpn(rs1), simm13, gpn(rd)); \
Format_3_1I(3, rd, 0x9, rs1, simm13); \ Format_3_1I(3, rd, 0x1, rs1, simm13); \
} while (0) } while (0)
#define LDSH(rs1, rs2, rd) \ #define LDUH(rs1, rs2, rd) \
do { \ do { \
asm_output("ld [%s + %s], %s", gpn(rs1), gpn(rs2), gpn(rd)); \ asm_output("ld [%s + %s], %s", gpn(rs1), gpn(rs2), gpn(rd)); \
Format_3_1(3, rd, 0xa, rs1, 0, rs2); \ Format_3_1(3, rd, 0x2, rs1, 0, rs2); \
} while (0) } while (0)
#define LDSHI(rs1, simm13, rd) \ #define LDUHI(rs1, simm13, rd) \
do { \ do { \
asm_output("ld [%s + %d], %s", gpn(rs1), simm13, gpn(rd)); \ asm_output("ld [%s + %d], %s", gpn(rs1), simm13, gpn(rd)); \
Format_3_1I(3, rd, 0xa, rs1, simm13); \ Format_3_1I(3, rd, 0x2, rs1, simm13); \
} while (0) } while (0)
#define LDSW(rs1, rs2, rd) \ #define LDSW(rs1, rs2, rd) \
@ -877,19 +877,19 @@ namespace nanojit
SET32(imm32, L0); \ SET32(imm32, L0); \
} }
#define LDSB32(rs1, imm32, rd) \ #define LDUB32(rs1, imm32, rd) \
if(isIMM13(imm32)) { \ if(isIMM13(imm32)) { \
LDSBI(rs1, imm32, rd); \ LDUBI(rs1, imm32, rd); \
} else { \ } else { \
LDSB(rs1, L0, rd); \ LDUB(rs1, L0, rd); \
SET32(imm32, L0); \ SET32(imm32, L0); \
} }
#define LDSH32(rs1, imm32, rd) \ #define LDUH32(rs1, imm32, rd) \
if(isIMM13(imm32)) { \ if(isIMM13(imm32)) { \
LDSHI(rs1, imm32, rd); \ LDUHI(rs1, imm32, rd); \
} else { \ } else { \
LDSH(rs1, L0, rd); \ LDUH(rs1, L0, rd); \
SET32(imm32, L0); \ SET32(imm32, L0); \
} }