1 //===--- AddressSpaces.h - Language-specific address spaces -----*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 ///
10 /// \file
11 /// \brief Provides definitions for the various language-specific address
12 /// spaces.
13 ///
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef LLVM_CLANG_BASIC_ADDRESSSPACES_H
17 #define LLVM_CLANG_BASIC_ADDRESSSPACES_H
18 
19 namespace clang {
20 
21 namespace LangAS {
22 
23 /// \brief Defines the set of possible language-specific address spaces.
24 ///
25 /// This uses a high starting offset so as not to conflict with any address
26 /// space used by a target.
27 enum ID {
28   Offset = 0xFFFF00,
29 
30   opencl_global = Offset,
31   opencl_local,
32   opencl_constant,
33   opencl_generic,
34 
35   cuda_device,
36   cuda_constant,
37   cuda_shared,
38 
39   Last,
40   Count = Last-Offset
41 };
42 
43 /// The type of a lookup table which maps from language-specific address spaces
44 /// to target-specific ones.
45 typedef unsigned Map[Count];
46 
47 }
48 
49 }
50 
51 #endif
52