Fix reading Time zone rules using Julian days (#17672)
[platform/upstream/coreclr.git] / src / jit / gtstructs.h
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 // clang-format off
6
7 /*****************************************************************************/
8
9 #ifndef GTSTRUCT_0
10 #error  Define GTSTRUCT_0 before including this file.
11 #endif
12
13 #ifndef GTSTRUCT_1
14 #error  Define GTSTRUCT_1 before including this file.
15 #endif
16
17 #ifndef GTSTRUCT_2
18 #error  Define GTSTRUCT_2 before including this file.
19 #endif
20
21 #ifndef GTSTRUCT_3
22 #error  Define GTSTRUCT_3 before including this file.
23 #endif
24
25 #ifndef GTSTRUCT_4
26 #error  Define GTSTRUCT_4 before including this file.
27 #endif
28
29 #ifndef GTSTRUCT_N
30 #error  Define GTSTRUCT_N before including this file.
31 #endif
32
33 #ifndef GTSTRUCT_2_SPECIAL
34 #error  Define GTSTRUCT_2_SPECIAL before including this file.
35 #endif
36
37 #ifndef GTSTRUCT_3_SPECIAL
38 #error  Define GTSTRUCT_3_SPECIAL before including this file.
39 #endif
40
41 /*****************************************************************************/
42
43 //
44 //       Field name    , Allowed node enum(s)
45 //                                  
46 // The "SPECIAL" variants indicate that some or all of the allowed opers exist elsewhere. This is
47 // used in the DEBUGGABLE_GENTREE implementation when determining which vtable pointer to use for
48 // a given oper. For example, IntConCommon (for the GenTreeIntConCommon type) allows opers
49 // for all its subtypes. The "SPECIAL" version is attached to the supertypes. "N" is always
50 // considered "special".
51
52 GTSTRUCT_0(UnOp        , GT_OP)
53 GTSTRUCT_0(Op          , GT_OP)
54 #if !FEATURE_EH_FUNCLETS
55 GTSTRUCT_2(Val         , GT_END_LFIN, GT_JMP)
56 #else
57 GTSTRUCT_1(Val         , GT_JMP)
58 #endif
59 #ifndef LEGACY_BACKEND
60 GTSTRUCT_3_SPECIAL(IntConCommon, GT_CNS_INT, GT_CNS_LNG, GT_JMPTABLE)
61 GTSTRUCT_1(JumpTable   , GT_JMPTABLE)
62 #else // LEGACY_BACKEND
63 GTSTRUCT_2_SPECIAL(IntConCommon, GT_CNS_INT, GT_CNS_LNG)
64 #endif// LEGACY_BACKEND
65 GTSTRUCT_1(IntCon      , GT_CNS_INT)
66 GTSTRUCT_1(LngCon      , GT_CNS_LNG)
67 GTSTRUCT_1(DblCon      , GT_CNS_DBL)
68 GTSTRUCT_1(StrCon      , GT_CNS_STR)
69 GTSTRUCT_N(LclVarCommon, GT_LCL_VAR, GT_LCL_FLD, GT_REG_VAR, GT_PHI_ARG, GT_STORE_LCL_VAR, GT_STORE_LCL_FLD, GT_LCL_VAR_ADDR, GT_LCL_FLD_ADDR) 
70 GTSTRUCT_3(LclVar      , GT_LCL_VAR, GT_LCL_VAR_ADDR, GT_STORE_LCL_VAR) 
71 #ifndef LEGACY_BACKEND
72 GTSTRUCT_3(LclFld      , GT_LCL_FLD, GT_STORE_LCL_FLD, GT_LCL_FLD_ADDR)
73 #else // LEGACY_BACKEND
74 GTSTRUCT_1(LclFld      , GT_LCL_FLD)
75 #endif // LEGACY_BACKEND
76 GTSTRUCT_1(RegVar      , GT_REG_VAR)
77 GTSTRUCT_1(Cast        , GT_CAST)
78 GTSTRUCT_1(Box         , GT_BOX)
79 GTSTRUCT_1(Field       , GT_FIELD) 
80 GTSTRUCT_1(Call        , GT_CALL) 
81 GTSTRUCT_2_SPECIAL(ArgList , GT_LIST, GT_FIELD_LIST)
82 GTSTRUCT_1(FieldList   , GT_FIELD_LIST)
83 GTSTRUCT_1(Colon       , GT_COLON)
84 GTSTRUCT_1(FptrVal     , GT_FTN_ADDR)
85 GTSTRUCT_1(Intrinsic   , GT_INTRINSIC) 
86 GTSTRUCT_1(Index       , GT_INDEX)
87 GTSTRUCT_1(IndexAddr   , GT_INDEX_ADDR)
88 #if defined(FEATURE_HW_INTRINSICS) && defined(FEATURE_SIMD)
89 GTSTRUCT_3(BoundsChk   , GT_ARR_BOUNDS_CHECK, GT_SIMD_CHK, GT_HW_INTRINSIC_CHK)
90 #elif defined(FEATURE_SIMD)
91 GTSTRUCT_2(BoundsChk   , GT_ARR_BOUNDS_CHECK, GT_SIMD_CHK)
92 #elif defined(FEATURE_HW_INTRINSICS)
93 GTSTRUCT_2(BoundsChk   , GT_ARR_BOUNDS_CHECK, GT_HW_INTRINSIC_CHK)
94 #else // !FEATURE_SIMD && !FEATURE_HW_INTRINSICS
95 GTSTRUCT_1(BoundsChk   , GT_ARR_BOUNDS_CHECK)
96 #endif  // !FEATURE_SIMD && !FEATURE_HW_INTRINSICS
97 GTSTRUCT_1(ArrLen      , GT_ARR_LENGTH)
98 GTSTRUCT_1(ArrElem     , GT_ARR_ELEM) 
99 GTSTRUCT_1(ArrOffs     , GT_ARR_OFFSET)
100 GTSTRUCT_1(ArrIndex    , GT_ARR_INDEX) 
101 GTSTRUCT_1(RetExpr     , GT_RET_EXPR) 
102 GTSTRUCT_2(Stmt        , GT_STMT, GT_IL_OFFSET) 
103 GTSTRUCT_2(CopyOrReload, GT_COPY, GT_RELOAD)
104 GTSTRUCT_2(ClsVar      , GT_CLS_VAR, GT_CLS_VAR_ADDR) 
105 GTSTRUCT_1(ArgPlace    , GT_ARGPLACE) 
106 GTSTRUCT_1(Label       , GT_LABEL) 
107 GTSTRUCT_1(CmpXchg     , GT_CMPXCHG)
108 GTSTRUCT_1(AddrMode    , GT_LEA)
109 GTSTRUCT_N(Blk         , GT_BLK, GT_STORE_BLK, GT_OBJ, GT_STORE_OBJ, GT_DYN_BLK, GT_STORE_DYN_BLK)
110 GTSTRUCT_2(Obj         , GT_OBJ, GT_STORE_OBJ)
111 GTSTRUCT_2(DynBlk      , GT_DYN_BLK, GT_STORE_DYN_BLK)
112 GTSTRUCT_1(Qmark       , GT_QMARK)
113 GTSTRUCT_1(PhiArg      , GT_PHI_ARG)
114 GTSTRUCT_1(StoreInd    , GT_STOREIND)
115 GTSTRUCT_N(Indir       , GT_STOREIND, GT_IND, GT_NULLCHECK, GT_BLK, GT_STORE_BLK, GT_OBJ, GT_STORE_OBJ, GT_DYN_BLK, GT_STORE_DYN_BLK)
116 #if defined(LEGACY_BACKEND) || !defined(_TARGET_ARM_)
117 GTSTRUCT_1(PutArgStk   , GT_PUTARG_STK)
118 #else // defined(_TARGET_ARM_) && !defined(LEGACY_BACKEND)
119 GTSTRUCT_2_SPECIAL(PutArgStk, GT_PUTARG_STK, GT_PUTARG_SPLIT)
120 GTSTRUCT_1(PutArgSplit , GT_PUTARG_SPLIT)
121 #endif // defined(LEGACY_BACKEND) || !defined(_TARGET_ARM_)
122 GTSTRUCT_1(PhysReg     , GT_PHYSREG)
123 #ifdef FEATURE_SIMD
124 GTSTRUCT_1(SIMD        , GT_SIMD) 
125 #endif // FEATURE_SIMD
126 #ifdef FEATURE_HW_INTRINSICS
127 GTSTRUCT_1(HWIntrinsic , GT_HWIntrinsic) 
128 #endif // FEATURE_HW_INTRINSICS
129 GTSTRUCT_1(AllocObj    , GT_ALLOCOBJ)
130 GTSTRUCT_1(RuntimeLookup, GT_RUNTIMELOOKUP)
131 GTSTRUCT_2(CC          , GT_JCC, GT_SETCC)
132 #if !defined(LEGACY_BACKEND) && defined(_TARGET_ARM_)
133 GTSTRUCT_3(MultiRegOp  , GT_MUL_LONG, GT_PUTARG_REG, GT_BITCAST)
134 #endif
135 /*****************************************************************************/
136 #undef  GTSTRUCT_0
137 #undef  GTSTRUCT_1
138 #undef  GTSTRUCT_2
139 #undef  GTSTRUCT_3
140 #undef  GTSTRUCT_4
141 #undef  GTSTRUCT_N
142 #undef  GTSTRUCT_2_SPECIAL
143 #undef  GTSTRUCT_3_SPECIAL
144 /*****************************************************************************/
145
146 // clang-format on