[CPU] Do not return error code from unimplemented overflows checks
Debug assertion and log message still appears
This commit is contained in:
@@ -179,7 +179,6 @@ int InstrEmit_addzex(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
// With XER[SO] update too.
|
// With XER[SO] update too.
|
||||||
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
} else {
|
} else {
|
||||||
// Just CA update.
|
// Just CA update.
|
||||||
f.StoreCA(AddWithCarryDidCarry(f, ra, f.LoadZeroInt64(), f.LoadCA()));
|
f.StoreCA(AddWithCarryDidCarry(f, ra, f.LoadZeroInt64(), f.LoadCA()));
|
||||||
@@ -208,7 +207,6 @@ int InstrEmit_divdx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
// If we are OE=1 we need to clear the overflow bit.
|
// If we are OE=1 we need to clear the overflow bit.
|
||||||
// e.update_xer_with_overflow(e.get_uint64(0));
|
// e.update_xer_with_overflow(e.get_uint64(0));
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
if (i.XO.Rc) {
|
if (i.XO.Rc) {
|
||||||
f.UpdateCR(0, v);
|
f.UpdateCR(0, v);
|
||||||
@@ -234,7 +232,6 @@ int InstrEmit_divdux(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
// If we are OE=1 we need to clear the overflow bit.
|
// If we are OE=1 we need to clear the overflow bit.
|
||||||
// e.update_xer_with_overflow(e.get_uint64(0));
|
// e.update_xer_with_overflow(e.get_uint64(0));
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
if (i.XO.Rc) {
|
if (i.XO.Rc) {
|
||||||
f.UpdateCR(0, v);
|
f.UpdateCR(0, v);
|
||||||
@@ -262,7 +259,6 @@ int InstrEmit_divwx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
// If we are OE=1 we need to clear the overflow bit.
|
// If we are OE=1 we need to clear the overflow bit.
|
||||||
// e.update_xer_with_overflow(e.get_uint64(0));
|
// e.update_xer_with_overflow(e.get_uint64(0));
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
if (i.XO.Rc) {
|
if (i.XO.Rc) {
|
||||||
f.UpdateCR(0, v);
|
f.UpdateCR(0, v);
|
||||||
@@ -291,7 +287,6 @@ int InstrEmit_divwux(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
// If we are OE=1 we need to clear the overflow bit.
|
// If we are OE=1 we need to clear the overflow bit.
|
||||||
// e.update_xer_with_overflow(e.get_uint64(0));
|
// e.update_xer_with_overflow(e.get_uint64(0));
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
if (i.XO.Rc) {
|
if (i.XO.Rc) {
|
||||||
f.UpdateCR(0, v);
|
f.UpdateCR(0, v);
|
||||||
@@ -304,7 +299,6 @@ int InstrEmit_mulhdx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
// With XER update.
|
// With XER update.
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
Value* v = f.MulHi(f.LoadGPR(i.XO.RA), f.LoadGPR(i.XO.RB));
|
Value* v = f.MulHi(f.LoadGPR(i.XO.RA), f.LoadGPR(i.XO.RB));
|
||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
@@ -319,7 +313,6 @@ int InstrEmit_mulhdux(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
// With XER update.
|
// With XER update.
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
Value* v =
|
Value* v =
|
||||||
f.MulHi(f.LoadGPR(i.XO.RA), f.LoadGPR(i.XO.RB), ARITHMETIC_UNSIGNED);
|
f.MulHi(f.LoadGPR(i.XO.RA), f.LoadGPR(i.XO.RB), ARITHMETIC_UNSIGNED);
|
||||||
@@ -335,7 +328,6 @@ int InstrEmit_mulhwx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
// With XER update.
|
// With XER update.
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
Value* ratrunc =
|
Value* ratrunc =
|
||||||
f.SignExtend(f.Truncate(f.LoadGPR(i.XO.RA), INT32_TYPE), INT64_TYPE);
|
f.SignExtend(f.Truncate(f.LoadGPR(i.XO.RA), INT32_TYPE), INT64_TYPE);
|
||||||
@@ -357,7 +349,6 @@ int InstrEmit_mulhwux(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
// With XER update.
|
// With XER update.
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value* ratrunc =
|
Value* ratrunc =
|
||||||
@@ -379,7 +370,6 @@ int InstrEmit_mulldx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
// With XER update.
|
// With XER update.
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
Value* v = f.Mul(f.LoadGPR(i.XO.RA), f.LoadGPR(i.XO.RB));
|
Value* v = f.Mul(f.LoadGPR(i.XO.RA), f.LoadGPR(i.XO.RB));
|
||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
@@ -402,7 +392,6 @@ int InstrEmit_mullwx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
// With XER update.
|
// With XER update.
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
Value* v = f.Mul(
|
Value* v = f.Mul(
|
||||||
f.SignExtend(f.Truncate(f.LoadGPR(i.XO.RA), INT32_TYPE), INT64_TYPE),
|
f.SignExtend(f.Truncate(f.LoadGPR(i.XO.RA), INT32_TYPE), INT64_TYPE),
|
||||||
@@ -441,7 +430,6 @@ int InstrEmit_subfx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
// e.update_xer_with_overflow(EFLAGS??);
|
// e.update_xer_with_overflow(EFLAGS??);
|
||||||
}
|
}
|
||||||
if (i.XO.Rc) {
|
if (i.XO.Rc) {
|
||||||
@@ -458,7 +446,6 @@ int InstrEmit_subfcx(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
// e.update_xer_with_overflow(EFLAGS??);
|
// e.update_xer_with_overflow(EFLAGS??);
|
||||||
} else {
|
} else {
|
||||||
f.StoreCA(SubDidCarry(f, rb, ra));
|
f.StoreCA(SubDidCarry(f, rb, ra));
|
||||||
@@ -486,7 +473,6 @@ int InstrEmit_subfex(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
||||||
} else {
|
} else {
|
||||||
f.StoreCA(AddWithCarryDidCarry(f, not_ra, rb, f.LoadCA()));
|
f.StoreCA(AddWithCarryDidCarry(f, not_ra, rb, f.LoadCA()));
|
||||||
@@ -504,7 +490,6 @@ int InstrEmit_subfmex(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
||||||
} else {
|
} else {
|
||||||
f.StoreCA(
|
f.StoreCA(
|
||||||
@@ -523,7 +508,6 @@ int InstrEmit_subfzex(PPCHIRBuilder& f, const InstrData& i) {
|
|||||||
f.StoreGPR(i.XO.RT, v);
|
f.StoreGPR(i.XO.RT, v);
|
||||||
if (i.XO.OE) {
|
if (i.XO.OE) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
XEINSTRNOTIMPLEMENTED();
|
||||||
return 1;
|
|
||||||
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
// e.update_xer_with_overflow_and_carry(b.CreateExtractValue(v, 1));
|
||||||
} else {
|
} else {
|
||||||
f.StoreCA(AddWithCarryDidCarry(f, not_ra, f.LoadZeroInt64(), f.LoadCA()));
|
f.StoreCA(AddWithCarryDidCarry(f, not_ra, f.LoadZeroInt64(), f.LoadCA()));
|
||||||
|
|||||||
Reference in New Issue
Block a user