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.
9 //==-----------------------------------------------------------------------===//
10 #include "AMDIL7XXDevice.h"
11 #include "AMDGPUSubtarget.h"
12 #include "AMDILDevice.h"
16 AMDGPU7XXDevice::AMDGPU7XXDevice(AMDGPUSubtarget *ST) : AMDGPUDevice(ST) {
18 std::string name = mSTM->getDeviceName();
19 if (name == "rv710") {
20 DeviceFlag = OCL_DEVICE_RV710;
21 } else if (name == "rv730") {
22 DeviceFlag = OCL_DEVICE_RV730;
24 DeviceFlag = OCL_DEVICE_RV770;
28 AMDGPU7XXDevice::~AMDGPU7XXDevice() {
31 void AMDGPU7XXDevice::setCaps() {
32 mSWBits.set(AMDGPUDeviceInfo::LocalMem);
35 size_t AMDGPU7XXDevice::getMaxLDSSize() const {
36 if (usesHardware(AMDGPUDeviceInfo::LocalMem)) {
37 return MAX_LDS_SIZE_700;
42 size_t AMDGPU7XXDevice::getWavefrontSize() const {
43 return AMDGPUDevice::HalfWavefrontSize;
46 uint32_t AMDGPU7XXDevice::getGeneration() const {
47 return AMDGPUDeviceInfo::HD4XXX;
50 uint32_t AMDGPU7XXDevice::getResourceID(uint32_t DeviceID) const {
53 assert(0 && "ID type passed in is unknown!");
61 if (usesHardware(AMDGPUDeviceInfo::LocalMem)) {
62 return DEFAULT_LDS_ID;
66 if (usesHardware(AMDGPUDeviceInfo::PrivateMem)) {
67 return DEFAULT_SCRATCH_ID;
71 assert(0 && "GDS UAV ID is not supported on this chip");
72 if (usesHardware(AMDGPUDeviceInfo::RegionMem)) {
73 return DEFAULT_GDS_ID;
81 uint32_t AMDGPU7XXDevice::getMaxNumUAVs() const {
85 AMDGPU770Device::AMDGPU770Device(AMDGPUSubtarget *ST): AMDGPU7XXDevice(ST) {
89 AMDGPU770Device::~AMDGPU770Device() {
92 void AMDGPU770Device::setCaps() {
93 if (mSTM->isOverride(AMDGPUDeviceInfo::DoubleOps)) {
94 mSWBits.set(AMDGPUDeviceInfo::FMA);
95 mHWBits.set(AMDGPUDeviceInfo::DoubleOps);
97 mSWBits.set(AMDGPUDeviceInfo::BarrierDetect);
98 mHWBits.reset(AMDGPUDeviceInfo::LongOps);
99 mSWBits.set(AMDGPUDeviceInfo::LongOps);
100 mSWBits.set(AMDGPUDeviceInfo::LocalMem);
103 size_t AMDGPU770Device::getWavefrontSize() const {
104 return AMDGPUDevice::WavefrontSize;
107 AMDGPU710Device::AMDGPU710Device(AMDGPUSubtarget *ST) : AMDGPU7XXDevice(ST) {
110 AMDGPU710Device::~AMDGPU710Device() {
113 size_t AMDGPU710Device::getWavefrontSize() const {
114 return AMDGPUDevice::QuarterWavefrontSize;