diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-12-14 06:13:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-12-14 06:13:44 +0000 |
commit | ceb0c4962ad60f4e106b6e68e8b3f919eb071f95 (patch) | |
tree | e454acadf9e5d2c357b8fdbbc1c474767f9de20b /llvm/lib/Target/R600/AMDGPUTargetMachine.cpp | |
parent | 8562ec0caf6333de40264c8aa9346eba44cf723f (diff) | |
download | llvm-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.cpp | 25 |
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), |