mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
Fixed division issue with RDX preservation
This commit is contained in:
parent
fc57557fd9
commit
69cb6d0208
3 changed files with 9 additions and 1 deletions
|
@ -5578,6 +5578,9 @@ void BeMCContext::DisableRegister(const BeMCOperand& operand, X64CPURegister reg
|
||||||
case X64Reg_RAX:
|
case X64Reg_RAX:
|
||||||
vregInfo->mDisableRAX = true;
|
vregInfo->mDisableRAX = true;
|
||||||
break;
|
break;
|
||||||
|
case X64Reg_RDX:
|
||||||
|
vregInfo->mDisableRDX = true;
|
||||||
|
break;
|
||||||
case X64Reg_SIL:
|
case X64Reg_SIL:
|
||||||
vregInfo->mDisableEx = true;
|
vregInfo->mDisableEx = true;
|
||||||
break;
|
break;
|
||||||
|
@ -9228,6 +9231,8 @@ bool BeMCContext::DoLegalization()
|
||||||
{
|
{
|
||||||
// This is to avoid overlap with PreserveRAX
|
// This is to avoid overlap with PreserveRAX
|
||||||
DisableRegister(inst->mArg0, X64Reg_RAX);
|
DisableRegister(inst->mArg0, X64Reg_RAX);
|
||||||
|
if (preserveRDX)
|
||||||
|
DisableRegister(inst->mArg0, X64Reg_RDX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AllocInst(BeMCInstKind_Mov, inst->mArg0, mcRemaindier, instIdx++ + 1);
|
AllocInst(BeMCInstKind_Mov, inst->mArg0, mcRemaindier, instIdx++ + 1);
|
||||||
|
@ -14709,7 +14714,7 @@ void BeMCContext::Generate(BeFunction* function)
|
||||||
mDbgPreferredRegs[32] = X64Reg_R8;*/
|
mDbgPreferredRegs[32] = X64Reg_R8;*/
|
||||||
|
|
||||||
//mDbgPreferredRegs[8] = X64Reg_RAX;
|
//mDbgPreferredRegs[8] = X64Reg_RAX;
|
||||||
//mDebugging = function->mName == "?Hey@Blurg@bf@@SAXXZ";
|
mDebugging = function->mName == "?Dequeue@?$Queue@Tint@@@Generic@Collections@System@bf@@QEAATint@@XZ";
|
||||||
//"?ColorizeCodeString@IDEUtils@IDE@bf@@SAXPEAVString@System@3@W4CodeKind@123@@Z";
|
//"?ColorizeCodeString@IDEUtils@IDE@bf@@SAXPEAVString@System@3@W4CodeKind@123@@Z";
|
||||||
//"?Main@Program@bf@@CAHPEAV?$Array1@PEAVString@System@bf@@@System@2@@Z";
|
//"?Main@Program@bf@@CAHPEAV?$Array1@PEAVString@System@bf@@@System@2@@Z";
|
||||||
|
|
||||||
|
|
|
@ -428,6 +428,7 @@ BfCompiler::BfCompiler(BfSystem* bfSystem, bool isResolveOnly)
|
||||||
mTypeTypeDef = NULL;
|
mTypeTypeDef = NULL;
|
||||||
mUnboundAttributeTypeDef = NULL;
|
mUnboundAttributeTypeDef = NULL;
|
||||||
mValueTypeTypeDef = NULL;
|
mValueTypeTypeDef = NULL;
|
||||||
|
mResultTypeDef = NULL;
|
||||||
mObsoleteAttributeTypeDef = NULL;
|
mObsoleteAttributeTypeDef = NULL;
|
||||||
mErrorAttributeTypeDef = NULL;
|
mErrorAttributeTypeDef = NULL;
|
||||||
mWarnAttributeTypeDef = NULL;
|
mWarnAttributeTypeDef = NULL;
|
||||||
|
@ -5923,6 +5924,7 @@ bool BfCompiler::DoCompile(const StringImpl& outputDirectory)
|
||||||
mFriendAttributeTypeDef = _GetRequiredType("System.FriendAttribute");
|
mFriendAttributeTypeDef = _GetRequiredType("System.FriendAttribute");
|
||||||
mCheckedAttributeTypeDef = _GetRequiredType("System.CheckedAttribute");
|
mCheckedAttributeTypeDef = _GetRequiredType("System.CheckedAttribute");
|
||||||
mUncheckedAttributeTypeDef = _GetRequiredType("System.UncheckedAttribute");
|
mUncheckedAttributeTypeDef = _GetRequiredType("System.UncheckedAttribute");
|
||||||
|
mResultTypeDef = _GetRequiredType("System.Result", 1);
|
||||||
mFunctionTypeDef = _GetRequiredType("System.Function");
|
mFunctionTypeDef = _GetRequiredType("System.Function");
|
||||||
mGCTypeDef = _GetRequiredType("System.GC");
|
mGCTypeDef = _GetRequiredType("System.GC");
|
||||||
mGenericIEnumerableTypeDef = _GetRequiredType("System.Collections.Generic.IEnumerable");
|
mGenericIEnumerableTypeDef = _GetRequiredType("System.Collections.Generic.IEnumerable");
|
||||||
|
|
|
@ -345,6 +345,7 @@ public:
|
||||||
BfTypeDef* mStringTypeDef;
|
BfTypeDef* mStringTypeDef;
|
||||||
BfTypeDef* mTypeTypeDef;
|
BfTypeDef* mTypeTypeDef;
|
||||||
BfTypeDef* mValueTypeTypeDef;
|
BfTypeDef* mValueTypeTypeDef;
|
||||||
|
BfTypeDef* mResultTypeDef;
|
||||||
BfTypeDef* mFunctionTypeDef;
|
BfTypeDef* mFunctionTypeDef;
|
||||||
BfTypeDef* mGCTypeDef;
|
BfTypeDef* mGCTypeDef;
|
||||||
BfTypeDef* mGenericIEnumerableTypeDef;
|
BfTypeDef* mGenericIEnumerableTypeDef;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue