mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Added AArch64 support
This commit is contained in:
parent
3c153d27d2
commit
8c18d56c9e
6 changed files with 48 additions and 6 deletions
|
@ -3176,7 +3176,7 @@ void BfCompiler::UpdateRevisedTypes()
|
||||||
|
|
||||||
if (outerTypeDef->mDefState == BfTypeDef::DefState_Deleted)
|
if (outerTypeDef->mDefState == BfTypeDef::DefState_Deleted)
|
||||||
{
|
{
|
||||||
BfLogSysM("UpdateRevisedTypes deleting type %p\n", outerTypeDef);
|
BfLogSysM("UpdateRevisedTypes deleting outerTypeDef %p\n", outerTypeDef);
|
||||||
outerTypeDef->mDefState = BfTypeDef::DefState_Deleted;
|
outerTypeDef->mDefState = BfTypeDef::DefState_Deleted;
|
||||||
mSystem->RemoveTypeDef(outerTypeDef);
|
mSystem->RemoveTypeDef(outerTypeDef);
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,8 @@ BfDefBuilder::~BfDefBuilder()
|
||||||
|
|
||||||
void BfDefBuilder::Process(BfPassInstance* passInstance, BfSource* bfSource, bool fullRefresh)
|
void BfDefBuilder::Process(BfPassInstance* passInstance, BfSource* bfSource, bool fullRefresh)
|
||||||
{
|
{
|
||||||
|
BF_ASSERT(mSystem->mCurSystemLockThreadId == BfpThread_GetCurrentId());
|
||||||
|
|
||||||
String fileName;
|
String fileName;
|
||||||
BfParser* parser = bfSource->ToParser();
|
BfParser* parser = bfSource->ToParser();
|
||||||
if (parser != NULL)
|
if (parser != NULL)
|
||||||
|
@ -1171,7 +1173,7 @@ void BfDefBuilder::Visit(BfTypeDeclaration* typeDeclaration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BfLogSys(mCurSource->mSystem, "DefBuilder %p TypeDecl:%s\n", mCurSource, mCurTypeDef->mName->ToString().mPtr);
|
BfLogSys(mCurSource->mSystem, "DefBuilder %p %p TypeDecl:%s\n", mCurTypeDef, mCurSource, mCurTypeDef->mName->ToString().mPtr);
|
||||||
|
|
||||||
mCurTypeDef->mProtection = (outerTypeDef == NULL) ? BfProtection_Public : BfProtection_Private;
|
mCurTypeDef->mProtection = (outerTypeDef == NULL) ? BfProtection_Public : BfProtection_Private;
|
||||||
if (typeDeclaration->mInternalSpecifier != NULL)
|
if (typeDeclaration->mInternalSpecifier != NULL)
|
||||||
|
@ -1363,6 +1365,8 @@ void BfDefBuilder::Visit(BfTypeDeclaration* typeDeclaration)
|
||||||
if (outerTypeDef != NULL)
|
if (outerTypeDef != NULL)
|
||||||
numGenericParams += (int)outerTypeDef->mGenericParamDefs.size();
|
numGenericParams += (int)outerTypeDef->mGenericParamDefs.size();
|
||||||
|
|
||||||
|
BfLogSys(mCurSource->mSystem, "DefBuilder %p Hash:%d isAutoComplete:%d\n", mCurTypeDef, mSystem->mTypeDefs.GetHash(mCurTypeDef), isAutoCompleteTempType);
|
||||||
|
|
||||||
if (!isAutoCompleteTempType)
|
if (!isAutoCompleteTempType)
|
||||||
{
|
{
|
||||||
BfTypeDef* prevDef = NULL;
|
BfTypeDef* prevDef = NULL;
|
||||||
|
@ -1370,6 +1374,8 @@ void BfDefBuilder::Visit(BfTypeDeclaration* typeDeclaration)
|
||||||
// auto checkTypeDef = mSystem->mTypeDefs.Find(fullName);
|
// auto checkTypeDef = mSystem->mTypeDefs.Find(fullName);
|
||||||
// while (checkTypeDef != NULL)
|
// while (checkTypeDef != NULL)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
auto itr = mSystem->mTypeDefs.TryGet(fullName);
|
auto itr = mSystem->mTypeDefs.TryGet(fullName);
|
||||||
while (itr)
|
while (itr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3953,7 +3953,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName, const BfCodeGen
|
||||||
const llvm::Target *theTarget = llvm::TargetRegistry::lookupTarget(arch.c_str(), theTriple, Error);
|
const llvm::Target *theTarget = llvm::TargetRegistry::lookupTarget(arch.c_str(), theTriple, Error);
|
||||||
if (!theTarget)
|
if (!theTarget)
|
||||||
{
|
{
|
||||||
OutputDebugStrF("Failed to create LLVM Target: %s", Error.c_str());
|
Fail(StrFormat("Failed to create LLVM Target: %s", Error.c_str()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4057,6 +4057,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName, const BfCodeGen
|
||||||
//TargetMachine::CGFT_AssemblyFile,
|
//TargetMachine::CGFT_AssemblyFile,
|
||||||
noVerify /*, StartAfterID, StopAfterID*/))
|
noVerify /*, StartAfterID, StopAfterID*/))
|
||||||
{
|
{
|
||||||
|
Fail("Target does not support generation of this file type");
|
||||||
/*errs() << argv[0] << ": target does not support generation of this"
|
/*errs() << argv[0] << ": target does not support generation of this"
|
||||||
<< " file type!\n";*/
|
<< " file type!\n";*/
|
||||||
return false;
|
return false;
|
||||||
|
@ -4137,3 +4138,33 @@ int BF_LinuxFixLinkage()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//#include "aarch64/Disassembler/X86DisassemblerDecoder.h"
|
||||||
|
//#include "X86/MCTargetDesc/X86MCTargetDesc.h"
|
||||||
|
//#include "X86/MCTargetDesc/X86BaseInfo.h"
|
||||||
|
//#include "X86InstrInfo.h"
|
||||||
|
|
||||||
|
#ifdef BF_PLATFORM_MACOS
|
||||||
|
#include "AArch64/MCTargetDesc/AArch64MCTargetDesc.h"
|
||||||
|
//#include "AArch64/MCTargetDesc/AArch64BaseInfo.h"
|
||||||
|
//#include "../X86InstrInfo.h"
|
||||||
|
|
||||||
|
int BF_AARC64_Linkage()
|
||||||
|
{
|
||||||
|
LLVMInitializeAArch64TargetInfo();
|
||||||
|
LLVMInitializeAArch64Target();
|
||||||
|
LLVMInitializeAArch64TargetMC();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void BfIRCodeGen::StaticInit()
|
||||||
|
{
|
||||||
|
LLVMInitializeX86TargetInfo();
|
||||||
|
LLVMInitializeX86Target();
|
||||||
|
LLVMInitializeX86TargetMC();
|
||||||
|
|
||||||
|
LLVMInitializeAArch64TargetInfo();
|
||||||
|
LLVMInitializeAArch64Target();
|
||||||
|
LLVMInitializeAArch64TargetMC();
|
||||||
|
}
|
|
@ -142,6 +142,8 @@ public:
|
||||||
static int GetIntrinsicId(const StringImpl& name);
|
static int GetIntrinsicId(const StringImpl& name);
|
||||||
static const char* GetIntrinsicName(int intrinId);
|
static const char* GetIntrinsicName(int intrinId);
|
||||||
static void SetAsmKind(BfAsmKind asmKind);
|
static void SetAsmKind(BfAsmKind asmKind);
|
||||||
|
|
||||||
|
static void StaticInit();
|
||||||
};
|
};
|
||||||
|
|
||||||
NS_BF_END
|
NS_BF_END
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "Compiler/BfSystem.h"
|
#include "Compiler/BfSystem.h"
|
||||||
#include "Compiler/BfParser.h"
|
#include "Compiler/BfParser.h"
|
||||||
#include "Compiler/MemReporter.h"
|
#include "Compiler/MemReporter.h"
|
||||||
|
#include "Compiler/BfIRCodeGen.h"
|
||||||
#include "Debugger.h"
|
#include "Debugger.h"
|
||||||
#include "DebugVisualizers.h"
|
#include "DebugVisualizers.h"
|
||||||
#include "RadixMap.h"
|
#include "RadixMap.h"
|
||||||
|
@ -629,6 +630,8 @@ BF_EXPORT void BF_CALLTYPE Debugger_Create()
|
||||||
//TODO: _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF /*| _CRTDBG_CHECK_EVERY_16_DF*/);
|
//TODO: _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF /*| _CRTDBG_CHECK_EVERY_16_DF*/);
|
||||||
//_CrtSetAllocHook(BfAllocHook);
|
//_CrtSetAllocHook(BfAllocHook);
|
||||||
|
|
||||||
|
BfIRCodeGen::StaticInit();
|
||||||
|
|
||||||
#ifdef BF_PLATFORM_WINDOWS
|
#ifdef BF_PLATFORM_WINDOWS
|
||||||
_CrtMemCheckpoint(&gStartMemCheckpoint);
|
_CrtMemCheckpoint(&gStartMemCheckpoint);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -160,7 +160,7 @@
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_8_0_1\llvm\include;..\extern\llvm_win64_8_0_1\include;..\extern\llvm-project_8_0_1\llvm\lib\Target;..\extern\llvm_win64_8_0_1\lib\Target\X86;..\extern\llvm-project_8_0_1\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_8_0_1\llvm\include;..\extern\llvm_win64_8_0_1\include;..\extern\llvm-project_8_0_1\llvm\lib\Target;..\extern\llvm_win64_8_0_1\lib\Target\AArch64;..\extern\llvm_win64_8_0_1\lib\Target\X86;..\extern\llvm-project_8_0_1\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||||
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
||||||
<AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;LLVMX86Disassembler.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMX86Info.lib;LLVMX86Utils.lib;LLVMX86AsmPrinter.lib;LLVMX86Desc.lib;%(AdditionalDependencies);LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMX86CodeGen.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMTransformUtils.lib;LLVMAnalysis.lib;LLVMX86AsmParser.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMAggressiveInstCombine.lib;libcurl_a.lib;wininet.lib</AdditionalDependencies>
|
<AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMTransformUtils.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMAggressiveInstCombine.lib;LLVMX86Info.lib;LLVMX86Utils.lib;LLVMX86AsmPrinter.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64AsmPrinter.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<AdditionalLibraryDirectories>..\extern\llvm_win64_8_0_1\Debug\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\debug</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\extern\llvm_win64_8_0_1\Debug\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\debug</AdditionalLibraryDirectories>
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||||
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
||||||
|
@ -230,7 +230,7 @@
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
||||||
<AdditionalLibraryDirectories>..\extern\llvm_win64_8_0_1\Release\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\release</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\extern\llvm_win64_8_0_1\Release\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\release</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;LLVMX86Disassembler.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMX86Info.lib;LLVMX86Utils.lib;LLVMX86AsmPrinter.lib;LLVMX86Desc.lib;%(AdditionalDependencies);LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMX86CodeGen.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMTransformUtils.lib;LLVMAnalysis.lib;LLVMX86AsmParser.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMAggressiveInstCombine.lib;libcurl_a.lib;wininet.lib</AdditionalDependencies>
|
<AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMTransformUtils.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMAggressiveInstCombine.lib;LLVMX86Info.lib;LLVMX86Utils.lib;LLVMX86AsmPrinter.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64AsmPrinter.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||||
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
|
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
|
||||||
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue