Minor tweaks while reviewing instructions.
This commit is contained in:
parent
5827f5f5d8
commit
ffe9fad685
|
@ -2893,6 +2893,8 @@ EMITTER(VECTOR_ADD, MATCH(I<OPCODE_VECTOR_ADD, V128<>, V128<>, V128<>>)){
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FLOAT32_TYPE:
|
case FLOAT32_TYPE:
|
||||||
|
assert_false(is_unsigned);
|
||||||
|
assert_false(saturate);
|
||||||
e.vaddps(dest, src1, src2);
|
e.vaddps(dest, src1, src2);
|
||||||
break;
|
break;
|
||||||
default: assert_unhandled_case(part_type); break;
|
default: assert_unhandled_case(part_type); break;
|
||||||
|
|
|
@ -365,9 +365,9 @@ XEEMITTER(mullwx, 0x7C0001D6, XO)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
Value* v = f.Mul(
|
Value* v = f.SignExtend(f.Mul(f.Truncate(f.LoadGPR(i.XO.RA), INT32_TYPE),
|
||||||
f.SignExtend(f.Truncate(f.LoadGPR(i.XO.RA), INT32_TYPE), INT64_TYPE),
|
f.Truncate(f.LoadGPR(i.XO.RB), INT32_TYPE)),
|
||||||
f.SignExtend(f.Truncate(f.LoadGPR(i.XO.RB), INT32_TYPE), INT64_TYPE));
|
INT64_TYPE);
|
||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
if (i.XO.Rc) {
|
if (i.XO.Rc) {
|
||||||
f.UpdateCR(0, v);
|
f.UpdateCR(0, v);
|
||||||
|
@ -743,8 +743,7 @@ XEEMITTER(nandx, 0x7C0003B8, X)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
|
|
||||||
XEEMITTER(norx, 0x7C0000F8, X)(PPCHIRBuilder& f, InstrData& i) {
|
XEEMITTER(norx, 0x7C0000F8, X)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
// RA <- ¬((RS) | (RB))
|
// RA <- ¬((RS) | (RB))
|
||||||
Value* ra = f.Or(f.LoadGPR(i.X.RT), f.LoadGPR(i.X.RB));
|
Value* ra = f.Not(f.Or(f.LoadGPR(i.X.RT), f.LoadGPR(i.X.RB)));
|
||||||
ra = f.Not(ra);
|
|
||||||
f.StoreGPR(i.X.RA, ra);
|
f.StoreGPR(i.X.RA, ra);
|
||||||
if (i.X.Rc) {
|
if (i.X.Rc) {
|
||||||
f.UpdateCR(0, ra);
|
f.UpdateCR(0, ra);
|
||||||
|
|
|
@ -454,6 +454,9 @@ XEEMITTER(mtfsfx, 0xFC00058E, XFL)(PPCHIRBuilder& f, InstrData& i) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
// Directly store.
|
// Directly store.
|
||||||
|
// TODO(benvanik): use w/field mask to select bits.
|
||||||
|
i.XFL.W;
|
||||||
|
i.XFL.FM;
|
||||||
f.StoreFPSCR(f.Cast(f.LoadFPR(i.XFL.RB), INT64_TYPE));
|
f.StoreFPSCR(f.Cast(f.LoadFPR(i.XFL.RB), INT64_TYPE));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue