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();
Register ra = getBaseReg(base, d, GpRegs);
if (op == LIR_ldcb) {
LDSB32(ra, d, rr);
LDUB32(ra, d, rr);
} else if (op == LIR_ldcs) {
LDSH32(ra, d, rr);
LDUH32(ra, d, rr);
} else {
LDSW32(ra, d, rr);
}

View File

@ -511,28 +511,28 @@ namespace nanojit
Format_3_1I(3, rd, 0x20, rs1, simm13); \
} while (0)
#define LDSB(rs1, rs2, rd) \
#define LDUB(rs1, rs2, rd) \
do { \
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)
#define LDSBI(rs1, simm13, rd) \
#define LDUBI(rs1, simm13, rd) \
do { \
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)
#define LDSH(rs1, rs2, rd) \
#define LDUH(rs1, rs2, rd) \
do { \
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)
#define LDSHI(rs1, simm13, rd) \
#define LDUHI(rs1, simm13, rd) \
do { \
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)
#define LDSW(rs1, rs2, rd) \
@ -877,19 +877,19 @@ namespace nanojit
SET32(imm32, L0); \
}
#define LDSB32(rs1, imm32, rd) \
#define LDUB32(rs1, imm32, rd) \
if(isIMM13(imm32)) { \
LDSBI(rs1, imm32, rd); \
LDUBI(rs1, imm32, rd); \
} else { \
LDSB(rs1, L0, rd); \
LDUB(rs1, L0, rd); \
SET32(imm32, L0); \
}
#define LDSH32(rs1, imm32, rd) \
#define LDUH32(rs1, imm32, rd) \
if(isIMM13(imm32)) { \
LDSHI(rs1, imm32, rd); \
LDUHI(rs1, imm32, rd); \
} else { \
LDSH(rs1, L0, rd); \
LDUH(rs1, L0, rd); \
SET32(imm32, L0); \
}