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