//===------- AMDILNIDevice.h - Define NI Device for AMDIL -*- C++ -*------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//==-----------------------------------------------------------------------===//
/// \file
/// \brief Interface for the subtarget data classes.
///
/// This file will define the interface that each generation needs to
/// implement in order to correctly answer queries on the capabilities of the
/// specific hardware.
//===---------------------------------------------------------------------===//
#ifndef AMDILNIDEVICE_H
#define AMDILNIDEVICE_H
#include "AMDGPUSubtarget.h"
#include "AMDILEvergreenDevice.h"

namespace llvm {

class AMDGPUSubtarget;
//===---------------------------------------------------------------------===//
// NI generation of devices and their respective sub classes
//===---------------------------------------------------------------------===//

/// \brief The AMDGPUNIDevice is the base class for all Northern Island series of
/// cards.
///
/// It is very similiar to the AMDGPUEvergreenDevice, with the major
/// exception being differences in wavefront size and hardware capabilities.  The
/// NI devices are all 64 wide wavefronts and also add support for signed 24 bit
/// integer operations
class AMDGPUNIDevice : public AMDGPUEvergreenDevice {
public:
  AMDGPUNIDevice(AMDGPUSubtarget*);
  virtual ~AMDGPUNIDevice();
  virtual size_t getMaxLDSSize() const;
  virtual uint32_t getGeneration() const;
};

/// Just as the AMDGPUCypressDevice is the double capable version of the
/// AMDGPUEvergreenDevice, the AMDGPUCaymanDevice is the double capable version
/// of the AMDGPUNIDevice.  The other major difference is that the Cayman Device
/// has 4 wide ALU's, whereas the rest of the NI family is a 5 wide.
class AMDGPUCaymanDevice: public AMDGPUNIDevice {
public:
  AMDGPUCaymanDevice(AMDGPUSubtarget*);
  virtual ~AMDGPUCaymanDevice();
private:
  virtual void setCaps();
};

static const unsigned int MAX_LDS_SIZE_900 = AMDGPUDevice::MAX_LDS_SIZE_800;
} // namespace llvm
#endif // AMDILNIDEVICE_H
