1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-07 19:18:19 +02:00
Beef/IDEHelper/X86Target.cpp
2024-05-01 06:26:14 -04:00

106 lines
No EOL
3.1 KiB
C++

#pragma warning(disable:4996)
#pragma warning(disable:4800)
#pragma warning(disable:4244)
#pragma warning(disable:4005)
#pragma warning(disable:4267)
#include "X86Target.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Support/AlignOf.h"
#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/MC/MCContext.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/MC/TargetRegistry.h"
//#include "llvm/Support/MemoryObject.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Target/TargetMachine.h"
//#include "llvm/Target/TargetSubtargetInfo.h"
//#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCParser/MCAsmParser.h"
//#include "llvm/MC/MCTargetAsmParser.h"
#include "llvm/MC/MCObjectFileInfo.h"
//#include "X86/Disassembler/X86Disassembler.h"
#include "X86/Disassembler/X86DisassemblerDecoder.h"
#include "X86/MCTargetDesc/X86MCTargetDesc.h"
#include "X86/MCTargetDesc/X86BaseInfo.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Transforms/Scalar.h"
//#include "llvm-c/Initialization.h"
//#include "llvm-c/Transforms/Scalar.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/Analysis/ScopedNoAliasAA.h"
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
#include "llvm/Transforms/Scalar/GVN.h"
#include "llvm/Transforms/Scalar/Scalarizer.h"
#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"
#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
#include "BeefySysLib/util/AllocDebug.h"
USING_NS_BF;
X86Target* Beefy::gX86Target = NULL;
using namespace llvm;
extern "C" void LLVM_NATIVE_TARGETINFO();
extern "C" void LLVM_NATIVE_TARGET();
extern "C" void LLVM_NATIVE_TARGETMC();
extern "C" void LLVM_NATIVE_ASMPARSER();
extern "C" void LLVM_NATIVE_ASMPRINTER();
extern "C" void LLVM_NATIVE_DISASSEMBLER();
X86Target::X86Target()
{
llvm::InitializeNativeTarget();
llvm::InitializeNativeTargetAsmPrinter();
llvm::InitializeNativeTargetAsmParser();
llvm::InitializeNativeTargetDisassembler();
/*LLVM_NATIVE_TARGETINFO();
LLVM_NATIVE_TARGET();
LLVM_NATIVE_TARGETMC();
LLVM_NATIVE_ASMPARSER();
LLVM_NATIVE_ASMPRINTER();
LLVM_NATIVE_DISASSEMBLER();*/
#ifdef PLATFORM_LINUX
/*for (Target *T : {&getTheX86_32Target(), &getTheX86_64Target()}) {
RegisterELFStreamer(*T, create);
RegisterMachOStreamer();
RegisterWasmStreamer();
}*/
#endif
/*LLVMInitializeX86Target();
LLVMInitializeX86TargetMC();
LLVMInitializeX86AsmParser();
LLVMInitializeX86Disassembler();
LLVMInitializeX86TargetInfo();
LLVMInitializeX86AsmPrinter();*/
PassRegistry *Registry = PassRegistry::getPassRegistry();
initializeCore(*Registry);
initializeCodeGen(*Registry);
initializeLoopStrengthReducePass(*Registry);
initializeLowerIntrinsicsPass(*Registry);
initializeUnreachableBlockElimLegacyPassPass(*Registry);
mX86CPU = new X86CPU();
mX64CPU = new X64CPU();
}
X86Target::~X86Target()
{
delete mX86CPU;
delete mX64CPU;
}