mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 476042 Integrate sparc nanojit, fix for LDUB/LDUH, r=gal
This commit is contained in:
parent
6166e0dd40
commit
db99836469
@ -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);
|
||||
}
|
||||
|
@ -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); \
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user