1 //===-- AMDIL7XXDevice.cpp - TODO: Add brief description -------===//
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"
14 #include "AMDILIOExpansion.h"
15 #include "AMDILPointerManager.h"
19 AMDIL7XXDevice::AMDIL7XXDevice(AMDILSubtarget
*ST
) : AMDILDevice(ST
)
22 std::string name
= mSTM
->getDeviceName();
23 if (name
== "rv710") {
24 mDeviceFlag
= OCL_DEVICE_RV710
;
25 } else if (name
== "rv730") {
26 mDeviceFlag
= OCL_DEVICE_RV730
;
28 mDeviceFlag
= OCL_DEVICE_RV770
;
32 AMDIL7XXDevice::~AMDIL7XXDevice()
36 void AMDIL7XXDevice::setCaps()
38 mSWBits
.set(AMDILDeviceInfo::LocalMem
);
41 size_t AMDIL7XXDevice::getMaxLDSSize() const
43 if (usesHardware(AMDILDeviceInfo::LocalMem
)) {
44 return MAX_LDS_SIZE_700
;
49 size_t AMDIL7XXDevice::getWavefrontSize() const
51 return AMDILDevice::HalfWavefrontSize
;
54 uint32_t AMDIL7XXDevice::getGeneration() const
56 return AMDILDeviceInfo::HD4XXX
;
59 uint32_t AMDIL7XXDevice::getResourceID(uint32_t DeviceID
) const
63 assert(0 && "ID type passed in is unknown!");
71 if (usesHardware(AMDILDeviceInfo::LocalMem
)) {
72 return DEFAULT_LDS_ID
;
76 if (usesHardware(AMDILDeviceInfo::PrivateMem
)) {
77 return DEFAULT_SCRATCH_ID
;
81 assert(0 && "GDS UAV ID is not supported on this chip");
82 if (usesHardware(AMDILDeviceInfo::RegionMem
)) {
83 return DEFAULT_GDS_ID
;
91 uint32_t AMDIL7XXDevice::getMaxNumUAVs() const
97 AMDIL7XXDevice::getIOExpansion(
98 TargetMachine
& TM AMDIL_OPT_LEVEL_DECL
) const
100 return new AMDIL7XXIOExpansion(TM AMDIL_OPT_LEVEL_VAR
);
104 AMDIL7XXDevice::getAsmPrinter(TargetMachine
& TM
, MCStreamer
&Streamer
) const
107 return new AMDIL7XXAsmPrinter(TM
, Streamer
);
114 AMDIL7XXDevice::getPointerManager(
115 TargetMachine
& TM AMDIL_OPT_LEVEL_DECL
) const
117 return new AMDILPointerManager(TM AMDIL_OPT_LEVEL_VAR
);
120 AMDIL770Device::AMDIL770Device(AMDILSubtarget
*ST
): AMDIL7XXDevice(ST
)
125 AMDIL770Device::~AMDIL770Device()
129 void AMDIL770Device::setCaps()
131 if (mSTM
->isOverride(AMDILDeviceInfo::DoubleOps
)) {
132 mSWBits
.set(AMDILDeviceInfo::FMA
);
133 mHWBits
.set(AMDILDeviceInfo::DoubleOps
);
135 mSWBits
.set(AMDILDeviceInfo::BarrierDetect
);
136 mHWBits
.reset(AMDILDeviceInfo::LongOps
);
137 mSWBits
.set(AMDILDeviceInfo::LongOps
);
138 mSWBits
.set(AMDILDeviceInfo::LocalMem
);
141 size_t AMDIL770Device::getWavefrontSize() const
143 return AMDILDevice::WavefrontSize
;
146 AMDIL710Device::AMDIL710Device(AMDILSubtarget
*ST
) : AMDIL7XXDevice(ST
)
150 AMDIL710Device::~AMDIL710Device()
154 size_t AMDIL710Device::getWavefrontSize() const
156 return AMDILDevice::QuarterWavefrontSize
;