1 //===------- AMDILNIDevice.h - Define NI Device for AMDIL -*- C++ -*------===//
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 //==-----------------------------------------------------------------------===//
10 // Interface for the subtarget data classes.
12 //===---------------------------------------------------------------------===//
13 // This file will define the interface that each generation needs to
14 // implement in order to correctly answer queries on the capabilities of the
16 //===---------------------------------------------------------------------===//
17 #ifndef _AMDILNIDEVICE_H_
18 #define _AMDILNIDEVICE_H_
19 #include "AMDILEvergreenDevice.h"
20 #include "AMDILSubtarget.h"
24 //===---------------------------------------------------------------------===//
25 // NI generation of devices and their respective sub classes
26 //===---------------------------------------------------------------------===//
28 // The AMDILNIDevice is the base class for all Northern Island series of
29 // cards. It is very similiar to the AMDILEvergreenDevice, with the major
30 // exception being differences in wavefront size and hardware capabilities. The
31 // NI devices are all 64 wide wavefronts and also add support for signed 24 bit
34 class AMDILNIDevice
: public AMDILEvergreenDevice
{
36 AMDILNIDevice(AMDILSubtarget
*);
37 virtual ~AMDILNIDevice();
38 virtual size_t getMaxLDSSize() const;
39 virtual uint32_t getGeneration() const;
43 // Just as the AMDILCypressDevice is the double capable version of the
44 // AMDILEvergreenDevice, the AMDILCaymanDevice is the double capable version of
45 // the AMDILNIDevice. The other major difference that is not as useful from
46 // standpoint is that the Cayman Device has 4 wide ALU's, whereas the rest of the
47 // NI family is a 5 wide.
49 class AMDILCaymanDevice
: public AMDILNIDevice
{
51 AMDILCaymanDevice(AMDILSubtarget
*);
52 virtual ~AMDILCaymanDevice();
54 virtual void setCaps();
55 }; // AMDILCaymanDevice
57 static const unsigned int MAX_LDS_SIZE_900
= AMDILDevice::MAX_LDS_SIZE_800
;
59 #endif // _AMDILNIDEVICE_H_