lhau(x), fixes #110.
This commit is contained in:
parent
64d8ee386b
commit
8471408273
|
@ -143,13 +143,25 @@ XEEMITTER(lha, 0xA8000000, D)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
}
|
}
|
||||||
|
|
||||||
XEEMITTER(lhau, 0xAC000000, D)(PPCHIRBuilder& f, InstrData& i) {
|
XEEMITTER(lhau, 0xAC000000, D)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
// EA <- (RA) + EXTS(D)
|
||||||
return 1;
|
// RT <- EXTS(MEM(EA, 2))
|
||||||
|
// RA <- EA
|
||||||
|
Value* ea = CalculateEA_i(f, i.D.RA, XEEXTS16(i.D.DS));
|
||||||
|
Value* rt = f.SignExtend(f.ByteSwap(f.Load(ea, INT16_TYPE)), INT64_TYPE);
|
||||||
|
f.StoreGPR(i.D.RT, rt);
|
||||||
|
f.StoreGPR(i.D.RA, ea);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
XEEMITTER(lhaux, 0x7C0002EE, X)(PPCHIRBuilder& f, InstrData& i) {
|
XEEMITTER(lhaux, 0x7C0002EE, X)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
// EA <- (RA) + (RB)
|
||||||
return 1;
|
// RT <- EXTS(MEM(EA, 2))
|
||||||
|
// RA <- EA
|
||||||
|
Value* ea = CalculateEA(f, i.X.RA, i.X.RB);
|
||||||
|
Value* rt = f.SignExtend(f.ByteSwap(f.Load(ea, INT16_TYPE)), INT64_TYPE);
|
||||||
|
f.StoreGPR(i.X.RT, rt);
|
||||||
|
f.StoreGPR(i.X.RA, ea);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
XEEMITTER(lhax, 0x7C0002AE, X)(PPCHIRBuilder& f, InstrData& i) {
|
XEEMITTER(lhax, 0x7C0002AE, X)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
|
|
Loading…
Reference in New Issue