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 /// \brief Interface for the subtarget data classes.
12 /// This file will define the interface that each generation needs to
13 /// implement in order to correctly answer queries on the capabilities of the
14 /// specific hardware.
15 //===----------------------------------------------------------------------===//
16 #ifndef AMDIL7XXDEVICEIMPL_H
17 #define AMDIL7XXDEVICEIMPL_H
18 #include "AMDILDevice.h"
21 class AMDGPUSubtarget;
23 //===----------------------------------------------------------------------===//
24 // 7XX generation of devices and their respective sub classes
25 //===----------------------------------------------------------------------===//
27 /// \brief The AMDGPU7XXDevice class represents the generic 7XX device.
29 /// All 7XX 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 /// \brief The AMDGPU770Device class represents the RV770 chip and it's
49 /// The difference between this device and the base class is this device device
50 /// adds support for double precision and has a larger wavefront size.
51 class AMDGPU770Device : public AMDGPU7XXDevice {
53 AMDGPU770Device(AMDGPUSubtarget *ST);
54 virtual ~AMDGPU770Device();
55 virtual size_t getWavefrontSize() const;
57 virtual void setCaps();
60 /// \brief The AMDGPU710Device class derives from the 7XX base class.
62 /// This class is a smaller derivative, so we need to overload some of the
63 /// functions in order to correctly specify this information.
64 class AMDGPU710Device : public AMDGPU7XXDevice {
66 AMDGPU710Device(AMDGPUSubtarget *ST);
67 virtual ~AMDGPU710Device();
68 virtual size_t getWavefrontSize() const;
72 #endif // AMDILDEVICEIMPL_H