]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/clang/include/clang/Basic/AddressSpaces.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / clang / include / clang / Basic / AddressSpaces.h
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
34   cuda_device,
35   cuda_constant,
36   cuda_shared,
37
38   Last,
39   Count = Last-Offset
40 };
41
42 /// The type of a lookup table which maps from language-specific address spaces
43 /// to target-specific ones.
44 typedef unsigned Map[Count];
45
46 }
47
48 }
49
50 #endif