mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Fixed constant float aggregates
This commit is contained in:
parent
ba01bbb8f7
commit
ac77923a33
1 changed files with 5 additions and 104 deletions
|
@ -1376,24 +1376,6 @@ void BeMCColorizer::AssignRegs(RegKind regKind)
|
|||
}
|
||||
}
|
||||
|
||||
//TODO: This sort was meaningless I think...
|
||||
|
||||
//int xorVal = 227;
|
||||
// For vregs that have a 'preferred register', make sure we pop those off the stack first to help
|
||||
// ensure they actually get that assignment
|
||||
//std::stable_sort(vregGraph.begin(), vregGraph.end(), [&] (int lhs, int rhs)
|
||||
// {
|
||||
// auto lhsInfo = mContext->mVRegInfo[lhs];
|
||||
// auto rhsInfo = mContext->mVRegInfo[rhs];
|
||||
|
||||
// if (lhsInfo->mForceReg != rhsInfo->mForceReg)
|
||||
// return !lhsInfo->mForceReg;
|
||||
|
||||
// return mNodes[lhs].mLowestRegCost > mNodes[rhs].mLowestRegCost;
|
||||
|
||||
// //return (lhs ^ xorVal) < (rhs ^ xorVal);
|
||||
// });
|
||||
|
||||
//
|
||||
{
|
||||
int graphSize = (int)vregGraph.size();
|
||||
|
@ -1883,19 +1865,6 @@ void BeMCLoopDetector::DetectLoops(BeMCBlock* mcBlock, BeVTrackingList* predBloc
|
|||
|
||||
void BeMCLoopDetector::DetectLoops()
|
||||
{
|
||||
// auto blocksSeen = mTrackingContext.AllocEmptyList();
|
||||
// DetectLoops(mMCContext->mBlocks[0], blocksSeen);
|
||||
//
|
||||
// HashSet<int> wasLooped;
|
||||
// for (auto block : mMCContext->mBlocks)
|
||||
// {
|
||||
// if (block->mIsLooped)
|
||||
// {
|
||||
// wasLooped.Add(block->mBlockIdx);
|
||||
// block->mIsLooped = false;
|
||||
// }
|
||||
// }
|
||||
|
||||
for (auto block : mMCContext->mBlocks)
|
||||
{
|
||||
for (auto succ : block->mSuccs)
|
||||
|
@ -4247,47 +4216,6 @@ void BeMCContext::GenerateLiveness(BeMCBlock* block, BeVTrackingGenContext* genC
|
|||
OutputDebugStrF("GenerateLiveness %s(%d)\n", ToString(BeMCOperand::FromBlock(block)).c_str(), block->mBlockIdx);
|
||||
}
|
||||
|
||||
/*bool isFirstEntry = block->mSuccLiveness.mBits == NULL;
|
||||
if (isFirstEntry)
|
||||
{
|
||||
mLivenessContext.mStats.mSuccBytes += mLivenessContext.GetBitsBytes() * 2;
|
||||
block->mSuccLiveness.mBits = mLivenessContext.Duplicate(succLiveRegs.mBits);
|
||||
block->mSuccLiveness.mList = succLiveRegs.mList;
|
||||
block->mSuccVRegsInitialized.mBits = mLivenessContext.Duplicate(succInitRegs.mBits);
|
||||
block->mSuccVRegsInitialized.mList = succInitRegs.mList;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (debugging)
|
||||
{
|
||||
OutputDebugStrF(" New Succ Regs: ");
|
||||
|
||||
int vregIdx = -1;
|
||||
while (true)
|
||||
{
|
||||
vregIdx = mLivenessContext.GetNextDiffSetIdx(block->mSuccLiveness.mBits, succLiveRegs.mBits, vregIdx);
|
||||
if (vregIdx == -1)
|
||||
break;
|
||||
|
||||
auto vregInfo = mVRegInfo[vregIdx];
|
||||
if (vregInfo->mDbgVariable != NULL)
|
||||
OutputDebugStrF("#%s/%d ", vregInfo->mDbgVariable->mName.c_str(), vregIdx);
|
||||
else
|
||||
OutputDebugStrF("%%vreg%d ", vregIdx);
|
||||
}
|
||||
|
||||
OutputDebugStrF("\n");
|
||||
}
|
||||
|
||||
if (mDebugging)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
MergeLiveRegs(block->mSuccLiveness, succLiveRegs.mBits);
|
||||
mVRegInitializedContext.MergeInplace(block->mSuccVRegsInitialized.mBits, succInitRegs.mBits);
|
||||
}*/
|
||||
|
||||
genCtx->mHandledCalls++;
|
||||
|
||||
BeMDNode* curDbgScope = NULL;
|
||||
|
@ -4317,13 +4245,6 @@ void BeMCContext::GenerateLiveness(BeMCBlock* block, BeVTrackingGenContext* genC
|
|||
|
||||
if ((inst->mVRegsInitialized != NULL) && (inst->mVRegsInitialized != vregsInitialized))
|
||||
{
|
||||
/*int vregIdxEx = -1;
|
||||
while (true)
|
||||
{
|
||||
vregIdxEx = mVRegInitializedContext.GetNextDiffSetIdx(vregsInitialized.mBits, inst->mVRegsInitialized, vregIdxEx, false, false);
|
||||
if (vregIdxEx == -1)
|
||||
break;*/
|
||||
|
||||
auto _VRegUninit = [&] (int vregIdxEx)
|
||||
{
|
||||
int vregIdx = vregIdxEx % mVRegInitializedContext.mNumItems;
|
||||
|
@ -11040,18 +10961,8 @@ BeMCInstForm BeMCContext::GetInstForm(BeMCInst* inst)
|
|||
{
|
||||
if (arg0Type->mTypeCode == BeTypeCode_Double)
|
||||
{
|
||||
/*if (inst->mArg1.IsNativeReg())
|
||||
{
|
||||
if (arg1Type->mTypeCode == BeTypeCode_Double)
|
||||
return BeMCInstForm_XMM64_XMM64;
|
||||
else if (arg1Type->mTypeCode == BeTypeCode_Float)
|
||||
return BeMCInstForm_XMM64_XMM32;
|
||||
}*/
|
||||
|
||||
if (inst->mArg1.IsImmediate())
|
||||
return BeMCInstForm_XMM64_IMM;
|
||||
/*if (inst->mArg1.IsSymbol())
|
||||
return BeMCInstForm_XMM64_FRM64;*/
|
||||
switch (arg1Type->mTypeCode)
|
||||
{
|
||||
case BeTypeCode_Float: return BeMCInstForm_XMM64_FRM32;
|
||||
|
@ -11063,18 +10974,8 @@ BeMCInstForm BeMCContext::GetInstForm(BeMCInst* inst)
|
|||
}
|
||||
else if (arg0Type->mTypeCode == BeTypeCode_Float)
|
||||
{
|
||||
/*if (inst->mArg1.IsNativeReg())
|
||||
{
|
||||
if (arg1Type->mTypeCode == BeTypeCode_Double)
|
||||
return BeMCInstForm_XMM32_XMM64;
|
||||
else if (arg1Type->mTypeCode == BeTypeCode_Float)
|
||||
return BeMCInstForm_XMM32_XMM32;
|
||||
}*/
|
||||
|
||||
if (inst->mArg1.IsImmediate())
|
||||
return BeMCInstForm_XMM32_IMM;
|
||||
/*if (inst->mArg1.IsSymbol())
|
||||
return BeMCInstForm_XMM32_FRM32;*/
|
||||
switch (arg1Type->mTypeCode)
|
||||
{
|
||||
case BeTypeCode_Float: return BeMCInstForm_XMM32_FRM32;
|
||||
|
@ -14841,7 +14742,7 @@ void BeMCContext::Generate(BeFunction* function)
|
|||
//mDbgPreferredRegs[8] = X64Reg_RAX;
|
||||
mDebugging = function->mName ==
|
||||
//"?TestPrimitives@Nullable@Tests@bf@@SAXXZ"
|
||||
"?TestAlloc@Blurg@bf@@SAXXZ";
|
||||
"?Hey@Blurg@bf@@SAHXZ";
|
||||
//"?Main@Program@bf@@CAHPEAV?$Array1@PEAVString@System@bf@@@System@2@@Z";
|
||||
|
||||
//"?Hey@Blurg@bf@@SAXXZ";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue