AddressSpaces.h revision 2f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622
1207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//===--- AddressSpaces.h - Language-specific address spaces -----*- C++ -*-===//
2207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//
3207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//                     The LLVM Compiler Infrastructure
4207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//
5207f4d8543529221932af82836016a2ef066c917Peter Collingbourne// This file is distributed under the University of Illinois Open Source
6207f4d8543529221932af82836016a2ef066c917Peter Collingbourne// License. See LICENSE.TXT for details.
7207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//
8207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//===----------------------------------------------------------------------===//
92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett///
102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \file
112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \brief Provides definitions for the various language-specific address
122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett///  spaces.
132f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett///
14207f4d8543529221932af82836016a2ef066c917Peter Collingbourne//===----------------------------------------------------------------------===//
15207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
16207f4d8543529221932af82836016a2ef066c917Peter Collingbourne#ifndef LLVM_CLANG_BASIC_ADDRESSSPACES_H
17207f4d8543529221932af82836016a2ef066c917Peter Collingbourne#define LLVM_CLANG_BASIC_ADDRESSSPACES_H
18207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
19207f4d8543529221932af82836016a2ef066c917Peter Collingbournenamespace clang {
20207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
21207f4d8543529221932af82836016a2ef066c917Peter Collingbournenamespace LangAS {
22207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
23207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// This enum defines the set of possible language-specific address spaces.
24207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// It uses a high starting offset so as not to conflict with any address
25207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// space used by a target.
26207f4d8543529221932af82836016a2ef066c917Peter Collingbourneenum ID {
27207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  Offset = 0xFFFF00,
28207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
29207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  opencl_global = Offset,
30207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  opencl_local,
31207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  opencl_constant,
32207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
334dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne  cuda_device,
344dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne  cuda_constant,
354dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne  cuda_shared,
364dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne
37207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  Last,
38207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  Count = Last-Offset
39207f4d8543529221932af82836016a2ef066c917Peter Collingbourne};
40207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
41207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// The type of a lookup table which maps from language-specific address spaces
42207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// to target-specific ones.
43207f4d8543529221932af82836016a2ef066c917Peter Collingbournetypedef unsigned Map[Count];
44207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
45207f4d8543529221932af82836016a2ef066c917Peter Collingbourne}
46207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
47207f4d8543529221932af82836016a2ef066c917Peter Collingbourne}
48207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
49207f4d8543529221932af82836016a2ef066c917Peter Collingbourne#endif
50