<s> unsigned char <ISA_LIT>Subtarget :: classifyLocalReference ( const GlobalValue * GV ) const { switch ( TM . getCodeModel ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case CodeModel :: Small : case CodeModel :: Kernel : { return <STR_LIT> ; } case CodeModel :: Medium : { if ( isPositionIndependent ( ) ) { if ( atLeastM68020 ( ) ) { return <STR_LIT> ; } return <STR_LIT> ; } else { if ( atLeastM68020 ( ) ) { return <STR_LIT> ; } return <STR_LIT> ; } }


<s> const <ISA_LIT>InstrInfo * getInstrInfo ( ) const override { return & InstrInfo ;


<s> const InstrItineraryData * getInstrItineraryData ( ) const override {


<s> const InstrItineraryData * getInstrItineraryData ( ) const override { return & InstrItins ;


<s> if ( TM . getCodeModel ( ) == CodeModel :: Medium && ! atLeastM68020 ( ) ) return MachineJumpTableInfo :: EK_Custom32 ; return MachineJumpTableInfo :: EK_LabelDifference32 ; } return MachineJumpTableInfo :: EK_BlockAddress ;


<s> const LegalizerInfo * <ISA_LIT>Subtarget :: getLegalizerInfo ( ) const { return Legalizer . get ( ) ;


<s> const RegisterBankInfo * <ISA_LIT>Subtarget :: getRegBankInfo ( ) const { return RegBankInfo . get ( ) ;


<s> const SelectionDAGTargetInfo * getSelectionDAGInfo ( ) const override {


<s> const <ISA_LIT>TargetLowering * getTargetLowering ( ) const override { return & TLInfo ;


<s> const Triple & getTargetTriple ( ) const {


<s> ParseSubtargetFeatures ( CPUName , CPUName , FS ) ; InstrItins = getInstrItineraryForCPU ( CPUName ) ;


<s> bool <ISA_LIT>Subtarget :: isLegalToCallImmediateAddr ( ) const {


<s> bool <ISA_LIT>Subtarget :: isPositionIndependent ( ) const {


<s> assert ( R < <STR_LIT> && <STR_LIT> ) ; return UserReservedRegister [ R ] ;


<s> bool isRegisterReservedByUser ( Register R ) const {


return TargetTriple . isOSBinFormatELF ( ) ;


<s> return TargetTriple . isOSBinFormatELF ( ) ;


<s> CallLoweringInfo . reset ( new <ISA_LIT>CallLowering ( * getTargetLowering ( ) ) ) ; Legalizer . reset ( new <ISA_LIT>LegalizerInfo ( * this ) ) ; auto * RBI = new <ISA_LIT>RegisterBankInfo ( * getRegisterInfo ( ) ) ; RegBankInfo . reset ( RBI ) ;

InstSelector . reset ( create<ISA_LIT>InstructionSelector ( TM , * this , * RBI ) ) ;


<s> static StringRef select<ISA_LIT>CPU ( Triple TT , StringRef CPU ) { if ( CPU . empty ( ) || CPU == <STR_LIT> ) { CPU = <STR_LIT> ;


<s> Target & getThe<ISA_LIT>Target ( ) {


<s> LLVM_EXTERNAL_VISIBILITY void LLVMInitialize<ISA_LIT>TargetInfo ( ) {

RegisterTarget < Triple :: m68k , true > X ( getThe<ISA_LIT>Target ( ) , <STR_LIT> , <STR_LIT> , <STR_LIT> ) ;


<s> LLVM_EXTERNAL_VISIBILITY void LLVMInitialize<ISA_LIT>TargetInfo ( ) { RegisterTarget < Triple :: m68k , true > X ( getThe<ISA_LIT>Target ( ) , <STR_LIT> , <STR_LIT> , <STR_LIT> ) ;


<s> std :: string Ret = <STR_LIT> ; Ret += <STR_LIT> ; Ret += <STR_LIT> ;


<s> RegisterTargetMachine < <ISA_LIT>TargetMachine > X ( getThe<ISA_LIT>Target ( ) ) ;


<s> bool <ISA_LIT>PassConfig :: addGlobalInstructionSelect ( ) { addPass ( new InstructionSelect ( ) ) ; return false ;


<s> addPass ( create<ISA_LIT>ISelDag ( get<ISA_LIT>TargetMachine ( ) ) ) ;

addPass ( create<ISA_LIT>GlobalBaseRegPass ( ) ) ;


<s> addPass ( create<ISA_LIT>ISelDag ( get<ISA_LIT>TargetMachine ( ) ) ) ; addPass ( create<ISA_LIT>GlobalBaseRegPass ( ) ) ; return false ;


<s> bool <ISA_LIT>PassConfig :: addIRTranslator ( ) { addPass ( new IRTranslator ( ) ) ;


<s> void <ISA_LIT>PassConfig :: addPreSched2 ( ) {

addPass ( create<ISA_LIT>ExpandPseudoPass ( ) ) ;


<s> addPass ( create<ISA_LIT>ExpandPseudoPass ( ) ) ;


<s> Ret += <STR_LIT> ; Ret += <STR_LIT> ; Ret += <STR_LIT> ; Ret += <STR_LIT> ; Ret += <STR_LIT> ;


<s> TargetPassConfig * <ISA_LIT>TargetMachine :: createPassConfig ( PassManagerBase & PM ) { return new <ISA_LIT>PassConfig ( * this , PM ) ;


<s> } else if ( CM == CodeModel :: Kernel ) { llvm_unreachable ( <STR_LIT> ) ; } return CM . getValue ( ) ;


<s> if ( ! CM ) { return CodeModel :: Small ; } else if ( CM == CodeModel :: Large ) { llvm_unreachable ( <STR_LIT> ) ; } else if ( CM == CodeModel :: Kernel ) { llvm_unreachable ( <STR_LIT> ) ; }


<s> Reloc :: Model getEffectiveRelocModel ( const Triple & TT , Optional < Reloc :: Model > RM ) { if ( ! RM . hasValue ( ) ) {


<s> if ( ! RM . hasValue ( ) ) { return Reloc :: Static ; } return * RM ;


<s> return getTM < <ISA_LIT>TargetMachine > ( ) ;


<s> const <ISA_LIT>Subtarget * getSubtargetImpl ( ) const {


<s> LLVM_EXTERNAL_VISIBILITY void LLVMInitialize<ISA_LIT>Target ( ) { RegisterTargetMachine < <ISA_LIT>TargetMachine > X ( getThe<ISA_LIT>Target ( ) ) ; auto * PR = PassRegistry :: getPassRegistry ( ) ; initializeGlobalISel ( * PR ) ;


<s> LLVM_EXTERNAL_VISIBILITY void LLVMInitialize<ISA_LIT>Target ( ) { RegisterTargetMachine < <ISA_LIT>TargetMachine > X ( getThe<ISA_LIT>Target ( ) ) ; auto * PR = PassRegistry :: getPassRegistry ( ) ;


<s> <ISA_LIT>PassConfig ( <ISA_LIT>TargetMachine & TM , PassManagerBase & PM ) : TargetPassConfig ( TM , PM ) {


<s> <ISA_LIT>TargetMachine :: <ISA_LIT>TargetMachine ( const Target & T , const Triple & TT , StringRef CPU , StringRef FS , const TargetOptions & Options , Optional < Reloc :: Model > RM , Optional < CodeModel :: Model > CM , CodeGenOpt :: Level OL , bool JIT ) : LLVMTargetMachine ( T , computeDataLayout ( TT , CPU , Options ) , TT , CPU , FS , Options , getEffectiveRelocModel ( TT , RM ) , :: getEffectiveCodeModel ( CM , JIT ) , OL ) , TLOF ( std :: make_unique < <ISA_LIT>ELFTargetObjectFile > ( ) ) , Subtarget ( TT , CPU , FS , * this ) { initAsmInfo ( ) ;


<s> <ISA_LIT>TargetMachine :: ~ <ISA_LIT>TargetMachine ( ) {


<s> TargetLoweringObjectFileELF :: Initialize ( Ctx , TM ) ; InitializeELF ( TM . Options . UseInitArray ) ; this -> TM = & static_cast < const <ISA_LIT>TargetMachine & > ( TM ) ; SmallDataSection = getContext ( ) . getELFSection ( <STR_LIT> , ELF :: SHT_PROGBITS , ELF :: SHF_WRITE | ELF :: SHF_ALLOC ) ; SmallBSSSection = getContext ( ) . getELFSection ( <STR_LIT> , ELF :: SHT_NOBITS , ELF :: SHF_WRITE | ELF :: SHF_ALLOC ) ;