1 //===-- AMDILEvergreenDevice.cpp - Device Info for Evergreen --------------===//
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 "AMDILEvergreenDevice.h"
13 AMDGPUEvergreenDevice::AMDGPUEvergreenDevice(AMDGPUSubtarget
*ST
)
16 std::string name
= ST
->getDeviceName();
17 if (name
== "cedar") {
18 mDeviceFlag
= OCL_DEVICE_CEDAR
;
19 } else if (name
== "redwood") {
20 mDeviceFlag
= OCL_DEVICE_REDWOOD
;
21 } else if (name
== "cypress") {
22 mDeviceFlag
= OCL_DEVICE_CYPRESS
;
24 mDeviceFlag
= OCL_DEVICE_JUNIPER
;
28 AMDGPUEvergreenDevice::~AMDGPUEvergreenDevice() {
31 size_t AMDGPUEvergreenDevice::getMaxLDSSize() const {
32 if (usesHardware(AMDGPUDeviceInfo::LocalMem
)) {
33 return MAX_LDS_SIZE_800
;
38 size_t AMDGPUEvergreenDevice::getMaxGDSSize() const {
39 if (usesHardware(AMDGPUDeviceInfo::RegionMem
)) {
40 return MAX_LDS_SIZE_800
;
45 uint32_t AMDGPUEvergreenDevice::getMaxNumUAVs() const {
49 uint32_t AMDGPUEvergreenDevice::getResourceID(uint32_t id
) const {
52 assert(0 && "ID type passed in is unknown!");
56 return GLOBAL_RETURN_RAW_UAV_ID
;
59 return DEFAULT_ARENA_UAV_ID
;
61 if (usesHardware(AMDGPUDeviceInfo::LocalMem
)) {
62 return DEFAULT_LDS_ID
;
64 return DEFAULT_ARENA_UAV_ID
;
67 if (usesHardware(AMDGPUDeviceInfo::RegionMem
)) {
68 return DEFAULT_GDS_ID
;
70 return DEFAULT_ARENA_UAV_ID
;
73 if (usesHardware(AMDGPUDeviceInfo::PrivateMem
)) {
74 return DEFAULT_SCRATCH_ID
;
76 return DEFAULT_ARENA_UAV_ID
;
82 size_t AMDGPUEvergreenDevice::getWavefrontSize() const {
83 return AMDGPUDevice::WavefrontSize
;
86 uint32_t AMDGPUEvergreenDevice::getGeneration() const {
87 return AMDGPUDeviceInfo::HD5XXX
;
90 void AMDGPUEvergreenDevice::setCaps() {
91 mSWBits
.set(AMDGPUDeviceInfo::ArenaSegment
);
92 mHWBits
.set(AMDGPUDeviceInfo::ArenaUAV
);
93 mHWBits
.set(AMDGPUDeviceInfo::HW64BitDivMod
);
94 mSWBits
.reset(AMDGPUDeviceInfo::HW64BitDivMod
);
95 mSWBits
.set(AMDGPUDeviceInfo::Signed24BitOps
);
96 if (mSTM
->isOverride(AMDGPUDeviceInfo::ByteStores
)) {
97 mHWBits
.set(AMDGPUDeviceInfo::ByteStores
);
99 if (mSTM
->isOverride(AMDGPUDeviceInfo::Debug
)) {
100 mSWBits
.set(AMDGPUDeviceInfo::LocalMem
);
101 mSWBits
.set(AMDGPUDeviceInfo::RegionMem
);
103 mHWBits
.set(AMDGPUDeviceInfo::LocalMem
);
104 mHWBits
.set(AMDGPUDeviceInfo::RegionMem
);
106 mHWBits
.set(AMDGPUDeviceInfo::Images
);
107 if (mSTM
->isOverride(AMDGPUDeviceInfo::NoAlias
)) {
108 mHWBits
.set(AMDGPUDeviceInfo::NoAlias
);
110 mHWBits
.set(AMDGPUDeviceInfo::CachedMem
);
111 if (mSTM
->isOverride(AMDGPUDeviceInfo::MultiUAV
)) {
112 mHWBits
.set(AMDGPUDeviceInfo::MultiUAV
);
114 mHWBits
.set(AMDGPUDeviceInfo::ByteLDSOps
);
115 mSWBits
.reset(AMDGPUDeviceInfo::ByteLDSOps
);
116 mHWBits
.set(AMDGPUDeviceInfo::ArenaVectors
);
117 mHWBits
.set(AMDGPUDeviceInfo::LongOps
);
118 mSWBits
.reset(AMDGPUDeviceInfo::LongOps
);
119 mHWBits
.set(AMDGPUDeviceInfo::TmrReg
);
122 AMDGPUCypressDevice::AMDGPUCypressDevice(AMDGPUSubtarget
*ST
)
123 : AMDGPUEvergreenDevice(ST
) {
127 AMDGPUCypressDevice::~AMDGPUCypressDevice() {
130 void AMDGPUCypressDevice::setCaps() {
131 if (mSTM
->isOverride(AMDGPUDeviceInfo::DoubleOps
)) {
132 mHWBits
.set(AMDGPUDeviceInfo::DoubleOps
);
133 mHWBits
.set(AMDGPUDeviceInfo::FMA
);
138 AMDGPUCedarDevice::AMDGPUCedarDevice(AMDGPUSubtarget
*ST
)
139 : AMDGPUEvergreenDevice(ST
) {
143 AMDGPUCedarDevice::~AMDGPUCedarDevice() {
146 void AMDGPUCedarDevice::setCaps() {
147 mSWBits
.set(AMDGPUDeviceInfo::FMA
);
150 size_t AMDGPUCedarDevice::getWavefrontSize() const {
151 return AMDGPUDevice::QuarterWavefrontSize
;
154 AMDGPURedwoodDevice::AMDGPURedwoodDevice(AMDGPUSubtarget
*ST
)
155 : AMDGPUEvergreenDevice(ST
) {
159 AMDGPURedwoodDevice::~AMDGPURedwoodDevice()
163 void AMDGPURedwoodDevice::setCaps() {
164 mSWBits
.set(AMDGPUDeviceInfo::FMA
);
167 size_t AMDGPURedwoodDevice::getWavefrontSize() const {
168 return AMDGPUDevice::HalfWavefrontSize
;