1DEF_TM_BUILTIN (BUILT_IN_TM_START, "_ITM_beginTransaction", 2 BT_FN_UINT32_UINT32_VAR, ATTR_TM_NOTHROW_RT_LIST) 3 4DEF_TM_BUILTIN (BUILT_IN_TM_COMMIT, "_ITM_commitTransaction", 5 BT_FN_VOID, ATTR_TM_NOTHROW_LIST) 6DEF_TM_BUILTIN (BUILT_IN_TM_COMMIT_EH, "_ITM_commitTransactionEH", 7 BT_FN_VOID_PTR, ATTR_TM_NOTHROW_LIST) 8DEF_TM_BUILTIN (BUILT_IN_TM_ABORT, "_ITM_abortTransaction", 9 BT_FN_VOID_INT, ATTR_TM_NORETURN_NOTHROW_LIST) 10DEF_TM_BUILTIN (BUILT_IN_TM_IRREVOCABLE, "_ITM_changeTransactionMode", 11 BT_FN_VOID_INT, ATTR_TM_NOTHROW_LIST) 12 13DEF_TM_BUILTIN (BUILT_IN_TM_MEMCPY, "_ITM_memcpyRtWt", 14 BT_FN_VOID_PTR_CONST_PTR_SIZE, ATTR_TM_TMPURE_NOTHROW_LIST) 15DEF_TM_BUILTIN (BUILT_IN_TM_MEMMOVE, "_ITM_memmoveRtWt", 16 BT_FN_VOID_PTR_CONST_PTR_SIZE, ATTR_TM_TMPURE_NOTHROW_LIST) 17DEF_TM_BUILTIN (BUILT_IN_TM_MEMSET, "_ITM_memsetW", 18 BT_FN_VOID_PTR_INT_SIZE, ATTR_TM_TMPURE_NOTHROW_LIST) 19 20DEF_TM_BUILTIN (BUILT_IN_TM_GETTMCLONE_IRR, "_ITM_getTMCloneOrIrrevocable", 21 BT_FN_PTR_PTR, ATTR_TM_CONST_NOTHROW_LIST) 22DEF_TM_BUILTIN (BUILT_IN_TM_GETTMCLONE_SAFE, "_ITM_getTMCloneSafe", 23 BT_FN_PTR_PTR, ATTR_TM_CONST_NOTHROW_LIST) 24 25/* Memory allocation builtins. */ 26DEF_TM_BUILTIN (BUILT_IN_TM_MALLOC, "_ITM_malloc", 27 BT_FN_PTR_SIZE, ATTR_TMPURE_MALLOC_NOTHROW_LIST) 28DEF_TM_BUILTIN (BUILT_IN_TM_CALLOC, "_ITM_calloc", 29 BT_FN_PTR_SIZE_SIZE, ATTR_TMPURE_MALLOC_NOTHROW_LIST) 30DEF_TM_BUILTIN (BUILT_IN_TM_FREE, "_ITM_free", 31 BT_FN_VOID_PTR, ATTR_TMPURE_NOTHROW_LIST) 32 33/* Logging builtins. */ 34DEF_TM_BUILTIN (BUILT_IN_TM_LOG_1, "_ITM_LU1", 35 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 36DEF_TM_BUILTIN (BUILT_IN_TM_LOG_2, "_ITM_LU2", 37 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 38DEF_TM_BUILTIN (BUILT_IN_TM_LOG_4, "_ITM_LU4", 39 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 40DEF_TM_BUILTIN (BUILT_IN_TM_LOG_8, "_ITM_LU8", 41 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 42DEF_TM_BUILTIN (BUILT_IN_TM_LOG_FLOAT, "_ITM_LF", 43 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 44DEF_TM_BUILTIN (BUILT_IN_TM_LOG_DOUBLE, "_ITM_LD", 45 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 46DEF_TM_BUILTIN (BUILT_IN_TM_LOG_LDOUBLE, "_ITM_LE", 47 BT_FN_VOID_VPTR, ATTR_TM_TMPURE_NOTHROW_LIST) 48DEF_TM_BUILTIN (BUILT_IN_TM_LOG, "_ITM_LB", 49 BT_FN_VOID_VPTR_SIZE, ATTR_TM_TMPURE_NOTHROW_LIST) 50 51/* These stubs should get defined in the backend if applicable. */ 52DEF_BUILTIN_STUB (BUILT_IN_TM_LOG_M64, "__builtin__ITM_LM64") 53DEF_BUILTIN_STUB (BUILT_IN_TM_LOG_M128, "__builtin__ITM_LM128") 54DEF_BUILTIN_STUB (BUILT_IN_TM_LOG_M256, "__builtin__ITM_LM256") 55 56/* Writes. 57 58 Note: The writes must follow the following order: STORE, WAR, WAW. 59 The TM optimizations depend on this order. 60 61 BUILT_IN_TM_STORE_1 must be the first builtin. 62 BUILTIN_TM_LOAD_STORE_P depends on this. */ 63DEF_TM_BUILTIN (BUILT_IN_TM_STORE_1, "_ITM_WU1", 64 BT_FN_VOID_VPTR_I1, ATTR_TM_NOTHROW_LIST) 65DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_1, "_ITM_WaRU1", 66 BT_FN_VOID_VPTR_I1, ATTR_TM_NOTHROW_LIST) 67DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_1, "_ITM_WaWU1", 68 BT_FN_VOID_VPTR_I1, ATTR_TM_NOTHROW_LIST) 69 70DEF_TM_BUILTIN (BUILT_IN_TM_STORE_2, "_ITM_WU2", 71 BT_FN_VOID_VPTR_I2, ATTR_TM_NOTHROW_LIST) 72DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_2, "_ITM_WaRU2", 73 BT_FN_VOID_VPTR_I2, ATTR_TM_NOTHROW_LIST) 74DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_2, "_ITM_WaWU2", 75 BT_FN_VOID_VPTR_I2, ATTR_TM_NOTHROW_LIST) 76 77DEF_TM_BUILTIN (BUILT_IN_TM_STORE_4, "_ITM_WU4", 78 BT_FN_VOID_VPTR_I4, ATTR_TM_NOTHROW_LIST) 79DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_4, "_ITM_WaRU4", 80 BT_FN_VOID_VPTR_I4, ATTR_TM_NOTHROW_LIST) 81DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_4, "_ITM_WaWU4", 82 BT_FN_VOID_VPTR_I4, ATTR_TM_NOTHROW_LIST) 83 84DEF_TM_BUILTIN (BUILT_IN_TM_STORE_8, "_ITM_WU8", 85 BT_FN_VOID_VPTR_I8, ATTR_TM_NOTHROW_LIST) 86DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_8, "_ITM_WaRU8", 87 BT_FN_VOID_VPTR_I8, ATTR_TM_NOTHROW_LIST) 88DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_8, "_ITM_WaWU8", 89 BT_FN_VOID_VPTR_I8, ATTR_TM_NOTHROW_LIST) 90 91DEF_TM_BUILTIN (BUILT_IN_TM_STORE_FLOAT, "_ITM_WF", 92 BT_FN_VOID_VPTR_FLOAT, ATTR_TM_NOTHROW_LIST) 93DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_FLOAT, "_ITM_WaRF", 94 BT_FN_VOID_VPTR_FLOAT, ATTR_TM_NOTHROW_LIST) 95DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_FLOAT, "_ITM_WaWF", 96 BT_FN_VOID_VPTR_FLOAT, ATTR_TM_NOTHROW_LIST) 97 98DEF_TM_BUILTIN (BUILT_IN_TM_STORE_DOUBLE, "_ITM_WD", 99 BT_FN_VOID_VPTR_DOUBLE, ATTR_TM_NOTHROW_LIST) 100DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_DOUBLE, "_ITM_WaRD", 101 BT_FN_VOID_VPTR_DOUBLE, ATTR_TM_NOTHROW_LIST) 102DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_DOUBLE, "_ITM_WaWD", 103 BT_FN_VOID_VPTR_DOUBLE, ATTR_TM_NOTHROW_LIST) 104 105/* These stubs should get defined in the backend if applicable. */ 106DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_M64, "__builtin__ITM_WM64") 107DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_WAR_M64, "__builtin__ITM_WaRM64") 108DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_WAW_M64, "__builtin__ITM_WaWM64") 109DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_M128, "__builtin__ITM_WM128") 110DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_WAR_M128, "__builtin__ITM_WaRM128") 111DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_WAW_M128, "__builtin__ITM_WaWM128") 112DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_M256, "__builtin__ITM_WM256") 113DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_WAR_M256, "__builtin__ITM_WaRM256") 114DEF_BUILTIN_STUB (BUILT_IN_TM_STORE_WAW_M256, "__builtin__ITM_WaWM256") 115 116DEF_TM_BUILTIN (BUILT_IN_TM_STORE_LDOUBLE, "_ITM_WE", 117 BT_FN_VOID_VPTR_LDOUBLE, ATTR_TM_NOTHROW_LIST) 118DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAR_LDOUBLE, "_ITM_WaRE", 119 BT_FN_VOID_VPTR_LDOUBLE, ATTR_TM_NOTHROW_LIST) 120DEF_TM_BUILTIN (BUILT_IN_TM_STORE_WAW_LDOUBLE, "_ITM_WaWE", 121 BT_FN_VOID_VPTR_LDOUBLE, ATTR_TM_NOTHROW_LIST) 122/* Note: BUILT_IN_TM_STORE_WAW_LDOUBLE must be the last TM store. 123 BUILTIN_TM_STORE_P depends on this. */ 124 125/* Reads. 126 127 Note: The reads must follow the following order: LOAD, RAR, RAW, RFW. 128 The TM optimizations depend on this order. */ 129DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_1, "_ITM_RU1", 130 BT_FN_I1_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 131DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_1, "_ITM_RaRU1", 132 BT_FN_I1_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 133DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_1, "_ITM_RaWU1", 134 BT_FN_I1_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 135DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_1, "_ITM_RfWU1", 136 BT_FN_I1_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 137 138DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_2, "_ITM_RU2", 139 BT_FN_I2_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 140DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_2, "_ITM_RaRU2", 141 BT_FN_I2_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 142DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_2, "_ITM_RaWU2", 143 BT_FN_I2_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 144DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_2, "_ITM_RfWU2", 145 BT_FN_I2_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 146 147DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_4, "_ITM_RU4", 148 BT_FN_I4_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 149DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_4, "_ITM_RaRU4", 150 BT_FN_I4_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 151DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_4, "_ITM_RaWU4", 152 BT_FN_I4_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 153DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_4, "_ITM_RfWU4", 154 BT_FN_I4_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 155 156DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_8, "_ITM_RU8", 157 BT_FN_I8_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 158DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_8, "_ITM_RaRU8", 159 BT_FN_I8_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 160DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_8, "_ITM_RaWU8", 161 BT_FN_I8_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 162DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_8, "_ITM_RfWU8", 163 BT_FN_I8_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 164 165DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_FLOAT, "_ITM_RF", 166 BT_FN_FLOAT_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 167DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_FLOAT, "_ITM_RaRF", 168 BT_FN_FLOAT_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 169DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_FLOAT, "_ITM_RaWF", 170 BT_FN_FLOAT_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 171DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_FLOAT, "_ITM_RfWF", 172 BT_FN_FLOAT_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 173 174DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_DOUBLE, "_ITM_RD", 175 BT_FN_DOUBLE_CONST_DOUBLE_PTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 176DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_DOUBLE, "_ITM_RaRD", 177 BT_FN_DOUBLE_CONST_DOUBLE_PTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 178DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_DOUBLE, "_ITM_RaWD", 179 BT_FN_DOUBLE_CONST_DOUBLE_PTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 180DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_DOUBLE, "_ITM_RfWD", 181 BT_FN_DOUBLE_CONST_DOUBLE_PTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 182 183/* These stubs should get defined in the backend if applicable. */ 184DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_M64, "__builtin__ITM_RM64") 185DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RAR_M64, "__builtin__ITM_RaRM64") 186DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RAW_M64, "__builtin__ITM_RaRM64") 187DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RFW_M64, "__builtin__ITM_RfWM64") 188DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_M128, "__builtin__ITM_RM128") 189DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RAR_M128, "__builtin__ITM_RaRM128") 190DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RAW_M128, "__builtin__ITM_RaRM128") 191DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RFW_M128, "__builtin__ITM_RfWM128") 192DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_M256, "__builtin__ITM_RM256") 193DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RAR_M256, "__builtin__ITM_RaRM256") 194DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RAW_M256, "__builtin__ITM_RaRM256") 195DEF_BUILTIN_STUB (BUILT_IN_TM_LOAD_RFW_M256, "__builtin__ITM_RfWM256") 196 197DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_LDOUBLE, "_ITM_RE", 198 BT_FN_LDOUBLE_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 199DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAR_LDOUBLE, "_ITM_RaRE", 200 BT_FN_LDOUBLE_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 201DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RAW_LDOUBLE, "_ITM_RaWE", 202 BT_FN_LDOUBLE_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 203DEF_TM_BUILTIN (BUILT_IN_TM_LOAD_RFW_LDOUBLE, "_ITM_RfWE", 204 BT_FN_LDOUBLE_VPTR, ATTR_TM_PURE_TMPURE_NOTHROW_LIST) 205 206/* Note: BUILT_IN_TM_LOAD_RFW_LDOUBLE must be the last TM load as well 207 as the last builtin. BUILTIN_TM_LOAD_STORE_P and BUILTIN_TM_LOAD_P 208 depend on this. */ 209