1221339Sdim//===--- AddressSpaces.h - Language-specific address spaces -----*- C++ -*-===//
2221339Sdim//
3221339Sdim//                     The LLVM Compiler Infrastructure
4221339Sdim//
5221339Sdim// This file is distributed under the University of Illinois Open Source
6221339Sdim// License. See LICENSE.TXT for details.
7221339Sdim//
8221339Sdim//===----------------------------------------------------------------------===//
9239462Sdim///
10239462Sdim/// \file
11239462Sdim/// \brief Provides definitions for the various language-specific address
12239462Sdim/// spaces.
13239462Sdim///
14221339Sdim//===----------------------------------------------------------------------===//
15221339Sdim
16221339Sdim#ifndef LLVM_CLANG_BASIC_ADDRESSSPACES_H
17221339Sdim#define LLVM_CLANG_BASIC_ADDRESSSPACES_H
18221339Sdim
19221339Sdimnamespace clang {
20221339Sdim
21221339Sdimnamespace LangAS {
22221339Sdim
23239462Sdim/// \brief Defines the set of possible language-specific address spaces.
24239462Sdim///
25239462Sdim/// This uses a high starting offset so as not to conflict with any address
26221339Sdim/// space used by a target.
27221339Sdimenum ID {
28221339Sdim  Offset = 0xFFFF00,
29221339Sdim
30221339Sdim  opencl_global = Offset,
31221339Sdim  opencl_local,
32221339Sdim  opencl_constant,
33221339Sdim
34239462Sdim  cuda_device,
35239462Sdim  cuda_constant,
36239462Sdim  cuda_shared,
37239462Sdim
38221339Sdim  Last,
39221339Sdim  Count = Last-Offset
40221339Sdim};
41221339Sdim
42221339Sdim/// The type of a lookup table which maps from language-specific address spaces
43221339Sdim/// to target-specific ones.
44221339Sdimtypedef unsigned Map[Count];
45221339Sdim
46221339Sdim}
47221339Sdim
48221339Sdim}
49221339Sdim
50221339Sdim#endif
51