rs6000-builtin.def 89 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991
  1. /* Builtin functions for rs6000/powerpc.
  2. Copyright (C) 2009-2015 Free Software Foundation, Inc.
  3. Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  4. This file is part of GCC.
  5. GCC is free software; you can redistribute it and/or modify it
  6. under the terms of the GNU General Public License as published
  7. by the Free Software Foundation; either version 3, or (at your
  8. option) any later version.
  9. GCC is distributed in the hope that it will be useful, but WITHOUT
  10. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  11. or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  12. License for more details.
  13. Under Section 7 of GPL version 3, you are granted additional
  14. permissions described in the GCC Runtime Library Exception, version
  15. 3.1, as published by the Free Software Foundation.
  16. You should have received a copy of the GNU General Public License and
  17. a copy of the GCC Runtime Library Exception along with this program;
  18. see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  19. <http://www.gnu.org/licenses/>. */
  20. /* Before including this file, some macros must be defined:
  21. RS6000_BUILTIN_1 -- 1 arg builtins
  22. RS6000_BUILTIN_2 -- 2 arg builtins
  23. RS6000_BUILTIN_3 -- 3 arg builtins
  24. RS6000_BUILTIN_A -- ABS builtins
  25. RS6000_BUILTIN_D -- DST builtins
  26. RS6000_BUILTIN_E -- SPE EVSEL builtins.
  27. RS6000_BUILTIN_H -- HTM builtins
  28. RS6000_BUILTIN_P -- Altivec, VSX, ISA 2.07 vector predicate builtins
  29. RS6000_BUILTIN_Q -- Paired floating point VSX predicate builtins
  30. RS6000_BUILTIN_S -- SPE predicate builtins
  31. RS6000_BUILTIN_X -- special builtins
  32. Each of the above macros takes 4 arguments:
  33. ENUM Enumeration name
  34. NAME String literal for the name
  35. MASK Mask of bits that indicate which options enables the builtin
  36. ATTR builtin attribute information.
  37. ICODE Insn code of the function that implents the builtin. */
  38. #ifndef RS6000_BUILTIN_1
  39. #error "RS6000_BUILTIN_1 is not defined."
  40. #endif
  41. #ifndef RS6000_BUILTIN_2
  42. #error "RS6000_BUILTIN_2 is not defined."
  43. #endif
  44. #ifndef RS6000_BUILTIN_3
  45. #error "RS6000_BUILTIN_3 is not defined."
  46. #endif
  47. #ifndef RS6000_BUILTIN_A
  48. #error "RS6000_BUILTIN_A is not defined."
  49. #endif
  50. #ifndef RS6000_BUILTIN_D
  51. #error "RS6000_BUILTIN_D is not defined."
  52. #endif
  53. #ifndef RS6000_BUILTIN_E
  54. #error "RS6000_BUILTIN_E is not defined."
  55. #endif
  56. #ifndef RS6000_BUILTIN_H
  57. #error "RS6000_BUILTIN_H is not defined."
  58. #endif
  59. #ifndef RS6000_BUILTIN_P
  60. #error "RS6000_BUILTIN_P is not defined."
  61. #endif
  62. #ifndef RS6000_BUILTIN_Q
  63. #error "RS6000_BUILTIN_Q is not defined."
  64. #endif
  65. #ifndef RS6000_BUILTIN_S
  66. #error "RS6000_BUILTIN_S is not defined."
  67. #endif
  68. #ifndef RS6000_BUILTIN_X
  69. #error "RS6000_BUILTIN_X is not defined."
  70. #endif
  71. #ifndef BU_AV_1
  72. /* Define convenience macros using token pasting to allow fitting everything in
  73. one line. */
  74. /* Altivec convenience macros. */
  75. #define BU_ALTIVEC_1(ENUM, NAME, ATTR, ICODE) \
  76. RS6000_BUILTIN_1 (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  77. "__builtin_altivec_" NAME, /* NAME */ \
  78. RS6000_BTM_ALTIVEC, /* MASK */ \
  79. (RS6000_BTC_ ## ATTR /* ATTR */ \
  80. | RS6000_BTC_UNARY), \
  81. CODE_FOR_ ## ICODE) /* ICODE */
  82. #define BU_ALTIVEC_2(ENUM, NAME, ATTR, ICODE) \
  83. RS6000_BUILTIN_2 (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  84. "__builtin_altivec_" NAME, /* NAME */ \
  85. RS6000_BTM_ALTIVEC, /* MASK */ \
  86. (RS6000_BTC_ ## ATTR /* ATTR */ \
  87. | RS6000_BTC_BINARY), \
  88. CODE_FOR_ ## ICODE) /* ICODE */
  89. #define BU_ALTIVEC_3(ENUM, NAME, ATTR, ICODE) \
  90. RS6000_BUILTIN_3 (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  91. "__builtin_altivec_" NAME, /* NAME */ \
  92. RS6000_BTM_ALTIVEC, /* MASK */ \
  93. (RS6000_BTC_ ## ATTR /* ATTR */ \
  94. | RS6000_BTC_TERNARY), \
  95. CODE_FOR_ ## ICODE) /* ICODE */
  96. #define BU_ALTIVEC_A(ENUM, NAME, ATTR, ICODE) \
  97. RS6000_BUILTIN_A (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  98. "__builtin_altivec_" NAME, /* NAME */ \
  99. RS6000_BTM_ALTIVEC, /* MASK */ \
  100. (RS6000_BTC_ ## ATTR /* ATTR */ \
  101. | RS6000_BTC_ABS), \
  102. CODE_FOR_ ## ICODE) /* ICODE */
  103. #define BU_ALTIVEC_D(ENUM, NAME, ATTR, ICODE) \
  104. RS6000_BUILTIN_D (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  105. "__builtin_altivec_" NAME, /* NAME */ \
  106. RS6000_BTM_ALTIVEC, /* MASK */ \
  107. (RS6000_BTC_ ## ATTR /* ATTR */ \
  108. | RS6000_BTC_DST), \
  109. CODE_FOR_ ## ICODE) /* ICODE */
  110. #define BU_ALTIVEC_P(ENUM, NAME, ATTR, ICODE) \
  111. RS6000_BUILTIN_P (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  112. "__builtin_altivec_" NAME, /* NAME */ \
  113. RS6000_BTM_ALTIVEC, /* MASK */ \
  114. (RS6000_BTC_ ## ATTR /* ATTR */ \
  115. | RS6000_BTC_PREDICATE), \
  116. CODE_FOR_ ## ICODE) /* ICODE */
  117. #define BU_ALTIVEC_X(ENUM, NAME, ATTR) \
  118. RS6000_BUILTIN_X (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  119. "__builtin_altivec_" NAME, /* NAME */ \
  120. RS6000_BTM_ALTIVEC, /* MASK */ \
  121. (RS6000_BTC_ ## ATTR /* ATTR */ \
  122. | RS6000_BTC_SPECIAL), \
  123. CODE_FOR_nothing) /* ICODE */
  124. #define BU_ALTIVEC_C(ENUM, NAME, ATTR) \
  125. RS6000_BUILTIN_X (ALTIVEC_BUILTIN_ ## ENUM, /* ENUM */ \
  126. "__builtin_altivec_" NAME, /* NAME */ \
  127. (RS6000_BTM_ALTIVEC /* MASK */ \
  128. | RS6000_BTM_CELL), \
  129. (RS6000_BTC_ ## ATTR /* ATTR */ \
  130. | RS6000_BTC_SPECIAL), \
  131. CODE_FOR_nothing) /* ICODE */
  132. /* Altivec overloaded builtin function macros. */
  133. #define BU_ALTIVEC_OVERLOAD_1(ENUM, NAME) \
  134. RS6000_BUILTIN_1 (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  135. "__builtin_vec_" NAME, /* NAME */ \
  136. RS6000_BTM_ALTIVEC, /* MASK */ \
  137. (RS6000_BTC_OVERLOADED /* ATTR */ \
  138. | RS6000_BTC_UNARY), \
  139. CODE_FOR_nothing) /* ICODE */
  140. #define BU_ALTIVEC_OVERLOAD_2(ENUM, NAME) \
  141. RS6000_BUILTIN_2 (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  142. "__builtin_vec_" NAME, /* NAME */ \
  143. RS6000_BTM_ALTIVEC, /* MASK */ \
  144. (RS6000_BTC_OVERLOADED /* ATTR */ \
  145. | RS6000_BTC_BINARY), \
  146. CODE_FOR_nothing) /* ICODE */
  147. #define BU_ALTIVEC_OVERLOAD_3(ENUM, NAME) \
  148. RS6000_BUILTIN_3 (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  149. "__builtin_vec_" NAME, /* NAME */ \
  150. RS6000_BTM_ALTIVEC, /* MASK */ \
  151. (RS6000_BTC_OVERLOADED /* ATTR */ \
  152. | RS6000_BTC_TERNARY), \
  153. CODE_FOR_nothing) /* ICODE */
  154. #define BU_ALTIVEC_OVERLOAD_A(ENUM, NAME) \
  155. RS6000_BUILTIN_A (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  156. "__builtin_vec_" NAME, /* NAME */ \
  157. RS6000_BTM_ALTIVEC, /* MASK */ \
  158. (RS6000_BTC_OVERLOADED /* ATTR */ \
  159. | RS6000_BTC_ABS), \
  160. CODE_FOR_nothing) /* ICODE */
  161. #define BU_ALTIVEC_OVERLOAD_D(ENUM, NAME) \
  162. RS6000_BUILTIN_D (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  163. "__builtin_vec_" NAME, /* NAME */ \
  164. RS6000_BTM_ALTIVEC, /* MASK */ \
  165. (RS6000_BTC_OVERLOADED /* ATTR */ \
  166. | RS6000_BTC_DST), \
  167. CODE_FOR_nothing) /* ICODE */
  168. #define BU_ALTIVEC_OVERLOAD_P(ENUM, NAME) \
  169. RS6000_BUILTIN_P (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  170. "__builtin_vec_" NAME, /* NAME */ \
  171. RS6000_BTM_ALTIVEC, /* MASK */ \
  172. (RS6000_BTC_OVERLOADED /* ATTR */ \
  173. | RS6000_BTC_PREDICATE), \
  174. CODE_FOR_nothing) /* ICODE */
  175. #define BU_ALTIVEC_OVERLOAD_X(ENUM, NAME) \
  176. RS6000_BUILTIN_X (ALTIVEC_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  177. "__builtin_vec_" NAME, /* NAME */ \
  178. RS6000_BTM_ALTIVEC, /* MASK */ \
  179. (RS6000_BTC_OVERLOADED /* ATTR */ \
  180. | RS6000_BTC_SPECIAL), \
  181. CODE_FOR_nothing) /* ICODE */
  182. /* VSX convenience macros. */
  183. #define BU_VSX_1(ENUM, NAME, ATTR, ICODE) \
  184. RS6000_BUILTIN_1 (VSX_BUILTIN_ ## ENUM, /* ENUM */ \
  185. "__builtin_vsx_" NAME, /* NAME */ \
  186. RS6000_BTM_VSX, /* MASK */ \
  187. (RS6000_BTC_ ## ATTR /* ATTR */ \
  188. | RS6000_BTC_UNARY), \
  189. CODE_FOR_ ## ICODE) /* ICODE */
  190. #define BU_VSX_2(ENUM, NAME, ATTR, ICODE) \
  191. RS6000_BUILTIN_2 (VSX_BUILTIN_ ## ENUM, /* ENUM */ \
  192. "__builtin_vsx_" NAME, /* NAME */ \
  193. RS6000_BTM_VSX, /* MASK */ \
  194. (RS6000_BTC_ ## ATTR /* ATTR */ \
  195. | RS6000_BTC_BINARY), \
  196. CODE_FOR_ ## ICODE) /* ICODE */
  197. #define BU_VSX_3(ENUM, NAME, ATTR, ICODE) \
  198. RS6000_BUILTIN_3 (VSX_BUILTIN_ ## ENUM, /* ENUM */ \
  199. "__builtin_vsx_" NAME, /* NAME */ \
  200. RS6000_BTM_VSX, /* MASK */ \
  201. (RS6000_BTC_ ## ATTR /* ATTR */ \
  202. | RS6000_BTC_TERNARY), \
  203. CODE_FOR_ ## ICODE) /* ICODE */
  204. #define BU_VSX_A(ENUM, NAME, ATTR, ICODE) \
  205. RS6000_BUILTIN_A (VSX_BUILTIN_ ## ENUM, /* ENUM */ \
  206. "__builtin_vsx_" NAME, /* NAME */ \
  207. RS6000_BTM_VSX, /* MASK */ \
  208. (RS6000_BTC_ ## ATTR /* ATTR */ \
  209. | RS6000_BTC_ABS), \
  210. CODE_FOR_ ## ICODE) /* ICODE */
  211. #define BU_VSX_P(ENUM, NAME, ATTR, ICODE) \
  212. RS6000_BUILTIN_P (VSX_BUILTIN_ ## ENUM, /* ENUM */ \
  213. "__builtin_vsx_" NAME, /* NAME */ \
  214. RS6000_BTM_VSX, /* MASK */ \
  215. (RS6000_BTC_ ## ATTR /* ATTR */ \
  216. | RS6000_BTC_PREDICATE), \
  217. CODE_FOR_ ## ICODE) /* ICODE */
  218. #define BU_VSX_X(ENUM, NAME, ATTR) \
  219. RS6000_BUILTIN_X (VSX_BUILTIN_ ## ENUM, /* ENUM */ \
  220. "__builtin_vsx_" NAME, /* NAME */ \
  221. RS6000_BTM_VSX, /* MASK */ \
  222. (RS6000_BTC_ ## ATTR /* ATTR */ \
  223. | RS6000_BTC_SPECIAL), \
  224. CODE_FOR_nothing) /* ICODE */
  225. /* VSX overloaded builtin function macros. */
  226. #define BU_VSX_OVERLOAD_1(ENUM, NAME) \
  227. RS6000_BUILTIN_1 (VSX_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  228. "__builtin_vec_" NAME, /* NAME */ \
  229. RS6000_BTM_VSX, /* MASK */ \
  230. (RS6000_BTC_OVERLOADED /* ATTR */ \
  231. | RS6000_BTC_UNARY), \
  232. CODE_FOR_nothing) /* ICODE */
  233. #define BU_VSX_OVERLOAD_2(ENUM, NAME) \
  234. RS6000_BUILTIN_2 (VSX_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  235. "__builtin_vec_" NAME, /* NAME */ \
  236. RS6000_BTM_VSX, /* MASK */ \
  237. (RS6000_BTC_OVERLOADED /* ATTR */ \
  238. | RS6000_BTC_BINARY), \
  239. CODE_FOR_nothing) /* ICODE */
  240. #define BU_VSX_OVERLOAD_3(ENUM, NAME) \
  241. RS6000_BUILTIN_3 (VSX_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  242. "__builtin_vec_" NAME, /* NAME */ \
  243. RS6000_BTM_VSX, /* MASK */ \
  244. (RS6000_BTC_OVERLOADED /* ATTR */ \
  245. | RS6000_BTC_TERNARY), \
  246. CODE_FOR_nothing) /* ICODE */
  247. /* xxpermdi and xxsldwi are overloaded functions, but had __builtin_vsx names
  248. instead of __builtin_vec. */
  249. #define BU_VSX_OVERLOAD_3V(ENUM, NAME) \
  250. RS6000_BUILTIN_3 (VSX_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  251. "__builtin_vsx_" NAME, /* NAME */ \
  252. RS6000_BTM_VSX, /* MASK */ \
  253. (RS6000_BTC_OVERLOADED /* ATTR */ \
  254. | RS6000_BTC_TERNARY), \
  255. CODE_FOR_nothing) /* ICODE */
  256. #define BU_VSX_OVERLOAD_X(ENUM, NAME) \
  257. RS6000_BUILTIN_X (VSX_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  258. "__builtin_vec_" NAME, /* NAME */ \
  259. RS6000_BTM_VSX, /* MASK */ \
  260. (RS6000_BTC_OVERLOADED /* ATTR */ \
  261. | RS6000_BTC_SPECIAL), \
  262. CODE_FOR_nothing) /* ICODE */
  263. /* ISA 2.07 (power8) vector convenience macros. */
  264. /* For the instructions that are encoded as altivec instructions use
  265. __builtin_altivec_ as the builtin name. */
  266. #define BU_P8V_AV_1(ENUM, NAME, ATTR, ICODE) \
  267. RS6000_BUILTIN_1 (P8V_BUILTIN_ ## ENUM, /* ENUM */ \
  268. "__builtin_altivec_" NAME, /* NAME */ \
  269. RS6000_BTM_P8_VECTOR, /* MASK */ \
  270. (RS6000_BTC_ ## ATTR /* ATTR */ \
  271. | RS6000_BTC_UNARY), \
  272. CODE_FOR_ ## ICODE) /* ICODE */
  273. #define BU_P8V_AV_2(ENUM, NAME, ATTR, ICODE) \
  274. RS6000_BUILTIN_2 (P8V_BUILTIN_ ## ENUM, /* ENUM */ \
  275. "__builtin_altivec_" NAME, /* NAME */ \
  276. RS6000_BTM_P8_VECTOR, /* MASK */ \
  277. (RS6000_BTC_ ## ATTR /* ATTR */ \
  278. | RS6000_BTC_BINARY), \
  279. CODE_FOR_ ## ICODE) /* ICODE */
  280. #define BU_P8V_AV_3(ENUM, NAME, ATTR, ICODE) \
  281. RS6000_BUILTIN_3 (P8V_BUILTIN_ ## ENUM, /* ENUM */ \
  282. "__builtin_altivec_" NAME, /* NAME */ \
  283. RS6000_BTM_P8_VECTOR, /* MASK */ \
  284. (RS6000_BTC_ ## ATTR /* ATTR */ \
  285. | RS6000_BTC_TERNARY), \
  286. CODE_FOR_ ## ICODE) /* ICODE */
  287. #define BU_P8V_AV_P(ENUM, NAME, ATTR, ICODE) \
  288. RS6000_BUILTIN_P (P8V_BUILTIN_ ## ENUM, /* ENUM */ \
  289. "__builtin_altivec_" NAME, /* NAME */ \
  290. RS6000_BTM_P8_VECTOR, /* MASK */ \
  291. (RS6000_BTC_ ## ATTR /* ATTR */ \
  292. | RS6000_BTC_PREDICATE), \
  293. CODE_FOR_ ## ICODE) /* ICODE */
  294. /* For the instructions encoded as VSX instructions use __builtin_vsx as the
  295. builtin name. */
  296. #define BU_P8V_VSX_1(ENUM, NAME, ATTR, ICODE) \
  297. RS6000_BUILTIN_1 (P8V_BUILTIN_ ## ENUM, /* ENUM */ \
  298. "__builtin_vsx_" NAME, /* NAME */ \
  299. RS6000_BTM_P8_VECTOR, /* MASK */ \
  300. (RS6000_BTC_ ## ATTR /* ATTR */ \
  301. | RS6000_BTC_UNARY), \
  302. CODE_FOR_ ## ICODE) /* ICODE */
  303. #define BU_P8V_OVERLOAD_1(ENUM, NAME) \
  304. RS6000_BUILTIN_1 (P8V_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  305. "__builtin_vec_" NAME, /* NAME */ \
  306. RS6000_BTM_P8_VECTOR, /* MASK */ \
  307. (RS6000_BTC_OVERLOADED /* ATTR */ \
  308. | RS6000_BTC_UNARY), \
  309. CODE_FOR_nothing) /* ICODE */
  310. #define BU_P8V_OVERLOAD_2(ENUM, NAME) \
  311. RS6000_BUILTIN_2 (P8V_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  312. "__builtin_vec_" NAME, /* NAME */ \
  313. RS6000_BTM_P8_VECTOR, /* MASK */ \
  314. (RS6000_BTC_OVERLOADED /* ATTR */ \
  315. | RS6000_BTC_BINARY), \
  316. CODE_FOR_nothing) /* ICODE */
  317. #define BU_P8V_OVERLOAD_3(ENUM, NAME) \
  318. RS6000_BUILTIN_3 (P8V_BUILTIN_VEC_ ## ENUM, /* ENUM */ \
  319. "__builtin_vec_" NAME, /* NAME */ \
  320. RS6000_BTM_P8_VECTOR, /* MASK */ \
  321. (RS6000_BTC_OVERLOADED /* ATTR */ \
  322. | RS6000_BTC_TERNARY), \
  323. CODE_FOR_nothing) /* ICODE */
  324. /* Crypto convenience macros. */
  325. #define BU_CRYPTO_1(ENUM, NAME, ATTR, ICODE) \
  326. RS6000_BUILTIN_1 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  327. "__builtin_crypto_" NAME, /* NAME */ \
  328. RS6000_BTM_CRYPTO, /* MASK */ \
  329. (RS6000_BTC_ ## ATTR /* ATTR */ \
  330. | RS6000_BTC_UNARY), \
  331. CODE_FOR_ ## ICODE) /* ICODE */
  332. #define BU_CRYPTO_2(ENUM, NAME, ATTR, ICODE) \
  333. RS6000_BUILTIN_2 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  334. "__builtin_crypto_" NAME, /* NAME */ \
  335. RS6000_BTM_CRYPTO, /* MASK */ \
  336. (RS6000_BTC_ ## ATTR /* ATTR */ \
  337. | RS6000_BTC_BINARY), \
  338. CODE_FOR_ ## ICODE) /* ICODE */
  339. #define BU_CRYPTO_2A(ENUM, NAME, ATTR, ICODE) \
  340. RS6000_BUILTIN_2 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  341. "__builtin_crypto_" NAME, /* NAME */ \
  342. RS6000_BTM_P8_VECTOR, /* MASK */ \
  343. (RS6000_BTC_ ## ATTR /* ATTR */ \
  344. | RS6000_BTC_BINARY), \
  345. CODE_FOR_ ## ICODE) /* ICODE */
  346. #define BU_CRYPTO_3(ENUM, NAME, ATTR, ICODE) \
  347. RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  348. "__builtin_crypto_" NAME, /* NAME */ \
  349. RS6000_BTM_CRYPTO, /* MASK */ \
  350. (RS6000_BTC_ ## ATTR /* ATTR */ \
  351. | RS6000_BTC_TERNARY), \
  352. CODE_FOR_ ## ICODE) /* ICODE */
  353. #define BU_CRYPTO_3A(ENUM, NAME, ATTR, ICODE) \
  354. RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  355. "__builtin_crypto_" NAME, /* NAME */ \
  356. RS6000_BTM_P8_VECTOR, /* MASK */ \
  357. (RS6000_BTC_ ## ATTR /* ATTR */ \
  358. | RS6000_BTC_TERNARY), \
  359. CODE_FOR_ ## ICODE) /* ICODE */
  360. #define BU_CRYPTO_OVERLOAD_1(ENUM, NAME) \
  361. RS6000_BUILTIN_1 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  362. "__builtin_crypto_" NAME, /* NAME */ \
  363. RS6000_BTM_CRYPTO, /* MASK */ \
  364. (RS6000_BTC_OVERLOADED /* ATTR */ \
  365. | RS6000_BTC_UNARY), \
  366. CODE_FOR_nothing) /* ICODE */
  367. #define BU_CRYPTO_OVERLOAD_2A(ENUM, NAME) \
  368. RS6000_BUILTIN_2 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  369. "__builtin_crypto_" NAME, /* NAME */ \
  370. RS6000_BTM_P8_VECTOR, /* MASK */ \
  371. (RS6000_BTC_OVERLOADED /* ATTR */ \
  372. | RS6000_BTC_BINARY), \
  373. CODE_FOR_nothing) /* ICODE */
  374. #define BU_CRYPTO_OVERLOAD_3(ENUM, NAME) \
  375. RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  376. "__builtin_crypto_" NAME, /* NAME */ \
  377. RS6000_BTM_CRYPTO, /* MASK */ \
  378. (RS6000_BTC_OVERLOADED /* ATTR */ \
  379. | RS6000_BTC_TERNARY), \
  380. CODE_FOR_nothing) /* ICODE */
  381. #define BU_CRYPTO_OVERLOAD_3A(ENUM, NAME) \
  382. RS6000_BUILTIN_3 (CRYPTO_BUILTIN_ ## ENUM, /* ENUM */ \
  383. "__builtin_crypto_" NAME, /* NAME */ \
  384. RS6000_BTM_P8_VECTOR, /* MASK */ \
  385. (RS6000_BTC_OVERLOADED /* ATTR */ \
  386. | RS6000_BTC_TERNARY), \
  387. CODE_FOR_nothing) /* ICODE */
  388. /* HTM convenience macros. */
  389. #define BU_HTM_0(ENUM, NAME, ATTR, ICODE) \
  390. RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \
  391. "__builtin_" NAME, /* NAME */ \
  392. RS6000_BTM_HTM, /* MASK */ \
  393. RS6000_BTC_ ## ATTR, /* ATTR */ \
  394. CODE_FOR_ ## ICODE) /* ICODE */
  395. #define BU_HTM_1(ENUM, NAME, ATTR, ICODE) \
  396. RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \
  397. "__builtin_" NAME, /* NAME */ \
  398. RS6000_BTM_HTM, /* MASK */ \
  399. (RS6000_BTC_ ## ATTR /* ATTR */ \
  400. | RS6000_BTC_UNARY), \
  401. CODE_FOR_ ## ICODE) /* ICODE */
  402. #define BU_HTM_2(ENUM, NAME, ATTR, ICODE) \
  403. RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \
  404. "__builtin_" NAME, /* NAME */ \
  405. RS6000_BTM_HTM, /* MASK */ \
  406. (RS6000_BTC_ ## ATTR /* ATTR */ \
  407. | RS6000_BTC_BINARY), \
  408. CODE_FOR_ ## ICODE) /* ICODE */
  409. #define BU_HTM_3(ENUM, NAME, ATTR, ICODE) \
  410. RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \
  411. "__builtin_" NAME, /* NAME */ \
  412. RS6000_BTM_HTM, /* MASK */ \
  413. (RS6000_BTC_ ## ATTR /* ATTR */ \
  414. | RS6000_BTC_TERNARY), \
  415. CODE_FOR_ ## ICODE) /* ICODE */
  416. #define BU_HTM_V1(ENUM, NAME, ATTR, ICODE) \
  417. RS6000_BUILTIN_H (HTM_BUILTIN_ ## ENUM, /* ENUM */ \
  418. "__builtin_" NAME, /* NAME */ \
  419. RS6000_BTM_HTM, /* MASK */ \
  420. (RS6000_BTC_ ## ATTR /* ATTR */ \
  421. | RS6000_BTC_UNARY \
  422. | RS6000_BTC_VOID), \
  423. CODE_FOR_ ## ICODE) /* ICODE */
  424. /* SPE convenience macros. */
  425. #define BU_SPE_1(ENUM, NAME, ATTR, ICODE) \
  426. RS6000_BUILTIN_1 (SPE_BUILTIN_ ## ENUM, /* ENUM */ \
  427. "__builtin_spe_" NAME, /* NAME */ \
  428. RS6000_BTM_SPE, /* MASK */ \
  429. (RS6000_BTC_ ## ATTR /* ATTR */ \
  430. | RS6000_BTC_UNARY), \
  431. CODE_FOR_ ## ICODE) /* ICODE */
  432. #define BU_SPE_2(ENUM, NAME, ATTR, ICODE) \
  433. RS6000_BUILTIN_2 (SPE_BUILTIN_ ## ENUM, /* ENUM */ \
  434. "__builtin_spe_" NAME, /* NAME */ \
  435. RS6000_BTM_SPE, /* MASK */ \
  436. (RS6000_BTC_ ## ATTR /* ATTR */ \
  437. | RS6000_BTC_BINARY), \
  438. CODE_FOR_ ## ICODE) /* ICODE */
  439. #define BU_SPE_3(ENUM, NAME, ATTR, ICODE) \
  440. RS6000_BUILTIN_3 (SPE_BUILTIN_ ## ENUM, /* ENUM */ \
  441. "__builtin_spe_" NAME, /* NAME */ \
  442. RS6000_BTM_SPE, /* MASK */ \
  443. (RS6000_BTC_ ## ATTR /* ATTR */ \
  444. | RS6000_BTC_TERNARY), \
  445. CODE_FOR_ ## ICODE) /* ICODE */
  446. #define BU_SPE_E(ENUM, NAME, ATTR, ICODE) \
  447. RS6000_BUILTIN_E (SPE_BUILTIN_ ## ENUM, /* ENUM */ \
  448. "__builtin_spe_" NAME, /* NAME */ \
  449. RS6000_BTM_SPE, /* MASK */ \
  450. (RS6000_BTC_ ## ATTR /* ATTR */ \
  451. | RS6000_BTC_EVSEL), \
  452. CODE_FOR_ ## ICODE) /* ICODE */
  453. #define BU_SPE_P(ENUM, NAME, ATTR, ICODE) \
  454. RS6000_BUILTIN_S (SPE_BUILTIN_ ## ENUM, /* ENUM */ \
  455. "__builtin_spe_" NAME, /* NAME */ \
  456. RS6000_BTM_SPE, /* MASK */ \
  457. (RS6000_BTC_ ## ATTR /* ATTR */ \
  458. | RS6000_BTC_PREDICATE), \
  459. CODE_FOR_ ## ICODE) /* ICODE */
  460. #define BU_SPE_X(ENUM, NAME, ATTR) \
  461. RS6000_BUILTIN_X (SPE_BUILTIN_ ## ENUM, /* ENUM */ \
  462. "__builtin_spe_" NAME, /* NAME */ \
  463. RS6000_BTM_SPE, /* MASK */ \
  464. (RS6000_BTC_ ## ATTR /* ATTR */ \
  465. | RS6000_BTC_SPECIAL), \
  466. CODE_FOR_nothing) /* ICODE */
  467. /* Paired floating point convenience macros. */
  468. #define BU_PAIRED_1(ENUM, NAME, ATTR, ICODE) \
  469. RS6000_BUILTIN_1 (PAIRED_BUILTIN_ ## ENUM, /* ENUM */ \
  470. "__builtin_paired_" NAME, /* NAME */ \
  471. RS6000_BTM_PAIRED, /* MASK */ \
  472. (RS6000_BTC_ ## ATTR /* ATTR */ \
  473. | RS6000_BTC_UNARY), \
  474. CODE_FOR_ ## ICODE) /* ICODE */
  475. #define BU_PAIRED_2(ENUM, NAME, ATTR, ICODE) \
  476. RS6000_BUILTIN_2 (PAIRED_BUILTIN_ ## ENUM, /* ENUM */ \
  477. "__builtin_paired_" NAME, /* NAME */ \
  478. RS6000_BTM_PAIRED, /* MASK */ \
  479. (RS6000_BTC_ ## ATTR /* ATTR */ \
  480. | RS6000_BTC_BINARY), \
  481. CODE_FOR_ ## ICODE) /* ICODE */
  482. #define BU_PAIRED_3(ENUM, NAME, ATTR, ICODE) \
  483. RS6000_BUILTIN_3 (PAIRED_BUILTIN_ ## ENUM, /* ENUM */ \
  484. "__builtin_paired_" NAME, /* NAME */ \
  485. RS6000_BTM_PAIRED, /* MASK */ \
  486. (RS6000_BTC_ ## ATTR /* ATTR */ \
  487. | RS6000_BTC_TERNARY), \
  488. CODE_FOR_ ## ICODE) /* ICODE */
  489. #define BU_PAIRED_P(ENUM, NAME, ATTR, ICODE) \
  490. RS6000_BUILTIN_Q (PAIRED_BUILTIN_ ## ENUM, /* ENUM */ \
  491. "__builtin_paired_" NAME, /* NAME */ \
  492. RS6000_BTM_PAIRED, /* MASK */ \
  493. (RS6000_BTC_ ## ATTR /* ATTR */ \
  494. | RS6000_BTC_PREDICATE), \
  495. CODE_FOR_ ## ICODE) /* ICODE */
  496. #define BU_PAIRED_X(ENUM, NAME, ATTR) \
  497. RS6000_BUILTIN_X (PAIRED_BUILTIN_ ## ENUM, /* ENUM */ \
  498. "__builtin_paired_" NAME, /* NAME */ \
  499. RS6000_BTM_PAIRED, /* MASK */ \
  500. (RS6000_BTC_ ## ATTR /* ATTR */ \
  501. | RS6000_BTC_SPECIAL), \
  502. CODE_FOR_nothing) /* ICODE */
  503. #define BU_SPECIAL_X(ENUM, NAME, MASK, ATTR) \
  504. RS6000_BUILTIN_X (ENUM, /* ENUM */ \
  505. NAME, /* NAME */ \
  506. MASK, /* MASK */ \
  507. (ATTR | RS6000_BTC_SPECIAL), /* ATTR */ \
  508. CODE_FOR_nothing) /* ICODE */
  509. /* Decimal floating point builtins for instructions. */
  510. #define BU_DFP_MISC_1(ENUM, NAME, ATTR, ICODE) \
  511. RS6000_BUILTIN_1 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
  512. "__builtin_" NAME, /* NAME */ \
  513. RS6000_BTM_DFP, /* MASK */ \
  514. (RS6000_BTC_ ## ATTR /* ATTR */ \
  515. | RS6000_BTC_UNARY), \
  516. CODE_FOR_ ## ICODE) /* ICODE */
  517. #define BU_DFP_MISC_2(ENUM, NAME, ATTR, ICODE) \
  518. RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
  519. "__builtin_" NAME, /* NAME */ \
  520. RS6000_BTM_DFP, /* MASK */ \
  521. (RS6000_BTC_ ## ATTR /* ATTR */ \
  522. | RS6000_BTC_BINARY), \
  523. CODE_FOR_ ## ICODE) /* ICODE */
  524. /* Miscellaneous builtins for instructions added in ISA 2.06. These
  525. instructions don't require either the DFP or VSX options, just the basic ISA
  526. 2.06 (popcntd) enablement since they operate on general purpose
  527. registers. */
  528. #define BU_P7_MISC_1(ENUM, NAME, ATTR, ICODE) \
  529. RS6000_BUILTIN_1 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
  530. "__builtin_" NAME, /* NAME */ \
  531. RS6000_BTM_POPCNTD, /* MASK */ \
  532. (RS6000_BTC_ ## ATTR /* ATTR */ \
  533. | RS6000_BTC_UNARY), \
  534. CODE_FOR_ ## ICODE) /* ICODE */
  535. #define BU_P7_MISC_2(ENUM, NAME, ATTR, ICODE) \
  536. RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
  537. "__builtin_" NAME, /* NAME */ \
  538. RS6000_BTM_POPCNTD, /* MASK */ \
  539. (RS6000_BTC_ ## ATTR /* ATTR */ \
  540. | RS6000_BTC_BINARY), \
  541. CODE_FOR_ ## ICODE) /* ICODE */
  542. /* Miscellaneous builtins for instructions added in ISA 2.07. These
  543. instructions do require the ISA 2.07 vector support, but they aren't vector
  544. instructions. */
  545. #define BU_P8V_MISC_3(ENUM, NAME, ATTR, ICODE) \
  546. RS6000_BUILTIN_3 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
  547. "__builtin_" NAME, /* NAME */ \
  548. RS6000_BTM_P8_VECTOR, /* MASK */ \
  549. (RS6000_BTC_ ## ATTR /* ATTR */ \
  550. | RS6000_BTC_TERNARY), \
  551. CODE_FOR_ ## ICODE) /* ICODE */
  552. /* 128-bit long double floating point builtins. */
  553. #define BU_LDBL128_2(ENUM, NAME, ATTR, ICODE) \
  554. RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
  555. "__builtin_" NAME, /* NAME */ \
  556. (RS6000_BTM_HARD_FLOAT /* MASK */ \
  557. | RS6000_BTM_LDBL128), \
  558. (RS6000_BTC_ ## ATTR /* ATTR */ \
  559. | RS6000_BTC_BINARY), \
  560. CODE_FOR_ ## ICODE) /* ICODE */
  561. #endif
  562. /* Insure 0 is not a legitimate index. */
  563. BU_SPECIAL_X (RS6000_BUILTIN_NONE, NULL, 0, RS6000_BTC_MISC)
  564. /* 3 argument Altivec builtins. */
  565. BU_ALTIVEC_3 (VMADDFP, "vmaddfp", FP, fmav4sf4)
  566. BU_ALTIVEC_3 (VMHADDSHS, "vmhaddshs", SAT, altivec_vmhaddshs)
  567. BU_ALTIVEC_3 (VMHRADDSHS, "vmhraddshs", SAT, altivec_vmhraddshs)
  568. BU_ALTIVEC_3 (VMLADDUHM, "vmladduhm", CONST, altivec_vmladduhm)
  569. BU_ALTIVEC_3 (VMSUMUBM, "vmsumubm", CONST, altivec_vmsumubm)
  570. BU_ALTIVEC_3 (VMSUMMBM, "vmsummbm", CONST, altivec_vmsummbm)
  571. BU_ALTIVEC_3 (VMSUMUHM, "vmsumuhm", CONST, altivec_vmsumuhm)
  572. BU_ALTIVEC_3 (VMSUMSHM, "vmsumshm", CONST, altivec_vmsumshm)
  573. BU_ALTIVEC_3 (VMSUMUHS, "vmsumuhs", SAT, altivec_vmsumuhs)
  574. BU_ALTIVEC_3 (VMSUMSHS, "vmsumshs", SAT, altivec_vmsumshs)
  575. BU_ALTIVEC_3 (VNMSUBFP, "vnmsubfp", FP, nfmsv4sf4)
  576. BU_ALTIVEC_3 (VPERM_1TI, "vperm_1ti", CONST, altivec_vperm_v1ti)
  577. BU_ALTIVEC_3 (VPERM_2DF, "vperm_2df", CONST, altivec_vperm_v2df)
  578. BU_ALTIVEC_3 (VPERM_2DI, "vperm_2di", CONST, altivec_vperm_v2di)
  579. BU_ALTIVEC_3 (VPERM_4SF, "vperm_4sf", CONST, altivec_vperm_v4sf)
  580. BU_ALTIVEC_3 (VPERM_4SI, "vperm_4si", CONST, altivec_vperm_v4si)
  581. BU_ALTIVEC_3 (VPERM_8HI, "vperm_8hi", CONST, altivec_vperm_v8hi)
  582. BU_ALTIVEC_3 (VPERM_16QI, "vperm_16qi", CONST, altivec_vperm_v16qi_uns)
  583. BU_ALTIVEC_3 (VPERM_1TI_UNS, "vperm_1ti_uns", CONST, altivec_vperm_v1ti_uns)
  584. BU_ALTIVEC_3 (VPERM_2DI_UNS, "vperm_2di_uns", CONST, altivec_vperm_v2di_uns)
  585. BU_ALTIVEC_3 (VPERM_4SI_UNS, "vperm_4si_uns", CONST, altivec_vperm_v4si_uns)
  586. BU_ALTIVEC_3 (VPERM_8HI_UNS, "vperm_8hi_uns", CONST, altivec_vperm_v8hi_uns)
  587. BU_ALTIVEC_3 (VPERM_16QI_UNS, "vperm_16qi_uns", CONST, altivec_vperm_v16qi_uns)
  588. BU_ALTIVEC_3 (VSEL_4SF, "vsel_4sf", CONST, vector_select_v4sf)
  589. BU_ALTIVEC_3 (VSEL_4SI, "vsel_4si", CONST, vector_select_v4si)
  590. BU_ALTIVEC_3 (VSEL_8HI, "vsel_8hi", CONST, vector_select_v8hi)
  591. BU_ALTIVEC_3 (VSEL_16QI, "vsel_16qi", CONST, vector_select_v16qi)
  592. BU_ALTIVEC_3 (VSEL_2DF, "vsel_2df", CONST, vector_select_v2df)
  593. BU_ALTIVEC_3 (VSEL_2DI, "vsel_2di", CONST, vector_select_v2di)
  594. BU_ALTIVEC_3 (VSEL_1TI, "vsel_1ti", CONST, vector_select_v1ti)
  595. BU_ALTIVEC_3 (VSEL_4SI_UNS, "vsel_4si_uns", CONST, vector_select_v4si_uns)
  596. BU_ALTIVEC_3 (VSEL_8HI_UNS, "vsel_8hi_uns", CONST, vector_select_v8hi_uns)
  597. BU_ALTIVEC_3 (VSEL_16QI_UNS, "vsel_16qi_uns", CONST, vector_select_v16qi_uns)
  598. BU_ALTIVEC_3 (VSEL_2DI_UNS, "vsel_2di_uns", CONST, vector_select_v2di_uns)
  599. BU_ALTIVEC_3 (VSEL_1TI_UNS, "vsel_1ti_uns", CONST, vector_select_v1ti_uns)
  600. BU_ALTIVEC_3 (VSLDOI_16QI, "vsldoi_16qi", CONST, altivec_vsldoi_v16qi)
  601. BU_ALTIVEC_3 (VSLDOI_8HI, "vsldoi_8hi", CONST, altivec_vsldoi_v8hi)
  602. BU_ALTIVEC_3 (VSLDOI_4SI, "vsldoi_4si", CONST, altivec_vsldoi_v4si)
  603. BU_ALTIVEC_3 (VSLDOI_4SF, "vsldoi_4sf", CONST, altivec_vsldoi_v4sf)
  604. /* Altivec DST builtins. */
  605. BU_ALTIVEC_D (DST, "dst", MISC, altivec_dst)
  606. BU_ALTIVEC_D (DSTT, "dstt", MISC, altivec_dstt)
  607. BU_ALTIVEC_D (DSTST, "dstst", MISC, altivec_dstst)
  608. BU_ALTIVEC_D (DSTSTT, "dststt", MISC, altivec_dststt)
  609. /* Altivec 2 argument builtin functions. */
  610. BU_ALTIVEC_2 (VADDUBM, "vaddubm", CONST, addv16qi3)
  611. BU_ALTIVEC_2 (VADDUHM, "vadduhm", CONST, addv8hi3)
  612. BU_ALTIVEC_2 (VADDUWM, "vadduwm", CONST, addv4si3)
  613. BU_ALTIVEC_2 (VADDFP, "vaddfp", CONST, addv4sf3)
  614. BU_ALTIVEC_2 (VADDCUW, "vaddcuw", CONST, altivec_vaddcuw)
  615. BU_ALTIVEC_2 (VADDUBS, "vaddubs", CONST, altivec_vaddubs)
  616. BU_ALTIVEC_2 (VADDSBS, "vaddsbs", CONST, altivec_vaddsbs)
  617. BU_ALTIVEC_2 (VADDUHS, "vadduhs", CONST, altivec_vadduhs)
  618. BU_ALTIVEC_2 (VADDSHS, "vaddshs", CONST, altivec_vaddshs)
  619. BU_ALTIVEC_2 (VADDUWS, "vadduws", CONST, altivec_vadduws)
  620. BU_ALTIVEC_2 (VADDSWS, "vaddsws", CONST, altivec_vaddsws)
  621. BU_ALTIVEC_2 (VAND, "vand", CONST, andv4si3)
  622. BU_ALTIVEC_2 (VANDC, "vandc", CONST, andcv4si3)
  623. BU_ALTIVEC_2 (VAVGUB, "vavgub", CONST, altivec_vavgub)
  624. BU_ALTIVEC_2 (VAVGSB, "vavgsb", CONST, altivec_vavgsb)
  625. BU_ALTIVEC_2 (VAVGUH, "vavguh", CONST, altivec_vavguh)
  626. BU_ALTIVEC_2 (VAVGSH, "vavgsh", CONST, altivec_vavgsh)
  627. BU_ALTIVEC_2 (VAVGUW, "vavguw", CONST, altivec_vavguw)
  628. BU_ALTIVEC_2 (VAVGSW, "vavgsw", CONST, altivec_vavgsw)
  629. BU_ALTIVEC_2 (VCFUX, "vcfux", CONST, altivec_vcfux)
  630. BU_ALTIVEC_2 (VCFSX, "vcfsx", CONST, altivec_vcfsx)
  631. BU_ALTIVEC_2 (VCMPBFP, "vcmpbfp", CONST, altivec_vcmpbfp)
  632. BU_ALTIVEC_2 (VCMPEQUB, "vcmpequb", CONST, vector_eqv16qi)
  633. BU_ALTIVEC_2 (VCMPEQUH, "vcmpequh", CONST, vector_eqv8hi)
  634. BU_ALTIVEC_2 (VCMPEQUW, "vcmpequw", CONST, vector_eqv4si)
  635. BU_ALTIVEC_2 (VCMPEQFP, "vcmpeqfp", CONST, vector_eqv4sf)
  636. BU_ALTIVEC_2 (VCMPGEFP, "vcmpgefp", CONST, vector_gev4sf)
  637. BU_ALTIVEC_2 (VCMPGTUB, "vcmpgtub", CONST, vector_gtuv16qi)
  638. BU_ALTIVEC_2 (VCMPGTSB, "vcmpgtsb", CONST, vector_gtv16qi)
  639. BU_ALTIVEC_2 (VCMPGTUH, "vcmpgtuh", CONST, vector_gtuv8hi)
  640. BU_ALTIVEC_2 (VCMPGTSH, "vcmpgtsh", CONST, vector_gtv8hi)
  641. BU_ALTIVEC_2 (VCMPGTUW, "vcmpgtuw", CONST, vector_gtuv4si)
  642. BU_ALTIVEC_2 (VCMPGTSW, "vcmpgtsw", CONST, vector_gtv4si)
  643. BU_ALTIVEC_2 (VCMPGTFP, "vcmpgtfp", CONST, vector_gtv4sf)
  644. BU_ALTIVEC_2 (VCTSXS, "vctsxs", CONST, altivec_vctsxs)
  645. BU_ALTIVEC_2 (VCTUXS, "vctuxs", CONST, altivec_vctuxs)
  646. BU_ALTIVEC_2 (VMAXUB, "vmaxub", CONST, umaxv16qi3)
  647. BU_ALTIVEC_2 (VMAXSB, "vmaxsb", CONST, smaxv16qi3)
  648. BU_ALTIVEC_2 (VMAXUH, "vmaxuh", CONST, umaxv8hi3)
  649. BU_ALTIVEC_2 (VMAXSH, "vmaxsh", CONST, smaxv8hi3)
  650. BU_ALTIVEC_2 (VMAXUW, "vmaxuw", CONST, umaxv4si3)
  651. BU_ALTIVEC_2 (VMAXSW, "vmaxsw", CONST, smaxv4si3)
  652. BU_ALTIVEC_2 (VMAXFP, "vmaxfp", CONST, smaxv4sf3)
  653. BU_ALTIVEC_2 (VMRGHB, "vmrghb", CONST, altivec_vmrghb)
  654. BU_ALTIVEC_2 (VMRGHH, "vmrghh", CONST, altivec_vmrghh)
  655. BU_ALTIVEC_2 (VMRGHW, "vmrghw", CONST, altivec_vmrghw)
  656. BU_ALTIVEC_2 (VMRGLB, "vmrglb", CONST, altivec_vmrglb)
  657. BU_ALTIVEC_2 (VMRGLH, "vmrglh", CONST, altivec_vmrglh)
  658. BU_ALTIVEC_2 (VMRGLW, "vmrglw", CONST, altivec_vmrglw)
  659. BU_ALTIVEC_2 (VMINUB, "vminub", CONST, uminv16qi3)
  660. BU_ALTIVEC_2 (VMINSB, "vminsb", CONST, sminv16qi3)
  661. BU_ALTIVEC_2 (VMINUH, "vminuh", CONST, uminv8hi3)
  662. BU_ALTIVEC_2 (VMINSH, "vminsh", CONST, sminv8hi3)
  663. BU_ALTIVEC_2 (VMINUW, "vminuw", CONST, uminv4si3)
  664. BU_ALTIVEC_2 (VMINSW, "vminsw", CONST, sminv4si3)
  665. BU_ALTIVEC_2 (VMINFP, "vminfp", CONST, sminv4sf3)
  666. BU_ALTIVEC_2 (VMULEUB, "vmuleub", CONST, vec_widen_umult_even_v16qi)
  667. BU_ALTIVEC_2 (VMULEUB_UNS, "vmuleub_uns", CONST, vec_widen_umult_even_v16qi)
  668. BU_ALTIVEC_2 (VMULESB, "vmulesb", CONST, vec_widen_smult_even_v16qi)
  669. BU_ALTIVEC_2 (VMULEUH, "vmuleuh", CONST, vec_widen_umult_even_v8hi)
  670. BU_ALTIVEC_2 (VMULEUH_UNS, "vmuleuh_uns", CONST, vec_widen_umult_even_v8hi)
  671. BU_ALTIVEC_2 (VMULESH, "vmulesh", CONST, vec_widen_smult_even_v8hi)
  672. BU_ALTIVEC_2 (VMULOUB, "vmuloub", CONST, vec_widen_umult_odd_v16qi)
  673. BU_ALTIVEC_2 (VMULOUB_UNS, "vmuloub_uns", CONST, vec_widen_umult_odd_v16qi)
  674. BU_ALTIVEC_2 (VMULOSB, "vmulosb", CONST, vec_widen_smult_odd_v16qi)
  675. BU_ALTIVEC_2 (VMULOUH, "vmulouh", CONST, vec_widen_umult_odd_v8hi)
  676. BU_ALTIVEC_2 (VMULOUH_UNS, "vmulouh_uns", CONST, vec_widen_umult_odd_v8hi)
  677. BU_ALTIVEC_2 (VMULOSH, "vmulosh", CONST, vec_widen_smult_odd_v8hi)
  678. BU_ALTIVEC_2 (VNOR, "vnor", CONST, norv4si3)
  679. BU_ALTIVEC_2 (VOR, "vor", CONST, iorv4si3)
  680. BU_ALTIVEC_2 (VPKUHUM, "vpkuhum", CONST, altivec_vpkuhum)
  681. BU_ALTIVEC_2 (VPKUWUM, "vpkuwum", CONST, altivec_vpkuwum)
  682. BU_ALTIVEC_2 (VPKPX, "vpkpx", CONST, altivec_vpkpx)
  683. BU_ALTIVEC_2 (VPKSHSS, "vpkshss", CONST, altivec_vpkshss)
  684. BU_ALTIVEC_2 (VPKSWSS, "vpkswss", CONST, altivec_vpkswss)
  685. BU_ALTIVEC_2 (VPKUHUS, "vpkuhus", CONST, altivec_vpkuhus)
  686. BU_ALTIVEC_2 (VPKSHUS, "vpkshus", CONST, altivec_vpkshus)
  687. BU_ALTIVEC_2 (VPKUWUS, "vpkuwus", CONST, altivec_vpkuwus)
  688. BU_ALTIVEC_2 (VPKSWUS, "vpkswus", CONST, altivec_vpkswus)
  689. BU_ALTIVEC_2 (VRECIPFP, "vrecipdivfp", CONST, recipv4sf3)
  690. BU_ALTIVEC_2 (VRLB, "vrlb", CONST, vrotlv16qi3)
  691. BU_ALTIVEC_2 (VRLH, "vrlh", CONST, vrotlv8hi3)
  692. BU_ALTIVEC_2 (VRLW, "vrlw", CONST, vrotlv4si3)
  693. BU_ALTIVEC_2 (VSLB, "vslb", CONST, vashlv16qi3)
  694. BU_ALTIVEC_2 (VSLH, "vslh", CONST, vashlv8hi3)
  695. BU_ALTIVEC_2 (VSLW, "vslw", CONST, vashlv4si3)
  696. BU_ALTIVEC_2 (VSL, "vsl", CONST, altivec_vsl)
  697. BU_ALTIVEC_2 (VSLO, "vslo", CONST, altivec_vslo)
  698. BU_ALTIVEC_2 (VSPLTB, "vspltb", CONST, altivec_vspltb)
  699. BU_ALTIVEC_2 (VSPLTH, "vsplth", CONST, altivec_vsplth)
  700. BU_ALTIVEC_2 (VSPLTW, "vspltw", CONST, altivec_vspltw)
  701. BU_ALTIVEC_2 (VSRB, "vsrb", CONST, vlshrv16qi3)
  702. BU_ALTIVEC_2 (VSRH, "vsrh", CONST, vlshrv8hi3)
  703. BU_ALTIVEC_2 (VSRW, "vsrw", CONST, vlshrv4si3)
  704. BU_ALTIVEC_2 (VSRAB, "vsrab", CONST, vashrv16qi3)
  705. BU_ALTIVEC_2 (VSRAH, "vsrah", CONST, vashrv8hi3)
  706. BU_ALTIVEC_2 (VSRAW, "vsraw", CONST, vashrv4si3)
  707. BU_ALTIVEC_2 (VSR, "vsr", CONST, altivec_vsr)
  708. BU_ALTIVEC_2 (VSRO, "vsro", CONST, altivec_vsro)
  709. BU_ALTIVEC_2 (VSUBUBM, "vsububm", CONST, subv16qi3)
  710. BU_ALTIVEC_2 (VSUBUHM, "vsubuhm", CONST, subv8hi3)
  711. BU_ALTIVEC_2 (VSUBUWM, "vsubuwm", CONST, subv4si3)
  712. BU_ALTIVEC_2 (VSUBFP, "vsubfp", CONST, subv4sf3)
  713. BU_ALTIVEC_2 (VSUBCUW, "vsubcuw", CONST, altivec_vsubcuw)
  714. BU_ALTIVEC_2 (VSUBUBS, "vsububs", CONST, altivec_vsububs)
  715. BU_ALTIVEC_2 (VSUBSBS, "vsubsbs", CONST, altivec_vsubsbs)
  716. BU_ALTIVEC_2 (VSUBUHS, "vsubuhs", CONST, altivec_vsubuhs)
  717. BU_ALTIVEC_2 (VSUBSHS, "vsubshs", CONST, altivec_vsubshs)
  718. BU_ALTIVEC_2 (VSUBUWS, "vsubuws", CONST, altivec_vsubuws)
  719. BU_ALTIVEC_2 (VSUBSWS, "vsubsws", CONST, altivec_vsubsws)
  720. BU_ALTIVEC_2 (VSUM4UBS, "vsum4ubs", CONST, altivec_vsum4ubs)
  721. BU_ALTIVEC_2 (VSUM4SBS, "vsum4sbs", CONST, altivec_vsum4sbs)
  722. BU_ALTIVEC_2 (VSUM4SHS, "vsum4shs", CONST, altivec_vsum4shs)
  723. BU_ALTIVEC_2 (VSUM2SWS, "vsum2sws", CONST, altivec_vsum2sws)
  724. BU_ALTIVEC_2 (VSUMSWS, "vsumsws", CONST, altivec_vsumsws)
  725. BU_ALTIVEC_2 (VXOR, "vxor", CONST, xorv4si3)
  726. BU_ALTIVEC_2 (COPYSIGN_V4SF, "copysignfp", CONST, vector_copysignv4sf3)
  727. /* Altivec ABS functions. */
  728. BU_ALTIVEC_A (ABS_V4SI, "abs_v4si", CONST, absv4si2)
  729. BU_ALTIVEC_A (ABS_V8HI, "abs_v8hi", CONST, absv8hi2)
  730. BU_ALTIVEC_A (ABS_V4SF, "abs_v4sf", CONST, absv4sf2)
  731. BU_ALTIVEC_A (ABS_V16QI, "abs_v16qi", CONST, absv16qi2)
  732. BU_ALTIVEC_A (ABSS_V4SI, "abss_v4si", SAT, altivec_abss_v4si)
  733. BU_ALTIVEC_A (ABSS_V8HI, "abss_v8hi", SAT, altivec_abss_v8hi)
  734. BU_ALTIVEC_A (ABSS_V16QI, "abss_v16qi", SAT, altivec_abss_v16qi)
  735. /* 1 argument Altivec builtin functions. */
  736. BU_ALTIVEC_1 (VEXPTEFP, "vexptefp", FP, altivec_vexptefp)
  737. BU_ALTIVEC_1 (VLOGEFP, "vlogefp", FP, altivec_vlogefp)
  738. BU_ALTIVEC_1 (VREFP, "vrefp", FP, rev4sf2)
  739. BU_ALTIVEC_1 (VRFIM, "vrfim", FP, vector_floorv4sf2)
  740. BU_ALTIVEC_1 (VRFIN, "vrfin", FP, altivec_vrfin)
  741. BU_ALTIVEC_1 (VRFIP, "vrfip", FP, vector_ceilv4sf2)
  742. BU_ALTIVEC_1 (VRFIZ, "vrfiz", FP, vector_btruncv4sf2)
  743. BU_ALTIVEC_1 (VRSQRTFP, "vrsqrtfp", FP, rsqrtv4sf2)
  744. BU_ALTIVEC_1 (VRSQRTEFP, "vrsqrtefp", FP, rsqrtev4sf2)
  745. BU_ALTIVEC_1 (VSPLTISB, "vspltisb", CONST, altivec_vspltisb)
  746. BU_ALTIVEC_1 (VSPLTISH, "vspltish", CONST, altivec_vspltish)
  747. BU_ALTIVEC_1 (VSPLTISW, "vspltisw", CONST, altivec_vspltisw)
  748. BU_ALTIVEC_1 (VUPKHSB, "vupkhsb", CONST, altivec_vupkhsb)
  749. BU_ALTIVEC_1 (VUPKHPX, "vupkhpx", CONST, altivec_vupkhpx)
  750. BU_ALTIVEC_1 (VUPKHSH, "vupkhsh", CONST, altivec_vupkhsh)
  751. BU_ALTIVEC_1 (VUPKLSB, "vupklsb", CONST, altivec_vupklsb)
  752. BU_ALTIVEC_1 (VUPKLPX, "vupklpx", CONST, altivec_vupklpx)
  753. BU_ALTIVEC_1 (VUPKLSH, "vupklsh", CONST, altivec_vupklsh)
  754. BU_ALTIVEC_1 (FLOAT_V4SI_V4SF, "float_sisf", FP, floatv4siv4sf2)
  755. BU_ALTIVEC_1 (UNSFLOAT_V4SI_V4SF, "uns_float_sisf", FP, floatunsv4siv4sf2)
  756. BU_ALTIVEC_1 (FIX_V4SF_V4SI, "fix_sfsi", FP, fix_truncv4sfv4si2)
  757. BU_ALTIVEC_1 (FIXUNS_V4SF_V4SI, "fixuns_sfsi", FP, fixuns_truncv4sfv4si2)
  758. /* Altivec predicate functions. */
  759. BU_ALTIVEC_P (VCMPBFP_P, "vcmpbfp_p", CONST, altivec_vcmpbfp_p)
  760. BU_ALTIVEC_P (VCMPEQFP_P, "vcmpeqfp_p", CONST, vector_eq_v4sf_p)
  761. BU_ALTIVEC_P (VCMPGEFP_P, "vcmpgefp_p", CONST, vector_ge_v4sf_p)
  762. BU_ALTIVEC_P (VCMPGTFP_P, "vcmpgtfp_p", CONST, vector_gt_v4sf_p)
  763. BU_ALTIVEC_P (VCMPEQUW_P, "vcmpequw_p", CONST, vector_eq_v4si_p)
  764. BU_ALTIVEC_P (VCMPGTSW_P, "vcmpgtsw_p", CONST, vector_gt_v4si_p)
  765. BU_ALTIVEC_P (VCMPGTUW_P, "vcmpgtuw_p", CONST, vector_gtu_v4si_p)
  766. BU_ALTIVEC_P (VCMPEQUH_P, "vcmpequh_p", CONST, vector_eq_v8hi_p)
  767. BU_ALTIVEC_P (VCMPGTSH_P, "vcmpgtsh_p", CONST, vector_gt_v8hi_p)
  768. BU_ALTIVEC_P (VCMPGTUH_P, "vcmpgtuh_p", CONST, vector_gtu_v8hi_p)
  769. BU_ALTIVEC_P (VCMPEQUB_P, "vcmpequb_p", CONST, vector_eq_v16qi_p)
  770. BU_ALTIVEC_P (VCMPGTSB_P, "vcmpgtsb_p", CONST, vector_gt_v16qi_p)
  771. BU_ALTIVEC_P (VCMPGTUB_P, "vcmpgtub_p", CONST, vector_gtu_v16qi_p)
  772. /* AltiVec builtins that are handled as special cases. */
  773. BU_ALTIVEC_X (ST_INTERNAL_4si, "st_internal_4si", MEM)
  774. BU_ALTIVEC_X (LD_INTERNAL_4si, "ld_internal_4si", MEM)
  775. BU_ALTIVEC_X (ST_INTERNAL_8hi, "st_internal_8hi", MEM)
  776. BU_ALTIVEC_X (LD_INTERNAL_8hi, "ld_internal_8hi", MEM)
  777. BU_ALTIVEC_X (ST_INTERNAL_16qi, "st_internal_16qi", MEM)
  778. BU_ALTIVEC_X (LD_INTERNAL_16qi, "ld_internal_16qi", MEM)
  779. BU_ALTIVEC_X (ST_INTERNAL_4sf, "st_internal_16qi", MEM)
  780. BU_ALTIVEC_X (LD_INTERNAL_4sf, "ld_internal_4sf", MEM)
  781. BU_ALTIVEC_X (ST_INTERNAL_2df, "st_internal_4sf", MEM)
  782. BU_ALTIVEC_X (LD_INTERNAL_2df, "ld_internal_2df", MEM)
  783. BU_ALTIVEC_X (ST_INTERNAL_2di, "st_internal_2di", MEM)
  784. BU_ALTIVEC_X (LD_INTERNAL_2di, "ld_internal_2di", MEM)
  785. BU_ALTIVEC_X (ST_INTERNAL_1ti, "st_internal_1ti", MEM)
  786. BU_ALTIVEC_X (LD_INTERNAL_1ti, "ld_internal_1ti", MEM)
  787. BU_ALTIVEC_X (MTVSCR, "mtvscr", MISC)
  788. BU_ALTIVEC_X (MFVSCR, "mfvscr", MISC)
  789. BU_ALTIVEC_X (DSSALL, "dssall", MISC)
  790. BU_ALTIVEC_X (DSS, "dss", MISC)
  791. BU_ALTIVEC_X (LVSL, "lvsl", MEM)
  792. BU_ALTIVEC_X (LVSR, "lvsr", MEM)
  793. BU_ALTIVEC_X (LVEBX, "lvebx", MEM)
  794. BU_ALTIVEC_X (LVEHX, "lvehx", MEM)
  795. BU_ALTIVEC_X (LVEWX, "lvewx", MEM)
  796. BU_ALTIVEC_X (LVXL, "lvxl", MEM)
  797. BU_ALTIVEC_X (LVXL_V2DF, "lvxl_v2df", MEM)
  798. BU_ALTIVEC_X (LVXL_V2DI, "lvxl_v2di", MEM)
  799. BU_ALTIVEC_X (LVXL_V4SF, "lvxl_v4sf", MEM)
  800. BU_ALTIVEC_X (LVXL_V4SI, "lvxl_v4si", MEM)
  801. BU_ALTIVEC_X (LVXL_V8HI, "lvxl_v8hi", MEM)
  802. BU_ALTIVEC_X (LVXL_V16QI, "lvxl_v16qi", MEM)
  803. BU_ALTIVEC_X (LVX, "lvx", MEM)
  804. BU_ALTIVEC_X (LVX_V2DF, "lvx_v2df", MEM)
  805. BU_ALTIVEC_X (LVX_V2DI, "lvx_v2di", MEM)
  806. BU_ALTIVEC_X (LVX_V4SF, "lvx_v4sf", MEM)
  807. BU_ALTIVEC_X (LVX_V4SI, "lvx_v4si", MEM)
  808. BU_ALTIVEC_X (LVX_V8HI, "lvx_v8hi", MEM)
  809. BU_ALTIVEC_X (LVX_V16QI, "lvx_v16qi", MEM)
  810. BU_ALTIVEC_X (STVX, "stvx", MEM)
  811. BU_ALTIVEC_X (STVX_V2DF, "stvx_v2df", MEM)
  812. BU_ALTIVEC_X (STVX_V2DI, "stvx_v2di", MEM)
  813. BU_ALTIVEC_X (STVX_V4SF, "stvx_v4sf", MEM)
  814. BU_ALTIVEC_X (STVX_V4SI, "stvx_v4si", MEM)
  815. BU_ALTIVEC_X (STVX_V8HI, "stvx_v8hi", MEM)
  816. BU_ALTIVEC_X (STVX_V16QI, "stvx_v16qi", MEM)
  817. BU_ALTIVEC_C (LVLX, "lvlx", MEM)
  818. BU_ALTIVEC_C (LVLXL, "lvlxl", MEM)
  819. BU_ALTIVEC_C (LVRX, "lvrx", MEM)
  820. BU_ALTIVEC_C (LVRXL, "lvrxl", MEM)
  821. BU_ALTIVEC_X (STVEBX, "stvebx", MEM)
  822. BU_ALTIVEC_X (STVEHX, "stvehx", MEM)
  823. BU_ALTIVEC_X (STVEWX, "stvewx", MEM)
  824. BU_ALTIVEC_X (STVXL, "stvxl", MEM)
  825. BU_ALTIVEC_X (STVXL_V2DF, "stvxl_v2df", MEM)
  826. BU_ALTIVEC_X (STVXL_V2DI, "stvxl_v2di", MEM)
  827. BU_ALTIVEC_X (STVXL_V4SF, "stvxl_v4sf", MEM)
  828. BU_ALTIVEC_X (STVXL_V4SI, "stvxl_v4si", MEM)
  829. BU_ALTIVEC_X (STVXL_V8HI, "stvxl_v8hi", MEM)
  830. BU_ALTIVEC_X (STVXL_V16QI, "stvxl_v16qi", MEM)
  831. BU_ALTIVEC_C (STVLX, "stvlx", MEM)
  832. BU_ALTIVEC_C (STVLXL, "stvlxl", MEM)
  833. BU_ALTIVEC_C (STVRX, "stvrx", MEM)
  834. BU_ALTIVEC_C (STVRXL, "stvrxl", MEM)
  835. BU_ALTIVEC_X (MASK_FOR_LOAD, "mask_for_load", MISC)
  836. BU_ALTIVEC_X (MASK_FOR_STORE, "mask_for_store", MISC)
  837. BU_ALTIVEC_X (VEC_INIT_V4SI, "vec_init_v4si", CONST)
  838. BU_ALTIVEC_X (VEC_INIT_V8HI, "vec_init_v8hi", CONST)
  839. BU_ALTIVEC_X (VEC_INIT_V16QI, "vec_init_v16qi", CONST)
  840. BU_ALTIVEC_X (VEC_INIT_V4SF, "vec_init_v4sf", CONST)
  841. BU_ALTIVEC_X (VEC_SET_V4SI, "vec_set_v4si", CONST)
  842. BU_ALTIVEC_X (VEC_SET_V8HI, "vec_set_v8hi", CONST)
  843. BU_ALTIVEC_X (VEC_SET_V16QI, "vec_set_v16qi", CONST)
  844. BU_ALTIVEC_X (VEC_SET_V4SF, "vec_set_v4sf", CONST)
  845. BU_ALTIVEC_X (VEC_EXT_V4SI, "vec_ext_v4si", CONST)
  846. BU_ALTIVEC_X (VEC_EXT_V8HI, "vec_ext_v8hi", CONST)
  847. BU_ALTIVEC_X (VEC_EXT_V16QI, "vec_ext_v16qi", CONST)
  848. BU_ALTIVEC_X (VEC_EXT_V4SF, "vec_ext_v4sf", CONST)
  849. /* Altivec overloaded builtins. */
  850. /* For now, don't set the classification for overloaded functions.
  851. The function should be converted to the type specific instruction
  852. before we get to the point about classifying the builtin type. */
  853. /* 3 argument Altivec overloaded builtins. */
  854. BU_ALTIVEC_OVERLOAD_3 (MADD, "madd")
  855. BU_ALTIVEC_OVERLOAD_3 (MADDS, "madds")
  856. BU_ALTIVEC_OVERLOAD_3 (MLADD, "mladd")
  857. BU_ALTIVEC_OVERLOAD_3 (MRADDS, "mradds")
  858. BU_ALTIVEC_OVERLOAD_3 (MSUM, "msum")
  859. BU_ALTIVEC_OVERLOAD_3 (MSUMS, "msums")
  860. BU_ALTIVEC_OVERLOAD_3 (NMSUB, "nmsub")
  861. BU_ALTIVEC_OVERLOAD_3 (PERM, "perm")
  862. BU_ALTIVEC_OVERLOAD_3 (SEL, "sel")
  863. BU_ALTIVEC_OVERLOAD_3 (VMSUMMBM, "vmsummbm")
  864. BU_ALTIVEC_OVERLOAD_3 (VMSUMSHM, "vmsumshm")
  865. BU_ALTIVEC_OVERLOAD_3 (VMSUMSHS, "vmsumshs")
  866. BU_ALTIVEC_OVERLOAD_3 (VMSUMUBM, "vmsumubm")
  867. BU_ALTIVEC_OVERLOAD_3 (VMSUMUHM, "vmsumuhm")
  868. BU_ALTIVEC_OVERLOAD_3 (VMSUMUHS, "vmsumuhs")
  869. /* Altivec DST overloaded builtins. */
  870. BU_ALTIVEC_OVERLOAD_D (DST, "dst")
  871. BU_ALTIVEC_OVERLOAD_D (DSTT, "dstt")
  872. BU_ALTIVEC_OVERLOAD_D (DSTST, "dstst")
  873. BU_ALTIVEC_OVERLOAD_D (DSTSTT, "dststt")
  874. /* 2 argument Altivec overloaded builtins. */
  875. BU_ALTIVEC_OVERLOAD_2 (ADD, "add")
  876. BU_ALTIVEC_OVERLOAD_2 (ADDC, "addc")
  877. BU_ALTIVEC_OVERLOAD_2 (ADDS, "adds")
  878. BU_ALTIVEC_OVERLOAD_2 (AND, "and")
  879. BU_ALTIVEC_OVERLOAD_2 (ANDC, "andc")
  880. BU_ALTIVEC_OVERLOAD_2 (AVG, "avg")
  881. BU_ALTIVEC_OVERLOAD_2 (CMPB, "cmpb")
  882. BU_ALTIVEC_OVERLOAD_2 (CMPEQ, "cmpeq")
  883. BU_ALTIVEC_OVERLOAD_2 (CMPGE, "cmpge")
  884. BU_ALTIVEC_OVERLOAD_2 (CMPGT, "cmpgt")
  885. BU_ALTIVEC_OVERLOAD_2 (CMPLE, "cmple")
  886. BU_ALTIVEC_OVERLOAD_2 (CMPLT, "cmplt")
  887. BU_ALTIVEC_OVERLOAD_2 (COPYSIGN, "copysign")
  888. BU_ALTIVEC_OVERLOAD_2 (MAX, "max")
  889. BU_ALTIVEC_OVERLOAD_2 (MERGEH, "mergeh")
  890. BU_ALTIVEC_OVERLOAD_2 (MERGEL, "mergel")
  891. BU_ALTIVEC_OVERLOAD_2 (MIN, "min")
  892. BU_ALTIVEC_OVERLOAD_2 (MULE, "mule")
  893. BU_ALTIVEC_OVERLOAD_2 (MULO, "mulo")
  894. BU_ALTIVEC_OVERLOAD_2 (NOR, "nor")
  895. BU_ALTIVEC_OVERLOAD_2 (OR, "or")
  896. BU_ALTIVEC_OVERLOAD_2 (PACK, "pack")
  897. BU_ALTIVEC_OVERLOAD_2 (PACKPX, "packpx")
  898. BU_ALTIVEC_OVERLOAD_2 (PACKS, "packs")
  899. BU_ALTIVEC_OVERLOAD_2 (PACKSU, "packsu")
  900. BU_ALTIVEC_OVERLOAD_2 (RECIP, "recipdiv")
  901. BU_ALTIVEC_OVERLOAD_2 (RL, "rl")
  902. BU_ALTIVEC_OVERLOAD_2 (SL, "sl")
  903. BU_ALTIVEC_OVERLOAD_2 (SLL, "sll")
  904. BU_ALTIVEC_OVERLOAD_2 (SLO, "slo")
  905. BU_ALTIVEC_OVERLOAD_2 (SR, "sr")
  906. BU_ALTIVEC_OVERLOAD_2 (SRA, "sra")
  907. BU_ALTIVEC_OVERLOAD_2 (SRL, "srl")
  908. BU_ALTIVEC_OVERLOAD_2 (SRO, "sro")
  909. BU_ALTIVEC_OVERLOAD_2 (SUB, "sub")
  910. BU_ALTIVEC_OVERLOAD_2 (SUBC, "subc")
  911. BU_ALTIVEC_OVERLOAD_2 (SUBS, "subs")
  912. BU_ALTIVEC_OVERLOAD_2 (SUM2S, "sum2s")
  913. BU_ALTIVEC_OVERLOAD_2 (SUM4S, "sum4s")
  914. BU_ALTIVEC_OVERLOAD_2 (SUMS, "sums")
  915. BU_ALTIVEC_OVERLOAD_2 (VADDFP, "vaddfp")
  916. BU_ALTIVEC_OVERLOAD_2 (VADDSBS, "vaddsbs")
  917. BU_ALTIVEC_OVERLOAD_2 (VADDSHS, "vaddshs")
  918. BU_ALTIVEC_OVERLOAD_2 (VADDSWS, "vaddsws")
  919. BU_ALTIVEC_OVERLOAD_2 (VADDUBM, "vaddubm")
  920. BU_ALTIVEC_OVERLOAD_2 (VADDUBS, "vaddubs")
  921. BU_ALTIVEC_OVERLOAD_2 (VADDUHM, "vadduhm")
  922. BU_ALTIVEC_OVERLOAD_2 (VADDUHS, "vadduhs")
  923. BU_ALTIVEC_OVERLOAD_2 (VADDUWM, "vadduwm")
  924. BU_ALTIVEC_OVERLOAD_2 (VADDUWS, "vadduws")
  925. BU_ALTIVEC_OVERLOAD_2 (VAVGSB, "vavgsb")
  926. BU_ALTIVEC_OVERLOAD_2 (VAVGSH, "vavgsh")
  927. BU_ALTIVEC_OVERLOAD_2 (VAVGSW, "vavgsw")
  928. BU_ALTIVEC_OVERLOAD_2 (VAVGUB, "vavgub")
  929. BU_ALTIVEC_OVERLOAD_2 (VAVGUH, "vavguh")
  930. BU_ALTIVEC_OVERLOAD_2 (VAVGUW, "vavguw")
  931. BU_ALTIVEC_OVERLOAD_2 (VCMPEQFP, "vcmpeqfp")
  932. BU_ALTIVEC_OVERLOAD_2 (VCMPEQUB, "vcmpequb")
  933. BU_ALTIVEC_OVERLOAD_2 (VCMPEQUH, "vcmpequh")
  934. BU_ALTIVEC_OVERLOAD_2 (VCMPEQUW, "vcmpequw")
  935. BU_ALTIVEC_OVERLOAD_2 (VCMPGTFP, "vcmpgtfp")
  936. BU_ALTIVEC_OVERLOAD_2 (VCMPGTSB, "vcmpgtsb")
  937. BU_ALTIVEC_OVERLOAD_2 (VCMPGTSH, "vcmpgtsh")
  938. BU_ALTIVEC_OVERLOAD_2 (VCMPGTSW, "vcmpgtsw")
  939. BU_ALTIVEC_OVERLOAD_2 (VCMPGTUB, "vcmpgtub")
  940. BU_ALTIVEC_OVERLOAD_2 (VCMPGTUH, "vcmpgtuh")
  941. BU_ALTIVEC_OVERLOAD_2 (VCMPGTUW, "vcmpgtuw")
  942. BU_ALTIVEC_OVERLOAD_2 (VMAXFP, "vmaxfp")
  943. BU_ALTIVEC_OVERLOAD_2 (VMAXSB, "vmaxsb")
  944. BU_ALTIVEC_OVERLOAD_2 (VMAXSH, "vmaxsh")
  945. BU_ALTIVEC_OVERLOAD_2 (VMAXSW, "vmaxsw")
  946. BU_ALTIVEC_OVERLOAD_2 (VMAXUB, "vmaxub")
  947. BU_ALTIVEC_OVERLOAD_2 (VMAXUH, "vmaxuh")
  948. BU_ALTIVEC_OVERLOAD_2 (VMAXUW, "vmaxuw")
  949. BU_ALTIVEC_OVERLOAD_2 (VMINFP, "vminfp")
  950. BU_ALTIVEC_OVERLOAD_2 (VMINSB, "vminsb")
  951. BU_ALTIVEC_OVERLOAD_2 (VMINSH, "vminsh")
  952. BU_ALTIVEC_OVERLOAD_2 (VMINSW, "vminsw")
  953. BU_ALTIVEC_OVERLOAD_2 (VMINUB, "vminub")
  954. BU_ALTIVEC_OVERLOAD_2 (VMINUH, "vminuh")
  955. BU_ALTIVEC_OVERLOAD_2 (VMINUW, "vminuw")
  956. BU_ALTIVEC_OVERLOAD_2 (VMRGHB, "vmrghb")
  957. BU_ALTIVEC_OVERLOAD_2 (VMRGHH, "vmrghh")
  958. BU_ALTIVEC_OVERLOAD_2 (VMRGHW, "vmrghw")
  959. BU_ALTIVEC_OVERLOAD_2 (VMRGLB, "vmrglb")
  960. BU_ALTIVEC_OVERLOAD_2 (VMRGLH, "vmrglh")
  961. BU_ALTIVEC_OVERLOAD_2 (VMRGLW, "vmrglw")
  962. BU_ALTIVEC_OVERLOAD_2 (VMULESB, "vmulesb")
  963. BU_ALTIVEC_OVERLOAD_2 (VMULESH, "vmulesh")
  964. BU_ALTIVEC_OVERLOAD_2 (VMULEUB, "vmuleub")
  965. BU_ALTIVEC_OVERLOAD_2 (VMULEUH, "vmuleuh")
  966. BU_ALTIVEC_OVERLOAD_2 (VMULOSB, "vmulosb")
  967. BU_ALTIVEC_OVERLOAD_2 (VMULOSH, "vmulosh")
  968. BU_ALTIVEC_OVERLOAD_2 (VMULOUB, "vmuloub")
  969. BU_ALTIVEC_OVERLOAD_2 (VMULOUH, "vmulouh")
  970. BU_ALTIVEC_OVERLOAD_2 (VPKSHSS, "vpkshss")
  971. BU_ALTIVEC_OVERLOAD_2 (VPKSHUS, "vpkshus")
  972. BU_ALTIVEC_OVERLOAD_2 (VPKSWSS, "vpkswss")
  973. BU_ALTIVEC_OVERLOAD_2 (VPKSWUS, "vpkswus")
  974. BU_ALTIVEC_OVERLOAD_2 (VPKUHUM, "vpkuhum")
  975. BU_ALTIVEC_OVERLOAD_2 (VPKUHUS, "vpkuhus")
  976. BU_ALTIVEC_OVERLOAD_2 (VPKUWUM, "vpkuwum")
  977. BU_ALTIVEC_OVERLOAD_2 (VPKUWUS, "vpkuwus")
  978. BU_ALTIVEC_OVERLOAD_2 (VRLB, "vrlb")
  979. BU_ALTIVEC_OVERLOAD_2 (VRLH, "vrlh")
  980. BU_ALTIVEC_OVERLOAD_2 (VRLW, "vrlw")
  981. BU_ALTIVEC_OVERLOAD_2 (VSLB, "vslb")
  982. BU_ALTIVEC_OVERLOAD_2 (VSLH, "vslh")
  983. BU_ALTIVEC_OVERLOAD_2 (VSLW, "vslw")
  984. BU_ALTIVEC_OVERLOAD_2 (VSRAB, "vsrab")
  985. BU_ALTIVEC_OVERLOAD_2 (VSRAH, "vsrah")
  986. BU_ALTIVEC_OVERLOAD_2 (VSRAW, "vsraw")
  987. BU_ALTIVEC_OVERLOAD_2 (VSRB, "vsrb")
  988. BU_ALTIVEC_OVERLOAD_2 (VSRH, "vsrh")
  989. BU_ALTIVEC_OVERLOAD_2 (VSRW, "vsrw")
  990. BU_ALTIVEC_OVERLOAD_2 (VSUBFP, "vsubfp")
  991. BU_ALTIVEC_OVERLOAD_2 (VSUBSBS, "vsubsbs")
  992. BU_ALTIVEC_OVERLOAD_2 (VSUBSHS, "vsubshs")
  993. BU_ALTIVEC_OVERLOAD_2 (VSUBSWS, "vsubsws")
  994. BU_ALTIVEC_OVERLOAD_2 (VSUBUBM, "vsububm")
  995. BU_ALTIVEC_OVERLOAD_2 (VSUBUBS, "vsububs")
  996. BU_ALTIVEC_OVERLOAD_2 (VSUBUHM, "vsubuhm")
  997. BU_ALTIVEC_OVERLOAD_2 (VSUBUHS, "vsubuhs")
  998. BU_ALTIVEC_OVERLOAD_2 (VSUBUWM, "vsubuwm")
  999. BU_ALTIVEC_OVERLOAD_2 (VSUBUWS, "vsubuws")
  1000. BU_ALTIVEC_OVERLOAD_2 (VSUM4SBS, "vsum4sbs")
  1001. BU_ALTIVEC_OVERLOAD_2 (VSUM4SHS, "vsum4shs")
  1002. BU_ALTIVEC_OVERLOAD_2 (VSUM4UBS, "vsum4ubs")
  1003. BU_ALTIVEC_OVERLOAD_2 (XOR, "xor")
  1004. /* 1 argument Altivec overloaded functions. */
  1005. BU_ALTIVEC_OVERLOAD_1 (ABS, "abs")
  1006. BU_ALTIVEC_OVERLOAD_1 (ABSS, "abss")
  1007. BU_ALTIVEC_OVERLOAD_1 (CEIL, "ceil")
  1008. BU_ALTIVEC_OVERLOAD_1 (EXPTE, "expte")
  1009. BU_ALTIVEC_OVERLOAD_1 (FLOOR, "floor")
  1010. BU_ALTIVEC_OVERLOAD_1 (LOGE, "loge")
  1011. BU_ALTIVEC_OVERLOAD_1 (MTVSCR, "mtvscr")
  1012. BU_ALTIVEC_OVERLOAD_1 (NEARBYINT, "nearbyint")
  1013. BU_ALTIVEC_OVERLOAD_1 (RE, "re")
  1014. BU_ALTIVEC_OVERLOAD_1 (RINT, "rint")
  1015. BU_ALTIVEC_OVERLOAD_1 (ROUND, "round")
  1016. BU_ALTIVEC_OVERLOAD_1 (RSQRT, "rsqrt")
  1017. BU_ALTIVEC_OVERLOAD_1 (RSQRTE, "rsqrte")
  1018. BU_ALTIVEC_OVERLOAD_1 (SQRT, "sqrt")
  1019. BU_ALTIVEC_OVERLOAD_1 (TRUNC, "trunc")
  1020. BU_ALTIVEC_OVERLOAD_1 (UNPACKH, "unpackh")
  1021. BU_ALTIVEC_OVERLOAD_1 (UNPACKL, "unpackl")
  1022. BU_ALTIVEC_OVERLOAD_1 (VUPKHPX, "vupkhpx")
  1023. BU_ALTIVEC_OVERLOAD_1 (VUPKHSB, "vupkhsb")
  1024. BU_ALTIVEC_OVERLOAD_1 (VUPKHSH, "vupkhsh")
  1025. BU_ALTIVEC_OVERLOAD_1 (VUPKLPX, "vupklpx")
  1026. BU_ALTIVEC_OVERLOAD_1 (VUPKLSB, "vupklsb")
  1027. BU_ALTIVEC_OVERLOAD_1 (VUPKLSH, "vupklsh")
  1028. /* Overloaded altivec predicates. */
  1029. BU_ALTIVEC_OVERLOAD_P (VCMPEQ_P, "vcmpeq_p")
  1030. BU_ALTIVEC_OVERLOAD_P (VCMPGT_P, "vcmpgt_p")
  1031. BU_ALTIVEC_OVERLOAD_P (VCMPGE_P, "vcmpge_p")
  1032. /* Overloaded Altivec builtins that are handled as special cases. */
  1033. BU_ALTIVEC_OVERLOAD_X (CTF, "ctf")
  1034. BU_ALTIVEC_OVERLOAD_X (CTS, "cts")
  1035. BU_ALTIVEC_OVERLOAD_X (CTU, "ctu")
  1036. BU_ALTIVEC_OVERLOAD_X (EXTRACT, "extract")
  1037. BU_ALTIVEC_OVERLOAD_X (INSERT, "insert")
  1038. BU_ALTIVEC_OVERLOAD_X (LD, "ld")
  1039. BU_ALTIVEC_OVERLOAD_X (LDE, "lde")
  1040. BU_ALTIVEC_OVERLOAD_X (LDL, "ldl")
  1041. BU_ALTIVEC_OVERLOAD_X (LVEBX, "lvebx")
  1042. BU_ALTIVEC_OVERLOAD_X (LVEHX, "lvehx")
  1043. BU_ALTIVEC_OVERLOAD_X (LVEWX, "lvewx")
  1044. BU_ALTIVEC_OVERLOAD_X (LVLX, "lvlx")
  1045. BU_ALTIVEC_OVERLOAD_X (LVLXL, "lvlxl")
  1046. BU_ALTIVEC_OVERLOAD_X (LVRX, "lvrx")
  1047. BU_ALTIVEC_OVERLOAD_X (LVRXL, "lvrxl")
  1048. BU_ALTIVEC_OVERLOAD_X (LVSL, "lvsl")
  1049. BU_ALTIVEC_OVERLOAD_X (LVSR, "lvsr")
  1050. BU_ALTIVEC_OVERLOAD_X (PROMOTE, "promote")
  1051. BU_ALTIVEC_OVERLOAD_X (SLD, "sld")
  1052. BU_ALTIVEC_OVERLOAD_X (SPLAT, "splat")
  1053. BU_ALTIVEC_OVERLOAD_X (SPLATS, "splats")
  1054. BU_ALTIVEC_OVERLOAD_X (ST, "st")
  1055. BU_ALTIVEC_OVERLOAD_X (STE, "ste")
  1056. BU_ALTIVEC_OVERLOAD_X (STEP, "step")
  1057. BU_ALTIVEC_OVERLOAD_X (STL, "stl")
  1058. BU_ALTIVEC_OVERLOAD_X (STVEBX, "stvebx")
  1059. BU_ALTIVEC_OVERLOAD_X (STVEHX, "stvehx")
  1060. BU_ALTIVEC_OVERLOAD_X (STVEWX, "stvewx")
  1061. BU_ALTIVEC_OVERLOAD_X (STVLX, "stvlx")
  1062. BU_ALTIVEC_OVERLOAD_X (STVLXL, "stvlxl")
  1063. BU_ALTIVEC_OVERLOAD_X (STVRX, "stvrx")
  1064. BU_ALTIVEC_OVERLOAD_X (STVRXL, "stvrxl")
  1065. BU_ALTIVEC_OVERLOAD_X (VCFSX, "vcfsx")
  1066. BU_ALTIVEC_OVERLOAD_X (VCFUX, "vcfux")
  1067. BU_ALTIVEC_OVERLOAD_X (VSPLTB, "vspltb")
  1068. BU_ALTIVEC_OVERLOAD_X (VSPLTH, "vsplth")
  1069. BU_ALTIVEC_OVERLOAD_X (VSPLTW, "vspltw")
  1070. /* 3 argument VSX builtins. */
  1071. BU_VSX_3 (XVMADDSP, "xvmaddsp", CONST, fmav4sf4)
  1072. BU_VSX_3 (XVMSUBSP, "xvmsubsp", CONST, fmsv4sf4)
  1073. BU_VSX_3 (XVNMADDSP, "xvnmaddsp", CONST, nfmav4sf4)
  1074. BU_VSX_3 (XVNMSUBSP, "xvnmsubsp", CONST, nfmsv4sf4)
  1075. BU_VSX_3 (XVMADDDP, "xvmadddp", CONST, fmav2df4)
  1076. BU_VSX_3 (XVMSUBDP, "xvmsubdp", CONST, fmsv2df4)
  1077. BU_VSX_3 (XVNMADDDP, "xvnmadddp", CONST, nfmav2df4)
  1078. BU_VSX_3 (XVNMSUBDP, "xvnmsubdp", CONST, nfmsv2df4)
  1079. BU_VSX_3 (XXSEL_1TI, "xxsel_1ti", CONST, vector_select_v1ti)
  1080. BU_VSX_3 (XXSEL_2DI, "xxsel_2di", CONST, vector_select_v2di)
  1081. BU_VSX_3 (XXSEL_2DF, "xxsel_2df", CONST, vector_select_v2df)
  1082. BU_VSX_3 (XXSEL_4SF, "xxsel_4sf", CONST, vector_select_v4sf)
  1083. BU_VSX_3 (XXSEL_4SI, "xxsel_4si", CONST, vector_select_v4si)
  1084. BU_VSX_3 (XXSEL_8HI, "xxsel_8hi", CONST, vector_select_v8hi)
  1085. BU_VSX_3 (XXSEL_16QI, "xxsel_16qi", CONST, vector_select_v16qi)
  1086. BU_VSX_3 (XXSEL_1TI_UNS, "xxsel_1ti_uns", CONST, vector_select_v1ti_uns)
  1087. BU_VSX_3 (XXSEL_2DI_UNS, "xxsel_2di_uns", CONST, vector_select_v2di_uns)
  1088. BU_VSX_3 (XXSEL_4SI_UNS, "xxsel_4si_uns", CONST, vector_select_v4si_uns)
  1089. BU_VSX_3 (XXSEL_8HI_UNS, "xxsel_8hi_uns", CONST, vector_select_v8hi_uns)
  1090. BU_VSX_3 (XXSEL_16QI_UNS, "xxsel_16qi_uns", CONST, vector_select_v16qi_uns)
  1091. BU_VSX_3 (VPERM_1TI, "vperm_1ti", CONST, altivec_vperm_v1ti)
  1092. BU_VSX_3 (VPERM_2DI, "vperm_2di", CONST, altivec_vperm_v2di)
  1093. BU_VSX_3 (VPERM_2DF, "vperm_2df", CONST, altivec_vperm_v2df)
  1094. BU_VSX_3 (VPERM_4SF, "vperm_4sf", CONST, altivec_vperm_v4sf)
  1095. BU_VSX_3 (VPERM_4SI, "vperm_4si", CONST, altivec_vperm_v4si)
  1096. BU_VSX_3 (VPERM_8HI, "vperm_8hi", CONST, altivec_vperm_v8hi)
  1097. BU_VSX_3 (VPERM_16QI, "vperm_16qi", CONST, altivec_vperm_v16qi)
  1098. BU_VSX_3 (VPERM_1TI_UNS, "vperm_1ti_uns", CONST, altivec_vperm_v1ti_uns)
  1099. BU_VSX_3 (VPERM_2DI_UNS, "vperm_2di_uns", CONST, altivec_vperm_v2di_uns)
  1100. BU_VSX_3 (VPERM_4SI_UNS, "vperm_4si_uns", CONST, altivec_vperm_v4si_uns)
  1101. BU_VSX_3 (VPERM_8HI_UNS, "vperm_8hi_uns", CONST, altivec_vperm_v8hi_uns)
  1102. BU_VSX_3 (VPERM_16QI_UNS, "vperm_16qi_uns", CONST, altivec_vperm_v16qi_uns)
  1103. BU_VSX_3 (XXPERMDI_1TI, "xxpermdi_1ti", CONST, vsx_xxpermdi_v1ti)
  1104. BU_VSX_3 (XXPERMDI_2DF, "xxpermdi_2df", CONST, vsx_xxpermdi_v2df)
  1105. BU_VSX_3 (XXPERMDI_2DI, "xxpermdi_2di", CONST, vsx_xxpermdi_v2di)
  1106. BU_VSX_3 (XXPERMDI_4SF, "xxpermdi_4sf", CONST, vsx_xxpermdi_v4sf)
  1107. BU_VSX_3 (XXPERMDI_4SI, "xxpermdi_4si", CONST, vsx_xxpermdi_v4si)
  1108. BU_VSX_3 (XXPERMDI_8HI, "xxpermdi_8hi", CONST, vsx_xxpermdi_v8hi)
  1109. BU_VSX_3 (XXPERMDI_16QI, "xxpermdi_16qi", CONST, vsx_xxpermdi_v16qi)
  1110. BU_VSX_3 (SET_1TI, "set_1ti", CONST, vsx_set_v1ti)
  1111. BU_VSX_3 (SET_2DF, "set_2df", CONST, vsx_set_v2df)
  1112. BU_VSX_3 (SET_2DI, "set_2di", CONST, vsx_set_v2di)
  1113. BU_VSX_3 (XXSLDWI_2DI, "xxsldwi_2di", CONST, vsx_xxsldwi_v2di)
  1114. BU_VSX_3 (XXSLDWI_2DF, "xxsldwi_2df", CONST, vsx_xxsldwi_v2df)
  1115. BU_VSX_3 (XXSLDWI_4SF, "xxsldwi_4sf", CONST, vsx_xxsldwi_v4sf)
  1116. BU_VSX_3 (XXSLDWI_4SI, "xxsldwi_4si", CONST, vsx_xxsldwi_v4si)
  1117. BU_VSX_3 (XXSLDWI_8HI, "xxsldwi_8hi", CONST, vsx_xxsldwi_v8hi)
  1118. BU_VSX_3 (XXSLDWI_16QI, "xxsldwi_16qi", CONST, vsx_xxsldwi_v16qi)
  1119. /* 2 argument VSX builtins. */
  1120. BU_VSX_2 (XVADDDP, "xvadddp", FP, addv2df3)
  1121. BU_VSX_2 (XVSUBDP, "xvsubdp", FP, subv2df3)
  1122. BU_VSX_2 (XVMULDP, "xvmuldp", FP, mulv2df3)
  1123. BU_VSX_2 (XVDIVDP, "xvdivdp", FP, divv2df3)
  1124. BU_VSX_2 (RECIP_V2DF, "xvrecipdivdp", FP, recipv2df3)
  1125. BU_VSX_2 (XVMINDP, "xvmindp", CONST, sminv2df3)
  1126. BU_VSX_2 (XVMAXDP, "xvmaxdp", CONST, smaxv2df3)
  1127. BU_VSX_2 (XVTDIVDP_FE, "xvtdivdp_fe", CONST, vsx_tdivv2df3_fe)
  1128. BU_VSX_2 (XVTDIVDP_FG, "xvtdivdp_fg", CONST, vsx_tdivv2df3_fg)
  1129. BU_VSX_2 (XVCMPEQDP, "xvcmpeqdp", CONST, vector_eqv2df)
  1130. BU_VSX_2 (XVCMPGTDP, "xvcmpgtdp", CONST, vector_gtv2df)
  1131. BU_VSX_2 (XVCMPGEDP, "xvcmpgedp", CONST, vector_gev2df)
  1132. BU_VSX_2 (XVADDSP, "xvaddsp", FP, addv4sf3)
  1133. BU_VSX_2 (XVSUBSP, "xvsubsp", FP, subv4sf3)
  1134. BU_VSX_2 (XVMULSP, "xvmulsp", FP, mulv4sf3)
  1135. BU_VSX_2 (XVDIVSP, "xvdivsp", FP, divv4sf3)
  1136. BU_VSX_2 (RECIP_V4SF, "xvrecipdivsp", FP, recipv4sf3)
  1137. BU_VSX_2 (XVMINSP, "xvminsp", CONST, sminv4sf3)
  1138. BU_VSX_2 (XVMAXSP, "xvmaxsp", CONST, smaxv4sf3)
  1139. BU_VSX_2 (XVTDIVSP_FE, "xvtdivsp_fe", CONST, vsx_tdivv4sf3_fe)
  1140. BU_VSX_2 (XVTDIVSP_FG, "xvtdivsp_fg", CONST, vsx_tdivv4sf3_fg)
  1141. BU_VSX_2 (XVCMPEQSP, "xvcmpeqsp", CONST, vector_eqv4sf)
  1142. BU_VSX_2 (XVCMPGTSP, "xvcmpgtsp", CONST, vector_gtv4sf)
  1143. BU_VSX_2 (XVCMPGESP, "xvcmpgesp", CONST, vector_gev4sf)
  1144. BU_VSX_2 (XSMINDP, "xsmindp", CONST, smindf3)
  1145. BU_VSX_2 (XSMAXDP, "xsmaxdp", CONST, smaxdf3)
  1146. BU_VSX_2 (XSTDIVDP_FE, "xstdivdp_fe", CONST, vsx_tdivdf3_fe)
  1147. BU_VSX_2 (XSTDIVDP_FG, "xstdivdp_fg", CONST, vsx_tdivdf3_fg)
  1148. BU_VSX_2 (CPSGNDP, "cpsgndp", CONST, vector_copysignv2df3)
  1149. BU_VSX_2 (CPSGNSP, "cpsgnsp", CONST, vector_copysignv4sf3)
  1150. BU_VSX_2 (CONCAT_2DF, "concat_2df", CONST, vsx_concat_v2df)
  1151. BU_VSX_2 (CONCAT_2DI, "concat_2di", CONST, vsx_concat_v2di)
  1152. BU_VSX_2 (SPLAT_2DF, "splat_2df", CONST, vsx_splat_v2df)
  1153. BU_VSX_2 (SPLAT_2DI, "splat_2di", CONST, vsx_splat_v2di)
  1154. BU_VSX_2 (XXMRGHW_4SF, "xxmrghw", CONST, vsx_xxmrghw_v4sf)
  1155. BU_VSX_2 (XXMRGHW_4SI, "xxmrghw_4si", CONST, vsx_xxmrghw_v4si)
  1156. BU_VSX_2 (XXMRGLW_4SF, "xxmrglw", CONST, vsx_xxmrglw_v4sf)
  1157. BU_VSX_2 (XXMRGLW_4SI, "xxmrglw_4si", CONST, vsx_xxmrglw_v4si)
  1158. BU_VSX_2 (VEC_MERGEL_V2DF, "mergel_2df", CONST, vsx_mergel_v2df)
  1159. BU_VSX_2 (VEC_MERGEL_V2DI, "mergel_2di", CONST, vsx_mergel_v2di)
  1160. BU_VSX_2 (VEC_MERGEH_V2DF, "mergeh_2df", CONST, vsx_mergeh_v2df)
  1161. BU_VSX_2 (VEC_MERGEH_V2DI, "mergeh_2di", CONST, vsx_mergeh_v2di)
  1162. BU_VSX_2 (XXSPLTD_V2DF, "xxspltd_2df", CONST, vsx_xxspltd_v2df)
  1163. BU_VSX_2 (XXSPLTD_V2DI, "xxspltd_2di", CONST, vsx_xxspltd_v2di)
  1164. BU_VSX_2 (DIV_V2DI, "div_2di", CONST, vsx_div_v2di)
  1165. BU_VSX_2 (UDIV_V2DI, "udiv_2di", CONST, vsx_udiv_v2di)
  1166. BU_VSX_2 (MUL_V2DI, "mul_2di", CONST, vsx_mul_v2di)
  1167. BU_VSX_2 (XVCVSXDDP_SCALE, "xvcvsxddp_scale", CONST, vsx_xvcvsxddp_scale)
  1168. BU_VSX_2 (XVCVUXDDP_SCALE, "xvcvuxddp_scale", CONST, vsx_xvcvuxddp_scale)
  1169. BU_VSX_2 (XVCVDPSXDS_SCALE, "xvcvdpsxds_scale", CONST, vsx_xvcvdpsxds_scale)
  1170. BU_VSX_2 (XVCVDPUXDS_SCALE, "xvcvdpuxds_scale", CONST, vsx_xvcvdpuxds_scale)
  1171. /* VSX abs builtin functions. */
  1172. BU_VSX_A (XVABSDP, "xvabsdp", CONST, absv2df2)
  1173. BU_VSX_A (XVNABSDP, "xvnabsdp", CONST, vsx_nabsv2df2)
  1174. BU_VSX_A (XVABSSP, "xvabssp", CONST, absv4sf2)
  1175. BU_VSX_A (XVNABSSP, "xvnabssp", CONST, vsx_nabsv4sf2)
  1176. /* 1 argument VSX builtin functions. */
  1177. BU_VSX_1 (XVNEGDP, "xvnegdp", CONST, negv2df2)
  1178. BU_VSX_1 (XVSQRTDP, "xvsqrtdp", CONST, sqrtv2df2)
  1179. BU_VSX_1 (RSQRT_2DF, "xvrsqrtdp", CONST, rsqrtv2df2)
  1180. BU_VSX_1 (XVRSQRTEDP, "xvrsqrtedp", CONST, rsqrtev2df2)
  1181. BU_VSX_1 (XVTSQRTDP_FE, "xvtsqrtdp_fe", CONST, vsx_tsqrtv2df2_fe)
  1182. BU_VSX_1 (XVTSQRTDP_FG, "xvtsqrtdp_fg", CONST, vsx_tsqrtv2df2_fg)
  1183. BU_VSX_1 (XVREDP, "xvredp", CONST, vsx_frev2df2)
  1184. BU_VSX_1 (XVNEGSP, "xvnegsp", CONST, negv4sf2)
  1185. BU_VSX_1 (XVSQRTSP, "xvsqrtsp", CONST, sqrtv4sf2)
  1186. BU_VSX_1 (RSQRT_4SF, "xvrsqrtsp", CONST, rsqrtv4sf2)
  1187. BU_VSX_1 (XVRSQRTESP, "xvrsqrtesp", CONST, rsqrtev4sf2)
  1188. BU_VSX_1 (XVTSQRTSP_FE, "xvtsqrtsp_fe", CONST, vsx_tsqrtv4sf2_fe)
  1189. BU_VSX_1 (XVTSQRTSP_FG, "xvtsqrtsp_fg", CONST, vsx_tsqrtv4sf2_fg)
  1190. BU_VSX_1 (XVRESP, "xvresp", CONST, vsx_frev4sf2)
  1191. BU_VSX_1 (XSCVDPSP, "xscvdpsp", CONST, vsx_xscvdpsp)
  1192. BU_VSX_1 (XSCVSPDP, "xscvspdp", CONST, vsx_xscvspdp)
  1193. BU_VSX_1 (XVCVDPSP, "xvcvdpsp", CONST, vsx_xvcvdpsp)
  1194. BU_VSX_1 (XVCVSPDP, "xvcvspdp", CONST, vsx_xvcvspdp)
  1195. BU_VSX_1 (XSTSQRTDP_FE, "xstsqrtdp_fe", CONST, vsx_tsqrtdf2_fe)
  1196. BU_VSX_1 (XSTSQRTDP_FG, "xstsqrtdp_fg", CONST, vsx_tsqrtdf2_fg)
  1197. BU_VSX_1 (XVCVDPSXDS, "xvcvdpsxds", CONST, vsx_fix_truncv2dfv2di2)
  1198. BU_VSX_1 (XVCVDPUXDS, "xvcvdpuxds", CONST, vsx_fixuns_truncv2dfv2di2)
  1199. BU_VSX_1 (XVCVDPUXDS_UNS, "xvcvdpuxds_uns", CONST, vsx_fixuns_truncv2dfv2di2)
  1200. BU_VSX_1 (XVCVSXDDP, "xvcvsxddp", CONST, vsx_floatv2div2df2)
  1201. BU_VSX_1 (XVCVUXDDP, "xvcvuxddp", CONST, vsx_floatunsv2div2df2)
  1202. BU_VSX_1 (XVCVUXDDP_UNS, "xvcvuxddp_uns", CONST, vsx_floatunsv2div2df2)
  1203. BU_VSX_1 (XVCVSPSXWS, "xvcvspsxws", CONST, vsx_fix_truncv4sfv4si2)
  1204. BU_VSX_1 (XVCVSPUXWS, "xvcvspuxws", CONST, vsx_fixuns_truncv4sfv4si2)
  1205. BU_VSX_1 (XVCVSXWSP, "xvcvsxwsp", CONST, vsx_floatv4siv4sf2)
  1206. BU_VSX_1 (XVCVUXWSP, "xvcvuxwsp", CONST, vsx_floatunsv4siv4sf2)
  1207. BU_VSX_1 (XVCVDPSXWS, "xvcvdpsxws", CONST, vsx_xvcvdpsxws)
  1208. BU_VSX_1 (XVCVDPUXWS, "xvcvdpuxws", CONST, vsx_xvcvdpuxws)
  1209. BU_VSX_1 (XVCVSXWDP, "xvcvsxwdp", CONST, vsx_xvcvsxwdp)
  1210. BU_VSX_1 (XVCVUXWDP, "xvcvuxwdp", CONST, vsx_xvcvuxwdp)
  1211. BU_VSX_1 (XVRDPI, "xvrdpi", CONST, vsx_xvrdpi)
  1212. BU_VSX_1 (XVRDPIC, "xvrdpic", CONST, vsx_xvrdpic)
  1213. BU_VSX_1 (XVRDPIM, "xvrdpim", CONST, vsx_floorv2df2)
  1214. BU_VSX_1 (XVRDPIP, "xvrdpip", CONST, vsx_ceilv2df2)
  1215. BU_VSX_1 (XVRDPIZ, "xvrdpiz", CONST, vsx_btruncv2df2)
  1216. BU_VSX_1 (XVCVSPSXDS, "xvcvspsxds", CONST, vsx_xvcvspsxds)
  1217. BU_VSX_1 (XVCVSPUXDS, "xvcvspuxds", CONST, vsx_xvcvspuxds)
  1218. BU_VSX_1 (XVCVSXDSP, "xvcvsxdsp", CONST, vsx_xvcvsxdsp)
  1219. BU_VSX_1 (XVCVUXDSP, "xvcvuxdsp", CONST, vsx_xvcvuxdsp)
  1220. BU_VSX_1 (XVRSPI, "xvrspi", CONST, vsx_xvrspi)
  1221. BU_VSX_1 (XVRSPIC, "xvrspic", CONST, vsx_xvrspic)
  1222. BU_VSX_1 (XVRSPIM, "xvrspim", CONST, vsx_floorv4sf2)
  1223. BU_VSX_1 (XVRSPIP, "xvrspip", CONST, vsx_ceilv4sf2)
  1224. BU_VSX_1 (XVRSPIZ, "xvrspiz", CONST, vsx_btruncv4sf2)
  1225. BU_VSX_1 (XSRDPI, "xsrdpi", CONST, vsx_xsrdpi)
  1226. BU_VSX_1 (XSRDPIC, "xsrdpic", CONST, vsx_xsrdpic)
  1227. BU_VSX_1 (XSRDPIM, "xsrdpim", CONST, floordf2)
  1228. BU_VSX_1 (XSRDPIP, "xsrdpip", CONST, ceildf2)
  1229. BU_VSX_1 (XSRDPIZ, "xsrdpiz", CONST, btruncdf2)
  1230. /* VSX predicate functions. */
  1231. BU_VSX_P (XVCMPEQSP_P, "xvcmpeqsp_p", CONST, vector_eq_v4sf_p)
  1232. BU_VSX_P (XVCMPGESP_P, "xvcmpgesp_p", CONST, vector_ge_v4sf_p)
  1233. BU_VSX_P (XVCMPGTSP_P, "xvcmpgtsp_p", CONST, vector_gt_v4sf_p)
  1234. BU_VSX_P (XVCMPEQDP_P, "xvcmpeqdp_p", CONST, vector_eq_v2df_p)
  1235. BU_VSX_P (XVCMPGEDP_P, "xvcmpgedp_p", CONST, vector_ge_v2df_p)
  1236. BU_VSX_P (XVCMPGTDP_P, "xvcmpgtdp_p", CONST, vector_gt_v2df_p)
  1237. /* VSX builtins that are handled as special cases. */
  1238. BU_VSX_X (LXSDX, "lxsdx", MEM)
  1239. BU_VSX_X (LXVD2X_V1TI, "lxvd2x_v1ti", MEM)
  1240. BU_VSX_X (LXVD2X_V2DF, "lxvd2x_v2df", MEM)
  1241. BU_VSX_X (LXVD2X_V2DI, "lxvd2x_v2di", MEM)
  1242. BU_VSX_X (LXVDSX, "lxvdsx", MEM)
  1243. BU_VSX_X (LXVW4X_V4SF, "lxvw4x_v4sf", MEM)
  1244. BU_VSX_X (LXVW4X_V4SI, "lxvw4x_v4si", MEM)
  1245. BU_VSX_X (LXVW4X_V8HI, "lxvw4x_v8hi", MEM)
  1246. BU_VSX_X (LXVW4X_V16QI, "lxvw4x_v16qi", MEM)
  1247. BU_VSX_X (STXSDX, "stxsdx", MEM)
  1248. BU_VSX_X (STXVD2X_V1TI, "stxsdx_v1ti", MEM)
  1249. BU_VSX_X (STXVD2X_V2DF, "stxsdx_v2df", MEM)
  1250. BU_VSX_X (STXVD2X_V2DI, "stxsdx_v2di", MEM)
  1251. BU_VSX_X (STXVW4X_V4SF, "stxsdx_v4sf", MEM)
  1252. BU_VSX_X (STXVW4X_V4SI, "stxsdx_v4si", MEM)
  1253. BU_VSX_X (STXVW4X_V8HI, "stxsdx_v8hi", MEM)
  1254. BU_VSX_X (STXVW4X_V16QI, "stxsdx_v16qi", MEM)
  1255. BU_VSX_X (XSABSDP, "xsabsdp", CONST)
  1256. BU_VSX_X (XSADDDP, "xsadddp", FP)
  1257. BU_VSX_X (XSCMPODP, "xscmpodp", FP)
  1258. BU_VSX_X (XSCMPUDP, "xscmpudp", FP)
  1259. BU_VSX_X (XSCVDPSXDS, "xscvdpsxds", FP)
  1260. BU_VSX_X (XSCVDPSXWS, "xscvdpsxws", FP)
  1261. BU_VSX_X (XSCVDPUXDS, "xscvdpuxds", FP)
  1262. BU_VSX_X (XSCVDPUXWS, "xscvdpuxws", FP)
  1263. BU_VSX_X (XSCVSXDDP, "xscvsxddp", FP)
  1264. BU_VSX_X (XSCVUXDDP, "xscvuxddp", FP)
  1265. BU_VSX_X (XSDIVDP, "xsdivdp", FP)
  1266. BU_VSX_X (XSMADDADP, "xsmaddadp", FP)
  1267. BU_VSX_X (XSMADDMDP, "xsmaddmdp", FP)
  1268. BU_VSX_X (XSMOVDP, "xsmovdp", FP)
  1269. BU_VSX_X (XSMSUBADP, "xsmsubadp", FP)
  1270. BU_VSX_X (XSMSUBMDP, "xsmsubmdp", FP)
  1271. BU_VSX_X (XSMULDP, "xsmuldp", FP)
  1272. BU_VSX_X (XSNABSDP, "xsnabsdp", FP)
  1273. BU_VSX_X (XSNEGDP, "xsnegdp", FP)
  1274. BU_VSX_X (XSNMADDADP, "xsnmaddadp", FP)
  1275. BU_VSX_X (XSNMADDMDP, "xsnmaddmdp", FP)
  1276. BU_VSX_X (XSNMSUBADP, "xsnmsubadp", FP)
  1277. BU_VSX_X (XSNMSUBMDP, "xsnmsubmdp", FP)
  1278. BU_VSX_X (XSSUBDP, "xssubdp", FP)
  1279. BU_VSX_X (VEC_INIT_V1TI, "vec_init_v1ti", CONST)
  1280. BU_VSX_X (VEC_INIT_V2DF, "vec_init_v2df", CONST)
  1281. BU_VSX_X (VEC_INIT_V2DI, "vec_init_v2di", CONST)
  1282. BU_VSX_X (VEC_SET_V1TI, "vec_set_v1ti", CONST)
  1283. BU_VSX_X (VEC_SET_V2DF, "vec_set_v2df", CONST)
  1284. BU_VSX_X (VEC_SET_V2DI, "vec_set_v2di", CONST)
  1285. BU_VSX_X (VEC_EXT_V1TI, "vec_ext_v1ti", CONST)
  1286. BU_VSX_X (VEC_EXT_V2DF, "vec_ext_v2df", CONST)
  1287. BU_VSX_X (VEC_EXT_V2DI, "vec_ext_v2di", CONST)
  1288. /* VSX overloaded builtins, add the overloaded functions not present in
  1289. Altivec. */
  1290. /* 3 argument VSX overloaded builtins. */
  1291. BU_VSX_OVERLOAD_3 (MSUB, "msub")
  1292. BU_VSX_OVERLOAD_3 (NMADD, "nmadd")
  1293. BU_VSX_OVERLOAD_3V (XXPERMDI, "xxpermdi")
  1294. BU_VSX_OVERLOAD_3V (XXSLDWI, "xxsldwi")
  1295. /* 2 argument VSX overloaded builtin functions. */
  1296. BU_VSX_OVERLOAD_2 (MUL, "mul")
  1297. BU_VSX_OVERLOAD_2 (DIV, "div")
  1298. BU_VSX_OVERLOAD_2 (XXMRGHW, "xxmrghw")
  1299. BU_VSX_OVERLOAD_2 (XXMRGLW, "xxmrglw")
  1300. BU_VSX_OVERLOAD_2 (XXSPLTD, "xxspltd")
  1301. BU_VSX_OVERLOAD_2 (XXSPLTW, "xxspltw")
  1302. /* VSX builtins that are handled as special cases. */
  1303. BU_VSX_OVERLOAD_X (LD, "ld")
  1304. BU_VSX_OVERLOAD_X (ST, "st")
  1305. /* 1 argument VSX instructions added in ISA 2.07. */
  1306. BU_P8V_VSX_1 (XSCVSPDPN, "xscvspdpn", CONST, vsx_xscvspdpn)
  1307. BU_P8V_VSX_1 (XSCVDPSPN, "xscvdpspn", CONST, vsx_xscvdpspn)
  1308. /* 1 argument altivec instructions added in ISA 2.07. */
  1309. BU_P8V_AV_1 (ABS_V2DI, "abs_v2di", CONST, absv2di2)
  1310. BU_P8V_AV_1 (VUPKHSW, "vupkhsw", CONST, altivec_vupkhsw)
  1311. BU_P8V_AV_1 (VUPKLSW, "vupklsw", CONST, altivec_vupklsw)
  1312. BU_P8V_AV_1 (VCLZB, "vclzb", CONST, clzv16qi2)
  1313. BU_P8V_AV_1 (VCLZH, "vclzh", CONST, clzv8hi2)
  1314. BU_P8V_AV_1 (VCLZW, "vclzw", CONST, clzv4si2)
  1315. BU_P8V_AV_1 (VCLZD, "vclzd", CONST, clzv2di2)
  1316. BU_P8V_AV_1 (VPOPCNTB, "vpopcntb", CONST, popcountv16qi2)
  1317. BU_P8V_AV_1 (VPOPCNTH, "vpopcnth", CONST, popcountv8hi2)
  1318. BU_P8V_AV_1 (VPOPCNTW, "vpopcntw", CONST, popcountv4si2)
  1319. BU_P8V_AV_1 (VPOPCNTD, "vpopcntd", CONST, popcountv2di2)
  1320. BU_P8V_AV_1 (VGBBD, "vgbbd", CONST, p8v_vgbbd)
  1321. /* 2 argument altivec instructions added in ISA 2.07. */
  1322. BU_P8V_AV_2 (VADDCUQ, "vaddcuq", CONST, altivec_vaddcuq)
  1323. BU_P8V_AV_2 (VADDUDM, "vaddudm", CONST, addv2di3)
  1324. BU_P8V_AV_2 (VADDUQM, "vadduqm", CONST, altivec_vadduqm)
  1325. BU_P8V_AV_2 (VMINSD, "vminsd", CONST, sminv2di3)
  1326. BU_P8V_AV_2 (VMAXSD, "vmaxsd", CONST, smaxv2di3)
  1327. BU_P8V_AV_2 (VMINUD, "vminud", CONST, uminv2di3)
  1328. BU_P8V_AV_2 (VMAXUD, "vmaxud", CONST, umaxv2di3)
  1329. BU_P8V_AV_2 (VMRGEW, "vmrgew", CONST, p8_vmrgew)
  1330. BU_P8V_AV_2 (VMRGOW, "vmrgow", CONST, p8_vmrgow)
  1331. BU_P8V_AV_2 (VBPERMQ, "vbpermq", CONST, altivec_vbpermq)
  1332. BU_P8V_AV_2 (VPKUDUM, "vpkudum", CONST, altivec_vpkudum)
  1333. BU_P8V_AV_2 (VPKSDSS, "vpksdss", CONST, altivec_vpksdss)
  1334. BU_P8V_AV_2 (VPKUDUS, "vpkudus", CONST, altivec_vpkudus)
  1335. BU_P8V_AV_2 (VPKSDUS, "vpksdus", CONST, altivec_vpksdus)
  1336. BU_P8V_AV_2 (VRLD, "vrld", CONST, vrotlv2di3)
  1337. BU_P8V_AV_2 (VSLD, "vsld", CONST, vashlv2di3)
  1338. BU_P8V_AV_2 (VSRD, "vsrd", CONST, vlshrv2di3)
  1339. BU_P8V_AV_2 (VSRAD, "vsrad", CONST, vashrv2di3)
  1340. BU_P8V_AV_2 (VSUBCUQ, "vsubcuq", CONST, altivec_vsubcuq)
  1341. BU_P8V_AV_2 (VSUBUDM, "vsubudm", CONST, subv2di3)
  1342. BU_P8V_AV_2 (VSUBUQM, "vsubuqm", CONST, altivec_vsubuqm)
  1343. BU_P8V_AV_2 (EQV_V16QI, "eqv_v16qi", CONST, eqvv16qi3)
  1344. BU_P8V_AV_2 (EQV_V8HI, "eqv_v8hi", CONST, eqvv8hi3)
  1345. BU_P8V_AV_2 (EQV_V4SI, "eqv_v4si", CONST, eqvv4si3)
  1346. BU_P8V_AV_2 (EQV_V2DI, "eqv_v2di", CONST, eqvv2di3)
  1347. BU_P8V_AV_2 (EQV_V1TI, "eqv_v1ti", CONST, eqvv1ti3)
  1348. BU_P8V_AV_2 (EQV_V4SF, "eqv_v4sf", CONST, eqvv4sf3)
  1349. BU_P8V_AV_2 (EQV_V2DF, "eqv_v2df", CONST, eqvv2df3)
  1350. BU_P8V_AV_2 (NAND_V16QI, "nand_v16qi", CONST, nandv16qi3)
  1351. BU_P8V_AV_2 (NAND_V8HI, "nand_v8hi", CONST, nandv8hi3)
  1352. BU_P8V_AV_2 (NAND_V4SI, "nand_v4si", CONST, nandv4si3)
  1353. BU_P8V_AV_2 (NAND_V2DI, "nand_v2di", CONST, nandv2di3)
  1354. BU_P8V_AV_2 (NAND_V1TI, "nand_v1ti", CONST, nandv1ti3)
  1355. BU_P8V_AV_2 (NAND_V4SF, "nand_v4sf", CONST, nandv4sf3)
  1356. BU_P8V_AV_2 (NAND_V2DF, "nand_v2df", CONST, nandv2df3)
  1357. BU_P8V_AV_2 (ORC_V16QI, "orc_v16qi", CONST, orcv16qi3)
  1358. BU_P8V_AV_2 (ORC_V8HI, "orc_v8hi", CONST, orcv8hi3)
  1359. BU_P8V_AV_2 (ORC_V4SI, "orc_v4si", CONST, orcv4si3)
  1360. BU_P8V_AV_2 (ORC_V2DI, "orc_v2di", CONST, orcv2di3)
  1361. BU_P8V_AV_2 (ORC_V1TI, "orc_v1ti", CONST, orcv1ti3)
  1362. BU_P8V_AV_2 (ORC_V4SF, "orc_v4sf", CONST, orcv4sf3)
  1363. BU_P8V_AV_2 (ORC_V2DF, "orc_v2df", CONST, orcv2df3)
  1364. /* 3 argument altivec instructions added in ISA 2.07. */
  1365. BU_P8V_AV_3 (VADDEUQM, "vaddeuqm", CONST, altivec_vaddeuqm)
  1366. BU_P8V_AV_3 (VADDECUQ, "vaddecuq", CONST, altivec_vaddecuq)
  1367. BU_P8V_AV_3 (VSUBEUQM, "vsubeuqm", CONST, altivec_vsubeuqm)
  1368. BU_P8V_AV_3 (VSUBECUQ, "vsubecuq", CONST, altivec_vsubecuq)
  1369. /* Vector comparison instructions added in ISA 2.07. */
  1370. BU_P8V_AV_2 (VCMPEQUD, "vcmpequd", CONST, vector_eqv2di)
  1371. BU_P8V_AV_2 (VCMPGTSD, "vcmpgtsd", CONST, vector_gtv2di)
  1372. BU_P8V_AV_2 (VCMPGTUD, "vcmpgtud", CONST, vector_gtuv2di)
  1373. /* Vector comparison predicate instructions added in ISA 2.07. */
  1374. BU_P8V_AV_P (VCMPEQUD_P, "vcmpequd_p", CONST, vector_eq_v2di_p)
  1375. BU_P8V_AV_P (VCMPGTSD_P, "vcmpgtsd_p", CONST, vector_gt_v2di_p)
  1376. BU_P8V_AV_P (VCMPGTUD_P, "vcmpgtud_p", CONST, vector_gtu_v2di_p)
  1377. /* ISA 2.07 vector overloaded 1 argument functions. */
  1378. BU_P8V_OVERLOAD_1 (VUPKHSW, "vupkhsw")
  1379. BU_P8V_OVERLOAD_1 (VUPKLSW, "vupklsw")
  1380. BU_P8V_OVERLOAD_1 (VCLZ, "vclz")
  1381. BU_P8V_OVERLOAD_1 (VCLZB, "vclzb")
  1382. BU_P8V_OVERLOAD_1 (VCLZH, "vclzh")
  1383. BU_P8V_OVERLOAD_1 (VCLZW, "vclzw")
  1384. BU_P8V_OVERLOAD_1 (VCLZD, "vclzd")
  1385. BU_P8V_OVERLOAD_1 (VPOPCNT, "vpopcnt")
  1386. BU_P8V_OVERLOAD_1 (VPOPCNTB, "vpopcntb")
  1387. BU_P8V_OVERLOAD_1 (VPOPCNTH, "vpopcnth")
  1388. BU_P8V_OVERLOAD_1 (VPOPCNTW, "vpopcntw")
  1389. BU_P8V_OVERLOAD_1 (VPOPCNTD, "vpopcntd")
  1390. BU_P8V_OVERLOAD_1 (VGBBD, "vgbbd")
  1391. /* ISA 2.07 vector overloaded 2 argument functions. */
  1392. BU_P8V_OVERLOAD_2 (EQV, "eqv")
  1393. BU_P8V_OVERLOAD_2 (NAND, "nand")
  1394. BU_P8V_OVERLOAD_2 (ORC, "orc")
  1395. BU_P8V_OVERLOAD_2 (VADDCUQ, "vaddcuq")
  1396. BU_P8V_OVERLOAD_2 (VADDUDM, "vaddudm")
  1397. BU_P8V_OVERLOAD_2 (VADDUQM, "vadduqm")
  1398. BU_P8V_OVERLOAD_2 (VBPERMQ, "vbpermq")
  1399. BU_P8V_OVERLOAD_2 (VMAXSD, "vmaxsd")
  1400. BU_P8V_OVERLOAD_2 (VMAXUD, "vmaxud")
  1401. BU_P8V_OVERLOAD_2 (VMINSD, "vminsd")
  1402. BU_P8V_OVERLOAD_2 (VMINUD, "vminud")
  1403. BU_P8V_OVERLOAD_2 (VMRGEW, "vmrgew")
  1404. BU_P8V_OVERLOAD_2 (VMRGOW, "vmrgow")
  1405. BU_P8V_OVERLOAD_2 (VPKSDSS, "vpksdss")
  1406. BU_P8V_OVERLOAD_2 (VPKSDUS, "vpksdus")
  1407. BU_P8V_OVERLOAD_2 (VPKUDUM, "vpkudum")
  1408. BU_P8V_OVERLOAD_2 (VPKUDUS, "vpkudus")
  1409. BU_P8V_OVERLOAD_2 (VRLD, "vrld")
  1410. BU_P8V_OVERLOAD_2 (VSLD, "vsld")
  1411. BU_P8V_OVERLOAD_2 (VSRAD, "vsrad")
  1412. BU_P8V_OVERLOAD_2 (VSRD, "vsrd")
  1413. BU_P8V_OVERLOAD_2 (VSUBCUQ, "vsubcuq")
  1414. BU_P8V_OVERLOAD_2 (VSUBUDM, "vsubudm")
  1415. BU_P8V_OVERLOAD_2 (VSUBUQM, "vsubuqm")
  1416. /* ISA 2.07 vector overloaded 3 argument functions. */
  1417. BU_P8V_OVERLOAD_3 (VADDECUQ, "vaddecuq")
  1418. BU_P8V_OVERLOAD_3 (VADDEUQM, "vaddeuqm")
  1419. BU_P8V_OVERLOAD_3 (VSUBECUQ, "vsubecuq")
  1420. BU_P8V_OVERLOAD_3 (VSUBEUQM, "vsubeuqm")
  1421. /* 2 argument extended divide functions added in ISA 2.06. */
  1422. BU_P7_MISC_2 (DIVWE, "divwe", CONST, dive_si)
  1423. BU_P7_MISC_2 (DIVWEO, "divweo", CONST, diveo_si)
  1424. BU_P7_MISC_2 (DIVWEU, "divweu", CONST, diveu_si)
  1425. BU_P7_MISC_2 (DIVWEUO, "divweuo", CONST, diveuo_si)
  1426. BU_P7_MISC_2 (DIVDE, "divde", CONST, dive_di)
  1427. BU_P7_MISC_2 (DIVDEO, "divdeo", CONST, diveo_di)
  1428. BU_P7_MISC_2 (DIVDEU, "divdeu", CONST, diveu_di)
  1429. BU_P7_MISC_2 (DIVDEUO, "divdeuo", CONST, diveuo_di)
  1430. /* 1 argument DFP (decimal floating point) functions added in ISA 2.05. */
  1431. BU_DFP_MISC_1 (DXEX, "dxex", CONST, dfp_dxex_dd)
  1432. BU_DFP_MISC_1 (DXEXQ, "dxexq", CONST, dfp_dxex_td)
  1433. /* 2 argument DFP (decimal floating point) functions added in ISA 2.05. */
  1434. BU_DFP_MISC_2 (DDEDPD, "ddedpd", CONST, dfp_ddedpd_dd)
  1435. BU_DFP_MISC_2 (DDEDPDQ, "ddedpdq", CONST, dfp_ddedpd_td)
  1436. BU_DFP_MISC_2 (DENBCD, "denbcd", CONST, dfp_denbcd_dd)
  1437. BU_DFP_MISC_2 (DENBCDQ, "denbcdq", CONST, dfp_denbcd_td)
  1438. BU_DFP_MISC_2 (DIEX, "diex", CONST, dfp_diex_dd)
  1439. BU_DFP_MISC_2 (DIEXQ, "diexq", CONST, dfp_diex_td)
  1440. BU_DFP_MISC_2 (DSCLI, "dscli", CONST, dfp_dscli_dd)
  1441. BU_DFP_MISC_2 (DSCLIQ, "dscliq", CONST, dfp_dscli_td)
  1442. BU_DFP_MISC_2 (DSCRI, "dscri", CONST, dfp_dscri_dd)
  1443. BU_DFP_MISC_2 (DSCRIQ, "dscriq", CONST, dfp_dscri_td)
  1444. /* 1 argument BCD functions added in ISA 2.06. */
  1445. BU_P7_MISC_1 (CDTBCD, "cdtbcd", CONST, cdtbcd)
  1446. BU_P7_MISC_1 (CBCDTD, "cbcdtd", CONST, cbcdtd)
  1447. /* 2 argument BCD functions added in ISA 2.06. */
  1448. BU_P7_MISC_2 (ADDG6S, "addg6s", CONST, addg6s)
  1449. /* 3 argument BCD functions added in ISA 2.07. */
  1450. BU_P8V_MISC_3 (BCDADD, "bcdadd", CONST, bcdadd)
  1451. BU_P8V_MISC_3 (BCDADD_LT, "bcdadd_lt", CONST, bcdadd_lt)
  1452. BU_P8V_MISC_3 (BCDADD_EQ, "bcdadd_eq", CONST, bcdadd_eq)
  1453. BU_P8V_MISC_3 (BCDADD_GT, "bcdadd_gt", CONST, bcdadd_gt)
  1454. BU_P8V_MISC_3 (BCDADD_OV, "bcdadd_ov", CONST, bcdadd_unordered)
  1455. BU_P8V_MISC_3 (BCDSUB, "bcdsub", CONST, bcdsub)
  1456. BU_P8V_MISC_3 (BCDSUB_LT, "bcdsub_lt", CONST, bcdsub_lt)
  1457. BU_P8V_MISC_3 (BCDSUB_EQ, "bcdsub_eq", CONST, bcdsub_eq)
  1458. BU_P8V_MISC_3 (BCDSUB_GT, "bcdsub_gt", CONST, bcdsub_gt)
  1459. BU_P8V_MISC_3 (BCDSUB_OV, "bcdsub_ov", CONST, bcdsub_unordered)
  1460. /* 2 argument pack/unpack 128-bit floating point types. */
  1461. BU_DFP_MISC_2 (PACK_TD, "pack_dec128", CONST, packtd)
  1462. BU_DFP_MISC_2 (UNPACK_TD, "unpack_dec128", CONST, unpacktd)
  1463. BU_LDBL128_2 (PACK_TF, "pack_longdouble", CONST, packtf)
  1464. BU_LDBL128_2 (UNPACK_TF, "unpack_longdouble", CONST, unpacktf)
  1465. BU_P7_MISC_2 (PACK_V1TI, "pack_vector_int128", CONST, packv1ti)
  1466. BU_P7_MISC_2 (UNPACK_V1TI, "unpack_vector_int128", CONST, unpackv1ti)
  1467. /* 1 argument crypto functions. */
  1468. BU_CRYPTO_1 (VSBOX, "vsbox", CONST, crypto_vsbox)
  1469. /* 2 argument crypto functions. */
  1470. BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher)
  1471. BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", CONST, crypto_vcipherlast)
  1472. BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher)
  1473. BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", CONST, crypto_vncipherlast)
  1474. BU_CRYPTO_2A (VPMSUMB, "vpmsumb", CONST, crypto_vpmsumb)
  1475. BU_CRYPTO_2A (VPMSUMH, "vpmsumh", CONST, crypto_vpmsumh)
  1476. BU_CRYPTO_2A (VPMSUMW, "vpmsumw", CONST, crypto_vpmsumw)
  1477. BU_CRYPTO_2A (VPMSUMD, "vpmsumd", CONST, crypto_vpmsumd)
  1478. /* 3 argument crypto functions. */
  1479. BU_CRYPTO_3A (VPERMXOR_V2DI, "vpermxor_v2di", CONST, crypto_vpermxor_v2di)
  1480. BU_CRYPTO_3A (VPERMXOR_V4SI, "vpermxor_v4si", CONST, crypto_vpermxor_v4si)
  1481. BU_CRYPTO_3A (VPERMXOR_V8HI, "vpermxor_v8hi", CONST, crypto_vpermxor_v8hi)
  1482. BU_CRYPTO_3A (VPERMXOR_V16QI, "vpermxor_v16qi", CONST, crypto_vpermxor_v16qi)
  1483. BU_CRYPTO_3 (VSHASIGMAW, "vshasigmaw", CONST, crypto_vshasigmaw)
  1484. BU_CRYPTO_3 (VSHASIGMAD, "vshasigmad", CONST, crypto_vshasigmad)
  1485. /* 2 argument crypto overloaded functions. */
  1486. BU_CRYPTO_OVERLOAD_2A (VPMSUM, "vpmsum")
  1487. /* 3 argument crypto overloaded functions. */
  1488. BU_CRYPTO_OVERLOAD_3A (VPERMXOR, "vpermxor")
  1489. BU_CRYPTO_OVERLOAD_3 (VSHASIGMA, "vshasigma")
  1490. /* HTM functions. */
  1491. BU_HTM_1 (TABORT, "tabort", CR, tabort)
  1492. BU_HTM_3 (TABORTDC, "tabortdc", CR, tabortdc)
  1493. BU_HTM_3 (TABORTDCI, "tabortdci", CR, tabortdci)
  1494. BU_HTM_3 (TABORTWC, "tabortwc", CR, tabortwc)
  1495. BU_HTM_3 (TABORTWCI, "tabortwci", CR, tabortwci)
  1496. BU_HTM_1 (TBEGIN, "tbegin", CR, tbegin)
  1497. BU_HTM_0 (TCHECK, "tcheck", CR, tcheck)
  1498. BU_HTM_1 (TEND, "tend", CR, tend)
  1499. BU_HTM_0 (TENDALL, "tendall", CR, tend)
  1500. BU_HTM_0 (TRECHKPT, "trechkpt", CR, trechkpt)
  1501. BU_HTM_1 (TRECLAIM, "treclaim", CR, treclaim)
  1502. BU_HTM_0 (TRESUME, "tresume", CR, tsr)
  1503. BU_HTM_0 (TSUSPEND, "tsuspend", CR, tsr)
  1504. BU_HTM_1 (TSR, "tsr", CR, tsr)
  1505. BU_HTM_0 (TTEST, "ttest", CR, ttest)
  1506. BU_HTM_0 (GET_TFHAR, "get_tfhar", SPR, nothing)
  1507. BU_HTM_V1 (SET_TFHAR, "set_tfhar", SPR, nothing)
  1508. BU_HTM_0 (GET_TFIAR, "get_tfiar", SPR, nothing)
  1509. BU_HTM_V1 (SET_TFIAR, "set_tfiar", SPR, nothing)
  1510. BU_HTM_0 (GET_TEXASR, "get_texasr", SPR, nothing)
  1511. BU_HTM_V1 (SET_TEXASR, "set_texasr", SPR, nothing)
  1512. BU_HTM_0 (GET_TEXASRU, "get_texasru", SPR, nothing)
  1513. BU_HTM_V1 (SET_TEXASRU, "set_texasru", SPR, nothing)
  1514. /* 3 argument paired floating point builtins. */
  1515. BU_PAIRED_3 (MSUB, "msub", FP, fmsv2sf4)
  1516. BU_PAIRED_3 (MADD, "madd", FP, fmav2sf4)
  1517. BU_PAIRED_3 (MADDS0, "madds0", FP, paired_madds0)
  1518. BU_PAIRED_3 (MADDS1, "madds1", FP, paired_madds1)
  1519. BU_PAIRED_3 (NMSUB, "nmsub", FP, nfmsv2sf4)
  1520. BU_PAIRED_3 (NMADD, "nmadd", FP, nfmav2sf4)
  1521. BU_PAIRED_3 (SUM0, "sum0", FP, paired_sum0)
  1522. BU_PAIRED_3 (SUM1, "sum1", FP, paired_sum1)
  1523. BU_PAIRED_3 (SELV2SF4, "selv2sf4", CONST, selv2sf4)
  1524. /* 2 argument paired floating point builtins. */
  1525. BU_PAIRED_2 (DIVV2SF3, "divv2sf3", FP, paired_divv2sf3)
  1526. BU_PAIRED_2 (ADDV2SF3, "addv2sf3", FP, paired_addv2sf3)
  1527. BU_PAIRED_2 (SUBV2SF3, "subv2sf3", FP, paired_subv2sf3)
  1528. BU_PAIRED_2 (MULV2SF3, "mulv2sf3", FP, paired_mulv2sf3)
  1529. BU_PAIRED_2 (MULS0, "muls0", FP, paired_muls0)
  1530. BU_PAIRED_2 (MULS1, "muls1", FP, paired_muls1)
  1531. BU_PAIRED_2 (MERGE00, "merge00", CONST, paired_merge00)
  1532. BU_PAIRED_2 (MERGE01, "merge01", CONST, paired_merge01)
  1533. BU_PAIRED_2 (MERGE10, "merge10", CONST, paired_merge10)
  1534. BU_PAIRED_2 (MERGE11, "merge11", CONST, paired_merge11)
  1535. /* 1 argument paired floating point builtin functions. */
  1536. BU_PAIRED_1 (ABSV2SF2, "absv2sf2", CONST, paired_absv2sf2)
  1537. BU_PAIRED_1 (NABSV2SF2, "nabsv2sf2", CONST, nabsv2sf2)
  1538. BU_PAIRED_1 (NEGV2SF2, "negv2sf2", CONST, paired_negv2sf2)
  1539. BU_PAIRED_1 (SQRTV2SF2, "sqrtv2sf2", FP, sqrtv2sf2)
  1540. BU_PAIRED_1 (RESV2SF, "resv2sf2", FP, resv2sf2)
  1541. /* PAIRED builtins that are handled as special cases. */
  1542. BU_PAIRED_X (STX, "stx", MISC)
  1543. BU_PAIRED_X (LX, "lx", MISC)
  1544. /* Paired predicates. */
  1545. BU_PAIRED_P (CMPU0, "cmpu0", CONST, paired_cmpu0)
  1546. BU_PAIRED_P (CMPU1, "cmpu1", CONST, paired_cmpu1)
  1547. /* PowerPC E500 builtins (SPE). */
  1548. BU_SPE_2 (EVADDW, "evaddw", MISC, addv2si3)
  1549. BU_SPE_2 (EVAND, "evand", MISC, andv2si3)
  1550. BU_SPE_2 (EVANDC, "evandc", MISC, spe_evandc)
  1551. BU_SPE_2 (EVDIVWS, "evdivws", MISC, divv2si3)
  1552. BU_SPE_2 (EVDIVWU, "evdivwu", MISC, spe_evdivwu)
  1553. BU_SPE_2 (EVEQV, "eveqv", MISC, spe_eveqv)
  1554. BU_SPE_2 (EVFSADD, "evfsadd", MISC, spe_evfsadd)
  1555. BU_SPE_2 (EVFSDIV, "evfsdiv", MISC, spe_evfsdiv)
  1556. BU_SPE_2 (EVFSMUL, "evfsmul", MISC, spe_evfsmul)
  1557. BU_SPE_2 (EVFSSUB, "evfssub", MISC, spe_evfssub)
  1558. BU_SPE_2 (EVMERGEHI, "evmergehi", MISC, spe_evmergehi)
  1559. BU_SPE_2 (EVMERGEHILO, "evmergehilo", MISC, spe_evmergehilo)
  1560. BU_SPE_2 (EVMERGELO, "evmergelo", MISC, spe_evmergelo)
  1561. BU_SPE_2 (EVMERGELOHI, "evmergelohi", MISC, spe_evmergelohi)
  1562. BU_SPE_2 (EVMHEGSMFAA, "evmhegsmfaa", MISC, spe_evmhegsmfaa)
  1563. BU_SPE_2 (EVMHEGSMFAN, "evmhegsmfan", MISC, spe_evmhegsmfan)
  1564. BU_SPE_2 (EVMHEGSMIAA, "evmhegsmiaa", MISC, spe_evmhegsmiaa)
  1565. BU_SPE_2 (EVMHEGSMIAN, "evmhegsmian", MISC, spe_evmhegsmian)
  1566. BU_SPE_2 (EVMHEGUMIAA, "evmhegumiaa", MISC, spe_evmhegumiaa)
  1567. BU_SPE_2 (EVMHEGUMIAN, "evmhegumian", MISC, spe_evmhegumian)
  1568. BU_SPE_2 (EVMHESMF, "evmhesmf", MISC, spe_evmhesmf)
  1569. BU_SPE_2 (EVMHESMFA, "evmhesmfa", MISC, spe_evmhesmfa)
  1570. BU_SPE_2 (EVMHESMFAAW, "evmhesmfaaw", MISC, spe_evmhesmfaaw)
  1571. BU_SPE_2 (EVMHESMFANW, "evmhesmfanw", MISC, spe_evmhesmfanw)
  1572. BU_SPE_2 (EVMHESMI, "evmhesmi", MISC, spe_evmhesmi)
  1573. BU_SPE_2 (EVMHESMIA, "evmhesmia", MISC, spe_evmhesmia)
  1574. BU_SPE_2 (EVMHESMIAAW, "evmhesmiaaw", MISC, spe_evmhesmiaaw)
  1575. BU_SPE_2 (EVMHESMIANW, "evmhesmianw", MISC, spe_evmhesmianw)
  1576. BU_SPE_2 (EVMHESSF, "evmhessf", MISC, spe_evmhessf)
  1577. BU_SPE_2 (EVMHESSFA, "evmhessfa", MISC, spe_evmhessfa)
  1578. BU_SPE_2 (EVMHESSFAAW, "evmhessfaaw", MISC, spe_evmhessfaaw)
  1579. BU_SPE_2 (EVMHESSFANW, "evmhessfanw", MISC, spe_evmhessfanw)
  1580. BU_SPE_2 (EVMHESSIAAW, "evmhessiaaw", MISC, spe_evmhessiaaw)
  1581. BU_SPE_2 (EVMHESSIANW, "evmhessianw", MISC, spe_evmhessianw)
  1582. BU_SPE_2 (EVMHEUMI, "evmheumi", MISC, spe_evmheumi)
  1583. BU_SPE_2 (EVMHEUMIA, "evmheumia", MISC, spe_evmheumia)
  1584. BU_SPE_2 (EVMHEUMIAAW, "evmheumiaaw", MISC, spe_evmheumiaaw)
  1585. BU_SPE_2 (EVMHEUMIANW, "evmheumianw", MISC, spe_evmheumianw)
  1586. BU_SPE_2 (EVMHEUSIAAW, "evmheusiaaw", MISC, spe_evmheusiaaw)
  1587. BU_SPE_2 (EVMHEUSIANW, "evmheusianw", MISC, spe_evmheusianw)
  1588. BU_SPE_2 (EVMHOGSMFAA, "evmhogsmfaa", MISC, spe_evmhogsmfaa)
  1589. BU_SPE_2 (EVMHOGSMFAN, "evmhogsmfan", MISC, spe_evmhogsmfan)
  1590. BU_SPE_2 (EVMHOGSMIAA, "evmhogsmiaa", MISC, spe_evmhogsmiaa)
  1591. BU_SPE_2 (EVMHOGSMIAN, "evmhogsmian", MISC, spe_evmhogsmian)
  1592. BU_SPE_2 (EVMHOGUMIAA, "evmhogumiaa", MISC, spe_evmhogumiaa)
  1593. BU_SPE_2 (EVMHOGUMIAN, "evmhogumian", MISC, spe_evmhogumian)
  1594. BU_SPE_2 (EVMHOSMF, "evmhosmf", MISC, spe_evmhosmf)
  1595. BU_SPE_2 (EVMHOSMFA, "evmhosmfa", MISC, spe_evmhosmfa)
  1596. BU_SPE_2 (EVMHOSMFAAW, "evmhosmfaaw", MISC, spe_evmhosmfaaw)
  1597. BU_SPE_2 (EVMHOSMFANW, "evmhosmfanw", MISC, spe_evmhosmfanw)
  1598. BU_SPE_2 (EVMHOSMI, "evmhosmi", MISC, spe_evmhosmi)
  1599. BU_SPE_2 (EVMHOSMIA, "evmhosmia", MISC, spe_evmhosmia)
  1600. BU_SPE_2 (EVMHOSMIAAW, "evmhosmiaaw", MISC, spe_evmhosmiaaw)
  1601. BU_SPE_2 (EVMHOSMIANW, "evmhosmianw", MISC, spe_evmhosmianw)
  1602. BU_SPE_2 (EVMHOSSF, "evmhossf", MISC, spe_evmhossf)
  1603. BU_SPE_2 (EVMHOSSFA, "evmhossfa", MISC, spe_evmhossfa)
  1604. BU_SPE_2 (EVMHOSSFAAW, "evmhossfaaw", MISC, spe_evmhossfaaw)
  1605. BU_SPE_2 (EVMHOSSFANW, "evmhossfanw", MISC, spe_evmhossfanw)
  1606. BU_SPE_2 (EVMHOSSIAAW, "evmhossiaaw", MISC, spe_evmhossiaaw)
  1607. BU_SPE_2 (EVMHOSSIANW, "evmhossianw", MISC, spe_evmhossianw)
  1608. BU_SPE_2 (EVMHOUMI, "evmhoumi", MISC, spe_evmhoumi)
  1609. BU_SPE_2 (EVMHOUMIA, "evmhoumia", MISC, spe_evmhoumia)
  1610. BU_SPE_2 (EVMHOUMIAAW, "evmhoumiaaw", MISC, spe_evmhoumiaaw)
  1611. BU_SPE_2 (EVMHOUMIANW, "evmhoumianw", MISC, spe_evmhoumianw)
  1612. BU_SPE_2 (EVMHOUSIAAW, "evmhousiaaw", MISC, spe_evmhousiaaw)
  1613. BU_SPE_2 (EVMHOUSIANW, "evmhousianw", MISC, spe_evmhousianw)
  1614. BU_SPE_2 (EVMWHSMF, "evmwhsmf", MISC, spe_evmwhsmf)
  1615. BU_SPE_2 (EVMWHSMFA, "evmwhsmfa", MISC, spe_evmwhsmfa)
  1616. BU_SPE_2 (EVMWHSMI, "evmwhsmi", MISC, spe_evmwhsmi)
  1617. BU_SPE_2 (EVMWHSMIA, "evmwhsmia", MISC, spe_evmwhsmia)
  1618. BU_SPE_2 (EVMWHSSF, "evmwhssf", MISC, spe_evmwhssf)
  1619. BU_SPE_2 (EVMWHSSFA, "evmwhssfa", MISC, spe_evmwhssfa)
  1620. BU_SPE_2 (EVMWHUMI, "evmwhumi", MISC, spe_evmwhumi)
  1621. BU_SPE_2 (EVMWHUMIA, "evmwhumia", MISC, spe_evmwhumia)
  1622. BU_SPE_2 (EVMWLSMIAAW, "evmwlsmiaaw", MISC, spe_evmwlsmiaaw)
  1623. BU_SPE_2 (EVMWLSMIANW, "evmwlsmianw", MISC, spe_evmwlsmianw)
  1624. BU_SPE_2 (EVMWLSSIAAW, "evmwlssiaaw", MISC, spe_evmwlssiaaw)
  1625. BU_SPE_2 (EVMWLSSIANW, "evmwlssianw", MISC, spe_evmwlssianw)
  1626. BU_SPE_2 (EVMWLUMI, "evmwlumi", MISC, spe_evmwlumi)
  1627. BU_SPE_2 (EVMWLUMIA, "evmwlumia", MISC, spe_evmwlumia)
  1628. BU_SPE_2 (EVMWLUMIAAW, "evmwlumiaaw", MISC, spe_evmwlumiaaw)
  1629. BU_SPE_2 (EVMWLUMIANW, "evmwlumianw", MISC, spe_evmwlumianw)
  1630. BU_SPE_2 (EVMWLUSIAAW, "evmwlusiaaw", MISC, spe_evmwlusiaaw)
  1631. BU_SPE_2 (EVMWLUSIANW, "evmwlusianw", MISC, spe_evmwlusianw)
  1632. BU_SPE_2 (EVMWSMF, "evmwsmf", MISC, spe_evmwsmf)
  1633. BU_SPE_2 (EVMWSMFA, "evmwsmfa", MISC, spe_evmwsmfa)
  1634. BU_SPE_2 (EVMWSMFAA, "evmwsmfaa", MISC, spe_evmwsmfaa)
  1635. BU_SPE_2 (EVMWSMFAN, "evmwsmfan", MISC, spe_evmwsmfan)
  1636. BU_SPE_2 (EVMWSMI, "evmwsmi", MISC, spe_evmwsmi)
  1637. BU_SPE_2 (EVMWSMIA, "evmwsmia", MISC, spe_evmwsmia)
  1638. BU_SPE_2 (EVMWSMIAA, "evmwsmiaa", MISC, spe_evmwsmiaa)
  1639. BU_SPE_2 (EVMWSMIAN, "evmwsmian", MISC, spe_evmwsmian)
  1640. BU_SPE_2 (EVMWSSF, "evmwssf", MISC, spe_evmwssf)
  1641. BU_SPE_2 (EVMWSSFA, "evmwssfa", MISC, spe_evmwssfa)
  1642. BU_SPE_2 (EVMWSSFAA, "evmwssfaa", MISC, spe_evmwssfaa)
  1643. BU_SPE_2 (EVMWSSFAN, "evmwssfan", MISC, spe_evmwssfan)
  1644. BU_SPE_2 (EVMWUMI, "evmwumi", MISC, spe_evmwumi)
  1645. BU_SPE_2 (EVMWUMIA, "evmwumia", MISC, spe_evmwumia)
  1646. BU_SPE_2 (EVMWUMIAA, "evmwumiaa", MISC, spe_evmwumiaa)
  1647. BU_SPE_2 (EVMWUMIAN, "evmwumian", MISC, spe_evmwumian)
  1648. BU_SPE_2 (EVNAND, "evnand", MISC, spe_evnand)
  1649. BU_SPE_2 (EVNOR, "evnor", MISC, spe_evnor)
  1650. BU_SPE_2 (EVOR, "evor", MISC, spe_evor)
  1651. BU_SPE_2 (EVORC, "evorc", MISC, spe_evorc)
  1652. BU_SPE_2 (EVRLW, "evrlw", MISC, spe_evrlw)
  1653. BU_SPE_2 (EVSLW, "evslw", MISC, spe_evslw)
  1654. BU_SPE_2 (EVSRWS, "evsrws", MISC, spe_evsrws)
  1655. BU_SPE_2 (EVSRWU, "evsrwu", MISC, spe_evsrwu)
  1656. BU_SPE_2 (EVSUBFW, "evsubfw", MISC, subv2si3)
  1657. /* SPE binary operations expecting a 5-bit unsigned literal. */
  1658. BU_SPE_2 (EVADDIW, "evaddiw", MISC, spe_evaddiw)
  1659. BU_SPE_2 (EVRLWI, "evrlwi", MISC, spe_evrlwi)
  1660. BU_SPE_2 (EVSLWI, "evslwi", MISC, spe_evslwi)
  1661. BU_SPE_2 (EVSRWIS, "evsrwis", MISC, spe_evsrwis)
  1662. BU_SPE_2 (EVSRWIU, "evsrwiu", MISC, spe_evsrwiu)
  1663. BU_SPE_2 (EVSUBIFW, "evsubifw", MISC, spe_evsubifw)
  1664. BU_SPE_2 (EVMWHSSFAA, "evmwhssfaa", MISC, spe_evmwhssfaa)
  1665. BU_SPE_2 (EVMWHSSMAA, "evmwhssmaa", MISC, spe_evmwhssmaa)
  1666. BU_SPE_2 (EVMWHSMFAA, "evmwhsmfaa", MISC, spe_evmwhsmfaa)
  1667. BU_SPE_2 (EVMWHSMIAA, "evmwhsmiaa", MISC, spe_evmwhsmiaa)
  1668. BU_SPE_2 (EVMWHUSIAA, "evmwhusiaa", MISC, spe_evmwhusiaa)
  1669. BU_SPE_2 (EVMWHUMIAA, "evmwhumiaa", MISC, spe_evmwhumiaa)
  1670. BU_SPE_2 (EVMWHSSFAN, "evmwhssfan", MISC, spe_evmwhssfan)
  1671. BU_SPE_2 (EVMWHSSIAN, "evmwhssian", MISC, spe_evmwhssian)
  1672. BU_SPE_2 (EVMWHSMFAN, "evmwhsmfan", MISC, spe_evmwhsmfan)
  1673. BU_SPE_2 (EVMWHSMIAN, "evmwhsmian", MISC, spe_evmwhsmian)
  1674. BU_SPE_2 (EVMWHUSIAN, "evmwhusian", MISC, spe_evmwhusian)
  1675. BU_SPE_2 (EVMWHUMIAN, "evmwhumian", MISC, spe_evmwhumian)
  1676. BU_SPE_2 (EVMWHGSSFAA, "evmwhgssfaa", MISC, spe_evmwhgssfaa)
  1677. BU_SPE_2 (EVMWHGSMFAA, "evmwhgsmfaa", MISC, spe_evmwhgsmfaa)
  1678. BU_SPE_2 (EVMWHGSMIAA, "evmwhgsmiaa", MISC, spe_evmwhgsmiaa)
  1679. BU_SPE_2 (EVMWHGUMIAA, "evmwhgumiaa", MISC, spe_evmwhgumiaa)
  1680. BU_SPE_2 (EVMWHGSSFAN, "evmwhgssfan", MISC, spe_evmwhgssfan)
  1681. BU_SPE_2 (EVMWHGSMFAN, "evmwhgsmfan", MISC, spe_evmwhgsmfan)
  1682. BU_SPE_2 (EVMWHGSMIAN, "evmwhgsmian", MISC, spe_evmwhgsmian)
  1683. BU_SPE_2 (EVMWHGUMIAN, "evmwhgumian", MISC, spe_evmwhgumian)
  1684. BU_SPE_2 (BRINC, "brinc", MISC, spe_brinc)
  1685. BU_SPE_2 (EVXOR, "evxor", MISC, xorv2si3)
  1686. /* SPE predicate builtins. */
  1687. BU_SPE_P (EVCMPEQ, "evcmpeq", MISC, spe_evcmpeq)
  1688. BU_SPE_P (EVCMPGTS, "evcmpgts", MISC, spe_evcmpgts)
  1689. BU_SPE_P (EVCMPGTU, "evcmpgtu", MISC, spe_evcmpgtu)
  1690. BU_SPE_P (EVCMPLTS, "evcmplts", MISC, spe_evcmplts)
  1691. BU_SPE_P (EVCMPLTU, "evcmpltu", MISC, spe_evcmpltu)
  1692. BU_SPE_P (EVFSCMPEQ, "evfscmpeq", MISC, spe_evfscmpeq)
  1693. BU_SPE_P (EVFSCMPGT, "evfscmpgt", MISC, spe_evfscmpgt)
  1694. BU_SPE_P (EVFSCMPLT, "evfscmplt", MISC, spe_evfscmplt)
  1695. BU_SPE_P (EVFSTSTEQ, "evfststeq", MISC, spe_evfststeq)
  1696. BU_SPE_P (EVFSTSTGT, "evfststgt", MISC, spe_evfststgt)
  1697. BU_SPE_P (EVFSTSTLT, "evfststlt", MISC, spe_evfststlt)
  1698. /* SPE evsel builtins. */
  1699. BU_SPE_E (EVSEL_CMPGTS, "evsel_gts", MISC, spe_evcmpgts)
  1700. BU_SPE_E (EVSEL_CMPGTU, "evsel_gtu", MISC, spe_evcmpgtu)
  1701. BU_SPE_E (EVSEL_CMPLTS, "evsel_lts", MISC, spe_evcmplts)
  1702. BU_SPE_E (EVSEL_CMPLTU, "evsel_ltu", MISC, spe_evcmpltu)
  1703. BU_SPE_E (EVSEL_CMPEQ, "evsel_eq", MISC, spe_evcmpeq)
  1704. BU_SPE_E (EVSEL_FSCMPGT, "evsel_fsgt", MISC, spe_evfscmpgt)
  1705. BU_SPE_E (EVSEL_FSCMPLT, "evsel_fslt", MISC, spe_evfscmplt)
  1706. BU_SPE_E (EVSEL_FSCMPEQ, "evsel_fseq", MISC, spe_evfscmpeq)
  1707. BU_SPE_E (EVSEL_FSTSTGT, "evsel_fststgt", MISC, spe_evfststgt)
  1708. BU_SPE_E (EVSEL_FSTSTLT, "evsel_fststlt", MISC, spe_evfststlt)
  1709. BU_SPE_E (EVSEL_FSTSTEQ, "evsel_fststeq", MISC, spe_evfststeq)
  1710. BU_SPE_1 (EVABS, "evabs", CONST, absv2si2)
  1711. BU_SPE_1 (EVADDSMIAAW, "evaddsmiaaw", CONST, spe_evaddsmiaaw)
  1712. BU_SPE_1 (EVADDSSIAAW, "evaddssiaaw", CONST, spe_evaddssiaaw)
  1713. BU_SPE_1 (EVADDUMIAAW, "evaddumiaaw", CONST, spe_evaddumiaaw)
  1714. BU_SPE_1 (EVADDUSIAAW, "evaddusiaaw", CONST, spe_evaddusiaaw)
  1715. BU_SPE_1 (EVCNTLSW, "evcntlsw", CONST, spe_evcntlsw)
  1716. BU_SPE_1 (EVCNTLZW, "evcntlzw", CONST, spe_evcntlzw)
  1717. BU_SPE_1 (EVEXTSB, "evextsb", CONST, spe_evextsb)
  1718. BU_SPE_1 (EVEXTSH, "evextsh", CONST, spe_evextsh)
  1719. BU_SPE_1 (EVFSABS, "evfsabs", CONST, spe_evfsabs)
  1720. BU_SPE_1 (EVFSCFSF, "evfscfsf", CONST, spe_evfscfsf)
  1721. BU_SPE_1 (EVFSCFSI, "evfscfsi", CONST, spe_evfscfsi)
  1722. BU_SPE_1 (EVFSCFUF, "evfscfuf", CONST, spe_evfscfuf)
  1723. BU_SPE_1 (EVFSCFUI, "evfscfui", CONST, spe_evfscfui)
  1724. BU_SPE_1 (EVFSCTSF, "evfsctsf", CONST, spe_evfsctsf)
  1725. BU_SPE_1 (EVFSCTSI, "evfsctsi", CONST, spe_evfsctsi)
  1726. BU_SPE_1 (EVFSCTSIZ, "evfsctsiz", CONST, spe_evfsctsiz)
  1727. BU_SPE_1 (EVFSCTUF, "evfsctuf", CONST, spe_evfsctuf)
  1728. BU_SPE_1 (EVFSCTUI, "evfsctui", CONST, spe_evfsctui)
  1729. BU_SPE_1 (EVFSCTUIZ, "evfsctuiz", CONST, spe_evfsctuiz)
  1730. BU_SPE_1 (EVFSNABS, "evfsnabs", CONST, spe_evfsnabs)
  1731. BU_SPE_1 (EVFSNEG, "evfsneg", CONST, spe_evfsneg)
  1732. BU_SPE_1 (EVMRA, "evmra", CONST, spe_evmra)
  1733. BU_SPE_1 (EVNEG, "evneg", CONST, negv2si2)
  1734. BU_SPE_1 (EVRNDW, "evrndw", CONST, spe_evrndw)
  1735. BU_SPE_1 (EVSUBFSMIAAW, "evsubfsmiaaw", CONST, spe_evsubfsmiaaw)
  1736. BU_SPE_1 (EVSUBFSSIAAW, "evsubfssiaaw", CONST, spe_evsubfssiaaw)
  1737. BU_SPE_1 (EVSUBFUMIAAW, "evsubfumiaaw", CONST, spe_evsubfumiaaw)
  1738. BU_SPE_1 (EVSUBFUSIAAW, "evsubfusiaaw", CONST, spe_evsubfusiaaw)
  1739. /* SPE builtins that are handled as special cases. */
  1740. BU_SPE_X (EVLDD, "evldd", MISC)
  1741. BU_SPE_X (EVLDDX, "evlddx", MISC)
  1742. BU_SPE_X (EVLDH, "evldh", MISC)
  1743. BU_SPE_X (EVLDHX, "evldhx", MISC)
  1744. BU_SPE_X (EVLDW, "evldw", MISC)
  1745. BU_SPE_X (EVLDWX, "evldwx", MISC)
  1746. BU_SPE_X (EVLHHESPLAT, "evlhhesplat", MISC)
  1747. BU_SPE_X (EVLHHESPLATX, "evlhhesplatx", MISC)
  1748. BU_SPE_X (EVLHHOSSPLAT, "evlhhossplat", MISC)
  1749. BU_SPE_X (EVLHHOSSPLATX, "evlhhossplatx", MISC)
  1750. BU_SPE_X (EVLHHOUSPLAT, "evlhhousplat", MISC)
  1751. BU_SPE_X (EVLHHOUSPLATX, "evlhhousplatx", MISC)
  1752. BU_SPE_X (EVLWHE, "evlwhe", MISC)
  1753. BU_SPE_X (EVLWHEX, "evlwhex", MISC)
  1754. BU_SPE_X (EVLWHOS, "evlwhos", MISC)
  1755. BU_SPE_X (EVLWHOSX, "evlwhosx", MISC)
  1756. BU_SPE_X (EVLWHOU, "evlwhou", MISC)
  1757. BU_SPE_X (EVLWHOUX, "evlwhoux", MISC)
  1758. BU_SPE_X (EVLWHSPLAT, "evlwhsplat", MISC)
  1759. BU_SPE_X (EVLWHSPLATX, "evlwhsplatx", MISC)
  1760. BU_SPE_X (EVLWWSPLAT, "evlwwsplat", MISC)
  1761. BU_SPE_X (EVLWWSPLATX, "evlwwsplatx", MISC)
  1762. BU_SPE_X (EVSPLATFI, "evsplatfi", MISC)
  1763. BU_SPE_X (EVSPLATI, "evsplati", MISC)
  1764. BU_SPE_X (EVSTDD, "evstdd", MISC)
  1765. BU_SPE_X (EVSTDDX, "evstddx", MISC)
  1766. BU_SPE_X (EVSTDH, "evstdh", MISC)
  1767. BU_SPE_X (EVSTDHX, "evstdhx", MISC)
  1768. BU_SPE_X (EVSTDW, "evstdw", MISC)
  1769. BU_SPE_X (EVSTDWX, "evstdwx", MISC)
  1770. BU_SPE_X (EVSTWHE, "evstwhe", MISC)
  1771. BU_SPE_X (EVSTWHEX, "evstwhex", MISC)
  1772. BU_SPE_X (EVSTWHO, "evstwho", MISC)
  1773. BU_SPE_X (EVSTWHOX, "evstwhox", MISC)
  1774. BU_SPE_X (EVSTWWE, "evstwwe", MISC)
  1775. BU_SPE_X (EVSTWWEX, "evstwwex", MISC)
  1776. BU_SPE_X (EVSTWWO, "evstwwo", MISC)
  1777. BU_SPE_X (EVSTWWOX, "evstwwox", MISC)
  1778. BU_SPE_X (MFSPEFSCR, "mfspefscr", MISC)
  1779. BU_SPE_X (MTSPEFSCR, "mtspefscr", MISC)
  1780. /* Power7 builtins, that aren't VSX instructions. */
  1781. BU_SPECIAL_X (POWER7_BUILTIN_BPERMD, "__builtin_bpermd", RS6000_BTM_POPCNTD,
  1782. RS6000_BTC_CONST)
  1783. /* Miscellaneous builtins. */
  1784. BU_SPECIAL_X (RS6000_BUILTIN_RECIP, "__builtin_recipdiv", RS6000_BTM_FRE,
  1785. RS6000_BTC_FP)
  1786. BU_SPECIAL_X (RS6000_BUILTIN_RECIPF, "__builtin_recipdivf", RS6000_BTM_FRES,
  1787. RS6000_BTC_FP)
  1788. BU_SPECIAL_X (RS6000_BUILTIN_RSQRT, "__builtin_rsqrt", RS6000_BTM_FRSQRTE,
  1789. RS6000_BTC_FP)
  1790. BU_SPECIAL_X (RS6000_BUILTIN_RSQRTF, "__builtin_rsqrtf", RS6000_BTM_FRSQRTES,
  1791. RS6000_BTC_FP)
  1792. BU_SPECIAL_X (RS6000_BUILTIN_GET_TB, "__builtin_ppc_get_timebase",
  1793. RS6000_BTM_ALWAYS, RS6000_BTC_MISC)
  1794. BU_SPECIAL_X (RS6000_BUILTIN_MFTB, "__builtin_ppc_mftb",
  1795. RS6000_BTM_ALWAYS, RS6000_BTC_MISC)
  1796. BU_SPECIAL_X (RS6000_BUILTIN_MFFS, "__builtin_mffs",
  1797. RS6000_BTM_ALWAYS, RS6000_BTC_MISC)
  1798. RS6000_BUILTIN_X (RS6000_BUILTIN_MTFSF, "__builtin_mtfsf",
  1799. RS6000_BTM_ALWAYS,
  1800. RS6000_BTC_MISC | RS6000_BTC_UNARY | RS6000_BTC_VOID,
  1801. CODE_FOR_rs6000_mtfsf)
  1802. /* Darwin CfString builtin. */
  1803. BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_ALWAYS,
  1804. RS6000_BTC_MISC)