1 //===-- AMDIL7XXDevice.cpp - Device Info for 7XX GPUs ---------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //==-----------------------------------------------------------------------===//
9 #include "AMDIL7XXDevice.h"
10 #include "AMDGPUSubtarget.h"
12 #include "AMDIL7XXAsmPrinter.h"
14 #include "AMDILDevice.h"
18 AMDGPU7XXDevice::AMDGPU7XXDevice(AMDGPUSubtarget
*ST
) : AMDGPUDevice(ST
)
21 std::string name
= mSTM
->getDeviceName();
22 if (name
== "rv710") {
23 mDeviceFlag
= OCL_DEVICE_RV710
;
24 } else if (name
== "rv730") {
25 mDeviceFlag
= OCL_DEVICE_RV730
;
27 mDeviceFlag
= OCL_DEVICE_RV770
;
31 AMDGPU7XXDevice::~AMDGPU7XXDevice()
35 void AMDGPU7XXDevice::setCaps()
37 mSWBits
.set(AMDGPUDeviceInfo::LocalMem
);
40 size_t AMDGPU7XXDevice::getMaxLDSSize() const
42 if (usesHardware(AMDGPUDeviceInfo::LocalMem
)) {
43 return MAX_LDS_SIZE_700
;
48 size_t AMDGPU7XXDevice::getWavefrontSize() const
50 return AMDGPUDevice::HalfWavefrontSize
;
53 uint32_t AMDGPU7XXDevice::getGeneration() const
55 return AMDGPUDeviceInfo::HD4XXX
;
58 uint32_t AMDGPU7XXDevice::getResourceID(uint32_t DeviceID
) const
62 assert(0 && "ID type passed in is unknown!");
70 if (usesHardware(AMDGPUDeviceInfo::LocalMem
)) {
71 return DEFAULT_LDS_ID
;
75 if (usesHardware(AMDGPUDeviceInfo::PrivateMem
)) {
76 return DEFAULT_SCRATCH_ID
;
80 assert(0 && "GDS UAV ID is not supported on this chip");
81 if (usesHardware(AMDGPUDeviceInfo::RegionMem
)) {
82 return DEFAULT_GDS_ID
;
90 uint32_t AMDGPU7XXDevice::getMaxNumUAVs() const
96 AMDGPU7XXDevice::getAsmPrinter(TargetMachine
& TM
, MCStreamer
&Streamer
) const
99 return new AMDGPU7XXAsmPrinter(TM
, Streamer
);
105 AMDGPU770Device::AMDGPU770Device(AMDGPUSubtarget
*ST
): AMDGPU7XXDevice(ST
)
110 AMDGPU770Device::~AMDGPU770Device()
114 void AMDGPU770Device::setCaps()
116 if (mSTM
->isOverride(AMDGPUDeviceInfo::DoubleOps
)) {
117 mSWBits
.set(AMDGPUDeviceInfo::FMA
);
118 mHWBits
.set(AMDGPUDeviceInfo::DoubleOps
);
120 mSWBits
.set(AMDGPUDeviceInfo::BarrierDetect
);
121 mHWBits
.reset(AMDGPUDeviceInfo::LongOps
);
122 mSWBits
.set(AMDGPUDeviceInfo::LongOps
);
123 mSWBits
.set(AMDGPUDeviceInfo::LocalMem
);
126 size_t AMDGPU770Device::getWavefrontSize() const
128 return AMDGPUDevice::WavefrontSize
;
131 AMDGPU710Device::AMDGPU710Device(AMDGPUSubtarget
*ST
) : AMDGPU7XXDevice(ST
)
135 AMDGPU710Device::~AMDGPU710Device()
139 size_t AMDGPU710Device::getWavefrontSize() const
141 return AMDGPUDevice::QuarterWavefrontSize
;