aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-12-14 06:13:44 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-12-14 06:13:44 +0000
commitceb0c4962ad60f4e106b6e68e8b3f919eb071f95 (patch)
treee454acadf9e5d2c357b8fdbbc1c474767f9de20b /llvm/lib/Target/R600/AMDGPUTargetMachine.cpp
parent8562ec0caf6333de40264c8aa9346eba44cf723f (diff)
downloadllvm-ceb0c4962ad60f4e106b6e68e8b3f919eb071f95.zip
llvm-ceb0c4962ad60f4e106b6e68e8b3f919eb071f95.tar.gz
llvm-ceb0c4962ad60f4e106b6e68e8b3f919eb071f95.tar.bz2
Turn AMDGPUSubtarget::getDataLayout into a static function.
No functionality change. llvm-svn: 197310
Diffstat (limited to 'llvm/lib/Target/R600/AMDGPUTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/R600/AMDGPUTargetMachine.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp b/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp
index 2d2bed0..762a17a 100644
--- a/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp
@@ -49,6 +49,29 @@ static MachineSchedRegistry
SchedCustomRegistry("r600", "Run R600's custom scheduler",
createR600MachineScheduler);
+static std::string computeDataLayout(const AMDGPUSubtarget &ST) {
+ std::string DataLayout = std::string(
+ "e"
+ "-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32: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"
+ "-n32:64"
+ );
+
+ if (ST.hasHWFP64())
+ DataLayout.append("-f64:64:64");
+
+ if (ST.is64bit())
+ DataLayout.append("-p:64:64:64");
+ else
+ DataLayout.append("-p:32:32:32");
+
+ if (ST.getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS)
+ DataLayout.append("-p3:32:32:32");
+
+ return DataLayout;
+}
+
AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
TargetOptions Options,
@@ -58,7 +81,7 @@ AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, StringRef TT,
:
LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OptLevel),
Subtarget(TT, CPU, FS),
- Layout(Subtarget.getDataLayout()),
+ Layout(computeDataLayout(Subtarget)),
FrameLowering(TargetFrameLowering::StackGrowsUp,
64 * 16 // Maximum stack alignment (long16)
, 0),