brig-builtins.def 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. /* This file contains the definitions and documentation for the
  2. HSAIL builtins used in the GNU compiler.
  3. Copyright (C) 2016-2018 Free Software Foundation, Inc.
  4. Contributed by Pekka Jaaskelainen <pekka.jaaskelainen@parmance.com>
  5. for General Processor Tech.
  6. This file is part of GCC.
  7. GCC is free software; you can redistribute it and/or modify it under
  8. the terms of the GNU General Public License as published by the Free
  9. Software Foundation; either version 3, or (at your option) any later
  10. version.
  11. GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  12. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. for more details.
  15. You should have received a copy of the GNU General Public License
  16. along with GCC; see the file COPYING3. If not see
  17. <http://www.gnu.org/licenses/>. */
  18. /* Following builtins are used by the BRIG (the binary representation of
  19. HSAIL) frontend. Software implementations are available in libhsail-rt.
  20. Use leading double underscore in the name to avoid name space clashes
  21. with kernel program symbols in case the builtin is implemented as
  22. a function call. */
  23. /* Work-item ID related builtins are not constant in the work-group function
  24. mode (each WI has a different return value). */
  25. #ifndef DEF_HSAIL_BUILTIN
  26. #define DEF_HSAIL_BUILTIN(ENUM, HSAIL_OPCODE, HSAIL_TYPE, \
  27. NAME, TYPE, ATTRS)
  28. #endif
  29. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMABSID, BRIG_OPCODE_WORKITEMABSID,
  30. BRIG_TYPE_U32, "__hsail_workitemabsid", BT_FN_UINT_UINT_PTR,
  31. ATTR_NOTHROW_LEAF_LIST)
  32. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GRIDSIZE, BRIG_OPCODE_GRIDSIZE,
  33. BRIG_TYPE_U32, "__hsail_gridsize", BT_FN_UINT_UINT_PTR,
  34. ATTR_PURE_NOTHROW_LEAF_LIST)
  35. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATABSID_U32,
  36. BRIG_OPCODE_WORKITEMFLATABSID, BRIG_TYPE_U32,
  37. "__hsail_workitemflatabsid_u32", BT_FN_UINT_PTR,
  38. ATTR_NOTHROW_LEAF_LIST)
  39. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATABSID_U64,
  40. BRIG_OPCODE_WORKITEMFLATABSID, BRIG_TYPE_U64,
  41. "__hsail_workitemflatabsid_u64", BT_FN_ULONG_PTR,
  42. ATTR_NOTHROW_LEAF_LIST)
  43. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMFLATID, BRIG_OPCODE_WORKITEMFLATID,
  44. BRIG_TYPE_U32, "__hsail_workitemflatid", BT_FN_UINT_PTR,
  45. ATTR_NOTHROW_LEAF_LIST)
  46. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMID, BRIG_OPCODE_WORKITEMID,
  47. BRIG_TYPE_U32, "__hsail_workitemid", BT_FN_UINT_UINT_PTR,
  48. ATTR_NOTHROW_LEAF_LIST)
  49. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKGROUPID, BRIG_OPCODE_WORKGROUPID,
  50. BRIG_TYPE_U32, "__hsail_workgroupid", BT_FN_UINT_UINT_PTR,
  51. ATTR_PURE_NOTHROW_LEAF_LIST)
  52. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CURRENTWORKITEMFLATID,
  53. BRIG_OPCODE_CURRENTWORKITEMFLATID,
  54. BRIG_TYPE_U32, "__hsail_currentworkitemflatid",
  55. BT_FN_UINT_PTR, ATTR_NOTHROW_LEAF_LIST)
  56. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKITEMABSID_U64, BRIG_OPCODE_WORKITEMABSID,
  57. BRIG_TYPE_U64, "__hsail_workitemabsid_u64",
  58. BT_FN_ULONG_UINT_PTR, ATTR_NOTHROW_LEAF_LIST)
  59. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETID, BRIG_OPCODE_PACKETID,
  60. BRIG_TYPE_U64, "__hsail_packetid", BT_FN_ULONG_PTR,
  61. ATTR_PURE_NOTHROW_LEAF_LIST)
  62. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETCOMPLETIONSIG_SIG64,
  63. BRIG_OPCODE_PACKETCOMPLETIONSIG, BRIG_TYPE_SIG64,
  64. "__hsail_packetcompletionsig_sig64", BT_FN_ULONG_PTR,
  65. ATTR_PURE_NOTHROW_LEAF_LIST)
  66. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKETCOMPLETIONSIG_SIG32,
  67. BRIG_OPCODE_PACKETCOMPLETIONSIG, BRIG_TYPE_SIG32,
  68. "__hsail_packetcompletionsig_sig32", BT_FN_UINT_PTR,
  69. ATTR_PURE_NOTHROW_LEAF_LIST)
  70. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CURRENTWORKGROUPSIZE,
  71. BRIG_OPCODE_CURRENTWORKGROUPSIZE, BRIG_TYPE_U32,
  72. "__hsail_currentworkgroupsize", BT_FN_UINT_UINT_PTR,
  73. ATTR_PURE_NOTHROW_LEAF_LIST)
  74. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WORKGROUPSIZE, BRIG_OPCODE_WORKGROUPSIZE,
  75. BRIG_TYPE_U32, "__hsail_workgroupsize", BT_FN_UINT_UINT_PTR,
  76. ATTR_PURE_NOTHROW_LEAF_LIST)
  77. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_DIM, BRIG_OPCODE_DIM,
  78. BRIG_TYPE_U32, "__hsail_dim", BT_FN_UINT_PTR,
  79. ATTR_PURE_NOTHROW_LEAF_LIST)
  80. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GRIDGROUPS, BRIG_OPCODE_GRIDGROUPS,
  81. BRIG_TYPE_U32, "__hsail_gridgroups", BT_FN_UINT_UINT_PTR,
  82. ATTR_PURE_NOTHROW_LEAF_LIST)
  83. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_S32, BRIG_OPCODE_BITEXTRACT,
  84. BRIG_TYPE_S32, "__hsail_bitextract_s32",
  85. BT_FN_INT_INT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  86. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_U32, BRIG_OPCODE_BITEXTRACT,
  87. BRIG_TYPE_U32, "__hsail_bitextract_u32",
  88. BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  89. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_S64, BRIG_OPCODE_BITEXTRACT,
  90. BRIG_TYPE_S64, "__hsail_bitextract_s64",
  91. BT_FN_LONG_LONG_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  92. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITEXTRACT_U64, BRIG_OPCODE_BITEXTRACT,
  93. BRIG_TYPE_U64, "__hsail_bitextract_u64",
  94. BT_FN_ULONG_ULONG_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  95. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITINSERT_U32, BRIG_OPCODE_BITINSERT,
  96. BRIG_TYPE_U32, "__hsail_bitinsert_u32",
  97. BT_FN_UINT_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  98. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITINSERT_U64, BRIG_OPCODE_BITINSERT,
  99. BRIG_TYPE_U64, "__hsail_bitinsert_u64",
  100. BT_FN_ULONG_ULONG_ULONG_UINT_UINT,
  101. ATTR_CONST_NOTHROW_LEAF_LIST)
  102. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITMASK_B32, BRIG_OPCODE_BITMASK,
  103. BRIG_TYPE_B32, "__hsail_bitmask_u32", BT_FN_UINT_UINT_UINT,
  104. ATTR_CONST_NOTHROW_LEAF_LIST)
  105. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITMASK_B64, BRIG_OPCODE_BITMASK,
  106. BRIG_TYPE_B64, "__hsail_bitmask_u64", BT_FN_ULONG_UINT_UINT,
  107. ATTR_CONST_NOTHROW_LEAF_LIST)
  108. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITREV_B32, BRIG_OPCODE_BITREV,
  109. BRIG_TYPE_B32, "__hsail_bitrev_u32", BT_FN_UINT_UINT,
  110. ATTR_CONST_NOTHROW_LEAF_LIST)
  111. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITREV_B64, BRIG_OPCODE_BITREV,
  112. BRIG_TYPE_B64, "__hsail_bitrev_u64", BT_FN_ULONG_ULONG,
  113. ATTR_CONST_NOTHROW_LEAF_LIST)
  114. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITSELECT_B32, BRIG_OPCODE_BITSELECT,
  115. BRIG_TYPE_B32, "__hsail_bitselect_u32",
  116. BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  117. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITSELECT_U64, BRIG_OPCODE_BITSELECT,
  118. BRIG_TYPE_B64, "__hsail_bitselect_u64",
  119. BT_FN_ULONG_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  120. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_U32, BRIG_OPCODE_FIRSTBIT,
  121. BRIG_TYPE_U32, "__hsail_firstbit_u32", BT_FN_UINT_UINT,
  122. ATTR_CONST_NOTHROW_LEAF_LIST)
  123. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_S32, BRIG_OPCODE_FIRSTBIT,
  124. BRIG_TYPE_S32, "__hsail_firstbit_s32", BT_FN_UINT_INT,
  125. ATTR_CONST_NOTHROW_LEAF_LIST)
  126. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_U64, BRIG_OPCODE_FIRSTBIT,
  127. BRIG_TYPE_U64, "__hsail_firstbit_u64", BT_FN_UINT_ULONG,
  128. ATTR_CONST_NOTHROW_LEAF_LIST)
  129. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FIRSTBIT_S64, BRIG_OPCODE_FIRSTBIT,
  130. BRIG_TYPE_S64, "__hsail_firstbit_s64", BT_FN_UINT_LONG,
  131. ATTR_CONST_NOTHROW_LEAF_LIST)
  132. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LASTBIT_U32, BRIG_OPCODE_LASTBIT,
  133. BRIG_TYPE_U32, "__hsail_lastbit_u32", BT_FN_UINT_UINT,
  134. ATTR_CONST_NOTHROW_LEAF_LIST)
  135. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LASTBIT_U64, BRIG_OPCODE_LASTBIT,
  136. BRIG_TYPE_U64, "__hsail_lastbit_u64", BT_FN_UINT_ULONG,
  137. ATTR_CONST_NOTHROW_LEAF_LIST)
  138. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BORROW_U32, BRIG_OPCODE_BORROW,
  139. BRIG_TYPE_U32, "__hsail_borrow_u32", BT_FN_UINT_UINT_UINT,
  140. ATTR_CONST_NOTHROW_LEAF_LIST)
  141. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BORROW_U64, BRIG_OPCODE_BORROW,
  142. BRIG_TYPE_U64, "__hsail_borrow_u64", BT_FN_ULONG_ULONG_ULONG,
  143. ATTR_CONST_NOTHROW_LEAF_LIST)
  144. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CARRY_U32, BRIG_OPCODE_CARRY,
  145. BRIG_TYPE_U32, "__hsail_carry_u32", BT_FN_UINT_UINT_UINT,
  146. ATTR_CONST_NOTHROW_LEAF_LIST)
  147. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CARRY_U64, BRIG_OPCODE_CARRY,
  148. BRIG_TYPE_U64, "__hsail_carry_u64", BT_FN_ULONG_ULONG_ULONG,
  149. ATTR_CONST_NOTHROW_LEAF_LIST)
  150. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_REM_S32, BRIG_OPCODE_REM,
  151. BRIG_TYPE_S32, "__hsail_rem_s32", BT_FN_INT_INT_INT,
  152. ATTR_CONST_NOTHROW_LEAF_LIST)
  153. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_REM_S64, BRIG_OPCODE_REM,
  154. BRIG_TYPE_S64, "__hsail_rem_s64", BT_FN_LONG_LONG_LONG,
  155. ATTR_CONST_NOTHROW_LEAF_LIST)
  156. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MIN_F32, BRIG_OPCODE_MIN,
  157. BRIG_TYPE_F32, "__hsail_min_f32", BT_FN_FLOAT_FLOAT_FLOAT,
  158. ATTR_CONST_NOTHROW_LEAF_LIST)
  159. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MAX_F32, BRIG_OPCODE_MAX,
  160. BRIG_TYPE_F32, "__hsail_max_f32", BT_FN_FLOAT_FLOAT_FLOAT,
  161. ATTR_CONST_NOTHROW_LEAF_LIST)
  162. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MIN_F64, BRIG_OPCODE_MIN,
  163. BRIG_TYPE_F64, "__hsail_min_f64", BT_FN_DOUBLE_DOUBLE_DOUBLE,
  164. ATTR_CONST_NOTHROW_LEAF_LIST)
  165. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MAX_F64, BRIG_OPCODE_MAX,
  166. BRIG_TYPE_F64, "__hsail_max_f64", BT_FN_DOUBLE_DOUBLE_DOUBLE,
  167. ATTR_CONST_NOTHROW_LEAF_LIST)
  168. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLASS_F32, BRIG_OPCODE_CLASS,
  169. BRIG_TYPE_F32, "__hsail_class_f32", BT_FN_UINT_FLOAT_UINT,
  170. ATTR_CONST_NOTHROW_LEAF_LIST)
  171. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLASS_F64, BRIG_OPCODE_CLASS,
  172. BRIG_TYPE_F64, "__hsail_class_f64", BT_FN_UINT_DOUBLE_UINT,
  173. ATTR_CONST_NOTHROW_LEAF_LIST)
  174. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLASS_F32_F16, BRIG_OPCODE_CLASS,
  175. BRIG_TYPE_F16, "__hsail_class_f32_f16",
  176. BT_FN_UINT_FLOAT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  177. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FRACT_F32, BRIG_OPCODE_FRACT,
  178. BRIG_TYPE_F32, "__hsail_fract_f32", BT_FN_FLOAT_FLOAT,
  179. ATTR_CONST_NOTHROW_LEAF_LIST)
  180. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_FRACT_F64, BRIG_OPCODE_FRACT,
  181. BRIG_TYPE_F64, "__hsail_fract_f64", BT_FN_DOUBLE_DOUBLE,
  182. ATTR_CONST_NOTHROW_LEAF_LIST)
  183. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BARRIER, BRIG_OPCODE_BARRIER,
  184. BRIG_TYPE_NONE, "__hsail_barrier", BT_FN_VOID_PTR,
  185. ATTR_RT_NOTHROW_LEAF_LIST)
  186. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_INITFBAR, BRIG_OPCODE_INITFBAR,
  187. BRIG_TYPE_NONE, "__hsail_initfbar", BT_FN_VOID_UINT_PTR,
  188. ATTR_NOTHROW_LEAF_LIST)
  189. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_JOINFBAR, BRIG_OPCODE_JOINFBAR,
  190. BRIG_TYPE_NONE, "__hsail_joinfbar", BT_FN_VOID_UINT_PTR,
  191. ATTR_NOTHROW_LIST)
  192. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_WAITFBAR, BRIG_OPCODE_WAITFBAR,
  193. BRIG_TYPE_NONE, "__hsail_waitfbar", BT_FN_VOID_UINT_PTR,
  194. ATTR_RT_NOTHROW_LEAF_LIST)
  195. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_ARRIVEFBAR, BRIG_OPCODE_ARRIVEFBAR,
  196. BRIG_TYPE_NONE, "__hsail_arrivefbar", BT_FN_VOID_UINT_PTR,
  197. ATTR_RT_NOTHROW_LEAF_LIST)
  198. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LEAVEFBAR, BRIG_OPCODE_LEAVEFBAR,
  199. BRIG_TYPE_NONE, "__hsail_leavefbar", BT_FN_VOID_UINT_PTR,
  200. ATTR_NOTHROW_LIST)
  201. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_RELEASEFBAR, BRIG_OPCODE_RELEASEFBAR,
  202. BRIG_TYPE_NONE, "__hsail_releasefbar", BT_FN_VOID_UINT_PTR,
  203. ATTR_NOTHROW_LIST)
  204. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BITALIGN, BRIG_OPCODE_BITALIGN,
  205. BRIG_TYPE_B32, "__hsail_bitalign",
  206. BT_FN_UINT_ULONG_ULONG_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  207. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_BYTEALIGN, BRIG_OPCODE_BYTEALIGN,
  208. BRIG_TYPE_B32, "__hsail_bytealign",
  209. BT_FN_UINT_ULONG_ULONG_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  210. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LERP, BRIG_OPCODE_LERP,
  211. BRIG_TYPE_U8X4, "__hsail_lerp", BT_FN_UINT_UINT_UINT_UINT,
  212. ATTR_CONST_NOTHROW_LEAF_LIST)
  213. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_PACKCVT, BRIG_OPCODE_PACKCVT,
  214. BRIG_TYPE_U8X4, "__hsail_packcvt",
  215. BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT,
  216. ATTR_CONST_NOTHROW_LEAF_LIST)
  217. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_UNPACKCVT, BRIG_OPCODE_UNPACKCVT,
  218. BRIG_TYPE_F32, "__hsail_unpackcvt", BT_FN_FLOAT_UINT_UINT,
  219. ATTR_CONST_NOTHROW_LEAF_LIST)
  220. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SAD_U16X2, BRIG_OPCODE_SAD,
  221. BRIG_TYPE_U16X2, "__hsail_sad_u16x2",
  222. BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  223. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SAD_U32, BRIG_OPCODE_SAD,
  224. BRIG_TYPE_U32, "__hsail_sad_u32", BT_FN_UINT_UINT_UINT_UINT,
  225. ATTR_CONST_NOTHROW_LEAF_LIST)
  226. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SAD_U8X4, BRIG_OPCODE_SAD,
  227. BRIG_TYPE_U8X4, "__hsail_sad_u8x4",
  228. BT_FN_UINT_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  229. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SADHI_U8X4, BRIG_OPCODE_SADHI,
  230. BRIG_TYPE_U16X2, "__hsail_sadhi_u16x2_u8x4",
  231. BT_FN_UINT_UINT_UINT_UINT,
  232. ATTR_CONST_NOTHROW_LEAF_LIST)
  233. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CLOCK, BRIG_OPCODE_CLOCK,
  234. BRIG_TYPE_U64, "__hsail_clock", BT_FN_ULONG,
  235. ATTR_NOTHROW_LEAF_LIST)
  236. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CUID, BRIG_OPCODE_CUID,
  237. BRIG_TYPE_U32, "__hsail_cuid", BT_FN_UINT_PTR,
  238. ATTR_NOTHROW_LEAF_LIST)
  239. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_MAXCUID, BRIG_OPCODE_MAXCUID,
  240. BRIG_TYPE_U32, "__hsail_maxcuid", BT_FN_UINT_PTR,
  241. ATTR_NOTHROW_LEAF_LIST)
  242. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_DEBUGTRAP, BRIG_OPCODE_DEBUGTRAP,
  243. BRIG_TYPE_U32, "__hsail_debugtrap", BT_FN_VOID_UINT_PTR,
  244. ATTR_NORETURN_NOTHROW_LIST)
  245. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_GROUPBASEPTR, BRIG_OPCODE_GROUPBASEPTR,
  246. BRIG_TYPE_U32, "__hsail_groupbaseptr", BT_FN_UINT_PTR,
  247. ATTR_PURE_NOTHROW_LEAF_LIST)
  248. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_KERNARGBASEPTR_U64,
  249. BRIG_OPCODE_KERNARGBASEPTR, BRIG_TYPE_U64,
  250. "__hsail_kernargbaseptr_u64", BT_FN_ULONG_PTR,
  251. ATTR_PURE_NOTHROW_LEAF_LIST)
  252. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_KERNARGBASEPTR_U32,
  253. BRIG_OPCODE_KERNARGBASEPTR, BRIG_TYPE_U32,
  254. "__hsail_kernargbaseptr_u32", BT_FN_UINT_PTR,
  255. ATTR_PURE_NOTHROW_LEAF_LIST)
  256. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_ALLOCA, BRIG_OPCODE_ALLOCA,
  257. BRIG_TYPE_U32, "__hsail_alloca", BT_FN_UINT_UINT_UINT_PTR,
  258. ATTR_NOTHROW_LEAF_LIST)
  259. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LDQUEUEWRITEINDEX,
  260. BRIG_OPCODE_LDQUEUEWRITEINDEX,
  261. BRIG_TYPE_U64, "__hsail_ldqueuewriteindex",
  262. BT_FN_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST)
  263. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_LDQUEUEREADINDEX,
  264. BRIG_OPCODE_LDQUEUEREADINDEX,
  265. BRIG_TYPE_U64, "__hsail_ldqueuereadindex",
  266. BT_FN_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST)
  267. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_STQUEUEWRITEINDEX,
  268. BRIG_OPCODE_STQUEUEWRITEINDEX,
  269. BRIG_TYPE_U64, "__hsail_stqueuewriteindex",
  270. BT_FN_VOID_UINT64_UINT64, ATTR_NOTHROW_LEAF_LIST)
  271. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_STQUEUEREADINDEX,
  272. BRIG_OPCODE_STQUEUEREADINDEX,
  273. BRIG_TYPE_U64, "__hsail_stqueuereadindex",
  274. BT_FN_VOID_UINT64_UINT64, ATTR_NOTHROW_LEAF_LIST)
  275. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_ADDQUEUEWRITEINDEX,
  276. BRIG_OPCODE_ADDQUEUEWRITEINDEX,
  277. BRIG_TYPE_U64, "__hsail_addqueuewriteindex",
  278. BT_FN_ULONG_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST)
  279. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_CASQUEUEWRITEINDEX,
  280. BRIG_OPCODE_CASQUEUEWRITEINDEX,
  281. BRIG_TYPE_U64, "__hsail_casqueuewriteindex",
  282. BT_FN_ULONG_ULONG_ULONG_ULONG, ATTR_NOTHROW_LEAF_LIST)
  283. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SEGMENTP_GLOBAL,
  284. BRIG_OPCODE_SEGMENTP,
  285. BRIG_TYPE_U32, "__hsail_segmentp_global",
  286. BT_FN_UINT32_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST)
  287. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SEGMENTP_GROUP,
  288. BRIG_OPCODE_SEGMENTP,
  289. BRIG_TYPE_U32, "__hsail_segmentp_group",
  290. BT_FN_UINT32_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST)
  291. DEF_HSAIL_BUILTIN (BUILT_IN_HSAIL_SEGMENTP_PRIVATE,
  292. BRIG_OPCODE_SEGMENTP,
  293. BRIG_TYPE_U32, "__hsail_segmentp_private",
  294. BT_FN_UINT32_UINT64_PTR, ATTR_NOTHROW_LEAF_LIST)
  295. #ifndef DEF_HSAIL_ATOMIC_BUILTIN
  296. #define DEF_HSAIL_ATOMIC_BUILTIN(ENUM, ATOMIC_OPCODE, HSAIL_TYPE, \
  297. NAME, TYPE, ATTRS)
  298. #endif
  299. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_S32, BRIG_ATOMIC_MIN,
  300. BRIG_TYPE_S32, "__hsail_atomic_min_s32",
  301. BT_FN_INT_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
  302. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_S64, BRIG_ATOMIC_MIN,
  303. BRIG_TYPE_S64, "__hsail_atomic_min_s64",
  304. BT_FN_LONG_PTR_LONG, ATTR_NOTHROW_LEAF_LIST)
  305. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_U32, BRIG_ATOMIC_MIN,
  306. BRIG_TYPE_U32, "__hsail_atomic_min_u32",
  307. BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST)
  308. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MIN_U64, BRIG_ATOMIC_MIN,
  309. BRIG_TYPE_U64, "__hsail_atomic_min_u64",
  310. BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST)
  311. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_S32, BRIG_ATOMIC_MAX,
  312. BRIG_TYPE_S32, "__hsail_atomic_max_s32",
  313. BT_FN_INT_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
  314. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_S64, BRIG_ATOMIC_MAX,
  315. BRIG_TYPE_S64, "__hsail_atomic_max_s64",
  316. BT_FN_LONG_PTR_LONG, ATTR_NOTHROW_LEAF_LIST)
  317. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_U32, BRIG_ATOMIC_MAX,
  318. BRIG_TYPE_U32, "__hsail_atomic_max_u32",
  319. BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST)
  320. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_MAX_U64, BRIG_ATOMIC_MAX,
  321. BRIG_TYPE_U64, "__hsail_atomic_max_u64",
  322. BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST)
  323. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPDEC_U32,
  324. BRIG_ATOMIC_WRAPDEC, BRIG_TYPE_U32,
  325. "__hsail_atomic_wrapdec_u32",
  326. BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST)
  327. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPDEC_U64,
  328. BRIG_ATOMIC_WRAPDEC, BRIG_TYPE_U64,
  329. "__hsail_atomic_wrapdec_u64",
  330. BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST)
  331. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPINC_U32,
  332. BRIG_ATOMIC_WRAPINC, BRIG_TYPE_U32,
  333. "__hsail_atomic_wrapinc_u32",
  334. BT_FN_UINT_PTR_UINT, ATTR_NOTHROW_LEAF_LIST)
  335. DEF_HSAIL_ATOMIC_BUILTIN (BUILT_IN_HSAIL_ATOMIC_WRAPINC_U64,
  336. BRIG_ATOMIC_WRAPINC, BRIG_TYPE_U64,
  337. "__hsail_atomic_wrapinc_u64",
  338. BT_FN_ULONG_PTR_ULONG, ATTR_NOTHROW_LEAF_LIST)
  339. #ifndef DEF_HSAIL_SAT_BUILTIN
  340. #define DEF_HSAIL_SAT_BUILTIN(ENUM, HSAIL_OPCODE, HSAIL_TYPE, \
  341. NAME, TYPE, ATTRS)
  342. #endif
  343. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U64, BRIG_OPCODE_ADD,
  344. BRIG_TYPE_U64, "__hsail_sat_add_u64",
  345. BT_FN_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  346. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S64, BRIG_OPCODE_ADD,
  347. BRIG_TYPE_S64, "__hsail_sat_add_s64",
  348. BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  349. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U32, BRIG_OPCODE_ADD,
  350. BRIG_TYPE_U32, "__hsail_sat_add_u32",
  351. BT_FN_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  352. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S32, BRIG_OPCODE_ADD,
  353. BRIG_TYPE_S32, "__hsail_sat_add_s32",
  354. BT_FN_INT_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
  355. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U16, BRIG_OPCODE_ADD,
  356. BRIG_TYPE_U16, "__hsail_sat_add_u16",
  357. BT_FN_UINT16_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  358. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S16, BRIG_OPCODE_ADD,
  359. BRIG_TYPE_S16, "__hsail_sat_add_s16",
  360. BT_FN_INT16_INT16_INT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  361. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_U8, BRIG_OPCODE_ADD,
  362. BRIG_TYPE_U8, "__hsail_sat_add_u8",
  363. BT_FN_UINT8_UINT8_UINT8, ATTR_CONST_NOTHROW_LEAF_LIST)
  364. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_ADD_S8, BRIG_OPCODE_ADD,
  365. BRIG_TYPE_S8, "__hsail_sat_add_s8",
  366. BT_FN_INT8_INT8_INT8, ATTR_CONST_NOTHROW_LEAF_LIST)
  367. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U64, BRIG_OPCODE_SUB,
  368. BRIG_TYPE_U64, "__hsail_sat_sub_u64",
  369. BT_FN_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  370. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S64, BRIG_OPCODE_SUB,
  371. BRIG_TYPE_S64, "__hsail_sat_sub_s64",
  372. BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  373. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U32, BRIG_OPCODE_SUB,
  374. BRIG_TYPE_U32, "__hsail_sat_sub_u32",
  375. BT_FN_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  376. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S32, BRIG_OPCODE_SUB,
  377. BRIG_TYPE_S32, "__hsail_sat_sub_s32",
  378. BT_FN_INT_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
  379. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U16, BRIG_OPCODE_SUB,
  380. BRIG_TYPE_U16, "__hsail_sat_sub_u16",
  381. BT_FN_UINT16_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  382. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S16, BRIG_OPCODE_SUB,
  383. BRIG_TYPE_S16, "__hsail_sat_sub_s16",
  384. BT_FN_INT16_INT16_INT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  385. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_U8, BRIG_OPCODE_SUB,
  386. BRIG_TYPE_U8, "__hsail_sat_sub_u8",
  387. BT_FN_UINT8_UINT8_UINT8, ATTR_CONST_NOTHROW_LEAF_LIST)
  388. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_SUB_S8, BRIG_OPCODE_SUB,
  389. BRIG_TYPE_S8, "__hsail_sat_sub_s8",
  390. BT_FN_INT8_INT8_INT8, ATTR_CONST_NOTHROW_LEAF_LIST)
  391. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U64, BRIG_OPCODE_MUL,
  392. BRIG_TYPE_U64, "__hsail_sat_mul_u64",
  393. BT_FN_ULONG_ULONG_ULONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  394. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S64, BRIG_OPCODE_MUL,
  395. BRIG_TYPE_S64, "__hsail_sat_mul_s64",
  396. BT_FN_LONG_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  397. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U32, BRIG_OPCODE_MUL,
  398. BRIG_TYPE_U32, "__hsail_sat_mul_u32",
  399. BT_FN_UINT_UINT_UINT, ATTR_CONST_NOTHROW_LEAF_LIST)
  400. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S32, BRIG_OPCODE_MUL,
  401. BRIG_TYPE_S32, "__hsail_sat_mul_s32",
  402. BT_FN_INT_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
  403. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U16, BRIG_OPCODE_MUL,
  404. BRIG_TYPE_U16, "__hsail_sat_mul_u16",
  405. BT_FN_UINT16_UINT16_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  406. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S16, BRIG_OPCODE_MUL,
  407. BRIG_TYPE_S16, "__hsail_sat_mul_s16",
  408. BT_FN_INT16_INT16_INT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  409. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_U8, BRIG_OPCODE_MUL,
  410. BRIG_TYPE_U8, "__hsail_sat_mul_u8",
  411. BT_FN_UINT8_UINT8_UINT8, ATTR_CONST_NOTHROW_LEAF_LIST)
  412. DEF_HSAIL_SAT_BUILTIN (BUILT_IN_HSAIL_SAT_MUL_S8, BRIG_OPCODE_MUL,
  413. BRIG_TYPE_S8, "__hsail_sat_mul_s8",
  414. BT_FN_INT8_INT8_INT8, ATTR_CONST_NOTHROW_LEAF_LIST)
  415. #ifndef DEF_HSAIL_INTR_BUILTIN
  416. #define DEF_HSAIL_INTR_BUILTIN(ENUM, NAME, TYPE, ATTRS)
  417. #endif
  418. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_FTZ_F32_F16, "__hsail_ftz_f32_f16",
  419. BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  420. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_FTZ_F32, "__hsail_ftz_f32",
  421. BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  422. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_FTZ_F64, "__hsail_ftz_f64",
  423. BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  424. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_PUSH_FRAME, "__hsail_alloca_push_frame",
  425. BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
  426. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_POP_FRAME, "__hsail_alloca_pop_frame",
  427. BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
  428. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_SETWORKITEMID, "__hsail_setworkitemid",
  429. BT_FN_VOID_UINT32_UINT32_PTR, ATTR_NOTHROW_LEAF_LIST)
  430. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_LAUNCH_WG_FUNC,
  431. "__hsail_launch_wg_function",
  432. BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
  433. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_LAUNCH_KERNEL,
  434. "__hsail_launch_kernel",
  435. BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LEAF_LIST)
  436. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_F32_TO_F16, "__hsail_f32_to_f16",
  437. BT_FN_UINT16_UINT32, ATTR_CONST_NOTHROW_LEAF_LIST)
  438. DEF_HSAIL_INTR_BUILTIN (BUILT_IN_HSAIL_F16_TO_F32, "__hsail_f16_to_f32",
  439. BT_FN_UINT32_UINT16, ATTR_CONST_NOTHROW_LEAF_LIST)
  440. #ifndef DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN
  441. #define DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN(ENUM, HSAIL_DEST_TYPE, HSAIL_SRC_TYPE, \
  442. NAME, TYPE, ATTRS)
  443. #endif
  444. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U8_F32,
  445. BRIG_TYPE_U8, BRIG_TYPE_F32,
  446. "__hsail_cvt_zeroi_sat_u8_f32",
  447. BT_FN_UINT8_FLOAT,
  448. ATTR_CONST_NOTHROW_LEAF_LIST)
  449. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S8_F32,
  450. BRIG_TYPE_S8, BRIG_TYPE_F32,
  451. "__hsail_cvt_zeroi_sat_s8_f32",
  452. BT_FN_INT8_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  453. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U16_F32,
  454. BRIG_TYPE_U16, BRIG_TYPE_F32,
  455. "__hsail_cvt_zeroi_sat_u16_f32",
  456. BT_FN_UINT16_FLOAT,
  457. ATTR_CONST_NOTHROW_LEAF_LIST)
  458. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S16_F32,
  459. BRIG_TYPE_S16, BRIG_TYPE_F32,
  460. "__hsail_cvt_zeroi_sat_s16_f32",
  461. BT_FN_INT16_FLOAT,
  462. ATTR_CONST_NOTHROW_LEAF_LIST)
  463. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U32_F32,
  464. BRIG_TYPE_U32, BRIG_TYPE_F32,
  465. "__hsail_cvt_zeroi_sat_u32_f32",
  466. BT_FN_UINT32_FLOAT,
  467. ATTR_CONST_NOTHROW_LEAF_LIST)
  468. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S32_F32,
  469. BRIG_TYPE_S32, BRIG_TYPE_F32,
  470. "__hsail_cvt_zeroi_sat_s32_f32",
  471. BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  472. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U64_F32,
  473. BRIG_TYPE_U64, BRIG_TYPE_F32,
  474. "__hsail_cvt_zeroi_sat_u64_f32",
  475. BT_FN_UINT64_FLOAT,
  476. ATTR_CONST_NOTHROW_LEAF_LIST)
  477. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S64_F32,
  478. BRIG_TYPE_S64, BRIG_TYPE_F32,
  479. "__hsail_cvt_zeroi_sat_s64_f32",
  480. BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  481. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U8_F64,
  482. BRIG_TYPE_U8, BRIG_TYPE_F64,
  483. "__hsail_cvt_zeroi_sat_u8_f64",
  484. BT_FN_UINT8_FLOAT,
  485. ATTR_CONST_NOTHROW_LEAF_LIST)
  486. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S8_F64,
  487. BRIG_TYPE_S8, BRIG_TYPE_F64,
  488. "__hsail_cvt_zeroi_sat_s8_f64",
  489. BT_FN_INT8_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  490. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U16_F64,
  491. BRIG_TYPE_U16, BRIG_TYPE_F64,
  492. "__hsail_cvt_zeroi_sat_u16_f64",
  493. BT_FN_UINT16_FLOAT,
  494. ATTR_CONST_NOTHROW_LEAF_LIST)
  495. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S16_F64,
  496. BRIG_TYPE_S16, BRIG_TYPE_F64,
  497. "__hsail_cvt_zeroi_sat_s16_f64",
  498. BT_FN_INT16_FLOAT,
  499. ATTR_CONST_NOTHROW_LEAF_LIST)
  500. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U32_F64,
  501. BRIG_TYPE_U32, BRIG_TYPE_F64,
  502. "__hsail_cvt_zeroi_sat_u32_f64",
  503. BT_FN_UINT32_FLOAT,
  504. ATTR_CONST_NOTHROW_LEAF_LIST)
  505. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S32_F64,
  506. BRIG_TYPE_S32, BRIG_TYPE_F64,
  507. "__hsail_cvt_zeroi_sat_s32_f64",
  508. BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  509. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_U64_F64,
  510. BRIG_TYPE_U64, BRIG_TYPE_F64,
  511. "__hsail_cvt_zeroi_sat_u64_f64",
  512. BT_FN_UINT64_FLOAT,
  513. ATTR_CONST_NOTHROW_LEAF_LIST)
  514. DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN (BUILT_IN_HSAIL_CVT_ZEROI_SAT_S64_F64,
  515. BRIG_TYPE_S64, BRIG_TYPE_F64,
  516. "__hsail_cvt_zeroi_sat_s64_f64",
  517. BT_FN_LONG_FLOAT,
  518. ATTR_CONST_NOTHROW_LEAF_LIST)