1239310Sdim//===-- NVPTXBaseInfo.h - Top-level definitions for NVPTX -------*- C++ -*-===// 2239310Sdim// 3239310Sdim// The LLVM Compiler Infrastructure 4239310Sdim// 5239310Sdim// This file is distributed under the University of Illinois Open Source 6239310Sdim// License. See LICENSE.TXT for details. 7239310Sdim// 8239310Sdim//===----------------------------------------------------------------------===// 9239310Sdim// 10239310Sdim// This file contains small standalone helper functions and enum definitions for 11239310Sdim// the NVPTX target useful for the compiler back-end and the MC libraries. 12239310Sdim// As such, it deliberately does not include references to LLVM core 13239310Sdim// code gen types, passes, etc.. 14239310Sdim// 15239310Sdim//===----------------------------------------------------------------------===// 16239310Sdim 17239310Sdim#ifndef NVPTXBASEINFO_H 18239310Sdim#define NVPTXBASEINFO_H 19239310Sdim 20239310Sdimnamespace llvm { 21239310Sdim 22239310Sdimenum AddressSpace { 23239310Sdim ADDRESS_SPACE_GENERIC = 0, 24239310Sdim ADDRESS_SPACE_GLOBAL = 1, 25239310Sdim ADDRESS_SPACE_SHARED = 3, 26239310Sdim ADDRESS_SPACE_CONST = 4, 27239310Sdim ADDRESS_SPACE_LOCAL = 5, 28239310Sdim 29239310Sdim // NVVM Internal 30239310Sdim ADDRESS_SPACE_PARAM = 101 31239310Sdim}; 32239310Sdim 33239310Sdimenum PropertyAnnotation { 34239310Sdim PROPERTY_MAXNTID_X = 0, 35239310Sdim PROPERTY_MAXNTID_Y, 36239310Sdim PROPERTY_MAXNTID_Z, 37239310Sdim PROPERTY_REQNTID_X, 38239310Sdim PROPERTY_REQNTID_Y, 39239310Sdim PROPERTY_REQNTID_Z, 40239310Sdim PROPERTY_MINNCTAPERSM, 41239310Sdim PROPERTY_ISTEXTURE, 42239310Sdim PROPERTY_ISSURFACE, 43239310Sdim PROPERTY_ISSAMPLER, 44239310Sdim PROPERTY_ISREADONLY_IMAGE_PARAM, 45239310Sdim PROPERTY_ISWRITEONLY_IMAGE_PARAM, 46239310Sdim PROPERTY_ISKERNEL_FUNCTION, 47239310Sdim PROPERTY_ALIGN, 48239310Sdim 49239310Sdim // last property 50239310Sdim PROPERTY_LAST 51239310Sdim}; 52239310Sdim 53239310Sdimconst unsigned AnnotationNameLen = 8; // length of each annotation name 54249423Sdimconst char PropertyAnnotationNames[PROPERTY_LAST + 1][AnnotationNameLen + 1] = { 55249423Sdim "maxntidx", // PROPERTY_MAXNTID_X 56249423Sdim "maxntidy", // PROPERTY_MAXNTID_Y 57249423Sdim "maxntidz", // PROPERTY_MAXNTID_Z 58249423Sdim "reqntidx", // PROPERTY_REQNTID_X 59249423Sdim "reqntidy", // PROPERTY_REQNTID_Y 60249423Sdim "reqntidz", // PROPERTY_REQNTID_Z 61249423Sdim "minctasm", // PROPERTY_MINNCTAPERSM 62249423Sdim "texture", // PROPERTY_ISTEXTURE 63249423Sdim "surface", // PROPERTY_ISSURFACE 64249423Sdim "sampler", // PROPERTY_ISSAMPLER 65249423Sdim "rdoimage", // PROPERTY_ISREADONLY_IMAGE_PARAM 66249423Sdim "wroimage", // PROPERTY_ISWRITEONLY_IMAGE_PARAM 67249423Sdim "kernel", // PROPERTY_ISKERNEL_FUNCTION 68249423Sdim "align", // PROPERTY_ALIGN 69239310Sdim 70249423Sdim // last property 71249423Sdim "proplast", // PROPERTY_LAST 72239310Sdim}; 73239310Sdim 74239310Sdim// name of named metadata used for global annotations 75239310Sdim#if defined(__GNUC__) 76239310Sdim// As this is declared to be static but some of the .cpp files that 77239310Sdim// include NVVM.h do not use this array, gcc gives a warning when 78239310Sdim// compiling those .cpp files, hence __attribute__((unused)). 79239310Sdim__attribute__((unused)) 80239310Sdim#endif 81249423Sdim static const char *NamedMDForAnnotations = "nvvm.annotations"; 82239310Sdim 83239310Sdim} 84239310Sdim 85239310Sdim#endif 86