1 //==-- AMDIL7XXDevice.h - Define 7XX Device 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 _AMDIL7XXDEVICEIMPL_H_
18 #define _AMDIL7XXDEVICEIMPL_H_
19 #include "AMDILDevice.h"
22 class AMDGPUSubtarget
;
24 //===----------------------------------------------------------------------===//
25 // 7XX generation of devices and their respective sub classes
26 //===----------------------------------------------------------------------===//
28 // The AMDGPU7XXDevice class represents the generic 7XX device. All 7XX
29 // devices are derived from this class. The AMDGPU7XX device will only
30 // support the minimal features that are required to be considered OpenCL 1.0
31 // compliant and nothing more.
32 class AMDGPU7XXDevice
: public AMDGPUDevice
{
34 AMDGPU7XXDevice(AMDGPUSubtarget
*ST
);
35 virtual ~AMDGPU7XXDevice();
36 virtual size_t getMaxLDSSize() const;
37 virtual size_t getWavefrontSize() const;
38 virtual uint32_t getGeneration() const;
39 virtual uint32_t getResourceID(uint32_t DeviceID
) const;
40 virtual uint32_t getMaxNumUAVs() const;
43 virtual void setCaps();
46 // The AMDGPU770Device class represents the RV770 chip and it's
47 // derivative cards. The difference between this device and the base
48 // class is this device device adds support for double precision
49 // and has a larger wavefront size.
50 class AMDGPU770Device
: public AMDGPU7XXDevice
{
52 AMDGPU770Device(AMDGPUSubtarget
*ST
);
53 virtual ~AMDGPU770Device();
54 virtual size_t getWavefrontSize() const;
56 virtual void setCaps();
59 // The AMDGPU710Device class derives from the 7XX base class, but this
60 // class is a smaller derivative, so we need to overload some of the
61 // functions in order to correctly specify this information.
62 class AMDGPU710Device
: public AMDGPU7XXDevice
{
64 AMDGPU710Device(AMDGPUSubtarget
*ST
);
65 virtual ~AMDGPU710Device();
66 virtual size_t getWavefrontSize() const;
70 #endif // _AMDILDEVICEIMPL_H_