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"
20 #include "AMDILSubtarget.h"
25 //===----------------------------------------------------------------------===//
26 // 7XX generation of devices and their respective sub classes
27 //===----------------------------------------------------------------------===//
29 // The AMDIL7XXDevice class represents the generic 7XX device. All 7XX
30 // devices are derived from this class. The AMDIL7XX device will only
31 // support the minimal features that are required to be considered OpenCL 1.0
32 // compliant and nothing more.
33 class AMDIL7XXDevice
: public AMDILDevice
{
35 AMDIL7XXDevice(AMDILSubtarget
*ST
);
36 virtual ~AMDIL7XXDevice();
37 virtual size_t getMaxLDSSize() const;
38 virtual size_t getWavefrontSize() const;
39 virtual uint32_t getGeneration() const;
40 virtual uint32_t getResourceID(uint32_t DeviceID
) const;
41 virtual uint32_t getMaxNumUAVs() const;
43 getAsmPrinter(TargetMachine
& TM
, MCStreamer
&Streamer
) const;
46 virtual void setCaps();
49 // The AMDIL770Device class represents the RV770 chip and it's
50 // derivative cards. The difference between this device and the base
51 // class is this device device adds support for double precision
52 // and has a larger wavefront size.
53 class AMDIL770Device
: public AMDIL7XXDevice
{
55 AMDIL770Device(AMDILSubtarget
*ST
);
56 virtual ~AMDIL770Device();
57 virtual size_t getWavefrontSize() const;
59 virtual void setCaps();
62 // The AMDIL710Device class derives from the 7XX base class, but this
63 // class is a smaller derivative, so we need to overload some of the
64 // functions in order to correctly specify this information.
65 class AMDIL710Device
: public AMDIL7XXDevice
{
67 AMDIL710Device(AMDILSubtarget
*ST
);
68 virtual ~AMDIL710Device();
69 virtual size_t getWavefrontSize() const;
73 #endif // _AMDILDEVICEIMPL_H_