1*9880d681SAndroid Build Coastguard Worker //===-- NVPTXBaseInfo.h - Top-level definitions for NVPTX -------*- C++ -*-===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker // 10*9880d681SAndroid Build Coastguard Worker // This file contains small standalone helper functions and enum definitions for 11*9880d681SAndroid Build Coastguard Worker // the NVPTX target useful for the compiler back-end and the MC libraries. 12*9880d681SAndroid Build Coastguard Worker // As such, it deliberately does not include references to LLVM core 13*9880d681SAndroid Build Coastguard Worker // code gen types, passes, etc.. 14*9880d681SAndroid Build Coastguard Worker // 15*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_NVPTX_MCTARGETDESC_NVPTXBASEINFO_H 18*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_NVPTX_MCTARGETDESC_NVPTXBASEINFO_H 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker namespace llvm { 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker enum AddressSpace { 23*9880d681SAndroid Build Coastguard Worker ADDRESS_SPACE_GENERIC = 0, 24*9880d681SAndroid Build Coastguard Worker ADDRESS_SPACE_GLOBAL = 1, 25*9880d681SAndroid Build Coastguard Worker ADDRESS_SPACE_SHARED = 3, 26*9880d681SAndroid Build Coastguard Worker ADDRESS_SPACE_CONST = 4, 27*9880d681SAndroid Build Coastguard Worker ADDRESS_SPACE_LOCAL = 5, 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker // NVVM Internal 30*9880d681SAndroid Build Coastguard Worker ADDRESS_SPACE_PARAM = 101 31*9880d681SAndroid Build Coastguard Worker }; 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker enum PropertyAnnotation { 34*9880d681SAndroid Build Coastguard Worker PROPERTY_MAXNTID_X = 0, 35*9880d681SAndroid Build Coastguard Worker PROPERTY_MAXNTID_Y, 36*9880d681SAndroid Build Coastguard Worker PROPERTY_MAXNTID_Z, 37*9880d681SAndroid Build Coastguard Worker PROPERTY_REQNTID_X, 38*9880d681SAndroid Build Coastguard Worker PROPERTY_REQNTID_Y, 39*9880d681SAndroid Build Coastguard Worker PROPERTY_REQNTID_Z, 40*9880d681SAndroid Build Coastguard Worker PROPERTY_MINNCTAPERSM, 41*9880d681SAndroid Build Coastguard Worker PROPERTY_ISTEXTURE, 42*9880d681SAndroid Build Coastguard Worker PROPERTY_ISSURFACE, 43*9880d681SAndroid Build Coastguard Worker PROPERTY_ISSAMPLER, 44*9880d681SAndroid Build Coastguard Worker PROPERTY_ISREADONLY_IMAGE_PARAM, 45*9880d681SAndroid Build Coastguard Worker PROPERTY_ISWRITEONLY_IMAGE_PARAM, 46*9880d681SAndroid Build Coastguard Worker PROPERTY_ISREADWRITE_IMAGE_PARAM, 47*9880d681SAndroid Build Coastguard Worker PROPERTY_ISKERNEL_FUNCTION, 48*9880d681SAndroid Build Coastguard Worker PROPERTY_ALIGN, 49*9880d681SAndroid Build Coastguard Worker PROPERTY_MANAGED, 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker // last property 52*9880d681SAndroid Build Coastguard Worker PROPERTY_LAST 53*9880d681SAndroid Build Coastguard Worker }; 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker const unsigned AnnotationNameLen = 9; // length of each annotation name 56*9880d681SAndroid Build Coastguard Worker const char PropertyAnnotationNames[PROPERTY_LAST + 1][AnnotationNameLen + 1] = { 57*9880d681SAndroid Build Coastguard Worker "maxntidx", // PROPERTY_MAXNTID_X 58*9880d681SAndroid Build Coastguard Worker "maxntidy", // PROPERTY_MAXNTID_Y 59*9880d681SAndroid Build Coastguard Worker "maxntidz", // PROPERTY_MAXNTID_Z 60*9880d681SAndroid Build Coastguard Worker "reqntidx", // PROPERTY_REQNTID_X 61*9880d681SAndroid Build Coastguard Worker "reqntidy", // PROPERTY_REQNTID_Y 62*9880d681SAndroid Build Coastguard Worker "reqntidz", // PROPERTY_REQNTID_Z 63*9880d681SAndroid Build Coastguard Worker "minctasm", // PROPERTY_MINNCTAPERSM 64*9880d681SAndroid Build Coastguard Worker "texture", // PROPERTY_ISTEXTURE 65*9880d681SAndroid Build Coastguard Worker "surface", // PROPERTY_ISSURFACE 66*9880d681SAndroid Build Coastguard Worker "sampler", // PROPERTY_ISSAMPLER 67*9880d681SAndroid Build Coastguard Worker "rdoimage", // PROPERTY_ISREADONLY_IMAGE_PARAM 68*9880d681SAndroid Build Coastguard Worker "wroimage", // PROPERTY_ISWRITEONLY_IMAGE_PARAM 69*9880d681SAndroid Build Coastguard Worker "rdwrimage", // PROPERTY_ISREADWRITE_IMAGE_PARAM 70*9880d681SAndroid Build Coastguard Worker "kernel", // PROPERTY_ISKERNEL_FUNCTION 71*9880d681SAndroid Build Coastguard Worker "align", // PROPERTY_ALIGN 72*9880d681SAndroid Build Coastguard Worker "managed", // PROPERTY_MANAGED 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker // last property 75*9880d681SAndroid Build Coastguard Worker "proplast", // PROPERTY_LAST 76*9880d681SAndroid Build Coastguard Worker }; 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker // name of named metadata used for global annotations 79*9880d681SAndroid Build Coastguard Worker #if defined(__GNUC__) 80*9880d681SAndroid Build Coastguard Worker // As this is declared to be static but some of the .cpp files that 81*9880d681SAndroid Build Coastguard Worker // include NVVM.h do not use this array, gcc gives a warning when 82*9880d681SAndroid Build Coastguard Worker // compiling those .cpp files, hence __attribute__((unused)). 83*9880d681SAndroid Build Coastguard Worker __attribute__((unused)) 84*9880d681SAndroid Build Coastguard Worker #endif 85*9880d681SAndroid Build Coastguard Worker static const char *NamedMDForAnnotations = "nvvm.annotations"; 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker namespace NVPTXII { 88*9880d681SAndroid Build Coastguard Worker enum { 89*9880d681SAndroid Build Coastguard Worker // These must be kept in sync with TSFlags in NVPTXInstrFormats.td 90*9880d681SAndroid Build Coastguard Worker IsTexFlag = 0x80, 91*9880d681SAndroid Build Coastguard Worker IsSuldMask = 0x300, 92*9880d681SAndroid Build Coastguard Worker IsSuldShift = 8, 93*9880d681SAndroid Build Coastguard Worker IsSustFlag = 0x400, 94*9880d681SAndroid Build Coastguard Worker IsSurfTexQueryFlag = 0x800, 95*9880d681SAndroid Build Coastguard Worker IsTexModeUnifiedFlag = 0x1000 96*9880d681SAndroid Build Coastguard Worker }; 97*9880d681SAndroid Build Coastguard Worker } 98*9880d681SAndroid Build Coastguard Worker } 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker #endif 101