AddressSpaces.h revision af50aab0c317462129d73ae8000c6394c718598d
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
12af50aab0c317462129d73ae8000c6394c718598dJames 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
23af50aab0c317462129d73ae8000c6394c718598dJames Dennett/// \brief Defines the set of possible language-specific address spaces.
24af50aab0c317462129d73ae8000c6394c718598dJames Dennett///
25af50aab0c317462129d73ae8000c6394c718598dJames Dennett/// This uses a high starting offset so as not to conflict with any address
26207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// space used by a target.
27207f4d8543529221932af82836016a2ef066c917Peter Collingbourneenum ID {
28207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  Offset = 0xFFFF00,
29207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
30207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  opencl_global = Offset,
31207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  opencl_local,
32207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  opencl_constant,
33207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
344dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne  cuda_device,
354dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne  cuda_constant,
364dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne  cuda_shared,
374dc34ebf2a0716bf77ba110dab6777a3fc4397ddPeter Collingbourne
38207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  Last,
39207f4d8543529221932af82836016a2ef066c917Peter Collingbourne  Count = Last-Offset
40207f4d8543529221932af82836016a2ef066c917Peter Collingbourne};
41207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
42207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// The type of a lookup table which maps from language-specific address spaces
43207f4d8543529221932af82836016a2ef066c917Peter Collingbourne/// to target-specific ones.
44207f4d8543529221932af82836016a2ef066c917Peter Collingbournetypedef unsigned Map[Count];
45207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
46207f4d8543529221932af82836016a2ef066c917Peter Collingbourne}
47207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
48207f4d8543529221932af82836016a2ef066c917Peter Collingbourne}
49207f4d8543529221932af82836016a2ef066c917Peter Collingbourne
50207f4d8543529221932af82836016a2ef066c917Peter Collingbourne#endif
51