1//===-- AMDILNIDevice.cpp - Device Info for Northern Islands devices ------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//==-----------------------------------------------------------------------===//
9#include "AMDILNIDevice.h"
10#include "AMDILEvergreenDevice.h"
11#include "AMDGPUSubtarget.h"
12
13using namespace llvm;
14
15AMDGPUNIDevice::AMDGPUNIDevice(AMDGPUSubtarget *ST)
16  : AMDGPUEvergreenDevice(ST)
17{
18  std::string name = ST->getDeviceName();
19  if (name == "caicos") {
20    mDeviceFlag = OCL_DEVICE_CAICOS;
21  } else if (name == "turks") {
22    mDeviceFlag = OCL_DEVICE_TURKS;
23  } else if (name == "cayman") {
24    mDeviceFlag = OCL_DEVICE_CAYMAN;
25  } else {
26    mDeviceFlag = OCL_DEVICE_BARTS;
27  }
28}
29AMDGPUNIDevice::~AMDGPUNIDevice()
30{
31}
32
33size_t
34AMDGPUNIDevice::getMaxLDSSize() const
35{
36  if (usesHardware(AMDGPUDeviceInfo::LocalMem)) {
37    return MAX_LDS_SIZE_900;
38  } else {
39    return 0;
40  }
41}
42
43uint32_t
44AMDGPUNIDevice::getGeneration() const
45{
46  return AMDGPUDeviceInfo::HD6XXX;
47}
48
49
50AMDGPUCaymanDevice::AMDGPUCaymanDevice(AMDGPUSubtarget *ST)
51  : AMDGPUNIDevice(ST)
52{
53  setCaps();
54}
55
56AMDGPUCaymanDevice::~AMDGPUCaymanDevice()
57{
58}
59
60void
61AMDGPUCaymanDevice::setCaps()
62{
63  if (mSTM->isOverride(AMDGPUDeviceInfo::DoubleOps)) {
64    mHWBits.set(AMDGPUDeviceInfo::DoubleOps);
65    mHWBits.set(AMDGPUDeviceInfo::FMA);
66  }
67  mHWBits.set(AMDGPUDeviceInfo::Signed24BitOps);
68  mSWBits.reset(AMDGPUDeviceInfo::Signed24BitOps);
69  mSWBits.set(AMDGPUDeviceInfo::ArenaSegment);
70}
71
72