1//===------- AMDILSIDevice.h - Define SI Device for AMDIL -*- C++ -*------===//
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//
10// Interface for the subtarget data classes.
11//
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
15// specific hardware.
16//===---------------------------------------------------------------------===//
17#ifndef _AMDILSIDEVICE_H_
18#define _AMDILSIDEVICE_H_
19#include "AMDILEvergreenDevice.h"
20#include "AMDGPUSubtarget.h"
21
22namespace llvm {
23  class AMDGPUSubtarget;
24//===---------------------------------------------------------------------===//
25// SI generation of devices and their respective sub classes
26//===---------------------------------------------------------------------===//
27
28// The AMDGPUSIDevice is the base class for all Northern Island series of
29// cards. It is very similiar to the AMDGPUEvergreenDevice, with the major
30// exception being differences in wavefront size and hardware capabilities.  The
31// SI devices are all 64 wide wavefronts and also add support for signed 24 bit
32// integer operations
33
34  class AMDGPUSIDevice : public AMDGPUEvergreenDevice {
35    public:
36      AMDGPUSIDevice(AMDGPUSubtarget*);
37      virtual ~AMDGPUSIDevice();
38      virtual size_t getMaxLDSSize() const;
39      virtual uint32_t getGeneration() const;
40      virtual std::string getDataLayout() const;
41    protected:
42  }; // AMDGPUSIDevice
43
44} // namespace llvm
45#endif // _AMDILSIDEVICE_H_
46