1 //==- AMDILEvergreenDevice.h - Define Evergreen 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 _AMDILEVERGREENDEVICE_H_
18 #define _AMDILEVERGREENDEVICE_H_
19 #include "AMDILDevice.h"
20 #include "AMDILSubtarget.h"
24 //===----------------------------------------------------------------------===//
25 // Evergreen generation of devices and their respective sub classes
26 //===----------------------------------------------------------------------===//
29 // The AMDILEvergreenDevice is the base device class for all of the Evergreen
30 // series of cards. This class contains information required to differentiate
31 // the Evergreen device from the generic AMDILDevice. This device represents
32 // that capabilities of the 'Juniper' cards, also known as the HD57XX.
33 class AMDILEvergreenDevice
: public AMDILDevice
{
35 AMDILEvergreenDevice(AMDILSubtarget
*ST
);
36 virtual ~AMDILEvergreenDevice();
37 virtual size_t getMaxLDSSize() const;
38 virtual size_t getMaxGDSSize() const;
39 virtual size_t getWavefrontSize() const;
40 virtual uint32_t getGeneration() const;
41 virtual uint32_t getMaxNumUAVs() const;
42 virtual uint32_t getResourceID(uint32_t) const;
44 getIOExpansion(TargetMachine
& AMDIL_OPT_LEVEL_DECL
) const;
46 getAsmPrinter(TargetMachine
& TM
, MCStreamer
&Streamer
) const;
48 virtual void setCaps();
49 }; // AMDILEvergreenDevice
51 // The AMDILCypressDevice is similiar to the AMDILEvergreenDevice, except it has
52 // support for double precision operations. This device is used to represent
53 // both the Cypress and Hemlock cards, which are commercially known as HD58XX
55 class AMDILCypressDevice
: public AMDILEvergreenDevice
{
57 AMDILCypressDevice(AMDILSubtarget
*ST
);
58 virtual ~AMDILCypressDevice();
60 virtual void setCaps();
61 }; // AMDILCypressDevice
64 // The AMDILCedarDevice is the class that represents all of the 'Cedar' based
65 // devices. This class differs from the base AMDILEvergreenDevice in that the
66 // device is a ~quarter of the 'Juniper'. These are commercially known as the
67 // HD54XX and HD53XX series of cards.
68 class AMDILCedarDevice
: public AMDILEvergreenDevice
{
70 AMDILCedarDevice(AMDILSubtarget
*ST
);
71 virtual ~AMDILCedarDevice();
72 virtual size_t getWavefrontSize() const;
74 virtual void setCaps();
75 }; // AMDILCedarDevice
77 // The AMDILRedwoodDevice is the class the represents all of the 'Redwood' based
78 // devices. This class differs from the base class, in that these devices are
79 // considered about half of a 'Juniper' device. These are commercially known as
80 // the HD55XX and HD56XX series of cards.
81 class AMDILRedwoodDevice
: public AMDILEvergreenDevice
{
83 AMDILRedwoodDevice(AMDILSubtarget
*ST
);
84 virtual ~AMDILRedwoodDevice();
85 virtual size_t getWavefrontSize() const;
87 virtual void setCaps();
88 }; // AMDILRedwoodDevice
91 #endif // _AMDILEVERGREENDEVICE_H_