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