d7c96573a1597fdb5bafe4d9740a73301ede9b15
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"
11 #include "AMDIL7XXAsmPrinter.h"
13 #include "AMDILDevice.h"
17 AMDIL7XXDevice::AMDIL7XXDevice(AMDILSubtarget
*ST
) : AMDILDevice(ST
)
20 std::string name
= mSTM
->getDeviceName();
21 if (name
== "rv710") {
22 mDeviceFlag
= OCL_DEVICE_RV710
;
23 } else if (name
== "rv730") {
24 mDeviceFlag
= OCL_DEVICE_RV730
;
26 mDeviceFlag
= OCL_DEVICE_RV770
;
30 AMDIL7XXDevice::~AMDIL7XXDevice()
34 void AMDIL7XXDevice::setCaps()
36 mSWBits
.set(AMDILDeviceInfo::LocalMem
);
39 size_t AMDIL7XXDevice::getMaxLDSSize() const
41 if (usesHardware(AMDILDeviceInfo::LocalMem
)) {
42 return MAX_LDS_SIZE_700
;
47 size_t AMDIL7XXDevice::getWavefrontSize() const
49 return AMDILDevice::HalfWavefrontSize
;
52 uint32_t AMDIL7XXDevice::getGeneration() const
54 return AMDILDeviceInfo::HD4XXX
;
57 uint32_t AMDIL7XXDevice::getResourceID(uint32_t DeviceID
) const
61 assert(0 && "ID type passed in is unknown!");
69 if (usesHardware(AMDILDeviceInfo::LocalMem
)) {
70 return DEFAULT_LDS_ID
;
74 if (usesHardware(AMDILDeviceInfo::PrivateMem
)) {
75 return DEFAULT_SCRATCH_ID
;
79 assert(0 && "GDS UAV ID is not supported on this chip");
80 if (usesHardware(AMDILDeviceInfo::RegionMem
)) {
81 return DEFAULT_GDS_ID
;
89 uint32_t AMDIL7XXDevice::getMaxNumUAVs() const
95 AMDIL7XXDevice::getAsmPrinter(TargetMachine
& TM
, MCStreamer
&Streamer
) const
98 return new AMDIL7XXAsmPrinter(TM
, Streamer
);
104 AMDIL770Device::AMDIL770Device(AMDILSubtarget
*ST
): AMDIL7XXDevice(ST
)
109 AMDIL770Device::~AMDIL770Device()
113 void AMDIL770Device::setCaps()
115 if (mSTM
->isOverride(AMDILDeviceInfo::DoubleOps
)) {
116 mSWBits
.set(AMDILDeviceInfo::FMA
);
117 mHWBits
.set(AMDILDeviceInfo::DoubleOps
);
119 mSWBits
.set(AMDILDeviceInfo::BarrierDetect
);
120 mHWBits
.reset(AMDILDeviceInfo::LongOps
);
121 mSWBits
.set(AMDILDeviceInfo::LongOps
);
122 mSWBits
.set(AMDILDeviceInfo::LocalMem
);
125 size_t AMDIL770Device::getWavefrontSize() const
127 return AMDILDevice::WavefrontSize
;
130 AMDIL710Device::AMDIL710Device(AMDILSubtarget
*ST
) : AMDIL7XXDevice(ST
)
134 AMDIL710Device::~AMDIL710Device()
138 size_t AMDIL710Device::getWavefrontSize() const
140 return AMDILDevice::QuarterWavefrontSize
;