diff options
Diffstat (limited to 'sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch')
-rw-r--r-- | sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch b/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch new file mode 100644 index 000000000000..929b5d37028f --- /dev/null +++ b/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch @@ -0,0 +1,100 @@ +From 70cae83ffd093f183dec07c464db3c0bb6b92c10 Mon Sep 17 00:00:00 2001 +From: Tom Stellard <thomas.stellard@amd.com> +Date: Fri, 2 Mar 2012 10:54:52 -0500 +Subject: [PATCH 1/3] Add r600 TargetInfo + +--- + lib/Basic/Targets.cpp | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 70 insertions(+), 0 deletions(-) + +diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp +index 85dfd78..64dc01c 100644 +--- a/lib/Basic/Targets.cpp ++++ b/lib/Basic/Targets.cpp +@@ -1068,6 +1068,73 @@ namespace { + } + + namespace { ++ ++class AMDGPUTargetInfo : public TargetInfo { ++public: ++ ++ AMDGPUTargetInfo(const std::string& triple) : TargetInfo(triple) { } ++ ++ virtual const char * getClobbers() const { ++ return ""; ++ } ++ ++ virtual void getGCCRegNames(const char * const *&Names, ++ unsigned &numNames) const { ++ Names = NULL; ++ numNames = 0; ++ } ++ ++ virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, ++ unsigned &NumAliases) const { ++ Aliases = NULL; ++ NumAliases = 0; ++ } ++ ++ virtual bool validateAsmConstraint(const char *&Name, ++ TargetInfo::ConstraintInfo &info) const { ++ return true; ++ } ++ ++ virtual void getTargetBuiltins(const Builtin::Info *&Records, ++ unsigned &NumRecords) const { ++ Records = NULL; ++ NumRecords = 0; ++ } ++}; ++ ++ ++static const unsigned R600AddrSpaceMap[] = { ++ 1, // opencl_global ++ 3, // opencl_local ++ 2 // opencl_constant ++}; ++ ++class R600TargetInfo : public AMDGPUTargetInfo { ++public: ++ R600TargetInfo(const std::string& triple) : AMDGPUTargetInfo(triple) { ++ DescriptionString = ++ "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16" ++ "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:32:32" ++ "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64" ++ "-v96:128:128-v128:128:128-v192:256:256-v256:256:256" ++ "-v512:512:512-v1024:1024:1024-v2048:2048:2048" ++ "-n8:16:32:64"; ++ AddrSpaceMap = &R600AddrSpaceMap; ++ } ++ ++ virtual void getTargetDefines(const LangOptions &Opts, ++ MacroBuilder &Builder) const { ++ Builder.defineMacro("__R600__"); ++ } ++ ++ virtual const char * getVAListDeclaration() const { ++ return ""; ++ } ++}; ++ ++} // end anonymous namespace ++ ++namespace { + // MBlaze abstract base class + class MBlazeTargetInfo : public TargetInfo { + static const char * const GCCRegNames[]; +@@ -3963,6 +4030,9 @@ static TargetInfo *AllocateTarget(const std::string &T) { + case llvm::Triple::mblaze: + return new MBlazeTargetInfo(T); + ++ case llvm::Triple::r600: ++ return new R600TargetInfo(T); ++ + case llvm::Triple::sparc: + switch (os) { + case llvm::Triple::Linux: +-- +1.7.7.6 + |