From be15913bd08c7a1f4a53e14760271b5ad2aa8e4a Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Tue, 7 Mar 2023 19:18:33 +0100 Subject: [PATCH] Bump version number --- oscar64/NativeCodeGenerator.cpp | 50 ++++++++++++++++++++++++++++++++ oscar64/NativeCodeGenerator.h | 1 + oscar64/oscar64.cpp | 2 +- oscar64/oscar64.rc | 8 ++--- oscar64setup/oscar64setup.vdproj | 6 ++-- 5 files changed, 59 insertions(+), 8 deletions(-) diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index 78e7c39a..1f2dec44 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -25615,6 +25615,53 @@ bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc return lblock->OptimizeSimpleLoopInvariant(proc, this, eblock, full); } +bool NativeCodeBasicBlock::OptimizeLoopCarryOver(void) +{ + bool changed = false; + + if (!mVisited) + { + mVisited = true; + + if (mFalseJump) + { + NativeCodeBasicBlock* hblock = nullptr; + + if (mBranch == ASMIT_BCC && mTrueJump->mLoopHead) + hblock = mTrueJump; + else if (mBranch == ASMIT_BCS && mFalseJump->mLoopHead) + hblock = mFalseJump; + + if (hblock && hblock->mIns.Size() > 0 && hblock->mIns[0].mType == ASMIT_CLC && hblock->mNumEntries == 2) + { + NativeCodeBasicBlock* pblock; + if (hblock->mEntryBlocks[0] == this) + pblock = hblock->mEntryBlocks[1]; + else + pblock = hblock->mEntryBlocks[0]; + + if (!pblock->mFalseJump) + { + pblock->mIns.Push(NativeCodeInstruction(ASMIT_CLC)); + hblock->mIns.Remove(0); + + pblock->mExitRequiredRegs += CPU_REG_C; + hblock->mEntryRequiredRegs += CPU_REG_C; + mExitRequiredRegs += CPU_REG_C; + changed = true; + } + } + } + + if (mTrueJump && mTrueJump->OptimizeLoopCarryOver()) + changed = true; + if (mFalseJump && mFalseJump->OptimizeLoopCarryOver()) + changed = true; + } + + return changed; +} + bool NativeCodeBasicBlock::RemoveSimpleLoopUnusedIndex(void) { bool changed = false; @@ -37527,6 +37574,9 @@ void NativeCodeProcedure::Optimize(void) } while (changed); #endif + ResetVisited(); + mEntryBlock->OptimizeLoopCarryOver(); + ResetVisited(); NativeRegisterDataSet data; mEntryBlock->ValueForwarding(this, data, true, true); diff --git a/oscar64/NativeCodeGenerator.h b/oscar64/NativeCodeGenerator.h index f3ce30e0..b7cd76b1 100644 --- a/oscar64/NativeCodeGenerator.h +++ b/oscar64/NativeCodeGenerator.h @@ -232,6 +232,7 @@ class NativeCodeBasicBlock bool OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc, bool full); bool OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc, NativeCodeBasicBlock * prevBlock, NativeCodeBasicBlock* exitBlock, bool full); bool RemoveSimpleLoopUnusedIndex(void); + bool OptimizeLoopCarryOver(void); bool OptimizeSimpleLoop(NativeCodeProcedure* proc, bool full); bool SimpleLoopReversal(NativeCodeProcedure* proc); diff --git a/oscar64/oscar64.cpp b/oscar64/oscar64.cpp index d43c1a74..86e02ef8 100644 --- a/oscar64/oscar64.cpp +++ b/oscar64/oscar64.cpp @@ -74,7 +74,7 @@ int main2(int argc, const char** argv) #else strcpy(strProductName, "oscar64"); - strcpy(strProductVersion, "1.17.188"); + strcpy(strProductVersion, "1.17.189"); #ifdef __APPLE__ uint32_t length = sizeof(basePath); diff --git a/oscar64/oscar64.rc b/oscar64/oscar64.rc index ca6a9eb9..2ea9d664 100644 --- a/oscar64/oscar64.rc +++ b/oscar64/oscar64.rc @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,17,188,0 - PRODUCTVERSION 1,17,188,0 + FILEVERSION 1,17,189,0 + PRODUCTVERSION 1,17,189,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -43,12 +43,12 @@ BEGIN BEGIN VALUE "CompanyName", "oscar64" VALUE "FileDescription", "oscar64 compiler" - VALUE "FileVersion", "1.17.188.0" + VALUE "FileVersion", "1.17.189.0" VALUE "InternalName", "oscar64.exe" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "oscar64.exe" VALUE "ProductName", "oscar64" - VALUE "ProductVersion", "1.17.188.0" + VALUE "ProductVersion", "1.17.189.0" END END BLOCK "VarFileInfo" diff --git a/oscar64setup/oscar64setup.vdproj b/oscar64setup/oscar64setup.vdproj index 593f14c0..f9bb8fcc 100644 --- a/oscar64setup/oscar64setup.vdproj +++ b/oscar64setup/oscar64setup.vdproj @@ -4962,15 +4962,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:oscar64" - "ProductCode" = "8:{73EA19D3-9D64-4228-B7C4-145167C1C866}" - "PackageCode" = "8:{D9206A10-2163-43EE-BC5D-FBC0769FF045}" + "ProductCode" = "8:{85311ED7-CC4D-4512-840D-20C87C74DAC0}" + "PackageCode" = "8:{84A20228-DD88-421A-9DE4-33A058638C87}" "UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.17.188" + "ProductVersion" = "8:1.17.189" "Manufacturer" = "8:oscar64" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:"