From 4b08eb6308ca90a6c08e2fc79d100821b1b1f6aa Mon Sep 17 00:00:00 2001 From: rdivacky Date: Tue, 1 Dec 2009 11:08:04 +0000 Subject: Update clang to r90226. --- lib/Basic/Targets.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'lib/Basic/Targets.cpp') diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 07c2bb9..e5a4c43 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -313,6 +313,42 @@ public: } }; +// PS3 PPU Target +template +class PS3PPUTargetInfo : public OSTargetInfo { +protected: + virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + std::vector &Defs) const { + // PS3 PPU defines. + Define(Defs, "__PPU__", "1"); + Define(Defs, "__CELLOS_LV2__", "1"); + Define(Defs, "__ELF__", "1"); + } +public: + PS3PPUTargetInfo(const std::string& triple) + : OSTargetInfo(triple) { + this->UserLabelPrefix = ""; + } +}; + +// FIXME: Need a real SPU target. +// PS3 SPU Target +template +class PS3SPUTargetInfo : public OSTargetInfo { +protected: + virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + std::vector &Defs) const { + // PS3 PPU defines. + Define(Defs, "__SPU__", "1"); + Define(Defs, "__ELF__", "1"); + } +public: + PS3SPUTargetInfo(const std::string& triple) + : OSTargetInfo(triple) { + this->UserLabelPrefix = ""; + } +}; + // AuroraUX target template class AuroraUXTargetInfo : public OSTargetInfo { @@ -445,6 +481,11 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, // FIXME: Should be controlled by command line option. Define(Defs, "__LONG_DOUBLE_128__"); + + if (Opts.AltiVec) { + Define(Defs, "__VEC__", "10206"); + Define(Defs, "__ALTIVEC__", "1"); + } } @@ -1492,6 +1533,7 @@ namespace { UIntMaxType = UnsignedLong; IntPtrType = SignedShort; PtrDiffType = SignedInt; + SigAtomicType = SignedLong; FloatWidth = 32; FloatAlign = 32; DoubleWidth = 32; @@ -1559,6 +1601,7 @@ namespace { UIntMaxType = UnsignedLong; IntPtrType = SignedShort; PtrDiffType = SignedInt; + SigAtomicType = SignedLong; DescriptionString = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-n8:16"; } virtual void getTargetDefines(const LangOptions &Opts, @@ -1990,6 +2033,8 @@ static TargetInfo *AllocateTarget(const std::string &T) { case llvm::Triple::ppc64: if (os == llvm::Triple::Darwin) return new DarwinTargetInfo(T); + else if (os == llvm::Triple::Lv2) + return new PS3PPUTargetInfo(T); return new PPC64TargetInfo(T); case llvm::Triple::sparc: @@ -1999,6 +2044,10 @@ static TargetInfo *AllocateTarget(const std::string &T) { return new SolarisSparcV8TargetInfo(T); return new SparcV8TargetInfo(T); + // FIXME: Need a real SPU target. + case llvm::Triple::cellspu: + return new PS3SPUTargetInfo(T); + case llvm::Triple::systemz: return new SystemZTargetInfo(T); -- cgit v1.1