xref: /aosp_15_r20/external/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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