2
0

X86Target.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #pragma warning(disable:4996)
  2. #pragma warning(disable:4800)
  3. #pragma warning(disable:4244)
  4. #pragma warning(disable:4005)
  5. #pragma warning(disable:4267)
  6. #include "X86Target.h"
  7. #include "llvm/Config/llvm-config.h"
  8. #include "llvm/Support/AlignOf.h"
  9. #include "llvm/Support/FormattedStream.h"
  10. #include "llvm/Support/SourceMgr.h"
  11. #include "llvm/MC/MCContext.h"
  12. #include "llvm/ADT/StringRef.h"
  13. #include "llvm/MC/TargetRegistry.h"
  14. //#include "llvm/Support/MemoryObject.h"
  15. #include "llvm/Target/TargetOptions.h"
  16. #include "llvm/Target/TargetMachine.h"
  17. //#include "llvm/Target/TargetSubtargetInfo.h"
  18. //#include "llvm/Target/TargetInstrInfo.h"
  19. #include "llvm/MC/MCAsmInfo.h"
  20. #include "llvm/MC/MCStreamer.h"
  21. #include "llvm/MC/MCParser/MCAsmParser.h"
  22. //#include "llvm/MC/MCTargetAsmParser.h"
  23. #include "llvm/MC/MCObjectFileInfo.h"
  24. //#include "X86/Disassembler/X86Disassembler.h"
  25. #include "X86/Disassembler/X86DisassemblerDecoder.h"
  26. #include "X86/MCTargetDesc/X86MCTargetDesc.h"
  27. #include "X86/MCTargetDesc/X86BaseInfo.h"
  28. #include "llvm/Support/TargetSelect.h"
  29. #include "llvm/Transforms/Scalar.h"
  30. //#include "llvm-c/Initialization.h"
  31. //#include "llvm-c/Transforms/Scalar.h"
  32. #include "llvm/Analysis/BasicAliasAnalysis.h"
  33. #include "llvm/Analysis/Passes.h"
  34. #include "llvm/Analysis/ScopedNoAliasAA.h"
  35. #include "llvm/Analysis/TypeBasedAliasAnalysis.h"
  36. #include "llvm/IR/DataLayout.h"
  37. #include "llvm/IR/LegacyPassManager.h"
  38. #include "llvm/IR/Verifier.h"
  39. #include "llvm/InitializePasses.h"
  40. #include "llvm/Transforms/Scalar/GVN.h"
  41. #include "llvm/Transforms/Scalar/Scalarizer.h"
  42. #include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"
  43. #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
  44. #include "BeefySysLib/util/AllocDebug.h"
  45. USING_NS_BF;
  46. X86Target* Beefy::gX86Target = NULL;
  47. using namespace llvm;
  48. extern "C" void LLVM_NATIVE_TARGETINFO();
  49. extern "C" void LLVM_NATIVE_TARGET();
  50. extern "C" void LLVM_NATIVE_TARGETMC();
  51. extern "C" void LLVM_NATIVE_ASMPARSER();
  52. extern "C" void LLVM_NATIVE_ASMPRINTER();
  53. extern "C" void LLVM_NATIVE_DISASSEMBLER();
  54. X86Target::X86Target()
  55. {
  56. llvm::InitializeNativeTarget();
  57. llvm::InitializeNativeTargetAsmPrinter();
  58. llvm::InitializeNativeTargetAsmParser();
  59. llvm::InitializeNativeTargetDisassembler();
  60. /*LLVM_NATIVE_TARGETINFO();
  61. LLVM_NATIVE_TARGET();
  62. LLVM_NATIVE_TARGETMC();
  63. LLVM_NATIVE_ASMPARSER();
  64. LLVM_NATIVE_ASMPRINTER();
  65. LLVM_NATIVE_DISASSEMBLER();*/
  66. #ifdef PLATFORM_LINUX
  67. /*for (Target *T : {&getTheX86_32Target(), &getTheX86_64Target()}) {
  68. RegisterELFStreamer(*T, create);
  69. RegisterMachOStreamer();
  70. RegisterWasmStreamer();
  71. }*/
  72. #endif
  73. /*LLVMInitializeX86Target();
  74. LLVMInitializeX86TargetMC();
  75. LLVMInitializeX86AsmParser();
  76. LLVMInitializeX86Disassembler();
  77. LLVMInitializeX86TargetInfo();
  78. LLVMInitializeX86AsmPrinter();*/
  79. PassRegistry *Registry = PassRegistry::getPassRegistry();
  80. initializeCore(*Registry);
  81. initializeCodeGen(*Registry);
  82. initializeLoopStrengthReducePass(*Registry);
  83. initializeLowerIntrinsicsPass(*Registry);
  84. initializeUnreachableBlockElimLegacyPassPass(*Registry);
  85. mX86CPU = new X86CPU();
  86. mX64CPU = new X64CPU();
  87. }
  88. X86Target::~X86Target()
  89. {
  90. delete mX86CPU;
  91. delete mX64CPU;
  92. }