| OLD | NEW |
| 1 // | 1 // |
| 2 // The Subzero Code Generator | 2 // The Subzero Code Generator |
| 3 // | 3 // |
| 4 // This file is distributed under the University of Illinois Open Source | 4 // This file is distributed under the University of Illinois Open Source |
| 5 // License. See LICENSE.TXT for details. | 5 // License. See LICENSE.TXT for details. |
| 6 // | 6 // |
| 7 //===----------------------------------------------------------------------===// | 7 //===----------------------------------------------------------------------===// |
| 8 /// | 8 /// |
| 9 /// \file | 9 /// \file |
| 10 /// \brief Implements the TargetLoweringMIPS32 class, which consists almost | 10 /// \brief Implements the TargetLoweringMIPS32 class, which consists almost |
| (...skipping 4964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4975 } | 4975 } |
| 4976 | 4976 |
| 4977 void ConstantUndef::emit(GlobalContext *) const { | 4977 void ConstantUndef::emit(GlobalContext *) const { |
| 4978 llvm_unreachable("undef value encountered by emitter."); | 4978 llvm_unreachable("undef value encountered by emitter."); |
| 4979 } | 4979 } |
| 4980 */ | 4980 */ |
| 4981 | 4981 |
| 4982 TargetDataMIPS32::TargetDataMIPS32(GlobalContext *Ctx) | 4982 TargetDataMIPS32::TargetDataMIPS32(GlobalContext *Ctx) |
| 4983 : TargetDataLowering(Ctx) {} | 4983 : TargetDataLowering(Ctx) {} |
| 4984 | 4984 |
| 4985 // Generate .MIPS.abiflags section. This section contains a versioned data |
| 4986 // structure with essential information required for loader to determine the |
| 4987 // requirements of the application. |
| 4988 void TargetDataMIPS32::emitTargetRODataSections() { |
| 4989 struct MipsABIFlagsSection Flags; |
| 4990 ELFObjectWriter *Writer = Ctx->getObjectWriter(); |
| 4991 const std::string Name = ".MIPS.abiflags"; |
| 4992 const llvm::ELF::Elf64_Word ShType = llvm::ELF::SHT_MIPS_ABIFLAGS; |
| 4993 const llvm::ELF::Elf64_Xword ShFlags = llvm::ELF::SHF_ALLOC; |
| 4994 const llvm::ELF::Elf64_Xword ShAddralign = 8; |
| 4995 const llvm::ELF::Elf64_Xword ShEntsize = sizeof(Flags); |
| 4996 Writer->writeTargetRODataSection( |
| 4997 Name, ShType, ShFlags, ShAddralign, ShEntsize, |
| 4998 llvm::StringRef(reinterpret_cast<const char *>(&Flags), sizeof(Flags))); |
| 4999 } |
| 5000 |
| 4985 void TargetDataMIPS32::lowerGlobals(const VariableDeclarationList &Vars, | 5001 void TargetDataMIPS32::lowerGlobals(const VariableDeclarationList &Vars, |
| 4986 const std::string &SectionSuffix) { | 5002 const std::string &SectionSuffix) { |
| 4987 const bool IsPIC = getFlags().getUseNonsfi(); | 5003 const bool IsPIC = getFlags().getUseNonsfi(); |
| 4988 switch (getFlags().getOutFileType()) { | 5004 switch (getFlags().getOutFileType()) { |
| 4989 case FT_Elf: { | 5005 case FT_Elf: { |
| 4990 ELFObjectWriter *Writer = Ctx->getObjectWriter(); | 5006 ELFObjectWriter *Writer = Ctx->getObjectWriter(); |
| 4991 Writer->writeDataSection(Vars, llvm::ELF::R_MIPS_32, SectionSuffix, IsPIC); | 5007 Writer->writeDataSection(Vars, llvm::ELF::R_MIPS_32, SectionSuffix, IsPIC); |
| 4992 } break; | 5008 } break; |
| 4993 case FT_Asm: | 5009 case FT_Asm: |
| 4994 case FT_Iasm: { | 5010 case FT_Iasm: { |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5346 Str << "\t.set\t" | 5362 Str << "\t.set\t" |
| 5347 << "noat\n"; | 5363 << "noat\n"; |
| 5348 } | 5364 } |
| 5349 | 5365 |
| 5350 SmallBitVector TargetMIPS32::TypeToRegisterSet[RCMIPS32_NUM]; | 5366 SmallBitVector TargetMIPS32::TypeToRegisterSet[RCMIPS32_NUM]; |
| 5351 SmallBitVector TargetMIPS32::TypeToRegisterSetUnfiltered[RCMIPS32_NUM]; | 5367 SmallBitVector TargetMIPS32::TypeToRegisterSetUnfiltered[RCMIPS32_NUM]; |
| 5352 SmallBitVector TargetMIPS32::RegisterAliases[RegMIPS32::Reg_NUM]; | 5368 SmallBitVector TargetMIPS32::RegisterAliases[RegMIPS32::Reg_NUM]; |
| 5353 | 5369 |
| 5354 } // end of namespace MIPS32 | 5370 } // end of namespace MIPS32 |
| 5355 } // end of namespace Ice | 5371 } // end of namespace Ice |
| OLD | NEW |