Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44269 lines
1.7 MiB

  1. /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
  2. |* *|
  3. |* Intrinsic Function Source Fragment *|
  4. |* *|
  5. |* Automatically generated file, do not edit! *|
  6. |* *|
  7. \*===----------------------------------------------------------------------===*/
  8. // VisualStudio defines setjmp as _setjmp
  9. #if defined(_MSC_VER) && defined(setjmp) && \
  10. !defined(setjmp_undefined_for_msvc)
  11. # pragma push_macro("setjmp")
  12. # undef setjmp
  13. # define setjmp_undefined_for_msvc
  14. #endif
  15. // Enum values for Intrinsics.h
  16. #ifdef GET_INTRINSIC_ENUM_VALUES
  17. adjust_trampoline, // llvm.adjust.trampoline
  18. annotation, // llvm.annotation
  19. arm_cdp, // llvm.arm.cdp
  20. arm_cdp2, // llvm.arm.cdp2
  21. arm_get_fpscr, // llvm.arm.get.fpscr
  22. arm_ldrexd, // llvm.arm.ldrexd
  23. arm_mcr, // llvm.arm.mcr
  24. arm_mcr2, // llvm.arm.mcr2
  25. arm_mcrr, // llvm.arm.mcrr
  26. arm_mcrr2, // llvm.arm.mcrr2
  27. arm_mrc, // llvm.arm.mrc
  28. arm_mrc2, // llvm.arm.mrc2
  29. arm_neon_vabds, // llvm.arm.neon.vabds
  30. arm_neon_vabdu, // llvm.arm.neon.vabdu
  31. arm_neon_vabs, // llvm.arm.neon.vabs
  32. arm_neon_vacged, // llvm.arm.neon.vacged
  33. arm_neon_vacgeq, // llvm.arm.neon.vacgeq
  34. arm_neon_vacgtd, // llvm.arm.neon.vacgtd
  35. arm_neon_vacgtq, // llvm.arm.neon.vacgtq
  36. arm_neon_vaddhn, // llvm.arm.neon.vaddhn
  37. arm_neon_vbsl, // llvm.arm.neon.vbsl
  38. arm_neon_vcls, // llvm.arm.neon.vcls
  39. arm_neon_vclz, // llvm.arm.neon.vclz
  40. arm_neon_vcnt, // llvm.arm.neon.vcnt
  41. arm_neon_vcvtfp2fxs, // llvm.arm.neon.vcvtfp2fxs
  42. arm_neon_vcvtfp2fxu, // llvm.arm.neon.vcvtfp2fxu
  43. arm_neon_vcvtfp2hf, // llvm.arm.neon.vcvtfp2hf
  44. arm_neon_vcvtfxs2fp, // llvm.arm.neon.vcvtfxs2fp
  45. arm_neon_vcvtfxu2fp, // llvm.arm.neon.vcvtfxu2fp
  46. arm_neon_vcvthf2fp, // llvm.arm.neon.vcvthf2fp
  47. arm_neon_vhadds, // llvm.arm.neon.vhadds
  48. arm_neon_vhaddu, // llvm.arm.neon.vhaddu
  49. arm_neon_vhsubs, // llvm.arm.neon.vhsubs
  50. arm_neon_vhsubu, // llvm.arm.neon.vhsubu
  51. arm_neon_vld1, // llvm.arm.neon.vld1
  52. arm_neon_vld2, // llvm.arm.neon.vld2
  53. arm_neon_vld2lane, // llvm.arm.neon.vld2lane
  54. arm_neon_vld3, // llvm.arm.neon.vld3
  55. arm_neon_vld3lane, // llvm.arm.neon.vld3lane
  56. arm_neon_vld4, // llvm.arm.neon.vld4
  57. arm_neon_vld4lane, // llvm.arm.neon.vld4lane
  58. arm_neon_vmaxs, // llvm.arm.neon.vmaxs
  59. arm_neon_vmaxu, // llvm.arm.neon.vmaxu
  60. arm_neon_vmins, // llvm.arm.neon.vmins
  61. arm_neon_vminu, // llvm.arm.neon.vminu
  62. arm_neon_vmullp, // llvm.arm.neon.vmullp
  63. arm_neon_vmulls, // llvm.arm.neon.vmulls
  64. arm_neon_vmullu, // llvm.arm.neon.vmullu
  65. arm_neon_vmulp, // llvm.arm.neon.vmulp
  66. arm_neon_vpadals, // llvm.arm.neon.vpadals
  67. arm_neon_vpadalu, // llvm.arm.neon.vpadalu
  68. arm_neon_vpadd, // llvm.arm.neon.vpadd
  69. arm_neon_vpaddls, // llvm.arm.neon.vpaddls
  70. arm_neon_vpaddlu, // llvm.arm.neon.vpaddlu
  71. arm_neon_vpmaxs, // llvm.arm.neon.vpmaxs
  72. arm_neon_vpmaxu, // llvm.arm.neon.vpmaxu
  73. arm_neon_vpmins, // llvm.arm.neon.vpmins
  74. arm_neon_vpminu, // llvm.arm.neon.vpminu
  75. arm_neon_vqabs, // llvm.arm.neon.vqabs
  76. arm_neon_vqadds, // llvm.arm.neon.vqadds
  77. arm_neon_vqaddu, // llvm.arm.neon.vqaddu
  78. arm_neon_vqdmlal, // llvm.arm.neon.vqdmlal
  79. arm_neon_vqdmlsl, // llvm.arm.neon.vqdmlsl
  80. arm_neon_vqdmulh, // llvm.arm.neon.vqdmulh
  81. arm_neon_vqdmull, // llvm.arm.neon.vqdmull
  82. arm_neon_vqmovns, // llvm.arm.neon.vqmovns
  83. arm_neon_vqmovnsu, // llvm.arm.neon.vqmovnsu
  84. arm_neon_vqmovnu, // llvm.arm.neon.vqmovnu
  85. arm_neon_vqneg, // llvm.arm.neon.vqneg
  86. arm_neon_vqrdmulh, // llvm.arm.neon.vqrdmulh
  87. arm_neon_vqrshiftns, // llvm.arm.neon.vqrshiftns
  88. arm_neon_vqrshiftnsu, // llvm.arm.neon.vqrshiftnsu
  89. arm_neon_vqrshiftnu, // llvm.arm.neon.vqrshiftnu
  90. arm_neon_vqrshifts, // llvm.arm.neon.vqrshifts
  91. arm_neon_vqrshiftu, // llvm.arm.neon.vqrshiftu
  92. arm_neon_vqshiftns, // llvm.arm.neon.vqshiftns
  93. arm_neon_vqshiftnsu, // llvm.arm.neon.vqshiftnsu
  94. arm_neon_vqshiftnu, // llvm.arm.neon.vqshiftnu
  95. arm_neon_vqshifts, // llvm.arm.neon.vqshifts
  96. arm_neon_vqshiftsu, // llvm.arm.neon.vqshiftsu
  97. arm_neon_vqshiftu, // llvm.arm.neon.vqshiftu
  98. arm_neon_vqsubs, // llvm.arm.neon.vqsubs
  99. arm_neon_vqsubu, // llvm.arm.neon.vqsubu
  100. arm_neon_vraddhn, // llvm.arm.neon.vraddhn
  101. arm_neon_vrecpe, // llvm.arm.neon.vrecpe
  102. arm_neon_vrecps, // llvm.arm.neon.vrecps
  103. arm_neon_vrhadds, // llvm.arm.neon.vrhadds
  104. arm_neon_vrhaddu, // llvm.arm.neon.vrhaddu
  105. arm_neon_vrshiftn, // llvm.arm.neon.vrshiftn
  106. arm_neon_vrshifts, // llvm.arm.neon.vrshifts
  107. arm_neon_vrshiftu, // llvm.arm.neon.vrshiftu
  108. arm_neon_vrsqrte, // llvm.arm.neon.vrsqrte
  109. arm_neon_vrsqrts, // llvm.arm.neon.vrsqrts
  110. arm_neon_vrsubhn, // llvm.arm.neon.vrsubhn
  111. arm_neon_vshiftins, // llvm.arm.neon.vshiftins
  112. arm_neon_vshiftls, // llvm.arm.neon.vshiftls
  113. arm_neon_vshiftlu, // llvm.arm.neon.vshiftlu
  114. arm_neon_vshiftn, // llvm.arm.neon.vshiftn
  115. arm_neon_vshifts, // llvm.arm.neon.vshifts
  116. arm_neon_vshiftu, // llvm.arm.neon.vshiftu
  117. arm_neon_vst1, // llvm.arm.neon.vst1
  118. arm_neon_vst2, // llvm.arm.neon.vst2
  119. arm_neon_vst2lane, // llvm.arm.neon.vst2lane
  120. arm_neon_vst3, // llvm.arm.neon.vst3
  121. arm_neon_vst3lane, // llvm.arm.neon.vst3lane
  122. arm_neon_vst4, // llvm.arm.neon.vst4
  123. arm_neon_vst4lane, // llvm.arm.neon.vst4lane
  124. arm_neon_vsubhn, // llvm.arm.neon.vsubhn
  125. arm_neon_vtbl1, // llvm.arm.neon.vtbl1
  126. arm_neon_vtbl2, // llvm.arm.neon.vtbl2
  127. arm_neon_vtbl3, // llvm.arm.neon.vtbl3
  128. arm_neon_vtbl4, // llvm.arm.neon.vtbl4
  129. arm_neon_vtbx1, // llvm.arm.neon.vtbx1
  130. arm_neon_vtbx2, // llvm.arm.neon.vtbx2
  131. arm_neon_vtbx3, // llvm.arm.neon.vtbx3
  132. arm_neon_vtbx4, // llvm.arm.neon.vtbx4
  133. arm_qadd, // llvm.arm.qadd
  134. arm_qsub, // llvm.arm.qsub
  135. arm_set_fpscr, // llvm.arm.set.fpscr
  136. arm_ssat, // llvm.arm.ssat
  137. arm_strexd, // llvm.arm.strexd
  138. arm_thread_pointer, // llvm.arm.thread.pointer
  139. arm_usat, // llvm.arm.usat
  140. arm_vcvtr, // llvm.arm.vcvtr
  141. arm_vcvtru, // llvm.arm.vcvtru
  142. bswap, // llvm.bswap
  143. convert_from_fp16, // llvm.convert.from.fp16
  144. convert_to_fp16, // llvm.convert.to.fp16
  145. convertff, // llvm.convertff
  146. convertfsi, // llvm.convertfsi
  147. convertfui, // llvm.convertfui
  148. convertsif, // llvm.convertsif
  149. convertss, // llvm.convertss
  150. convertsu, // llvm.convertsu
  151. convertuif, // llvm.convertuif
  152. convertus, // llvm.convertus
  153. convertuu, // llvm.convertuu
  154. cos, // llvm.cos
  155. ctlz, // llvm.ctlz
  156. ctpop, // llvm.ctpop
  157. cttz, // llvm.cttz
  158. cuda_syncthreads, // llvm.cuda.syncthreads
  159. dbg_declare, // llvm.dbg.declare
  160. dbg_value, // llvm.dbg.value
  161. debugtrap, // llvm.debugtrap
  162. donothing, // llvm.donothing
  163. eh_dwarf_cfa, // llvm.eh.dwarf.cfa
  164. eh_return_i32, // llvm.eh.return.i32
  165. eh_return_i64, // llvm.eh.return.i64
  166. eh_sjlj_callsite, // llvm.eh.sjlj.callsite
  167. eh_sjlj_functioncontext, // llvm.eh.sjlj.functioncontext
  168. eh_sjlj_longjmp, // llvm.eh.sjlj.longjmp
  169. eh_sjlj_lsda, // llvm.eh.sjlj.lsda
  170. eh_sjlj_setjmp, // llvm.eh.sjlj.setjmp
  171. eh_typeid_for, // llvm.eh.typeid.for
  172. eh_unwind_init, // llvm.eh.unwind.init
  173. exp, // llvm.exp
  174. exp2, // llvm.exp2
  175. expect, // llvm.expect
  176. fabs, // llvm.fabs
  177. floor, // llvm.floor
  178. flt_rounds, // llvm.flt.rounds
  179. fma, // llvm.fma
  180. fmuladd, // llvm.fmuladd
  181. frameaddress, // llvm.frameaddress
  182. gcread, // llvm.gcread
  183. gcroot, // llvm.gcroot
  184. gcwrite, // llvm.gcwrite
  185. hexagon_A2_abs, // llvm.hexagon.A2.abs
  186. hexagon_A2_absp, // llvm.hexagon.A2.absp
  187. hexagon_A2_abssat, // llvm.hexagon.A2.abssat
  188. hexagon_A2_add, // llvm.hexagon.A2.add
  189. hexagon_A2_addh_h16_hh, // llvm.hexagon.A2.addh.h16.hh
  190. hexagon_A2_addh_h16_hl, // llvm.hexagon.A2.addh.h16.hl
  191. hexagon_A2_addh_h16_lh, // llvm.hexagon.A2.addh.h16.lh
  192. hexagon_A2_addh_h16_ll, // llvm.hexagon.A2.addh.h16.ll
  193. hexagon_A2_addh_h16_sat_hh, // llvm.hexagon.A2.addh.h16.sat.hh
  194. hexagon_A2_addh_h16_sat_hl, // llvm.hexagon.A2.addh.h16.sat.hl
  195. hexagon_A2_addh_h16_sat_lh, // llvm.hexagon.A2.addh.h16.sat.lh
  196. hexagon_A2_addh_h16_sat_ll, // llvm.hexagon.A2.addh.h16.sat.ll
  197. hexagon_A2_addh_l16_hl, // llvm.hexagon.A2.addh.l16.hl
  198. hexagon_A2_addh_l16_ll, // llvm.hexagon.A2.addh.l16.ll
  199. hexagon_A2_addh_l16_sat_hl, // llvm.hexagon.A2.addh.l16.sat.hl
  200. hexagon_A2_addh_l16_sat_ll, // llvm.hexagon.A2.addh.l16.sat.ll
  201. hexagon_A2_addi, // llvm.hexagon.A2.addi
  202. hexagon_A2_addp, // llvm.hexagon.A2.addp
  203. hexagon_A2_addpsat, // llvm.hexagon.A2.addpsat
  204. hexagon_A2_addsat, // llvm.hexagon.A2.addsat
  205. hexagon_A2_addsp, // llvm.hexagon.A2.addsp
  206. hexagon_A2_and, // llvm.hexagon.A2.and
  207. hexagon_A2_andir, // llvm.hexagon.A2.andir
  208. hexagon_A2_andp, // llvm.hexagon.A2.andp
  209. hexagon_A2_aslh, // llvm.hexagon.A2.aslh
  210. hexagon_A2_asrh, // llvm.hexagon.A2.asrh
  211. hexagon_A2_combine_hh, // llvm.hexagon.A2.combine.hh
  212. hexagon_A2_combine_hl, // llvm.hexagon.A2.combine.hl
  213. hexagon_A2_combine_lh, // llvm.hexagon.A2.combine.lh
  214. hexagon_A2_combine_ll, // llvm.hexagon.A2.combine.ll
  215. hexagon_A2_combineii, // llvm.hexagon.A2.combineii
  216. hexagon_A2_combinew, // llvm.hexagon.A2.combinew
  217. hexagon_A2_max, // llvm.hexagon.A2.max
  218. hexagon_A2_maxp, // llvm.hexagon.A2.maxp
  219. hexagon_A2_maxu, // llvm.hexagon.A2.maxu
  220. hexagon_A2_maxup, // llvm.hexagon.A2.maxup
  221. hexagon_A2_min, // llvm.hexagon.A2.min
  222. hexagon_A2_minp, // llvm.hexagon.A2.minp
  223. hexagon_A2_minu, // llvm.hexagon.A2.minu
  224. hexagon_A2_minup, // llvm.hexagon.A2.minup
  225. hexagon_A2_neg, // llvm.hexagon.A2.neg
  226. hexagon_A2_negp, // llvm.hexagon.A2.negp
  227. hexagon_A2_negsat, // llvm.hexagon.A2.negsat
  228. hexagon_A2_not, // llvm.hexagon.A2.not
  229. hexagon_A2_notp, // llvm.hexagon.A2.notp
  230. hexagon_A2_or, // llvm.hexagon.A2.or
  231. hexagon_A2_orir, // llvm.hexagon.A2.orir
  232. hexagon_A2_orp, // llvm.hexagon.A2.orp
  233. hexagon_A2_roundsat, // llvm.hexagon.A2.roundsat
  234. hexagon_A2_sat, // llvm.hexagon.A2.sat
  235. hexagon_A2_satb, // llvm.hexagon.A2.satb
  236. hexagon_A2_sath, // llvm.hexagon.A2.sath
  237. hexagon_A2_satub, // llvm.hexagon.A2.satub
  238. hexagon_A2_satuh, // llvm.hexagon.A2.satuh
  239. hexagon_A2_sub, // llvm.hexagon.A2.sub
  240. hexagon_A2_subh_h16_hh, // llvm.hexagon.A2.subh.h16.hh
  241. hexagon_A2_subh_h16_hl, // llvm.hexagon.A2.subh.h16.hl
  242. hexagon_A2_subh_h16_lh, // llvm.hexagon.A2.subh.h16.lh
  243. hexagon_A2_subh_h16_ll, // llvm.hexagon.A2.subh.h16.ll
  244. hexagon_A2_subh_h16_sat_hh, // llvm.hexagon.A2.subh.h16.sat.hh
  245. hexagon_A2_subh_h16_sat_hl, // llvm.hexagon.A2.subh.h16.sat.hl
  246. hexagon_A2_subh_h16_sat_lh, // llvm.hexagon.A2.subh.h16.sat.lh
  247. hexagon_A2_subh_h16_sat_ll, // llvm.hexagon.A2.subh.h16.sat.ll
  248. hexagon_A2_subh_l16_hl, // llvm.hexagon.A2.subh.l16.hl
  249. hexagon_A2_subh_l16_ll, // llvm.hexagon.A2.subh.l16.ll
  250. hexagon_A2_subh_l16_sat_hl, // llvm.hexagon.A2.subh.l16.sat.hl
  251. hexagon_A2_subh_l16_sat_ll, // llvm.hexagon.A2.subh.l16.sat.ll
  252. hexagon_A2_subp, // llvm.hexagon.A2.subp
  253. hexagon_A2_subri, // llvm.hexagon.A2.subri
  254. hexagon_A2_subsat, // llvm.hexagon.A2.subsat
  255. hexagon_A2_svaddh, // llvm.hexagon.A2.svaddh
  256. hexagon_A2_svaddhs, // llvm.hexagon.A2.svaddhs
  257. hexagon_A2_svadduhs, // llvm.hexagon.A2.svadduhs
  258. hexagon_A2_svavgh, // llvm.hexagon.A2.svavgh
  259. hexagon_A2_svavghs, // llvm.hexagon.A2.svavghs
  260. hexagon_A2_svnavgh, // llvm.hexagon.A2.svnavgh
  261. hexagon_A2_svsubh, // llvm.hexagon.A2.svsubh
  262. hexagon_A2_svsubhs, // llvm.hexagon.A2.svsubhs
  263. hexagon_A2_svsubuhs, // llvm.hexagon.A2.svsubuhs
  264. hexagon_A2_swiz, // llvm.hexagon.A2.swiz
  265. hexagon_A2_sxtb, // llvm.hexagon.A2.sxtb
  266. hexagon_A2_sxth, // llvm.hexagon.A2.sxth
  267. hexagon_A2_sxtw, // llvm.hexagon.A2.sxtw
  268. hexagon_A2_tfr, // llvm.hexagon.A2.tfr
  269. hexagon_A2_tfrih, // llvm.hexagon.A2.tfrih
  270. hexagon_A2_tfril, // llvm.hexagon.A2.tfril
  271. hexagon_A2_tfrp, // llvm.hexagon.A2.tfrp
  272. hexagon_A2_tfrpi, // llvm.hexagon.A2.tfrpi
  273. hexagon_A2_tfrsi, // llvm.hexagon.A2.tfrsi
  274. hexagon_A2_vabsh, // llvm.hexagon.A2.vabsh
  275. hexagon_A2_vabshsat, // llvm.hexagon.A2.vabshsat
  276. hexagon_A2_vabsw, // llvm.hexagon.A2.vabsw
  277. hexagon_A2_vabswsat, // llvm.hexagon.A2.vabswsat
  278. hexagon_A2_vaddb_map, // llvm.hexagon.A2.vaddb.map
  279. hexagon_A2_vaddh, // llvm.hexagon.A2.vaddh
  280. hexagon_A2_vaddhs, // llvm.hexagon.A2.vaddhs
  281. hexagon_A2_vaddub, // llvm.hexagon.A2.vaddub
  282. hexagon_A2_vaddubs, // llvm.hexagon.A2.vaddubs
  283. hexagon_A2_vadduhs, // llvm.hexagon.A2.vadduhs
  284. hexagon_A2_vaddw, // llvm.hexagon.A2.vaddw
  285. hexagon_A2_vaddws, // llvm.hexagon.A2.vaddws
  286. hexagon_A2_vavgh, // llvm.hexagon.A2.vavgh
  287. hexagon_A2_vavghcr, // llvm.hexagon.A2.vavghcr
  288. hexagon_A2_vavghr, // llvm.hexagon.A2.vavghr
  289. hexagon_A2_vavgub, // llvm.hexagon.A2.vavgub
  290. hexagon_A2_vavgubr, // llvm.hexagon.A2.vavgubr
  291. hexagon_A2_vavguh, // llvm.hexagon.A2.vavguh
  292. hexagon_A2_vavguhr, // llvm.hexagon.A2.vavguhr
  293. hexagon_A2_vavguw, // llvm.hexagon.A2.vavguw
  294. hexagon_A2_vavguwr, // llvm.hexagon.A2.vavguwr
  295. hexagon_A2_vavgw, // llvm.hexagon.A2.vavgw
  296. hexagon_A2_vavgwcr, // llvm.hexagon.A2.vavgwcr
  297. hexagon_A2_vavgwr, // llvm.hexagon.A2.vavgwr
  298. hexagon_A2_vcmpbeq, // llvm.hexagon.A2.vcmpbeq
  299. hexagon_A2_vcmpbgtu, // llvm.hexagon.A2.vcmpbgtu
  300. hexagon_A2_vcmpheq, // llvm.hexagon.A2.vcmpheq
  301. hexagon_A2_vcmphgt, // llvm.hexagon.A2.vcmphgt
  302. hexagon_A2_vcmphgtu, // llvm.hexagon.A2.vcmphgtu
  303. hexagon_A2_vcmpweq, // llvm.hexagon.A2.vcmpweq
  304. hexagon_A2_vcmpwgt, // llvm.hexagon.A2.vcmpwgt
  305. hexagon_A2_vcmpwgtu, // llvm.hexagon.A2.vcmpwgtu
  306. hexagon_A2_vconj, // llvm.hexagon.A2.vconj
  307. hexagon_A2_vmaxb, // llvm.hexagon.A2.vmaxb
  308. hexagon_A2_vmaxh, // llvm.hexagon.A2.vmaxh
  309. hexagon_A2_vmaxub, // llvm.hexagon.A2.vmaxub
  310. hexagon_A2_vmaxuh, // llvm.hexagon.A2.vmaxuh
  311. hexagon_A2_vmaxuw, // llvm.hexagon.A2.vmaxuw
  312. hexagon_A2_vmaxw, // llvm.hexagon.A2.vmaxw
  313. hexagon_A2_vminb, // llvm.hexagon.A2.vminb
  314. hexagon_A2_vminh, // llvm.hexagon.A2.vminh
  315. hexagon_A2_vminub, // llvm.hexagon.A2.vminub
  316. hexagon_A2_vminuh, // llvm.hexagon.A2.vminuh
  317. hexagon_A2_vminuw, // llvm.hexagon.A2.vminuw
  318. hexagon_A2_vminw, // llvm.hexagon.A2.vminw
  319. hexagon_A2_vnavgh, // llvm.hexagon.A2.vnavgh
  320. hexagon_A2_vnavghcr, // llvm.hexagon.A2.vnavghcr
  321. hexagon_A2_vnavghr, // llvm.hexagon.A2.vnavghr
  322. hexagon_A2_vnavgw, // llvm.hexagon.A2.vnavgw
  323. hexagon_A2_vnavgwcr, // llvm.hexagon.A2.vnavgwcr
  324. hexagon_A2_vnavgwr, // llvm.hexagon.A2.vnavgwr
  325. hexagon_A2_vraddub, // llvm.hexagon.A2.vraddub
  326. hexagon_A2_vraddub_acc, // llvm.hexagon.A2.vraddub.acc
  327. hexagon_A2_vrsadub, // llvm.hexagon.A2.vrsadub
  328. hexagon_A2_vrsadub_acc, // llvm.hexagon.A2.vrsadub.acc
  329. hexagon_A2_vsubb_map, // llvm.hexagon.A2.vsubb.map
  330. hexagon_A2_vsubh, // llvm.hexagon.A2.vsubh
  331. hexagon_A2_vsubhs, // llvm.hexagon.A2.vsubhs
  332. hexagon_A2_vsubub, // llvm.hexagon.A2.vsubub
  333. hexagon_A2_vsububs, // llvm.hexagon.A2.vsububs
  334. hexagon_A2_vsubuhs, // llvm.hexagon.A2.vsubuhs
  335. hexagon_A2_vsubw, // llvm.hexagon.A2.vsubw
  336. hexagon_A2_vsubws, // llvm.hexagon.A2.vsubws
  337. hexagon_A2_xor, // llvm.hexagon.A2.xor
  338. hexagon_A2_xorp, // llvm.hexagon.A2.xorp
  339. hexagon_A2_zxtb, // llvm.hexagon.A2.zxtb
  340. hexagon_A2_zxth, // llvm.hexagon.A2.zxth
  341. hexagon_A4_andn, // llvm.hexagon.A4.andn
  342. hexagon_A4_andnp, // llvm.hexagon.A4.andnp
  343. hexagon_A4_bitsplit, // llvm.hexagon.A4.bitsplit
  344. hexagon_A4_bitspliti, // llvm.hexagon.A4.bitspliti
  345. hexagon_A4_boundscheck, // llvm.hexagon.A4.boundscheck
  346. hexagon_A4_cmpbeq, // llvm.hexagon.A4.cmpbeq
  347. hexagon_A4_cmpbeqi, // llvm.hexagon.A4.cmpbeqi
  348. hexagon_A4_cmpbgt, // llvm.hexagon.A4.cmpbgt
  349. hexagon_A4_cmpbgti, // llvm.hexagon.A4.cmpbgti
  350. hexagon_A4_cmpbgtu, // llvm.hexagon.A4.cmpbgtu
  351. hexagon_A4_cmpbgtui, // llvm.hexagon.A4.cmpbgtui
  352. hexagon_A4_cmpheq, // llvm.hexagon.A4.cmpheq
  353. hexagon_A4_cmpheqi, // llvm.hexagon.A4.cmpheqi
  354. hexagon_A4_cmphgt, // llvm.hexagon.A4.cmphgt
  355. hexagon_A4_cmphgti, // llvm.hexagon.A4.cmphgti
  356. hexagon_A4_cmphgtu, // llvm.hexagon.A4.cmphgtu
  357. hexagon_A4_cmphgtui, // llvm.hexagon.A4.cmphgtui
  358. hexagon_A4_combineir, // llvm.hexagon.A4.combineir
  359. hexagon_A4_combineri, // llvm.hexagon.A4.combineri
  360. hexagon_A4_cround_ri, // llvm.hexagon.A4.cround.ri
  361. hexagon_A4_cround_rr, // llvm.hexagon.A4.cround.rr
  362. hexagon_A4_modwrapu, // llvm.hexagon.A4.modwrapu
  363. hexagon_A4_orn, // llvm.hexagon.A4.orn
  364. hexagon_A4_ornp, // llvm.hexagon.A4.ornp
  365. hexagon_A4_rcmpeq, // llvm.hexagon.A4.rcmpeq
  366. hexagon_A4_rcmpeqi, // llvm.hexagon.A4.rcmpeqi
  367. hexagon_A4_rcmpneq, // llvm.hexagon.A4.rcmpneq
  368. hexagon_A4_rcmpneqi, // llvm.hexagon.A4.rcmpneqi
  369. hexagon_A4_round_ri, // llvm.hexagon.A4.round.ri
  370. hexagon_A4_round_ri_sat, // llvm.hexagon.A4.round.ri.sat
  371. hexagon_A4_round_rr, // llvm.hexagon.A4.round.rr
  372. hexagon_A4_round_rr_sat, // llvm.hexagon.A4.round.rr.sat
  373. hexagon_A4_tlbmatch, // llvm.hexagon.A4.tlbmatch
  374. hexagon_A4_vcmpbeq_any, // llvm.hexagon.A4.vcmpbeq.any
  375. hexagon_A4_vcmpbeqi, // llvm.hexagon.A4.vcmpbeqi
  376. hexagon_A4_vcmpbgt, // llvm.hexagon.A4.vcmpbgt
  377. hexagon_A4_vcmpbgti, // llvm.hexagon.A4.vcmpbgti
  378. hexagon_A4_vcmpbgtui, // llvm.hexagon.A4.vcmpbgtui
  379. hexagon_A4_vcmpheqi, // llvm.hexagon.A4.vcmpheqi
  380. hexagon_A4_vcmphgti, // llvm.hexagon.A4.vcmphgti
  381. hexagon_A4_vcmphgtui, // llvm.hexagon.A4.vcmphgtui
  382. hexagon_A4_vcmpweqi, // llvm.hexagon.A4.vcmpweqi
  383. hexagon_A4_vcmpwgti, // llvm.hexagon.A4.vcmpwgti
  384. hexagon_A4_vcmpwgtui, // llvm.hexagon.A4.vcmpwgtui
  385. hexagon_A4_vrmaxh, // llvm.hexagon.A4.vrmaxh
  386. hexagon_A4_vrmaxuh, // llvm.hexagon.A4.vrmaxuh
  387. hexagon_A4_vrmaxuw, // llvm.hexagon.A4.vrmaxuw
  388. hexagon_A4_vrmaxw, // llvm.hexagon.A4.vrmaxw
  389. hexagon_A4_vrminh, // llvm.hexagon.A4.vrminh
  390. hexagon_A4_vrminuh, // llvm.hexagon.A4.vrminuh
  391. hexagon_A4_vrminuw, // llvm.hexagon.A4.vrminuw
  392. hexagon_A4_vrminw, // llvm.hexagon.A4.vrminw
  393. hexagon_A5_vaddhubs, // llvm.hexagon.A5.vaddhubs
  394. hexagon_C2_all8, // llvm.hexagon.C2.all8
  395. hexagon_C2_and, // llvm.hexagon.C2.and
  396. hexagon_C2_andn, // llvm.hexagon.C2.andn
  397. hexagon_C2_any8, // llvm.hexagon.C2.any8
  398. hexagon_C2_bitsclr, // llvm.hexagon.C2.bitsclr
  399. hexagon_C2_bitsclri, // llvm.hexagon.C2.bitsclri
  400. hexagon_C2_bitsset, // llvm.hexagon.C2.bitsset
  401. hexagon_C2_cmpeq, // llvm.hexagon.C2.cmpeq
  402. hexagon_C2_cmpeqi, // llvm.hexagon.C2.cmpeqi
  403. hexagon_C2_cmpeqp, // llvm.hexagon.C2.cmpeqp
  404. hexagon_C2_cmpgei, // llvm.hexagon.C2.cmpgei
  405. hexagon_C2_cmpgeui, // llvm.hexagon.C2.cmpgeui
  406. hexagon_C2_cmpgt, // llvm.hexagon.C2.cmpgt
  407. hexagon_C2_cmpgti, // llvm.hexagon.C2.cmpgti
  408. hexagon_C2_cmpgtp, // llvm.hexagon.C2.cmpgtp
  409. hexagon_C2_cmpgtu, // llvm.hexagon.C2.cmpgtu
  410. hexagon_C2_cmpgtui, // llvm.hexagon.C2.cmpgtui
  411. hexagon_C2_cmpgtup, // llvm.hexagon.C2.cmpgtup
  412. hexagon_C2_cmplt, // llvm.hexagon.C2.cmplt
  413. hexagon_C2_cmpltu, // llvm.hexagon.C2.cmpltu
  414. hexagon_C2_mask, // llvm.hexagon.C2.mask
  415. hexagon_C2_mux, // llvm.hexagon.C2.mux
  416. hexagon_C2_muxii, // llvm.hexagon.C2.muxii
  417. hexagon_C2_muxir, // llvm.hexagon.C2.muxir
  418. hexagon_C2_muxri, // llvm.hexagon.C2.muxri
  419. hexagon_C2_not, // llvm.hexagon.C2.not
  420. hexagon_C2_or, // llvm.hexagon.C2.or
  421. hexagon_C2_orn, // llvm.hexagon.C2.orn
  422. hexagon_C2_pxfer_map, // llvm.hexagon.C2.pxfer.map
  423. hexagon_C2_tfrpr, // llvm.hexagon.C2.tfrpr
  424. hexagon_C2_tfrrp, // llvm.hexagon.C2.tfrrp
  425. hexagon_C2_vitpack, // llvm.hexagon.C2.vitpack
  426. hexagon_C2_vmux, // llvm.hexagon.C2.vmux
  427. hexagon_C2_xor, // llvm.hexagon.C2.xor
  428. hexagon_C4_and_and, // llvm.hexagon.C4.and.and
  429. hexagon_C4_and_andn, // llvm.hexagon.C4.and.andn
  430. hexagon_C4_and_or, // llvm.hexagon.C4.and.or
  431. hexagon_C4_and_orn, // llvm.hexagon.C4.and.orn
  432. hexagon_C4_cmplte, // llvm.hexagon.C4.cmplte
  433. hexagon_C4_cmpltei, // llvm.hexagon.C4.cmpltei
  434. hexagon_C4_cmplteu, // llvm.hexagon.C4.cmplteu
  435. hexagon_C4_cmplteui, // llvm.hexagon.C4.cmplteui
  436. hexagon_C4_cmpneq, // llvm.hexagon.C4.cmpneq
  437. hexagon_C4_cmpneqi, // llvm.hexagon.C4.cmpneqi
  438. hexagon_C4_fastcorner9, // llvm.hexagon.C4.fastcorner9
  439. hexagon_C4_fastcorner9_not, // llvm.hexagon.C4.fastcorner9.not
  440. hexagon_C4_nbitsclr, // llvm.hexagon.C4.nbitsclr
  441. hexagon_C4_nbitsclri, // llvm.hexagon.C4.nbitsclri
  442. hexagon_C4_nbitsset, // llvm.hexagon.C4.nbitsset
  443. hexagon_C4_or_and, // llvm.hexagon.C4.or.and
  444. hexagon_C4_or_andn, // llvm.hexagon.C4.or.andn
  445. hexagon_C4_or_or, // llvm.hexagon.C4.or.or
  446. hexagon_C4_or_orn, // llvm.hexagon.C4.or.orn
  447. hexagon_F2_conv_d2df, // llvm.hexagon.F2.conv.d2df
  448. hexagon_F2_conv_d2sf, // llvm.hexagon.F2.conv.d2sf
  449. hexagon_F2_conv_df2d, // llvm.hexagon.F2.conv.df2d
  450. hexagon_F2_conv_df2d_chop, // llvm.hexagon.F2.conv.df2d.chop
  451. hexagon_F2_conv_df2sf, // llvm.hexagon.F2.conv.df2sf
  452. hexagon_F2_conv_df2ud, // llvm.hexagon.F2.conv.df2ud
  453. hexagon_F2_conv_df2ud_chop, // llvm.hexagon.F2.conv.df2ud.chop
  454. hexagon_F2_conv_df2uw, // llvm.hexagon.F2.conv.df2uw
  455. hexagon_F2_conv_df2uw_chop, // llvm.hexagon.F2.conv.df2uw.chop
  456. hexagon_F2_conv_df2w, // llvm.hexagon.F2.conv.df2w
  457. hexagon_F2_conv_df2w_chop, // llvm.hexagon.F2.conv.df2w.chop
  458. hexagon_F2_conv_sf2d, // llvm.hexagon.F2.conv.sf2d
  459. hexagon_F2_conv_sf2d_chop, // llvm.hexagon.F2.conv.sf2d.chop
  460. hexagon_F2_conv_sf2df, // llvm.hexagon.F2.conv.sf2df
  461. hexagon_F2_conv_sf2ud, // llvm.hexagon.F2.conv.sf2ud
  462. hexagon_F2_conv_sf2ud_chop, // llvm.hexagon.F2.conv.sf2ud.chop
  463. hexagon_F2_conv_sf2uw, // llvm.hexagon.F2.conv.sf2uw
  464. hexagon_F2_conv_sf2uw_chop, // llvm.hexagon.F2.conv.sf2uw.chop
  465. hexagon_F2_conv_sf2w, // llvm.hexagon.F2.conv.sf2w
  466. hexagon_F2_conv_sf2w_chop, // llvm.hexagon.F2.conv.sf2w.chop
  467. hexagon_F2_conv_ud2df, // llvm.hexagon.F2.conv.ud2df
  468. hexagon_F2_conv_ud2sf, // llvm.hexagon.F2.conv.ud2sf
  469. hexagon_F2_conv_uw2df, // llvm.hexagon.F2.conv.uw2df
  470. hexagon_F2_conv_uw2sf, // llvm.hexagon.F2.conv.uw2sf
  471. hexagon_F2_conv_w2df, // llvm.hexagon.F2.conv.w2df
  472. hexagon_F2_conv_w2sf, // llvm.hexagon.F2.conv.w2sf
  473. hexagon_F2_dfadd, // llvm.hexagon.F2.dfadd
  474. hexagon_F2_dfclass, // llvm.hexagon.F2.dfclass
  475. hexagon_F2_dfcmpeq, // llvm.hexagon.F2.dfcmpeq
  476. hexagon_F2_dfcmpge, // llvm.hexagon.F2.dfcmpge
  477. hexagon_F2_dfcmpgt, // llvm.hexagon.F2.dfcmpgt
  478. hexagon_F2_dfcmpuo, // llvm.hexagon.F2.dfcmpuo
  479. hexagon_F2_dffixupd, // llvm.hexagon.F2.dffixupd
  480. hexagon_F2_dffixupn, // llvm.hexagon.F2.dffixupn
  481. hexagon_F2_dffixupr, // llvm.hexagon.F2.dffixupr
  482. hexagon_F2_dffma, // llvm.hexagon.F2.dffma
  483. hexagon_F2_dffma_lib, // llvm.hexagon.F2.dffma.lib
  484. hexagon_F2_dffma_sc, // llvm.hexagon.F2.dffma.sc
  485. hexagon_F2_dffms, // llvm.hexagon.F2.dffms
  486. hexagon_F2_dffms_lib, // llvm.hexagon.F2.dffms.lib
  487. hexagon_F2_dfimm_n, // llvm.hexagon.F2.dfimm.n
  488. hexagon_F2_dfimm_p, // llvm.hexagon.F2.dfimm.p
  489. hexagon_F2_dfmax, // llvm.hexagon.F2.dfmax
  490. hexagon_F2_dfmin, // llvm.hexagon.F2.dfmin
  491. hexagon_F2_dfmpy, // llvm.hexagon.F2.dfmpy
  492. hexagon_F2_dfsub, // llvm.hexagon.F2.dfsub
  493. hexagon_F2_sfadd, // llvm.hexagon.F2.sfadd
  494. hexagon_F2_sfclass, // llvm.hexagon.F2.sfclass
  495. hexagon_F2_sfcmpeq, // llvm.hexagon.F2.sfcmpeq
  496. hexagon_F2_sfcmpge, // llvm.hexagon.F2.sfcmpge
  497. hexagon_F2_sfcmpgt, // llvm.hexagon.F2.sfcmpgt
  498. hexagon_F2_sfcmpuo, // llvm.hexagon.F2.sfcmpuo
  499. hexagon_F2_sffixupd, // llvm.hexagon.F2.sffixupd
  500. hexagon_F2_sffixupn, // llvm.hexagon.F2.sffixupn
  501. hexagon_F2_sffixupr, // llvm.hexagon.F2.sffixupr
  502. hexagon_F2_sffma, // llvm.hexagon.F2.sffma
  503. hexagon_F2_sffma_lib, // llvm.hexagon.F2.sffma.lib
  504. hexagon_F2_sffma_sc, // llvm.hexagon.F2.sffma.sc
  505. hexagon_F2_sffms, // llvm.hexagon.F2.sffms
  506. hexagon_F2_sffms_lib, // llvm.hexagon.F2.sffms.lib
  507. hexagon_F2_sfimm_n, // llvm.hexagon.F2.sfimm.n
  508. hexagon_F2_sfimm_p, // llvm.hexagon.F2.sfimm.p
  509. hexagon_F2_sfmax, // llvm.hexagon.F2.sfmax
  510. hexagon_F2_sfmin, // llvm.hexagon.F2.sfmin
  511. hexagon_F2_sfmpy, // llvm.hexagon.F2.sfmpy
  512. hexagon_F2_sfsub, // llvm.hexagon.F2.sfsub
  513. hexagon_M2_acci, // llvm.hexagon.M2.acci
  514. hexagon_M2_accii, // llvm.hexagon.M2.accii
  515. hexagon_M2_cmaci_s0, // llvm.hexagon.M2.cmaci.s0
  516. hexagon_M2_cmacr_s0, // llvm.hexagon.M2.cmacr.s0
  517. hexagon_M2_cmacs_s0, // llvm.hexagon.M2.cmacs.s0
  518. hexagon_M2_cmacs_s1, // llvm.hexagon.M2.cmacs.s1
  519. hexagon_M2_cmacsc_s0, // llvm.hexagon.M2.cmacsc.s0
  520. hexagon_M2_cmacsc_s1, // llvm.hexagon.M2.cmacsc.s1
  521. hexagon_M2_cmpyi_s0, // llvm.hexagon.M2.cmpyi.s0
  522. hexagon_M2_cmpyr_s0, // llvm.hexagon.M2.cmpyr.s0
  523. hexagon_M2_cmpyrs_s0, // llvm.hexagon.M2.cmpyrs.s0
  524. hexagon_M2_cmpyrs_s1, // llvm.hexagon.M2.cmpyrs.s1
  525. hexagon_M2_cmpyrsc_s0, // llvm.hexagon.M2.cmpyrsc.s0
  526. hexagon_M2_cmpyrsc_s1, // llvm.hexagon.M2.cmpyrsc.s1
  527. hexagon_M2_cmpys_s0, // llvm.hexagon.M2.cmpys.s0
  528. hexagon_M2_cmpys_s1, // llvm.hexagon.M2.cmpys.s1
  529. hexagon_M2_cmpysc_s0, // llvm.hexagon.M2.cmpysc.s0
  530. hexagon_M2_cmpysc_s1, // llvm.hexagon.M2.cmpysc.s1
  531. hexagon_M2_cnacs_s0, // llvm.hexagon.M2.cnacs.s0
  532. hexagon_M2_cnacs_s1, // llvm.hexagon.M2.cnacs.s1
  533. hexagon_M2_cnacsc_s0, // llvm.hexagon.M2.cnacsc.s0
  534. hexagon_M2_cnacsc_s1, // llvm.hexagon.M2.cnacsc.s1
  535. hexagon_M2_dpmpyss_acc_s0, // llvm.hexagon.M2.dpmpyss.acc.s0
  536. hexagon_M2_dpmpyss_nac_s0, // llvm.hexagon.M2.dpmpyss.nac.s0
  537. hexagon_M2_dpmpyss_rnd_s0, // llvm.hexagon.M2.dpmpyss.rnd.s0
  538. hexagon_M2_dpmpyss_s0, // llvm.hexagon.M2.dpmpyss.s0
  539. hexagon_M2_dpmpyuu_acc_s0, // llvm.hexagon.M2.dpmpyuu.acc.s0
  540. hexagon_M2_dpmpyuu_nac_s0, // llvm.hexagon.M2.dpmpyuu.nac.s0
  541. hexagon_M2_dpmpyuu_s0, // llvm.hexagon.M2.dpmpyuu.s0
  542. hexagon_M2_hmmpyh_rs1, // llvm.hexagon.M2.hmmpyh.rs1
  543. hexagon_M2_hmmpyh_s1, // llvm.hexagon.M2.hmmpyh.s1
  544. hexagon_M2_hmmpyl_rs1, // llvm.hexagon.M2.hmmpyl.rs1
  545. hexagon_M2_hmmpyl_s1, // llvm.hexagon.M2.hmmpyl.s1
  546. hexagon_M2_maci, // llvm.hexagon.M2.maci
  547. hexagon_M2_macsin, // llvm.hexagon.M2.macsin
  548. hexagon_M2_macsip, // llvm.hexagon.M2.macsip
  549. hexagon_M2_mmachs_rs0, // llvm.hexagon.M2.mmachs.rs0
  550. hexagon_M2_mmachs_rs1, // llvm.hexagon.M2.mmachs.rs1
  551. hexagon_M2_mmachs_s0, // llvm.hexagon.M2.mmachs.s0
  552. hexagon_M2_mmachs_s1, // llvm.hexagon.M2.mmachs.s1
  553. hexagon_M2_mmacls_rs0, // llvm.hexagon.M2.mmacls.rs0
  554. hexagon_M2_mmacls_rs1, // llvm.hexagon.M2.mmacls.rs1
  555. hexagon_M2_mmacls_s0, // llvm.hexagon.M2.mmacls.s0
  556. hexagon_M2_mmacls_s1, // llvm.hexagon.M2.mmacls.s1
  557. hexagon_M2_mmacuhs_rs0, // llvm.hexagon.M2.mmacuhs.rs0
  558. hexagon_M2_mmacuhs_rs1, // llvm.hexagon.M2.mmacuhs.rs1
  559. hexagon_M2_mmacuhs_s0, // llvm.hexagon.M2.mmacuhs.s0
  560. hexagon_M2_mmacuhs_s1, // llvm.hexagon.M2.mmacuhs.s1
  561. hexagon_M2_mmaculs_rs0, // llvm.hexagon.M2.mmaculs.rs0
  562. hexagon_M2_mmaculs_rs1, // llvm.hexagon.M2.mmaculs.rs1
  563. hexagon_M2_mmaculs_s0, // llvm.hexagon.M2.mmaculs.s0
  564. hexagon_M2_mmaculs_s1, // llvm.hexagon.M2.mmaculs.s1
  565. hexagon_M2_mmpyh_rs0, // llvm.hexagon.M2.mmpyh.rs0
  566. hexagon_M2_mmpyh_rs1, // llvm.hexagon.M2.mmpyh.rs1
  567. hexagon_M2_mmpyh_s0, // llvm.hexagon.M2.mmpyh.s0
  568. hexagon_M2_mmpyh_s1, // llvm.hexagon.M2.mmpyh.s1
  569. hexagon_M2_mmpyl_rs0, // llvm.hexagon.M2.mmpyl.rs0
  570. hexagon_M2_mmpyl_rs1, // llvm.hexagon.M2.mmpyl.rs1
  571. hexagon_M2_mmpyl_s0, // llvm.hexagon.M2.mmpyl.s0
  572. hexagon_M2_mmpyl_s1, // llvm.hexagon.M2.mmpyl.s1
  573. hexagon_M2_mmpyuh_rs0, // llvm.hexagon.M2.mmpyuh.rs0
  574. hexagon_M2_mmpyuh_rs1, // llvm.hexagon.M2.mmpyuh.rs1
  575. hexagon_M2_mmpyuh_s0, // llvm.hexagon.M2.mmpyuh.s0
  576. hexagon_M2_mmpyuh_s1, // llvm.hexagon.M2.mmpyuh.s1
  577. hexagon_M2_mmpyul_rs0, // llvm.hexagon.M2.mmpyul.rs0
  578. hexagon_M2_mmpyul_rs1, // llvm.hexagon.M2.mmpyul.rs1
  579. hexagon_M2_mmpyul_s0, // llvm.hexagon.M2.mmpyul.s0
  580. hexagon_M2_mmpyul_s1, // llvm.hexagon.M2.mmpyul.s1
  581. hexagon_M2_mpy_acc_hh_s0, // llvm.hexagon.M2.mpy.acc.hh.s0
  582. hexagon_M2_mpy_acc_hh_s1, // llvm.hexagon.M2.mpy.acc.hh.s1
  583. hexagon_M2_mpy_acc_hl_s0, // llvm.hexagon.M2.mpy.acc.hl.s0
  584. hexagon_M2_mpy_acc_hl_s1, // llvm.hexagon.M2.mpy.acc.hl.s1
  585. hexagon_M2_mpy_acc_lh_s0, // llvm.hexagon.M2.mpy.acc.lh.s0
  586. hexagon_M2_mpy_acc_lh_s1, // llvm.hexagon.M2.mpy.acc.lh.s1
  587. hexagon_M2_mpy_acc_ll_s0, // llvm.hexagon.M2.mpy.acc.ll.s0
  588. hexagon_M2_mpy_acc_ll_s1, // llvm.hexagon.M2.mpy.acc.ll.s1
  589. hexagon_M2_mpy_acc_sat_hh_s0, // llvm.hexagon.M2.mpy.acc.sat.hh.s0
  590. hexagon_M2_mpy_acc_sat_hh_s1, // llvm.hexagon.M2.mpy.acc.sat.hh.s1
  591. hexagon_M2_mpy_acc_sat_hl_s0, // llvm.hexagon.M2.mpy.acc.sat.hl.s0
  592. hexagon_M2_mpy_acc_sat_hl_s1, // llvm.hexagon.M2.mpy.acc.sat.hl.s1
  593. hexagon_M2_mpy_acc_sat_lh_s0, // llvm.hexagon.M2.mpy.acc.sat.lh.s0
  594. hexagon_M2_mpy_acc_sat_lh_s1, // llvm.hexagon.M2.mpy.acc.sat.lh.s1
  595. hexagon_M2_mpy_acc_sat_ll_s0, // llvm.hexagon.M2.mpy.acc.sat.ll.s0
  596. hexagon_M2_mpy_acc_sat_ll_s1, // llvm.hexagon.M2.mpy.acc.sat.ll.s1
  597. hexagon_M2_mpy_hh_s0, // llvm.hexagon.M2.mpy.hh.s0
  598. hexagon_M2_mpy_hh_s1, // llvm.hexagon.M2.mpy.hh.s1
  599. hexagon_M2_mpy_hl_s0, // llvm.hexagon.M2.mpy.hl.s0
  600. hexagon_M2_mpy_hl_s1, // llvm.hexagon.M2.mpy.hl.s1
  601. hexagon_M2_mpy_lh_s0, // llvm.hexagon.M2.mpy.lh.s0
  602. hexagon_M2_mpy_lh_s1, // llvm.hexagon.M2.mpy.lh.s1
  603. hexagon_M2_mpy_ll_s0, // llvm.hexagon.M2.mpy.ll.s0
  604. hexagon_M2_mpy_ll_s1, // llvm.hexagon.M2.mpy.ll.s1
  605. hexagon_M2_mpy_nac_hh_s0, // llvm.hexagon.M2.mpy.nac.hh.s0
  606. hexagon_M2_mpy_nac_hh_s1, // llvm.hexagon.M2.mpy.nac.hh.s1
  607. hexagon_M2_mpy_nac_hl_s0, // llvm.hexagon.M2.mpy.nac.hl.s0
  608. hexagon_M2_mpy_nac_hl_s1, // llvm.hexagon.M2.mpy.nac.hl.s1
  609. hexagon_M2_mpy_nac_lh_s0, // llvm.hexagon.M2.mpy.nac.lh.s0
  610. hexagon_M2_mpy_nac_lh_s1, // llvm.hexagon.M2.mpy.nac.lh.s1
  611. hexagon_M2_mpy_nac_ll_s0, // llvm.hexagon.M2.mpy.nac.ll.s0
  612. hexagon_M2_mpy_nac_ll_s1, // llvm.hexagon.M2.mpy.nac.ll.s1
  613. hexagon_M2_mpy_nac_sat_hh_s0, // llvm.hexagon.M2.mpy.nac.sat.hh.s0
  614. hexagon_M2_mpy_nac_sat_hh_s1, // llvm.hexagon.M2.mpy.nac.sat.hh.s1
  615. hexagon_M2_mpy_nac_sat_hl_s0, // llvm.hexagon.M2.mpy.nac.sat.hl.s0
  616. hexagon_M2_mpy_nac_sat_hl_s1, // llvm.hexagon.M2.mpy.nac.sat.hl.s1
  617. hexagon_M2_mpy_nac_sat_lh_s0, // llvm.hexagon.M2.mpy.nac.sat.lh.s0
  618. hexagon_M2_mpy_nac_sat_lh_s1, // llvm.hexagon.M2.mpy.nac.sat.lh.s1
  619. hexagon_M2_mpy_nac_sat_ll_s0, // llvm.hexagon.M2.mpy.nac.sat.ll.s0
  620. hexagon_M2_mpy_nac_sat_ll_s1, // llvm.hexagon.M2.mpy.nac.sat.ll.s1
  621. hexagon_M2_mpy_rnd_hh_s0, // llvm.hexagon.M2.mpy.rnd.hh.s0
  622. hexagon_M2_mpy_rnd_hh_s1, // llvm.hexagon.M2.mpy.rnd.hh.s1
  623. hexagon_M2_mpy_rnd_hl_s0, // llvm.hexagon.M2.mpy.rnd.hl.s0
  624. hexagon_M2_mpy_rnd_hl_s1, // llvm.hexagon.M2.mpy.rnd.hl.s1
  625. hexagon_M2_mpy_rnd_lh_s0, // llvm.hexagon.M2.mpy.rnd.lh.s0
  626. hexagon_M2_mpy_rnd_lh_s1, // llvm.hexagon.M2.mpy.rnd.lh.s1
  627. hexagon_M2_mpy_rnd_ll_s0, // llvm.hexagon.M2.mpy.rnd.ll.s0
  628. hexagon_M2_mpy_rnd_ll_s1, // llvm.hexagon.M2.mpy.rnd.ll.s1
  629. hexagon_M2_mpy_sat_hh_s0, // llvm.hexagon.M2.mpy.sat.hh.s0
  630. hexagon_M2_mpy_sat_hh_s1, // llvm.hexagon.M2.mpy.sat.hh.s1
  631. hexagon_M2_mpy_sat_hl_s0, // llvm.hexagon.M2.mpy.sat.hl.s0
  632. hexagon_M2_mpy_sat_hl_s1, // llvm.hexagon.M2.mpy.sat.hl.s1
  633. hexagon_M2_mpy_sat_lh_s0, // llvm.hexagon.M2.mpy.sat.lh.s0
  634. hexagon_M2_mpy_sat_lh_s1, // llvm.hexagon.M2.mpy.sat.lh.s1
  635. hexagon_M2_mpy_sat_ll_s0, // llvm.hexagon.M2.mpy.sat.ll.s0
  636. hexagon_M2_mpy_sat_ll_s1, // llvm.hexagon.M2.mpy.sat.ll.s1
  637. hexagon_M2_mpy_sat_rnd_hh_s0, // llvm.hexagon.M2.mpy.sat.rnd.hh.s0
  638. hexagon_M2_mpy_sat_rnd_hh_s1, // llvm.hexagon.M2.mpy.sat.rnd.hh.s1
  639. hexagon_M2_mpy_sat_rnd_hl_s0, // llvm.hexagon.M2.mpy.sat.rnd.hl.s0
  640. hexagon_M2_mpy_sat_rnd_hl_s1, // llvm.hexagon.M2.mpy.sat.rnd.hl.s1
  641. hexagon_M2_mpy_sat_rnd_lh_s0, // llvm.hexagon.M2.mpy.sat.rnd.lh.s0
  642. hexagon_M2_mpy_sat_rnd_lh_s1, // llvm.hexagon.M2.mpy.sat.rnd.lh.s1
  643. hexagon_M2_mpy_sat_rnd_ll_s0, // llvm.hexagon.M2.mpy.sat.rnd.ll.s0
  644. hexagon_M2_mpy_sat_rnd_ll_s1, // llvm.hexagon.M2.mpy.sat.rnd.ll.s1
  645. hexagon_M2_mpy_up, // llvm.hexagon.M2.mpy.up
  646. hexagon_M2_mpy_up_s1, // llvm.hexagon.M2.mpy.up.s1
  647. hexagon_M2_mpy_up_s1_sat, // llvm.hexagon.M2.mpy.up.s1.sat
  648. hexagon_M2_mpyd_acc_hh_s0, // llvm.hexagon.M2.mpyd.acc.hh.s0
  649. hexagon_M2_mpyd_acc_hh_s1, // llvm.hexagon.M2.mpyd.acc.hh.s1
  650. hexagon_M2_mpyd_acc_hl_s0, // llvm.hexagon.M2.mpyd.acc.hl.s0
  651. hexagon_M2_mpyd_acc_hl_s1, // llvm.hexagon.M2.mpyd.acc.hl.s1
  652. hexagon_M2_mpyd_acc_lh_s0, // llvm.hexagon.M2.mpyd.acc.lh.s0
  653. hexagon_M2_mpyd_acc_lh_s1, // llvm.hexagon.M2.mpyd.acc.lh.s1
  654. hexagon_M2_mpyd_acc_ll_s0, // llvm.hexagon.M2.mpyd.acc.ll.s0
  655. hexagon_M2_mpyd_acc_ll_s1, // llvm.hexagon.M2.mpyd.acc.ll.s1
  656. hexagon_M2_mpyd_hh_s0, // llvm.hexagon.M2.mpyd.hh.s0
  657. hexagon_M2_mpyd_hh_s1, // llvm.hexagon.M2.mpyd.hh.s1
  658. hexagon_M2_mpyd_hl_s0, // llvm.hexagon.M2.mpyd.hl.s0
  659. hexagon_M2_mpyd_hl_s1, // llvm.hexagon.M2.mpyd.hl.s1
  660. hexagon_M2_mpyd_lh_s0, // llvm.hexagon.M2.mpyd.lh.s0
  661. hexagon_M2_mpyd_lh_s1, // llvm.hexagon.M2.mpyd.lh.s1
  662. hexagon_M2_mpyd_ll_s0, // llvm.hexagon.M2.mpyd.ll.s0
  663. hexagon_M2_mpyd_ll_s1, // llvm.hexagon.M2.mpyd.ll.s1
  664. hexagon_M2_mpyd_nac_hh_s0, // llvm.hexagon.M2.mpyd.nac.hh.s0
  665. hexagon_M2_mpyd_nac_hh_s1, // llvm.hexagon.M2.mpyd.nac.hh.s1
  666. hexagon_M2_mpyd_nac_hl_s0, // llvm.hexagon.M2.mpyd.nac.hl.s0
  667. hexagon_M2_mpyd_nac_hl_s1, // llvm.hexagon.M2.mpyd.nac.hl.s1
  668. hexagon_M2_mpyd_nac_lh_s0, // llvm.hexagon.M2.mpyd.nac.lh.s0
  669. hexagon_M2_mpyd_nac_lh_s1, // llvm.hexagon.M2.mpyd.nac.lh.s1
  670. hexagon_M2_mpyd_nac_ll_s0, // llvm.hexagon.M2.mpyd.nac.ll.s0
  671. hexagon_M2_mpyd_nac_ll_s1, // llvm.hexagon.M2.mpyd.nac.ll.s1
  672. hexagon_M2_mpyd_rnd_hh_s0, // llvm.hexagon.M2.mpyd.rnd.hh.s0
  673. hexagon_M2_mpyd_rnd_hh_s1, // llvm.hexagon.M2.mpyd.rnd.hh.s1
  674. hexagon_M2_mpyd_rnd_hl_s0, // llvm.hexagon.M2.mpyd.rnd.hl.s0
  675. hexagon_M2_mpyd_rnd_hl_s1, // llvm.hexagon.M2.mpyd.rnd.hl.s1
  676. hexagon_M2_mpyd_rnd_lh_s0, // llvm.hexagon.M2.mpyd.rnd.lh.s0
  677. hexagon_M2_mpyd_rnd_lh_s1, // llvm.hexagon.M2.mpyd.rnd.lh.s1
  678. hexagon_M2_mpyd_rnd_ll_s0, // llvm.hexagon.M2.mpyd.rnd.ll.s0
  679. hexagon_M2_mpyd_rnd_ll_s1, // llvm.hexagon.M2.mpyd.rnd.ll.s1
  680. hexagon_M2_mpyi, // llvm.hexagon.M2.mpyi
  681. hexagon_M2_mpysmi, // llvm.hexagon.M2.mpysmi
  682. hexagon_M2_mpysu_up, // llvm.hexagon.M2.mpysu.up
  683. hexagon_M2_mpyu_acc_hh_s0, // llvm.hexagon.M2.mpyu.acc.hh.s0
  684. hexagon_M2_mpyu_acc_hh_s1, // llvm.hexagon.M2.mpyu.acc.hh.s1
  685. hexagon_M2_mpyu_acc_hl_s0, // llvm.hexagon.M2.mpyu.acc.hl.s0
  686. hexagon_M2_mpyu_acc_hl_s1, // llvm.hexagon.M2.mpyu.acc.hl.s1
  687. hexagon_M2_mpyu_acc_lh_s0, // llvm.hexagon.M2.mpyu.acc.lh.s0
  688. hexagon_M2_mpyu_acc_lh_s1, // llvm.hexagon.M2.mpyu.acc.lh.s1
  689. hexagon_M2_mpyu_acc_ll_s0, // llvm.hexagon.M2.mpyu.acc.ll.s0
  690. hexagon_M2_mpyu_acc_ll_s1, // llvm.hexagon.M2.mpyu.acc.ll.s1
  691. hexagon_M2_mpyu_hh_s0, // llvm.hexagon.M2.mpyu.hh.s0
  692. hexagon_M2_mpyu_hh_s1, // llvm.hexagon.M2.mpyu.hh.s1
  693. hexagon_M2_mpyu_hl_s0, // llvm.hexagon.M2.mpyu.hl.s0
  694. hexagon_M2_mpyu_hl_s1, // llvm.hexagon.M2.mpyu.hl.s1
  695. hexagon_M2_mpyu_lh_s0, // llvm.hexagon.M2.mpyu.lh.s0
  696. hexagon_M2_mpyu_lh_s1, // llvm.hexagon.M2.mpyu.lh.s1
  697. hexagon_M2_mpyu_ll_s0, // llvm.hexagon.M2.mpyu.ll.s0
  698. hexagon_M2_mpyu_ll_s1, // llvm.hexagon.M2.mpyu.ll.s1
  699. hexagon_M2_mpyu_nac_hh_s0, // llvm.hexagon.M2.mpyu.nac.hh.s0
  700. hexagon_M2_mpyu_nac_hh_s1, // llvm.hexagon.M2.mpyu.nac.hh.s1
  701. hexagon_M2_mpyu_nac_hl_s0, // llvm.hexagon.M2.mpyu.nac.hl.s0
  702. hexagon_M2_mpyu_nac_hl_s1, // llvm.hexagon.M2.mpyu.nac.hl.s1
  703. hexagon_M2_mpyu_nac_lh_s0, // llvm.hexagon.M2.mpyu.nac.lh.s0
  704. hexagon_M2_mpyu_nac_lh_s1, // llvm.hexagon.M2.mpyu.nac.lh.s1
  705. hexagon_M2_mpyu_nac_ll_s0, // llvm.hexagon.M2.mpyu.nac.ll.s0
  706. hexagon_M2_mpyu_nac_ll_s1, // llvm.hexagon.M2.mpyu.nac.ll.s1
  707. hexagon_M2_mpyu_up, // llvm.hexagon.M2.mpyu.up
  708. hexagon_M2_mpyud_acc_hh_s0, // llvm.hexagon.M2.mpyud.acc.hh.s0
  709. hexagon_M2_mpyud_acc_hh_s1, // llvm.hexagon.M2.mpyud.acc.hh.s1
  710. hexagon_M2_mpyud_acc_hl_s0, // llvm.hexagon.M2.mpyud.acc.hl.s0
  711. hexagon_M2_mpyud_acc_hl_s1, // llvm.hexagon.M2.mpyud.acc.hl.s1
  712. hexagon_M2_mpyud_acc_lh_s0, // llvm.hexagon.M2.mpyud.acc.lh.s0
  713. hexagon_M2_mpyud_acc_lh_s1, // llvm.hexagon.M2.mpyud.acc.lh.s1
  714. hexagon_M2_mpyud_acc_ll_s0, // llvm.hexagon.M2.mpyud.acc.ll.s0
  715. hexagon_M2_mpyud_acc_ll_s1, // llvm.hexagon.M2.mpyud.acc.ll.s1
  716. hexagon_M2_mpyud_hh_s0, // llvm.hexagon.M2.mpyud.hh.s0
  717. hexagon_M2_mpyud_hh_s1, // llvm.hexagon.M2.mpyud.hh.s1
  718. hexagon_M2_mpyud_hl_s0, // llvm.hexagon.M2.mpyud.hl.s0
  719. hexagon_M2_mpyud_hl_s1, // llvm.hexagon.M2.mpyud.hl.s1
  720. hexagon_M2_mpyud_lh_s0, // llvm.hexagon.M2.mpyud.lh.s0
  721. hexagon_M2_mpyud_lh_s1, // llvm.hexagon.M2.mpyud.lh.s1
  722. hexagon_M2_mpyud_ll_s0, // llvm.hexagon.M2.mpyud.ll.s0
  723. hexagon_M2_mpyud_ll_s1, // llvm.hexagon.M2.mpyud.ll.s1
  724. hexagon_M2_mpyud_nac_hh_s0, // llvm.hexagon.M2.mpyud.nac.hh.s0
  725. hexagon_M2_mpyud_nac_hh_s1, // llvm.hexagon.M2.mpyud.nac.hh.s1
  726. hexagon_M2_mpyud_nac_hl_s0, // llvm.hexagon.M2.mpyud.nac.hl.s0
  727. hexagon_M2_mpyud_nac_hl_s1, // llvm.hexagon.M2.mpyud.nac.hl.s1
  728. hexagon_M2_mpyud_nac_lh_s0, // llvm.hexagon.M2.mpyud.nac.lh.s0
  729. hexagon_M2_mpyud_nac_lh_s1, // llvm.hexagon.M2.mpyud.nac.lh.s1
  730. hexagon_M2_mpyud_nac_ll_s0, // llvm.hexagon.M2.mpyud.nac.ll.s0
  731. hexagon_M2_mpyud_nac_ll_s1, // llvm.hexagon.M2.mpyud.nac.ll.s1
  732. hexagon_M2_mpyui, // llvm.hexagon.M2.mpyui
  733. hexagon_M2_nacci, // llvm.hexagon.M2.nacci
  734. hexagon_M2_naccii, // llvm.hexagon.M2.naccii
  735. hexagon_M2_subacc, // llvm.hexagon.M2.subacc
  736. hexagon_M2_vabsdiffh, // llvm.hexagon.M2.vabsdiffh
  737. hexagon_M2_vabsdiffw, // llvm.hexagon.M2.vabsdiffw
  738. hexagon_M2_vcmac_s0_sat_i, // llvm.hexagon.M2.vcmac.s0.sat.i
  739. hexagon_M2_vcmac_s0_sat_r, // llvm.hexagon.M2.vcmac.s0.sat.r
  740. hexagon_M2_vcmpy_s0_sat_i, // llvm.hexagon.M2.vcmpy.s0.sat.i
  741. hexagon_M2_vcmpy_s0_sat_r, // llvm.hexagon.M2.vcmpy.s0.sat.r
  742. hexagon_M2_vcmpy_s1_sat_i, // llvm.hexagon.M2.vcmpy.s1.sat.i
  743. hexagon_M2_vcmpy_s1_sat_r, // llvm.hexagon.M2.vcmpy.s1.sat.r
  744. hexagon_M2_vdmacs_s0, // llvm.hexagon.M2.vdmacs.s0
  745. hexagon_M2_vdmacs_s1, // llvm.hexagon.M2.vdmacs.s1
  746. hexagon_M2_vdmpyrs_s0, // llvm.hexagon.M2.vdmpyrs.s0
  747. hexagon_M2_vdmpyrs_s1, // llvm.hexagon.M2.vdmpyrs.s1
  748. hexagon_M2_vdmpys_s0, // llvm.hexagon.M2.vdmpys.s0
  749. hexagon_M2_vdmpys_s1, // llvm.hexagon.M2.vdmpys.s1
  750. hexagon_M2_vmac2, // llvm.hexagon.M2.vmac2
  751. hexagon_M2_vmac2es, // llvm.hexagon.M2.vmac2es
  752. hexagon_M2_vmac2es_s0, // llvm.hexagon.M2.vmac2es.s0
  753. hexagon_M2_vmac2es_s1, // llvm.hexagon.M2.vmac2es.s1
  754. hexagon_M2_vmac2s_s0, // llvm.hexagon.M2.vmac2s.s0
  755. hexagon_M2_vmac2s_s1, // llvm.hexagon.M2.vmac2s.s1
  756. hexagon_M2_vmac2su_s0, // llvm.hexagon.M2.vmac2su.s0
  757. hexagon_M2_vmac2su_s1, // llvm.hexagon.M2.vmac2su.s1
  758. hexagon_M2_vmpy2es_s0, // llvm.hexagon.M2.vmpy2es.s0
  759. hexagon_M2_vmpy2es_s1, // llvm.hexagon.M2.vmpy2es.s1
  760. hexagon_M2_vmpy2s_s0, // llvm.hexagon.M2.vmpy2s.s0
  761. hexagon_M2_vmpy2s_s0pack, // llvm.hexagon.M2.vmpy2s.s0pack
  762. hexagon_M2_vmpy2s_s1, // llvm.hexagon.M2.vmpy2s.s1
  763. hexagon_M2_vmpy2s_s1pack, // llvm.hexagon.M2.vmpy2s.s1pack
  764. hexagon_M2_vmpy2su_s0, // llvm.hexagon.M2.vmpy2su.s0
  765. hexagon_M2_vmpy2su_s1, // llvm.hexagon.M2.vmpy2su.s1
  766. hexagon_M2_vraddh, // llvm.hexagon.M2.vraddh
  767. hexagon_M2_vradduh, // llvm.hexagon.M2.vradduh
  768. hexagon_M2_vrcmaci_s0, // llvm.hexagon.M2.vrcmaci.s0
  769. hexagon_M2_vrcmaci_s0c, // llvm.hexagon.M2.vrcmaci.s0c
  770. hexagon_M2_vrcmacr_s0, // llvm.hexagon.M2.vrcmacr.s0
  771. hexagon_M2_vrcmacr_s0c, // llvm.hexagon.M2.vrcmacr.s0c
  772. hexagon_M2_vrcmpyi_s0, // llvm.hexagon.M2.vrcmpyi.s0
  773. hexagon_M2_vrcmpyi_s0c, // llvm.hexagon.M2.vrcmpyi.s0c
  774. hexagon_M2_vrcmpyr_s0, // llvm.hexagon.M2.vrcmpyr.s0
  775. hexagon_M2_vrcmpyr_s0c, // llvm.hexagon.M2.vrcmpyr.s0c
  776. hexagon_M2_vrcmpys_acc_s1, // llvm.hexagon.M2.vrcmpys.acc.s1
  777. hexagon_M2_vrcmpys_s1, // llvm.hexagon.M2.vrcmpys.s1
  778. hexagon_M2_vrcmpys_s1rp, // llvm.hexagon.M2.vrcmpys.s1rp
  779. hexagon_M2_vrmac_s0, // llvm.hexagon.M2.vrmac.s0
  780. hexagon_M2_vrmpy_s0, // llvm.hexagon.M2.vrmpy.s0
  781. hexagon_M2_xor_xacc, // llvm.hexagon.M2.xor.xacc
  782. hexagon_M4_and_and, // llvm.hexagon.M4.and.and
  783. hexagon_M4_and_andn, // llvm.hexagon.M4.and.andn
  784. hexagon_M4_and_or, // llvm.hexagon.M4.and.or
  785. hexagon_M4_and_xor, // llvm.hexagon.M4.and.xor
  786. hexagon_M4_cmpyi_wh, // llvm.hexagon.M4.cmpyi.wh
  787. hexagon_M4_cmpyi_whc, // llvm.hexagon.M4.cmpyi.whc
  788. hexagon_M4_cmpyr_wh, // llvm.hexagon.M4.cmpyr.wh
  789. hexagon_M4_cmpyr_whc, // llvm.hexagon.M4.cmpyr.whc
  790. hexagon_M4_mac_up_s1_sat, // llvm.hexagon.M4.mac.up.s1.sat
  791. hexagon_M4_mpyri_addi, // llvm.hexagon.M4.mpyri.addi
  792. hexagon_M4_mpyri_addr, // llvm.hexagon.M4.mpyri.addr
  793. hexagon_M4_mpyri_addr_u2, // llvm.hexagon.M4.mpyri.addr.u2
  794. hexagon_M4_mpyrr_addi, // llvm.hexagon.M4.mpyrr.addi
  795. hexagon_M4_mpyrr_addr, // llvm.hexagon.M4.mpyrr.addr
  796. hexagon_M4_nac_up_s1_sat, // llvm.hexagon.M4.nac.up.s1.sat
  797. hexagon_M4_or_and, // llvm.hexagon.M4.or.and
  798. hexagon_M4_or_andn, // llvm.hexagon.M4.or.andn
  799. hexagon_M4_or_or, // llvm.hexagon.M4.or.or
  800. hexagon_M4_or_xor, // llvm.hexagon.M4.or.xor
  801. hexagon_M4_pmpyw, // llvm.hexagon.M4.pmpyw
  802. hexagon_M4_pmpyw_acc, // llvm.hexagon.M4.pmpyw.acc
  803. hexagon_M4_vpmpyh, // llvm.hexagon.M4.vpmpyh
  804. hexagon_M4_vpmpyh_acc, // llvm.hexagon.M4.vpmpyh.acc
  805. hexagon_M4_vrmpyeh_acc_s0, // llvm.hexagon.M4.vrmpyeh.acc.s0
  806. hexagon_M4_vrmpyeh_acc_s1, // llvm.hexagon.M4.vrmpyeh.acc.s1
  807. hexagon_M4_vrmpyeh_s0, // llvm.hexagon.M4.vrmpyeh.s0
  808. hexagon_M4_vrmpyeh_s1, // llvm.hexagon.M4.vrmpyeh.s1
  809. hexagon_M4_vrmpyoh_acc_s0, // llvm.hexagon.M4.vrmpyoh.acc.s0
  810. hexagon_M4_vrmpyoh_acc_s1, // llvm.hexagon.M4.vrmpyoh.acc.s1
  811. hexagon_M4_vrmpyoh_s0, // llvm.hexagon.M4.vrmpyoh.s0
  812. hexagon_M4_vrmpyoh_s1, // llvm.hexagon.M4.vrmpyoh.s1
  813. hexagon_M4_xor_and, // llvm.hexagon.M4.xor.and
  814. hexagon_M4_xor_andn, // llvm.hexagon.M4.xor.andn
  815. hexagon_M4_xor_or, // llvm.hexagon.M4.xor.or
  816. hexagon_M4_xor_xacc, // llvm.hexagon.M4.xor.xacc
  817. hexagon_M5_vdmacbsu, // llvm.hexagon.M5.vdmacbsu
  818. hexagon_M5_vdmpybsu, // llvm.hexagon.M5.vdmpybsu
  819. hexagon_M5_vmacbsu, // llvm.hexagon.M5.vmacbsu
  820. hexagon_M5_vmacbuu, // llvm.hexagon.M5.vmacbuu
  821. hexagon_M5_vmpybsu, // llvm.hexagon.M5.vmpybsu
  822. hexagon_M5_vmpybuu, // llvm.hexagon.M5.vmpybuu
  823. hexagon_M5_vrmacbsu, // llvm.hexagon.M5.vrmacbsu
  824. hexagon_M5_vrmacbuu, // llvm.hexagon.M5.vrmacbuu
  825. hexagon_M5_vrmpybsu, // llvm.hexagon.M5.vrmpybsu
  826. hexagon_M5_vrmpybuu, // llvm.hexagon.M5.vrmpybuu
  827. hexagon_S2_addasl_rrri, // llvm.hexagon.S2.addasl.rrri
  828. hexagon_S2_asl_i_p, // llvm.hexagon.S2.asl.i.p
  829. hexagon_S2_asl_i_p_acc, // llvm.hexagon.S2.asl.i.p.acc
  830. hexagon_S2_asl_i_p_and, // llvm.hexagon.S2.asl.i.p.and
  831. hexagon_S2_asl_i_p_nac, // llvm.hexagon.S2.asl.i.p.nac
  832. hexagon_S2_asl_i_p_or, // llvm.hexagon.S2.asl.i.p.or
  833. hexagon_S2_asl_i_p_xacc, // llvm.hexagon.S2.asl.i.p.xacc
  834. hexagon_S2_asl_i_r, // llvm.hexagon.S2.asl.i.r
  835. hexagon_S2_asl_i_r_acc, // llvm.hexagon.S2.asl.i.r.acc
  836. hexagon_S2_asl_i_r_and, // llvm.hexagon.S2.asl.i.r.and
  837. hexagon_S2_asl_i_r_nac, // llvm.hexagon.S2.asl.i.r.nac
  838. hexagon_S2_asl_i_r_or, // llvm.hexagon.S2.asl.i.r.or
  839. hexagon_S2_asl_i_r_sat, // llvm.hexagon.S2.asl.i.r.sat
  840. hexagon_S2_asl_i_r_xacc, // llvm.hexagon.S2.asl.i.r.xacc
  841. hexagon_S2_asl_i_vh, // llvm.hexagon.S2.asl.i.vh
  842. hexagon_S2_asl_i_vw, // llvm.hexagon.S2.asl.i.vw
  843. hexagon_S2_asl_r_p, // llvm.hexagon.S2.asl.r.p
  844. hexagon_S2_asl_r_p_acc, // llvm.hexagon.S2.asl.r.p.acc
  845. hexagon_S2_asl_r_p_and, // llvm.hexagon.S2.asl.r.p.and
  846. hexagon_S2_asl_r_p_nac, // llvm.hexagon.S2.asl.r.p.nac
  847. hexagon_S2_asl_r_p_or, // llvm.hexagon.S2.asl.r.p.or
  848. hexagon_S2_asl_r_p_xor, // llvm.hexagon.S2.asl.r.p.xor
  849. hexagon_S2_asl_r_r, // llvm.hexagon.S2.asl.r.r
  850. hexagon_S2_asl_r_r_acc, // llvm.hexagon.S2.asl.r.r.acc
  851. hexagon_S2_asl_r_r_and, // llvm.hexagon.S2.asl.r.r.and
  852. hexagon_S2_asl_r_r_nac, // llvm.hexagon.S2.asl.r.r.nac
  853. hexagon_S2_asl_r_r_or, // llvm.hexagon.S2.asl.r.r.or
  854. hexagon_S2_asl_r_r_sat, // llvm.hexagon.S2.asl.r.r.sat
  855. hexagon_S2_asl_r_vh, // llvm.hexagon.S2.asl.r.vh
  856. hexagon_S2_asl_r_vw, // llvm.hexagon.S2.asl.r.vw
  857. hexagon_S2_asr_i_p, // llvm.hexagon.S2.asr.i.p
  858. hexagon_S2_asr_i_p_acc, // llvm.hexagon.S2.asr.i.p.acc
  859. hexagon_S2_asr_i_p_and, // llvm.hexagon.S2.asr.i.p.and
  860. hexagon_S2_asr_i_p_nac, // llvm.hexagon.S2.asr.i.p.nac
  861. hexagon_S2_asr_i_p_or, // llvm.hexagon.S2.asr.i.p.or
  862. hexagon_S2_asr_i_p_rnd, // llvm.hexagon.S2.asr.i.p.rnd
  863. hexagon_S2_asr_i_p_rnd_goodsyntax, // llvm.hexagon.S2.asr.i.p.rnd.goodsyntax
  864. hexagon_S2_asr_i_r, // llvm.hexagon.S2.asr.i.r
  865. hexagon_S2_asr_i_r_acc, // llvm.hexagon.S2.asr.i.r.acc
  866. hexagon_S2_asr_i_r_and, // llvm.hexagon.S2.asr.i.r.and
  867. hexagon_S2_asr_i_r_nac, // llvm.hexagon.S2.asr.i.r.nac
  868. hexagon_S2_asr_i_r_or, // llvm.hexagon.S2.asr.i.r.or
  869. hexagon_S2_asr_i_r_rnd, // llvm.hexagon.S2.asr.i.r.rnd
  870. hexagon_S2_asr_i_r_rnd_goodsyntax, // llvm.hexagon.S2.asr.i.r.rnd.goodsyntax
  871. hexagon_S2_asr_i_svw_trun, // llvm.hexagon.S2.asr.i.svw.trun
  872. hexagon_S2_asr_i_vh, // llvm.hexagon.S2.asr.i.vh
  873. hexagon_S2_asr_i_vw, // llvm.hexagon.S2.asr.i.vw
  874. hexagon_S2_asr_r_p, // llvm.hexagon.S2.asr.r.p
  875. hexagon_S2_asr_r_p_acc, // llvm.hexagon.S2.asr.r.p.acc
  876. hexagon_S2_asr_r_p_and, // llvm.hexagon.S2.asr.r.p.and
  877. hexagon_S2_asr_r_p_nac, // llvm.hexagon.S2.asr.r.p.nac
  878. hexagon_S2_asr_r_p_or, // llvm.hexagon.S2.asr.r.p.or
  879. hexagon_S2_asr_r_p_xor, // llvm.hexagon.S2.asr.r.p.xor
  880. hexagon_S2_asr_r_r, // llvm.hexagon.S2.asr.r.r
  881. hexagon_S2_asr_r_r_acc, // llvm.hexagon.S2.asr.r.r.acc
  882. hexagon_S2_asr_r_r_and, // llvm.hexagon.S2.asr.r.r.and
  883. hexagon_S2_asr_r_r_nac, // llvm.hexagon.S2.asr.r.r.nac
  884. hexagon_S2_asr_r_r_or, // llvm.hexagon.S2.asr.r.r.or
  885. hexagon_S2_asr_r_r_sat, // llvm.hexagon.S2.asr.r.r.sat
  886. hexagon_S2_asr_r_svw_trun, // llvm.hexagon.S2.asr.r.svw.trun
  887. hexagon_S2_asr_r_vh, // llvm.hexagon.S2.asr.r.vh
  888. hexagon_S2_asr_r_vw, // llvm.hexagon.S2.asr.r.vw
  889. hexagon_S2_brev, // llvm.hexagon.S2.brev
  890. hexagon_S2_brevp, // llvm.hexagon.S2.brevp
  891. hexagon_S2_cl0, // llvm.hexagon.S2.cl0
  892. hexagon_S2_cl0p, // llvm.hexagon.S2.cl0p
  893. hexagon_S2_cl1, // llvm.hexagon.S2.cl1
  894. hexagon_S2_cl1p, // llvm.hexagon.S2.cl1p
  895. hexagon_S2_clb, // llvm.hexagon.S2.clb
  896. hexagon_S2_clbnorm, // llvm.hexagon.S2.clbnorm
  897. hexagon_S2_clbp, // llvm.hexagon.S2.clbp
  898. hexagon_S2_clrbit_i, // llvm.hexagon.S2.clrbit.i
  899. hexagon_S2_clrbit_r, // llvm.hexagon.S2.clrbit.r
  900. hexagon_S2_ct0, // llvm.hexagon.S2.ct0
  901. hexagon_S2_ct0p, // llvm.hexagon.S2.ct0p
  902. hexagon_S2_ct1, // llvm.hexagon.S2.ct1
  903. hexagon_S2_ct1p, // llvm.hexagon.S2.ct1p
  904. hexagon_S2_deinterleave, // llvm.hexagon.S2.deinterleave
  905. hexagon_S2_extractu, // llvm.hexagon.S2.extractu
  906. hexagon_S2_extractu_rp, // llvm.hexagon.S2.extractu.rp
  907. hexagon_S2_extractup, // llvm.hexagon.S2.extractup
  908. hexagon_S2_extractup_rp, // llvm.hexagon.S2.extractup.rp
  909. hexagon_S2_insert, // llvm.hexagon.S2.insert
  910. hexagon_S2_insert_rp, // llvm.hexagon.S2.insert.rp
  911. hexagon_S2_insertp, // llvm.hexagon.S2.insertp
  912. hexagon_S2_insertp_rp, // llvm.hexagon.S2.insertp.rp
  913. hexagon_S2_interleave, // llvm.hexagon.S2.interleave
  914. hexagon_S2_lfsp, // llvm.hexagon.S2.lfsp
  915. hexagon_S2_lsl_r_p, // llvm.hexagon.S2.lsl.r.p
  916. hexagon_S2_lsl_r_p_acc, // llvm.hexagon.S2.lsl.r.p.acc
  917. hexagon_S2_lsl_r_p_and, // llvm.hexagon.S2.lsl.r.p.and
  918. hexagon_S2_lsl_r_p_nac, // llvm.hexagon.S2.lsl.r.p.nac
  919. hexagon_S2_lsl_r_p_or, // llvm.hexagon.S2.lsl.r.p.or
  920. hexagon_S2_lsl_r_p_xor, // llvm.hexagon.S2.lsl.r.p.xor
  921. hexagon_S2_lsl_r_r, // llvm.hexagon.S2.lsl.r.r
  922. hexagon_S2_lsl_r_r_acc, // llvm.hexagon.S2.lsl.r.r.acc
  923. hexagon_S2_lsl_r_r_and, // llvm.hexagon.S2.lsl.r.r.and
  924. hexagon_S2_lsl_r_r_nac, // llvm.hexagon.S2.lsl.r.r.nac
  925. hexagon_S2_lsl_r_r_or, // llvm.hexagon.S2.lsl.r.r.or
  926. hexagon_S2_lsl_r_vh, // llvm.hexagon.S2.lsl.r.vh
  927. hexagon_S2_lsl_r_vw, // llvm.hexagon.S2.lsl.r.vw
  928. hexagon_S2_lsr_i_p, // llvm.hexagon.S2.lsr.i.p
  929. hexagon_S2_lsr_i_p_acc, // llvm.hexagon.S2.lsr.i.p.acc
  930. hexagon_S2_lsr_i_p_and, // llvm.hexagon.S2.lsr.i.p.and
  931. hexagon_S2_lsr_i_p_nac, // llvm.hexagon.S2.lsr.i.p.nac
  932. hexagon_S2_lsr_i_p_or, // llvm.hexagon.S2.lsr.i.p.or
  933. hexagon_S2_lsr_i_p_xacc, // llvm.hexagon.S2.lsr.i.p.xacc
  934. hexagon_S2_lsr_i_r, // llvm.hexagon.S2.lsr.i.r
  935. hexagon_S2_lsr_i_r_acc, // llvm.hexagon.S2.lsr.i.r.acc
  936. hexagon_S2_lsr_i_r_and, // llvm.hexagon.S2.lsr.i.r.and
  937. hexagon_S2_lsr_i_r_nac, // llvm.hexagon.S2.lsr.i.r.nac
  938. hexagon_S2_lsr_i_r_or, // llvm.hexagon.S2.lsr.i.r.or
  939. hexagon_S2_lsr_i_r_xacc, // llvm.hexagon.S2.lsr.i.r.xacc
  940. hexagon_S2_lsr_i_vh, // llvm.hexagon.S2.lsr.i.vh
  941. hexagon_S2_lsr_i_vw, // llvm.hexagon.S2.lsr.i.vw
  942. hexagon_S2_lsr_r_p, // llvm.hexagon.S2.lsr.r.p
  943. hexagon_S2_lsr_r_p_acc, // llvm.hexagon.S2.lsr.r.p.acc
  944. hexagon_S2_lsr_r_p_and, // llvm.hexagon.S2.lsr.r.p.and
  945. hexagon_S2_lsr_r_p_nac, // llvm.hexagon.S2.lsr.r.p.nac
  946. hexagon_S2_lsr_r_p_or, // llvm.hexagon.S2.lsr.r.p.or
  947. hexagon_S2_lsr_r_p_xor, // llvm.hexagon.S2.lsr.r.p.xor
  948. hexagon_S2_lsr_r_r, // llvm.hexagon.S2.lsr.r.r
  949. hexagon_S2_lsr_r_r_acc, // llvm.hexagon.S2.lsr.r.r.acc
  950. hexagon_S2_lsr_r_r_and, // llvm.hexagon.S2.lsr.r.r.and
  951. hexagon_S2_lsr_r_r_nac, // llvm.hexagon.S2.lsr.r.r.nac
  952. hexagon_S2_lsr_r_r_or, // llvm.hexagon.S2.lsr.r.r.or
  953. hexagon_S2_lsr_r_vh, // llvm.hexagon.S2.lsr.r.vh
  954. hexagon_S2_lsr_r_vw, // llvm.hexagon.S2.lsr.r.vw
  955. hexagon_S2_packhl, // llvm.hexagon.S2.packhl
  956. hexagon_S2_parityp, // llvm.hexagon.S2.parityp
  957. hexagon_S2_setbit_i, // llvm.hexagon.S2.setbit.i
  958. hexagon_S2_setbit_r, // llvm.hexagon.S2.setbit.r
  959. hexagon_S2_shuffeb, // llvm.hexagon.S2.shuffeb
  960. hexagon_S2_shuffeh, // llvm.hexagon.S2.shuffeh
  961. hexagon_S2_shuffob, // llvm.hexagon.S2.shuffob
  962. hexagon_S2_shuffoh, // llvm.hexagon.S2.shuffoh
  963. hexagon_S2_svsathb, // llvm.hexagon.S2.svsathb
  964. hexagon_S2_svsathub, // llvm.hexagon.S2.svsathub
  965. hexagon_S2_tableidxb_goodsyntax, // llvm.hexagon.S2.tableidxb.goodsyntax
  966. hexagon_S2_tableidxd_goodsyntax, // llvm.hexagon.S2.tableidxd.goodsyntax
  967. hexagon_S2_tableidxh_goodsyntax, // llvm.hexagon.S2.tableidxh.goodsyntax
  968. hexagon_S2_tableidxw_goodsyntax, // llvm.hexagon.S2.tableidxw.goodsyntax
  969. hexagon_S2_togglebit_i, // llvm.hexagon.S2.togglebit.i
  970. hexagon_S2_togglebit_r, // llvm.hexagon.S2.togglebit.r
  971. hexagon_S2_tstbit_i, // llvm.hexagon.S2.tstbit.i
  972. hexagon_S2_tstbit_r, // llvm.hexagon.S2.tstbit.r
  973. hexagon_S2_valignib, // llvm.hexagon.S2.valignib
  974. hexagon_S2_valignrb, // llvm.hexagon.S2.valignrb
  975. hexagon_S2_vcnegh, // llvm.hexagon.S2.vcnegh
  976. hexagon_S2_vcrotate, // llvm.hexagon.S2.vcrotate
  977. hexagon_S2_vrcnegh, // llvm.hexagon.S2.vrcnegh
  978. hexagon_S2_vrndpackwh, // llvm.hexagon.S2.vrndpackwh
  979. hexagon_S2_vrndpackwhs, // llvm.hexagon.S2.vrndpackwhs
  980. hexagon_S2_vsathb, // llvm.hexagon.S2.vsathb
  981. hexagon_S2_vsathb_nopack, // llvm.hexagon.S2.vsathb.nopack
  982. hexagon_S2_vsathub, // llvm.hexagon.S2.vsathub
  983. hexagon_S2_vsathub_nopack, // llvm.hexagon.S2.vsathub.nopack
  984. hexagon_S2_vsatwh, // llvm.hexagon.S2.vsatwh
  985. hexagon_S2_vsatwh_nopack, // llvm.hexagon.S2.vsatwh.nopack
  986. hexagon_S2_vsatwuh, // llvm.hexagon.S2.vsatwuh
  987. hexagon_S2_vsatwuh_nopack, // llvm.hexagon.S2.vsatwuh.nopack
  988. hexagon_S2_vsplatrb, // llvm.hexagon.S2.vsplatrb
  989. hexagon_S2_vsplatrh, // llvm.hexagon.S2.vsplatrh
  990. hexagon_S2_vspliceib, // llvm.hexagon.S2.vspliceib
  991. hexagon_S2_vsplicerb, // llvm.hexagon.S2.vsplicerb
  992. hexagon_S2_vsxtbh, // llvm.hexagon.S2.vsxtbh
  993. hexagon_S2_vsxthw, // llvm.hexagon.S2.vsxthw
  994. hexagon_S2_vtrunehb, // llvm.hexagon.S2.vtrunehb
  995. hexagon_S2_vtrunewh, // llvm.hexagon.S2.vtrunewh
  996. hexagon_S2_vtrunohb, // llvm.hexagon.S2.vtrunohb
  997. hexagon_S2_vtrunowh, // llvm.hexagon.S2.vtrunowh
  998. hexagon_S2_vzxtbh, // llvm.hexagon.S2.vzxtbh
  999. hexagon_S2_vzxthw, // llvm.hexagon.S2.vzxthw
  1000. hexagon_S4_addaddi, // llvm.hexagon.S4.addaddi
  1001. hexagon_S4_addi_asl_ri, // llvm.hexagon.S4.addi.asl.ri
  1002. hexagon_S4_addi_lsr_ri, // llvm.hexagon.S4.addi.lsr.ri
  1003. hexagon_S4_andi_asl_ri, // llvm.hexagon.S4.andi.asl.ri
  1004. hexagon_S4_andi_lsr_ri, // llvm.hexagon.S4.andi.lsr.ri
  1005. hexagon_S4_clbaddi, // llvm.hexagon.S4.clbaddi
  1006. hexagon_S4_clbpaddi, // llvm.hexagon.S4.clbpaddi
  1007. hexagon_S4_clbpnorm, // llvm.hexagon.S4.clbpnorm
  1008. hexagon_S4_extract, // llvm.hexagon.S4.extract
  1009. hexagon_S4_extract_rp, // llvm.hexagon.S4.extract.rp
  1010. hexagon_S4_extractp, // llvm.hexagon.S4.extractp
  1011. hexagon_S4_extractp_rp, // llvm.hexagon.S4.extractp.rp
  1012. hexagon_S4_lsli, // llvm.hexagon.S4.lsli
  1013. hexagon_S4_ntstbit_i, // llvm.hexagon.S4.ntstbit.i
  1014. hexagon_S4_ntstbit_r, // llvm.hexagon.S4.ntstbit.r
  1015. hexagon_S4_or_andi, // llvm.hexagon.S4.or.andi
  1016. hexagon_S4_or_andix, // llvm.hexagon.S4.or.andix
  1017. hexagon_S4_or_ori, // llvm.hexagon.S4.or.ori
  1018. hexagon_S4_ori_asl_ri, // llvm.hexagon.S4.ori.asl.ri
  1019. hexagon_S4_ori_lsr_ri, // llvm.hexagon.S4.ori.lsr.ri
  1020. hexagon_S4_parity, // llvm.hexagon.S4.parity
  1021. hexagon_S4_subaddi, // llvm.hexagon.S4.subaddi
  1022. hexagon_S4_subi_asl_ri, // llvm.hexagon.S4.subi.asl.ri
  1023. hexagon_S4_subi_lsr_ri, // llvm.hexagon.S4.subi.lsr.ri
  1024. hexagon_S4_vrcrotate, // llvm.hexagon.S4.vrcrotate
  1025. hexagon_S4_vrcrotate_acc, // llvm.hexagon.S4.vrcrotate.acc
  1026. hexagon_S4_vxaddsubh, // llvm.hexagon.S4.vxaddsubh
  1027. hexagon_S4_vxaddsubhr, // llvm.hexagon.S4.vxaddsubhr
  1028. hexagon_S4_vxaddsubw, // llvm.hexagon.S4.vxaddsubw
  1029. hexagon_S4_vxsubaddh, // llvm.hexagon.S4.vxsubaddh
  1030. hexagon_S4_vxsubaddhr, // llvm.hexagon.S4.vxsubaddhr
  1031. hexagon_S4_vxsubaddw, // llvm.hexagon.S4.vxsubaddw
  1032. hexagon_S5_asrhub_rnd_sat_goodsyntax, // llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax
  1033. hexagon_S5_asrhub_sat, // llvm.hexagon.S5.asrhub.sat
  1034. hexagon_S5_popcountp, // llvm.hexagon.S5.popcountp
  1035. hexagon_S5_vasrhrnd_goodsyntax, // llvm.hexagon.S5.vasrhrnd.goodsyntax
  1036. hexagon_SI_to_SXTHI_asrh, // llvm.hexagon.SI.to.SXTHI.asrh
  1037. hexagon_circ_ldd, // llvm.hexagon.circ.ldd
  1038. init_trampoline, // llvm.init.trampoline
  1039. invariant_end, // llvm.invariant.end
  1040. invariant_start, // llvm.invariant.start
  1041. lifetime_end, // llvm.lifetime.end
  1042. lifetime_start, // llvm.lifetime.start
  1043. log, // llvm.log
  1044. log10, // llvm.log10
  1045. log2, // llvm.log2
  1046. longjmp, // llvm.longjmp
  1047. memcpy, // llvm.memcpy
  1048. memmove, // llvm.memmove
  1049. memset, // llvm.memset
  1050. mips_absq_s_ph, // llvm.mips.absq.s.ph
  1051. mips_absq_s_qb, // llvm.mips.absq.s.qb
  1052. mips_absq_s_w, // llvm.mips.absq.s.w
  1053. mips_addq_ph, // llvm.mips.addq.ph
  1054. mips_addq_s_ph, // llvm.mips.addq.s.ph
  1055. mips_addq_s_w, // llvm.mips.addq.s.w
  1056. mips_addqh_ph, // llvm.mips.addqh.ph
  1057. mips_addqh_r_ph, // llvm.mips.addqh.r.ph
  1058. mips_addqh_r_w, // llvm.mips.addqh.r.w
  1059. mips_addqh_w, // llvm.mips.addqh.w
  1060. mips_addsc, // llvm.mips.addsc
  1061. mips_addu_ph, // llvm.mips.addu.ph
  1062. mips_addu_qb, // llvm.mips.addu.qb
  1063. mips_addu_s_ph, // llvm.mips.addu.s.ph
  1064. mips_addu_s_qb, // llvm.mips.addu.s.qb
  1065. mips_adduh_qb, // llvm.mips.adduh.qb
  1066. mips_adduh_r_qb, // llvm.mips.adduh.r.qb
  1067. mips_addwc, // llvm.mips.addwc
  1068. mips_append, // llvm.mips.append
  1069. mips_balign, // llvm.mips.balign
  1070. mips_bitrev, // llvm.mips.bitrev
  1071. mips_bposge32, // llvm.mips.bposge32
  1072. mips_cmp_eq_ph, // llvm.mips.cmp.eq.ph
  1073. mips_cmp_le_ph, // llvm.mips.cmp.le.ph
  1074. mips_cmp_lt_ph, // llvm.mips.cmp.lt.ph
  1075. mips_cmpgdu_eq_qb, // llvm.mips.cmpgdu.eq.qb
  1076. mips_cmpgdu_le_qb, // llvm.mips.cmpgdu.le.qb
  1077. mips_cmpgdu_lt_qb, // llvm.mips.cmpgdu.lt.qb
  1078. mips_cmpgu_eq_qb, // llvm.mips.cmpgu.eq.qb
  1079. mips_cmpgu_le_qb, // llvm.mips.cmpgu.le.qb
  1080. mips_cmpgu_lt_qb, // llvm.mips.cmpgu.lt.qb
  1081. mips_cmpu_eq_qb, // llvm.mips.cmpu.eq.qb
  1082. mips_cmpu_le_qb, // llvm.mips.cmpu.le.qb
  1083. mips_cmpu_lt_qb, // llvm.mips.cmpu.lt.qb
  1084. mips_dpa_w_ph, // llvm.mips.dpa.w.ph
  1085. mips_dpaq_s_w_ph, // llvm.mips.dpaq.s.w.ph
  1086. mips_dpaq_sa_l_w, // llvm.mips.dpaq.sa.l.w
  1087. mips_dpaqx_s_w_ph, // llvm.mips.dpaqx.s.w.ph
  1088. mips_dpaqx_sa_w_ph, // llvm.mips.dpaqx.sa.w.ph
  1089. mips_dpau_h_qbl, // llvm.mips.dpau.h.qbl
  1090. mips_dpau_h_qbr, // llvm.mips.dpau.h.qbr
  1091. mips_dpax_w_ph, // llvm.mips.dpax.w.ph
  1092. mips_dps_w_ph, // llvm.mips.dps.w.ph
  1093. mips_dpsq_s_w_ph, // llvm.mips.dpsq.s.w.ph
  1094. mips_dpsq_sa_l_w, // llvm.mips.dpsq.sa.l.w
  1095. mips_dpsqx_s_w_ph, // llvm.mips.dpsqx.s.w.ph
  1096. mips_dpsqx_sa_w_ph, // llvm.mips.dpsqx.sa.w.ph
  1097. mips_dpsu_h_qbl, // llvm.mips.dpsu.h.qbl
  1098. mips_dpsu_h_qbr, // llvm.mips.dpsu.h.qbr
  1099. mips_dpsx_w_ph, // llvm.mips.dpsx.w.ph
  1100. mips_extp, // llvm.mips.extp
  1101. mips_extpdp, // llvm.mips.extpdp
  1102. mips_extr_r_w, // llvm.mips.extr.r.w
  1103. mips_extr_rs_w, // llvm.mips.extr.rs.w
  1104. mips_extr_s_h, // llvm.mips.extr.s.h
  1105. mips_extr_w, // llvm.mips.extr.w
  1106. mips_insv, // llvm.mips.insv
  1107. mips_lbux, // llvm.mips.lbux
  1108. mips_lhx, // llvm.mips.lhx
  1109. mips_lwx, // llvm.mips.lwx
  1110. mips_madd, // llvm.mips.madd
  1111. mips_maddu, // llvm.mips.maddu
  1112. mips_maq_s_w_phl, // llvm.mips.maq.s.w.phl
  1113. mips_maq_s_w_phr, // llvm.mips.maq.s.w.phr
  1114. mips_maq_sa_w_phl, // llvm.mips.maq.sa.w.phl
  1115. mips_maq_sa_w_phr, // llvm.mips.maq.sa.w.phr
  1116. mips_modsub, // llvm.mips.modsub
  1117. mips_msub, // llvm.mips.msub
  1118. mips_msubu, // llvm.mips.msubu
  1119. mips_mthlip, // llvm.mips.mthlip
  1120. mips_mul_ph, // llvm.mips.mul.ph
  1121. mips_mul_s_ph, // llvm.mips.mul.s.ph
  1122. mips_muleq_s_w_phl, // llvm.mips.muleq.s.w.phl
  1123. mips_muleq_s_w_phr, // llvm.mips.muleq.s.w.phr
  1124. mips_muleu_s_ph_qbl, // llvm.mips.muleu.s.ph.qbl
  1125. mips_muleu_s_ph_qbr, // llvm.mips.muleu.s.ph.qbr
  1126. mips_mulq_rs_ph, // llvm.mips.mulq.rs.ph
  1127. mips_mulq_rs_w, // llvm.mips.mulq.rs.w
  1128. mips_mulq_s_ph, // llvm.mips.mulq.s.ph
  1129. mips_mulq_s_w, // llvm.mips.mulq.s.w
  1130. mips_mulsa_w_ph, // llvm.mips.mulsa.w.ph
  1131. mips_mulsaq_s_w_ph, // llvm.mips.mulsaq.s.w.ph
  1132. mips_mult, // llvm.mips.mult
  1133. mips_multu, // llvm.mips.multu
  1134. mips_packrl_ph, // llvm.mips.packrl.ph
  1135. mips_pick_ph, // llvm.mips.pick.ph
  1136. mips_pick_qb, // llvm.mips.pick.qb
  1137. mips_preceq_w_phl, // llvm.mips.preceq.w.phl
  1138. mips_preceq_w_phr, // llvm.mips.preceq.w.phr
  1139. mips_precequ_ph_qbl, // llvm.mips.precequ.ph.qbl
  1140. mips_precequ_ph_qbla, // llvm.mips.precequ.ph.qbla
  1141. mips_precequ_ph_qbr, // llvm.mips.precequ.ph.qbr
  1142. mips_precequ_ph_qbra, // llvm.mips.precequ.ph.qbra
  1143. mips_preceu_ph_qbl, // llvm.mips.preceu.ph.qbl
  1144. mips_preceu_ph_qbla, // llvm.mips.preceu.ph.qbla
  1145. mips_preceu_ph_qbr, // llvm.mips.preceu.ph.qbr
  1146. mips_preceu_ph_qbra, // llvm.mips.preceu.ph.qbra
  1147. mips_precr_qb_ph, // llvm.mips.precr.qb.ph
  1148. mips_precr_sra_ph_w, // llvm.mips.precr.sra.ph.w
  1149. mips_precr_sra_r_ph_w, // llvm.mips.precr.sra.r.ph.w
  1150. mips_precrq_ph_w, // llvm.mips.precrq.ph.w
  1151. mips_precrq_qb_ph, // llvm.mips.precrq.qb.ph
  1152. mips_precrq_rs_ph_w, // llvm.mips.precrq.rs.ph.w
  1153. mips_precrqu_s_qb_ph, // llvm.mips.precrqu.s.qb.ph
  1154. mips_prepend, // llvm.mips.prepend
  1155. mips_raddu_w_qb, // llvm.mips.raddu.w.qb
  1156. mips_rddsp, // llvm.mips.rddsp
  1157. mips_repl_ph, // llvm.mips.repl.ph
  1158. mips_repl_qb, // llvm.mips.repl.qb
  1159. mips_shilo, // llvm.mips.shilo
  1160. mips_shll_ph, // llvm.mips.shll.ph
  1161. mips_shll_qb, // llvm.mips.shll.qb
  1162. mips_shll_s_ph, // llvm.mips.shll.s.ph
  1163. mips_shll_s_w, // llvm.mips.shll.s.w
  1164. mips_shra_ph, // llvm.mips.shra.ph
  1165. mips_shra_qb, // llvm.mips.shra.qb
  1166. mips_shra_r_ph, // llvm.mips.shra.r.ph
  1167. mips_shra_r_qb, // llvm.mips.shra.r.qb
  1168. mips_shra_r_w, // llvm.mips.shra.r.w
  1169. mips_shrl_ph, // llvm.mips.shrl.ph
  1170. mips_shrl_qb, // llvm.mips.shrl.qb
  1171. mips_subq_ph, // llvm.mips.subq.ph
  1172. mips_subq_s_ph, // llvm.mips.subq.s.ph
  1173. mips_subq_s_w, // llvm.mips.subq.s.w
  1174. mips_subqh_ph, // llvm.mips.subqh.ph
  1175. mips_subqh_r_ph, // llvm.mips.subqh.r.ph
  1176. mips_subqh_r_w, // llvm.mips.subqh.r.w
  1177. mips_subqh_w, // llvm.mips.subqh.w
  1178. mips_subu_ph, // llvm.mips.subu.ph
  1179. mips_subu_qb, // llvm.mips.subu.qb
  1180. mips_subu_s_ph, // llvm.mips.subu.s.ph
  1181. mips_subu_s_qb, // llvm.mips.subu.s.qb
  1182. mips_subuh_qb, // llvm.mips.subuh.qb
  1183. mips_subuh_r_qb, // llvm.mips.subuh.r.qb
  1184. mips_wrdsp, // llvm.mips.wrdsp
  1185. nvvm_abs_i, // llvm.nvvm.abs.i
  1186. nvvm_abs_ll, // llvm.nvvm.abs.ll
  1187. nvvm_add_rm_d, // llvm.nvvm.add.rm.d
  1188. nvvm_add_rm_f, // llvm.nvvm.add.rm.f
  1189. nvvm_add_rm_ftz_f, // llvm.nvvm.add.rm.ftz.f
  1190. nvvm_add_rn_d, // llvm.nvvm.add.rn.d
  1191. nvvm_add_rn_f, // llvm.nvvm.add.rn.f
  1192. nvvm_add_rn_ftz_f, // llvm.nvvm.add.rn.ftz.f
  1193. nvvm_add_rp_d, // llvm.nvvm.add.rp.d
  1194. nvvm_add_rp_f, // llvm.nvvm.add.rp.f
  1195. nvvm_add_rp_ftz_f, // llvm.nvvm.add.rp.ftz.f
  1196. nvvm_add_rz_d, // llvm.nvvm.add.rz.d
  1197. nvvm_add_rz_f, // llvm.nvvm.add.rz.f
  1198. nvvm_add_rz_ftz_f, // llvm.nvvm.add.rz.ftz.f
  1199. nvvm_atomic_load_add_f32, // llvm.nvvm.atomic.load.add.f32
  1200. nvvm_atomic_load_dec_32, // llvm.nvvm.atomic.load.dec.32
  1201. nvvm_atomic_load_inc_32, // llvm.nvvm.atomic.load.inc.32
  1202. nvvm_barrier0, // llvm.nvvm.barrier0
  1203. nvvm_barrier0_and, // llvm.nvvm.barrier0.and
  1204. nvvm_barrier0_or, // llvm.nvvm.barrier0.or
  1205. nvvm_barrier0_popc, // llvm.nvvm.barrier0.popc
  1206. nvvm_bitcast_d2ll, // llvm.nvvm.bitcast.d2ll
  1207. nvvm_bitcast_f2i, // llvm.nvvm.bitcast.f2i
  1208. nvvm_bitcast_i2f, // llvm.nvvm.bitcast.i2f
  1209. nvvm_bitcast_ll2d, // llvm.nvvm.bitcast.ll2d
  1210. nvvm_brev32, // llvm.nvvm.brev32
  1211. nvvm_brev64, // llvm.nvvm.brev64
  1212. nvvm_ceil_d, // llvm.nvvm.ceil.d
  1213. nvvm_ceil_f, // llvm.nvvm.ceil.f
  1214. nvvm_ceil_ftz_f, // llvm.nvvm.ceil.ftz.f
  1215. nvvm_clz_i, // llvm.nvvm.clz.i
  1216. nvvm_clz_ll, // llvm.nvvm.clz.ll
  1217. nvvm_compiler_error, // llvm.nvvm.compiler.error
  1218. nvvm_compiler_warn, // llvm.nvvm.compiler.warn
  1219. nvvm_cos_approx_f, // llvm.nvvm.cos.approx.f
  1220. nvvm_cos_approx_ftz_f, // llvm.nvvm.cos.approx.ftz.f
  1221. nvvm_d2f_rm, // llvm.nvvm.d2f.rm
  1222. nvvm_d2f_rm_ftz, // llvm.nvvm.d2f.rm.ftz
  1223. nvvm_d2f_rn, // llvm.nvvm.d2f.rn
  1224. nvvm_d2f_rn_ftz, // llvm.nvvm.d2f.rn.ftz
  1225. nvvm_d2f_rp, // llvm.nvvm.d2f.rp
  1226. nvvm_d2f_rp_ftz, // llvm.nvvm.d2f.rp.ftz
  1227. nvvm_d2f_rz, // llvm.nvvm.d2f.rz
  1228. nvvm_d2f_rz_ftz, // llvm.nvvm.d2f.rz.ftz
  1229. nvvm_d2i_hi, // llvm.nvvm.d2i.hi
  1230. nvvm_d2i_lo, // llvm.nvvm.d2i.lo
  1231. nvvm_d2i_rm, // llvm.nvvm.d2i.rm
  1232. nvvm_d2i_rn, // llvm.nvvm.d2i.rn
  1233. nvvm_d2i_rp, // llvm.nvvm.d2i.rp
  1234. nvvm_d2i_rz, // llvm.nvvm.d2i.rz
  1235. nvvm_d2ll_rm, // llvm.nvvm.d2ll.rm
  1236. nvvm_d2ll_rn, // llvm.nvvm.d2ll.rn
  1237. nvvm_d2ll_rp, // llvm.nvvm.d2ll.rp
  1238. nvvm_d2ll_rz, // llvm.nvvm.d2ll.rz
  1239. nvvm_d2ui_rm, // llvm.nvvm.d2ui.rm
  1240. nvvm_d2ui_rn, // llvm.nvvm.d2ui.rn
  1241. nvvm_d2ui_rp, // llvm.nvvm.d2ui.rp
  1242. nvvm_d2ui_rz, // llvm.nvvm.d2ui.rz
  1243. nvvm_d2ull_rm, // llvm.nvvm.d2ull.rm
  1244. nvvm_d2ull_rn, // llvm.nvvm.d2ull.rn
  1245. nvvm_d2ull_rp, // llvm.nvvm.d2ull.rp
  1246. nvvm_d2ull_rz, // llvm.nvvm.d2ull.rz
  1247. nvvm_div_approx_f, // llvm.nvvm.div.approx.f
  1248. nvvm_div_approx_ftz_f, // llvm.nvvm.div.approx.ftz.f
  1249. nvvm_div_rm_d, // llvm.nvvm.div.rm.d
  1250. nvvm_div_rm_f, // llvm.nvvm.div.rm.f
  1251. nvvm_div_rm_ftz_f, // llvm.nvvm.div.rm.ftz.f
  1252. nvvm_div_rn_d, // llvm.nvvm.div.rn.d
  1253. nvvm_div_rn_f, // llvm.nvvm.div.rn.f
  1254. nvvm_div_rn_ftz_f, // llvm.nvvm.div.rn.ftz.f
  1255. nvvm_div_rp_d, // llvm.nvvm.div.rp.d
  1256. nvvm_div_rp_f, // llvm.nvvm.div.rp.f
  1257. nvvm_div_rp_ftz_f, // llvm.nvvm.div.rp.ftz.f
  1258. nvvm_div_rz_d, // llvm.nvvm.div.rz.d
  1259. nvvm_div_rz_f, // llvm.nvvm.div.rz.f
  1260. nvvm_div_rz_ftz_f, // llvm.nvvm.div.rz.ftz.f
  1261. nvvm_ex2_approx_d, // llvm.nvvm.ex2.approx.d
  1262. nvvm_ex2_approx_f, // llvm.nvvm.ex2.approx.f
  1263. nvvm_ex2_approx_ftz_f, // llvm.nvvm.ex2.approx.ftz.f
  1264. nvvm_f2h_rn, // llvm.nvvm.f2h.rn
  1265. nvvm_f2h_rn_ftz, // llvm.nvvm.f2h.rn.ftz
  1266. nvvm_f2i_rm, // llvm.nvvm.f2i.rm
  1267. nvvm_f2i_rm_ftz, // llvm.nvvm.f2i.rm.ftz
  1268. nvvm_f2i_rn, // llvm.nvvm.f2i.rn
  1269. nvvm_f2i_rn_ftz, // llvm.nvvm.f2i.rn.ftz
  1270. nvvm_f2i_rp, // llvm.nvvm.f2i.rp
  1271. nvvm_f2i_rp_ftz, // llvm.nvvm.f2i.rp.ftz
  1272. nvvm_f2i_rz, // llvm.nvvm.f2i.rz
  1273. nvvm_f2i_rz_ftz, // llvm.nvvm.f2i.rz.ftz
  1274. nvvm_f2ll_rm, // llvm.nvvm.f2ll.rm
  1275. nvvm_f2ll_rm_ftz, // llvm.nvvm.f2ll.rm.ftz
  1276. nvvm_f2ll_rn, // llvm.nvvm.f2ll.rn
  1277. nvvm_f2ll_rn_ftz, // llvm.nvvm.f2ll.rn.ftz
  1278. nvvm_f2ll_rp, // llvm.nvvm.f2ll.rp
  1279. nvvm_f2ll_rp_ftz, // llvm.nvvm.f2ll.rp.ftz
  1280. nvvm_f2ll_rz, // llvm.nvvm.f2ll.rz
  1281. nvvm_f2ll_rz_ftz, // llvm.nvvm.f2ll.rz.ftz
  1282. nvvm_f2ui_rm, // llvm.nvvm.f2ui.rm
  1283. nvvm_f2ui_rm_ftz, // llvm.nvvm.f2ui.rm.ftz
  1284. nvvm_f2ui_rn, // llvm.nvvm.f2ui.rn
  1285. nvvm_f2ui_rn_ftz, // llvm.nvvm.f2ui.rn.ftz
  1286. nvvm_f2ui_rp, // llvm.nvvm.f2ui.rp
  1287. nvvm_f2ui_rp_ftz, // llvm.nvvm.f2ui.rp.ftz
  1288. nvvm_f2ui_rz, // llvm.nvvm.f2ui.rz
  1289. nvvm_f2ui_rz_ftz, // llvm.nvvm.f2ui.rz.ftz
  1290. nvvm_f2ull_rm, // llvm.nvvm.f2ull.rm
  1291. nvvm_f2ull_rm_ftz, // llvm.nvvm.f2ull.rm.ftz
  1292. nvvm_f2ull_rn, // llvm.nvvm.f2ull.rn
  1293. nvvm_f2ull_rn_ftz, // llvm.nvvm.f2ull.rn.ftz
  1294. nvvm_f2ull_rp, // llvm.nvvm.f2ull.rp
  1295. nvvm_f2ull_rp_ftz, // llvm.nvvm.f2ull.rp.ftz
  1296. nvvm_f2ull_rz, // llvm.nvvm.f2ull.rz
  1297. nvvm_f2ull_rz_ftz, // llvm.nvvm.f2ull.rz.ftz
  1298. nvvm_fabs_d, // llvm.nvvm.fabs.d
  1299. nvvm_fabs_f, // llvm.nvvm.fabs.f
  1300. nvvm_fabs_ftz_f, // llvm.nvvm.fabs.ftz.f
  1301. nvvm_floor_d, // llvm.nvvm.floor.d
  1302. nvvm_floor_f, // llvm.nvvm.floor.f
  1303. nvvm_floor_ftz_f, // llvm.nvvm.floor.ftz.f
  1304. nvvm_fma_rm_d, // llvm.nvvm.fma.rm.d
  1305. nvvm_fma_rm_f, // llvm.nvvm.fma.rm.f
  1306. nvvm_fma_rm_ftz_f, // llvm.nvvm.fma.rm.ftz.f
  1307. nvvm_fma_rn_d, // llvm.nvvm.fma.rn.d
  1308. nvvm_fma_rn_f, // llvm.nvvm.fma.rn.f
  1309. nvvm_fma_rn_ftz_f, // llvm.nvvm.fma.rn.ftz.f
  1310. nvvm_fma_rp_d, // llvm.nvvm.fma.rp.d
  1311. nvvm_fma_rp_f, // llvm.nvvm.fma.rp.f
  1312. nvvm_fma_rp_ftz_f, // llvm.nvvm.fma.rp.ftz.f
  1313. nvvm_fma_rz_d, // llvm.nvvm.fma.rz.d
  1314. nvvm_fma_rz_f, // llvm.nvvm.fma.rz.f
  1315. nvvm_fma_rz_ftz_f, // llvm.nvvm.fma.rz.ftz.f
  1316. nvvm_fmax_d, // llvm.nvvm.fmax.d
  1317. nvvm_fmax_f, // llvm.nvvm.fmax.f
  1318. nvvm_fmax_ftz_f, // llvm.nvvm.fmax.ftz.f
  1319. nvvm_fmin_d, // llvm.nvvm.fmin.d
  1320. nvvm_fmin_f, // llvm.nvvm.fmin.f
  1321. nvvm_fmin_ftz_f, // llvm.nvvm.fmin.ftz.f
  1322. nvvm_h2f, // llvm.nvvm.h2f
  1323. nvvm_i2d_rm, // llvm.nvvm.i2d.rm
  1324. nvvm_i2d_rn, // llvm.nvvm.i2d.rn
  1325. nvvm_i2d_rp, // llvm.nvvm.i2d.rp
  1326. nvvm_i2d_rz, // llvm.nvvm.i2d.rz
  1327. nvvm_i2f_rm, // llvm.nvvm.i2f.rm
  1328. nvvm_i2f_rn, // llvm.nvvm.i2f.rn
  1329. nvvm_i2f_rp, // llvm.nvvm.i2f.rp
  1330. nvvm_i2f_rz, // llvm.nvvm.i2f.rz
  1331. nvvm_ldu_global_f, // llvm.nvvm.ldu.global.f
  1332. nvvm_ldu_global_i, // llvm.nvvm.ldu.global.i
  1333. nvvm_ldu_global_p, // llvm.nvvm.ldu.global.p
  1334. nvvm_lg2_approx_d, // llvm.nvvm.lg2.approx.d
  1335. nvvm_lg2_approx_f, // llvm.nvvm.lg2.approx.f
  1336. nvvm_lg2_approx_ftz_f, // llvm.nvvm.lg2.approx.ftz.f
  1337. nvvm_ll2d_rm, // llvm.nvvm.ll2d.rm
  1338. nvvm_ll2d_rn, // llvm.nvvm.ll2d.rn
  1339. nvvm_ll2d_rp, // llvm.nvvm.ll2d.rp
  1340. nvvm_ll2d_rz, // llvm.nvvm.ll2d.rz
  1341. nvvm_ll2f_rm, // llvm.nvvm.ll2f.rm
  1342. nvvm_ll2f_rn, // llvm.nvvm.ll2f.rn
  1343. nvvm_ll2f_rp, // llvm.nvvm.ll2f.rp
  1344. nvvm_ll2f_rz, // llvm.nvvm.ll2f.rz
  1345. nvvm_lohi_i2d, // llvm.nvvm.lohi.i2d
  1346. nvvm_max_i, // llvm.nvvm.max.i
  1347. nvvm_max_ll, // llvm.nvvm.max.ll
  1348. nvvm_max_ui, // llvm.nvvm.max.ui
  1349. nvvm_max_ull, // llvm.nvvm.max.ull
  1350. nvvm_membar_cta, // llvm.nvvm.membar.cta
  1351. nvvm_membar_gl, // llvm.nvvm.membar.gl
  1352. nvvm_membar_sys, // llvm.nvvm.membar.sys
  1353. nvvm_min_i, // llvm.nvvm.min.i
  1354. nvvm_min_ll, // llvm.nvvm.min.ll
  1355. nvvm_min_ui, // llvm.nvvm.min.ui
  1356. nvvm_min_ull, // llvm.nvvm.min.ull
  1357. nvvm_move_double, // llvm.nvvm.move.double
  1358. nvvm_move_float, // llvm.nvvm.move.float
  1359. nvvm_move_i16, // llvm.nvvm.move.i16
  1360. nvvm_move_i32, // llvm.nvvm.move.i32
  1361. nvvm_move_i64, // llvm.nvvm.move.i64
  1362. nvvm_move_i8, // llvm.nvvm.move.i8
  1363. nvvm_move_ptr, // llvm.nvvm.move.ptr
  1364. nvvm_mul24_i, // llvm.nvvm.mul24.i
  1365. nvvm_mul24_ui, // llvm.nvvm.mul24.ui
  1366. nvvm_mul_rm_d, // llvm.nvvm.mul.rm.d
  1367. nvvm_mul_rm_f, // llvm.nvvm.mul.rm.f
  1368. nvvm_mul_rm_ftz_f, // llvm.nvvm.mul.rm.ftz.f
  1369. nvvm_mul_rn_d, // llvm.nvvm.mul.rn.d
  1370. nvvm_mul_rn_f, // llvm.nvvm.mul.rn.f
  1371. nvvm_mul_rn_ftz_f, // llvm.nvvm.mul.rn.ftz.f
  1372. nvvm_mul_rp_d, // llvm.nvvm.mul.rp.d
  1373. nvvm_mul_rp_f, // llvm.nvvm.mul.rp.f
  1374. nvvm_mul_rp_ftz_f, // llvm.nvvm.mul.rp.ftz.f
  1375. nvvm_mul_rz_d, // llvm.nvvm.mul.rz.d
  1376. nvvm_mul_rz_f, // llvm.nvvm.mul.rz.f
  1377. nvvm_mul_rz_ftz_f, // llvm.nvvm.mul.rz.ftz.f
  1378. nvvm_mulhi_i, // llvm.nvvm.mulhi.i
  1379. nvvm_mulhi_ll, // llvm.nvvm.mulhi.ll
  1380. nvvm_mulhi_ui, // llvm.nvvm.mulhi.ui
  1381. nvvm_mulhi_ull, // llvm.nvvm.mulhi.ull
  1382. nvvm_popc_i, // llvm.nvvm.popc.i
  1383. nvvm_popc_ll, // llvm.nvvm.popc.ll
  1384. nvvm_prmt, // llvm.nvvm.prmt
  1385. nvvm_ptr_constant_to_gen, // llvm.nvvm.ptr.constant.to.gen
  1386. nvvm_ptr_gen_to_constant, // llvm.nvvm.ptr.gen.to.constant
  1387. nvvm_ptr_gen_to_global, // llvm.nvvm.ptr.gen.to.global
  1388. nvvm_ptr_gen_to_local, // llvm.nvvm.ptr.gen.to.local
  1389. nvvm_ptr_gen_to_param, // llvm.nvvm.ptr.gen.to.param
  1390. nvvm_ptr_gen_to_shared, // llvm.nvvm.ptr.gen.to.shared
  1391. nvvm_ptr_global_to_gen, // llvm.nvvm.ptr.global.to.gen
  1392. nvvm_ptr_local_to_gen, // llvm.nvvm.ptr.local.to.gen
  1393. nvvm_ptr_shared_to_gen, // llvm.nvvm.ptr.shared.to.gen
  1394. nvvm_rcp_approx_ftz_d, // llvm.nvvm.rcp.approx.ftz.d
  1395. nvvm_rcp_rm_d, // llvm.nvvm.rcp.rm.d
  1396. nvvm_rcp_rm_f, // llvm.nvvm.rcp.rm.f
  1397. nvvm_rcp_rm_ftz_f, // llvm.nvvm.rcp.rm.ftz.f
  1398. nvvm_rcp_rn_d, // llvm.nvvm.rcp.rn.d
  1399. nvvm_rcp_rn_f, // llvm.nvvm.rcp.rn.f
  1400. nvvm_rcp_rn_ftz_f, // llvm.nvvm.rcp.rn.ftz.f
  1401. nvvm_rcp_rp_d, // llvm.nvvm.rcp.rp.d
  1402. nvvm_rcp_rp_f, // llvm.nvvm.rcp.rp.f
  1403. nvvm_rcp_rp_ftz_f, // llvm.nvvm.rcp.rp.ftz.f
  1404. nvvm_rcp_rz_d, // llvm.nvvm.rcp.rz.d
  1405. nvvm_rcp_rz_f, // llvm.nvvm.rcp.rz.f
  1406. nvvm_rcp_rz_ftz_f, // llvm.nvvm.rcp.rz.ftz.f
  1407. nvvm_read_ptx_sreg_ctaid_x, // llvm.nvvm.read.ptx.sreg.ctaid.x
  1408. nvvm_read_ptx_sreg_ctaid_y, // llvm.nvvm.read.ptx.sreg.ctaid.y
  1409. nvvm_read_ptx_sreg_ctaid_z, // llvm.nvvm.read.ptx.sreg.ctaid.z
  1410. nvvm_read_ptx_sreg_nctaid_x, // llvm.nvvm.read.ptx.sreg.nctaid.x
  1411. nvvm_read_ptx_sreg_nctaid_y, // llvm.nvvm.read.ptx.sreg.nctaid.y
  1412. nvvm_read_ptx_sreg_nctaid_z, // llvm.nvvm.read.ptx.sreg.nctaid.z
  1413. nvvm_read_ptx_sreg_ntid_x, // llvm.nvvm.read.ptx.sreg.ntid.x
  1414. nvvm_read_ptx_sreg_ntid_y, // llvm.nvvm.read.ptx.sreg.ntid.y
  1415. nvvm_read_ptx_sreg_ntid_z, // llvm.nvvm.read.ptx.sreg.ntid.z
  1416. nvvm_read_ptx_sreg_tid_x, // llvm.nvvm.read.ptx.sreg.tid.x
  1417. nvvm_read_ptx_sreg_tid_y, // llvm.nvvm.read.ptx.sreg.tid.y
  1418. nvvm_read_ptx_sreg_tid_z, // llvm.nvvm.read.ptx.sreg.tid.z
  1419. nvvm_read_ptx_sreg_warpsize, // llvm.nvvm.read.ptx.sreg.warpsize
  1420. nvvm_round_d, // llvm.nvvm.round.d
  1421. nvvm_round_f, // llvm.nvvm.round.f
  1422. nvvm_round_ftz_f, // llvm.nvvm.round.ftz.f
  1423. nvvm_rsqrt_approx_d, // llvm.nvvm.rsqrt.approx.d
  1424. nvvm_rsqrt_approx_f, // llvm.nvvm.rsqrt.approx.f
  1425. nvvm_rsqrt_approx_ftz_f, // llvm.nvvm.rsqrt.approx.ftz.f
  1426. nvvm_sad_i, // llvm.nvvm.sad.i
  1427. nvvm_sad_ui, // llvm.nvvm.sad.ui
  1428. nvvm_saturate_d, // llvm.nvvm.saturate.d
  1429. nvvm_saturate_f, // llvm.nvvm.saturate.f
  1430. nvvm_saturate_ftz_f, // llvm.nvvm.saturate.ftz.f
  1431. nvvm_sin_approx_f, // llvm.nvvm.sin.approx.f
  1432. nvvm_sin_approx_ftz_f, // llvm.nvvm.sin.approx.ftz.f
  1433. nvvm_sqrt_approx_f, // llvm.nvvm.sqrt.approx.f
  1434. nvvm_sqrt_approx_ftz_f, // llvm.nvvm.sqrt.approx.ftz.f
  1435. nvvm_sqrt_rm_d, // llvm.nvvm.sqrt.rm.d
  1436. nvvm_sqrt_rm_f, // llvm.nvvm.sqrt.rm.f
  1437. nvvm_sqrt_rm_ftz_f, // llvm.nvvm.sqrt.rm.ftz.f
  1438. nvvm_sqrt_rn_d, // llvm.nvvm.sqrt.rn.d
  1439. nvvm_sqrt_rn_f, // llvm.nvvm.sqrt.rn.f
  1440. nvvm_sqrt_rn_ftz_f, // llvm.nvvm.sqrt.rn.ftz.f
  1441. nvvm_sqrt_rp_d, // llvm.nvvm.sqrt.rp.d
  1442. nvvm_sqrt_rp_f, // llvm.nvvm.sqrt.rp.f
  1443. nvvm_sqrt_rp_ftz_f, // llvm.nvvm.sqrt.rp.ftz.f
  1444. nvvm_sqrt_rz_d, // llvm.nvvm.sqrt.rz.d
  1445. nvvm_sqrt_rz_f, // llvm.nvvm.sqrt.rz.f
  1446. nvvm_sqrt_rz_ftz_f, // llvm.nvvm.sqrt.rz.ftz.f
  1447. nvvm_trunc_d, // llvm.nvvm.trunc.d
  1448. nvvm_trunc_f, // llvm.nvvm.trunc.f
  1449. nvvm_trunc_ftz_f, // llvm.nvvm.trunc.ftz.f
  1450. nvvm_ui2d_rm, // llvm.nvvm.ui2d.rm
  1451. nvvm_ui2d_rn, // llvm.nvvm.ui2d.rn
  1452. nvvm_ui2d_rp, // llvm.nvvm.ui2d.rp
  1453. nvvm_ui2d_rz, // llvm.nvvm.ui2d.rz
  1454. nvvm_ui2f_rm, // llvm.nvvm.ui2f.rm
  1455. nvvm_ui2f_rn, // llvm.nvvm.ui2f.rn
  1456. nvvm_ui2f_rp, // llvm.nvvm.ui2f.rp
  1457. nvvm_ui2f_rz, // llvm.nvvm.ui2f.rz
  1458. nvvm_ull2d_rm, // llvm.nvvm.ull2d.rm
  1459. nvvm_ull2d_rn, // llvm.nvvm.ull2d.rn
  1460. nvvm_ull2d_rp, // llvm.nvvm.ull2d.rp
  1461. nvvm_ull2d_rz, // llvm.nvvm.ull2d.rz
  1462. nvvm_ull2f_rm, // llvm.nvvm.ull2f.rm
  1463. nvvm_ull2f_rn, // llvm.nvvm.ull2f.rn
  1464. nvvm_ull2f_rp, // llvm.nvvm.ull2f.rp
  1465. nvvm_ull2f_rz, // llvm.nvvm.ull2f.rz
  1466. objectsize, // llvm.objectsize
  1467. pcmarker, // llvm.pcmarker
  1468. pow, // llvm.pow
  1469. powi, // llvm.powi
  1470. ppc_altivec_dss, // llvm.ppc.altivec.dss
  1471. ppc_altivec_dssall, // llvm.ppc.altivec.dssall
  1472. ppc_altivec_dst, // llvm.ppc.altivec.dst
  1473. ppc_altivec_dstst, // llvm.ppc.altivec.dstst
  1474. ppc_altivec_dststt, // llvm.ppc.altivec.dststt
  1475. ppc_altivec_dstt, // llvm.ppc.altivec.dstt
  1476. ppc_altivec_lvebx, // llvm.ppc.altivec.lvebx
  1477. ppc_altivec_lvehx, // llvm.ppc.altivec.lvehx
  1478. ppc_altivec_lvewx, // llvm.ppc.altivec.lvewx
  1479. ppc_altivec_lvsl, // llvm.ppc.altivec.lvsl
  1480. ppc_altivec_lvsr, // llvm.ppc.altivec.lvsr
  1481. ppc_altivec_lvx, // llvm.ppc.altivec.lvx
  1482. ppc_altivec_lvxl, // llvm.ppc.altivec.lvxl
  1483. ppc_altivec_mfvscr, // llvm.ppc.altivec.mfvscr
  1484. ppc_altivec_mtvscr, // llvm.ppc.altivec.mtvscr
  1485. ppc_altivec_stvebx, // llvm.ppc.altivec.stvebx
  1486. ppc_altivec_stvehx, // llvm.ppc.altivec.stvehx
  1487. ppc_altivec_stvewx, // llvm.ppc.altivec.stvewx
  1488. ppc_altivec_stvx, // llvm.ppc.altivec.stvx
  1489. ppc_altivec_stvxl, // llvm.ppc.altivec.stvxl
  1490. ppc_altivec_vaddcuw, // llvm.ppc.altivec.vaddcuw
  1491. ppc_altivec_vaddsbs, // llvm.ppc.altivec.vaddsbs
  1492. ppc_altivec_vaddshs, // llvm.ppc.altivec.vaddshs
  1493. ppc_altivec_vaddsws, // llvm.ppc.altivec.vaddsws
  1494. ppc_altivec_vaddubs, // llvm.ppc.altivec.vaddubs
  1495. ppc_altivec_vadduhs, // llvm.ppc.altivec.vadduhs
  1496. ppc_altivec_vadduws, // llvm.ppc.altivec.vadduws
  1497. ppc_altivec_vavgsb, // llvm.ppc.altivec.vavgsb
  1498. ppc_altivec_vavgsh, // llvm.ppc.altivec.vavgsh
  1499. ppc_altivec_vavgsw, // llvm.ppc.altivec.vavgsw
  1500. ppc_altivec_vavgub, // llvm.ppc.altivec.vavgub
  1501. ppc_altivec_vavguh, // llvm.ppc.altivec.vavguh
  1502. ppc_altivec_vavguw, // llvm.ppc.altivec.vavguw
  1503. ppc_altivec_vcfsx, // llvm.ppc.altivec.vcfsx
  1504. ppc_altivec_vcfux, // llvm.ppc.altivec.vcfux
  1505. ppc_altivec_vcmpbfp, // llvm.ppc.altivec.vcmpbfp
  1506. ppc_altivec_vcmpbfp_p, // llvm.ppc.altivec.vcmpbfp.p
  1507. ppc_altivec_vcmpeqfp, // llvm.ppc.altivec.vcmpeqfp
  1508. ppc_altivec_vcmpeqfp_p, // llvm.ppc.altivec.vcmpeqfp.p
  1509. ppc_altivec_vcmpequb, // llvm.ppc.altivec.vcmpequb
  1510. ppc_altivec_vcmpequb_p, // llvm.ppc.altivec.vcmpequb.p
  1511. ppc_altivec_vcmpequh, // llvm.ppc.altivec.vcmpequh
  1512. ppc_altivec_vcmpequh_p, // llvm.ppc.altivec.vcmpequh.p
  1513. ppc_altivec_vcmpequw, // llvm.ppc.altivec.vcmpequw
  1514. ppc_altivec_vcmpequw_p, // llvm.ppc.altivec.vcmpequw.p
  1515. ppc_altivec_vcmpgefp, // llvm.ppc.altivec.vcmpgefp
  1516. ppc_altivec_vcmpgefp_p, // llvm.ppc.altivec.vcmpgefp.p
  1517. ppc_altivec_vcmpgtfp, // llvm.ppc.altivec.vcmpgtfp
  1518. ppc_altivec_vcmpgtfp_p, // llvm.ppc.altivec.vcmpgtfp.p
  1519. ppc_altivec_vcmpgtsb, // llvm.ppc.altivec.vcmpgtsb
  1520. ppc_altivec_vcmpgtsb_p, // llvm.ppc.altivec.vcmpgtsb.p
  1521. ppc_altivec_vcmpgtsh, // llvm.ppc.altivec.vcmpgtsh
  1522. ppc_altivec_vcmpgtsh_p, // llvm.ppc.altivec.vcmpgtsh.p
  1523. ppc_altivec_vcmpgtsw, // llvm.ppc.altivec.vcmpgtsw
  1524. ppc_altivec_vcmpgtsw_p, // llvm.ppc.altivec.vcmpgtsw.p
  1525. ppc_altivec_vcmpgtub, // llvm.ppc.altivec.vcmpgtub
  1526. ppc_altivec_vcmpgtub_p, // llvm.ppc.altivec.vcmpgtub.p
  1527. ppc_altivec_vcmpgtuh, // llvm.ppc.altivec.vcmpgtuh
  1528. ppc_altivec_vcmpgtuh_p, // llvm.ppc.altivec.vcmpgtuh.p
  1529. ppc_altivec_vcmpgtuw, // llvm.ppc.altivec.vcmpgtuw
  1530. ppc_altivec_vcmpgtuw_p, // llvm.ppc.altivec.vcmpgtuw.p
  1531. ppc_altivec_vctsxs, // llvm.ppc.altivec.vctsxs
  1532. ppc_altivec_vctuxs, // llvm.ppc.altivec.vctuxs
  1533. ppc_altivec_vexptefp, // llvm.ppc.altivec.vexptefp
  1534. ppc_altivec_vlogefp, // llvm.ppc.altivec.vlogefp
  1535. ppc_altivec_vmaddfp, // llvm.ppc.altivec.vmaddfp
  1536. ppc_altivec_vmaxfp, // llvm.ppc.altivec.vmaxfp
  1537. ppc_altivec_vmaxsb, // llvm.ppc.altivec.vmaxsb
  1538. ppc_altivec_vmaxsh, // llvm.ppc.altivec.vmaxsh
  1539. ppc_altivec_vmaxsw, // llvm.ppc.altivec.vmaxsw
  1540. ppc_altivec_vmaxub, // llvm.ppc.altivec.vmaxub
  1541. ppc_altivec_vmaxuh, // llvm.ppc.altivec.vmaxuh
  1542. ppc_altivec_vmaxuw, // llvm.ppc.altivec.vmaxuw
  1543. ppc_altivec_vmhaddshs, // llvm.ppc.altivec.vmhaddshs
  1544. ppc_altivec_vmhraddshs, // llvm.ppc.altivec.vmhraddshs
  1545. ppc_altivec_vminfp, // llvm.ppc.altivec.vminfp
  1546. ppc_altivec_vminsb, // llvm.ppc.altivec.vminsb
  1547. ppc_altivec_vminsh, // llvm.ppc.altivec.vminsh
  1548. ppc_altivec_vminsw, // llvm.ppc.altivec.vminsw
  1549. ppc_altivec_vminub, // llvm.ppc.altivec.vminub
  1550. ppc_altivec_vminuh, // llvm.ppc.altivec.vminuh
  1551. ppc_altivec_vminuw, // llvm.ppc.altivec.vminuw
  1552. ppc_altivec_vmladduhm, // llvm.ppc.altivec.vmladduhm
  1553. ppc_altivec_vmsummbm, // llvm.ppc.altivec.vmsummbm
  1554. ppc_altivec_vmsumshm, // llvm.ppc.altivec.vmsumshm
  1555. ppc_altivec_vmsumshs, // llvm.ppc.altivec.vmsumshs
  1556. ppc_altivec_vmsumubm, // llvm.ppc.altivec.vmsumubm
  1557. ppc_altivec_vmsumuhm, // llvm.ppc.altivec.vmsumuhm
  1558. ppc_altivec_vmsumuhs, // llvm.ppc.altivec.vmsumuhs
  1559. ppc_altivec_vmulesb, // llvm.ppc.altivec.vmulesb
  1560. ppc_altivec_vmulesh, // llvm.ppc.altivec.vmulesh
  1561. ppc_altivec_vmuleub, // llvm.ppc.altivec.vmuleub
  1562. ppc_altivec_vmuleuh, // llvm.ppc.altivec.vmuleuh
  1563. ppc_altivec_vmulosb, // llvm.ppc.altivec.vmulosb
  1564. ppc_altivec_vmulosh, // llvm.ppc.altivec.vmulosh
  1565. ppc_altivec_vmuloub, // llvm.ppc.altivec.vmuloub
  1566. ppc_altivec_vmulouh, // llvm.ppc.altivec.vmulouh
  1567. ppc_altivec_vnmsubfp, // llvm.ppc.altivec.vnmsubfp
  1568. ppc_altivec_vperm, // llvm.ppc.altivec.vperm
  1569. ppc_altivec_vpkpx, // llvm.ppc.altivec.vpkpx
  1570. ppc_altivec_vpkshss, // llvm.ppc.altivec.vpkshss
  1571. ppc_altivec_vpkshus, // llvm.ppc.altivec.vpkshus
  1572. ppc_altivec_vpkswss, // llvm.ppc.altivec.vpkswss
  1573. ppc_altivec_vpkswus, // llvm.ppc.altivec.vpkswus
  1574. ppc_altivec_vpkuhus, // llvm.ppc.altivec.vpkuhus
  1575. ppc_altivec_vpkuwus, // llvm.ppc.altivec.vpkuwus
  1576. ppc_altivec_vrefp, // llvm.ppc.altivec.vrefp
  1577. ppc_altivec_vrfim, // llvm.ppc.altivec.vrfim
  1578. ppc_altivec_vrfin, // llvm.ppc.altivec.vrfin
  1579. ppc_altivec_vrfip, // llvm.ppc.altivec.vrfip
  1580. ppc_altivec_vrfiz, // llvm.ppc.altivec.vrfiz
  1581. ppc_altivec_vrlb, // llvm.ppc.altivec.vrlb
  1582. ppc_altivec_vrlh, // llvm.ppc.altivec.vrlh
  1583. ppc_altivec_vrlw, // llvm.ppc.altivec.vrlw
  1584. ppc_altivec_vrsqrtefp, // llvm.ppc.altivec.vrsqrtefp
  1585. ppc_altivec_vsel, // llvm.ppc.altivec.vsel
  1586. ppc_altivec_vsl, // llvm.ppc.altivec.vsl
  1587. ppc_altivec_vslb, // llvm.ppc.altivec.vslb
  1588. ppc_altivec_vslh, // llvm.ppc.altivec.vslh
  1589. ppc_altivec_vslo, // llvm.ppc.altivec.vslo
  1590. ppc_altivec_vslw, // llvm.ppc.altivec.vslw
  1591. ppc_altivec_vsr, // llvm.ppc.altivec.vsr
  1592. ppc_altivec_vsrab, // llvm.ppc.altivec.vsrab
  1593. ppc_altivec_vsrah, // llvm.ppc.altivec.vsrah
  1594. ppc_altivec_vsraw, // llvm.ppc.altivec.vsraw
  1595. ppc_altivec_vsrb, // llvm.ppc.altivec.vsrb
  1596. ppc_altivec_vsrh, // llvm.ppc.altivec.vsrh
  1597. ppc_altivec_vsro, // llvm.ppc.altivec.vsro
  1598. ppc_altivec_vsrw, // llvm.ppc.altivec.vsrw
  1599. ppc_altivec_vsubcuw, // llvm.ppc.altivec.vsubcuw
  1600. ppc_altivec_vsubsbs, // llvm.ppc.altivec.vsubsbs
  1601. ppc_altivec_vsubshs, // llvm.ppc.altivec.vsubshs
  1602. ppc_altivec_vsubsws, // llvm.ppc.altivec.vsubsws
  1603. ppc_altivec_vsububs, // llvm.ppc.altivec.vsububs
  1604. ppc_altivec_vsubuhs, // llvm.ppc.altivec.vsubuhs
  1605. ppc_altivec_vsubuws, // llvm.ppc.altivec.vsubuws
  1606. ppc_altivec_vsum2sws, // llvm.ppc.altivec.vsum2sws
  1607. ppc_altivec_vsum4sbs, // llvm.ppc.altivec.vsum4sbs
  1608. ppc_altivec_vsum4shs, // llvm.ppc.altivec.vsum4shs
  1609. ppc_altivec_vsum4ubs, // llvm.ppc.altivec.vsum4ubs
  1610. ppc_altivec_vsumsws, // llvm.ppc.altivec.vsumsws
  1611. ppc_altivec_vupkhpx, // llvm.ppc.altivec.vupkhpx
  1612. ppc_altivec_vupkhsb, // llvm.ppc.altivec.vupkhsb
  1613. ppc_altivec_vupkhsh, // llvm.ppc.altivec.vupkhsh
  1614. ppc_altivec_vupklpx, // llvm.ppc.altivec.vupklpx
  1615. ppc_altivec_vupklsb, // llvm.ppc.altivec.vupklsb
  1616. ppc_altivec_vupklsh, // llvm.ppc.altivec.vupklsh
  1617. ppc_dcba, // llvm.ppc.dcba
  1618. ppc_dcbf, // llvm.ppc.dcbf
  1619. ppc_dcbi, // llvm.ppc.dcbi
  1620. ppc_dcbst, // llvm.ppc.dcbst
  1621. ppc_dcbt, // llvm.ppc.dcbt
  1622. ppc_dcbtst, // llvm.ppc.dcbtst
  1623. ppc_dcbz, // llvm.ppc.dcbz
  1624. ppc_dcbzl, // llvm.ppc.dcbzl
  1625. ppc_sync, // llvm.ppc.sync
  1626. prefetch, // llvm.prefetch
  1627. ptr_annotation, // llvm.ptr.annotation
  1628. ptx_bar_sync, // llvm.ptx.bar.sync
  1629. ptx_read_clock, // llvm.ptx.read.clock
  1630. ptx_read_clock64, // llvm.ptx.read.clock64
  1631. ptx_read_ctaid_w, // llvm.ptx.read.ctaid.w
  1632. ptx_read_ctaid_x, // llvm.ptx.read.ctaid.x
  1633. ptx_read_ctaid_y, // llvm.ptx.read.ctaid.y
  1634. ptx_read_ctaid_z, // llvm.ptx.read.ctaid.z
  1635. ptx_read_gridid, // llvm.ptx.read.gridid
  1636. ptx_read_laneid, // llvm.ptx.read.laneid
  1637. ptx_read_lanemask_eq, // llvm.ptx.read.lanemask.eq
  1638. ptx_read_lanemask_ge, // llvm.ptx.read.lanemask.ge
  1639. ptx_read_lanemask_gt, // llvm.ptx.read.lanemask.gt
  1640. ptx_read_lanemask_le, // llvm.ptx.read.lanemask.le
  1641. ptx_read_lanemask_lt, // llvm.ptx.read.lanemask.lt
  1642. ptx_read_nctaid_w, // llvm.ptx.read.nctaid.w
  1643. ptx_read_nctaid_x, // llvm.ptx.read.nctaid.x
  1644. ptx_read_nctaid_y, // llvm.ptx.read.nctaid.y
  1645. ptx_read_nctaid_z, // llvm.ptx.read.nctaid.z
  1646. ptx_read_nsmid, // llvm.ptx.read.nsmid
  1647. ptx_read_ntid_w, // llvm.ptx.read.ntid.w
  1648. ptx_read_ntid_x, // llvm.ptx.read.ntid.x
  1649. ptx_read_ntid_y, // llvm.ptx.read.ntid.y
  1650. ptx_read_ntid_z, // llvm.ptx.read.ntid.z
  1651. ptx_read_nwarpid, // llvm.ptx.read.nwarpid
  1652. ptx_read_pm0, // llvm.ptx.read.pm0
  1653. ptx_read_pm1, // llvm.ptx.read.pm1
  1654. ptx_read_pm2, // llvm.ptx.read.pm2
  1655. ptx_read_pm3, // llvm.ptx.read.pm3
  1656. ptx_read_smid, // llvm.ptx.read.smid
  1657. ptx_read_tid_w, // llvm.ptx.read.tid.w
  1658. ptx_read_tid_x, // llvm.ptx.read.tid.x
  1659. ptx_read_tid_y, // llvm.ptx.read.tid.y
  1660. ptx_read_tid_z, // llvm.ptx.read.tid.z
  1661. ptx_read_warpid, // llvm.ptx.read.warpid
  1662. readcyclecounter, // llvm.readcyclecounter
  1663. returnaddress, // llvm.returnaddress
  1664. sadd_with_overflow, // llvm.sadd.with.overflow
  1665. setjmp, // llvm.setjmp
  1666. siglongjmp, // llvm.siglongjmp
  1667. sigsetjmp, // llvm.sigsetjmp
  1668. sin, // llvm.sin
  1669. smul_with_overflow, // llvm.smul.with.overflow
  1670. spu_si_a, // llvm.spu.si.a
  1671. spu_si_addx, // llvm.spu.si.addx
  1672. spu_si_ah, // llvm.spu.si.ah
  1673. spu_si_ahi, // llvm.spu.si.ahi
  1674. spu_si_ai, // llvm.spu.si.ai
  1675. spu_si_and, // llvm.spu.si.and
  1676. spu_si_andbi, // llvm.spu.si.andbi
  1677. spu_si_andc, // llvm.spu.si.andc
  1678. spu_si_andhi, // llvm.spu.si.andhi
  1679. spu_si_andi, // llvm.spu.si.andi
  1680. spu_si_bg, // llvm.spu.si.bg
  1681. spu_si_bgx, // llvm.spu.si.bgx
  1682. spu_si_ceq, // llvm.spu.si.ceq
  1683. spu_si_ceqb, // llvm.spu.si.ceqb
  1684. spu_si_ceqbi, // llvm.spu.si.ceqbi
  1685. spu_si_ceqh, // llvm.spu.si.ceqh
  1686. spu_si_ceqhi, // llvm.spu.si.ceqhi
  1687. spu_si_ceqi, // llvm.spu.si.ceqi
  1688. spu_si_cg, // llvm.spu.si.cg
  1689. spu_si_cgt, // llvm.spu.si.cgt
  1690. spu_si_cgtb, // llvm.spu.si.cgtb
  1691. spu_si_cgtbi, // llvm.spu.si.cgtbi
  1692. spu_si_cgth, // llvm.spu.si.cgth
  1693. spu_si_cgthi, // llvm.spu.si.cgthi
  1694. spu_si_cgti, // llvm.spu.si.cgti
  1695. spu_si_cgx, // llvm.spu.si.cgx
  1696. spu_si_clgt, // llvm.spu.si.clgt
  1697. spu_si_clgtb, // llvm.spu.si.clgtb
  1698. spu_si_clgtbi, // llvm.spu.si.clgtbi
  1699. spu_si_clgth, // llvm.spu.si.clgth
  1700. spu_si_clgthi, // llvm.spu.si.clgthi
  1701. spu_si_clgti, // llvm.spu.si.clgti
  1702. spu_si_dfa, // llvm.spu.si.dfa
  1703. spu_si_dfm, // llvm.spu.si.dfm
  1704. spu_si_dfma, // llvm.spu.si.dfma
  1705. spu_si_dfms, // llvm.spu.si.dfms
  1706. spu_si_dfnma, // llvm.spu.si.dfnma
  1707. spu_si_dfnms, // llvm.spu.si.dfnms
  1708. spu_si_dfs, // llvm.spu.si.dfs
  1709. spu_si_fa, // llvm.spu.si.fa
  1710. spu_si_fceq, // llvm.spu.si.fceq
  1711. spu_si_fcgt, // llvm.spu.si.fcgt
  1712. spu_si_fcmeq, // llvm.spu.si.fcmeq
  1713. spu_si_fcmgt, // llvm.spu.si.fcmgt
  1714. spu_si_fm, // llvm.spu.si.fm
  1715. spu_si_fma, // llvm.spu.si.fma
  1716. spu_si_fms, // llvm.spu.si.fms
  1717. spu_si_fnms, // llvm.spu.si.fnms
  1718. spu_si_fs, // llvm.spu.si.fs
  1719. spu_si_fsmbi, // llvm.spu.si.fsmbi
  1720. spu_si_mpy, // llvm.spu.si.mpy
  1721. spu_si_mpya, // llvm.spu.si.mpya
  1722. spu_si_mpyh, // llvm.spu.si.mpyh
  1723. spu_si_mpyhh, // llvm.spu.si.mpyhh
  1724. spu_si_mpyhha, // llvm.spu.si.mpyhha
  1725. spu_si_mpyhhau, // llvm.spu.si.mpyhhau
  1726. spu_si_mpyhhu, // llvm.spu.si.mpyhhu
  1727. spu_si_mpyi, // llvm.spu.si.mpyi
  1728. spu_si_mpys, // llvm.spu.si.mpys
  1729. spu_si_mpyu, // llvm.spu.si.mpyu
  1730. spu_si_mpyui, // llvm.spu.si.mpyui
  1731. spu_si_nand, // llvm.spu.si.nand
  1732. spu_si_nor, // llvm.spu.si.nor
  1733. spu_si_or, // llvm.spu.si.or
  1734. spu_si_orbi, // llvm.spu.si.orbi
  1735. spu_si_orc, // llvm.spu.si.orc
  1736. spu_si_orhi, // llvm.spu.si.orhi
  1737. spu_si_ori, // llvm.spu.si.ori
  1738. spu_si_sf, // llvm.spu.si.sf
  1739. spu_si_sfh, // llvm.spu.si.sfh
  1740. spu_si_sfhi, // llvm.spu.si.sfhi
  1741. spu_si_sfi, // llvm.spu.si.sfi
  1742. spu_si_sfx, // llvm.spu.si.sfx
  1743. spu_si_shli, // llvm.spu.si.shli
  1744. spu_si_shlqbi, // llvm.spu.si.shlqbi
  1745. spu_si_shlqbii, // llvm.spu.si.shlqbii
  1746. spu_si_shlqby, // llvm.spu.si.shlqby
  1747. spu_si_shlqbyi, // llvm.spu.si.shlqbyi
  1748. spu_si_xor, // llvm.spu.si.xor
  1749. spu_si_xorbi, // llvm.spu.si.xorbi
  1750. spu_si_xorhi, // llvm.spu.si.xorhi
  1751. spu_si_xori, // llvm.spu.si.xori
  1752. sqrt, // llvm.sqrt
  1753. ssub_with_overflow, // llvm.ssub.with.overflow
  1754. stackprotector, // llvm.stackprotector
  1755. stackrestore, // llvm.stackrestore
  1756. stacksave, // llvm.stacksave
  1757. trap, // llvm.trap
  1758. uadd_with_overflow, // llvm.uadd.with.overflow
  1759. umul_with_overflow, // llvm.umul.with.overflow
  1760. usub_with_overflow, // llvm.usub.with.overflow
  1761. vacopy, // llvm.va_copy
  1762. vaend, // llvm.va_end
  1763. var_annotation, // llvm.var.annotation
  1764. vastart, // llvm.va_start
  1765. x86_3dnow_pavgusb, // llvm.x86.3dnow.pavgusb
  1766. x86_3dnow_pf2id, // llvm.x86.3dnow.pf2id
  1767. x86_3dnow_pfacc, // llvm.x86.3dnow.pfacc
  1768. x86_3dnow_pfadd, // llvm.x86.3dnow.pfadd
  1769. x86_3dnow_pfcmpeq, // llvm.x86.3dnow.pfcmpeq
  1770. x86_3dnow_pfcmpge, // llvm.x86.3dnow.pfcmpge
  1771. x86_3dnow_pfcmpgt, // llvm.x86.3dnow.pfcmpgt
  1772. x86_3dnow_pfmax, // llvm.x86.3dnow.pfmax
  1773. x86_3dnow_pfmin, // llvm.x86.3dnow.pfmin
  1774. x86_3dnow_pfmul, // llvm.x86.3dnow.pfmul
  1775. x86_3dnow_pfrcp, // llvm.x86.3dnow.pfrcp
  1776. x86_3dnow_pfrcpit1, // llvm.x86.3dnow.pfrcpit1
  1777. x86_3dnow_pfrcpit2, // llvm.x86.3dnow.pfrcpit2
  1778. x86_3dnow_pfrsqit1, // llvm.x86.3dnow.pfrsqit1
  1779. x86_3dnow_pfrsqrt, // llvm.x86.3dnow.pfrsqrt
  1780. x86_3dnow_pfsub, // llvm.x86.3dnow.pfsub
  1781. x86_3dnow_pfsubr, // llvm.x86.3dnow.pfsubr
  1782. x86_3dnow_pi2fd, // llvm.x86.3dnow.pi2fd
  1783. x86_3dnow_pmulhrw, // llvm.x86.3dnow.pmulhrw
  1784. x86_3dnowa_pf2iw, // llvm.x86.3dnowa.pf2iw
  1785. x86_3dnowa_pfnacc, // llvm.x86.3dnowa.pfnacc
  1786. x86_3dnowa_pfpnacc, // llvm.x86.3dnowa.pfpnacc
  1787. x86_3dnowa_pi2fw, // llvm.x86.3dnowa.pi2fw
  1788. x86_3dnowa_pswapd, // llvm.x86.3dnowa.pswapd
  1789. x86_aesni_aesdec, // llvm.x86.aesni.aesdec
  1790. x86_aesni_aesdeclast, // llvm.x86.aesni.aesdeclast
  1791. x86_aesni_aesenc, // llvm.x86.aesni.aesenc
  1792. x86_aesni_aesenclast, // llvm.x86.aesni.aesenclast
  1793. x86_aesni_aesimc, // llvm.x86.aesni.aesimc
  1794. x86_aesni_aeskeygenassist, // llvm.x86.aesni.aeskeygenassist
  1795. x86_avx2_gather_d_d, // llvm.x86.avx2.gather.d.d
  1796. x86_avx2_gather_d_d_256, // llvm.x86.avx2.gather.d.d.256
  1797. x86_avx2_gather_d_pd, // llvm.x86.avx2.gather.d.pd
  1798. x86_avx2_gather_d_pd_256, // llvm.x86.avx2.gather.d.pd.256
  1799. x86_avx2_gather_d_ps, // llvm.x86.avx2.gather.d.ps
  1800. x86_avx2_gather_d_ps_256, // llvm.x86.avx2.gather.d.ps.256
  1801. x86_avx2_gather_d_q, // llvm.x86.avx2.gather.d.q
  1802. x86_avx2_gather_d_q_256, // llvm.x86.avx2.gather.d.q.256
  1803. x86_avx2_gather_q_d, // llvm.x86.avx2.gather.q.d
  1804. x86_avx2_gather_q_d_256, // llvm.x86.avx2.gather.q.d.256
  1805. x86_avx2_gather_q_pd, // llvm.x86.avx2.gather.q.pd
  1806. x86_avx2_gather_q_pd_256, // llvm.x86.avx2.gather.q.pd.256
  1807. x86_avx2_gather_q_ps, // llvm.x86.avx2.gather.q.ps
  1808. x86_avx2_gather_q_ps_256, // llvm.x86.avx2.gather.q.ps.256
  1809. x86_avx2_gather_q_q, // llvm.x86.avx2.gather.q.q
  1810. x86_avx2_gather_q_q_256, // llvm.x86.avx2.gather.q.q.256
  1811. x86_avx2_maskload_d, // llvm.x86.avx2.maskload.d
  1812. x86_avx2_maskload_d_256, // llvm.x86.avx2.maskload.d.256
  1813. x86_avx2_maskload_q, // llvm.x86.avx2.maskload.q
  1814. x86_avx2_maskload_q_256, // llvm.x86.avx2.maskload.q.256
  1815. x86_avx2_maskstore_d, // llvm.x86.avx2.maskstore.d
  1816. x86_avx2_maskstore_d_256, // llvm.x86.avx2.maskstore.d.256
  1817. x86_avx2_maskstore_q, // llvm.x86.avx2.maskstore.q
  1818. x86_avx2_maskstore_q_256, // llvm.x86.avx2.maskstore.q.256
  1819. x86_avx2_movntdqa, // llvm.x86.avx2.movntdqa
  1820. x86_avx2_mpsadbw, // llvm.x86.avx2.mpsadbw
  1821. x86_avx2_pabs_b, // llvm.x86.avx2.pabs.b
  1822. x86_avx2_pabs_d, // llvm.x86.avx2.pabs.d
  1823. x86_avx2_pabs_w, // llvm.x86.avx2.pabs.w
  1824. x86_avx2_packssdw, // llvm.x86.avx2.packssdw
  1825. x86_avx2_packsswb, // llvm.x86.avx2.packsswb
  1826. x86_avx2_packusdw, // llvm.x86.avx2.packusdw
  1827. x86_avx2_packuswb, // llvm.x86.avx2.packuswb
  1828. x86_avx2_padds_b, // llvm.x86.avx2.padds.b
  1829. x86_avx2_padds_w, // llvm.x86.avx2.padds.w
  1830. x86_avx2_paddus_b, // llvm.x86.avx2.paddus.b
  1831. x86_avx2_paddus_w, // llvm.x86.avx2.paddus.w
  1832. x86_avx2_pavg_b, // llvm.x86.avx2.pavg.b
  1833. x86_avx2_pavg_w, // llvm.x86.avx2.pavg.w
  1834. x86_avx2_pblendd_128, // llvm.x86.avx2.pblendd.128
  1835. x86_avx2_pblendd_256, // llvm.x86.avx2.pblendd.256
  1836. x86_avx2_pblendvb, // llvm.x86.avx2.pblendvb
  1837. x86_avx2_pblendw, // llvm.x86.avx2.pblendw
  1838. x86_avx2_pbroadcastb_128, // llvm.x86.avx2.pbroadcastb.128
  1839. x86_avx2_pbroadcastb_256, // llvm.x86.avx2.pbroadcastb.256
  1840. x86_avx2_pbroadcastd_128, // llvm.x86.avx2.pbroadcastd.128
  1841. x86_avx2_pbroadcastd_256, // llvm.x86.avx2.pbroadcastd.256
  1842. x86_avx2_pbroadcastq_128, // llvm.x86.avx2.pbroadcastq.128
  1843. x86_avx2_pbroadcastq_256, // llvm.x86.avx2.pbroadcastq.256
  1844. x86_avx2_pbroadcastw_128, // llvm.x86.avx2.pbroadcastw.128
  1845. x86_avx2_pbroadcastw_256, // llvm.x86.avx2.pbroadcastw.256
  1846. x86_avx2_permd, // llvm.x86.avx2.permd
  1847. x86_avx2_permps, // llvm.x86.avx2.permps
  1848. x86_avx2_phadd_d, // llvm.x86.avx2.phadd.d
  1849. x86_avx2_phadd_sw, // llvm.x86.avx2.phadd.sw
  1850. x86_avx2_phadd_w, // llvm.x86.avx2.phadd.w
  1851. x86_avx2_phsub_d, // llvm.x86.avx2.phsub.d
  1852. x86_avx2_phsub_sw, // llvm.x86.avx2.phsub.sw
  1853. x86_avx2_phsub_w, // llvm.x86.avx2.phsub.w
  1854. x86_avx2_pmadd_ub_sw, // llvm.x86.avx2.pmadd.ub.sw
  1855. x86_avx2_pmadd_wd, // llvm.x86.avx2.pmadd.wd
  1856. x86_avx2_pmaxs_b, // llvm.x86.avx2.pmaxs.b
  1857. x86_avx2_pmaxs_d, // llvm.x86.avx2.pmaxs.d
  1858. x86_avx2_pmaxs_w, // llvm.x86.avx2.pmaxs.w
  1859. x86_avx2_pmaxu_b, // llvm.x86.avx2.pmaxu.b
  1860. x86_avx2_pmaxu_d, // llvm.x86.avx2.pmaxu.d
  1861. x86_avx2_pmaxu_w, // llvm.x86.avx2.pmaxu.w
  1862. x86_avx2_pmins_b, // llvm.x86.avx2.pmins.b
  1863. x86_avx2_pmins_d, // llvm.x86.avx2.pmins.d
  1864. x86_avx2_pmins_w, // llvm.x86.avx2.pmins.w
  1865. x86_avx2_pminu_b, // llvm.x86.avx2.pminu.b
  1866. x86_avx2_pminu_d, // llvm.x86.avx2.pminu.d
  1867. x86_avx2_pminu_w, // llvm.x86.avx2.pminu.w
  1868. x86_avx2_pmovmskb, // llvm.x86.avx2.pmovmskb
  1869. x86_avx2_pmovsxbd, // llvm.x86.avx2.pmovsxbd
  1870. x86_avx2_pmovsxbq, // llvm.x86.avx2.pmovsxbq
  1871. x86_avx2_pmovsxbw, // llvm.x86.avx2.pmovsxbw
  1872. x86_avx2_pmovsxdq, // llvm.x86.avx2.pmovsxdq
  1873. x86_avx2_pmovsxwd, // llvm.x86.avx2.pmovsxwd
  1874. x86_avx2_pmovsxwq, // llvm.x86.avx2.pmovsxwq
  1875. x86_avx2_pmovzxbd, // llvm.x86.avx2.pmovzxbd
  1876. x86_avx2_pmovzxbq, // llvm.x86.avx2.pmovzxbq
  1877. x86_avx2_pmovzxbw, // llvm.x86.avx2.pmovzxbw
  1878. x86_avx2_pmovzxdq, // llvm.x86.avx2.pmovzxdq
  1879. x86_avx2_pmovzxwd, // llvm.x86.avx2.pmovzxwd
  1880. x86_avx2_pmovzxwq, // llvm.x86.avx2.pmovzxwq
  1881. x86_avx2_pmul_dq, // llvm.x86.avx2.pmul.dq
  1882. x86_avx2_pmul_hr_sw, // llvm.x86.avx2.pmul.hr.sw
  1883. x86_avx2_pmulh_w, // llvm.x86.avx2.pmulh.w
  1884. x86_avx2_pmulhu_w, // llvm.x86.avx2.pmulhu.w
  1885. x86_avx2_pmulu_dq, // llvm.x86.avx2.pmulu.dq
  1886. x86_avx2_psad_bw, // llvm.x86.avx2.psad.bw
  1887. x86_avx2_pshuf_b, // llvm.x86.avx2.pshuf.b
  1888. x86_avx2_psign_b, // llvm.x86.avx2.psign.b
  1889. x86_avx2_psign_d, // llvm.x86.avx2.psign.d
  1890. x86_avx2_psign_w, // llvm.x86.avx2.psign.w
  1891. x86_avx2_psll_d, // llvm.x86.avx2.psll.d
  1892. x86_avx2_psll_dq, // llvm.x86.avx2.psll.dq
  1893. x86_avx2_psll_dq_bs, // llvm.x86.avx2.psll.dq.bs
  1894. x86_avx2_psll_q, // llvm.x86.avx2.psll.q
  1895. x86_avx2_psll_w, // llvm.x86.avx2.psll.w
  1896. x86_avx2_pslli_d, // llvm.x86.avx2.pslli.d
  1897. x86_avx2_pslli_q, // llvm.x86.avx2.pslli.q
  1898. x86_avx2_pslli_w, // llvm.x86.avx2.pslli.w
  1899. x86_avx2_psllv_d, // llvm.x86.avx2.psllv.d
  1900. x86_avx2_psllv_d_256, // llvm.x86.avx2.psllv.d.256
  1901. x86_avx2_psllv_q, // llvm.x86.avx2.psllv.q
  1902. x86_avx2_psllv_q_256, // llvm.x86.avx2.psllv.q.256
  1903. x86_avx2_psra_d, // llvm.x86.avx2.psra.d
  1904. x86_avx2_psra_w, // llvm.x86.avx2.psra.w
  1905. x86_avx2_psrai_d, // llvm.x86.avx2.psrai.d
  1906. x86_avx2_psrai_w, // llvm.x86.avx2.psrai.w
  1907. x86_avx2_psrav_d, // llvm.x86.avx2.psrav.d
  1908. x86_avx2_psrav_d_256, // llvm.x86.avx2.psrav.d.256
  1909. x86_avx2_psrl_d, // llvm.x86.avx2.psrl.d
  1910. x86_avx2_psrl_dq, // llvm.x86.avx2.psrl.dq
  1911. x86_avx2_psrl_dq_bs, // llvm.x86.avx2.psrl.dq.bs
  1912. x86_avx2_psrl_q, // llvm.x86.avx2.psrl.q
  1913. x86_avx2_psrl_w, // llvm.x86.avx2.psrl.w
  1914. x86_avx2_psrli_d, // llvm.x86.avx2.psrli.d
  1915. x86_avx2_psrli_q, // llvm.x86.avx2.psrli.q
  1916. x86_avx2_psrli_w, // llvm.x86.avx2.psrli.w
  1917. x86_avx2_psrlv_d, // llvm.x86.avx2.psrlv.d
  1918. x86_avx2_psrlv_d_256, // llvm.x86.avx2.psrlv.d.256
  1919. x86_avx2_psrlv_q, // llvm.x86.avx2.psrlv.q
  1920. x86_avx2_psrlv_q_256, // llvm.x86.avx2.psrlv.q.256
  1921. x86_avx2_psubs_b, // llvm.x86.avx2.psubs.b
  1922. x86_avx2_psubs_w, // llvm.x86.avx2.psubs.w
  1923. x86_avx2_psubus_b, // llvm.x86.avx2.psubus.b
  1924. x86_avx2_psubus_w, // llvm.x86.avx2.psubus.w
  1925. x86_avx2_vbroadcast_sd_pd_256, // llvm.x86.avx2.vbroadcast.sd.pd.256
  1926. x86_avx2_vbroadcast_ss_ps, // llvm.x86.avx2.vbroadcast.ss.ps
  1927. x86_avx2_vbroadcast_ss_ps_256, // llvm.x86.avx2.vbroadcast.ss.ps.256
  1928. x86_avx2_vbroadcasti128, // llvm.x86.avx2.vbroadcasti128
  1929. x86_avx2_vextracti128, // llvm.x86.avx2.vextracti128
  1930. x86_avx2_vinserti128, // llvm.x86.avx2.vinserti128
  1931. x86_avx2_vperm2i128, // llvm.x86.avx2.vperm2i128
  1932. x86_avx_addsub_pd_256, // llvm.x86.avx.addsub.pd.256
  1933. x86_avx_addsub_ps_256, // llvm.x86.avx.addsub.ps.256
  1934. x86_avx_blend_pd_256, // llvm.x86.avx.blend.pd.256
  1935. x86_avx_blend_ps_256, // llvm.x86.avx.blend.ps.256
  1936. x86_avx_blendv_pd_256, // llvm.x86.avx.blendv.pd.256
  1937. x86_avx_blendv_ps_256, // llvm.x86.avx.blendv.ps.256
  1938. x86_avx_cmp_pd_256, // llvm.x86.avx.cmp.pd.256
  1939. x86_avx_cmp_ps_256, // llvm.x86.avx.cmp.ps.256
  1940. x86_avx_cvt_pd2_ps_256, // llvm.x86.avx.cvt.pd2.ps.256
  1941. x86_avx_cvt_pd2dq_256, // llvm.x86.avx.cvt.pd2dq.256
  1942. x86_avx_cvt_ps2_pd_256, // llvm.x86.avx.cvt.ps2.pd.256
  1943. x86_avx_cvt_ps2dq_256, // llvm.x86.avx.cvt.ps2dq.256
  1944. x86_avx_cvtdq2_pd_256, // llvm.x86.avx.cvtdq2.pd.256
  1945. x86_avx_cvtdq2_ps_256, // llvm.x86.avx.cvtdq2.ps.256
  1946. x86_avx_cvtt_pd2dq_256, // llvm.x86.avx.cvtt.pd2dq.256
  1947. x86_avx_cvtt_ps2dq_256, // llvm.x86.avx.cvtt.ps2dq.256
  1948. x86_avx_dp_ps_256, // llvm.x86.avx.dp.ps.256
  1949. x86_avx_hadd_pd_256, // llvm.x86.avx.hadd.pd.256
  1950. x86_avx_hadd_ps_256, // llvm.x86.avx.hadd.ps.256
  1951. x86_avx_hsub_pd_256, // llvm.x86.avx.hsub.pd.256
  1952. x86_avx_hsub_ps_256, // llvm.x86.avx.hsub.ps.256
  1953. x86_avx_ldu_dq_256, // llvm.x86.avx.ldu.dq.256
  1954. x86_avx_maskload_pd, // llvm.x86.avx.maskload.pd
  1955. x86_avx_maskload_pd_256, // llvm.x86.avx.maskload.pd.256
  1956. x86_avx_maskload_ps, // llvm.x86.avx.maskload.ps
  1957. x86_avx_maskload_ps_256, // llvm.x86.avx.maskload.ps.256
  1958. x86_avx_maskstore_pd, // llvm.x86.avx.maskstore.pd
  1959. x86_avx_maskstore_pd_256, // llvm.x86.avx.maskstore.pd.256
  1960. x86_avx_maskstore_ps, // llvm.x86.avx.maskstore.ps
  1961. x86_avx_maskstore_ps_256, // llvm.x86.avx.maskstore.ps.256
  1962. x86_avx_max_pd_256, // llvm.x86.avx.max.pd.256
  1963. x86_avx_max_ps_256, // llvm.x86.avx.max.ps.256
  1964. x86_avx_min_pd_256, // llvm.x86.avx.min.pd.256
  1965. x86_avx_min_ps_256, // llvm.x86.avx.min.ps.256
  1966. x86_avx_movmsk_pd_256, // llvm.x86.avx.movmsk.pd.256
  1967. x86_avx_movmsk_ps_256, // llvm.x86.avx.movmsk.ps.256
  1968. x86_avx_ptestc_256, // llvm.x86.avx.ptestc.256
  1969. x86_avx_ptestnzc_256, // llvm.x86.avx.ptestnzc.256
  1970. x86_avx_ptestz_256, // llvm.x86.avx.ptestz.256
  1971. x86_avx_rcp_ps_256, // llvm.x86.avx.rcp.ps.256
  1972. x86_avx_round_pd_256, // llvm.x86.avx.round.pd.256
  1973. x86_avx_round_ps_256, // llvm.x86.avx.round.ps.256
  1974. x86_avx_rsqrt_ps_256, // llvm.x86.avx.rsqrt.ps.256
  1975. x86_avx_sqrt_pd_256, // llvm.x86.avx.sqrt.pd.256
  1976. x86_avx_sqrt_ps_256, // llvm.x86.avx.sqrt.ps.256
  1977. x86_avx_storeu_dq_256, // llvm.x86.avx.storeu.dq.256
  1978. x86_avx_storeu_pd_256, // llvm.x86.avx.storeu.pd.256
  1979. x86_avx_storeu_ps_256, // llvm.x86.avx.storeu.ps.256
  1980. x86_avx_vbroadcast_sd_256, // llvm.x86.avx.vbroadcast.sd.256
  1981. x86_avx_vbroadcast_ss, // llvm.x86.avx.vbroadcast.ss
  1982. x86_avx_vbroadcast_ss_256, // llvm.x86.avx.vbroadcast.ss.256
  1983. x86_avx_vbroadcastf128_pd_256, // llvm.x86.avx.vbroadcastf128.pd.256
  1984. x86_avx_vbroadcastf128_ps_256, // llvm.x86.avx.vbroadcastf128.ps.256
  1985. x86_avx_vextractf128_pd_256, // llvm.x86.avx.vextractf128.pd.256
  1986. x86_avx_vextractf128_ps_256, // llvm.x86.avx.vextractf128.ps.256
  1987. x86_avx_vextractf128_si_256, // llvm.x86.avx.vextractf128.si.256
  1988. x86_avx_vinsertf128_pd_256, // llvm.x86.avx.vinsertf128.pd.256
  1989. x86_avx_vinsertf128_ps_256, // llvm.x86.avx.vinsertf128.ps.256
  1990. x86_avx_vinsertf128_si_256, // llvm.x86.avx.vinsertf128.si.256
  1991. x86_avx_vperm2f128_pd_256, // llvm.x86.avx.vperm2f128.pd.256
  1992. x86_avx_vperm2f128_ps_256, // llvm.x86.avx.vperm2f128.ps.256
  1993. x86_avx_vperm2f128_si_256, // llvm.x86.avx.vperm2f128.si.256
  1994. x86_avx_vpermilvar_pd, // llvm.x86.avx.vpermilvar.pd
  1995. x86_avx_vpermilvar_pd_256, // llvm.x86.avx.vpermilvar.pd.256
  1996. x86_avx_vpermilvar_ps, // llvm.x86.avx.vpermilvar.ps
  1997. x86_avx_vpermilvar_ps_256, // llvm.x86.avx.vpermilvar.ps.256
  1998. x86_avx_vtestc_pd, // llvm.x86.avx.vtestc.pd
  1999. x86_avx_vtestc_pd_256, // llvm.x86.avx.vtestc.pd.256
  2000. x86_avx_vtestc_ps, // llvm.x86.avx.vtestc.ps
  2001. x86_avx_vtestc_ps_256, // llvm.x86.avx.vtestc.ps.256
  2002. x86_avx_vtestnzc_pd, // llvm.x86.avx.vtestnzc.pd
  2003. x86_avx_vtestnzc_pd_256, // llvm.x86.avx.vtestnzc.pd.256
  2004. x86_avx_vtestnzc_ps, // llvm.x86.avx.vtestnzc.ps
  2005. x86_avx_vtestnzc_ps_256, // llvm.x86.avx.vtestnzc.ps.256
  2006. x86_avx_vtestz_pd, // llvm.x86.avx.vtestz.pd
  2007. x86_avx_vtestz_pd_256, // llvm.x86.avx.vtestz.pd.256
  2008. x86_avx_vtestz_ps, // llvm.x86.avx.vtestz.ps
  2009. x86_avx_vtestz_ps_256, // llvm.x86.avx.vtestz.ps.256
  2010. x86_avx_vzeroall, // llvm.x86.avx.vzeroall
  2011. x86_avx_vzeroupper, // llvm.x86.avx.vzeroupper
  2012. x86_bmi_bextr_32, // llvm.x86.bmi.bextr.32
  2013. x86_bmi_bextr_64, // llvm.x86.bmi.bextr.64
  2014. x86_bmi_bzhi_32, // llvm.x86.bmi.bzhi.32
  2015. x86_bmi_bzhi_64, // llvm.x86.bmi.bzhi.64
  2016. x86_bmi_pdep_32, // llvm.x86.bmi.pdep.32
  2017. x86_bmi_pdep_64, // llvm.x86.bmi.pdep.64
  2018. x86_bmi_pext_32, // llvm.x86.bmi.pext.32
  2019. x86_bmi_pext_64, // llvm.x86.bmi.pext.64
  2020. x86_fma_vfmadd_pd, // llvm.x86.fma.vfmadd.pd
  2021. x86_fma_vfmadd_pd_256, // llvm.x86.fma.vfmadd.pd.256
  2022. x86_fma_vfmadd_ps, // llvm.x86.fma.vfmadd.ps
  2023. x86_fma_vfmadd_ps_256, // llvm.x86.fma.vfmadd.ps.256
  2024. x86_fma_vfmadd_sd, // llvm.x86.fma.vfmadd.sd
  2025. x86_fma_vfmadd_ss, // llvm.x86.fma.vfmadd.ss
  2026. x86_fma_vfmaddsub_pd, // llvm.x86.fma.vfmaddsub.pd
  2027. x86_fma_vfmaddsub_pd_256, // llvm.x86.fma.vfmaddsub.pd.256
  2028. x86_fma_vfmaddsub_ps, // llvm.x86.fma.vfmaddsub.ps
  2029. x86_fma_vfmaddsub_ps_256, // llvm.x86.fma.vfmaddsub.ps.256
  2030. x86_fma_vfmsub_pd, // llvm.x86.fma.vfmsub.pd
  2031. x86_fma_vfmsub_pd_256, // llvm.x86.fma.vfmsub.pd.256
  2032. x86_fma_vfmsub_ps, // llvm.x86.fma.vfmsub.ps
  2033. x86_fma_vfmsub_ps_256, // llvm.x86.fma.vfmsub.ps.256
  2034. x86_fma_vfmsub_sd, // llvm.x86.fma.vfmsub.sd
  2035. x86_fma_vfmsub_ss, // llvm.x86.fma.vfmsub.ss
  2036. x86_fma_vfmsubadd_pd, // llvm.x86.fma.vfmsubadd.pd
  2037. x86_fma_vfmsubadd_pd_256, // llvm.x86.fma.vfmsubadd.pd.256
  2038. x86_fma_vfmsubadd_ps, // llvm.x86.fma.vfmsubadd.ps
  2039. x86_fma_vfmsubadd_ps_256, // llvm.x86.fma.vfmsubadd.ps.256
  2040. x86_fma_vfnmadd_pd, // llvm.x86.fma.vfnmadd.pd
  2041. x86_fma_vfnmadd_pd_256, // llvm.x86.fma.vfnmadd.pd.256
  2042. x86_fma_vfnmadd_ps, // llvm.x86.fma.vfnmadd.ps
  2043. x86_fma_vfnmadd_ps_256, // llvm.x86.fma.vfnmadd.ps.256
  2044. x86_fma_vfnmadd_sd, // llvm.x86.fma.vfnmadd.sd
  2045. x86_fma_vfnmadd_ss, // llvm.x86.fma.vfnmadd.ss
  2046. x86_fma_vfnmsub_pd, // llvm.x86.fma.vfnmsub.pd
  2047. x86_fma_vfnmsub_pd_256, // llvm.x86.fma.vfnmsub.pd.256
  2048. x86_fma_vfnmsub_ps, // llvm.x86.fma.vfnmsub.ps
  2049. x86_fma_vfnmsub_ps_256, // llvm.x86.fma.vfnmsub.ps.256
  2050. x86_fma_vfnmsub_sd, // llvm.x86.fma.vfnmsub.sd
  2051. x86_fma_vfnmsub_ss, // llvm.x86.fma.vfnmsub.ss
  2052. x86_int, // llvm.x86.int
  2053. x86_mmx_emms, // llvm.x86.mmx.emms
  2054. x86_mmx_femms, // llvm.x86.mmx.femms
  2055. x86_mmx_maskmovq, // llvm.x86.mmx.maskmovq
  2056. x86_mmx_movnt_dq, // llvm.x86.mmx.movnt.dq
  2057. x86_mmx_packssdw, // llvm.x86.mmx.packssdw
  2058. x86_mmx_packsswb, // llvm.x86.mmx.packsswb
  2059. x86_mmx_packuswb, // llvm.x86.mmx.packuswb
  2060. x86_mmx_padd_b, // llvm.x86.mmx.padd.b
  2061. x86_mmx_padd_d, // llvm.x86.mmx.padd.d
  2062. x86_mmx_padd_q, // llvm.x86.mmx.padd.q
  2063. x86_mmx_padd_w, // llvm.x86.mmx.padd.w
  2064. x86_mmx_padds_b, // llvm.x86.mmx.padds.b
  2065. x86_mmx_padds_w, // llvm.x86.mmx.padds.w
  2066. x86_mmx_paddus_b, // llvm.x86.mmx.paddus.b
  2067. x86_mmx_paddus_w, // llvm.x86.mmx.paddus.w
  2068. x86_mmx_palignr_b, // llvm.x86.mmx.palignr.b
  2069. x86_mmx_pand, // llvm.x86.mmx.pand
  2070. x86_mmx_pandn, // llvm.x86.mmx.pandn
  2071. x86_mmx_pavg_b, // llvm.x86.mmx.pavg.b
  2072. x86_mmx_pavg_w, // llvm.x86.mmx.pavg.w
  2073. x86_mmx_pcmpeq_b, // llvm.x86.mmx.pcmpeq.b
  2074. x86_mmx_pcmpeq_d, // llvm.x86.mmx.pcmpeq.d
  2075. x86_mmx_pcmpeq_w, // llvm.x86.mmx.pcmpeq.w
  2076. x86_mmx_pcmpgt_b, // llvm.x86.mmx.pcmpgt.b
  2077. x86_mmx_pcmpgt_d, // llvm.x86.mmx.pcmpgt.d
  2078. x86_mmx_pcmpgt_w, // llvm.x86.mmx.pcmpgt.w
  2079. x86_mmx_pextr_w, // llvm.x86.mmx.pextr.w
  2080. x86_mmx_pinsr_w, // llvm.x86.mmx.pinsr.w
  2081. x86_mmx_pmadd_wd, // llvm.x86.mmx.pmadd.wd
  2082. x86_mmx_pmaxs_w, // llvm.x86.mmx.pmaxs.w
  2083. x86_mmx_pmaxu_b, // llvm.x86.mmx.pmaxu.b
  2084. x86_mmx_pmins_w, // llvm.x86.mmx.pmins.w
  2085. x86_mmx_pminu_b, // llvm.x86.mmx.pminu.b
  2086. x86_mmx_pmovmskb, // llvm.x86.mmx.pmovmskb
  2087. x86_mmx_pmulh_w, // llvm.x86.mmx.pmulh.w
  2088. x86_mmx_pmulhu_w, // llvm.x86.mmx.pmulhu.w
  2089. x86_mmx_pmull_w, // llvm.x86.mmx.pmull.w
  2090. x86_mmx_pmulu_dq, // llvm.x86.mmx.pmulu.dq
  2091. x86_mmx_por, // llvm.x86.mmx.por
  2092. x86_mmx_psad_bw, // llvm.x86.mmx.psad.bw
  2093. x86_mmx_psll_d, // llvm.x86.mmx.psll.d
  2094. x86_mmx_psll_q, // llvm.x86.mmx.psll.q
  2095. x86_mmx_psll_w, // llvm.x86.mmx.psll.w
  2096. x86_mmx_pslli_d, // llvm.x86.mmx.pslli.d
  2097. x86_mmx_pslli_q, // llvm.x86.mmx.pslli.q
  2098. x86_mmx_pslli_w, // llvm.x86.mmx.pslli.w
  2099. x86_mmx_psra_d, // llvm.x86.mmx.psra.d
  2100. x86_mmx_psra_w, // llvm.x86.mmx.psra.w
  2101. x86_mmx_psrai_d, // llvm.x86.mmx.psrai.d
  2102. x86_mmx_psrai_w, // llvm.x86.mmx.psrai.w
  2103. x86_mmx_psrl_d, // llvm.x86.mmx.psrl.d
  2104. x86_mmx_psrl_q, // llvm.x86.mmx.psrl.q
  2105. x86_mmx_psrl_w, // llvm.x86.mmx.psrl.w
  2106. x86_mmx_psrli_d, // llvm.x86.mmx.psrli.d
  2107. x86_mmx_psrli_q, // llvm.x86.mmx.psrli.q
  2108. x86_mmx_psrli_w, // llvm.x86.mmx.psrli.w
  2109. x86_mmx_psub_b, // llvm.x86.mmx.psub.b
  2110. x86_mmx_psub_d, // llvm.x86.mmx.psub.d
  2111. x86_mmx_psub_q, // llvm.x86.mmx.psub.q
  2112. x86_mmx_psub_w, // llvm.x86.mmx.psub.w
  2113. x86_mmx_psubs_b, // llvm.x86.mmx.psubs.b
  2114. x86_mmx_psubs_w, // llvm.x86.mmx.psubs.w
  2115. x86_mmx_psubus_b, // llvm.x86.mmx.psubus.b
  2116. x86_mmx_psubus_w, // llvm.x86.mmx.psubus.w
  2117. x86_mmx_punpckhbw, // llvm.x86.mmx.punpckhbw
  2118. x86_mmx_punpckhdq, // llvm.x86.mmx.punpckhdq
  2119. x86_mmx_punpckhwd, // llvm.x86.mmx.punpckhwd
  2120. x86_mmx_punpcklbw, // llvm.x86.mmx.punpcklbw
  2121. x86_mmx_punpckldq, // llvm.x86.mmx.punpckldq
  2122. x86_mmx_punpcklwd, // llvm.x86.mmx.punpcklwd
  2123. x86_mmx_pxor, // llvm.x86.mmx.pxor
  2124. x86_pclmulqdq, // llvm.x86.pclmulqdq
  2125. x86_rdfsbase_32, // llvm.x86.rdfsbase.32
  2126. x86_rdfsbase_64, // llvm.x86.rdfsbase.64
  2127. x86_rdgsbase_32, // llvm.x86.rdgsbase.32
  2128. x86_rdgsbase_64, // llvm.x86.rdgsbase.64
  2129. x86_rdrand_16, // llvm.x86.rdrand.16
  2130. x86_rdrand_32, // llvm.x86.rdrand.32
  2131. x86_rdrand_64, // llvm.x86.rdrand.64
  2132. x86_sse2_add_sd, // llvm.x86.sse2.add.sd
  2133. x86_sse2_clflush, // llvm.x86.sse2.clflush
  2134. x86_sse2_cmp_pd, // llvm.x86.sse2.cmp.pd
  2135. x86_sse2_cmp_sd, // llvm.x86.sse2.cmp.sd
  2136. x86_sse2_comieq_sd, // llvm.x86.sse2.comieq.sd
  2137. x86_sse2_comige_sd, // llvm.x86.sse2.comige.sd
  2138. x86_sse2_comigt_sd, // llvm.x86.sse2.comigt.sd
  2139. x86_sse2_comile_sd, // llvm.x86.sse2.comile.sd
  2140. x86_sse2_comilt_sd, // llvm.x86.sse2.comilt.sd
  2141. x86_sse2_comineq_sd, // llvm.x86.sse2.comineq.sd
  2142. x86_sse2_cvtdq2pd, // llvm.x86.sse2.cvtdq2pd
  2143. x86_sse2_cvtdq2ps, // llvm.x86.sse2.cvtdq2ps
  2144. x86_sse2_cvtpd2dq, // llvm.x86.sse2.cvtpd2dq
  2145. x86_sse2_cvtpd2ps, // llvm.x86.sse2.cvtpd2ps
  2146. x86_sse2_cvtps2dq, // llvm.x86.sse2.cvtps2dq
  2147. x86_sse2_cvtps2pd, // llvm.x86.sse2.cvtps2pd
  2148. x86_sse2_cvtsd2si, // llvm.x86.sse2.cvtsd2si
  2149. x86_sse2_cvtsd2si64, // llvm.x86.sse2.cvtsd2si64
  2150. x86_sse2_cvtsd2ss, // llvm.x86.sse2.cvtsd2ss
  2151. x86_sse2_cvtsi2sd, // llvm.x86.sse2.cvtsi2sd
  2152. x86_sse2_cvtsi642sd, // llvm.x86.sse2.cvtsi642sd
  2153. x86_sse2_cvtss2sd, // llvm.x86.sse2.cvtss2sd
  2154. x86_sse2_cvttpd2dq, // llvm.x86.sse2.cvttpd2dq
  2155. x86_sse2_cvttps2dq, // llvm.x86.sse2.cvttps2dq
  2156. x86_sse2_cvttsd2si, // llvm.x86.sse2.cvttsd2si
  2157. x86_sse2_cvttsd2si64, // llvm.x86.sse2.cvttsd2si64
  2158. x86_sse2_div_sd, // llvm.x86.sse2.div.sd
  2159. x86_sse2_lfence, // llvm.x86.sse2.lfence
  2160. x86_sse2_maskmov_dqu, // llvm.x86.sse2.maskmov.dqu
  2161. x86_sse2_max_pd, // llvm.x86.sse2.max.pd
  2162. x86_sse2_max_sd, // llvm.x86.sse2.max.sd
  2163. x86_sse2_mfence, // llvm.x86.sse2.mfence
  2164. x86_sse2_min_pd, // llvm.x86.sse2.min.pd
  2165. x86_sse2_min_sd, // llvm.x86.sse2.min.sd
  2166. x86_sse2_movmsk_pd, // llvm.x86.sse2.movmsk.pd
  2167. x86_sse2_mul_sd, // llvm.x86.sse2.mul.sd
  2168. x86_sse2_packssdw_128, // llvm.x86.sse2.packssdw.128
  2169. x86_sse2_packsswb_128, // llvm.x86.sse2.packsswb.128
  2170. x86_sse2_packuswb_128, // llvm.x86.sse2.packuswb.128
  2171. x86_sse2_padds_b, // llvm.x86.sse2.padds.b
  2172. x86_sse2_padds_w, // llvm.x86.sse2.padds.w
  2173. x86_sse2_paddus_b, // llvm.x86.sse2.paddus.b
  2174. x86_sse2_paddus_w, // llvm.x86.sse2.paddus.w
  2175. x86_sse2_pavg_b, // llvm.x86.sse2.pavg.b
  2176. x86_sse2_pavg_w, // llvm.x86.sse2.pavg.w
  2177. x86_sse2_pmadd_wd, // llvm.x86.sse2.pmadd.wd
  2178. x86_sse2_pmaxs_w, // llvm.x86.sse2.pmaxs.w
  2179. x86_sse2_pmaxu_b, // llvm.x86.sse2.pmaxu.b
  2180. x86_sse2_pmins_w, // llvm.x86.sse2.pmins.w
  2181. x86_sse2_pminu_b, // llvm.x86.sse2.pminu.b
  2182. x86_sse2_pmovmskb_128, // llvm.x86.sse2.pmovmskb.128
  2183. x86_sse2_pmulh_w, // llvm.x86.sse2.pmulh.w
  2184. x86_sse2_pmulhu_w, // llvm.x86.sse2.pmulhu.w
  2185. x86_sse2_pmulu_dq, // llvm.x86.sse2.pmulu.dq
  2186. x86_sse2_psad_bw, // llvm.x86.sse2.psad.bw
  2187. x86_sse2_psll_d, // llvm.x86.sse2.psll.d
  2188. x86_sse2_psll_dq, // llvm.x86.sse2.psll.dq
  2189. x86_sse2_psll_dq_bs, // llvm.x86.sse2.psll.dq.bs
  2190. x86_sse2_psll_q, // llvm.x86.sse2.psll.q
  2191. x86_sse2_psll_w, // llvm.x86.sse2.psll.w
  2192. x86_sse2_pslli_d, // llvm.x86.sse2.pslli.d
  2193. x86_sse2_pslli_q, // llvm.x86.sse2.pslli.q
  2194. x86_sse2_pslli_w, // llvm.x86.sse2.pslli.w
  2195. x86_sse2_psra_d, // llvm.x86.sse2.psra.d
  2196. x86_sse2_psra_w, // llvm.x86.sse2.psra.w
  2197. x86_sse2_psrai_d, // llvm.x86.sse2.psrai.d
  2198. x86_sse2_psrai_w, // llvm.x86.sse2.psrai.w
  2199. x86_sse2_psrl_d, // llvm.x86.sse2.psrl.d
  2200. x86_sse2_psrl_dq, // llvm.x86.sse2.psrl.dq
  2201. x86_sse2_psrl_dq_bs, // llvm.x86.sse2.psrl.dq.bs
  2202. x86_sse2_psrl_q, // llvm.x86.sse2.psrl.q
  2203. x86_sse2_psrl_w, // llvm.x86.sse2.psrl.w
  2204. x86_sse2_psrli_d, // llvm.x86.sse2.psrli.d
  2205. x86_sse2_psrli_q, // llvm.x86.sse2.psrli.q
  2206. x86_sse2_psrli_w, // llvm.x86.sse2.psrli.w
  2207. x86_sse2_psubs_b, // llvm.x86.sse2.psubs.b
  2208. x86_sse2_psubs_w, // llvm.x86.sse2.psubs.w
  2209. x86_sse2_psubus_b, // llvm.x86.sse2.psubus.b
  2210. x86_sse2_psubus_w, // llvm.x86.sse2.psubus.w
  2211. x86_sse2_sqrt_pd, // llvm.x86.sse2.sqrt.pd
  2212. x86_sse2_sqrt_sd, // llvm.x86.sse2.sqrt.sd
  2213. x86_sse2_storel_dq, // llvm.x86.sse2.storel.dq
  2214. x86_sse2_storeu_dq, // llvm.x86.sse2.storeu.dq
  2215. x86_sse2_storeu_pd, // llvm.x86.sse2.storeu.pd
  2216. x86_sse2_sub_sd, // llvm.x86.sse2.sub.sd
  2217. x86_sse2_ucomieq_sd, // llvm.x86.sse2.ucomieq.sd
  2218. x86_sse2_ucomige_sd, // llvm.x86.sse2.ucomige.sd
  2219. x86_sse2_ucomigt_sd, // llvm.x86.sse2.ucomigt.sd
  2220. x86_sse2_ucomile_sd, // llvm.x86.sse2.ucomile.sd
  2221. x86_sse2_ucomilt_sd, // llvm.x86.sse2.ucomilt.sd
  2222. x86_sse2_ucomineq_sd, // llvm.x86.sse2.ucomineq.sd
  2223. x86_sse3_addsub_pd, // llvm.x86.sse3.addsub.pd
  2224. x86_sse3_addsub_ps, // llvm.x86.sse3.addsub.ps
  2225. x86_sse3_hadd_pd, // llvm.x86.sse3.hadd.pd
  2226. x86_sse3_hadd_ps, // llvm.x86.sse3.hadd.ps
  2227. x86_sse3_hsub_pd, // llvm.x86.sse3.hsub.pd
  2228. x86_sse3_hsub_ps, // llvm.x86.sse3.hsub.ps
  2229. x86_sse3_ldu_dq, // llvm.x86.sse3.ldu.dq
  2230. x86_sse3_monitor, // llvm.x86.sse3.monitor
  2231. x86_sse3_mwait, // llvm.x86.sse3.mwait
  2232. x86_sse41_blendpd, // llvm.x86.sse41.blendpd
  2233. x86_sse41_blendps, // llvm.x86.sse41.blendps
  2234. x86_sse41_blendvpd, // llvm.x86.sse41.blendvpd
  2235. x86_sse41_blendvps, // llvm.x86.sse41.blendvps
  2236. x86_sse41_dppd, // llvm.x86.sse41.dppd
  2237. x86_sse41_dpps, // llvm.x86.sse41.dpps
  2238. x86_sse41_extractps, // llvm.x86.sse41.extractps
  2239. x86_sse41_insertps, // llvm.x86.sse41.insertps
  2240. x86_sse41_movntdqa, // llvm.x86.sse41.movntdqa
  2241. x86_sse41_mpsadbw, // llvm.x86.sse41.mpsadbw
  2242. x86_sse41_packusdw, // llvm.x86.sse41.packusdw
  2243. x86_sse41_pblendvb, // llvm.x86.sse41.pblendvb
  2244. x86_sse41_pblendw, // llvm.x86.sse41.pblendw
  2245. x86_sse41_pextrb, // llvm.x86.sse41.pextrb
  2246. x86_sse41_pextrd, // llvm.x86.sse41.pextrd
  2247. x86_sse41_pextrq, // llvm.x86.sse41.pextrq
  2248. x86_sse41_phminposuw, // llvm.x86.sse41.phminposuw
  2249. x86_sse41_pmaxsb, // llvm.x86.sse41.pmaxsb
  2250. x86_sse41_pmaxsd, // llvm.x86.sse41.pmaxsd
  2251. x86_sse41_pmaxud, // llvm.x86.sse41.pmaxud
  2252. x86_sse41_pmaxuw, // llvm.x86.sse41.pmaxuw
  2253. x86_sse41_pminsb, // llvm.x86.sse41.pminsb
  2254. x86_sse41_pminsd, // llvm.x86.sse41.pminsd
  2255. x86_sse41_pminud, // llvm.x86.sse41.pminud
  2256. x86_sse41_pminuw, // llvm.x86.sse41.pminuw
  2257. x86_sse41_pmovsxbd, // llvm.x86.sse41.pmovsxbd
  2258. x86_sse41_pmovsxbq, // llvm.x86.sse41.pmovsxbq
  2259. x86_sse41_pmovsxbw, // llvm.x86.sse41.pmovsxbw
  2260. x86_sse41_pmovsxdq, // llvm.x86.sse41.pmovsxdq
  2261. x86_sse41_pmovsxwd, // llvm.x86.sse41.pmovsxwd
  2262. x86_sse41_pmovsxwq, // llvm.x86.sse41.pmovsxwq
  2263. x86_sse41_pmovzxbd, // llvm.x86.sse41.pmovzxbd
  2264. x86_sse41_pmovzxbq, // llvm.x86.sse41.pmovzxbq
  2265. x86_sse41_pmovzxbw, // llvm.x86.sse41.pmovzxbw
  2266. x86_sse41_pmovzxdq, // llvm.x86.sse41.pmovzxdq
  2267. x86_sse41_pmovzxwd, // llvm.x86.sse41.pmovzxwd
  2268. x86_sse41_pmovzxwq, // llvm.x86.sse41.pmovzxwq
  2269. x86_sse41_pmuldq, // llvm.x86.sse41.pmuldq
  2270. x86_sse41_ptestc, // llvm.x86.sse41.ptestc
  2271. x86_sse41_ptestnzc, // llvm.x86.sse41.ptestnzc
  2272. x86_sse41_ptestz, // llvm.x86.sse41.ptestz
  2273. x86_sse41_round_pd, // llvm.x86.sse41.round.pd
  2274. x86_sse41_round_ps, // llvm.x86.sse41.round.ps
  2275. x86_sse41_round_sd, // llvm.x86.sse41.round.sd
  2276. x86_sse41_round_ss, // llvm.x86.sse41.round.ss
  2277. x86_sse42_crc32_32_16, // llvm.x86.sse42.crc32.32.16
  2278. x86_sse42_crc32_32_32, // llvm.x86.sse42.crc32.32.32
  2279. x86_sse42_crc32_32_8, // llvm.x86.sse42.crc32.32.8
  2280. x86_sse42_crc32_64_64, // llvm.x86.sse42.crc32.64.64
  2281. x86_sse42_crc32_64_8, // llvm.x86.sse42.crc32.64.8
  2282. x86_sse42_pcmpestri128, // llvm.x86.sse42.pcmpestri128
  2283. x86_sse42_pcmpestria128, // llvm.x86.sse42.pcmpestria128
  2284. x86_sse42_pcmpestric128, // llvm.x86.sse42.pcmpestric128
  2285. x86_sse42_pcmpestrio128, // llvm.x86.sse42.pcmpestrio128
  2286. x86_sse42_pcmpestris128, // llvm.x86.sse42.pcmpestris128
  2287. x86_sse42_pcmpestriz128, // llvm.x86.sse42.pcmpestriz128
  2288. x86_sse42_pcmpestrm128, // llvm.x86.sse42.pcmpestrm128
  2289. x86_sse42_pcmpistri128, // llvm.x86.sse42.pcmpistri128
  2290. x86_sse42_pcmpistria128, // llvm.x86.sse42.pcmpistria128
  2291. x86_sse42_pcmpistric128, // llvm.x86.sse42.pcmpistric128
  2292. x86_sse42_pcmpistrio128, // llvm.x86.sse42.pcmpistrio128
  2293. x86_sse42_pcmpistris128, // llvm.x86.sse42.pcmpistris128
  2294. x86_sse42_pcmpistriz128, // llvm.x86.sse42.pcmpistriz128
  2295. x86_sse42_pcmpistrm128, // llvm.x86.sse42.pcmpistrm128
  2296. x86_sse4a_extrq, // llvm.x86.sse4a.extrq
  2297. x86_sse4a_extrqi, // llvm.x86.sse4a.extrqi
  2298. x86_sse4a_insertq, // llvm.x86.sse4a.insertq
  2299. x86_sse4a_insertqi, // llvm.x86.sse4a.insertqi
  2300. x86_sse4a_movnt_sd, // llvm.x86.sse4a.movnt.sd
  2301. x86_sse4a_movnt_ss, // llvm.x86.sse4a.movnt.ss
  2302. x86_sse_add_ss, // llvm.x86.sse.add.ss
  2303. x86_sse_cmp_ps, // llvm.x86.sse.cmp.ps
  2304. x86_sse_cmp_ss, // llvm.x86.sse.cmp.ss
  2305. x86_sse_comieq_ss, // llvm.x86.sse.comieq.ss
  2306. x86_sse_comige_ss, // llvm.x86.sse.comige.ss
  2307. x86_sse_comigt_ss, // llvm.x86.sse.comigt.ss
  2308. x86_sse_comile_ss, // llvm.x86.sse.comile.ss
  2309. x86_sse_comilt_ss, // llvm.x86.sse.comilt.ss
  2310. x86_sse_comineq_ss, // llvm.x86.sse.comineq.ss
  2311. x86_sse_cvtpd2pi, // llvm.x86.sse.cvtpd2pi
  2312. x86_sse_cvtpi2pd, // llvm.x86.sse.cvtpi2pd
  2313. x86_sse_cvtpi2ps, // llvm.x86.sse.cvtpi2ps
  2314. x86_sse_cvtps2pi, // llvm.x86.sse.cvtps2pi
  2315. x86_sse_cvtsi2ss, // llvm.x86.sse.cvtsi2ss
  2316. x86_sse_cvtsi642ss, // llvm.x86.sse.cvtsi642ss
  2317. x86_sse_cvtss2si, // llvm.x86.sse.cvtss2si
  2318. x86_sse_cvtss2si64, // llvm.x86.sse.cvtss2si64
  2319. x86_sse_cvttpd2pi, // llvm.x86.sse.cvttpd2pi
  2320. x86_sse_cvttps2pi, // llvm.x86.sse.cvttps2pi
  2321. x86_sse_cvttss2si, // llvm.x86.sse.cvttss2si
  2322. x86_sse_cvttss2si64, // llvm.x86.sse.cvttss2si64
  2323. x86_sse_div_ss, // llvm.x86.sse.div.ss
  2324. x86_sse_ldmxcsr, // llvm.x86.sse.ldmxcsr
  2325. x86_sse_max_ps, // llvm.x86.sse.max.ps
  2326. x86_sse_max_ss, // llvm.x86.sse.max.ss
  2327. x86_sse_min_ps, // llvm.x86.sse.min.ps
  2328. x86_sse_min_ss, // llvm.x86.sse.min.ss
  2329. x86_sse_movmsk_ps, // llvm.x86.sse.movmsk.ps
  2330. x86_sse_mul_ss, // llvm.x86.sse.mul.ss
  2331. x86_sse_pshuf_w, // llvm.x86.sse.pshuf.w
  2332. x86_sse_rcp_ps, // llvm.x86.sse.rcp.ps
  2333. x86_sse_rcp_ss, // llvm.x86.sse.rcp.ss
  2334. x86_sse_rsqrt_ps, // llvm.x86.sse.rsqrt.ps
  2335. x86_sse_rsqrt_ss, // llvm.x86.sse.rsqrt.ss
  2336. x86_sse_sfence, // llvm.x86.sse.sfence
  2337. x86_sse_sqrt_ps, // llvm.x86.sse.sqrt.ps
  2338. x86_sse_sqrt_ss, // llvm.x86.sse.sqrt.ss
  2339. x86_sse_stmxcsr, // llvm.x86.sse.stmxcsr
  2340. x86_sse_storeu_ps, // llvm.x86.sse.storeu.ps
  2341. x86_sse_sub_ss, // llvm.x86.sse.sub.ss
  2342. x86_sse_ucomieq_ss, // llvm.x86.sse.ucomieq.ss
  2343. x86_sse_ucomige_ss, // llvm.x86.sse.ucomige.ss
  2344. x86_sse_ucomigt_ss, // llvm.x86.sse.ucomigt.ss
  2345. x86_sse_ucomile_ss, // llvm.x86.sse.ucomile.ss
  2346. x86_sse_ucomilt_ss, // llvm.x86.sse.ucomilt.ss
  2347. x86_sse_ucomineq_ss, // llvm.x86.sse.ucomineq.ss
  2348. x86_ssse3_pabs_b, // llvm.x86.ssse3.pabs.b
  2349. x86_ssse3_pabs_b_128, // llvm.x86.ssse3.pabs.b.128
  2350. x86_ssse3_pabs_d, // llvm.x86.ssse3.pabs.d
  2351. x86_ssse3_pabs_d_128, // llvm.x86.ssse3.pabs.d.128
  2352. x86_ssse3_pabs_w, // llvm.x86.ssse3.pabs.w
  2353. x86_ssse3_pabs_w_128, // llvm.x86.ssse3.pabs.w.128
  2354. x86_ssse3_phadd_d, // llvm.x86.ssse3.phadd.d
  2355. x86_ssse3_phadd_d_128, // llvm.x86.ssse3.phadd.d.128
  2356. x86_ssse3_phadd_sw, // llvm.x86.ssse3.phadd.sw
  2357. x86_ssse3_phadd_sw_128, // llvm.x86.ssse3.phadd.sw.128
  2358. x86_ssse3_phadd_w, // llvm.x86.ssse3.phadd.w
  2359. x86_ssse3_phadd_w_128, // llvm.x86.ssse3.phadd.w.128
  2360. x86_ssse3_phsub_d, // llvm.x86.ssse3.phsub.d
  2361. x86_ssse3_phsub_d_128, // llvm.x86.ssse3.phsub.d.128
  2362. x86_ssse3_phsub_sw, // llvm.x86.ssse3.phsub.sw
  2363. x86_ssse3_phsub_sw_128, // llvm.x86.ssse3.phsub.sw.128
  2364. x86_ssse3_phsub_w, // llvm.x86.ssse3.phsub.w
  2365. x86_ssse3_phsub_w_128, // llvm.x86.ssse3.phsub.w.128
  2366. x86_ssse3_pmadd_ub_sw, // llvm.x86.ssse3.pmadd.ub.sw
  2367. x86_ssse3_pmadd_ub_sw_128, // llvm.x86.ssse3.pmadd.ub.sw.128
  2368. x86_ssse3_pmul_hr_sw, // llvm.x86.ssse3.pmul.hr.sw
  2369. x86_ssse3_pmul_hr_sw_128, // llvm.x86.ssse3.pmul.hr.sw.128
  2370. x86_ssse3_pshuf_b, // llvm.x86.ssse3.pshuf.b
  2371. x86_ssse3_pshuf_b_128, // llvm.x86.ssse3.pshuf.b.128
  2372. x86_ssse3_psign_b, // llvm.x86.ssse3.psign.b
  2373. x86_ssse3_psign_b_128, // llvm.x86.ssse3.psign.b.128
  2374. x86_ssse3_psign_d, // llvm.x86.ssse3.psign.d
  2375. x86_ssse3_psign_d_128, // llvm.x86.ssse3.psign.d.128
  2376. x86_ssse3_psign_w, // llvm.x86.ssse3.psign.w
  2377. x86_ssse3_psign_w_128, // llvm.x86.ssse3.psign.w.128
  2378. x86_vcvtph2ps_128, // llvm.x86.vcvtph2ps.128
  2379. x86_vcvtph2ps_256, // llvm.x86.vcvtph2ps.256
  2380. x86_vcvtps2ph_128, // llvm.x86.vcvtps2ph.128
  2381. x86_vcvtps2ph_256, // llvm.x86.vcvtps2ph.256
  2382. x86_wrfsbase_32, // llvm.x86.wrfsbase.32
  2383. x86_wrfsbase_64, // llvm.x86.wrfsbase.64
  2384. x86_wrgsbase_32, // llvm.x86.wrgsbase.32
  2385. x86_wrgsbase_64, // llvm.x86.wrgsbase.64
  2386. x86_xop_vfrcz_pd, // llvm.x86.xop.vfrcz.pd
  2387. x86_xop_vfrcz_pd_256, // llvm.x86.xop.vfrcz.pd.256
  2388. x86_xop_vfrcz_ps, // llvm.x86.xop.vfrcz.ps
  2389. x86_xop_vfrcz_ps_256, // llvm.x86.xop.vfrcz.ps.256
  2390. x86_xop_vfrcz_sd, // llvm.x86.xop.vfrcz.sd
  2391. x86_xop_vfrcz_ss, // llvm.x86.xop.vfrcz.ss
  2392. x86_xop_vpcmov, // llvm.x86.xop.vpcmov
  2393. x86_xop_vpcmov_256, // llvm.x86.xop.vpcmov.256
  2394. x86_xop_vpcomb, // llvm.x86.xop.vpcomb
  2395. x86_xop_vpcomd, // llvm.x86.xop.vpcomd
  2396. x86_xop_vpcomq, // llvm.x86.xop.vpcomq
  2397. x86_xop_vpcomub, // llvm.x86.xop.vpcomub
  2398. x86_xop_vpcomud, // llvm.x86.xop.vpcomud
  2399. x86_xop_vpcomuq, // llvm.x86.xop.vpcomuq
  2400. x86_xop_vpcomuw, // llvm.x86.xop.vpcomuw
  2401. x86_xop_vpcomw, // llvm.x86.xop.vpcomw
  2402. x86_xop_vpermil2pd, // llvm.x86.xop.vpermil2pd
  2403. x86_xop_vpermil2pd_256, // llvm.x86.xop.vpermil2pd.256
  2404. x86_xop_vpermil2ps, // llvm.x86.xop.vpermil2ps
  2405. x86_xop_vpermil2ps_256, // llvm.x86.xop.vpermil2ps.256
  2406. x86_xop_vphaddbd, // llvm.x86.xop.vphaddbd
  2407. x86_xop_vphaddbq, // llvm.x86.xop.vphaddbq
  2408. x86_xop_vphaddbw, // llvm.x86.xop.vphaddbw
  2409. x86_xop_vphadddq, // llvm.x86.xop.vphadddq
  2410. x86_xop_vphaddubd, // llvm.x86.xop.vphaddubd
  2411. x86_xop_vphaddubq, // llvm.x86.xop.vphaddubq
  2412. x86_xop_vphaddubw, // llvm.x86.xop.vphaddubw
  2413. x86_xop_vphaddudq, // llvm.x86.xop.vphaddudq
  2414. x86_xop_vphadduwd, // llvm.x86.xop.vphadduwd
  2415. x86_xop_vphadduwq, // llvm.x86.xop.vphadduwq
  2416. x86_xop_vphaddwd, // llvm.x86.xop.vphaddwd
  2417. x86_xop_vphaddwq, // llvm.x86.xop.vphaddwq
  2418. x86_xop_vphsubbw, // llvm.x86.xop.vphsubbw
  2419. x86_xop_vphsubdq, // llvm.x86.xop.vphsubdq
  2420. x86_xop_vphsubwd, // llvm.x86.xop.vphsubwd
  2421. x86_xop_vpmacsdd, // llvm.x86.xop.vpmacsdd
  2422. x86_xop_vpmacsdqh, // llvm.x86.xop.vpmacsdqh
  2423. x86_xop_vpmacsdql, // llvm.x86.xop.vpmacsdql
  2424. x86_xop_vpmacssdd, // llvm.x86.xop.vpmacssdd
  2425. x86_xop_vpmacssdqh, // llvm.x86.xop.vpmacssdqh
  2426. x86_xop_vpmacssdql, // llvm.x86.xop.vpmacssdql
  2427. x86_xop_vpmacsswd, // llvm.x86.xop.vpmacsswd
  2428. x86_xop_vpmacssww, // llvm.x86.xop.vpmacssww
  2429. x86_xop_vpmacswd, // llvm.x86.xop.vpmacswd
  2430. x86_xop_vpmacsww, // llvm.x86.xop.vpmacsww
  2431. x86_xop_vpmadcsswd, // llvm.x86.xop.vpmadcsswd
  2432. x86_xop_vpmadcswd, // llvm.x86.xop.vpmadcswd
  2433. x86_xop_vpperm, // llvm.x86.xop.vpperm
  2434. x86_xop_vprotb, // llvm.x86.xop.vprotb
  2435. x86_xop_vprotbi, // llvm.x86.xop.vprotbi
  2436. x86_xop_vprotd, // llvm.x86.xop.vprotd
  2437. x86_xop_vprotdi, // llvm.x86.xop.vprotdi
  2438. x86_xop_vprotq, // llvm.x86.xop.vprotq
  2439. x86_xop_vprotqi, // llvm.x86.xop.vprotqi
  2440. x86_xop_vprotw, // llvm.x86.xop.vprotw
  2441. x86_xop_vprotwi, // llvm.x86.xop.vprotwi
  2442. x86_xop_vpshab, // llvm.x86.xop.vpshab
  2443. x86_xop_vpshad, // llvm.x86.xop.vpshad
  2444. x86_xop_vpshaq, // llvm.x86.xop.vpshaq
  2445. x86_xop_vpshaw, // llvm.x86.xop.vpshaw
  2446. x86_xop_vpshlb, // llvm.x86.xop.vpshlb
  2447. x86_xop_vpshld, // llvm.x86.xop.vpshld
  2448. x86_xop_vpshlq, // llvm.x86.xop.vpshlq
  2449. x86_xop_vpshlw, // llvm.x86.xop.vpshlw
  2450. xcore_bitrev, // llvm.xcore.bitrev
  2451. xcore_checkevent, // llvm.xcore.checkevent
  2452. xcore_chkct, // llvm.xcore.chkct
  2453. xcore_clre, // llvm.xcore.clre
  2454. xcore_clrsr, // llvm.xcore.clrsr
  2455. xcore_crc32, // llvm.xcore.crc32
  2456. xcore_crc8, // llvm.xcore.crc8
  2457. xcore_eeu, // llvm.xcore.eeu
  2458. xcore_endin, // llvm.xcore.endin
  2459. xcore_freer, // llvm.xcore.freer
  2460. xcore_geted, // llvm.xcore.geted
  2461. xcore_getet, // llvm.xcore.getet
  2462. xcore_getid, // llvm.xcore.getid
  2463. xcore_getps, // llvm.xcore.getps
  2464. xcore_getr, // llvm.xcore.getr
  2465. xcore_getst, // llvm.xcore.getst
  2466. xcore_getts, // llvm.xcore.getts
  2467. xcore_in, // llvm.xcore.in
  2468. xcore_inct, // llvm.xcore.inct
  2469. xcore_initcp, // llvm.xcore.initcp
  2470. xcore_initdp, // llvm.xcore.initdp
  2471. xcore_initlr, // llvm.xcore.initlr
  2472. xcore_initpc, // llvm.xcore.initpc
  2473. xcore_initsp, // llvm.xcore.initsp
  2474. xcore_inshr, // llvm.xcore.inshr
  2475. xcore_int, // llvm.xcore.int
  2476. xcore_mjoin, // llvm.xcore.mjoin
  2477. xcore_msync, // llvm.xcore.msync
  2478. xcore_out, // llvm.xcore.out
  2479. xcore_outct, // llvm.xcore.outct
  2480. xcore_outshr, // llvm.xcore.outshr
  2481. xcore_outt, // llvm.xcore.outt
  2482. xcore_peek, // llvm.xcore.peek
  2483. xcore_setc, // llvm.xcore.setc
  2484. xcore_setclk, // llvm.xcore.setclk
  2485. xcore_setd, // llvm.xcore.setd
  2486. xcore_setev, // llvm.xcore.setev
  2487. xcore_setps, // llvm.xcore.setps
  2488. xcore_setpsc, // llvm.xcore.setpsc
  2489. xcore_setpt, // llvm.xcore.setpt
  2490. xcore_setrdy, // llvm.xcore.setrdy
  2491. xcore_setsr, // llvm.xcore.setsr
  2492. xcore_settw, // llvm.xcore.settw
  2493. xcore_setv, // llvm.xcore.setv
  2494. xcore_sext, // llvm.xcore.sext
  2495. xcore_ssync, // llvm.xcore.ssync
  2496. xcore_syncr, // llvm.xcore.syncr
  2497. xcore_testct, // llvm.xcore.testct
  2498. xcore_testwct, // llvm.xcore.testwct
  2499. xcore_waitevent, // llvm.xcore.waitevent
  2500. xcore_zext // llvm.xcore.zext
  2501. #endif
  2502. // Intrinsic ID to name table
  2503. #ifdef GET_INTRINSIC_NAME_TABLE
  2504. // Note that entry #0 is the invalid intrinsic!
  2505. "llvm.adjust.trampoline",
  2506. "llvm.annotation",
  2507. "llvm.arm.cdp",
  2508. "llvm.arm.cdp2",
  2509. "llvm.arm.get.fpscr",
  2510. "llvm.arm.ldrexd",
  2511. "llvm.arm.mcr",
  2512. "llvm.arm.mcr2",
  2513. "llvm.arm.mcrr",
  2514. "llvm.arm.mcrr2",
  2515. "llvm.arm.mrc",
  2516. "llvm.arm.mrc2",
  2517. "llvm.arm.neon.vabds",
  2518. "llvm.arm.neon.vabdu",
  2519. "llvm.arm.neon.vabs",
  2520. "llvm.arm.neon.vacged",
  2521. "llvm.arm.neon.vacgeq",
  2522. "llvm.arm.neon.vacgtd",
  2523. "llvm.arm.neon.vacgtq",
  2524. "llvm.arm.neon.vaddhn",
  2525. "llvm.arm.neon.vbsl",
  2526. "llvm.arm.neon.vcls",
  2527. "llvm.arm.neon.vclz",
  2528. "llvm.arm.neon.vcnt",
  2529. "llvm.arm.neon.vcvtfp2fxs",
  2530. "llvm.arm.neon.vcvtfp2fxu",
  2531. "llvm.arm.neon.vcvtfp2hf",
  2532. "llvm.arm.neon.vcvtfxs2fp",
  2533. "llvm.arm.neon.vcvtfxu2fp",
  2534. "llvm.arm.neon.vcvthf2fp",
  2535. "llvm.arm.neon.vhadds",
  2536. "llvm.arm.neon.vhaddu",
  2537. "llvm.arm.neon.vhsubs",
  2538. "llvm.arm.neon.vhsubu",
  2539. "llvm.arm.neon.vld1",
  2540. "llvm.arm.neon.vld2",
  2541. "llvm.arm.neon.vld2lane",
  2542. "llvm.arm.neon.vld3",
  2543. "llvm.arm.neon.vld3lane",
  2544. "llvm.arm.neon.vld4",
  2545. "llvm.arm.neon.vld4lane",
  2546. "llvm.arm.neon.vmaxs",
  2547. "llvm.arm.neon.vmaxu",
  2548. "llvm.arm.neon.vmins",
  2549. "llvm.arm.neon.vminu",
  2550. "llvm.arm.neon.vmullp",
  2551. "llvm.arm.neon.vmulls",
  2552. "llvm.arm.neon.vmullu",
  2553. "llvm.arm.neon.vmulp",
  2554. "llvm.arm.neon.vpadals",
  2555. "llvm.arm.neon.vpadalu",
  2556. "llvm.arm.neon.vpadd",
  2557. "llvm.arm.neon.vpaddls",
  2558. "llvm.arm.neon.vpaddlu",
  2559. "llvm.arm.neon.vpmaxs",
  2560. "llvm.arm.neon.vpmaxu",
  2561. "llvm.arm.neon.vpmins",
  2562. "llvm.arm.neon.vpminu",
  2563. "llvm.arm.neon.vqabs",
  2564. "llvm.arm.neon.vqadds",
  2565. "llvm.arm.neon.vqaddu",
  2566. "llvm.arm.neon.vqdmlal",
  2567. "llvm.arm.neon.vqdmlsl",
  2568. "llvm.arm.neon.vqdmulh",
  2569. "llvm.arm.neon.vqdmull",
  2570. "llvm.arm.neon.vqmovns",
  2571. "llvm.arm.neon.vqmovnsu",
  2572. "llvm.arm.neon.vqmovnu",
  2573. "llvm.arm.neon.vqneg",
  2574. "llvm.arm.neon.vqrdmulh",
  2575. "llvm.arm.neon.vqrshiftns",
  2576. "llvm.arm.neon.vqrshiftnsu",
  2577. "llvm.arm.neon.vqrshiftnu",
  2578. "llvm.arm.neon.vqrshifts",
  2579. "llvm.arm.neon.vqrshiftu",
  2580. "llvm.arm.neon.vqshiftns",
  2581. "llvm.arm.neon.vqshiftnsu",
  2582. "llvm.arm.neon.vqshiftnu",
  2583. "llvm.arm.neon.vqshifts",
  2584. "llvm.arm.neon.vqshiftsu",
  2585. "llvm.arm.neon.vqshiftu",
  2586. "llvm.arm.neon.vqsubs",
  2587. "llvm.arm.neon.vqsubu",
  2588. "llvm.arm.neon.vraddhn",
  2589. "llvm.arm.neon.vrecpe",
  2590. "llvm.arm.neon.vrecps",
  2591. "llvm.arm.neon.vrhadds",
  2592. "llvm.arm.neon.vrhaddu",
  2593. "llvm.arm.neon.vrshiftn",
  2594. "llvm.arm.neon.vrshifts",
  2595. "llvm.arm.neon.vrshiftu",
  2596. "llvm.arm.neon.vrsqrte",
  2597. "llvm.arm.neon.vrsqrts",
  2598. "llvm.arm.neon.vrsubhn",
  2599. "llvm.arm.neon.vshiftins",
  2600. "llvm.arm.neon.vshiftls",
  2601. "llvm.arm.neon.vshiftlu",
  2602. "llvm.arm.neon.vshiftn",
  2603. "llvm.arm.neon.vshifts",
  2604. "llvm.arm.neon.vshiftu",
  2605. "llvm.arm.neon.vst1",
  2606. "llvm.arm.neon.vst2",
  2607. "llvm.arm.neon.vst2lane",
  2608. "llvm.arm.neon.vst3",
  2609. "llvm.arm.neon.vst3lane",
  2610. "llvm.arm.neon.vst4",
  2611. "llvm.arm.neon.vst4lane",
  2612. "llvm.arm.neon.vsubhn",
  2613. "llvm.arm.neon.vtbl1",
  2614. "llvm.arm.neon.vtbl2",
  2615. "llvm.arm.neon.vtbl3",
  2616. "llvm.arm.neon.vtbl4",
  2617. "llvm.arm.neon.vtbx1",
  2618. "llvm.arm.neon.vtbx2",
  2619. "llvm.arm.neon.vtbx3",
  2620. "llvm.arm.neon.vtbx4",
  2621. "llvm.arm.qadd",
  2622. "llvm.arm.qsub",
  2623. "llvm.arm.set.fpscr",
  2624. "llvm.arm.ssat",
  2625. "llvm.arm.strexd",
  2626. "llvm.arm.thread.pointer",
  2627. "llvm.arm.usat",
  2628. "llvm.arm.vcvtr",
  2629. "llvm.arm.vcvtru",
  2630. "llvm.bswap",
  2631. "llvm.convert.from.fp16",
  2632. "llvm.convert.to.fp16",
  2633. "llvm.convertff",
  2634. "llvm.convertfsi",
  2635. "llvm.convertfui",
  2636. "llvm.convertsif",
  2637. "llvm.convertss",
  2638. "llvm.convertsu",
  2639. "llvm.convertuif",
  2640. "llvm.convertus",
  2641. "llvm.convertuu",
  2642. "llvm.cos",
  2643. "llvm.ctlz",
  2644. "llvm.ctpop",
  2645. "llvm.cttz",
  2646. "llvm.cuda.syncthreads",
  2647. "llvm.dbg.declare",
  2648. "llvm.dbg.value",
  2649. "llvm.debugtrap",
  2650. "llvm.donothing",
  2651. "llvm.eh.dwarf.cfa",
  2652. "llvm.eh.return.i32",
  2653. "llvm.eh.return.i64",
  2654. "llvm.eh.sjlj.callsite",
  2655. "llvm.eh.sjlj.functioncontext",
  2656. "llvm.eh.sjlj.longjmp",
  2657. "llvm.eh.sjlj.lsda",
  2658. "llvm.eh.sjlj.setjmp",
  2659. "llvm.eh.typeid.for",
  2660. "llvm.eh.unwind.init",
  2661. "llvm.exp",
  2662. "llvm.exp2",
  2663. "llvm.expect",
  2664. "llvm.fabs",
  2665. "llvm.floor",
  2666. "llvm.flt.rounds",
  2667. "llvm.fma",
  2668. "llvm.fmuladd",
  2669. "llvm.frameaddress",
  2670. "llvm.gcread",
  2671. "llvm.gcroot",
  2672. "llvm.gcwrite",
  2673. "llvm.hexagon.A2.abs",
  2674. "llvm.hexagon.A2.absp",
  2675. "llvm.hexagon.A2.abssat",
  2676. "llvm.hexagon.A2.add",
  2677. "llvm.hexagon.A2.addh.h16.hh",
  2678. "llvm.hexagon.A2.addh.h16.hl",
  2679. "llvm.hexagon.A2.addh.h16.lh",
  2680. "llvm.hexagon.A2.addh.h16.ll",
  2681. "llvm.hexagon.A2.addh.h16.sat.hh",
  2682. "llvm.hexagon.A2.addh.h16.sat.hl",
  2683. "llvm.hexagon.A2.addh.h16.sat.lh",
  2684. "llvm.hexagon.A2.addh.h16.sat.ll",
  2685. "llvm.hexagon.A2.addh.l16.hl",
  2686. "llvm.hexagon.A2.addh.l16.ll",
  2687. "llvm.hexagon.A2.addh.l16.sat.hl",
  2688. "llvm.hexagon.A2.addh.l16.sat.ll",
  2689. "llvm.hexagon.A2.addi",
  2690. "llvm.hexagon.A2.addp",
  2691. "llvm.hexagon.A2.addpsat",
  2692. "llvm.hexagon.A2.addsat",
  2693. "llvm.hexagon.A2.addsp",
  2694. "llvm.hexagon.A2.and",
  2695. "llvm.hexagon.A2.andir",
  2696. "llvm.hexagon.A2.andp",
  2697. "llvm.hexagon.A2.aslh",
  2698. "llvm.hexagon.A2.asrh",
  2699. "llvm.hexagon.A2.combine.hh",
  2700. "llvm.hexagon.A2.combine.hl",
  2701. "llvm.hexagon.A2.combine.lh",
  2702. "llvm.hexagon.A2.combine.ll",
  2703. "llvm.hexagon.A2.combineii",
  2704. "llvm.hexagon.A2.combinew",
  2705. "llvm.hexagon.A2.max",
  2706. "llvm.hexagon.A2.maxp",
  2707. "llvm.hexagon.A2.maxu",
  2708. "llvm.hexagon.A2.maxup",
  2709. "llvm.hexagon.A2.min",
  2710. "llvm.hexagon.A2.minp",
  2711. "llvm.hexagon.A2.minu",
  2712. "llvm.hexagon.A2.minup",
  2713. "llvm.hexagon.A2.neg",
  2714. "llvm.hexagon.A2.negp",
  2715. "llvm.hexagon.A2.negsat",
  2716. "llvm.hexagon.A2.not",
  2717. "llvm.hexagon.A2.notp",
  2718. "llvm.hexagon.A2.or",
  2719. "llvm.hexagon.A2.orir",
  2720. "llvm.hexagon.A2.orp",
  2721. "llvm.hexagon.A2.roundsat",
  2722. "llvm.hexagon.A2.sat",
  2723. "llvm.hexagon.A2.satb",
  2724. "llvm.hexagon.A2.sath",
  2725. "llvm.hexagon.A2.satub",
  2726. "llvm.hexagon.A2.satuh",
  2727. "llvm.hexagon.A2.sub",
  2728. "llvm.hexagon.A2.subh.h16.hh",
  2729. "llvm.hexagon.A2.subh.h16.hl",
  2730. "llvm.hexagon.A2.subh.h16.lh",
  2731. "llvm.hexagon.A2.subh.h16.ll",
  2732. "llvm.hexagon.A2.subh.h16.sat.hh",
  2733. "llvm.hexagon.A2.subh.h16.sat.hl",
  2734. "llvm.hexagon.A2.subh.h16.sat.lh",
  2735. "llvm.hexagon.A2.subh.h16.sat.ll",
  2736. "llvm.hexagon.A2.subh.l16.hl",
  2737. "llvm.hexagon.A2.subh.l16.ll",
  2738. "llvm.hexagon.A2.subh.l16.sat.hl",
  2739. "llvm.hexagon.A2.subh.l16.sat.ll",
  2740. "llvm.hexagon.A2.subp",
  2741. "llvm.hexagon.A2.subri",
  2742. "llvm.hexagon.A2.subsat",
  2743. "llvm.hexagon.A2.svaddh",
  2744. "llvm.hexagon.A2.svaddhs",
  2745. "llvm.hexagon.A2.svadduhs",
  2746. "llvm.hexagon.A2.svavgh",
  2747. "llvm.hexagon.A2.svavghs",
  2748. "llvm.hexagon.A2.svnavgh",
  2749. "llvm.hexagon.A2.svsubh",
  2750. "llvm.hexagon.A2.svsubhs",
  2751. "llvm.hexagon.A2.svsubuhs",
  2752. "llvm.hexagon.A2.swiz",
  2753. "llvm.hexagon.A2.sxtb",
  2754. "llvm.hexagon.A2.sxth",
  2755. "llvm.hexagon.A2.sxtw",
  2756. "llvm.hexagon.A2.tfr",
  2757. "llvm.hexagon.A2.tfrih",
  2758. "llvm.hexagon.A2.tfril",
  2759. "llvm.hexagon.A2.tfrp",
  2760. "llvm.hexagon.A2.tfrpi",
  2761. "llvm.hexagon.A2.tfrsi",
  2762. "llvm.hexagon.A2.vabsh",
  2763. "llvm.hexagon.A2.vabshsat",
  2764. "llvm.hexagon.A2.vabsw",
  2765. "llvm.hexagon.A2.vabswsat",
  2766. "llvm.hexagon.A2.vaddb.map",
  2767. "llvm.hexagon.A2.vaddh",
  2768. "llvm.hexagon.A2.vaddhs",
  2769. "llvm.hexagon.A2.vaddub",
  2770. "llvm.hexagon.A2.vaddubs",
  2771. "llvm.hexagon.A2.vadduhs",
  2772. "llvm.hexagon.A2.vaddw",
  2773. "llvm.hexagon.A2.vaddws",
  2774. "llvm.hexagon.A2.vavgh",
  2775. "llvm.hexagon.A2.vavghcr",
  2776. "llvm.hexagon.A2.vavghr",
  2777. "llvm.hexagon.A2.vavgub",
  2778. "llvm.hexagon.A2.vavgubr",
  2779. "llvm.hexagon.A2.vavguh",
  2780. "llvm.hexagon.A2.vavguhr",
  2781. "llvm.hexagon.A2.vavguw",
  2782. "llvm.hexagon.A2.vavguwr",
  2783. "llvm.hexagon.A2.vavgw",
  2784. "llvm.hexagon.A2.vavgwcr",
  2785. "llvm.hexagon.A2.vavgwr",
  2786. "llvm.hexagon.A2.vcmpbeq",
  2787. "llvm.hexagon.A2.vcmpbgtu",
  2788. "llvm.hexagon.A2.vcmpheq",
  2789. "llvm.hexagon.A2.vcmphgt",
  2790. "llvm.hexagon.A2.vcmphgtu",
  2791. "llvm.hexagon.A2.vcmpweq",
  2792. "llvm.hexagon.A2.vcmpwgt",
  2793. "llvm.hexagon.A2.vcmpwgtu",
  2794. "llvm.hexagon.A2.vconj",
  2795. "llvm.hexagon.A2.vmaxb",
  2796. "llvm.hexagon.A2.vmaxh",
  2797. "llvm.hexagon.A2.vmaxub",
  2798. "llvm.hexagon.A2.vmaxuh",
  2799. "llvm.hexagon.A2.vmaxuw",
  2800. "llvm.hexagon.A2.vmaxw",
  2801. "llvm.hexagon.A2.vminb",
  2802. "llvm.hexagon.A2.vminh",
  2803. "llvm.hexagon.A2.vminub",
  2804. "llvm.hexagon.A2.vminuh",
  2805. "llvm.hexagon.A2.vminuw",
  2806. "llvm.hexagon.A2.vminw",
  2807. "llvm.hexagon.A2.vnavgh",
  2808. "llvm.hexagon.A2.vnavghcr",
  2809. "llvm.hexagon.A2.vnavghr",
  2810. "llvm.hexagon.A2.vnavgw",
  2811. "llvm.hexagon.A2.vnavgwcr",
  2812. "llvm.hexagon.A2.vnavgwr",
  2813. "llvm.hexagon.A2.vraddub",
  2814. "llvm.hexagon.A2.vraddub.acc",
  2815. "llvm.hexagon.A2.vrsadub",
  2816. "llvm.hexagon.A2.vrsadub.acc",
  2817. "llvm.hexagon.A2.vsubb.map",
  2818. "llvm.hexagon.A2.vsubh",
  2819. "llvm.hexagon.A2.vsubhs",
  2820. "llvm.hexagon.A2.vsubub",
  2821. "llvm.hexagon.A2.vsububs",
  2822. "llvm.hexagon.A2.vsubuhs",
  2823. "llvm.hexagon.A2.vsubw",
  2824. "llvm.hexagon.A2.vsubws",
  2825. "llvm.hexagon.A2.xor",
  2826. "llvm.hexagon.A2.xorp",
  2827. "llvm.hexagon.A2.zxtb",
  2828. "llvm.hexagon.A2.zxth",
  2829. "llvm.hexagon.A4.andn",
  2830. "llvm.hexagon.A4.andnp",
  2831. "llvm.hexagon.A4.bitsplit",
  2832. "llvm.hexagon.A4.bitspliti",
  2833. "llvm.hexagon.A4.boundscheck",
  2834. "llvm.hexagon.A4.cmpbeq",
  2835. "llvm.hexagon.A4.cmpbeqi",
  2836. "llvm.hexagon.A4.cmpbgt",
  2837. "llvm.hexagon.A4.cmpbgti",
  2838. "llvm.hexagon.A4.cmpbgtu",
  2839. "llvm.hexagon.A4.cmpbgtui",
  2840. "llvm.hexagon.A4.cmpheq",
  2841. "llvm.hexagon.A4.cmpheqi",
  2842. "llvm.hexagon.A4.cmphgt",
  2843. "llvm.hexagon.A4.cmphgti",
  2844. "llvm.hexagon.A4.cmphgtu",
  2845. "llvm.hexagon.A4.cmphgtui",
  2846. "llvm.hexagon.A4.combineir",
  2847. "llvm.hexagon.A4.combineri",
  2848. "llvm.hexagon.A4.cround.ri",
  2849. "llvm.hexagon.A4.cround.rr",
  2850. "llvm.hexagon.A4.modwrapu",
  2851. "llvm.hexagon.A4.orn",
  2852. "llvm.hexagon.A4.ornp",
  2853. "llvm.hexagon.A4.rcmpeq",
  2854. "llvm.hexagon.A4.rcmpeqi",
  2855. "llvm.hexagon.A4.rcmpneq",
  2856. "llvm.hexagon.A4.rcmpneqi",
  2857. "llvm.hexagon.A4.round.ri",
  2858. "llvm.hexagon.A4.round.ri.sat",
  2859. "llvm.hexagon.A4.round.rr",
  2860. "llvm.hexagon.A4.round.rr.sat",
  2861. "llvm.hexagon.A4.tlbmatch",
  2862. "llvm.hexagon.A4.vcmpbeq.any",
  2863. "llvm.hexagon.A4.vcmpbeqi",
  2864. "llvm.hexagon.A4.vcmpbgt",
  2865. "llvm.hexagon.A4.vcmpbgti",
  2866. "llvm.hexagon.A4.vcmpbgtui",
  2867. "llvm.hexagon.A4.vcmpheqi",
  2868. "llvm.hexagon.A4.vcmphgti",
  2869. "llvm.hexagon.A4.vcmphgtui",
  2870. "llvm.hexagon.A4.vcmpweqi",
  2871. "llvm.hexagon.A4.vcmpwgti",
  2872. "llvm.hexagon.A4.vcmpwgtui",
  2873. "llvm.hexagon.A4.vrmaxh",
  2874. "llvm.hexagon.A4.vrmaxuh",
  2875. "llvm.hexagon.A4.vrmaxuw",
  2876. "llvm.hexagon.A4.vrmaxw",
  2877. "llvm.hexagon.A4.vrminh",
  2878. "llvm.hexagon.A4.vrminuh",
  2879. "llvm.hexagon.A4.vrminuw",
  2880. "llvm.hexagon.A4.vrminw",
  2881. "llvm.hexagon.A5.vaddhubs",
  2882. "llvm.hexagon.C2.all8",
  2883. "llvm.hexagon.C2.and",
  2884. "llvm.hexagon.C2.andn",
  2885. "llvm.hexagon.C2.any8",
  2886. "llvm.hexagon.C2.bitsclr",
  2887. "llvm.hexagon.C2.bitsclri",
  2888. "llvm.hexagon.C2.bitsset",
  2889. "llvm.hexagon.C2.cmpeq",
  2890. "llvm.hexagon.C2.cmpeqi",
  2891. "llvm.hexagon.C2.cmpeqp",
  2892. "llvm.hexagon.C2.cmpgei",
  2893. "llvm.hexagon.C2.cmpgeui",
  2894. "llvm.hexagon.C2.cmpgt",
  2895. "llvm.hexagon.C2.cmpgti",
  2896. "llvm.hexagon.C2.cmpgtp",
  2897. "llvm.hexagon.C2.cmpgtu",
  2898. "llvm.hexagon.C2.cmpgtui",
  2899. "llvm.hexagon.C2.cmpgtup",
  2900. "llvm.hexagon.C2.cmplt",
  2901. "llvm.hexagon.C2.cmpltu",
  2902. "llvm.hexagon.C2.mask",
  2903. "llvm.hexagon.C2.mux",
  2904. "llvm.hexagon.C2.muxii",
  2905. "llvm.hexagon.C2.muxir",
  2906. "llvm.hexagon.C2.muxri",
  2907. "llvm.hexagon.C2.not",
  2908. "llvm.hexagon.C2.or",
  2909. "llvm.hexagon.C2.orn",
  2910. "llvm.hexagon.C2.pxfer.map",
  2911. "llvm.hexagon.C2.tfrpr",
  2912. "llvm.hexagon.C2.tfrrp",
  2913. "llvm.hexagon.C2.vitpack",
  2914. "llvm.hexagon.C2.vmux",
  2915. "llvm.hexagon.C2.xor",
  2916. "llvm.hexagon.C4.and.and",
  2917. "llvm.hexagon.C4.and.andn",
  2918. "llvm.hexagon.C4.and.or",
  2919. "llvm.hexagon.C4.and.orn",
  2920. "llvm.hexagon.C4.cmplte",
  2921. "llvm.hexagon.C4.cmpltei",
  2922. "llvm.hexagon.C4.cmplteu",
  2923. "llvm.hexagon.C4.cmplteui",
  2924. "llvm.hexagon.C4.cmpneq",
  2925. "llvm.hexagon.C4.cmpneqi",
  2926. "llvm.hexagon.C4.fastcorner9",
  2927. "llvm.hexagon.C4.fastcorner9.not",
  2928. "llvm.hexagon.C4.nbitsclr",
  2929. "llvm.hexagon.C4.nbitsclri",
  2930. "llvm.hexagon.C4.nbitsset",
  2931. "llvm.hexagon.C4.or.and",
  2932. "llvm.hexagon.C4.or.andn",
  2933. "llvm.hexagon.C4.or.or",
  2934. "llvm.hexagon.C4.or.orn",
  2935. "llvm.hexagon.F2.conv.d2df",
  2936. "llvm.hexagon.F2.conv.d2sf",
  2937. "llvm.hexagon.F2.conv.df2d",
  2938. "llvm.hexagon.F2.conv.df2d.chop",
  2939. "llvm.hexagon.F2.conv.df2sf",
  2940. "llvm.hexagon.F2.conv.df2ud",
  2941. "llvm.hexagon.F2.conv.df2ud.chop",
  2942. "llvm.hexagon.F2.conv.df2uw",
  2943. "llvm.hexagon.F2.conv.df2uw.chop",
  2944. "llvm.hexagon.F2.conv.df2w",
  2945. "llvm.hexagon.F2.conv.df2w.chop",
  2946. "llvm.hexagon.F2.conv.sf2d",
  2947. "llvm.hexagon.F2.conv.sf2d.chop",
  2948. "llvm.hexagon.F2.conv.sf2df",
  2949. "llvm.hexagon.F2.conv.sf2ud",
  2950. "llvm.hexagon.F2.conv.sf2ud.chop",
  2951. "llvm.hexagon.F2.conv.sf2uw",
  2952. "llvm.hexagon.F2.conv.sf2uw.chop",
  2953. "llvm.hexagon.F2.conv.sf2w",
  2954. "llvm.hexagon.F2.conv.sf2w.chop",
  2955. "llvm.hexagon.F2.conv.ud2df",
  2956. "llvm.hexagon.F2.conv.ud2sf",
  2957. "llvm.hexagon.F2.conv.uw2df",
  2958. "llvm.hexagon.F2.conv.uw2sf",
  2959. "llvm.hexagon.F2.conv.w2df",
  2960. "llvm.hexagon.F2.conv.w2sf",
  2961. "llvm.hexagon.F2.dfadd",
  2962. "llvm.hexagon.F2.dfclass",
  2963. "llvm.hexagon.F2.dfcmpeq",
  2964. "llvm.hexagon.F2.dfcmpge",
  2965. "llvm.hexagon.F2.dfcmpgt",
  2966. "llvm.hexagon.F2.dfcmpuo",
  2967. "llvm.hexagon.F2.dffixupd",
  2968. "llvm.hexagon.F2.dffixupn",
  2969. "llvm.hexagon.F2.dffixupr",
  2970. "llvm.hexagon.F2.dffma",
  2971. "llvm.hexagon.F2.dffma.lib",
  2972. "llvm.hexagon.F2.dffma.sc",
  2973. "llvm.hexagon.F2.dffms",
  2974. "llvm.hexagon.F2.dffms.lib",
  2975. "llvm.hexagon.F2.dfimm.n",
  2976. "llvm.hexagon.F2.dfimm.p",
  2977. "llvm.hexagon.F2.dfmax",
  2978. "llvm.hexagon.F2.dfmin",
  2979. "llvm.hexagon.F2.dfmpy",
  2980. "llvm.hexagon.F2.dfsub",
  2981. "llvm.hexagon.F2.sfadd",
  2982. "llvm.hexagon.F2.sfclass",
  2983. "llvm.hexagon.F2.sfcmpeq",
  2984. "llvm.hexagon.F2.sfcmpge",
  2985. "llvm.hexagon.F2.sfcmpgt",
  2986. "llvm.hexagon.F2.sfcmpuo",
  2987. "llvm.hexagon.F2.sffixupd",
  2988. "llvm.hexagon.F2.sffixupn",
  2989. "llvm.hexagon.F2.sffixupr",
  2990. "llvm.hexagon.F2.sffma",
  2991. "llvm.hexagon.F2.sffma.lib",
  2992. "llvm.hexagon.F2.sffma.sc",
  2993. "llvm.hexagon.F2.sffms",
  2994. "llvm.hexagon.F2.sffms.lib",
  2995. "llvm.hexagon.F2.sfimm.n",
  2996. "llvm.hexagon.F2.sfimm.p",
  2997. "llvm.hexagon.F2.sfmax",
  2998. "llvm.hexagon.F2.sfmin",
  2999. "llvm.hexagon.F2.sfmpy",
  3000. "llvm.hexagon.F2.sfsub",
  3001. "llvm.hexagon.M2.acci",
  3002. "llvm.hexagon.M2.accii",
  3003. "llvm.hexagon.M2.cmaci.s0",
  3004. "llvm.hexagon.M2.cmacr.s0",
  3005. "llvm.hexagon.M2.cmacs.s0",
  3006. "llvm.hexagon.M2.cmacs.s1",
  3007. "llvm.hexagon.M2.cmacsc.s0",
  3008. "llvm.hexagon.M2.cmacsc.s1",
  3009. "llvm.hexagon.M2.cmpyi.s0",
  3010. "llvm.hexagon.M2.cmpyr.s0",
  3011. "llvm.hexagon.M2.cmpyrs.s0",
  3012. "llvm.hexagon.M2.cmpyrs.s1",
  3013. "llvm.hexagon.M2.cmpyrsc.s0",
  3014. "llvm.hexagon.M2.cmpyrsc.s1",
  3015. "llvm.hexagon.M2.cmpys.s0",
  3016. "llvm.hexagon.M2.cmpys.s1",
  3017. "llvm.hexagon.M2.cmpysc.s0",
  3018. "llvm.hexagon.M2.cmpysc.s1",
  3019. "llvm.hexagon.M2.cnacs.s0",
  3020. "llvm.hexagon.M2.cnacs.s1",
  3021. "llvm.hexagon.M2.cnacsc.s0",
  3022. "llvm.hexagon.M2.cnacsc.s1",
  3023. "llvm.hexagon.M2.dpmpyss.acc.s0",
  3024. "llvm.hexagon.M2.dpmpyss.nac.s0",
  3025. "llvm.hexagon.M2.dpmpyss.rnd.s0",
  3026. "llvm.hexagon.M2.dpmpyss.s0",
  3027. "llvm.hexagon.M2.dpmpyuu.acc.s0",
  3028. "llvm.hexagon.M2.dpmpyuu.nac.s0",
  3029. "llvm.hexagon.M2.dpmpyuu.s0",
  3030. "llvm.hexagon.M2.hmmpyh.rs1",
  3031. "llvm.hexagon.M2.hmmpyh.s1",
  3032. "llvm.hexagon.M2.hmmpyl.rs1",
  3033. "llvm.hexagon.M2.hmmpyl.s1",
  3034. "llvm.hexagon.M2.maci",
  3035. "llvm.hexagon.M2.macsin",
  3036. "llvm.hexagon.M2.macsip",
  3037. "llvm.hexagon.M2.mmachs.rs0",
  3038. "llvm.hexagon.M2.mmachs.rs1",
  3039. "llvm.hexagon.M2.mmachs.s0",
  3040. "llvm.hexagon.M2.mmachs.s1",
  3041. "llvm.hexagon.M2.mmacls.rs0",
  3042. "llvm.hexagon.M2.mmacls.rs1",
  3043. "llvm.hexagon.M2.mmacls.s0",
  3044. "llvm.hexagon.M2.mmacls.s1",
  3045. "llvm.hexagon.M2.mmacuhs.rs0",
  3046. "llvm.hexagon.M2.mmacuhs.rs1",
  3047. "llvm.hexagon.M2.mmacuhs.s0",
  3048. "llvm.hexagon.M2.mmacuhs.s1",
  3049. "llvm.hexagon.M2.mmaculs.rs0",
  3050. "llvm.hexagon.M2.mmaculs.rs1",
  3051. "llvm.hexagon.M2.mmaculs.s0",
  3052. "llvm.hexagon.M2.mmaculs.s1",
  3053. "llvm.hexagon.M2.mmpyh.rs0",
  3054. "llvm.hexagon.M2.mmpyh.rs1",
  3055. "llvm.hexagon.M2.mmpyh.s0",
  3056. "llvm.hexagon.M2.mmpyh.s1",
  3057. "llvm.hexagon.M2.mmpyl.rs0",
  3058. "llvm.hexagon.M2.mmpyl.rs1",
  3059. "llvm.hexagon.M2.mmpyl.s0",
  3060. "llvm.hexagon.M2.mmpyl.s1",
  3061. "llvm.hexagon.M2.mmpyuh.rs0",
  3062. "llvm.hexagon.M2.mmpyuh.rs1",
  3063. "llvm.hexagon.M2.mmpyuh.s0",
  3064. "llvm.hexagon.M2.mmpyuh.s1",
  3065. "llvm.hexagon.M2.mmpyul.rs0",
  3066. "llvm.hexagon.M2.mmpyul.rs1",
  3067. "llvm.hexagon.M2.mmpyul.s0",
  3068. "llvm.hexagon.M2.mmpyul.s1",
  3069. "llvm.hexagon.M2.mpy.acc.hh.s0",
  3070. "llvm.hexagon.M2.mpy.acc.hh.s1",
  3071. "llvm.hexagon.M2.mpy.acc.hl.s0",
  3072. "llvm.hexagon.M2.mpy.acc.hl.s1",
  3073. "llvm.hexagon.M2.mpy.acc.lh.s0",
  3074. "llvm.hexagon.M2.mpy.acc.lh.s1",
  3075. "llvm.hexagon.M2.mpy.acc.ll.s0",
  3076. "llvm.hexagon.M2.mpy.acc.ll.s1",
  3077. "llvm.hexagon.M2.mpy.acc.sat.hh.s0",
  3078. "llvm.hexagon.M2.mpy.acc.sat.hh.s1",
  3079. "llvm.hexagon.M2.mpy.acc.sat.hl.s0",
  3080. "llvm.hexagon.M2.mpy.acc.sat.hl.s1",
  3081. "llvm.hexagon.M2.mpy.acc.sat.lh.s0",
  3082. "llvm.hexagon.M2.mpy.acc.sat.lh.s1",
  3083. "llvm.hexagon.M2.mpy.acc.sat.ll.s0",
  3084. "llvm.hexagon.M2.mpy.acc.sat.ll.s1",
  3085. "llvm.hexagon.M2.mpy.hh.s0",
  3086. "llvm.hexagon.M2.mpy.hh.s1",
  3087. "llvm.hexagon.M2.mpy.hl.s0",
  3088. "llvm.hexagon.M2.mpy.hl.s1",
  3089. "llvm.hexagon.M2.mpy.lh.s0",
  3090. "llvm.hexagon.M2.mpy.lh.s1",
  3091. "llvm.hexagon.M2.mpy.ll.s0",
  3092. "llvm.hexagon.M2.mpy.ll.s1",
  3093. "llvm.hexagon.M2.mpy.nac.hh.s0",
  3094. "llvm.hexagon.M2.mpy.nac.hh.s1",
  3095. "llvm.hexagon.M2.mpy.nac.hl.s0",
  3096. "llvm.hexagon.M2.mpy.nac.hl.s1",
  3097. "llvm.hexagon.M2.mpy.nac.lh.s0",
  3098. "llvm.hexagon.M2.mpy.nac.lh.s1",
  3099. "llvm.hexagon.M2.mpy.nac.ll.s0",
  3100. "llvm.hexagon.M2.mpy.nac.ll.s1",
  3101. "llvm.hexagon.M2.mpy.nac.sat.hh.s0",
  3102. "llvm.hexagon.M2.mpy.nac.sat.hh.s1",
  3103. "llvm.hexagon.M2.mpy.nac.sat.hl.s0",
  3104. "llvm.hexagon.M2.mpy.nac.sat.hl.s1",
  3105. "llvm.hexagon.M2.mpy.nac.sat.lh.s0",
  3106. "llvm.hexagon.M2.mpy.nac.sat.lh.s1",
  3107. "llvm.hexagon.M2.mpy.nac.sat.ll.s0",
  3108. "llvm.hexagon.M2.mpy.nac.sat.ll.s1",
  3109. "llvm.hexagon.M2.mpy.rnd.hh.s0",
  3110. "llvm.hexagon.M2.mpy.rnd.hh.s1",
  3111. "llvm.hexagon.M2.mpy.rnd.hl.s0",
  3112. "llvm.hexagon.M2.mpy.rnd.hl.s1",
  3113. "llvm.hexagon.M2.mpy.rnd.lh.s0",
  3114. "llvm.hexagon.M2.mpy.rnd.lh.s1",
  3115. "llvm.hexagon.M2.mpy.rnd.ll.s0",
  3116. "llvm.hexagon.M2.mpy.rnd.ll.s1",
  3117. "llvm.hexagon.M2.mpy.sat.hh.s0",
  3118. "llvm.hexagon.M2.mpy.sat.hh.s1",
  3119. "llvm.hexagon.M2.mpy.sat.hl.s0",
  3120. "llvm.hexagon.M2.mpy.sat.hl.s1",
  3121. "llvm.hexagon.M2.mpy.sat.lh.s0",
  3122. "llvm.hexagon.M2.mpy.sat.lh.s1",
  3123. "llvm.hexagon.M2.mpy.sat.ll.s0",
  3124. "llvm.hexagon.M2.mpy.sat.ll.s1",
  3125. "llvm.hexagon.M2.mpy.sat.rnd.hh.s0",
  3126. "llvm.hexagon.M2.mpy.sat.rnd.hh.s1",
  3127. "llvm.hexagon.M2.mpy.sat.rnd.hl.s0",
  3128. "llvm.hexagon.M2.mpy.sat.rnd.hl.s1",
  3129. "llvm.hexagon.M2.mpy.sat.rnd.lh.s0",
  3130. "llvm.hexagon.M2.mpy.sat.rnd.lh.s1",
  3131. "llvm.hexagon.M2.mpy.sat.rnd.ll.s0",
  3132. "llvm.hexagon.M2.mpy.sat.rnd.ll.s1",
  3133. "llvm.hexagon.M2.mpy.up",
  3134. "llvm.hexagon.M2.mpy.up.s1",
  3135. "llvm.hexagon.M2.mpy.up.s1.sat",
  3136. "llvm.hexagon.M2.mpyd.acc.hh.s0",
  3137. "llvm.hexagon.M2.mpyd.acc.hh.s1",
  3138. "llvm.hexagon.M2.mpyd.acc.hl.s0",
  3139. "llvm.hexagon.M2.mpyd.acc.hl.s1",
  3140. "llvm.hexagon.M2.mpyd.acc.lh.s0",
  3141. "llvm.hexagon.M2.mpyd.acc.lh.s1",
  3142. "llvm.hexagon.M2.mpyd.acc.ll.s0",
  3143. "llvm.hexagon.M2.mpyd.acc.ll.s1",
  3144. "llvm.hexagon.M2.mpyd.hh.s0",
  3145. "llvm.hexagon.M2.mpyd.hh.s1",
  3146. "llvm.hexagon.M2.mpyd.hl.s0",
  3147. "llvm.hexagon.M2.mpyd.hl.s1",
  3148. "llvm.hexagon.M2.mpyd.lh.s0",
  3149. "llvm.hexagon.M2.mpyd.lh.s1",
  3150. "llvm.hexagon.M2.mpyd.ll.s0",
  3151. "llvm.hexagon.M2.mpyd.ll.s1",
  3152. "llvm.hexagon.M2.mpyd.nac.hh.s0",
  3153. "llvm.hexagon.M2.mpyd.nac.hh.s1",
  3154. "llvm.hexagon.M2.mpyd.nac.hl.s0",
  3155. "llvm.hexagon.M2.mpyd.nac.hl.s1",
  3156. "llvm.hexagon.M2.mpyd.nac.lh.s0",
  3157. "llvm.hexagon.M2.mpyd.nac.lh.s1",
  3158. "llvm.hexagon.M2.mpyd.nac.ll.s0",
  3159. "llvm.hexagon.M2.mpyd.nac.ll.s1",
  3160. "llvm.hexagon.M2.mpyd.rnd.hh.s0",
  3161. "llvm.hexagon.M2.mpyd.rnd.hh.s1",
  3162. "llvm.hexagon.M2.mpyd.rnd.hl.s0",
  3163. "llvm.hexagon.M2.mpyd.rnd.hl.s1",
  3164. "llvm.hexagon.M2.mpyd.rnd.lh.s0",
  3165. "llvm.hexagon.M2.mpyd.rnd.lh.s1",
  3166. "llvm.hexagon.M2.mpyd.rnd.ll.s0",
  3167. "llvm.hexagon.M2.mpyd.rnd.ll.s1",
  3168. "llvm.hexagon.M2.mpyi",
  3169. "llvm.hexagon.M2.mpysmi",
  3170. "llvm.hexagon.M2.mpysu.up",
  3171. "llvm.hexagon.M2.mpyu.acc.hh.s0",
  3172. "llvm.hexagon.M2.mpyu.acc.hh.s1",
  3173. "llvm.hexagon.M2.mpyu.acc.hl.s0",
  3174. "llvm.hexagon.M2.mpyu.acc.hl.s1",
  3175. "llvm.hexagon.M2.mpyu.acc.lh.s0",
  3176. "llvm.hexagon.M2.mpyu.acc.lh.s1",
  3177. "llvm.hexagon.M2.mpyu.acc.ll.s0",
  3178. "llvm.hexagon.M2.mpyu.acc.ll.s1",
  3179. "llvm.hexagon.M2.mpyu.hh.s0",
  3180. "llvm.hexagon.M2.mpyu.hh.s1",
  3181. "llvm.hexagon.M2.mpyu.hl.s0",
  3182. "llvm.hexagon.M2.mpyu.hl.s1",
  3183. "llvm.hexagon.M2.mpyu.lh.s0",
  3184. "llvm.hexagon.M2.mpyu.lh.s1",
  3185. "llvm.hexagon.M2.mpyu.ll.s0",
  3186. "llvm.hexagon.M2.mpyu.ll.s1",
  3187. "llvm.hexagon.M2.mpyu.nac.hh.s0",
  3188. "llvm.hexagon.M2.mpyu.nac.hh.s1",
  3189. "llvm.hexagon.M2.mpyu.nac.hl.s0",
  3190. "llvm.hexagon.M2.mpyu.nac.hl.s1",
  3191. "llvm.hexagon.M2.mpyu.nac.lh.s0",
  3192. "llvm.hexagon.M2.mpyu.nac.lh.s1",
  3193. "llvm.hexagon.M2.mpyu.nac.ll.s0",
  3194. "llvm.hexagon.M2.mpyu.nac.ll.s1",
  3195. "llvm.hexagon.M2.mpyu.up",
  3196. "llvm.hexagon.M2.mpyud.acc.hh.s0",
  3197. "llvm.hexagon.M2.mpyud.acc.hh.s1",
  3198. "llvm.hexagon.M2.mpyud.acc.hl.s0",
  3199. "llvm.hexagon.M2.mpyud.acc.hl.s1",
  3200. "llvm.hexagon.M2.mpyud.acc.lh.s0",
  3201. "llvm.hexagon.M2.mpyud.acc.lh.s1",
  3202. "llvm.hexagon.M2.mpyud.acc.ll.s0",
  3203. "llvm.hexagon.M2.mpyud.acc.ll.s1",
  3204. "llvm.hexagon.M2.mpyud.hh.s0",
  3205. "llvm.hexagon.M2.mpyud.hh.s1",
  3206. "llvm.hexagon.M2.mpyud.hl.s0",
  3207. "llvm.hexagon.M2.mpyud.hl.s1",
  3208. "llvm.hexagon.M2.mpyud.lh.s0",
  3209. "llvm.hexagon.M2.mpyud.lh.s1",
  3210. "llvm.hexagon.M2.mpyud.ll.s0",
  3211. "llvm.hexagon.M2.mpyud.ll.s1",
  3212. "llvm.hexagon.M2.mpyud.nac.hh.s0",
  3213. "llvm.hexagon.M2.mpyud.nac.hh.s1",
  3214. "llvm.hexagon.M2.mpyud.nac.hl.s0",
  3215. "llvm.hexagon.M2.mpyud.nac.hl.s1",
  3216. "llvm.hexagon.M2.mpyud.nac.lh.s0",
  3217. "llvm.hexagon.M2.mpyud.nac.lh.s1",
  3218. "llvm.hexagon.M2.mpyud.nac.ll.s0",
  3219. "llvm.hexagon.M2.mpyud.nac.ll.s1",
  3220. "llvm.hexagon.M2.mpyui",
  3221. "llvm.hexagon.M2.nacci",
  3222. "llvm.hexagon.M2.naccii",
  3223. "llvm.hexagon.M2.subacc",
  3224. "llvm.hexagon.M2.vabsdiffh",
  3225. "llvm.hexagon.M2.vabsdiffw",
  3226. "llvm.hexagon.M2.vcmac.s0.sat.i",
  3227. "llvm.hexagon.M2.vcmac.s0.sat.r",
  3228. "llvm.hexagon.M2.vcmpy.s0.sat.i",
  3229. "llvm.hexagon.M2.vcmpy.s0.sat.r",
  3230. "llvm.hexagon.M2.vcmpy.s1.sat.i",
  3231. "llvm.hexagon.M2.vcmpy.s1.sat.r",
  3232. "llvm.hexagon.M2.vdmacs.s0",
  3233. "llvm.hexagon.M2.vdmacs.s1",
  3234. "llvm.hexagon.M2.vdmpyrs.s0",
  3235. "llvm.hexagon.M2.vdmpyrs.s1",
  3236. "llvm.hexagon.M2.vdmpys.s0",
  3237. "llvm.hexagon.M2.vdmpys.s1",
  3238. "llvm.hexagon.M2.vmac2",
  3239. "llvm.hexagon.M2.vmac2es",
  3240. "llvm.hexagon.M2.vmac2es.s0",
  3241. "llvm.hexagon.M2.vmac2es.s1",
  3242. "llvm.hexagon.M2.vmac2s.s0",
  3243. "llvm.hexagon.M2.vmac2s.s1",
  3244. "llvm.hexagon.M2.vmac2su.s0",
  3245. "llvm.hexagon.M2.vmac2su.s1",
  3246. "llvm.hexagon.M2.vmpy2es.s0",
  3247. "llvm.hexagon.M2.vmpy2es.s1",
  3248. "llvm.hexagon.M2.vmpy2s.s0",
  3249. "llvm.hexagon.M2.vmpy2s.s0pack",
  3250. "llvm.hexagon.M2.vmpy2s.s1",
  3251. "llvm.hexagon.M2.vmpy2s.s1pack",
  3252. "llvm.hexagon.M2.vmpy2su.s0",
  3253. "llvm.hexagon.M2.vmpy2su.s1",
  3254. "llvm.hexagon.M2.vraddh",
  3255. "llvm.hexagon.M2.vradduh",
  3256. "llvm.hexagon.M2.vrcmaci.s0",
  3257. "llvm.hexagon.M2.vrcmaci.s0c",
  3258. "llvm.hexagon.M2.vrcmacr.s0",
  3259. "llvm.hexagon.M2.vrcmacr.s0c",
  3260. "llvm.hexagon.M2.vrcmpyi.s0",
  3261. "llvm.hexagon.M2.vrcmpyi.s0c",
  3262. "llvm.hexagon.M2.vrcmpyr.s0",
  3263. "llvm.hexagon.M2.vrcmpyr.s0c",
  3264. "llvm.hexagon.M2.vrcmpys.acc.s1",
  3265. "llvm.hexagon.M2.vrcmpys.s1",
  3266. "llvm.hexagon.M2.vrcmpys.s1rp",
  3267. "llvm.hexagon.M2.vrmac.s0",
  3268. "llvm.hexagon.M2.vrmpy.s0",
  3269. "llvm.hexagon.M2.xor.xacc",
  3270. "llvm.hexagon.M4.and.and",
  3271. "llvm.hexagon.M4.and.andn",
  3272. "llvm.hexagon.M4.and.or",
  3273. "llvm.hexagon.M4.and.xor",
  3274. "llvm.hexagon.M4.cmpyi.wh",
  3275. "llvm.hexagon.M4.cmpyi.whc",
  3276. "llvm.hexagon.M4.cmpyr.wh",
  3277. "llvm.hexagon.M4.cmpyr.whc",
  3278. "llvm.hexagon.M4.mac.up.s1.sat",
  3279. "llvm.hexagon.M4.mpyri.addi",
  3280. "llvm.hexagon.M4.mpyri.addr",
  3281. "llvm.hexagon.M4.mpyri.addr.u2",
  3282. "llvm.hexagon.M4.mpyrr.addi",
  3283. "llvm.hexagon.M4.mpyrr.addr",
  3284. "llvm.hexagon.M4.nac.up.s1.sat",
  3285. "llvm.hexagon.M4.or.and",
  3286. "llvm.hexagon.M4.or.andn",
  3287. "llvm.hexagon.M4.or.or",
  3288. "llvm.hexagon.M4.or.xor",
  3289. "llvm.hexagon.M4.pmpyw",
  3290. "llvm.hexagon.M4.pmpyw.acc",
  3291. "llvm.hexagon.M4.vpmpyh",
  3292. "llvm.hexagon.M4.vpmpyh.acc",
  3293. "llvm.hexagon.M4.vrmpyeh.acc.s0",
  3294. "llvm.hexagon.M4.vrmpyeh.acc.s1",
  3295. "llvm.hexagon.M4.vrmpyeh.s0",
  3296. "llvm.hexagon.M4.vrmpyeh.s1",
  3297. "llvm.hexagon.M4.vrmpyoh.acc.s0",
  3298. "llvm.hexagon.M4.vrmpyoh.acc.s1",
  3299. "llvm.hexagon.M4.vrmpyoh.s0",
  3300. "llvm.hexagon.M4.vrmpyoh.s1",
  3301. "llvm.hexagon.M4.xor.and",
  3302. "llvm.hexagon.M4.xor.andn",
  3303. "llvm.hexagon.M4.xor.or",
  3304. "llvm.hexagon.M4.xor.xacc",
  3305. "llvm.hexagon.M5.vdmacbsu",
  3306. "llvm.hexagon.M5.vdmpybsu",
  3307. "llvm.hexagon.M5.vmacbsu",
  3308. "llvm.hexagon.M5.vmacbuu",
  3309. "llvm.hexagon.M5.vmpybsu",
  3310. "llvm.hexagon.M5.vmpybuu",
  3311. "llvm.hexagon.M5.vrmacbsu",
  3312. "llvm.hexagon.M5.vrmacbuu",
  3313. "llvm.hexagon.M5.vrmpybsu",
  3314. "llvm.hexagon.M5.vrmpybuu",
  3315. "llvm.hexagon.S2.addasl.rrri",
  3316. "llvm.hexagon.S2.asl.i.p",
  3317. "llvm.hexagon.S2.asl.i.p.acc",
  3318. "llvm.hexagon.S2.asl.i.p.and",
  3319. "llvm.hexagon.S2.asl.i.p.nac",
  3320. "llvm.hexagon.S2.asl.i.p.or",
  3321. "llvm.hexagon.S2.asl.i.p.xacc",
  3322. "llvm.hexagon.S2.asl.i.r",
  3323. "llvm.hexagon.S2.asl.i.r.acc",
  3324. "llvm.hexagon.S2.asl.i.r.and",
  3325. "llvm.hexagon.S2.asl.i.r.nac",
  3326. "llvm.hexagon.S2.asl.i.r.or",
  3327. "llvm.hexagon.S2.asl.i.r.sat",
  3328. "llvm.hexagon.S2.asl.i.r.xacc",
  3329. "llvm.hexagon.S2.asl.i.vh",
  3330. "llvm.hexagon.S2.asl.i.vw",
  3331. "llvm.hexagon.S2.asl.r.p",
  3332. "llvm.hexagon.S2.asl.r.p.acc",
  3333. "llvm.hexagon.S2.asl.r.p.and",
  3334. "llvm.hexagon.S2.asl.r.p.nac",
  3335. "llvm.hexagon.S2.asl.r.p.or",
  3336. "llvm.hexagon.S2.asl.r.p.xor",
  3337. "llvm.hexagon.S2.asl.r.r",
  3338. "llvm.hexagon.S2.asl.r.r.acc",
  3339. "llvm.hexagon.S2.asl.r.r.and",
  3340. "llvm.hexagon.S2.asl.r.r.nac",
  3341. "llvm.hexagon.S2.asl.r.r.or",
  3342. "llvm.hexagon.S2.asl.r.r.sat",
  3343. "llvm.hexagon.S2.asl.r.vh",
  3344. "llvm.hexagon.S2.asl.r.vw",
  3345. "llvm.hexagon.S2.asr.i.p",
  3346. "llvm.hexagon.S2.asr.i.p.acc",
  3347. "llvm.hexagon.S2.asr.i.p.and",
  3348. "llvm.hexagon.S2.asr.i.p.nac",
  3349. "llvm.hexagon.S2.asr.i.p.or",
  3350. "llvm.hexagon.S2.asr.i.p.rnd",
  3351. "llvm.hexagon.S2.asr.i.p.rnd.goodsyntax",
  3352. "llvm.hexagon.S2.asr.i.r",
  3353. "llvm.hexagon.S2.asr.i.r.acc",
  3354. "llvm.hexagon.S2.asr.i.r.and",
  3355. "llvm.hexagon.S2.asr.i.r.nac",
  3356. "llvm.hexagon.S2.asr.i.r.or",
  3357. "llvm.hexagon.S2.asr.i.r.rnd",
  3358. "llvm.hexagon.S2.asr.i.r.rnd.goodsyntax",
  3359. "llvm.hexagon.S2.asr.i.svw.trun",
  3360. "llvm.hexagon.S2.asr.i.vh",
  3361. "llvm.hexagon.S2.asr.i.vw",
  3362. "llvm.hexagon.S2.asr.r.p",
  3363. "llvm.hexagon.S2.asr.r.p.acc",
  3364. "llvm.hexagon.S2.asr.r.p.and",
  3365. "llvm.hexagon.S2.asr.r.p.nac",
  3366. "llvm.hexagon.S2.asr.r.p.or",
  3367. "llvm.hexagon.S2.asr.r.p.xor",
  3368. "llvm.hexagon.S2.asr.r.r",
  3369. "llvm.hexagon.S2.asr.r.r.acc",
  3370. "llvm.hexagon.S2.asr.r.r.and",
  3371. "llvm.hexagon.S2.asr.r.r.nac",
  3372. "llvm.hexagon.S2.asr.r.r.or",
  3373. "llvm.hexagon.S2.asr.r.r.sat",
  3374. "llvm.hexagon.S2.asr.r.svw.trun",
  3375. "llvm.hexagon.S2.asr.r.vh",
  3376. "llvm.hexagon.S2.asr.r.vw",
  3377. "llvm.hexagon.S2.brev",
  3378. "llvm.hexagon.S2.brevp",
  3379. "llvm.hexagon.S2.cl0",
  3380. "llvm.hexagon.S2.cl0p",
  3381. "llvm.hexagon.S2.cl1",
  3382. "llvm.hexagon.S2.cl1p",
  3383. "llvm.hexagon.S2.clb",
  3384. "llvm.hexagon.S2.clbnorm",
  3385. "llvm.hexagon.S2.clbp",
  3386. "llvm.hexagon.S2.clrbit.i",
  3387. "llvm.hexagon.S2.clrbit.r",
  3388. "llvm.hexagon.S2.ct0",
  3389. "llvm.hexagon.S2.ct0p",
  3390. "llvm.hexagon.S2.ct1",
  3391. "llvm.hexagon.S2.ct1p",
  3392. "llvm.hexagon.S2.deinterleave",
  3393. "llvm.hexagon.S2.extractu",
  3394. "llvm.hexagon.S2.extractu.rp",
  3395. "llvm.hexagon.S2.extractup",
  3396. "llvm.hexagon.S2.extractup.rp",
  3397. "llvm.hexagon.S2.insert",
  3398. "llvm.hexagon.S2.insert.rp",
  3399. "llvm.hexagon.S2.insertp",
  3400. "llvm.hexagon.S2.insertp.rp",
  3401. "llvm.hexagon.S2.interleave",
  3402. "llvm.hexagon.S2.lfsp",
  3403. "llvm.hexagon.S2.lsl.r.p",
  3404. "llvm.hexagon.S2.lsl.r.p.acc",
  3405. "llvm.hexagon.S2.lsl.r.p.and",
  3406. "llvm.hexagon.S2.lsl.r.p.nac",
  3407. "llvm.hexagon.S2.lsl.r.p.or",
  3408. "llvm.hexagon.S2.lsl.r.p.xor",
  3409. "llvm.hexagon.S2.lsl.r.r",
  3410. "llvm.hexagon.S2.lsl.r.r.acc",
  3411. "llvm.hexagon.S2.lsl.r.r.and",
  3412. "llvm.hexagon.S2.lsl.r.r.nac",
  3413. "llvm.hexagon.S2.lsl.r.r.or",
  3414. "llvm.hexagon.S2.lsl.r.vh",
  3415. "llvm.hexagon.S2.lsl.r.vw",
  3416. "llvm.hexagon.S2.lsr.i.p",
  3417. "llvm.hexagon.S2.lsr.i.p.acc",
  3418. "llvm.hexagon.S2.lsr.i.p.and",
  3419. "llvm.hexagon.S2.lsr.i.p.nac",
  3420. "llvm.hexagon.S2.lsr.i.p.or",
  3421. "llvm.hexagon.S2.lsr.i.p.xacc",
  3422. "llvm.hexagon.S2.lsr.i.r",
  3423. "llvm.hexagon.S2.lsr.i.r.acc",
  3424. "llvm.hexagon.S2.lsr.i.r.and",
  3425. "llvm.hexagon.S2.lsr.i.r.nac",
  3426. "llvm.hexagon.S2.lsr.i.r.or",
  3427. "llvm.hexagon.S2.lsr.i.r.xacc",
  3428. "llvm.hexagon.S2.lsr.i.vh",
  3429. "llvm.hexagon.S2.lsr.i.vw",
  3430. "llvm.hexagon.S2.lsr.r.p",
  3431. "llvm.hexagon.S2.lsr.r.p.acc",
  3432. "llvm.hexagon.S2.lsr.r.p.and",
  3433. "llvm.hexagon.S2.lsr.r.p.nac",
  3434. "llvm.hexagon.S2.lsr.r.p.or",
  3435. "llvm.hexagon.S2.lsr.r.p.xor",
  3436. "llvm.hexagon.S2.lsr.r.r",
  3437. "llvm.hexagon.S2.lsr.r.r.acc",
  3438. "llvm.hexagon.S2.lsr.r.r.and",
  3439. "llvm.hexagon.S2.lsr.r.r.nac",
  3440. "llvm.hexagon.S2.lsr.r.r.or",
  3441. "llvm.hexagon.S2.lsr.r.vh",
  3442. "llvm.hexagon.S2.lsr.r.vw",
  3443. "llvm.hexagon.S2.packhl",
  3444. "llvm.hexagon.S2.parityp",
  3445. "llvm.hexagon.S2.setbit.i",
  3446. "llvm.hexagon.S2.setbit.r",
  3447. "llvm.hexagon.S2.shuffeb",
  3448. "llvm.hexagon.S2.shuffeh",
  3449. "llvm.hexagon.S2.shuffob",
  3450. "llvm.hexagon.S2.shuffoh",
  3451. "llvm.hexagon.S2.svsathb",
  3452. "llvm.hexagon.S2.svsathub",
  3453. "llvm.hexagon.S2.tableidxb.goodsyntax",
  3454. "llvm.hexagon.S2.tableidxd.goodsyntax",
  3455. "llvm.hexagon.S2.tableidxh.goodsyntax",
  3456. "llvm.hexagon.S2.tableidxw.goodsyntax",
  3457. "llvm.hexagon.S2.togglebit.i",
  3458. "llvm.hexagon.S2.togglebit.r",
  3459. "llvm.hexagon.S2.tstbit.i",
  3460. "llvm.hexagon.S2.tstbit.r",
  3461. "llvm.hexagon.S2.valignib",
  3462. "llvm.hexagon.S2.valignrb",
  3463. "llvm.hexagon.S2.vcnegh",
  3464. "llvm.hexagon.S2.vcrotate",
  3465. "llvm.hexagon.S2.vrcnegh",
  3466. "llvm.hexagon.S2.vrndpackwh",
  3467. "llvm.hexagon.S2.vrndpackwhs",
  3468. "llvm.hexagon.S2.vsathb",
  3469. "llvm.hexagon.S2.vsathb.nopack",
  3470. "llvm.hexagon.S2.vsathub",
  3471. "llvm.hexagon.S2.vsathub.nopack",
  3472. "llvm.hexagon.S2.vsatwh",
  3473. "llvm.hexagon.S2.vsatwh.nopack",
  3474. "llvm.hexagon.S2.vsatwuh",
  3475. "llvm.hexagon.S2.vsatwuh.nopack",
  3476. "llvm.hexagon.S2.vsplatrb",
  3477. "llvm.hexagon.S2.vsplatrh",
  3478. "llvm.hexagon.S2.vspliceib",
  3479. "llvm.hexagon.S2.vsplicerb",
  3480. "llvm.hexagon.S2.vsxtbh",
  3481. "llvm.hexagon.S2.vsxthw",
  3482. "llvm.hexagon.S2.vtrunehb",
  3483. "llvm.hexagon.S2.vtrunewh",
  3484. "llvm.hexagon.S2.vtrunohb",
  3485. "llvm.hexagon.S2.vtrunowh",
  3486. "llvm.hexagon.S2.vzxtbh",
  3487. "llvm.hexagon.S2.vzxthw",
  3488. "llvm.hexagon.S4.addaddi",
  3489. "llvm.hexagon.S4.addi.asl.ri",
  3490. "llvm.hexagon.S4.addi.lsr.ri",
  3491. "llvm.hexagon.S4.andi.asl.ri",
  3492. "llvm.hexagon.S4.andi.lsr.ri",
  3493. "llvm.hexagon.S4.clbaddi",
  3494. "llvm.hexagon.S4.clbpaddi",
  3495. "llvm.hexagon.S4.clbpnorm",
  3496. "llvm.hexagon.S4.extract",
  3497. "llvm.hexagon.S4.extract.rp",
  3498. "llvm.hexagon.S4.extractp",
  3499. "llvm.hexagon.S4.extractp.rp",
  3500. "llvm.hexagon.S4.lsli",
  3501. "llvm.hexagon.S4.ntstbit.i",
  3502. "llvm.hexagon.S4.ntstbit.r",
  3503. "llvm.hexagon.S4.or.andi",
  3504. "llvm.hexagon.S4.or.andix",
  3505. "llvm.hexagon.S4.or.ori",
  3506. "llvm.hexagon.S4.ori.asl.ri",
  3507. "llvm.hexagon.S4.ori.lsr.ri",
  3508. "llvm.hexagon.S4.parity",
  3509. "llvm.hexagon.S4.subaddi",
  3510. "llvm.hexagon.S4.subi.asl.ri",
  3511. "llvm.hexagon.S4.subi.lsr.ri",
  3512. "llvm.hexagon.S4.vrcrotate",
  3513. "llvm.hexagon.S4.vrcrotate.acc",
  3514. "llvm.hexagon.S4.vxaddsubh",
  3515. "llvm.hexagon.S4.vxaddsubhr",
  3516. "llvm.hexagon.S4.vxaddsubw",
  3517. "llvm.hexagon.S4.vxsubaddh",
  3518. "llvm.hexagon.S4.vxsubaddhr",
  3519. "llvm.hexagon.S4.vxsubaddw",
  3520. "llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax",
  3521. "llvm.hexagon.S5.asrhub.sat",
  3522. "llvm.hexagon.S5.popcountp",
  3523. "llvm.hexagon.S5.vasrhrnd.goodsyntax",
  3524. "llvm.hexagon.SI.to.SXTHI.asrh",
  3525. "llvm.hexagon.circ.ldd",
  3526. "llvm.init.trampoline",
  3527. "llvm.invariant.end",
  3528. "llvm.invariant.start",
  3529. "llvm.lifetime.end",
  3530. "llvm.lifetime.start",
  3531. "llvm.log",
  3532. "llvm.log10",
  3533. "llvm.log2",
  3534. "llvm.longjmp",
  3535. "llvm.memcpy",
  3536. "llvm.memmove",
  3537. "llvm.memset",
  3538. "llvm.mips.absq.s.ph",
  3539. "llvm.mips.absq.s.qb",
  3540. "llvm.mips.absq.s.w",
  3541. "llvm.mips.addq.ph",
  3542. "llvm.mips.addq.s.ph",
  3543. "llvm.mips.addq.s.w",
  3544. "llvm.mips.addqh.ph",
  3545. "llvm.mips.addqh.r.ph",
  3546. "llvm.mips.addqh.r.w",
  3547. "llvm.mips.addqh.w",
  3548. "llvm.mips.addsc",
  3549. "llvm.mips.addu.ph",
  3550. "llvm.mips.addu.qb",
  3551. "llvm.mips.addu.s.ph",
  3552. "llvm.mips.addu.s.qb",
  3553. "llvm.mips.adduh.qb",
  3554. "llvm.mips.adduh.r.qb",
  3555. "llvm.mips.addwc",
  3556. "llvm.mips.append",
  3557. "llvm.mips.balign",
  3558. "llvm.mips.bitrev",
  3559. "llvm.mips.bposge32",
  3560. "llvm.mips.cmp.eq.ph",
  3561. "llvm.mips.cmp.le.ph",
  3562. "llvm.mips.cmp.lt.ph",
  3563. "llvm.mips.cmpgdu.eq.qb",
  3564. "llvm.mips.cmpgdu.le.qb",
  3565. "llvm.mips.cmpgdu.lt.qb",
  3566. "llvm.mips.cmpgu.eq.qb",
  3567. "llvm.mips.cmpgu.le.qb",
  3568. "llvm.mips.cmpgu.lt.qb",
  3569. "llvm.mips.cmpu.eq.qb",
  3570. "llvm.mips.cmpu.le.qb",
  3571. "llvm.mips.cmpu.lt.qb",
  3572. "llvm.mips.dpa.w.ph",
  3573. "llvm.mips.dpaq.s.w.ph",
  3574. "llvm.mips.dpaq.sa.l.w",
  3575. "llvm.mips.dpaqx.s.w.ph",
  3576. "llvm.mips.dpaqx.sa.w.ph",
  3577. "llvm.mips.dpau.h.qbl",
  3578. "llvm.mips.dpau.h.qbr",
  3579. "llvm.mips.dpax.w.ph",
  3580. "llvm.mips.dps.w.ph",
  3581. "llvm.mips.dpsq.s.w.ph",
  3582. "llvm.mips.dpsq.sa.l.w",
  3583. "llvm.mips.dpsqx.s.w.ph",
  3584. "llvm.mips.dpsqx.sa.w.ph",
  3585. "llvm.mips.dpsu.h.qbl",
  3586. "llvm.mips.dpsu.h.qbr",
  3587. "llvm.mips.dpsx.w.ph",
  3588. "llvm.mips.extp",
  3589. "llvm.mips.extpdp",
  3590. "llvm.mips.extr.r.w",
  3591. "llvm.mips.extr.rs.w",
  3592. "llvm.mips.extr.s.h",
  3593. "llvm.mips.extr.w",
  3594. "llvm.mips.insv",
  3595. "llvm.mips.lbux",
  3596. "llvm.mips.lhx",
  3597. "llvm.mips.lwx",
  3598. "llvm.mips.madd",
  3599. "llvm.mips.maddu",
  3600. "llvm.mips.maq.s.w.phl",
  3601. "llvm.mips.maq.s.w.phr",
  3602. "llvm.mips.maq.sa.w.phl",
  3603. "llvm.mips.maq.sa.w.phr",
  3604. "llvm.mips.modsub",
  3605. "llvm.mips.msub",
  3606. "llvm.mips.msubu",
  3607. "llvm.mips.mthlip",
  3608. "llvm.mips.mul.ph",
  3609. "llvm.mips.mul.s.ph",
  3610. "llvm.mips.muleq.s.w.phl",
  3611. "llvm.mips.muleq.s.w.phr",
  3612. "llvm.mips.muleu.s.ph.qbl",
  3613. "llvm.mips.muleu.s.ph.qbr",
  3614. "llvm.mips.mulq.rs.ph",
  3615. "llvm.mips.mulq.rs.w",
  3616. "llvm.mips.mulq.s.ph",
  3617. "llvm.mips.mulq.s.w",
  3618. "llvm.mips.mulsa.w.ph",
  3619. "llvm.mips.mulsaq.s.w.ph",
  3620. "llvm.mips.mult",
  3621. "llvm.mips.multu",
  3622. "llvm.mips.packrl.ph",
  3623. "llvm.mips.pick.ph",
  3624. "llvm.mips.pick.qb",
  3625. "llvm.mips.preceq.w.phl",
  3626. "llvm.mips.preceq.w.phr",
  3627. "llvm.mips.precequ.ph.qbl",
  3628. "llvm.mips.precequ.ph.qbla",
  3629. "llvm.mips.precequ.ph.qbr",
  3630. "llvm.mips.precequ.ph.qbra",
  3631. "llvm.mips.preceu.ph.qbl",
  3632. "llvm.mips.preceu.ph.qbla",
  3633. "llvm.mips.preceu.ph.qbr",
  3634. "llvm.mips.preceu.ph.qbra",
  3635. "llvm.mips.precr.qb.ph",
  3636. "llvm.mips.precr.sra.ph.w",
  3637. "llvm.mips.precr.sra.r.ph.w",
  3638. "llvm.mips.precrq.ph.w",
  3639. "llvm.mips.precrq.qb.ph",
  3640. "llvm.mips.precrq.rs.ph.w",
  3641. "llvm.mips.precrqu.s.qb.ph",
  3642. "llvm.mips.prepend",
  3643. "llvm.mips.raddu.w.qb",
  3644. "llvm.mips.rddsp",
  3645. "llvm.mips.repl.ph",
  3646. "llvm.mips.repl.qb",
  3647. "llvm.mips.shilo",
  3648. "llvm.mips.shll.ph",
  3649. "llvm.mips.shll.qb",
  3650. "llvm.mips.shll.s.ph",
  3651. "llvm.mips.shll.s.w",
  3652. "llvm.mips.shra.ph",
  3653. "llvm.mips.shra.qb",
  3654. "llvm.mips.shra.r.ph",
  3655. "llvm.mips.shra.r.qb",
  3656. "llvm.mips.shra.r.w",
  3657. "llvm.mips.shrl.ph",
  3658. "llvm.mips.shrl.qb",
  3659. "llvm.mips.subq.ph",
  3660. "llvm.mips.subq.s.ph",
  3661. "llvm.mips.subq.s.w",
  3662. "llvm.mips.subqh.ph",
  3663. "llvm.mips.subqh.r.ph",
  3664. "llvm.mips.subqh.r.w",
  3665. "llvm.mips.subqh.w",
  3666. "llvm.mips.subu.ph",
  3667. "llvm.mips.subu.qb",
  3668. "llvm.mips.subu.s.ph",
  3669. "llvm.mips.subu.s.qb",
  3670. "llvm.mips.subuh.qb",
  3671. "llvm.mips.subuh.r.qb",
  3672. "llvm.mips.wrdsp",
  3673. "llvm.nvvm.abs.i",
  3674. "llvm.nvvm.abs.ll",
  3675. "llvm.nvvm.add.rm.d",
  3676. "llvm.nvvm.add.rm.f",
  3677. "llvm.nvvm.add.rm.ftz.f",
  3678. "llvm.nvvm.add.rn.d",
  3679. "llvm.nvvm.add.rn.f",
  3680. "llvm.nvvm.add.rn.ftz.f",
  3681. "llvm.nvvm.add.rp.d",
  3682. "llvm.nvvm.add.rp.f",
  3683. "llvm.nvvm.add.rp.ftz.f",
  3684. "llvm.nvvm.add.rz.d",
  3685. "llvm.nvvm.add.rz.f",
  3686. "llvm.nvvm.add.rz.ftz.f",
  3687. "llvm.nvvm.atomic.load.add.f32",
  3688. "llvm.nvvm.atomic.load.dec.32",
  3689. "llvm.nvvm.atomic.load.inc.32",
  3690. "llvm.nvvm.barrier0",
  3691. "llvm.nvvm.barrier0.and",
  3692. "llvm.nvvm.barrier0.or",
  3693. "llvm.nvvm.barrier0.popc",
  3694. "llvm.nvvm.bitcast.d2ll",
  3695. "llvm.nvvm.bitcast.f2i",
  3696. "llvm.nvvm.bitcast.i2f",
  3697. "llvm.nvvm.bitcast.ll2d",
  3698. "llvm.nvvm.brev32",
  3699. "llvm.nvvm.brev64",
  3700. "llvm.nvvm.ceil.d",
  3701. "llvm.nvvm.ceil.f",
  3702. "llvm.nvvm.ceil.ftz.f",
  3703. "llvm.nvvm.clz.i",
  3704. "llvm.nvvm.clz.ll",
  3705. "llvm.nvvm.compiler.error",
  3706. "llvm.nvvm.compiler.warn",
  3707. "llvm.nvvm.cos.approx.f",
  3708. "llvm.nvvm.cos.approx.ftz.f",
  3709. "llvm.nvvm.d2f.rm",
  3710. "llvm.nvvm.d2f.rm.ftz",
  3711. "llvm.nvvm.d2f.rn",
  3712. "llvm.nvvm.d2f.rn.ftz",
  3713. "llvm.nvvm.d2f.rp",
  3714. "llvm.nvvm.d2f.rp.ftz",
  3715. "llvm.nvvm.d2f.rz",
  3716. "llvm.nvvm.d2f.rz.ftz",
  3717. "llvm.nvvm.d2i.hi",
  3718. "llvm.nvvm.d2i.lo",
  3719. "llvm.nvvm.d2i.rm",
  3720. "llvm.nvvm.d2i.rn",
  3721. "llvm.nvvm.d2i.rp",
  3722. "llvm.nvvm.d2i.rz",
  3723. "llvm.nvvm.d2ll.rm",
  3724. "llvm.nvvm.d2ll.rn",
  3725. "llvm.nvvm.d2ll.rp",
  3726. "llvm.nvvm.d2ll.rz",
  3727. "llvm.nvvm.d2ui.rm",
  3728. "llvm.nvvm.d2ui.rn",
  3729. "llvm.nvvm.d2ui.rp",
  3730. "llvm.nvvm.d2ui.rz",
  3731. "llvm.nvvm.d2ull.rm",
  3732. "llvm.nvvm.d2ull.rn",
  3733. "llvm.nvvm.d2ull.rp",
  3734. "llvm.nvvm.d2ull.rz",
  3735. "llvm.nvvm.div.approx.f",
  3736. "llvm.nvvm.div.approx.ftz.f",
  3737. "llvm.nvvm.div.rm.d",
  3738. "llvm.nvvm.div.rm.f",
  3739. "llvm.nvvm.div.rm.ftz.f",
  3740. "llvm.nvvm.div.rn.d",
  3741. "llvm.nvvm.div.rn.f",
  3742. "llvm.nvvm.div.rn.ftz.f",
  3743. "llvm.nvvm.div.rp.d",
  3744. "llvm.nvvm.div.rp.f",
  3745. "llvm.nvvm.div.rp.ftz.f",
  3746. "llvm.nvvm.div.rz.d",
  3747. "llvm.nvvm.div.rz.f",
  3748. "llvm.nvvm.div.rz.ftz.f",
  3749. "llvm.nvvm.ex2.approx.d",
  3750. "llvm.nvvm.ex2.approx.f",
  3751. "llvm.nvvm.ex2.approx.ftz.f",
  3752. "llvm.nvvm.f2h.rn",
  3753. "llvm.nvvm.f2h.rn.ftz",
  3754. "llvm.nvvm.f2i.rm",
  3755. "llvm.nvvm.f2i.rm.ftz",
  3756. "llvm.nvvm.f2i.rn",
  3757. "llvm.nvvm.f2i.rn.ftz",
  3758. "llvm.nvvm.f2i.rp",
  3759. "llvm.nvvm.f2i.rp.ftz",
  3760. "llvm.nvvm.f2i.rz",
  3761. "llvm.nvvm.f2i.rz.ftz",
  3762. "llvm.nvvm.f2ll.rm",
  3763. "llvm.nvvm.f2ll.rm.ftz",
  3764. "llvm.nvvm.f2ll.rn",
  3765. "llvm.nvvm.f2ll.rn.ftz",
  3766. "llvm.nvvm.f2ll.rp",
  3767. "llvm.nvvm.f2ll.rp.ftz",
  3768. "llvm.nvvm.f2ll.rz",
  3769. "llvm.nvvm.f2ll.rz.ftz",
  3770. "llvm.nvvm.f2ui.rm",
  3771. "llvm.nvvm.f2ui.rm.ftz",
  3772. "llvm.nvvm.f2ui.rn",
  3773. "llvm.nvvm.f2ui.rn.ftz",
  3774. "llvm.nvvm.f2ui.rp",
  3775. "llvm.nvvm.f2ui.rp.ftz",
  3776. "llvm.nvvm.f2ui.rz",
  3777. "llvm.nvvm.f2ui.rz.ftz",
  3778. "llvm.nvvm.f2ull.rm",
  3779. "llvm.nvvm.f2ull.rm.ftz",
  3780. "llvm.nvvm.f2ull.rn",
  3781. "llvm.nvvm.f2ull.rn.ftz",
  3782. "llvm.nvvm.f2ull.rp",
  3783. "llvm.nvvm.f2ull.rp.ftz",
  3784. "llvm.nvvm.f2ull.rz",
  3785. "llvm.nvvm.f2ull.rz.ftz",
  3786. "llvm.nvvm.fabs.d",
  3787. "llvm.nvvm.fabs.f",
  3788. "llvm.nvvm.fabs.ftz.f",
  3789. "llvm.nvvm.floor.d",
  3790. "llvm.nvvm.floor.f",
  3791. "llvm.nvvm.floor.ftz.f",
  3792. "llvm.nvvm.fma.rm.d",
  3793. "llvm.nvvm.fma.rm.f",
  3794. "llvm.nvvm.fma.rm.ftz.f",
  3795. "llvm.nvvm.fma.rn.d",
  3796. "llvm.nvvm.fma.rn.f",
  3797. "llvm.nvvm.fma.rn.ftz.f",
  3798. "llvm.nvvm.fma.rp.d",
  3799. "llvm.nvvm.fma.rp.f",
  3800. "llvm.nvvm.fma.rp.ftz.f",
  3801. "llvm.nvvm.fma.rz.d",
  3802. "llvm.nvvm.fma.rz.f",
  3803. "llvm.nvvm.fma.rz.ftz.f",
  3804. "llvm.nvvm.fmax.d",
  3805. "llvm.nvvm.fmax.f",
  3806. "llvm.nvvm.fmax.ftz.f",
  3807. "llvm.nvvm.fmin.d",
  3808. "llvm.nvvm.fmin.f",
  3809. "llvm.nvvm.fmin.ftz.f",
  3810. "llvm.nvvm.h2f",
  3811. "llvm.nvvm.i2d.rm",
  3812. "llvm.nvvm.i2d.rn",
  3813. "llvm.nvvm.i2d.rp",
  3814. "llvm.nvvm.i2d.rz",
  3815. "llvm.nvvm.i2f.rm",
  3816. "llvm.nvvm.i2f.rn",
  3817. "llvm.nvvm.i2f.rp",
  3818. "llvm.nvvm.i2f.rz",
  3819. "llvm.nvvm.ldu.global.f",
  3820. "llvm.nvvm.ldu.global.i",
  3821. "llvm.nvvm.ldu.global.p",
  3822. "llvm.nvvm.lg2.approx.d",
  3823. "llvm.nvvm.lg2.approx.f",
  3824. "llvm.nvvm.lg2.approx.ftz.f",
  3825. "llvm.nvvm.ll2d.rm",
  3826. "llvm.nvvm.ll2d.rn",
  3827. "llvm.nvvm.ll2d.rp",
  3828. "llvm.nvvm.ll2d.rz",
  3829. "llvm.nvvm.ll2f.rm",
  3830. "llvm.nvvm.ll2f.rn",
  3831. "llvm.nvvm.ll2f.rp",
  3832. "llvm.nvvm.ll2f.rz",
  3833. "llvm.nvvm.lohi.i2d",
  3834. "llvm.nvvm.max.i",
  3835. "llvm.nvvm.max.ll",
  3836. "llvm.nvvm.max.ui",
  3837. "llvm.nvvm.max.ull",
  3838. "llvm.nvvm.membar.cta",
  3839. "llvm.nvvm.membar.gl",
  3840. "llvm.nvvm.membar.sys",
  3841. "llvm.nvvm.min.i",
  3842. "llvm.nvvm.min.ll",
  3843. "llvm.nvvm.min.ui",
  3844. "llvm.nvvm.min.ull",
  3845. "llvm.nvvm.move.double",
  3846. "llvm.nvvm.move.float",
  3847. "llvm.nvvm.move.i16",
  3848. "llvm.nvvm.move.i32",
  3849. "llvm.nvvm.move.i64",
  3850. "llvm.nvvm.move.i8",
  3851. "llvm.nvvm.move.ptr",
  3852. "llvm.nvvm.mul24.i",
  3853. "llvm.nvvm.mul24.ui",
  3854. "llvm.nvvm.mul.rm.d",
  3855. "llvm.nvvm.mul.rm.f",
  3856. "llvm.nvvm.mul.rm.ftz.f",
  3857. "llvm.nvvm.mul.rn.d",
  3858. "llvm.nvvm.mul.rn.f",
  3859. "llvm.nvvm.mul.rn.ftz.f",
  3860. "llvm.nvvm.mul.rp.d",
  3861. "llvm.nvvm.mul.rp.f",
  3862. "llvm.nvvm.mul.rp.ftz.f",
  3863. "llvm.nvvm.mul.rz.d",
  3864. "llvm.nvvm.mul.rz.f",
  3865. "llvm.nvvm.mul.rz.ftz.f",
  3866. "llvm.nvvm.mulhi.i",
  3867. "llvm.nvvm.mulhi.ll",
  3868. "llvm.nvvm.mulhi.ui",
  3869. "llvm.nvvm.mulhi.ull",
  3870. "llvm.nvvm.popc.i",
  3871. "llvm.nvvm.popc.ll",
  3872. "llvm.nvvm.prmt",
  3873. "llvm.nvvm.ptr.constant.to.gen",
  3874. "llvm.nvvm.ptr.gen.to.constant",
  3875. "llvm.nvvm.ptr.gen.to.global",
  3876. "llvm.nvvm.ptr.gen.to.local",
  3877. "llvm.nvvm.ptr.gen.to.param",
  3878. "llvm.nvvm.ptr.gen.to.shared",
  3879. "llvm.nvvm.ptr.global.to.gen",
  3880. "llvm.nvvm.ptr.local.to.gen",
  3881. "llvm.nvvm.ptr.shared.to.gen",
  3882. "llvm.nvvm.rcp.approx.ftz.d",
  3883. "llvm.nvvm.rcp.rm.d",
  3884. "llvm.nvvm.rcp.rm.f",
  3885. "llvm.nvvm.rcp.rm.ftz.f",
  3886. "llvm.nvvm.rcp.rn.d",
  3887. "llvm.nvvm.rcp.rn.f",
  3888. "llvm.nvvm.rcp.rn.ftz.f",
  3889. "llvm.nvvm.rcp.rp.d",
  3890. "llvm.nvvm.rcp.rp.f",
  3891. "llvm.nvvm.rcp.rp.ftz.f",
  3892. "llvm.nvvm.rcp.rz.d",
  3893. "llvm.nvvm.rcp.rz.f",
  3894. "llvm.nvvm.rcp.rz.ftz.f",
  3895. "llvm.nvvm.read.ptx.sreg.ctaid.x",
  3896. "llvm.nvvm.read.ptx.sreg.ctaid.y",
  3897. "llvm.nvvm.read.ptx.sreg.ctaid.z",
  3898. "llvm.nvvm.read.ptx.sreg.nctaid.x",
  3899. "llvm.nvvm.read.ptx.sreg.nctaid.y",
  3900. "llvm.nvvm.read.ptx.sreg.nctaid.z",
  3901. "llvm.nvvm.read.ptx.sreg.ntid.x",
  3902. "llvm.nvvm.read.ptx.sreg.ntid.y",
  3903. "llvm.nvvm.read.ptx.sreg.ntid.z",
  3904. "llvm.nvvm.read.ptx.sreg.tid.x",
  3905. "llvm.nvvm.read.ptx.sreg.tid.y",
  3906. "llvm.nvvm.read.ptx.sreg.tid.z",
  3907. "llvm.nvvm.read.ptx.sreg.warpsize",
  3908. "llvm.nvvm.round.d",
  3909. "llvm.nvvm.round.f",
  3910. "llvm.nvvm.round.ftz.f",
  3911. "llvm.nvvm.rsqrt.approx.d",
  3912. "llvm.nvvm.rsqrt.approx.f",
  3913. "llvm.nvvm.rsqrt.approx.ftz.f",
  3914. "llvm.nvvm.sad.i",
  3915. "llvm.nvvm.sad.ui",
  3916. "llvm.nvvm.saturate.d",
  3917. "llvm.nvvm.saturate.f",
  3918. "llvm.nvvm.saturate.ftz.f",
  3919. "llvm.nvvm.sin.approx.f",
  3920. "llvm.nvvm.sin.approx.ftz.f",
  3921. "llvm.nvvm.sqrt.approx.f",
  3922. "llvm.nvvm.sqrt.approx.ftz.f",
  3923. "llvm.nvvm.sqrt.rm.d",
  3924. "llvm.nvvm.sqrt.rm.f",
  3925. "llvm.nvvm.sqrt.rm.ftz.f",
  3926. "llvm.nvvm.sqrt.rn.d",
  3927. "llvm.nvvm.sqrt.rn.f",
  3928. "llvm.nvvm.sqrt.rn.ftz.f",
  3929. "llvm.nvvm.sqrt.rp.d",
  3930. "llvm.nvvm.sqrt.rp.f",
  3931. "llvm.nvvm.sqrt.rp.ftz.f",
  3932. "llvm.nvvm.sqrt.rz.d",
  3933. "llvm.nvvm.sqrt.rz.f",
  3934. "llvm.nvvm.sqrt.rz.ftz.f",
  3935. "llvm.nvvm.trunc.d",
  3936. "llvm.nvvm.trunc.f",
  3937. "llvm.nvvm.trunc.ftz.f",
  3938. "llvm.nvvm.ui2d.rm",
  3939. "llvm.nvvm.ui2d.rn",
  3940. "llvm.nvvm.ui2d.rp",
  3941. "llvm.nvvm.ui2d.rz",
  3942. "llvm.nvvm.ui2f.rm",
  3943. "llvm.nvvm.ui2f.rn",
  3944. "llvm.nvvm.ui2f.rp",
  3945. "llvm.nvvm.ui2f.rz",
  3946. "llvm.nvvm.ull2d.rm",
  3947. "llvm.nvvm.ull2d.rn",
  3948. "llvm.nvvm.ull2d.rp",
  3949. "llvm.nvvm.ull2d.rz",
  3950. "llvm.nvvm.ull2f.rm",
  3951. "llvm.nvvm.ull2f.rn",
  3952. "llvm.nvvm.ull2f.rp",
  3953. "llvm.nvvm.ull2f.rz",
  3954. "llvm.objectsize",
  3955. "llvm.pcmarker",
  3956. "llvm.pow",
  3957. "llvm.powi",
  3958. "llvm.ppc.altivec.dss",
  3959. "llvm.ppc.altivec.dssall",
  3960. "llvm.ppc.altivec.dst",
  3961. "llvm.ppc.altivec.dstst",
  3962. "llvm.ppc.altivec.dststt",
  3963. "llvm.ppc.altivec.dstt",
  3964. "llvm.ppc.altivec.lvebx",
  3965. "llvm.ppc.altivec.lvehx",
  3966. "llvm.ppc.altivec.lvewx",
  3967. "llvm.ppc.altivec.lvsl",
  3968. "llvm.ppc.altivec.lvsr",
  3969. "llvm.ppc.altivec.lvx",
  3970. "llvm.ppc.altivec.lvxl",
  3971. "llvm.ppc.altivec.mfvscr",
  3972. "llvm.ppc.altivec.mtvscr",
  3973. "llvm.ppc.altivec.stvebx",
  3974. "llvm.ppc.altivec.stvehx",
  3975. "llvm.ppc.altivec.stvewx",
  3976. "llvm.ppc.altivec.stvx",
  3977. "llvm.ppc.altivec.stvxl",
  3978. "llvm.ppc.altivec.vaddcuw",
  3979. "llvm.ppc.altivec.vaddsbs",
  3980. "llvm.ppc.altivec.vaddshs",
  3981. "llvm.ppc.altivec.vaddsws",
  3982. "llvm.ppc.altivec.vaddubs",
  3983. "llvm.ppc.altivec.vadduhs",
  3984. "llvm.ppc.altivec.vadduws",
  3985. "llvm.ppc.altivec.vavgsb",
  3986. "llvm.ppc.altivec.vavgsh",
  3987. "llvm.ppc.altivec.vavgsw",
  3988. "llvm.ppc.altivec.vavgub",
  3989. "llvm.ppc.altivec.vavguh",
  3990. "llvm.ppc.altivec.vavguw",
  3991. "llvm.ppc.altivec.vcfsx",
  3992. "llvm.ppc.altivec.vcfux",
  3993. "llvm.ppc.altivec.vcmpbfp",
  3994. "llvm.ppc.altivec.vcmpbfp.p",
  3995. "llvm.ppc.altivec.vcmpeqfp",
  3996. "llvm.ppc.altivec.vcmpeqfp.p",
  3997. "llvm.ppc.altivec.vcmpequb",
  3998. "llvm.ppc.altivec.vcmpequb.p",
  3999. "llvm.ppc.altivec.vcmpequh",
  4000. "llvm.ppc.altivec.vcmpequh.p",
  4001. "llvm.ppc.altivec.vcmpequw",
  4002. "llvm.ppc.altivec.vcmpequw.p",
  4003. "llvm.ppc.altivec.vcmpgefp",
  4004. "llvm.ppc.altivec.vcmpgefp.p",
  4005. "llvm.ppc.altivec.vcmpgtfp",
  4006. "llvm.ppc.altivec.vcmpgtfp.p",
  4007. "llvm.ppc.altivec.vcmpgtsb",
  4008. "llvm.ppc.altivec.vcmpgtsb.p",
  4009. "llvm.ppc.altivec.vcmpgtsh",
  4010. "llvm.ppc.altivec.vcmpgtsh.p",
  4011. "llvm.ppc.altivec.vcmpgtsw",
  4012. "llvm.ppc.altivec.vcmpgtsw.p",
  4013. "llvm.ppc.altivec.vcmpgtub",
  4014. "llvm.ppc.altivec.vcmpgtub.p",
  4015. "llvm.ppc.altivec.vcmpgtuh",
  4016. "llvm.ppc.altivec.vcmpgtuh.p",
  4017. "llvm.ppc.altivec.vcmpgtuw",
  4018. "llvm.ppc.altivec.vcmpgtuw.p",
  4019. "llvm.ppc.altivec.vctsxs",
  4020. "llvm.ppc.altivec.vctuxs",
  4021. "llvm.ppc.altivec.vexptefp",
  4022. "llvm.ppc.altivec.vlogefp",
  4023. "llvm.ppc.altivec.vmaddfp",
  4024. "llvm.ppc.altivec.vmaxfp",
  4025. "llvm.ppc.altivec.vmaxsb",
  4026. "llvm.ppc.altivec.vmaxsh",
  4027. "llvm.ppc.altivec.vmaxsw",
  4028. "llvm.ppc.altivec.vmaxub",
  4029. "llvm.ppc.altivec.vmaxuh",
  4030. "llvm.ppc.altivec.vmaxuw",
  4031. "llvm.ppc.altivec.vmhaddshs",
  4032. "llvm.ppc.altivec.vmhraddshs",
  4033. "llvm.ppc.altivec.vminfp",
  4034. "llvm.ppc.altivec.vminsb",
  4035. "llvm.ppc.altivec.vminsh",
  4036. "llvm.ppc.altivec.vminsw",
  4037. "llvm.ppc.altivec.vminub",
  4038. "llvm.ppc.altivec.vminuh",
  4039. "llvm.ppc.altivec.vminuw",
  4040. "llvm.ppc.altivec.vmladduhm",
  4041. "llvm.ppc.altivec.vmsummbm",
  4042. "llvm.ppc.altivec.vmsumshm",
  4043. "llvm.ppc.altivec.vmsumshs",
  4044. "llvm.ppc.altivec.vmsumubm",
  4045. "llvm.ppc.altivec.vmsumuhm",
  4046. "llvm.ppc.altivec.vmsumuhs",
  4047. "llvm.ppc.altivec.vmulesb",
  4048. "llvm.ppc.altivec.vmulesh",
  4049. "llvm.ppc.altivec.vmuleub",
  4050. "llvm.ppc.altivec.vmuleuh",
  4051. "llvm.ppc.altivec.vmulosb",
  4052. "llvm.ppc.altivec.vmulosh",
  4053. "llvm.ppc.altivec.vmuloub",
  4054. "llvm.ppc.altivec.vmulouh",
  4055. "llvm.ppc.altivec.vnmsubfp",
  4056. "llvm.ppc.altivec.vperm",
  4057. "llvm.ppc.altivec.vpkpx",
  4058. "llvm.ppc.altivec.vpkshss",
  4059. "llvm.ppc.altivec.vpkshus",
  4060. "llvm.ppc.altivec.vpkswss",
  4061. "llvm.ppc.altivec.vpkswus",
  4062. "llvm.ppc.altivec.vpkuhus",
  4063. "llvm.ppc.altivec.vpkuwus",
  4064. "llvm.ppc.altivec.vrefp",
  4065. "llvm.ppc.altivec.vrfim",
  4066. "llvm.ppc.altivec.vrfin",
  4067. "llvm.ppc.altivec.vrfip",
  4068. "llvm.ppc.altivec.vrfiz",
  4069. "llvm.ppc.altivec.vrlb",
  4070. "llvm.ppc.altivec.vrlh",
  4071. "llvm.ppc.altivec.vrlw",
  4072. "llvm.ppc.altivec.vrsqrtefp",
  4073. "llvm.ppc.altivec.vsel",
  4074. "llvm.ppc.altivec.vsl",
  4075. "llvm.ppc.altivec.vslb",
  4076. "llvm.ppc.altivec.vslh",
  4077. "llvm.ppc.altivec.vslo",
  4078. "llvm.ppc.altivec.vslw",
  4079. "llvm.ppc.altivec.vsr",
  4080. "llvm.ppc.altivec.vsrab",
  4081. "llvm.ppc.altivec.vsrah",
  4082. "llvm.ppc.altivec.vsraw",
  4083. "llvm.ppc.altivec.vsrb",
  4084. "llvm.ppc.altivec.vsrh",
  4085. "llvm.ppc.altivec.vsro",
  4086. "llvm.ppc.altivec.vsrw",
  4087. "llvm.ppc.altivec.vsubcuw",
  4088. "llvm.ppc.altivec.vsubsbs",
  4089. "llvm.ppc.altivec.vsubshs",
  4090. "llvm.ppc.altivec.vsubsws",
  4091. "llvm.ppc.altivec.vsububs",
  4092. "llvm.ppc.altivec.vsubuhs",
  4093. "llvm.ppc.altivec.vsubuws",
  4094. "llvm.ppc.altivec.vsum2sws",
  4095. "llvm.ppc.altivec.vsum4sbs",
  4096. "llvm.ppc.altivec.vsum4shs",
  4097. "llvm.ppc.altivec.vsum4ubs",
  4098. "llvm.ppc.altivec.vsumsws",
  4099. "llvm.ppc.altivec.vupkhpx",
  4100. "llvm.ppc.altivec.vupkhsb",
  4101. "llvm.ppc.altivec.vupkhsh",
  4102. "llvm.ppc.altivec.vupklpx",
  4103. "llvm.ppc.altivec.vupklsb",
  4104. "llvm.ppc.altivec.vupklsh",
  4105. "llvm.ppc.dcba",
  4106. "llvm.ppc.dcbf",
  4107. "llvm.ppc.dcbi",
  4108. "llvm.ppc.dcbst",
  4109. "llvm.ppc.dcbt",
  4110. "llvm.ppc.dcbtst",
  4111. "llvm.ppc.dcbz",
  4112. "llvm.ppc.dcbzl",
  4113. "llvm.ppc.sync",
  4114. "llvm.prefetch",
  4115. "llvm.ptr.annotation",
  4116. "llvm.ptx.bar.sync",
  4117. "llvm.ptx.read.clock",
  4118. "llvm.ptx.read.clock64",
  4119. "llvm.ptx.read.ctaid.w",
  4120. "llvm.ptx.read.ctaid.x",
  4121. "llvm.ptx.read.ctaid.y",
  4122. "llvm.ptx.read.ctaid.z",
  4123. "llvm.ptx.read.gridid",
  4124. "llvm.ptx.read.laneid",
  4125. "llvm.ptx.read.lanemask.eq",
  4126. "llvm.ptx.read.lanemask.ge",
  4127. "llvm.ptx.read.lanemask.gt",
  4128. "llvm.ptx.read.lanemask.le",
  4129. "llvm.ptx.read.lanemask.lt",
  4130. "llvm.ptx.read.nctaid.w",
  4131. "llvm.ptx.read.nctaid.x",
  4132. "llvm.ptx.read.nctaid.y",
  4133. "llvm.ptx.read.nctaid.z",
  4134. "llvm.ptx.read.nsmid",
  4135. "llvm.ptx.read.ntid.w",
  4136. "llvm.ptx.read.ntid.x",
  4137. "llvm.ptx.read.ntid.y",
  4138. "llvm.ptx.read.ntid.z",
  4139. "llvm.ptx.read.nwarpid",
  4140. "llvm.ptx.read.pm0",
  4141. "llvm.ptx.read.pm1",
  4142. "llvm.ptx.read.pm2",
  4143. "llvm.ptx.read.pm3",
  4144. "llvm.ptx.read.smid",
  4145. "llvm.ptx.read.tid.w",
  4146. "llvm.ptx.read.tid.x",
  4147. "llvm.ptx.read.tid.y",
  4148. "llvm.ptx.read.tid.z",
  4149. "llvm.ptx.read.warpid",
  4150. "llvm.readcyclecounter",
  4151. "llvm.returnaddress",
  4152. "llvm.sadd.with.overflow",
  4153. "llvm.setjmp",
  4154. "llvm.siglongjmp",
  4155. "llvm.sigsetjmp",
  4156. "llvm.sin",
  4157. "llvm.smul.with.overflow",
  4158. "llvm.spu.si.a",
  4159. "llvm.spu.si.addx",
  4160. "llvm.spu.si.ah",
  4161. "llvm.spu.si.ahi",
  4162. "llvm.spu.si.ai",
  4163. "llvm.spu.si.and",
  4164. "llvm.spu.si.andbi",
  4165. "llvm.spu.si.andc",
  4166. "llvm.spu.si.andhi",
  4167. "llvm.spu.si.andi",
  4168. "llvm.spu.si.bg",
  4169. "llvm.spu.si.bgx",
  4170. "llvm.spu.si.ceq",
  4171. "llvm.spu.si.ceqb",
  4172. "llvm.spu.si.ceqbi",
  4173. "llvm.spu.si.ceqh",
  4174. "llvm.spu.si.ceqhi",
  4175. "llvm.spu.si.ceqi",
  4176. "llvm.spu.si.cg",
  4177. "llvm.spu.si.cgt",
  4178. "llvm.spu.si.cgtb",
  4179. "llvm.spu.si.cgtbi",
  4180. "llvm.spu.si.cgth",
  4181. "llvm.spu.si.cgthi",
  4182. "llvm.spu.si.cgti",
  4183. "llvm.spu.si.cgx",
  4184. "llvm.spu.si.clgt",
  4185. "llvm.spu.si.clgtb",
  4186. "llvm.spu.si.clgtbi",
  4187. "llvm.spu.si.clgth",
  4188. "llvm.spu.si.clgthi",
  4189. "llvm.spu.si.clgti",
  4190. "llvm.spu.si.dfa",
  4191. "llvm.spu.si.dfm",
  4192. "llvm.spu.si.dfma",
  4193. "llvm.spu.si.dfms",
  4194. "llvm.spu.si.dfnma",
  4195. "llvm.spu.si.dfnms",
  4196. "llvm.spu.si.dfs",
  4197. "llvm.spu.si.fa",
  4198. "llvm.spu.si.fceq",
  4199. "llvm.spu.si.fcgt",
  4200. "llvm.spu.si.fcmeq",
  4201. "llvm.spu.si.fcmgt",
  4202. "llvm.spu.si.fm",
  4203. "llvm.spu.si.fma",
  4204. "llvm.spu.si.fms",
  4205. "llvm.spu.si.fnms",
  4206. "llvm.spu.si.fs",
  4207. "llvm.spu.si.fsmbi",
  4208. "llvm.spu.si.mpy",
  4209. "llvm.spu.si.mpya",
  4210. "llvm.spu.si.mpyh",
  4211. "llvm.spu.si.mpyhh",
  4212. "llvm.spu.si.mpyhha",
  4213. "llvm.spu.si.mpyhhau",
  4214. "llvm.spu.si.mpyhhu",
  4215. "llvm.spu.si.mpyi",
  4216. "llvm.spu.si.mpys",
  4217. "llvm.spu.si.mpyu",
  4218. "llvm.spu.si.mpyui",
  4219. "llvm.spu.si.nand",
  4220. "llvm.spu.si.nor",
  4221. "llvm.spu.si.or",
  4222. "llvm.spu.si.orbi",
  4223. "llvm.spu.si.orc",
  4224. "llvm.spu.si.orhi",
  4225. "llvm.spu.si.ori",
  4226. "llvm.spu.si.sf",
  4227. "llvm.spu.si.sfh",
  4228. "llvm.spu.si.sfhi",
  4229. "llvm.spu.si.sfi",
  4230. "llvm.spu.si.sfx",
  4231. "llvm.spu.si.shli",
  4232. "llvm.spu.si.shlqbi",
  4233. "llvm.spu.si.shlqbii",
  4234. "llvm.spu.si.shlqby",
  4235. "llvm.spu.si.shlqbyi",
  4236. "llvm.spu.si.xor",
  4237. "llvm.spu.si.xorbi",
  4238. "llvm.spu.si.xorhi",
  4239. "llvm.spu.si.xori",
  4240. "llvm.sqrt",
  4241. "llvm.ssub.with.overflow",
  4242. "llvm.stackprotector",
  4243. "llvm.stackrestore",
  4244. "llvm.stacksave",
  4245. "llvm.trap",
  4246. "llvm.uadd.with.overflow",
  4247. "llvm.umul.with.overflow",
  4248. "llvm.usub.with.overflow",
  4249. "llvm.va_copy",
  4250. "llvm.va_end",
  4251. "llvm.var.annotation",
  4252. "llvm.va_start",
  4253. "llvm.x86.3dnow.pavgusb",
  4254. "llvm.x86.3dnow.pf2id",
  4255. "llvm.x86.3dnow.pfacc",
  4256. "llvm.x86.3dnow.pfadd",
  4257. "llvm.x86.3dnow.pfcmpeq",
  4258. "llvm.x86.3dnow.pfcmpge",
  4259. "llvm.x86.3dnow.pfcmpgt",
  4260. "llvm.x86.3dnow.pfmax",
  4261. "llvm.x86.3dnow.pfmin",
  4262. "llvm.x86.3dnow.pfmul",
  4263. "llvm.x86.3dnow.pfrcp",
  4264. "llvm.x86.3dnow.pfrcpit1",
  4265. "llvm.x86.3dnow.pfrcpit2",
  4266. "llvm.x86.3dnow.pfrsqit1",
  4267. "llvm.x86.3dnow.pfrsqrt",
  4268. "llvm.x86.3dnow.pfsub",
  4269. "llvm.x86.3dnow.pfsubr",
  4270. "llvm.x86.3dnow.pi2fd",
  4271. "llvm.x86.3dnow.pmulhrw",
  4272. "llvm.x86.3dnowa.pf2iw",
  4273. "llvm.x86.3dnowa.pfnacc",
  4274. "llvm.x86.3dnowa.pfpnacc",
  4275. "llvm.x86.3dnowa.pi2fw",
  4276. "llvm.x86.3dnowa.pswapd",
  4277. "llvm.x86.aesni.aesdec",
  4278. "llvm.x86.aesni.aesdeclast",
  4279. "llvm.x86.aesni.aesenc",
  4280. "llvm.x86.aesni.aesenclast",
  4281. "llvm.x86.aesni.aesimc",
  4282. "llvm.x86.aesni.aeskeygenassist",
  4283. "llvm.x86.avx2.gather.d.d",
  4284. "llvm.x86.avx2.gather.d.d.256",
  4285. "llvm.x86.avx2.gather.d.pd",
  4286. "llvm.x86.avx2.gather.d.pd.256",
  4287. "llvm.x86.avx2.gather.d.ps",
  4288. "llvm.x86.avx2.gather.d.ps.256",
  4289. "llvm.x86.avx2.gather.d.q",
  4290. "llvm.x86.avx2.gather.d.q.256",
  4291. "llvm.x86.avx2.gather.q.d",
  4292. "llvm.x86.avx2.gather.q.d.256",
  4293. "llvm.x86.avx2.gather.q.pd",
  4294. "llvm.x86.avx2.gather.q.pd.256",
  4295. "llvm.x86.avx2.gather.q.ps",
  4296. "llvm.x86.avx2.gather.q.ps.256",
  4297. "llvm.x86.avx2.gather.q.q",
  4298. "llvm.x86.avx2.gather.q.q.256",
  4299. "llvm.x86.avx2.maskload.d",
  4300. "llvm.x86.avx2.maskload.d.256",
  4301. "llvm.x86.avx2.maskload.q",
  4302. "llvm.x86.avx2.maskload.q.256",
  4303. "llvm.x86.avx2.maskstore.d",
  4304. "llvm.x86.avx2.maskstore.d.256",
  4305. "llvm.x86.avx2.maskstore.q",
  4306. "llvm.x86.avx2.maskstore.q.256",
  4307. "llvm.x86.avx2.movntdqa",
  4308. "llvm.x86.avx2.mpsadbw",
  4309. "llvm.x86.avx2.pabs.b",
  4310. "llvm.x86.avx2.pabs.d",
  4311. "llvm.x86.avx2.pabs.w",
  4312. "llvm.x86.avx2.packssdw",
  4313. "llvm.x86.avx2.packsswb",
  4314. "llvm.x86.avx2.packusdw",
  4315. "llvm.x86.avx2.packuswb",
  4316. "llvm.x86.avx2.padds.b",
  4317. "llvm.x86.avx2.padds.w",
  4318. "llvm.x86.avx2.paddus.b",
  4319. "llvm.x86.avx2.paddus.w",
  4320. "llvm.x86.avx2.pavg.b",
  4321. "llvm.x86.avx2.pavg.w",
  4322. "llvm.x86.avx2.pblendd.128",
  4323. "llvm.x86.avx2.pblendd.256",
  4324. "llvm.x86.avx2.pblendvb",
  4325. "llvm.x86.avx2.pblendw",
  4326. "llvm.x86.avx2.pbroadcastb.128",
  4327. "llvm.x86.avx2.pbroadcastb.256",
  4328. "llvm.x86.avx2.pbroadcastd.128",
  4329. "llvm.x86.avx2.pbroadcastd.256",
  4330. "llvm.x86.avx2.pbroadcastq.128",
  4331. "llvm.x86.avx2.pbroadcastq.256",
  4332. "llvm.x86.avx2.pbroadcastw.128",
  4333. "llvm.x86.avx2.pbroadcastw.256",
  4334. "llvm.x86.avx2.permd",
  4335. "llvm.x86.avx2.permps",
  4336. "llvm.x86.avx2.phadd.d",
  4337. "llvm.x86.avx2.phadd.sw",
  4338. "llvm.x86.avx2.phadd.w",
  4339. "llvm.x86.avx2.phsub.d",
  4340. "llvm.x86.avx2.phsub.sw",
  4341. "llvm.x86.avx2.phsub.w",
  4342. "llvm.x86.avx2.pmadd.ub.sw",
  4343. "llvm.x86.avx2.pmadd.wd",
  4344. "llvm.x86.avx2.pmaxs.b",
  4345. "llvm.x86.avx2.pmaxs.d",
  4346. "llvm.x86.avx2.pmaxs.w",
  4347. "llvm.x86.avx2.pmaxu.b",
  4348. "llvm.x86.avx2.pmaxu.d",
  4349. "llvm.x86.avx2.pmaxu.w",
  4350. "llvm.x86.avx2.pmins.b",
  4351. "llvm.x86.avx2.pmins.d",
  4352. "llvm.x86.avx2.pmins.w",
  4353. "llvm.x86.avx2.pminu.b",
  4354. "llvm.x86.avx2.pminu.d",
  4355. "llvm.x86.avx2.pminu.w",
  4356. "llvm.x86.avx2.pmovmskb",
  4357. "llvm.x86.avx2.pmovsxbd",
  4358. "llvm.x86.avx2.pmovsxbq",
  4359. "llvm.x86.avx2.pmovsxbw",
  4360. "llvm.x86.avx2.pmovsxdq",
  4361. "llvm.x86.avx2.pmovsxwd",
  4362. "llvm.x86.avx2.pmovsxwq",
  4363. "llvm.x86.avx2.pmovzxbd",
  4364. "llvm.x86.avx2.pmovzxbq",
  4365. "llvm.x86.avx2.pmovzxbw",
  4366. "llvm.x86.avx2.pmovzxdq",
  4367. "llvm.x86.avx2.pmovzxwd",
  4368. "llvm.x86.avx2.pmovzxwq",
  4369. "llvm.x86.avx2.pmul.dq",
  4370. "llvm.x86.avx2.pmul.hr.sw",
  4371. "llvm.x86.avx2.pmulh.w",
  4372. "llvm.x86.avx2.pmulhu.w",
  4373. "llvm.x86.avx2.pmulu.dq",
  4374. "llvm.x86.avx2.psad.bw",
  4375. "llvm.x86.avx2.pshuf.b",
  4376. "llvm.x86.avx2.psign.b",
  4377. "llvm.x86.avx2.psign.d",
  4378. "llvm.x86.avx2.psign.w",
  4379. "llvm.x86.avx2.psll.d",
  4380. "llvm.x86.avx2.psll.dq",
  4381. "llvm.x86.avx2.psll.dq.bs",
  4382. "llvm.x86.avx2.psll.q",
  4383. "llvm.x86.avx2.psll.w",
  4384. "llvm.x86.avx2.pslli.d",
  4385. "llvm.x86.avx2.pslli.q",
  4386. "llvm.x86.avx2.pslli.w",
  4387. "llvm.x86.avx2.psllv.d",
  4388. "llvm.x86.avx2.psllv.d.256",
  4389. "llvm.x86.avx2.psllv.q",
  4390. "llvm.x86.avx2.psllv.q.256",
  4391. "llvm.x86.avx2.psra.d",
  4392. "llvm.x86.avx2.psra.w",
  4393. "llvm.x86.avx2.psrai.d",
  4394. "llvm.x86.avx2.psrai.w",
  4395. "llvm.x86.avx2.psrav.d",
  4396. "llvm.x86.avx2.psrav.d.256",
  4397. "llvm.x86.avx2.psrl.d",
  4398. "llvm.x86.avx2.psrl.dq",
  4399. "llvm.x86.avx2.psrl.dq.bs",
  4400. "llvm.x86.avx2.psrl.q",
  4401. "llvm.x86.avx2.psrl.w",
  4402. "llvm.x86.avx2.psrli.d",
  4403. "llvm.x86.avx2.psrli.q",
  4404. "llvm.x86.avx2.psrli.w",
  4405. "llvm.x86.avx2.psrlv.d",
  4406. "llvm.x86.avx2.psrlv.d.256",
  4407. "llvm.x86.avx2.psrlv.q",
  4408. "llvm.x86.avx2.psrlv.q.256",
  4409. "llvm.x86.avx2.psubs.b",
  4410. "llvm.x86.avx2.psubs.w",
  4411. "llvm.x86.avx2.psubus.b",
  4412. "llvm.x86.avx2.psubus.w",
  4413. "llvm.x86.avx2.vbroadcast.sd.pd.256",
  4414. "llvm.x86.avx2.vbroadcast.ss.ps",
  4415. "llvm.x86.avx2.vbroadcast.ss.ps.256",
  4416. "llvm.x86.avx2.vbroadcasti128",
  4417. "llvm.x86.avx2.vextracti128",
  4418. "llvm.x86.avx2.vinserti128",
  4419. "llvm.x86.avx2.vperm2i128",
  4420. "llvm.x86.avx.addsub.pd.256",
  4421. "llvm.x86.avx.addsub.ps.256",
  4422. "llvm.x86.avx.blend.pd.256",
  4423. "llvm.x86.avx.blend.ps.256",
  4424. "llvm.x86.avx.blendv.pd.256",
  4425. "llvm.x86.avx.blendv.ps.256",
  4426. "llvm.x86.avx.cmp.pd.256",
  4427. "llvm.x86.avx.cmp.ps.256",
  4428. "llvm.x86.avx.cvt.pd2.ps.256",
  4429. "llvm.x86.avx.cvt.pd2dq.256",
  4430. "llvm.x86.avx.cvt.ps2.pd.256",
  4431. "llvm.x86.avx.cvt.ps2dq.256",
  4432. "llvm.x86.avx.cvtdq2.pd.256",
  4433. "llvm.x86.avx.cvtdq2.ps.256",
  4434. "llvm.x86.avx.cvtt.pd2dq.256",
  4435. "llvm.x86.avx.cvtt.ps2dq.256",
  4436. "llvm.x86.avx.dp.ps.256",
  4437. "llvm.x86.avx.hadd.pd.256",
  4438. "llvm.x86.avx.hadd.ps.256",
  4439. "llvm.x86.avx.hsub.pd.256",
  4440. "llvm.x86.avx.hsub.ps.256",
  4441. "llvm.x86.avx.ldu.dq.256",
  4442. "llvm.x86.avx.maskload.pd",
  4443. "llvm.x86.avx.maskload.pd.256",
  4444. "llvm.x86.avx.maskload.ps",
  4445. "llvm.x86.avx.maskload.ps.256",
  4446. "llvm.x86.avx.maskstore.pd",
  4447. "llvm.x86.avx.maskstore.pd.256",
  4448. "llvm.x86.avx.maskstore.ps",
  4449. "llvm.x86.avx.maskstore.ps.256",
  4450. "llvm.x86.avx.max.pd.256",
  4451. "llvm.x86.avx.max.ps.256",
  4452. "llvm.x86.avx.min.pd.256",
  4453. "llvm.x86.avx.min.ps.256",
  4454. "llvm.x86.avx.movmsk.pd.256",
  4455. "llvm.x86.avx.movmsk.ps.256",
  4456. "llvm.x86.avx.ptestc.256",
  4457. "llvm.x86.avx.ptestnzc.256",
  4458. "llvm.x86.avx.ptestz.256",
  4459. "llvm.x86.avx.rcp.ps.256",
  4460. "llvm.x86.avx.round.pd.256",
  4461. "llvm.x86.avx.round.ps.256",
  4462. "llvm.x86.avx.rsqrt.ps.256",
  4463. "llvm.x86.avx.sqrt.pd.256",
  4464. "llvm.x86.avx.sqrt.ps.256",
  4465. "llvm.x86.avx.storeu.dq.256",
  4466. "llvm.x86.avx.storeu.pd.256",
  4467. "llvm.x86.avx.storeu.ps.256",
  4468. "llvm.x86.avx.vbroadcast.sd.256",
  4469. "llvm.x86.avx.vbroadcast.ss",
  4470. "llvm.x86.avx.vbroadcast.ss.256",
  4471. "llvm.x86.avx.vbroadcastf128.pd.256",
  4472. "llvm.x86.avx.vbroadcastf128.ps.256",
  4473. "llvm.x86.avx.vextractf128.pd.256",
  4474. "llvm.x86.avx.vextractf128.ps.256",
  4475. "llvm.x86.avx.vextractf128.si.256",
  4476. "llvm.x86.avx.vinsertf128.pd.256",
  4477. "llvm.x86.avx.vinsertf128.ps.256",
  4478. "llvm.x86.avx.vinsertf128.si.256",
  4479. "llvm.x86.avx.vperm2f128.pd.256",
  4480. "llvm.x86.avx.vperm2f128.ps.256",
  4481. "llvm.x86.avx.vperm2f128.si.256",
  4482. "llvm.x86.avx.vpermilvar.pd",
  4483. "llvm.x86.avx.vpermilvar.pd.256",
  4484. "llvm.x86.avx.vpermilvar.ps",
  4485. "llvm.x86.avx.vpermilvar.ps.256",
  4486. "llvm.x86.avx.vtestc.pd",
  4487. "llvm.x86.avx.vtestc.pd.256",
  4488. "llvm.x86.avx.vtestc.ps",
  4489. "llvm.x86.avx.vtestc.ps.256",
  4490. "llvm.x86.avx.vtestnzc.pd",
  4491. "llvm.x86.avx.vtestnzc.pd.256",
  4492. "llvm.x86.avx.vtestnzc.ps",
  4493. "llvm.x86.avx.vtestnzc.ps.256",
  4494. "llvm.x86.avx.vtestz.pd",
  4495. "llvm.x86.avx.vtestz.pd.256",
  4496. "llvm.x86.avx.vtestz.ps",
  4497. "llvm.x86.avx.vtestz.ps.256",
  4498. "llvm.x86.avx.vzeroall",
  4499. "llvm.x86.avx.vzeroupper",
  4500. "llvm.x86.bmi.bextr.32",
  4501. "llvm.x86.bmi.bextr.64",
  4502. "llvm.x86.bmi.bzhi.32",
  4503. "llvm.x86.bmi.bzhi.64",
  4504. "llvm.x86.bmi.pdep.32",
  4505. "llvm.x86.bmi.pdep.64",
  4506. "llvm.x86.bmi.pext.32",
  4507. "llvm.x86.bmi.pext.64",
  4508. "llvm.x86.fma.vfmadd.pd",
  4509. "llvm.x86.fma.vfmadd.pd.256",
  4510. "llvm.x86.fma.vfmadd.ps",
  4511. "llvm.x86.fma.vfmadd.ps.256",
  4512. "llvm.x86.fma.vfmadd.sd",
  4513. "llvm.x86.fma.vfmadd.ss",
  4514. "llvm.x86.fma.vfmaddsub.pd",
  4515. "llvm.x86.fma.vfmaddsub.pd.256",
  4516. "llvm.x86.fma.vfmaddsub.ps",
  4517. "llvm.x86.fma.vfmaddsub.ps.256",
  4518. "llvm.x86.fma.vfmsub.pd",
  4519. "llvm.x86.fma.vfmsub.pd.256",
  4520. "llvm.x86.fma.vfmsub.ps",
  4521. "llvm.x86.fma.vfmsub.ps.256",
  4522. "llvm.x86.fma.vfmsub.sd",
  4523. "llvm.x86.fma.vfmsub.ss",
  4524. "llvm.x86.fma.vfmsubadd.pd",
  4525. "llvm.x86.fma.vfmsubadd.pd.256",
  4526. "llvm.x86.fma.vfmsubadd.ps",
  4527. "llvm.x86.fma.vfmsubadd.ps.256",
  4528. "llvm.x86.fma.vfnmadd.pd",
  4529. "llvm.x86.fma.vfnmadd.pd.256",
  4530. "llvm.x86.fma.vfnmadd.ps",
  4531. "llvm.x86.fma.vfnmadd.ps.256",
  4532. "llvm.x86.fma.vfnmadd.sd",
  4533. "llvm.x86.fma.vfnmadd.ss",
  4534. "llvm.x86.fma.vfnmsub.pd",
  4535. "llvm.x86.fma.vfnmsub.pd.256",
  4536. "llvm.x86.fma.vfnmsub.ps",
  4537. "llvm.x86.fma.vfnmsub.ps.256",
  4538. "llvm.x86.fma.vfnmsub.sd",
  4539. "llvm.x86.fma.vfnmsub.ss",
  4540. "llvm.x86.int",
  4541. "llvm.x86.mmx.emms",
  4542. "llvm.x86.mmx.femms",
  4543. "llvm.x86.mmx.maskmovq",
  4544. "llvm.x86.mmx.movnt.dq",
  4545. "llvm.x86.mmx.packssdw",
  4546. "llvm.x86.mmx.packsswb",
  4547. "llvm.x86.mmx.packuswb",
  4548. "llvm.x86.mmx.padd.b",
  4549. "llvm.x86.mmx.padd.d",
  4550. "llvm.x86.mmx.padd.q",
  4551. "llvm.x86.mmx.padd.w",
  4552. "llvm.x86.mmx.padds.b",
  4553. "llvm.x86.mmx.padds.w",
  4554. "llvm.x86.mmx.paddus.b",
  4555. "llvm.x86.mmx.paddus.w",
  4556. "llvm.x86.mmx.palignr.b",
  4557. "llvm.x86.mmx.pand",
  4558. "llvm.x86.mmx.pandn",
  4559. "llvm.x86.mmx.pavg.b",
  4560. "llvm.x86.mmx.pavg.w",
  4561. "llvm.x86.mmx.pcmpeq.b",
  4562. "llvm.x86.mmx.pcmpeq.d",
  4563. "llvm.x86.mmx.pcmpeq.w",
  4564. "llvm.x86.mmx.pcmpgt.b",
  4565. "llvm.x86.mmx.pcmpgt.d",
  4566. "llvm.x86.mmx.pcmpgt.w",
  4567. "llvm.x86.mmx.pextr.w",
  4568. "llvm.x86.mmx.pinsr.w",
  4569. "llvm.x86.mmx.pmadd.wd",
  4570. "llvm.x86.mmx.pmaxs.w",
  4571. "llvm.x86.mmx.pmaxu.b",
  4572. "llvm.x86.mmx.pmins.w",
  4573. "llvm.x86.mmx.pminu.b",
  4574. "llvm.x86.mmx.pmovmskb",
  4575. "llvm.x86.mmx.pmulh.w",
  4576. "llvm.x86.mmx.pmulhu.w",
  4577. "llvm.x86.mmx.pmull.w",
  4578. "llvm.x86.mmx.pmulu.dq",
  4579. "llvm.x86.mmx.por",
  4580. "llvm.x86.mmx.psad.bw",
  4581. "llvm.x86.mmx.psll.d",
  4582. "llvm.x86.mmx.psll.q",
  4583. "llvm.x86.mmx.psll.w",
  4584. "llvm.x86.mmx.pslli.d",
  4585. "llvm.x86.mmx.pslli.q",
  4586. "llvm.x86.mmx.pslli.w",
  4587. "llvm.x86.mmx.psra.d",
  4588. "llvm.x86.mmx.psra.w",
  4589. "llvm.x86.mmx.psrai.d",
  4590. "llvm.x86.mmx.psrai.w",
  4591. "llvm.x86.mmx.psrl.d",
  4592. "llvm.x86.mmx.psrl.q",
  4593. "llvm.x86.mmx.psrl.w",
  4594. "llvm.x86.mmx.psrli.d",
  4595. "llvm.x86.mmx.psrli.q",
  4596. "llvm.x86.mmx.psrli.w",
  4597. "llvm.x86.mmx.psub.b",
  4598. "llvm.x86.mmx.psub.d",
  4599. "llvm.x86.mmx.psub.q",
  4600. "llvm.x86.mmx.psub.w",
  4601. "llvm.x86.mmx.psubs.b",
  4602. "llvm.x86.mmx.psubs.w",
  4603. "llvm.x86.mmx.psubus.b",
  4604. "llvm.x86.mmx.psubus.w",
  4605. "llvm.x86.mmx.punpckhbw",
  4606. "llvm.x86.mmx.punpckhdq",
  4607. "llvm.x86.mmx.punpckhwd",
  4608. "llvm.x86.mmx.punpcklbw",
  4609. "llvm.x86.mmx.punpckldq",
  4610. "llvm.x86.mmx.punpcklwd",
  4611. "llvm.x86.mmx.pxor",
  4612. "llvm.x86.pclmulqdq",
  4613. "llvm.x86.rdfsbase.32",
  4614. "llvm.x86.rdfsbase.64",
  4615. "llvm.x86.rdgsbase.32",
  4616. "llvm.x86.rdgsbase.64",
  4617. "llvm.x86.rdrand.16",
  4618. "llvm.x86.rdrand.32",
  4619. "llvm.x86.rdrand.64",
  4620. "llvm.x86.sse2.add.sd",
  4621. "llvm.x86.sse2.clflush",
  4622. "llvm.x86.sse2.cmp.pd",
  4623. "llvm.x86.sse2.cmp.sd",
  4624. "llvm.x86.sse2.comieq.sd",
  4625. "llvm.x86.sse2.comige.sd",
  4626. "llvm.x86.sse2.comigt.sd",
  4627. "llvm.x86.sse2.comile.sd",
  4628. "llvm.x86.sse2.comilt.sd",
  4629. "llvm.x86.sse2.comineq.sd",
  4630. "llvm.x86.sse2.cvtdq2pd",
  4631. "llvm.x86.sse2.cvtdq2ps",
  4632. "llvm.x86.sse2.cvtpd2dq",
  4633. "llvm.x86.sse2.cvtpd2ps",
  4634. "llvm.x86.sse2.cvtps2dq",
  4635. "llvm.x86.sse2.cvtps2pd",
  4636. "llvm.x86.sse2.cvtsd2si",
  4637. "llvm.x86.sse2.cvtsd2si64",
  4638. "llvm.x86.sse2.cvtsd2ss",
  4639. "llvm.x86.sse2.cvtsi2sd",
  4640. "llvm.x86.sse2.cvtsi642sd",
  4641. "llvm.x86.sse2.cvtss2sd",
  4642. "llvm.x86.sse2.cvttpd2dq",
  4643. "llvm.x86.sse2.cvttps2dq",
  4644. "llvm.x86.sse2.cvttsd2si",
  4645. "llvm.x86.sse2.cvttsd2si64",
  4646. "llvm.x86.sse2.div.sd",
  4647. "llvm.x86.sse2.lfence",
  4648. "llvm.x86.sse2.maskmov.dqu",
  4649. "llvm.x86.sse2.max.pd",
  4650. "llvm.x86.sse2.max.sd",
  4651. "llvm.x86.sse2.mfence",
  4652. "llvm.x86.sse2.min.pd",
  4653. "llvm.x86.sse2.min.sd",
  4654. "llvm.x86.sse2.movmsk.pd",
  4655. "llvm.x86.sse2.mul.sd",
  4656. "llvm.x86.sse2.packssdw.128",
  4657. "llvm.x86.sse2.packsswb.128",
  4658. "llvm.x86.sse2.packuswb.128",
  4659. "llvm.x86.sse2.padds.b",
  4660. "llvm.x86.sse2.padds.w",
  4661. "llvm.x86.sse2.paddus.b",
  4662. "llvm.x86.sse2.paddus.w",
  4663. "llvm.x86.sse2.pavg.b",
  4664. "llvm.x86.sse2.pavg.w",
  4665. "llvm.x86.sse2.pmadd.wd",
  4666. "llvm.x86.sse2.pmaxs.w",
  4667. "llvm.x86.sse2.pmaxu.b",
  4668. "llvm.x86.sse2.pmins.w",
  4669. "llvm.x86.sse2.pminu.b",
  4670. "llvm.x86.sse2.pmovmskb.128",
  4671. "llvm.x86.sse2.pmulh.w",
  4672. "llvm.x86.sse2.pmulhu.w",
  4673. "llvm.x86.sse2.pmulu.dq",
  4674. "llvm.x86.sse2.psad.bw",
  4675. "llvm.x86.sse2.psll.d",
  4676. "llvm.x86.sse2.psll.dq",
  4677. "llvm.x86.sse2.psll.dq.bs",
  4678. "llvm.x86.sse2.psll.q",
  4679. "llvm.x86.sse2.psll.w",
  4680. "llvm.x86.sse2.pslli.d",
  4681. "llvm.x86.sse2.pslli.q",
  4682. "llvm.x86.sse2.pslli.w",
  4683. "llvm.x86.sse2.psra.d",
  4684. "llvm.x86.sse2.psra.w",
  4685. "llvm.x86.sse2.psrai.d",
  4686. "llvm.x86.sse2.psrai.w",
  4687. "llvm.x86.sse2.psrl.d",
  4688. "llvm.x86.sse2.psrl.dq",
  4689. "llvm.x86.sse2.psrl.dq.bs",
  4690. "llvm.x86.sse2.psrl.q",
  4691. "llvm.x86.sse2.psrl.w",
  4692. "llvm.x86.sse2.psrli.d",
  4693. "llvm.x86.sse2.psrli.q",
  4694. "llvm.x86.sse2.psrli.w",
  4695. "llvm.x86.sse2.psubs.b",
  4696. "llvm.x86.sse2.psubs.w",
  4697. "llvm.x86.sse2.psubus.b",
  4698. "llvm.x86.sse2.psubus.w",
  4699. "llvm.x86.sse2.sqrt.pd",
  4700. "llvm.x86.sse2.sqrt.sd",
  4701. "llvm.x86.sse2.storel.dq",
  4702. "llvm.x86.sse2.storeu.dq",
  4703. "llvm.x86.sse2.storeu.pd",
  4704. "llvm.x86.sse2.sub.sd",
  4705. "llvm.x86.sse2.ucomieq.sd",
  4706. "llvm.x86.sse2.ucomige.sd",
  4707. "llvm.x86.sse2.ucomigt.sd",
  4708. "llvm.x86.sse2.ucomile.sd",
  4709. "llvm.x86.sse2.ucomilt.sd",
  4710. "llvm.x86.sse2.ucomineq.sd",
  4711. "llvm.x86.sse3.addsub.pd",
  4712. "llvm.x86.sse3.addsub.ps",
  4713. "llvm.x86.sse3.hadd.pd",
  4714. "llvm.x86.sse3.hadd.ps",
  4715. "llvm.x86.sse3.hsub.pd",
  4716. "llvm.x86.sse3.hsub.ps",
  4717. "llvm.x86.sse3.ldu.dq",
  4718. "llvm.x86.sse3.monitor",
  4719. "llvm.x86.sse3.mwait",
  4720. "llvm.x86.sse41.blendpd",
  4721. "llvm.x86.sse41.blendps",
  4722. "llvm.x86.sse41.blendvpd",
  4723. "llvm.x86.sse41.blendvps",
  4724. "llvm.x86.sse41.dppd",
  4725. "llvm.x86.sse41.dpps",
  4726. "llvm.x86.sse41.extractps",
  4727. "llvm.x86.sse41.insertps",
  4728. "llvm.x86.sse41.movntdqa",
  4729. "llvm.x86.sse41.mpsadbw",
  4730. "llvm.x86.sse41.packusdw",
  4731. "llvm.x86.sse41.pblendvb",
  4732. "llvm.x86.sse41.pblendw",
  4733. "llvm.x86.sse41.pextrb",
  4734. "llvm.x86.sse41.pextrd",
  4735. "llvm.x86.sse41.pextrq",
  4736. "llvm.x86.sse41.phminposuw",
  4737. "llvm.x86.sse41.pmaxsb",
  4738. "llvm.x86.sse41.pmaxsd",
  4739. "llvm.x86.sse41.pmaxud",
  4740. "llvm.x86.sse41.pmaxuw",
  4741. "llvm.x86.sse41.pminsb",
  4742. "llvm.x86.sse41.pminsd",
  4743. "llvm.x86.sse41.pminud",
  4744. "llvm.x86.sse41.pminuw",
  4745. "llvm.x86.sse41.pmovsxbd",
  4746. "llvm.x86.sse41.pmovsxbq",
  4747. "llvm.x86.sse41.pmovsxbw",
  4748. "llvm.x86.sse41.pmovsxdq",
  4749. "llvm.x86.sse41.pmovsxwd",
  4750. "llvm.x86.sse41.pmovsxwq",
  4751. "llvm.x86.sse41.pmovzxbd",
  4752. "llvm.x86.sse41.pmovzxbq",
  4753. "llvm.x86.sse41.pmovzxbw",
  4754. "llvm.x86.sse41.pmovzxdq",
  4755. "llvm.x86.sse41.pmovzxwd",
  4756. "llvm.x86.sse41.pmovzxwq",
  4757. "llvm.x86.sse41.pmuldq",
  4758. "llvm.x86.sse41.ptestc",
  4759. "llvm.x86.sse41.ptestnzc",
  4760. "llvm.x86.sse41.ptestz",
  4761. "llvm.x86.sse41.round.pd",
  4762. "llvm.x86.sse41.round.ps",
  4763. "llvm.x86.sse41.round.sd",
  4764. "llvm.x86.sse41.round.ss",
  4765. "llvm.x86.sse42.crc32.32.16",
  4766. "llvm.x86.sse42.crc32.32.32",
  4767. "llvm.x86.sse42.crc32.32.8",
  4768. "llvm.x86.sse42.crc32.64.64",
  4769. "llvm.x86.sse42.crc32.64.8",
  4770. "llvm.x86.sse42.pcmpestri128",
  4771. "llvm.x86.sse42.pcmpestria128",
  4772. "llvm.x86.sse42.pcmpestric128",
  4773. "llvm.x86.sse42.pcmpestrio128",
  4774. "llvm.x86.sse42.pcmpestris128",
  4775. "llvm.x86.sse42.pcmpestriz128",
  4776. "llvm.x86.sse42.pcmpestrm128",
  4777. "llvm.x86.sse42.pcmpistri128",
  4778. "llvm.x86.sse42.pcmpistria128",
  4779. "llvm.x86.sse42.pcmpistric128",
  4780. "llvm.x86.sse42.pcmpistrio128",
  4781. "llvm.x86.sse42.pcmpistris128",
  4782. "llvm.x86.sse42.pcmpistriz128",
  4783. "llvm.x86.sse42.pcmpistrm128",
  4784. "llvm.x86.sse4a.extrq",
  4785. "llvm.x86.sse4a.extrqi",
  4786. "llvm.x86.sse4a.insertq",
  4787. "llvm.x86.sse4a.insertqi",
  4788. "llvm.x86.sse4a.movnt.sd",
  4789. "llvm.x86.sse4a.movnt.ss",
  4790. "llvm.x86.sse.add.ss",
  4791. "llvm.x86.sse.cmp.ps",
  4792. "llvm.x86.sse.cmp.ss",
  4793. "llvm.x86.sse.comieq.ss",
  4794. "llvm.x86.sse.comige.ss",
  4795. "llvm.x86.sse.comigt.ss",
  4796. "llvm.x86.sse.comile.ss",
  4797. "llvm.x86.sse.comilt.ss",
  4798. "llvm.x86.sse.comineq.ss",
  4799. "llvm.x86.sse.cvtpd2pi",
  4800. "llvm.x86.sse.cvtpi2pd",
  4801. "llvm.x86.sse.cvtpi2ps",
  4802. "llvm.x86.sse.cvtps2pi",
  4803. "llvm.x86.sse.cvtsi2ss",
  4804. "llvm.x86.sse.cvtsi642ss",
  4805. "llvm.x86.sse.cvtss2si",
  4806. "llvm.x86.sse.cvtss2si64",
  4807. "llvm.x86.sse.cvttpd2pi",
  4808. "llvm.x86.sse.cvttps2pi",
  4809. "llvm.x86.sse.cvttss2si",
  4810. "llvm.x86.sse.cvttss2si64",
  4811. "llvm.x86.sse.div.ss",
  4812. "llvm.x86.sse.ldmxcsr",
  4813. "llvm.x86.sse.max.ps",
  4814. "llvm.x86.sse.max.ss",
  4815. "llvm.x86.sse.min.ps",
  4816. "llvm.x86.sse.min.ss",
  4817. "llvm.x86.sse.movmsk.ps",
  4818. "llvm.x86.sse.mul.ss",
  4819. "llvm.x86.sse.pshuf.w",
  4820. "llvm.x86.sse.rcp.ps",
  4821. "llvm.x86.sse.rcp.ss",
  4822. "llvm.x86.sse.rsqrt.ps",
  4823. "llvm.x86.sse.rsqrt.ss",
  4824. "llvm.x86.sse.sfence",
  4825. "llvm.x86.sse.sqrt.ps",
  4826. "llvm.x86.sse.sqrt.ss",
  4827. "llvm.x86.sse.stmxcsr",
  4828. "llvm.x86.sse.storeu.ps",
  4829. "llvm.x86.sse.sub.ss",
  4830. "llvm.x86.sse.ucomieq.ss",
  4831. "llvm.x86.sse.ucomige.ss",
  4832. "llvm.x86.sse.ucomigt.ss",
  4833. "llvm.x86.sse.ucomile.ss",
  4834. "llvm.x86.sse.ucomilt.ss",
  4835. "llvm.x86.sse.ucomineq.ss",
  4836. "llvm.x86.ssse3.pabs.b",
  4837. "llvm.x86.ssse3.pabs.b.128",
  4838. "llvm.x86.ssse3.pabs.d",
  4839. "llvm.x86.ssse3.pabs.d.128",
  4840. "llvm.x86.ssse3.pabs.w",
  4841. "llvm.x86.ssse3.pabs.w.128",
  4842. "llvm.x86.ssse3.phadd.d",
  4843. "llvm.x86.ssse3.phadd.d.128",
  4844. "llvm.x86.ssse3.phadd.sw",
  4845. "llvm.x86.ssse3.phadd.sw.128",
  4846. "llvm.x86.ssse3.phadd.w",
  4847. "llvm.x86.ssse3.phadd.w.128",
  4848. "llvm.x86.ssse3.phsub.d",
  4849. "llvm.x86.ssse3.phsub.d.128",
  4850. "llvm.x86.ssse3.phsub.sw",
  4851. "llvm.x86.ssse3.phsub.sw.128",
  4852. "llvm.x86.ssse3.phsub.w",
  4853. "llvm.x86.ssse3.phsub.w.128",
  4854. "llvm.x86.ssse3.pmadd.ub.sw",
  4855. "llvm.x86.ssse3.pmadd.ub.sw.128",
  4856. "llvm.x86.ssse3.pmul.hr.sw",
  4857. "llvm.x86.ssse3.pmul.hr.sw.128",
  4858. "llvm.x86.ssse3.pshuf.b",
  4859. "llvm.x86.ssse3.pshuf.b.128",
  4860. "llvm.x86.ssse3.psign.b",
  4861. "llvm.x86.ssse3.psign.b.128",
  4862. "llvm.x86.ssse3.psign.d",
  4863. "llvm.x86.ssse3.psign.d.128",
  4864. "llvm.x86.ssse3.psign.w",
  4865. "llvm.x86.ssse3.psign.w.128",
  4866. "llvm.x86.vcvtph2ps.128",
  4867. "llvm.x86.vcvtph2ps.256",
  4868. "llvm.x86.vcvtps2ph.128",
  4869. "llvm.x86.vcvtps2ph.256",
  4870. "llvm.x86.wrfsbase.32",
  4871. "llvm.x86.wrfsbase.64",
  4872. "llvm.x86.wrgsbase.32",
  4873. "llvm.x86.wrgsbase.64",
  4874. "llvm.x86.xop.vfrcz.pd",
  4875. "llvm.x86.xop.vfrcz.pd.256",
  4876. "llvm.x86.xop.vfrcz.ps",
  4877. "llvm.x86.xop.vfrcz.ps.256",
  4878. "llvm.x86.xop.vfrcz.sd",
  4879. "llvm.x86.xop.vfrcz.ss",
  4880. "llvm.x86.xop.vpcmov",
  4881. "llvm.x86.xop.vpcmov.256",
  4882. "llvm.x86.xop.vpcomb",
  4883. "llvm.x86.xop.vpcomd",
  4884. "llvm.x86.xop.vpcomq",
  4885. "llvm.x86.xop.vpcomub",
  4886. "llvm.x86.xop.vpcomud",
  4887. "llvm.x86.xop.vpcomuq",
  4888. "llvm.x86.xop.vpcomuw",
  4889. "llvm.x86.xop.vpcomw",
  4890. "llvm.x86.xop.vpermil2pd",
  4891. "llvm.x86.xop.vpermil2pd.256",
  4892. "llvm.x86.xop.vpermil2ps",
  4893. "llvm.x86.xop.vpermil2ps.256",
  4894. "llvm.x86.xop.vphaddbd",
  4895. "llvm.x86.xop.vphaddbq",
  4896. "llvm.x86.xop.vphaddbw",
  4897. "llvm.x86.xop.vphadddq",
  4898. "llvm.x86.xop.vphaddubd",
  4899. "llvm.x86.xop.vphaddubq",
  4900. "llvm.x86.xop.vphaddubw",
  4901. "llvm.x86.xop.vphaddudq",
  4902. "llvm.x86.xop.vphadduwd",
  4903. "llvm.x86.xop.vphadduwq",
  4904. "llvm.x86.xop.vphaddwd",
  4905. "llvm.x86.xop.vphaddwq",
  4906. "llvm.x86.xop.vphsubbw",
  4907. "llvm.x86.xop.vphsubdq",
  4908. "llvm.x86.xop.vphsubwd",
  4909. "llvm.x86.xop.vpmacsdd",
  4910. "llvm.x86.xop.vpmacsdqh",
  4911. "llvm.x86.xop.vpmacsdql",
  4912. "llvm.x86.xop.vpmacssdd",
  4913. "llvm.x86.xop.vpmacssdqh",
  4914. "llvm.x86.xop.vpmacssdql",
  4915. "llvm.x86.xop.vpmacsswd",
  4916. "llvm.x86.xop.vpmacssww",
  4917. "llvm.x86.xop.vpmacswd",
  4918. "llvm.x86.xop.vpmacsww",
  4919. "llvm.x86.xop.vpmadcsswd",
  4920. "llvm.x86.xop.vpmadcswd",
  4921. "llvm.x86.xop.vpperm",
  4922. "llvm.x86.xop.vprotb",
  4923. "llvm.x86.xop.vprotbi",
  4924. "llvm.x86.xop.vprotd",
  4925. "llvm.x86.xop.vprotdi",
  4926. "llvm.x86.xop.vprotq",
  4927. "llvm.x86.xop.vprotqi",
  4928. "llvm.x86.xop.vprotw",
  4929. "llvm.x86.xop.vprotwi",
  4930. "llvm.x86.xop.vpshab",
  4931. "llvm.x86.xop.vpshad",
  4932. "llvm.x86.xop.vpshaq",
  4933. "llvm.x86.xop.vpshaw",
  4934. "llvm.x86.xop.vpshlb",
  4935. "llvm.x86.xop.vpshld",
  4936. "llvm.x86.xop.vpshlq",
  4937. "llvm.x86.xop.vpshlw",
  4938. "llvm.xcore.bitrev",
  4939. "llvm.xcore.checkevent",
  4940. "llvm.xcore.chkct",
  4941. "llvm.xcore.clre",
  4942. "llvm.xcore.clrsr",
  4943. "llvm.xcore.crc32",
  4944. "llvm.xcore.crc8",
  4945. "llvm.xcore.eeu",
  4946. "llvm.xcore.endin",
  4947. "llvm.xcore.freer",
  4948. "llvm.xcore.geted",
  4949. "llvm.xcore.getet",
  4950. "llvm.xcore.getid",
  4951. "llvm.xcore.getps",
  4952. "llvm.xcore.getr",
  4953. "llvm.xcore.getst",
  4954. "llvm.xcore.getts",
  4955. "llvm.xcore.in",
  4956. "llvm.xcore.inct",
  4957. "llvm.xcore.initcp",
  4958. "llvm.xcore.initdp",
  4959. "llvm.xcore.initlr",
  4960. "llvm.xcore.initpc",
  4961. "llvm.xcore.initsp",
  4962. "llvm.xcore.inshr",
  4963. "llvm.xcore.int",
  4964. "llvm.xcore.mjoin",
  4965. "llvm.xcore.msync",
  4966. "llvm.xcore.out",
  4967. "llvm.xcore.outct",
  4968. "llvm.xcore.outshr",
  4969. "llvm.xcore.outt",
  4970. "llvm.xcore.peek",
  4971. "llvm.xcore.setc",
  4972. "llvm.xcore.setclk",
  4973. "llvm.xcore.setd",
  4974. "llvm.xcore.setev",
  4975. "llvm.xcore.setps",
  4976. "llvm.xcore.setpsc",
  4977. "llvm.xcore.setpt",
  4978. "llvm.xcore.setrdy",
  4979. "llvm.xcore.setsr",
  4980. "llvm.xcore.settw",
  4981. "llvm.xcore.setv",
  4982. "llvm.xcore.sext",
  4983. "llvm.xcore.ssync",
  4984. "llvm.xcore.syncr",
  4985. "llvm.xcore.testct",
  4986. "llvm.xcore.testwct",
  4987. "llvm.xcore.waitevent",
  4988. "llvm.xcore.zext",
  4989. #endif
  4990. // Intrinsic ID to overload bitset
  4991. #ifdef GET_INTRINSIC_OVERLOAD_TABLE
  4992. static const uint8_t OTable[] = {
  4993. 0 | (1<<2),
  4994. 0 | (1<<5) | (1<<6) | (1<<7),
  4995. 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4996. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5) | (1<<7),
  4997. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4998. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4999. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5000. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5001. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5002. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5003. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5004. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5005. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5006. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4),
  5007. 0,
  5008. 0 | (1<<4) | (1<<5) | (1<<6),
  5009. 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5010. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5),
  5011. 0,
  5012. 0 | (1<<5) | (1<<6) | (1<<7),
  5013. 0 | (1<<0) | (1<<1) | (1<<3) | (1<<4),
  5014. 0,
  5015. 0,
  5016. 0,
  5017. 0,
  5018. 0,
  5019. 0,
  5020. 0,
  5021. 0,
  5022. 0,
  5023. 0,
  5024. 0,
  5025. 0,
  5026. 0,
  5027. 0,
  5028. 0,
  5029. 0,
  5030. 0,
  5031. 0,
  5032. 0,
  5033. 0,
  5034. 0,
  5035. 0,
  5036. 0,
  5037. 0,
  5038. 0,
  5039. 0,
  5040. 0,
  5041. 0,
  5042. 0,
  5043. 0,
  5044. 0,
  5045. 0,
  5046. 0,
  5047. 0,
  5048. 0,
  5049. 0,
  5050. 0,
  5051. 0,
  5052. 0,
  5053. 0,
  5054. 0,
  5055. 0,
  5056. 0,
  5057. 0,
  5058. 0,
  5059. 0,
  5060. 0,
  5061. 0,
  5062. 0,
  5063. 0,
  5064. 0,
  5065. 0,
  5066. 0,
  5067. 0,
  5068. 0,
  5069. 0,
  5070. 0,
  5071. 0,
  5072. 0,
  5073. 0,
  5074. 0,
  5075. 0,
  5076. 0,
  5077. 0,
  5078. 0,
  5079. 0,
  5080. 0,
  5081. 0,
  5082. 0,
  5083. 0,
  5084. 0,
  5085. 0,
  5086. 0,
  5087. 0,
  5088. 0,
  5089. 0,
  5090. 0,
  5091. 0,
  5092. 0,
  5093. 0,
  5094. 0,
  5095. 0,
  5096. 0,
  5097. 0,
  5098. 0,
  5099. 0,
  5100. 0,
  5101. 0,
  5102. 0,
  5103. 0,
  5104. 0,
  5105. 0,
  5106. 0,
  5107. 0,
  5108. 0,
  5109. 0,
  5110. 0,
  5111. 0,
  5112. 0,
  5113. 0,
  5114. 0,
  5115. 0,
  5116. 0,
  5117. 0,
  5118. 0,
  5119. 0,
  5120. 0,
  5121. 0 | (1<<3) | (1<<4) | (1<<5) | (1<<7),
  5122. 0 | (1<<0) | (1<<1),
  5123. 0,
  5124. 0,
  5125. 0,
  5126. 0,
  5127. 0,
  5128. 0,
  5129. 0,
  5130. 0,
  5131. 0,
  5132. 0,
  5133. 0,
  5134. 0,
  5135. 0,
  5136. 0,
  5137. 0,
  5138. 0,
  5139. 0,
  5140. 0 | (1<<7),
  5141. 0 | (1<<0) | (1<<1),
  5142. 0,
  5143. 0 | (1<<1) | (1<<2),
  5144. 0,
  5145. 0,
  5146. 0,
  5147. 0,
  5148. 0,
  5149. 0,
  5150. 0,
  5151. 0,
  5152. 0,
  5153. 0,
  5154. 0,
  5155. 0,
  5156. 0,
  5157. 0 | (1<<3) | (1<<4) | (1<<5),
  5158. 0,
  5159. 0,
  5160. 0,
  5161. 0 | (1<<3),
  5162. 0,
  5163. 0,
  5164. 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5165. 0 | (1<<0) | (1<<1),
  5166. 0,
  5167. 0,
  5168. 0,
  5169. 0,
  5170. 0,
  5171. 0,
  5172. 0,
  5173. 0,
  5174. 0 | (1<<2) | (1<<4) | (1<<5),
  5175. 0,
  5176. 0,
  5177. 0,
  5178. 0,
  5179. 0,
  5180. 0,
  5181. 0,
  5182. 0,
  5183. 0,
  5184. 0,
  5185. 0,
  5186. 0,
  5187. 0,
  5188. 0,
  5189. 0,
  5190. 0,
  5191. 0,
  5192. 0,
  5193. 0,
  5194. 0 | (1<<3),
  5195. 0,
  5196. 0,
  5197. 0,
  5198. 0,
  5199. 0 | (1<<0) | (1<<4) | (1<<5),
  5200. 0,
  5201. 0,
  5202. 0,
  5203. 0,
  5204. 0,
  5205. 0,
  5206. 0,
  5207. 0,
  5208. 0,
  5209. 0,
  5210. 0 | (1<<0) | (1<<1) | (1<<6) | (1<<7),
  5211. 0 | (1<<0),
  5212. 0,
  5213. 0,
  5214. 0,
  5215. 0,
  5216. 0,
  5217. 0,
  5218. 0,
  5219. 0,
  5220. 0,
  5221. 0,
  5222. 0,
  5223. 0,
  5224. 0,
  5225. 0,
  5226. 0,
  5227. 0,
  5228. 0,
  5229. 0,
  5230. 0,
  5231. 0,
  5232. 0,
  5233. 0,
  5234. 0,
  5235. 0,
  5236. 0,
  5237. 0,
  5238. 0,
  5239. 0,
  5240. 0,
  5241. 0,
  5242. 0,
  5243. 0,
  5244. 0,
  5245. 0,
  5246. 0,
  5247. 0,
  5248. 0,
  5249. 0,
  5250. 0,
  5251. 0,
  5252. 0,
  5253. 0,
  5254. 0,
  5255. 0,
  5256. 0,
  5257. 0,
  5258. 0,
  5259. 0,
  5260. 0,
  5261. 0,
  5262. 0,
  5263. 0,
  5264. 0,
  5265. 0,
  5266. 0,
  5267. 0,
  5268. 0,
  5269. 0,
  5270. 0,
  5271. 0,
  5272. 0,
  5273. 0,
  5274. 0,
  5275. 0,
  5276. 0,
  5277. 0,
  5278. 0,
  5279. 0,
  5280. 0,
  5281. 0,
  5282. 0,
  5283. 0,
  5284. 0,
  5285. 0,
  5286. 0,
  5287. 0,
  5288. 0,
  5289. 0,
  5290. 0,
  5291. 0,
  5292. 0,
  5293. 0,
  5294. 0,
  5295. 0,
  5296. 0,
  5297. 0 | (1<<4),
  5298. 0 | (1<<1) | (1<<2) | (1<<3),
  5299. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5300. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5301. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
  5302. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5),
  5303. 0 | (1<<0) | (1<<1) | (1<<2)
  5304. };
  5305. return (OTable[id/8] & (1 << (id%8))) != 0;
  5306. #endif
  5307. // Function name -> enum value recognizer code.
  5308. #ifdef GET_FUNCTION_RECOGNIZER
  5309. StringRef NameR(Name+6, Len-6); // Skip over 'llvm.'
  5310. switch (Name[5]) { // Dispatch on first letter.
  5311. default: break;
  5312. case 'a':
  5313. if (NameR.startswith("nnotation.")) return Intrinsic::annotation;
  5314. if (NameR.startswith("rm.neon.vabds.")) return Intrinsic::arm_neon_vabds;
  5315. if (NameR.startswith("rm.neon.vabdu.")) return Intrinsic::arm_neon_vabdu;
  5316. if (NameR.startswith("rm.neon.vabs.")) return Intrinsic::arm_neon_vabs;
  5317. if (NameR.startswith("rm.neon.vaddhn.")) return Intrinsic::arm_neon_vaddhn;
  5318. if (NameR.startswith("rm.neon.vbsl.")) return Intrinsic::arm_neon_vbsl;
  5319. if (NameR.startswith("rm.neon.vcls.")) return Intrinsic::arm_neon_vcls;
  5320. if (NameR.startswith("rm.neon.vclz.")) return Intrinsic::arm_neon_vclz;
  5321. if (NameR.startswith("rm.neon.vcnt.")) return Intrinsic::arm_neon_vcnt;
  5322. if (NameR.startswith("rm.neon.vcvtfp2fxs.")) return Intrinsic::arm_neon_vcvtfp2fxs;
  5323. if (NameR.startswith("rm.neon.vcvtfp2fxu.")) return Intrinsic::arm_neon_vcvtfp2fxu;
  5324. if (NameR.startswith("rm.neon.vcvtfxs2fp.")) return Intrinsic::arm_neon_vcvtfxs2fp;
  5325. if (NameR.startswith("rm.neon.vcvtfxu2fp.")) return Intrinsic::arm_neon_vcvtfxu2fp;
  5326. if (NameR.startswith("rm.neon.vhadds.")) return Intrinsic::arm_neon_vhadds;
  5327. if (NameR.startswith("rm.neon.vhaddu.")) return Intrinsic::arm_neon_vhaddu;
  5328. if (NameR.startswith("rm.neon.vhsubs.")) return Intrinsic::arm_neon_vhsubs;
  5329. if (NameR.startswith("rm.neon.vhsubu.")) return Intrinsic::arm_neon_vhsubu;
  5330. if (NameR.startswith("rm.neon.vld1.")) return Intrinsic::arm_neon_vld1;
  5331. if (NameR.startswith("rm.neon.vld2.")) return Intrinsic::arm_neon_vld2;
  5332. if (NameR.startswith("rm.neon.vld2lane.")) return Intrinsic::arm_neon_vld2lane;
  5333. if (NameR.startswith("rm.neon.vld3.")) return Intrinsic::arm_neon_vld3;
  5334. if (NameR.startswith("rm.neon.vld3lane.")) return Intrinsic::arm_neon_vld3lane;
  5335. if (NameR.startswith("rm.neon.vld4.")) return Intrinsic::arm_neon_vld4;
  5336. if (NameR.startswith("rm.neon.vld4lane.")) return Intrinsic::arm_neon_vld4lane;
  5337. if (NameR.startswith("rm.neon.vmaxs.")) return Intrinsic::arm_neon_vmaxs;
  5338. if (NameR.startswith("rm.neon.vmaxu.")) return Intrinsic::arm_neon_vmaxu;
  5339. if (NameR.startswith("rm.neon.vmins.")) return Intrinsic::arm_neon_vmins;
  5340. if (NameR.startswith("rm.neon.vminu.")) return Intrinsic::arm_neon_vminu;
  5341. if (NameR.startswith("rm.neon.vmullp.")) return Intrinsic::arm_neon_vmullp;
  5342. if (NameR.startswith("rm.neon.vmulls.")) return Intrinsic::arm_neon_vmulls;
  5343. if (NameR.startswith("rm.neon.vmullu.")) return Intrinsic::arm_neon_vmullu;
  5344. if (NameR.startswith("rm.neon.vmulp.")) return Intrinsic::arm_neon_vmulp;
  5345. if (NameR.startswith("rm.neon.vpadals.")) return Intrinsic::arm_neon_vpadals;
  5346. if (NameR.startswith("rm.neon.vpadalu.")) return Intrinsic::arm_neon_vpadalu;
  5347. if (NameR.startswith("rm.neon.vpadd.")) return Intrinsic::arm_neon_vpadd;
  5348. if (NameR.startswith("rm.neon.vpaddls.")) return Intrinsic::arm_neon_vpaddls;
  5349. if (NameR.startswith("rm.neon.vpaddlu.")) return Intrinsic::arm_neon_vpaddlu;
  5350. if (NameR.startswith("rm.neon.vpmaxs.")) return Intrinsic::arm_neon_vpmaxs;
  5351. if (NameR.startswith("rm.neon.vpmaxu.")) return Intrinsic::arm_neon_vpmaxu;
  5352. if (NameR.startswith("rm.neon.vpmins.")) return Intrinsic::arm_neon_vpmins;
  5353. if (NameR.startswith("rm.neon.vpminu.")) return Intrinsic::arm_neon_vpminu;
  5354. if (NameR.startswith("rm.neon.vqabs.")) return Intrinsic::arm_neon_vqabs;
  5355. if (NameR.startswith("rm.neon.vqadds.")) return Intrinsic::arm_neon_vqadds;
  5356. if (NameR.startswith("rm.neon.vqaddu.")) return Intrinsic::arm_neon_vqaddu;
  5357. if (NameR.startswith("rm.neon.vqdmlal.")) return Intrinsic::arm_neon_vqdmlal;
  5358. if (NameR.startswith("rm.neon.vqdmlsl.")) return Intrinsic::arm_neon_vqdmlsl;
  5359. if (NameR.startswith("rm.neon.vqdmulh.")) return Intrinsic::arm_neon_vqdmulh;
  5360. if (NameR.startswith("rm.neon.vqdmull.")) return Intrinsic::arm_neon_vqdmull;
  5361. if (NameR.startswith("rm.neon.vqmovns.")) return Intrinsic::arm_neon_vqmovns;
  5362. if (NameR.startswith("rm.neon.vqmovnsu.")) return Intrinsic::arm_neon_vqmovnsu;
  5363. if (NameR.startswith("rm.neon.vqmovnu.")) return Intrinsic::arm_neon_vqmovnu;
  5364. if (NameR.startswith("rm.neon.vqneg.")) return Intrinsic::arm_neon_vqneg;
  5365. if (NameR.startswith("rm.neon.vqrdmulh.")) return Intrinsic::arm_neon_vqrdmulh;
  5366. if (NameR.startswith("rm.neon.vqrshiftns.")) return Intrinsic::arm_neon_vqrshiftns;
  5367. if (NameR.startswith("rm.neon.vqrshiftnsu.")) return Intrinsic::arm_neon_vqrshiftnsu;
  5368. if (NameR.startswith("rm.neon.vqrshiftnu.")) return Intrinsic::arm_neon_vqrshiftnu;
  5369. if (NameR.startswith("rm.neon.vqrshifts.")) return Intrinsic::arm_neon_vqrshifts;
  5370. if (NameR.startswith("rm.neon.vqrshiftu.")) return Intrinsic::arm_neon_vqrshiftu;
  5371. if (NameR.startswith("rm.neon.vqshiftns.")) return Intrinsic::arm_neon_vqshiftns;
  5372. if (NameR.startswith("rm.neon.vqshiftnsu.")) return Intrinsic::arm_neon_vqshiftnsu;
  5373. if (NameR.startswith("rm.neon.vqshiftnu.")) return Intrinsic::arm_neon_vqshiftnu;
  5374. if (NameR.startswith("rm.neon.vqshifts.")) return Intrinsic::arm_neon_vqshifts;
  5375. if (NameR.startswith("rm.neon.vqshiftsu.")) return Intrinsic::arm_neon_vqshiftsu;
  5376. if (NameR.startswith("rm.neon.vqshiftu.")) return Intrinsic::arm_neon_vqshiftu;
  5377. if (NameR.startswith("rm.neon.vqsubs.")) return Intrinsic::arm_neon_vqsubs;
  5378. if (NameR.startswith("rm.neon.vqsubu.")) return Intrinsic::arm_neon_vqsubu;
  5379. if (NameR.startswith("rm.neon.vraddhn.")) return Intrinsic::arm_neon_vraddhn;
  5380. if (NameR.startswith("rm.neon.vrecpe.")) return Intrinsic::arm_neon_vrecpe;
  5381. if (NameR.startswith("rm.neon.vrecps.")) return Intrinsic::arm_neon_vrecps;
  5382. if (NameR.startswith("rm.neon.vrhadds.")) return Intrinsic::arm_neon_vrhadds;
  5383. if (NameR.startswith("rm.neon.vrhaddu.")) return Intrinsic::arm_neon_vrhaddu;
  5384. if (NameR.startswith("rm.neon.vrshiftn.")) return Intrinsic::arm_neon_vrshiftn;
  5385. if (NameR.startswith("rm.neon.vrshifts.")) return Intrinsic::arm_neon_vrshifts;
  5386. if (NameR.startswith("rm.neon.vrshiftu.")) return Intrinsic::arm_neon_vrshiftu;
  5387. if (NameR.startswith("rm.neon.vrsqrte.")) return Intrinsic::arm_neon_vrsqrte;
  5388. if (NameR.startswith("rm.neon.vrsqrts.")) return Intrinsic::arm_neon_vrsqrts;
  5389. if (NameR.startswith("rm.neon.vrsubhn.")) return Intrinsic::arm_neon_vrsubhn;
  5390. if (NameR.startswith("rm.neon.vshiftins.")) return Intrinsic::arm_neon_vshiftins;
  5391. if (NameR.startswith("rm.neon.vshiftls.")) return Intrinsic::arm_neon_vshiftls;
  5392. if (NameR.startswith("rm.neon.vshiftlu.")) return Intrinsic::arm_neon_vshiftlu;
  5393. if (NameR.startswith("rm.neon.vshiftn.")) return Intrinsic::arm_neon_vshiftn;
  5394. if (NameR.startswith("rm.neon.vshifts.")) return Intrinsic::arm_neon_vshifts;
  5395. if (NameR.startswith("rm.neon.vshiftu.")) return Intrinsic::arm_neon_vshiftu;
  5396. if (NameR.startswith("rm.neon.vst1.")) return Intrinsic::arm_neon_vst1;
  5397. if (NameR.startswith("rm.neon.vst2.")) return Intrinsic::arm_neon_vst2;
  5398. if (NameR.startswith("rm.neon.vst2lane.")) return Intrinsic::arm_neon_vst2lane;
  5399. if (NameR.startswith("rm.neon.vst3.")) return Intrinsic::arm_neon_vst3;
  5400. if (NameR.startswith("rm.neon.vst3lane.")) return Intrinsic::arm_neon_vst3lane;
  5401. if (NameR.startswith("rm.neon.vst4.")) return Intrinsic::arm_neon_vst4;
  5402. if (NameR.startswith("rm.neon.vst4lane.")) return Intrinsic::arm_neon_vst4lane;
  5403. if (NameR.startswith("rm.neon.vsubhn.")) return Intrinsic::arm_neon_vsubhn;
  5404. if (NameR.startswith("rm.vcvtr.")) return Intrinsic::arm_vcvtr;
  5405. if (NameR.startswith("rm.vcvtru.")) return Intrinsic::arm_vcvtru;
  5406. switch (NameR.size()) {
  5407. default: break;
  5408. case 6: // 3 strings to match.
  5409. if (memcmp(NameR.data()+0, "rm.", 3))
  5410. break;
  5411. switch (NameR[3]) {
  5412. default: break;
  5413. case 'c': // 1 string to match.
  5414. if (memcmp(NameR.data()+4, "dp", 2))
  5415. break;
  5416. return Intrinsic::arm_cdp; // "rm.cdp"
  5417. case 'm': // 2 strings to match.
  5418. switch (NameR[4]) {
  5419. default: break;
  5420. case 'c': // 1 string to match.
  5421. if (NameR[5] != 'r')
  5422. break;
  5423. return Intrinsic::arm_mcr; // "rm.mcr"
  5424. case 'r': // 1 string to match.
  5425. if (NameR[5] != 'c')
  5426. break;
  5427. return Intrinsic::arm_mrc; // "rm.mrc"
  5428. }
  5429. break;
  5430. }
  5431. break;
  5432. case 7: // 8 strings to match.
  5433. if (memcmp(NameR.data()+0, "rm.", 3))
  5434. break;
  5435. switch (NameR[3]) {
  5436. default: break;
  5437. case 'c': // 1 string to match.
  5438. if (memcmp(NameR.data()+4, "dp2", 3))
  5439. break;
  5440. return Intrinsic::arm_cdp2; // "rm.cdp2"
  5441. case 'm': // 3 strings to match.
  5442. switch (NameR[4]) {
  5443. default: break;
  5444. case 'c': // 2 strings to match.
  5445. if (NameR[5] != 'r')
  5446. break;
  5447. switch (NameR[6]) {
  5448. default: break;
  5449. case '2': // 1 string to match.
  5450. return Intrinsic::arm_mcr2; // "rm.mcr2"
  5451. case 'r': // 1 string to match.
  5452. return Intrinsic::arm_mcrr; // "rm.mcrr"
  5453. }
  5454. break;
  5455. case 'r': // 1 string to match.
  5456. if (memcmp(NameR.data()+5, "c2", 2))
  5457. break;
  5458. return Intrinsic::arm_mrc2; // "rm.mrc2"
  5459. }
  5460. break;
  5461. case 'q': // 2 strings to match.
  5462. switch (NameR[4]) {
  5463. default: break;
  5464. case 'a': // 1 string to match.
  5465. if (memcmp(NameR.data()+5, "dd", 2))
  5466. break;
  5467. return Intrinsic::arm_qadd; // "rm.qadd"
  5468. case 's': // 1 string to match.
  5469. if (memcmp(NameR.data()+5, "ub", 2))
  5470. break;
  5471. return Intrinsic::arm_qsub; // "rm.qsub"
  5472. }
  5473. break;
  5474. case 's': // 1 string to match.
  5475. if (memcmp(NameR.data()+4, "sat", 3))
  5476. break;
  5477. return Intrinsic::arm_ssat; // "rm.ssat"
  5478. case 'u': // 1 string to match.
  5479. if (memcmp(NameR.data()+4, "sat", 3))
  5480. break;
  5481. return Intrinsic::arm_usat; // "rm.usat"
  5482. }
  5483. break;
  5484. case 8: // 1 string to match.
  5485. if (memcmp(NameR.data()+0, "rm.mcrr2", 8))
  5486. break;
  5487. return Intrinsic::arm_mcrr2; // "rm.mcrr2"
  5488. case 9: // 2 strings to match.
  5489. if (memcmp(NameR.data()+0, "rm.", 3))
  5490. break;
  5491. switch (NameR[3]) {
  5492. default: break;
  5493. case 'l': // 1 string to match.
  5494. if (memcmp(NameR.data()+4, "drexd", 5))
  5495. break;
  5496. return Intrinsic::arm_ldrexd; // "rm.ldrexd"
  5497. case 's': // 1 string to match.
  5498. if (memcmp(NameR.data()+4, "trexd", 5))
  5499. break;
  5500. return Intrinsic::arm_strexd; // "rm.strexd"
  5501. }
  5502. break;
  5503. case 12: // 2 strings to match.
  5504. if (memcmp(NameR.data()+0, "rm.", 3))
  5505. break;
  5506. switch (NameR[3]) {
  5507. default: break;
  5508. case 'g': // 1 string to match.
  5509. if (memcmp(NameR.data()+4, "et.fpscr", 8))
  5510. break;
  5511. return Intrinsic::arm_get_fpscr; // "rm.get.fpscr"
  5512. case 's': // 1 string to match.
  5513. if (memcmp(NameR.data()+4, "et.fpscr", 8))
  5514. break;
  5515. return Intrinsic::arm_set_fpscr; // "rm.set.fpscr"
  5516. }
  5517. break;
  5518. case 13: // 8 strings to match.
  5519. if (memcmp(NameR.data()+0, "rm.neon.vtb", 11))
  5520. break;
  5521. switch (NameR[11]) {
  5522. default: break;
  5523. case 'l': // 4 strings to match.
  5524. switch (NameR[12]) {
  5525. default: break;
  5526. case '1': // 1 string to match.
  5527. return Intrinsic::arm_neon_vtbl1; // "rm.neon.vtbl1"
  5528. case '2': // 1 string to match.
  5529. return Intrinsic::arm_neon_vtbl2; // "rm.neon.vtbl2"
  5530. case '3': // 1 string to match.
  5531. return Intrinsic::arm_neon_vtbl3; // "rm.neon.vtbl3"
  5532. case '4': // 1 string to match.
  5533. return Intrinsic::arm_neon_vtbl4; // "rm.neon.vtbl4"
  5534. }
  5535. break;
  5536. case 'x': // 4 strings to match.
  5537. switch (NameR[12]) {
  5538. default: break;
  5539. case '1': // 1 string to match.
  5540. return Intrinsic::arm_neon_vtbx1; // "rm.neon.vtbx1"
  5541. case '2': // 1 string to match.
  5542. return Intrinsic::arm_neon_vtbx2; // "rm.neon.vtbx2"
  5543. case '3': // 1 string to match.
  5544. return Intrinsic::arm_neon_vtbx3; // "rm.neon.vtbx3"
  5545. case '4': // 1 string to match.
  5546. return Intrinsic::arm_neon_vtbx4; // "rm.neon.vtbx4"
  5547. }
  5548. break;
  5549. }
  5550. break;
  5551. case 14: // 4 strings to match.
  5552. if (memcmp(NameR.data()+0, "rm.neon.vacg", 12))
  5553. break;
  5554. switch (NameR[12]) {
  5555. default: break;
  5556. case 'e': // 2 strings to match.
  5557. switch (NameR[13]) {
  5558. default: break;
  5559. case 'd': // 1 string to match.
  5560. return Intrinsic::arm_neon_vacged; // "rm.neon.vacged"
  5561. case 'q': // 1 string to match.
  5562. return Intrinsic::arm_neon_vacgeq; // "rm.neon.vacgeq"
  5563. }
  5564. break;
  5565. case 't': // 2 strings to match.
  5566. switch (NameR[13]) {
  5567. default: break;
  5568. case 'd': // 1 string to match.
  5569. return Intrinsic::arm_neon_vacgtd; // "rm.neon.vacgtd"
  5570. case 'q': // 1 string to match.
  5571. return Intrinsic::arm_neon_vacgtq; // "rm.neon.vacgtq"
  5572. }
  5573. break;
  5574. }
  5575. break;
  5576. case 16: // 1 string to match.
  5577. if (memcmp(NameR.data()+0, "djust.trampoline", 16))
  5578. break;
  5579. return Intrinsic::adjust_trampoline; // "djust.trampoline"
  5580. case 17: // 3 strings to match.
  5581. if (memcmp(NameR.data()+0, "rm.", 3))
  5582. break;
  5583. switch (NameR[3]) {
  5584. default: break;
  5585. case 'n': // 2 strings to match.
  5586. if (memcmp(NameR.data()+4, "eon.vcvt", 8))
  5587. break;
  5588. switch (NameR[12]) {
  5589. default: break;
  5590. case 'f': // 1 string to match.
  5591. if (memcmp(NameR.data()+13, "p2hf", 4))
  5592. break;
  5593. return Intrinsic::arm_neon_vcvtfp2hf; // "rm.neon.vcvtfp2hf"
  5594. case 'h': // 1 string to match.
  5595. if (memcmp(NameR.data()+13, "f2fp", 4))
  5596. break;
  5597. return Intrinsic::arm_neon_vcvthf2fp; // "rm.neon.vcvthf2fp"
  5598. }
  5599. break;
  5600. case 't': // 1 string to match.
  5601. if (memcmp(NameR.data()+4, "hread.pointer", 13))
  5602. break;
  5603. return Intrinsic::arm_thread_pointer; // "rm.thread.pointer"
  5604. }
  5605. break;
  5606. }
  5607. break; // end of 'a' case.
  5608. case 'b':
  5609. if (NameR.startswith("swap.")) return Intrinsic::bswap;
  5610. break; // end of 'b' case.
  5611. case 'c':
  5612. if (NameR.startswith("onvertff.")) return Intrinsic::convertff;
  5613. if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi;
  5614. if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui;
  5615. if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif;
  5616. if (NameR.startswith("onvertss.")) return Intrinsic::convertss;
  5617. if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu;
  5618. if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif;
  5619. if (NameR.startswith("onvertus.")) return Intrinsic::convertus;
  5620. if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu;
  5621. if (NameR.startswith("os.")) return Intrinsic::cos;
  5622. if (NameR.startswith("tlz.")) return Intrinsic::ctlz;
  5623. if (NameR.startswith("tpop.")) return Intrinsic::ctpop;
  5624. if (NameR.startswith("ttz.")) return Intrinsic::cttz;
  5625. switch (NameR.size()) {
  5626. default: break;
  5627. case 14: // 1 string to match.
  5628. if (memcmp(NameR.data()+0, "onvert.to.fp16", 14))
  5629. break;
  5630. return Intrinsic::convert_to_fp16; // "onvert.to.fp16"
  5631. case 15: // 1 string to match.
  5632. if (memcmp(NameR.data()+0, "uda.syncthreads", 15))
  5633. break;
  5634. return Intrinsic::cuda_syncthreads; // "uda.syncthreads"
  5635. case 16: // 1 string to match.
  5636. if (memcmp(NameR.data()+0, "onvert.from.fp16", 16))
  5637. break;
  5638. return Intrinsic::convert_from_fp16; // "onvert.from.fp16"
  5639. }
  5640. break; // end of 'c' case.
  5641. case 'd':
  5642. switch (NameR.size()) {
  5643. default: break;
  5644. case 8: // 3 strings to match.
  5645. switch (NameR[0]) {
  5646. default: break;
  5647. case 'b': // 1 string to match.
  5648. if (memcmp(NameR.data()+1, "g.value", 7))
  5649. break;
  5650. return Intrinsic::dbg_value; // "bg.value"
  5651. case 'e': // 1 string to match.
  5652. if (memcmp(NameR.data()+1, "bugtrap", 7))
  5653. break;
  5654. return Intrinsic::debugtrap; // "ebugtrap"
  5655. case 'o': // 1 string to match.
  5656. if (memcmp(NameR.data()+1, "nothing", 7))
  5657. break;
  5658. return Intrinsic::donothing; // "onothing"
  5659. }
  5660. break;
  5661. case 10: // 1 string to match.
  5662. if (memcmp(NameR.data()+0, "bg.declare", 10))
  5663. break;
  5664. return Intrinsic::dbg_declare; // "bg.declare"
  5665. }
  5666. break; // end of 'd' case.
  5667. case 'e':
  5668. if (NameR.startswith("xp.")) return Intrinsic::exp;
  5669. if (NameR.startswith("xp2.")) return Intrinsic::exp2;
  5670. if (NameR.startswith("xpect.")) return Intrinsic::expect;
  5671. switch (NameR.size()) {
  5672. default: break;
  5673. case 11: // 2 strings to match.
  5674. if (memcmp(NameR.data()+0, "h.", 2))
  5675. break;
  5676. switch (NameR[2]) {
  5677. default: break;
  5678. case 'd': // 1 string to match.
  5679. if (memcmp(NameR.data()+3, "warf.cfa", 8))
  5680. break;
  5681. return Intrinsic::eh_dwarf_cfa; // "h.dwarf.cfa"
  5682. case 's': // 1 string to match.
  5683. if (memcmp(NameR.data()+3, "jlj.lsda", 8))
  5684. break;
  5685. return Intrinsic::eh_sjlj_lsda; // "h.sjlj.lsda"
  5686. }
  5687. break;
  5688. case 12: // 3 strings to match.
  5689. if (memcmp(NameR.data()+0, "h.", 2))
  5690. break;
  5691. switch (NameR[2]) {
  5692. default: break;
  5693. case 'r': // 2 strings to match.
  5694. if (memcmp(NameR.data()+3, "eturn.i", 7))
  5695. break;
  5696. switch (NameR[10]) {
  5697. default: break;
  5698. case '3': // 1 string to match.
  5699. if (NameR[11] != '2')
  5700. break;
  5701. return Intrinsic::eh_return_i32; // "h.return.i32"
  5702. case '6': // 1 string to match.
  5703. if (NameR[11] != '4')
  5704. break;
  5705. return Intrinsic::eh_return_i64; // "h.return.i64"
  5706. }
  5707. break;
  5708. case 't': // 1 string to match.
  5709. if (memcmp(NameR.data()+3, "ypeid.for", 9))
  5710. break;
  5711. return Intrinsic::eh_typeid_for; // "h.typeid.for"
  5712. }
  5713. break;
  5714. case 13: // 2 strings to match.
  5715. if (memcmp(NameR.data()+0, "h.", 2))
  5716. break;
  5717. switch (NameR[2]) {
  5718. default: break;
  5719. case 's': // 1 string to match.
  5720. if (memcmp(NameR.data()+3, "jlj.setjmp", 10))
  5721. break;
  5722. return Intrinsic::eh_sjlj_setjmp; // "h.sjlj.setjmp"
  5723. case 'u': // 1 string to match.
  5724. if (memcmp(NameR.data()+3, "nwind.init", 10))
  5725. break;
  5726. return Intrinsic::eh_unwind_init; // "h.unwind.init"
  5727. }
  5728. break;
  5729. case 14: // 1 string to match.
  5730. if (memcmp(NameR.data()+0, "h.sjlj.longjmp", 14))
  5731. break;
  5732. return Intrinsic::eh_sjlj_longjmp; // "h.sjlj.longjmp"
  5733. case 15: // 1 string to match.
  5734. if (memcmp(NameR.data()+0, "h.sjlj.callsite", 15))
  5735. break;
  5736. return Intrinsic::eh_sjlj_callsite; // "h.sjlj.callsite"
  5737. case 22: // 1 string to match.
  5738. if (memcmp(NameR.data()+0, "h.sjlj.functioncontext", 22))
  5739. break;
  5740. return Intrinsic::eh_sjlj_functioncontext; // "h.sjlj.functioncontext"
  5741. }
  5742. break; // end of 'e' case.
  5743. case 'f':
  5744. if (NameR.startswith("abs.")) return Intrinsic::fabs;
  5745. if (NameR.startswith("loor.")) return Intrinsic::floor;
  5746. if (NameR.startswith("ma.")) return Intrinsic::fma;
  5747. if (NameR.startswith("muladd.")) return Intrinsic::fmuladd;
  5748. switch (NameR.size()) {
  5749. default: break;
  5750. case 9: // 1 string to match.
  5751. if (memcmp(NameR.data()+0, "lt.rounds", 9))
  5752. break;
  5753. return Intrinsic::flt_rounds; // "lt.rounds"
  5754. case 11: // 1 string to match.
  5755. if (memcmp(NameR.data()+0, "rameaddress", 11))
  5756. break;
  5757. return Intrinsic::frameaddress; // "rameaddress"
  5758. }
  5759. break; // end of 'f' case.
  5760. case 'g':
  5761. switch (NameR.size()) {
  5762. default: break;
  5763. case 5: // 2 strings to match.
  5764. if (memcmp(NameR.data()+0, "cr", 2))
  5765. break;
  5766. switch (NameR[2]) {
  5767. default: break;
  5768. case 'e': // 1 string to match.
  5769. if (memcmp(NameR.data()+3, "ad", 2))
  5770. break;
  5771. return Intrinsic::gcread; // "cread"
  5772. case 'o': // 1 string to match.
  5773. if (memcmp(NameR.data()+3, "ot", 2))
  5774. break;
  5775. return Intrinsic::gcroot; // "croot"
  5776. }
  5777. break;
  5778. case 6: // 1 string to match.
  5779. if (memcmp(NameR.data()+0, "cwrite", 6))
  5780. break;
  5781. return Intrinsic::gcwrite; // "cwrite"
  5782. }
  5783. break; // end of 'g' case.
  5784. case 'h':
  5785. switch (NameR.size()) {
  5786. default: break;
  5787. case 12: // 2 strings to match.
  5788. if (memcmp(NameR.data()+0, "exagon.", 7))
  5789. break;
  5790. switch (NameR[7]) {
  5791. default: break;
  5792. case 'A': // 1 string to match.
  5793. if (memcmp(NameR.data()+8, "2.or", 4))
  5794. break;
  5795. return Intrinsic::hexagon_A2_or; // "exagon.A2.or"
  5796. case 'C': // 1 string to match.
  5797. if (memcmp(NameR.data()+8, "2.or", 4))
  5798. break;
  5799. return Intrinsic::hexagon_C2_or; // "exagon.C2.or"
  5800. }
  5801. break;
  5802. case 13: // 23 strings to match.
  5803. if (memcmp(NameR.data()+0, "exagon.", 7))
  5804. break;
  5805. switch (NameR[7]) {
  5806. default: break;
  5807. case 'A': // 13 strings to match.
  5808. switch (NameR[8]) {
  5809. default: break;
  5810. case '2': // 12 strings to match.
  5811. if (NameR[9] != '.')
  5812. break;
  5813. switch (NameR[10]) {
  5814. default: break;
  5815. case 'a': // 3 strings to match.
  5816. switch (NameR[11]) {
  5817. default: break;
  5818. case 'b': // 1 string to match.
  5819. if (NameR[12] != 's')
  5820. break;
  5821. return Intrinsic::hexagon_A2_abs; // "exagon.A2.abs"
  5822. case 'd': // 1 string to match.
  5823. if (NameR[12] != 'd')
  5824. break;
  5825. return Intrinsic::hexagon_A2_add; // "exagon.A2.add"
  5826. case 'n': // 1 string to match.
  5827. if (NameR[12] != 'd')
  5828. break;
  5829. return Intrinsic::hexagon_A2_and; // "exagon.A2.and"
  5830. }
  5831. break;
  5832. case 'm': // 2 strings to match.
  5833. switch (NameR[11]) {
  5834. default: break;
  5835. case 'a': // 1 string to match.
  5836. if (NameR[12] != 'x')
  5837. break;
  5838. return Intrinsic::hexagon_A2_max; // "exagon.A2.max"
  5839. case 'i': // 1 string to match.
  5840. if (NameR[12] != 'n')
  5841. break;
  5842. return Intrinsic::hexagon_A2_min; // "exagon.A2.min"
  5843. }
  5844. break;
  5845. case 'n': // 2 strings to match.
  5846. switch (NameR[11]) {
  5847. default: break;
  5848. case 'e': // 1 string to match.
  5849. if (NameR[12] != 'g')
  5850. break;
  5851. return Intrinsic::hexagon_A2_neg; // "exagon.A2.neg"
  5852. case 'o': // 1 string to match.
  5853. if (NameR[12] != 't')
  5854. break;
  5855. return Intrinsic::hexagon_A2_not; // "exagon.A2.not"
  5856. }
  5857. break;
  5858. case 'o': // 1 string to match.
  5859. if (memcmp(NameR.data()+11, "rp", 2))
  5860. break;
  5861. return Intrinsic::hexagon_A2_orp; // "exagon.A2.orp"
  5862. case 's': // 2 strings to match.
  5863. switch (NameR[11]) {
  5864. default: break;
  5865. case 'a': // 1 string to match.
  5866. if (NameR[12] != 't')
  5867. break;
  5868. return Intrinsic::hexagon_A2_sat; // "exagon.A2.sat"
  5869. case 'u': // 1 string to match.
  5870. if (NameR[12] != 'b')
  5871. break;
  5872. return Intrinsic::hexagon_A2_sub; // "exagon.A2.sub"
  5873. }
  5874. break;
  5875. case 't': // 1 string to match.
  5876. if (memcmp(NameR.data()+11, "fr", 2))
  5877. break;
  5878. return Intrinsic::hexagon_A2_tfr; // "exagon.A2.tfr"
  5879. case 'x': // 1 string to match.
  5880. if (memcmp(NameR.data()+11, "or", 2))
  5881. break;
  5882. return Intrinsic::hexagon_A2_xor; // "exagon.A2.xor"
  5883. }
  5884. break;
  5885. case '4': // 1 string to match.
  5886. if (memcmp(NameR.data()+9, ".orn", 4))
  5887. break;
  5888. return Intrinsic::hexagon_A4_orn; // "exagon.A4.orn"
  5889. }
  5890. break;
  5891. case 'C': // 5 strings to match.
  5892. if (memcmp(NameR.data()+8, "2.", 2))
  5893. break;
  5894. switch (NameR[10]) {
  5895. default: break;
  5896. case 'a': // 1 string to match.
  5897. if (memcmp(NameR.data()+11, "nd", 2))
  5898. break;
  5899. return Intrinsic::hexagon_C2_and; // "exagon.C2.and"
  5900. case 'm': // 1 string to match.
  5901. if (memcmp(NameR.data()+11, "ux", 2))
  5902. break;
  5903. return Intrinsic::hexagon_C2_mux; // "exagon.C2.mux"
  5904. case 'n': // 1 string to match.
  5905. if (memcmp(NameR.data()+11, "ot", 2))
  5906. break;
  5907. return Intrinsic::hexagon_C2_not; // "exagon.C2.not"
  5908. case 'o': // 1 string to match.
  5909. if (memcmp(NameR.data()+11, "rn", 2))
  5910. break;
  5911. return Intrinsic::hexagon_C2_orn; // "exagon.C2.orn"
  5912. case 'x': // 1 string to match.
  5913. if (memcmp(NameR.data()+11, "or", 2))
  5914. break;
  5915. return Intrinsic::hexagon_C2_xor; // "exagon.C2.xor"
  5916. }
  5917. break;
  5918. case 'S': // 5 strings to match.
  5919. if (memcmp(NameR.data()+8, "2.c", 3))
  5920. break;
  5921. switch (NameR[11]) {
  5922. default: break;
  5923. case 'l': // 3 strings to match.
  5924. switch (NameR[12]) {
  5925. default: break;
  5926. case '0': // 1 string to match.
  5927. return Intrinsic::hexagon_S2_cl0; // "exagon.S2.cl0"
  5928. case '1': // 1 string to match.
  5929. return Intrinsic::hexagon_S2_cl1; // "exagon.S2.cl1"
  5930. case 'b': // 1 string to match.
  5931. return Intrinsic::hexagon_S2_clb; // "exagon.S2.clb"
  5932. }
  5933. break;
  5934. case 't': // 2 strings to match.
  5935. switch (NameR[12]) {
  5936. default: break;
  5937. case '0': // 1 string to match.
  5938. return Intrinsic::hexagon_S2_ct0; // "exagon.S2.ct0"
  5939. case '1': // 1 string to match.
  5940. return Intrinsic::hexagon_S2_ct1; // "exagon.S2.ct1"
  5941. }
  5942. break;
  5943. }
  5944. break;
  5945. }
  5946. break;
  5947. case 14: // 42 strings to match.
  5948. if (memcmp(NameR.data()+0, "exagon.", 7))
  5949. break;
  5950. switch (NameR[7]) {
  5951. default: break;
  5952. case 'A': // 26 strings to match.
  5953. switch (NameR[8]) {
  5954. default: break;
  5955. case '2': // 24 strings to match.
  5956. if (NameR[9] != '.')
  5957. break;
  5958. switch (NameR[10]) {
  5959. default: break;
  5960. case 'a': // 6 strings to match.
  5961. switch (NameR[11]) {
  5962. default: break;
  5963. case 'b': // 1 string to match.
  5964. if (memcmp(NameR.data()+12, "sp", 2))
  5965. break;
  5966. return Intrinsic::hexagon_A2_absp; // "exagon.A2.absp"
  5967. case 'd': // 2 strings to match.
  5968. if (NameR[12] != 'd')
  5969. break;
  5970. switch (NameR[13]) {
  5971. default: break;
  5972. case 'i': // 1 string to match.
  5973. return Intrinsic::hexagon_A2_addi; // "exagon.A2.addi"
  5974. case 'p': // 1 string to match.
  5975. return Intrinsic::hexagon_A2_addp; // "exagon.A2.addp"
  5976. }
  5977. break;
  5978. case 'n': // 1 string to match.
  5979. if (memcmp(NameR.data()+12, "dp", 2))
  5980. break;
  5981. return Intrinsic::hexagon_A2_andp; // "exagon.A2.andp"
  5982. case 's': // 2 strings to match.
  5983. switch (NameR[12]) {
  5984. default: break;
  5985. case 'l': // 1 string to match.
  5986. if (NameR[13] != 'h')
  5987. break;
  5988. return Intrinsic::hexagon_A2_aslh; // "exagon.A2.aslh"
  5989. case 'r': // 1 string to match.
  5990. if (NameR[13] != 'h')
  5991. break;
  5992. return Intrinsic::hexagon_A2_asrh; // "exagon.A2.asrh"
  5993. }
  5994. break;
  5995. }
  5996. break;
  5997. case 'm': // 4 strings to match.
  5998. switch (NameR[11]) {
  5999. default: break;
  6000. case 'a': // 2 strings to match.
  6001. if (NameR[12] != 'x')
  6002. break;
  6003. switch (NameR[13]) {
  6004. default: break;
  6005. case 'p': // 1 string to match.
  6006. return Intrinsic::hexagon_A2_maxp; // "exagon.A2.maxp"
  6007. case 'u': // 1 string to match.
  6008. return Intrinsic::hexagon_A2_maxu; // "exagon.A2.maxu"
  6009. }
  6010. break;
  6011. case 'i': // 2 strings to match.
  6012. if (NameR[12] != 'n')
  6013. break;
  6014. switch (NameR[13]) {
  6015. default: break;
  6016. case 'p': // 1 string to match.
  6017. return Intrinsic::hexagon_A2_minp; // "exagon.A2.minp"
  6018. case 'u': // 1 string to match.
  6019. return Intrinsic::hexagon_A2_minu; // "exagon.A2.minu"
  6020. }
  6021. break;
  6022. }
  6023. break;
  6024. case 'n': // 2 strings to match.
  6025. switch (NameR[11]) {
  6026. default: break;
  6027. case 'e': // 1 string to match.
  6028. if (memcmp(NameR.data()+12, "gp", 2))
  6029. break;
  6030. return Intrinsic::hexagon_A2_negp; // "exagon.A2.negp"
  6031. case 'o': // 1 string to match.
  6032. if (memcmp(NameR.data()+12, "tp", 2))
  6033. break;
  6034. return Intrinsic::hexagon_A2_notp; // "exagon.A2.notp"
  6035. }
  6036. break;
  6037. case 'o': // 1 string to match.
  6038. if (memcmp(NameR.data()+11, "rir", 3))
  6039. break;
  6040. return Intrinsic::hexagon_A2_orir; // "exagon.A2.orir"
  6041. case 's': // 7 strings to match.
  6042. switch (NameR[11]) {
  6043. default: break;
  6044. case 'a': // 2 strings to match.
  6045. if (NameR[12] != 't')
  6046. break;
  6047. switch (NameR[13]) {
  6048. default: break;
  6049. case 'b': // 1 string to match.
  6050. return Intrinsic::hexagon_A2_satb; // "exagon.A2.satb"
  6051. case 'h': // 1 string to match.
  6052. return Intrinsic::hexagon_A2_sath; // "exagon.A2.sath"
  6053. }
  6054. break;
  6055. case 'u': // 1 string to match.
  6056. if (memcmp(NameR.data()+12, "bp", 2))
  6057. break;
  6058. return Intrinsic::hexagon_A2_subp; // "exagon.A2.subp"
  6059. case 'w': // 1 string to match.
  6060. if (memcmp(NameR.data()+12, "iz", 2))
  6061. break;
  6062. return Intrinsic::hexagon_A2_swiz; // "exagon.A2.swiz"
  6063. case 'x': // 3 strings to match.
  6064. if (NameR[12] != 't')
  6065. break;
  6066. switch (NameR[13]) {
  6067. default: break;
  6068. case 'b': // 1 string to match.
  6069. return Intrinsic::hexagon_A2_sxtb; // "exagon.A2.sxtb"
  6070. case 'h': // 1 string to match.
  6071. return Intrinsic::hexagon_A2_sxth; // "exagon.A2.sxth"
  6072. case 'w': // 1 string to match.
  6073. return Intrinsic::hexagon_A2_sxtw; // "exagon.A2.sxtw"
  6074. }
  6075. break;
  6076. }
  6077. break;
  6078. case 't': // 1 string to match.
  6079. if (memcmp(NameR.data()+11, "frp", 3))
  6080. break;
  6081. return Intrinsic::hexagon_A2_tfrp; // "exagon.A2.tfrp"
  6082. case 'x': // 1 string to match.
  6083. if (memcmp(NameR.data()+11, "orp", 3))
  6084. break;
  6085. return Intrinsic::hexagon_A2_xorp; // "exagon.A2.xorp"
  6086. case 'z': // 2 strings to match.
  6087. if (memcmp(NameR.data()+11, "xt", 2))
  6088. break;
  6089. switch (NameR[13]) {
  6090. default: break;
  6091. case 'b': // 1 string to match.
  6092. return Intrinsic::hexagon_A2_zxtb; // "exagon.A2.zxtb"
  6093. case 'h': // 1 string to match.
  6094. return Intrinsic::hexagon_A2_zxth; // "exagon.A2.zxth"
  6095. }
  6096. break;
  6097. }
  6098. break;
  6099. case '4': // 2 strings to match.
  6100. if (NameR[9] != '.')
  6101. break;
  6102. switch (NameR[10]) {
  6103. default: break;
  6104. case 'a': // 1 string to match.
  6105. if (memcmp(NameR.data()+11, "ndn", 3))
  6106. break;
  6107. return Intrinsic::hexagon_A4_andn; // "exagon.A4.andn"
  6108. case 'o': // 1 string to match.
  6109. if (memcmp(NameR.data()+11, "rnp", 3))
  6110. break;
  6111. return Intrinsic::hexagon_A4_ornp; // "exagon.A4.ornp"
  6112. }
  6113. break;
  6114. }
  6115. break;
  6116. case 'C': // 5 strings to match.
  6117. if (memcmp(NameR.data()+8, "2.", 2))
  6118. break;
  6119. switch (NameR[10]) {
  6120. default: break;
  6121. case 'a': // 3 strings to match.
  6122. switch (NameR[11]) {
  6123. default: break;
  6124. case 'l': // 1 string to match.
  6125. if (memcmp(NameR.data()+12, "l8", 2))
  6126. break;
  6127. return Intrinsic::hexagon_C2_all8; // "exagon.C2.all8"
  6128. case 'n': // 2 strings to match.
  6129. switch (NameR[12]) {
  6130. default: break;
  6131. case 'd': // 1 string to match.
  6132. if (NameR[13] != 'n')
  6133. break;
  6134. return Intrinsic::hexagon_C2_andn; // "exagon.C2.andn"
  6135. case 'y': // 1 string to match.
  6136. if (NameR[13] != '8')
  6137. break;
  6138. return Intrinsic::hexagon_C2_any8; // "exagon.C2.any8"
  6139. }
  6140. break;
  6141. }
  6142. break;
  6143. case 'm': // 1 string to match.
  6144. if (memcmp(NameR.data()+11, "ask", 3))
  6145. break;
  6146. return Intrinsic::hexagon_C2_mask; // "exagon.C2.mask"
  6147. case 'v': // 1 string to match.
  6148. if (memcmp(NameR.data()+11, "mux", 3))
  6149. break;
  6150. return Intrinsic::hexagon_C2_vmux; // "exagon.C2.vmux"
  6151. }
  6152. break;
  6153. case 'M': // 3 strings to match.
  6154. if (memcmp(NameR.data()+8, "2.", 2))
  6155. break;
  6156. switch (NameR[10]) {
  6157. default: break;
  6158. case 'a': // 1 string to match.
  6159. if (memcmp(NameR.data()+11, "cci", 3))
  6160. break;
  6161. return Intrinsic::hexagon_M2_acci; // "exagon.M2.acci"
  6162. case 'm': // 2 strings to match.
  6163. switch (NameR[11]) {
  6164. default: break;
  6165. case 'a': // 1 string to match.
  6166. if (memcmp(NameR.data()+12, "ci", 2))
  6167. break;
  6168. return Intrinsic::hexagon_M2_maci; // "exagon.M2.maci"
  6169. case 'p': // 1 string to match.
  6170. if (memcmp(NameR.data()+12, "yi", 2))
  6171. break;
  6172. return Intrinsic::hexagon_M2_mpyi; // "exagon.M2.mpyi"
  6173. }
  6174. break;
  6175. }
  6176. break;
  6177. case 'S': // 8 strings to match.
  6178. switch (NameR[8]) {
  6179. default: break;
  6180. case '2': // 7 strings to match.
  6181. if (NameR[9] != '.')
  6182. break;
  6183. switch (NameR[10]) {
  6184. default: break;
  6185. case 'b': // 1 string to match.
  6186. if (memcmp(NameR.data()+11, "rev", 3))
  6187. break;
  6188. return Intrinsic::hexagon_S2_brev; // "exagon.S2.brev"
  6189. case 'c': // 5 strings to match.
  6190. switch (NameR[11]) {
  6191. default: break;
  6192. case 'l': // 3 strings to match.
  6193. switch (NameR[12]) {
  6194. default: break;
  6195. case '0': // 1 string to match.
  6196. if (NameR[13] != 'p')
  6197. break;
  6198. return Intrinsic::hexagon_S2_cl0p; // "exagon.S2.cl0p"
  6199. case '1': // 1 string to match.
  6200. if (NameR[13] != 'p')
  6201. break;
  6202. return Intrinsic::hexagon_S2_cl1p; // "exagon.S2.cl1p"
  6203. case 'b': // 1 string to match.
  6204. if (NameR[13] != 'p')
  6205. break;
  6206. return Intrinsic::hexagon_S2_clbp; // "exagon.S2.clbp"
  6207. }
  6208. break;
  6209. case 't': // 2 strings to match.
  6210. switch (NameR[12]) {
  6211. default: break;
  6212. case '0': // 1 string to match.
  6213. if (NameR[13] != 'p')
  6214. break;
  6215. return Intrinsic::hexagon_S2_ct0p; // "exagon.S2.ct0p"
  6216. case '1': // 1 string to match.
  6217. if (NameR[13] != 'p')
  6218. break;
  6219. return Intrinsic::hexagon_S2_ct1p; // "exagon.S2.ct1p"
  6220. }
  6221. break;
  6222. }
  6223. break;
  6224. case 'l': // 1 string to match.
  6225. if (memcmp(NameR.data()+11, "fsp", 3))
  6226. break;
  6227. return Intrinsic::hexagon_S2_lfsp; // "exagon.S2.lfsp"
  6228. }
  6229. break;
  6230. case '4': // 1 string to match.
  6231. if (memcmp(NameR.data()+9, ".lsli", 5))
  6232. break;
  6233. return Intrinsic::hexagon_S4_lsli; // "exagon.S4.lsli"
  6234. }
  6235. break;
  6236. }
  6237. break;
  6238. case 15: // 58 strings to match.
  6239. if (memcmp(NameR.data()+0, "exagon.", 7))
  6240. break;
  6241. switch (NameR[7]) {
  6242. default: break;
  6243. case 'A': // 27 strings to match.
  6244. switch (NameR[8]) {
  6245. default: break;
  6246. case '2': // 26 strings to match.
  6247. if (NameR[9] != '.')
  6248. break;
  6249. switch (NameR[10]) {
  6250. default: break;
  6251. case 'a': // 2 strings to match.
  6252. switch (NameR[11]) {
  6253. default: break;
  6254. case 'd': // 1 string to match.
  6255. if (memcmp(NameR.data()+12, "dsp", 3))
  6256. break;
  6257. return Intrinsic::hexagon_A2_addsp; // "exagon.A2.addsp"
  6258. case 'n': // 1 string to match.
  6259. if (memcmp(NameR.data()+12, "dir", 3))
  6260. break;
  6261. return Intrinsic::hexagon_A2_andir; // "exagon.A2.andir"
  6262. }
  6263. break;
  6264. case 'm': // 2 strings to match.
  6265. switch (NameR[11]) {
  6266. default: break;
  6267. case 'a': // 1 string to match.
  6268. if (memcmp(NameR.data()+12, "xup", 3))
  6269. break;
  6270. return Intrinsic::hexagon_A2_maxup; // "exagon.A2.maxup"
  6271. case 'i': // 1 string to match.
  6272. if (memcmp(NameR.data()+12, "nup", 3))
  6273. break;
  6274. return Intrinsic::hexagon_A2_minup; // "exagon.A2.minup"
  6275. }
  6276. break;
  6277. case 's': // 3 strings to match.
  6278. switch (NameR[11]) {
  6279. default: break;
  6280. case 'a': // 2 strings to match.
  6281. if (memcmp(NameR.data()+12, "tu", 2))
  6282. break;
  6283. switch (NameR[14]) {
  6284. default: break;
  6285. case 'b': // 1 string to match.
  6286. return Intrinsic::hexagon_A2_satub; // "exagon.A2.satub"
  6287. case 'h': // 1 string to match.
  6288. return Intrinsic::hexagon_A2_satuh; // "exagon.A2.satuh"
  6289. }
  6290. break;
  6291. case 'u': // 1 string to match.
  6292. if (memcmp(NameR.data()+12, "bri", 3))
  6293. break;
  6294. return Intrinsic::hexagon_A2_subri; // "exagon.A2.subri"
  6295. }
  6296. break;
  6297. case 't': // 4 strings to match.
  6298. if (memcmp(NameR.data()+11, "fr", 2))
  6299. break;
  6300. switch (NameR[13]) {
  6301. default: break;
  6302. case 'i': // 2 strings to match.
  6303. switch (NameR[14]) {
  6304. default: break;
  6305. case 'h': // 1 string to match.
  6306. return Intrinsic::hexagon_A2_tfrih; // "exagon.A2.tfrih"
  6307. case 'l': // 1 string to match.
  6308. return Intrinsic::hexagon_A2_tfril; // "exagon.A2.tfril"
  6309. }
  6310. break;
  6311. case 'p': // 1 string to match.
  6312. if (NameR[14] != 'i')
  6313. break;
  6314. return Intrinsic::hexagon_A2_tfrpi; // "exagon.A2.tfrpi"
  6315. case 's': // 1 string to match.
  6316. if (NameR[14] != 'i')
  6317. break;
  6318. return Intrinsic::hexagon_A2_tfrsi; // "exagon.A2.tfrsi"
  6319. }
  6320. break;
  6321. case 'v': // 15 strings to match.
  6322. switch (NameR[11]) {
  6323. default: break;
  6324. case 'a': // 6 strings to match.
  6325. switch (NameR[12]) {
  6326. default: break;
  6327. case 'b': // 2 strings to match.
  6328. if (NameR[13] != 's')
  6329. break;
  6330. switch (NameR[14]) {
  6331. default: break;
  6332. case 'h': // 1 string to match.
  6333. return Intrinsic::hexagon_A2_vabsh; // "exagon.A2.vabsh"
  6334. case 'w': // 1 string to match.
  6335. return Intrinsic::hexagon_A2_vabsw; // "exagon.A2.vabsw"
  6336. }
  6337. break;
  6338. case 'd': // 2 strings to match.
  6339. if (NameR[13] != 'd')
  6340. break;
  6341. switch (NameR[14]) {
  6342. default: break;
  6343. case 'h': // 1 string to match.
  6344. return Intrinsic::hexagon_A2_vaddh; // "exagon.A2.vaddh"
  6345. case 'w': // 1 string to match.
  6346. return Intrinsic::hexagon_A2_vaddw; // "exagon.A2.vaddw"
  6347. }
  6348. break;
  6349. case 'v': // 2 strings to match.
  6350. if (NameR[13] != 'g')
  6351. break;
  6352. switch (NameR[14]) {
  6353. default: break;
  6354. case 'h': // 1 string to match.
  6355. return Intrinsic::hexagon_A2_vavgh; // "exagon.A2.vavgh"
  6356. case 'w': // 1 string to match.
  6357. return Intrinsic::hexagon_A2_vavgw; // "exagon.A2.vavgw"
  6358. }
  6359. break;
  6360. }
  6361. break;
  6362. case 'c': // 1 string to match.
  6363. if (memcmp(NameR.data()+12, "onj", 3))
  6364. break;
  6365. return Intrinsic::hexagon_A2_vconj; // "exagon.A2.vconj"
  6366. case 'm': // 6 strings to match.
  6367. switch (NameR[12]) {
  6368. default: break;
  6369. case 'a': // 3 strings to match.
  6370. if (NameR[13] != 'x')
  6371. break;
  6372. switch (NameR[14]) {
  6373. default: break;
  6374. case 'b': // 1 string to match.
  6375. return Intrinsic::hexagon_A2_vmaxb; // "exagon.A2.vmaxb"
  6376. case 'h': // 1 string to match.
  6377. return Intrinsic::hexagon_A2_vmaxh; // "exagon.A2.vmaxh"
  6378. case 'w': // 1 string to match.
  6379. return Intrinsic::hexagon_A2_vmaxw; // "exagon.A2.vmaxw"
  6380. }
  6381. break;
  6382. case 'i': // 3 strings to match.
  6383. if (NameR[13] != 'n')
  6384. break;
  6385. switch (NameR[14]) {
  6386. default: break;
  6387. case 'b': // 1 string to match.
  6388. return Intrinsic::hexagon_A2_vminb; // "exagon.A2.vminb"
  6389. case 'h': // 1 string to match.
  6390. return Intrinsic::hexagon_A2_vminh; // "exagon.A2.vminh"
  6391. case 'w': // 1 string to match.
  6392. return Intrinsic::hexagon_A2_vminw; // "exagon.A2.vminw"
  6393. }
  6394. break;
  6395. }
  6396. break;
  6397. case 's': // 2 strings to match.
  6398. if (memcmp(NameR.data()+12, "ub", 2))
  6399. break;
  6400. switch (NameR[14]) {
  6401. default: break;
  6402. case 'h': // 1 string to match.
  6403. return Intrinsic::hexagon_A2_vsubh; // "exagon.A2.vsubh"
  6404. case 'w': // 1 string to match.
  6405. return Intrinsic::hexagon_A2_vsubw; // "exagon.A2.vsubw"
  6406. }
  6407. break;
  6408. }
  6409. break;
  6410. }
  6411. break;
  6412. case '4': // 1 string to match.
  6413. if (memcmp(NameR.data()+9, ".andnp", 6))
  6414. break;
  6415. return Intrinsic::hexagon_A4_andnp; // "exagon.A4.andnp"
  6416. }
  6417. break;
  6418. case 'C': // 9 strings to match.
  6419. switch (NameR[8]) {
  6420. default: break;
  6421. case '2': // 8 strings to match.
  6422. if (NameR[9] != '.')
  6423. break;
  6424. switch (NameR[10]) {
  6425. default: break;
  6426. case 'c': // 3 strings to match.
  6427. if (memcmp(NameR.data()+11, "mp", 2))
  6428. break;
  6429. switch (NameR[13]) {
  6430. default: break;
  6431. case 'e': // 1 string to match.
  6432. if (NameR[14] != 'q')
  6433. break;
  6434. return Intrinsic::hexagon_C2_cmpeq; // "exagon.C2.cmpeq"
  6435. case 'g': // 1 string to match.
  6436. if (NameR[14] != 't')
  6437. break;
  6438. return Intrinsic::hexagon_C2_cmpgt; // "exagon.C2.cmpgt"
  6439. case 'l': // 1 string to match.
  6440. if (NameR[14] != 't')
  6441. break;
  6442. return Intrinsic::hexagon_C2_cmplt; // "exagon.C2.cmplt"
  6443. }
  6444. break;
  6445. case 'm': // 3 strings to match.
  6446. if (memcmp(NameR.data()+11, "ux", 2))
  6447. break;
  6448. switch (NameR[13]) {
  6449. default: break;
  6450. case 'i': // 2 strings to match.
  6451. switch (NameR[14]) {
  6452. default: break;
  6453. case 'i': // 1 string to match.
  6454. return Intrinsic::hexagon_C2_muxii; // "exagon.C2.muxii"
  6455. case 'r': // 1 string to match.
  6456. return Intrinsic::hexagon_C2_muxir; // "exagon.C2.muxir"
  6457. }
  6458. break;
  6459. case 'r': // 1 string to match.
  6460. if (NameR[14] != 'i')
  6461. break;
  6462. return Intrinsic::hexagon_C2_muxri; // "exagon.C2.muxri"
  6463. }
  6464. break;
  6465. case 't': // 2 strings to match.
  6466. if (memcmp(NameR.data()+11, "fr", 2))
  6467. break;
  6468. switch (NameR[13]) {
  6469. default: break;
  6470. case 'p': // 1 string to match.
  6471. if (NameR[14] != 'r')
  6472. break;
  6473. return Intrinsic::hexagon_C2_tfrpr; // "exagon.C2.tfrpr"
  6474. case 'r': // 1 string to match.
  6475. if (NameR[14] != 'p')
  6476. break;
  6477. return Intrinsic::hexagon_C2_tfrrp; // "exagon.C2.tfrrp"
  6478. }
  6479. break;
  6480. }
  6481. break;
  6482. case '4': // 1 string to match.
  6483. if (memcmp(NameR.data()+9, ".or.or", 6))
  6484. break;
  6485. return Intrinsic::hexagon_C4_or_or; // "exagon.C4.or.or"
  6486. }
  6487. break;
  6488. case 'F': // 14 strings to match.
  6489. if (memcmp(NameR.data()+8, "2.", 2))
  6490. break;
  6491. switch (NameR[10]) {
  6492. default: break;
  6493. case 'd': // 7 strings to match.
  6494. if (NameR[11] != 'f')
  6495. break;
  6496. switch (NameR[12]) {
  6497. default: break;
  6498. case 'a': // 1 string to match.
  6499. if (memcmp(NameR.data()+13, "dd", 2))
  6500. break;
  6501. return Intrinsic::hexagon_F2_dfadd; // "exagon.F2.dfadd"
  6502. case 'f': // 2 strings to match.
  6503. if (NameR[13] != 'm')
  6504. break;
  6505. switch (NameR[14]) {
  6506. default: break;
  6507. case 'a': // 1 string to match.
  6508. return Intrinsic::hexagon_F2_dffma; // "exagon.F2.dffma"
  6509. case 's': // 1 string to match.
  6510. return Intrinsic::hexagon_F2_dffms; // "exagon.F2.dffms"
  6511. }
  6512. break;
  6513. case 'm': // 3 strings to match.
  6514. switch (NameR[13]) {
  6515. default: break;
  6516. case 'a': // 1 string to match.
  6517. if (NameR[14] != 'x')
  6518. break;
  6519. return Intrinsic::hexagon_F2_dfmax; // "exagon.F2.dfmax"
  6520. case 'i': // 1 string to match.
  6521. if (NameR[14] != 'n')
  6522. break;
  6523. return Intrinsic::hexagon_F2_dfmin; // "exagon.F2.dfmin"
  6524. case 'p': // 1 string to match.
  6525. if (NameR[14] != 'y')
  6526. break;
  6527. return Intrinsic::hexagon_F2_dfmpy; // "exagon.F2.dfmpy"
  6528. }
  6529. break;
  6530. case 's': // 1 string to match.
  6531. if (memcmp(NameR.data()+13, "ub", 2))
  6532. break;
  6533. return Intrinsic::hexagon_F2_dfsub; // "exagon.F2.dfsub"
  6534. }
  6535. break;
  6536. case 's': // 7 strings to match.
  6537. if (NameR[11] != 'f')
  6538. break;
  6539. switch (NameR[12]) {
  6540. default: break;
  6541. case 'a': // 1 string to match.
  6542. if (memcmp(NameR.data()+13, "dd", 2))
  6543. break;
  6544. return Intrinsic::hexagon_F2_sfadd; // "exagon.F2.sfadd"
  6545. case 'f': // 2 strings to match.
  6546. if (NameR[13] != 'm')
  6547. break;
  6548. switch (NameR[14]) {
  6549. default: break;
  6550. case 'a': // 1 string to match.
  6551. return Intrinsic::hexagon_F2_sffma; // "exagon.F2.sffma"
  6552. case 's': // 1 string to match.
  6553. return Intrinsic::hexagon_F2_sffms; // "exagon.F2.sffms"
  6554. }
  6555. break;
  6556. case 'm': // 3 strings to match.
  6557. switch (NameR[13]) {
  6558. default: break;
  6559. case 'a': // 1 string to match.
  6560. if (NameR[14] != 'x')
  6561. break;
  6562. return Intrinsic::hexagon_F2_sfmax; // "exagon.F2.sfmax"
  6563. case 'i': // 1 string to match.
  6564. if (NameR[14] != 'n')
  6565. break;
  6566. return Intrinsic::hexagon_F2_sfmin; // "exagon.F2.sfmin"
  6567. case 'p': // 1 string to match.
  6568. if (NameR[14] != 'y')
  6569. break;
  6570. return Intrinsic::hexagon_F2_sfmpy; // "exagon.F2.sfmpy"
  6571. }
  6572. break;
  6573. case 's': // 1 string to match.
  6574. if (memcmp(NameR.data()+13, "ub", 2))
  6575. break;
  6576. return Intrinsic::hexagon_F2_sfsub; // "exagon.F2.sfsub"
  6577. }
  6578. break;
  6579. }
  6580. break;
  6581. case 'M': // 6 strings to match.
  6582. switch (NameR[8]) {
  6583. default: break;
  6584. case '2': // 4 strings to match.
  6585. if (NameR[9] != '.')
  6586. break;
  6587. switch (NameR[10]) {
  6588. default: break;
  6589. case 'a': // 1 string to match.
  6590. if (memcmp(NameR.data()+11, "ccii", 4))
  6591. break;
  6592. return Intrinsic::hexagon_M2_accii; // "exagon.M2.accii"
  6593. case 'm': // 1 string to match.
  6594. if (memcmp(NameR.data()+11, "pyui", 4))
  6595. break;
  6596. return Intrinsic::hexagon_M2_mpyui; // "exagon.M2.mpyui"
  6597. case 'n': // 1 string to match.
  6598. if (memcmp(NameR.data()+11, "acci", 4))
  6599. break;
  6600. return Intrinsic::hexagon_M2_nacci; // "exagon.M2.nacci"
  6601. case 'v': // 1 string to match.
  6602. if (memcmp(NameR.data()+11, "mac2", 4))
  6603. break;
  6604. return Intrinsic::hexagon_M2_vmac2; // "exagon.M2.vmac2"
  6605. }
  6606. break;
  6607. case '4': // 2 strings to match.
  6608. if (NameR[9] != '.')
  6609. break;
  6610. switch (NameR[10]) {
  6611. default: break;
  6612. case 'o': // 1 string to match.
  6613. if (memcmp(NameR.data()+11, "r.or", 4))
  6614. break;
  6615. return Intrinsic::hexagon_M4_or_or; // "exagon.M4.or.or"
  6616. case 'p': // 1 string to match.
  6617. if (memcmp(NameR.data()+11, "mpyw", 4))
  6618. break;
  6619. return Intrinsic::hexagon_M4_pmpyw; // "exagon.M4.pmpyw"
  6620. }
  6621. break;
  6622. }
  6623. break;
  6624. case 'S': // 1 string to match.
  6625. if (memcmp(NameR.data()+8, "2.brevp", 7))
  6626. break;
  6627. return Intrinsic::hexagon_S2_brevp; // "exagon.S2.brevp"
  6628. case 'c': // 1 string to match.
  6629. if (memcmp(NameR.data()+8, "irc.ldd", 7))
  6630. break;
  6631. return Intrinsic::hexagon_circ_ldd; // "exagon.circ.ldd"
  6632. }
  6633. break;
  6634. case 16: // 70 strings to match.
  6635. if (memcmp(NameR.data()+0, "exagon.", 7))
  6636. break;
  6637. switch (NameR[7]) {
  6638. default: break;
  6639. case 'A': // 35 strings to match.
  6640. switch (NameR[8]) {
  6641. default: break;
  6642. case '2': // 26 strings to match.
  6643. if (NameR[9] != '.')
  6644. break;
  6645. switch (NameR[10]) {
  6646. default: break;
  6647. case 'a': // 2 strings to match.
  6648. switch (NameR[11]) {
  6649. default: break;
  6650. case 'b': // 1 string to match.
  6651. if (memcmp(NameR.data()+12, "ssat", 4))
  6652. break;
  6653. return Intrinsic::hexagon_A2_abssat; // "exagon.A2.abssat"
  6654. case 'd': // 1 string to match.
  6655. if (memcmp(NameR.data()+12, "dsat", 4))
  6656. break;
  6657. return Intrinsic::hexagon_A2_addsat; // "exagon.A2.addsat"
  6658. }
  6659. break;
  6660. case 'n': // 1 string to match.
  6661. if (memcmp(NameR.data()+11, "egsat", 5))
  6662. break;
  6663. return Intrinsic::hexagon_A2_negsat; // "exagon.A2.negsat"
  6664. case 's': // 4 strings to match.
  6665. switch (NameR[11]) {
  6666. default: break;
  6667. case 'u': // 1 string to match.
  6668. if (memcmp(NameR.data()+12, "bsat", 4))
  6669. break;
  6670. return Intrinsic::hexagon_A2_subsat; // "exagon.A2.subsat"
  6671. case 'v': // 3 strings to match.
  6672. switch (NameR[12]) {
  6673. default: break;
  6674. case 'a': // 2 strings to match.
  6675. switch (NameR[13]) {
  6676. default: break;
  6677. case 'd': // 1 string to match.
  6678. if (memcmp(NameR.data()+14, "dh", 2))
  6679. break;
  6680. return Intrinsic::hexagon_A2_svaddh; // "exagon.A2.svaddh"
  6681. case 'v': // 1 string to match.
  6682. if (memcmp(NameR.data()+14, "gh", 2))
  6683. break;
  6684. return Intrinsic::hexagon_A2_svavgh; // "exagon.A2.svavgh"
  6685. }
  6686. break;
  6687. case 's': // 1 string to match.
  6688. if (memcmp(NameR.data()+13, "ubh", 3))
  6689. break;
  6690. return Intrinsic::hexagon_A2_svsubh; // "exagon.A2.svsubh"
  6691. }
  6692. break;
  6693. }
  6694. break;
  6695. case 'v': // 19 strings to match.
  6696. switch (NameR[11]) {
  6697. default: break;
  6698. case 'a': // 8 strings to match.
  6699. switch (NameR[12]) {
  6700. default: break;
  6701. case 'd': // 3 strings to match.
  6702. if (NameR[13] != 'd')
  6703. break;
  6704. switch (NameR[14]) {
  6705. default: break;
  6706. case 'h': // 1 string to match.
  6707. if (NameR[15] != 's')
  6708. break;
  6709. return Intrinsic::hexagon_A2_vaddhs; // "exagon.A2.vaddhs"
  6710. case 'u': // 1 string to match.
  6711. if (NameR[15] != 'b')
  6712. break;
  6713. return Intrinsic::hexagon_A2_vaddub; // "exagon.A2.vaddub"
  6714. case 'w': // 1 string to match.
  6715. if (NameR[15] != 's')
  6716. break;
  6717. return Intrinsic::hexagon_A2_vaddws; // "exagon.A2.vaddws"
  6718. }
  6719. break;
  6720. case 'v': // 5 strings to match.
  6721. if (NameR[13] != 'g')
  6722. break;
  6723. switch (NameR[14]) {
  6724. default: break;
  6725. case 'h': // 1 string to match.
  6726. if (NameR[15] != 'r')
  6727. break;
  6728. return Intrinsic::hexagon_A2_vavghr; // "exagon.A2.vavghr"
  6729. case 'u': // 3 strings to match.
  6730. switch (NameR[15]) {
  6731. default: break;
  6732. case 'b': // 1 string to match.
  6733. return Intrinsic::hexagon_A2_vavgub; // "exagon.A2.vavgub"
  6734. case 'h': // 1 string to match.
  6735. return Intrinsic::hexagon_A2_vavguh; // "exagon.A2.vavguh"
  6736. case 'w': // 1 string to match.
  6737. return Intrinsic::hexagon_A2_vavguw; // "exagon.A2.vavguw"
  6738. }
  6739. break;
  6740. case 'w': // 1 string to match.
  6741. if (NameR[15] != 'r')
  6742. break;
  6743. return Intrinsic::hexagon_A2_vavgwr; // "exagon.A2.vavgwr"
  6744. }
  6745. break;
  6746. }
  6747. break;
  6748. case 'm': // 6 strings to match.
  6749. switch (NameR[12]) {
  6750. default: break;
  6751. case 'a': // 3 strings to match.
  6752. if (memcmp(NameR.data()+13, "xu", 2))
  6753. break;
  6754. switch (NameR[15]) {
  6755. default: break;
  6756. case 'b': // 1 string to match.
  6757. return Intrinsic::hexagon_A2_vmaxub; // "exagon.A2.vmaxub"
  6758. case 'h': // 1 string to match.
  6759. return Intrinsic::hexagon_A2_vmaxuh; // "exagon.A2.vmaxuh"
  6760. case 'w': // 1 string to match.
  6761. return Intrinsic::hexagon_A2_vmaxuw; // "exagon.A2.vmaxuw"
  6762. }
  6763. break;
  6764. case 'i': // 3 strings to match.
  6765. if (memcmp(NameR.data()+13, "nu", 2))
  6766. break;
  6767. switch (NameR[15]) {
  6768. default: break;
  6769. case 'b': // 1 string to match.
  6770. return Intrinsic::hexagon_A2_vminub; // "exagon.A2.vminub"
  6771. case 'h': // 1 string to match.
  6772. return Intrinsic::hexagon_A2_vminuh; // "exagon.A2.vminuh"
  6773. case 'w': // 1 string to match.
  6774. return Intrinsic::hexagon_A2_vminuw; // "exagon.A2.vminuw"
  6775. }
  6776. break;
  6777. }
  6778. break;
  6779. case 'n': // 2 strings to match.
  6780. if (memcmp(NameR.data()+12, "avg", 3))
  6781. break;
  6782. switch (NameR[15]) {
  6783. default: break;
  6784. case 'h': // 1 string to match.
  6785. return Intrinsic::hexagon_A2_vnavgh; // "exagon.A2.vnavgh"
  6786. case 'w': // 1 string to match.
  6787. return Intrinsic::hexagon_A2_vnavgw; // "exagon.A2.vnavgw"
  6788. }
  6789. break;
  6790. case 's': // 3 strings to match.
  6791. if (memcmp(NameR.data()+12, "ub", 2))
  6792. break;
  6793. switch (NameR[14]) {
  6794. default: break;
  6795. case 'h': // 1 string to match.
  6796. if (NameR[15] != 's')
  6797. break;
  6798. return Intrinsic::hexagon_A2_vsubhs; // "exagon.A2.vsubhs"
  6799. case 'u': // 1 string to match.
  6800. if (NameR[15] != 'b')
  6801. break;
  6802. return Intrinsic::hexagon_A2_vsubub; // "exagon.A2.vsubub"
  6803. case 'w': // 1 string to match.
  6804. if (NameR[15] != 's')
  6805. break;
  6806. return Intrinsic::hexagon_A2_vsubws; // "exagon.A2.vsubws"
  6807. }
  6808. break;
  6809. }
  6810. break;
  6811. }
  6812. break;
  6813. case '4': // 9 strings to match.
  6814. if (NameR[9] != '.')
  6815. break;
  6816. switch (NameR[10]) {
  6817. default: break;
  6818. case 'c': // 4 strings to match.
  6819. if (memcmp(NameR.data()+11, "mp", 2))
  6820. break;
  6821. switch (NameR[13]) {
  6822. default: break;
  6823. case 'b': // 2 strings to match.
  6824. switch (NameR[14]) {
  6825. default: break;
  6826. case 'e': // 1 string to match.
  6827. if (NameR[15] != 'q')
  6828. break;
  6829. return Intrinsic::hexagon_A4_cmpbeq; // "exagon.A4.cmpbeq"
  6830. case 'g': // 1 string to match.
  6831. if (NameR[15] != 't')
  6832. break;
  6833. return Intrinsic::hexagon_A4_cmpbgt; // "exagon.A4.cmpbgt"
  6834. }
  6835. break;
  6836. case 'h': // 2 strings to match.
  6837. switch (NameR[14]) {
  6838. default: break;
  6839. case 'e': // 1 string to match.
  6840. if (NameR[15] != 'q')
  6841. break;
  6842. return Intrinsic::hexagon_A4_cmpheq; // "exagon.A4.cmpheq"
  6843. case 'g': // 1 string to match.
  6844. if (NameR[15] != 't')
  6845. break;
  6846. return Intrinsic::hexagon_A4_cmphgt; // "exagon.A4.cmphgt"
  6847. }
  6848. break;
  6849. }
  6850. break;
  6851. case 'r': // 1 string to match.
  6852. if (memcmp(NameR.data()+11, "cmpeq", 5))
  6853. break;
  6854. return Intrinsic::hexagon_A4_rcmpeq; // "exagon.A4.rcmpeq"
  6855. case 'v': // 4 strings to match.
  6856. if (memcmp(NameR.data()+11, "rm", 2))
  6857. break;
  6858. switch (NameR[13]) {
  6859. default: break;
  6860. case 'a': // 2 strings to match.
  6861. if (NameR[14] != 'x')
  6862. break;
  6863. switch (NameR[15]) {
  6864. default: break;
  6865. case 'h': // 1 string to match.
  6866. return Intrinsic::hexagon_A4_vrmaxh; // "exagon.A4.vrmaxh"
  6867. case 'w': // 1 string to match.
  6868. return Intrinsic::hexagon_A4_vrmaxw; // "exagon.A4.vrmaxw"
  6869. }
  6870. break;
  6871. case 'i': // 2 strings to match.
  6872. if (NameR[14] != 'n')
  6873. break;
  6874. switch (NameR[15]) {
  6875. default: break;
  6876. case 'h': // 1 string to match.
  6877. return Intrinsic::hexagon_A4_vrminh; // "exagon.A4.vrminh"
  6878. case 'w': // 1 string to match.
  6879. return Intrinsic::hexagon_A4_vrminw; // "exagon.A4.vrminw"
  6880. }
  6881. break;
  6882. }
  6883. break;
  6884. }
  6885. break;
  6886. }
  6887. break;
  6888. case 'C': // 12 strings to match.
  6889. switch (NameR[8]) {
  6890. default: break;
  6891. case '2': // 7 strings to match.
  6892. if (memcmp(NameR.data()+9, ".cmp", 4))
  6893. break;
  6894. switch (NameR[13]) {
  6895. default: break;
  6896. case 'e': // 2 strings to match.
  6897. if (NameR[14] != 'q')
  6898. break;
  6899. switch (NameR[15]) {
  6900. default: break;
  6901. case 'i': // 1 string to match.
  6902. return Intrinsic::hexagon_C2_cmpeqi; // "exagon.C2.cmpeqi"
  6903. case 'p': // 1 string to match.
  6904. return Intrinsic::hexagon_C2_cmpeqp; // "exagon.C2.cmpeqp"
  6905. }
  6906. break;
  6907. case 'g': // 4 strings to match.
  6908. switch (NameR[14]) {
  6909. default: break;
  6910. case 'e': // 1 string to match.
  6911. if (NameR[15] != 'i')
  6912. break;
  6913. return Intrinsic::hexagon_C2_cmpgei; // "exagon.C2.cmpgei"
  6914. case 't': // 3 strings to match.
  6915. switch (NameR[15]) {
  6916. default: break;
  6917. case 'i': // 1 string to match.
  6918. return Intrinsic::hexagon_C2_cmpgti; // "exagon.C2.cmpgti"
  6919. case 'p': // 1 string to match.
  6920. return Intrinsic::hexagon_C2_cmpgtp; // "exagon.C2.cmpgtp"
  6921. case 'u': // 1 string to match.
  6922. return Intrinsic::hexagon_C2_cmpgtu; // "exagon.C2.cmpgtu"
  6923. }
  6924. break;
  6925. }
  6926. break;
  6927. case 'l': // 1 string to match.
  6928. if (memcmp(NameR.data()+14, "tu", 2))
  6929. break;
  6930. return Intrinsic::hexagon_C2_cmpltu; // "exagon.C2.cmpltu"
  6931. }
  6932. break;
  6933. case '4': // 5 strings to match.
  6934. if (NameR[9] != '.')
  6935. break;
  6936. switch (NameR[10]) {
  6937. default: break;
  6938. case 'a': // 1 string to match.
  6939. if (memcmp(NameR.data()+11, "nd.or", 5))
  6940. break;
  6941. return Intrinsic::hexagon_C4_and_or; // "exagon.C4.and.or"
  6942. case 'c': // 2 strings to match.
  6943. if (memcmp(NameR.data()+11, "mp", 2))
  6944. break;
  6945. switch (NameR[13]) {
  6946. default: break;
  6947. case 'l': // 1 string to match.
  6948. if (memcmp(NameR.data()+14, "te", 2))
  6949. break;
  6950. return Intrinsic::hexagon_C4_cmplte; // "exagon.C4.cmplte"
  6951. case 'n': // 1 string to match.
  6952. if (memcmp(NameR.data()+14, "eq", 2))
  6953. break;
  6954. return Intrinsic::hexagon_C4_cmpneq; // "exagon.C4.cmpneq"
  6955. }
  6956. break;
  6957. case 'o': // 2 strings to match.
  6958. if (memcmp(NameR.data()+11, "r.", 2))
  6959. break;
  6960. switch (NameR[13]) {
  6961. default: break;
  6962. case 'a': // 1 string to match.
  6963. if (memcmp(NameR.data()+14, "nd", 2))
  6964. break;
  6965. return Intrinsic::hexagon_C4_or_and; // "exagon.C4.or.and"
  6966. case 'o': // 1 string to match.
  6967. if (memcmp(NameR.data()+14, "rn", 2))
  6968. break;
  6969. return Intrinsic::hexagon_C4_or_orn; // "exagon.C4.or.orn"
  6970. }
  6971. break;
  6972. }
  6973. break;
  6974. }
  6975. break;
  6976. case 'M': // 12 strings to match.
  6977. switch (NameR[8]) {
  6978. default: break;
  6979. case '2': // 7 strings to match.
  6980. if (NameR[9] != '.')
  6981. break;
  6982. switch (NameR[10]) {
  6983. default: break;
  6984. case 'm': // 4 strings to match.
  6985. switch (NameR[11]) {
  6986. default: break;
  6987. case 'a': // 2 strings to match.
  6988. if (memcmp(NameR.data()+12, "csi", 3))
  6989. break;
  6990. switch (NameR[15]) {
  6991. default: break;
  6992. case 'n': // 1 string to match.
  6993. return Intrinsic::hexagon_M2_macsin; // "exagon.M2.macsin"
  6994. case 'p': // 1 string to match.
  6995. return Intrinsic::hexagon_M2_macsip; // "exagon.M2.macsip"
  6996. }
  6997. break;
  6998. case 'p': // 2 strings to match.
  6999. if (NameR[12] != 'y')
  7000. break;
  7001. switch (NameR[13]) {
  7002. default: break;
  7003. case '.': // 1 string to match.
  7004. if (memcmp(NameR.data()+14, "up", 2))
  7005. break;
  7006. return Intrinsic::hexagon_M2_mpy_up; // "exagon.M2.mpy.up"
  7007. case 's': // 1 string to match.
  7008. if (memcmp(NameR.data()+14, "mi", 2))
  7009. break;
  7010. return Intrinsic::hexagon_M2_mpysmi; // "exagon.M2.mpysmi"
  7011. }
  7012. break;
  7013. }
  7014. break;
  7015. case 'n': // 1 string to match.
  7016. if (memcmp(NameR.data()+11, "accii", 5))
  7017. break;
  7018. return Intrinsic::hexagon_M2_naccii; // "exagon.M2.naccii"
  7019. case 's': // 1 string to match.
  7020. if (memcmp(NameR.data()+11, "ubacc", 5))
  7021. break;
  7022. return Intrinsic::hexagon_M2_subacc; // "exagon.M2.subacc"
  7023. case 'v': // 1 string to match.
  7024. if (memcmp(NameR.data()+11, "raddh", 5))
  7025. break;
  7026. return Intrinsic::hexagon_M2_vraddh; // "exagon.M2.vraddh"
  7027. }
  7028. break;
  7029. case '4': // 5 strings to match.
  7030. if (NameR[9] != '.')
  7031. break;
  7032. switch (NameR[10]) {
  7033. default: break;
  7034. case 'a': // 1 string to match.
  7035. if (memcmp(NameR.data()+11, "nd.or", 5))
  7036. break;
  7037. return Intrinsic::hexagon_M4_and_or; // "exagon.M4.and.or"
  7038. case 'o': // 2 strings to match.
  7039. if (memcmp(NameR.data()+11, "r.", 2))
  7040. break;
  7041. switch (NameR[13]) {
  7042. default: break;
  7043. case 'a': // 1 string to match.
  7044. if (memcmp(NameR.data()+14, "nd", 2))
  7045. break;
  7046. return Intrinsic::hexagon_M4_or_and; // "exagon.M4.or.and"
  7047. case 'x': // 1 string to match.
  7048. if (memcmp(NameR.data()+14, "or", 2))
  7049. break;
  7050. return Intrinsic::hexagon_M4_or_xor; // "exagon.M4.or.xor"
  7051. }
  7052. break;
  7053. case 'v': // 1 string to match.
  7054. if (memcmp(NameR.data()+11, "pmpyh", 5))
  7055. break;
  7056. return Intrinsic::hexagon_M4_vpmpyh; // "exagon.M4.vpmpyh"
  7057. case 'x': // 1 string to match.
  7058. if (memcmp(NameR.data()+11, "or.or", 5))
  7059. break;
  7060. return Intrinsic::hexagon_M4_xor_or; // "exagon.M4.xor.or"
  7061. }
  7062. break;
  7063. }
  7064. break;
  7065. case 'S': // 11 strings to match.
  7066. switch (NameR[8]) {
  7067. default: break;
  7068. case '2': // 9 strings to match.
  7069. if (NameR[9] != '.')
  7070. break;
  7071. switch (NameR[10]) {
  7072. default: break;
  7073. case 'i': // 1 string to match.
  7074. if (memcmp(NameR.data()+11, "nsert", 5))
  7075. break;
  7076. return Intrinsic::hexagon_S2_insert; // "exagon.S2.insert"
  7077. case 'p': // 1 string to match.
  7078. if (memcmp(NameR.data()+11, "ackhl", 5))
  7079. break;
  7080. return Intrinsic::hexagon_S2_packhl; // "exagon.S2.packhl"
  7081. case 'v': // 7 strings to match.
  7082. switch (NameR[11]) {
  7083. default: break;
  7084. case 'c': // 1 string to match.
  7085. if (memcmp(NameR.data()+12, "negh", 4))
  7086. break;
  7087. return Intrinsic::hexagon_S2_vcnegh; // "exagon.S2.vcnegh"
  7088. case 's': // 4 strings to match.
  7089. switch (NameR[12]) {
  7090. default: break;
  7091. case 'a': // 2 strings to match.
  7092. if (NameR[13] != 't')
  7093. break;
  7094. switch (NameR[14]) {
  7095. default: break;
  7096. case 'h': // 1 string to match.
  7097. if (NameR[15] != 'b')
  7098. break;
  7099. return Intrinsic::hexagon_S2_vsathb; // "exagon.S2.vsathb"
  7100. case 'w': // 1 string to match.
  7101. if (NameR[15] != 'h')
  7102. break;
  7103. return Intrinsic::hexagon_S2_vsatwh; // "exagon.S2.vsatwh"
  7104. }
  7105. break;
  7106. case 'x': // 2 strings to match.
  7107. if (NameR[13] != 't')
  7108. break;
  7109. switch (NameR[14]) {
  7110. default: break;
  7111. case 'b': // 1 string to match.
  7112. if (NameR[15] != 'h')
  7113. break;
  7114. return Intrinsic::hexagon_S2_vsxtbh; // "exagon.S2.vsxtbh"
  7115. case 'h': // 1 string to match.
  7116. if (NameR[15] != 'w')
  7117. break;
  7118. return Intrinsic::hexagon_S2_vsxthw; // "exagon.S2.vsxthw"
  7119. }
  7120. break;
  7121. }
  7122. break;
  7123. case 'z': // 2 strings to match.
  7124. if (memcmp(NameR.data()+12, "xt", 2))
  7125. break;
  7126. switch (NameR[14]) {
  7127. default: break;
  7128. case 'b': // 1 string to match.
  7129. if (NameR[15] != 'h')
  7130. break;
  7131. return Intrinsic::hexagon_S2_vzxtbh; // "exagon.S2.vzxtbh"
  7132. case 'h': // 1 string to match.
  7133. if (NameR[15] != 'w')
  7134. break;
  7135. return Intrinsic::hexagon_S2_vzxthw; // "exagon.S2.vzxthw"
  7136. }
  7137. break;
  7138. }
  7139. break;
  7140. }
  7141. break;
  7142. case '4': // 2 strings to match.
  7143. if (NameR[9] != '.')
  7144. break;
  7145. switch (NameR[10]) {
  7146. default: break;
  7147. case 'o': // 1 string to match.
  7148. if (memcmp(NameR.data()+11, "r.ori", 5))
  7149. break;
  7150. return Intrinsic::hexagon_S4_or_ori; // "exagon.S4.or.ori"
  7151. case 'p': // 1 string to match.
  7152. if (memcmp(NameR.data()+11, "arity", 5))
  7153. break;
  7154. return Intrinsic::hexagon_S4_parity; // "exagon.S4.parity"
  7155. }
  7156. break;
  7157. }
  7158. break;
  7159. }
  7160. break;
  7161. case 17: // 103 strings to match.
  7162. if (memcmp(NameR.data()+0, "exagon.", 7))
  7163. break;
  7164. switch (NameR[7]) {
  7165. default: break;
  7166. case 'A': // 36 strings to match.
  7167. switch (NameR[8]) {
  7168. default: break;
  7169. case '2': // 23 strings to match.
  7170. if (NameR[9] != '.')
  7171. break;
  7172. switch (NameR[10]) {
  7173. default: break;
  7174. case 'a': // 1 string to match.
  7175. if (memcmp(NameR.data()+11, "ddpsat", 6))
  7176. break;
  7177. return Intrinsic::hexagon_A2_addpsat; // "exagon.A2.addpsat"
  7178. case 's': // 4 strings to match.
  7179. if (NameR[11] != 'v')
  7180. break;
  7181. switch (NameR[12]) {
  7182. default: break;
  7183. case 'a': // 2 strings to match.
  7184. switch (NameR[13]) {
  7185. default: break;
  7186. case 'd': // 1 string to match.
  7187. if (memcmp(NameR.data()+14, "dhs", 3))
  7188. break;
  7189. return Intrinsic::hexagon_A2_svaddhs; // "exagon.A2.svaddhs"
  7190. case 'v': // 1 string to match.
  7191. if (memcmp(NameR.data()+14, "ghs", 3))
  7192. break;
  7193. return Intrinsic::hexagon_A2_svavghs; // "exagon.A2.svavghs"
  7194. }
  7195. break;
  7196. case 'n': // 1 string to match.
  7197. if (memcmp(NameR.data()+13, "avgh", 4))
  7198. break;
  7199. return Intrinsic::hexagon_A2_svnavgh; // "exagon.A2.svnavgh"
  7200. case 's': // 1 string to match.
  7201. if (memcmp(NameR.data()+13, "ubhs", 4))
  7202. break;
  7203. return Intrinsic::hexagon_A2_svsubhs; // "exagon.A2.svsubhs"
  7204. }
  7205. break;
  7206. case 'v': // 18 strings to match.
  7207. switch (NameR[11]) {
  7208. default: break;
  7209. case 'a': // 7 strings to match.
  7210. switch (NameR[12]) {
  7211. default: break;
  7212. case 'd': // 2 strings to match.
  7213. if (memcmp(NameR.data()+13, "du", 2))
  7214. break;
  7215. switch (NameR[15]) {
  7216. default: break;
  7217. case 'b': // 1 string to match.
  7218. if (NameR[16] != 's')
  7219. break;
  7220. return Intrinsic::hexagon_A2_vaddubs; // "exagon.A2.vaddubs"
  7221. case 'h': // 1 string to match.
  7222. if (NameR[16] != 's')
  7223. break;
  7224. return Intrinsic::hexagon_A2_vadduhs; // "exagon.A2.vadduhs"
  7225. }
  7226. break;
  7227. case 'v': // 5 strings to match.
  7228. if (NameR[13] != 'g')
  7229. break;
  7230. switch (NameR[14]) {
  7231. default: break;
  7232. case 'h': // 1 string to match.
  7233. if (memcmp(NameR.data()+15, "cr", 2))
  7234. break;
  7235. return Intrinsic::hexagon_A2_vavghcr; // "exagon.A2.vavghcr"
  7236. case 'u': // 3 strings to match.
  7237. switch (NameR[15]) {
  7238. default: break;
  7239. case 'b': // 1 string to match.
  7240. if (NameR[16] != 'r')
  7241. break;
  7242. return Intrinsic::hexagon_A2_vavgubr; // "exagon.A2.vavgubr"
  7243. case 'h': // 1 string to match.
  7244. if (NameR[16] != 'r')
  7245. break;
  7246. return Intrinsic::hexagon_A2_vavguhr; // "exagon.A2.vavguhr"
  7247. case 'w': // 1 string to match.
  7248. if (NameR[16] != 'r')
  7249. break;
  7250. return Intrinsic::hexagon_A2_vavguwr; // "exagon.A2.vavguwr"
  7251. }
  7252. break;
  7253. case 'w': // 1 string to match.
  7254. if (memcmp(NameR.data()+15, "cr", 2))
  7255. break;
  7256. return Intrinsic::hexagon_A2_vavgwcr; // "exagon.A2.vavgwcr"
  7257. }
  7258. break;
  7259. }
  7260. break;
  7261. case 'c': // 5 strings to match.
  7262. if (memcmp(NameR.data()+12, "mp", 2))
  7263. break;
  7264. switch (NameR[14]) {
  7265. default: break;
  7266. case 'b': // 1 string to match.
  7267. if (memcmp(NameR.data()+15, "eq", 2))
  7268. break;
  7269. return Intrinsic::hexagon_A2_vcmpbeq; // "exagon.A2.vcmpbeq"
  7270. case 'h': // 2 strings to match.
  7271. switch (NameR[15]) {
  7272. default: break;
  7273. case 'e': // 1 string to match.
  7274. if (NameR[16] != 'q')
  7275. break;
  7276. return Intrinsic::hexagon_A2_vcmpheq; // "exagon.A2.vcmpheq"
  7277. case 'g': // 1 string to match.
  7278. if (NameR[16] != 't')
  7279. break;
  7280. return Intrinsic::hexagon_A2_vcmphgt; // "exagon.A2.vcmphgt"
  7281. }
  7282. break;
  7283. case 'w': // 2 strings to match.
  7284. switch (NameR[15]) {
  7285. default: break;
  7286. case 'e': // 1 string to match.
  7287. if (NameR[16] != 'q')
  7288. break;
  7289. return Intrinsic::hexagon_A2_vcmpweq; // "exagon.A2.vcmpweq"
  7290. case 'g': // 1 string to match.
  7291. if (NameR[16] != 't')
  7292. break;
  7293. return Intrinsic::hexagon_A2_vcmpwgt; // "exagon.A2.vcmpwgt"
  7294. }
  7295. break;
  7296. }
  7297. break;
  7298. case 'n': // 2 strings to match.
  7299. if (memcmp(NameR.data()+12, "avg", 3))
  7300. break;
  7301. switch (NameR[15]) {
  7302. default: break;
  7303. case 'h': // 1 string to match.
  7304. if (NameR[16] != 'r')
  7305. break;
  7306. return Intrinsic::hexagon_A2_vnavghr; // "exagon.A2.vnavghr"
  7307. case 'w': // 1 string to match.
  7308. if (NameR[16] != 'r')
  7309. break;
  7310. return Intrinsic::hexagon_A2_vnavgwr; // "exagon.A2.vnavgwr"
  7311. }
  7312. break;
  7313. case 'r': // 2 strings to match.
  7314. switch (NameR[12]) {
  7315. default: break;
  7316. case 'a': // 1 string to match.
  7317. if (memcmp(NameR.data()+13, "ddub", 4))
  7318. break;
  7319. return Intrinsic::hexagon_A2_vraddub; // "exagon.A2.vraddub"
  7320. case 's': // 1 string to match.
  7321. if (memcmp(NameR.data()+13, "adub", 4))
  7322. break;
  7323. return Intrinsic::hexagon_A2_vrsadub; // "exagon.A2.vrsadub"
  7324. }
  7325. break;
  7326. case 's': // 2 strings to match.
  7327. if (memcmp(NameR.data()+12, "ubu", 3))
  7328. break;
  7329. switch (NameR[15]) {
  7330. default: break;
  7331. case 'b': // 1 string to match.
  7332. if (NameR[16] != 's')
  7333. break;
  7334. return Intrinsic::hexagon_A2_vsububs; // "exagon.A2.vsububs"
  7335. case 'h': // 1 string to match.
  7336. if (NameR[16] != 's')
  7337. break;
  7338. return Intrinsic::hexagon_A2_vsubuhs; // "exagon.A2.vsubuhs"
  7339. }
  7340. break;
  7341. }
  7342. break;
  7343. }
  7344. break;
  7345. case '4': // 13 strings to match.
  7346. if (NameR[9] != '.')
  7347. break;
  7348. switch (NameR[10]) {
  7349. default: break;
  7350. case 'c': // 6 strings to match.
  7351. if (memcmp(NameR.data()+11, "mp", 2))
  7352. break;
  7353. switch (NameR[13]) {
  7354. default: break;
  7355. case 'b': // 3 strings to match.
  7356. switch (NameR[14]) {
  7357. default: break;
  7358. case 'e': // 1 string to match.
  7359. if (memcmp(NameR.data()+15, "qi", 2))
  7360. break;
  7361. return Intrinsic::hexagon_A4_cmpbeqi; // "exagon.A4.cmpbeqi"
  7362. case 'g': // 2 strings to match.
  7363. if (NameR[15] != 't')
  7364. break;
  7365. switch (NameR[16]) {
  7366. default: break;
  7367. case 'i': // 1 string to match.
  7368. return Intrinsic::hexagon_A4_cmpbgti; // "exagon.A4.cmpbgti"
  7369. case 'u': // 1 string to match.
  7370. return Intrinsic::hexagon_A4_cmpbgtu; // "exagon.A4.cmpbgtu"
  7371. }
  7372. break;
  7373. }
  7374. break;
  7375. case 'h': // 3 strings to match.
  7376. switch (NameR[14]) {
  7377. default: break;
  7378. case 'e': // 1 string to match.
  7379. if (memcmp(NameR.data()+15, "qi", 2))
  7380. break;
  7381. return Intrinsic::hexagon_A4_cmpheqi; // "exagon.A4.cmpheqi"
  7382. case 'g': // 2 strings to match.
  7383. if (NameR[15] != 't')
  7384. break;
  7385. switch (NameR[16]) {
  7386. default: break;
  7387. case 'i': // 1 string to match.
  7388. return Intrinsic::hexagon_A4_cmphgti; // "exagon.A4.cmphgti"
  7389. case 'u': // 1 string to match.
  7390. return Intrinsic::hexagon_A4_cmphgtu; // "exagon.A4.cmphgtu"
  7391. }
  7392. break;
  7393. }
  7394. break;
  7395. }
  7396. break;
  7397. case 'r': // 2 strings to match.
  7398. if (memcmp(NameR.data()+11, "cmp", 3))
  7399. break;
  7400. switch (NameR[14]) {
  7401. default: break;
  7402. case 'e': // 1 string to match.
  7403. if (memcmp(NameR.data()+15, "qi", 2))
  7404. break;
  7405. return Intrinsic::hexagon_A4_rcmpeqi; // "exagon.A4.rcmpeqi"
  7406. case 'n': // 1 string to match.
  7407. if (memcmp(NameR.data()+15, "eq", 2))
  7408. break;
  7409. return Intrinsic::hexagon_A4_rcmpneq; // "exagon.A4.rcmpneq"
  7410. }
  7411. break;
  7412. case 'v': // 5 strings to match.
  7413. switch (NameR[11]) {
  7414. default: break;
  7415. case 'c': // 1 string to match.
  7416. if (memcmp(NameR.data()+12, "mpbgt", 5))
  7417. break;
  7418. return Intrinsic::hexagon_A4_vcmpbgt; // "exagon.A4.vcmpbgt"
  7419. case 'r': // 4 strings to match.
  7420. if (NameR[12] != 'm')
  7421. break;
  7422. switch (NameR[13]) {
  7423. default: break;
  7424. case 'a': // 2 strings to match.
  7425. if (memcmp(NameR.data()+14, "xu", 2))
  7426. break;
  7427. switch (NameR[16]) {
  7428. default: break;
  7429. case 'h': // 1 string to match.
  7430. return Intrinsic::hexagon_A4_vrmaxuh; // "exagon.A4.vrmaxuh"
  7431. case 'w': // 1 string to match.
  7432. return Intrinsic::hexagon_A4_vrmaxuw; // "exagon.A4.vrmaxuw"
  7433. }
  7434. break;
  7435. case 'i': // 2 strings to match.
  7436. if (memcmp(NameR.data()+14, "nu", 2))
  7437. break;
  7438. switch (NameR[16]) {
  7439. default: break;
  7440. case 'h': // 1 string to match.
  7441. return Intrinsic::hexagon_A4_vrminuh; // "exagon.A4.vrminuh"
  7442. case 'w': // 1 string to match.
  7443. return Intrinsic::hexagon_A4_vrminuw; // "exagon.A4.vrminuw"
  7444. }
  7445. break;
  7446. }
  7447. break;
  7448. }
  7449. break;
  7450. }
  7451. break;
  7452. }
  7453. break;
  7454. case 'C': // 12 strings to match.
  7455. switch (NameR[8]) {
  7456. default: break;
  7457. case '2': // 6 strings to match.
  7458. if (NameR[9] != '.')
  7459. break;
  7460. switch (NameR[10]) {
  7461. default: break;
  7462. case 'b': // 2 strings to match.
  7463. if (memcmp(NameR.data()+11, "its", 3))
  7464. break;
  7465. switch (NameR[14]) {
  7466. default: break;
  7467. case 'c': // 1 string to match.
  7468. if (memcmp(NameR.data()+15, "lr", 2))
  7469. break;
  7470. return Intrinsic::hexagon_C2_bitsclr; // "exagon.C2.bitsclr"
  7471. case 's': // 1 string to match.
  7472. if (memcmp(NameR.data()+15, "et", 2))
  7473. break;
  7474. return Intrinsic::hexagon_C2_bitsset; // "exagon.C2.bitsset"
  7475. }
  7476. break;
  7477. case 'c': // 3 strings to match.
  7478. if (memcmp(NameR.data()+11, "mpg", 3))
  7479. break;
  7480. switch (NameR[14]) {
  7481. default: break;
  7482. case 'e': // 1 string to match.
  7483. if (memcmp(NameR.data()+15, "ui", 2))
  7484. break;
  7485. return Intrinsic::hexagon_C2_cmpgeui; // "exagon.C2.cmpgeui"
  7486. case 't': // 2 strings to match.
  7487. if (NameR[15] != 'u')
  7488. break;
  7489. switch (NameR[16]) {
  7490. default: break;
  7491. case 'i': // 1 string to match.
  7492. return Intrinsic::hexagon_C2_cmpgtui; // "exagon.C2.cmpgtui"
  7493. case 'p': // 1 string to match.
  7494. return Intrinsic::hexagon_C2_cmpgtup; // "exagon.C2.cmpgtup"
  7495. }
  7496. break;
  7497. }
  7498. break;
  7499. case 'v': // 1 string to match.
  7500. if (memcmp(NameR.data()+11, "itpack", 6))
  7501. break;
  7502. return Intrinsic::hexagon_C2_vitpack; // "exagon.C2.vitpack"
  7503. }
  7504. break;
  7505. case '4': // 6 strings to match.
  7506. if (NameR[9] != '.')
  7507. break;
  7508. switch (NameR[10]) {
  7509. default: break;
  7510. case 'a': // 2 strings to match.
  7511. if (memcmp(NameR.data()+11, "nd.", 3))
  7512. break;
  7513. switch (NameR[14]) {
  7514. default: break;
  7515. case 'a': // 1 string to match.
  7516. if (memcmp(NameR.data()+15, "nd", 2))
  7517. break;
  7518. return Intrinsic::hexagon_C4_and_and; // "exagon.C4.and.and"
  7519. case 'o': // 1 string to match.
  7520. if (memcmp(NameR.data()+15, "rn", 2))
  7521. break;
  7522. return Intrinsic::hexagon_C4_and_orn; // "exagon.C4.and.orn"
  7523. }
  7524. break;
  7525. case 'c': // 3 strings to match.
  7526. if (memcmp(NameR.data()+11, "mp", 2))
  7527. break;
  7528. switch (NameR[13]) {
  7529. default: break;
  7530. case 'l': // 2 strings to match.
  7531. if (memcmp(NameR.data()+14, "te", 2))
  7532. break;
  7533. switch (NameR[16]) {
  7534. default: break;
  7535. case 'i': // 1 string to match.
  7536. return Intrinsic::hexagon_C4_cmpltei; // "exagon.C4.cmpltei"
  7537. case 'u': // 1 string to match.
  7538. return Intrinsic::hexagon_C4_cmplteu; // "exagon.C4.cmplteu"
  7539. }
  7540. break;
  7541. case 'n': // 1 string to match.
  7542. if (memcmp(NameR.data()+14, "eqi", 3))
  7543. break;
  7544. return Intrinsic::hexagon_C4_cmpneqi; // "exagon.C4.cmpneqi"
  7545. }
  7546. break;
  7547. case 'o': // 1 string to match.
  7548. if (memcmp(NameR.data()+11, "r.andn", 6))
  7549. break;
  7550. return Intrinsic::hexagon_C4_or_andn; // "exagon.C4.or.andn"
  7551. }
  7552. break;
  7553. }
  7554. break;
  7555. case 'F': // 14 strings to match.
  7556. if (memcmp(NameR.data()+8, "2.", 2))
  7557. break;
  7558. switch (NameR[10]) {
  7559. default: break;
  7560. case 'd': // 7 strings to match.
  7561. if (NameR[11] != 'f')
  7562. break;
  7563. switch (NameR[12]) {
  7564. default: break;
  7565. case 'c': // 5 strings to match.
  7566. switch (NameR[13]) {
  7567. default: break;
  7568. case 'l': // 1 string to match.
  7569. if (memcmp(NameR.data()+14, "ass", 3))
  7570. break;
  7571. return Intrinsic::hexagon_F2_dfclass; // "exagon.F2.dfclass"
  7572. case 'm': // 4 strings to match.
  7573. if (NameR[14] != 'p')
  7574. break;
  7575. switch (NameR[15]) {
  7576. default: break;
  7577. case 'e': // 1 string to match.
  7578. if (NameR[16] != 'q')
  7579. break;
  7580. return Intrinsic::hexagon_F2_dfcmpeq; // "exagon.F2.dfcmpeq"
  7581. case 'g': // 2 strings to match.
  7582. switch (NameR[16]) {
  7583. default: break;
  7584. case 'e': // 1 string to match.
  7585. return Intrinsic::hexagon_F2_dfcmpge; // "exagon.F2.dfcmpge"
  7586. case 't': // 1 string to match.
  7587. return Intrinsic::hexagon_F2_dfcmpgt; // "exagon.F2.dfcmpgt"
  7588. }
  7589. break;
  7590. case 'u': // 1 string to match.
  7591. if (NameR[16] != 'o')
  7592. break;
  7593. return Intrinsic::hexagon_F2_dfcmpuo; // "exagon.F2.dfcmpuo"
  7594. }
  7595. break;
  7596. }
  7597. break;
  7598. case 'i': // 2 strings to match.
  7599. if (memcmp(NameR.data()+13, "mm.", 3))
  7600. break;
  7601. switch (NameR[16]) {
  7602. default: break;
  7603. case 'n': // 1 string to match.
  7604. return Intrinsic::hexagon_F2_dfimm_n; // "exagon.F2.dfimm.n"
  7605. case 'p': // 1 string to match.
  7606. return Intrinsic::hexagon_F2_dfimm_p; // "exagon.F2.dfimm.p"
  7607. }
  7608. break;
  7609. }
  7610. break;
  7611. case 's': // 7 strings to match.
  7612. if (NameR[11] != 'f')
  7613. break;
  7614. switch (NameR[12]) {
  7615. default: break;
  7616. case 'c': // 5 strings to match.
  7617. switch (NameR[13]) {
  7618. default: break;
  7619. case 'l': // 1 string to match.
  7620. if (memcmp(NameR.data()+14, "ass", 3))
  7621. break;
  7622. return Intrinsic::hexagon_F2_sfclass; // "exagon.F2.sfclass"
  7623. case 'm': // 4 strings to match.
  7624. if (NameR[14] != 'p')
  7625. break;
  7626. switch (NameR[15]) {
  7627. default: break;
  7628. case 'e': // 1 string to match.
  7629. if (NameR[16] != 'q')
  7630. break;
  7631. return Intrinsic::hexagon_F2_sfcmpeq; // "exagon.F2.sfcmpeq"
  7632. case 'g': // 2 strings to match.
  7633. switch (NameR[16]) {
  7634. default: break;
  7635. case 'e': // 1 string to match.
  7636. return Intrinsic::hexagon_F2_sfcmpge; // "exagon.F2.sfcmpge"
  7637. case 't': // 1 string to match.
  7638. return Intrinsic::hexagon_F2_sfcmpgt; // "exagon.F2.sfcmpgt"
  7639. }
  7640. break;
  7641. case 'u': // 1 string to match.
  7642. if (NameR[16] != 'o')
  7643. break;
  7644. return Intrinsic::hexagon_F2_sfcmpuo; // "exagon.F2.sfcmpuo"
  7645. }
  7646. break;
  7647. }
  7648. break;
  7649. case 'i': // 2 strings to match.
  7650. if (memcmp(NameR.data()+13, "mm.", 3))
  7651. break;
  7652. switch (NameR[16]) {
  7653. default: break;
  7654. case 'n': // 1 string to match.
  7655. return Intrinsic::hexagon_F2_sfimm_n; // "exagon.F2.sfimm.n"
  7656. case 'p': // 1 string to match.
  7657. return Intrinsic::hexagon_F2_sfimm_p; // "exagon.F2.sfimm.p"
  7658. }
  7659. break;
  7660. }
  7661. break;
  7662. }
  7663. break;
  7664. case 'M': // 11 strings to match.
  7665. switch (NameR[8]) {
  7666. default: break;
  7667. case '2': // 3 strings to match.
  7668. if (NameR[9] != '.')
  7669. break;
  7670. switch (NameR[10]) {
  7671. default: break;
  7672. case 'm': // 1 string to match.
  7673. if (memcmp(NameR.data()+11, "pyu.up", 6))
  7674. break;
  7675. return Intrinsic::hexagon_M2_mpyu_up; // "exagon.M2.mpyu.up"
  7676. case 'v': // 2 strings to match.
  7677. switch (NameR[11]) {
  7678. default: break;
  7679. case 'm': // 1 string to match.
  7680. if (memcmp(NameR.data()+12, "ac2es", 5))
  7681. break;
  7682. return Intrinsic::hexagon_M2_vmac2es; // "exagon.M2.vmac2es"
  7683. case 'r': // 1 string to match.
  7684. if (memcmp(NameR.data()+12, "adduh", 5))
  7685. break;
  7686. return Intrinsic::hexagon_M2_vradduh; // "exagon.M2.vradduh"
  7687. }
  7688. break;
  7689. }
  7690. break;
  7691. case '4': // 4 strings to match.
  7692. if (NameR[9] != '.')
  7693. break;
  7694. switch (NameR[10]) {
  7695. default: break;
  7696. case 'a': // 2 strings to match.
  7697. if (memcmp(NameR.data()+11, "nd.", 3))
  7698. break;
  7699. switch (NameR[14]) {
  7700. default: break;
  7701. case 'a': // 1 string to match.
  7702. if (memcmp(NameR.data()+15, "nd", 2))
  7703. break;
  7704. return Intrinsic::hexagon_M4_and_and; // "exagon.M4.and.and"
  7705. case 'x': // 1 string to match.
  7706. if (memcmp(NameR.data()+15, "or", 2))
  7707. break;
  7708. return Intrinsic::hexagon_M4_and_xor; // "exagon.M4.and.xor"
  7709. }
  7710. break;
  7711. case 'o': // 1 string to match.
  7712. if (memcmp(NameR.data()+11, "r.andn", 6))
  7713. break;
  7714. return Intrinsic::hexagon_M4_or_andn; // "exagon.M4.or.andn"
  7715. case 'x': // 1 string to match.
  7716. if (memcmp(NameR.data()+11, "or.and", 6))
  7717. break;
  7718. return Intrinsic::hexagon_M4_xor_and; // "exagon.M4.xor.and"
  7719. }
  7720. break;
  7721. case '5': // 4 strings to match.
  7722. if (memcmp(NameR.data()+9, ".vm", 3))
  7723. break;
  7724. switch (NameR[12]) {
  7725. default: break;
  7726. case 'a': // 2 strings to match.
  7727. if (memcmp(NameR.data()+13, "cb", 2))
  7728. break;
  7729. switch (NameR[15]) {
  7730. default: break;
  7731. case 's': // 1 string to match.
  7732. if (NameR[16] != 'u')
  7733. break;
  7734. return Intrinsic::hexagon_M5_vmacbsu; // "exagon.M5.vmacbsu"
  7735. case 'u': // 1 string to match.
  7736. if (NameR[16] != 'u')
  7737. break;
  7738. return Intrinsic::hexagon_M5_vmacbuu; // "exagon.M5.vmacbuu"
  7739. }
  7740. break;
  7741. case 'p': // 2 strings to match.
  7742. if (memcmp(NameR.data()+13, "yb", 2))
  7743. break;
  7744. switch (NameR[15]) {
  7745. default: break;
  7746. case 's': // 1 string to match.
  7747. if (NameR[16] != 'u')
  7748. break;
  7749. return Intrinsic::hexagon_M5_vmpybsu; // "exagon.M5.vmpybsu"
  7750. case 'u': // 1 string to match.
  7751. if (NameR[16] != 'u')
  7752. break;
  7753. return Intrinsic::hexagon_M5_vmpybuu; // "exagon.M5.vmpybuu"
  7754. }
  7755. break;
  7756. }
  7757. break;
  7758. }
  7759. break;
  7760. case 'S': // 30 strings to match.
  7761. switch (NameR[8]) {
  7762. default: break;
  7763. case '2': // 25 strings to match.
  7764. if (NameR[9] != '.')
  7765. break;
  7766. switch (NameR[10]) {
  7767. default: break;
  7768. case 'a': // 8 strings to match.
  7769. if (NameR[11] != 's')
  7770. break;
  7771. switch (NameR[12]) {
  7772. default: break;
  7773. case 'l': // 4 strings to match.
  7774. if (NameR[13] != '.')
  7775. break;
  7776. switch (NameR[14]) {
  7777. default: break;
  7778. case 'i': // 2 strings to match.
  7779. if (NameR[15] != '.')
  7780. break;
  7781. switch (NameR[16]) {
  7782. default: break;
  7783. case 'p': // 1 string to match.
  7784. return Intrinsic::hexagon_S2_asl_i_p; // "exagon.S2.asl.i.p"
  7785. case 'r': // 1 string to match.
  7786. return Intrinsic::hexagon_S2_asl_i_r; // "exagon.S2.asl.i.r"
  7787. }
  7788. break;
  7789. case 'r': // 2 strings to match.
  7790. if (NameR[15] != '.')
  7791. break;
  7792. switch (NameR[16]) {
  7793. default: break;
  7794. case 'p': // 1 string to match.
  7795. return Intrinsic::hexagon_S2_asl_r_p; // "exagon.S2.asl.r.p"
  7796. case 'r': // 1 string to match.
  7797. return Intrinsic::hexagon_S2_asl_r_r; // "exagon.S2.asl.r.r"
  7798. }
  7799. break;
  7800. }
  7801. break;
  7802. case 'r': // 4 strings to match.
  7803. if (NameR[13] != '.')
  7804. break;
  7805. switch (NameR[14]) {
  7806. default: break;
  7807. case 'i': // 2 strings to match.
  7808. if (NameR[15] != '.')
  7809. break;
  7810. switch (NameR[16]) {
  7811. default: break;
  7812. case 'p': // 1 string to match.
  7813. return Intrinsic::hexagon_S2_asr_i_p; // "exagon.S2.asr.i.p"
  7814. case 'r': // 1 string to match.
  7815. return Intrinsic::hexagon_S2_asr_i_r; // "exagon.S2.asr.i.r"
  7816. }
  7817. break;
  7818. case 'r': // 2 strings to match.
  7819. if (NameR[15] != '.')
  7820. break;
  7821. switch (NameR[16]) {
  7822. default: break;
  7823. case 'p': // 1 string to match.
  7824. return Intrinsic::hexagon_S2_asr_r_p; // "exagon.S2.asr.r.p"
  7825. case 'r': // 1 string to match.
  7826. return Intrinsic::hexagon_S2_asr_r_r; // "exagon.S2.asr.r.r"
  7827. }
  7828. break;
  7829. }
  7830. break;
  7831. }
  7832. break;
  7833. case 'c': // 1 string to match.
  7834. if (memcmp(NameR.data()+11, "lbnorm", 6))
  7835. break;
  7836. return Intrinsic::hexagon_S2_clbnorm; // "exagon.S2.clbnorm"
  7837. case 'i': // 1 string to match.
  7838. if (memcmp(NameR.data()+11, "nsertp", 6))
  7839. break;
  7840. return Intrinsic::hexagon_S2_insertp; // "exagon.S2.insertp"
  7841. case 'l': // 6 strings to match.
  7842. if (NameR[11] != 's')
  7843. break;
  7844. switch (NameR[12]) {
  7845. default: break;
  7846. case 'l': // 2 strings to match.
  7847. if (memcmp(NameR.data()+13, ".r.", 3))
  7848. break;
  7849. switch (NameR[16]) {
  7850. default: break;
  7851. case 'p': // 1 string to match.
  7852. return Intrinsic::hexagon_S2_lsl_r_p; // "exagon.S2.lsl.r.p"
  7853. case 'r': // 1 string to match.
  7854. return Intrinsic::hexagon_S2_lsl_r_r; // "exagon.S2.lsl.r.r"
  7855. }
  7856. break;
  7857. case 'r': // 4 strings to match.
  7858. if (NameR[13] != '.')
  7859. break;
  7860. switch (NameR[14]) {
  7861. default: break;
  7862. case 'i': // 2 strings to match.
  7863. if (NameR[15] != '.')
  7864. break;
  7865. switch (NameR[16]) {
  7866. default: break;
  7867. case 'p': // 1 string to match.
  7868. return Intrinsic::hexagon_S2_lsr_i_p; // "exagon.S2.lsr.i.p"
  7869. case 'r': // 1 string to match.
  7870. return Intrinsic::hexagon_S2_lsr_i_r; // "exagon.S2.lsr.i.r"
  7871. }
  7872. break;
  7873. case 'r': // 2 strings to match.
  7874. if (NameR[15] != '.')
  7875. break;
  7876. switch (NameR[16]) {
  7877. default: break;
  7878. case 'p': // 1 string to match.
  7879. return Intrinsic::hexagon_S2_lsr_r_p; // "exagon.S2.lsr.r.p"
  7880. case 'r': // 1 string to match.
  7881. return Intrinsic::hexagon_S2_lsr_r_r; // "exagon.S2.lsr.r.r"
  7882. }
  7883. break;
  7884. }
  7885. break;
  7886. }
  7887. break;
  7888. case 'p': // 1 string to match.
  7889. if (memcmp(NameR.data()+11, "arityp", 6))
  7890. break;
  7891. return Intrinsic::hexagon_S2_parityp; // "exagon.S2.parityp"
  7892. case 's': // 5 strings to match.
  7893. switch (NameR[11]) {
  7894. default: break;
  7895. case 'h': // 4 strings to match.
  7896. if (memcmp(NameR.data()+12, "uff", 3))
  7897. break;
  7898. switch (NameR[15]) {
  7899. default: break;
  7900. case 'e': // 2 strings to match.
  7901. switch (NameR[16]) {
  7902. default: break;
  7903. case 'b': // 1 string to match.
  7904. return Intrinsic::hexagon_S2_shuffeb; // "exagon.S2.shuffeb"
  7905. case 'h': // 1 string to match.
  7906. return Intrinsic::hexagon_S2_shuffeh; // "exagon.S2.shuffeh"
  7907. }
  7908. break;
  7909. case 'o': // 2 strings to match.
  7910. switch (NameR[16]) {
  7911. default: break;
  7912. case 'b': // 1 string to match.
  7913. return Intrinsic::hexagon_S2_shuffob; // "exagon.S2.shuffob"
  7914. case 'h': // 1 string to match.
  7915. return Intrinsic::hexagon_S2_shuffoh; // "exagon.S2.shuffoh"
  7916. }
  7917. break;
  7918. }
  7919. break;
  7920. case 'v': // 1 string to match.
  7921. if (memcmp(NameR.data()+12, "sathb", 5))
  7922. break;
  7923. return Intrinsic::hexagon_S2_svsathb; // "exagon.S2.svsathb"
  7924. }
  7925. break;
  7926. case 'v': // 3 strings to match.
  7927. switch (NameR[11]) {
  7928. default: break;
  7929. case 'r': // 1 string to match.
  7930. if (memcmp(NameR.data()+12, "cnegh", 5))
  7931. break;
  7932. return Intrinsic::hexagon_S2_vrcnegh; // "exagon.S2.vrcnegh"
  7933. case 's': // 2 strings to match.
  7934. if (memcmp(NameR.data()+12, "at", 2))
  7935. break;
  7936. switch (NameR[14]) {
  7937. default: break;
  7938. case 'h': // 1 string to match.
  7939. if (memcmp(NameR.data()+15, "ub", 2))
  7940. break;
  7941. return Intrinsic::hexagon_S2_vsathub; // "exagon.S2.vsathub"
  7942. case 'w': // 1 string to match.
  7943. if (memcmp(NameR.data()+15, "uh", 2))
  7944. break;
  7945. return Intrinsic::hexagon_S2_vsatwuh; // "exagon.S2.vsatwuh"
  7946. }
  7947. break;
  7948. }
  7949. break;
  7950. }
  7951. break;
  7952. case '4': // 5 strings to match.
  7953. if (NameR[9] != '.')
  7954. break;
  7955. switch (NameR[10]) {
  7956. default: break;
  7957. case 'a': // 1 string to match.
  7958. if (memcmp(NameR.data()+11, "ddaddi", 6))
  7959. break;
  7960. return Intrinsic::hexagon_S4_addaddi; // "exagon.S4.addaddi"
  7961. case 'c': // 1 string to match.
  7962. if (memcmp(NameR.data()+11, "lbaddi", 6))
  7963. break;
  7964. return Intrinsic::hexagon_S4_clbaddi; // "exagon.S4.clbaddi"
  7965. case 'e': // 1 string to match.
  7966. if (memcmp(NameR.data()+11, "xtract", 6))
  7967. break;
  7968. return Intrinsic::hexagon_S4_extract; // "exagon.S4.extract"
  7969. case 'o': // 1 string to match.
  7970. if (memcmp(NameR.data()+11, "r.andi", 6))
  7971. break;
  7972. return Intrinsic::hexagon_S4_or_andi; // "exagon.S4.or.andi"
  7973. case 's': // 1 string to match.
  7974. if (memcmp(NameR.data()+11, "ubaddi", 6))
  7975. break;
  7976. return Intrinsic::hexagon_S4_subaddi; // "exagon.S4.subaddi"
  7977. }
  7978. break;
  7979. }
  7980. break;
  7981. }
  7982. break;
  7983. case 18: // 103 strings to match.
  7984. if (memcmp(NameR.data()+0, "exagon.", 7))
  7985. break;
  7986. switch (NameR[7]) {
  7987. default: break;
  7988. case 'A': // 26 strings to match.
  7989. switch (NameR[8]) {
  7990. default: break;
  7991. case '2': // 11 strings to match.
  7992. if (NameR[9] != '.')
  7993. break;
  7994. switch (NameR[10]) {
  7995. default: break;
  7996. case 'c': // 1 string to match.
  7997. if (memcmp(NameR.data()+11, "ombinew", 7))
  7998. break;
  7999. return Intrinsic::hexagon_A2_combinew; // "exagon.A2.combinew"
  8000. case 'r': // 1 string to match.
  8001. if (memcmp(NameR.data()+11, "oundsat", 7))
  8002. break;
  8003. return Intrinsic::hexagon_A2_roundsat; // "exagon.A2.roundsat"
  8004. case 's': // 2 strings to match.
  8005. if (NameR[11] != 'v')
  8006. break;
  8007. switch (NameR[12]) {
  8008. default: break;
  8009. case 'a': // 1 string to match.
  8010. if (memcmp(NameR.data()+13, "dduhs", 5))
  8011. break;
  8012. return Intrinsic::hexagon_A2_svadduhs; // "exagon.A2.svadduhs"
  8013. case 's': // 1 string to match.
  8014. if (memcmp(NameR.data()+13, "ubuhs", 5))
  8015. break;
  8016. return Intrinsic::hexagon_A2_svsubuhs; // "exagon.A2.svsubuhs"
  8017. }
  8018. break;
  8019. case 'v': // 7 strings to match.
  8020. switch (NameR[11]) {
  8021. default: break;
  8022. case 'a': // 2 strings to match.
  8023. if (memcmp(NameR.data()+12, "bs", 2))
  8024. break;
  8025. switch (NameR[14]) {
  8026. default: break;
  8027. case 'h': // 1 string to match.
  8028. if (memcmp(NameR.data()+15, "sat", 3))
  8029. break;
  8030. return Intrinsic::hexagon_A2_vabshsat; // "exagon.A2.vabshsat"
  8031. case 'w': // 1 string to match.
  8032. if (memcmp(NameR.data()+15, "sat", 3))
  8033. break;
  8034. return Intrinsic::hexagon_A2_vabswsat; // "exagon.A2.vabswsat"
  8035. }
  8036. break;
  8037. case 'c': // 3 strings to match.
  8038. if (memcmp(NameR.data()+12, "mp", 2))
  8039. break;
  8040. switch (NameR[14]) {
  8041. default: break;
  8042. case 'b': // 1 string to match.
  8043. if (memcmp(NameR.data()+15, "gtu", 3))
  8044. break;
  8045. return Intrinsic::hexagon_A2_vcmpbgtu; // "exagon.A2.vcmpbgtu"
  8046. case 'h': // 1 string to match.
  8047. if (memcmp(NameR.data()+15, "gtu", 3))
  8048. break;
  8049. return Intrinsic::hexagon_A2_vcmphgtu; // "exagon.A2.vcmphgtu"
  8050. case 'w': // 1 string to match.
  8051. if (memcmp(NameR.data()+15, "gtu", 3))
  8052. break;
  8053. return Intrinsic::hexagon_A2_vcmpwgtu; // "exagon.A2.vcmpwgtu"
  8054. }
  8055. break;
  8056. case 'n': // 2 strings to match.
  8057. if (memcmp(NameR.data()+12, "avg", 3))
  8058. break;
  8059. switch (NameR[15]) {
  8060. default: break;
  8061. case 'h': // 1 string to match.
  8062. if (memcmp(NameR.data()+16, "cr", 2))
  8063. break;
  8064. return Intrinsic::hexagon_A2_vnavghcr; // "exagon.A2.vnavghcr"
  8065. case 'w': // 1 string to match.
  8066. if (memcmp(NameR.data()+16, "cr", 2))
  8067. break;
  8068. return Intrinsic::hexagon_A2_vnavgwcr; // "exagon.A2.vnavgwcr"
  8069. }
  8070. break;
  8071. }
  8072. break;
  8073. }
  8074. break;
  8075. case '4': // 14 strings to match.
  8076. if (NameR[9] != '.')
  8077. break;
  8078. switch (NameR[10]) {
  8079. default: break;
  8080. case 'b': // 1 string to match.
  8081. if (memcmp(NameR.data()+11, "itsplit", 7))
  8082. break;
  8083. return Intrinsic::hexagon_A4_bitsplit; // "exagon.A4.bitsplit"
  8084. case 'c': // 2 strings to match.
  8085. if (memcmp(NameR.data()+11, "mp", 2))
  8086. break;
  8087. switch (NameR[13]) {
  8088. default: break;
  8089. case 'b': // 1 string to match.
  8090. if (memcmp(NameR.data()+14, "gtui", 4))
  8091. break;
  8092. return Intrinsic::hexagon_A4_cmpbgtui; // "exagon.A4.cmpbgtui"
  8093. case 'h': // 1 string to match.
  8094. if (memcmp(NameR.data()+14, "gtui", 4))
  8095. break;
  8096. return Intrinsic::hexagon_A4_cmphgtui; // "exagon.A4.cmphgtui"
  8097. }
  8098. break;
  8099. case 'm': // 1 string to match.
  8100. if (memcmp(NameR.data()+11, "odwrapu", 7))
  8101. break;
  8102. return Intrinsic::hexagon_A4_modwrapu; // "exagon.A4.modwrapu"
  8103. case 'r': // 3 strings to match.
  8104. switch (NameR[11]) {
  8105. default: break;
  8106. case 'c': // 1 string to match.
  8107. if (memcmp(NameR.data()+12, "mpneqi", 6))
  8108. break;
  8109. return Intrinsic::hexagon_A4_rcmpneqi; // "exagon.A4.rcmpneqi"
  8110. case 'o': // 2 strings to match.
  8111. if (memcmp(NameR.data()+12, "und.r", 5))
  8112. break;
  8113. switch (NameR[17]) {
  8114. default: break;
  8115. case 'i': // 1 string to match.
  8116. return Intrinsic::hexagon_A4_round_ri; // "exagon.A4.round.ri"
  8117. case 'r': // 1 string to match.
  8118. return Intrinsic::hexagon_A4_round_rr; // "exagon.A4.round.rr"
  8119. }
  8120. break;
  8121. }
  8122. break;
  8123. case 't': // 1 string to match.
  8124. if (memcmp(NameR.data()+11, "lbmatch", 7))
  8125. break;
  8126. return Intrinsic::hexagon_A4_tlbmatch; // "exagon.A4.tlbmatch"
  8127. case 'v': // 6 strings to match.
  8128. if (memcmp(NameR.data()+11, "cmp", 3))
  8129. break;
  8130. switch (NameR[14]) {
  8131. default: break;
  8132. case 'b': // 2 strings to match.
  8133. switch (NameR[15]) {
  8134. default: break;
  8135. case 'e': // 1 string to match.
  8136. if (memcmp(NameR.data()+16, "qi", 2))
  8137. break;
  8138. return Intrinsic::hexagon_A4_vcmpbeqi; // "exagon.A4.vcmpbeqi"
  8139. case 'g': // 1 string to match.
  8140. if (memcmp(NameR.data()+16, "ti", 2))
  8141. break;
  8142. return Intrinsic::hexagon_A4_vcmpbgti; // "exagon.A4.vcmpbgti"
  8143. }
  8144. break;
  8145. case 'h': // 2 strings to match.
  8146. switch (NameR[15]) {
  8147. default: break;
  8148. case 'e': // 1 string to match.
  8149. if (memcmp(NameR.data()+16, "qi", 2))
  8150. break;
  8151. return Intrinsic::hexagon_A4_vcmpheqi; // "exagon.A4.vcmpheqi"
  8152. case 'g': // 1 string to match.
  8153. if (memcmp(NameR.data()+16, "ti", 2))
  8154. break;
  8155. return Intrinsic::hexagon_A4_vcmphgti; // "exagon.A4.vcmphgti"
  8156. }
  8157. break;
  8158. case 'w': // 2 strings to match.
  8159. switch (NameR[15]) {
  8160. default: break;
  8161. case 'e': // 1 string to match.
  8162. if (memcmp(NameR.data()+16, "qi", 2))
  8163. break;
  8164. return Intrinsic::hexagon_A4_vcmpweqi; // "exagon.A4.vcmpweqi"
  8165. case 'g': // 1 string to match.
  8166. if (memcmp(NameR.data()+16, "ti", 2))
  8167. break;
  8168. return Intrinsic::hexagon_A4_vcmpwgti; // "exagon.A4.vcmpwgti"
  8169. }
  8170. break;
  8171. }
  8172. break;
  8173. }
  8174. break;
  8175. case '5': // 1 string to match.
  8176. if (memcmp(NameR.data()+9, ".vaddhubs", 9))
  8177. break;
  8178. return Intrinsic::hexagon_A5_vaddhubs; // "exagon.A5.vaddhubs"
  8179. }
  8180. break;
  8181. case 'C': // 5 strings to match.
  8182. switch (NameR[8]) {
  8183. default: break;
  8184. case '2': // 1 string to match.
  8185. if (memcmp(NameR.data()+9, ".bitsclri", 9))
  8186. break;
  8187. return Intrinsic::hexagon_C2_bitsclri; // "exagon.C2.bitsclri"
  8188. case '4': // 4 strings to match.
  8189. if (NameR[9] != '.')
  8190. break;
  8191. switch (NameR[10]) {
  8192. default: break;
  8193. case 'a': // 1 string to match.
  8194. if (memcmp(NameR.data()+11, "nd.andn", 7))
  8195. break;
  8196. return Intrinsic::hexagon_C4_and_andn; // "exagon.C4.and.andn"
  8197. case 'c': // 1 string to match.
  8198. if (memcmp(NameR.data()+11, "mplteui", 7))
  8199. break;
  8200. return Intrinsic::hexagon_C4_cmplteui; // "exagon.C4.cmplteui"
  8201. case 'n': // 2 strings to match.
  8202. if (memcmp(NameR.data()+11, "bits", 4))
  8203. break;
  8204. switch (NameR[15]) {
  8205. default: break;
  8206. case 'c': // 1 string to match.
  8207. if (memcmp(NameR.data()+16, "lr", 2))
  8208. break;
  8209. return Intrinsic::hexagon_C4_nbitsclr; // "exagon.C4.nbitsclr"
  8210. case 's': // 1 string to match.
  8211. if (memcmp(NameR.data()+16, "et", 2))
  8212. break;
  8213. return Intrinsic::hexagon_C4_nbitsset; // "exagon.C4.nbitsset"
  8214. }
  8215. break;
  8216. }
  8217. break;
  8218. }
  8219. break;
  8220. case 'F': // 8 strings to match.
  8221. if (memcmp(NameR.data()+8, "2.", 2))
  8222. break;
  8223. switch (NameR[10]) {
  8224. default: break;
  8225. case 'd': // 4 strings to match.
  8226. if (memcmp(NameR.data()+11, "ff", 2))
  8227. break;
  8228. switch (NameR[13]) {
  8229. default: break;
  8230. case 'i': // 3 strings to match.
  8231. if (memcmp(NameR.data()+14, "xup", 3))
  8232. break;
  8233. switch (NameR[17]) {
  8234. default: break;
  8235. case 'd': // 1 string to match.
  8236. return Intrinsic::hexagon_F2_dffixupd; // "exagon.F2.dffixupd"
  8237. case 'n': // 1 string to match.
  8238. return Intrinsic::hexagon_F2_dffixupn; // "exagon.F2.dffixupn"
  8239. case 'r': // 1 string to match.
  8240. return Intrinsic::hexagon_F2_dffixupr; // "exagon.F2.dffixupr"
  8241. }
  8242. break;
  8243. case 'm': // 1 string to match.
  8244. if (memcmp(NameR.data()+14, "a.sc", 4))
  8245. break;
  8246. return Intrinsic::hexagon_F2_dffma_sc; // "exagon.F2.dffma.sc"
  8247. }
  8248. break;
  8249. case 's': // 4 strings to match.
  8250. if (memcmp(NameR.data()+11, "ff", 2))
  8251. break;
  8252. switch (NameR[13]) {
  8253. default: break;
  8254. case 'i': // 3 strings to match.
  8255. if (memcmp(NameR.data()+14, "xup", 3))
  8256. break;
  8257. switch (NameR[17]) {
  8258. default: break;
  8259. case 'd': // 1 string to match.
  8260. return Intrinsic::hexagon_F2_sffixupd; // "exagon.F2.sffixupd"
  8261. case 'n': // 1 string to match.
  8262. return Intrinsic::hexagon_F2_sffixupn; // "exagon.F2.sffixupn"
  8263. case 'r': // 1 string to match.
  8264. return Intrinsic::hexagon_F2_sffixupr; // "exagon.F2.sffixupr"
  8265. }
  8266. break;
  8267. case 'm': // 1 string to match.
  8268. if (memcmp(NameR.data()+14, "a.sc", 4))
  8269. break;
  8270. return Intrinsic::hexagon_F2_sffma_sc; // "exagon.F2.sffma.sc"
  8271. }
  8272. break;
  8273. }
  8274. break;
  8275. case 'M': // 29 strings to match.
  8276. switch (NameR[8]) {
  8277. default: break;
  8278. case '2': // 18 strings to match.
  8279. if (NameR[9] != '.')
  8280. break;
  8281. switch (NameR[10]) {
  8282. default: break;
  8283. case 'c': // 10 strings to match.
  8284. switch (NameR[11]) {
  8285. default: break;
  8286. case 'm': // 8 strings to match.
  8287. switch (NameR[12]) {
  8288. default: break;
  8289. case 'a': // 4 strings to match.
  8290. if (NameR[13] != 'c')
  8291. break;
  8292. switch (NameR[14]) {
  8293. default: break;
  8294. case 'i': // 1 string to match.
  8295. if (memcmp(NameR.data()+15, ".s0", 3))
  8296. break;
  8297. return Intrinsic::hexagon_M2_cmaci_s0; // "exagon.M2.cmaci.s0"
  8298. case 'r': // 1 string to match.
  8299. if (memcmp(NameR.data()+15, ".s0", 3))
  8300. break;
  8301. return Intrinsic::hexagon_M2_cmacr_s0; // "exagon.M2.cmacr.s0"
  8302. case 's': // 2 strings to match.
  8303. if (memcmp(NameR.data()+15, ".s", 2))
  8304. break;
  8305. switch (NameR[17]) {
  8306. default: break;
  8307. case '0': // 1 string to match.
  8308. return Intrinsic::hexagon_M2_cmacs_s0; // "exagon.M2.cmacs.s0"
  8309. case '1': // 1 string to match.
  8310. return Intrinsic::hexagon_M2_cmacs_s1; // "exagon.M2.cmacs.s1"
  8311. }
  8312. break;
  8313. }
  8314. break;
  8315. case 'p': // 4 strings to match.
  8316. if (NameR[13] != 'y')
  8317. break;
  8318. switch (NameR[14]) {
  8319. default: break;
  8320. case 'i': // 1 string to match.
  8321. if (memcmp(NameR.data()+15, ".s0", 3))
  8322. break;
  8323. return Intrinsic::hexagon_M2_cmpyi_s0; // "exagon.M2.cmpyi.s0"
  8324. case 'r': // 1 string to match.
  8325. if (memcmp(NameR.data()+15, ".s0", 3))
  8326. break;
  8327. return Intrinsic::hexagon_M2_cmpyr_s0; // "exagon.M2.cmpyr.s0"
  8328. case 's': // 2 strings to match.
  8329. if (memcmp(NameR.data()+15, ".s", 2))
  8330. break;
  8331. switch (NameR[17]) {
  8332. default: break;
  8333. case '0': // 1 string to match.
  8334. return Intrinsic::hexagon_M2_cmpys_s0; // "exagon.M2.cmpys.s0"
  8335. case '1': // 1 string to match.
  8336. return Intrinsic::hexagon_M2_cmpys_s1; // "exagon.M2.cmpys.s1"
  8337. }
  8338. break;
  8339. }
  8340. break;
  8341. }
  8342. break;
  8343. case 'n': // 2 strings to match.
  8344. if (memcmp(NameR.data()+12, "acs.s", 5))
  8345. break;
  8346. switch (NameR[17]) {
  8347. default: break;
  8348. case '0': // 1 string to match.
  8349. return Intrinsic::hexagon_M2_cnacs_s0; // "exagon.M2.cnacs.s0"
  8350. case '1': // 1 string to match.
  8351. return Intrinsic::hexagon_M2_cnacs_s1; // "exagon.M2.cnacs.s1"
  8352. }
  8353. break;
  8354. }
  8355. break;
  8356. case 'm': // 5 strings to match.
  8357. switch (NameR[11]) {
  8358. default: break;
  8359. case 'm': // 4 strings to match.
  8360. if (memcmp(NameR.data()+12, "py", 2))
  8361. break;
  8362. switch (NameR[14]) {
  8363. default: break;
  8364. case 'h': // 2 strings to match.
  8365. if (memcmp(NameR.data()+15, ".s", 2))
  8366. break;
  8367. switch (NameR[17]) {
  8368. default: break;
  8369. case '0': // 1 string to match.
  8370. return Intrinsic::hexagon_M2_mmpyh_s0; // "exagon.M2.mmpyh.s0"
  8371. case '1': // 1 string to match.
  8372. return Intrinsic::hexagon_M2_mmpyh_s1; // "exagon.M2.mmpyh.s1"
  8373. }
  8374. break;
  8375. case 'l': // 2 strings to match.
  8376. if (memcmp(NameR.data()+15, ".s", 2))
  8377. break;
  8378. switch (NameR[17]) {
  8379. default: break;
  8380. case '0': // 1 string to match.
  8381. return Intrinsic::hexagon_M2_mmpyl_s0; // "exagon.M2.mmpyl.s0"
  8382. case '1': // 1 string to match.
  8383. return Intrinsic::hexagon_M2_mmpyl_s1; // "exagon.M2.mmpyl.s1"
  8384. }
  8385. break;
  8386. }
  8387. break;
  8388. case 'p': // 1 string to match.
  8389. if (memcmp(NameR.data()+12, "ysu.up", 6))
  8390. break;
  8391. return Intrinsic::hexagon_M2_mpysu_up; // "exagon.M2.mpysu.up"
  8392. }
  8393. break;
  8394. case 'v': // 2 strings to match.
  8395. if (memcmp(NameR.data()+11, "rm", 2))
  8396. break;
  8397. switch (NameR[13]) {
  8398. default: break;
  8399. case 'a': // 1 string to match.
  8400. if (memcmp(NameR.data()+14, "c.s0", 4))
  8401. break;
  8402. return Intrinsic::hexagon_M2_vrmac_s0; // "exagon.M2.vrmac.s0"
  8403. case 'p': // 1 string to match.
  8404. if (memcmp(NameR.data()+14, "y.s0", 4))
  8405. break;
  8406. return Intrinsic::hexagon_M2_vrmpy_s0; // "exagon.M2.vrmpy.s0"
  8407. }
  8408. break;
  8409. case 'x': // 1 string to match.
  8410. if (memcmp(NameR.data()+11, "or.xacc", 7))
  8411. break;
  8412. return Intrinsic::hexagon_M2_xor_xacc; // "exagon.M2.xor.xacc"
  8413. }
  8414. break;
  8415. case '4': // 5 strings to match.
  8416. if (NameR[9] != '.')
  8417. break;
  8418. switch (NameR[10]) {
  8419. default: break;
  8420. case 'a': // 1 string to match.
  8421. if (memcmp(NameR.data()+11, "nd.andn", 7))
  8422. break;
  8423. return Intrinsic::hexagon_M4_and_andn; // "exagon.M4.and.andn"
  8424. case 'c': // 2 strings to match.
  8425. if (memcmp(NameR.data()+11, "mpy", 3))
  8426. break;
  8427. switch (NameR[14]) {
  8428. default: break;
  8429. case 'i': // 1 string to match.
  8430. if (memcmp(NameR.data()+15, ".wh", 3))
  8431. break;
  8432. return Intrinsic::hexagon_M4_cmpyi_wh; // "exagon.M4.cmpyi.wh"
  8433. case 'r': // 1 string to match.
  8434. if (memcmp(NameR.data()+15, ".wh", 3))
  8435. break;
  8436. return Intrinsic::hexagon_M4_cmpyr_wh; // "exagon.M4.cmpyr.wh"
  8437. }
  8438. break;
  8439. case 'x': // 2 strings to match.
  8440. if (memcmp(NameR.data()+11, "or.", 3))
  8441. break;
  8442. switch (NameR[14]) {
  8443. default: break;
  8444. case 'a': // 1 string to match.
  8445. if (memcmp(NameR.data()+15, "ndn", 3))
  8446. break;
  8447. return Intrinsic::hexagon_M4_xor_andn; // "exagon.M4.xor.andn"
  8448. case 'x': // 1 string to match.
  8449. if (memcmp(NameR.data()+15, "acc", 3))
  8450. break;
  8451. return Intrinsic::hexagon_M4_xor_xacc; // "exagon.M4.xor.xacc"
  8452. }
  8453. break;
  8454. }
  8455. break;
  8456. case '5': // 6 strings to match.
  8457. if (memcmp(NameR.data()+9, ".v", 2))
  8458. break;
  8459. switch (NameR[11]) {
  8460. default: break;
  8461. case 'd': // 2 strings to match.
  8462. if (NameR[12] != 'm')
  8463. break;
  8464. switch (NameR[13]) {
  8465. default: break;
  8466. case 'a': // 1 string to match.
  8467. if (memcmp(NameR.data()+14, "cbsu", 4))
  8468. break;
  8469. return Intrinsic::hexagon_M5_vdmacbsu; // "exagon.M5.vdmacbsu"
  8470. case 'p': // 1 string to match.
  8471. if (memcmp(NameR.data()+14, "ybsu", 4))
  8472. break;
  8473. return Intrinsic::hexagon_M5_vdmpybsu; // "exagon.M5.vdmpybsu"
  8474. }
  8475. break;
  8476. case 'r': // 4 strings to match.
  8477. if (NameR[12] != 'm')
  8478. break;
  8479. switch (NameR[13]) {
  8480. default: break;
  8481. case 'a': // 2 strings to match.
  8482. if (memcmp(NameR.data()+14, "cb", 2))
  8483. break;
  8484. switch (NameR[16]) {
  8485. default: break;
  8486. case 's': // 1 string to match.
  8487. if (NameR[17] != 'u')
  8488. break;
  8489. return Intrinsic::hexagon_M5_vrmacbsu; // "exagon.M5.vrmacbsu"
  8490. case 'u': // 1 string to match.
  8491. if (NameR[17] != 'u')
  8492. break;
  8493. return Intrinsic::hexagon_M5_vrmacbuu; // "exagon.M5.vrmacbuu"
  8494. }
  8495. break;
  8496. case 'p': // 2 strings to match.
  8497. if (memcmp(NameR.data()+14, "yb", 2))
  8498. break;
  8499. switch (NameR[16]) {
  8500. default: break;
  8501. case 's': // 1 string to match.
  8502. if (NameR[17] != 'u')
  8503. break;
  8504. return Intrinsic::hexagon_M5_vrmpybsu; // "exagon.M5.vrmpybsu"
  8505. case 'u': // 1 string to match.
  8506. if (NameR[17] != 'u')
  8507. break;
  8508. return Intrinsic::hexagon_M5_vrmpybuu; // "exagon.M5.vrmpybuu"
  8509. }
  8510. break;
  8511. }
  8512. break;
  8513. }
  8514. break;
  8515. }
  8516. break;
  8517. case 'S': // 35 strings to match.
  8518. switch (NameR[8]) {
  8519. default: break;
  8520. case '2': // 31 strings to match.
  8521. if (NameR[9] != '.')
  8522. break;
  8523. switch (NameR[10]) {
  8524. default: break;
  8525. case 'a': // 8 strings to match.
  8526. if (NameR[11] != 's')
  8527. break;
  8528. switch (NameR[12]) {
  8529. default: break;
  8530. case 'l': // 4 strings to match.
  8531. if (NameR[13] != '.')
  8532. break;
  8533. switch (NameR[14]) {
  8534. default: break;
  8535. case 'i': // 2 strings to match.
  8536. if (memcmp(NameR.data()+15, ".v", 2))
  8537. break;
  8538. switch (NameR[17]) {
  8539. default: break;
  8540. case 'h': // 1 string to match.
  8541. return Intrinsic::hexagon_S2_asl_i_vh; // "exagon.S2.asl.i.vh"
  8542. case 'w': // 1 string to match.
  8543. return Intrinsic::hexagon_S2_asl_i_vw; // "exagon.S2.asl.i.vw"
  8544. }
  8545. break;
  8546. case 'r': // 2 strings to match.
  8547. if (memcmp(NameR.data()+15, ".v", 2))
  8548. break;
  8549. switch (NameR[17]) {
  8550. default: break;
  8551. case 'h': // 1 string to match.
  8552. return Intrinsic::hexagon_S2_asl_r_vh; // "exagon.S2.asl.r.vh"
  8553. case 'w': // 1 string to match.
  8554. return Intrinsic::hexagon_S2_asl_r_vw; // "exagon.S2.asl.r.vw"
  8555. }
  8556. break;
  8557. }
  8558. break;
  8559. case 'r': // 4 strings to match.
  8560. if (NameR[13] != '.')
  8561. break;
  8562. switch (NameR[14]) {
  8563. default: break;
  8564. case 'i': // 2 strings to match.
  8565. if (memcmp(NameR.data()+15, ".v", 2))
  8566. break;
  8567. switch (NameR[17]) {
  8568. default: break;
  8569. case 'h': // 1 string to match.
  8570. return Intrinsic::hexagon_S2_asr_i_vh; // "exagon.S2.asr.i.vh"
  8571. case 'w': // 1 string to match.
  8572. return Intrinsic::hexagon_S2_asr_i_vw; // "exagon.S2.asr.i.vw"
  8573. }
  8574. break;
  8575. case 'r': // 2 strings to match.
  8576. if (memcmp(NameR.data()+15, ".v", 2))
  8577. break;
  8578. switch (NameR[17]) {
  8579. default: break;
  8580. case 'h': // 1 string to match.
  8581. return Intrinsic::hexagon_S2_asr_r_vh; // "exagon.S2.asr.r.vh"
  8582. case 'w': // 1 string to match.
  8583. return Intrinsic::hexagon_S2_asr_r_vw; // "exagon.S2.asr.r.vw"
  8584. }
  8585. break;
  8586. }
  8587. break;
  8588. }
  8589. break;
  8590. case 'c': // 2 strings to match.
  8591. if (memcmp(NameR.data()+11, "lrbit.", 6))
  8592. break;
  8593. switch (NameR[17]) {
  8594. default: break;
  8595. case 'i': // 1 string to match.
  8596. return Intrinsic::hexagon_S2_clrbit_i; // "exagon.S2.clrbit.i"
  8597. case 'r': // 1 string to match.
  8598. return Intrinsic::hexagon_S2_clrbit_r; // "exagon.S2.clrbit.r"
  8599. }
  8600. break;
  8601. case 'e': // 1 string to match.
  8602. if (memcmp(NameR.data()+11, "xtractu", 7))
  8603. break;
  8604. return Intrinsic::hexagon_S2_extractu; // "exagon.S2.extractu"
  8605. case 'l': // 6 strings to match.
  8606. if (NameR[11] != 's')
  8607. break;
  8608. switch (NameR[12]) {
  8609. default: break;
  8610. case 'l': // 2 strings to match.
  8611. if (memcmp(NameR.data()+13, ".r.v", 4))
  8612. break;
  8613. switch (NameR[17]) {
  8614. default: break;
  8615. case 'h': // 1 string to match.
  8616. return Intrinsic::hexagon_S2_lsl_r_vh; // "exagon.S2.lsl.r.vh"
  8617. case 'w': // 1 string to match.
  8618. return Intrinsic::hexagon_S2_lsl_r_vw; // "exagon.S2.lsl.r.vw"
  8619. }
  8620. break;
  8621. case 'r': // 4 strings to match.
  8622. if (NameR[13] != '.')
  8623. break;
  8624. switch (NameR[14]) {
  8625. default: break;
  8626. case 'i': // 2 strings to match.
  8627. if (memcmp(NameR.data()+15, ".v", 2))
  8628. break;
  8629. switch (NameR[17]) {
  8630. default: break;
  8631. case 'h': // 1 string to match.
  8632. return Intrinsic::hexagon_S2_lsr_i_vh; // "exagon.S2.lsr.i.vh"
  8633. case 'w': // 1 string to match.
  8634. return Intrinsic::hexagon_S2_lsr_i_vw; // "exagon.S2.lsr.i.vw"
  8635. }
  8636. break;
  8637. case 'r': // 2 strings to match.
  8638. if (memcmp(NameR.data()+15, ".v", 2))
  8639. break;
  8640. switch (NameR[17]) {
  8641. default: break;
  8642. case 'h': // 1 string to match.
  8643. return Intrinsic::hexagon_S2_lsr_r_vh; // "exagon.S2.lsr.r.vh"
  8644. case 'w': // 1 string to match.
  8645. return Intrinsic::hexagon_S2_lsr_r_vw; // "exagon.S2.lsr.r.vw"
  8646. }
  8647. break;
  8648. }
  8649. break;
  8650. }
  8651. break;
  8652. case 's': // 3 strings to match.
  8653. switch (NameR[11]) {
  8654. default: break;
  8655. case 'e': // 2 strings to match.
  8656. if (memcmp(NameR.data()+12, "tbit.", 5))
  8657. break;
  8658. switch (NameR[17]) {
  8659. default: break;
  8660. case 'i': // 1 string to match.
  8661. return Intrinsic::hexagon_S2_setbit_i; // "exagon.S2.setbit.i"
  8662. case 'r': // 1 string to match.
  8663. return Intrinsic::hexagon_S2_setbit_r; // "exagon.S2.setbit.r"
  8664. }
  8665. break;
  8666. case 'v': // 1 string to match.
  8667. if (memcmp(NameR.data()+12, "sathub", 6))
  8668. break;
  8669. return Intrinsic::hexagon_S2_svsathub; // "exagon.S2.svsathub"
  8670. }
  8671. break;
  8672. case 't': // 2 strings to match.
  8673. if (memcmp(NameR.data()+11, "stbit.", 6))
  8674. break;
  8675. switch (NameR[17]) {
  8676. default: break;
  8677. case 'i': // 1 string to match.
  8678. return Intrinsic::hexagon_S2_tstbit_i; // "exagon.S2.tstbit.i"
  8679. case 'r': // 1 string to match.
  8680. return Intrinsic::hexagon_S2_tstbit_r; // "exagon.S2.tstbit.r"
  8681. }
  8682. break;
  8683. case 'v': // 9 strings to match.
  8684. switch (NameR[11]) {
  8685. default: break;
  8686. case 'a': // 2 strings to match.
  8687. if (memcmp(NameR.data()+12, "lign", 4))
  8688. break;
  8689. switch (NameR[16]) {
  8690. default: break;
  8691. case 'i': // 1 string to match.
  8692. if (NameR[17] != 'b')
  8693. break;
  8694. return Intrinsic::hexagon_S2_valignib; // "exagon.S2.valignib"
  8695. case 'r': // 1 string to match.
  8696. if (NameR[17] != 'b')
  8697. break;
  8698. return Intrinsic::hexagon_S2_valignrb; // "exagon.S2.valignrb"
  8699. }
  8700. break;
  8701. case 'c': // 1 string to match.
  8702. if (memcmp(NameR.data()+12, "rotate", 6))
  8703. break;
  8704. return Intrinsic::hexagon_S2_vcrotate; // "exagon.S2.vcrotate"
  8705. case 's': // 2 strings to match.
  8706. if (memcmp(NameR.data()+12, "platr", 5))
  8707. break;
  8708. switch (NameR[17]) {
  8709. default: break;
  8710. case 'b': // 1 string to match.
  8711. return Intrinsic::hexagon_S2_vsplatrb; // "exagon.S2.vsplatrb"
  8712. case 'h': // 1 string to match.
  8713. return Intrinsic::hexagon_S2_vsplatrh; // "exagon.S2.vsplatrh"
  8714. }
  8715. break;
  8716. case 't': // 4 strings to match.
  8717. if (memcmp(NameR.data()+12, "run", 3))
  8718. break;
  8719. switch (NameR[15]) {
  8720. default: break;
  8721. case 'e': // 2 strings to match.
  8722. switch (NameR[16]) {
  8723. default: break;
  8724. case 'h': // 1 string to match.
  8725. if (NameR[17] != 'b')
  8726. break;
  8727. return Intrinsic::hexagon_S2_vtrunehb; // "exagon.S2.vtrunehb"
  8728. case 'w': // 1 string to match.
  8729. if (NameR[17] != 'h')
  8730. break;
  8731. return Intrinsic::hexagon_S2_vtrunewh; // "exagon.S2.vtrunewh"
  8732. }
  8733. break;
  8734. case 'o': // 2 strings to match.
  8735. switch (NameR[16]) {
  8736. default: break;
  8737. case 'h': // 1 string to match.
  8738. if (NameR[17] != 'b')
  8739. break;
  8740. return Intrinsic::hexagon_S2_vtrunohb; // "exagon.S2.vtrunohb"
  8741. case 'w': // 1 string to match.
  8742. if (NameR[17] != 'h')
  8743. break;
  8744. return Intrinsic::hexagon_S2_vtrunowh; // "exagon.S2.vtrunowh"
  8745. }
  8746. break;
  8747. }
  8748. break;
  8749. }
  8750. break;
  8751. }
  8752. break;
  8753. case '4': // 4 strings to match.
  8754. if (NameR[9] != '.')
  8755. break;
  8756. switch (NameR[10]) {
  8757. default: break;
  8758. case 'c': // 2 strings to match.
  8759. if (memcmp(NameR.data()+11, "lbp", 3))
  8760. break;
  8761. switch (NameR[14]) {
  8762. default: break;
  8763. case 'a': // 1 string to match.
  8764. if (memcmp(NameR.data()+15, "ddi", 3))
  8765. break;
  8766. return Intrinsic::hexagon_S4_clbpaddi; // "exagon.S4.clbpaddi"
  8767. case 'n': // 1 string to match.
  8768. if (memcmp(NameR.data()+15, "orm", 3))
  8769. break;
  8770. return Intrinsic::hexagon_S4_clbpnorm; // "exagon.S4.clbpnorm"
  8771. }
  8772. break;
  8773. case 'e': // 1 string to match.
  8774. if (memcmp(NameR.data()+11, "xtractp", 7))
  8775. break;
  8776. return Intrinsic::hexagon_S4_extractp; // "exagon.S4.extractp"
  8777. case 'o': // 1 string to match.
  8778. if (memcmp(NameR.data()+11, "r.andix", 7))
  8779. break;
  8780. return Intrinsic::hexagon_S4_or_andix; // "exagon.S4.or.andix"
  8781. }
  8782. break;
  8783. }
  8784. break;
  8785. }
  8786. break;
  8787. case 19: // 81 strings to match.
  8788. if (memcmp(NameR.data()+0, "exagon.", 7))
  8789. break;
  8790. switch (NameR[7]) {
  8791. default: break;
  8792. case 'A': // 11 strings to match.
  8793. switch (NameR[8]) {
  8794. default: break;
  8795. case '2': // 3 strings to match.
  8796. if (NameR[9] != '.')
  8797. break;
  8798. switch (NameR[10]) {
  8799. default: break;
  8800. case 'c': // 1 string to match.
  8801. if (memcmp(NameR.data()+11, "ombineii", 8))
  8802. break;
  8803. return Intrinsic::hexagon_A2_combineii; // "exagon.A2.combineii"
  8804. case 'v': // 2 strings to match.
  8805. switch (NameR[11]) {
  8806. default: break;
  8807. case 'a': // 1 string to match.
  8808. if (memcmp(NameR.data()+12, "ddb.map", 7))
  8809. break;
  8810. return Intrinsic::hexagon_A2_vaddb_map; // "exagon.A2.vaddb.map"
  8811. case 's': // 1 string to match.
  8812. if (memcmp(NameR.data()+12, "ubb.map", 7))
  8813. break;
  8814. return Intrinsic::hexagon_A2_vsubb_map; // "exagon.A2.vsubb.map"
  8815. }
  8816. break;
  8817. }
  8818. break;
  8819. case '4': // 8 strings to match.
  8820. if (NameR[9] != '.')
  8821. break;
  8822. switch (NameR[10]) {
  8823. default: break;
  8824. case 'b': // 1 string to match.
  8825. if (memcmp(NameR.data()+11, "itspliti", 8))
  8826. break;
  8827. return Intrinsic::hexagon_A4_bitspliti; // "exagon.A4.bitspliti"
  8828. case 'c': // 4 strings to match.
  8829. switch (NameR[11]) {
  8830. default: break;
  8831. case 'o': // 2 strings to match.
  8832. if (memcmp(NameR.data()+12, "mbine", 5))
  8833. break;
  8834. switch (NameR[17]) {
  8835. default: break;
  8836. case 'i': // 1 string to match.
  8837. if (NameR[18] != 'r')
  8838. break;
  8839. return Intrinsic::hexagon_A4_combineir; // "exagon.A4.combineir"
  8840. case 'r': // 1 string to match.
  8841. if (NameR[18] != 'i')
  8842. break;
  8843. return Intrinsic::hexagon_A4_combineri; // "exagon.A4.combineri"
  8844. }
  8845. break;
  8846. case 'r': // 2 strings to match.
  8847. if (memcmp(NameR.data()+12, "ound.r", 6))
  8848. break;
  8849. switch (NameR[18]) {
  8850. default: break;
  8851. case 'i': // 1 string to match.
  8852. return Intrinsic::hexagon_A4_cround_ri; // "exagon.A4.cround.ri"
  8853. case 'r': // 1 string to match.
  8854. return Intrinsic::hexagon_A4_cround_rr; // "exagon.A4.cround.rr"
  8855. }
  8856. break;
  8857. }
  8858. break;
  8859. case 'v': // 3 strings to match.
  8860. if (memcmp(NameR.data()+11, "cmp", 3))
  8861. break;
  8862. switch (NameR[14]) {
  8863. default: break;
  8864. case 'b': // 1 string to match.
  8865. if (memcmp(NameR.data()+15, "gtui", 4))
  8866. break;
  8867. return Intrinsic::hexagon_A4_vcmpbgtui; // "exagon.A4.vcmpbgtui"
  8868. case 'h': // 1 string to match.
  8869. if (memcmp(NameR.data()+15, "gtui", 4))
  8870. break;
  8871. return Intrinsic::hexagon_A4_vcmphgtui; // "exagon.A4.vcmphgtui"
  8872. case 'w': // 1 string to match.
  8873. if (memcmp(NameR.data()+15, "gtui", 4))
  8874. break;
  8875. return Intrinsic::hexagon_A4_vcmpwgtui; // "exagon.A4.vcmpwgtui"
  8876. }
  8877. break;
  8878. }
  8879. break;
  8880. }
  8881. break;
  8882. case 'C': // 2 strings to match.
  8883. switch (NameR[8]) {
  8884. default: break;
  8885. case '2': // 1 string to match.
  8886. if (memcmp(NameR.data()+9, ".pxfer.map", 10))
  8887. break;
  8888. return Intrinsic::hexagon_C2_pxfer_map; // "exagon.C2.pxfer.map"
  8889. case '4': // 1 string to match.
  8890. if (memcmp(NameR.data()+9, ".nbitsclri", 10))
  8891. break;
  8892. return Intrinsic::hexagon_C4_nbitsclri; // "exagon.C4.nbitsclri"
  8893. }
  8894. break;
  8895. case 'F': // 12 strings to match.
  8896. if (memcmp(NameR.data()+8, "2.", 2))
  8897. break;
  8898. switch (NameR[10]) {
  8899. default: break;
  8900. case 'c': // 8 strings to match.
  8901. if (memcmp(NameR.data()+11, "onv.", 4))
  8902. break;
  8903. switch (NameR[15]) {
  8904. default: break;
  8905. case 'd': // 4 strings to match.
  8906. switch (NameR[16]) {
  8907. default: break;
  8908. case '2': // 2 strings to match.
  8909. switch (NameR[17]) {
  8910. default: break;
  8911. case 'd': // 1 string to match.
  8912. if (NameR[18] != 'f')
  8913. break;
  8914. return Intrinsic::hexagon_F2_conv_d2df; // "exagon.F2.conv.d2df"
  8915. case 's': // 1 string to match.
  8916. if (NameR[18] != 'f')
  8917. break;
  8918. return Intrinsic::hexagon_F2_conv_d2sf; // "exagon.F2.conv.d2sf"
  8919. }
  8920. break;
  8921. case 'f': // 2 strings to match.
  8922. if (NameR[17] != '2')
  8923. break;
  8924. switch (NameR[18]) {
  8925. default: break;
  8926. case 'd': // 1 string to match.
  8927. return Intrinsic::hexagon_F2_conv_df2d; // "exagon.F2.conv.df2d"
  8928. case 'w': // 1 string to match.
  8929. return Intrinsic::hexagon_F2_conv_df2w; // "exagon.F2.conv.df2w"
  8930. }
  8931. break;
  8932. }
  8933. break;
  8934. case 's': // 2 strings to match.
  8935. if (memcmp(NameR.data()+16, "f2", 2))
  8936. break;
  8937. switch (NameR[18]) {
  8938. default: break;
  8939. case 'd': // 1 string to match.
  8940. return Intrinsic::hexagon_F2_conv_sf2d; // "exagon.F2.conv.sf2d"
  8941. case 'w': // 1 string to match.
  8942. return Intrinsic::hexagon_F2_conv_sf2w; // "exagon.F2.conv.sf2w"
  8943. }
  8944. break;
  8945. case 'w': // 2 strings to match.
  8946. if (NameR[16] != '2')
  8947. break;
  8948. switch (NameR[17]) {
  8949. default: break;
  8950. case 'd': // 1 string to match.
  8951. if (NameR[18] != 'f')
  8952. break;
  8953. return Intrinsic::hexagon_F2_conv_w2df; // "exagon.F2.conv.w2df"
  8954. case 's': // 1 string to match.
  8955. if (NameR[18] != 'f')
  8956. break;
  8957. return Intrinsic::hexagon_F2_conv_w2sf; // "exagon.F2.conv.w2sf"
  8958. }
  8959. break;
  8960. }
  8961. break;
  8962. case 'd': // 2 strings to match.
  8963. if (memcmp(NameR.data()+11, "ffm", 3))
  8964. break;
  8965. switch (NameR[14]) {
  8966. default: break;
  8967. case 'a': // 1 string to match.
  8968. if (memcmp(NameR.data()+15, ".lib", 4))
  8969. break;
  8970. return Intrinsic::hexagon_F2_dffma_lib; // "exagon.F2.dffma.lib"
  8971. case 's': // 1 string to match.
  8972. if (memcmp(NameR.data()+15, ".lib", 4))
  8973. break;
  8974. return Intrinsic::hexagon_F2_dffms_lib; // "exagon.F2.dffms.lib"
  8975. }
  8976. break;
  8977. case 's': // 2 strings to match.
  8978. if (memcmp(NameR.data()+11, "ffm", 3))
  8979. break;
  8980. switch (NameR[14]) {
  8981. default: break;
  8982. case 'a': // 1 string to match.
  8983. if (memcmp(NameR.data()+15, ".lib", 4))
  8984. break;
  8985. return Intrinsic::hexagon_F2_sffma_lib; // "exagon.F2.sffma.lib"
  8986. case 's': // 1 string to match.
  8987. if (memcmp(NameR.data()+15, ".lib", 4))
  8988. break;
  8989. return Intrinsic::hexagon_F2_sffms_lib; // "exagon.F2.sffms.lib"
  8990. }
  8991. break;
  8992. }
  8993. break;
  8994. case 'M': // 44 strings to match.
  8995. switch (NameR[8]) {
  8996. default: break;
  8997. case '2': // 41 strings to match.
  8998. if (NameR[9] != '.')
  8999. break;
  9000. switch (NameR[10]) {
  9001. default: break;
  9002. case 'c': // 8 strings to match.
  9003. switch (NameR[11]) {
  9004. default: break;
  9005. case 'm': // 6 strings to match.
  9006. switch (NameR[12]) {
  9007. default: break;
  9008. case 'a': // 2 strings to match.
  9009. if (memcmp(NameR.data()+13, "csc.s", 5))
  9010. break;
  9011. switch (NameR[18]) {
  9012. default: break;
  9013. case '0': // 1 string to match.
  9014. return Intrinsic::hexagon_M2_cmacsc_s0; // "exagon.M2.cmacsc.s0"
  9015. case '1': // 1 string to match.
  9016. return Intrinsic::hexagon_M2_cmacsc_s1; // "exagon.M2.cmacsc.s1"
  9017. }
  9018. break;
  9019. case 'p': // 4 strings to match.
  9020. if (NameR[13] != 'y')
  9021. break;
  9022. switch (NameR[14]) {
  9023. default: break;
  9024. case 'r': // 2 strings to match.
  9025. if (memcmp(NameR.data()+15, "s.s", 3))
  9026. break;
  9027. switch (NameR[18]) {
  9028. default: break;
  9029. case '0': // 1 string to match.
  9030. return Intrinsic::hexagon_M2_cmpyrs_s0; // "exagon.M2.cmpyrs.s0"
  9031. case '1': // 1 string to match.
  9032. return Intrinsic::hexagon_M2_cmpyrs_s1; // "exagon.M2.cmpyrs.s1"
  9033. }
  9034. break;
  9035. case 's': // 2 strings to match.
  9036. if (memcmp(NameR.data()+15, "c.s", 3))
  9037. break;
  9038. switch (NameR[18]) {
  9039. default: break;
  9040. case '0': // 1 string to match.
  9041. return Intrinsic::hexagon_M2_cmpysc_s0; // "exagon.M2.cmpysc.s0"
  9042. case '1': // 1 string to match.
  9043. return Intrinsic::hexagon_M2_cmpysc_s1; // "exagon.M2.cmpysc.s1"
  9044. }
  9045. break;
  9046. }
  9047. break;
  9048. }
  9049. break;
  9050. case 'n': // 2 strings to match.
  9051. if (memcmp(NameR.data()+12, "acsc.s", 6))
  9052. break;
  9053. switch (NameR[18]) {
  9054. default: break;
  9055. case '0': // 1 string to match.
  9056. return Intrinsic::hexagon_M2_cnacsc_s0; // "exagon.M2.cnacsc.s0"
  9057. case '1': // 1 string to match.
  9058. return Intrinsic::hexagon_M2_cnacsc_s1; // "exagon.M2.cnacsc.s1"
  9059. }
  9060. break;
  9061. }
  9062. break;
  9063. case 'h': // 2 strings to match.
  9064. if (memcmp(NameR.data()+11, "mmpy", 4))
  9065. break;
  9066. switch (NameR[15]) {
  9067. default: break;
  9068. case 'h': // 1 string to match.
  9069. if (memcmp(NameR.data()+16, ".s1", 3))
  9070. break;
  9071. return Intrinsic::hexagon_M2_hmmpyh_s1; // "exagon.M2.hmmpyh.s1"
  9072. case 'l': // 1 string to match.
  9073. if (memcmp(NameR.data()+16, ".s1", 3))
  9074. break;
  9075. return Intrinsic::hexagon_M2_hmmpyl_s1; // "exagon.M2.hmmpyl.s1"
  9076. }
  9077. break;
  9078. case 'm': // 21 strings to match.
  9079. switch (NameR[11]) {
  9080. default: break;
  9081. case 'm': // 12 strings to match.
  9082. switch (NameR[12]) {
  9083. default: break;
  9084. case 'a': // 4 strings to match.
  9085. if (NameR[13] != 'c')
  9086. break;
  9087. switch (NameR[14]) {
  9088. default: break;
  9089. case 'h': // 2 strings to match.
  9090. if (memcmp(NameR.data()+15, "s.s", 3))
  9091. break;
  9092. switch (NameR[18]) {
  9093. default: break;
  9094. case '0': // 1 string to match.
  9095. return Intrinsic::hexagon_M2_mmachs_s0; // "exagon.M2.mmachs.s0"
  9096. case '1': // 1 string to match.
  9097. return Intrinsic::hexagon_M2_mmachs_s1; // "exagon.M2.mmachs.s1"
  9098. }
  9099. break;
  9100. case 'l': // 2 strings to match.
  9101. if (memcmp(NameR.data()+15, "s.s", 3))
  9102. break;
  9103. switch (NameR[18]) {
  9104. default: break;
  9105. case '0': // 1 string to match.
  9106. return Intrinsic::hexagon_M2_mmacls_s0; // "exagon.M2.mmacls.s0"
  9107. case '1': // 1 string to match.
  9108. return Intrinsic::hexagon_M2_mmacls_s1; // "exagon.M2.mmacls.s1"
  9109. }
  9110. break;
  9111. }
  9112. break;
  9113. case 'p': // 8 strings to match.
  9114. if (NameR[13] != 'y')
  9115. break;
  9116. switch (NameR[14]) {
  9117. default: break;
  9118. case 'h': // 2 strings to match.
  9119. if (memcmp(NameR.data()+15, ".rs", 3))
  9120. break;
  9121. switch (NameR[18]) {
  9122. default: break;
  9123. case '0': // 1 string to match.
  9124. return Intrinsic::hexagon_M2_mmpyh_rs0; // "exagon.M2.mmpyh.rs0"
  9125. case '1': // 1 string to match.
  9126. return Intrinsic::hexagon_M2_mmpyh_rs1; // "exagon.M2.mmpyh.rs1"
  9127. }
  9128. break;
  9129. case 'l': // 2 strings to match.
  9130. if (memcmp(NameR.data()+15, ".rs", 3))
  9131. break;
  9132. switch (NameR[18]) {
  9133. default: break;
  9134. case '0': // 1 string to match.
  9135. return Intrinsic::hexagon_M2_mmpyl_rs0; // "exagon.M2.mmpyl.rs0"
  9136. case '1': // 1 string to match.
  9137. return Intrinsic::hexagon_M2_mmpyl_rs1; // "exagon.M2.mmpyl.rs1"
  9138. }
  9139. break;
  9140. case 'u': // 4 strings to match.
  9141. switch (NameR[15]) {
  9142. default: break;
  9143. case 'h': // 2 strings to match.
  9144. if (memcmp(NameR.data()+16, ".s", 2))
  9145. break;
  9146. switch (NameR[18]) {
  9147. default: break;
  9148. case '0': // 1 string to match.
  9149. return Intrinsic::hexagon_M2_mmpyuh_s0; // "exagon.M2.mmpyuh.s0"
  9150. case '1': // 1 string to match.
  9151. return Intrinsic::hexagon_M2_mmpyuh_s1; // "exagon.M2.mmpyuh.s1"
  9152. }
  9153. break;
  9154. case 'l': // 2 strings to match.
  9155. if (memcmp(NameR.data()+16, ".s", 2))
  9156. break;
  9157. switch (NameR[18]) {
  9158. default: break;
  9159. case '0': // 1 string to match.
  9160. return Intrinsic::hexagon_M2_mmpyul_s0; // "exagon.M2.mmpyul.s0"
  9161. case '1': // 1 string to match.
  9162. return Intrinsic::hexagon_M2_mmpyul_s1; // "exagon.M2.mmpyul.s1"
  9163. }
  9164. break;
  9165. }
  9166. break;
  9167. }
  9168. break;
  9169. }
  9170. break;
  9171. case 'p': // 9 strings to match.
  9172. if (memcmp(NameR.data()+12, "y.", 2))
  9173. break;
  9174. switch (NameR[14]) {
  9175. default: break;
  9176. case 'h': // 4 strings to match.
  9177. switch (NameR[15]) {
  9178. default: break;
  9179. case 'h': // 2 strings to match.
  9180. if (memcmp(NameR.data()+16, ".s", 2))
  9181. break;
  9182. switch (NameR[18]) {
  9183. default: break;
  9184. case '0': // 1 string to match.
  9185. return Intrinsic::hexagon_M2_mpy_hh_s0; // "exagon.M2.mpy.hh.s0"
  9186. case '1': // 1 string to match.
  9187. return Intrinsic::hexagon_M2_mpy_hh_s1; // "exagon.M2.mpy.hh.s1"
  9188. }
  9189. break;
  9190. case 'l': // 2 strings to match.
  9191. if (memcmp(NameR.data()+16, ".s", 2))
  9192. break;
  9193. switch (NameR[18]) {
  9194. default: break;
  9195. case '0': // 1 string to match.
  9196. return Intrinsic::hexagon_M2_mpy_hl_s0; // "exagon.M2.mpy.hl.s0"
  9197. case '1': // 1 string to match.
  9198. return Intrinsic::hexagon_M2_mpy_hl_s1; // "exagon.M2.mpy.hl.s1"
  9199. }
  9200. break;
  9201. }
  9202. break;
  9203. case 'l': // 4 strings to match.
  9204. switch (NameR[15]) {
  9205. default: break;
  9206. case 'h': // 2 strings to match.
  9207. if (memcmp(NameR.data()+16, ".s", 2))
  9208. break;
  9209. switch (NameR[18]) {
  9210. default: break;
  9211. case '0': // 1 string to match.
  9212. return Intrinsic::hexagon_M2_mpy_lh_s0; // "exagon.M2.mpy.lh.s0"
  9213. case '1': // 1 string to match.
  9214. return Intrinsic::hexagon_M2_mpy_lh_s1; // "exagon.M2.mpy.lh.s1"
  9215. }
  9216. break;
  9217. case 'l': // 2 strings to match.
  9218. if (memcmp(NameR.data()+16, ".s", 2))
  9219. break;
  9220. switch (NameR[18]) {
  9221. default: break;
  9222. case '0': // 1 string to match.
  9223. return Intrinsic::hexagon_M2_mpy_ll_s0; // "exagon.M2.mpy.ll.s0"
  9224. case '1': // 1 string to match.
  9225. return Intrinsic::hexagon_M2_mpy_ll_s1; // "exagon.M2.mpy.ll.s1"
  9226. }
  9227. break;
  9228. }
  9229. break;
  9230. case 'u': // 1 string to match.
  9231. if (memcmp(NameR.data()+15, "p.s1", 4))
  9232. break;
  9233. return Intrinsic::hexagon_M2_mpy_up_s1; // "exagon.M2.mpy.up.s1"
  9234. }
  9235. break;
  9236. }
  9237. break;
  9238. case 'v': // 10 strings to match.
  9239. switch (NameR[11]) {
  9240. default: break;
  9241. case 'a': // 2 strings to match.
  9242. if (memcmp(NameR.data()+12, "bsdiff", 6))
  9243. break;
  9244. switch (NameR[18]) {
  9245. default: break;
  9246. case 'h': // 1 string to match.
  9247. return Intrinsic::hexagon_M2_vabsdiffh; // "exagon.M2.vabsdiffh"
  9248. case 'w': // 1 string to match.
  9249. return Intrinsic::hexagon_M2_vabsdiffw; // "exagon.M2.vabsdiffw"
  9250. }
  9251. break;
  9252. case 'd': // 4 strings to match.
  9253. if (NameR[12] != 'm')
  9254. break;
  9255. switch (NameR[13]) {
  9256. default: break;
  9257. case 'a': // 2 strings to match.
  9258. if (memcmp(NameR.data()+14, "cs.s", 4))
  9259. break;
  9260. switch (NameR[18]) {
  9261. default: break;
  9262. case '0': // 1 string to match.
  9263. return Intrinsic::hexagon_M2_vdmacs_s0; // "exagon.M2.vdmacs.s0"
  9264. case '1': // 1 string to match.
  9265. return Intrinsic::hexagon_M2_vdmacs_s1; // "exagon.M2.vdmacs.s1"
  9266. }
  9267. break;
  9268. case 'p': // 2 strings to match.
  9269. if (memcmp(NameR.data()+14, "ys.s", 4))
  9270. break;
  9271. switch (NameR[18]) {
  9272. default: break;
  9273. case '0': // 1 string to match.
  9274. return Intrinsic::hexagon_M2_vdmpys_s0; // "exagon.M2.vdmpys.s0"
  9275. case '1': // 1 string to match.
  9276. return Intrinsic::hexagon_M2_vdmpys_s1; // "exagon.M2.vdmpys.s1"
  9277. }
  9278. break;
  9279. }
  9280. break;
  9281. case 'm': // 4 strings to match.
  9282. switch (NameR[12]) {
  9283. default: break;
  9284. case 'a': // 2 strings to match.
  9285. if (memcmp(NameR.data()+13, "c2s.s", 5))
  9286. break;
  9287. switch (NameR[18]) {
  9288. default: break;
  9289. case '0': // 1 string to match.
  9290. return Intrinsic::hexagon_M2_vmac2s_s0; // "exagon.M2.vmac2s.s0"
  9291. case '1': // 1 string to match.
  9292. return Intrinsic::hexagon_M2_vmac2s_s1; // "exagon.M2.vmac2s.s1"
  9293. }
  9294. break;
  9295. case 'p': // 2 strings to match.
  9296. if (memcmp(NameR.data()+13, "y2s.s", 5))
  9297. break;
  9298. switch (NameR[18]) {
  9299. default: break;
  9300. case '0': // 1 string to match.
  9301. return Intrinsic::hexagon_M2_vmpy2s_s0; // "exagon.M2.vmpy2s.s0"
  9302. case '1': // 1 string to match.
  9303. return Intrinsic::hexagon_M2_vmpy2s_s1; // "exagon.M2.vmpy2s.s1"
  9304. }
  9305. break;
  9306. }
  9307. break;
  9308. }
  9309. break;
  9310. }
  9311. break;
  9312. case '4': // 3 strings to match.
  9313. if (NameR[9] != '.')
  9314. break;
  9315. switch (NameR[10]) {
  9316. default: break;
  9317. case 'c': // 2 strings to match.
  9318. if (memcmp(NameR.data()+11, "mpy", 3))
  9319. break;
  9320. switch (NameR[14]) {
  9321. default: break;
  9322. case 'i': // 1 string to match.
  9323. if (memcmp(NameR.data()+15, ".whc", 4))
  9324. break;
  9325. return Intrinsic::hexagon_M4_cmpyi_whc; // "exagon.M4.cmpyi.whc"
  9326. case 'r': // 1 string to match.
  9327. if (memcmp(NameR.data()+15, ".whc", 4))
  9328. break;
  9329. return Intrinsic::hexagon_M4_cmpyr_whc; // "exagon.M4.cmpyr.whc"
  9330. }
  9331. break;
  9332. case 'p': // 1 string to match.
  9333. if (memcmp(NameR.data()+11, "mpyw.acc", 8))
  9334. break;
  9335. return Intrinsic::hexagon_M4_pmpyw_acc; // "exagon.M4.pmpyw.acc"
  9336. }
  9337. break;
  9338. }
  9339. break;
  9340. case 'S': // 12 strings to match.
  9341. switch (NameR[8]) {
  9342. default: break;
  9343. case '2': // 4 strings to match.
  9344. if (NameR[9] != '.')
  9345. break;
  9346. switch (NameR[10]) {
  9347. default: break;
  9348. case 'e': // 1 string to match.
  9349. if (memcmp(NameR.data()+11, "xtractup", 8))
  9350. break;
  9351. return Intrinsic::hexagon_S2_extractup; // "exagon.S2.extractup"
  9352. case 'i': // 1 string to match.
  9353. if (memcmp(NameR.data()+11, "nsert.rp", 8))
  9354. break;
  9355. return Intrinsic::hexagon_S2_insert_rp; // "exagon.S2.insert.rp"
  9356. case 'v': // 2 strings to match.
  9357. if (memcmp(NameR.data()+11, "splice", 6))
  9358. break;
  9359. switch (NameR[17]) {
  9360. default: break;
  9361. case 'i': // 1 string to match.
  9362. if (NameR[18] != 'b')
  9363. break;
  9364. return Intrinsic::hexagon_S2_vspliceib; // "exagon.S2.vspliceib"
  9365. case 'r': // 1 string to match.
  9366. if (NameR[18] != 'b')
  9367. break;
  9368. return Intrinsic::hexagon_S2_vsplicerb; // "exagon.S2.vsplicerb"
  9369. }
  9370. break;
  9371. }
  9372. break;
  9373. case '4': // 7 strings to match.
  9374. if (NameR[9] != '.')
  9375. break;
  9376. switch (NameR[10]) {
  9377. default: break;
  9378. case 'n': // 2 strings to match.
  9379. if (memcmp(NameR.data()+11, "tstbit.", 7))
  9380. break;
  9381. switch (NameR[18]) {
  9382. default: break;
  9383. case 'i': // 1 string to match.
  9384. return Intrinsic::hexagon_S4_ntstbit_i; // "exagon.S4.ntstbit.i"
  9385. case 'r': // 1 string to match.
  9386. return Intrinsic::hexagon_S4_ntstbit_r; // "exagon.S4.ntstbit.r"
  9387. }
  9388. break;
  9389. case 'v': // 5 strings to match.
  9390. switch (NameR[11]) {
  9391. default: break;
  9392. case 'r': // 1 string to match.
  9393. if (memcmp(NameR.data()+12, "crotate", 7))
  9394. break;
  9395. return Intrinsic::hexagon_S4_vrcrotate; // "exagon.S4.vrcrotate"
  9396. case 'x': // 4 strings to match.
  9397. switch (NameR[12]) {
  9398. default: break;
  9399. case 'a': // 2 strings to match.
  9400. if (memcmp(NameR.data()+13, "ddsub", 5))
  9401. break;
  9402. switch (NameR[18]) {
  9403. default: break;
  9404. case 'h': // 1 string to match.
  9405. return Intrinsic::hexagon_S4_vxaddsubh; // "exagon.S4.vxaddsubh"
  9406. case 'w': // 1 string to match.
  9407. return Intrinsic::hexagon_S4_vxaddsubw; // "exagon.S4.vxaddsubw"
  9408. }
  9409. break;
  9410. case 's': // 2 strings to match.
  9411. if (memcmp(NameR.data()+13, "ubadd", 5))
  9412. break;
  9413. switch (NameR[18]) {
  9414. default: break;
  9415. case 'h': // 1 string to match.
  9416. return Intrinsic::hexagon_S4_vxsubaddh; // "exagon.S4.vxsubaddh"
  9417. case 'w': // 1 string to match.
  9418. return Intrinsic::hexagon_S4_vxsubaddw; // "exagon.S4.vxsubaddw"
  9419. }
  9420. break;
  9421. }
  9422. break;
  9423. }
  9424. break;
  9425. }
  9426. break;
  9427. case '5': // 1 string to match.
  9428. if (memcmp(NameR.data()+9, ".popcountp", 10))
  9429. break;
  9430. return Intrinsic::hexagon_S5_popcountp; // "exagon.S5.popcountp"
  9431. }
  9432. break;
  9433. }
  9434. break;
  9435. case 20: // 95 strings to match.
  9436. if (memcmp(NameR.data()+0, "exagon.", 7))
  9437. break;
  9438. switch (NameR[7]) {
  9439. default: break;
  9440. case 'A': // 4 strings to match.
  9441. if (memcmp(NameR.data()+8, "2.combine.", 10))
  9442. break;
  9443. switch (NameR[18]) {
  9444. default: break;
  9445. case 'h': // 2 strings to match.
  9446. switch (NameR[19]) {
  9447. default: break;
  9448. case 'h': // 1 string to match.
  9449. return Intrinsic::hexagon_A2_combine_hh; // "exagon.A2.combine.hh"
  9450. case 'l': // 1 string to match.
  9451. return Intrinsic::hexagon_A2_combine_hl; // "exagon.A2.combine.hl"
  9452. }
  9453. break;
  9454. case 'l': // 2 strings to match.
  9455. switch (NameR[19]) {
  9456. default: break;
  9457. case 'h': // 1 string to match.
  9458. return Intrinsic::hexagon_A2_combine_lh; // "exagon.A2.combine.lh"
  9459. case 'l': // 1 string to match.
  9460. return Intrinsic::hexagon_A2_combine_ll; // "exagon.A2.combine.ll"
  9461. }
  9462. break;
  9463. }
  9464. break;
  9465. case 'F': // 10 strings to match.
  9466. if (memcmp(NameR.data()+8, "2.conv.", 7))
  9467. break;
  9468. switch (NameR[15]) {
  9469. default: break;
  9470. case 'd': // 3 strings to match.
  9471. if (memcmp(NameR.data()+16, "f2", 2))
  9472. break;
  9473. switch (NameR[18]) {
  9474. default: break;
  9475. case 's': // 1 string to match.
  9476. if (NameR[19] != 'f')
  9477. break;
  9478. return Intrinsic::hexagon_F2_conv_df2sf; // "exagon.F2.conv.df2sf"
  9479. case 'u': // 2 strings to match.
  9480. switch (NameR[19]) {
  9481. default: break;
  9482. case 'd': // 1 string to match.
  9483. return Intrinsic::hexagon_F2_conv_df2ud; // "exagon.F2.conv.df2ud"
  9484. case 'w': // 1 string to match.
  9485. return Intrinsic::hexagon_F2_conv_df2uw; // "exagon.F2.conv.df2uw"
  9486. }
  9487. break;
  9488. }
  9489. break;
  9490. case 's': // 3 strings to match.
  9491. if (memcmp(NameR.data()+16, "f2", 2))
  9492. break;
  9493. switch (NameR[18]) {
  9494. default: break;
  9495. case 'd': // 1 string to match.
  9496. if (NameR[19] != 'f')
  9497. break;
  9498. return Intrinsic::hexagon_F2_conv_sf2df; // "exagon.F2.conv.sf2df"
  9499. case 'u': // 2 strings to match.
  9500. switch (NameR[19]) {
  9501. default: break;
  9502. case 'd': // 1 string to match.
  9503. return Intrinsic::hexagon_F2_conv_sf2ud; // "exagon.F2.conv.sf2ud"
  9504. case 'w': // 1 string to match.
  9505. return Intrinsic::hexagon_F2_conv_sf2uw; // "exagon.F2.conv.sf2uw"
  9506. }
  9507. break;
  9508. }
  9509. break;
  9510. case 'u': // 4 strings to match.
  9511. switch (NameR[16]) {
  9512. default: break;
  9513. case 'd': // 2 strings to match.
  9514. if (NameR[17] != '2')
  9515. break;
  9516. switch (NameR[18]) {
  9517. default: break;
  9518. case 'd': // 1 string to match.
  9519. if (NameR[19] != 'f')
  9520. break;
  9521. return Intrinsic::hexagon_F2_conv_ud2df; // "exagon.F2.conv.ud2df"
  9522. case 's': // 1 string to match.
  9523. if (NameR[19] != 'f')
  9524. break;
  9525. return Intrinsic::hexagon_F2_conv_ud2sf; // "exagon.F2.conv.ud2sf"
  9526. }
  9527. break;
  9528. case 'w': // 2 strings to match.
  9529. if (NameR[17] != '2')
  9530. break;
  9531. switch (NameR[18]) {
  9532. default: break;
  9533. case 'd': // 1 string to match.
  9534. if (NameR[19] != 'f')
  9535. break;
  9536. return Intrinsic::hexagon_F2_conv_uw2df; // "exagon.F2.conv.uw2df"
  9537. case 's': // 1 string to match.
  9538. if (NameR[19] != 'f')
  9539. break;
  9540. return Intrinsic::hexagon_F2_conv_uw2sf; // "exagon.F2.conv.uw2sf"
  9541. }
  9542. break;
  9543. }
  9544. break;
  9545. }
  9546. break;
  9547. case 'M': // 58 strings to match.
  9548. switch (NameR[8]) {
  9549. default: break;
  9550. case '2': // 49 strings to match.
  9551. if (NameR[9] != '.')
  9552. break;
  9553. switch (NameR[10]) {
  9554. default: break;
  9555. case 'c': // 2 strings to match.
  9556. if (memcmp(NameR.data()+11, "mpyrsc.s", 8))
  9557. break;
  9558. switch (NameR[19]) {
  9559. default: break;
  9560. case '0': // 1 string to match.
  9561. return Intrinsic::hexagon_M2_cmpyrsc_s0; // "exagon.M2.cmpyrsc.s0"
  9562. case '1': // 1 string to match.
  9563. return Intrinsic::hexagon_M2_cmpyrsc_s1; // "exagon.M2.cmpyrsc.s1"
  9564. }
  9565. break;
  9566. case 'd': // 2 strings to match.
  9567. if (memcmp(NameR.data()+11, "pmpy", 4))
  9568. break;
  9569. switch (NameR[15]) {
  9570. default: break;
  9571. case 's': // 1 string to match.
  9572. if (memcmp(NameR.data()+16, "s.s0", 4))
  9573. break;
  9574. return Intrinsic::hexagon_M2_dpmpyss_s0; // "exagon.M2.dpmpyss.s0"
  9575. case 'u': // 1 string to match.
  9576. if (memcmp(NameR.data()+16, "u.s0", 4))
  9577. break;
  9578. return Intrinsic::hexagon_M2_dpmpyuu_s0; // "exagon.M2.dpmpyuu.s0"
  9579. }
  9580. break;
  9581. case 'h': // 2 strings to match.
  9582. if (memcmp(NameR.data()+11, "mmpy", 4))
  9583. break;
  9584. switch (NameR[15]) {
  9585. default: break;
  9586. case 'h': // 1 string to match.
  9587. if (memcmp(NameR.data()+16, ".rs1", 4))
  9588. break;
  9589. return Intrinsic::hexagon_M2_hmmpyh_rs1; // "exagon.M2.hmmpyh.rs1"
  9590. case 'l': // 1 string to match.
  9591. if (memcmp(NameR.data()+16, ".rs1", 4))
  9592. break;
  9593. return Intrinsic::hexagon_M2_hmmpyl_rs1; // "exagon.M2.hmmpyl.rs1"
  9594. }
  9595. break;
  9596. case 'm': // 28 strings to match.
  9597. switch (NameR[11]) {
  9598. default: break;
  9599. case 'm': // 12 strings to match.
  9600. switch (NameR[12]) {
  9601. default: break;
  9602. case 'a': // 8 strings to match.
  9603. if (NameR[13] != 'c')
  9604. break;
  9605. switch (NameR[14]) {
  9606. default: break;
  9607. case 'h': // 2 strings to match.
  9608. if (memcmp(NameR.data()+15, "s.rs", 4))
  9609. break;
  9610. switch (NameR[19]) {
  9611. default: break;
  9612. case '0': // 1 string to match.
  9613. return Intrinsic::hexagon_M2_mmachs_rs0; // "exagon.M2.mmachs.rs0"
  9614. case '1': // 1 string to match.
  9615. return Intrinsic::hexagon_M2_mmachs_rs1; // "exagon.M2.mmachs.rs1"
  9616. }
  9617. break;
  9618. case 'l': // 2 strings to match.
  9619. if (memcmp(NameR.data()+15, "s.rs", 4))
  9620. break;
  9621. switch (NameR[19]) {
  9622. default: break;
  9623. case '0': // 1 string to match.
  9624. return Intrinsic::hexagon_M2_mmacls_rs0; // "exagon.M2.mmacls.rs0"
  9625. case '1': // 1 string to match.
  9626. return Intrinsic::hexagon_M2_mmacls_rs1; // "exagon.M2.mmacls.rs1"
  9627. }
  9628. break;
  9629. case 'u': // 4 strings to match.
  9630. switch (NameR[15]) {
  9631. default: break;
  9632. case 'h': // 2 strings to match.
  9633. if (memcmp(NameR.data()+16, "s.s", 3))
  9634. break;
  9635. switch (NameR[19]) {
  9636. default: break;
  9637. case '0': // 1 string to match.
  9638. return Intrinsic::hexagon_M2_mmacuhs_s0; // "exagon.M2.mmacuhs.s0"
  9639. case '1': // 1 string to match.
  9640. return Intrinsic::hexagon_M2_mmacuhs_s1; // "exagon.M2.mmacuhs.s1"
  9641. }
  9642. break;
  9643. case 'l': // 2 strings to match.
  9644. if (memcmp(NameR.data()+16, "s.s", 3))
  9645. break;
  9646. switch (NameR[19]) {
  9647. default: break;
  9648. case '0': // 1 string to match.
  9649. return Intrinsic::hexagon_M2_mmaculs_s0; // "exagon.M2.mmaculs.s0"
  9650. case '1': // 1 string to match.
  9651. return Intrinsic::hexagon_M2_mmaculs_s1; // "exagon.M2.mmaculs.s1"
  9652. }
  9653. break;
  9654. }
  9655. break;
  9656. }
  9657. break;
  9658. case 'p': // 4 strings to match.
  9659. if (memcmp(NameR.data()+13, "yu", 2))
  9660. break;
  9661. switch (NameR[15]) {
  9662. default: break;
  9663. case 'h': // 2 strings to match.
  9664. if (memcmp(NameR.data()+16, ".rs", 3))
  9665. break;
  9666. switch (NameR[19]) {
  9667. default: break;
  9668. case '0': // 1 string to match.
  9669. return Intrinsic::hexagon_M2_mmpyuh_rs0; // "exagon.M2.mmpyuh.rs0"
  9670. case '1': // 1 string to match.
  9671. return Intrinsic::hexagon_M2_mmpyuh_rs1; // "exagon.M2.mmpyuh.rs1"
  9672. }
  9673. break;
  9674. case 'l': // 2 strings to match.
  9675. if (memcmp(NameR.data()+16, ".rs", 3))
  9676. break;
  9677. switch (NameR[19]) {
  9678. default: break;
  9679. case '0': // 1 string to match.
  9680. return Intrinsic::hexagon_M2_mmpyul_rs0; // "exagon.M2.mmpyul.rs0"
  9681. case '1': // 1 string to match.
  9682. return Intrinsic::hexagon_M2_mmpyul_rs1; // "exagon.M2.mmpyul.rs1"
  9683. }
  9684. break;
  9685. }
  9686. break;
  9687. }
  9688. break;
  9689. case 'p': // 16 strings to match.
  9690. if (NameR[12] != 'y')
  9691. break;
  9692. switch (NameR[13]) {
  9693. default: break;
  9694. case 'd': // 8 strings to match.
  9695. if (NameR[14] != '.')
  9696. break;
  9697. switch (NameR[15]) {
  9698. default: break;
  9699. case 'h': // 4 strings to match.
  9700. switch (NameR[16]) {
  9701. default: break;
  9702. case 'h': // 2 strings to match.
  9703. if (memcmp(NameR.data()+17, ".s", 2))
  9704. break;
  9705. switch (NameR[19]) {
  9706. default: break;
  9707. case '0': // 1 string to match.
  9708. return Intrinsic::hexagon_M2_mpyd_hh_s0; // "exagon.M2.mpyd.hh.s0"
  9709. case '1': // 1 string to match.
  9710. return Intrinsic::hexagon_M2_mpyd_hh_s1; // "exagon.M2.mpyd.hh.s1"
  9711. }
  9712. break;
  9713. case 'l': // 2 strings to match.
  9714. if (memcmp(NameR.data()+17, ".s", 2))
  9715. break;
  9716. switch (NameR[19]) {
  9717. default: break;
  9718. case '0': // 1 string to match.
  9719. return Intrinsic::hexagon_M2_mpyd_hl_s0; // "exagon.M2.mpyd.hl.s0"
  9720. case '1': // 1 string to match.
  9721. return Intrinsic::hexagon_M2_mpyd_hl_s1; // "exagon.M2.mpyd.hl.s1"
  9722. }
  9723. break;
  9724. }
  9725. break;
  9726. case 'l': // 4 strings to match.
  9727. switch (NameR[16]) {
  9728. default: break;
  9729. case 'h': // 2 strings to match.
  9730. if (memcmp(NameR.data()+17, ".s", 2))
  9731. break;
  9732. switch (NameR[19]) {
  9733. default: break;
  9734. case '0': // 1 string to match.
  9735. return Intrinsic::hexagon_M2_mpyd_lh_s0; // "exagon.M2.mpyd.lh.s0"
  9736. case '1': // 1 string to match.
  9737. return Intrinsic::hexagon_M2_mpyd_lh_s1; // "exagon.M2.mpyd.lh.s1"
  9738. }
  9739. break;
  9740. case 'l': // 2 strings to match.
  9741. if (memcmp(NameR.data()+17, ".s", 2))
  9742. break;
  9743. switch (NameR[19]) {
  9744. default: break;
  9745. case '0': // 1 string to match.
  9746. return Intrinsic::hexagon_M2_mpyd_ll_s0; // "exagon.M2.mpyd.ll.s0"
  9747. case '1': // 1 string to match.
  9748. return Intrinsic::hexagon_M2_mpyd_ll_s1; // "exagon.M2.mpyd.ll.s1"
  9749. }
  9750. break;
  9751. }
  9752. break;
  9753. }
  9754. break;
  9755. case 'u': // 8 strings to match.
  9756. if (NameR[14] != '.')
  9757. break;
  9758. switch (NameR[15]) {
  9759. default: break;
  9760. case 'h': // 4 strings to match.
  9761. switch (NameR[16]) {
  9762. default: break;
  9763. case 'h': // 2 strings to match.
  9764. if (memcmp(NameR.data()+17, ".s", 2))
  9765. break;
  9766. switch (NameR[19]) {
  9767. default: break;
  9768. case '0': // 1 string to match.
  9769. return Intrinsic::hexagon_M2_mpyu_hh_s0; // "exagon.M2.mpyu.hh.s0"
  9770. case '1': // 1 string to match.
  9771. return Intrinsic::hexagon_M2_mpyu_hh_s1; // "exagon.M2.mpyu.hh.s1"
  9772. }
  9773. break;
  9774. case 'l': // 2 strings to match.
  9775. if (memcmp(NameR.data()+17, ".s", 2))
  9776. break;
  9777. switch (NameR[19]) {
  9778. default: break;
  9779. case '0': // 1 string to match.
  9780. return Intrinsic::hexagon_M2_mpyu_hl_s0; // "exagon.M2.mpyu.hl.s0"
  9781. case '1': // 1 string to match.
  9782. return Intrinsic::hexagon_M2_mpyu_hl_s1; // "exagon.M2.mpyu.hl.s1"
  9783. }
  9784. break;
  9785. }
  9786. break;
  9787. case 'l': // 4 strings to match.
  9788. switch (NameR[16]) {
  9789. default: break;
  9790. case 'h': // 2 strings to match.
  9791. if (memcmp(NameR.data()+17, ".s", 2))
  9792. break;
  9793. switch (NameR[19]) {
  9794. default: break;
  9795. case '0': // 1 string to match.
  9796. return Intrinsic::hexagon_M2_mpyu_lh_s0; // "exagon.M2.mpyu.lh.s0"
  9797. case '1': // 1 string to match.
  9798. return Intrinsic::hexagon_M2_mpyu_lh_s1; // "exagon.M2.mpyu.lh.s1"
  9799. }
  9800. break;
  9801. case 'l': // 2 strings to match.
  9802. if (memcmp(NameR.data()+17, ".s", 2))
  9803. break;
  9804. switch (NameR[19]) {
  9805. default: break;
  9806. case '0': // 1 string to match.
  9807. return Intrinsic::hexagon_M2_mpyu_ll_s0; // "exagon.M2.mpyu.ll.s0"
  9808. case '1': // 1 string to match.
  9809. return Intrinsic::hexagon_M2_mpyu_ll_s1; // "exagon.M2.mpyu.ll.s1"
  9810. }
  9811. break;
  9812. }
  9813. break;
  9814. }
  9815. break;
  9816. }
  9817. break;
  9818. }
  9819. break;
  9820. case 'v': // 15 strings to match.
  9821. switch (NameR[11]) {
  9822. default: break;
  9823. case 'd': // 2 strings to match.
  9824. if (memcmp(NameR.data()+12, "mpyrs.s", 7))
  9825. break;
  9826. switch (NameR[19]) {
  9827. default: break;
  9828. case '0': // 1 string to match.
  9829. return Intrinsic::hexagon_M2_vdmpyrs_s0; // "exagon.M2.vdmpyrs.s0"
  9830. case '1': // 1 string to match.
  9831. return Intrinsic::hexagon_M2_vdmpyrs_s1; // "exagon.M2.vdmpyrs.s1"
  9832. }
  9833. break;
  9834. case 'm': // 8 strings to match.
  9835. switch (NameR[12]) {
  9836. default: break;
  9837. case 'a': // 4 strings to match.
  9838. if (memcmp(NameR.data()+13, "c2", 2))
  9839. break;
  9840. switch (NameR[15]) {
  9841. default: break;
  9842. case 'e': // 2 strings to match.
  9843. if (memcmp(NameR.data()+16, "s.s", 3))
  9844. break;
  9845. switch (NameR[19]) {
  9846. default: break;
  9847. case '0': // 1 string to match.
  9848. return Intrinsic::hexagon_M2_vmac2es_s0; // "exagon.M2.vmac2es.s0"
  9849. case '1': // 1 string to match.
  9850. return Intrinsic::hexagon_M2_vmac2es_s1; // "exagon.M2.vmac2es.s1"
  9851. }
  9852. break;
  9853. case 's': // 2 strings to match.
  9854. if (memcmp(NameR.data()+16, "u.s", 3))
  9855. break;
  9856. switch (NameR[19]) {
  9857. default: break;
  9858. case '0': // 1 string to match.
  9859. return Intrinsic::hexagon_M2_vmac2su_s0; // "exagon.M2.vmac2su.s0"
  9860. case '1': // 1 string to match.
  9861. return Intrinsic::hexagon_M2_vmac2su_s1; // "exagon.M2.vmac2su.s1"
  9862. }
  9863. break;
  9864. }
  9865. break;
  9866. case 'p': // 4 strings to match.
  9867. if (memcmp(NameR.data()+13, "y2", 2))
  9868. break;
  9869. switch (NameR[15]) {
  9870. default: break;
  9871. case 'e': // 2 strings to match.
  9872. if (memcmp(NameR.data()+16, "s.s", 3))
  9873. break;
  9874. switch (NameR[19]) {
  9875. default: break;
  9876. case '0': // 1 string to match.
  9877. return Intrinsic::hexagon_M2_vmpy2es_s0; // "exagon.M2.vmpy2es.s0"
  9878. case '1': // 1 string to match.
  9879. return Intrinsic::hexagon_M2_vmpy2es_s1; // "exagon.M2.vmpy2es.s1"
  9880. }
  9881. break;
  9882. case 's': // 2 strings to match.
  9883. if (memcmp(NameR.data()+16, "u.s", 3))
  9884. break;
  9885. switch (NameR[19]) {
  9886. default: break;
  9887. case '0': // 1 string to match.
  9888. return Intrinsic::hexagon_M2_vmpy2su_s0; // "exagon.M2.vmpy2su.s0"
  9889. case '1': // 1 string to match.
  9890. return Intrinsic::hexagon_M2_vmpy2su_s1; // "exagon.M2.vmpy2su.s1"
  9891. }
  9892. break;
  9893. }
  9894. break;
  9895. }
  9896. break;
  9897. case 'r': // 5 strings to match.
  9898. if (memcmp(NameR.data()+12, "cm", 2))
  9899. break;
  9900. switch (NameR[14]) {
  9901. default: break;
  9902. case 'a': // 2 strings to match.
  9903. if (NameR[15] != 'c')
  9904. break;
  9905. switch (NameR[16]) {
  9906. default: break;
  9907. case 'i': // 1 string to match.
  9908. if (memcmp(NameR.data()+17, ".s0", 3))
  9909. break;
  9910. return Intrinsic::hexagon_M2_vrcmaci_s0; // "exagon.M2.vrcmaci.s0"
  9911. case 'r': // 1 string to match.
  9912. if (memcmp(NameR.data()+17, ".s0", 3))
  9913. break;
  9914. return Intrinsic::hexagon_M2_vrcmacr_s0; // "exagon.M2.vrcmacr.s0"
  9915. }
  9916. break;
  9917. case 'p': // 3 strings to match.
  9918. if (NameR[15] != 'y')
  9919. break;
  9920. switch (NameR[16]) {
  9921. default: break;
  9922. case 'i': // 1 string to match.
  9923. if (memcmp(NameR.data()+17, ".s0", 3))
  9924. break;
  9925. return Intrinsic::hexagon_M2_vrcmpyi_s0; // "exagon.M2.vrcmpyi.s0"
  9926. case 'r': // 1 string to match.
  9927. if (memcmp(NameR.data()+17, ".s0", 3))
  9928. break;
  9929. return Intrinsic::hexagon_M2_vrcmpyr_s0; // "exagon.M2.vrcmpyr.s0"
  9930. case 's': // 1 string to match.
  9931. if (memcmp(NameR.data()+17, ".s1", 3))
  9932. break;
  9933. return Intrinsic::hexagon_M2_vrcmpys_s1; // "exagon.M2.vrcmpys.s1"
  9934. }
  9935. break;
  9936. }
  9937. break;
  9938. }
  9939. break;
  9940. }
  9941. break;
  9942. case '4': // 9 strings to match.
  9943. if (NameR[9] != '.')
  9944. break;
  9945. switch (NameR[10]) {
  9946. default: break;
  9947. case 'm': // 4 strings to match.
  9948. if (memcmp(NameR.data()+11, "pyr", 3))
  9949. break;
  9950. switch (NameR[14]) {
  9951. default: break;
  9952. case 'i': // 2 strings to match.
  9953. if (memcmp(NameR.data()+15, ".add", 4))
  9954. break;
  9955. switch (NameR[19]) {
  9956. default: break;
  9957. case 'i': // 1 string to match.
  9958. return Intrinsic::hexagon_M4_mpyri_addi; // "exagon.M4.mpyri.addi"
  9959. case 'r': // 1 string to match.
  9960. return Intrinsic::hexagon_M4_mpyri_addr; // "exagon.M4.mpyri.addr"
  9961. }
  9962. break;
  9963. case 'r': // 2 strings to match.
  9964. if (memcmp(NameR.data()+15, ".add", 4))
  9965. break;
  9966. switch (NameR[19]) {
  9967. default: break;
  9968. case 'i': // 1 string to match.
  9969. return Intrinsic::hexagon_M4_mpyrr_addi; // "exagon.M4.mpyrr.addi"
  9970. case 'r': // 1 string to match.
  9971. return Intrinsic::hexagon_M4_mpyrr_addr; // "exagon.M4.mpyrr.addr"
  9972. }
  9973. break;
  9974. }
  9975. break;
  9976. case 'v': // 5 strings to match.
  9977. switch (NameR[11]) {
  9978. default: break;
  9979. case 'p': // 1 string to match.
  9980. if (memcmp(NameR.data()+12, "mpyh.acc", 8))
  9981. break;
  9982. return Intrinsic::hexagon_M4_vpmpyh_acc; // "exagon.M4.vpmpyh.acc"
  9983. case 'r': // 4 strings to match.
  9984. if (memcmp(NameR.data()+12, "mpy", 3))
  9985. break;
  9986. switch (NameR[15]) {
  9987. default: break;
  9988. case 'e': // 2 strings to match.
  9989. if (memcmp(NameR.data()+16, "h.s", 3))
  9990. break;
  9991. switch (NameR[19]) {
  9992. default: break;
  9993. case '0': // 1 string to match.
  9994. return Intrinsic::hexagon_M4_vrmpyeh_s0; // "exagon.M4.vrmpyeh.s0"
  9995. case '1': // 1 string to match.
  9996. return Intrinsic::hexagon_M4_vrmpyeh_s1; // "exagon.M4.vrmpyeh.s1"
  9997. }
  9998. break;
  9999. case 'o': // 2 strings to match.
  10000. if (memcmp(NameR.data()+16, "h.s", 3))
  10001. break;
  10002. switch (NameR[19]) {
  10003. default: break;
  10004. case '0': // 1 string to match.
  10005. return Intrinsic::hexagon_M4_vrmpyoh_s0; // "exagon.M4.vrmpyoh.s0"
  10006. case '1': // 1 string to match.
  10007. return Intrinsic::hexagon_M4_vrmpyoh_s1; // "exagon.M4.vrmpyoh.s1"
  10008. }
  10009. break;
  10010. }
  10011. break;
  10012. }
  10013. break;
  10014. }
  10015. break;
  10016. }
  10017. break;
  10018. case 'S': // 23 strings to match.
  10019. switch (NameR[8]) {
  10020. default: break;
  10021. case '2': // 17 strings to match.
  10022. if (NameR[9] != '.')
  10023. break;
  10024. switch (NameR[10]) {
  10025. default: break;
  10026. case 'a': // 8 strings to match.
  10027. if (NameR[11] != 's')
  10028. break;
  10029. switch (NameR[12]) {
  10030. default: break;
  10031. case 'l': // 4 strings to match.
  10032. if (NameR[13] != '.')
  10033. break;
  10034. switch (NameR[14]) {
  10035. default: break;
  10036. case 'i': // 2 strings to match.
  10037. if (NameR[15] != '.')
  10038. break;
  10039. switch (NameR[16]) {
  10040. default: break;
  10041. case 'p': // 1 string to match.
  10042. if (memcmp(NameR.data()+17, ".or", 3))
  10043. break;
  10044. return Intrinsic::hexagon_S2_asl_i_p_or; // "exagon.S2.asl.i.p.or"
  10045. case 'r': // 1 string to match.
  10046. if (memcmp(NameR.data()+17, ".or", 3))
  10047. break;
  10048. return Intrinsic::hexagon_S2_asl_i_r_or; // "exagon.S2.asl.i.r.or"
  10049. }
  10050. break;
  10051. case 'r': // 2 strings to match.
  10052. if (NameR[15] != '.')
  10053. break;
  10054. switch (NameR[16]) {
  10055. default: break;
  10056. case 'p': // 1 string to match.
  10057. if (memcmp(NameR.data()+17, ".or", 3))
  10058. break;
  10059. return Intrinsic::hexagon_S2_asl_r_p_or; // "exagon.S2.asl.r.p.or"
  10060. case 'r': // 1 string to match.
  10061. if (memcmp(NameR.data()+17, ".or", 3))
  10062. break;
  10063. return Intrinsic::hexagon_S2_asl_r_r_or; // "exagon.S2.asl.r.r.or"
  10064. }
  10065. break;
  10066. }
  10067. break;
  10068. case 'r': // 4 strings to match.
  10069. if (NameR[13] != '.')
  10070. break;
  10071. switch (NameR[14]) {
  10072. default: break;
  10073. case 'i': // 2 strings to match.
  10074. if (NameR[15] != '.')
  10075. break;
  10076. switch (NameR[16]) {
  10077. default: break;
  10078. case 'p': // 1 string to match.
  10079. if (memcmp(NameR.data()+17, ".or", 3))
  10080. break;
  10081. return Intrinsic::hexagon_S2_asr_i_p_or; // "exagon.S2.asr.i.p.or"
  10082. case 'r': // 1 string to match.
  10083. if (memcmp(NameR.data()+17, ".or", 3))
  10084. break;
  10085. return Intrinsic::hexagon_S2_asr_i_r_or; // "exagon.S2.asr.i.r.or"
  10086. }
  10087. break;
  10088. case 'r': // 2 strings to match.
  10089. if (NameR[15] != '.')
  10090. break;
  10091. switch (NameR[16]) {
  10092. default: break;
  10093. case 'p': // 1 string to match.
  10094. if (memcmp(NameR.data()+17, ".or", 3))
  10095. break;
  10096. return Intrinsic::hexagon_S2_asr_r_p_or; // "exagon.S2.asr.r.p.or"
  10097. case 'r': // 1 string to match.
  10098. if (memcmp(NameR.data()+17, ".or", 3))
  10099. break;
  10100. return Intrinsic::hexagon_S2_asr_r_r_or; // "exagon.S2.asr.r.r.or"
  10101. }
  10102. break;
  10103. }
  10104. break;
  10105. }
  10106. break;
  10107. case 'i': // 2 strings to match.
  10108. if (NameR[11] != 'n')
  10109. break;
  10110. switch (NameR[12]) {
  10111. default: break;
  10112. case 's': // 1 string to match.
  10113. if (memcmp(NameR.data()+13, "ertp.rp", 7))
  10114. break;
  10115. return Intrinsic::hexagon_S2_insertp_rp; // "exagon.S2.insertp.rp"
  10116. case 't': // 1 string to match.
  10117. if (memcmp(NameR.data()+13, "erleave", 7))
  10118. break;
  10119. return Intrinsic::hexagon_S2_interleave; // "exagon.S2.interleave"
  10120. }
  10121. break;
  10122. case 'l': // 6 strings to match.
  10123. if (NameR[11] != 's')
  10124. break;
  10125. switch (NameR[12]) {
  10126. default: break;
  10127. case 'l': // 2 strings to match.
  10128. if (memcmp(NameR.data()+13, ".r.", 3))
  10129. break;
  10130. switch (NameR[16]) {
  10131. default: break;
  10132. case 'p': // 1 string to match.
  10133. if (memcmp(NameR.data()+17, ".or", 3))
  10134. break;
  10135. return Intrinsic::hexagon_S2_lsl_r_p_or; // "exagon.S2.lsl.r.p.or"
  10136. case 'r': // 1 string to match.
  10137. if (memcmp(NameR.data()+17, ".or", 3))
  10138. break;
  10139. return Intrinsic::hexagon_S2_lsl_r_r_or; // "exagon.S2.lsl.r.r.or"
  10140. }
  10141. break;
  10142. case 'r': // 4 strings to match.
  10143. if (NameR[13] != '.')
  10144. break;
  10145. switch (NameR[14]) {
  10146. default: break;
  10147. case 'i': // 2 strings to match.
  10148. if (NameR[15] != '.')
  10149. break;
  10150. switch (NameR[16]) {
  10151. default: break;
  10152. case 'p': // 1 string to match.
  10153. if (memcmp(NameR.data()+17, ".or", 3))
  10154. break;
  10155. return Intrinsic::hexagon_S2_lsr_i_p_or; // "exagon.S2.lsr.i.p.or"
  10156. case 'r': // 1 string to match.
  10157. if (memcmp(NameR.data()+17, ".or", 3))
  10158. break;
  10159. return Intrinsic::hexagon_S2_lsr_i_r_or; // "exagon.S2.lsr.i.r.or"
  10160. }
  10161. break;
  10162. case 'r': // 2 strings to match.
  10163. if (NameR[15] != '.')
  10164. break;
  10165. switch (NameR[16]) {
  10166. default: break;
  10167. case 'p': // 1 string to match.
  10168. if (memcmp(NameR.data()+17, ".or", 3))
  10169. break;
  10170. return Intrinsic::hexagon_S2_lsr_r_p_or; // "exagon.S2.lsr.r.p.or"
  10171. case 'r': // 1 string to match.
  10172. if (memcmp(NameR.data()+17, ".or", 3))
  10173. break;
  10174. return Intrinsic::hexagon_S2_lsr_r_r_or; // "exagon.S2.lsr.r.r.or"
  10175. }
  10176. break;
  10177. }
  10178. break;
  10179. }
  10180. break;
  10181. case 'v': // 1 string to match.
  10182. if (memcmp(NameR.data()+11, "rndpackwh", 9))
  10183. break;
  10184. return Intrinsic::hexagon_S2_vrndpackwh; // "exagon.S2.vrndpackwh"
  10185. }
  10186. break;
  10187. case '4': // 5 strings to match.
  10188. if (NameR[9] != '.')
  10189. break;
  10190. switch (NameR[10]) {
  10191. default: break;
  10192. case 'e': // 1 string to match.
  10193. if (memcmp(NameR.data()+11, "xtract.rp", 9))
  10194. break;
  10195. return Intrinsic::hexagon_S4_extract_rp; // "exagon.S4.extract.rp"
  10196. case 'o': // 2 strings to match.
  10197. if (memcmp(NameR.data()+11, "ri.", 3))
  10198. break;
  10199. switch (NameR[14]) {
  10200. default: break;
  10201. case 'a': // 1 string to match.
  10202. if (memcmp(NameR.data()+15, "sl.ri", 5))
  10203. break;
  10204. return Intrinsic::hexagon_S4_ori_asl_ri; // "exagon.S4.ori.asl.ri"
  10205. case 'l': // 1 string to match.
  10206. if (memcmp(NameR.data()+15, "sr.ri", 5))
  10207. break;
  10208. return Intrinsic::hexagon_S4_ori_lsr_ri; // "exagon.S4.ori.lsr.ri"
  10209. }
  10210. break;
  10211. case 'v': // 2 strings to match.
  10212. if (NameR[11] != 'x')
  10213. break;
  10214. switch (NameR[12]) {
  10215. default: break;
  10216. case 'a': // 1 string to match.
  10217. if (memcmp(NameR.data()+13, "ddsubhr", 7))
  10218. break;
  10219. return Intrinsic::hexagon_S4_vxaddsubhr; // "exagon.S4.vxaddsubhr"
  10220. case 's': // 1 string to match.
  10221. if (memcmp(NameR.data()+13, "ubaddhr", 7))
  10222. break;
  10223. return Intrinsic::hexagon_S4_vxsubaddhr; // "exagon.S4.vxsubaddhr"
  10224. }
  10225. break;
  10226. }
  10227. break;
  10228. case '5': // 1 string to match.
  10229. if (memcmp(NameR.data()+9, ".asrhub.sat", 11))
  10230. break;
  10231. return Intrinsic::hexagon_S5_asrhub_sat; // "exagon.S5.asrhub.sat"
  10232. }
  10233. break;
  10234. }
  10235. break;
  10236. case 21: // 96 strings to match.
  10237. if (memcmp(NameR.data()+0, "exagon.", 7))
  10238. break;
  10239. switch (NameR[7]) {
  10240. default: break;
  10241. case 'A': // 16 strings to match.
  10242. switch (NameR[8]) {
  10243. default: break;
  10244. case '2': // 14 strings to match.
  10245. if (NameR[9] != '.')
  10246. break;
  10247. switch (NameR[10]) {
  10248. default: break;
  10249. case 'a': // 6 strings to match.
  10250. if (memcmp(NameR.data()+11, "ddh.", 4))
  10251. break;
  10252. switch (NameR[15]) {
  10253. default: break;
  10254. case 'h': // 4 strings to match.
  10255. if (memcmp(NameR.data()+16, "16.", 3))
  10256. break;
  10257. switch (NameR[19]) {
  10258. default: break;
  10259. case 'h': // 2 strings to match.
  10260. switch (NameR[20]) {
  10261. default: break;
  10262. case 'h': // 1 string to match.
  10263. return Intrinsic::hexagon_A2_addh_h16_hh; // "exagon.A2.addh.h16.hh"
  10264. case 'l': // 1 string to match.
  10265. return Intrinsic::hexagon_A2_addh_h16_hl; // "exagon.A2.addh.h16.hl"
  10266. }
  10267. break;
  10268. case 'l': // 2 strings to match.
  10269. switch (NameR[20]) {
  10270. default: break;
  10271. case 'h': // 1 string to match.
  10272. return Intrinsic::hexagon_A2_addh_h16_lh; // "exagon.A2.addh.h16.lh"
  10273. case 'l': // 1 string to match.
  10274. return Intrinsic::hexagon_A2_addh_h16_ll; // "exagon.A2.addh.h16.ll"
  10275. }
  10276. break;
  10277. }
  10278. break;
  10279. case 'l': // 2 strings to match.
  10280. if (memcmp(NameR.data()+16, "16.", 3))
  10281. break;
  10282. switch (NameR[19]) {
  10283. default: break;
  10284. case 'h': // 1 string to match.
  10285. if (NameR[20] != 'l')
  10286. break;
  10287. return Intrinsic::hexagon_A2_addh_l16_hl; // "exagon.A2.addh.l16.hl"
  10288. case 'l': // 1 string to match.
  10289. if (NameR[20] != 'l')
  10290. break;
  10291. return Intrinsic::hexagon_A2_addh_l16_ll; // "exagon.A2.addh.l16.ll"
  10292. }
  10293. break;
  10294. }
  10295. break;
  10296. case 's': // 6 strings to match.
  10297. if (memcmp(NameR.data()+11, "ubh.", 4))
  10298. break;
  10299. switch (NameR[15]) {
  10300. default: break;
  10301. case 'h': // 4 strings to match.
  10302. if (memcmp(NameR.data()+16, "16.", 3))
  10303. break;
  10304. switch (NameR[19]) {
  10305. default: break;
  10306. case 'h': // 2 strings to match.
  10307. switch (NameR[20]) {
  10308. default: break;
  10309. case 'h': // 1 string to match.
  10310. return Intrinsic::hexagon_A2_subh_h16_hh; // "exagon.A2.subh.h16.hh"
  10311. case 'l': // 1 string to match.
  10312. return Intrinsic::hexagon_A2_subh_h16_hl; // "exagon.A2.subh.h16.hl"
  10313. }
  10314. break;
  10315. case 'l': // 2 strings to match.
  10316. switch (NameR[20]) {
  10317. default: break;
  10318. case 'h': // 1 string to match.
  10319. return Intrinsic::hexagon_A2_subh_h16_lh; // "exagon.A2.subh.h16.lh"
  10320. case 'l': // 1 string to match.
  10321. return Intrinsic::hexagon_A2_subh_h16_ll; // "exagon.A2.subh.h16.ll"
  10322. }
  10323. break;
  10324. }
  10325. break;
  10326. case 'l': // 2 strings to match.
  10327. if (memcmp(NameR.data()+16, "16.", 3))
  10328. break;
  10329. switch (NameR[19]) {
  10330. default: break;
  10331. case 'h': // 1 string to match.
  10332. if (NameR[20] != 'l')
  10333. break;
  10334. return Intrinsic::hexagon_A2_subh_l16_hl; // "exagon.A2.subh.l16.hl"
  10335. case 'l': // 1 string to match.
  10336. if (NameR[20] != 'l')
  10337. break;
  10338. return Intrinsic::hexagon_A2_subh_l16_ll; // "exagon.A2.subh.l16.ll"
  10339. }
  10340. break;
  10341. }
  10342. break;
  10343. case 'v': // 2 strings to match.
  10344. if (NameR[11] != 'r')
  10345. break;
  10346. switch (NameR[12]) {
  10347. default: break;
  10348. case 'a': // 1 string to match.
  10349. if (memcmp(NameR.data()+13, "ddub.acc", 8))
  10350. break;
  10351. return Intrinsic::hexagon_A2_vraddub_acc; // "exagon.A2.vraddub.acc"
  10352. case 's': // 1 string to match.
  10353. if (memcmp(NameR.data()+13, "adub.acc", 8))
  10354. break;
  10355. return Intrinsic::hexagon_A2_vrsadub_acc; // "exagon.A2.vrsadub.acc"
  10356. }
  10357. break;
  10358. }
  10359. break;
  10360. case '4': // 2 strings to match.
  10361. if (NameR[9] != '.')
  10362. break;
  10363. switch (NameR[10]) {
  10364. default: break;
  10365. case 'b': // 1 string to match.
  10366. if (memcmp(NameR.data()+11, "oundscheck", 10))
  10367. break;
  10368. return Intrinsic::hexagon_A4_boundscheck; // "exagon.A4.boundscheck"
  10369. case 'v': // 1 string to match.
  10370. if (memcmp(NameR.data()+11, "cmpbeq.any", 10))
  10371. break;
  10372. return Intrinsic::hexagon_A4_vcmpbeq_any; // "exagon.A4.vcmpbeq.any"
  10373. }
  10374. break;
  10375. }
  10376. break;
  10377. case 'C': // 1 string to match.
  10378. if (memcmp(NameR.data()+8, "4.fastcorner9", 13))
  10379. break;
  10380. return Intrinsic::hexagon_C4_fastcorner9; // "exagon.C4.fastcorner9"
  10381. case 'M': // 16 strings to match.
  10382. if (memcmp(NameR.data()+8, "2.", 2))
  10383. break;
  10384. switch (NameR[10]) {
  10385. default: break;
  10386. case 'm': // 12 strings to match.
  10387. switch (NameR[11]) {
  10388. default: break;
  10389. case 'm': // 4 strings to match.
  10390. if (memcmp(NameR.data()+12, "acu", 3))
  10391. break;
  10392. switch (NameR[15]) {
  10393. default: break;
  10394. case 'h': // 2 strings to match.
  10395. if (memcmp(NameR.data()+16, "s.rs", 4))
  10396. break;
  10397. switch (NameR[20]) {
  10398. default: break;
  10399. case '0': // 1 string to match.
  10400. return Intrinsic::hexagon_M2_mmacuhs_rs0; // "exagon.M2.mmacuhs.rs0"
  10401. case '1': // 1 string to match.
  10402. return Intrinsic::hexagon_M2_mmacuhs_rs1; // "exagon.M2.mmacuhs.rs1"
  10403. }
  10404. break;
  10405. case 'l': // 2 strings to match.
  10406. if (memcmp(NameR.data()+16, "s.rs", 4))
  10407. break;
  10408. switch (NameR[20]) {
  10409. default: break;
  10410. case '0': // 1 string to match.
  10411. return Intrinsic::hexagon_M2_mmaculs_rs0; // "exagon.M2.mmaculs.rs0"
  10412. case '1': // 1 string to match.
  10413. return Intrinsic::hexagon_M2_mmaculs_rs1; // "exagon.M2.mmaculs.rs1"
  10414. }
  10415. break;
  10416. }
  10417. break;
  10418. case 'p': // 8 strings to match.
  10419. if (memcmp(NameR.data()+12, "yud.", 4))
  10420. break;
  10421. switch (NameR[16]) {
  10422. default: break;
  10423. case 'h': // 4 strings to match.
  10424. switch (NameR[17]) {
  10425. default: break;
  10426. case 'h': // 2 strings to match.
  10427. if (memcmp(NameR.data()+18, ".s", 2))
  10428. break;
  10429. switch (NameR[20]) {
  10430. default: break;
  10431. case '0': // 1 string to match.
  10432. return Intrinsic::hexagon_M2_mpyud_hh_s0; // "exagon.M2.mpyud.hh.s0"
  10433. case '1': // 1 string to match.
  10434. return Intrinsic::hexagon_M2_mpyud_hh_s1; // "exagon.M2.mpyud.hh.s1"
  10435. }
  10436. break;
  10437. case 'l': // 2 strings to match.
  10438. if (memcmp(NameR.data()+18, ".s", 2))
  10439. break;
  10440. switch (NameR[20]) {
  10441. default: break;
  10442. case '0': // 1 string to match.
  10443. return Intrinsic::hexagon_M2_mpyud_hl_s0; // "exagon.M2.mpyud.hl.s0"
  10444. case '1': // 1 string to match.
  10445. return Intrinsic::hexagon_M2_mpyud_hl_s1; // "exagon.M2.mpyud.hl.s1"
  10446. }
  10447. break;
  10448. }
  10449. break;
  10450. case 'l': // 4 strings to match.
  10451. switch (NameR[17]) {
  10452. default: break;
  10453. case 'h': // 2 strings to match.
  10454. if (memcmp(NameR.data()+18, ".s", 2))
  10455. break;
  10456. switch (NameR[20]) {
  10457. default: break;
  10458. case '0': // 1 string to match.
  10459. return Intrinsic::hexagon_M2_mpyud_lh_s0; // "exagon.M2.mpyud.lh.s0"
  10460. case '1': // 1 string to match.
  10461. return Intrinsic::hexagon_M2_mpyud_lh_s1; // "exagon.M2.mpyud.lh.s1"
  10462. }
  10463. break;
  10464. case 'l': // 2 strings to match.
  10465. if (memcmp(NameR.data()+18, ".s", 2))
  10466. break;
  10467. switch (NameR[20]) {
  10468. default: break;
  10469. case '0': // 1 string to match.
  10470. return Intrinsic::hexagon_M2_mpyud_ll_s0; // "exagon.M2.mpyud.ll.s0"
  10471. case '1': // 1 string to match.
  10472. return Intrinsic::hexagon_M2_mpyud_ll_s1; // "exagon.M2.mpyud.ll.s1"
  10473. }
  10474. break;
  10475. }
  10476. break;
  10477. }
  10478. break;
  10479. }
  10480. break;
  10481. case 'v': // 4 strings to match.
  10482. if (memcmp(NameR.data()+11, "rcm", 3))
  10483. break;
  10484. switch (NameR[14]) {
  10485. default: break;
  10486. case 'a': // 2 strings to match.
  10487. if (NameR[15] != 'c')
  10488. break;
  10489. switch (NameR[16]) {
  10490. default: break;
  10491. case 'i': // 1 string to match.
  10492. if (memcmp(NameR.data()+17, ".s0c", 4))
  10493. break;
  10494. return Intrinsic::hexagon_M2_vrcmaci_s0c; // "exagon.M2.vrcmaci.s0c"
  10495. case 'r': // 1 string to match.
  10496. if (memcmp(NameR.data()+17, ".s0c", 4))
  10497. break;
  10498. return Intrinsic::hexagon_M2_vrcmacr_s0c; // "exagon.M2.vrcmacr.s0c"
  10499. }
  10500. break;
  10501. case 'p': // 2 strings to match.
  10502. if (NameR[15] != 'y')
  10503. break;
  10504. switch (NameR[16]) {
  10505. default: break;
  10506. case 'i': // 1 string to match.
  10507. if (memcmp(NameR.data()+17, ".s0c", 4))
  10508. break;
  10509. return Intrinsic::hexagon_M2_vrcmpyi_s0c; // "exagon.M2.vrcmpyi.s0c"
  10510. case 'r': // 1 string to match.
  10511. if (memcmp(NameR.data()+17, ".s0c", 4))
  10512. break;
  10513. return Intrinsic::hexagon_M2_vrcmpyr_s0c; // "exagon.M2.vrcmpyr.s0c"
  10514. }
  10515. break;
  10516. }
  10517. break;
  10518. }
  10519. break;
  10520. case 'S': // 63 strings to match.
  10521. switch (NameR[8]) {
  10522. default: break;
  10523. case '2': // 56 strings to match.
  10524. if (NameR[9] != '.')
  10525. break;
  10526. switch (NameR[10]) {
  10527. default: break;
  10528. case 'a': // 32 strings to match.
  10529. switch (NameR[11]) {
  10530. default: break;
  10531. case 'd': // 1 string to match.
  10532. if (memcmp(NameR.data()+12, "dasl.rrri", 9))
  10533. break;
  10534. return Intrinsic::hexagon_S2_addasl_rrri; // "exagon.S2.addasl.rrri"
  10535. case 's': // 31 strings to match.
  10536. switch (NameR[12]) {
  10537. default: break;
  10538. case 'l': // 15 strings to match.
  10539. if (NameR[13] != '.')
  10540. break;
  10541. switch (NameR[14]) {
  10542. default: break;
  10543. case 'i': // 7 strings to match.
  10544. if (NameR[15] != '.')
  10545. break;
  10546. switch (NameR[16]) {
  10547. default: break;
  10548. case 'p': // 3 strings to match.
  10549. if (NameR[17] != '.')
  10550. break;
  10551. switch (NameR[18]) {
  10552. default: break;
  10553. case 'a': // 2 strings to match.
  10554. switch (NameR[19]) {
  10555. default: break;
  10556. case 'c': // 1 string to match.
  10557. if (NameR[20] != 'c')
  10558. break;
  10559. return Intrinsic::hexagon_S2_asl_i_p_acc; // "exagon.S2.asl.i.p.acc"
  10560. case 'n': // 1 string to match.
  10561. if (NameR[20] != 'd')
  10562. break;
  10563. return Intrinsic::hexagon_S2_asl_i_p_and; // "exagon.S2.asl.i.p.and"
  10564. }
  10565. break;
  10566. case 'n': // 1 string to match.
  10567. if (memcmp(NameR.data()+19, "ac", 2))
  10568. break;
  10569. return Intrinsic::hexagon_S2_asl_i_p_nac; // "exagon.S2.asl.i.p.nac"
  10570. }
  10571. break;
  10572. case 'r': // 4 strings to match.
  10573. if (NameR[17] != '.')
  10574. break;
  10575. switch (NameR[18]) {
  10576. default: break;
  10577. case 'a': // 2 strings to match.
  10578. switch (NameR[19]) {
  10579. default: break;
  10580. case 'c': // 1 string to match.
  10581. if (NameR[20] != 'c')
  10582. break;
  10583. return Intrinsic::hexagon_S2_asl_i_r_acc; // "exagon.S2.asl.i.r.acc"
  10584. case 'n': // 1 string to match.
  10585. if (NameR[20] != 'd')
  10586. break;
  10587. return Intrinsic::hexagon_S2_asl_i_r_and; // "exagon.S2.asl.i.r.and"
  10588. }
  10589. break;
  10590. case 'n': // 1 string to match.
  10591. if (memcmp(NameR.data()+19, "ac", 2))
  10592. break;
  10593. return Intrinsic::hexagon_S2_asl_i_r_nac; // "exagon.S2.asl.i.r.nac"
  10594. case 's': // 1 string to match.
  10595. if (memcmp(NameR.data()+19, "at", 2))
  10596. break;
  10597. return Intrinsic::hexagon_S2_asl_i_r_sat; // "exagon.S2.asl.i.r.sat"
  10598. }
  10599. break;
  10600. }
  10601. break;
  10602. case 'r': // 8 strings to match.
  10603. if (NameR[15] != '.')
  10604. break;
  10605. switch (NameR[16]) {
  10606. default: break;
  10607. case 'p': // 4 strings to match.
  10608. if (NameR[17] != '.')
  10609. break;
  10610. switch (NameR[18]) {
  10611. default: break;
  10612. case 'a': // 2 strings to match.
  10613. switch (NameR[19]) {
  10614. default: break;
  10615. case 'c': // 1 string to match.
  10616. if (NameR[20] != 'c')
  10617. break;
  10618. return Intrinsic::hexagon_S2_asl_r_p_acc; // "exagon.S2.asl.r.p.acc"
  10619. case 'n': // 1 string to match.
  10620. if (NameR[20] != 'd')
  10621. break;
  10622. return Intrinsic::hexagon_S2_asl_r_p_and; // "exagon.S2.asl.r.p.and"
  10623. }
  10624. break;
  10625. case 'n': // 1 string to match.
  10626. if (memcmp(NameR.data()+19, "ac", 2))
  10627. break;
  10628. return Intrinsic::hexagon_S2_asl_r_p_nac; // "exagon.S2.asl.r.p.nac"
  10629. case 'x': // 1 string to match.
  10630. if (memcmp(NameR.data()+19, "or", 2))
  10631. break;
  10632. return Intrinsic::hexagon_S2_asl_r_p_xor; // "exagon.S2.asl.r.p.xor"
  10633. }
  10634. break;
  10635. case 'r': // 4 strings to match.
  10636. if (NameR[17] != '.')
  10637. break;
  10638. switch (NameR[18]) {
  10639. default: break;
  10640. case 'a': // 2 strings to match.
  10641. switch (NameR[19]) {
  10642. default: break;
  10643. case 'c': // 1 string to match.
  10644. if (NameR[20] != 'c')
  10645. break;
  10646. return Intrinsic::hexagon_S2_asl_r_r_acc; // "exagon.S2.asl.r.r.acc"
  10647. case 'n': // 1 string to match.
  10648. if (NameR[20] != 'd')
  10649. break;
  10650. return Intrinsic::hexagon_S2_asl_r_r_and; // "exagon.S2.asl.r.r.and"
  10651. }
  10652. break;
  10653. case 'n': // 1 string to match.
  10654. if (memcmp(NameR.data()+19, "ac", 2))
  10655. break;
  10656. return Intrinsic::hexagon_S2_asl_r_r_nac; // "exagon.S2.asl.r.r.nac"
  10657. case 's': // 1 string to match.
  10658. if (memcmp(NameR.data()+19, "at", 2))
  10659. break;
  10660. return Intrinsic::hexagon_S2_asl_r_r_sat; // "exagon.S2.asl.r.r.sat"
  10661. }
  10662. break;
  10663. }
  10664. break;
  10665. }
  10666. break;
  10667. case 'r': // 16 strings to match.
  10668. if (NameR[13] != '.')
  10669. break;
  10670. switch (NameR[14]) {
  10671. default: break;
  10672. case 'i': // 8 strings to match.
  10673. if (NameR[15] != '.')
  10674. break;
  10675. switch (NameR[16]) {
  10676. default: break;
  10677. case 'p': // 4 strings to match.
  10678. if (NameR[17] != '.')
  10679. break;
  10680. switch (NameR[18]) {
  10681. default: break;
  10682. case 'a': // 2 strings to match.
  10683. switch (NameR[19]) {
  10684. default: break;
  10685. case 'c': // 1 string to match.
  10686. if (NameR[20] != 'c')
  10687. break;
  10688. return Intrinsic::hexagon_S2_asr_i_p_acc; // "exagon.S2.asr.i.p.acc"
  10689. case 'n': // 1 string to match.
  10690. if (NameR[20] != 'd')
  10691. break;
  10692. return Intrinsic::hexagon_S2_asr_i_p_and; // "exagon.S2.asr.i.p.and"
  10693. }
  10694. break;
  10695. case 'n': // 1 string to match.
  10696. if (memcmp(NameR.data()+19, "ac", 2))
  10697. break;
  10698. return Intrinsic::hexagon_S2_asr_i_p_nac; // "exagon.S2.asr.i.p.nac"
  10699. case 'r': // 1 string to match.
  10700. if (memcmp(NameR.data()+19, "nd", 2))
  10701. break;
  10702. return Intrinsic::hexagon_S2_asr_i_p_rnd; // "exagon.S2.asr.i.p.rnd"
  10703. }
  10704. break;
  10705. case 'r': // 4 strings to match.
  10706. if (NameR[17] != '.')
  10707. break;
  10708. switch (NameR[18]) {
  10709. default: break;
  10710. case 'a': // 2 strings to match.
  10711. switch (NameR[19]) {
  10712. default: break;
  10713. case 'c': // 1 string to match.
  10714. if (NameR[20] != 'c')
  10715. break;
  10716. return Intrinsic::hexagon_S2_asr_i_r_acc; // "exagon.S2.asr.i.r.acc"
  10717. case 'n': // 1 string to match.
  10718. if (NameR[20] != 'd')
  10719. break;
  10720. return Intrinsic::hexagon_S2_asr_i_r_and; // "exagon.S2.asr.i.r.and"
  10721. }
  10722. break;
  10723. case 'n': // 1 string to match.
  10724. if (memcmp(NameR.data()+19, "ac", 2))
  10725. break;
  10726. return Intrinsic::hexagon_S2_asr_i_r_nac; // "exagon.S2.asr.i.r.nac"
  10727. case 'r': // 1 string to match.
  10728. if (memcmp(NameR.data()+19, "nd", 2))
  10729. break;
  10730. return Intrinsic::hexagon_S2_asr_i_r_rnd; // "exagon.S2.asr.i.r.rnd"
  10731. }
  10732. break;
  10733. }
  10734. break;
  10735. case 'r': // 8 strings to match.
  10736. if (NameR[15] != '.')
  10737. break;
  10738. switch (NameR[16]) {
  10739. default: break;
  10740. case 'p': // 4 strings to match.
  10741. if (NameR[17] != '.')
  10742. break;
  10743. switch (NameR[18]) {
  10744. default: break;
  10745. case 'a': // 2 strings to match.
  10746. switch (NameR[19]) {
  10747. default: break;
  10748. case 'c': // 1 string to match.
  10749. if (NameR[20] != 'c')
  10750. break;
  10751. return Intrinsic::hexagon_S2_asr_r_p_acc; // "exagon.S2.asr.r.p.acc"
  10752. case 'n': // 1 string to match.
  10753. if (NameR[20] != 'd')
  10754. break;
  10755. return Intrinsic::hexagon_S2_asr_r_p_and; // "exagon.S2.asr.r.p.and"
  10756. }
  10757. break;
  10758. case 'n': // 1 string to match.
  10759. if (memcmp(NameR.data()+19, "ac", 2))
  10760. break;
  10761. return Intrinsic::hexagon_S2_asr_r_p_nac; // "exagon.S2.asr.r.p.nac"
  10762. case 'x': // 1 string to match.
  10763. if (memcmp(NameR.data()+19, "or", 2))
  10764. break;
  10765. return Intrinsic::hexagon_S2_asr_r_p_xor; // "exagon.S2.asr.r.p.xor"
  10766. }
  10767. break;
  10768. case 'r': // 4 strings to match.
  10769. if (NameR[17] != '.')
  10770. break;
  10771. switch (NameR[18]) {
  10772. default: break;
  10773. case 'a': // 2 strings to match.
  10774. switch (NameR[19]) {
  10775. default: break;
  10776. case 'c': // 1 string to match.
  10777. if (NameR[20] != 'c')
  10778. break;
  10779. return Intrinsic::hexagon_S2_asr_r_r_acc; // "exagon.S2.asr.r.r.acc"
  10780. case 'n': // 1 string to match.
  10781. if (NameR[20] != 'd')
  10782. break;
  10783. return Intrinsic::hexagon_S2_asr_r_r_and; // "exagon.S2.asr.r.r.and"
  10784. }
  10785. break;
  10786. case 'n': // 1 string to match.
  10787. if (memcmp(NameR.data()+19, "ac", 2))
  10788. break;
  10789. return Intrinsic::hexagon_S2_asr_r_r_nac; // "exagon.S2.asr.r.r.nac"
  10790. case 's': // 1 string to match.
  10791. if (memcmp(NameR.data()+19, "at", 2))
  10792. break;
  10793. return Intrinsic::hexagon_S2_asr_r_r_sat; // "exagon.S2.asr.r.r.sat"
  10794. }
  10795. break;
  10796. }
  10797. break;
  10798. }
  10799. break;
  10800. }
  10801. break;
  10802. }
  10803. break;
  10804. case 'e': // 1 string to match.
  10805. if (memcmp(NameR.data()+11, "xtractu.rp", 10))
  10806. break;
  10807. return Intrinsic::hexagon_S2_extractu_rp; // "exagon.S2.extractu.rp"
  10808. case 'l': // 20 strings to match.
  10809. if (NameR[11] != 's')
  10810. break;
  10811. switch (NameR[12]) {
  10812. default: break;
  10813. case 'l': // 7 strings to match.
  10814. if (memcmp(NameR.data()+13, ".r.", 3))
  10815. break;
  10816. switch (NameR[16]) {
  10817. default: break;
  10818. case 'p': // 4 strings to match.
  10819. if (NameR[17] != '.')
  10820. break;
  10821. switch (NameR[18]) {
  10822. default: break;
  10823. case 'a': // 2 strings to match.
  10824. switch (NameR[19]) {
  10825. default: break;
  10826. case 'c': // 1 string to match.
  10827. if (NameR[20] != 'c')
  10828. break;
  10829. return Intrinsic::hexagon_S2_lsl_r_p_acc; // "exagon.S2.lsl.r.p.acc"
  10830. case 'n': // 1 string to match.
  10831. if (NameR[20] != 'd')
  10832. break;
  10833. return Intrinsic::hexagon_S2_lsl_r_p_and; // "exagon.S2.lsl.r.p.and"
  10834. }
  10835. break;
  10836. case 'n': // 1 string to match.
  10837. if (memcmp(NameR.data()+19, "ac", 2))
  10838. break;
  10839. return Intrinsic::hexagon_S2_lsl_r_p_nac; // "exagon.S2.lsl.r.p.nac"
  10840. case 'x': // 1 string to match.
  10841. if (memcmp(NameR.data()+19, "or", 2))
  10842. break;
  10843. return Intrinsic::hexagon_S2_lsl_r_p_xor; // "exagon.S2.lsl.r.p.xor"
  10844. }
  10845. break;
  10846. case 'r': // 3 strings to match.
  10847. if (NameR[17] != '.')
  10848. break;
  10849. switch (NameR[18]) {
  10850. default: break;
  10851. case 'a': // 2 strings to match.
  10852. switch (NameR[19]) {
  10853. default: break;
  10854. case 'c': // 1 string to match.
  10855. if (NameR[20] != 'c')
  10856. break;
  10857. return Intrinsic::hexagon_S2_lsl_r_r_acc; // "exagon.S2.lsl.r.r.acc"
  10858. case 'n': // 1 string to match.
  10859. if (NameR[20] != 'd')
  10860. break;
  10861. return Intrinsic::hexagon_S2_lsl_r_r_and; // "exagon.S2.lsl.r.r.and"
  10862. }
  10863. break;
  10864. case 'n': // 1 string to match.
  10865. if (memcmp(NameR.data()+19, "ac", 2))
  10866. break;
  10867. return Intrinsic::hexagon_S2_lsl_r_r_nac; // "exagon.S2.lsl.r.r.nac"
  10868. }
  10869. break;
  10870. }
  10871. break;
  10872. case 'r': // 13 strings to match.
  10873. if (NameR[13] != '.')
  10874. break;
  10875. switch (NameR[14]) {
  10876. default: break;
  10877. case 'i': // 6 strings to match.
  10878. if (NameR[15] != '.')
  10879. break;
  10880. switch (NameR[16]) {
  10881. default: break;
  10882. case 'p': // 3 strings to match.
  10883. if (NameR[17] != '.')
  10884. break;
  10885. switch (NameR[18]) {
  10886. default: break;
  10887. case 'a': // 2 strings to match.
  10888. switch (NameR[19]) {
  10889. default: break;
  10890. case 'c': // 1 string to match.
  10891. if (NameR[20] != 'c')
  10892. break;
  10893. return Intrinsic::hexagon_S2_lsr_i_p_acc; // "exagon.S2.lsr.i.p.acc"
  10894. case 'n': // 1 string to match.
  10895. if (NameR[20] != 'd')
  10896. break;
  10897. return Intrinsic::hexagon_S2_lsr_i_p_and; // "exagon.S2.lsr.i.p.and"
  10898. }
  10899. break;
  10900. case 'n': // 1 string to match.
  10901. if (memcmp(NameR.data()+19, "ac", 2))
  10902. break;
  10903. return Intrinsic::hexagon_S2_lsr_i_p_nac; // "exagon.S2.lsr.i.p.nac"
  10904. }
  10905. break;
  10906. case 'r': // 3 strings to match.
  10907. if (NameR[17] != '.')
  10908. break;
  10909. switch (NameR[18]) {
  10910. default: break;
  10911. case 'a': // 2 strings to match.
  10912. switch (NameR[19]) {
  10913. default: break;
  10914. case 'c': // 1 string to match.
  10915. if (NameR[20] != 'c')
  10916. break;
  10917. return Intrinsic::hexagon_S2_lsr_i_r_acc; // "exagon.S2.lsr.i.r.acc"
  10918. case 'n': // 1 string to match.
  10919. if (NameR[20] != 'd')
  10920. break;
  10921. return Intrinsic::hexagon_S2_lsr_i_r_and; // "exagon.S2.lsr.i.r.and"
  10922. }
  10923. break;
  10924. case 'n': // 1 string to match.
  10925. if (memcmp(NameR.data()+19, "ac", 2))
  10926. break;
  10927. return Intrinsic::hexagon_S2_lsr_i_r_nac; // "exagon.S2.lsr.i.r.nac"
  10928. }
  10929. break;
  10930. }
  10931. break;
  10932. case 'r': // 7 strings to match.
  10933. if (NameR[15] != '.')
  10934. break;
  10935. switch (NameR[16]) {
  10936. default: break;
  10937. case 'p': // 4 strings to match.
  10938. if (NameR[17] != '.')
  10939. break;
  10940. switch (NameR[18]) {
  10941. default: break;
  10942. case 'a': // 2 strings to match.
  10943. switch (NameR[19]) {
  10944. default: break;
  10945. case 'c': // 1 string to match.
  10946. if (NameR[20] != 'c')
  10947. break;
  10948. return Intrinsic::hexagon_S2_lsr_r_p_acc; // "exagon.S2.lsr.r.p.acc"
  10949. case 'n': // 1 string to match.
  10950. if (NameR[20] != 'd')
  10951. break;
  10952. return Intrinsic::hexagon_S2_lsr_r_p_and; // "exagon.S2.lsr.r.p.and"
  10953. }
  10954. break;
  10955. case 'n': // 1 string to match.
  10956. if (memcmp(NameR.data()+19, "ac", 2))
  10957. break;
  10958. return Intrinsic::hexagon_S2_lsr_r_p_nac; // "exagon.S2.lsr.r.p.nac"
  10959. case 'x': // 1 string to match.
  10960. if (memcmp(NameR.data()+19, "or", 2))
  10961. break;
  10962. return Intrinsic::hexagon_S2_lsr_r_p_xor; // "exagon.S2.lsr.r.p.xor"
  10963. }
  10964. break;
  10965. case 'r': // 3 strings to match.
  10966. if (NameR[17] != '.')
  10967. break;
  10968. switch (NameR[18]) {
  10969. default: break;
  10970. case 'a': // 2 strings to match.
  10971. switch (NameR[19]) {
  10972. default: break;
  10973. case 'c': // 1 string to match.
  10974. if (NameR[20] != 'c')
  10975. break;
  10976. return Intrinsic::hexagon_S2_lsr_r_r_acc; // "exagon.S2.lsr.r.r.acc"
  10977. case 'n': // 1 string to match.
  10978. if (NameR[20] != 'd')
  10979. break;
  10980. return Intrinsic::hexagon_S2_lsr_r_r_and; // "exagon.S2.lsr.r.r.and"
  10981. }
  10982. break;
  10983. case 'n': // 1 string to match.
  10984. if (memcmp(NameR.data()+19, "ac", 2))
  10985. break;
  10986. return Intrinsic::hexagon_S2_lsr_r_r_nac; // "exagon.S2.lsr.r.r.nac"
  10987. }
  10988. break;
  10989. }
  10990. break;
  10991. }
  10992. break;
  10993. }
  10994. break;
  10995. case 't': // 2 strings to match.
  10996. if (memcmp(NameR.data()+11, "ogglebit.", 9))
  10997. break;
  10998. switch (NameR[20]) {
  10999. default: break;
  11000. case 'i': // 1 string to match.
  11001. return Intrinsic::hexagon_S2_togglebit_i; // "exagon.S2.togglebit.i"
  11002. case 'r': // 1 string to match.
  11003. return Intrinsic::hexagon_S2_togglebit_r; // "exagon.S2.togglebit.r"
  11004. }
  11005. break;
  11006. case 'v': // 1 string to match.
  11007. if (memcmp(NameR.data()+11, "rndpackwhs", 10))
  11008. break;
  11009. return Intrinsic::hexagon_S2_vrndpackwhs; // "exagon.S2.vrndpackwhs"
  11010. }
  11011. break;
  11012. case '4': // 7 strings to match.
  11013. if (NameR[9] != '.')
  11014. break;
  11015. switch (NameR[10]) {
  11016. default: break;
  11017. case 'a': // 4 strings to match.
  11018. switch (NameR[11]) {
  11019. default: break;
  11020. case 'd': // 2 strings to match.
  11021. if (memcmp(NameR.data()+12, "di.", 3))
  11022. break;
  11023. switch (NameR[15]) {
  11024. default: break;
  11025. case 'a': // 1 string to match.
  11026. if (memcmp(NameR.data()+16, "sl.ri", 5))
  11027. break;
  11028. return Intrinsic::hexagon_S4_addi_asl_ri; // "exagon.S4.addi.asl.ri"
  11029. case 'l': // 1 string to match.
  11030. if (memcmp(NameR.data()+16, "sr.ri", 5))
  11031. break;
  11032. return Intrinsic::hexagon_S4_addi_lsr_ri; // "exagon.S4.addi.lsr.ri"
  11033. }
  11034. break;
  11035. case 'n': // 2 strings to match.
  11036. if (memcmp(NameR.data()+12, "di.", 3))
  11037. break;
  11038. switch (NameR[15]) {
  11039. default: break;
  11040. case 'a': // 1 string to match.
  11041. if (memcmp(NameR.data()+16, "sl.ri", 5))
  11042. break;
  11043. return Intrinsic::hexagon_S4_andi_asl_ri; // "exagon.S4.andi.asl.ri"
  11044. case 'l': // 1 string to match.
  11045. if (memcmp(NameR.data()+16, "sr.ri", 5))
  11046. break;
  11047. return Intrinsic::hexagon_S4_andi_lsr_ri; // "exagon.S4.andi.lsr.ri"
  11048. }
  11049. break;
  11050. }
  11051. break;
  11052. case 'e': // 1 string to match.
  11053. if (memcmp(NameR.data()+11, "xtractp.rp", 10))
  11054. break;
  11055. return Intrinsic::hexagon_S4_extractp_rp; // "exagon.S4.extractp.rp"
  11056. case 's': // 2 strings to match.
  11057. if (memcmp(NameR.data()+11, "ubi.", 4))
  11058. break;
  11059. switch (NameR[15]) {
  11060. default: break;
  11061. case 'a': // 1 string to match.
  11062. if (memcmp(NameR.data()+16, "sl.ri", 5))
  11063. break;
  11064. return Intrinsic::hexagon_S4_subi_asl_ri; // "exagon.S4.subi.asl.ri"
  11065. case 'l': // 1 string to match.
  11066. if (memcmp(NameR.data()+16, "sr.ri", 5))
  11067. break;
  11068. return Intrinsic::hexagon_S4_subi_lsr_ri; // "exagon.S4.subi.lsr.ri"
  11069. }
  11070. break;
  11071. }
  11072. break;
  11073. }
  11074. break;
  11075. }
  11076. break;
  11077. case 22: // 9 strings to match.
  11078. if (memcmp(NameR.data()+0, "exagon.", 7))
  11079. break;
  11080. switch (NameR[7]) {
  11081. default: break;
  11082. case 'A': // 2 strings to match.
  11083. if (memcmp(NameR.data()+8, "4.round.r", 9))
  11084. break;
  11085. switch (NameR[17]) {
  11086. default: break;
  11087. case 'i': // 1 string to match.
  11088. if (memcmp(NameR.data()+18, ".sat", 4))
  11089. break;
  11090. return Intrinsic::hexagon_A4_round_ri_sat; // "exagon.A4.round.ri.sat"
  11091. case 'r': // 1 string to match.
  11092. if (memcmp(NameR.data()+18, ".sat", 4))
  11093. break;
  11094. return Intrinsic::hexagon_A4_round_rr_sat; // "exagon.A4.round.rr.sat"
  11095. }
  11096. break;
  11097. case 'M': // 1 string to match.
  11098. if (memcmp(NameR.data()+8, "2.vrcmpys.s1rp", 14))
  11099. break;
  11100. return Intrinsic::hexagon_M2_vrcmpys_s1rp; // "exagon.M2.vrcmpys.s1rp"
  11101. case 'S': // 6 strings to match.
  11102. if (memcmp(NameR.data()+8, "2.", 2))
  11103. break;
  11104. switch (NameR[10]) {
  11105. default: break;
  11106. case 'a': // 2 strings to match.
  11107. if (memcmp(NameR.data()+11, "sl.i.", 5))
  11108. break;
  11109. switch (NameR[16]) {
  11110. default: break;
  11111. case 'p': // 1 string to match.
  11112. if (memcmp(NameR.data()+17, ".xacc", 5))
  11113. break;
  11114. return Intrinsic::hexagon_S2_asl_i_p_xacc; // "exagon.S2.asl.i.p.xacc"
  11115. case 'r': // 1 string to match.
  11116. if (memcmp(NameR.data()+17, ".xacc", 5))
  11117. break;
  11118. return Intrinsic::hexagon_S2_asl_i_r_xacc; // "exagon.S2.asl.i.r.xacc"
  11119. }
  11120. break;
  11121. case 'd': // 1 string to match.
  11122. if (memcmp(NameR.data()+11, "einterleave", 11))
  11123. break;
  11124. return Intrinsic::hexagon_S2_deinterleave; // "exagon.S2.deinterleave"
  11125. case 'e': // 1 string to match.
  11126. if (memcmp(NameR.data()+11, "xtractup.rp", 11))
  11127. break;
  11128. return Intrinsic::hexagon_S2_extractup_rp; // "exagon.S2.extractup.rp"
  11129. case 'l': // 2 strings to match.
  11130. if (memcmp(NameR.data()+11, "sr.i.", 5))
  11131. break;
  11132. switch (NameR[16]) {
  11133. default: break;
  11134. case 'p': // 1 string to match.
  11135. if (memcmp(NameR.data()+17, ".xacc", 5))
  11136. break;
  11137. return Intrinsic::hexagon_S2_lsr_i_p_xacc; // "exagon.S2.lsr.i.p.xacc"
  11138. case 'r': // 1 string to match.
  11139. if (memcmp(NameR.data()+17, ".xacc", 5))
  11140. break;
  11141. return Intrinsic::hexagon_S2_lsr_i_r_xacc; // "exagon.S2.lsr.i.r.xacc"
  11142. }
  11143. break;
  11144. }
  11145. break;
  11146. }
  11147. break;
  11148. case 23: // 42 strings to match.
  11149. if (memcmp(NameR.data()+0, "exagon.", 7))
  11150. break;
  11151. switch (NameR[7]) {
  11152. default: break;
  11153. case 'M': // 38 strings to match.
  11154. switch (NameR[8]) {
  11155. default: break;
  11156. case '2': // 35 strings to match.
  11157. if (NameR[9] != '.')
  11158. break;
  11159. switch (NameR[10]) {
  11160. default: break;
  11161. case 'm': // 33 strings to match.
  11162. if (memcmp(NameR.data()+11, "py.", 3))
  11163. break;
  11164. switch (NameR[14]) {
  11165. default: break;
  11166. case 'a': // 8 strings to match.
  11167. if (memcmp(NameR.data()+15, "cc.", 3))
  11168. break;
  11169. switch (NameR[18]) {
  11170. default: break;
  11171. case 'h': // 4 strings to match.
  11172. switch (NameR[19]) {
  11173. default: break;
  11174. case 'h': // 2 strings to match.
  11175. if (memcmp(NameR.data()+20, ".s", 2))
  11176. break;
  11177. switch (NameR[22]) {
  11178. default: break;
  11179. case '0': // 1 string to match.
  11180. return Intrinsic::hexagon_M2_mpy_acc_hh_s0; // "exagon.M2.mpy.acc.hh.s0"
  11181. case '1': // 1 string to match.
  11182. return Intrinsic::hexagon_M2_mpy_acc_hh_s1; // "exagon.M2.mpy.acc.hh.s1"
  11183. }
  11184. break;
  11185. case 'l': // 2 strings to match.
  11186. if (memcmp(NameR.data()+20, ".s", 2))
  11187. break;
  11188. switch (NameR[22]) {
  11189. default: break;
  11190. case '0': // 1 string to match.
  11191. return Intrinsic::hexagon_M2_mpy_acc_hl_s0; // "exagon.M2.mpy.acc.hl.s0"
  11192. case '1': // 1 string to match.
  11193. return Intrinsic::hexagon_M2_mpy_acc_hl_s1; // "exagon.M2.mpy.acc.hl.s1"
  11194. }
  11195. break;
  11196. }
  11197. break;
  11198. case 'l': // 4 strings to match.
  11199. switch (NameR[19]) {
  11200. default: break;
  11201. case 'h': // 2 strings to match.
  11202. if (memcmp(NameR.data()+20, ".s", 2))
  11203. break;
  11204. switch (NameR[22]) {
  11205. default: break;
  11206. case '0': // 1 string to match.
  11207. return Intrinsic::hexagon_M2_mpy_acc_lh_s0; // "exagon.M2.mpy.acc.lh.s0"
  11208. case '1': // 1 string to match.
  11209. return Intrinsic::hexagon_M2_mpy_acc_lh_s1; // "exagon.M2.mpy.acc.lh.s1"
  11210. }
  11211. break;
  11212. case 'l': // 2 strings to match.
  11213. if (memcmp(NameR.data()+20, ".s", 2))
  11214. break;
  11215. switch (NameR[22]) {
  11216. default: break;
  11217. case '0': // 1 string to match.
  11218. return Intrinsic::hexagon_M2_mpy_acc_ll_s0; // "exagon.M2.mpy.acc.ll.s0"
  11219. case '1': // 1 string to match.
  11220. return Intrinsic::hexagon_M2_mpy_acc_ll_s1; // "exagon.M2.mpy.acc.ll.s1"
  11221. }
  11222. break;
  11223. }
  11224. break;
  11225. }
  11226. break;
  11227. case 'n': // 8 strings to match.
  11228. if (memcmp(NameR.data()+15, "ac.", 3))
  11229. break;
  11230. switch (NameR[18]) {
  11231. default: break;
  11232. case 'h': // 4 strings to match.
  11233. switch (NameR[19]) {
  11234. default: break;
  11235. case 'h': // 2 strings to match.
  11236. if (memcmp(NameR.data()+20, ".s", 2))
  11237. break;
  11238. switch (NameR[22]) {
  11239. default: break;
  11240. case '0': // 1 string to match.
  11241. return Intrinsic::hexagon_M2_mpy_nac_hh_s0; // "exagon.M2.mpy.nac.hh.s0"
  11242. case '1': // 1 string to match.
  11243. return Intrinsic::hexagon_M2_mpy_nac_hh_s1; // "exagon.M2.mpy.nac.hh.s1"
  11244. }
  11245. break;
  11246. case 'l': // 2 strings to match.
  11247. if (memcmp(NameR.data()+20, ".s", 2))
  11248. break;
  11249. switch (NameR[22]) {
  11250. default: break;
  11251. case '0': // 1 string to match.
  11252. return Intrinsic::hexagon_M2_mpy_nac_hl_s0; // "exagon.M2.mpy.nac.hl.s0"
  11253. case '1': // 1 string to match.
  11254. return Intrinsic::hexagon_M2_mpy_nac_hl_s1; // "exagon.M2.mpy.nac.hl.s1"
  11255. }
  11256. break;
  11257. }
  11258. break;
  11259. case 'l': // 4 strings to match.
  11260. switch (NameR[19]) {
  11261. default: break;
  11262. case 'h': // 2 strings to match.
  11263. if (memcmp(NameR.data()+20, ".s", 2))
  11264. break;
  11265. switch (NameR[22]) {
  11266. default: break;
  11267. case '0': // 1 string to match.
  11268. return Intrinsic::hexagon_M2_mpy_nac_lh_s0; // "exagon.M2.mpy.nac.lh.s0"
  11269. case '1': // 1 string to match.
  11270. return Intrinsic::hexagon_M2_mpy_nac_lh_s1; // "exagon.M2.mpy.nac.lh.s1"
  11271. }
  11272. break;
  11273. case 'l': // 2 strings to match.
  11274. if (memcmp(NameR.data()+20, ".s", 2))
  11275. break;
  11276. switch (NameR[22]) {
  11277. default: break;
  11278. case '0': // 1 string to match.
  11279. return Intrinsic::hexagon_M2_mpy_nac_ll_s0; // "exagon.M2.mpy.nac.ll.s0"
  11280. case '1': // 1 string to match.
  11281. return Intrinsic::hexagon_M2_mpy_nac_ll_s1; // "exagon.M2.mpy.nac.ll.s1"
  11282. }
  11283. break;
  11284. }
  11285. break;
  11286. }
  11287. break;
  11288. case 'r': // 8 strings to match.
  11289. if (memcmp(NameR.data()+15, "nd.", 3))
  11290. break;
  11291. switch (NameR[18]) {
  11292. default: break;
  11293. case 'h': // 4 strings to match.
  11294. switch (NameR[19]) {
  11295. default: break;
  11296. case 'h': // 2 strings to match.
  11297. if (memcmp(NameR.data()+20, ".s", 2))
  11298. break;
  11299. switch (NameR[22]) {
  11300. default: break;
  11301. case '0': // 1 string to match.
  11302. return Intrinsic::hexagon_M2_mpy_rnd_hh_s0; // "exagon.M2.mpy.rnd.hh.s0"
  11303. case '1': // 1 string to match.
  11304. return Intrinsic::hexagon_M2_mpy_rnd_hh_s1; // "exagon.M2.mpy.rnd.hh.s1"
  11305. }
  11306. break;
  11307. case 'l': // 2 strings to match.
  11308. if (memcmp(NameR.data()+20, ".s", 2))
  11309. break;
  11310. switch (NameR[22]) {
  11311. default: break;
  11312. case '0': // 1 string to match.
  11313. return Intrinsic::hexagon_M2_mpy_rnd_hl_s0; // "exagon.M2.mpy.rnd.hl.s0"
  11314. case '1': // 1 string to match.
  11315. return Intrinsic::hexagon_M2_mpy_rnd_hl_s1; // "exagon.M2.mpy.rnd.hl.s1"
  11316. }
  11317. break;
  11318. }
  11319. break;
  11320. case 'l': // 4 strings to match.
  11321. switch (NameR[19]) {
  11322. default: break;
  11323. case 'h': // 2 strings to match.
  11324. if (memcmp(NameR.data()+20, ".s", 2))
  11325. break;
  11326. switch (NameR[22]) {
  11327. default: break;
  11328. case '0': // 1 string to match.
  11329. return Intrinsic::hexagon_M2_mpy_rnd_lh_s0; // "exagon.M2.mpy.rnd.lh.s0"
  11330. case '1': // 1 string to match.
  11331. return Intrinsic::hexagon_M2_mpy_rnd_lh_s1; // "exagon.M2.mpy.rnd.lh.s1"
  11332. }
  11333. break;
  11334. case 'l': // 2 strings to match.
  11335. if (memcmp(NameR.data()+20, ".s", 2))
  11336. break;
  11337. switch (NameR[22]) {
  11338. default: break;
  11339. case '0': // 1 string to match.
  11340. return Intrinsic::hexagon_M2_mpy_rnd_ll_s0; // "exagon.M2.mpy.rnd.ll.s0"
  11341. case '1': // 1 string to match.
  11342. return Intrinsic::hexagon_M2_mpy_rnd_ll_s1; // "exagon.M2.mpy.rnd.ll.s1"
  11343. }
  11344. break;
  11345. }
  11346. break;
  11347. }
  11348. break;
  11349. case 's': // 8 strings to match.
  11350. if (memcmp(NameR.data()+15, "at.", 3))
  11351. break;
  11352. switch (NameR[18]) {
  11353. default: break;
  11354. case 'h': // 4 strings to match.
  11355. switch (NameR[19]) {
  11356. default: break;
  11357. case 'h': // 2 strings to match.
  11358. if (memcmp(NameR.data()+20, ".s", 2))
  11359. break;
  11360. switch (NameR[22]) {
  11361. default: break;
  11362. case '0': // 1 string to match.
  11363. return Intrinsic::hexagon_M2_mpy_sat_hh_s0; // "exagon.M2.mpy.sat.hh.s0"
  11364. case '1': // 1 string to match.
  11365. return Intrinsic::hexagon_M2_mpy_sat_hh_s1; // "exagon.M2.mpy.sat.hh.s1"
  11366. }
  11367. break;
  11368. case 'l': // 2 strings to match.
  11369. if (memcmp(NameR.data()+20, ".s", 2))
  11370. break;
  11371. switch (NameR[22]) {
  11372. default: break;
  11373. case '0': // 1 string to match.
  11374. return Intrinsic::hexagon_M2_mpy_sat_hl_s0; // "exagon.M2.mpy.sat.hl.s0"
  11375. case '1': // 1 string to match.
  11376. return Intrinsic::hexagon_M2_mpy_sat_hl_s1; // "exagon.M2.mpy.sat.hl.s1"
  11377. }
  11378. break;
  11379. }
  11380. break;
  11381. case 'l': // 4 strings to match.
  11382. switch (NameR[19]) {
  11383. default: break;
  11384. case 'h': // 2 strings to match.
  11385. if (memcmp(NameR.data()+20, ".s", 2))
  11386. break;
  11387. switch (NameR[22]) {
  11388. default: break;
  11389. case '0': // 1 string to match.
  11390. return Intrinsic::hexagon_M2_mpy_sat_lh_s0; // "exagon.M2.mpy.sat.lh.s0"
  11391. case '1': // 1 string to match.
  11392. return Intrinsic::hexagon_M2_mpy_sat_lh_s1; // "exagon.M2.mpy.sat.lh.s1"
  11393. }
  11394. break;
  11395. case 'l': // 2 strings to match.
  11396. if (memcmp(NameR.data()+20, ".s", 2))
  11397. break;
  11398. switch (NameR[22]) {
  11399. default: break;
  11400. case '0': // 1 string to match.
  11401. return Intrinsic::hexagon_M2_mpy_sat_ll_s0; // "exagon.M2.mpy.sat.ll.s0"
  11402. case '1': // 1 string to match.
  11403. return Intrinsic::hexagon_M2_mpy_sat_ll_s1; // "exagon.M2.mpy.sat.ll.s1"
  11404. }
  11405. break;
  11406. }
  11407. break;
  11408. }
  11409. break;
  11410. case 'u': // 1 string to match.
  11411. if (memcmp(NameR.data()+15, "p.s1.sat", 8))
  11412. break;
  11413. return Intrinsic::hexagon_M2_mpy_up_s1_sat; // "exagon.M2.mpy.up.s1.sat"
  11414. }
  11415. break;
  11416. case 'v': // 2 strings to match.
  11417. if (memcmp(NameR.data()+11, "mpy2s.s", 7))
  11418. break;
  11419. switch (NameR[18]) {
  11420. default: break;
  11421. case '0': // 1 string to match.
  11422. if (memcmp(NameR.data()+19, "pack", 4))
  11423. break;
  11424. return Intrinsic::hexagon_M2_vmpy2s_s0pack; // "exagon.M2.vmpy2s.s0pack"
  11425. case '1': // 1 string to match.
  11426. if (memcmp(NameR.data()+19, "pack", 4))
  11427. break;
  11428. return Intrinsic::hexagon_M2_vmpy2s_s1pack; // "exagon.M2.vmpy2s.s1pack"
  11429. }
  11430. break;
  11431. }
  11432. break;
  11433. case '4': // 3 strings to match.
  11434. if (NameR[9] != '.')
  11435. break;
  11436. switch (NameR[10]) {
  11437. default: break;
  11438. case 'm': // 2 strings to match.
  11439. switch (NameR[11]) {
  11440. default: break;
  11441. case 'a': // 1 string to match.
  11442. if (memcmp(NameR.data()+12, "c.up.s1.sat", 11))
  11443. break;
  11444. return Intrinsic::hexagon_M4_mac_up_s1_sat; // "exagon.M4.mac.up.s1.sat"
  11445. case 'p': // 1 string to match.
  11446. if (memcmp(NameR.data()+12, "yri.addr.u2", 11))
  11447. break;
  11448. return Intrinsic::hexagon_M4_mpyri_addr_u2; // "exagon.M4.mpyri.addr.u2"
  11449. }
  11450. break;
  11451. case 'n': // 1 string to match.
  11452. if (memcmp(NameR.data()+11, "ac.up.s1.sat", 12))
  11453. break;
  11454. return Intrinsic::hexagon_M4_nac_up_s1_sat; // "exagon.M4.nac.up.s1.sat"
  11455. }
  11456. break;
  11457. }
  11458. break;
  11459. case 'S': // 4 strings to match.
  11460. switch (NameR[8]) {
  11461. default: break;
  11462. case '2': // 2 strings to match.
  11463. if (memcmp(NameR.data()+9, ".vsat", 5))
  11464. break;
  11465. switch (NameR[14]) {
  11466. default: break;
  11467. case 'h': // 1 string to match.
  11468. if (memcmp(NameR.data()+15, "b.nopack", 8))
  11469. break;
  11470. return Intrinsic::hexagon_S2_vsathb_nopack; // "exagon.S2.vsathb.nopack"
  11471. case 'w': // 1 string to match.
  11472. if (memcmp(NameR.data()+15, "h.nopack", 8))
  11473. break;
  11474. return Intrinsic::hexagon_S2_vsatwh_nopack; // "exagon.S2.vsatwh.nopack"
  11475. }
  11476. break;
  11477. case '4': // 1 string to match.
  11478. if (memcmp(NameR.data()+9, ".vrcrotate.acc", 14))
  11479. break;
  11480. return Intrinsic::hexagon_S4_vrcrotate_acc; // "exagon.S4.vrcrotate.acc"
  11481. case 'I': // 1 string to match.
  11482. if (memcmp(NameR.data()+9, ".to.SXTHI.asrh", 14))
  11483. break;
  11484. return Intrinsic::hexagon_SI_to_SXTHI_asrh; // "exagon.SI.to.SXTHI.asrh"
  11485. }
  11486. break;
  11487. }
  11488. break;
  11489. case 24: // 64 strings to match.
  11490. if (memcmp(NameR.data()+0, "exagon.", 7))
  11491. break;
  11492. switch (NameR[7]) {
  11493. default: break;
  11494. case 'F': // 4 strings to match.
  11495. if (memcmp(NameR.data()+8, "2.conv.", 7))
  11496. break;
  11497. switch (NameR[15]) {
  11498. default: break;
  11499. case 'd': // 2 strings to match.
  11500. if (memcmp(NameR.data()+16, "f2", 2))
  11501. break;
  11502. switch (NameR[18]) {
  11503. default: break;
  11504. case 'd': // 1 string to match.
  11505. if (memcmp(NameR.data()+19, ".chop", 5))
  11506. break;
  11507. return Intrinsic::hexagon_F2_conv_df2d_chop; // "exagon.F2.conv.df2d.chop"
  11508. case 'w': // 1 string to match.
  11509. if (memcmp(NameR.data()+19, ".chop", 5))
  11510. break;
  11511. return Intrinsic::hexagon_F2_conv_df2w_chop; // "exagon.F2.conv.df2w.chop"
  11512. }
  11513. break;
  11514. case 's': // 2 strings to match.
  11515. if (memcmp(NameR.data()+16, "f2", 2))
  11516. break;
  11517. switch (NameR[18]) {
  11518. default: break;
  11519. case 'd': // 1 string to match.
  11520. if (memcmp(NameR.data()+19, ".chop", 5))
  11521. break;
  11522. return Intrinsic::hexagon_F2_conv_sf2d_chop; // "exagon.F2.conv.sf2d.chop"
  11523. case 'w': // 1 string to match.
  11524. if (memcmp(NameR.data()+19, ".chop", 5))
  11525. break;
  11526. return Intrinsic::hexagon_F2_conv_sf2w_chop; // "exagon.F2.conv.sf2w.chop"
  11527. }
  11528. break;
  11529. }
  11530. break;
  11531. case 'M': // 56 strings to match.
  11532. switch (NameR[8]) {
  11533. default: break;
  11534. case '2': // 52 strings to match.
  11535. if (NameR[9] != '.')
  11536. break;
  11537. switch (NameR[10]) {
  11538. default: break;
  11539. case 'd': // 5 strings to match.
  11540. if (memcmp(NameR.data()+11, "pmpy", 4))
  11541. break;
  11542. switch (NameR[15]) {
  11543. default: break;
  11544. case 's': // 3 strings to match.
  11545. if (memcmp(NameR.data()+16, "s.", 2))
  11546. break;
  11547. switch (NameR[18]) {
  11548. default: break;
  11549. case 'a': // 1 string to match.
  11550. if (memcmp(NameR.data()+19, "cc.s0", 5))
  11551. break;
  11552. return Intrinsic::hexagon_M2_dpmpyss_acc_s0; // "exagon.M2.dpmpyss.acc.s0"
  11553. case 'n': // 1 string to match.
  11554. if (memcmp(NameR.data()+19, "ac.s0", 5))
  11555. break;
  11556. return Intrinsic::hexagon_M2_dpmpyss_nac_s0; // "exagon.M2.dpmpyss.nac.s0"
  11557. case 'r': // 1 string to match.
  11558. if (memcmp(NameR.data()+19, "nd.s0", 5))
  11559. break;
  11560. return Intrinsic::hexagon_M2_dpmpyss_rnd_s0; // "exagon.M2.dpmpyss.rnd.s0"
  11561. }
  11562. break;
  11563. case 'u': // 2 strings to match.
  11564. if (memcmp(NameR.data()+16, "u.", 2))
  11565. break;
  11566. switch (NameR[18]) {
  11567. default: break;
  11568. case 'a': // 1 string to match.
  11569. if (memcmp(NameR.data()+19, "cc.s0", 5))
  11570. break;
  11571. return Intrinsic::hexagon_M2_dpmpyuu_acc_s0; // "exagon.M2.dpmpyuu.acc.s0"
  11572. case 'n': // 1 string to match.
  11573. if (memcmp(NameR.data()+19, "ac.s0", 5))
  11574. break;
  11575. return Intrinsic::hexagon_M2_dpmpyuu_nac_s0; // "exagon.M2.dpmpyuu.nac.s0"
  11576. }
  11577. break;
  11578. }
  11579. break;
  11580. case 'm': // 40 strings to match.
  11581. if (memcmp(NameR.data()+11, "py", 2))
  11582. break;
  11583. switch (NameR[13]) {
  11584. default: break;
  11585. case 'd': // 24 strings to match.
  11586. if (NameR[14] != '.')
  11587. break;
  11588. switch (NameR[15]) {
  11589. default: break;
  11590. case 'a': // 8 strings to match.
  11591. if (memcmp(NameR.data()+16, "cc.", 3))
  11592. break;
  11593. switch (NameR[19]) {
  11594. default: break;
  11595. case 'h': // 4 strings to match.
  11596. switch (NameR[20]) {
  11597. default: break;
  11598. case 'h': // 2 strings to match.
  11599. if (memcmp(NameR.data()+21, ".s", 2))
  11600. break;
  11601. switch (NameR[23]) {
  11602. default: break;
  11603. case '0': // 1 string to match.
  11604. return Intrinsic::hexagon_M2_mpyd_acc_hh_s0; // "exagon.M2.mpyd.acc.hh.s0"
  11605. case '1': // 1 string to match.
  11606. return Intrinsic::hexagon_M2_mpyd_acc_hh_s1; // "exagon.M2.mpyd.acc.hh.s1"
  11607. }
  11608. break;
  11609. case 'l': // 2 strings to match.
  11610. if (memcmp(NameR.data()+21, ".s", 2))
  11611. break;
  11612. switch (NameR[23]) {
  11613. default: break;
  11614. case '0': // 1 string to match.
  11615. return Intrinsic::hexagon_M2_mpyd_acc_hl_s0; // "exagon.M2.mpyd.acc.hl.s0"
  11616. case '1': // 1 string to match.
  11617. return Intrinsic::hexagon_M2_mpyd_acc_hl_s1; // "exagon.M2.mpyd.acc.hl.s1"
  11618. }
  11619. break;
  11620. }
  11621. break;
  11622. case 'l': // 4 strings to match.
  11623. switch (NameR[20]) {
  11624. default: break;
  11625. case 'h': // 2 strings to match.
  11626. if (memcmp(NameR.data()+21, ".s", 2))
  11627. break;
  11628. switch (NameR[23]) {
  11629. default: break;
  11630. case '0': // 1 string to match.
  11631. return Intrinsic::hexagon_M2_mpyd_acc_lh_s0; // "exagon.M2.mpyd.acc.lh.s0"
  11632. case '1': // 1 string to match.
  11633. return Intrinsic::hexagon_M2_mpyd_acc_lh_s1; // "exagon.M2.mpyd.acc.lh.s1"
  11634. }
  11635. break;
  11636. case 'l': // 2 strings to match.
  11637. if (memcmp(NameR.data()+21, ".s", 2))
  11638. break;
  11639. switch (NameR[23]) {
  11640. default: break;
  11641. case '0': // 1 string to match.
  11642. return Intrinsic::hexagon_M2_mpyd_acc_ll_s0; // "exagon.M2.mpyd.acc.ll.s0"
  11643. case '1': // 1 string to match.
  11644. return Intrinsic::hexagon_M2_mpyd_acc_ll_s1; // "exagon.M2.mpyd.acc.ll.s1"
  11645. }
  11646. break;
  11647. }
  11648. break;
  11649. }
  11650. break;
  11651. case 'n': // 8 strings to match.
  11652. if (memcmp(NameR.data()+16, "ac.", 3))
  11653. break;
  11654. switch (NameR[19]) {
  11655. default: break;
  11656. case 'h': // 4 strings to match.
  11657. switch (NameR[20]) {
  11658. default: break;
  11659. case 'h': // 2 strings to match.
  11660. if (memcmp(NameR.data()+21, ".s", 2))
  11661. break;
  11662. switch (NameR[23]) {
  11663. default: break;
  11664. case '0': // 1 string to match.
  11665. return Intrinsic::hexagon_M2_mpyd_nac_hh_s0; // "exagon.M2.mpyd.nac.hh.s0"
  11666. case '1': // 1 string to match.
  11667. return Intrinsic::hexagon_M2_mpyd_nac_hh_s1; // "exagon.M2.mpyd.nac.hh.s1"
  11668. }
  11669. break;
  11670. case 'l': // 2 strings to match.
  11671. if (memcmp(NameR.data()+21, ".s", 2))
  11672. break;
  11673. switch (NameR[23]) {
  11674. default: break;
  11675. case '0': // 1 string to match.
  11676. return Intrinsic::hexagon_M2_mpyd_nac_hl_s0; // "exagon.M2.mpyd.nac.hl.s0"
  11677. case '1': // 1 string to match.
  11678. return Intrinsic::hexagon_M2_mpyd_nac_hl_s1; // "exagon.M2.mpyd.nac.hl.s1"
  11679. }
  11680. break;
  11681. }
  11682. break;
  11683. case 'l': // 4 strings to match.
  11684. switch (NameR[20]) {
  11685. default: break;
  11686. case 'h': // 2 strings to match.
  11687. if (memcmp(NameR.data()+21, ".s", 2))
  11688. break;
  11689. switch (NameR[23]) {
  11690. default: break;
  11691. case '0': // 1 string to match.
  11692. return Intrinsic::hexagon_M2_mpyd_nac_lh_s0; // "exagon.M2.mpyd.nac.lh.s0"
  11693. case '1': // 1 string to match.
  11694. return Intrinsic::hexagon_M2_mpyd_nac_lh_s1; // "exagon.M2.mpyd.nac.lh.s1"
  11695. }
  11696. break;
  11697. case 'l': // 2 strings to match.
  11698. if (memcmp(NameR.data()+21, ".s", 2))
  11699. break;
  11700. switch (NameR[23]) {
  11701. default: break;
  11702. case '0': // 1 string to match.
  11703. return Intrinsic::hexagon_M2_mpyd_nac_ll_s0; // "exagon.M2.mpyd.nac.ll.s0"
  11704. case '1': // 1 string to match.
  11705. return Intrinsic::hexagon_M2_mpyd_nac_ll_s1; // "exagon.M2.mpyd.nac.ll.s1"
  11706. }
  11707. break;
  11708. }
  11709. break;
  11710. }
  11711. break;
  11712. case 'r': // 8 strings to match.
  11713. if (memcmp(NameR.data()+16, "nd.", 3))
  11714. break;
  11715. switch (NameR[19]) {
  11716. default: break;
  11717. case 'h': // 4 strings to match.
  11718. switch (NameR[20]) {
  11719. default: break;
  11720. case 'h': // 2 strings to match.
  11721. if (memcmp(NameR.data()+21, ".s", 2))
  11722. break;
  11723. switch (NameR[23]) {
  11724. default: break;
  11725. case '0': // 1 string to match.
  11726. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s0; // "exagon.M2.mpyd.rnd.hh.s0"
  11727. case '1': // 1 string to match.
  11728. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s1; // "exagon.M2.mpyd.rnd.hh.s1"
  11729. }
  11730. break;
  11731. case 'l': // 2 strings to match.
  11732. if (memcmp(NameR.data()+21, ".s", 2))
  11733. break;
  11734. switch (NameR[23]) {
  11735. default: break;
  11736. case '0': // 1 string to match.
  11737. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s0; // "exagon.M2.mpyd.rnd.hl.s0"
  11738. case '1': // 1 string to match.
  11739. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s1; // "exagon.M2.mpyd.rnd.hl.s1"
  11740. }
  11741. break;
  11742. }
  11743. break;
  11744. case 'l': // 4 strings to match.
  11745. switch (NameR[20]) {
  11746. default: break;
  11747. case 'h': // 2 strings to match.
  11748. if (memcmp(NameR.data()+21, ".s", 2))
  11749. break;
  11750. switch (NameR[23]) {
  11751. default: break;
  11752. case '0': // 1 string to match.
  11753. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s0; // "exagon.M2.mpyd.rnd.lh.s0"
  11754. case '1': // 1 string to match.
  11755. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s1; // "exagon.M2.mpyd.rnd.lh.s1"
  11756. }
  11757. break;
  11758. case 'l': // 2 strings to match.
  11759. if (memcmp(NameR.data()+21, ".s", 2))
  11760. break;
  11761. switch (NameR[23]) {
  11762. default: break;
  11763. case '0': // 1 string to match.
  11764. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s0; // "exagon.M2.mpyd.rnd.ll.s0"
  11765. case '1': // 1 string to match.
  11766. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s1; // "exagon.M2.mpyd.rnd.ll.s1"
  11767. }
  11768. break;
  11769. }
  11770. break;
  11771. }
  11772. break;
  11773. }
  11774. break;
  11775. case 'u': // 16 strings to match.
  11776. if (NameR[14] != '.')
  11777. break;
  11778. switch (NameR[15]) {
  11779. default: break;
  11780. case 'a': // 8 strings to match.
  11781. if (memcmp(NameR.data()+16, "cc.", 3))
  11782. break;
  11783. switch (NameR[19]) {
  11784. default: break;
  11785. case 'h': // 4 strings to match.
  11786. switch (NameR[20]) {
  11787. default: break;
  11788. case 'h': // 2 strings to match.
  11789. if (memcmp(NameR.data()+21, ".s", 2))
  11790. break;
  11791. switch (NameR[23]) {
  11792. default: break;
  11793. case '0': // 1 string to match.
  11794. return Intrinsic::hexagon_M2_mpyu_acc_hh_s0; // "exagon.M2.mpyu.acc.hh.s0"
  11795. case '1': // 1 string to match.
  11796. return Intrinsic::hexagon_M2_mpyu_acc_hh_s1; // "exagon.M2.mpyu.acc.hh.s1"
  11797. }
  11798. break;
  11799. case 'l': // 2 strings to match.
  11800. if (memcmp(NameR.data()+21, ".s", 2))
  11801. break;
  11802. switch (NameR[23]) {
  11803. default: break;
  11804. case '0': // 1 string to match.
  11805. return Intrinsic::hexagon_M2_mpyu_acc_hl_s0; // "exagon.M2.mpyu.acc.hl.s0"
  11806. case '1': // 1 string to match.
  11807. return Intrinsic::hexagon_M2_mpyu_acc_hl_s1; // "exagon.M2.mpyu.acc.hl.s1"
  11808. }
  11809. break;
  11810. }
  11811. break;
  11812. case 'l': // 4 strings to match.
  11813. switch (NameR[20]) {
  11814. default: break;
  11815. case 'h': // 2 strings to match.
  11816. if (memcmp(NameR.data()+21, ".s", 2))
  11817. break;
  11818. switch (NameR[23]) {
  11819. default: break;
  11820. case '0': // 1 string to match.
  11821. return Intrinsic::hexagon_M2_mpyu_acc_lh_s0; // "exagon.M2.mpyu.acc.lh.s0"
  11822. case '1': // 1 string to match.
  11823. return Intrinsic::hexagon_M2_mpyu_acc_lh_s1; // "exagon.M2.mpyu.acc.lh.s1"
  11824. }
  11825. break;
  11826. case 'l': // 2 strings to match.
  11827. if (memcmp(NameR.data()+21, ".s", 2))
  11828. break;
  11829. switch (NameR[23]) {
  11830. default: break;
  11831. case '0': // 1 string to match.
  11832. return Intrinsic::hexagon_M2_mpyu_acc_ll_s0; // "exagon.M2.mpyu.acc.ll.s0"
  11833. case '1': // 1 string to match.
  11834. return Intrinsic::hexagon_M2_mpyu_acc_ll_s1; // "exagon.M2.mpyu.acc.ll.s1"
  11835. }
  11836. break;
  11837. }
  11838. break;
  11839. }
  11840. break;
  11841. case 'n': // 8 strings to match.
  11842. if (memcmp(NameR.data()+16, "ac.", 3))
  11843. break;
  11844. switch (NameR[19]) {
  11845. default: break;
  11846. case 'h': // 4 strings to match.
  11847. switch (NameR[20]) {
  11848. default: break;
  11849. case 'h': // 2 strings to match.
  11850. if (memcmp(NameR.data()+21, ".s", 2))
  11851. break;
  11852. switch (NameR[23]) {
  11853. default: break;
  11854. case '0': // 1 string to match.
  11855. return Intrinsic::hexagon_M2_mpyu_nac_hh_s0; // "exagon.M2.mpyu.nac.hh.s0"
  11856. case '1': // 1 string to match.
  11857. return Intrinsic::hexagon_M2_mpyu_nac_hh_s1; // "exagon.M2.mpyu.nac.hh.s1"
  11858. }
  11859. break;
  11860. case 'l': // 2 strings to match.
  11861. if (memcmp(NameR.data()+21, ".s", 2))
  11862. break;
  11863. switch (NameR[23]) {
  11864. default: break;
  11865. case '0': // 1 string to match.
  11866. return Intrinsic::hexagon_M2_mpyu_nac_hl_s0; // "exagon.M2.mpyu.nac.hl.s0"
  11867. case '1': // 1 string to match.
  11868. return Intrinsic::hexagon_M2_mpyu_nac_hl_s1; // "exagon.M2.mpyu.nac.hl.s1"
  11869. }
  11870. break;
  11871. }
  11872. break;
  11873. case 'l': // 4 strings to match.
  11874. switch (NameR[20]) {
  11875. default: break;
  11876. case 'h': // 2 strings to match.
  11877. if (memcmp(NameR.data()+21, ".s", 2))
  11878. break;
  11879. switch (NameR[23]) {
  11880. default: break;
  11881. case '0': // 1 string to match.
  11882. return Intrinsic::hexagon_M2_mpyu_nac_lh_s0; // "exagon.M2.mpyu.nac.lh.s0"
  11883. case '1': // 1 string to match.
  11884. return Intrinsic::hexagon_M2_mpyu_nac_lh_s1; // "exagon.M2.mpyu.nac.lh.s1"
  11885. }
  11886. break;
  11887. case 'l': // 2 strings to match.
  11888. if (memcmp(NameR.data()+21, ".s", 2))
  11889. break;
  11890. switch (NameR[23]) {
  11891. default: break;
  11892. case '0': // 1 string to match.
  11893. return Intrinsic::hexagon_M2_mpyu_nac_ll_s0; // "exagon.M2.mpyu.nac.ll.s0"
  11894. case '1': // 1 string to match.
  11895. return Intrinsic::hexagon_M2_mpyu_nac_ll_s1; // "exagon.M2.mpyu.nac.ll.s1"
  11896. }
  11897. break;
  11898. }
  11899. break;
  11900. }
  11901. break;
  11902. }
  11903. break;
  11904. }
  11905. break;
  11906. case 'v': // 7 strings to match.
  11907. switch (NameR[11]) {
  11908. default: break;
  11909. case 'c': // 6 strings to match.
  11910. if (NameR[12] != 'm')
  11911. break;
  11912. switch (NameR[13]) {
  11913. default: break;
  11914. case 'a': // 2 strings to match.
  11915. if (memcmp(NameR.data()+14, "c.s0.sat.", 9))
  11916. break;
  11917. switch (NameR[23]) {
  11918. default: break;
  11919. case 'i': // 1 string to match.
  11920. return Intrinsic::hexagon_M2_vcmac_s0_sat_i; // "exagon.M2.vcmac.s0.sat.i"
  11921. case 'r': // 1 string to match.
  11922. return Intrinsic::hexagon_M2_vcmac_s0_sat_r; // "exagon.M2.vcmac.s0.sat.r"
  11923. }
  11924. break;
  11925. case 'p': // 4 strings to match.
  11926. if (memcmp(NameR.data()+14, "y.s", 3))
  11927. break;
  11928. switch (NameR[17]) {
  11929. default: break;
  11930. case '0': // 2 strings to match.
  11931. if (memcmp(NameR.data()+18, ".sat.", 5))
  11932. break;
  11933. switch (NameR[23]) {
  11934. default: break;
  11935. case 'i': // 1 string to match.
  11936. return Intrinsic::hexagon_M2_vcmpy_s0_sat_i; // "exagon.M2.vcmpy.s0.sat.i"
  11937. case 'r': // 1 string to match.
  11938. return Intrinsic::hexagon_M2_vcmpy_s0_sat_r; // "exagon.M2.vcmpy.s0.sat.r"
  11939. }
  11940. break;
  11941. case '1': // 2 strings to match.
  11942. if (memcmp(NameR.data()+18, ".sat.", 5))
  11943. break;
  11944. switch (NameR[23]) {
  11945. default: break;
  11946. case 'i': // 1 string to match.
  11947. return Intrinsic::hexagon_M2_vcmpy_s1_sat_i; // "exagon.M2.vcmpy.s1.sat.i"
  11948. case 'r': // 1 string to match.
  11949. return Intrinsic::hexagon_M2_vcmpy_s1_sat_r; // "exagon.M2.vcmpy.s1.sat.r"
  11950. }
  11951. break;
  11952. }
  11953. break;
  11954. }
  11955. break;
  11956. case 'r': // 1 string to match.
  11957. if (memcmp(NameR.data()+12, "cmpys.acc.s1", 12))
  11958. break;
  11959. return Intrinsic::hexagon_M2_vrcmpys_acc_s1; // "exagon.M2.vrcmpys.acc.s1"
  11960. }
  11961. break;
  11962. }
  11963. break;
  11964. case '4': // 4 strings to match.
  11965. if (memcmp(NameR.data()+9, ".vrmpy", 6))
  11966. break;
  11967. switch (NameR[15]) {
  11968. default: break;
  11969. case 'e': // 2 strings to match.
  11970. if (memcmp(NameR.data()+16, "h.acc.s", 7))
  11971. break;
  11972. switch (NameR[23]) {
  11973. default: break;
  11974. case '0': // 1 string to match.
  11975. return Intrinsic::hexagon_M4_vrmpyeh_acc_s0; // "exagon.M4.vrmpyeh.acc.s0"
  11976. case '1': // 1 string to match.
  11977. return Intrinsic::hexagon_M4_vrmpyeh_acc_s1; // "exagon.M4.vrmpyeh.acc.s1"
  11978. }
  11979. break;
  11980. case 'o': // 2 strings to match.
  11981. if (memcmp(NameR.data()+16, "h.acc.s", 7))
  11982. break;
  11983. switch (NameR[23]) {
  11984. default: break;
  11985. case '0': // 1 string to match.
  11986. return Intrinsic::hexagon_M4_vrmpyoh_acc_s0; // "exagon.M4.vrmpyoh.acc.s0"
  11987. case '1': // 1 string to match.
  11988. return Intrinsic::hexagon_M4_vrmpyoh_acc_s1; // "exagon.M4.vrmpyoh.acc.s1"
  11989. }
  11990. break;
  11991. }
  11992. break;
  11993. }
  11994. break;
  11995. case 'S': // 4 strings to match.
  11996. if (memcmp(NameR.data()+8, "2.", 2))
  11997. break;
  11998. switch (NameR[10]) {
  11999. default: break;
  12000. case 'a': // 2 strings to match.
  12001. if (memcmp(NameR.data()+11, "sr.", 3))
  12002. break;
  12003. switch (NameR[14]) {
  12004. default: break;
  12005. case 'i': // 1 string to match.
  12006. if (memcmp(NameR.data()+15, ".svw.trun", 9))
  12007. break;
  12008. return Intrinsic::hexagon_S2_asr_i_svw_trun; // "exagon.S2.asr.i.svw.trun"
  12009. case 'r': // 1 string to match.
  12010. if (memcmp(NameR.data()+15, ".svw.trun", 9))
  12011. break;
  12012. return Intrinsic::hexagon_S2_asr_r_svw_trun; // "exagon.S2.asr.r.svw.trun"
  12013. }
  12014. break;
  12015. case 'v': // 2 strings to match.
  12016. if (memcmp(NameR.data()+11, "sat", 3))
  12017. break;
  12018. switch (NameR[14]) {
  12019. default: break;
  12020. case 'h': // 1 string to match.
  12021. if (memcmp(NameR.data()+15, "ub.nopack", 9))
  12022. break;
  12023. return Intrinsic::hexagon_S2_vsathub_nopack; // "exagon.S2.vsathub.nopack"
  12024. case 'w': // 1 string to match.
  12025. if (memcmp(NameR.data()+15, "uh.nopack", 9))
  12026. break;
  12027. return Intrinsic::hexagon_S2_vsatwuh_nopack; // "exagon.S2.vsatwuh.nopack"
  12028. }
  12029. break;
  12030. }
  12031. break;
  12032. }
  12033. break;
  12034. case 25: // 33 strings to match.
  12035. if (memcmp(NameR.data()+0, "exagon.", 7))
  12036. break;
  12037. switch (NameR[7]) {
  12038. default: break;
  12039. case 'A': // 12 strings to match.
  12040. if (memcmp(NameR.data()+8, "2.", 2))
  12041. break;
  12042. switch (NameR[10]) {
  12043. default: break;
  12044. case 'a': // 6 strings to match.
  12045. if (memcmp(NameR.data()+11, "ddh.", 4))
  12046. break;
  12047. switch (NameR[15]) {
  12048. default: break;
  12049. case 'h': // 4 strings to match.
  12050. if (memcmp(NameR.data()+16, "16.sat.", 7))
  12051. break;
  12052. switch (NameR[23]) {
  12053. default: break;
  12054. case 'h': // 2 strings to match.
  12055. switch (NameR[24]) {
  12056. default: break;
  12057. case 'h': // 1 string to match.
  12058. return Intrinsic::hexagon_A2_addh_h16_sat_hh; // "exagon.A2.addh.h16.sat.hh"
  12059. case 'l': // 1 string to match.
  12060. return Intrinsic::hexagon_A2_addh_h16_sat_hl; // "exagon.A2.addh.h16.sat.hl"
  12061. }
  12062. break;
  12063. case 'l': // 2 strings to match.
  12064. switch (NameR[24]) {
  12065. default: break;
  12066. case 'h': // 1 string to match.
  12067. return Intrinsic::hexagon_A2_addh_h16_sat_lh; // "exagon.A2.addh.h16.sat.lh"
  12068. case 'l': // 1 string to match.
  12069. return Intrinsic::hexagon_A2_addh_h16_sat_ll; // "exagon.A2.addh.h16.sat.ll"
  12070. }
  12071. break;
  12072. }
  12073. break;
  12074. case 'l': // 2 strings to match.
  12075. if (memcmp(NameR.data()+16, "16.sat.", 7))
  12076. break;
  12077. switch (NameR[23]) {
  12078. default: break;
  12079. case 'h': // 1 string to match.
  12080. if (NameR[24] != 'l')
  12081. break;
  12082. return Intrinsic::hexagon_A2_addh_l16_sat_hl; // "exagon.A2.addh.l16.sat.hl"
  12083. case 'l': // 1 string to match.
  12084. if (NameR[24] != 'l')
  12085. break;
  12086. return Intrinsic::hexagon_A2_addh_l16_sat_ll; // "exagon.A2.addh.l16.sat.ll"
  12087. }
  12088. break;
  12089. }
  12090. break;
  12091. case 's': // 6 strings to match.
  12092. if (memcmp(NameR.data()+11, "ubh.", 4))
  12093. break;
  12094. switch (NameR[15]) {
  12095. default: break;
  12096. case 'h': // 4 strings to match.
  12097. if (memcmp(NameR.data()+16, "16.sat.", 7))
  12098. break;
  12099. switch (NameR[23]) {
  12100. default: break;
  12101. case 'h': // 2 strings to match.
  12102. switch (NameR[24]) {
  12103. default: break;
  12104. case 'h': // 1 string to match.
  12105. return Intrinsic::hexagon_A2_subh_h16_sat_hh; // "exagon.A2.subh.h16.sat.hh"
  12106. case 'l': // 1 string to match.
  12107. return Intrinsic::hexagon_A2_subh_h16_sat_hl; // "exagon.A2.subh.h16.sat.hl"
  12108. }
  12109. break;
  12110. case 'l': // 2 strings to match.
  12111. switch (NameR[24]) {
  12112. default: break;
  12113. case 'h': // 1 string to match.
  12114. return Intrinsic::hexagon_A2_subh_h16_sat_lh; // "exagon.A2.subh.h16.sat.lh"
  12115. case 'l': // 1 string to match.
  12116. return Intrinsic::hexagon_A2_subh_h16_sat_ll; // "exagon.A2.subh.h16.sat.ll"
  12117. }
  12118. break;
  12119. }
  12120. break;
  12121. case 'l': // 2 strings to match.
  12122. if (memcmp(NameR.data()+16, "16.sat.", 7))
  12123. break;
  12124. switch (NameR[23]) {
  12125. default: break;
  12126. case 'h': // 1 string to match.
  12127. if (NameR[24] != 'l')
  12128. break;
  12129. return Intrinsic::hexagon_A2_subh_l16_sat_hl; // "exagon.A2.subh.l16.sat.hl"
  12130. case 'l': // 1 string to match.
  12131. if (NameR[24] != 'l')
  12132. break;
  12133. return Intrinsic::hexagon_A2_subh_l16_sat_ll; // "exagon.A2.subh.l16.sat.ll"
  12134. }
  12135. break;
  12136. }
  12137. break;
  12138. }
  12139. break;
  12140. case 'C': // 1 string to match.
  12141. if (memcmp(NameR.data()+8, "4.fastcorner9.not", 17))
  12142. break;
  12143. return Intrinsic::hexagon_C4_fastcorner9_not; // "exagon.C4.fastcorner9.not"
  12144. case 'F': // 4 strings to match.
  12145. if (memcmp(NameR.data()+8, "2.conv.", 7))
  12146. break;
  12147. switch (NameR[15]) {
  12148. default: break;
  12149. case 'd': // 2 strings to match.
  12150. if (memcmp(NameR.data()+16, "f2u", 3))
  12151. break;
  12152. switch (NameR[19]) {
  12153. default: break;
  12154. case 'd': // 1 string to match.
  12155. if (memcmp(NameR.data()+20, ".chop", 5))
  12156. break;
  12157. return Intrinsic::hexagon_F2_conv_df2ud_chop; // "exagon.F2.conv.df2ud.chop"
  12158. case 'w': // 1 string to match.
  12159. if (memcmp(NameR.data()+20, ".chop", 5))
  12160. break;
  12161. return Intrinsic::hexagon_F2_conv_df2uw_chop; // "exagon.F2.conv.df2uw.chop"
  12162. }
  12163. break;
  12164. case 's': // 2 strings to match.
  12165. if (memcmp(NameR.data()+16, "f2u", 3))
  12166. break;
  12167. switch (NameR[19]) {
  12168. default: break;
  12169. case 'd': // 1 string to match.
  12170. if (memcmp(NameR.data()+20, ".chop", 5))
  12171. break;
  12172. return Intrinsic::hexagon_F2_conv_sf2ud_chop; // "exagon.F2.conv.sf2ud.chop"
  12173. case 'w': // 1 string to match.
  12174. if (memcmp(NameR.data()+20, ".chop", 5))
  12175. break;
  12176. return Intrinsic::hexagon_F2_conv_sf2uw_chop; // "exagon.F2.conv.sf2uw.chop"
  12177. }
  12178. break;
  12179. }
  12180. break;
  12181. case 'M': // 16 strings to match.
  12182. if (memcmp(NameR.data()+8, "2.mpyud.", 8))
  12183. break;
  12184. switch (NameR[16]) {
  12185. default: break;
  12186. case 'a': // 8 strings to match.
  12187. if (memcmp(NameR.data()+17, "cc.", 3))
  12188. break;
  12189. switch (NameR[20]) {
  12190. default: break;
  12191. case 'h': // 4 strings to match.
  12192. switch (NameR[21]) {
  12193. default: break;
  12194. case 'h': // 2 strings to match.
  12195. if (memcmp(NameR.data()+22, ".s", 2))
  12196. break;
  12197. switch (NameR[24]) {
  12198. default: break;
  12199. case '0': // 1 string to match.
  12200. return Intrinsic::hexagon_M2_mpyud_acc_hh_s0; // "exagon.M2.mpyud.acc.hh.s0"
  12201. case '1': // 1 string to match.
  12202. return Intrinsic::hexagon_M2_mpyud_acc_hh_s1; // "exagon.M2.mpyud.acc.hh.s1"
  12203. }
  12204. break;
  12205. case 'l': // 2 strings to match.
  12206. if (memcmp(NameR.data()+22, ".s", 2))
  12207. break;
  12208. switch (NameR[24]) {
  12209. default: break;
  12210. case '0': // 1 string to match.
  12211. return Intrinsic::hexagon_M2_mpyud_acc_hl_s0; // "exagon.M2.mpyud.acc.hl.s0"
  12212. case '1': // 1 string to match.
  12213. return Intrinsic::hexagon_M2_mpyud_acc_hl_s1; // "exagon.M2.mpyud.acc.hl.s1"
  12214. }
  12215. break;
  12216. }
  12217. break;
  12218. case 'l': // 4 strings to match.
  12219. switch (NameR[21]) {
  12220. default: break;
  12221. case 'h': // 2 strings to match.
  12222. if (memcmp(NameR.data()+22, ".s", 2))
  12223. break;
  12224. switch (NameR[24]) {
  12225. default: break;
  12226. case '0': // 1 string to match.
  12227. return Intrinsic::hexagon_M2_mpyud_acc_lh_s0; // "exagon.M2.mpyud.acc.lh.s0"
  12228. case '1': // 1 string to match.
  12229. return Intrinsic::hexagon_M2_mpyud_acc_lh_s1; // "exagon.M2.mpyud.acc.lh.s1"
  12230. }
  12231. break;
  12232. case 'l': // 2 strings to match.
  12233. if (memcmp(NameR.data()+22, ".s", 2))
  12234. break;
  12235. switch (NameR[24]) {
  12236. default: break;
  12237. case '0': // 1 string to match.
  12238. return Intrinsic::hexagon_M2_mpyud_acc_ll_s0; // "exagon.M2.mpyud.acc.ll.s0"
  12239. case '1': // 1 string to match.
  12240. return Intrinsic::hexagon_M2_mpyud_acc_ll_s1; // "exagon.M2.mpyud.acc.ll.s1"
  12241. }
  12242. break;
  12243. }
  12244. break;
  12245. }
  12246. break;
  12247. case 'n': // 8 strings to match.
  12248. if (memcmp(NameR.data()+17, "ac.", 3))
  12249. break;
  12250. switch (NameR[20]) {
  12251. default: break;
  12252. case 'h': // 4 strings to match.
  12253. switch (NameR[21]) {
  12254. default: break;
  12255. case 'h': // 2 strings to match.
  12256. if (memcmp(NameR.data()+22, ".s", 2))
  12257. break;
  12258. switch (NameR[24]) {
  12259. default: break;
  12260. case '0': // 1 string to match.
  12261. return Intrinsic::hexagon_M2_mpyud_nac_hh_s0; // "exagon.M2.mpyud.nac.hh.s0"
  12262. case '1': // 1 string to match.
  12263. return Intrinsic::hexagon_M2_mpyud_nac_hh_s1; // "exagon.M2.mpyud.nac.hh.s1"
  12264. }
  12265. break;
  12266. case 'l': // 2 strings to match.
  12267. if (memcmp(NameR.data()+22, ".s", 2))
  12268. break;
  12269. switch (NameR[24]) {
  12270. default: break;
  12271. case '0': // 1 string to match.
  12272. return Intrinsic::hexagon_M2_mpyud_nac_hl_s0; // "exagon.M2.mpyud.nac.hl.s0"
  12273. case '1': // 1 string to match.
  12274. return Intrinsic::hexagon_M2_mpyud_nac_hl_s1; // "exagon.M2.mpyud.nac.hl.s1"
  12275. }
  12276. break;
  12277. }
  12278. break;
  12279. case 'l': // 4 strings to match.
  12280. switch (NameR[21]) {
  12281. default: break;
  12282. case 'h': // 2 strings to match.
  12283. if (memcmp(NameR.data()+22, ".s", 2))
  12284. break;
  12285. switch (NameR[24]) {
  12286. default: break;
  12287. case '0': // 1 string to match.
  12288. return Intrinsic::hexagon_M2_mpyud_nac_lh_s0; // "exagon.M2.mpyud.nac.lh.s0"
  12289. case '1': // 1 string to match.
  12290. return Intrinsic::hexagon_M2_mpyud_nac_lh_s1; // "exagon.M2.mpyud.nac.lh.s1"
  12291. }
  12292. break;
  12293. case 'l': // 2 strings to match.
  12294. if (memcmp(NameR.data()+22, ".s", 2))
  12295. break;
  12296. switch (NameR[24]) {
  12297. default: break;
  12298. case '0': // 1 string to match.
  12299. return Intrinsic::hexagon_M2_mpyud_nac_ll_s0; // "exagon.M2.mpyud.nac.ll.s0"
  12300. case '1': // 1 string to match.
  12301. return Intrinsic::hexagon_M2_mpyud_nac_ll_s1; // "exagon.M2.mpyud.nac.ll.s1"
  12302. }
  12303. break;
  12304. }
  12305. break;
  12306. }
  12307. break;
  12308. }
  12309. break;
  12310. }
  12311. break;
  12312. case 27: // 24 strings to match.
  12313. if (memcmp(NameR.data()+0, "exagon.M2.mpy.", 14))
  12314. break;
  12315. switch (NameR[14]) {
  12316. default: break;
  12317. case 'a': // 8 strings to match.
  12318. if (memcmp(NameR.data()+15, "cc.sat.", 7))
  12319. break;
  12320. switch (NameR[22]) {
  12321. default: break;
  12322. case 'h': // 4 strings to match.
  12323. switch (NameR[23]) {
  12324. default: break;
  12325. case 'h': // 2 strings to match.
  12326. if (memcmp(NameR.data()+24, ".s", 2))
  12327. break;
  12328. switch (NameR[26]) {
  12329. default: break;
  12330. case '0': // 1 string to match.
  12331. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0; // "exagon.M2.mpy.acc.sat.hh.s0"
  12332. case '1': // 1 string to match.
  12333. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1; // "exagon.M2.mpy.acc.sat.hh.s1"
  12334. }
  12335. break;
  12336. case 'l': // 2 strings to match.
  12337. if (memcmp(NameR.data()+24, ".s", 2))
  12338. break;
  12339. switch (NameR[26]) {
  12340. default: break;
  12341. case '0': // 1 string to match.
  12342. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0; // "exagon.M2.mpy.acc.sat.hl.s0"
  12343. case '1': // 1 string to match.
  12344. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1; // "exagon.M2.mpy.acc.sat.hl.s1"
  12345. }
  12346. break;
  12347. }
  12348. break;
  12349. case 'l': // 4 strings to match.
  12350. switch (NameR[23]) {
  12351. default: break;
  12352. case 'h': // 2 strings to match.
  12353. if (memcmp(NameR.data()+24, ".s", 2))
  12354. break;
  12355. switch (NameR[26]) {
  12356. default: break;
  12357. case '0': // 1 string to match.
  12358. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0; // "exagon.M2.mpy.acc.sat.lh.s0"
  12359. case '1': // 1 string to match.
  12360. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1; // "exagon.M2.mpy.acc.sat.lh.s1"
  12361. }
  12362. break;
  12363. case 'l': // 2 strings to match.
  12364. if (memcmp(NameR.data()+24, ".s", 2))
  12365. break;
  12366. switch (NameR[26]) {
  12367. default: break;
  12368. case '0': // 1 string to match.
  12369. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0; // "exagon.M2.mpy.acc.sat.ll.s0"
  12370. case '1': // 1 string to match.
  12371. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1; // "exagon.M2.mpy.acc.sat.ll.s1"
  12372. }
  12373. break;
  12374. }
  12375. break;
  12376. }
  12377. break;
  12378. case 'n': // 8 strings to match.
  12379. if (memcmp(NameR.data()+15, "ac.sat.", 7))
  12380. break;
  12381. switch (NameR[22]) {
  12382. default: break;
  12383. case 'h': // 4 strings to match.
  12384. switch (NameR[23]) {
  12385. default: break;
  12386. case 'h': // 2 strings to match.
  12387. if (memcmp(NameR.data()+24, ".s", 2))
  12388. break;
  12389. switch (NameR[26]) {
  12390. default: break;
  12391. case '0': // 1 string to match.
  12392. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0; // "exagon.M2.mpy.nac.sat.hh.s0"
  12393. case '1': // 1 string to match.
  12394. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1; // "exagon.M2.mpy.nac.sat.hh.s1"
  12395. }
  12396. break;
  12397. case 'l': // 2 strings to match.
  12398. if (memcmp(NameR.data()+24, ".s", 2))
  12399. break;
  12400. switch (NameR[26]) {
  12401. default: break;
  12402. case '0': // 1 string to match.
  12403. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0; // "exagon.M2.mpy.nac.sat.hl.s0"
  12404. case '1': // 1 string to match.
  12405. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1; // "exagon.M2.mpy.nac.sat.hl.s1"
  12406. }
  12407. break;
  12408. }
  12409. break;
  12410. case 'l': // 4 strings to match.
  12411. switch (NameR[23]) {
  12412. default: break;
  12413. case 'h': // 2 strings to match.
  12414. if (memcmp(NameR.data()+24, ".s", 2))
  12415. break;
  12416. switch (NameR[26]) {
  12417. default: break;
  12418. case '0': // 1 string to match.
  12419. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0; // "exagon.M2.mpy.nac.sat.lh.s0"
  12420. case '1': // 1 string to match.
  12421. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1; // "exagon.M2.mpy.nac.sat.lh.s1"
  12422. }
  12423. break;
  12424. case 'l': // 2 strings to match.
  12425. if (memcmp(NameR.data()+24, ".s", 2))
  12426. break;
  12427. switch (NameR[26]) {
  12428. default: break;
  12429. case '0': // 1 string to match.
  12430. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0; // "exagon.M2.mpy.nac.sat.ll.s0"
  12431. case '1': // 1 string to match.
  12432. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1; // "exagon.M2.mpy.nac.sat.ll.s1"
  12433. }
  12434. break;
  12435. }
  12436. break;
  12437. }
  12438. break;
  12439. case 's': // 8 strings to match.
  12440. if (memcmp(NameR.data()+15, "at.rnd.", 7))
  12441. break;
  12442. switch (NameR[22]) {
  12443. default: break;
  12444. case 'h': // 4 strings to match.
  12445. switch (NameR[23]) {
  12446. default: break;
  12447. case 'h': // 2 strings to match.
  12448. if (memcmp(NameR.data()+24, ".s", 2))
  12449. break;
  12450. switch (NameR[26]) {
  12451. default: break;
  12452. case '0': // 1 string to match.
  12453. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0; // "exagon.M2.mpy.sat.rnd.hh.s0"
  12454. case '1': // 1 string to match.
  12455. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1; // "exagon.M2.mpy.sat.rnd.hh.s1"
  12456. }
  12457. break;
  12458. case 'l': // 2 strings to match.
  12459. if (memcmp(NameR.data()+24, ".s", 2))
  12460. break;
  12461. switch (NameR[26]) {
  12462. default: break;
  12463. case '0': // 1 string to match.
  12464. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0; // "exagon.M2.mpy.sat.rnd.hl.s0"
  12465. case '1': // 1 string to match.
  12466. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1; // "exagon.M2.mpy.sat.rnd.hl.s1"
  12467. }
  12468. break;
  12469. }
  12470. break;
  12471. case 'l': // 4 strings to match.
  12472. switch (NameR[23]) {
  12473. default: break;
  12474. case 'h': // 2 strings to match.
  12475. if (memcmp(NameR.data()+24, ".s", 2))
  12476. break;
  12477. switch (NameR[26]) {
  12478. default: break;
  12479. case '0': // 1 string to match.
  12480. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0; // "exagon.M2.mpy.sat.rnd.lh.s0"
  12481. case '1': // 1 string to match.
  12482. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1; // "exagon.M2.mpy.sat.rnd.lh.s1"
  12483. }
  12484. break;
  12485. case 'l': // 2 strings to match.
  12486. if (memcmp(NameR.data()+24, ".s", 2))
  12487. break;
  12488. switch (NameR[26]) {
  12489. default: break;
  12490. case '0': // 1 string to match.
  12491. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0; // "exagon.M2.mpy.sat.rnd.ll.s0"
  12492. case '1': // 1 string to match.
  12493. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1; // "exagon.M2.mpy.sat.rnd.ll.s1"
  12494. }
  12495. break;
  12496. }
  12497. break;
  12498. }
  12499. break;
  12500. }
  12501. break;
  12502. case 29: // 1 string to match.
  12503. if (memcmp(NameR.data()+0, "exagon.S5.vasrhrnd.goodsyntax", 29))
  12504. break;
  12505. return Intrinsic::hexagon_S5_vasrhrnd_goodsyntax; // "exagon.S5.vasrhrnd.goodsyntax"
  12506. case 30: // 4 strings to match.
  12507. if (memcmp(NameR.data()+0, "exagon.S2.tableidx", 18))
  12508. break;
  12509. switch (NameR[18]) {
  12510. default: break;
  12511. case 'b': // 1 string to match.
  12512. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12513. break;
  12514. return Intrinsic::hexagon_S2_tableidxb_goodsyntax; // "exagon.S2.tableidxb.goodsyntax"
  12515. case 'd': // 1 string to match.
  12516. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12517. break;
  12518. return Intrinsic::hexagon_S2_tableidxd_goodsyntax; // "exagon.S2.tableidxd.goodsyntax"
  12519. case 'h': // 1 string to match.
  12520. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12521. break;
  12522. return Intrinsic::hexagon_S2_tableidxh_goodsyntax; // "exagon.S2.tableidxh.goodsyntax"
  12523. case 'w': // 1 string to match.
  12524. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12525. break;
  12526. return Intrinsic::hexagon_S2_tableidxw_goodsyntax; // "exagon.S2.tableidxw.goodsyntax"
  12527. }
  12528. break;
  12529. case 32: // 2 strings to match.
  12530. if (memcmp(NameR.data()+0, "exagon.S2.asr.i.", 16))
  12531. break;
  12532. switch (NameR[16]) {
  12533. default: break;
  12534. case 'p': // 1 string to match.
  12535. if (memcmp(NameR.data()+17, ".rnd.goodsyntax", 15))
  12536. break;
  12537. return Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax; // "exagon.S2.asr.i.p.rnd.goodsyntax"
  12538. case 'r': // 1 string to match.
  12539. if (memcmp(NameR.data()+17, ".rnd.goodsyntax", 15))
  12540. break;
  12541. return Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax; // "exagon.S2.asr.i.r.rnd.goodsyntax"
  12542. }
  12543. break;
  12544. case 35: // 1 string to match.
  12545. if (memcmp(NameR.data()+0, "exagon.S5.asrhub.rnd.sat.goodsyntax", 35))
  12546. break;
  12547. return Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax; // "exagon.S5.asrhub.rnd.sat.goodsyntax"
  12548. }
  12549. break; // end of 'h' case.
  12550. case 'i':
  12551. switch (NameR.size()) {
  12552. default: break;
  12553. case 12: // 1 string to match.
  12554. if (memcmp(NameR.data()+0, "nvariant.end", 12))
  12555. break;
  12556. return Intrinsic::invariant_end; // "nvariant.end"
  12557. case 14: // 2 strings to match.
  12558. if (NameR[0] != 'n')
  12559. break;
  12560. switch (NameR[1]) {
  12561. default: break;
  12562. case 'i': // 1 string to match.
  12563. if (memcmp(NameR.data()+2, "t.trampoline", 12))
  12564. break;
  12565. return Intrinsic::init_trampoline; // "nit.trampoline"
  12566. case 'v': // 1 string to match.
  12567. if (memcmp(NameR.data()+2, "ariant.start", 12))
  12568. break;
  12569. return Intrinsic::invariant_start; // "nvariant.start"
  12570. }
  12571. break;
  12572. }
  12573. break; // end of 'i' case.
  12574. case 'l':
  12575. if (NameR.startswith("og.")) return Intrinsic::log;
  12576. if (NameR.startswith("og10.")) return Intrinsic::log10;
  12577. if (NameR.startswith("og2.")) return Intrinsic::log2;
  12578. switch (NameR.size()) {
  12579. default: break;
  12580. case 6: // 1 string to match.
  12581. if (memcmp(NameR.data()+0, "ongjmp", 6))
  12582. break;
  12583. return Intrinsic::longjmp; // "ongjmp"
  12584. case 11: // 1 string to match.
  12585. if (memcmp(NameR.data()+0, "ifetime.end", 11))
  12586. break;
  12587. return Intrinsic::lifetime_end; // "ifetime.end"
  12588. case 13: // 1 string to match.
  12589. if (memcmp(NameR.data()+0, "ifetime.start", 13))
  12590. break;
  12591. return Intrinsic::lifetime_start; // "ifetime.start"
  12592. }
  12593. break; // end of 'l' case.
  12594. case 'm':
  12595. if (NameR.startswith("emcpy.")) return Intrinsic::memcpy;
  12596. if (NameR.startswith("emmove.")) return Intrinsic::memmove;
  12597. if (NameR.startswith("emset.")) return Intrinsic::memset;
  12598. switch (NameR.size()) {
  12599. default: break;
  12600. case 7: // 2 strings to match.
  12601. if (memcmp(NameR.data()+0, "ips.l", 5))
  12602. break;
  12603. switch (NameR[5]) {
  12604. default: break;
  12605. case 'h': // 1 string to match.
  12606. if (NameR[6] != 'x')
  12607. break;
  12608. return Intrinsic::mips_lhx; // "ips.lhx"
  12609. case 'w': // 1 string to match.
  12610. if (NameR[6] != 'x')
  12611. break;
  12612. return Intrinsic::mips_lwx; // "ips.lwx"
  12613. }
  12614. break;
  12615. case 8: // 6 strings to match.
  12616. if (memcmp(NameR.data()+0, "ips.", 4))
  12617. break;
  12618. switch (NameR[4]) {
  12619. default: break;
  12620. case 'e': // 1 string to match.
  12621. if (memcmp(NameR.data()+5, "xtp", 3))
  12622. break;
  12623. return Intrinsic::mips_extp; // "ips.extp"
  12624. case 'i': // 1 string to match.
  12625. if (memcmp(NameR.data()+5, "nsv", 3))
  12626. break;
  12627. return Intrinsic::mips_insv; // "ips.insv"
  12628. case 'l': // 1 string to match.
  12629. if (memcmp(NameR.data()+5, "bux", 3))
  12630. break;
  12631. return Intrinsic::mips_lbux; // "ips.lbux"
  12632. case 'm': // 3 strings to match.
  12633. switch (NameR[5]) {
  12634. default: break;
  12635. case 'a': // 1 string to match.
  12636. if (memcmp(NameR.data()+6, "dd", 2))
  12637. break;
  12638. return Intrinsic::mips_madd; // "ips.madd"
  12639. case 's': // 1 string to match.
  12640. if (memcmp(NameR.data()+6, "ub", 2))
  12641. break;
  12642. return Intrinsic::mips_msub; // "ips.msub"
  12643. case 'u': // 1 string to match.
  12644. if (memcmp(NameR.data()+6, "lt", 2))
  12645. break;
  12646. return Intrinsic::mips_mult; // "ips.mult"
  12647. }
  12648. break;
  12649. }
  12650. break;
  12651. case 9: // 8 strings to match.
  12652. if (memcmp(NameR.data()+0, "ips.", 4))
  12653. break;
  12654. switch (NameR[4]) {
  12655. default: break;
  12656. case 'a': // 2 strings to match.
  12657. if (memcmp(NameR.data()+5, "dd", 2))
  12658. break;
  12659. switch (NameR[7]) {
  12660. default: break;
  12661. case 's': // 1 string to match.
  12662. if (NameR[8] != 'c')
  12663. break;
  12664. return Intrinsic::mips_addsc; // "ips.addsc"
  12665. case 'w': // 1 string to match.
  12666. if (NameR[8] != 'c')
  12667. break;
  12668. return Intrinsic::mips_addwc; // "ips.addwc"
  12669. }
  12670. break;
  12671. case 'm': // 3 strings to match.
  12672. switch (NameR[5]) {
  12673. default: break;
  12674. case 'a': // 1 string to match.
  12675. if (memcmp(NameR.data()+6, "ddu", 3))
  12676. break;
  12677. return Intrinsic::mips_maddu; // "ips.maddu"
  12678. case 's': // 1 string to match.
  12679. if (memcmp(NameR.data()+6, "ubu", 3))
  12680. break;
  12681. return Intrinsic::mips_msubu; // "ips.msubu"
  12682. case 'u': // 1 string to match.
  12683. if (memcmp(NameR.data()+6, "ltu", 3))
  12684. break;
  12685. return Intrinsic::mips_multu; // "ips.multu"
  12686. }
  12687. break;
  12688. case 'r': // 1 string to match.
  12689. if (memcmp(NameR.data()+5, "ddsp", 4))
  12690. break;
  12691. return Intrinsic::mips_rddsp; // "ips.rddsp"
  12692. case 's': // 1 string to match.
  12693. if (memcmp(NameR.data()+5, "hilo", 4))
  12694. break;
  12695. return Intrinsic::mips_shilo; // "ips.shilo"
  12696. case 'w': // 1 string to match.
  12697. if (memcmp(NameR.data()+5, "rdsp", 4))
  12698. break;
  12699. return Intrinsic::mips_wrdsp; // "ips.wrdsp"
  12700. }
  12701. break;
  12702. case 10: // 8 strings to match.
  12703. if (memcmp(NameR.data()+0, "ips.", 4))
  12704. break;
  12705. switch (NameR[4]) {
  12706. default: break;
  12707. case 'a': // 1 string to match.
  12708. if (memcmp(NameR.data()+5, "ppend", 5))
  12709. break;
  12710. return Intrinsic::mips_append; // "ips.append"
  12711. case 'b': // 2 strings to match.
  12712. switch (NameR[5]) {
  12713. default: break;
  12714. case 'a': // 1 string to match.
  12715. if (memcmp(NameR.data()+6, "lign", 4))
  12716. break;
  12717. return Intrinsic::mips_balign; // "ips.balign"
  12718. case 'i': // 1 string to match.
  12719. if (memcmp(NameR.data()+6, "trev", 4))
  12720. break;
  12721. return Intrinsic::mips_bitrev; // "ips.bitrev"
  12722. }
  12723. break;
  12724. case 'e': // 2 strings to match.
  12725. if (memcmp(NameR.data()+5, "xt", 2))
  12726. break;
  12727. switch (NameR[7]) {
  12728. default: break;
  12729. case 'p': // 1 string to match.
  12730. if (memcmp(NameR.data()+8, "dp", 2))
  12731. break;
  12732. return Intrinsic::mips_extpdp; // "ips.extpdp"
  12733. case 'r': // 1 string to match.
  12734. if (memcmp(NameR.data()+8, ".w", 2))
  12735. break;
  12736. return Intrinsic::mips_extr_w; // "ips.extr.w"
  12737. }
  12738. break;
  12739. case 'm': // 3 strings to match.
  12740. switch (NameR[5]) {
  12741. default: break;
  12742. case 'o': // 1 string to match.
  12743. if (memcmp(NameR.data()+6, "dsub", 4))
  12744. break;
  12745. return Intrinsic::mips_modsub; // "ips.modsub"
  12746. case 't': // 1 string to match.
  12747. if (memcmp(NameR.data()+6, "hlip", 4))
  12748. break;
  12749. return Intrinsic::mips_mthlip; // "ips.mthlip"
  12750. case 'u': // 1 string to match.
  12751. if (memcmp(NameR.data()+6, "l.ph", 4))
  12752. break;
  12753. return Intrinsic::mips_mul_ph; // "ips.mul.ph"
  12754. }
  12755. break;
  12756. }
  12757. break;
  12758. case 11: // 19 strings to match.
  12759. if (memcmp(NameR.data()+0, "ips.", 4))
  12760. break;
  12761. switch (NameR[4]) {
  12762. default: break;
  12763. case 'a': // 4 strings to match.
  12764. if (memcmp(NameR.data()+5, "dd", 2))
  12765. break;
  12766. switch (NameR[7]) {
  12767. default: break;
  12768. case 'q': // 2 strings to match.
  12769. switch (NameR[8]) {
  12770. default: break;
  12771. case '.': // 1 string to match.
  12772. if (memcmp(NameR.data()+9, "ph", 2))
  12773. break;
  12774. return Intrinsic::mips_addq_ph; // "ips.addq.ph"
  12775. case 'h': // 1 string to match.
  12776. if (memcmp(NameR.data()+9, ".w", 2))
  12777. break;
  12778. return Intrinsic::mips_addqh_w; // "ips.addqh.w"
  12779. }
  12780. break;
  12781. case 'u': // 2 strings to match.
  12782. if (NameR[8] != '.')
  12783. break;
  12784. switch (NameR[9]) {
  12785. default: break;
  12786. case 'p': // 1 string to match.
  12787. if (NameR[10] != 'h')
  12788. break;
  12789. return Intrinsic::mips_addu_ph; // "ips.addu.ph"
  12790. case 'q': // 1 string to match.
  12791. if (NameR[10] != 'b')
  12792. break;
  12793. return Intrinsic::mips_addu_qb; // "ips.addu.qb"
  12794. }
  12795. break;
  12796. }
  12797. break;
  12798. case 'p': // 3 strings to match.
  12799. switch (NameR[5]) {
  12800. default: break;
  12801. case 'i': // 2 strings to match.
  12802. if (memcmp(NameR.data()+6, "ck.", 3))
  12803. break;
  12804. switch (NameR[9]) {
  12805. default: break;
  12806. case 'p': // 1 string to match.
  12807. if (NameR[10] != 'h')
  12808. break;
  12809. return Intrinsic::mips_pick_ph; // "ips.pick.ph"
  12810. case 'q': // 1 string to match.
  12811. if (NameR[10] != 'b')
  12812. break;
  12813. return Intrinsic::mips_pick_qb; // "ips.pick.qb"
  12814. }
  12815. break;
  12816. case 'r': // 1 string to match.
  12817. if (memcmp(NameR.data()+6, "epend", 5))
  12818. break;
  12819. return Intrinsic::mips_prepend; // "ips.prepend"
  12820. }
  12821. break;
  12822. case 'r': // 2 strings to match.
  12823. if (memcmp(NameR.data()+5, "epl.", 4))
  12824. break;
  12825. switch (NameR[9]) {
  12826. default: break;
  12827. case 'p': // 1 string to match.
  12828. if (NameR[10] != 'h')
  12829. break;
  12830. return Intrinsic::mips_repl_ph; // "ips.repl.ph"
  12831. case 'q': // 1 string to match.
  12832. if (NameR[10] != 'b')
  12833. break;
  12834. return Intrinsic::mips_repl_qb; // "ips.repl.qb"
  12835. }
  12836. break;
  12837. case 's': // 10 strings to match.
  12838. switch (NameR[5]) {
  12839. default: break;
  12840. case 'h': // 6 strings to match.
  12841. switch (NameR[6]) {
  12842. default: break;
  12843. case 'l': // 2 strings to match.
  12844. if (memcmp(NameR.data()+7, "l.", 2))
  12845. break;
  12846. switch (NameR[9]) {
  12847. default: break;
  12848. case 'p': // 1 string to match.
  12849. if (NameR[10] != 'h')
  12850. break;
  12851. return Intrinsic::mips_shll_ph; // "ips.shll.ph"
  12852. case 'q': // 1 string to match.
  12853. if (NameR[10] != 'b')
  12854. break;
  12855. return Intrinsic::mips_shll_qb; // "ips.shll.qb"
  12856. }
  12857. break;
  12858. case 'r': // 4 strings to match.
  12859. switch (NameR[7]) {
  12860. default: break;
  12861. case 'a': // 2 strings to match.
  12862. if (NameR[8] != '.')
  12863. break;
  12864. switch (NameR[9]) {
  12865. default: break;
  12866. case 'p': // 1 string to match.
  12867. if (NameR[10] != 'h')
  12868. break;
  12869. return Intrinsic::mips_shra_ph; // "ips.shra.ph"
  12870. case 'q': // 1 string to match.
  12871. if (NameR[10] != 'b')
  12872. break;
  12873. return Intrinsic::mips_shra_qb; // "ips.shra.qb"
  12874. }
  12875. break;
  12876. case 'l': // 2 strings to match.
  12877. if (NameR[8] != '.')
  12878. break;
  12879. switch (NameR[9]) {
  12880. default: break;
  12881. case 'p': // 1 string to match.
  12882. if (NameR[10] != 'h')
  12883. break;
  12884. return Intrinsic::mips_shrl_ph; // "ips.shrl.ph"
  12885. case 'q': // 1 string to match.
  12886. if (NameR[10] != 'b')
  12887. break;
  12888. return Intrinsic::mips_shrl_qb; // "ips.shrl.qb"
  12889. }
  12890. break;
  12891. }
  12892. break;
  12893. }
  12894. break;
  12895. case 'u': // 4 strings to match.
  12896. if (NameR[6] != 'b')
  12897. break;
  12898. switch (NameR[7]) {
  12899. default: break;
  12900. case 'q': // 2 strings to match.
  12901. switch (NameR[8]) {
  12902. default: break;
  12903. case '.': // 1 string to match.
  12904. if (memcmp(NameR.data()+9, "ph", 2))
  12905. break;
  12906. return Intrinsic::mips_subq_ph; // "ips.subq.ph"
  12907. case 'h': // 1 string to match.
  12908. if (memcmp(NameR.data()+9, ".w", 2))
  12909. break;
  12910. return Intrinsic::mips_subqh_w; // "ips.subqh.w"
  12911. }
  12912. break;
  12913. case 'u': // 2 strings to match.
  12914. if (NameR[8] != '.')
  12915. break;
  12916. switch (NameR[9]) {
  12917. default: break;
  12918. case 'p': // 1 string to match.
  12919. if (NameR[10] != 'h')
  12920. break;
  12921. return Intrinsic::mips_subu_ph; // "ips.subu.ph"
  12922. case 'q': // 1 string to match.
  12923. if (NameR[10] != 'b')
  12924. break;
  12925. return Intrinsic::mips_subu_qb; // "ips.subu.qb"
  12926. }
  12927. break;
  12928. }
  12929. break;
  12930. }
  12931. break;
  12932. }
  12933. break;
  12934. case 12: // 16 strings to match.
  12935. if (memcmp(NameR.data()+0, "ips.", 4))
  12936. break;
  12937. switch (NameR[4]) {
  12938. default: break;
  12939. case 'a': // 4 strings to match.
  12940. switch (NameR[5]) {
  12941. default: break;
  12942. case 'b': // 1 string to match.
  12943. if (memcmp(NameR.data()+6, "sq.s.w", 6))
  12944. break;
  12945. return Intrinsic::mips_absq_s_w; // "ips.absq.s.w"
  12946. case 'd': // 3 strings to match.
  12947. if (NameR[6] != 'd')
  12948. break;
  12949. switch (NameR[7]) {
  12950. default: break;
  12951. case 'q': // 2 strings to match.
  12952. switch (NameR[8]) {
  12953. default: break;
  12954. case '.': // 1 string to match.
  12955. if (memcmp(NameR.data()+9, "s.w", 3))
  12956. break;
  12957. return Intrinsic::mips_addq_s_w; // "ips.addq.s.w"
  12958. case 'h': // 1 string to match.
  12959. if (memcmp(NameR.data()+9, ".ph", 3))
  12960. break;
  12961. return Intrinsic::mips_addqh_ph; // "ips.addqh.ph"
  12962. }
  12963. break;
  12964. case 'u': // 1 string to match.
  12965. if (memcmp(NameR.data()+8, "h.qb", 4))
  12966. break;
  12967. return Intrinsic::mips_adduh_qb; // "ips.adduh.qb"
  12968. }
  12969. break;
  12970. }
  12971. break;
  12972. case 'b': // 1 string to match.
  12973. if (memcmp(NameR.data()+5, "posge32", 7))
  12974. break;
  12975. return Intrinsic::mips_bposge32; // "ips.bposge32"
  12976. case 'd': // 2 strings to match.
  12977. if (NameR[5] != 'p')
  12978. break;
  12979. switch (NameR[6]) {
  12980. default: break;
  12981. case 'a': // 1 string to match.
  12982. if (memcmp(NameR.data()+7, ".w.ph", 5))
  12983. break;
  12984. return Intrinsic::mips_dpa_w_ph; // "ips.dpa.w.ph"
  12985. case 's': // 1 string to match.
  12986. if (memcmp(NameR.data()+7, ".w.ph", 5))
  12987. break;
  12988. return Intrinsic::mips_dps_w_ph; // "ips.dps.w.ph"
  12989. }
  12990. break;
  12991. case 'e': // 2 strings to match.
  12992. if (memcmp(NameR.data()+5, "xtr.", 4))
  12993. break;
  12994. switch (NameR[9]) {
  12995. default: break;
  12996. case 'r': // 1 string to match.
  12997. if (memcmp(NameR.data()+10, ".w", 2))
  12998. break;
  12999. return Intrinsic::mips_extr_r_w; // "ips.extr.r.w"
  13000. case 's': // 1 string to match.
  13001. if (memcmp(NameR.data()+10, ".h", 2))
  13002. break;
  13003. return Intrinsic::mips_extr_s_h; // "ips.extr.s.h"
  13004. }
  13005. break;
  13006. case 'm': // 2 strings to match.
  13007. if (memcmp(NameR.data()+5, "ul", 2))
  13008. break;
  13009. switch (NameR[7]) {
  13010. default: break;
  13011. case '.': // 1 string to match.
  13012. if (memcmp(NameR.data()+8, "s.ph", 4))
  13013. break;
  13014. return Intrinsic::mips_mul_s_ph; // "ips.mul.s.ph"
  13015. case 'q': // 1 string to match.
  13016. if (memcmp(NameR.data()+8, ".s.w", 4))
  13017. break;
  13018. return Intrinsic::mips_mulq_s_w; // "ips.mulq.s.w"
  13019. }
  13020. break;
  13021. case 's': // 5 strings to match.
  13022. switch (NameR[5]) {
  13023. default: break;
  13024. case 'h': // 2 strings to match.
  13025. switch (NameR[6]) {
  13026. default: break;
  13027. case 'l': // 1 string to match.
  13028. if (memcmp(NameR.data()+7, "l.s.w", 5))
  13029. break;
  13030. return Intrinsic::mips_shll_s_w; // "ips.shll.s.w"
  13031. case 'r': // 1 string to match.
  13032. if (memcmp(NameR.data()+7, "a.r.w", 5))
  13033. break;
  13034. return Intrinsic::mips_shra_r_w; // "ips.shra.r.w"
  13035. }
  13036. break;
  13037. case 'u': // 3 strings to match.
  13038. if (NameR[6] != 'b')
  13039. break;
  13040. switch (NameR[7]) {
  13041. default: break;
  13042. case 'q': // 2 strings to match.
  13043. switch (NameR[8]) {
  13044. default: break;
  13045. case '.': // 1 string to match.
  13046. if (memcmp(NameR.data()+9, "s.w", 3))
  13047. break;
  13048. return Intrinsic::mips_subq_s_w; // "ips.subq.s.w"
  13049. case 'h': // 1 string to match.
  13050. if (memcmp(NameR.data()+9, ".ph", 3))
  13051. break;
  13052. return Intrinsic::mips_subqh_ph; // "ips.subqh.ph"
  13053. }
  13054. break;
  13055. case 'u': // 1 string to match.
  13056. if (memcmp(NameR.data()+8, "h.qb", 4))
  13057. break;
  13058. return Intrinsic::mips_subuh_qb; // "ips.subuh.qb"
  13059. }
  13060. break;
  13061. }
  13062. break;
  13063. }
  13064. break;
  13065. case 13: // 22 strings to match.
  13066. if (memcmp(NameR.data()+0, "ips.", 4))
  13067. break;
  13068. switch (NameR[4]) {
  13069. default: break;
  13070. case 'a': // 6 strings to match.
  13071. switch (NameR[5]) {
  13072. default: break;
  13073. case 'b': // 2 strings to match.
  13074. if (memcmp(NameR.data()+6, "sq.s.", 5))
  13075. break;
  13076. switch (NameR[11]) {
  13077. default: break;
  13078. case 'p': // 1 string to match.
  13079. if (NameR[12] != 'h')
  13080. break;
  13081. return Intrinsic::mips_absq_s_ph; // "ips.absq.s.ph"
  13082. case 'q': // 1 string to match.
  13083. if (NameR[12] != 'b')
  13084. break;
  13085. return Intrinsic::mips_absq_s_qb; // "ips.absq.s.qb"
  13086. }
  13087. break;
  13088. case 'd': // 4 strings to match.
  13089. if (NameR[6] != 'd')
  13090. break;
  13091. switch (NameR[7]) {
  13092. default: break;
  13093. case 'q': // 2 strings to match.
  13094. switch (NameR[8]) {
  13095. default: break;
  13096. case '.': // 1 string to match.
  13097. if (memcmp(NameR.data()+9, "s.ph", 4))
  13098. break;
  13099. return Intrinsic::mips_addq_s_ph; // "ips.addq.s.ph"
  13100. case 'h': // 1 string to match.
  13101. if (memcmp(NameR.data()+9, ".r.w", 4))
  13102. break;
  13103. return Intrinsic::mips_addqh_r_w; // "ips.addqh.r.w"
  13104. }
  13105. break;
  13106. case 'u': // 2 strings to match.
  13107. if (memcmp(NameR.data()+8, ".s.", 3))
  13108. break;
  13109. switch (NameR[11]) {
  13110. default: break;
  13111. case 'p': // 1 string to match.
  13112. if (NameR[12] != 'h')
  13113. break;
  13114. return Intrinsic::mips_addu_s_ph; // "ips.addu.s.ph"
  13115. case 'q': // 1 string to match.
  13116. if (NameR[12] != 'b')
  13117. break;
  13118. return Intrinsic::mips_addu_s_qb; // "ips.addu.s.qb"
  13119. }
  13120. break;
  13121. }
  13122. break;
  13123. }
  13124. break;
  13125. case 'c': // 3 strings to match.
  13126. if (memcmp(NameR.data()+5, "mp.", 3))
  13127. break;
  13128. switch (NameR[8]) {
  13129. default: break;
  13130. case 'e': // 1 string to match.
  13131. if (memcmp(NameR.data()+9, "q.ph", 4))
  13132. break;
  13133. return Intrinsic::mips_cmp_eq_ph; // "ips.cmp.eq.ph"
  13134. case 'l': // 2 strings to match.
  13135. switch (NameR[9]) {
  13136. default: break;
  13137. case 'e': // 1 string to match.
  13138. if (memcmp(NameR.data()+10, ".ph", 3))
  13139. break;
  13140. return Intrinsic::mips_cmp_le_ph; // "ips.cmp.le.ph"
  13141. case 't': // 1 string to match.
  13142. if (memcmp(NameR.data()+10, ".ph", 3))
  13143. break;
  13144. return Intrinsic::mips_cmp_lt_ph; // "ips.cmp.lt.ph"
  13145. }
  13146. break;
  13147. }
  13148. break;
  13149. case 'd': // 2 strings to match.
  13150. if (NameR[5] != 'p')
  13151. break;
  13152. switch (NameR[6]) {
  13153. default: break;
  13154. case 'a': // 1 string to match.
  13155. if (memcmp(NameR.data()+7, "x.w.ph", 6))
  13156. break;
  13157. return Intrinsic::mips_dpax_w_ph; // "ips.dpax.w.ph"
  13158. case 's': // 1 string to match.
  13159. if (memcmp(NameR.data()+7, "x.w.ph", 6))
  13160. break;
  13161. return Intrinsic::mips_dpsx_w_ph; // "ips.dpsx.w.ph"
  13162. }
  13163. break;
  13164. case 'e': // 1 string to match.
  13165. if (memcmp(NameR.data()+5, "xtr.rs.w", 8))
  13166. break;
  13167. return Intrinsic::mips_extr_rs_w; // "ips.extr.rs.w"
  13168. case 'm': // 2 strings to match.
  13169. if (memcmp(NameR.data()+5, "ulq.", 4))
  13170. break;
  13171. switch (NameR[9]) {
  13172. default: break;
  13173. case 'r': // 1 string to match.
  13174. if (memcmp(NameR.data()+10, "s.w", 3))
  13175. break;
  13176. return Intrinsic::mips_mulq_rs_w; // "ips.mulq.rs.w"
  13177. case 's': // 1 string to match.
  13178. if (memcmp(NameR.data()+10, ".ph", 3))
  13179. break;
  13180. return Intrinsic::mips_mulq_s_ph; // "ips.mulq.s.ph"
  13181. }
  13182. break;
  13183. case 'p': // 1 string to match.
  13184. if (memcmp(NameR.data()+5, "ackrl.ph", 8))
  13185. break;
  13186. return Intrinsic::mips_packrl_ph; // "ips.packrl.ph"
  13187. case 's': // 7 strings to match.
  13188. switch (NameR[5]) {
  13189. default: break;
  13190. case 'h': // 3 strings to match.
  13191. switch (NameR[6]) {
  13192. default: break;
  13193. case 'l': // 1 string to match.
  13194. if (memcmp(NameR.data()+7, "l.s.ph", 6))
  13195. break;
  13196. return Intrinsic::mips_shll_s_ph; // "ips.shll.s.ph"
  13197. case 'r': // 2 strings to match.
  13198. if (memcmp(NameR.data()+7, "a.r.", 4))
  13199. break;
  13200. switch (NameR[11]) {
  13201. default: break;
  13202. case 'p': // 1 string to match.
  13203. if (NameR[12] != 'h')
  13204. break;
  13205. return Intrinsic::mips_shra_r_ph; // "ips.shra.r.ph"
  13206. case 'q': // 1 string to match.
  13207. if (NameR[12] != 'b')
  13208. break;
  13209. return Intrinsic::mips_shra_r_qb; // "ips.shra.r.qb"
  13210. }
  13211. break;
  13212. }
  13213. break;
  13214. case 'u': // 4 strings to match.
  13215. if (NameR[6] != 'b')
  13216. break;
  13217. switch (NameR[7]) {
  13218. default: break;
  13219. case 'q': // 2 strings to match.
  13220. switch (NameR[8]) {
  13221. default: break;
  13222. case '.': // 1 string to match.
  13223. if (memcmp(NameR.data()+9, "s.ph", 4))
  13224. break;
  13225. return Intrinsic::mips_subq_s_ph; // "ips.subq.s.ph"
  13226. case 'h': // 1 string to match.
  13227. if (memcmp(NameR.data()+9, ".r.w", 4))
  13228. break;
  13229. return Intrinsic::mips_subqh_r_w; // "ips.subqh.r.w"
  13230. }
  13231. break;
  13232. case 'u': // 2 strings to match.
  13233. if (memcmp(NameR.data()+8, ".s.", 3))
  13234. break;
  13235. switch (NameR[11]) {
  13236. default: break;
  13237. case 'p': // 1 string to match.
  13238. if (NameR[12] != 'h')
  13239. break;
  13240. return Intrinsic::mips_subu_s_ph; // "ips.subu.s.ph"
  13241. case 'q': // 1 string to match.
  13242. if (NameR[12] != 'b')
  13243. break;
  13244. return Intrinsic::mips_subu_s_qb; // "ips.subu.s.qb"
  13245. }
  13246. break;
  13247. }
  13248. break;
  13249. }
  13250. break;
  13251. }
  13252. break;
  13253. case 14: // 14 strings to match.
  13254. if (memcmp(NameR.data()+0, "ips.", 4))
  13255. break;
  13256. switch (NameR[4]) {
  13257. default: break;
  13258. case 'a': // 2 strings to match.
  13259. if (memcmp(NameR.data()+5, "dd", 2))
  13260. break;
  13261. switch (NameR[7]) {
  13262. default: break;
  13263. case 'q': // 1 string to match.
  13264. if (memcmp(NameR.data()+8, "h.r.ph", 6))
  13265. break;
  13266. return Intrinsic::mips_addqh_r_ph; // "ips.addqh.r.ph"
  13267. case 'u': // 1 string to match.
  13268. if (memcmp(NameR.data()+8, "h.r.qb", 6))
  13269. break;
  13270. return Intrinsic::mips_adduh_r_qb; // "ips.adduh.r.qb"
  13271. }
  13272. break;
  13273. case 'c': // 3 strings to match.
  13274. if (memcmp(NameR.data()+5, "mpu.", 4))
  13275. break;
  13276. switch (NameR[9]) {
  13277. default: break;
  13278. case 'e': // 1 string to match.
  13279. if (memcmp(NameR.data()+10, "q.qb", 4))
  13280. break;
  13281. return Intrinsic::mips_cmpu_eq_qb; // "ips.cmpu.eq.qb"
  13282. case 'l': // 2 strings to match.
  13283. switch (NameR[10]) {
  13284. default: break;
  13285. case 'e': // 1 string to match.
  13286. if (memcmp(NameR.data()+11, ".qb", 3))
  13287. break;
  13288. return Intrinsic::mips_cmpu_le_qb; // "ips.cmpu.le.qb"
  13289. case 't': // 1 string to match.
  13290. if (memcmp(NameR.data()+11, ".qb", 3))
  13291. break;
  13292. return Intrinsic::mips_cmpu_lt_qb; // "ips.cmpu.lt.qb"
  13293. }
  13294. break;
  13295. }
  13296. break;
  13297. case 'd': // 4 strings to match.
  13298. if (NameR[5] != 'p')
  13299. break;
  13300. switch (NameR[6]) {
  13301. default: break;
  13302. case 'a': // 2 strings to match.
  13303. if (memcmp(NameR.data()+7, "u.h.qb", 6))
  13304. break;
  13305. switch (NameR[13]) {
  13306. default: break;
  13307. case 'l': // 1 string to match.
  13308. return Intrinsic::mips_dpau_h_qbl; // "ips.dpau.h.qbl"
  13309. case 'r': // 1 string to match.
  13310. return Intrinsic::mips_dpau_h_qbr; // "ips.dpau.h.qbr"
  13311. }
  13312. break;
  13313. case 's': // 2 strings to match.
  13314. if (memcmp(NameR.data()+7, "u.h.qb", 6))
  13315. break;
  13316. switch (NameR[13]) {
  13317. default: break;
  13318. case 'l': // 1 string to match.
  13319. return Intrinsic::mips_dpsu_h_qbl; // "ips.dpsu.h.qbl"
  13320. case 'r': // 1 string to match.
  13321. return Intrinsic::mips_dpsu_h_qbr; // "ips.dpsu.h.qbr"
  13322. }
  13323. break;
  13324. }
  13325. break;
  13326. case 'm': // 2 strings to match.
  13327. if (memcmp(NameR.data()+5, "ul", 2))
  13328. break;
  13329. switch (NameR[7]) {
  13330. default: break;
  13331. case 'q': // 1 string to match.
  13332. if (memcmp(NameR.data()+8, ".rs.ph", 6))
  13333. break;
  13334. return Intrinsic::mips_mulq_rs_ph; // "ips.mulq.rs.ph"
  13335. case 's': // 1 string to match.
  13336. if (memcmp(NameR.data()+8, "a.w.ph", 6))
  13337. break;
  13338. return Intrinsic::mips_mulsa_w_ph; // "ips.mulsa.w.ph"
  13339. }
  13340. break;
  13341. case 'r': // 1 string to match.
  13342. if (memcmp(NameR.data()+5, "addu.w.qb", 9))
  13343. break;
  13344. return Intrinsic::mips_raddu_w_qb; // "ips.raddu.w.qb"
  13345. case 's': // 2 strings to match.
  13346. if (memcmp(NameR.data()+5, "ub", 2))
  13347. break;
  13348. switch (NameR[7]) {
  13349. default: break;
  13350. case 'q': // 1 string to match.
  13351. if (memcmp(NameR.data()+8, "h.r.ph", 6))
  13352. break;
  13353. return Intrinsic::mips_subqh_r_ph; // "ips.subqh.r.ph"
  13354. case 'u': // 1 string to match.
  13355. if (memcmp(NameR.data()+8, "h.r.qb", 6))
  13356. break;
  13357. return Intrinsic::mips_subuh_r_qb; // "ips.subuh.r.qb"
  13358. }
  13359. break;
  13360. }
  13361. break;
  13362. case 15: // 11 strings to match.
  13363. if (memcmp(NameR.data()+0, "ips.", 4))
  13364. break;
  13365. switch (NameR[4]) {
  13366. default: break;
  13367. case 'c': // 3 strings to match.
  13368. if (memcmp(NameR.data()+5, "mpgu.", 5))
  13369. break;
  13370. switch (NameR[10]) {
  13371. default: break;
  13372. case 'e': // 1 string to match.
  13373. if (memcmp(NameR.data()+11, "q.qb", 4))
  13374. break;
  13375. return Intrinsic::mips_cmpgu_eq_qb; // "ips.cmpgu.eq.qb"
  13376. case 'l': // 2 strings to match.
  13377. switch (NameR[11]) {
  13378. default: break;
  13379. case 'e': // 1 string to match.
  13380. if (memcmp(NameR.data()+12, ".qb", 3))
  13381. break;
  13382. return Intrinsic::mips_cmpgu_le_qb; // "ips.cmpgu.le.qb"
  13383. case 't': // 1 string to match.
  13384. if (memcmp(NameR.data()+12, ".qb", 3))
  13385. break;
  13386. return Intrinsic::mips_cmpgu_lt_qb; // "ips.cmpgu.lt.qb"
  13387. }
  13388. break;
  13389. }
  13390. break;
  13391. case 'd': // 4 strings to match.
  13392. if (NameR[5] != 'p')
  13393. break;
  13394. switch (NameR[6]) {
  13395. default: break;
  13396. case 'a': // 2 strings to match.
  13397. if (memcmp(NameR.data()+7, "q.s", 3))
  13398. break;
  13399. switch (NameR[10]) {
  13400. default: break;
  13401. case '.': // 1 string to match.
  13402. if (memcmp(NameR.data()+11, "w.ph", 4))
  13403. break;
  13404. return Intrinsic::mips_dpaq_s_w_ph; // "ips.dpaq.s.w.ph"
  13405. case 'a': // 1 string to match.
  13406. if (memcmp(NameR.data()+11, ".l.w", 4))
  13407. break;
  13408. return Intrinsic::mips_dpaq_sa_l_w; // "ips.dpaq.sa.l.w"
  13409. }
  13410. break;
  13411. case 's': // 2 strings to match.
  13412. if (memcmp(NameR.data()+7, "q.s", 3))
  13413. break;
  13414. switch (NameR[10]) {
  13415. default: break;
  13416. case '.': // 1 string to match.
  13417. if (memcmp(NameR.data()+11, "w.ph", 4))
  13418. break;
  13419. return Intrinsic::mips_dpsq_s_w_ph; // "ips.dpsq.s.w.ph"
  13420. case 'a': // 1 string to match.
  13421. if (memcmp(NameR.data()+11, ".l.w", 4))
  13422. break;
  13423. return Intrinsic::mips_dpsq_sa_l_w; // "ips.dpsq.sa.l.w"
  13424. }
  13425. break;
  13426. }
  13427. break;
  13428. case 'm': // 2 strings to match.
  13429. if (memcmp(NameR.data()+5, "aq.s.w.ph", 9))
  13430. break;
  13431. switch (NameR[14]) {
  13432. default: break;
  13433. case 'l': // 1 string to match.
  13434. return Intrinsic::mips_maq_s_w_phl; // "ips.maq.s.w.phl"
  13435. case 'r': // 1 string to match.
  13436. return Intrinsic::mips_maq_s_w_phr; // "ips.maq.s.w.phr"
  13437. }
  13438. break;
  13439. case 'p': // 2 strings to match.
  13440. if (memcmp(NameR.data()+5, "recr", 4))
  13441. break;
  13442. switch (NameR[9]) {
  13443. default: break;
  13444. case '.': // 1 string to match.
  13445. if (memcmp(NameR.data()+10, "qb.ph", 5))
  13446. break;
  13447. return Intrinsic::mips_precr_qb_ph; // "ips.precr.qb.ph"
  13448. case 'q': // 1 string to match.
  13449. if (memcmp(NameR.data()+10, ".ph.w", 5))
  13450. break;
  13451. return Intrinsic::mips_precrq_ph_w; // "ips.precrq.ph.w"
  13452. }
  13453. break;
  13454. }
  13455. break;
  13456. case 16: // 10 strings to match.
  13457. if (memcmp(NameR.data()+0, "ips.", 4))
  13458. break;
  13459. switch (NameR[4]) {
  13460. default: break;
  13461. case 'c': // 3 strings to match.
  13462. if (memcmp(NameR.data()+5, "mpgdu.", 6))
  13463. break;
  13464. switch (NameR[11]) {
  13465. default: break;
  13466. case 'e': // 1 string to match.
  13467. if (memcmp(NameR.data()+12, "q.qb", 4))
  13468. break;
  13469. return Intrinsic::mips_cmpgdu_eq_qb; // "ips.cmpgdu.eq.qb"
  13470. case 'l': // 2 strings to match.
  13471. switch (NameR[12]) {
  13472. default: break;
  13473. case 'e': // 1 string to match.
  13474. if (memcmp(NameR.data()+13, ".qb", 3))
  13475. break;
  13476. return Intrinsic::mips_cmpgdu_le_qb; // "ips.cmpgdu.le.qb"
  13477. case 't': // 1 string to match.
  13478. if (memcmp(NameR.data()+13, ".qb", 3))
  13479. break;
  13480. return Intrinsic::mips_cmpgdu_lt_qb; // "ips.cmpgdu.lt.qb"
  13481. }
  13482. break;
  13483. }
  13484. break;
  13485. case 'd': // 2 strings to match.
  13486. if (NameR[5] != 'p')
  13487. break;
  13488. switch (NameR[6]) {
  13489. default: break;
  13490. case 'a': // 1 string to match.
  13491. if (memcmp(NameR.data()+7, "qx.s.w.ph", 9))
  13492. break;
  13493. return Intrinsic::mips_dpaqx_s_w_ph; // "ips.dpaqx.s.w.ph"
  13494. case 's': // 1 string to match.
  13495. if (memcmp(NameR.data()+7, "qx.s.w.ph", 9))
  13496. break;
  13497. return Intrinsic::mips_dpsqx_s_w_ph; // "ips.dpsqx.s.w.ph"
  13498. }
  13499. break;
  13500. case 'm': // 2 strings to match.
  13501. if (memcmp(NameR.data()+5, "aq.sa.w.ph", 10))
  13502. break;
  13503. switch (NameR[15]) {
  13504. default: break;
  13505. case 'l': // 1 string to match.
  13506. return Intrinsic::mips_maq_sa_w_phl; // "ips.maq.sa.w.phl"
  13507. case 'r': // 1 string to match.
  13508. return Intrinsic::mips_maq_sa_w_phr; // "ips.maq.sa.w.phr"
  13509. }
  13510. break;
  13511. case 'p': // 3 strings to match.
  13512. if (memcmp(NameR.data()+5, "rec", 3))
  13513. break;
  13514. switch (NameR[8]) {
  13515. default: break;
  13516. case 'e': // 2 strings to match.
  13517. if (memcmp(NameR.data()+9, "q.w.ph", 6))
  13518. break;
  13519. switch (NameR[15]) {
  13520. default: break;
  13521. case 'l': // 1 string to match.
  13522. return Intrinsic::mips_preceq_w_phl; // "ips.preceq.w.phl"
  13523. case 'r': // 1 string to match.
  13524. return Intrinsic::mips_preceq_w_phr; // "ips.preceq.w.phr"
  13525. }
  13526. break;
  13527. case 'r': // 1 string to match.
  13528. if (memcmp(NameR.data()+9, "q.qb.ph", 7))
  13529. break;
  13530. return Intrinsic::mips_precrq_qb_ph; // "ips.precrq.qb.ph"
  13531. }
  13532. break;
  13533. }
  13534. break;
  13535. case 17: // 7 strings to match.
  13536. if (memcmp(NameR.data()+0, "ips.", 4))
  13537. break;
  13538. switch (NameR[4]) {
  13539. default: break;
  13540. case 'd': // 2 strings to match.
  13541. if (NameR[5] != 'p')
  13542. break;
  13543. switch (NameR[6]) {
  13544. default: break;
  13545. case 'a': // 1 string to match.
  13546. if (memcmp(NameR.data()+7, "qx.sa.w.ph", 10))
  13547. break;
  13548. return Intrinsic::mips_dpaqx_sa_w_ph; // "ips.dpaqx.sa.w.ph"
  13549. case 's': // 1 string to match.
  13550. if (memcmp(NameR.data()+7, "qx.sa.w.ph", 10))
  13551. break;
  13552. return Intrinsic::mips_dpsqx_sa_w_ph; // "ips.dpsqx.sa.w.ph"
  13553. }
  13554. break;
  13555. case 'm': // 3 strings to match.
  13556. if (memcmp(NameR.data()+5, "ul", 2))
  13557. break;
  13558. switch (NameR[7]) {
  13559. default: break;
  13560. case 'e': // 2 strings to match.
  13561. if (memcmp(NameR.data()+8, "q.s.w.ph", 8))
  13562. break;
  13563. switch (NameR[16]) {
  13564. default: break;
  13565. case 'l': // 1 string to match.
  13566. return Intrinsic::mips_muleq_s_w_phl; // "ips.muleq.s.w.phl"
  13567. case 'r': // 1 string to match.
  13568. return Intrinsic::mips_muleq_s_w_phr; // "ips.muleq.s.w.phr"
  13569. }
  13570. break;
  13571. case 's': // 1 string to match.
  13572. if (memcmp(NameR.data()+8, "aq.s.w.ph", 9))
  13573. break;
  13574. return Intrinsic::mips_mulsaq_s_w_ph; // "ips.mulsaq.s.w.ph"
  13575. }
  13576. break;
  13577. case 'p': // 2 strings to match.
  13578. if (memcmp(NameR.data()+5, "receu.ph.qb", 11))
  13579. break;
  13580. switch (NameR[16]) {
  13581. default: break;
  13582. case 'l': // 1 string to match.
  13583. return Intrinsic::mips_preceu_ph_qbl; // "ips.preceu.ph.qbl"
  13584. case 'r': // 1 string to match.
  13585. return Intrinsic::mips_preceu_ph_qbr; // "ips.preceu.ph.qbr"
  13586. }
  13587. break;
  13588. }
  13589. break;
  13590. case 18: // 8 strings to match.
  13591. if (memcmp(NameR.data()+0, "ips.", 4))
  13592. break;
  13593. switch (NameR[4]) {
  13594. default: break;
  13595. case 'm': // 2 strings to match.
  13596. if (memcmp(NameR.data()+5, "uleu.s.ph.qb", 12))
  13597. break;
  13598. switch (NameR[17]) {
  13599. default: break;
  13600. case 'l': // 1 string to match.
  13601. return Intrinsic::mips_muleu_s_ph_qbl; // "ips.muleu.s.ph.qbl"
  13602. case 'r': // 1 string to match.
  13603. return Intrinsic::mips_muleu_s_ph_qbr; // "ips.muleu.s.ph.qbr"
  13604. }
  13605. break;
  13606. case 'p': // 6 strings to match.
  13607. if (memcmp(NameR.data()+5, "rec", 3))
  13608. break;
  13609. switch (NameR[8]) {
  13610. default: break;
  13611. case 'e': // 4 strings to match.
  13612. switch (NameR[9]) {
  13613. default: break;
  13614. case 'q': // 2 strings to match.
  13615. if (memcmp(NameR.data()+10, "u.ph.qb", 7))
  13616. break;
  13617. switch (NameR[17]) {
  13618. default: break;
  13619. case 'l': // 1 string to match.
  13620. return Intrinsic::mips_precequ_ph_qbl; // "ips.precequ.ph.qbl"
  13621. case 'r': // 1 string to match.
  13622. return Intrinsic::mips_precequ_ph_qbr; // "ips.precequ.ph.qbr"
  13623. }
  13624. break;
  13625. case 'u': // 2 strings to match.
  13626. if (memcmp(NameR.data()+10, ".ph.qb", 6))
  13627. break;
  13628. switch (NameR[16]) {
  13629. default: break;
  13630. case 'l': // 1 string to match.
  13631. if (NameR[17] != 'a')
  13632. break;
  13633. return Intrinsic::mips_preceu_ph_qbla; // "ips.preceu.ph.qbla"
  13634. case 'r': // 1 string to match.
  13635. if (NameR[17] != 'a')
  13636. break;
  13637. return Intrinsic::mips_preceu_ph_qbra; // "ips.preceu.ph.qbra"
  13638. }
  13639. break;
  13640. }
  13641. break;
  13642. case 'r': // 2 strings to match.
  13643. switch (NameR[9]) {
  13644. default: break;
  13645. case '.': // 1 string to match.
  13646. if (memcmp(NameR.data()+10, "sra.ph.w", 8))
  13647. break;
  13648. return Intrinsic::mips_precr_sra_ph_w; // "ips.precr.sra.ph.w"
  13649. case 'q': // 1 string to match.
  13650. if (memcmp(NameR.data()+10, ".rs.ph.w", 8))
  13651. break;
  13652. return Intrinsic::mips_precrq_rs_ph_w; // "ips.precrq.rs.ph.w"
  13653. }
  13654. break;
  13655. }
  13656. break;
  13657. }
  13658. break;
  13659. case 19: // 3 strings to match.
  13660. if (memcmp(NameR.data()+0, "ips.prec", 8))
  13661. break;
  13662. switch (NameR[8]) {
  13663. default: break;
  13664. case 'e': // 2 strings to match.
  13665. if (memcmp(NameR.data()+9, "qu.ph.qb", 8))
  13666. break;
  13667. switch (NameR[17]) {
  13668. default: break;
  13669. case 'l': // 1 string to match.
  13670. if (NameR[18] != 'a')
  13671. break;
  13672. return Intrinsic::mips_precequ_ph_qbla; // "ips.precequ.ph.qbla"
  13673. case 'r': // 1 string to match.
  13674. if (NameR[18] != 'a')
  13675. break;
  13676. return Intrinsic::mips_precequ_ph_qbra; // "ips.precequ.ph.qbra"
  13677. }
  13678. break;
  13679. case 'r': // 1 string to match.
  13680. if (memcmp(NameR.data()+9, "qu.s.qb.ph", 10))
  13681. break;
  13682. return Intrinsic::mips_precrqu_s_qb_ph; // "ips.precrqu.s.qb.ph"
  13683. }
  13684. break;
  13685. case 20: // 1 string to match.
  13686. if (memcmp(NameR.data()+0, "ips.precr.sra.r.ph.w", 20))
  13687. break;
  13688. return Intrinsic::mips_precr_sra_r_ph_w; // "ips.precr.sra.r.ph.w"
  13689. }
  13690. break; // end of 'm' case.
  13691. case 'n':
  13692. if (NameR.startswith("vvm.atomic.load.add.f32.")) return Intrinsic::nvvm_atomic_load_add_f32;
  13693. if (NameR.startswith("vvm.atomic.load.dec.32.")) return Intrinsic::nvvm_atomic_load_dec_32;
  13694. if (NameR.startswith("vvm.atomic.load.inc.32.")) return Intrinsic::nvvm_atomic_load_inc_32;
  13695. if (NameR.startswith("vvm.compiler.error.")) return Intrinsic::nvvm_compiler_error;
  13696. if (NameR.startswith("vvm.compiler.warn.")) return Intrinsic::nvvm_compiler_warn;
  13697. if (NameR.startswith("vvm.ldu.global.f.")) return Intrinsic::nvvm_ldu_global_f;
  13698. if (NameR.startswith("vvm.ldu.global.i.")) return Intrinsic::nvvm_ldu_global_i;
  13699. if (NameR.startswith("vvm.ldu.global.p.")) return Intrinsic::nvvm_ldu_global_p;
  13700. if (NameR.startswith("vvm.move.ptr.")) return Intrinsic::nvvm_move_ptr;
  13701. if (NameR.startswith("vvm.ptr.constant.to.gen.")) return Intrinsic::nvvm_ptr_constant_to_gen;
  13702. if (NameR.startswith("vvm.ptr.gen.to.constant.")) return Intrinsic::nvvm_ptr_gen_to_constant;
  13703. if (NameR.startswith("vvm.ptr.gen.to.global.")) return Intrinsic::nvvm_ptr_gen_to_global;
  13704. if (NameR.startswith("vvm.ptr.gen.to.local.")) return Intrinsic::nvvm_ptr_gen_to_local;
  13705. if (NameR.startswith("vvm.ptr.gen.to.param.")) return Intrinsic::nvvm_ptr_gen_to_param;
  13706. if (NameR.startswith("vvm.ptr.gen.to.shared.")) return Intrinsic::nvvm_ptr_gen_to_shared;
  13707. if (NameR.startswith("vvm.ptr.global.to.gen.")) return Intrinsic::nvvm_ptr_global_to_gen;
  13708. if (NameR.startswith("vvm.ptr.local.to.gen.")) return Intrinsic::nvvm_ptr_local_to_gen;
  13709. if (NameR.startswith("vvm.ptr.shared.to.gen.")) return Intrinsic::nvvm_ptr_shared_to_gen;
  13710. switch (NameR.size()) {
  13711. default: break;
  13712. case 7: // 1 string to match.
  13713. if (memcmp(NameR.data()+0, "vvm.h2f", 7))
  13714. break;
  13715. return Intrinsic::nvvm_h2f; // "vvm.h2f"
  13716. case 8: // 1 string to match.
  13717. if (memcmp(NameR.data()+0, "vvm.prmt", 8))
  13718. break;
  13719. return Intrinsic::nvvm_prmt; // "vvm.prmt"
  13720. case 9: // 5 strings to match.
  13721. if (memcmp(NameR.data()+0, "vvm.", 4))
  13722. break;
  13723. switch (NameR[4]) {
  13724. default: break;
  13725. case 'a': // 1 string to match.
  13726. if (memcmp(NameR.data()+5, "bs.i", 4))
  13727. break;
  13728. return Intrinsic::nvvm_abs_i; // "vvm.abs.i"
  13729. case 'c': // 1 string to match.
  13730. if (memcmp(NameR.data()+5, "lz.i", 4))
  13731. break;
  13732. return Intrinsic::nvvm_clz_i; // "vvm.clz.i"
  13733. case 'm': // 2 strings to match.
  13734. switch (NameR[5]) {
  13735. default: break;
  13736. case 'a': // 1 string to match.
  13737. if (memcmp(NameR.data()+6, "x.i", 3))
  13738. break;
  13739. return Intrinsic::nvvm_max_i; // "vvm.max.i"
  13740. case 'i': // 1 string to match.
  13741. if (memcmp(NameR.data()+6, "n.i", 3))
  13742. break;
  13743. return Intrinsic::nvvm_min_i; // "vvm.min.i"
  13744. }
  13745. break;
  13746. case 's': // 1 string to match.
  13747. if (memcmp(NameR.data()+5, "ad.i", 4))
  13748. break;
  13749. return Intrinsic::nvvm_sad_i; // "vvm.sad.i"
  13750. }
  13751. break;
  13752. case 10: // 41 strings to match.
  13753. if (memcmp(NameR.data()+0, "vvm.", 4))
  13754. break;
  13755. switch (NameR[4]) {
  13756. default: break;
  13757. case 'a': // 1 string to match.
  13758. if (memcmp(NameR.data()+5, "bs.ll", 5))
  13759. break;
  13760. return Intrinsic::nvvm_abs_ll; // "vvm.abs.ll"
  13761. case 'b': // 2 strings to match.
  13762. if (memcmp(NameR.data()+5, "rev", 3))
  13763. break;
  13764. switch (NameR[8]) {
  13765. default: break;
  13766. case '3': // 1 string to match.
  13767. if (NameR[9] != '2')
  13768. break;
  13769. return Intrinsic::nvvm_brev32; // "vvm.brev32"
  13770. case '6': // 1 string to match.
  13771. if (NameR[9] != '4')
  13772. break;
  13773. return Intrinsic::nvvm_brev64; // "vvm.brev64"
  13774. }
  13775. break;
  13776. case 'c': // 3 strings to match.
  13777. switch (NameR[5]) {
  13778. default: break;
  13779. case 'e': // 2 strings to match.
  13780. if (memcmp(NameR.data()+6, "il.", 3))
  13781. break;
  13782. switch (NameR[9]) {
  13783. default: break;
  13784. case 'd': // 1 string to match.
  13785. return Intrinsic::nvvm_ceil_d; // "vvm.ceil.d"
  13786. case 'f': // 1 string to match.
  13787. return Intrinsic::nvvm_ceil_f; // "vvm.ceil.f"
  13788. }
  13789. break;
  13790. case 'l': // 1 string to match.
  13791. if (memcmp(NameR.data()+6, "z.ll", 4))
  13792. break;
  13793. return Intrinsic::nvvm_clz_ll; // "vvm.clz.ll"
  13794. }
  13795. break;
  13796. case 'd': // 10 strings to match.
  13797. if (NameR[5] != '2')
  13798. break;
  13799. switch (NameR[6]) {
  13800. default: break;
  13801. case 'f': // 4 strings to match.
  13802. if (memcmp(NameR.data()+7, ".r", 2))
  13803. break;
  13804. switch (NameR[9]) {
  13805. default: break;
  13806. case 'm': // 1 string to match.
  13807. return Intrinsic::nvvm_d2f_rm; // "vvm.d2f.rm"
  13808. case 'n': // 1 string to match.
  13809. return Intrinsic::nvvm_d2f_rn; // "vvm.d2f.rn"
  13810. case 'p': // 1 string to match.
  13811. return Intrinsic::nvvm_d2f_rp; // "vvm.d2f.rp"
  13812. case 'z': // 1 string to match.
  13813. return Intrinsic::nvvm_d2f_rz; // "vvm.d2f.rz"
  13814. }
  13815. break;
  13816. case 'i': // 6 strings to match.
  13817. if (NameR[7] != '.')
  13818. break;
  13819. switch (NameR[8]) {
  13820. default: break;
  13821. case 'h': // 1 string to match.
  13822. if (NameR[9] != 'i')
  13823. break;
  13824. return Intrinsic::nvvm_d2i_hi; // "vvm.d2i.hi"
  13825. case 'l': // 1 string to match.
  13826. if (NameR[9] != 'o')
  13827. break;
  13828. return Intrinsic::nvvm_d2i_lo; // "vvm.d2i.lo"
  13829. case 'r': // 4 strings to match.
  13830. switch (NameR[9]) {
  13831. default: break;
  13832. case 'm': // 1 string to match.
  13833. return Intrinsic::nvvm_d2i_rm; // "vvm.d2i.rm"
  13834. case 'n': // 1 string to match.
  13835. return Intrinsic::nvvm_d2i_rn; // "vvm.d2i.rn"
  13836. case 'p': // 1 string to match.
  13837. return Intrinsic::nvvm_d2i_rp; // "vvm.d2i.rp"
  13838. case 'z': // 1 string to match.
  13839. return Intrinsic::nvvm_d2i_rz; // "vvm.d2i.rz"
  13840. }
  13841. break;
  13842. }
  13843. break;
  13844. }
  13845. break;
  13846. case 'f': // 11 strings to match.
  13847. switch (NameR[5]) {
  13848. default: break;
  13849. case '2': // 5 strings to match.
  13850. switch (NameR[6]) {
  13851. default: break;
  13852. case 'h': // 1 string to match.
  13853. if (memcmp(NameR.data()+7, ".rn", 3))
  13854. break;
  13855. return Intrinsic::nvvm_f2h_rn; // "vvm.f2h.rn"
  13856. case 'i': // 4 strings to match.
  13857. if (memcmp(NameR.data()+7, ".r", 2))
  13858. break;
  13859. switch (NameR[9]) {
  13860. default: break;
  13861. case 'm': // 1 string to match.
  13862. return Intrinsic::nvvm_f2i_rm; // "vvm.f2i.rm"
  13863. case 'n': // 1 string to match.
  13864. return Intrinsic::nvvm_f2i_rn; // "vvm.f2i.rn"
  13865. case 'p': // 1 string to match.
  13866. return Intrinsic::nvvm_f2i_rp; // "vvm.f2i.rp"
  13867. case 'z': // 1 string to match.
  13868. return Intrinsic::nvvm_f2i_rz; // "vvm.f2i.rz"
  13869. }
  13870. break;
  13871. }
  13872. break;
  13873. case 'a': // 2 strings to match.
  13874. if (memcmp(NameR.data()+6, "bs.", 3))
  13875. break;
  13876. switch (NameR[9]) {
  13877. default: break;
  13878. case 'd': // 1 string to match.
  13879. return Intrinsic::nvvm_fabs_d; // "vvm.fabs.d"
  13880. case 'f': // 1 string to match.
  13881. return Intrinsic::nvvm_fabs_f; // "vvm.fabs.f"
  13882. }
  13883. break;
  13884. case 'm': // 4 strings to match.
  13885. switch (NameR[6]) {
  13886. default: break;
  13887. case 'a': // 2 strings to match.
  13888. if (memcmp(NameR.data()+7, "x.", 2))
  13889. break;
  13890. switch (NameR[9]) {
  13891. default: break;
  13892. case 'd': // 1 string to match.
  13893. return Intrinsic::nvvm_fmax_d; // "vvm.fmax.d"
  13894. case 'f': // 1 string to match.
  13895. return Intrinsic::nvvm_fmax_f; // "vvm.fmax.f"
  13896. }
  13897. break;
  13898. case 'i': // 2 strings to match.
  13899. if (memcmp(NameR.data()+7, "n.", 2))
  13900. break;
  13901. switch (NameR[9]) {
  13902. default: break;
  13903. case 'd': // 1 string to match.
  13904. return Intrinsic::nvvm_fmin_d; // "vvm.fmin.d"
  13905. case 'f': // 1 string to match.
  13906. return Intrinsic::nvvm_fmin_f; // "vvm.fmin.f"
  13907. }
  13908. break;
  13909. }
  13910. break;
  13911. }
  13912. break;
  13913. case 'i': // 8 strings to match.
  13914. if (NameR[5] != '2')
  13915. break;
  13916. switch (NameR[6]) {
  13917. default: break;
  13918. case 'd': // 4 strings to match.
  13919. if (memcmp(NameR.data()+7, ".r", 2))
  13920. break;
  13921. switch (NameR[9]) {
  13922. default: break;
  13923. case 'm': // 1 string to match.
  13924. return Intrinsic::nvvm_i2d_rm; // "vvm.i2d.rm"
  13925. case 'n': // 1 string to match.
  13926. return Intrinsic::nvvm_i2d_rn; // "vvm.i2d.rn"
  13927. case 'p': // 1 string to match.
  13928. return Intrinsic::nvvm_i2d_rp; // "vvm.i2d.rp"
  13929. case 'z': // 1 string to match.
  13930. return Intrinsic::nvvm_i2d_rz; // "vvm.i2d.rz"
  13931. }
  13932. break;
  13933. case 'f': // 4 strings to match.
  13934. if (memcmp(NameR.data()+7, ".r", 2))
  13935. break;
  13936. switch (NameR[9]) {
  13937. default: break;
  13938. case 'm': // 1 string to match.
  13939. return Intrinsic::nvvm_i2f_rm; // "vvm.i2f.rm"
  13940. case 'n': // 1 string to match.
  13941. return Intrinsic::nvvm_i2f_rn; // "vvm.i2f.rn"
  13942. case 'p': // 1 string to match.
  13943. return Intrinsic::nvvm_i2f_rp; // "vvm.i2f.rp"
  13944. case 'z': // 1 string to match.
  13945. return Intrinsic::nvvm_i2f_rz; // "vvm.i2f.rz"
  13946. }
  13947. break;
  13948. }
  13949. break;
  13950. case 'm': // 4 strings to match.
  13951. switch (NameR[5]) {
  13952. default: break;
  13953. case 'a': // 2 strings to match.
  13954. if (memcmp(NameR.data()+6, "x.", 2))
  13955. break;
  13956. switch (NameR[8]) {
  13957. default: break;
  13958. case 'l': // 1 string to match.
  13959. if (NameR[9] != 'l')
  13960. break;
  13961. return Intrinsic::nvvm_max_ll; // "vvm.max.ll"
  13962. case 'u': // 1 string to match.
  13963. if (NameR[9] != 'i')
  13964. break;
  13965. return Intrinsic::nvvm_max_ui; // "vvm.max.ui"
  13966. }
  13967. break;
  13968. case 'i': // 2 strings to match.
  13969. if (memcmp(NameR.data()+6, "n.", 2))
  13970. break;
  13971. switch (NameR[8]) {
  13972. default: break;
  13973. case 'l': // 1 string to match.
  13974. if (NameR[9] != 'l')
  13975. break;
  13976. return Intrinsic::nvvm_min_ll; // "vvm.min.ll"
  13977. case 'u': // 1 string to match.
  13978. if (NameR[9] != 'i')
  13979. break;
  13980. return Intrinsic::nvvm_min_ui; // "vvm.min.ui"
  13981. }
  13982. break;
  13983. }
  13984. break;
  13985. case 'p': // 1 string to match.
  13986. if (memcmp(NameR.data()+5, "opc.i", 5))
  13987. break;
  13988. return Intrinsic::nvvm_popc_i; // "vvm.popc.i"
  13989. case 's': // 1 string to match.
  13990. if (memcmp(NameR.data()+5, "ad.ui", 5))
  13991. break;
  13992. return Intrinsic::nvvm_sad_ui; // "vvm.sad.ui"
  13993. }
  13994. break;
  13995. case 11: // 44 strings to match.
  13996. if (memcmp(NameR.data()+0, "vvm.", 4))
  13997. break;
  13998. switch (NameR[4]) {
  13999. default: break;
  14000. case 'd': // 8 strings to match.
  14001. if (NameR[5] != '2')
  14002. break;
  14003. switch (NameR[6]) {
  14004. default: break;
  14005. case 'l': // 4 strings to match.
  14006. if (memcmp(NameR.data()+7, "l.r", 3))
  14007. break;
  14008. switch (NameR[10]) {
  14009. default: break;
  14010. case 'm': // 1 string to match.
  14011. return Intrinsic::nvvm_d2ll_rm; // "vvm.d2ll.rm"
  14012. case 'n': // 1 string to match.
  14013. return Intrinsic::nvvm_d2ll_rn; // "vvm.d2ll.rn"
  14014. case 'p': // 1 string to match.
  14015. return Intrinsic::nvvm_d2ll_rp; // "vvm.d2ll.rp"
  14016. case 'z': // 1 string to match.
  14017. return Intrinsic::nvvm_d2ll_rz; // "vvm.d2ll.rz"
  14018. }
  14019. break;
  14020. case 'u': // 4 strings to match.
  14021. if (memcmp(NameR.data()+7, "i.r", 3))
  14022. break;
  14023. switch (NameR[10]) {
  14024. default: break;
  14025. case 'm': // 1 string to match.
  14026. return Intrinsic::nvvm_d2ui_rm; // "vvm.d2ui.rm"
  14027. case 'n': // 1 string to match.
  14028. return Intrinsic::nvvm_d2ui_rn; // "vvm.d2ui.rn"
  14029. case 'p': // 1 string to match.
  14030. return Intrinsic::nvvm_d2ui_rp; // "vvm.d2ui.rp"
  14031. case 'z': // 1 string to match.
  14032. return Intrinsic::nvvm_d2ui_rz; // "vvm.d2ui.rz"
  14033. }
  14034. break;
  14035. }
  14036. break;
  14037. case 'f': // 10 strings to match.
  14038. switch (NameR[5]) {
  14039. default: break;
  14040. case '2': // 8 strings to match.
  14041. switch (NameR[6]) {
  14042. default: break;
  14043. case 'l': // 4 strings to match.
  14044. if (memcmp(NameR.data()+7, "l.r", 3))
  14045. break;
  14046. switch (NameR[10]) {
  14047. default: break;
  14048. case 'm': // 1 string to match.
  14049. return Intrinsic::nvvm_f2ll_rm; // "vvm.f2ll.rm"
  14050. case 'n': // 1 string to match.
  14051. return Intrinsic::nvvm_f2ll_rn; // "vvm.f2ll.rn"
  14052. case 'p': // 1 string to match.
  14053. return Intrinsic::nvvm_f2ll_rp; // "vvm.f2ll.rp"
  14054. case 'z': // 1 string to match.
  14055. return Intrinsic::nvvm_f2ll_rz; // "vvm.f2ll.rz"
  14056. }
  14057. break;
  14058. case 'u': // 4 strings to match.
  14059. if (memcmp(NameR.data()+7, "i.r", 3))
  14060. break;
  14061. switch (NameR[10]) {
  14062. default: break;
  14063. case 'm': // 1 string to match.
  14064. return Intrinsic::nvvm_f2ui_rm; // "vvm.f2ui.rm"
  14065. case 'n': // 1 string to match.
  14066. return Intrinsic::nvvm_f2ui_rn; // "vvm.f2ui.rn"
  14067. case 'p': // 1 string to match.
  14068. return Intrinsic::nvvm_f2ui_rp; // "vvm.f2ui.rp"
  14069. case 'z': // 1 string to match.
  14070. return Intrinsic::nvvm_f2ui_rz; // "vvm.f2ui.rz"
  14071. }
  14072. break;
  14073. }
  14074. break;
  14075. case 'l': // 2 strings to match.
  14076. if (memcmp(NameR.data()+6, "oor.", 4))
  14077. break;
  14078. switch (NameR[10]) {
  14079. default: break;
  14080. case 'd': // 1 string to match.
  14081. return Intrinsic::nvvm_floor_d; // "vvm.floor.d"
  14082. case 'f': // 1 string to match.
  14083. return Intrinsic::nvvm_floor_f; // "vvm.floor.f"
  14084. }
  14085. break;
  14086. }
  14087. break;
  14088. case 'l': // 8 strings to match.
  14089. if (memcmp(NameR.data()+5, "l2", 2))
  14090. break;
  14091. switch (NameR[7]) {
  14092. default: break;
  14093. case 'd': // 4 strings to match.
  14094. if (memcmp(NameR.data()+8, ".r", 2))
  14095. break;
  14096. switch (NameR[10]) {
  14097. default: break;
  14098. case 'm': // 1 string to match.
  14099. return Intrinsic::nvvm_ll2d_rm; // "vvm.ll2d.rm"
  14100. case 'n': // 1 string to match.
  14101. return Intrinsic::nvvm_ll2d_rn; // "vvm.ll2d.rn"
  14102. case 'p': // 1 string to match.
  14103. return Intrinsic::nvvm_ll2d_rp; // "vvm.ll2d.rp"
  14104. case 'z': // 1 string to match.
  14105. return Intrinsic::nvvm_ll2d_rz; // "vvm.ll2d.rz"
  14106. }
  14107. break;
  14108. case 'f': // 4 strings to match.
  14109. if (memcmp(NameR.data()+8, ".r", 2))
  14110. break;
  14111. switch (NameR[10]) {
  14112. default: break;
  14113. case 'm': // 1 string to match.
  14114. return Intrinsic::nvvm_ll2f_rm; // "vvm.ll2f.rm"
  14115. case 'n': // 1 string to match.
  14116. return Intrinsic::nvvm_ll2f_rn; // "vvm.ll2f.rn"
  14117. case 'p': // 1 string to match.
  14118. return Intrinsic::nvvm_ll2f_rp; // "vvm.ll2f.rp"
  14119. case 'z': // 1 string to match.
  14120. return Intrinsic::nvvm_ll2f_rz; // "vvm.ll2f.rz"
  14121. }
  14122. break;
  14123. }
  14124. break;
  14125. case 'm': // 5 strings to match.
  14126. switch (NameR[5]) {
  14127. default: break;
  14128. case 'a': // 1 string to match.
  14129. if (memcmp(NameR.data()+6, "x.ull", 5))
  14130. break;
  14131. return Intrinsic::nvvm_max_ull; // "vvm.max.ull"
  14132. case 'i': // 1 string to match.
  14133. if (memcmp(NameR.data()+6, "n.ull", 5))
  14134. break;
  14135. return Intrinsic::nvvm_min_ull; // "vvm.min.ull"
  14136. case 'o': // 1 string to match.
  14137. if (memcmp(NameR.data()+6, "ve.i8", 5))
  14138. break;
  14139. return Intrinsic::nvvm_move_i8; // "vvm.move.i8"
  14140. case 'u': // 2 strings to match.
  14141. if (NameR[6] != 'l')
  14142. break;
  14143. switch (NameR[7]) {
  14144. default: break;
  14145. case '2': // 1 string to match.
  14146. if (memcmp(NameR.data()+8, "4.i", 3))
  14147. break;
  14148. return Intrinsic::nvvm_mul24_i; // "vvm.mul24.i"
  14149. case 'h': // 1 string to match.
  14150. if (memcmp(NameR.data()+8, "i.i", 3))
  14151. break;
  14152. return Intrinsic::nvvm_mulhi_i; // "vvm.mulhi.i"
  14153. }
  14154. break;
  14155. }
  14156. break;
  14157. case 'p': // 1 string to match.
  14158. if (memcmp(NameR.data()+5, "opc.ll", 6))
  14159. break;
  14160. return Intrinsic::nvvm_popc_ll; // "vvm.popc.ll"
  14161. case 'r': // 2 strings to match.
  14162. if (memcmp(NameR.data()+5, "ound.", 5))
  14163. break;
  14164. switch (NameR[10]) {
  14165. default: break;
  14166. case 'd': // 1 string to match.
  14167. return Intrinsic::nvvm_round_d; // "vvm.round.d"
  14168. case 'f': // 1 string to match.
  14169. return Intrinsic::nvvm_round_f; // "vvm.round.f"
  14170. }
  14171. break;
  14172. case 't': // 2 strings to match.
  14173. if (memcmp(NameR.data()+5, "runc.", 5))
  14174. break;
  14175. switch (NameR[10]) {
  14176. default: break;
  14177. case 'd': // 1 string to match.
  14178. return Intrinsic::nvvm_trunc_d; // "vvm.trunc.d"
  14179. case 'f': // 1 string to match.
  14180. return Intrinsic::nvvm_trunc_f; // "vvm.trunc.f"
  14181. }
  14182. break;
  14183. case 'u': // 8 strings to match.
  14184. if (memcmp(NameR.data()+5, "i2", 2))
  14185. break;
  14186. switch (NameR[7]) {
  14187. default: break;
  14188. case 'd': // 4 strings to match.
  14189. if (memcmp(NameR.data()+8, ".r", 2))
  14190. break;
  14191. switch (NameR[10]) {
  14192. default: break;
  14193. case 'm': // 1 string to match.
  14194. return Intrinsic::nvvm_ui2d_rm; // "vvm.ui2d.rm"
  14195. case 'n': // 1 string to match.
  14196. return Intrinsic::nvvm_ui2d_rn; // "vvm.ui2d.rn"
  14197. case 'p': // 1 string to match.
  14198. return Intrinsic::nvvm_ui2d_rp; // "vvm.ui2d.rp"
  14199. case 'z': // 1 string to match.
  14200. return Intrinsic::nvvm_ui2d_rz; // "vvm.ui2d.rz"
  14201. }
  14202. break;
  14203. case 'f': // 4 strings to match.
  14204. if (memcmp(NameR.data()+8, ".r", 2))
  14205. break;
  14206. switch (NameR[10]) {
  14207. default: break;
  14208. case 'm': // 1 string to match.
  14209. return Intrinsic::nvvm_ui2f_rm; // "vvm.ui2f.rm"
  14210. case 'n': // 1 string to match.
  14211. return Intrinsic::nvvm_ui2f_rn; // "vvm.ui2f.rn"
  14212. case 'p': // 1 string to match.
  14213. return Intrinsic::nvvm_ui2f_rp; // "vvm.ui2f.rp"
  14214. case 'z': // 1 string to match.
  14215. return Intrinsic::nvvm_ui2f_rz; // "vvm.ui2f.rz"
  14216. }
  14217. break;
  14218. }
  14219. break;
  14220. }
  14221. break;
  14222. case 12: // 64 strings to match.
  14223. if (memcmp(NameR.data()+0, "vvm.", 4))
  14224. break;
  14225. switch (NameR[4]) {
  14226. default: break;
  14227. case 'a': // 8 strings to match.
  14228. if (memcmp(NameR.data()+5, "dd.r", 4))
  14229. break;
  14230. switch (NameR[9]) {
  14231. default: break;
  14232. case 'm': // 2 strings to match.
  14233. if (NameR[10] != '.')
  14234. break;
  14235. switch (NameR[11]) {
  14236. default: break;
  14237. case 'd': // 1 string to match.
  14238. return Intrinsic::nvvm_add_rm_d; // "vvm.add.rm.d"
  14239. case 'f': // 1 string to match.
  14240. return Intrinsic::nvvm_add_rm_f; // "vvm.add.rm.f"
  14241. }
  14242. break;
  14243. case 'n': // 2 strings to match.
  14244. if (NameR[10] != '.')
  14245. break;
  14246. switch (NameR[11]) {
  14247. default: break;
  14248. case 'd': // 1 string to match.
  14249. return Intrinsic::nvvm_add_rn_d; // "vvm.add.rn.d"
  14250. case 'f': // 1 string to match.
  14251. return Intrinsic::nvvm_add_rn_f; // "vvm.add.rn.f"
  14252. }
  14253. break;
  14254. case 'p': // 2 strings to match.
  14255. if (NameR[10] != '.')
  14256. break;
  14257. switch (NameR[11]) {
  14258. default: break;
  14259. case 'd': // 1 string to match.
  14260. return Intrinsic::nvvm_add_rp_d; // "vvm.add.rp.d"
  14261. case 'f': // 1 string to match.
  14262. return Intrinsic::nvvm_add_rp_f; // "vvm.add.rp.f"
  14263. }
  14264. break;
  14265. case 'z': // 2 strings to match.
  14266. if (NameR[10] != '.')
  14267. break;
  14268. switch (NameR[11]) {
  14269. default: break;
  14270. case 'd': // 1 string to match.
  14271. return Intrinsic::nvvm_add_rz_d; // "vvm.add.rz.d"
  14272. case 'f': // 1 string to match.
  14273. return Intrinsic::nvvm_add_rz_f; // "vvm.add.rz.f"
  14274. }
  14275. break;
  14276. }
  14277. break;
  14278. case 'b': // 1 string to match.
  14279. if (memcmp(NameR.data()+5, "arrier0", 7))
  14280. break;
  14281. return Intrinsic::nvvm_barrier0; // "vvm.barrier0"
  14282. case 'd': // 12 strings to match.
  14283. switch (NameR[5]) {
  14284. default: break;
  14285. case '2': // 4 strings to match.
  14286. if (memcmp(NameR.data()+6, "ull.r", 5))
  14287. break;
  14288. switch (NameR[11]) {
  14289. default: break;
  14290. case 'm': // 1 string to match.
  14291. return Intrinsic::nvvm_d2ull_rm; // "vvm.d2ull.rm"
  14292. case 'n': // 1 string to match.
  14293. return Intrinsic::nvvm_d2ull_rn; // "vvm.d2ull.rn"
  14294. case 'p': // 1 string to match.
  14295. return Intrinsic::nvvm_d2ull_rp; // "vvm.d2ull.rp"
  14296. case 'z': // 1 string to match.
  14297. return Intrinsic::nvvm_d2ull_rz; // "vvm.d2ull.rz"
  14298. }
  14299. break;
  14300. case 'i': // 8 strings to match.
  14301. if (memcmp(NameR.data()+6, "v.r", 3))
  14302. break;
  14303. switch (NameR[9]) {
  14304. default: break;
  14305. case 'm': // 2 strings to match.
  14306. if (NameR[10] != '.')
  14307. break;
  14308. switch (NameR[11]) {
  14309. default: break;
  14310. case 'd': // 1 string to match.
  14311. return Intrinsic::nvvm_div_rm_d; // "vvm.div.rm.d"
  14312. case 'f': // 1 string to match.
  14313. return Intrinsic::nvvm_div_rm_f; // "vvm.div.rm.f"
  14314. }
  14315. break;
  14316. case 'n': // 2 strings to match.
  14317. if (NameR[10] != '.')
  14318. break;
  14319. switch (NameR[11]) {
  14320. default: break;
  14321. case 'd': // 1 string to match.
  14322. return Intrinsic::nvvm_div_rn_d; // "vvm.div.rn.d"
  14323. case 'f': // 1 string to match.
  14324. return Intrinsic::nvvm_div_rn_f; // "vvm.div.rn.f"
  14325. }
  14326. break;
  14327. case 'p': // 2 strings to match.
  14328. if (NameR[10] != '.')
  14329. break;
  14330. switch (NameR[11]) {
  14331. default: break;
  14332. case 'd': // 1 string to match.
  14333. return Intrinsic::nvvm_div_rp_d; // "vvm.div.rp.d"
  14334. case 'f': // 1 string to match.
  14335. return Intrinsic::nvvm_div_rp_f; // "vvm.div.rp.f"
  14336. }
  14337. break;
  14338. case 'z': // 2 strings to match.
  14339. if (NameR[10] != '.')
  14340. break;
  14341. switch (NameR[11]) {
  14342. default: break;
  14343. case 'd': // 1 string to match.
  14344. return Intrinsic::nvvm_div_rz_d; // "vvm.div.rz.d"
  14345. case 'f': // 1 string to match.
  14346. return Intrinsic::nvvm_div_rz_f; // "vvm.div.rz.f"
  14347. }
  14348. break;
  14349. }
  14350. break;
  14351. }
  14352. break;
  14353. case 'f': // 12 strings to match.
  14354. switch (NameR[5]) {
  14355. default: break;
  14356. case '2': // 4 strings to match.
  14357. if (memcmp(NameR.data()+6, "ull.r", 5))
  14358. break;
  14359. switch (NameR[11]) {
  14360. default: break;
  14361. case 'm': // 1 string to match.
  14362. return Intrinsic::nvvm_f2ull_rm; // "vvm.f2ull.rm"
  14363. case 'n': // 1 string to match.
  14364. return Intrinsic::nvvm_f2ull_rn; // "vvm.f2ull.rn"
  14365. case 'p': // 1 string to match.
  14366. return Intrinsic::nvvm_f2ull_rp; // "vvm.f2ull.rp"
  14367. case 'z': // 1 string to match.
  14368. return Intrinsic::nvvm_f2ull_rz; // "vvm.f2ull.rz"
  14369. }
  14370. break;
  14371. case 'm': // 8 strings to match.
  14372. if (memcmp(NameR.data()+6, "a.r", 3))
  14373. break;
  14374. switch (NameR[9]) {
  14375. default: break;
  14376. case 'm': // 2 strings to match.
  14377. if (NameR[10] != '.')
  14378. break;
  14379. switch (NameR[11]) {
  14380. default: break;
  14381. case 'd': // 1 string to match.
  14382. return Intrinsic::nvvm_fma_rm_d; // "vvm.fma.rm.d"
  14383. case 'f': // 1 string to match.
  14384. return Intrinsic::nvvm_fma_rm_f; // "vvm.fma.rm.f"
  14385. }
  14386. break;
  14387. case 'n': // 2 strings to match.
  14388. if (NameR[10] != '.')
  14389. break;
  14390. switch (NameR[11]) {
  14391. default: break;
  14392. case 'd': // 1 string to match.
  14393. return Intrinsic::nvvm_fma_rn_d; // "vvm.fma.rn.d"
  14394. case 'f': // 1 string to match.
  14395. return Intrinsic::nvvm_fma_rn_f; // "vvm.fma.rn.f"
  14396. }
  14397. break;
  14398. case 'p': // 2 strings to match.
  14399. if (NameR[10] != '.')
  14400. break;
  14401. switch (NameR[11]) {
  14402. default: break;
  14403. case 'd': // 1 string to match.
  14404. return Intrinsic::nvvm_fma_rp_d; // "vvm.fma.rp.d"
  14405. case 'f': // 1 string to match.
  14406. return Intrinsic::nvvm_fma_rp_f; // "vvm.fma.rp.f"
  14407. }
  14408. break;
  14409. case 'z': // 2 strings to match.
  14410. if (NameR[10] != '.')
  14411. break;
  14412. switch (NameR[11]) {
  14413. default: break;
  14414. case 'd': // 1 string to match.
  14415. return Intrinsic::nvvm_fma_rz_d; // "vvm.fma.rz.d"
  14416. case 'f': // 1 string to match.
  14417. return Intrinsic::nvvm_fma_rz_f; // "vvm.fma.rz.f"
  14418. }
  14419. break;
  14420. }
  14421. break;
  14422. }
  14423. break;
  14424. case 'l': // 1 string to match.
  14425. if (memcmp(NameR.data()+5, "ohi.i2d", 7))
  14426. break;
  14427. return Intrinsic::nvvm_lohi_i2d; // "vvm.lohi.i2d"
  14428. case 'm': // 14 strings to match.
  14429. switch (NameR[5]) {
  14430. default: break;
  14431. case 'o': // 3 strings to match.
  14432. if (memcmp(NameR.data()+6, "ve.i", 4))
  14433. break;
  14434. switch (NameR[10]) {
  14435. default: break;
  14436. case '1': // 1 string to match.
  14437. if (NameR[11] != '6')
  14438. break;
  14439. return Intrinsic::nvvm_move_i16; // "vvm.move.i16"
  14440. case '3': // 1 string to match.
  14441. if (NameR[11] != '2')
  14442. break;
  14443. return Intrinsic::nvvm_move_i32; // "vvm.move.i32"
  14444. case '6': // 1 string to match.
  14445. if (NameR[11] != '4')
  14446. break;
  14447. return Intrinsic::nvvm_move_i64; // "vvm.move.i64"
  14448. }
  14449. break;
  14450. case 'u': // 11 strings to match.
  14451. if (NameR[6] != 'l')
  14452. break;
  14453. switch (NameR[7]) {
  14454. default: break;
  14455. case '.': // 8 strings to match.
  14456. if (NameR[8] != 'r')
  14457. break;
  14458. switch (NameR[9]) {
  14459. default: break;
  14460. case 'm': // 2 strings to match.
  14461. if (NameR[10] != '.')
  14462. break;
  14463. switch (NameR[11]) {
  14464. default: break;
  14465. case 'd': // 1 string to match.
  14466. return Intrinsic::nvvm_mul_rm_d; // "vvm.mul.rm.d"
  14467. case 'f': // 1 string to match.
  14468. return Intrinsic::nvvm_mul_rm_f; // "vvm.mul.rm.f"
  14469. }
  14470. break;
  14471. case 'n': // 2 strings to match.
  14472. if (NameR[10] != '.')
  14473. break;
  14474. switch (NameR[11]) {
  14475. default: break;
  14476. case 'd': // 1 string to match.
  14477. return Intrinsic::nvvm_mul_rn_d; // "vvm.mul.rn.d"
  14478. case 'f': // 1 string to match.
  14479. return Intrinsic::nvvm_mul_rn_f; // "vvm.mul.rn.f"
  14480. }
  14481. break;
  14482. case 'p': // 2 strings to match.
  14483. if (NameR[10] != '.')
  14484. break;
  14485. switch (NameR[11]) {
  14486. default: break;
  14487. case 'd': // 1 string to match.
  14488. return Intrinsic::nvvm_mul_rp_d; // "vvm.mul.rp.d"
  14489. case 'f': // 1 string to match.
  14490. return Intrinsic::nvvm_mul_rp_f; // "vvm.mul.rp.f"
  14491. }
  14492. break;
  14493. case 'z': // 2 strings to match.
  14494. if (NameR[10] != '.')
  14495. break;
  14496. switch (NameR[11]) {
  14497. default: break;
  14498. case 'd': // 1 string to match.
  14499. return Intrinsic::nvvm_mul_rz_d; // "vvm.mul.rz.d"
  14500. case 'f': // 1 string to match.
  14501. return Intrinsic::nvvm_mul_rz_f; // "vvm.mul.rz.f"
  14502. }
  14503. break;
  14504. }
  14505. break;
  14506. case '2': // 1 string to match.
  14507. if (memcmp(NameR.data()+8, "4.ui", 4))
  14508. break;
  14509. return Intrinsic::nvvm_mul24_ui; // "vvm.mul24.ui"
  14510. case 'h': // 2 strings to match.
  14511. if (memcmp(NameR.data()+8, "i.", 2))
  14512. break;
  14513. switch (NameR[10]) {
  14514. default: break;
  14515. case 'l': // 1 string to match.
  14516. if (NameR[11] != 'l')
  14517. break;
  14518. return Intrinsic::nvvm_mulhi_ll; // "vvm.mulhi.ll"
  14519. case 'u': // 1 string to match.
  14520. if (NameR[11] != 'i')
  14521. break;
  14522. return Intrinsic::nvvm_mulhi_ui; // "vvm.mulhi.ui"
  14523. }
  14524. break;
  14525. }
  14526. break;
  14527. }
  14528. break;
  14529. case 'r': // 8 strings to match.
  14530. if (memcmp(NameR.data()+5, "cp.r", 4))
  14531. break;
  14532. switch (NameR[9]) {
  14533. default: break;
  14534. case 'm': // 2 strings to match.
  14535. if (NameR[10] != '.')
  14536. break;
  14537. switch (NameR[11]) {
  14538. default: break;
  14539. case 'd': // 1 string to match.
  14540. return Intrinsic::nvvm_rcp_rm_d; // "vvm.rcp.rm.d"
  14541. case 'f': // 1 string to match.
  14542. return Intrinsic::nvvm_rcp_rm_f; // "vvm.rcp.rm.f"
  14543. }
  14544. break;
  14545. case 'n': // 2 strings to match.
  14546. if (NameR[10] != '.')
  14547. break;
  14548. switch (NameR[11]) {
  14549. default: break;
  14550. case 'd': // 1 string to match.
  14551. return Intrinsic::nvvm_rcp_rn_d; // "vvm.rcp.rn.d"
  14552. case 'f': // 1 string to match.
  14553. return Intrinsic::nvvm_rcp_rn_f; // "vvm.rcp.rn.f"
  14554. }
  14555. break;
  14556. case 'p': // 2 strings to match.
  14557. if (NameR[10] != '.')
  14558. break;
  14559. switch (NameR[11]) {
  14560. default: break;
  14561. case 'd': // 1 string to match.
  14562. return Intrinsic::nvvm_rcp_rp_d; // "vvm.rcp.rp.d"
  14563. case 'f': // 1 string to match.
  14564. return Intrinsic::nvvm_rcp_rp_f; // "vvm.rcp.rp.f"
  14565. }
  14566. break;
  14567. case 'z': // 2 strings to match.
  14568. if (NameR[10] != '.')
  14569. break;
  14570. switch (NameR[11]) {
  14571. default: break;
  14572. case 'd': // 1 string to match.
  14573. return Intrinsic::nvvm_rcp_rz_d; // "vvm.rcp.rz.d"
  14574. case 'f': // 1 string to match.
  14575. return Intrinsic::nvvm_rcp_rz_f; // "vvm.rcp.rz.f"
  14576. }
  14577. break;
  14578. }
  14579. break;
  14580. case 'u': // 8 strings to match.
  14581. if (memcmp(NameR.data()+5, "ll2", 3))
  14582. break;
  14583. switch (NameR[8]) {
  14584. default: break;
  14585. case 'd': // 4 strings to match.
  14586. if (memcmp(NameR.data()+9, ".r", 2))
  14587. break;
  14588. switch (NameR[11]) {
  14589. default: break;
  14590. case 'm': // 1 string to match.
  14591. return Intrinsic::nvvm_ull2d_rm; // "vvm.ull2d.rm"
  14592. case 'n': // 1 string to match.
  14593. return Intrinsic::nvvm_ull2d_rn; // "vvm.ull2d.rn"
  14594. case 'p': // 1 string to match.
  14595. return Intrinsic::nvvm_ull2d_rp; // "vvm.ull2d.rp"
  14596. case 'z': // 1 string to match.
  14597. return Intrinsic::nvvm_ull2d_rz; // "vvm.ull2d.rz"
  14598. }
  14599. break;
  14600. case 'f': // 4 strings to match.
  14601. if (memcmp(NameR.data()+9, ".r", 2))
  14602. break;
  14603. switch (NameR[11]) {
  14604. default: break;
  14605. case 'm': // 1 string to match.
  14606. return Intrinsic::nvvm_ull2f_rm; // "vvm.ull2f.rm"
  14607. case 'n': // 1 string to match.
  14608. return Intrinsic::nvvm_ull2f_rn; // "vvm.ull2f.rn"
  14609. case 'p': // 1 string to match.
  14610. return Intrinsic::nvvm_ull2f_rp; // "vvm.ull2f.rp"
  14611. case 'z': // 1 string to match.
  14612. return Intrinsic::nvvm_ull2f_rz; // "vvm.ull2f.rz"
  14613. }
  14614. break;
  14615. }
  14616. break;
  14617. }
  14618. break;
  14619. case 13: // 10 strings to match.
  14620. if (memcmp(NameR.data()+0, "vvm.", 4))
  14621. break;
  14622. switch (NameR[4]) {
  14623. default: break;
  14624. case 'm': // 2 strings to match.
  14625. switch (NameR[5]) {
  14626. default: break;
  14627. case 'e': // 1 string to match.
  14628. if (memcmp(NameR.data()+6, "mbar.gl", 7))
  14629. break;
  14630. return Intrinsic::nvvm_membar_gl; // "vvm.membar.gl"
  14631. case 'u': // 1 string to match.
  14632. if (memcmp(NameR.data()+6, "lhi.ull", 7))
  14633. break;
  14634. return Intrinsic::nvvm_mulhi_ull; // "vvm.mulhi.ull"
  14635. }
  14636. break;
  14637. case 's': // 8 strings to match.
  14638. if (memcmp(NameR.data()+5, "qrt.r", 5))
  14639. break;
  14640. switch (NameR[10]) {
  14641. default: break;
  14642. case 'm': // 2 strings to match.
  14643. if (NameR[11] != '.')
  14644. break;
  14645. switch (NameR[12]) {
  14646. default: break;
  14647. case 'd': // 1 string to match.
  14648. return Intrinsic::nvvm_sqrt_rm_d; // "vvm.sqrt.rm.d"
  14649. case 'f': // 1 string to match.
  14650. return Intrinsic::nvvm_sqrt_rm_f; // "vvm.sqrt.rm.f"
  14651. }
  14652. break;
  14653. case 'n': // 2 strings to match.
  14654. if (NameR[11] != '.')
  14655. break;
  14656. switch (NameR[12]) {
  14657. default: break;
  14658. case 'd': // 1 string to match.
  14659. return Intrinsic::nvvm_sqrt_rn_d; // "vvm.sqrt.rn.d"
  14660. case 'f': // 1 string to match.
  14661. return Intrinsic::nvvm_sqrt_rn_f; // "vvm.sqrt.rn.f"
  14662. }
  14663. break;
  14664. case 'p': // 2 strings to match.
  14665. if (NameR[11] != '.')
  14666. break;
  14667. switch (NameR[12]) {
  14668. default: break;
  14669. case 'd': // 1 string to match.
  14670. return Intrinsic::nvvm_sqrt_rp_d; // "vvm.sqrt.rp.d"
  14671. case 'f': // 1 string to match.
  14672. return Intrinsic::nvvm_sqrt_rp_f; // "vvm.sqrt.rp.f"
  14673. }
  14674. break;
  14675. case 'z': // 2 strings to match.
  14676. if (NameR[11] != '.')
  14677. break;
  14678. switch (NameR[12]) {
  14679. default: break;
  14680. case 'd': // 1 string to match.
  14681. return Intrinsic::nvvm_sqrt_rz_d; // "vvm.sqrt.rz.d"
  14682. case 'f': // 1 string to match.
  14683. return Intrinsic::nvvm_sqrt_rz_f; // "vvm.sqrt.rz.f"
  14684. }
  14685. break;
  14686. }
  14687. break;
  14688. }
  14689. break;
  14690. case 14: // 18 strings to match.
  14691. if (memcmp(NameR.data()+0, "vvm.", 4))
  14692. break;
  14693. switch (NameR[4]) {
  14694. default: break;
  14695. case 'c': // 1 string to match.
  14696. if (memcmp(NameR.data()+5, "eil.ftz.f", 9))
  14697. break;
  14698. return Intrinsic::nvvm_ceil_ftz_f; // "vvm.ceil.ftz.f"
  14699. case 'd': // 4 strings to match.
  14700. if (memcmp(NameR.data()+5, "2f.r", 4))
  14701. break;
  14702. switch (NameR[9]) {
  14703. default: break;
  14704. case 'm': // 1 string to match.
  14705. if (memcmp(NameR.data()+10, ".ftz", 4))
  14706. break;
  14707. return Intrinsic::nvvm_d2f_rm_ftz; // "vvm.d2f.rm.ftz"
  14708. case 'n': // 1 string to match.
  14709. if (memcmp(NameR.data()+10, ".ftz", 4))
  14710. break;
  14711. return Intrinsic::nvvm_d2f_rn_ftz; // "vvm.d2f.rn.ftz"
  14712. case 'p': // 1 string to match.
  14713. if (memcmp(NameR.data()+10, ".ftz", 4))
  14714. break;
  14715. return Intrinsic::nvvm_d2f_rp_ftz; // "vvm.d2f.rp.ftz"
  14716. case 'z': // 1 string to match.
  14717. if (memcmp(NameR.data()+10, ".ftz", 4))
  14718. break;
  14719. return Intrinsic::nvvm_d2f_rz_ftz; // "vvm.d2f.rz.ftz"
  14720. }
  14721. break;
  14722. case 'f': // 8 strings to match.
  14723. switch (NameR[5]) {
  14724. default: break;
  14725. case '2': // 5 strings to match.
  14726. switch (NameR[6]) {
  14727. default: break;
  14728. case 'h': // 1 string to match.
  14729. if (memcmp(NameR.data()+7, ".rn.ftz", 7))
  14730. break;
  14731. return Intrinsic::nvvm_f2h_rn_ftz; // "vvm.f2h.rn.ftz"
  14732. case 'i': // 4 strings to match.
  14733. if (memcmp(NameR.data()+7, ".r", 2))
  14734. break;
  14735. switch (NameR[9]) {
  14736. default: break;
  14737. case 'm': // 1 string to match.
  14738. if (memcmp(NameR.data()+10, ".ftz", 4))
  14739. break;
  14740. return Intrinsic::nvvm_f2i_rm_ftz; // "vvm.f2i.rm.ftz"
  14741. case 'n': // 1 string to match.
  14742. if (memcmp(NameR.data()+10, ".ftz", 4))
  14743. break;
  14744. return Intrinsic::nvvm_f2i_rn_ftz; // "vvm.f2i.rn.ftz"
  14745. case 'p': // 1 string to match.
  14746. if (memcmp(NameR.data()+10, ".ftz", 4))
  14747. break;
  14748. return Intrinsic::nvvm_f2i_rp_ftz; // "vvm.f2i.rp.ftz"
  14749. case 'z': // 1 string to match.
  14750. if (memcmp(NameR.data()+10, ".ftz", 4))
  14751. break;
  14752. return Intrinsic::nvvm_f2i_rz_ftz; // "vvm.f2i.rz.ftz"
  14753. }
  14754. break;
  14755. }
  14756. break;
  14757. case 'a': // 1 string to match.
  14758. if (memcmp(NameR.data()+6, "bs.ftz.f", 8))
  14759. break;
  14760. return Intrinsic::nvvm_fabs_ftz_f; // "vvm.fabs.ftz.f"
  14761. case 'm': // 2 strings to match.
  14762. switch (NameR[6]) {
  14763. default: break;
  14764. case 'a': // 1 string to match.
  14765. if (memcmp(NameR.data()+7, "x.ftz.f", 7))
  14766. break;
  14767. return Intrinsic::nvvm_fmax_ftz_f; // "vvm.fmax.ftz.f"
  14768. case 'i': // 1 string to match.
  14769. if (memcmp(NameR.data()+7, "n.ftz.f", 7))
  14770. break;
  14771. return Intrinsic::nvvm_fmin_ftz_f; // "vvm.fmin.ftz.f"
  14772. }
  14773. break;
  14774. }
  14775. break;
  14776. case 'm': // 3 strings to match.
  14777. switch (NameR[5]) {
  14778. default: break;
  14779. case 'e': // 2 strings to match.
  14780. if (memcmp(NameR.data()+6, "mbar.", 5))
  14781. break;
  14782. switch (NameR[11]) {
  14783. default: break;
  14784. case 'c': // 1 string to match.
  14785. if (memcmp(NameR.data()+12, "ta", 2))
  14786. break;
  14787. return Intrinsic::nvvm_membar_cta; // "vvm.membar.cta"
  14788. case 's': // 1 string to match.
  14789. if (memcmp(NameR.data()+12, "ys", 2))
  14790. break;
  14791. return Intrinsic::nvvm_membar_sys; // "vvm.membar.sys"
  14792. }
  14793. break;
  14794. case 'o': // 1 string to match.
  14795. if (memcmp(NameR.data()+6, "ve.float", 8))
  14796. break;
  14797. return Intrinsic::nvvm_move_float; // "vvm.move.float"
  14798. }
  14799. break;
  14800. case 's': // 2 strings to match.
  14801. if (memcmp(NameR.data()+5, "aturate.", 8))
  14802. break;
  14803. switch (NameR[13]) {
  14804. default: break;
  14805. case 'd': // 1 string to match.
  14806. return Intrinsic::nvvm_saturate_d; // "vvm.saturate.d"
  14807. case 'f': // 1 string to match.
  14808. return Intrinsic::nvvm_saturate_f; // "vvm.saturate.f"
  14809. }
  14810. break;
  14811. }
  14812. break;
  14813. case 15: // 15 strings to match.
  14814. if (memcmp(NameR.data()+0, "vvm.", 4))
  14815. break;
  14816. switch (NameR[4]) {
  14817. default: break;
  14818. case 'b': // 3 strings to match.
  14819. switch (NameR[5]) {
  14820. default: break;
  14821. case 'a': // 1 string to match.
  14822. if (memcmp(NameR.data()+6, "rrier0.or", 9))
  14823. break;
  14824. return Intrinsic::nvvm_barrier0_or; // "vvm.barrier0.or"
  14825. case 'i': // 2 strings to match.
  14826. if (memcmp(NameR.data()+6, "tcast.", 6))
  14827. break;
  14828. switch (NameR[12]) {
  14829. default: break;
  14830. case 'f': // 1 string to match.
  14831. if (memcmp(NameR.data()+13, "2i", 2))
  14832. break;
  14833. return Intrinsic::nvvm_bitcast_f2i; // "vvm.bitcast.f2i"
  14834. case 'i': // 1 string to match.
  14835. if (memcmp(NameR.data()+13, "2f", 2))
  14836. break;
  14837. return Intrinsic::nvvm_bitcast_i2f; // "vvm.bitcast.i2f"
  14838. }
  14839. break;
  14840. }
  14841. break;
  14842. case 'f': // 9 strings to match.
  14843. switch (NameR[5]) {
  14844. default: break;
  14845. case '2': // 8 strings to match.
  14846. switch (NameR[6]) {
  14847. default: break;
  14848. case 'l': // 4 strings to match.
  14849. if (memcmp(NameR.data()+7, "l.r", 3))
  14850. break;
  14851. switch (NameR[10]) {
  14852. default: break;
  14853. case 'm': // 1 string to match.
  14854. if (memcmp(NameR.data()+11, ".ftz", 4))
  14855. break;
  14856. return Intrinsic::nvvm_f2ll_rm_ftz; // "vvm.f2ll.rm.ftz"
  14857. case 'n': // 1 string to match.
  14858. if (memcmp(NameR.data()+11, ".ftz", 4))
  14859. break;
  14860. return Intrinsic::nvvm_f2ll_rn_ftz; // "vvm.f2ll.rn.ftz"
  14861. case 'p': // 1 string to match.
  14862. if (memcmp(NameR.data()+11, ".ftz", 4))
  14863. break;
  14864. return Intrinsic::nvvm_f2ll_rp_ftz; // "vvm.f2ll.rp.ftz"
  14865. case 'z': // 1 string to match.
  14866. if (memcmp(NameR.data()+11, ".ftz", 4))
  14867. break;
  14868. return Intrinsic::nvvm_f2ll_rz_ftz; // "vvm.f2ll.rz.ftz"
  14869. }
  14870. break;
  14871. case 'u': // 4 strings to match.
  14872. if (memcmp(NameR.data()+7, "i.r", 3))
  14873. break;
  14874. switch (NameR[10]) {
  14875. default: break;
  14876. case 'm': // 1 string to match.
  14877. if (memcmp(NameR.data()+11, ".ftz", 4))
  14878. break;
  14879. return Intrinsic::nvvm_f2ui_rm_ftz; // "vvm.f2ui.rm.ftz"
  14880. case 'n': // 1 string to match.
  14881. if (memcmp(NameR.data()+11, ".ftz", 4))
  14882. break;
  14883. return Intrinsic::nvvm_f2ui_rn_ftz; // "vvm.f2ui.rn.ftz"
  14884. case 'p': // 1 string to match.
  14885. if (memcmp(NameR.data()+11, ".ftz", 4))
  14886. break;
  14887. return Intrinsic::nvvm_f2ui_rp_ftz; // "vvm.f2ui.rp.ftz"
  14888. case 'z': // 1 string to match.
  14889. if (memcmp(NameR.data()+11, ".ftz", 4))
  14890. break;
  14891. return Intrinsic::nvvm_f2ui_rz_ftz; // "vvm.f2ui.rz.ftz"
  14892. }
  14893. break;
  14894. }
  14895. break;
  14896. case 'l': // 1 string to match.
  14897. if (memcmp(NameR.data()+6, "oor.ftz.f", 9))
  14898. break;
  14899. return Intrinsic::nvvm_floor_ftz_f; // "vvm.floor.ftz.f"
  14900. }
  14901. break;
  14902. case 'm': // 1 string to match.
  14903. if (memcmp(NameR.data()+5, "ove.double", 10))
  14904. break;
  14905. return Intrinsic::nvvm_move_double; // "vvm.move.double"
  14906. case 'r': // 1 string to match.
  14907. if (memcmp(NameR.data()+5, "ound.ftz.f", 10))
  14908. break;
  14909. return Intrinsic::nvvm_round_ftz_f; // "vvm.round.ftz.f"
  14910. case 't': // 1 string to match.
  14911. if (memcmp(NameR.data()+5, "runc.ftz.f", 10))
  14912. break;
  14913. return Intrinsic::nvvm_trunc_ftz_f; // "vvm.trunc.ftz.f"
  14914. }
  14915. break;
  14916. case 16: // 34 strings to match.
  14917. if (memcmp(NameR.data()+0, "vvm.", 4))
  14918. break;
  14919. switch (NameR[4]) {
  14920. default: break;
  14921. case 'a': // 4 strings to match.
  14922. if (memcmp(NameR.data()+5, "dd.r", 4))
  14923. break;
  14924. switch (NameR[9]) {
  14925. default: break;
  14926. case 'm': // 1 string to match.
  14927. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14928. break;
  14929. return Intrinsic::nvvm_add_rm_ftz_f; // "vvm.add.rm.ftz.f"
  14930. case 'n': // 1 string to match.
  14931. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14932. break;
  14933. return Intrinsic::nvvm_add_rn_ftz_f; // "vvm.add.rn.ftz.f"
  14934. case 'p': // 1 string to match.
  14935. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14936. break;
  14937. return Intrinsic::nvvm_add_rp_ftz_f; // "vvm.add.rp.ftz.f"
  14938. case 'z': // 1 string to match.
  14939. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14940. break;
  14941. return Intrinsic::nvvm_add_rz_ftz_f; // "vvm.add.rz.ftz.f"
  14942. }
  14943. break;
  14944. case 'b': // 3 strings to match.
  14945. switch (NameR[5]) {
  14946. default: break;
  14947. case 'a': // 1 string to match.
  14948. if (memcmp(NameR.data()+6, "rrier0.and", 10))
  14949. break;
  14950. return Intrinsic::nvvm_barrier0_and; // "vvm.barrier0.and"
  14951. case 'i': // 2 strings to match.
  14952. if (memcmp(NameR.data()+6, "tcast.", 6))
  14953. break;
  14954. switch (NameR[12]) {
  14955. default: break;
  14956. case 'd': // 1 string to match.
  14957. if (memcmp(NameR.data()+13, "2ll", 3))
  14958. break;
  14959. return Intrinsic::nvvm_bitcast_d2ll; // "vvm.bitcast.d2ll"
  14960. case 'l': // 1 string to match.
  14961. if (memcmp(NameR.data()+13, "l2d", 3))
  14962. break;
  14963. return Intrinsic::nvvm_bitcast_ll2d; // "vvm.bitcast.ll2d"
  14964. }
  14965. break;
  14966. }
  14967. break;
  14968. case 'c': // 1 string to match.
  14969. if (memcmp(NameR.data()+5, "os.approx.f", 11))
  14970. break;
  14971. return Intrinsic::nvvm_cos_approx_f; // "vvm.cos.approx.f"
  14972. case 'd': // 5 strings to match.
  14973. if (memcmp(NameR.data()+5, "iv.", 3))
  14974. break;
  14975. switch (NameR[8]) {
  14976. default: break;
  14977. case 'a': // 1 string to match.
  14978. if (memcmp(NameR.data()+9, "pprox.f", 7))
  14979. break;
  14980. return Intrinsic::nvvm_div_approx_f; // "vvm.div.approx.f"
  14981. case 'r': // 4 strings to match.
  14982. switch (NameR[9]) {
  14983. default: break;
  14984. case 'm': // 1 string to match.
  14985. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14986. break;
  14987. return Intrinsic::nvvm_div_rm_ftz_f; // "vvm.div.rm.ftz.f"
  14988. case 'n': // 1 string to match.
  14989. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14990. break;
  14991. return Intrinsic::nvvm_div_rn_ftz_f; // "vvm.div.rn.ftz.f"
  14992. case 'p': // 1 string to match.
  14993. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14994. break;
  14995. return Intrinsic::nvvm_div_rp_ftz_f; // "vvm.div.rp.ftz.f"
  14996. case 'z': // 1 string to match.
  14997. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14998. break;
  14999. return Intrinsic::nvvm_div_rz_ftz_f; // "vvm.div.rz.ftz.f"
  15000. }
  15001. break;
  15002. }
  15003. break;
  15004. case 'e': // 2 strings to match.
  15005. if (memcmp(NameR.data()+5, "x2.approx.", 10))
  15006. break;
  15007. switch (NameR[15]) {
  15008. default: break;
  15009. case 'd': // 1 string to match.
  15010. return Intrinsic::nvvm_ex2_approx_d; // "vvm.ex2.approx.d"
  15011. case 'f': // 1 string to match.
  15012. return Intrinsic::nvvm_ex2_approx_f; // "vvm.ex2.approx.f"
  15013. }
  15014. break;
  15015. case 'f': // 8 strings to match.
  15016. switch (NameR[5]) {
  15017. default: break;
  15018. case '2': // 4 strings to match.
  15019. if (memcmp(NameR.data()+6, "ull.r", 5))
  15020. break;
  15021. switch (NameR[11]) {
  15022. default: break;
  15023. case 'm': // 1 string to match.
  15024. if (memcmp(NameR.data()+12, ".ftz", 4))
  15025. break;
  15026. return Intrinsic::nvvm_f2ull_rm_ftz; // "vvm.f2ull.rm.ftz"
  15027. case 'n': // 1 string to match.
  15028. if (memcmp(NameR.data()+12, ".ftz", 4))
  15029. break;
  15030. return Intrinsic::nvvm_f2ull_rn_ftz; // "vvm.f2ull.rn.ftz"
  15031. case 'p': // 1 string to match.
  15032. if (memcmp(NameR.data()+12, ".ftz", 4))
  15033. break;
  15034. return Intrinsic::nvvm_f2ull_rp_ftz; // "vvm.f2ull.rp.ftz"
  15035. case 'z': // 1 string to match.
  15036. if (memcmp(NameR.data()+12, ".ftz", 4))
  15037. break;
  15038. return Intrinsic::nvvm_f2ull_rz_ftz; // "vvm.f2ull.rz.ftz"
  15039. }
  15040. break;
  15041. case 'm': // 4 strings to match.
  15042. if (memcmp(NameR.data()+6, "a.r", 3))
  15043. break;
  15044. switch (NameR[9]) {
  15045. default: break;
  15046. case 'm': // 1 string to match.
  15047. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15048. break;
  15049. return Intrinsic::nvvm_fma_rm_ftz_f; // "vvm.fma.rm.ftz.f"
  15050. case 'n': // 1 string to match.
  15051. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15052. break;
  15053. return Intrinsic::nvvm_fma_rn_ftz_f; // "vvm.fma.rn.ftz.f"
  15054. case 'p': // 1 string to match.
  15055. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15056. break;
  15057. return Intrinsic::nvvm_fma_rp_ftz_f; // "vvm.fma.rp.ftz.f"
  15058. case 'z': // 1 string to match.
  15059. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15060. break;
  15061. return Intrinsic::nvvm_fma_rz_ftz_f; // "vvm.fma.rz.ftz.f"
  15062. }
  15063. break;
  15064. }
  15065. break;
  15066. case 'l': // 2 strings to match.
  15067. if (memcmp(NameR.data()+5, "g2.approx.", 10))
  15068. break;
  15069. switch (NameR[15]) {
  15070. default: break;
  15071. case 'd': // 1 string to match.
  15072. return Intrinsic::nvvm_lg2_approx_d; // "vvm.lg2.approx.d"
  15073. case 'f': // 1 string to match.
  15074. return Intrinsic::nvvm_lg2_approx_f; // "vvm.lg2.approx.f"
  15075. }
  15076. break;
  15077. case 'm': // 4 strings to match.
  15078. if (memcmp(NameR.data()+5, "ul.r", 4))
  15079. break;
  15080. switch (NameR[9]) {
  15081. default: break;
  15082. case 'm': // 1 string to match.
  15083. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15084. break;
  15085. return Intrinsic::nvvm_mul_rm_ftz_f; // "vvm.mul.rm.ftz.f"
  15086. case 'n': // 1 string to match.
  15087. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15088. break;
  15089. return Intrinsic::nvvm_mul_rn_ftz_f; // "vvm.mul.rn.ftz.f"
  15090. case 'p': // 1 string to match.
  15091. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15092. break;
  15093. return Intrinsic::nvvm_mul_rp_ftz_f; // "vvm.mul.rp.ftz.f"
  15094. case 'z': // 1 string to match.
  15095. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15096. break;
  15097. return Intrinsic::nvvm_mul_rz_ftz_f; // "vvm.mul.rz.ftz.f"
  15098. }
  15099. break;
  15100. case 'r': // 4 strings to match.
  15101. if (memcmp(NameR.data()+5, "cp.r", 4))
  15102. break;
  15103. switch (NameR[9]) {
  15104. default: break;
  15105. case 'm': // 1 string to match.
  15106. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15107. break;
  15108. return Intrinsic::nvvm_rcp_rm_ftz_f; // "vvm.rcp.rm.ftz.f"
  15109. case 'n': // 1 string to match.
  15110. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15111. break;
  15112. return Intrinsic::nvvm_rcp_rn_ftz_f; // "vvm.rcp.rn.ftz.f"
  15113. case 'p': // 1 string to match.
  15114. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15115. break;
  15116. return Intrinsic::nvvm_rcp_rp_ftz_f; // "vvm.rcp.rp.ftz.f"
  15117. case 'z': // 1 string to match.
  15118. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15119. break;
  15120. return Intrinsic::nvvm_rcp_rz_ftz_f; // "vvm.rcp.rz.ftz.f"
  15121. }
  15122. break;
  15123. case 's': // 1 string to match.
  15124. if (memcmp(NameR.data()+5, "in.approx.f", 11))
  15125. break;
  15126. return Intrinsic::nvvm_sin_approx_f; // "vvm.sin.approx.f"
  15127. }
  15128. break;
  15129. case 17: // 6 strings to match.
  15130. if (memcmp(NameR.data()+0, "vvm.", 4))
  15131. break;
  15132. switch (NameR[4]) {
  15133. default: break;
  15134. case 'b': // 1 string to match.
  15135. if (memcmp(NameR.data()+5, "arrier0.popc", 12))
  15136. break;
  15137. return Intrinsic::nvvm_barrier0_popc; // "vvm.barrier0.popc"
  15138. case 's': // 5 strings to match.
  15139. if (memcmp(NameR.data()+5, "qrt.", 4))
  15140. break;
  15141. switch (NameR[9]) {
  15142. default: break;
  15143. case 'a': // 1 string to match.
  15144. if (memcmp(NameR.data()+10, "pprox.f", 7))
  15145. break;
  15146. return Intrinsic::nvvm_sqrt_approx_f; // "vvm.sqrt.approx.f"
  15147. case 'r': // 4 strings to match.
  15148. switch (NameR[10]) {
  15149. default: break;
  15150. case 'm': // 1 string to match.
  15151. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15152. break;
  15153. return Intrinsic::nvvm_sqrt_rm_ftz_f; // "vvm.sqrt.rm.ftz.f"
  15154. case 'n': // 1 string to match.
  15155. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15156. break;
  15157. return Intrinsic::nvvm_sqrt_rn_ftz_f; // "vvm.sqrt.rn.ftz.f"
  15158. case 'p': // 1 string to match.
  15159. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15160. break;
  15161. return Intrinsic::nvvm_sqrt_rp_ftz_f; // "vvm.sqrt.rp.ftz.f"
  15162. case 'z': // 1 string to match.
  15163. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15164. break;
  15165. return Intrinsic::nvvm_sqrt_rz_ftz_f; // "vvm.sqrt.rz.ftz.f"
  15166. }
  15167. break;
  15168. }
  15169. break;
  15170. }
  15171. break;
  15172. case 18: // 3 strings to match.
  15173. if (memcmp(NameR.data()+0, "vvm.", 4))
  15174. break;
  15175. switch (NameR[4]) {
  15176. default: break;
  15177. case 'r': // 2 strings to match.
  15178. if (memcmp(NameR.data()+5, "sqrt.approx.", 12))
  15179. break;
  15180. switch (NameR[17]) {
  15181. default: break;
  15182. case 'd': // 1 string to match.
  15183. return Intrinsic::nvvm_rsqrt_approx_d; // "vvm.rsqrt.approx.d"
  15184. case 'f': // 1 string to match.
  15185. return Intrinsic::nvvm_rsqrt_approx_f; // "vvm.rsqrt.approx.f"
  15186. }
  15187. break;
  15188. case 's': // 1 string to match.
  15189. if (memcmp(NameR.data()+5, "aturate.ftz.f", 13))
  15190. break;
  15191. return Intrinsic::nvvm_saturate_ftz_f; // "vvm.saturate.ftz.f"
  15192. }
  15193. break;
  15194. case 20: // 6 strings to match.
  15195. if (memcmp(NameR.data()+0, "vvm.", 4))
  15196. break;
  15197. switch (NameR[4]) {
  15198. default: break;
  15199. case 'c': // 1 string to match.
  15200. if (memcmp(NameR.data()+5, "os.approx.ftz.f", 15))
  15201. break;
  15202. return Intrinsic::nvvm_cos_approx_ftz_f; // "vvm.cos.approx.ftz.f"
  15203. case 'd': // 1 string to match.
  15204. if (memcmp(NameR.data()+5, "iv.approx.ftz.f", 15))
  15205. break;
  15206. return Intrinsic::nvvm_div_approx_ftz_f; // "vvm.div.approx.ftz.f"
  15207. case 'e': // 1 string to match.
  15208. if (memcmp(NameR.data()+5, "x2.approx.ftz.f", 15))
  15209. break;
  15210. return Intrinsic::nvvm_ex2_approx_ftz_f; // "vvm.ex2.approx.ftz.f"
  15211. case 'l': // 1 string to match.
  15212. if (memcmp(NameR.data()+5, "g2.approx.ftz.f", 15))
  15213. break;
  15214. return Intrinsic::nvvm_lg2_approx_ftz_f; // "vvm.lg2.approx.ftz.f"
  15215. case 'r': // 1 string to match.
  15216. if (memcmp(NameR.data()+5, "cp.approx.ftz.d", 15))
  15217. break;
  15218. return Intrinsic::nvvm_rcp_approx_ftz_d; // "vvm.rcp.approx.ftz.d"
  15219. case 's': // 1 string to match.
  15220. if (memcmp(NameR.data()+5, "in.approx.ftz.f", 15))
  15221. break;
  15222. return Intrinsic::nvvm_sin_approx_ftz_f; // "vvm.sin.approx.ftz.f"
  15223. }
  15224. break;
  15225. case 21: // 1 string to match.
  15226. if (memcmp(NameR.data()+0, "vvm.sqrt.approx.ftz.f", 21))
  15227. break;
  15228. return Intrinsic::nvvm_sqrt_approx_ftz_f; // "vvm.sqrt.approx.ftz.f"
  15229. case 22: // 1 string to match.
  15230. if (memcmp(NameR.data()+0, "vvm.rsqrt.approx.ftz.f", 22))
  15231. break;
  15232. return Intrinsic::nvvm_rsqrt_approx_ftz_f; // "vvm.rsqrt.approx.ftz.f"
  15233. case 23: // 3 strings to match.
  15234. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.tid.", 22))
  15235. break;
  15236. switch (NameR[22]) {
  15237. default: break;
  15238. case 'x': // 1 string to match.
  15239. return Intrinsic::nvvm_read_ptx_sreg_tid_x; // "vvm.read.ptx.sreg.tid.x"
  15240. case 'y': // 1 string to match.
  15241. return Intrinsic::nvvm_read_ptx_sreg_tid_y; // "vvm.read.ptx.sreg.tid.y"
  15242. case 'z': // 1 string to match.
  15243. return Intrinsic::nvvm_read_ptx_sreg_tid_z; // "vvm.read.ptx.sreg.tid.z"
  15244. }
  15245. break;
  15246. case 24: // 3 strings to match.
  15247. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.ntid.", 23))
  15248. break;
  15249. switch (NameR[23]) {
  15250. default: break;
  15251. case 'x': // 1 string to match.
  15252. return Intrinsic::nvvm_read_ptx_sreg_ntid_x; // "vvm.read.ptx.sreg.ntid.x"
  15253. case 'y': // 1 string to match.
  15254. return Intrinsic::nvvm_read_ptx_sreg_ntid_y; // "vvm.read.ptx.sreg.ntid.y"
  15255. case 'z': // 1 string to match.
  15256. return Intrinsic::nvvm_read_ptx_sreg_ntid_z; // "vvm.read.ptx.sreg.ntid.z"
  15257. }
  15258. break;
  15259. case 25: // 3 strings to match.
  15260. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.ctaid.", 24))
  15261. break;
  15262. switch (NameR[24]) {
  15263. default: break;
  15264. case 'x': // 1 string to match.
  15265. return Intrinsic::nvvm_read_ptx_sreg_ctaid_x; // "vvm.read.ptx.sreg.ctaid.x"
  15266. case 'y': // 1 string to match.
  15267. return Intrinsic::nvvm_read_ptx_sreg_ctaid_y; // "vvm.read.ptx.sreg.ctaid.y"
  15268. case 'z': // 1 string to match.
  15269. return Intrinsic::nvvm_read_ptx_sreg_ctaid_z; // "vvm.read.ptx.sreg.ctaid.z"
  15270. }
  15271. break;
  15272. case 26: // 4 strings to match.
  15273. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.", 18))
  15274. break;
  15275. switch (NameR[18]) {
  15276. default: break;
  15277. case 'n': // 3 strings to match.
  15278. if (memcmp(NameR.data()+19, "ctaid.", 6))
  15279. break;
  15280. switch (NameR[25]) {
  15281. default: break;
  15282. case 'x': // 1 string to match.
  15283. return Intrinsic::nvvm_read_ptx_sreg_nctaid_x; // "vvm.read.ptx.sreg.nctaid.x"
  15284. case 'y': // 1 string to match.
  15285. return Intrinsic::nvvm_read_ptx_sreg_nctaid_y; // "vvm.read.ptx.sreg.nctaid.y"
  15286. case 'z': // 1 string to match.
  15287. return Intrinsic::nvvm_read_ptx_sreg_nctaid_z; // "vvm.read.ptx.sreg.nctaid.z"
  15288. }
  15289. break;
  15290. case 'w': // 1 string to match.
  15291. if (memcmp(NameR.data()+19, "arpsize", 7))
  15292. break;
  15293. return Intrinsic::nvvm_read_ptx_sreg_warpsize; // "vvm.read.ptx.sreg.warpsize"
  15294. }
  15295. break;
  15296. }
  15297. break; // end of 'n' case.
  15298. case 'o':
  15299. if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize;
  15300. break; // end of 'o' case.
  15301. case 'p':
  15302. if (NameR.startswith("ow.")) return Intrinsic::pow;
  15303. if (NameR.startswith("owi.")) return Intrinsic::powi;
  15304. if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation;
  15305. switch (NameR.size()) {
  15306. default: break;
  15307. case 7: // 8 strings to match.
  15308. switch (NameR[0]) {
  15309. default: break;
  15310. case 'c': // 1 string to match.
  15311. if (memcmp(NameR.data()+1, "marker", 6))
  15312. break;
  15313. return Intrinsic::pcmarker; // "cmarker"
  15314. case 'p': // 6 strings to match.
  15315. if (memcmp(NameR.data()+1, "c.", 2))
  15316. break;
  15317. switch (NameR[3]) {
  15318. default: break;
  15319. case 'd': // 5 strings to match.
  15320. if (memcmp(NameR.data()+4, "cb", 2))
  15321. break;
  15322. switch (NameR[6]) {
  15323. default: break;
  15324. case 'a': // 1 string to match.
  15325. return Intrinsic::ppc_dcba; // "pc.dcba"
  15326. case 'f': // 1 string to match.
  15327. return Intrinsic::ppc_dcbf; // "pc.dcbf"
  15328. case 'i': // 1 string to match.
  15329. return Intrinsic::ppc_dcbi; // "pc.dcbi"
  15330. case 't': // 1 string to match.
  15331. return Intrinsic::ppc_dcbt; // "pc.dcbt"
  15332. case 'z': // 1 string to match.
  15333. return Intrinsic::ppc_dcbz; // "pc.dcbz"
  15334. }
  15335. break;
  15336. case 's': // 1 string to match.
  15337. if (memcmp(NameR.data()+4, "ync", 3))
  15338. break;
  15339. return Intrinsic::ppc_sync; // "pc.sync"
  15340. }
  15341. break;
  15342. case 'r': // 1 string to match.
  15343. if (memcmp(NameR.data()+1, "efetch", 6))
  15344. break;
  15345. return Intrinsic::prefetch; // "refetch"
  15346. }
  15347. break;
  15348. case 8: // 2 strings to match.
  15349. if (memcmp(NameR.data()+0, "pc.dcb", 6))
  15350. break;
  15351. switch (NameR[6]) {
  15352. default: break;
  15353. case 's': // 1 string to match.
  15354. if (NameR[7] != 't')
  15355. break;
  15356. return Intrinsic::ppc_dcbst; // "pc.dcbst"
  15357. case 'z': // 1 string to match.
  15358. if (NameR[7] != 'l')
  15359. break;
  15360. return Intrinsic::ppc_dcbzl; // "pc.dcbzl"
  15361. }
  15362. break;
  15363. case 9: // 1 string to match.
  15364. if (memcmp(NameR.data()+0, "pc.dcbtst", 9))
  15365. break;
  15366. return Intrinsic::ppc_dcbtst; // "pc.dcbtst"
  15367. case 11: // 5 strings to match.
  15368. if (memcmp(NameR.data()+0, "tx.", 3))
  15369. break;
  15370. switch (NameR[3]) {
  15371. default: break;
  15372. case 'b': // 1 string to match.
  15373. if (memcmp(NameR.data()+4, "ar.sync", 7))
  15374. break;
  15375. return Intrinsic::ptx_bar_sync; // "tx.bar.sync"
  15376. case 'r': // 4 strings to match.
  15377. if (memcmp(NameR.data()+4, "ead.pm", 6))
  15378. break;
  15379. switch (NameR[10]) {
  15380. default: break;
  15381. case '0': // 1 string to match.
  15382. return Intrinsic::ptx_read_pm0; // "tx.read.pm0"
  15383. case '1': // 1 string to match.
  15384. return Intrinsic::ptx_read_pm1; // "tx.read.pm1"
  15385. case '2': // 1 string to match.
  15386. return Intrinsic::ptx_read_pm2; // "tx.read.pm2"
  15387. case '3': // 1 string to match.
  15388. return Intrinsic::ptx_read_pm3; // "tx.read.pm3"
  15389. }
  15390. break;
  15391. }
  15392. break;
  15393. case 12: // 1 string to match.
  15394. if (memcmp(NameR.data()+0, "tx.read.smid", 12))
  15395. break;
  15396. return Intrinsic::ptx_read_smid; // "tx.read.smid"
  15397. case 13: // 6 strings to match.
  15398. if (memcmp(NameR.data()+0, "tx.read.", 8))
  15399. break;
  15400. switch (NameR[8]) {
  15401. default: break;
  15402. case 'c': // 1 string to match.
  15403. if (memcmp(NameR.data()+9, "lock", 4))
  15404. break;
  15405. return Intrinsic::ptx_read_clock; // "tx.read.clock"
  15406. case 'n': // 1 string to match.
  15407. if (memcmp(NameR.data()+9, "smid", 4))
  15408. break;
  15409. return Intrinsic::ptx_read_nsmid; // "tx.read.nsmid"
  15410. case 't': // 4 strings to match.
  15411. if (memcmp(NameR.data()+9, "id.", 3))
  15412. break;
  15413. switch (NameR[12]) {
  15414. default: break;
  15415. case 'w': // 1 string to match.
  15416. return Intrinsic::ptx_read_tid_w; // "tx.read.tid.w"
  15417. case 'x': // 1 string to match.
  15418. return Intrinsic::ptx_read_tid_x; // "tx.read.tid.x"
  15419. case 'y': // 1 string to match.
  15420. return Intrinsic::ptx_read_tid_y; // "tx.read.tid.y"
  15421. case 'z': // 1 string to match.
  15422. return Intrinsic::ptx_read_tid_z; // "tx.read.tid.z"
  15423. }
  15424. break;
  15425. }
  15426. break;
  15427. case 14: // 12 strings to match.
  15428. switch (NameR[0]) {
  15429. default: break;
  15430. case 'p': // 5 strings to match.
  15431. if (memcmp(NameR.data()+1, "c.altivec.", 10))
  15432. break;
  15433. switch (NameR[11]) {
  15434. default: break;
  15435. case 'd': // 2 strings to match.
  15436. if (NameR[12] != 's')
  15437. break;
  15438. switch (NameR[13]) {
  15439. default: break;
  15440. case 's': // 1 string to match.
  15441. return Intrinsic::ppc_altivec_dss; // "pc.altivec.dss"
  15442. case 't': // 1 string to match.
  15443. return Intrinsic::ppc_altivec_dst; // "pc.altivec.dst"
  15444. }
  15445. break;
  15446. case 'l': // 1 string to match.
  15447. if (memcmp(NameR.data()+12, "vx", 2))
  15448. break;
  15449. return Intrinsic::ppc_altivec_lvx; // "pc.altivec.lvx"
  15450. case 'v': // 2 strings to match.
  15451. if (NameR[12] != 's')
  15452. break;
  15453. switch (NameR[13]) {
  15454. default: break;
  15455. case 'l': // 1 string to match.
  15456. return Intrinsic::ppc_altivec_vsl; // "pc.altivec.vsl"
  15457. case 'r': // 1 string to match.
  15458. return Intrinsic::ppc_altivec_vsr; // "pc.altivec.vsr"
  15459. }
  15460. break;
  15461. }
  15462. break;
  15463. case 't': // 7 strings to match.
  15464. if (memcmp(NameR.data()+1, "x.read.", 7))
  15465. break;
  15466. switch (NameR[8]) {
  15467. default: break;
  15468. case 'g': // 1 string to match.
  15469. if (memcmp(NameR.data()+9, "ridid", 5))
  15470. break;
  15471. return Intrinsic::ptx_read_gridid; // "tx.read.gridid"
  15472. case 'l': // 1 string to match.
  15473. if (memcmp(NameR.data()+9, "aneid", 5))
  15474. break;
  15475. return Intrinsic::ptx_read_laneid; // "tx.read.laneid"
  15476. case 'n': // 4 strings to match.
  15477. if (memcmp(NameR.data()+9, "tid.", 4))
  15478. break;
  15479. switch (NameR[13]) {
  15480. default: break;
  15481. case 'w': // 1 string to match.
  15482. return Intrinsic::ptx_read_ntid_w; // "tx.read.ntid.w"
  15483. case 'x': // 1 string to match.
  15484. return Intrinsic::ptx_read_ntid_x; // "tx.read.ntid.x"
  15485. case 'y': // 1 string to match.
  15486. return Intrinsic::ptx_read_ntid_y; // "tx.read.ntid.y"
  15487. case 'z': // 1 string to match.
  15488. return Intrinsic::ptx_read_ntid_z; // "tx.read.ntid.z"
  15489. }
  15490. break;
  15491. case 'w': // 1 string to match.
  15492. if (memcmp(NameR.data()+9, "arpid", 5))
  15493. break;
  15494. return Intrinsic::ptx_read_warpid; // "tx.read.warpid"
  15495. }
  15496. break;
  15497. }
  15498. break;
  15499. case 15: // 23 strings to match.
  15500. switch (NameR[0]) {
  15501. default: break;
  15502. case 'p': // 17 strings to match.
  15503. if (memcmp(NameR.data()+1, "c.altivec.", 10))
  15504. break;
  15505. switch (NameR[11]) {
  15506. default: break;
  15507. case 'd': // 1 string to match.
  15508. if (memcmp(NameR.data()+12, "stt", 3))
  15509. break;
  15510. return Intrinsic::ppc_altivec_dstt; // "pc.altivec.dstt"
  15511. case 'l': // 3 strings to match.
  15512. if (NameR[12] != 'v')
  15513. break;
  15514. switch (NameR[13]) {
  15515. default: break;
  15516. case 's': // 2 strings to match.
  15517. switch (NameR[14]) {
  15518. default: break;
  15519. case 'l': // 1 string to match.
  15520. return Intrinsic::ppc_altivec_lvsl; // "pc.altivec.lvsl"
  15521. case 'r': // 1 string to match.
  15522. return Intrinsic::ppc_altivec_lvsr; // "pc.altivec.lvsr"
  15523. }
  15524. break;
  15525. case 'x': // 1 string to match.
  15526. if (NameR[14] != 'l')
  15527. break;
  15528. return Intrinsic::ppc_altivec_lvxl; // "pc.altivec.lvxl"
  15529. }
  15530. break;
  15531. case 's': // 1 string to match.
  15532. if (memcmp(NameR.data()+12, "tvx", 3))
  15533. break;
  15534. return Intrinsic::ppc_altivec_stvx; // "pc.altivec.stvx"
  15535. case 'v': // 12 strings to match.
  15536. switch (NameR[12]) {
  15537. default: break;
  15538. case 'r': // 3 strings to match.
  15539. if (NameR[13] != 'l')
  15540. break;
  15541. switch (NameR[14]) {
  15542. default: break;
  15543. case 'b': // 1 string to match.
  15544. return Intrinsic::ppc_altivec_vrlb; // "pc.altivec.vrlb"
  15545. case 'h': // 1 string to match.
  15546. return Intrinsic::ppc_altivec_vrlh; // "pc.altivec.vrlh"
  15547. case 'w': // 1 string to match.
  15548. return Intrinsic::ppc_altivec_vrlw; // "pc.altivec.vrlw"
  15549. }
  15550. break;
  15551. case 's': // 9 strings to match.
  15552. switch (NameR[13]) {
  15553. default: break;
  15554. case 'e': // 1 string to match.
  15555. if (NameR[14] != 'l')
  15556. break;
  15557. return Intrinsic::ppc_altivec_vsel; // "pc.altivec.vsel"
  15558. case 'l': // 4 strings to match.
  15559. switch (NameR[14]) {
  15560. default: break;
  15561. case 'b': // 1 string to match.
  15562. return Intrinsic::ppc_altivec_vslb; // "pc.altivec.vslb"
  15563. case 'h': // 1 string to match.
  15564. return Intrinsic::ppc_altivec_vslh; // "pc.altivec.vslh"
  15565. case 'o': // 1 string to match.
  15566. return Intrinsic::ppc_altivec_vslo; // "pc.altivec.vslo"
  15567. case 'w': // 1 string to match.
  15568. return Intrinsic::ppc_altivec_vslw; // "pc.altivec.vslw"
  15569. }
  15570. break;
  15571. case 'r': // 4 strings to match.
  15572. switch (NameR[14]) {
  15573. default: break;
  15574. case 'b': // 1 string to match.
  15575. return Intrinsic::ppc_altivec_vsrb; // "pc.altivec.vsrb"
  15576. case 'h': // 1 string to match.
  15577. return Intrinsic::ppc_altivec_vsrh; // "pc.altivec.vsrh"
  15578. case 'o': // 1 string to match.
  15579. return Intrinsic::ppc_altivec_vsro; // "pc.altivec.vsro"
  15580. case 'w': // 1 string to match.
  15581. return Intrinsic::ppc_altivec_vsrw; // "pc.altivec.vsrw"
  15582. }
  15583. break;
  15584. }
  15585. break;
  15586. }
  15587. break;
  15588. }
  15589. break;
  15590. case 't': // 6 strings to match.
  15591. if (memcmp(NameR.data()+1, "x.read.", 7))
  15592. break;
  15593. switch (NameR[8]) {
  15594. default: break;
  15595. case 'c': // 5 strings to match.
  15596. switch (NameR[9]) {
  15597. default: break;
  15598. case 'l': // 1 string to match.
  15599. if (memcmp(NameR.data()+10, "ock64", 5))
  15600. break;
  15601. return Intrinsic::ptx_read_clock64; // "tx.read.clock64"
  15602. case 't': // 4 strings to match.
  15603. if (memcmp(NameR.data()+10, "aid.", 4))
  15604. break;
  15605. switch (NameR[14]) {
  15606. default: break;
  15607. case 'w': // 1 string to match.
  15608. return Intrinsic::ptx_read_ctaid_w; // "tx.read.ctaid.w"
  15609. case 'x': // 1 string to match.
  15610. return Intrinsic::ptx_read_ctaid_x; // "tx.read.ctaid.x"
  15611. case 'y': // 1 string to match.
  15612. return Intrinsic::ptx_read_ctaid_y; // "tx.read.ctaid.y"
  15613. case 'z': // 1 string to match.
  15614. return Intrinsic::ptx_read_ctaid_z; // "tx.read.ctaid.z"
  15615. }
  15616. break;
  15617. }
  15618. break;
  15619. case 'n': // 1 string to match.
  15620. if (memcmp(NameR.data()+9, "warpid", 6))
  15621. break;
  15622. return Intrinsic::ptx_read_nwarpid; // "tx.read.nwarpid"
  15623. }
  15624. break;
  15625. }
  15626. break;
  15627. case 16: // 21 strings to match.
  15628. switch (NameR[0]) {
  15629. default: break;
  15630. case 'p': // 17 strings to match.
  15631. if (memcmp(NameR.data()+1, "c.altivec.", 10))
  15632. break;
  15633. switch (NameR[11]) {
  15634. default: break;
  15635. case 'd': // 1 string to match.
  15636. if (memcmp(NameR.data()+12, "stst", 4))
  15637. break;
  15638. return Intrinsic::ppc_altivec_dstst; // "pc.altivec.dstst"
  15639. case 'l': // 3 strings to match.
  15640. if (memcmp(NameR.data()+12, "ve", 2))
  15641. break;
  15642. switch (NameR[14]) {
  15643. default: break;
  15644. case 'b': // 1 string to match.
  15645. if (NameR[15] != 'x')
  15646. break;
  15647. return Intrinsic::ppc_altivec_lvebx; // "pc.altivec.lvebx"
  15648. case 'h': // 1 string to match.
  15649. if (NameR[15] != 'x')
  15650. break;
  15651. return Intrinsic::ppc_altivec_lvehx; // "pc.altivec.lvehx"
  15652. case 'w': // 1 string to match.
  15653. if (NameR[15] != 'x')
  15654. break;
  15655. return Intrinsic::ppc_altivec_lvewx; // "pc.altivec.lvewx"
  15656. }
  15657. break;
  15658. case 's': // 1 string to match.
  15659. if (memcmp(NameR.data()+12, "tvxl", 4))
  15660. break;
  15661. return Intrinsic::ppc_altivec_stvxl; // "pc.altivec.stvxl"
  15662. case 'v': // 12 strings to match.
  15663. switch (NameR[12]) {
  15664. default: break;
  15665. case 'c': // 2 strings to match.
  15666. if (NameR[13] != 'f')
  15667. break;
  15668. switch (NameR[14]) {
  15669. default: break;
  15670. case 's': // 1 string to match.
  15671. if (NameR[15] != 'x')
  15672. break;
  15673. return Intrinsic::ppc_altivec_vcfsx; // "pc.altivec.vcfsx"
  15674. case 'u': // 1 string to match.
  15675. if (NameR[15] != 'x')
  15676. break;
  15677. return Intrinsic::ppc_altivec_vcfux; // "pc.altivec.vcfux"
  15678. }
  15679. break;
  15680. case 'p': // 2 strings to match.
  15681. switch (NameR[13]) {
  15682. default: break;
  15683. case 'e': // 1 string to match.
  15684. if (memcmp(NameR.data()+14, "rm", 2))
  15685. break;
  15686. return Intrinsic::ppc_altivec_vperm; // "pc.altivec.vperm"
  15687. case 'k': // 1 string to match.
  15688. if (memcmp(NameR.data()+14, "px", 2))
  15689. break;
  15690. return Intrinsic::ppc_altivec_vpkpx; // "pc.altivec.vpkpx"
  15691. }
  15692. break;
  15693. case 'r': // 5 strings to match.
  15694. switch (NameR[13]) {
  15695. default: break;
  15696. case 'e': // 1 string to match.
  15697. if (memcmp(NameR.data()+14, "fp", 2))
  15698. break;
  15699. return Intrinsic::ppc_altivec_vrefp; // "pc.altivec.vrefp"
  15700. case 'f': // 4 strings to match.
  15701. if (NameR[14] != 'i')
  15702. break;
  15703. switch (NameR[15]) {
  15704. default: break;
  15705. case 'm': // 1 string to match.
  15706. return Intrinsic::ppc_altivec_vrfim; // "pc.altivec.vrfim"
  15707. case 'n': // 1 string to match.
  15708. return Intrinsic::ppc_altivec_vrfin; // "pc.altivec.vrfin"
  15709. case 'p': // 1 string to match.
  15710. return Intrinsic::ppc_altivec_vrfip; // "pc.altivec.vrfip"
  15711. case 'z': // 1 string to match.
  15712. return Intrinsic::ppc_altivec_vrfiz; // "pc.altivec.vrfiz"
  15713. }
  15714. break;
  15715. }
  15716. break;
  15717. case 's': // 3 strings to match.
  15718. if (memcmp(NameR.data()+13, "ra", 2))
  15719. break;
  15720. switch (NameR[15]) {
  15721. default: break;
  15722. case 'b': // 1 string to match.
  15723. return Intrinsic::ppc_altivec_vsrab; // "pc.altivec.vsrab"
  15724. case 'h': // 1 string to match.
  15725. return Intrinsic::ppc_altivec_vsrah; // "pc.altivec.vsrah"
  15726. case 'w': // 1 string to match.
  15727. return Intrinsic::ppc_altivec_vsraw; // "pc.altivec.vsraw"
  15728. }
  15729. break;
  15730. }
  15731. break;
  15732. }
  15733. break;
  15734. case 't': // 4 strings to match.
  15735. if (memcmp(NameR.data()+1, "x.read.nctaid.", 14))
  15736. break;
  15737. switch (NameR[15]) {
  15738. default: break;
  15739. case 'w': // 1 string to match.
  15740. return Intrinsic::ptx_read_nctaid_w; // "tx.read.nctaid.w"
  15741. case 'x': // 1 string to match.
  15742. return Intrinsic::ptx_read_nctaid_x; // "tx.read.nctaid.x"
  15743. case 'y': // 1 string to match.
  15744. return Intrinsic::ptx_read_nctaid_y; // "tx.read.nctaid.y"
  15745. case 'z': // 1 string to match.
  15746. return Intrinsic::ptx_read_nctaid_z; // "tx.read.nctaid.z"
  15747. }
  15748. break;
  15749. }
  15750. break;
  15751. case 17: // 29 strings to match.
  15752. if (memcmp(NameR.data()+0, "pc.altivec.", 11))
  15753. break;
  15754. switch (NameR[11]) {
  15755. default: break;
  15756. case 'd': // 2 strings to match.
  15757. if (NameR[12] != 's')
  15758. break;
  15759. switch (NameR[13]) {
  15760. default: break;
  15761. case 's': // 1 string to match.
  15762. if (memcmp(NameR.data()+14, "all", 3))
  15763. break;
  15764. return Intrinsic::ppc_altivec_dssall; // "pc.altivec.dssall"
  15765. case 't': // 1 string to match.
  15766. if (memcmp(NameR.data()+14, "stt", 3))
  15767. break;
  15768. return Intrinsic::ppc_altivec_dststt; // "pc.altivec.dststt"
  15769. }
  15770. break;
  15771. case 'm': // 2 strings to match.
  15772. switch (NameR[12]) {
  15773. default: break;
  15774. case 'f': // 1 string to match.
  15775. if (memcmp(NameR.data()+13, "vscr", 4))
  15776. break;
  15777. return Intrinsic::ppc_altivec_mfvscr; // "pc.altivec.mfvscr"
  15778. case 't': // 1 string to match.
  15779. if (memcmp(NameR.data()+13, "vscr", 4))
  15780. break;
  15781. return Intrinsic::ppc_altivec_mtvscr; // "pc.altivec.mtvscr"
  15782. }
  15783. break;
  15784. case 's': // 3 strings to match.
  15785. if (memcmp(NameR.data()+12, "tve", 3))
  15786. break;
  15787. switch (NameR[15]) {
  15788. default: break;
  15789. case 'b': // 1 string to match.
  15790. if (NameR[16] != 'x')
  15791. break;
  15792. return Intrinsic::ppc_altivec_stvebx; // "pc.altivec.stvebx"
  15793. case 'h': // 1 string to match.
  15794. if (NameR[16] != 'x')
  15795. break;
  15796. return Intrinsic::ppc_altivec_stvehx; // "pc.altivec.stvehx"
  15797. case 'w': // 1 string to match.
  15798. if (NameR[16] != 'x')
  15799. break;
  15800. return Intrinsic::ppc_altivec_stvewx; // "pc.altivec.stvewx"
  15801. }
  15802. break;
  15803. case 'v': // 22 strings to match.
  15804. switch (NameR[12]) {
  15805. default: break;
  15806. case 'a': // 6 strings to match.
  15807. if (memcmp(NameR.data()+13, "vg", 2))
  15808. break;
  15809. switch (NameR[15]) {
  15810. default: break;
  15811. case 's': // 3 strings to match.
  15812. switch (NameR[16]) {
  15813. default: break;
  15814. case 'b': // 1 string to match.
  15815. return Intrinsic::ppc_altivec_vavgsb; // "pc.altivec.vavgsb"
  15816. case 'h': // 1 string to match.
  15817. return Intrinsic::ppc_altivec_vavgsh; // "pc.altivec.vavgsh"
  15818. case 'w': // 1 string to match.
  15819. return Intrinsic::ppc_altivec_vavgsw; // "pc.altivec.vavgsw"
  15820. }
  15821. break;
  15822. case 'u': // 3 strings to match.
  15823. switch (NameR[16]) {
  15824. default: break;
  15825. case 'b': // 1 string to match.
  15826. return Intrinsic::ppc_altivec_vavgub; // "pc.altivec.vavgub"
  15827. case 'h': // 1 string to match.
  15828. return Intrinsic::ppc_altivec_vavguh; // "pc.altivec.vavguh"
  15829. case 'w': // 1 string to match.
  15830. return Intrinsic::ppc_altivec_vavguw; // "pc.altivec.vavguw"
  15831. }
  15832. break;
  15833. }
  15834. break;
  15835. case 'c': // 2 strings to match.
  15836. if (NameR[13] != 't')
  15837. break;
  15838. switch (NameR[14]) {
  15839. default: break;
  15840. case 's': // 1 string to match.
  15841. if (memcmp(NameR.data()+15, "xs", 2))
  15842. break;
  15843. return Intrinsic::ppc_altivec_vctsxs; // "pc.altivec.vctsxs"
  15844. case 'u': // 1 string to match.
  15845. if (memcmp(NameR.data()+15, "xs", 2))
  15846. break;
  15847. return Intrinsic::ppc_altivec_vctuxs; // "pc.altivec.vctuxs"
  15848. }
  15849. break;
  15850. case 'm': // 14 strings to match.
  15851. switch (NameR[13]) {
  15852. default: break;
  15853. case 'a': // 7 strings to match.
  15854. if (NameR[14] != 'x')
  15855. break;
  15856. switch (NameR[15]) {
  15857. default: break;
  15858. case 'f': // 1 string to match.
  15859. if (NameR[16] != 'p')
  15860. break;
  15861. return Intrinsic::ppc_altivec_vmaxfp; // "pc.altivec.vmaxfp"
  15862. case 's': // 3 strings to match.
  15863. switch (NameR[16]) {
  15864. default: break;
  15865. case 'b': // 1 string to match.
  15866. return Intrinsic::ppc_altivec_vmaxsb; // "pc.altivec.vmaxsb"
  15867. case 'h': // 1 string to match.
  15868. return Intrinsic::ppc_altivec_vmaxsh; // "pc.altivec.vmaxsh"
  15869. case 'w': // 1 string to match.
  15870. return Intrinsic::ppc_altivec_vmaxsw; // "pc.altivec.vmaxsw"
  15871. }
  15872. break;
  15873. case 'u': // 3 strings to match.
  15874. switch (NameR[16]) {
  15875. default: break;
  15876. case 'b': // 1 string to match.
  15877. return Intrinsic::ppc_altivec_vmaxub; // "pc.altivec.vmaxub"
  15878. case 'h': // 1 string to match.
  15879. return Intrinsic::ppc_altivec_vmaxuh; // "pc.altivec.vmaxuh"
  15880. case 'w': // 1 string to match.
  15881. return Intrinsic::ppc_altivec_vmaxuw; // "pc.altivec.vmaxuw"
  15882. }
  15883. break;
  15884. }
  15885. break;
  15886. case 'i': // 7 strings to match.
  15887. if (NameR[14] != 'n')
  15888. break;
  15889. switch (NameR[15]) {
  15890. default: break;
  15891. case 'f': // 1 string to match.
  15892. if (NameR[16] != 'p')
  15893. break;
  15894. return Intrinsic::ppc_altivec_vminfp; // "pc.altivec.vminfp"
  15895. case 's': // 3 strings to match.
  15896. switch (NameR[16]) {
  15897. default: break;
  15898. case 'b': // 1 string to match.
  15899. return Intrinsic::ppc_altivec_vminsb; // "pc.altivec.vminsb"
  15900. case 'h': // 1 string to match.
  15901. return Intrinsic::ppc_altivec_vminsh; // "pc.altivec.vminsh"
  15902. case 'w': // 1 string to match.
  15903. return Intrinsic::ppc_altivec_vminsw; // "pc.altivec.vminsw"
  15904. }
  15905. break;
  15906. case 'u': // 3 strings to match.
  15907. switch (NameR[16]) {
  15908. default: break;
  15909. case 'b': // 1 string to match.
  15910. return Intrinsic::ppc_altivec_vminub; // "pc.altivec.vminub"
  15911. case 'h': // 1 string to match.
  15912. return Intrinsic::ppc_altivec_vminuh; // "pc.altivec.vminuh"
  15913. case 'w': // 1 string to match.
  15914. return Intrinsic::ppc_altivec_vminuw; // "pc.altivec.vminuw"
  15915. }
  15916. break;
  15917. }
  15918. break;
  15919. }
  15920. break;
  15921. }
  15922. break;
  15923. }
  15924. break;
  15925. case 18: // 38 strings to match.
  15926. if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
  15927. break;
  15928. switch (NameR[12]) {
  15929. default: break;
  15930. case 'a': // 7 strings to match.
  15931. if (memcmp(NameR.data()+13, "dd", 2))
  15932. break;
  15933. switch (NameR[15]) {
  15934. default: break;
  15935. case 'c': // 1 string to match.
  15936. if (memcmp(NameR.data()+16, "uw", 2))
  15937. break;
  15938. return Intrinsic::ppc_altivec_vaddcuw; // "pc.altivec.vaddcuw"
  15939. case 's': // 3 strings to match.
  15940. switch (NameR[16]) {
  15941. default: break;
  15942. case 'b': // 1 string to match.
  15943. if (NameR[17] != 's')
  15944. break;
  15945. return Intrinsic::ppc_altivec_vaddsbs; // "pc.altivec.vaddsbs"
  15946. case 'h': // 1 string to match.
  15947. if (NameR[17] != 's')
  15948. break;
  15949. return Intrinsic::ppc_altivec_vaddshs; // "pc.altivec.vaddshs"
  15950. case 'w': // 1 string to match.
  15951. if (NameR[17] != 's')
  15952. break;
  15953. return Intrinsic::ppc_altivec_vaddsws; // "pc.altivec.vaddsws"
  15954. }
  15955. break;
  15956. case 'u': // 3 strings to match.
  15957. switch (NameR[16]) {
  15958. default: break;
  15959. case 'b': // 1 string to match.
  15960. if (NameR[17] != 's')
  15961. break;
  15962. return Intrinsic::ppc_altivec_vaddubs; // "pc.altivec.vaddubs"
  15963. case 'h': // 1 string to match.
  15964. if (NameR[17] != 's')
  15965. break;
  15966. return Intrinsic::ppc_altivec_vadduhs; // "pc.altivec.vadduhs"
  15967. case 'w': // 1 string to match.
  15968. if (NameR[17] != 's')
  15969. break;
  15970. return Intrinsic::ppc_altivec_vadduws; // "pc.altivec.vadduws"
  15971. }
  15972. break;
  15973. }
  15974. break;
  15975. case 'c': // 1 string to match.
  15976. if (memcmp(NameR.data()+13, "mpbfp", 5))
  15977. break;
  15978. return Intrinsic::ppc_altivec_vcmpbfp; // "pc.altivec.vcmpbfp"
  15979. case 'l': // 1 string to match.
  15980. if (memcmp(NameR.data()+13, "ogefp", 5))
  15981. break;
  15982. return Intrinsic::ppc_altivec_vlogefp; // "pc.altivec.vlogefp"
  15983. case 'm': // 9 strings to match.
  15984. switch (NameR[13]) {
  15985. default: break;
  15986. case 'a': // 1 string to match.
  15987. if (memcmp(NameR.data()+14, "ddfp", 4))
  15988. break;
  15989. return Intrinsic::ppc_altivec_vmaddfp; // "pc.altivec.vmaddfp"
  15990. case 'u': // 8 strings to match.
  15991. if (NameR[14] != 'l')
  15992. break;
  15993. switch (NameR[15]) {
  15994. default: break;
  15995. case 'e': // 4 strings to match.
  15996. switch (NameR[16]) {
  15997. default: break;
  15998. case 's': // 2 strings to match.
  15999. switch (NameR[17]) {
  16000. default: break;
  16001. case 'b': // 1 string to match.
  16002. return Intrinsic::ppc_altivec_vmulesb; // "pc.altivec.vmulesb"
  16003. case 'h': // 1 string to match.
  16004. return Intrinsic::ppc_altivec_vmulesh; // "pc.altivec.vmulesh"
  16005. }
  16006. break;
  16007. case 'u': // 2 strings to match.
  16008. switch (NameR[17]) {
  16009. default: break;
  16010. case 'b': // 1 string to match.
  16011. return Intrinsic::ppc_altivec_vmuleub; // "pc.altivec.vmuleub"
  16012. case 'h': // 1 string to match.
  16013. return Intrinsic::ppc_altivec_vmuleuh; // "pc.altivec.vmuleuh"
  16014. }
  16015. break;
  16016. }
  16017. break;
  16018. case 'o': // 4 strings to match.
  16019. switch (NameR[16]) {
  16020. default: break;
  16021. case 's': // 2 strings to match.
  16022. switch (NameR[17]) {
  16023. default: break;
  16024. case 'b': // 1 string to match.
  16025. return Intrinsic::ppc_altivec_vmulosb; // "pc.altivec.vmulosb"
  16026. case 'h': // 1 string to match.
  16027. return Intrinsic::ppc_altivec_vmulosh; // "pc.altivec.vmulosh"
  16028. }
  16029. break;
  16030. case 'u': // 2 strings to match.
  16031. switch (NameR[17]) {
  16032. default: break;
  16033. case 'b': // 1 string to match.
  16034. return Intrinsic::ppc_altivec_vmuloub; // "pc.altivec.vmuloub"
  16035. case 'h': // 1 string to match.
  16036. return Intrinsic::ppc_altivec_vmulouh; // "pc.altivec.vmulouh"
  16037. }
  16038. break;
  16039. }
  16040. break;
  16041. }
  16042. break;
  16043. }
  16044. break;
  16045. case 'p': // 6 strings to match.
  16046. if (NameR[13] != 'k')
  16047. break;
  16048. switch (NameR[14]) {
  16049. default: break;
  16050. case 's': // 4 strings to match.
  16051. switch (NameR[15]) {
  16052. default: break;
  16053. case 'h': // 2 strings to match.
  16054. switch (NameR[16]) {
  16055. default: break;
  16056. case 's': // 1 string to match.
  16057. if (NameR[17] != 's')
  16058. break;
  16059. return Intrinsic::ppc_altivec_vpkshss; // "pc.altivec.vpkshss"
  16060. case 'u': // 1 string to match.
  16061. if (NameR[17] != 's')
  16062. break;
  16063. return Intrinsic::ppc_altivec_vpkshus; // "pc.altivec.vpkshus"
  16064. }
  16065. break;
  16066. case 'w': // 2 strings to match.
  16067. switch (NameR[16]) {
  16068. default: break;
  16069. case 's': // 1 string to match.
  16070. if (NameR[17] != 's')
  16071. break;
  16072. return Intrinsic::ppc_altivec_vpkswss; // "pc.altivec.vpkswss"
  16073. case 'u': // 1 string to match.
  16074. if (NameR[17] != 's')
  16075. break;
  16076. return Intrinsic::ppc_altivec_vpkswus; // "pc.altivec.vpkswus"
  16077. }
  16078. break;
  16079. }
  16080. break;
  16081. case 'u': // 2 strings to match.
  16082. switch (NameR[15]) {
  16083. default: break;
  16084. case 'h': // 1 string to match.
  16085. if (memcmp(NameR.data()+16, "us", 2))
  16086. break;
  16087. return Intrinsic::ppc_altivec_vpkuhus; // "pc.altivec.vpkuhus"
  16088. case 'w': // 1 string to match.
  16089. if (memcmp(NameR.data()+16, "us", 2))
  16090. break;
  16091. return Intrinsic::ppc_altivec_vpkuwus; // "pc.altivec.vpkuwus"
  16092. }
  16093. break;
  16094. }
  16095. break;
  16096. case 's': // 8 strings to match.
  16097. if (NameR[13] != 'u')
  16098. break;
  16099. switch (NameR[14]) {
  16100. default: break;
  16101. case 'b': // 7 strings to match.
  16102. switch (NameR[15]) {
  16103. default: break;
  16104. case 'c': // 1 string to match.
  16105. if (memcmp(NameR.data()+16, "uw", 2))
  16106. break;
  16107. return Intrinsic::ppc_altivec_vsubcuw; // "pc.altivec.vsubcuw"
  16108. case 's': // 3 strings to match.
  16109. switch (NameR[16]) {
  16110. default: break;
  16111. case 'b': // 1 string to match.
  16112. if (NameR[17] != 's')
  16113. break;
  16114. return Intrinsic::ppc_altivec_vsubsbs; // "pc.altivec.vsubsbs"
  16115. case 'h': // 1 string to match.
  16116. if (NameR[17] != 's')
  16117. break;
  16118. return Intrinsic::ppc_altivec_vsubshs; // "pc.altivec.vsubshs"
  16119. case 'w': // 1 string to match.
  16120. if (NameR[17] != 's')
  16121. break;
  16122. return Intrinsic::ppc_altivec_vsubsws; // "pc.altivec.vsubsws"
  16123. }
  16124. break;
  16125. case 'u': // 3 strings to match.
  16126. switch (NameR[16]) {
  16127. default: break;
  16128. case 'b': // 1 string to match.
  16129. if (NameR[17] != 's')
  16130. break;
  16131. return Intrinsic::ppc_altivec_vsububs; // "pc.altivec.vsububs"
  16132. case 'h': // 1 string to match.
  16133. if (NameR[17] != 's')
  16134. break;
  16135. return Intrinsic::ppc_altivec_vsubuhs; // "pc.altivec.vsubuhs"
  16136. case 'w': // 1 string to match.
  16137. if (NameR[17] != 's')
  16138. break;
  16139. return Intrinsic::ppc_altivec_vsubuws; // "pc.altivec.vsubuws"
  16140. }
  16141. break;
  16142. }
  16143. break;
  16144. case 'm': // 1 string to match.
  16145. if (memcmp(NameR.data()+15, "sws", 3))
  16146. break;
  16147. return Intrinsic::ppc_altivec_vsumsws; // "pc.altivec.vsumsws"
  16148. }
  16149. break;
  16150. case 'u': // 6 strings to match.
  16151. if (memcmp(NameR.data()+13, "pk", 2))
  16152. break;
  16153. switch (NameR[15]) {
  16154. default: break;
  16155. case 'h': // 3 strings to match.
  16156. switch (NameR[16]) {
  16157. default: break;
  16158. case 'p': // 1 string to match.
  16159. if (NameR[17] != 'x')
  16160. break;
  16161. return Intrinsic::ppc_altivec_vupkhpx; // "pc.altivec.vupkhpx"
  16162. case 's': // 2 strings to match.
  16163. switch (NameR[17]) {
  16164. default: break;
  16165. case 'b': // 1 string to match.
  16166. return Intrinsic::ppc_altivec_vupkhsb; // "pc.altivec.vupkhsb"
  16167. case 'h': // 1 string to match.
  16168. return Intrinsic::ppc_altivec_vupkhsh; // "pc.altivec.vupkhsh"
  16169. }
  16170. break;
  16171. }
  16172. break;
  16173. case 'l': // 3 strings to match.
  16174. switch (NameR[16]) {
  16175. default: break;
  16176. case 'p': // 1 string to match.
  16177. if (NameR[17] != 'x')
  16178. break;
  16179. return Intrinsic::ppc_altivec_vupklpx; // "pc.altivec.vupklpx"
  16180. case 's': // 2 strings to match.
  16181. switch (NameR[17]) {
  16182. default: break;
  16183. case 'b': // 1 string to match.
  16184. return Intrinsic::ppc_altivec_vupklsb; // "pc.altivec.vupklsb"
  16185. case 'h': // 1 string to match.
  16186. return Intrinsic::ppc_altivec_vupklsh; // "pc.altivec.vupklsh"
  16187. }
  16188. break;
  16189. }
  16190. break;
  16191. }
  16192. break;
  16193. }
  16194. break;
  16195. case 19: // 29 strings to match.
  16196. switch (NameR[0]) {
  16197. default: break;
  16198. case 'p': // 24 strings to match.
  16199. if (memcmp(NameR.data()+1, "c.altivec.v", 11))
  16200. break;
  16201. switch (NameR[12]) {
  16202. default: break;
  16203. case 'c': // 12 strings to match.
  16204. if (memcmp(NameR.data()+13, "mp", 2))
  16205. break;
  16206. switch (NameR[15]) {
  16207. default: break;
  16208. case 'e': // 4 strings to match.
  16209. if (NameR[16] != 'q')
  16210. break;
  16211. switch (NameR[17]) {
  16212. default: break;
  16213. case 'f': // 1 string to match.
  16214. if (NameR[18] != 'p')
  16215. break;
  16216. return Intrinsic::ppc_altivec_vcmpeqfp; // "pc.altivec.vcmpeqfp"
  16217. case 'u': // 3 strings to match.
  16218. switch (NameR[18]) {
  16219. default: break;
  16220. case 'b': // 1 string to match.
  16221. return Intrinsic::ppc_altivec_vcmpequb; // "pc.altivec.vcmpequb"
  16222. case 'h': // 1 string to match.
  16223. return Intrinsic::ppc_altivec_vcmpequh; // "pc.altivec.vcmpequh"
  16224. case 'w': // 1 string to match.
  16225. return Intrinsic::ppc_altivec_vcmpequw; // "pc.altivec.vcmpequw"
  16226. }
  16227. break;
  16228. }
  16229. break;
  16230. case 'g': // 8 strings to match.
  16231. switch (NameR[16]) {
  16232. default: break;
  16233. case 'e': // 1 string to match.
  16234. if (memcmp(NameR.data()+17, "fp", 2))
  16235. break;
  16236. return Intrinsic::ppc_altivec_vcmpgefp; // "pc.altivec.vcmpgefp"
  16237. case 't': // 7 strings to match.
  16238. switch (NameR[17]) {
  16239. default: break;
  16240. case 'f': // 1 string to match.
  16241. if (NameR[18] != 'p')
  16242. break;
  16243. return Intrinsic::ppc_altivec_vcmpgtfp; // "pc.altivec.vcmpgtfp"
  16244. case 's': // 3 strings to match.
  16245. switch (NameR[18]) {
  16246. default: break;
  16247. case 'b': // 1 string to match.
  16248. return Intrinsic::ppc_altivec_vcmpgtsb; // "pc.altivec.vcmpgtsb"
  16249. case 'h': // 1 string to match.
  16250. return Intrinsic::ppc_altivec_vcmpgtsh; // "pc.altivec.vcmpgtsh"
  16251. case 'w': // 1 string to match.
  16252. return Intrinsic::ppc_altivec_vcmpgtsw; // "pc.altivec.vcmpgtsw"
  16253. }
  16254. break;
  16255. case 'u': // 3 strings to match.
  16256. switch (NameR[18]) {
  16257. default: break;
  16258. case 'b': // 1 string to match.
  16259. return Intrinsic::ppc_altivec_vcmpgtub; // "pc.altivec.vcmpgtub"
  16260. case 'h': // 1 string to match.
  16261. return Intrinsic::ppc_altivec_vcmpgtuh; // "pc.altivec.vcmpgtuh"
  16262. case 'w': // 1 string to match.
  16263. return Intrinsic::ppc_altivec_vcmpgtuw; // "pc.altivec.vcmpgtuw"
  16264. }
  16265. break;
  16266. }
  16267. break;
  16268. }
  16269. break;
  16270. }
  16271. break;
  16272. case 'e': // 1 string to match.
  16273. if (memcmp(NameR.data()+13, "xptefp", 6))
  16274. break;
  16275. return Intrinsic::ppc_altivec_vexptefp; // "pc.altivec.vexptefp"
  16276. case 'm': // 6 strings to match.
  16277. if (memcmp(NameR.data()+13, "sum", 3))
  16278. break;
  16279. switch (NameR[16]) {
  16280. default: break;
  16281. case 'm': // 1 string to match.
  16282. if (memcmp(NameR.data()+17, "bm", 2))
  16283. break;
  16284. return Intrinsic::ppc_altivec_vmsummbm; // "pc.altivec.vmsummbm"
  16285. case 's': // 2 strings to match.
  16286. if (NameR[17] != 'h')
  16287. break;
  16288. switch (NameR[18]) {
  16289. default: break;
  16290. case 'm': // 1 string to match.
  16291. return Intrinsic::ppc_altivec_vmsumshm; // "pc.altivec.vmsumshm"
  16292. case 's': // 1 string to match.
  16293. return Intrinsic::ppc_altivec_vmsumshs; // "pc.altivec.vmsumshs"
  16294. }
  16295. break;
  16296. case 'u': // 3 strings to match.
  16297. switch (NameR[17]) {
  16298. default: break;
  16299. case 'b': // 1 string to match.
  16300. if (NameR[18] != 'm')
  16301. break;
  16302. return Intrinsic::ppc_altivec_vmsumubm; // "pc.altivec.vmsumubm"
  16303. case 'h': // 2 strings to match.
  16304. switch (NameR[18]) {
  16305. default: break;
  16306. case 'm': // 1 string to match.
  16307. return Intrinsic::ppc_altivec_vmsumuhm; // "pc.altivec.vmsumuhm"
  16308. case 's': // 1 string to match.
  16309. return Intrinsic::ppc_altivec_vmsumuhs; // "pc.altivec.vmsumuhs"
  16310. }
  16311. break;
  16312. }
  16313. break;
  16314. }
  16315. break;
  16316. case 'n': // 1 string to match.
  16317. if (memcmp(NameR.data()+13, "msubfp", 6))
  16318. break;
  16319. return Intrinsic::ppc_altivec_vnmsubfp; // "pc.altivec.vnmsubfp"
  16320. case 's': // 4 strings to match.
  16321. if (memcmp(NameR.data()+13, "um", 2))
  16322. break;
  16323. switch (NameR[15]) {
  16324. default: break;
  16325. case '2': // 1 string to match.
  16326. if (memcmp(NameR.data()+16, "sws", 3))
  16327. break;
  16328. return Intrinsic::ppc_altivec_vsum2sws; // "pc.altivec.vsum2sws"
  16329. case '4': // 3 strings to match.
  16330. switch (NameR[16]) {
  16331. default: break;
  16332. case 's': // 2 strings to match.
  16333. switch (NameR[17]) {
  16334. default: break;
  16335. case 'b': // 1 string to match.
  16336. if (NameR[18] != 's')
  16337. break;
  16338. return Intrinsic::ppc_altivec_vsum4sbs; // "pc.altivec.vsum4sbs"
  16339. case 'h': // 1 string to match.
  16340. if (NameR[18] != 's')
  16341. break;
  16342. return Intrinsic::ppc_altivec_vsum4shs; // "pc.altivec.vsum4shs"
  16343. }
  16344. break;
  16345. case 'u': // 1 string to match.
  16346. if (memcmp(NameR.data()+17, "bs", 2))
  16347. break;
  16348. return Intrinsic::ppc_altivec_vsum4ubs; // "pc.altivec.vsum4ubs"
  16349. }
  16350. break;
  16351. }
  16352. break;
  16353. }
  16354. break;
  16355. case 't': // 5 strings to match.
  16356. if (memcmp(NameR.data()+1, "x.read.lanemask.", 16))
  16357. break;
  16358. switch (NameR[17]) {
  16359. default: break;
  16360. case 'e': // 1 string to match.
  16361. if (NameR[18] != 'q')
  16362. break;
  16363. return Intrinsic::ptx_read_lanemask_eq; // "tx.read.lanemask.eq"
  16364. case 'g': // 2 strings to match.
  16365. switch (NameR[18]) {
  16366. default: break;
  16367. case 'e': // 1 string to match.
  16368. return Intrinsic::ptx_read_lanemask_ge; // "tx.read.lanemask.ge"
  16369. case 't': // 1 string to match.
  16370. return Intrinsic::ptx_read_lanemask_gt; // "tx.read.lanemask.gt"
  16371. }
  16372. break;
  16373. case 'l': // 2 strings to match.
  16374. switch (NameR[18]) {
  16375. default: break;
  16376. case 'e': // 1 string to match.
  16377. return Intrinsic::ptx_read_lanemask_le; // "tx.read.lanemask.le"
  16378. case 't': // 1 string to match.
  16379. return Intrinsic::ptx_read_lanemask_lt; // "tx.read.lanemask.lt"
  16380. }
  16381. break;
  16382. }
  16383. break;
  16384. }
  16385. break;
  16386. case 20: // 4 strings to match.
  16387. if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
  16388. break;
  16389. switch (NameR[12]) {
  16390. default: break;
  16391. case 'c': // 1 string to match.
  16392. if (memcmp(NameR.data()+13, "mpbfp.p", 7))
  16393. break;
  16394. return Intrinsic::ppc_altivec_vcmpbfp_p; // "pc.altivec.vcmpbfp.p"
  16395. case 'm': // 2 strings to match.
  16396. switch (NameR[13]) {
  16397. default: break;
  16398. case 'h': // 1 string to match.
  16399. if (memcmp(NameR.data()+14, "addshs", 6))
  16400. break;
  16401. return Intrinsic::ppc_altivec_vmhaddshs; // "pc.altivec.vmhaddshs"
  16402. case 'l': // 1 string to match.
  16403. if (memcmp(NameR.data()+14, "adduhm", 6))
  16404. break;
  16405. return Intrinsic::ppc_altivec_vmladduhm; // "pc.altivec.vmladduhm"
  16406. }
  16407. break;
  16408. case 'r': // 1 string to match.
  16409. if (memcmp(NameR.data()+13, "sqrtefp", 7))
  16410. break;
  16411. return Intrinsic::ppc_altivec_vrsqrtefp; // "pc.altivec.vrsqrtefp"
  16412. }
  16413. break;
  16414. case 21: // 13 strings to match.
  16415. if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
  16416. break;
  16417. switch (NameR[12]) {
  16418. default: break;
  16419. case 'c': // 12 strings to match.
  16420. if (memcmp(NameR.data()+13, "mp", 2))
  16421. break;
  16422. switch (NameR[15]) {
  16423. default: break;
  16424. case 'e': // 4 strings to match.
  16425. if (NameR[16] != 'q')
  16426. break;
  16427. switch (NameR[17]) {
  16428. default: break;
  16429. case 'f': // 1 string to match.
  16430. if (memcmp(NameR.data()+18, "p.p", 3))
  16431. break;
  16432. return Intrinsic::ppc_altivec_vcmpeqfp_p; // "pc.altivec.vcmpeqfp.p"
  16433. case 'u': // 3 strings to match.
  16434. switch (NameR[18]) {
  16435. default: break;
  16436. case 'b': // 1 string to match.
  16437. if (memcmp(NameR.data()+19, ".p", 2))
  16438. break;
  16439. return Intrinsic::ppc_altivec_vcmpequb_p; // "pc.altivec.vcmpequb.p"
  16440. case 'h': // 1 string to match.
  16441. if (memcmp(NameR.data()+19, ".p", 2))
  16442. break;
  16443. return Intrinsic::ppc_altivec_vcmpequh_p; // "pc.altivec.vcmpequh.p"
  16444. case 'w': // 1 string to match.
  16445. if (memcmp(NameR.data()+19, ".p", 2))
  16446. break;
  16447. return Intrinsic::ppc_altivec_vcmpequw_p; // "pc.altivec.vcmpequw.p"
  16448. }
  16449. break;
  16450. }
  16451. break;
  16452. case 'g': // 8 strings to match.
  16453. switch (NameR[16]) {
  16454. default: break;
  16455. case 'e': // 1 string to match.
  16456. if (memcmp(NameR.data()+17, "fp.p", 4))
  16457. break;
  16458. return Intrinsic::ppc_altivec_vcmpgefp_p; // "pc.altivec.vcmpgefp.p"
  16459. case 't': // 7 strings to match.
  16460. switch (NameR[17]) {
  16461. default: break;
  16462. case 'f': // 1 string to match.
  16463. if (memcmp(NameR.data()+18, "p.p", 3))
  16464. break;
  16465. return Intrinsic::ppc_altivec_vcmpgtfp_p; // "pc.altivec.vcmpgtfp.p"
  16466. case 's': // 3 strings to match.
  16467. switch (NameR[18]) {
  16468. default: break;
  16469. case 'b': // 1 string to match.
  16470. if (memcmp(NameR.data()+19, ".p", 2))
  16471. break;
  16472. return Intrinsic::ppc_altivec_vcmpgtsb_p; // "pc.altivec.vcmpgtsb.p"
  16473. case 'h': // 1 string to match.
  16474. if (memcmp(NameR.data()+19, ".p", 2))
  16475. break;
  16476. return Intrinsic::ppc_altivec_vcmpgtsh_p; // "pc.altivec.vcmpgtsh.p"
  16477. case 'w': // 1 string to match.
  16478. if (memcmp(NameR.data()+19, ".p", 2))
  16479. break;
  16480. return Intrinsic::ppc_altivec_vcmpgtsw_p; // "pc.altivec.vcmpgtsw.p"
  16481. }
  16482. break;
  16483. case 'u': // 3 strings to match.
  16484. switch (NameR[18]) {
  16485. default: break;
  16486. case 'b': // 1 string to match.
  16487. if (memcmp(NameR.data()+19, ".p", 2))
  16488. break;
  16489. return Intrinsic::ppc_altivec_vcmpgtub_p; // "pc.altivec.vcmpgtub.p"
  16490. case 'h': // 1 string to match.
  16491. if (memcmp(NameR.data()+19, ".p", 2))
  16492. break;
  16493. return Intrinsic::ppc_altivec_vcmpgtuh_p; // "pc.altivec.vcmpgtuh.p"
  16494. case 'w': // 1 string to match.
  16495. if (memcmp(NameR.data()+19, ".p", 2))
  16496. break;
  16497. return Intrinsic::ppc_altivec_vcmpgtuw_p; // "pc.altivec.vcmpgtuw.p"
  16498. }
  16499. break;
  16500. }
  16501. break;
  16502. }
  16503. break;
  16504. }
  16505. break;
  16506. case 'm': // 1 string to match.
  16507. if (memcmp(NameR.data()+13, "hraddshs", 8))
  16508. break;
  16509. return Intrinsic::ppc_altivec_vmhraddshs; // "pc.altivec.vmhraddshs"
  16510. }
  16511. break;
  16512. }
  16513. break; // end of 'p' case.
  16514. case 'r':
  16515. switch (NameR.size()) {
  16516. default: break;
  16517. case 12: // 1 string to match.
  16518. if (memcmp(NameR.data()+0, "eturnaddress", 12))
  16519. break;
  16520. return Intrinsic::returnaddress; // "eturnaddress"
  16521. case 15: // 1 string to match.
  16522. if (memcmp(NameR.data()+0, "eadcyclecounter", 15))
  16523. break;
  16524. return Intrinsic::readcyclecounter; // "eadcyclecounter"
  16525. }
  16526. break; // end of 'r' case.
  16527. case 's':
  16528. if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow;
  16529. if (NameR.startswith("in.")) return Intrinsic::sin;
  16530. if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow;
  16531. if (NameR.startswith("qrt.")) return Intrinsic::sqrt;
  16532. if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow;
  16533. switch (NameR.size()) {
  16534. default: break;
  16535. case 5: // 1 string to match.
  16536. if (memcmp(NameR.data()+0, "etjmp", 5))
  16537. break;
  16538. return Intrinsic::setjmp; // "etjmp"
  16539. case 7: // 1 string to match.
  16540. if (memcmp(NameR.data()+0, "pu.si.a", 7))
  16541. break;
  16542. return Intrinsic::spu_si_a; // "pu.si.a"
  16543. case 8: // 11 strings to match.
  16544. switch (NameR[0]) {
  16545. default: break;
  16546. case 'i': // 1 string to match.
  16547. if (memcmp(NameR.data()+1, "gsetjmp", 7))
  16548. break;
  16549. return Intrinsic::sigsetjmp; // "igsetjmp"
  16550. case 'p': // 9 strings to match.
  16551. if (memcmp(NameR.data()+1, "u.si.", 5))
  16552. break;
  16553. switch (NameR[6]) {
  16554. default: break;
  16555. case 'a': // 2 strings to match.
  16556. switch (NameR[7]) {
  16557. default: break;
  16558. case 'h': // 1 string to match.
  16559. return Intrinsic::spu_si_ah; // "pu.si.ah"
  16560. case 'i': // 1 string to match.
  16561. return Intrinsic::spu_si_ai; // "pu.si.ai"
  16562. }
  16563. break;
  16564. case 'b': // 1 string to match.
  16565. if (NameR[7] != 'g')
  16566. break;
  16567. return Intrinsic::spu_si_bg; // "pu.si.bg"
  16568. case 'c': // 1 string to match.
  16569. if (NameR[7] != 'g')
  16570. break;
  16571. return Intrinsic::spu_si_cg; // "pu.si.cg"
  16572. case 'f': // 3 strings to match.
  16573. switch (NameR[7]) {
  16574. default: break;
  16575. case 'a': // 1 string to match.
  16576. return Intrinsic::spu_si_fa; // "pu.si.fa"
  16577. case 'm': // 1 string to match.
  16578. return Intrinsic::spu_si_fm; // "pu.si.fm"
  16579. case 's': // 1 string to match.
  16580. return Intrinsic::spu_si_fs; // "pu.si.fs"
  16581. }
  16582. break;
  16583. case 'o': // 1 string to match.
  16584. if (NameR[7] != 'r')
  16585. break;
  16586. return Intrinsic::spu_si_or; // "pu.si.or"
  16587. case 's': // 1 string to match.
  16588. if (NameR[7] != 'f')
  16589. break;
  16590. return Intrinsic::spu_si_sf; // "pu.si.sf"
  16591. }
  16592. break;
  16593. case 't': // 1 string to match.
  16594. if (memcmp(NameR.data()+1, "acksave", 7))
  16595. break;
  16596. return Intrinsic::stacksave; // "tacksave"
  16597. }
  16598. break;
  16599. case 9: // 20 strings to match.
  16600. switch (NameR[0]) {
  16601. default: break;
  16602. case 'i': // 1 string to match.
  16603. if (memcmp(NameR.data()+1, "glongjmp", 8))
  16604. break;
  16605. return Intrinsic::siglongjmp; // "iglongjmp"
  16606. case 'p': // 19 strings to match.
  16607. if (memcmp(NameR.data()+1, "u.si.", 5))
  16608. break;
  16609. switch (NameR[6]) {
  16610. default: break;
  16611. case 'a': // 2 strings to match.
  16612. switch (NameR[7]) {
  16613. default: break;
  16614. case 'h': // 1 string to match.
  16615. if (NameR[8] != 'i')
  16616. break;
  16617. return Intrinsic::spu_si_ahi; // "pu.si.ahi"
  16618. case 'n': // 1 string to match.
  16619. if (NameR[8] != 'd')
  16620. break;
  16621. return Intrinsic::spu_si_and; // "pu.si.and"
  16622. }
  16623. break;
  16624. case 'b': // 1 string to match.
  16625. if (memcmp(NameR.data()+7, "gx", 2))
  16626. break;
  16627. return Intrinsic::spu_si_bgx; // "pu.si.bgx"
  16628. case 'c': // 3 strings to match.
  16629. switch (NameR[7]) {
  16630. default: break;
  16631. case 'e': // 1 string to match.
  16632. if (NameR[8] != 'q')
  16633. break;
  16634. return Intrinsic::spu_si_ceq; // "pu.si.ceq"
  16635. case 'g': // 2 strings to match.
  16636. switch (NameR[8]) {
  16637. default: break;
  16638. case 't': // 1 string to match.
  16639. return Intrinsic::spu_si_cgt; // "pu.si.cgt"
  16640. case 'x': // 1 string to match.
  16641. return Intrinsic::spu_si_cgx; // "pu.si.cgx"
  16642. }
  16643. break;
  16644. }
  16645. break;
  16646. case 'd': // 3 strings to match.
  16647. if (NameR[7] != 'f')
  16648. break;
  16649. switch (NameR[8]) {
  16650. default: break;
  16651. case 'a': // 1 string to match.
  16652. return Intrinsic::spu_si_dfa; // "pu.si.dfa"
  16653. case 'm': // 1 string to match.
  16654. return Intrinsic::spu_si_dfm; // "pu.si.dfm"
  16655. case 's': // 1 string to match.
  16656. return Intrinsic::spu_si_dfs; // "pu.si.dfs"
  16657. }
  16658. break;
  16659. case 'f': // 2 strings to match.
  16660. if (NameR[7] != 'm')
  16661. break;
  16662. switch (NameR[8]) {
  16663. default: break;
  16664. case 'a': // 1 string to match.
  16665. return Intrinsic::spu_si_fma; // "pu.si.fma"
  16666. case 's': // 1 string to match.
  16667. return Intrinsic::spu_si_fms; // "pu.si.fms"
  16668. }
  16669. break;
  16670. case 'm': // 1 string to match.
  16671. if (memcmp(NameR.data()+7, "py", 2))
  16672. break;
  16673. return Intrinsic::spu_si_mpy; // "pu.si.mpy"
  16674. case 'n': // 1 string to match.
  16675. if (memcmp(NameR.data()+7, "or", 2))
  16676. break;
  16677. return Intrinsic::spu_si_nor; // "pu.si.nor"
  16678. case 'o': // 2 strings to match.
  16679. if (NameR[7] != 'r')
  16680. break;
  16681. switch (NameR[8]) {
  16682. default: break;
  16683. case 'c': // 1 string to match.
  16684. return Intrinsic::spu_si_orc; // "pu.si.orc"
  16685. case 'i': // 1 string to match.
  16686. return Intrinsic::spu_si_ori; // "pu.si.ori"
  16687. }
  16688. break;
  16689. case 's': // 3 strings to match.
  16690. if (NameR[7] != 'f')
  16691. break;
  16692. switch (NameR[8]) {
  16693. default: break;
  16694. case 'h': // 1 string to match.
  16695. return Intrinsic::spu_si_sfh; // "pu.si.sfh"
  16696. case 'i': // 1 string to match.
  16697. return Intrinsic::spu_si_sfi; // "pu.si.sfi"
  16698. case 'x': // 1 string to match.
  16699. return Intrinsic::spu_si_sfx; // "pu.si.sfx"
  16700. }
  16701. break;
  16702. case 'x': // 1 string to match.
  16703. if (memcmp(NameR.data()+7, "or", 2))
  16704. break;
  16705. return Intrinsic::spu_si_xor; // "pu.si.xor"
  16706. }
  16707. break;
  16708. }
  16709. break;
  16710. case 10: // 26 strings to match.
  16711. if (memcmp(NameR.data()+0, "pu.si.", 6))
  16712. break;
  16713. switch (NameR[6]) {
  16714. default: break;
  16715. case 'a': // 3 strings to match.
  16716. switch (NameR[7]) {
  16717. default: break;
  16718. case 'd': // 1 string to match.
  16719. if (memcmp(NameR.data()+8, "dx", 2))
  16720. break;
  16721. return Intrinsic::spu_si_addx; // "pu.si.addx"
  16722. case 'n': // 2 strings to match.
  16723. if (NameR[8] != 'd')
  16724. break;
  16725. switch (NameR[9]) {
  16726. default: break;
  16727. case 'c': // 1 string to match.
  16728. return Intrinsic::spu_si_andc; // "pu.si.andc"
  16729. case 'i': // 1 string to match.
  16730. return Intrinsic::spu_si_andi; // "pu.si.andi"
  16731. }
  16732. break;
  16733. }
  16734. break;
  16735. case 'c': // 7 strings to match.
  16736. switch (NameR[7]) {
  16737. default: break;
  16738. case 'e': // 3 strings to match.
  16739. if (NameR[8] != 'q')
  16740. break;
  16741. switch (NameR[9]) {
  16742. default: break;
  16743. case 'b': // 1 string to match.
  16744. return Intrinsic::spu_si_ceqb; // "pu.si.ceqb"
  16745. case 'h': // 1 string to match.
  16746. return Intrinsic::spu_si_ceqh; // "pu.si.ceqh"
  16747. case 'i': // 1 string to match.
  16748. return Intrinsic::spu_si_ceqi; // "pu.si.ceqi"
  16749. }
  16750. break;
  16751. case 'g': // 3 strings to match.
  16752. if (NameR[8] != 't')
  16753. break;
  16754. switch (NameR[9]) {
  16755. default: break;
  16756. case 'b': // 1 string to match.
  16757. return Intrinsic::spu_si_cgtb; // "pu.si.cgtb"
  16758. case 'h': // 1 string to match.
  16759. return Intrinsic::spu_si_cgth; // "pu.si.cgth"
  16760. case 'i': // 1 string to match.
  16761. return Intrinsic::spu_si_cgti; // "pu.si.cgti"
  16762. }
  16763. break;
  16764. case 'l': // 1 string to match.
  16765. if (memcmp(NameR.data()+8, "gt", 2))
  16766. break;
  16767. return Intrinsic::spu_si_clgt; // "pu.si.clgt"
  16768. }
  16769. break;
  16770. case 'd': // 2 strings to match.
  16771. if (memcmp(NameR.data()+7, "fm", 2))
  16772. break;
  16773. switch (NameR[9]) {
  16774. default: break;
  16775. case 'a': // 1 string to match.
  16776. return Intrinsic::spu_si_dfma; // "pu.si.dfma"
  16777. case 's': // 1 string to match.
  16778. return Intrinsic::spu_si_dfms; // "pu.si.dfms"
  16779. }
  16780. break;
  16781. case 'f': // 3 strings to match.
  16782. switch (NameR[7]) {
  16783. default: break;
  16784. case 'c': // 2 strings to match.
  16785. switch (NameR[8]) {
  16786. default: break;
  16787. case 'e': // 1 string to match.
  16788. if (NameR[9] != 'q')
  16789. break;
  16790. return Intrinsic::spu_si_fceq; // "pu.si.fceq"
  16791. case 'g': // 1 string to match.
  16792. if (NameR[9] != 't')
  16793. break;
  16794. return Intrinsic::spu_si_fcgt; // "pu.si.fcgt"
  16795. }
  16796. break;
  16797. case 'n': // 1 string to match.
  16798. if (memcmp(NameR.data()+8, "ms", 2))
  16799. break;
  16800. return Intrinsic::spu_si_fnms; // "pu.si.fnms"
  16801. }
  16802. break;
  16803. case 'm': // 5 strings to match.
  16804. if (memcmp(NameR.data()+7, "py", 2))
  16805. break;
  16806. switch (NameR[9]) {
  16807. default: break;
  16808. case 'a': // 1 string to match.
  16809. return Intrinsic::spu_si_mpya; // "pu.si.mpya"
  16810. case 'h': // 1 string to match.
  16811. return Intrinsic::spu_si_mpyh; // "pu.si.mpyh"
  16812. case 'i': // 1 string to match.
  16813. return Intrinsic::spu_si_mpyi; // "pu.si.mpyi"
  16814. case 's': // 1 string to match.
  16815. return Intrinsic::spu_si_mpys; // "pu.si.mpys"
  16816. case 'u': // 1 string to match.
  16817. return Intrinsic::spu_si_mpyu; // "pu.si.mpyu"
  16818. }
  16819. break;
  16820. case 'n': // 1 string to match.
  16821. if (memcmp(NameR.data()+7, "and", 3))
  16822. break;
  16823. return Intrinsic::spu_si_nand; // "pu.si.nand"
  16824. case 'o': // 2 strings to match.
  16825. if (NameR[7] != 'r')
  16826. break;
  16827. switch (NameR[8]) {
  16828. default: break;
  16829. case 'b': // 1 string to match.
  16830. if (NameR[9] != 'i')
  16831. break;
  16832. return Intrinsic::spu_si_orbi; // "pu.si.orbi"
  16833. case 'h': // 1 string to match.
  16834. if (NameR[9] != 'i')
  16835. break;
  16836. return Intrinsic::spu_si_orhi; // "pu.si.orhi"
  16837. }
  16838. break;
  16839. case 's': // 2 strings to match.
  16840. switch (NameR[7]) {
  16841. default: break;
  16842. case 'f': // 1 string to match.
  16843. if (memcmp(NameR.data()+8, "hi", 2))
  16844. break;
  16845. return Intrinsic::spu_si_sfhi; // "pu.si.sfhi"
  16846. case 'h': // 1 string to match.
  16847. if (memcmp(NameR.data()+8, "li", 2))
  16848. break;
  16849. return Intrinsic::spu_si_shli; // "pu.si.shli"
  16850. }
  16851. break;
  16852. case 'x': // 1 string to match.
  16853. if (memcmp(NameR.data()+7, "ori", 3))
  16854. break;
  16855. return Intrinsic::spu_si_xori; // "pu.si.xori"
  16856. }
  16857. break;
  16858. case 11: // 19 strings to match.
  16859. switch (NameR[0]) {
  16860. default: break;
  16861. case 'p': // 18 strings to match.
  16862. if (memcmp(NameR.data()+1, "u.si.", 5))
  16863. break;
  16864. switch (NameR[6]) {
  16865. default: break;
  16866. case 'a': // 2 strings to match.
  16867. if (memcmp(NameR.data()+7, "nd", 2))
  16868. break;
  16869. switch (NameR[9]) {
  16870. default: break;
  16871. case 'b': // 1 string to match.
  16872. if (NameR[10] != 'i')
  16873. break;
  16874. return Intrinsic::spu_si_andbi; // "pu.si.andbi"
  16875. case 'h': // 1 string to match.
  16876. if (NameR[10] != 'i')
  16877. break;
  16878. return Intrinsic::spu_si_andhi; // "pu.si.andhi"
  16879. }
  16880. break;
  16881. case 'c': // 7 strings to match.
  16882. switch (NameR[7]) {
  16883. default: break;
  16884. case 'e': // 2 strings to match.
  16885. if (NameR[8] != 'q')
  16886. break;
  16887. switch (NameR[9]) {
  16888. default: break;
  16889. case 'b': // 1 string to match.
  16890. if (NameR[10] != 'i')
  16891. break;
  16892. return Intrinsic::spu_si_ceqbi; // "pu.si.ceqbi"
  16893. case 'h': // 1 string to match.
  16894. if (NameR[10] != 'i')
  16895. break;
  16896. return Intrinsic::spu_si_ceqhi; // "pu.si.ceqhi"
  16897. }
  16898. break;
  16899. case 'g': // 2 strings to match.
  16900. if (NameR[8] != 't')
  16901. break;
  16902. switch (NameR[9]) {
  16903. default: break;
  16904. case 'b': // 1 string to match.
  16905. if (NameR[10] != 'i')
  16906. break;
  16907. return Intrinsic::spu_si_cgtbi; // "pu.si.cgtbi"
  16908. case 'h': // 1 string to match.
  16909. if (NameR[10] != 'i')
  16910. break;
  16911. return Intrinsic::spu_si_cgthi; // "pu.si.cgthi"
  16912. }
  16913. break;
  16914. case 'l': // 3 strings to match.
  16915. if (memcmp(NameR.data()+8, "gt", 2))
  16916. break;
  16917. switch (NameR[10]) {
  16918. default: break;
  16919. case 'b': // 1 string to match.
  16920. return Intrinsic::spu_si_clgtb; // "pu.si.clgtb"
  16921. case 'h': // 1 string to match.
  16922. return Intrinsic::spu_si_clgth; // "pu.si.clgth"
  16923. case 'i': // 1 string to match.
  16924. return Intrinsic::spu_si_clgti; // "pu.si.clgti"
  16925. }
  16926. break;
  16927. }
  16928. break;
  16929. case 'd': // 2 strings to match.
  16930. if (memcmp(NameR.data()+7, "fnm", 3))
  16931. break;
  16932. switch (NameR[10]) {
  16933. default: break;
  16934. case 'a': // 1 string to match.
  16935. return Intrinsic::spu_si_dfnma; // "pu.si.dfnma"
  16936. case 's': // 1 string to match.
  16937. return Intrinsic::spu_si_dfnms; // "pu.si.dfnms"
  16938. }
  16939. break;
  16940. case 'f': // 3 strings to match.
  16941. switch (NameR[7]) {
  16942. default: break;
  16943. case 'c': // 2 strings to match.
  16944. if (NameR[8] != 'm')
  16945. break;
  16946. switch (NameR[9]) {
  16947. default: break;
  16948. case 'e': // 1 string to match.
  16949. if (NameR[10] != 'q')
  16950. break;
  16951. return Intrinsic::spu_si_fcmeq; // "pu.si.fcmeq"
  16952. case 'g': // 1 string to match.
  16953. if (NameR[10] != 't')
  16954. break;
  16955. return Intrinsic::spu_si_fcmgt; // "pu.si.fcmgt"
  16956. }
  16957. break;
  16958. case 's': // 1 string to match.
  16959. if (memcmp(NameR.data()+8, "mbi", 3))
  16960. break;
  16961. return Intrinsic::spu_si_fsmbi; // "pu.si.fsmbi"
  16962. }
  16963. break;
  16964. case 'm': // 2 strings to match.
  16965. if (memcmp(NameR.data()+7, "py", 2))
  16966. break;
  16967. switch (NameR[9]) {
  16968. default: break;
  16969. case 'h': // 1 string to match.
  16970. if (NameR[10] != 'h')
  16971. break;
  16972. return Intrinsic::spu_si_mpyhh; // "pu.si.mpyhh"
  16973. case 'u': // 1 string to match.
  16974. if (NameR[10] != 'i')
  16975. break;
  16976. return Intrinsic::spu_si_mpyui; // "pu.si.mpyui"
  16977. }
  16978. break;
  16979. case 'x': // 2 strings to match.
  16980. if (memcmp(NameR.data()+7, "or", 2))
  16981. break;
  16982. switch (NameR[9]) {
  16983. default: break;
  16984. case 'b': // 1 string to match.
  16985. if (NameR[10] != 'i')
  16986. break;
  16987. return Intrinsic::spu_si_xorbi; // "pu.si.xorbi"
  16988. case 'h': // 1 string to match.
  16989. if (NameR[10] != 'i')
  16990. break;
  16991. return Intrinsic::spu_si_xorhi; // "pu.si.xorhi"
  16992. }
  16993. break;
  16994. }
  16995. break;
  16996. case 't': // 1 string to match.
  16997. if (memcmp(NameR.data()+1, "ackrestore", 10))
  16998. break;
  16999. return Intrinsic::stackrestore; // "tackrestore"
  17000. }
  17001. break;
  17002. case 12: // 6 strings to match.
  17003. if (memcmp(NameR.data()+0, "pu.si.", 6))
  17004. break;
  17005. switch (NameR[6]) {
  17006. default: break;
  17007. case 'c': // 2 strings to match.
  17008. if (memcmp(NameR.data()+7, "lgt", 3))
  17009. break;
  17010. switch (NameR[10]) {
  17011. default: break;
  17012. case 'b': // 1 string to match.
  17013. if (NameR[11] != 'i')
  17014. break;
  17015. return Intrinsic::spu_si_clgtbi; // "pu.si.clgtbi"
  17016. case 'h': // 1 string to match.
  17017. if (NameR[11] != 'i')
  17018. break;
  17019. return Intrinsic::spu_si_clgthi; // "pu.si.clgthi"
  17020. }
  17021. break;
  17022. case 'm': // 2 strings to match.
  17023. if (memcmp(NameR.data()+7, "pyhh", 4))
  17024. break;
  17025. switch (NameR[11]) {
  17026. default: break;
  17027. case 'a': // 1 string to match.
  17028. return Intrinsic::spu_si_mpyhha; // "pu.si.mpyhha"
  17029. case 'u': // 1 string to match.
  17030. return Intrinsic::spu_si_mpyhhu; // "pu.si.mpyhhu"
  17031. }
  17032. break;
  17033. case 's': // 2 strings to match.
  17034. if (memcmp(NameR.data()+7, "hlqb", 4))
  17035. break;
  17036. switch (NameR[11]) {
  17037. default: break;
  17038. case 'i': // 1 string to match.
  17039. return Intrinsic::spu_si_shlqbi; // "pu.si.shlqbi"
  17040. case 'y': // 1 string to match.
  17041. return Intrinsic::spu_si_shlqby; // "pu.si.shlqby"
  17042. }
  17043. break;
  17044. }
  17045. break;
  17046. case 13: // 4 strings to match.
  17047. switch (NameR[0]) {
  17048. default: break;
  17049. case 'p': // 3 strings to match.
  17050. if (memcmp(NameR.data()+1, "u.si.", 5))
  17051. break;
  17052. switch (NameR[6]) {
  17053. default: break;
  17054. case 'm': // 1 string to match.
  17055. if (memcmp(NameR.data()+7, "pyhhau", 6))
  17056. break;
  17057. return Intrinsic::spu_si_mpyhhau; // "pu.si.mpyhhau"
  17058. case 's': // 2 strings to match.
  17059. if (memcmp(NameR.data()+7, "hlqb", 4))
  17060. break;
  17061. switch (NameR[11]) {
  17062. default: break;
  17063. case 'i': // 1 string to match.
  17064. if (NameR[12] != 'i')
  17065. break;
  17066. return Intrinsic::spu_si_shlqbii; // "pu.si.shlqbii"
  17067. case 'y': // 1 string to match.
  17068. if (NameR[12] != 'i')
  17069. break;
  17070. return Intrinsic::spu_si_shlqbyi; // "pu.si.shlqbyi"
  17071. }
  17072. break;
  17073. }
  17074. break;
  17075. case 't': // 1 string to match.
  17076. if (memcmp(NameR.data()+1, "ackprotector", 12))
  17077. break;
  17078. return Intrinsic::stackprotector; // "tackprotector"
  17079. }
  17080. break;
  17081. }
  17082. break; // end of 's' case.
  17083. case 't':
  17084. switch (NameR.size()) {
  17085. default: break;
  17086. case 3: // 1 string to match.
  17087. if (memcmp(NameR.data()+0, "rap", 3))
  17088. break;
  17089. return Intrinsic::trap; // "rap"
  17090. }
  17091. break; // end of 't' case.
  17092. case 'u':
  17093. if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow;
  17094. if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow;
  17095. if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow;
  17096. break; // end of 'u' case.
  17097. case 'v':
  17098. switch (NameR.size()) {
  17099. default: break;
  17100. case 5: // 1 string to match.
  17101. if (memcmp(NameR.data()+0, "a_end", 5))
  17102. break;
  17103. return Intrinsic::vaend; // "a_end"
  17104. case 6: // 1 string to match.
  17105. if (memcmp(NameR.data()+0, "a_copy", 6))
  17106. break;
  17107. return Intrinsic::vacopy; // "a_copy"
  17108. case 7: // 1 string to match.
  17109. if (memcmp(NameR.data()+0, "a_start", 7))
  17110. break;
  17111. return Intrinsic::vastart; // "a_start"
  17112. case 13: // 1 string to match.
  17113. if (memcmp(NameR.data()+0, "ar.annotation", 13))
  17114. break;
  17115. return Intrinsic::var_annotation; // "ar.annotation"
  17116. }
  17117. break; // end of 'v' case.
  17118. case 'x':
  17119. if (NameR.startswith("core.chkct.")) return Intrinsic::xcore_chkct;
  17120. if (NameR.startswith("core.eeu.")) return Intrinsic::xcore_eeu;
  17121. if (NameR.startswith("core.endin.")) return Intrinsic::xcore_endin;
  17122. if (NameR.startswith("core.freer.")) return Intrinsic::xcore_freer;
  17123. if (NameR.startswith("core.getr.")) return Intrinsic::xcore_getr;
  17124. if (NameR.startswith("core.getst.")) return Intrinsic::xcore_getst;
  17125. if (NameR.startswith("core.getts.")) return Intrinsic::xcore_getts;
  17126. if (NameR.startswith("core.in.")) return Intrinsic::xcore_in;
  17127. if (NameR.startswith("core.inct.")) return Intrinsic::xcore_inct;
  17128. if (NameR.startswith("core.initcp.")) return Intrinsic::xcore_initcp;
  17129. if (NameR.startswith("core.initdp.")) return Intrinsic::xcore_initdp;
  17130. if (NameR.startswith("core.initlr.")) return Intrinsic::xcore_initlr;
  17131. if (NameR.startswith("core.initpc.")) return Intrinsic::xcore_initpc;
  17132. if (NameR.startswith("core.initsp.")) return Intrinsic::xcore_initsp;
  17133. if (NameR.startswith("core.inshr.")) return Intrinsic::xcore_inshr;
  17134. if (NameR.startswith("core.int.")) return Intrinsic::xcore_int;
  17135. if (NameR.startswith("core.mjoin.")) return Intrinsic::xcore_mjoin;
  17136. if (NameR.startswith("core.msync.")) return Intrinsic::xcore_msync;
  17137. if (NameR.startswith("core.out.")) return Intrinsic::xcore_out;
  17138. if (NameR.startswith("core.outct.")) return Intrinsic::xcore_outct;
  17139. if (NameR.startswith("core.outshr.")) return Intrinsic::xcore_outshr;
  17140. if (NameR.startswith("core.outt.")) return Intrinsic::xcore_outt;
  17141. if (NameR.startswith("core.peek.")) return Intrinsic::xcore_peek;
  17142. if (NameR.startswith("core.setc.")) return Intrinsic::xcore_setc;
  17143. if (NameR.startswith("core.setclk.")) return Intrinsic::xcore_setclk;
  17144. if (NameR.startswith("core.setd.")) return Intrinsic::xcore_setd;
  17145. if (NameR.startswith("core.setev.")) return Intrinsic::xcore_setev;
  17146. if (NameR.startswith("core.setpsc.")) return Intrinsic::xcore_setpsc;
  17147. if (NameR.startswith("core.setpt.")) return Intrinsic::xcore_setpt;
  17148. if (NameR.startswith("core.setrdy.")) return Intrinsic::xcore_setrdy;
  17149. if (NameR.startswith("core.settw.")) return Intrinsic::xcore_settw;
  17150. if (NameR.startswith("core.setv.")) return Intrinsic::xcore_setv;
  17151. if (NameR.startswith("core.syncr.")) return Intrinsic::xcore_syncr;
  17152. if (NameR.startswith("core.testct.")) return Intrinsic::xcore_testct;
  17153. if (NameR.startswith("core.testwct.")) return Intrinsic::xcore_testwct;
  17154. switch (NameR.size()) {
  17155. default: break;
  17156. case 6: // 1 string to match.
  17157. if (memcmp(NameR.data()+0, "86.int", 6))
  17158. break;
  17159. return Intrinsic::x86_int; // "86.int"
  17160. case 9: // 4 strings to match.
  17161. if (memcmp(NameR.data()+0, "core.", 5))
  17162. break;
  17163. switch (NameR[5]) {
  17164. default: break;
  17165. case 'c': // 2 strings to match.
  17166. switch (NameR[6]) {
  17167. default: break;
  17168. case 'l': // 1 string to match.
  17169. if (memcmp(NameR.data()+7, "re", 2))
  17170. break;
  17171. return Intrinsic::xcore_clre; // "core.clre"
  17172. case 'r': // 1 string to match.
  17173. if (memcmp(NameR.data()+7, "c8", 2))
  17174. break;
  17175. return Intrinsic::xcore_crc8; // "core.crc8"
  17176. }
  17177. break;
  17178. case 's': // 1 string to match.
  17179. if (memcmp(NameR.data()+6, "ext", 3))
  17180. break;
  17181. return Intrinsic::xcore_sext; // "core.sext"
  17182. case 'z': // 1 string to match.
  17183. if (memcmp(NameR.data()+6, "ext", 3))
  17184. break;
  17185. return Intrinsic::xcore_zext; // "core.zext"
  17186. }
  17187. break;
  17188. case 10: // 10 strings to match.
  17189. switch (NameR[0]) {
  17190. default: break;
  17191. case '8': // 1 string to match.
  17192. if (memcmp(NameR.data()+1, "6.mmx.por", 9))
  17193. break;
  17194. return Intrinsic::x86_mmx_por; // "86.mmx.por"
  17195. case 'c': // 9 strings to match.
  17196. if (memcmp(NameR.data()+1, "ore.", 4))
  17197. break;
  17198. switch (NameR[5]) {
  17199. default: break;
  17200. case 'c': // 2 strings to match.
  17201. switch (NameR[6]) {
  17202. default: break;
  17203. case 'l': // 1 string to match.
  17204. if (memcmp(NameR.data()+7, "rsr", 3))
  17205. break;
  17206. return Intrinsic::xcore_clrsr; // "core.clrsr"
  17207. case 'r': // 1 string to match.
  17208. if (memcmp(NameR.data()+7, "c32", 3))
  17209. break;
  17210. return Intrinsic::xcore_crc32; // "core.crc32"
  17211. }
  17212. break;
  17213. case 'g': // 4 strings to match.
  17214. if (memcmp(NameR.data()+6, "et", 2))
  17215. break;
  17216. switch (NameR[8]) {
  17217. default: break;
  17218. case 'e': // 2 strings to match.
  17219. switch (NameR[9]) {
  17220. default: break;
  17221. case 'd': // 1 string to match.
  17222. return Intrinsic::xcore_geted; // "core.geted"
  17223. case 't': // 1 string to match.
  17224. return Intrinsic::xcore_getet; // "core.getet"
  17225. }
  17226. break;
  17227. case 'i': // 1 string to match.
  17228. if (NameR[9] != 'd')
  17229. break;
  17230. return Intrinsic::xcore_getid; // "core.getid"
  17231. case 'p': // 1 string to match.
  17232. if (NameR[9] != 's')
  17233. break;
  17234. return Intrinsic::xcore_getps; // "core.getps"
  17235. }
  17236. break;
  17237. case 's': // 3 strings to match.
  17238. switch (NameR[6]) {
  17239. default: break;
  17240. case 'e': // 2 strings to match.
  17241. if (NameR[7] != 't')
  17242. break;
  17243. switch (NameR[8]) {
  17244. default: break;
  17245. case 'p': // 1 string to match.
  17246. if (NameR[9] != 's')
  17247. break;
  17248. return Intrinsic::xcore_setps; // "core.setps"
  17249. case 's': // 1 string to match.
  17250. if (NameR[9] != 'r')
  17251. break;
  17252. return Intrinsic::xcore_setsr; // "core.setsr"
  17253. }
  17254. break;
  17255. case 's': // 1 string to match.
  17256. if (memcmp(NameR.data()+7, "ync", 3))
  17257. break;
  17258. return Intrinsic::xcore_ssync; // "core.ssync"
  17259. }
  17260. break;
  17261. }
  17262. break;
  17263. }
  17264. break;
  17265. case 11: // 4 strings to match.
  17266. switch (NameR[0]) {
  17267. default: break;
  17268. case '8': // 3 strings to match.
  17269. if (memcmp(NameR.data()+1, "6.mmx.", 6))
  17270. break;
  17271. switch (NameR[7]) {
  17272. default: break;
  17273. case 'e': // 1 string to match.
  17274. if (memcmp(NameR.data()+8, "mms", 3))
  17275. break;
  17276. return Intrinsic::x86_mmx_emms; // "86.mmx.emms"
  17277. case 'p': // 2 strings to match.
  17278. switch (NameR[8]) {
  17279. default: break;
  17280. case 'a': // 1 string to match.
  17281. if (memcmp(NameR.data()+9, "nd", 2))
  17282. break;
  17283. return Intrinsic::x86_mmx_pand; // "86.mmx.pand"
  17284. case 'x': // 1 string to match.
  17285. if (memcmp(NameR.data()+9, "or", 2))
  17286. break;
  17287. return Intrinsic::x86_mmx_pxor; // "86.mmx.pxor"
  17288. }
  17289. break;
  17290. }
  17291. break;
  17292. case 'c': // 1 string to match.
  17293. if (memcmp(NameR.data()+1, "ore.bitrev", 10))
  17294. break;
  17295. return Intrinsic::xcore_bitrev; // "core.bitrev"
  17296. }
  17297. break;
  17298. case 12: // 6 strings to match.
  17299. if (memcmp(NameR.data()+0, "86.", 3))
  17300. break;
  17301. switch (NameR[3]) {
  17302. default: break;
  17303. case 'm': // 2 strings to match.
  17304. if (memcmp(NameR.data()+4, "mx.", 3))
  17305. break;
  17306. switch (NameR[7]) {
  17307. default: break;
  17308. case 'f': // 1 string to match.
  17309. if (memcmp(NameR.data()+8, "emms", 4))
  17310. break;
  17311. return Intrinsic::x86_mmx_femms; // "86.mmx.femms"
  17312. case 'p': // 1 string to match.
  17313. if (memcmp(NameR.data()+8, "andn", 4))
  17314. break;
  17315. return Intrinsic::x86_mmx_pandn; // "86.mmx.pandn"
  17316. }
  17317. break;
  17318. case 'p': // 1 string to match.
  17319. if (memcmp(NameR.data()+4, "clmulqdq", 8))
  17320. break;
  17321. return Intrinsic::x86_pclmulqdq; // "86.pclmulqdq"
  17322. case 'r': // 3 strings to match.
  17323. if (memcmp(NameR.data()+4, "drand.", 6))
  17324. break;
  17325. switch (NameR[10]) {
  17326. default: break;
  17327. case '1': // 1 string to match.
  17328. if (NameR[11] != '6')
  17329. break;
  17330. return Intrinsic::x86_rdrand_16; // "86.rdrand.16"
  17331. case '3': // 1 string to match.
  17332. if (NameR[11] != '2')
  17333. break;
  17334. return Intrinsic::x86_rdrand_32; // "86.rdrand.32"
  17335. case '6': // 1 string to match.
  17336. if (NameR[11] != '4')
  17337. break;
  17338. return Intrinsic::x86_rdrand_64; // "86.rdrand.64"
  17339. }
  17340. break;
  17341. }
  17342. break;
  17343. case 13: // 53 strings to match.
  17344. if (memcmp(NameR.data()+0, "86.", 3))
  17345. break;
  17346. switch (NameR[3]) {
  17347. default: break;
  17348. case 'a': // 1 string to match.
  17349. if (memcmp(NameR.data()+4, "vx2.permd", 9))
  17350. break;
  17351. return Intrinsic::x86_avx2_permd; // "86.avx2.permd"
  17352. case 'm': // 18 strings to match.
  17353. if (memcmp(NameR.data()+4, "mx.p", 4))
  17354. break;
  17355. switch (NameR[8]) {
  17356. default: break;
  17357. case 'a': // 6 strings to match.
  17358. switch (NameR[9]) {
  17359. default: break;
  17360. case 'd': // 4 strings to match.
  17361. if (memcmp(NameR.data()+10, "d.", 2))
  17362. break;
  17363. switch (NameR[12]) {
  17364. default: break;
  17365. case 'b': // 1 string to match.
  17366. return Intrinsic::x86_mmx_padd_b; // "86.mmx.padd.b"
  17367. case 'd': // 1 string to match.
  17368. return Intrinsic::x86_mmx_padd_d; // "86.mmx.padd.d"
  17369. case 'q': // 1 string to match.
  17370. return Intrinsic::x86_mmx_padd_q; // "86.mmx.padd.q"
  17371. case 'w': // 1 string to match.
  17372. return Intrinsic::x86_mmx_padd_w; // "86.mmx.padd.w"
  17373. }
  17374. break;
  17375. case 'v': // 2 strings to match.
  17376. if (memcmp(NameR.data()+10, "g.", 2))
  17377. break;
  17378. switch (NameR[12]) {
  17379. default: break;
  17380. case 'b': // 1 string to match.
  17381. return Intrinsic::x86_mmx_pavg_b; // "86.mmx.pavg.b"
  17382. case 'w': // 1 string to match.
  17383. return Intrinsic::x86_mmx_pavg_w; // "86.mmx.pavg.w"
  17384. }
  17385. break;
  17386. }
  17387. break;
  17388. case 's': // 12 strings to match.
  17389. switch (NameR[9]) {
  17390. default: break;
  17391. case 'l': // 3 strings to match.
  17392. if (memcmp(NameR.data()+10, "l.", 2))
  17393. break;
  17394. switch (NameR[12]) {
  17395. default: break;
  17396. case 'd': // 1 string to match.
  17397. return Intrinsic::x86_mmx_psll_d; // "86.mmx.psll.d"
  17398. case 'q': // 1 string to match.
  17399. return Intrinsic::x86_mmx_psll_q; // "86.mmx.psll.q"
  17400. case 'w': // 1 string to match.
  17401. return Intrinsic::x86_mmx_psll_w; // "86.mmx.psll.w"
  17402. }
  17403. break;
  17404. case 'r': // 5 strings to match.
  17405. switch (NameR[10]) {
  17406. default: break;
  17407. case 'a': // 2 strings to match.
  17408. if (NameR[11] != '.')
  17409. break;
  17410. switch (NameR[12]) {
  17411. default: break;
  17412. case 'd': // 1 string to match.
  17413. return Intrinsic::x86_mmx_psra_d; // "86.mmx.psra.d"
  17414. case 'w': // 1 string to match.
  17415. return Intrinsic::x86_mmx_psra_w; // "86.mmx.psra.w"
  17416. }
  17417. break;
  17418. case 'l': // 3 strings to match.
  17419. if (NameR[11] != '.')
  17420. break;
  17421. switch (NameR[12]) {
  17422. default: break;
  17423. case 'd': // 1 string to match.
  17424. return Intrinsic::x86_mmx_psrl_d; // "86.mmx.psrl.d"
  17425. case 'q': // 1 string to match.
  17426. return Intrinsic::x86_mmx_psrl_q; // "86.mmx.psrl.q"
  17427. case 'w': // 1 string to match.
  17428. return Intrinsic::x86_mmx_psrl_w; // "86.mmx.psrl.w"
  17429. }
  17430. break;
  17431. }
  17432. break;
  17433. case 'u': // 4 strings to match.
  17434. if (memcmp(NameR.data()+10, "b.", 2))
  17435. break;
  17436. switch (NameR[12]) {
  17437. default: break;
  17438. case 'b': // 1 string to match.
  17439. return Intrinsic::x86_mmx_psub_b; // "86.mmx.psub.b"
  17440. case 'd': // 1 string to match.
  17441. return Intrinsic::x86_mmx_psub_d; // "86.mmx.psub.d"
  17442. case 'q': // 1 string to match.
  17443. return Intrinsic::x86_mmx_psub_q; // "86.mmx.psub.q"
  17444. case 'w': // 1 string to match.
  17445. return Intrinsic::x86_mmx_psub_w; // "86.mmx.psub.w"
  17446. }
  17447. break;
  17448. }
  17449. break;
  17450. }
  17451. break;
  17452. case 's': // 16 strings to match.
  17453. if (memcmp(NameR.data()+4, "se", 2))
  17454. break;
  17455. switch (NameR[6]) {
  17456. default: break;
  17457. case '.': // 13 strings to match.
  17458. switch (NameR[7]) {
  17459. default: break;
  17460. case 'a': // 1 string to match.
  17461. if (memcmp(NameR.data()+8, "dd.ss", 5))
  17462. break;
  17463. return Intrinsic::x86_sse_add_ss; // "86.sse.add.ss"
  17464. case 'c': // 2 strings to match.
  17465. if (memcmp(NameR.data()+8, "mp.", 3))
  17466. break;
  17467. switch (NameR[11]) {
  17468. default: break;
  17469. case 'p': // 1 string to match.
  17470. if (NameR[12] != 's')
  17471. break;
  17472. return Intrinsic::x86_sse_cmp_ps; // "86.sse.cmp.ps"
  17473. case 's': // 1 string to match.
  17474. if (NameR[12] != 's')
  17475. break;
  17476. return Intrinsic::x86_sse_cmp_ss; // "86.sse.cmp.ss"
  17477. }
  17478. break;
  17479. case 'd': // 1 string to match.
  17480. if (memcmp(NameR.data()+8, "iv.ss", 5))
  17481. break;
  17482. return Intrinsic::x86_sse_div_ss; // "86.sse.div.ss"
  17483. case 'm': // 5 strings to match.
  17484. switch (NameR[8]) {
  17485. default: break;
  17486. case 'a': // 2 strings to match.
  17487. if (memcmp(NameR.data()+9, "x.", 2))
  17488. break;
  17489. switch (NameR[11]) {
  17490. default: break;
  17491. case 'p': // 1 string to match.
  17492. if (NameR[12] != 's')
  17493. break;
  17494. return Intrinsic::x86_sse_max_ps; // "86.sse.max.ps"
  17495. case 's': // 1 string to match.
  17496. if (NameR[12] != 's')
  17497. break;
  17498. return Intrinsic::x86_sse_max_ss; // "86.sse.max.ss"
  17499. }
  17500. break;
  17501. case 'i': // 2 strings to match.
  17502. if (memcmp(NameR.data()+9, "n.", 2))
  17503. break;
  17504. switch (NameR[11]) {
  17505. default: break;
  17506. case 'p': // 1 string to match.
  17507. if (NameR[12] != 's')
  17508. break;
  17509. return Intrinsic::x86_sse_min_ps; // "86.sse.min.ps"
  17510. case 's': // 1 string to match.
  17511. if (NameR[12] != 's')
  17512. break;
  17513. return Intrinsic::x86_sse_min_ss; // "86.sse.min.ss"
  17514. }
  17515. break;
  17516. case 'u': // 1 string to match.
  17517. if (memcmp(NameR.data()+9, "l.ss", 4))
  17518. break;
  17519. return Intrinsic::x86_sse_mul_ss; // "86.sse.mul.ss"
  17520. }
  17521. break;
  17522. case 'r': // 2 strings to match.
  17523. if (memcmp(NameR.data()+8, "cp.", 3))
  17524. break;
  17525. switch (NameR[11]) {
  17526. default: break;
  17527. case 'p': // 1 string to match.
  17528. if (NameR[12] != 's')
  17529. break;
  17530. return Intrinsic::x86_sse_rcp_ps; // "86.sse.rcp.ps"
  17531. case 's': // 1 string to match.
  17532. if (NameR[12] != 's')
  17533. break;
  17534. return Intrinsic::x86_sse_rcp_ss; // "86.sse.rcp.ss"
  17535. }
  17536. break;
  17537. case 's': // 2 strings to match.
  17538. switch (NameR[8]) {
  17539. default: break;
  17540. case 'f': // 1 string to match.
  17541. if (memcmp(NameR.data()+9, "ence", 4))
  17542. break;
  17543. return Intrinsic::x86_sse_sfence; // "86.sse.sfence"
  17544. case 'u': // 1 string to match.
  17545. if (memcmp(NameR.data()+9, "b.ss", 4))
  17546. break;
  17547. return Intrinsic::x86_sse_sub_ss; // "86.sse.sub.ss"
  17548. }
  17549. break;
  17550. }
  17551. break;
  17552. case '3': // 1 string to match.
  17553. if (memcmp(NameR.data()+7, ".mwait", 6))
  17554. break;
  17555. return Intrinsic::x86_sse3_mwait; // "86.sse3.mwait"
  17556. case '4': // 2 strings to match.
  17557. if (memcmp(NameR.data()+7, "1.dpp", 5))
  17558. break;
  17559. switch (NameR[12]) {
  17560. default: break;
  17561. case 'd': // 1 string to match.
  17562. return Intrinsic::x86_sse41_dppd; // "86.sse41.dppd"
  17563. case 's': // 1 string to match.
  17564. return Intrinsic::x86_sse41_dpps; // "86.sse41.dpps"
  17565. }
  17566. break;
  17567. }
  17568. break;
  17569. case 'x': // 18 strings to match.
  17570. if (memcmp(NameR.data()+4, "op.vp", 5))
  17571. break;
  17572. switch (NameR[9]) {
  17573. default: break;
  17574. case 'c': // 5 strings to match.
  17575. switch (NameR[10]) {
  17576. default: break;
  17577. case 'm': // 1 string to match.
  17578. if (memcmp(NameR.data()+11, "ov", 2))
  17579. break;
  17580. return Intrinsic::x86_xop_vpcmov; // "86.xop.vpcmov"
  17581. case 'o': // 4 strings to match.
  17582. if (NameR[11] != 'm')
  17583. break;
  17584. switch (NameR[12]) {
  17585. default: break;
  17586. case 'b': // 1 string to match.
  17587. return Intrinsic::x86_xop_vpcomb; // "86.xop.vpcomb"
  17588. case 'd': // 1 string to match.
  17589. return Intrinsic::x86_xop_vpcomd; // "86.xop.vpcomd"
  17590. case 'q': // 1 string to match.
  17591. return Intrinsic::x86_xop_vpcomq; // "86.xop.vpcomq"
  17592. case 'w': // 1 string to match.
  17593. return Intrinsic::x86_xop_vpcomw; // "86.xop.vpcomw"
  17594. }
  17595. break;
  17596. }
  17597. break;
  17598. case 'p': // 1 string to match.
  17599. if (memcmp(NameR.data()+10, "erm", 3))
  17600. break;
  17601. return Intrinsic::x86_xop_vpperm; // "86.xop.vpperm"
  17602. case 'r': // 4 strings to match.
  17603. if (memcmp(NameR.data()+10, "ot", 2))
  17604. break;
  17605. switch (NameR[12]) {
  17606. default: break;
  17607. case 'b': // 1 string to match.
  17608. return Intrinsic::x86_xop_vprotb; // "86.xop.vprotb"
  17609. case 'd': // 1 string to match.
  17610. return Intrinsic::x86_xop_vprotd; // "86.xop.vprotd"
  17611. case 'q': // 1 string to match.
  17612. return Intrinsic::x86_xop_vprotq; // "86.xop.vprotq"
  17613. case 'w': // 1 string to match.
  17614. return Intrinsic::x86_xop_vprotw; // "86.xop.vprotw"
  17615. }
  17616. break;
  17617. case 's': // 8 strings to match.
  17618. if (NameR[10] != 'h')
  17619. break;
  17620. switch (NameR[11]) {
  17621. default: break;
  17622. case 'a': // 4 strings to match.
  17623. switch (NameR[12]) {
  17624. default: break;
  17625. case 'b': // 1 string to match.
  17626. return Intrinsic::x86_xop_vpshab; // "86.xop.vpshab"
  17627. case 'd': // 1 string to match.
  17628. return Intrinsic::x86_xop_vpshad; // "86.xop.vpshad"
  17629. case 'q': // 1 string to match.
  17630. return Intrinsic::x86_xop_vpshaq; // "86.xop.vpshaq"
  17631. case 'w': // 1 string to match.
  17632. return Intrinsic::x86_xop_vpshaw; // "86.xop.vpshaw"
  17633. }
  17634. break;
  17635. case 'l': // 4 strings to match.
  17636. switch (NameR[12]) {
  17637. default: break;
  17638. case 'b': // 1 string to match.
  17639. return Intrinsic::x86_xop_vpshlb; // "86.xop.vpshlb"
  17640. case 'd': // 1 string to match.
  17641. return Intrinsic::x86_xop_vpshld; // "86.xop.vpshld"
  17642. case 'q': // 1 string to match.
  17643. return Intrinsic::x86_xop_vpshlq; // "86.xop.vpshlq"
  17644. case 'w': // 1 string to match.
  17645. return Intrinsic::x86_xop_vpshlw; // "86.xop.vpshlw"
  17646. }
  17647. break;
  17648. }
  17649. break;
  17650. }
  17651. break;
  17652. }
  17653. break;
  17654. case 14: // 96 strings to match.
  17655. switch (NameR[0]) {
  17656. default: break;
  17657. case '8': // 95 strings to match.
  17658. if (memcmp(NameR.data()+1, "6.", 2))
  17659. break;
  17660. switch (NameR[3]) {
  17661. default: break;
  17662. case '3': // 9 strings to match.
  17663. if (memcmp(NameR.data()+4, "dnow.p", 6))
  17664. break;
  17665. switch (NameR[10]) {
  17666. default: break;
  17667. case 'f': // 8 strings to match.
  17668. switch (NameR[11]) {
  17669. default: break;
  17670. case '2': // 1 string to match.
  17671. if (memcmp(NameR.data()+12, "id", 2))
  17672. break;
  17673. return Intrinsic::x86_3dnow_pf2id; // "86.3dnow.pf2id"
  17674. case 'a': // 2 strings to match.
  17675. switch (NameR[12]) {
  17676. default: break;
  17677. case 'c': // 1 string to match.
  17678. if (NameR[13] != 'c')
  17679. break;
  17680. return Intrinsic::x86_3dnow_pfacc; // "86.3dnow.pfacc"
  17681. case 'd': // 1 string to match.
  17682. if (NameR[13] != 'd')
  17683. break;
  17684. return Intrinsic::x86_3dnow_pfadd; // "86.3dnow.pfadd"
  17685. }
  17686. break;
  17687. case 'm': // 3 strings to match.
  17688. switch (NameR[12]) {
  17689. default: break;
  17690. case 'a': // 1 string to match.
  17691. if (NameR[13] != 'x')
  17692. break;
  17693. return Intrinsic::x86_3dnow_pfmax; // "86.3dnow.pfmax"
  17694. case 'i': // 1 string to match.
  17695. if (NameR[13] != 'n')
  17696. break;
  17697. return Intrinsic::x86_3dnow_pfmin; // "86.3dnow.pfmin"
  17698. case 'u': // 1 string to match.
  17699. if (NameR[13] != 'l')
  17700. break;
  17701. return Intrinsic::x86_3dnow_pfmul; // "86.3dnow.pfmul"
  17702. }
  17703. break;
  17704. case 'r': // 1 string to match.
  17705. if (memcmp(NameR.data()+12, "cp", 2))
  17706. break;
  17707. return Intrinsic::x86_3dnow_pfrcp; // "86.3dnow.pfrcp"
  17708. case 's': // 1 string to match.
  17709. if (memcmp(NameR.data()+12, "ub", 2))
  17710. break;
  17711. return Intrinsic::x86_3dnow_pfsub; // "86.3dnow.pfsub"
  17712. }
  17713. break;
  17714. case 'i': // 1 string to match.
  17715. if (memcmp(NameR.data()+11, "2fd", 3))
  17716. break;
  17717. return Intrinsic::x86_3dnow_pi2fd; // "86.3dnow.pi2fd"
  17718. }
  17719. break;
  17720. case 'a': // 14 strings to match.
  17721. if (memcmp(NameR.data()+4, "vx2.p", 5))
  17722. break;
  17723. switch (NameR[9]) {
  17724. default: break;
  17725. case 'a': // 5 strings to match.
  17726. switch (NameR[10]) {
  17727. default: break;
  17728. case 'b': // 3 strings to match.
  17729. if (memcmp(NameR.data()+11, "s.", 2))
  17730. break;
  17731. switch (NameR[13]) {
  17732. default: break;
  17733. case 'b': // 1 string to match.
  17734. return Intrinsic::x86_avx2_pabs_b; // "86.avx2.pabs.b"
  17735. case 'd': // 1 string to match.
  17736. return Intrinsic::x86_avx2_pabs_d; // "86.avx2.pabs.d"
  17737. case 'w': // 1 string to match.
  17738. return Intrinsic::x86_avx2_pabs_w; // "86.avx2.pabs.w"
  17739. }
  17740. break;
  17741. case 'v': // 2 strings to match.
  17742. if (memcmp(NameR.data()+11, "g.", 2))
  17743. break;
  17744. switch (NameR[13]) {
  17745. default: break;
  17746. case 'b': // 1 string to match.
  17747. return Intrinsic::x86_avx2_pavg_b; // "86.avx2.pavg.b"
  17748. case 'w': // 1 string to match.
  17749. return Intrinsic::x86_avx2_pavg_w; // "86.avx2.pavg.w"
  17750. }
  17751. break;
  17752. }
  17753. break;
  17754. case 'e': // 1 string to match.
  17755. if (memcmp(NameR.data()+10, "rmps", 4))
  17756. break;
  17757. return Intrinsic::x86_avx2_permps; // "86.avx2.permps"
  17758. case 's': // 8 strings to match.
  17759. switch (NameR[10]) {
  17760. default: break;
  17761. case 'l': // 3 strings to match.
  17762. if (memcmp(NameR.data()+11, "l.", 2))
  17763. break;
  17764. switch (NameR[13]) {
  17765. default: break;
  17766. case 'd': // 1 string to match.
  17767. return Intrinsic::x86_avx2_psll_d; // "86.avx2.psll.d"
  17768. case 'q': // 1 string to match.
  17769. return Intrinsic::x86_avx2_psll_q; // "86.avx2.psll.q"
  17770. case 'w': // 1 string to match.
  17771. return Intrinsic::x86_avx2_psll_w; // "86.avx2.psll.w"
  17772. }
  17773. break;
  17774. case 'r': // 5 strings to match.
  17775. switch (NameR[11]) {
  17776. default: break;
  17777. case 'a': // 2 strings to match.
  17778. if (NameR[12] != '.')
  17779. break;
  17780. switch (NameR[13]) {
  17781. default: break;
  17782. case 'd': // 1 string to match.
  17783. return Intrinsic::x86_avx2_psra_d; // "86.avx2.psra.d"
  17784. case 'w': // 1 string to match.
  17785. return Intrinsic::x86_avx2_psra_w; // "86.avx2.psra.w"
  17786. }
  17787. break;
  17788. case 'l': // 3 strings to match.
  17789. if (NameR[12] != '.')
  17790. break;
  17791. switch (NameR[13]) {
  17792. default: break;
  17793. case 'd': // 1 string to match.
  17794. return Intrinsic::x86_avx2_psrl_d; // "86.avx2.psrl.d"
  17795. case 'q': // 1 string to match.
  17796. return Intrinsic::x86_avx2_psrl_q; // "86.avx2.psrl.q"
  17797. case 'w': // 1 string to match.
  17798. return Intrinsic::x86_avx2_psrl_w; // "86.avx2.psrl.w"
  17799. }
  17800. break;
  17801. }
  17802. break;
  17803. }
  17804. break;
  17805. }
  17806. break;
  17807. case 'b': // 6 strings to match.
  17808. if (memcmp(NameR.data()+4, "mi.", 3))
  17809. break;
  17810. switch (NameR[7]) {
  17811. default: break;
  17812. case 'b': // 2 strings to match.
  17813. if (memcmp(NameR.data()+8, "zhi.", 4))
  17814. break;
  17815. switch (NameR[12]) {
  17816. default: break;
  17817. case '3': // 1 string to match.
  17818. if (NameR[13] != '2')
  17819. break;
  17820. return Intrinsic::x86_bmi_bzhi_32; // "86.bmi.bzhi.32"
  17821. case '6': // 1 string to match.
  17822. if (NameR[13] != '4')
  17823. break;
  17824. return Intrinsic::x86_bmi_bzhi_64; // "86.bmi.bzhi.64"
  17825. }
  17826. break;
  17827. case 'p': // 4 strings to match.
  17828. switch (NameR[8]) {
  17829. default: break;
  17830. case 'd': // 2 strings to match.
  17831. if (memcmp(NameR.data()+9, "ep.", 3))
  17832. break;
  17833. switch (NameR[12]) {
  17834. default: break;
  17835. case '3': // 1 string to match.
  17836. if (NameR[13] != '2')
  17837. break;
  17838. return Intrinsic::x86_bmi_pdep_32; // "86.bmi.pdep.32"
  17839. case '6': // 1 string to match.
  17840. if (NameR[13] != '4')
  17841. break;
  17842. return Intrinsic::x86_bmi_pdep_64; // "86.bmi.pdep.64"
  17843. }
  17844. break;
  17845. case 'e': // 2 strings to match.
  17846. if (memcmp(NameR.data()+9, "xt.", 3))
  17847. break;
  17848. switch (NameR[12]) {
  17849. default: break;
  17850. case '3': // 1 string to match.
  17851. if (NameR[13] != '2')
  17852. break;
  17853. return Intrinsic::x86_bmi_pext_32; // "86.bmi.pext.32"
  17854. case '6': // 1 string to match.
  17855. if (NameR[13] != '4')
  17856. break;
  17857. return Intrinsic::x86_bmi_pext_64; // "86.bmi.pext.64"
  17858. }
  17859. break;
  17860. }
  17861. break;
  17862. }
  17863. break;
  17864. case 'm': // 21 strings to match.
  17865. if (memcmp(NameR.data()+4, "mx.p", 4))
  17866. break;
  17867. switch (NameR[8]) {
  17868. default: break;
  17869. case 'a': // 2 strings to match.
  17870. if (memcmp(NameR.data()+9, "dds.", 4))
  17871. break;
  17872. switch (NameR[13]) {
  17873. default: break;
  17874. case 'b': // 1 string to match.
  17875. return Intrinsic::x86_mmx_padds_b; // "86.mmx.padds.b"
  17876. case 'w': // 1 string to match.
  17877. return Intrinsic::x86_mmx_padds_w; // "86.mmx.padds.w"
  17878. }
  17879. break;
  17880. case 'e': // 1 string to match.
  17881. if (memcmp(NameR.data()+9, "xtr.w", 5))
  17882. break;
  17883. return Intrinsic::x86_mmx_pextr_w; // "86.mmx.pextr.w"
  17884. case 'i': // 1 string to match.
  17885. if (memcmp(NameR.data()+9, "nsr.w", 5))
  17886. break;
  17887. return Intrinsic::x86_mmx_pinsr_w; // "86.mmx.pinsr.w"
  17888. case 'm': // 6 strings to match.
  17889. switch (NameR[9]) {
  17890. default: break;
  17891. case 'a': // 2 strings to match.
  17892. if (NameR[10] != 'x')
  17893. break;
  17894. switch (NameR[11]) {
  17895. default: break;
  17896. case 's': // 1 string to match.
  17897. if (memcmp(NameR.data()+12, ".w", 2))
  17898. break;
  17899. return Intrinsic::x86_mmx_pmaxs_w; // "86.mmx.pmaxs.w"
  17900. case 'u': // 1 string to match.
  17901. if (memcmp(NameR.data()+12, ".b", 2))
  17902. break;
  17903. return Intrinsic::x86_mmx_pmaxu_b; // "86.mmx.pmaxu.b"
  17904. }
  17905. break;
  17906. case 'i': // 2 strings to match.
  17907. if (NameR[10] != 'n')
  17908. break;
  17909. switch (NameR[11]) {
  17910. default: break;
  17911. case 's': // 1 string to match.
  17912. if (memcmp(NameR.data()+12, ".w", 2))
  17913. break;
  17914. return Intrinsic::x86_mmx_pmins_w; // "86.mmx.pmins.w"
  17915. case 'u': // 1 string to match.
  17916. if (memcmp(NameR.data()+12, ".b", 2))
  17917. break;
  17918. return Intrinsic::x86_mmx_pminu_b; // "86.mmx.pminu.b"
  17919. }
  17920. break;
  17921. case 'u': // 2 strings to match.
  17922. if (NameR[10] != 'l')
  17923. break;
  17924. switch (NameR[11]) {
  17925. default: break;
  17926. case 'h': // 1 string to match.
  17927. if (memcmp(NameR.data()+12, ".w", 2))
  17928. break;
  17929. return Intrinsic::x86_mmx_pmulh_w; // "86.mmx.pmulh.w"
  17930. case 'l': // 1 string to match.
  17931. if (memcmp(NameR.data()+12, ".w", 2))
  17932. break;
  17933. return Intrinsic::x86_mmx_pmull_w; // "86.mmx.pmull.w"
  17934. }
  17935. break;
  17936. }
  17937. break;
  17938. case 's': // 11 strings to match.
  17939. switch (NameR[9]) {
  17940. default: break;
  17941. case 'a': // 1 string to match.
  17942. if (memcmp(NameR.data()+10, "d.bw", 4))
  17943. break;
  17944. return Intrinsic::x86_mmx_psad_bw; // "86.mmx.psad.bw"
  17945. case 'l': // 3 strings to match.
  17946. if (memcmp(NameR.data()+10, "li.", 3))
  17947. break;
  17948. switch (NameR[13]) {
  17949. default: break;
  17950. case 'd': // 1 string to match.
  17951. return Intrinsic::x86_mmx_pslli_d; // "86.mmx.pslli.d"
  17952. case 'q': // 1 string to match.
  17953. return Intrinsic::x86_mmx_pslli_q; // "86.mmx.pslli.q"
  17954. case 'w': // 1 string to match.
  17955. return Intrinsic::x86_mmx_pslli_w; // "86.mmx.pslli.w"
  17956. }
  17957. break;
  17958. case 'r': // 5 strings to match.
  17959. switch (NameR[10]) {
  17960. default: break;
  17961. case 'a': // 2 strings to match.
  17962. if (memcmp(NameR.data()+11, "i.", 2))
  17963. break;
  17964. switch (NameR[13]) {
  17965. default: break;
  17966. case 'd': // 1 string to match.
  17967. return Intrinsic::x86_mmx_psrai_d; // "86.mmx.psrai.d"
  17968. case 'w': // 1 string to match.
  17969. return Intrinsic::x86_mmx_psrai_w; // "86.mmx.psrai.w"
  17970. }
  17971. break;
  17972. case 'l': // 3 strings to match.
  17973. if (memcmp(NameR.data()+11, "i.", 2))
  17974. break;
  17975. switch (NameR[13]) {
  17976. default: break;
  17977. case 'd': // 1 string to match.
  17978. return Intrinsic::x86_mmx_psrli_d; // "86.mmx.psrli.d"
  17979. case 'q': // 1 string to match.
  17980. return Intrinsic::x86_mmx_psrli_q; // "86.mmx.psrli.q"
  17981. case 'w': // 1 string to match.
  17982. return Intrinsic::x86_mmx_psrli_w; // "86.mmx.psrli.w"
  17983. }
  17984. break;
  17985. }
  17986. break;
  17987. case 'u': // 2 strings to match.
  17988. if (memcmp(NameR.data()+10, "bs.", 3))
  17989. break;
  17990. switch (NameR[13]) {
  17991. default: break;
  17992. case 'b': // 1 string to match.
  17993. return Intrinsic::x86_mmx_psubs_b; // "86.mmx.psubs.b"
  17994. case 'w': // 1 string to match.
  17995. return Intrinsic::x86_mmx_psubs_w; // "86.mmx.psubs.w"
  17996. }
  17997. break;
  17998. }
  17999. break;
  18000. }
  18001. break;
  18002. case 'r': // 4 strings to match.
  18003. if (NameR[4] != 'd')
  18004. break;
  18005. switch (NameR[5]) {
  18006. default: break;
  18007. case 'f': // 2 strings to match.
  18008. if (memcmp(NameR.data()+6, "sbase.", 6))
  18009. break;
  18010. switch (NameR[12]) {
  18011. default: break;
  18012. case '3': // 1 string to match.
  18013. if (NameR[13] != '2')
  18014. break;
  18015. return Intrinsic::x86_rdfsbase_32; // "86.rdfsbase.32"
  18016. case '6': // 1 string to match.
  18017. if (NameR[13] != '4')
  18018. break;
  18019. return Intrinsic::x86_rdfsbase_64; // "86.rdfsbase.64"
  18020. }
  18021. break;
  18022. case 'g': // 2 strings to match.
  18023. if (memcmp(NameR.data()+6, "sbase.", 6))
  18024. break;
  18025. switch (NameR[12]) {
  18026. default: break;
  18027. case '3': // 1 string to match.
  18028. if (NameR[13] != '2')
  18029. break;
  18030. return Intrinsic::x86_rdgsbase_32; // "86.rdgsbase.32"
  18031. case '6': // 1 string to match.
  18032. if (NameR[13] != '4')
  18033. break;
  18034. return Intrinsic::x86_rdgsbase_64; // "86.rdgsbase.64"
  18035. }
  18036. break;
  18037. }
  18038. break;
  18039. case 's': // 29 strings to match.
  18040. if (memcmp(NameR.data()+4, "se", 2))
  18041. break;
  18042. switch (NameR[6]) {
  18043. default: break;
  18044. case '.': // 5 strings to match.
  18045. switch (NameR[7]) {
  18046. default: break;
  18047. case 'l': // 1 string to match.
  18048. if (memcmp(NameR.data()+8, "dmxcsr", 6))
  18049. break;
  18050. return Intrinsic::x86_sse_ldmxcsr; // "86.sse.ldmxcsr"
  18051. case 'p': // 1 string to match.
  18052. if (memcmp(NameR.data()+8, "shuf.w", 6))
  18053. break;
  18054. return Intrinsic::x86_sse_pshuf_w; // "86.sse.pshuf.w"
  18055. case 's': // 3 strings to match.
  18056. switch (NameR[8]) {
  18057. default: break;
  18058. case 'q': // 2 strings to match.
  18059. if (memcmp(NameR.data()+9, "rt.", 3))
  18060. break;
  18061. switch (NameR[12]) {
  18062. default: break;
  18063. case 'p': // 1 string to match.
  18064. if (NameR[13] != 's')
  18065. break;
  18066. return Intrinsic::x86_sse_sqrt_ps; // "86.sse.sqrt.ps"
  18067. case 's': // 1 string to match.
  18068. if (NameR[13] != 's')
  18069. break;
  18070. return Intrinsic::x86_sse_sqrt_ss; // "86.sse.sqrt.ss"
  18071. }
  18072. break;
  18073. case 't': // 1 string to match.
  18074. if (memcmp(NameR.data()+9, "mxcsr", 5))
  18075. break;
  18076. return Intrinsic::x86_sse_stmxcsr; // "86.sse.stmxcsr"
  18077. }
  18078. break;
  18079. }
  18080. break;
  18081. case '2': // 22 strings to match.
  18082. if (NameR[7] != '.')
  18083. break;
  18084. switch (NameR[8]) {
  18085. default: break;
  18086. case 'a': // 1 string to match.
  18087. if (memcmp(NameR.data()+9, "dd.sd", 5))
  18088. break;
  18089. return Intrinsic::x86_sse2_add_sd; // "86.sse2.add.sd"
  18090. case 'c': // 2 strings to match.
  18091. if (memcmp(NameR.data()+9, "mp.", 3))
  18092. break;
  18093. switch (NameR[12]) {
  18094. default: break;
  18095. case 'p': // 1 string to match.
  18096. if (NameR[13] != 'd')
  18097. break;
  18098. return Intrinsic::x86_sse2_cmp_pd; // "86.sse2.cmp.pd"
  18099. case 's': // 1 string to match.
  18100. if (NameR[13] != 'd')
  18101. break;
  18102. return Intrinsic::x86_sse2_cmp_sd; // "86.sse2.cmp.sd"
  18103. }
  18104. break;
  18105. case 'd': // 1 string to match.
  18106. if (memcmp(NameR.data()+9, "iv.sd", 5))
  18107. break;
  18108. return Intrinsic::x86_sse2_div_sd; // "86.sse2.div.sd"
  18109. case 'l': // 1 string to match.
  18110. if (memcmp(NameR.data()+9, "fence", 5))
  18111. break;
  18112. return Intrinsic::x86_sse2_lfence; // "86.sse2.lfence"
  18113. case 'm': // 6 strings to match.
  18114. switch (NameR[9]) {
  18115. default: break;
  18116. case 'a': // 2 strings to match.
  18117. if (memcmp(NameR.data()+10, "x.", 2))
  18118. break;
  18119. switch (NameR[12]) {
  18120. default: break;
  18121. case 'p': // 1 string to match.
  18122. if (NameR[13] != 'd')
  18123. break;
  18124. return Intrinsic::x86_sse2_max_pd; // "86.sse2.max.pd"
  18125. case 's': // 1 string to match.
  18126. if (NameR[13] != 'd')
  18127. break;
  18128. return Intrinsic::x86_sse2_max_sd; // "86.sse2.max.sd"
  18129. }
  18130. break;
  18131. case 'f': // 1 string to match.
  18132. if (memcmp(NameR.data()+10, "ence", 4))
  18133. break;
  18134. return Intrinsic::x86_sse2_mfence; // "86.sse2.mfence"
  18135. case 'i': // 2 strings to match.
  18136. if (memcmp(NameR.data()+10, "n.", 2))
  18137. break;
  18138. switch (NameR[12]) {
  18139. default: break;
  18140. case 'p': // 1 string to match.
  18141. if (NameR[13] != 'd')
  18142. break;
  18143. return Intrinsic::x86_sse2_min_pd; // "86.sse2.min.pd"
  18144. case 's': // 1 string to match.
  18145. if (NameR[13] != 'd')
  18146. break;
  18147. return Intrinsic::x86_sse2_min_sd; // "86.sse2.min.sd"
  18148. }
  18149. break;
  18150. case 'u': // 1 string to match.
  18151. if (memcmp(NameR.data()+10, "l.sd", 4))
  18152. break;
  18153. return Intrinsic::x86_sse2_mul_sd; // "86.sse2.mul.sd"
  18154. }
  18155. break;
  18156. case 'p': // 10 strings to match.
  18157. switch (NameR[9]) {
  18158. default: break;
  18159. case 'a': // 2 strings to match.
  18160. if (memcmp(NameR.data()+10, "vg.", 3))
  18161. break;
  18162. switch (NameR[13]) {
  18163. default: break;
  18164. case 'b': // 1 string to match.
  18165. return Intrinsic::x86_sse2_pavg_b; // "86.sse2.pavg.b"
  18166. case 'w': // 1 string to match.
  18167. return Intrinsic::x86_sse2_pavg_w; // "86.sse2.pavg.w"
  18168. }
  18169. break;
  18170. case 's': // 8 strings to match.
  18171. switch (NameR[10]) {
  18172. default: break;
  18173. case 'l': // 3 strings to match.
  18174. if (memcmp(NameR.data()+11, "l.", 2))
  18175. break;
  18176. switch (NameR[13]) {
  18177. default: break;
  18178. case 'd': // 1 string to match.
  18179. return Intrinsic::x86_sse2_psll_d; // "86.sse2.psll.d"
  18180. case 'q': // 1 string to match.
  18181. return Intrinsic::x86_sse2_psll_q; // "86.sse2.psll.q"
  18182. case 'w': // 1 string to match.
  18183. return Intrinsic::x86_sse2_psll_w; // "86.sse2.psll.w"
  18184. }
  18185. break;
  18186. case 'r': // 5 strings to match.
  18187. switch (NameR[11]) {
  18188. default: break;
  18189. case 'a': // 2 strings to match.
  18190. if (NameR[12] != '.')
  18191. break;
  18192. switch (NameR[13]) {
  18193. default: break;
  18194. case 'd': // 1 string to match.
  18195. return Intrinsic::x86_sse2_psra_d; // "86.sse2.psra.d"
  18196. case 'w': // 1 string to match.
  18197. return Intrinsic::x86_sse2_psra_w; // "86.sse2.psra.w"
  18198. }
  18199. break;
  18200. case 'l': // 3 strings to match.
  18201. if (NameR[12] != '.')
  18202. break;
  18203. switch (NameR[13]) {
  18204. default: break;
  18205. case 'd': // 1 string to match.
  18206. return Intrinsic::x86_sse2_psrl_d; // "86.sse2.psrl.d"
  18207. case 'q': // 1 string to match.
  18208. return Intrinsic::x86_sse2_psrl_q; // "86.sse2.psrl.q"
  18209. case 'w': // 1 string to match.
  18210. return Intrinsic::x86_sse2_psrl_w; // "86.sse2.psrl.w"
  18211. }
  18212. break;
  18213. }
  18214. break;
  18215. }
  18216. break;
  18217. }
  18218. break;
  18219. case 's': // 1 string to match.
  18220. if (memcmp(NameR.data()+9, "ub.sd", 5))
  18221. break;
  18222. return Intrinsic::x86_sse2_sub_sd; // "86.sse2.sub.sd"
  18223. }
  18224. break;
  18225. case '3': // 1 string to match.
  18226. if (memcmp(NameR.data()+7, ".ldu.dq", 7))
  18227. break;
  18228. return Intrinsic::x86_sse3_ldu_dq; // "86.sse3.ldu.dq"
  18229. case '4': // 1 string to match.
  18230. if (memcmp(NameR.data()+7, "a.extrq", 7))
  18231. break;
  18232. return Intrinsic::x86_sse4a_extrq; // "86.sse4a.extrq"
  18233. }
  18234. break;
  18235. case 'w': // 4 strings to match.
  18236. if (NameR[4] != 'r')
  18237. break;
  18238. switch (NameR[5]) {
  18239. default: break;
  18240. case 'f': // 2 strings to match.
  18241. if (memcmp(NameR.data()+6, "sbase.", 6))
  18242. break;
  18243. switch (NameR[12]) {
  18244. default: break;
  18245. case '3': // 1 string to match.
  18246. if (NameR[13] != '2')
  18247. break;
  18248. return Intrinsic::x86_wrfsbase_32; // "86.wrfsbase.32"
  18249. case '6': // 1 string to match.
  18250. if (NameR[13] != '4')
  18251. break;
  18252. return Intrinsic::x86_wrfsbase_64; // "86.wrfsbase.64"
  18253. }
  18254. break;
  18255. case 'g': // 2 strings to match.
  18256. if (memcmp(NameR.data()+6, "sbase.", 6))
  18257. break;
  18258. switch (NameR[12]) {
  18259. default: break;
  18260. case '3': // 1 string to match.
  18261. if (NameR[13] != '2')
  18262. break;
  18263. return Intrinsic::x86_wrgsbase_32; // "86.wrgsbase.32"
  18264. case '6': // 1 string to match.
  18265. if (NameR[13] != '4')
  18266. break;
  18267. return Intrinsic::x86_wrgsbase_64; // "86.wrgsbase.64"
  18268. }
  18269. break;
  18270. }
  18271. break;
  18272. case 'x': // 8 strings to match.
  18273. if (memcmp(NameR.data()+4, "op.vp", 5))
  18274. break;
  18275. switch (NameR[9]) {
  18276. default: break;
  18277. case 'c': // 4 strings to match.
  18278. if (memcmp(NameR.data()+10, "omu", 3))
  18279. break;
  18280. switch (NameR[13]) {
  18281. default: break;
  18282. case 'b': // 1 string to match.
  18283. return Intrinsic::x86_xop_vpcomub; // "86.xop.vpcomub"
  18284. case 'd': // 1 string to match.
  18285. return Intrinsic::x86_xop_vpcomud; // "86.xop.vpcomud"
  18286. case 'q': // 1 string to match.
  18287. return Intrinsic::x86_xop_vpcomuq; // "86.xop.vpcomuq"
  18288. case 'w': // 1 string to match.
  18289. return Intrinsic::x86_xop_vpcomuw; // "86.xop.vpcomuw"
  18290. }
  18291. break;
  18292. case 'r': // 4 strings to match.
  18293. if (memcmp(NameR.data()+10, "ot", 2))
  18294. break;
  18295. switch (NameR[12]) {
  18296. default: break;
  18297. case 'b': // 1 string to match.
  18298. if (NameR[13] != 'i')
  18299. break;
  18300. return Intrinsic::x86_xop_vprotbi; // "86.xop.vprotbi"
  18301. case 'd': // 1 string to match.
  18302. if (NameR[13] != 'i')
  18303. break;
  18304. return Intrinsic::x86_xop_vprotdi; // "86.xop.vprotdi"
  18305. case 'q': // 1 string to match.
  18306. if (NameR[13] != 'i')
  18307. break;
  18308. return Intrinsic::x86_xop_vprotqi; // "86.xop.vprotqi"
  18309. case 'w': // 1 string to match.
  18310. if (NameR[13] != 'i')
  18311. break;
  18312. return Intrinsic::x86_xop_vprotwi; // "86.xop.vprotwi"
  18313. }
  18314. break;
  18315. }
  18316. break;
  18317. }
  18318. break;
  18319. case 'c': // 1 string to match.
  18320. if (memcmp(NameR.data()+1, "ore.waitevent", 13))
  18321. break;
  18322. return Intrinsic::xcore_waitevent; // "core.waitevent"
  18323. }
  18324. break;
  18325. case 15: // 143 strings to match.
  18326. switch (NameR[0]) {
  18327. default: break;
  18328. case '8': // 142 strings to match.
  18329. if (memcmp(NameR.data()+1, "6.", 2))
  18330. break;
  18331. switch (NameR[3]) {
  18332. default: break;
  18333. case '3': // 3 strings to match.
  18334. if (memcmp(NameR.data()+4, "dnow", 4))
  18335. break;
  18336. switch (NameR[8]) {
  18337. default: break;
  18338. case '.': // 1 string to match.
  18339. if (memcmp(NameR.data()+9, "pfsubr", 6))
  18340. break;
  18341. return Intrinsic::x86_3dnow_pfsubr; // "86.3dnow.pfsubr"
  18342. case 'a': // 2 strings to match.
  18343. if (memcmp(NameR.data()+9, ".p", 2))
  18344. break;
  18345. switch (NameR[11]) {
  18346. default: break;
  18347. case 'f': // 1 string to match.
  18348. if (memcmp(NameR.data()+12, "2iw", 3))
  18349. break;
  18350. return Intrinsic::x86_3dnowa_pf2iw; // "86.3dnowa.pf2iw"
  18351. case 'i': // 1 string to match.
  18352. if (memcmp(NameR.data()+12, "2fw", 3))
  18353. break;
  18354. return Intrinsic::x86_3dnowa_pi2fw; // "86.3dnowa.pi2fw"
  18355. }
  18356. break;
  18357. }
  18358. break;
  18359. case 'a': // 48 strings to match.
  18360. switch (NameR[4]) {
  18361. default: break;
  18362. case 'e': // 3 strings to match.
  18363. if (memcmp(NameR.data()+5, "sni.aes", 7))
  18364. break;
  18365. switch (NameR[12]) {
  18366. default: break;
  18367. case 'd': // 1 string to match.
  18368. if (memcmp(NameR.data()+13, "ec", 2))
  18369. break;
  18370. return Intrinsic::x86_aesni_aesdec; // "86.aesni.aesdec"
  18371. case 'e': // 1 string to match.
  18372. if (memcmp(NameR.data()+13, "nc", 2))
  18373. break;
  18374. return Intrinsic::x86_aesni_aesenc; // "86.aesni.aesenc"
  18375. case 'i': // 1 string to match.
  18376. if (memcmp(NameR.data()+13, "mc", 2))
  18377. break;
  18378. return Intrinsic::x86_aesni_aesimc; // "86.aesni.aesimc"
  18379. }
  18380. break;
  18381. case 'v': // 45 strings to match.
  18382. if (NameR[5] != 'x')
  18383. break;
  18384. switch (NameR[6]) {
  18385. default: break;
  18386. case '.': // 1 string to match.
  18387. if (memcmp(NameR.data()+7, "vzeroall", 8))
  18388. break;
  18389. return Intrinsic::x86_avx_vzeroall; // "86.avx.vzeroall"
  18390. case '2': // 44 strings to match.
  18391. if (NameR[7] != '.')
  18392. break;
  18393. switch (NameR[8]) {
  18394. default: break;
  18395. case 'm': // 1 string to match.
  18396. if (memcmp(NameR.data()+9, "psadbw", 6))
  18397. break;
  18398. return Intrinsic::x86_avx2_mpsadbw; // "86.avx2.mpsadbw"
  18399. case 'p': // 43 strings to match.
  18400. switch (NameR[9]) {
  18401. default: break;
  18402. case 'a': // 2 strings to match.
  18403. if (memcmp(NameR.data()+10, "dds.", 4))
  18404. break;
  18405. switch (NameR[14]) {
  18406. default: break;
  18407. case 'b': // 1 string to match.
  18408. return Intrinsic::x86_avx2_padds_b; // "86.avx2.padds.b"
  18409. case 'w': // 1 string to match.
  18410. return Intrinsic::x86_avx2_padds_w; // "86.avx2.padds.w"
  18411. }
  18412. break;
  18413. case 'b': // 1 string to match.
  18414. if (memcmp(NameR.data()+10, "lendw", 5))
  18415. break;
  18416. return Intrinsic::x86_avx2_pblendw; // "86.avx2.pblendw"
  18417. case 'h': // 4 strings to match.
  18418. switch (NameR[10]) {
  18419. default: break;
  18420. case 'a': // 2 strings to match.
  18421. if (memcmp(NameR.data()+11, "dd.", 3))
  18422. break;
  18423. switch (NameR[14]) {
  18424. default: break;
  18425. case 'd': // 1 string to match.
  18426. return Intrinsic::x86_avx2_phadd_d; // "86.avx2.phadd.d"
  18427. case 'w': // 1 string to match.
  18428. return Intrinsic::x86_avx2_phadd_w; // "86.avx2.phadd.w"
  18429. }
  18430. break;
  18431. case 's': // 2 strings to match.
  18432. if (memcmp(NameR.data()+11, "ub.", 3))
  18433. break;
  18434. switch (NameR[14]) {
  18435. default: break;
  18436. case 'd': // 1 string to match.
  18437. return Intrinsic::x86_avx2_phsub_d; // "86.avx2.phsub.d"
  18438. case 'w': // 1 string to match.
  18439. return Intrinsic::x86_avx2_phsub_w; // "86.avx2.phsub.w"
  18440. }
  18441. break;
  18442. }
  18443. break;
  18444. case 'm': // 14 strings to match.
  18445. switch (NameR[10]) {
  18446. default: break;
  18447. case 'a': // 6 strings to match.
  18448. if (NameR[11] != 'x')
  18449. break;
  18450. switch (NameR[12]) {
  18451. default: break;
  18452. case 's': // 3 strings to match.
  18453. if (NameR[13] != '.')
  18454. break;
  18455. switch (NameR[14]) {
  18456. default: break;
  18457. case 'b': // 1 string to match.
  18458. return Intrinsic::x86_avx2_pmaxs_b; // "86.avx2.pmaxs.b"
  18459. case 'd': // 1 string to match.
  18460. return Intrinsic::x86_avx2_pmaxs_d; // "86.avx2.pmaxs.d"
  18461. case 'w': // 1 string to match.
  18462. return Intrinsic::x86_avx2_pmaxs_w; // "86.avx2.pmaxs.w"
  18463. }
  18464. break;
  18465. case 'u': // 3 strings to match.
  18466. if (NameR[13] != '.')
  18467. break;
  18468. switch (NameR[14]) {
  18469. default: break;
  18470. case 'b': // 1 string to match.
  18471. return Intrinsic::x86_avx2_pmaxu_b; // "86.avx2.pmaxu.b"
  18472. case 'd': // 1 string to match.
  18473. return Intrinsic::x86_avx2_pmaxu_d; // "86.avx2.pmaxu.d"
  18474. case 'w': // 1 string to match.
  18475. return Intrinsic::x86_avx2_pmaxu_w; // "86.avx2.pmaxu.w"
  18476. }
  18477. break;
  18478. }
  18479. break;
  18480. case 'i': // 6 strings to match.
  18481. if (NameR[11] != 'n')
  18482. break;
  18483. switch (NameR[12]) {
  18484. default: break;
  18485. case 's': // 3 strings to match.
  18486. if (NameR[13] != '.')
  18487. break;
  18488. switch (NameR[14]) {
  18489. default: break;
  18490. case 'b': // 1 string to match.
  18491. return Intrinsic::x86_avx2_pmins_b; // "86.avx2.pmins.b"
  18492. case 'd': // 1 string to match.
  18493. return Intrinsic::x86_avx2_pmins_d; // "86.avx2.pmins.d"
  18494. case 'w': // 1 string to match.
  18495. return Intrinsic::x86_avx2_pmins_w; // "86.avx2.pmins.w"
  18496. }
  18497. break;
  18498. case 'u': // 3 strings to match.
  18499. if (NameR[13] != '.')
  18500. break;
  18501. switch (NameR[14]) {
  18502. default: break;
  18503. case 'b': // 1 string to match.
  18504. return Intrinsic::x86_avx2_pminu_b; // "86.avx2.pminu.b"
  18505. case 'd': // 1 string to match.
  18506. return Intrinsic::x86_avx2_pminu_d; // "86.avx2.pminu.d"
  18507. case 'w': // 1 string to match.
  18508. return Intrinsic::x86_avx2_pminu_w; // "86.avx2.pminu.w"
  18509. }
  18510. break;
  18511. }
  18512. break;
  18513. case 'u': // 2 strings to match.
  18514. if (NameR[11] != 'l')
  18515. break;
  18516. switch (NameR[12]) {
  18517. default: break;
  18518. case '.': // 1 string to match.
  18519. if (memcmp(NameR.data()+13, "dq", 2))
  18520. break;
  18521. return Intrinsic::x86_avx2_pmul_dq; // "86.avx2.pmul.dq"
  18522. case 'h': // 1 string to match.
  18523. if (memcmp(NameR.data()+13, ".w", 2))
  18524. break;
  18525. return Intrinsic::x86_avx2_pmulh_w; // "86.avx2.pmulh.w"
  18526. }
  18527. break;
  18528. }
  18529. break;
  18530. case 's': // 22 strings to match.
  18531. switch (NameR[10]) {
  18532. default: break;
  18533. case 'a': // 1 string to match.
  18534. if (memcmp(NameR.data()+11, "d.bw", 4))
  18535. break;
  18536. return Intrinsic::x86_avx2_psad_bw; // "86.avx2.psad.bw"
  18537. case 'h': // 1 string to match.
  18538. if (memcmp(NameR.data()+11, "uf.b", 4))
  18539. break;
  18540. return Intrinsic::x86_avx2_pshuf_b; // "86.avx2.pshuf.b"
  18541. case 'i': // 3 strings to match.
  18542. if (memcmp(NameR.data()+11, "gn.", 3))
  18543. break;
  18544. switch (NameR[14]) {
  18545. default: break;
  18546. case 'b': // 1 string to match.
  18547. return Intrinsic::x86_avx2_psign_b; // "86.avx2.psign.b"
  18548. case 'd': // 1 string to match.
  18549. return Intrinsic::x86_avx2_psign_d; // "86.avx2.psign.d"
  18550. case 'w': // 1 string to match.
  18551. return Intrinsic::x86_avx2_psign_w; // "86.avx2.psign.w"
  18552. }
  18553. break;
  18554. case 'l': // 6 strings to match.
  18555. if (NameR[11] != 'l')
  18556. break;
  18557. switch (NameR[12]) {
  18558. default: break;
  18559. case '.': // 1 string to match.
  18560. if (memcmp(NameR.data()+13, "dq", 2))
  18561. break;
  18562. return Intrinsic::x86_avx2_psll_dq; // "86.avx2.psll.dq"
  18563. case 'i': // 3 strings to match.
  18564. if (NameR[13] != '.')
  18565. break;
  18566. switch (NameR[14]) {
  18567. default: break;
  18568. case 'd': // 1 string to match.
  18569. return Intrinsic::x86_avx2_pslli_d; // "86.avx2.pslli.d"
  18570. case 'q': // 1 string to match.
  18571. return Intrinsic::x86_avx2_pslli_q; // "86.avx2.pslli.q"
  18572. case 'w': // 1 string to match.
  18573. return Intrinsic::x86_avx2_pslli_w; // "86.avx2.pslli.w"
  18574. }
  18575. break;
  18576. case 'v': // 2 strings to match.
  18577. if (NameR[13] != '.')
  18578. break;
  18579. switch (NameR[14]) {
  18580. default: break;
  18581. case 'd': // 1 string to match.
  18582. return Intrinsic::x86_avx2_psllv_d; // "86.avx2.psllv.d"
  18583. case 'q': // 1 string to match.
  18584. return Intrinsic::x86_avx2_psllv_q; // "86.avx2.psllv.q"
  18585. }
  18586. break;
  18587. }
  18588. break;
  18589. case 'r': // 9 strings to match.
  18590. switch (NameR[11]) {
  18591. default: break;
  18592. case 'a': // 3 strings to match.
  18593. switch (NameR[12]) {
  18594. default: break;
  18595. case 'i': // 2 strings to match.
  18596. if (NameR[13] != '.')
  18597. break;
  18598. switch (NameR[14]) {
  18599. default: break;
  18600. case 'd': // 1 string to match.
  18601. return Intrinsic::x86_avx2_psrai_d; // "86.avx2.psrai.d"
  18602. case 'w': // 1 string to match.
  18603. return Intrinsic::x86_avx2_psrai_w; // "86.avx2.psrai.w"
  18604. }
  18605. break;
  18606. case 'v': // 1 string to match.
  18607. if (memcmp(NameR.data()+13, ".d", 2))
  18608. break;
  18609. return Intrinsic::x86_avx2_psrav_d; // "86.avx2.psrav.d"
  18610. }
  18611. break;
  18612. case 'l': // 6 strings to match.
  18613. switch (NameR[12]) {
  18614. default: break;
  18615. case '.': // 1 string to match.
  18616. if (memcmp(NameR.data()+13, "dq", 2))
  18617. break;
  18618. return Intrinsic::x86_avx2_psrl_dq; // "86.avx2.psrl.dq"
  18619. case 'i': // 3 strings to match.
  18620. if (NameR[13] != '.')
  18621. break;
  18622. switch (NameR[14]) {
  18623. default: break;
  18624. case 'd': // 1 string to match.
  18625. return Intrinsic::x86_avx2_psrli_d; // "86.avx2.psrli.d"
  18626. case 'q': // 1 string to match.
  18627. return Intrinsic::x86_avx2_psrli_q; // "86.avx2.psrli.q"
  18628. case 'w': // 1 string to match.
  18629. return Intrinsic::x86_avx2_psrli_w; // "86.avx2.psrli.w"
  18630. }
  18631. break;
  18632. case 'v': // 2 strings to match.
  18633. if (NameR[13] != '.')
  18634. break;
  18635. switch (NameR[14]) {
  18636. default: break;
  18637. case 'd': // 1 string to match.
  18638. return Intrinsic::x86_avx2_psrlv_d; // "86.avx2.psrlv.d"
  18639. case 'q': // 1 string to match.
  18640. return Intrinsic::x86_avx2_psrlv_q; // "86.avx2.psrlv.q"
  18641. }
  18642. break;
  18643. }
  18644. break;
  18645. }
  18646. break;
  18647. case 'u': // 2 strings to match.
  18648. if (memcmp(NameR.data()+11, "bs.", 3))
  18649. break;
  18650. switch (NameR[14]) {
  18651. default: break;
  18652. case 'b': // 1 string to match.
  18653. return Intrinsic::x86_avx2_psubs_b; // "86.avx2.psubs.b"
  18654. case 'w': // 1 string to match.
  18655. return Intrinsic::x86_avx2_psubs_w; // "86.avx2.psubs.w"
  18656. }
  18657. break;
  18658. }
  18659. break;
  18660. }
  18661. break;
  18662. }
  18663. break;
  18664. }
  18665. break;
  18666. }
  18667. break;
  18668. case 'b': // 2 strings to match.
  18669. if (memcmp(NameR.data()+4, "mi.bextr.", 9))
  18670. break;
  18671. switch (NameR[13]) {
  18672. default: break;
  18673. case '3': // 1 string to match.
  18674. if (NameR[14] != '2')
  18675. break;
  18676. return Intrinsic::x86_bmi_bextr_32; // "86.bmi.bextr.32"
  18677. case '6': // 1 string to match.
  18678. if (NameR[14] != '4')
  18679. break;
  18680. return Intrinsic::x86_bmi_bextr_64; // "86.bmi.bextr.64"
  18681. }
  18682. break;
  18683. case 'm': // 19 strings to match.
  18684. if (memcmp(NameR.data()+4, "mx.", 3))
  18685. break;
  18686. switch (NameR[7]) {
  18687. default: break;
  18688. case 'm': // 2 strings to match.
  18689. switch (NameR[8]) {
  18690. default: break;
  18691. case 'a': // 1 string to match.
  18692. if (memcmp(NameR.data()+9, "skmovq", 6))
  18693. break;
  18694. return Intrinsic::x86_mmx_maskmovq; // "86.mmx.maskmovq"
  18695. case 'o': // 1 string to match.
  18696. if (memcmp(NameR.data()+9, "vnt.dq", 6))
  18697. break;
  18698. return Intrinsic::x86_mmx_movnt_dq; // "86.mmx.movnt.dq"
  18699. }
  18700. break;
  18701. case 'p': // 17 strings to match.
  18702. switch (NameR[8]) {
  18703. default: break;
  18704. case 'a': // 5 strings to match.
  18705. switch (NameR[9]) {
  18706. default: break;
  18707. case 'c': // 3 strings to match.
  18708. if (NameR[10] != 'k')
  18709. break;
  18710. switch (NameR[11]) {
  18711. default: break;
  18712. case 's': // 2 strings to match.
  18713. if (NameR[12] != 's')
  18714. break;
  18715. switch (NameR[13]) {
  18716. default: break;
  18717. case 'd': // 1 string to match.
  18718. if (NameR[14] != 'w')
  18719. break;
  18720. return Intrinsic::x86_mmx_packssdw; // "86.mmx.packssdw"
  18721. case 'w': // 1 string to match.
  18722. if (NameR[14] != 'b')
  18723. break;
  18724. return Intrinsic::x86_mmx_packsswb; // "86.mmx.packsswb"
  18725. }
  18726. break;
  18727. case 'u': // 1 string to match.
  18728. if (memcmp(NameR.data()+12, "swb", 3))
  18729. break;
  18730. return Intrinsic::x86_mmx_packuswb; // "86.mmx.packuswb"
  18731. }
  18732. break;
  18733. case 'd': // 2 strings to match.
  18734. if (memcmp(NameR.data()+10, "dus.", 4))
  18735. break;
  18736. switch (NameR[14]) {
  18737. default: break;
  18738. case 'b': // 1 string to match.
  18739. return Intrinsic::x86_mmx_paddus_b; // "86.mmx.paddus.b"
  18740. case 'w': // 1 string to match.
  18741. return Intrinsic::x86_mmx_paddus_w; // "86.mmx.paddus.w"
  18742. }
  18743. break;
  18744. }
  18745. break;
  18746. case 'c': // 6 strings to match.
  18747. if (memcmp(NameR.data()+9, "mp", 2))
  18748. break;
  18749. switch (NameR[11]) {
  18750. default: break;
  18751. case 'e': // 3 strings to match.
  18752. if (memcmp(NameR.data()+12, "q.", 2))
  18753. break;
  18754. switch (NameR[14]) {
  18755. default: break;
  18756. case 'b': // 1 string to match.
  18757. return Intrinsic::x86_mmx_pcmpeq_b; // "86.mmx.pcmpeq.b"
  18758. case 'd': // 1 string to match.
  18759. return Intrinsic::x86_mmx_pcmpeq_d; // "86.mmx.pcmpeq.d"
  18760. case 'w': // 1 string to match.
  18761. return Intrinsic::x86_mmx_pcmpeq_w; // "86.mmx.pcmpeq.w"
  18762. }
  18763. break;
  18764. case 'g': // 3 strings to match.
  18765. if (memcmp(NameR.data()+12, "t.", 2))
  18766. break;
  18767. switch (NameR[14]) {
  18768. default: break;
  18769. case 'b': // 1 string to match.
  18770. return Intrinsic::x86_mmx_pcmpgt_b; // "86.mmx.pcmpgt.b"
  18771. case 'd': // 1 string to match.
  18772. return Intrinsic::x86_mmx_pcmpgt_d; // "86.mmx.pcmpgt.d"
  18773. case 'w': // 1 string to match.
  18774. return Intrinsic::x86_mmx_pcmpgt_w; // "86.mmx.pcmpgt.w"
  18775. }
  18776. break;
  18777. }
  18778. break;
  18779. case 'm': // 4 strings to match.
  18780. switch (NameR[9]) {
  18781. default: break;
  18782. case 'a': // 1 string to match.
  18783. if (memcmp(NameR.data()+10, "dd.wd", 5))
  18784. break;
  18785. return Intrinsic::x86_mmx_pmadd_wd; // "86.mmx.pmadd.wd"
  18786. case 'o': // 1 string to match.
  18787. if (memcmp(NameR.data()+10, "vmskb", 5))
  18788. break;
  18789. return Intrinsic::x86_mmx_pmovmskb; // "86.mmx.pmovmskb"
  18790. case 'u': // 2 strings to match.
  18791. if (NameR[10] != 'l')
  18792. break;
  18793. switch (NameR[11]) {
  18794. default: break;
  18795. case 'h': // 1 string to match.
  18796. if (memcmp(NameR.data()+12, "u.w", 3))
  18797. break;
  18798. return Intrinsic::x86_mmx_pmulhu_w; // "86.mmx.pmulhu.w"
  18799. case 'u': // 1 string to match.
  18800. if (memcmp(NameR.data()+12, ".dq", 3))
  18801. break;
  18802. return Intrinsic::x86_mmx_pmulu_dq; // "86.mmx.pmulu.dq"
  18803. }
  18804. break;
  18805. }
  18806. break;
  18807. case 's': // 2 strings to match.
  18808. if (memcmp(NameR.data()+9, "ubus.", 5))
  18809. break;
  18810. switch (NameR[14]) {
  18811. default: break;
  18812. case 'b': // 1 string to match.
  18813. return Intrinsic::x86_mmx_psubus_b; // "86.mmx.psubus.b"
  18814. case 'w': // 1 string to match.
  18815. return Intrinsic::x86_mmx_psubus_w; // "86.mmx.psubus.w"
  18816. }
  18817. break;
  18818. }
  18819. break;
  18820. }
  18821. break;
  18822. case 's': // 54 strings to match.
  18823. if (NameR[4] != 's')
  18824. break;
  18825. switch (NameR[5]) {
  18826. default: break;
  18827. case 'e': // 51 strings to match.
  18828. switch (NameR[6]) {
  18829. default: break;
  18830. case '.': // 8 strings to match.
  18831. switch (NameR[7]) {
  18832. default: break;
  18833. case 'c': // 6 strings to match.
  18834. if (memcmp(NameR.data()+8, "vt", 2))
  18835. break;
  18836. switch (NameR[10]) {
  18837. default: break;
  18838. case 'p': // 4 strings to match.
  18839. switch (NameR[11]) {
  18840. default: break;
  18841. case 'd': // 1 string to match.
  18842. if (memcmp(NameR.data()+12, "2pi", 3))
  18843. break;
  18844. return Intrinsic::x86_sse_cvtpd2pi; // "86.sse.cvtpd2pi"
  18845. case 'i': // 2 strings to match.
  18846. if (memcmp(NameR.data()+12, "2p", 2))
  18847. break;
  18848. switch (NameR[14]) {
  18849. default: break;
  18850. case 'd': // 1 string to match.
  18851. return Intrinsic::x86_sse_cvtpi2pd; // "86.sse.cvtpi2pd"
  18852. case 's': // 1 string to match.
  18853. return Intrinsic::x86_sse_cvtpi2ps; // "86.sse.cvtpi2ps"
  18854. }
  18855. break;
  18856. case 's': // 1 string to match.
  18857. if (memcmp(NameR.data()+12, "2pi", 3))
  18858. break;
  18859. return Intrinsic::x86_sse_cvtps2pi; // "86.sse.cvtps2pi"
  18860. }
  18861. break;
  18862. case 's': // 2 strings to match.
  18863. switch (NameR[11]) {
  18864. default: break;
  18865. case 'i': // 1 string to match.
  18866. if (memcmp(NameR.data()+12, "2ss", 3))
  18867. break;
  18868. return Intrinsic::x86_sse_cvtsi2ss; // "86.sse.cvtsi2ss"
  18869. case 's': // 1 string to match.
  18870. if (memcmp(NameR.data()+12, "2si", 3))
  18871. break;
  18872. return Intrinsic::x86_sse_cvtss2si; // "86.sse.cvtss2si"
  18873. }
  18874. break;
  18875. }
  18876. break;
  18877. case 'r': // 2 strings to match.
  18878. if (memcmp(NameR.data()+8, "sqrt.", 5))
  18879. break;
  18880. switch (NameR[13]) {
  18881. default: break;
  18882. case 'p': // 1 string to match.
  18883. if (NameR[14] != 's')
  18884. break;
  18885. return Intrinsic::x86_sse_rsqrt_ps; // "86.sse.rsqrt.ps"
  18886. case 's': // 1 string to match.
  18887. if (NameR[14] != 's')
  18888. break;
  18889. return Intrinsic::x86_sse_rsqrt_ss; // "86.sse.rsqrt.ss"
  18890. }
  18891. break;
  18892. }
  18893. break;
  18894. case '2': // 23 strings to match.
  18895. if (NameR[7] != '.')
  18896. break;
  18897. switch (NameR[8]) {
  18898. default: break;
  18899. case 'c': // 1 string to match.
  18900. if (memcmp(NameR.data()+9, "lflush", 6))
  18901. break;
  18902. return Intrinsic::x86_sse2_clflush; // "86.sse2.clflush"
  18903. case 'p': // 20 strings to match.
  18904. switch (NameR[9]) {
  18905. default: break;
  18906. case 'a': // 2 strings to match.
  18907. if (memcmp(NameR.data()+10, "dds.", 4))
  18908. break;
  18909. switch (NameR[14]) {
  18910. default: break;
  18911. case 'b': // 1 string to match.
  18912. return Intrinsic::x86_sse2_padds_b; // "86.sse2.padds.b"
  18913. case 'w': // 1 string to match.
  18914. return Intrinsic::x86_sse2_padds_w; // "86.sse2.padds.w"
  18915. }
  18916. break;
  18917. case 'm': // 5 strings to match.
  18918. switch (NameR[10]) {
  18919. default: break;
  18920. case 'a': // 2 strings to match.
  18921. if (NameR[11] != 'x')
  18922. break;
  18923. switch (NameR[12]) {
  18924. default: break;
  18925. case 's': // 1 string to match.
  18926. if (memcmp(NameR.data()+13, ".w", 2))
  18927. break;
  18928. return Intrinsic::x86_sse2_pmaxs_w; // "86.sse2.pmaxs.w"
  18929. case 'u': // 1 string to match.
  18930. if (memcmp(NameR.data()+13, ".b", 2))
  18931. break;
  18932. return Intrinsic::x86_sse2_pmaxu_b; // "86.sse2.pmaxu.b"
  18933. }
  18934. break;
  18935. case 'i': // 2 strings to match.
  18936. if (NameR[11] != 'n')
  18937. break;
  18938. switch (NameR[12]) {
  18939. default: break;
  18940. case 's': // 1 string to match.
  18941. if (memcmp(NameR.data()+13, ".w", 2))
  18942. break;
  18943. return Intrinsic::x86_sse2_pmins_w; // "86.sse2.pmins.w"
  18944. case 'u': // 1 string to match.
  18945. if (memcmp(NameR.data()+13, ".b", 2))
  18946. break;
  18947. return Intrinsic::x86_sse2_pminu_b; // "86.sse2.pminu.b"
  18948. }
  18949. break;
  18950. case 'u': // 1 string to match.
  18951. if (memcmp(NameR.data()+11, "lh.w", 4))
  18952. break;
  18953. return Intrinsic::x86_sse2_pmulh_w; // "86.sse2.pmulh.w"
  18954. }
  18955. break;
  18956. case 's': // 13 strings to match.
  18957. switch (NameR[10]) {
  18958. default: break;
  18959. case 'a': // 1 string to match.
  18960. if (memcmp(NameR.data()+11, "d.bw", 4))
  18961. break;
  18962. return Intrinsic::x86_sse2_psad_bw; // "86.sse2.psad.bw"
  18963. case 'l': // 4 strings to match.
  18964. if (NameR[11] != 'l')
  18965. break;
  18966. switch (NameR[12]) {
  18967. default: break;
  18968. case '.': // 1 string to match.
  18969. if (memcmp(NameR.data()+13, "dq", 2))
  18970. break;
  18971. return Intrinsic::x86_sse2_psll_dq; // "86.sse2.psll.dq"
  18972. case 'i': // 3 strings to match.
  18973. if (NameR[13] != '.')
  18974. break;
  18975. switch (NameR[14]) {
  18976. default: break;
  18977. case 'd': // 1 string to match.
  18978. return Intrinsic::x86_sse2_pslli_d; // "86.sse2.pslli.d"
  18979. case 'q': // 1 string to match.
  18980. return Intrinsic::x86_sse2_pslli_q; // "86.sse2.pslli.q"
  18981. case 'w': // 1 string to match.
  18982. return Intrinsic::x86_sse2_pslli_w; // "86.sse2.pslli.w"
  18983. }
  18984. break;
  18985. }
  18986. break;
  18987. case 'r': // 6 strings to match.
  18988. switch (NameR[11]) {
  18989. default: break;
  18990. case 'a': // 2 strings to match.
  18991. if (memcmp(NameR.data()+12, "i.", 2))
  18992. break;
  18993. switch (NameR[14]) {
  18994. default: break;
  18995. case 'd': // 1 string to match.
  18996. return Intrinsic::x86_sse2_psrai_d; // "86.sse2.psrai.d"
  18997. case 'w': // 1 string to match.
  18998. return Intrinsic::x86_sse2_psrai_w; // "86.sse2.psrai.w"
  18999. }
  19000. break;
  19001. case 'l': // 4 strings to match.
  19002. switch (NameR[12]) {
  19003. default: break;
  19004. case '.': // 1 string to match.
  19005. if (memcmp(NameR.data()+13, "dq", 2))
  19006. break;
  19007. return Intrinsic::x86_sse2_psrl_dq; // "86.sse2.psrl.dq"
  19008. case 'i': // 3 strings to match.
  19009. if (NameR[13] != '.')
  19010. break;
  19011. switch (NameR[14]) {
  19012. default: break;
  19013. case 'd': // 1 string to match.
  19014. return Intrinsic::x86_sse2_psrli_d; // "86.sse2.psrli.d"
  19015. case 'q': // 1 string to match.
  19016. return Intrinsic::x86_sse2_psrli_q; // "86.sse2.psrli.q"
  19017. case 'w': // 1 string to match.
  19018. return Intrinsic::x86_sse2_psrli_w; // "86.sse2.psrli.w"
  19019. }
  19020. break;
  19021. }
  19022. break;
  19023. }
  19024. break;
  19025. case 'u': // 2 strings to match.
  19026. if (memcmp(NameR.data()+11, "bs.", 3))
  19027. break;
  19028. switch (NameR[14]) {
  19029. default: break;
  19030. case 'b': // 1 string to match.
  19031. return Intrinsic::x86_sse2_psubs_b; // "86.sse2.psubs.b"
  19032. case 'w': // 1 string to match.
  19033. return Intrinsic::x86_sse2_psubs_w; // "86.sse2.psubs.w"
  19034. }
  19035. break;
  19036. }
  19037. break;
  19038. }
  19039. break;
  19040. case 's': // 2 strings to match.
  19041. if (memcmp(NameR.data()+9, "qrt.", 4))
  19042. break;
  19043. switch (NameR[13]) {
  19044. default: break;
  19045. case 'p': // 1 string to match.
  19046. if (NameR[14] != 'd')
  19047. break;
  19048. return Intrinsic::x86_sse2_sqrt_pd; // "86.sse2.sqrt.pd"
  19049. case 's': // 1 string to match.
  19050. if (NameR[14] != 'd')
  19051. break;
  19052. return Intrinsic::x86_sse2_sqrt_sd; // "86.sse2.sqrt.sd"
  19053. }
  19054. break;
  19055. }
  19056. break;
  19057. case '3': // 5 strings to match.
  19058. if (NameR[7] != '.')
  19059. break;
  19060. switch (NameR[8]) {
  19061. default: break;
  19062. case 'h': // 4 strings to match.
  19063. switch (NameR[9]) {
  19064. default: break;
  19065. case 'a': // 2 strings to match.
  19066. if (memcmp(NameR.data()+10, "dd.p", 4))
  19067. break;
  19068. switch (NameR[14]) {
  19069. default: break;
  19070. case 'd': // 1 string to match.
  19071. return Intrinsic::x86_sse3_hadd_pd; // "86.sse3.hadd.pd"
  19072. case 's': // 1 string to match.
  19073. return Intrinsic::x86_sse3_hadd_ps; // "86.sse3.hadd.ps"
  19074. }
  19075. break;
  19076. case 's': // 2 strings to match.
  19077. if (memcmp(NameR.data()+10, "ub.p", 4))
  19078. break;
  19079. switch (NameR[14]) {
  19080. default: break;
  19081. case 'd': // 1 string to match.
  19082. return Intrinsic::x86_sse3_hsub_pd; // "86.sse3.hsub.pd"
  19083. case 's': // 1 string to match.
  19084. return Intrinsic::x86_sse3_hsub_ps; // "86.sse3.hsub.ps"
  19085. }
  19086. break;
  19087. }
  19088. break;
  19089. case 'm': // 1 string to match.
  19090. if (memcmp(NameR.data()+9, "onitor", 6))
  19091. break;
  19092. return Intrinsic::x86_sse3_monitor; // "86.sse3.monitor"
  19093. }
  19094. break;
  19095. case '4': // 15 strings to match.
  19096. switch (NameR[7]) {
  19097. default: break;
  19098. case '1': // 14 strings to match.
  19099. if (memcmp(NameR.data()+8, ".p", 2))
  19100. break;
  19101. switch (NameR[10]) {
  19102. default: break;
  19103. case 'e': // 3 strings to match.
  19104. if (memcmp(NameR.data()+11, "xtr", 3))
  19105. break;
  19106. switch (NameR[14]) {
  19107. default: break;
  19108. case 'b': // 1 string to match.
  19109. return Intrinsic::x86_sse41_pextrb; // "86.sse41.pextrb"
  19110. case 'd': // 1 string to match.
  19111. return Intrinsic::x86_sse41_pextrd; // "86.sse41.pextrd"
  19112. case 'q': // 1 string to match.
  19113. return Intrinsic::x86_sse41_pextrq; // "86.sse41.pextrq"
  19114. }
  19115. break;
  19116. case 'm': // 9 strings to match.
  19117. switch (NameR[11]) {
  19118. default: break;
  19119. case 'a': // 4 strings to match.
  19120. if (NameR[12] != 'x')
  19121. break;
  19122. switch (NameR[13]) {
  19123. default: break;
  19124. case 's': // 2 strings to match.
  19125. switch (NameR[14]) {
  19126. default: break;
  19127. case 'b': // 1 string to match.
  19128. return Intrinsic::x86_sse41_pmaxsb; // "86.sse41.pmaxsb"
  19129. case 'd': // 1 string to match.
  19130. return Intrinsic::x86_sse41_pmaxsd; // "86.sse41.pmaxsd"
  19131. }
  19132. break;
  19133. case 'u': // 2 strings to match.
  19134. switch (NameR[14]) {
  19135. default: break;
  19136. case 'd': // 1 string to match.
  19137. return Intrinsic::x86_sse41_pmaxud; // "86.sse41.pmaxud"
  19138. case 'w': // 1 string to match.
  19139. return Intrinsic::x86_sse41_pmaxuw; // "86.sse41.pmaxuw"
  19140. }
  19141. break;
  19142. }
  19143. break;
  19144. case 'i': // 4 strings to match.
  19145. if (NameR[12] != 'n')
  19146. break;
  19147. switch (NameR[13]) {
  19148. default: break;
  19149. case 's': // 2 strings to match.
  19150. switch (NameR[14]) {
  19151. default: break;
  19152. case 'b': // 1 string to match.
  19153. return Intrinsic::x86_sse41_pminsb; // "86.sse41.pminsb"
  19154. case 'd': // 1 string to match.
  19155. return Intrinsic::x86_sse41_pminsd; // "86.sse41.pminsd"
  19156. }
  19157. break;
  19158. case 'u': // 2 strings to match.
  19159. switch (NameR[14]) {
  19160. default: break;
  19161. case 'd': // 1 string to match.
  19162. return Intrinsic::x86_sse41_pminud; // "86.sse41.pminud"
  19163. case 'w': // 1 string to match.
  19164. return Intrinsic::x86_sse41_pminuw; // "86.sse41.pminuw"
  19165. }
  19166. break;
  19167. }
  19168. break;
  19169. case 'u': // 1 string to match.
  19170. if (memcmp(NameR.data()+12, "ldq", 3))
  19171. break;
  19172. return Intrinsic::x86_sse41_pmuldq; // "86.sse41.pmuldq"
  19173. }
  19174. break;
  19175. case 't': // 2 strings to match.
  19176. if (memcmp(NameR.data()+11, "est", 3))
  19177. break;
  19178. switch (NameR[14]) {
  19179. default: break;
  19180. case 'c': // 1 string to match.
  19181. return Intrinsic::x86_sse41_ptestc; // "86.sse41.ptestc"
  19182. case 'z': // 1 string to match.
  19183. return Intrinsic::x86_sse41_ptestz; // "86.sse41.ptestz"
  19184. }
  19185. break;
  19186. }
  19187. break;
  19188. case 'a': // 1 string to match.
  19189. if (memcmp(NameR.data()+8, ".extrqi", 7))
  19190. break;
  19191. return Intrinsic::x86_sse4a_extrqi; // "86.sse4a.extrqi"
  19192. }
  19193. break;
  19194. }
  19195. break;
  19196. case 's': // 3 strings to match.
  19197. if (memcmp(NameR.data()+6, "e3.pabs.", 8))
  19198. break;
  19199. switch (NameR[14]) {
  19200. default: break;
  19201. case 'b': // 1 string to match.
  19202. return Intrinsic::x86_ssse3_pabs_b; // "86.ssse3.pabs.b"
  19203. case 'd': // 1 string to match.
  19204. return Intrinsic::x86_ssse3_pabs_d; // "86.ssse3.pabs.d"
  19205. case 'w': // 1 string to match.
  19206. return Intrinsic::x86_ssse3_pabs_w; // "86.ssse3.pabs.w"
  19207. }
  19208. break;
  19209. }
  19210. break;
  19211. case 'x': // 16 strings to match.
  19212. if (memcmp(NameR.data()+4, "op.v", 4))
  19213. break;
  19214. switch (NameR[8]) {
  19215. default: break;
  19216. case 'f': // 4 strings to match.
  19217. if (memcmp(NameR.data()+9, "rcz.", 4))
  19218. break;
  19219. switch (NameR[13]) {
  19220. default: break;
  19221. case 'p': // 2 strings to match.
  19222. switch (NameR[14]) {
  19223. default: break;
  19224. case 'd': // 1 string to match.
  19225. return Intrinsic::x86_xop_vfrcz_pd; // "86.xop.vfrcz.pd"
  19226. case 's': // 1 string to match.
  19227. return Intrinsic::x86_xop_vfrcz_ps; // "86.xop.vfrcz.ps"
  19228. }
  19229. break;
  19230. case 's': // 2 strings to match.
  19231. switch (NameR[14]) {
  19232. default: break;
  19233. case 'd': // 1 string to match.
  19234. return Intrinsic::x86_xop_vfrcz_sd; // "86.xop.vfrcz.sd"
  19235. case 's': // 1 string to match.
  19236. return Intrinsic::x86_xop_vfrcz_ss; // "86.xop.vfrcz.ss"
  19237. }
  19238. break;
  19239. }
  19240. break;
  19241. case 'p': // 12 strings to match.
  19242. switch (NameR[9]) {
  19243. default: break;
  19244. case 'h': // 9 strings to match.
  19245. switch (NameR[10]) {
  19246. default: break;
  19247. case 'a': // 6 strings to match.
  19248. if (memcmp(NameR.data()+11, "dd", 2))
  19249. break;
  19250. switch (NameR[13]) {
  19251. default: break;
  19252. case 'b': // 3 strings to match.
  19253. switch (NameR[14]) {
  19254. default: break;
  19255. case 'd': // 1 string to match.
  19256. return Intrinsic::x86_xop_vphaddbd; // "86.xop.vphaddbd"
  19257. case 'q': // 1 string to match.
  19258. return Intrinsic::x86_xop_vphaddbq; // "86.xop.vphaddbq"
  19259. case 'w': // 1 string to match.
  19260. return Intrinsic::x86_xop_vphaddbw; // "86.xop.vphaddbw"
  19261. }
  19262. break;
  19263. case 'd': // 1 string to match.
  19264. if (NameR[14] != 'q')
  19265. break;
  19266. return Intrinsic::x86_xop_vphadddq; // "86.xop.vphadddq"
  19267. case 'w': // 2 strings to match.
  19268. switch (NameR[14]) {
  19269. default: break;
  19270. case 'd': // 1 string to match.
  19271. return Intrinsic::x86_xop_vphaddwd; // "86.xop.vphaddwd"
  19272. case 'q': // 1 string to match.
  19273. return Intrinsic::x86_xop_vphaddwq; // "86.xop.vphaddwq"
  19274. }
  19275. break;
  19276. }
  19277. break;
  19278. case 's': // 3 strings to match.
  19279. if (memcmp(NameR.data()+11, "ub", 2))
  19280. break;
  19281. switch (NameR[13]) {
  19282. default: break;
  19283. case 'b': // 1 string to match.
  19284. if (NameR[14] != 'w')
  19285. break;
  19286. return Intrinsic::x86_xop_vphsubbw; // "86.xop.vphsubbw"
  19287. case 'd': // 1 string to match.
  19288. if (NameR[14] != 'q')
  19289. break;
  19290. return Intrinsic::x86_xop_vphsubdq; // "86.xop.vphsubdq"
  19291. case 'w': // 1 string to match.
  19292. if (NameR[14] != 'd')
  19293. break;
  19294. return Intrinsic::x86_xop_vphsubwd; // "86.xop.vphsubwd"
  19295. }
  19296. break;
  19297. }
  19298. break;
  19299. case 'm': // 3 strings to match.
  19300. if (memcmp(NameR.data()+10, "acs", 3))
  19301. break;
  19302. switch (NameR[13]) {
  19303. default: break;
  19304. case 'd': // 1 string to match.
  19305. if (NameR[14] != 'd')
  19306. break;
  19307. return Intrinsic::x86_xop_vpmacsdd; // "86.xop.vpmacsdd"
  19308. case 'w': // 2 strings to match.
  19309. switch (NameR[14]) {
  19310. default: break;
  19311. case 'd': // 1 string to match.
  19312. return Intrinsic::x86_xop_vpmacswd; // "86.xop.vpmacswd"
  19313. case 'w': // 1 string to match.
  19314. return Intrinsic::x86_xop_vpmacsww; // "86.xop.vpmacsww"
  19315. }
  19316. break;
  19317. }
  19318. break;
  19319. }
  19320. break;
  19321. }
  19322. break;
  19323. }
  19324. break;
  19325. case 'c': // 1 string to match.
  19326. if (memcmp(NameR.data()+1, "ore.checkevent", 14))
  19327. break;
  19328. return Intrinsic::xcore_checkevent; // "core.checkevent"
  19329. }
  19330. break;
  19331. case 16: // 112 strings to match.
  19332. if (memcmp(NameR.data()+0, "86.", 3))
  19333. break;
  19334. switch (NameR[3]) {
  19335. default: break;
  19336. case '3': // 8 strings to match.
  19337. if (memcmp(NameR.data()+4, "dnow", 4))
  19338. break;
  19339. switch (NameR[8]) {
  19340. default: break;
  19341. case '.': // 6 strings to match.
  19342. if (NameR[9] != 'p')
  19343. break;
  19344. switch (NameR[10]) {
  19345. default: break;
  19346. case 'a': // 1 string to match.
  19347. if (memcmp(NameR.data()+11, "vgusb", 5))
  19348. break;
  19349. return Intrinsic::x86_3dnow_pavgusb; // "86.3dnow.pavgusb"
  19350. case 'f': // 4 strings to match.
  19351. switch (NameR[11]) {
  19352. default: break;
  19353. case 'c': // 3 strings to match.
  19354. if (memcmp(NameR.data()+12, "mp", 2))
  19355. break;
  19356. switch (NameR[14]) {
  19357. default: break;
  19358. case 'e': // 1 string to match.
  19359. if (NameR[15] != 'q')
  19360. break;
  19361. return Intrinsic::x86_3dnow_pfcmpeq; // "86.3dnow.pfcmpeq"
  19362. case 'g': // 2 strings to match.
  19363. switch (NameR[15]) {
  19364. default: break;
  19365. case 'e': // 1 string to match.
  19366. return Intrinsic::x86_3dnow_pfcmpge; // "86.3dnow.pfcmpge"
  19367. case 't': // 1 string to match.
  19368. return Intrinsic::x86_3dnow_pfcmpgt; // "86.3dnow.pfcmpgt"
  19369. }
  19370. break;
  19371. }
  19372. break;
  19373. case 'r': // 1 string to match.
  19374. if (memcmp(NameR.data()+12, "sqrt", 4))
  19375. break;
  19376. return Intrinsic::x86_3dnow_pfrsqrt; // "86.3dnow.pfrsqrt"
  19377. }
  19378. break;
  19379. case 'm': // 1 string to match.
  19380. if (memcmp(NameR.data()+11, "ulhrw", 5))
  19381. break;
  19382. return Intrinsic::x86_3dnow_pmulhrw; // "86.3dnow.pmulhrw"
  19383. }
  19384. break;
  19385. case 'a': // 2 strings to match.
  19386. if (memcmp(NameR.data()+9, ".p", 2))
  19387. break;
  19388. switch (NameR[11]) {
  19389. default: break;
  19390. case 'f': // 1 string to match.
  19391. if (memcmp(NameR.data()+12, "nacc", 4))
  19392. break;
  19393. return Intrinsic::x86_3dnowa_pfnacc; // "86.3dnowa.pfnacc"
  19394. case 's': // 1 string to match.
  19395. if (memcmp(NameR.data()+12, "wapd", 4))
  19396. break;
  19397. return Intrinsic::x86_3dnowa_pswapd; // "86.3dnowa.pswapd"
  19398. }
  19399. break;
  19400. }
  19401. break;
  19402. case 'a': // 33 strings to match.
  19403. if (memcmp(NameR.data()+4, "vx", 2))
  19404. break;
  19405. switch (NameR[6]) {
  19406. default: break;
  19407. case '.': // 5 strings to match.
  19408. switch (NameR[7]) {
  19409. default: break;
  19410. case 'd': // 1 string to match.
  19411. if (memcmp(NameR.data()+8, "p.ps.256", 8))
  19412. break;
  19413. return Intrinsic::x86_avx_dp_ps_256; // "86.avx.dp.ps.256"
  19414. case 'v': // 4 strings to match.
  19415. if (memcmp(NameR.data()+8, "test", 4))
  19416. break;
  19417. switch (NameR[12]) {
  19418. default: break;
  19419. case 'c': // 2 strings to match.
  19420. if (memcmp(NameR.data()+13, ".p", 2))
  19421. break;
  19422. switch (NameR[15]) {
  19423. default: break;
  19424. case 'd': // 1 string to match.
  19425. return Intrinsic::x86_avx_vtestc_pd; // "86.avx.vtestc.pd"
  19426. case 's': // 1 string to match.
  19427. return Intrinsic::x86_avx_vtestc_ps; // "86.avx.vtestc.ps"
  19428. }
  19429. break;
  19430. case 'z': // 2 strings to match.
  19431. if (memcmp(NameR.data()+13, ".p", 2))
  19432. break;
  19433. switch (NameR[15]) {
  19434. default: break;
  19435. case 'd': // 1 string to match.
  19436. return Intrinsic::x86_avx_vtestz_pd; // "86.avx.vtestz.pd"
  19437. case 's': // 1 string to match.
  19438. return Intrinsic::x86_avx_vtestz_ps; // "86.avx.vtestz.ps"
  19439. }
  19440. break;
  19441. }
  19442. break;
  19443. }
  19444. break;
  19445. case '2': // 28 strings to match.
  19446. if (NameR[7] != '.')
  19447. break;
  19448. switch (NameR[8]) {
  19449. default: break;
  19450. case 'm': // 1 string to match.
  19451. if (memcmp(NameR.data()+9, "ovntdqa", 7))
  19452. break;
  19453. return Intrinsic::x86_avx2_movntdqa; // "86.avx2.movntdqa"
  19454. case 'p': // 27 strings to match.
  19455. switch (NameR[9]) {
  19456. default: break;
  19457. case 'a': // 6 strings to match.
  19458. switch (NameR[10]) {
  19459. default: break;
  19460. case 'c': // 4 strings to match.
  19461. if (NameR[11] != 'k')
  19462. break;
  19463. switch (NameR[12]) {
  19464. default: break;
  19465. case 's': // 2 strings to match.
  19466. if (NameR[13] != 's')
  19467. break;
  19468. switch (NameR[14]) {
  19469. default: break;
  19470. case 'd': // 1 string to match.
  19471. if (NameR[15] != 'w')
  19472. break;
  19473. return Intrinsic::x86_avx2_packssdw; // "86.avx2.packssdw"
  19474. case 'w': // 1 string to match.
  19475. if (NameR[15] != 'b')
  19476. break;
  19477. return Intrinsic::x86_avx2_packsswb; // "86.avx2.packsswb"
  19478. }
  19479. break;
  19480. case 'u': // 2 strings to match.
  19481. if (NameR[13] != 's')
  19482. break;
  19483. switch (NameR[14]) {
  19484. default: break;
  19485. case 'd': // 1 string to match.
  19486. if (NameR[15] != 'w')
  19487. break;
  19488. return Intrinsic::x86_avx2_packusdw; // "86.avx2.packusdw"
  19489. case 'w': // 1 string to match.
  19490. if (NameR[15] != 'b')
  19491. break;
  19492. return Intrinsic::x86_avx2_packuswb; // "86.avx2.packuswb"
  19493. }
  19494. break;
  19495. }
  19496. break;
  19497. case 'd': // 2 strings to match.
  19498. if (memcmp(NameR.data()+11, "dus.", 4))
  19499. break;
  19500. switch (NameR[15]) {
  19501. default: break;
  19502. case 'b': // 1 string to match.
  19503. return Intrinsic::x86_avx2_paddus_b; // "86.avx2.paddus.b"
  19504. case 'w': // 1 string to match.
  19505. return Intrinsic::x86_avx2_paddus_w; // "86.avx2.paddus.w"
  19506. }
  19507. break;
  19508. }
  19509. break;
  19510. case 'b': // 1 string to match.
  19511. if (memcmp(NameR.data()+10, "lendvb", 6))
  19512. break;
  19513. return Intrinsic::x86_avx2_pblendvb; // "86.avx2.pblendvb"
  19514. case 'h': // 2 strings to match.
  19515. switch (NameR[10]) {
  19516. default: break;
  19517. case 'a': // 1 string to match.
  19518. if (memcmp(NameR.data()+11, "dd.sw", 5))
  19519. break;
  19520. return Intrinsic::x86_avx2_phadd_sw; // "86.avx2.phadd.sw"
  19521. case 's': // 1 string to match.
  19522. if (memcmp(NameR.data()+11, "ub.sw", 5))
  19523. break;
  19524. return Intrinsic::x86_avx2_phsub_sw; // "86.avx2.phsub.sw"
  19525. }
  19526. break;
  19527. case 'm': // 16 strings to match.
  19528. switch (NameR[10]) {
  19529. default: break;
  19530. case 'a': // 1 string to match.
  19531. if (memcmp(NameR.data()+11, "dd.wd", 5))
  19532. break;
  19533. return Intrinsic::x86_avx2_pmadd_wd; // "86.avx2.pmadd.wd"
  19534. case 'o': // 13 strings to match.
  19535. if (NameR[11] != 'v')
  19536. break;
  19537. switch (NameR[12]) {
  19538. default: break;
  19539. case 'm': // 1 string to match.
  19540. if (memcmp(NameR.data()+13, "skb", 3))
  19541. break;
  19542. return Intrinsic::x86_avx2_pmovmskb; // "86.avx2.pmovmskb"
  19543. case 's': // 6 strings to match.
  19544. if (NameR[13] != 'x')
  19545. break;
  19546. switch (NameR[14]) {
  19547. default: break;
  19548. case 'b': // 3 strings to match.
  19549. switch (NameR[15]) {
  19550. default: break;
  19551. case 'd': // 1 string to match.
  19552. return Intrinsic::x86_avx2_pmovsxbd; // "86.avx2.pmovsxbd"
  19553. case 'q': // 1 string to match.
  19554. return Intrinsic::x86_avx2_pmovsxbq; // "86.avx2.pmovsxbq"
  19555. case 'w': // 1 string to match.
  19556. return Intrinsic::x86_avx2_pmovsxbw; // "86.avx2.pmovsxbw"
  19557. }
  19558. break;
  19559. case 'd': // 1 string to match.
  19560. if (NameR[15] != 'q')
  19561. break;
  19562. return Intrinsic::x86_avx2_pmovsxdq; // "86.avx2.pmovsxdq"
  19563. case 'w': // 2 strings to match.
  19564. switch (NameR[15]) {
  19565. default: break;
  19566. case 'd': // 1 string to match.
  19567. return Intrinsic::x86_avx2_pmovsxwd; // "86.avx2.pmovsxwd"
  19568. case 'q': // 1 string to match.
  19569. return Intrinsic::x86_avx2_pmovsxwq; // "86.avx2.pmovsxwq"
  19570. }
  19571. break;
  19572. }
  19573. break;
  19574. case 'z': // 6 strings to match.
  19575. if (NameR[13] != 'x')
  19576. break;
  19577. switch (NameR[14]) {
  19578. default: break;
  19579. case 'b': // 3 strings to match.
  19580. switch (NameR[15]) {
  19581. default: break;
  19582. case 'd': // 1 string to match.
  19583. return Intrinsic::x86_avx2_pmovzxbd; // "86.avx2.pmovzxbd"
  19584. case 'q': // 1 string to match.
  19585. return Intrinsic::x86_avx2_pmovzxbq; // "86.avx2.pmovzxbq"
  19586. case 'w': // 1 string to match.
  19587. return Intrinsic::x86_avx2_pmovzxbw; // "86.avx2.pmovzxbw"
  19588. }
  19589. break;
  19590. case 'd': // 1 string to match.
  19591. if (NameR[15] != 'q')
  19592. break;
  19593. return Intrinsic::x86_avx2_pmovzxdq; // "86.avx2.pmovzxdq"
  19594. case 'w': // 2 strings to match.
  19595. switch (NameR[15]) {
  19596. default: break;
  19597. case 'd': // 1 string to match.
  19598. return Intrinsic::x86_avx2_pmovzxwd; // "86.avx2.pmovzxwd"
  19599. case 'q': // 1 string to match.
  19600. return Intrinsic::x86_avx2_pmovzxwq; // "86.avx2.pmovzxwq"
  19601. }
  19602. break;
  19603. }
  19604. break;
  19605. }
  19606. break;
  19607. case 'u': // 2 strings to match.
  19608. if (NameR[11] != 'l')
  19609. break;
  19610. switch (NameR[12]) {
  19611. default: break;
  19612. case 'h': // 1 string to match.
  19613. if (memcmp(NameR.data()+13, "u.w", 3))
  19614. break;
  19615. return Intrinsic::x86_avx2_pmulhu_w; // "86.avx2.pmulhu.w"
  19616. case 'u': // 1 string to match.
  19617. if (memcmp(NameR.data()+13, ".dq", 3))
  19618. break;
  19619. return Intrinsic::x86_avx2_pmulu_dq; // "86.avx2.pmulu.dq"
  19620. }
  19621. break;
  19622. }
  19623. break;
  19624. case 's': // 2 strings to match.
  19625. if (memcmp(NameR.data()+10, "ubus.", 5))
  19626. break;
  19627. switch (NameR[15]) {
  19628. default: break;
  19629. case 'b': // 1 string to match.
  19630. return Intrinsic::x86_avx2_psubus_b; // "86.avx2.psubus.b"
  19631. case 'w': // 1 string to match.
  19632. return Intrinsic::x86_avx2_psubus_w; // "86.avx2.psubus.w"
  19633. }
  19634. break;
  19635. }
  19636. break;
  19637. }
  19638. break;
  19639. }
  19640. break;
  19641. case 'f': // 8 strings to match.
  19642. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  19643. break;
  19644. switch (NameR[10]) {
  19645. default: break;
  19646. case 'a': // 4 strings to match.
  19647. if (memcmp(NameR.data()+11, "dd.", 3))
  19648. break;
  19649. switch (NameR[14]) {
  19650. default: break;
  19651. case 'p': // 2 strings to match.
  19652. switch (NameR[15]) {
  19653. default: break;
  19654. case 'd': // 1 string to match.
  19655. return Intrinsic::x86_fma_vfmadd_pd; // "86.fma.vfmadd.pd"
  19656. case 's': // 1 string to match.
  19657. return Intrinsic::x86_fma_vfmadd_ps; // "86.fma.vfmadd.ps"
  19658. }
  19659. break;
  19660. case 's': // 2 strings to match.
  19661. switch (NameR[15]) {
  19662. default: break;
  19663. case 'd': // 1 string to match.
  19664. return Intrinsic::x86_fma_vfmadd_sd; // "86.fma.vfmadd.sd"
  19665. case 's': // 1 string to match.
  19666. return Intrinsic::x86_fma_vfmadd_ss; // "86.fma.vfmadd.ss"
  19667. }
  19668. break;
  19669. }
  19670. break;
  19671. case 's': // 4 strings to match.
  19672. if (memcmp(NameR.data()+11, "ub.", 3))
  19673. break;
  19674. switch (NameR[14]) {
  19675. default: break;
  19676. case 'p': // 2 strings to match.
  19677. switch (NameR[15]) {
  19678. default: break;
  19679. case 'd': // 1 string to match.
  19680. return Intrinsic::x86_fma_vfmsub_pd; // "86.fma.vfmsub.pd"
  19681. case 's': // 1 string to match.
  19682. return Intrinsic::x86_fma_vfmsub_ps; // "86.fma.vfmsub.ps"
  19683. }
  19684. break;
  19685. case 's': // 2 strings to match.
  19686. switch (NameR[15]) {
  19687. default: break;
  19688. case 'd': // 1 string to match.
  19689. return Intrinsic::x86_fma_vfmsub_sd; // "86.fma.vfmsub.sd"
  19690. case 's': // 1 string to match.
  19691. return Intrinsic::x86_fma_vfmsub_ss; // "86.fma.vfmsub.ss"
  19692. }
  19693. break;
  19694. }
  19695. break;
  19696. }
  19697. break;
  19698. case 'm': // 7 strings to match.
  19699. if (memcmp(NameR.data()+4, "mx.p", 4))
  19700. break;
  19701. switch (NameR[8]) {
  19702. default: break;
  19703. case 'a': // 1 string to match.
  19704. if (memcmp(NameR.data()+9, "lignr.b", 7))
  19705. break;
  19706. return Intrinsic::x86_mmx_palignr_b; // "86.mmx.palignr.b"
  19707. case 'u': // 6 strings to match.
  19708. if (memcmp(NameR.data()+9, "npck", 4))
  19709. break;
  19710. switch (NameR[13]) {
  19711. default: break;
  19712. case 'h': // 3 strings to match.
  19713. switch (NameR[14]) {
  19714. default: break;
  19715. case 'b': // 1 string to match.
  19716. if (NameR[15] != 'w')
  19717. break;
  19718. return Intrinsic::x86_mmx_punpckhbw; // "86.mmx.punpckhbw"
  19719. case 'd': // 1 string to match.
  19720. if (NameR[15] != 'q')
  19721. break;
  19722. return Intrinsic::x86_mmx_punpckhdq; // "86.mmx.punpckhdq"
  19723. case 'w': // 1 string to match.
  19724. if (NameR[15] != 'd')
  19725. break;
  19726. return Intrinsic::x86_mmx_punpckhwd; // "86.mmx.punpckhwd"
  19727. }
  19728. break;
  19729. case 'l': // 3 strings to match.
  19730. switch (NameR[14]) {
  19731. default: break;
  19732. case 'b': // 1 string to match.
  19733. if (NameR[15] != 'w')
  19734. break;
  19735. return Intrinsic::x86_mmx_punpcklbw; // "86.mmx.punpcklbw"
  19736. case 'd': // 1 string to match.
  19737. if (NameR[15] != 'q')
  19738. break;
  19739. return Intrinsic::x86_mmx_punpckldq; // "86.mmx.punpckldq"
  19740. case 'w': // 1 string to match.
  19741. if (NameR[15] != 'd')
  19742. break;
  19743. return Intrinsic::x86_mmx_punpcklwd; // "86.mmx.punpcklwd"
  19744. }
  19745. break;
  19746. }
  19747. break;
  19748. }
  19749. break;
  19750. case 's': // 40 strings to match.
  19751. if (NameR[4] != 's')
  19752. break;
  19753. switch (NameR[5]) {
  19754. default: break;
  19755. case 'e': // 32 strings to match.
  19756. switch (NameR[6]) {
  19757. default: break;
  19758. case '.': // 10 strings to match.
  19759. switch (NameR[7]) {
  19760. default: break;
  19761. case 'c': // 8 strings to match.
  19762. switch (NameR[8]) {
  19763. default: break;
  19764. case 'o': // 5 strings to match.
  19765. if (memcmp(NameR.data()+9, "mi", 2))
  19766. break;
  19767. switch (NameR[11]) {
  19768. default: break;
  19769. case 'e': // 1 string to match.
  19770. if (memcmp(NameR.data()+12, "q.ss", 4))
  19771. break;
  19772. return Intrinsic::x86_sse_comieq_ss; // "86.sse.comieq.ss"
  19773. case 'g': // 2 strings to match.
  19774. switch (NameR[12]) {
  19775. default: break;
  19776. case 'e': // 1 string to match.
  19777. if (memcmp(NameR.data()+13, ".ss", 3))
  19778. break;
  19779. return Intrinsic::x86_sse_comige_ss; // "86.sse.comige.ss"
  19780. case 't': // 1 string to match.
  19781. if (memcmp(NameR.data()+13, ".ss", 3))
  19782. break;
  19783. return Intrinsic::x86_sse_comigt_ss; // "86.sse.comigt.ss"
  19784. }
  19785. break;
  19786. case 'l': // 2 strings to match.
  19787. switch (NameR[12]) {
  19788. default: break;
  19789. case 'e': // 1 string to match.
  19790. if (memcmp(NameR.data()+13, ".ss", 3))
  19791. break;
  19792. return Intrinsic::x86_sse_comile_ss; // "86.sse.comile.ss"
  19793. case 't': // 1 string to match.
  19794. if (memcmp(NameR.data()+13, ".ss", 3))
  19795. break;
  19796. return Intrinsic::x86_sse_comilt_ss; // "86.sse.comilt.ss"
  19797. }
  19798. break;
  19799. }
  19800. break;
  19801. case 'v': // 3 strings to match.
  19802. if (memcmp(NameR.data()+9, "tt", 2))
  19803. break;
  19804. switch (NameR[11]) {
  19805. default: break;
  19806. case 'p': // 2 strings to match.
  19807. switch (NameR[12]) {
  19808. default: break;
  19809. case 'd': // 1 string to match.
  19810. if (memcmp(NameR.data()+13, "2pi", 3))
  19811. break;
  19812. return Intrinsic::x86_sse_cvttpd2pi; // "86.sse.cvttpd2pi"
  19813. case 's': // 1 string to match.
  19814. if (memcmp(NameR.data()+13, "2pi", 3))
  19815. break;
  19816. return Intrinsic::x86_sse_cvttps2pi; // "86.sse.cvttps2pi"
  19817. }
  19818. break;
  19819. case 's': // 1 string to match.
  19820. if (memcmp(NameR.data()+12, "s2si", 4))
  19821. break;
  19822. return Intrinsic::x86_sse_cvttss2si; // "86.sse.cvttss2si"
  19823. }
  19824. break;
  19825. }
  19826. break;
  19827. case 'm': // 1 string to match.
  19828. if (memcmp(NameR.data()+8, "ovmsk.ps", 8))
  19829. break;
  19830. return Intrinsic::x86_sse_movmsk_ps; // "86.sse.movmsk.ps"
  19831. case 's': // 1 string to match.
  19832. if (memcmp(NameR.data()+8, "toreu.ps", 8))
  19833. break;
  19834. return Intrinsic::x86_sse_storeu_ps; // "86.sse.storeu.ps"
  19835. }
  19836. break;
  19837. case '2': // 17 strings to match.
  19838. if (NameR[7] != '.')
  19839. break;
  19840. switch (NameR[8]) {
  19841. default: break;
  19842. case 'c': // 10 strings to match.
  19843. if (memcmp(NameR.data()+9, "vt", 2))
  19844. break;
  19845. switch (NameR[11]) {
  19846. default: break;
  19847. case 'd': // 2 strings to match.
  19848. if (memcmp(NameR.data()+12, "q2p", 3))
  19849. break;
  19850. switch (NameR[15]) {
  19851. default: break;
  19852. case 'd': // 1 string to match.
  19853. return Intrinsic::x86_sse2_cvtdq2pd; // "86.sse2.cvtdq2pd"
  19854. case 's': // 1 string to match.
  19855. return Intrinsic::x86_sse2_cvtdq2ps; // "86.sse2.cvtdq2ps"
  19856. }
  19857. break;
  19858. case 'p': // 4 strings to match.
  19859. switch (NameR[12]) {
  19860. default: break;
  19861. case 'd': // 2 strings to match.
  19862. if (NameR[13] != '2')
  19863. break;
  19864. switch (NameR[14]) {
  19865. default: break;
  19866. case 'd': // 1 string to match.
  19867. if (NameR[15] != 'q')
  19868. break;
  19869. return Intrinsic::x86_sse2_cvtpd2dq; // "86.sse2.cvtpd2dq"
  19870. case 'p': // 1 string to match.
  19871. if (NameR[15] != 's')
  19872. break;
  19873. return Intrinsic::x86_sse2_cvtpd2ps; // "86.sse2.cvtpd2ps"
  19874. }
  19875. break;
  19876. case 's': // 2 strings to match.
  19877. if (NameR[13] != '2')
  19878. break;
  19879. switch (NameR[14]) {
  19880. default: break;
  19881. case 'd': // 1 string to match.
  19882. if (NameR[15] != 'q')
  19883. break;
  19884. return Intrinsic::x86_sse2_cvtps2dq; // "86.sse2.cvtps2dq"
  19885. case 'p': // 1 string to match.
  19886. if (NameR[15] != 'd')
  19887. break;
  19888. return Intrinsic::x86_sse2_cvtps2pd; // "86.sse2.cvtps2pd"
  19889. }
  19890. break;
  19891. }
  19892. break;
  19893. case 's': // 4 strings to match.
  19894. switch (NameR[12]) {
  19895. default: break;
  19896. case 'd': // 2 strings to match.
  19897. if (memcmp(NameR.data()+13, "2s", 2))
  19898. break;
  19899. switch (NameR[15]) {
  19900. default: break;
  19901. case 'i': // 1 string to match.
  19902. return Intrinsic::x86_sse2_cvtsd2si; // "86.sse2.cvtsd2si"
  19903. case 's': // 1 string to match.
  19904. return Intrinsic::x86_sse2_cvtsd2ss; // "86.sse2.cvtsd2ss"
  19905. }
  19906. break;
  19907. case 'i': // 1 string to match.
  19908. if (memcmp(NameR.data()+13, "2sd", 3))
  19909. break;
  19910. return Intrinsic::x86_sse2_cvtsi2sd; // "86.sse2.cvtsi2sd"
  19911. case 's': // 1 string to match.
  19912. if (memcmp(NameR.data()+13, "2sd", 3))
  19913. break;
  19914. return Intrinsic::x86_sse2_cvtss2sd; // "86.sse2.cvtss2sd"
  19915. }
  19916. break;
  19917. }
  19918. break;
  19919. case 'p': // 7 strings to match.
  19920. switch (NameR[9]) {
  19921. default: break;
  19922. case 'a': // 2 strings to match.
  19923. if (memcmp(NameR.data()+10, "ddus.", 5))
  19924. break;
  19925. switch (NameR[15]) {
  19926. default: break;
  19927. case 'b': // 1 string to match.
  19928. return Intrinsic::x86_sse2_paddus_b; // "86.sse2.paddus.b"
  19929. case 'w': // 1 string to match.
  19930. return Intrinsic::x86_sse2_paddus_w; // "86.sse2.paddus.w"
  19931. }
  19932. break;
  19933. case 'm': // 3 strings to match.
  19934. switch (NameR[10]) {
  19935. default: break;
  19936. case 'a': // 1 string to match.
  19937. if (memcmp(NameR.data()+11, "dd.wd", 5))
  19938. break;
  19939. return Intrinsic::x86_sse2_pmadd_wd; // "86.sse2.pmadd.wd"
  19940. case 'u': // 2 strings to match.
  19941. if (NameR[11] != 'l')
  19942. break;
  19943. switch (NameR[12]) {
  19944. default: break;
  19945. case 'h': // 1 string to match.
  19946. if (memcmp(NameR.data()+13, "u.w", 3))
  19947. break;
  19948. return Intrinsic::x86_sse2_pmulhu_w; // "86.sse2.pmulhu.w"
  19949. case 'u': // 1 string to match.
  19950. if (memcmp(NameR.data()+13, ".dq", 3))
  19951. break;
  19952. return Intrinsic::x86_sse2_pmulu_dq; // "86.sse2.pmulu.dq"
  19953. }
  19954. break;
  19955. }
  19956. break;
  19957. case 's': // 2 strings to match.
  19958. if (memcmp(NameR.data()+10, "ubus.", 5))
  19959. break;
  19960. switch (NameR[15]) {
  19961. default: break;
  19962. case 'b': // 1 string to match.
  19963. return Intrinsic::x86_sse2_psubus_b; // "86.sse2.psubus.b"
  19964. case 'w': // 1 string to match.
  19965. return Intrinsic::x86_sse2_psubus_w; // "86.sse2.psubus.w"
  19966. }
  19967. break;
  19968. }
  19969. break;
  19970. }
  19971. break;
  19972. case '4': // 5 strings to match.
  19973. switch (NameR[7]) {
  19974. default: break;
  19975. case '1': // 4 strings to match.
  19976. if (NameR[8] != '.')
  19977. break;
  19978. switch (NameR[9]) {
  19979. default: break;
  19980. case 'b': // 2 strings to match.
  19981. if (memcmp(NameR.data()+10, "lendp", 5))
  19982. break;
  19983. switch (NameR[15]) {
  19984. default: break;
  19985. case 'd': // 1 string to match.
  19986. return Intrinsic::x86_sse41_blendpd; // "86.sse41.blendpd"
  19987. case 's': // 1 string to match.
  19988. return Intrinsic::x86_sse41_blendps; // "86.sse41.blendps"
  19989. }
  19990. break;
  19991. case 'm': // 1 string to match.
  19992. if (memcmp(NameR.data()+10, "psadbw", 6))
  19993. break;
  19994. return Intrinsic::x86_sse41_mpsadbw; // "86.sse41.mpsadbw"
  19995. case 'p': // 1 string to match.
  19996. if (memcmp(NameR.data()+10, "blendw", 6))
  19997. break;
  19998. return Intrinsic::x86_sse41_pblendw; // "86.sse41.pblendw"
  19999. }
  20000. break;
  20001. case 'a': // 1 string to match.
  20002. if (memcmp(NameR.data()+8, ".insertq", 8))
  20003. break;
  20004. return Intrinsic::x86_sse4a_insertq; // "86.sse4a.insertq"
  20005. }
  20006. break;
  20007. }
  20008. break;
  20009. case 's': // 8 strings to match.
  20010. if (memcmp(NameR.data()+6, "e3.p", 4))
  20011. break;
  20012. switch (NameR[10]) {
  20013. default: break;
  20014. case 'h': // 4 strings to match.
  20015. switch (NameR[11]) {
  20016. default: break;
  20017. case 'a': // 2 strings to match.
  20018. if (memcmp(NameR.data()+12, "dd.", 3))
  20019. break;
  20020. switch (NameR[15]) {
  20021. default: break;
  20022. case 'd': // 1 string to match.
  20023. return Intrinsic::x86_ssse3_phadd_d; // "86.ssse3.phadd.d"
  20024. case 'w': // 1 string to match.
  20025. return Intrinsic::x86_ssse3_phadd_w; // "86.ssse3.phadd.w"
  20026. }
  20027. break;
  20028. case 's': // 2 strings to match.
  20029. if (memcmp(NameR.data()+12, "ub.", 3))
  20030. break;
  20031. switch (NameR[15]) {
  20032. default: break;
  20033. case 'd': // 1 string to match.
  20034. return Intrinsic::x86_ssse3_phsub_d; // "86.ssse3.phsub.d"
  20035. case 'w': // 1 string to match.
  20036. return Intrinsic::x86_ssse3_phsub_w; // "86.ssse3.phsub.w"
  20037. }
  20038. break;
  20039. }
  20040. break;
  20041. case 's': // 4 strings to match.
  20042. switch (NameR[11]) {
  20043. default: break;
  20044. case 'h': // 1 string to match.
  20045. if (memcmp(NameR.data()+12, "uf.b", 4))
  20046. break;
  20047. return Intrinsic::x86_ssse3_pshuf_b; // "86.ssse3.pshuf.b"
  20048. case 'i': // 3 strings to match.
  20049. if (memcmp(NameR.data()+12, "gn.", 3))
  20050. break;
  20051. switch (NameR[15]) {
  20052. default: break;
  20053. case 'b': // 1 string to match.
  20054. return Intrinsic::x86_ssse3_psign_b; // "86.ssse3.psign.b"
  20055. case 'd': // 1 string to match.
  20056. return Intrinsic::x86_ssse3_psign_d; // "86.ssse3.psign.d"
  20057. case 'w': // 1 string to match.
  20058. return Intrinsic::x86_ssse3_psign_w; // "86.ssse3.psign.w"
  20059. }
  20060. break;
  20061. }
  20062. break;
  20063. }
  20064. break;
  20065. }
  20066. break;
  20067. case 'v': // 4 strings to match.
  20068. if (memcmp(NameR.data()+4, "cvtp", 4))
  20069. break;
  20070. switch (NameR[8]) {
  20071. default: break;
  20072. case 'h': // 2 strings to match.
  20073. if (memcmp(NameR.data()+9, "2ps.", 4))
  20074. break;
  20075. switch (NameR[13]) {
  20076. default: break;
  20077. case '1': // 1 string to match.
  20078. if (memcmp(NameR.data()+14, "28", 2))
  20079. break;
  20080. return Intrinsic::x86_vcvtph2ps_128; // "86.vcvtph2ps.128"
  20081. case '2': // 1 string to match.
  20082. if (memcmp(NameR.data()+14, "56", 2))
  20083. break;
  20084. return Intrinsic::x86_vcvtph2ps_256; // "86.vcvtph2ps.256"
  20085. }
  20086. break;
  20087. case 's': // 2 strings to match.
  20088. if (memcmp(NameR.data()+9, "2ph.", 4))
  20089. break;
  20090. switch (NameR[13]) {
  20091. default: break;
  20092. case '1': // 1 string to match.
  20093. if (memcmp(NameR.data()+14, "28", 2))
  20094. break;
  20095. return Intrinsic::x86_vcvtps2ph_128; // "86.vcvtps2ph.128"
  20096. case '2': // 1 string to match.
  20097. if (memcmp(NameR.data()+14, "56", 2))
  20098. break;
  20099. return Intrinsic::x86_vcvtps2ph_256; // "86.vcvtps2ph.256"
  20100. }
  20101. break;
  20102. }
  20103. break;
  20104. case 'x': // 12 strings to match.
  20105. if (memcmp(NameR.data()+4, "op.vp", 5))
  20106. break;
  20107. switch (NameR[9]) {
  20108. default: break;
  20109. case 'h': // 6 strings to match.
  20110. if (memcmp(NameR.data()+10, "addu", 4))
  20111. break;
  20112. switch (NameR[14]) {
  20113. default: break;
  20114. case 'b': // 3 strings to match.
  20115. switch (NameR[15]) {
  20116. default: break;
  20117. case 'd': // 1 string to match.
  20118. return Intrinsic::x86_xop_vphaddubd; // "86.xop.vphaddubd"
  20119. case 'q': // 1 string to match.
  20120. return Intrinsic::x86_xop_vphaddubq; // "86.xop.vphaddubq"
  20121. case 'w': // 1 string to match.
  20122. return Intrinsic::x86_xop_vphaddubw; // "86.xop.vphaddubw"
  20123. }
  20124. break;
  20125. case 'd': // 1 string to match.
  20126. if (NameR[15] != 'q')
  20127. break;
  20128. return Intrinsic::x86_xop_vphaddudq; // "86.xop.vphaddudq"
  20129. case 'w': // 2 strings to match.
  20130. switch (NameR[15]) {
  20131. default: break;
  20132. case 'd': // 1 string to match.
  20133. return Intrinsic::x86_xop_vphadduwd; // "86.xop.vphadduwd"
  20134. case 'q': // 1 string to match.
  20135. return Intrinsic::x86_xop_vphadduwq; // "86.xop.vphadduwq"
  20136. }
  20137. break;
  20138. }
  20139. break;
  20140. case 'm': // 6 strings to match.
  20141. if (NameR[10] != 'a')
  20142. break;
  20143. switch (NameR[11]) {
  20144. default: break;
  20145. case 'c': // 5 strings to match.
  20146. if (NameR[12] != 's')
  20147. break;
  20148. switch (NameR[13]) {
  20149. default: break;
  20150. case 'd': // 2 strings to match.
  20151. if (NameR[14] != 'q')
  20152. break;
  20153. switch (NameR[15]) {
  20154. default: break;
  20155. case 'h': // 1 string to match.
  20156. return Intrinsic::x86_xop_vpmacsdqh; // "86.xop.vpmacsdqh"
  20157. case 'l': // 1 string to match.
  20158. return Intrinsic::x86_xop_vpmacsdql; // "86.xop.vpmacsdql"
  20159. }
  20160. break;
  20161. case 's': // 3 strings to match.
  20162. switch (NameR[14]) {
  20163. default: break;
  20164. case 'd': // 1 string to match.
  20165. if (NameR[15] != 'd')
  20166. break;
  20167. return Intrinsic::x86_xop_vpmacssdd; // "86.xop.vpmacssdd"
  20168. case 'w': // 2 strings to match.
  20169. switch (NameR[15]) {
  20170. default: break;
  20171. case 'd': // 1 string to match.
  20172. return Intrinsic::x86_xop_vpmacsswd; // "86.xop.vpmacsswd"
  20173. case 'w': // 1 string to match.
  20174. return Intrinsic::x86_xop_vpmacssww; // "86.xop.vpmacssww"
  20175. }
  20176. break;
  20177. }
  20178. break;
  20179. }
  20180. break;
  20181. case 'd': // 1 string to match.
  20182. if (memcmp(NameR.data()+12, "cswd", 4))
  20183. break;
  20184. return Intrinsic::x86_xop_vpmadcswd; // "86.xop.vpmadcswd"
  20185. }
  20186. break;
  20187. }
  20188. break;
  20189. }
  20190. break;
  20191. case 17: // 79 strings to match.
  20192. if (memcmp(NameR.data()+0, "86.", 3))
  20193. break;
  20194. switch (NameR[3]) {
  20195. default: break;
  20196. case '3': // 4 strings to match.
  20197. if (memcmp(NameR.data()+4, "dnow", 4))
  20198. break;
  20199. switch (NameR[8]) {
  20200. default: break;
  20201. case '.': // 3 strings to match.
  20202. if (memcmp(NameR.data()+9, "pfr", 3))
  20203. break;
  20204. switch (NameR[12]) {
  20205. default: break;
  20206. case 'c': // 2 strings to match.
  20207. if (memcmp(NameR.data()+13, "pit", 3))
  20208. break;
  20209. switch (NameR[16]) {
  20210. default: break;
  20211. case '1': // 1 string to match.
  20212. return Intrinsic::x86_3dnow_pfrcpit1; // "86.3dnow.pfrcpit1"
  20213. case '2': // 1 string to match.
  20214. return Intrinsic::x86_3dnow_pfrcpit2; // "86.3dnow.pfrcpit2"
  20215. }
  20216. break;
  20217. case 's': // 1 string to match.
  20218. if (memcmp(NameR.data()+13, "qit1", 4))
  20219. break;
  20220. return Intrinsic::x86_3dnow_pfrsqit1; // "86.3dnow.pfrsqit1"
  20221. }
  20222. break;
  20223. case 'a': // 1 string to match.
  20224. if (memcmp(NameR.data()+9, ".pfpnacc", 8))
  20225. break;
  20226. return Intrinsic::x86_3dnowa_pfpnacc; // "86.3dnowa.pfpnacc"
  20227. }
  20228. break;
  20229. case 'a': // 11 strings to match.
  20230. if (memcmp(NameR.data()+4, "vx.", 3))
  20231. break;
  20232. switch (NameR[7]) {
  20233. default: break;
  20234. case 'c': // 2 strings to match.
  20235. if (memcmp(NameR.data()+8, "mp.p", 4))
  20236. break;
  20237. switch (NameR[12]) {
  20238. default: break;
  20239. case 'd': // 1 string to match.
  20240. if (memcmp(NameR.data()+13, ".256", 4))
  20241. break;
  20242. return Intrinsic::x86_avx_cmp_pd_256; // "86.avx.cmp.pd.256"
  20243. case 's': // 1 string to match.
  20244. if (memcmp(NameR.data()+13, ".256", 4))
  20245. break;
  20246. return Intrinsic::x86_avx_cmp_ps_256; // "86.avx.cmp.ps.256"
  20247. }
  20248. break;
  20249. case 'l': // 1 string to match.
  20250. if (memcmp(NameR.data()+8, "du.dq.256", 9))
  20251. break;
  20252. return Intrinsic::x86_avx_ldu_dq_256; // "86.avx.ldu.dq.256"
  20253. case 'm': // 4 strings to match.
  20254. switch (NameR[8]) {
  20255. default: break;
  20256. case 'a': // 2 strings to match.
  20257. if (memcmp(NameR.data()+9, "x.p", 3))
  20258. break;
  20259. switch (NameR[12]) {
  20260. default: break;
  20261. case 'd': // 1 string to match.
  20262. if (memcmp(NameR.data()+13, ".256", 4))
  20263. break;
  20264. return Intrinsic::x86_avx_max_pd_256; // "86.avx.max.pd.256"
  20265. case 's': // 1 string to match.
  20266. if (memcmp(NameR.data()+13, ".256", 4))
  20267. break;
  20268. return Intrinsic::x86_avx_max_ps_256; // "86.avx.max.ps.256"
  20269. }
  20270. break;
  20271. case 'i': // 2 strings to match.
  20272. if (memcmp(NameR.data()+9, "n.p", 3))
  20273. break;
  20274. switch (NameR[12]) {
  20275. default: break;
  20276. case 'd': // 1 string to match.
  20277. if (memcmp(NameR.data()+13, ".256", 4))
  20278. break;
  20279. return Intrinsic::x86_avx_min_pd_256; // "86.avx.min.pd.256"
  20280. case 's': // 1 string to match.
  20281. if (memcmp(NameR.data()+13, ".256", 4))
  20282. break;
  20283. return Intrinsic::x86_avx_min_ps_256; // "86.avx.min.ps.256"
  20284. }
  20285. break;
  20286. }
  20287. break;
  20288. case 'p': // 2 strings to match.
  20289. if (memcmp(NameR.data()+8, "test", 4))
  20290. break;
  20291. switch (NameR[12]) {
  20292. default: break;
  20293. case 'c': // 1 string to match.
  20294. if (memcmp(NameR.data()+13, ".256", 4))
  20295. break;
  20296. return Intrinsic::x86_avx_ptestc_256; // "86.avx.ptestc.256"
  20297. case 'z': // 1 string to match.
  20298. if (memcmp(NameR.data()+13, ".256", 4))
  20299. break;
  20300. return Intrinsic::x86_avx_ptestz_256; // "86.avx.ptestz.256"
  20301. }
  20302. break;
  20303. case 'r': // 1 string to match.
  20304. if (memcmp(NameR.data()+8, "cp.ps.256", 9))
  20305. break;
  20306. return Intrinsic::x86_avx_rcp_ps_256; // "86.avx.rcp.ps.256"
  20307. case 'v': // 1 string to match.
  20308. if (memcmp(NameR.data()+8, "zeroupper", 9))
  20309. break;
  20310. return Intrinsic::x86_avx_vzeroupper; // "86.avx.vzeroupper"
  20311. }
  20312. break;
  20313. case 'f': // 8 strings to match.
  20314. if (memcmp(NameR.data()+4, "ma.vfnm", 7))
  20315. break;
  20316. switch (NameR[11]) {
  20317. default: break;
  20318. case 'a': // 4 strings to match.
  20319. if (memcmp(NameR.data()+12, "dd.", 3))
  20320. break;
  20321. switch (NameR[15]) {
  20322. default: break;
  20323. case 'p': // 2 strings to match.
  20324. switch (NameR[16]) {
  20325. default: break;
  20326. case 'd': // 1 string to match.
  20327. return Intrinsic::x86_fma_vfnmadd_pd; // "86.fma.vfnmadd.pd"
  20328. case 's': // 1 string to match.
  20329. return Intrinsic::x86_fma_vfnmadd_ps; // "86.fma.vfnmadd.ps"
  20330. }
  20331. break;
  20332. case 's': // 2 strings to match.
  20333. switch (NameR[16]) {
  20334. default: break;
  20335. case 'd': // 1 string to match.
  20336. return Intrinsic::x86_fma_vfnmadd_sd; // "86.fma.vfnmadd.sd"
  20337. case 's': // 1 string to match.
  20338. return Intrinsic::x86_fma_vfnmadd_ss; // "86.fma.vfnmadd.ss"
  20339. }
  20340. break;
  20341. }
  20342. break;
  20343. case 's': // 4 strings to match.
  20344. if (memcmp(NameR.data()+12, "ub.", 3))
  20345. break;
  20346. switch (NameR[15]) {
  20347. default: break;
  20348. case 'p': // 2 strings to match.
  20349. switch (NameR[16]) {
  20350. default: break;
  20351. case 'd': // 1 string to match.
  20352. return Intrinsic::x86_fma_vfnmsub_pd; // "86.fma.vfnmsub.pd"
  20353. case 's': // 1 string to match.
  20354. return Intrinsic::x86_fma_vfnmsub_ps; // "86.fma.vfnmsub.ps"
  20355. }
  20356. break;
  20357. case 's': // 2 strings to match.
  20358. switch (NameR[16]) {
  20359. default: break;
  20360. case 'd': // 1 string to match.
  20361. return Intrinsic::x86_fma_vfnmsub_sd; // "86.fma.vfnmsub.sd"
  20362. case 's': // 1 string to match.
  20363. return Intrinsic::x86_fma_vfnmsub_ss; // "86.fma.vfnmsub.ss"
  20364. }
  20365. break;
  20366. }
  20367. break;
  20368. }
  20369. break;
  20370. case 's': // 50 strings to match.
  20371. if (NameR[4] != 's')
  20372. break;
  20373. switch (NameR[5]) {
  20374. default: break;
  20375. case 'e': // 48 strings to match.
  20376. switch (NameR[6]) {
  20377. default: break;
  20378. case '.': // 8 strings to match.
  20379. switch (NameR[7]) {
  20380. default: break;
  20381. case 'c': // 3 strings to match.
  20382. switch (NameR[8]) {
  20383. default: break;
  20384. case 'o': // 1 string to match.
  20385. if (memcmp(NameR.data()+9, "mineq.ss", 8))
  20386. break;
  20387. return Intrinsic::x86_sse_comineq_ss; // "86.sse.comineq.ss"
  20388. case 'v': // 2 strings to match.
  20389. if (memcmp(NameR.data()+9, "ts", 2))
  20390. break;
  20391. switch (NameR[11]) {
  20392. default: break;
  20393. case 'i': // 1 string to match.
  20394. if (memcmp(NameR.data()+12, "642ss", 5))
  20395. break;
  20396. return Intrinsic::x86_sse_cvtsi642ss; // "86.sse.cvtsi642ss"
  20397. case 's': // 1 string to match.
  20398. if (memcmp(NameR.data()+12, "2si64", 5))
  20399. break;
  20400. return Intrinsic::x86_sse_cvtss2si64; // "86.sse.cvtss2si64"
  20401. }
  20402. break;
  20403. }
  20404. break;
  20405. case 'u': // 5 strings to match.
  20406. if (memcmp(NameR.data()+8, "comi", 4))
  20407. break;
  20408. switch (NameR[12]) {
  20409. default: break;
  20410. case 'e': // 1 string to match.
  20411. if (memcmp(NameR.data()+13, "q.ss", 4))
  20412. break;
  20413. return Intrinsic::x86_sse_ucomieq_ss; // "86.sse.ucomieq.ss"
  20414. case 'g': // 2 strings to match.
  20415. switch (NameR[13]) {
  20416. default: break;
  20417. case 'e': // 1 string to match.
  20418. if (memcmp(NameR.data()+14, ".ss", 3))
  20419. break;
  20420. return Intrinsic::x86_sse_ucomige_ss; // "86.sse.ucomige.ss"
  20421. case 't': // 1 string to match.
  20422. if (memcmp(NameR.data()+14, ".ss", 3))
  20423. break;
  20424. return Intrinsic::x86_sse_ucomigt_ss; // "86.sse.ucomigt.ss"
  20425. }
  20426. break;
  20427. case 'l': // 2 strings to match.
  20428. switch (NameR[13]) {
  20429. default: break;
  20430. case 'e': // 1 string to match.
  20431. if (memcmp(NameR.data()+14, ".ss", 3))
  20432. break;
  20433. return Intrinsic::x86_sse_ucomile_ss; // "86.sse.ucomile.ss"
  20434. case 't': // 1 string to match.
  20435. if (memcmp(NameR.data()+14, ".ss", 3))
  20436. break;
  20437. return Intrinsic::x86_sse_ucomilt_ss; // "86.sse.ucomilt.ss"
  20438. }
  20439. break;
  20440. }
  20441. break;
  20442. }
  20443. break;
  20444. case '2': // 12 strings to match.
  20445. if (NameR[7] != '.')
  20446. break;
  20447. switch (NameR[8]) {
  20448. default: break;
  20449. case 'c': // 8 strings to match.
  20450. switch (NameR[9]) {
  20451. default: break;
  20452. case 'o': // 5 strings to match.
  20453. if (memcmp(NameR.data()+10, "mi", 2))
  20454. break;
  20455. switch (NameR[12]) {
  20456. default: break;
  20457. case 'e': // 1 string to match.
  20458. if (memcmp(NameR.data()+13, "q.sd", 4))
  20459. break;
  20460. return Intrinsic::x86_sse2_comieq_sd; // "86.sse2.comieq.sd"
  20461. case 'g': // 2 strings to match.
  20462. switch (NameR[13]) {
  20463. default: break;
  20464. case 'e': // 1 string to match.
  20465. if (memcmp(NameR.data()+14, ".sd", 3))
  20466. break;
  20467. return Intrinsic::x86_sse2_comige_sd; // "86.sse2.comige.sd"
  20468. case 't': // 1 string to match.
  20469. if (memcmp(NameR.data()+14, ".sd", 3))
  20470. break;
  20471. return Intrinsic::x86_sse2_comigt_sd; // "86.sse2.comigt.sd"
  20472. }
  20473. break;
  20474. case 'l': // 2 strings to match.
  20475. switch (NameR[13]) {
  20476. default: break;
  20477. case 'e': // 1 string to match.
  20478. if (memcmp(NameR.data()+14, ".sd", 3))
  20479. break;
  20480. return Intrinsic::x86_sse2_comile_sd; // "86.sse2.comile.sd"
  20481. case 't': // 1 string to match.
  20482. if (memcmp(NameR.data()+14, ".sd", 3))
  20483. break;
  20484. return Intrinsic::x86_sse2_comilt_sd; // "86.sse2.comilt.sd"
  20485. }
  20486. break;
  20487. }
  20488. break;
  20489. case 'v': // 3 strings to match.
  20490. if (memcmp(NameR.data()+10, "tt", 2))
  20491. break;
  20492. switch (NameR[12]) {
  20493. default: break;
  20494. case 'p': // 2 strings to match.
  20495. switch (NameR[13]) {
  20496. default: break;
  20497. case 'd': // 1 string to match.
  20498. if (memcmp(NameR.data()+14, "2dq", 3))
  20499. break;
  20500. return Intrinsic::x86_sse2_cvttpd2dq; // "86.sse2.cvttpd2dq"
  20501. case 's': // 1 string to match.
  20502. if (memcmp(NameR.data()+14, "2dq", 3))
  20503. break;
  20504. return Intrinsic::x86_sse2_cvttps2dq; // "86.sse2.cvttps2dq"
  20505. }
  20506. break;
  20507. case 's': // 1 string to match.
  20508. if (memcmp(NameR.data()+13, "d2si", 4))
  20509. break;
  20510. return Intrinsic::x86_sse2_cvttsd2si; // "86.sse2.cvttsd2si"
  20511. }
  20512. break;
  20513. }
  20514. break;
  20515. case 'm': // 1 string to match.
  20516. if (memcmp(NameR.data()+9, "ovmsk.pd", 8))
  20517. break;
  20518. return Intrinsic::x86_sse2_movmsk_pd; // "86.sse2.movmsk.pd"
  20519. case 's': // 3 strings to match.
  20520. if (memcmp(NameR.data()+9, "tore", 4))
  20521. break;
  20522. switch (NameR[13]) {
  20523. default: break;
  20524. case 'l': // 1 string to match.
  20525. if (memcmp(NameR.data()+14, ".dq", 3))
  20526. break;
  20527. return Intrinsic::x86_sse2_storel_dq; // "86.sse2.storel.dq"
  20528. case 'u': // 2 strings to match.
  20529. if (NameR[14] != '.')
  20530. break;
  20531. switch (NameR[15]) {
  20532. default: break;
  20533. case 'd': // 1 string to match.
  20534. if (NameR[16] != 'q')
  20535. break;
  20536. return Intrinsic::x86_sse2_storeu_dq; // "86.sse2.storeu.dq"
  20537. case 'p': // 1 string to match.
  20538. if (NameR[16] != 'd')
  20539. break;
  20540. return Intrinsic::x86_sse2_storeu_pd; // "86.sse2.storeu.pd"
  20541. }
  20542. break;
  20543. }
  20544. break;
  20545. }
  20546. break;
  20547. case '3': // 2 strings to match.
  20548. if (memcmp(NameR.data()+7, ".addsub.p", 9))
  20549. break;
  20550. switch (NameR[16]) {
  20551. default: break;
  20552. case 'd': // 1 string to match.
  20553. return Intrinsic::x86_sse3_addsub_pd; // "86.sse3.addsub.pd"
  20554. case 's': // 1 string to match.
  20555. return Intrinsic::x86_sse3_addsub_ps; // "86.sse3.addsub.ps"
  20556. }
  20557. break;
  20558. case '4': // 26 strings to match.
  20559. switch (NameR[7]) {
  20560. default: break;
  20561. case '1': // 23 strings to match.
  20562. if (NameR[8] != '.')
  20563. break;
  20564. switch (NameR[9]) {
  20565. default: break;
  20566. case 'b': // 2 strings to match.
  20567. if (memcmp(NameR.data()+10, "lendvp", 6))
  20568. break;
  20569. switch (NameR[16]) {
  20570. default: break;
  20571. case 'd': // 1 string to match.
  20572. return Intrinsic::x86_sse41_blendvpd; // "86.sse41.blendvpd"
  20573. case 's': // 1 string to match.
  20574. return Intrinsic::x86_sse41_blendvps; // "86.sse41.blendvps"
  20575. }
  20576. break;
  20577. case 'i': // 1 string to match.
  20578. if (memcmp(NameR.data()+10, "nsertps", 7))
  20579. break;
  20580. return Intrinsic::x86_sse41_insertps; // "86.sse41.insertps"
  20581. case 'm': // 1 string to match.
  20582. if (memcmp(NameR.data()+10, "ovntdqa", 7))
  20583. break;
  20584. return Intrinsic::x86_sse41_movntdqa; // "86.sse41.movntdqa"
  20585. case 'p': // 15 strings to match.
  20586. switch (NameR[10]) {
  20587. default: break;
  20588. case 'a': // 1 string to match.
  20589. if (memcmp(NameR.data()+11, "ckusdw", 6))
  20590. break;
  20591. return Intrinsic::x86_sse41_packusdw; // "86.sse41.packusdw"
  20592. case 'b': // 1 string to match.
  20593. if (memcmp(NameR.data()+11, "lendvb", 6))
  20594. break;
  20595. return Intrinsic::x86_sse41_pblendvb; // "86.sse41.pblendvb"
  20596. case 'm': // 12 strings to match.
  20597. if (memcmp(NameR.data()+11, "ov", 2))
  20598. break;
  20599. switch (NameR[13]) {
  20600. default: break;
  20601. case 's': // 6 strings to match.
  20602. if (NameR[14] != 'x')
  20603. break;
  20604. switch (NameR[15]) {
  20605. default: break;
  20606. case 'b': // 3 strings to match.
  20607. switch (NameR[16]) {
  20608. default: break;
  20609. case 'd': // 1 string to match.
  20610. return Intrinsic::x86_sse41_pmovsxbd; // "86.sse41.pmovsxbd"
  20611. case 'q': // 1 string to match.
  20612. return Intrinsic::x86_sse41_pmovsxbq; // "86.sse41.pmovsxbq"
  20613. case 'w': // 1 string to match.
  20614. return Intrinsic::x86_sse41_pmovsxbw; // "86.sse41.pmovsxbw"
  20615. }
  20616. break;
  20617. case 'd': // 1 string to match.
  20618. if (NameR[16] != 'q')
  20619. break;
  20620. return Intrinsic::x86_sse41_pmovsxdq; // "86.sse41.pmovsxdq"
  20621. case 'w': // 2 strings to match.
  20622. switch (NameR[16]) {
  20623. default: break;
  20624. case 'd': // 1 string to match.
  20625. return Intrinsic::x86_sse41_pmovsxwd; // "86.sse41.pmovsxwd"
  20626. case 'q': // 1 string to match.
  20627. return Intrinsic::x86_sse41_pmovsxwq; // "86.sse41.pmovsxwq"
  20628. }
  20629. break;
  20630. }
  20631. break;
  20632. case 'z': // 6 strings to match.
  20633. if (NameR[14] != 'x')
  20634. break;
  20635. switch (NameR[15]) {
  20636. default: break;
  20637. case 'b': // 3 strings to match.
  20638. switch (NameR[16]) {
  20639. default: break;
  20640. case 'd': // 1 string to match.
  20641. return Intrinsic::x86_sse41_pmovzxbd; // "86.sse41.pmovzxbd"
  20642. case 'q': // 1 string to match.
  20643. return Intrinsic::x86_sse41_pmovzxbq; // "86.sse41.pmovzxbq"
  20644. case 'w': // 1 string to match.
  20645. return Intrinsic::x86_sse41_pmovzxbw; // "86.sse41.pmovzxbw"
  20646. }
  20647. break;
  20648. case 'd': // 1 string to match.
  20649. if (NameR[16] != 'q')
  20650. break;
  20651. return Intrinsic::x86_sse41_pmovzxdq; // "86.sse41.pmovzxdq"
  20652. case 'w': // 2 strings to match.
  20653. switch (NameR[16]) {
  20654. default: break;
  20655. case 'd': // 1 string to match.
  20656. return Intrinsic::x86_sse41_pmovzxwd; // "86.sse41.pmovzxwd"
  20657. case 'q': // 1 string to match.
  20658. return Intrinsic::x86_sse41_pmovzxwq; // "86.sse41.pmovzxwq"
  20659. }
  20660. break;
  20661. }
  20662. break;
  20663. }
  20664. break;
  20665. case 't': // 1 string to match.
  20666. if (memcmp(NameR.data()+11, "estnzc", 6))
  20667. break;
  20668. return Intrinsic::x86_sse41_ptestnzc; // "86.sse41.ptestnzc"
  20669. }
  20670. break;
  20671. case 'r': // 4 strings to match.
  20672. if (memcmp(NameR.data()+10, "ound.", 5))
  20673. break;
  20674. switch (NameR[15]) {
  20675. default: break;
  20676. case 'p': // 2 strings to match.
  20677. switch (NameR[16]) {
  20678. default: break;
  20679. case 'd': // 1 string to match.
  20680. return Intrinsic::x86_sse41_round_pd; // "86.sse41.round.pd"
  20681. case 's': // 1 string to match.
  20682. return Intrinsic::x86_sse41_round_ps; // "86.sse41.round.ps"
  20683. }
  20684. break;
  20685. case 's': // 2 strings to match.
  20686. switch (NameR[16]) {
  20687. default: break;
  20688. case 'd': // 1 string to match.
  20689. return Intrinsic::x86_sse41_round_sd; // "86.sse41.round.sd"
  20690. case 's': // 1 string to match.
  20691. return Intrinsic::x86_sse41_round_ss; // "86.sse41.round.ss"
  20692. }
  20693. break;
  20694. }
  20695. break;
  20696. }
  20697. break;
  20698. case 'a': // 3 strings to match.
  20699. if (NameR[8] != '.')
  20700. break;
  20701. switch (NameR[9]) {
  20702. default: break;
  20703. case 'i': // 1 string to match.
  20704. if (memcmp(NameR.data()+10, "nsertqi", 7))
  20705. break;
  20706. return Intrinsic::x86_sse4a_insertqi; // "86.sse4a.insertqi"
  20707. case 'm': // 2 strings to match.
  20708. if (memcmp(NameR.data()+10, "ovnt.s", 6))
  20709. break;
  20710. switch (NameR[16]) {
  20711. default: break;
  20712. case 'd': // 1 string to match.
  20713. return Intrinsic::x86_sse4a_movnt_sd; // "86.sse4a.movnt.sd"
  20714. case 's': // 1 string to match.
  20715. return Intrinsic::x86_sse4a_movnt_ss; // "86.sse4a.movnt.ss"
  20716. }
  20717. break;
  20718. }
  20719. break;
  20720. }
  20721. break;
  20722. }
  20723. break;
  20724. case 's': // 2 strings to match.
  20725. if (memcmp(NameR.data()+6, "e3.ph", 5))
  20726. break;
  20727. switch (NameR[11]) {
  20728. default: break;
  20729. case 'a': // 1 string to match.
  20730. if (memcmp(NameR.data()+12, "dd.sw", 5))
  20731. break;
  20732. return Intrinsic::x86_ssse3_phadd_sw; // "86.ssse3.phadd.sw"
  20733. case 's': // 1 string to match.
  20734. if (memcmp(NameR.data()+12, "ub.sw", 5))
  20735. break;
  20736. return Intrinsic::x86_ssse3_phsub_sw; // "86.ssse3.phsub.sw"
  20737. }
  20738. break;
  20739. }
  20740. break;
  20741. case 'x': // 6 strings to match.
  20742. if (memcmp(NameR.data()+4, "op.vp", 5))
  20743. break;
  20744. switch (NameR[9]) {
  20745. default: break;
  20746. case 'c': // 1 string to match.
  20747. if (memcmp(NameR.data()+10, "mov.256", 7))
  20748. break;
  20749. return Intrinsic::x86_xop_vpcmov_256; // "86.xop.vpcmov.256"
  20750. case 'e': // 2 strings to match.
  20751. if (memcmp(NameR.data()+10, "rmil2p", 6))
  20752. break;
  20753. switch (NameR[16]) {
  20754. default: break;
  20755. case 'd': // 1 string to match.
  20756. return Intrinsic::x86_xop_vpermil2pd; // "86.xop.vpermil2pd"
  20757. case 's': // 1 string to match.
  20758. return Intrinsic::x86_xop_vpermil2ps; // "86.xop.vpermil2ps"
  20759. }
  20760. break;
  20761. case 'm': // 3 strings to match.
  20762. if (NameR[10] != 'a')
  20763. break;
  20764. switch (NameR[11]) {
  20765. default: break;
  20766. case 'c': // 2 strings to match.
  20767. if (memcmp(NameR.data()+12, "ssdq", 4))
  20768. break;
  20769. switch (NameR[16]) {
  20770. default: break;
  20771. case 'h': // 1 string to match.
  20772. return Intrinsic::x86_xop_vpmacssdqh; // "86.xop.vpmacssdqh"
  20773. case 'l': // 1 string to match.
  20774. return Intrinsic::x86_xop_vpmacssdql; // "86.xop.vpmacssdql"
  20775. }
  20776. break;
  20777. case 'd': // 1 string to match.
  20778. if (memcmp(NameR.data()+12, "csswd", 5))
  20779. break;
  20780. return Intrinsic::x86_xop_vpmadcsswd; // "86.xop.vpmadcsswd"
  20781. }
  20782. break;
  20783. }
  20784. break;
  20785. }
  20786. break;
  20787. case 18: // 33 strings to match.
  20788. if (memcmp(NameR.data()+0, "86.", 3))
  20789. break;
  20790. switch (NameR[3]) {
  20791. default: break;
  20792. case 'a': // 20 strings to match.
  20793. if (memcmp(NameR.data()+4, "vx", 2))
  20794. break;
  20795. switch (NameR[6]) {
  20796. default: break;
  20797. case '.': // 10 strings to match.
  20798. switch (NameR[7]) {
  20799. default: break;
  20800. case 'h': // 4 strings to match.
  20801. switch (NameR[8]) {
  20802. default: break;
  20803. case 'a': // 2 strings to match.
  20804. if (memcmp(NameR.data()+9, "dd.p", 4))
  20805. break;
  20806. switch (NameR[13]) {
  20807. default: break;
  20808. case 'd': // 1 string to match.
  20809. if (memcmp(NameR.data()+14, ".256", 4))
  20810. break;
  20811. return Intrinsic::x86_avx_hadd_pd_256; // "86.avx.hadd.pd.256"
  20812. case 's': // 1 string to match.
  20813. if (memcmp(NameR.data()+14, ".256", 4))
  20814. break;
  20815. return Intrinsic::x86_avx_hadd_ps_256; // "86.avx.hadd.ps.256"
  20816. }
  20817. break;
  20818. case 's': // 2 strings to match.
  20819. if (memcmp(NameR.data()+9, "ub.p", 4))
  20820. break;
  20821. switch (NameR[13]) {
  20822. default: break;
  20823. case 'd': // 1 string to match.
  20824. if (memcmp(NameR.data()+14, ".256", 4))
  20825. break;
  20826. return Intrinsic::x86_avx_hsub_pd_256; // "86.avx.hsub.pd.256"
  20827. case 's': // 1 string to match.
  20828. if (memcmp(NameR.data()+14, ".256", 4))
  20829. break;
  20830. return Intrinsic::x86_avx_hsub_ps_256; // "86.avx.hsub.ps.256"
  20831. }
  20832. break;
  20833. }
  20834. break;
  20835. case 'm': // 2 strings to match.
  20836. if (memcmp(NameR.data()+8, "askload.p", 9))
  20837. break;
  20838. switch (NameR[17]) {
  20839. default: break;
  20840. case 'd': // 1 string to match.
  20841. return Intrinsic::x86_avx_maskload_pd; // "86.avx.maskload.pd"
  20842. case 's': // 1 string to match.
  20843. return Intrinsic::x86_avx_maskload_ps; // "86.avx.maskload.ps"
  20844. }
  20845. break;
  20846. case 's': // 2 strings to match.
  20847. if (memcmp(NameR.data()+8, "qrt.p", 5))
  20848. break;
  20849. switch (NameR[13]) {
  20850. default: break;
  20851. case 'd': // 1 string to match.
  20852. if (memcmp(NameR.data()+14, ".256", 4))
  20853. break;
  20854. return Intrinsic::x86_avx_sqrt_pd_256; // "86.avx.sqrt.pd.256"
  20855. case 's': // 1 string to match.
  20856. if (memcmp(NameR.data()+14, ".256", 4))
  20857. break;
  20858. return Intrinsic::x86_avx_sqrt_ps_256; // "86.avx.sqrt.ps.256"
  20859. }
  20860. break;
  20861. case 'v': // 2 strings to match.
  20862. if (memcmp(NameR.data()+8, "testnzc.p", 9))
  20863. break;
  20864. switch (NameR[17]) {
  20865. default: break;
  20866. case 'd': // 1 string to match.
  20867. return Intrinsic::x86_avx_vtestnzc_pd; // "86.avx.vtestnzc.pd"
  20868. case 's': // 1 string to match.
  20869. return Intrinsic::x86_avx_vtestnzc_ps; // "86.avx.vtestnzc.ps"
  20870. }
  20871. break;
  20872. }
  20873. break;
  20874. case '2': // 10 strings to match.
  20875. if (NameR[7] != '.')
  20876. break;
  20877. switch (NameR[8]) {
  20878. default: break;
  20879. case 'g': // 4 strings to match.
  20880. if (memcmp(NameR.data()+9, "ather.", 6))
  20881. break;
  20882. switch (NameR[15]) {
  20883. default: break;
  20884. case 'd': // 2 strings to match.
  20885. if (NameR[16] != '.')
  20886. break;
  20887. switch (NameR[17]) {
  20888. default: break;
  20889. case 'd': // 1 string to match.
  20890. return Intrinsic::x86_avx2_gather_d_d; // "86.avx2.gather.d.d"
  20891. case 'q': // 1 string to match.
  20892. return Intrinsic::x86_avx2_gather_d_q; // "86.avx2.gather.d.q"
  20893. }
  20894. break;
  20895. case 'q': // 2 strings to match.
  20896. if (NameR[16] != '.')
  20897. break;
  20898. switch (NameR[17]) {
  20899. default: break;
  20900. case 'd': // 1 string to match.
  20901. return Intrinsic::x86_avx2_gather_q_d; // "86.avx2.gather.q.d"
  20902. case 'q': // 1 string to match.
  20903. return Intrinsic::x86_avx2_gather_q_q; // "86.avx2.gather.q.q"
  20904. }
  20905. break;
  20906. }
  20907. break;
  20908. case 'm': // 2 strings to match.
  20909. if (memcmp(NameR.data()+9, "askload.", 8))
  20910. break;
  20911. switch (NameR[17]) {
  20912. default: break;
  20913. case 'd': // 1 string to match.
  20914. return Intrinsic::x86_avx2_maskload_d; // "86.avx2.maskload.d"
  20915. case 'q': // 1 string to match.
  20916. return Intrinsic::x86_avx2_maskload_q; // "86.avx2.maskload.q"
  20917. }
  20918. break;
  20919. case 'p': // 3 strings to match.
  20920. switch (NameR[9]) {
  20921. default: break;
  20922. case 'm': // 1 string to match.
  20923. if (memcmp(NameR.data()+10, "ul.hr.sw", 8))
  20924. break;
  20925. return Intrinsic::x86_avx2_pmul_hr_sw; // "86.avx2.pmul.hr.sw"
  20926. case 's': // 2 strings to match.
  20927. switch (NameR[10]) {
  20928. default: break;
  20929. case 'l': // 1 string to match.
  20930. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  20931. break;
  20932. return Intrinsic::x86_avx2_psll_dq_bs; // "86.avx2.psll.dq.bs"
  20933. case 'r': // 1 string to match.
  20934. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  20935. break;
  20936. return Intrinsic::x86_avx2_psrl_dq_bs; // "86.avx2.psrl.dq.bs"
  20937. }
  20938. break;
  20939. }
  20940. break;
  20941. case 'v': // 1 string to match.
  20942. if (memcmp(NameR.data()+9, "perm2i128", 9))
  20943. break;
  20944. return Intrinsic::x86_avx2_vperm2i128; // "86.avx2.vperm2i128"
  20945. }
  20946. break;
  20947. }
  20948. break;
  20949. case 's': // 13 strings to match.
  20950. if (memcmp(NameR.data()+4, "se", 2))
  20951. break;
  20952. switch (NameR[6]) {
  20953. default: break;
  20954. case '.': // 2 strings to match.
  20955. switch (NameR[7]) {
  20956. default: break;
  20957. case 'c': // 1 string to match.
  20958. if (memcmp(NameR.data()+8, "vttss2si64", 10))
  20959. break;
  20960. return Intrinsic::x86_sse_cvttss2si64; // "86.sse.cvttss2si64"
  20961. case 'u': // 1 string to match.
  20962. if (memcmp(NameR.data()+8, "comineq.ss", 10))
  20963. break;
  20964. return Intrinsic::x86_sse_ucomineq_ss; // "86.sse.ucomineq.ss"
  20965. }
  20966. break;
  20967. case '2': // 10 strings to match.
  20968. if (NameR[7] != '.')
  20969. break;
  20970. switch (NameR[8]) {
  20971. default: break;
  20972. case 'c': // 3 strings to match.
  20973. switch (NameR[9]) {
  20974. default: break;
  20975. case 'o': // 1 string to match.
  20976. if (memcmp(NameR.data()+10, "mineq.sd", 8))
  20977. break;
  20978. return Intrinsic::x86_sse2_comineq_sd; // "86.sse2.comineq.sd"
  20979. case 'v': // 2 strings to match.
  20980. if (memcmp(NameR.data()+10, "ts", 2))
  20981. break;
  20982. switch (NameR[12]) {
  20983. default: break;
  20984. case 'd': // 1 string to match.
  20985. if (memcmp(NameR.data()+13, "2si64", 5))
  20986. break;
  20987. return Intrinsic::x86_sse2_cvtsd2si64; // "86.sse2.cvtsd2si64"
  20988. case 'i': // 1 string to match.
  20989. if (memcmp(NameR.data()+13, "642sd", 5))
  20990. break;
  20991. return Intrinsic::x86_sse2_cvtsi642sd; // "86.sse2.cvtsi642sd"
  20992. }
  20993. break;
  20994. }
  20995. break;
  20996. case 'p': // 2 strings to match.
  20997. if (NameR[9] != 's')
  20998. break;
  20999. switch (NameR[10]) {
  21000. default: break;
  21001. case 'l': // 1 string to match.
  21002. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  21003. break;
  21004. return Intrinsic::x86_sse2_psll_dq_bs; // "86.sse2.psll.dq.bs"
  21005. case 'r': // 1 string to match.
  21006. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  21007. break;
  21008. return Intrinsic::x86_sse2_psrl_dq_bs; // "86.sse2.psrl.dq.bs"
  21009. }
  21010. break;
  21011. case 'u': // 5 strings to match.
  21012. if (memcmp(NameR.data()+9, "comi", 4))
  21013. break;
  21014. switch (NameR[13]) {
  21015. default: break;
  21016. case 'e': // 1 string to match.
  21017. if (memcmp(NameR.data()+14, "q.sd", 4))
  21018. break;
  21019. return Intrinsic::x86_sse2_ucomieq_sd; // "86.sse2.ucomieq.sd"
  21020. case 'g': // 2 strings to match.
  21021. switch (NameR[14]) {
  21022. default: break;
  21023. case 'e': // 1 string to match.
  21024. if (memcmp(NameR.data()+15, ".sd", 3))
  21025. break;
  21026. return Intrinsic::x86_sse2_ucomige_sd; // "86.sse2.ucomige.sd"
  21027. case 't': // 1 string to match.
  21028. if (memcmp(NameR.data()+15, ".sd", 3))
  21029. break;
  21030. return Intrinsic::x86_sse2_ucomigt_sd; // "86.sse2.ucomigt.sd"
  21031. }
  21032. break;
  21033. case 'l': // 2 strings to match.
  21034. switch (NameR[14]) {
  21035. default: break;
  21036. case 'e': // 1 string to match.
  21037. if (memcmp(NameR.data()+15, ".sd", 3))
  21038. break;
  21039. return Intrinsic::x86_sse2_ucomile_sd; // "86.sse2.ucomile.sd"
  21040. case 't': // 1 string to match.
  21041. if (memcmp(NameR.data()+15, ".sd", 3))
  21042. break;
  21043. return Intrinsic::x86_sse2_ucomilt_sd; // "86.sse2.ucomilt.sd"
  21044. }
  21045. break;
  21046. }
  21047. break;
  21048. }
  21049. break;
  21050. case '4': // 1 string to match.
  21051. if (memcmp(NameR.data()+7, "1.extractps", 11))
  21052. break;
  21053. return Intrinsic::x86_sse41_extractps; // "86.sse41.extractps"
  21054. }
  21055. break;
  21056. }
  21057. break;
  21058. case 19: // 41 strings to match.
  21059. if (memcmp(NameR.data()+0, "86.", 3))
  21060. break;
  21061. switch (NameR[3]) {
  21062. default: break;
  21063. case 'a': // 25 strings to match.
  21064. switch (NameR[4]) {
  21065. default: break;
  21066. case 'e': // 2 strings to match.
  21067. if (memcmp(NameR.data()+5, "sni.aes", 7))
  21068. break;
  21069. switch (NameR[12]) {
  21070. default: break;
  21071. case 'd': // 1 string to match.
  21072. if (memcmp(NameR.data()+13, "eclast", 6))
  21073. break;
  21074. return Intrinsic::x86_aesni_aesdeclast; // "86.aesni.aesdeclast"
  21075. case 'e': // 1 string to match.
  21076. if (memcmp(NameR.data()+13, "nclast", 6))
  21077. break;
  21078. return Intrinsic::x86_aesni_aesenclast; // "86.aesni.aesenclast"
  21079. }
  21080. break;
  21081. case 'v': // 23 strings to match.
  21082. if (NameR[5] != 'x')
  21083. break;
  21084. switch (NameR[6]) {
  21085. default: break;
  21086. case '.': // 8 strings to match.
  21087. switch (NameR[7]) {
  21088. default: break;
  21089. case 'b': // 2 strings to match.
  21090. if (memcmp(NameR.data()+8, "lend.p", 6))
  21091. break;
  21092. switch (NameR[14]) {
  21093. default: break;
  21094. case 'd': // 1 string to match.
  21095. if (memcmp(NameR.data()+15, ".256", 4))
  21096. break;
  21097. return Intrinsic::x86_avx_blend_pd_256; // "86.avx.blend.pd.256"
  21098. case 's': // 1 string to match.
  21099. if (memcmp(NameR.data()+15, ".256", 4))
  21100. break;
  21101. return Intrinsic::x86_avx_blend_ps_256; // "86.avx.blend.ps.256"
  21102. }
  21103. break;
  21104. case 'm': // 2 strings to match.
  21105. if (memcmp(NameR.data()+8, "askstore.p", 10))
  21106. break;
  21107. switch (NameR[18]) {
  21108. default: break;
  21109. case 'd': // 1 string to match.
  21110. return Intrinsic::x86_avx_maskstore_pd; // "86.avx.maskstore.pd"
  21111. case 's': // 1 string to match.
  21112. return Intrinsic::x86_avx_maskstore_ps; // "86.avx.maskstore.ps"
  21113. }
  21114. break;
  21115. case 'p': // 1 string to match.
  21116. if (memcmp(NameR.data()+8, "testnzc.256", 11))
  21117. break;
  21118. return Intrinsic::x86_avx_ptestnzc_256; // "86.avx.ptestnzc.256"
  21119. case 'r': // 3 strings to match.
  21120. switch (NameR[8]) {
  21121. default: break;
  21122. case 'o': // 2 strings to match.
  21123. if (memcmp(NameR.data()+9, "und.p", 5))
  21124. break;
  21125. switch (NameR[14]) {
  21126. default: break;
  21127. case 'd': // 1 string to match.
  21128. if (memcmp(NameR.data()+15, ".256", 4))
  21129. break;
  21130. return Intrinsic::x86_avx_round_pd_256; // "86.avx.round.pd.256"
  21131. case 's': // 1 string to match.
  21132. if (memcmp(NameR.data()+15, ".256", 4))
  21133. break;
  21134. return Intrinsic::x86_avx_round_ps_256; // "86.avx.round.ps.256"
  21135. }
  21136. break;
  21137. case 's': // 1 string to match.
  21138. if (memcmp(NameR.data()+9, "qrt.ps.256", 10))
  21139. break;
  21140. return Intrinsic::x86_avx_rsqrt_ps_256; // "86.avx.rsqrt.ps.256"
  21141. }
  21142. break;
  21143. }
  21144. break;
  21145. case '2': // 15 strings to match.
  21146. if (NameR[7] != '.')
  21147. break;
  21148. switch (NameR[8]) {
  21149. default: break;
  21150. case 'g': // 4 strings to match.
  21151. if (memcmp(NameR.data()+9, "ather.", 6))
  21152. break;
  21153. switch (NameR[15]) {
  21154. default: break;
  21155. case 'd': // 2 strings to match.
  21156. if (memcmp(NameR.data()+16, ".p", 2))
  21157. break;
  21158. switch (NameR[18]) {
  21159. default: break;
  21160. case 'd': // 1 string to match.
  21161. return Intrinsic::x86_avx2_gather_d_pd; // "86.avx2.gather.d.pd"
  21162. case 's': // 1 string to match.
  21163. return Intrinsic::x86_avx2_gather_d_ps; // "86.avx2.gather.d.ps"
  21164. }
  21165. break;
  21166. case 'q': // 2 strings to match.
  21167. if (memcmp(NameR.data()+16, ".p", 2))
  21168. break;
  21169. switch (NameR[18]) {
  21170. default: break;
  21171. case 'd': // 1 string to match.
  21172. return Intrinsic::x86_avx2_gather_q_pd; // "86.avx2.gather.q.pd"
  21173. case 's': // 1 string to match.
  21174. return Intrinsic::x86_avx2_gather_q_ps; // "86.avx2.gather.q.ps"
  21175. }
  21176. break;
  21177. }
  21178. break;
  21179. case 'm': // 2 strings to match.
  21180. if (memcmp(NameR.data()+9, "askstore.", 9))
  21181. break;
  21182. switch (NameR[18]) {
  21183. default: break;
  21184. case 'd': // 1 string to match.
  21185. return Intrinsic::x86_avx2_maskstore_d; // "86.avx2.maskstore.d"
  21186. case 'q': // 1 string to match.
  21187. return Intrinsic::x86_avx2_maskstore_q; // "86.avx2.maskstore.q"
  21188. }
  21189. break;
  21190. case 'p': // 8 strings to match.
  21191. switch (NameR[9]) {
  21192. default: break;
  21193. case 'b': // 2 strings to match.
  21194. if (memcmp(NameR.data()+10, "lendd.", 6))
  21195. break;
  21196. switch (NameR[16]) {
  21197. default: break;
  21198. case '1': // 1 string to match.
  21199. if (memcmp(NameR.data()+17, "28", 2))
  21200. break;
  21201. return Intrinsic::x86_avx2_pblendd_128; // "86.avx2.pblendd.128"
  21202. case '2': // 1 string to match.
  21203. if (memcmp(NameR.data()+17, "56", 2))
  21204. break;
  21205. return Intrinsic::x86_avx2_pblendd_256; // "86.avx2.pblendd.256"
  21206. }
  21207. break;
  21208. case 'm': // 1 string to match.
  21209. if (memcmp(NameR.data()+10, "add.ub.sw", 9))
  21210. break;
  21211. return Intrinsic::x86_avx2_pmadd_ub_sw; // "86.avx2.pmadd.ub.sw"
  21212. case 's': // 5 strings to match.
  21213. switch (NameR[10]) {
  21214. default: break;
  21215. case 'l': // 2 strings to match.
  21216. if (memcmp(NameR.data()+11, "lv.", 3))
  21217. break;
  21218. switch (NameR[14]) {
  21219. default: break;
  21220. case 'd': // 1 string to match.
  21221. if (memcmp(NameR.data()+15, ".256", 4))
  21222. break;
  21223. return Intrinsic::x86_avx2_psllv_d_256; // "86.avx2.psllv.d.256"
  21224. case 'q': // 1 string to match.
  21225. if (memcmp(NameR.data()+15, ".256", 4))
  21226. break;
  21227. return Intrinsic::x86_avx2_psllv_q_256; // "86.avx2.psllv.q.256"
  21228. }
  21229. break;
  21230. case 'r': // 3 strings to match.
  21231. switch (NameR[11]) {
  21232. default: break;
  21233. case 'a': // 1 string to match.
  21234. if (memcmp(NameR.data()+12, "v.d.256", 7))
  21235. break;
  21236. return Intrinsic::x86_avx2_psrav_d_256; // "86.avx2.psrav.d.256"
  21237. case 'l': // 2 strings to match.
  21238. if (memcmp(NameR.data()+12, "v.", 2))
  21239. break;
  21240. switch (NameR[14]) {
  21241. default: break;
  21242. case 'd': // 1 string to match.
  21243. if (memcmp(NameR.data()+15, ".256", 4))
  21244. break;
  21245. return Intrinsic::x86_avx2_psrlv_d_256; // "86.avx2.psrlv.d.256"
  21246. case 'q': // 1 string to match.
  21247. if (memcmp(NameR.data()+15, ".256", 4))
  21248. break;
  21249. return Intrinsic::x86_avx2_psrlv_q_256; // "86.avx2.psrlv.q.256"
  21250. }
  21251. break;
  21252. }
  21253. break;
  21254. }
  21255. break;
  21256. }
  21257. break;
  21258. case 'v': // 1 string to match.
  21259. if (memcmp(NameR.data()+9, "inserti128", 10))
  21260. break;
  21261. return Intrinsic::x86_avx2_vinserti128; // "86.avx2.vinserti128"
  21262. }
  21263. break;
  21264. }
  21265. break;
  21266. }
  21267. break;
  21268. case 'f': // 4 strings to match.
  21269. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  21270. break;
  21271. switch (NameR[10]) {
  21272. default: break;
  21273. case 'a': // 2 strings to match.
  21274. if (memcmp(NameR.data()+11, "ddsub.p", 7))
  21275. break;
  21276. switch (NameR[18]) {
  21277. default: break;
  21278. case 'd': // 1 string to match.
  21279. return Intrinsic::x86_fma_vfmaddsub_pd; // "86.fma.vfmaddsub.pd"
  21280. case 's': // 1 string to match.
  21281. return Intrinsic::x86_fma_vfmaddsub_ps; // "86.fma.vfmaddsub.ps"
  21282. }
  21283. break;
  21284. case 's': // 2 strings to match.
  21285. if (memcmp(NameR.data()+11, "ubadd.p", 7))
  21286. break;
  21287. switch (NameR[18]) {
  21288. default: break;
  21289. case 'd': // 1 string to match.
  21290. return Intrinsic::x86_fma_vfmsubadd_pd; // "86.fma.vfmsubadd.pd"
  21291. case 's': // 1 string to match.
  21292. return Intrinsic::x86_fma_vfmsubadd_ps; // "86.fma.vfmsubadd.ps"
  21293. }
  21294. break;
  21295. }
  21296. break;
  21297. case 's': // 10 strings to match.
  21298. if (NameR[4] != 's')
  21299. break;
  21300. switch (NameR[5]) {
  21301. default: break;
  21302. case 'e': // 6 strings to match.
  21303. switch (NameR[6]) {
  21304. default: break;
  21305. case '2': // 3 strings to match.
  21306. if (NameR[7] != '.')
  21307. break;
  21308. switch (NameR[8]) {
  21309. default: break;
  21310. case 'c': // 1 string to match.
  21311. if (memcmp(NameR.data()+9, "vttsd2si64", 10))
  21312. break;
  21313. return Intrinsic::x86_sse2_cvttsd2si64; // "86.sse2.cvttsd2si64"
  21314. case 'm': // 1 string to match.
  21315. if (memcmp(NameR.data()+9, "askmov.dqu", 10))
  21316. break;
  21317. return Intrinsic::x86_sse2_maskmov_dqu; // "86.sse2.maskmov.dqu"
  21318. case 'u': // 1 string to match.
  21319. if (memcmp(NameR.data()+9, "comineq.sd", 10))
  21320. break;
  21321. return Intrinsic::x86_sse2_ucomineq_sd; // "86.sse2.ucomineq.sd"
  21322. }
  21323. break;
  21324. case '4': // 3 strings to match.
  21325. switch (NameR[7]) {
  21326. default: break;
  21327. case '1': // 1 string to match.
  21328. if (memcmp(NameR.data()+8, ".phminposuw", 11))
  21329. break;
  21330. return Intrinsic::x86_sse41_phminposuw; // "86.sse41.phminposuw"
  21331. case '2': // 2 strings to match.
  21332. if (memcmp(NameR.data()+8, ".crc32.", 7))
  21333. break;
  21334. switch (NameR[15]) {
  21335. default: break;
  21336. case '3': // 1 string to match.
  21337. if (memcmp(NameR.data()+16, "2.8", 3))
  21338. break;
  21339. return Intrinsic::x86_sse42_crc32_32_8; // "86.sse42.crc32.32.8"
  21340. case '6': // 1 string to match.
  21341. if (memcmp(NameR.data()+16, "4.8", 3))
  21342. break;
  21343. return Intrinsic::x86_sse42_crc32_64_8; // "86.sse42.crc32.64.8"
  21344. }
  21345. break;
  21346. }
  21347. break;
  21348. }
  21349. break;
  21350. case 's': // 4 strings to match.
  21351. if (memcmp(NameR.data()+6, "e3.p", 4))
  21352. break;
  21353. switch (NameR[10]) {
  21354. default: break;
  21355. case 'a': // 3 strings to match.
  21356. if (memcmp(NameR.data()+11, "bs.", 3))
  21357. break;
  21358. switch (NameR[14]) {
  21359. default: break;
  21360. case 'b': // 1 string to match.
  21361. if (memcmp(NameR.data()+15, ".128", 4))
  21362. break;
  21363. return Intrinsic::x86_ssse3_pabs_b_128; // "86.ssse3.pabs.b.128"
  21364. case 'd': // 1 string to match.
  21365. if (memcmp(NameR.data()+15, ".128", 4))
  21366. break;
  21367. return Intrinsic::x86_ssse3_pabs_d_128; // "86.ssse3.pabs.d.128"
  21368. case 'w': // 1 string to match.
  21369. if (memcmp(NameR.data()+15, ".128", 4))
  21370. break;
  21371. return Intrinsic::x86_ssse3_pabs_w_128; // "86.ssse3.pabs.w.128"
  21372. }
  21373. break;
  21374. case 'm': // 1 string to match.
  21375. if (memcmp(NameR.data()+11, "ul.hr.sw", 8))
  21376. break;
  21377. return Intrinsic::x86_ssse3_pmul_hr_sw; // "86.ssse3.pmul.hr.sw"
  21378. }
  21379. break;
  21380. }
  21381. break;
  21382. case 'x': // 2 strings to match.
  21383. if (memcmp(NameR.data()+4, "op.vfrcz.p", 10))
  21384. break;
  21385. switch (NameR[14]) {
  21386. default: break;
  21387. case 'd': // 1 string to match.
  21388. if (memcmp(NameR.data()+15, ".256", 4))
  21389. break;
  21390. return Intrinsic::x86_xop_vfrcz_pd_256; // "86.xop.vfrcz.pd.256"
  21391. case 's': // 1 string to match.
  21392. if (memcmp(NameR.data()+15, ".256", 4))
  21393. break;
  21394. return Intrinsic::x86_xop_vfrcz_ps_256; // "86.xop.vfrcz.ps.256"
  21395. }
  21396. break;
  21397. }
  21398. break;
  21399. case 20: // 41 strings to match.
  21400. if (memcmp(NameR.data()+0, "86.", 3))
  21401. break;
  21402. switch (NameR[3]) {
  21403. default: break;
  21404. case 'a': // 21 strings to match.
  21405. if (memcmp(NameR.data()+4, "vx", 2))
  21406. break;
  21407. switch (NameR[6]) {
  21408. default: break;
  21409. case '.': // 20 strings to match.
  21410. switch (NameR[7]) {
  21411. default: break;
  21412. case 'a': // 2 strings to match.
  21413. if (memcmp(NameR.data()+8, "ddsub.p", 7))
  21414. break;
  21415. switch (NameR[15]) {
  21416. default: break;
  21417. case 'd': // 1 string to match.
  21418. if (memcmp(NameR.data()+16, ".256", 4))
  21419. break;
  21420. return Intrinsic::x86_avx_addsub_pd_256; // "86.avx.addsub.pd.256"
  21421. case 's': // 1 string to match.
  21422. if (memcmp(NameR.data()+16, ".256", 4))
  21423. break;
  21424. return Intrinsic::x86_avx_addsub_ps_256; // "86.avx.addsub.ps.256"
  21425. }
  21426. break;
  21427. case 'b': // 2 strings to match.
  21428. if (memcmp(NameR.data()+8, "lendv.p", 7))
  21429. break;
  21430. switch (NameR[15]) {
  21431. default: break;
  21432. case 'd': // 1 string to match.
  21433. if (memcmp(NameR.data()+16, ".256", 4))
  21434. break;
  21435. return Intrinsic::x86_avx_blendv_pd_256; // "86.avx.blendv.pd.256"
  21436. case 's': // 1 string to match.
  21437. if (memcmp(NameR.data()+16, ".256", 4))
  21438. break;
  21439. return Intrinsic::x86_avx_blendv_ps_256; // "86.avx.blendv.ps.256"
  21440. }
  21441. break;
  21442. case 'c': // 4 strings to match.
  21443. if (memcmp(NameR.data()+8, "vt", 2))
  21444. break;
  21445. switch (NameR[10]) {
  21446. default: break;
  21447. case '.': // 2 strings to match.
  21448. if (NameR[11] != 'p')
  21449. break;
  21450. switch (NameR[12]) {
  21451. default: break;
  21452. case 'd': // 1 string to match.
  21453. if (memcmp(NameR.data()+13, "2dq.256", 7))
  21454. break;
  21455. return Intrinsic::x86_avx_cvt_pd2dq_256; // "86.avx.cvt.pd2dq.256"
  21456. case 's': // 1 string to match.
  21457. if (memcmp(NameR.data()+13, "2dq.256", 7))
  21458. break;
  21459. return Intrinsic::x86_avx_cvt_ps2dq_256; // "86.avx.cvt.ps2dq.256"
  21460. }
  21461. break;
  21462. case 'd': // 2 strings to match.
  21463. if (memcmp(NameR.data()+11, "q2.p", 4))
  21464. break;
  21465. switch (NameR[15]) {
  21466. default: break;
  21467. case 'd': // 1 string to match.
  21468. if (memcmp(NameR.data()+16, ".256", 4))
  21469. break;
  21470. return Intrinsic::x86_avx_cvtdq2_pd_256; // "86.avx.cvtdq2.pd.256"
  21471. case 's': // 1 string to match.
  21472. if (memcmp(NameR.data()+16, ".256", 4))
  21473. break;
  21474. return Intrinsic::x86_avx_cvtdq2_ps_256; // "86.avx.cvtdq2.ps.256"
  21475. }
  21476. break;
  21477. }
  21478. break;
  21479. case 'm': // 2 strings to match.
  21480. if (memcmp(NameR.data()+8, "ovmsk.p", 7))
  21481. break;
  21482. switch (NameR[15]) {
  21483. default: break;
  21484. case 'd': // 1 string to match.
  21485. if (memcmp(NameR.data()+16, ".256", 4))
  21486. break;
  21487. return Intrinsic::x86_avx_movmsk_pd_256; // "86.avx.movmsk.pd.256"
  21488. case 's': // 1 string to match.
  21489. if (memcmp(NameR.data()+16, ".256", 4))
  21490. break;
  21491. return Intrinsic::x86_avx_movmsk_ps_256; // "86.avx.movmsk.ps.256"
  21492. }
  21493. break;
  21494. case 's': // 3 strings to match.
  21495. if (memcmp(NameR.data()+8, "toreu.", 6))
  21496. break;
  21497. switch (NameR[14]) {
  21498. default: break;
  21499. case 'd': // 1 string to match.
  21500. if (memcmp(NameR.data()+15, "q.256", 5))
  21501. break;
  21502. return Intrinsic::x86_avx_storeu_dq_256; // "86.avx.storeu.dq.256"
  21503. case 'p': // 2 strings to match.
  21504. switch (NameR[15]) {
  21505. default: break;
  21506. case 'd': // 1 string to match.
  21507. if (memcmp(NameR.data()+16, ".256", 4))
  21508. break;
  21509. return Intrinsic::x86_avx_storeu_pd_256; // "86.avx.storeu.pd.256"
  21510. case 's': // 1 string to match.
  21511. if (memcmp(NameR.data()+16, ".256", 4))
  21512. break;
  21513. return Intrinsic::x86_avx_storeu_ps_256; // "86.avx.storeu.ps.256"
  21514. }
  21515. break;
  21516. }
  21517. break;
  21518. case 'v': // 7 strings to match.
  21519. switch (NameR[8]) {
  21520. default: break;
  21521. case 'b': // 1 string to match.
  21522. if (memcmp(NameR.data()+9, "roadcast.ss", 11))
  21523. break;
  21524. return Intrinsic::x86_avx_vbroadcast_ss; // "86.avx.vbroadcast.ss"
  21525. case 'p': // 2 strings to match.
  21526. if (memcmp(NameR.data()+9, "ermilvar.p", 10))
  21527. break;
  21528. switch (NameR[19]) {
  21529. default: break;
  21530. case 'd': // 1 string to match.
  21531. return Intrinsic::x86_avx_vpermilvar_pd; // "86.avx.vpermilvar.pd"
  21532. case 's': // 1 string to match.
  21533. return Intrinsic::x86_avx_vpermilvar_ps; // "86.avx.vpermilvar.ps"
  21534. }
  21535. break;
  21536. case 't': // 4 strings to match.
  21537. if (memcmp(NameR.data()+9, "est", 3))
  21538. break;
  21539. switch (NameR[12]) {
  21540. default: break;
  21541. case 'c': // 2 strings to match.
  21542. if (memcmp(NameR.data()+13, ".p", 2))
  21543. break;
  21544. switch (NameR[15]) {
  21545. default: break;
  21546. case 'd': // 1 string to match.
  21547. if (memcmp(NameR.data()+16, ".256", 4))
  21548. break;
  21549. return Intrinsic::x86_avx_vtestc_pd_256; // "86.avx.vtestc.pd.256"
  21550. case 's': // 1 string to match.
  21551. if (memcmp(NameR.data()+16, ".256", 4))
  21552. break;
  21553. return Intrinsic::x86_avx_vtestc_ps_256; // "86.avx.vtestc.ps.256"
  21554. }
  21555. break;
  21556. case 'z': // 2 strings to match.
  21557. if (memcmp(NameR.data()+13, ".p", 2))
  21558. break;
  21559. switch (NameR[15]) {
  21560. default: break;
  21561. case 'd': // 1 string to match.
  21562. if (memcmp(NameR.data()+16, ".256", 4))
  21563. break;
  21564. return Intrinsic::x86_avx_vtestz_pd_256; // "86.avx.vtestz.pd.256"
  21565. case 's': // 1 string to match.
  21566. if (memcmp(NameR.data()+16, ".256", 4))
  21567. break;
  21568. return Intrinsic::x86_avx_vtestz_ps_256; // "86.avx.vtestz.ps.256"
  21569. }
  21570. break;
  21571. }
  21572. break;
  21573. }
  21574. break;
  21575. }
  21576. break;
  21577. case '2': // 1 string to match.
  21578. if (memcmp(NameR.data()+7, ".vextracti128", 13))
  21579. break;
  21580. return Intrinsic::x86_avx2_vextracti128; // "86.avx2.vextracti128"
  21581. }
  21582. break;
  21583. case 'f': // 4 strings to match.
  21584. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  21585. break;
  21586. switch (NameR[10]) {
  21587. default: break;
  21588. case 'a': // 2 strings to match.
  21589. if (memcmp(NameR.data()+11, "dd.p", 4))
  21590. break;
  21591. switch (NameR[15]) {
  21592. default: break;
  21593. case 'd': // 1 string to match.
  21594. if (memcmp(NameR.data()+16, ".256", 4))
  21595. break;
  21596. return Intrinsic::x86_fma_vfmadd_pd_256; // "86.fma.vfmadd.pd.256"
  21597. case 's': // 1 string to match.
  21598. if (memcmp(NameR.data()+16, ".256", 4))
  21599. break;
  21600. return Intrinsic::x86_fma_vfmadd_ps_256; // "86.fma.vfmadd.ps.256"
  21601. }
  21602. break;
  21603. case 's': // 2 strings to match.
  21604. if (memcmp(NameR.data()+11, "ub.p", 4))
  21605. break;
  21606. switch (NameR[15]) {
  21607. default: break;
  21608. case 'd': // 1 string to match.
  21609. if (memcmp(NameR.data()+16, ".256", 4))
  21610. break;
  21611. return Intrinsic::x86_fma_vfmsub_pd_256; // "86.fma.vfmsub.pd.256"
  21612. case 's': // 1 string to match.
  21613. if (memcmp(NameR.data()+16, ".256", 4))
  21614. break;
  21615. return Intrinsic::x86_fma_vfmsub_ps_256; // "86.fma.vfmsub.ps.256"
  21616. }
  21617. break;
  21618. }
  21619. break;
  21620. case 's': // 16 strings to match.
  21621. if (NameR[4] != 's')
  21622. break;
  21623. switch (NameR[5]) {
  21624. default: break;
  21625. case 'e': // 7 strings to match.
  21626. switch (NameR[6]) {
  21627. default: break;
  21628. case '2': // 4 strings to match.
  21629. if (memcmp(NameR.data()+7, ".p", 2))
  21630. break;
  21631. switch (NameR[9]) {
  21632. default: break;
  21633. case 'a': // 3 strings to match.
  21634. if (memcmp(NameR.data()+10, "ck", 2))
  21635. break;
  21636. switch (NameR[12]) {
  21637. default: break;
  21638. case 's': // 2 strings to match.
  21639. if (NameR[13] != 's')
  21640. break;
  21641. switch (NameR[14]) {
  21642. default: break;
  21643. case 'd': // 1 string to match.
  21644. if (memcmp(NameR.data()+15, "w.128", 5))
  21645. break;
  21646. return Intrinsic::x86_sse2_packssdw_128; // "86.sse2.packssdw.128"
  21647. case 'w': // 1 string to match.
  21648. if (memcmp(NameR.data()+15, "b.128", 5))
  21649. break;
  21650. return Intrinsic::x86_sse2_packsswb_128; // "86.sse2.packsswb.128"
  21651. }
  21652. break;
  21653. case 'u': // 1 string to match.
  21654. if (memcmp(NameR.data()+13, "swb.128", 7))
  21655. break;
  21656. return Intrinsic::x86_sse2_packuswb_128; // "86.sse2.packuswb.128"
  21657. }
  21658. break;
  21659. case 'm': // 1 string to match.
  21660. if (memcmp(NameR.data()+10, "ovmskb.128", 10))
  21661. break;
  21662. return Intrinsic::x86_sse2_pmovmskb_128; // "86.sse2.pmovmskb.128"
  21663. }
  21664. break;
  21665. case '4': // 3 strings to match.
  21666. if (memcmp(NameR.data()+7, "2.crc32.", 8))
  21667. break;
  21668. switch (NameR[15]) {
  21669. default: break;
  21670. case '3': // 2 strings to match.
  21671. if (memcmp(NameR.data()+16, "2.", 2))
  21672. break;
  21673. switch (NameR[18]) {
  21674. default: break;
  21675. case '1': // 1 string to match.
  21676. if (NameR[19] != '6')
  21677. break;
  21678. return Intrinsic::x86_sse42_crc32_32_16; // "86.sse42.crc32.32.16"
  21679. case '3': // 1 string to match.
  21680. if (NameR[19] != '2')
  21681. break;
  21682. return Intrinsic::x86_sse42_crc32_32_32; // "86.sse42.crc32.32.32"
  21683. }
  21684. break;
  21685. case '6': // 1 string to match.
  21686. if (memcmp(NameR.data()+16, "4.64", 4))
  21687. break;
  21688. return Intrinsic::x86_sse42_crc32_64_64; // "86.sse42.crc32.64.64"
  21689. }
  21690. break;
  21691. }
  21692. break;
  21693. case 's': // 9 strings to match.
  21694. if (memcmp(NameR.data()+6, "e3.p", 4))
  21695. break;
  21696. switch (NameR[10]) {
  21697. default: break;
  21698. case 'h': // 4 strings to match.
  21699. switch (NameR[11]) {
  21700. default: break;
  21701. case 'a': // 2 strings to match.
  21702. if (memcmp(NameR.data()+12, "dd.", 3))
  21703. break;
  21704. switch (NameR[15]) {
  21705. default: break;
  21706. case 'd': // 1 string to match.
  21707. if (memcmp(NameR.data()+16, ".128", 4))
  21708. break;
  21709. return Intrinsic::x86_ssse3_phadd_d_128; // "86.ssse3.phadd.d.128"
  21710. case 'w': // 1 string to match.
  21711. if (memcmp(NameR.data()+16, ".128", 4))
  21712. break;
  21713. return Intrinsic::x86_ssse3_phadd_w_128; // "86.ssse3.phadd.w.128"
  21714. }
  21715. break;
  21716. case 's': // 2 strings to match.
  21717. if (memcmp(NameR.data()+12, "ub.", 3))
  21718. break;
  21719. switch (NameR[15]) {
  21720. default: break;
  21721. case 'd': // 1 string to match.
  21722. if (memcmp(NameR.data()+16, ".128", 4))
  21723. break;
  21724. return Intrinsic::x86_ssse3_phsub_d_128; // "86.ssse3.phsub.d.128"
  21725. case 'w': // 1 string to match.
  21726. if (memcmp(NameR.data()+16, ".128", 4))
  21727. break;
  21728. return Intrinsic::x86_ssse3_phsub_w_128; // "86.ssse3.phsub.w.128"
  21729. }
  21730. break;
  21731. }
  21732. break;
  21733. case 'm': // 1 string to match.
  21734. if (memcmp(NameR.data()+11, "add.ub.sw", 9))
  21735. break;
  21736. return Intrinsic::x86_ssse3_pmadd_ub_sw; // "86.ssse3.pmadd.ub.sw"
  21737. case 's': // 4 strings to match.
  21738. switch (NameR[11]) {
  21739. default: break;
  21740. case 'h': // 1 string to match.
  21741. if (memcmp(NameR.data()+12, "uf.b.128", 8))
  21742. break;
  21743. return Intrinsic::x86_ssse3_pshuf_b_128; // "86.ssse3.pshuf.b.128"
  21744. case 'i': // 3 strings to match.
  21745. if (memcmp(NameR.data()+12, "gn.", 3))
  21746. break;
  21747. switch (NameR[15]) {
  21748. default: break;
  21749. case 'b': // 1 string to match.
  21750. if (memcmp(NameR.data()+16, ".128", 4))
  21751. break;
  21752. return Intrinsic::x86_ssse3_psign_b_128; // "86.ssse3.psign.b.128"
  21753. case 'd': // 1 string to match.
  21754. if (memcmp(NameR.data()+16, ".128", 4))
  21755. break;
  21756. return Intrinsic::x86_ssse3_psign_d_128; // "86.ssse3.psign.d.128"
  21757. case 'w': // 1 string to match.
  21758. if (memcmp(NameR.data()+16, ".128", 4))
  21759. break;
  21760. return Intrinsic::x86_ssse3_psign_w_128; // "86.ssse3.psign.w.128"
  21761. }
  21762. break;
  21763. }
  21764. break;
  21765. }
  21766. break;
  21767. }
  21768. break;
  21769. }
  21770. break;
  21771. case 21: // 16 strings to match.
  21772. if (memcmp(NameR.data()+0, "86.", 3))
  21773. break;
  21774. switch (NameR[3]) {
  21775. default: break;
  21776. case 'a': // 4 strings to match.
  21777. if (memcmp(NameR.data()+4, "vx.cvt", 6))
  21778. break;
  21779. switch (NameR[10]) {
  21780. default: break;
  21781. case '.': // 2 strings to match.
  21782. if (NameR[11] != 'p')
  21783. break;
  21784. switch (NameR[12]) {
  21785. default: break;
  21786. case 'd': // 1 string to match.
  21787. if (memcmp(NameR.data()+13, "2.ps.256", 8))
  21788. break;
  21789. return Intrinsic::x86_avx_cvt_pd2_ps_256; // "86.avx.cvt.pd2.ps.256"
  21790. case 's': // 1 string to match.
  21791. if (memcmp(NameR.data()+13, "2.pd.256", 8))
  21792. break;
  21793. return Intrinsic::x86_avx_cvt_ps2_pd_256; // "86.avx.cvt.ps2.pd.256"
  21794. }
  21795. break;
  21796. case 't': // 2 strings to match.
  21797. if (memcmp(NameR.data()+11, ".p", 2))
  21798. break;
  21799. switch (NameR[13]) {
  21800. default: break;
  21801. case 'd': // 1 string to match.
  21802. if (memcmp(NameR.data()+14, "2dq.256", 7))
  21803. break;
  21804. return Intrinsic::x86_avx_cvtt_pd2dq_256; // "86.avx.cvtt.pd2dq.256"
  21805. case 's': // 1 string to match.
  21806. if (memcmp(NameR.data()+14, "2dq.256", 7))
  21807. break;
  21808. return Intrinsic::x86_avx_cvtt_ps2dq_256; // "86.avx.cvtt.ps2dq.256"
  21809. }
  21810. break;
  21811. }
  21812. break;
  21813. case 'f': // 4 strings to match.
  21814. if (memcmp(NameR.data()+4, "ma.vfnm", 7))
  21815. break;
  21816. switch (NameR[11]) {
  21817. default: break;
  21818. case 'a': // 2 strings to match.
  21819. if (memcmp(NameR.data()+12, "dd.p", 4))
  21820. break;
  21821. switch (NameR[16]) {
  21822. default: break;
  21823. case 'd': // 1 string to match.
  21824. if (memcmp(NameR.data()+17, ".256", 4))
  21825. break;
  21826. return Intrinsic::x86_fma_vfnmadd_pd_256; // "86.fma.vfnmadd.pd.256"
  21827. case 's': // 1 string to match.
  21828. if (memcmp(NameR.data()+17, ".256", 4))
  21829. break;
  21830. return Intrinsic::x86_fma_vfnmadd_ps_256; // "86.fma.vfnmadd.ps.256"
  21831. }
  21832. break;
  21833. case 's': // 2 strings to match.
  21834. if (memcmp(NameR.data()+12, "ub.p", 4))
  21835. break;
  21836. switch (NameR[16]) {
  21837. default: break;
  21838. case 'd': // 1 string to match.
  21839. if (memcmp(NameR.data()+17, ".256", 4))
  21840. break;
  21841. return Intrinsic::x86_fma_vfnmsub_pd_256; // "86.fma.vfnmsub.pd.256"
  21842. case 's': // 1 string to match.
  21843. if (memcmp(NameR.data()+17, ".256", 4))
  21844. break;
  21845. return Intrinsic::x86_fma_vfnmsub_ps_256; // "86.fma.vfnmsub.ps.256"
  21846. }
  21847. break;
  21848. }
  21849. break;
  21850. case 's': // 6 strings to match.
  21851. if (NameR[4] != 's')
  21852. break;
  21853. switch (NameR[5]) {
  21854. default: break;
  21855. case 'e': // 4 strings to match.
  21856. if (memcmp(NameR.data()+6, "42.pcmp", 7))
  21857. break;
  21858. switch (NameR[13]) {
  21859. default: break;
  21860. case 'e': // 2 strings to match.
  21861. if (memcmp(NameR.data()+14, "str", 3))
  21862. break;
  21863. switch (NameR[17]) {
  21864. default: break;
  21865. case 'i': // 1 string to match.
  21866. if (memcmp(NameR.data()+18, "128", 3))
  21867. break;
  21868. return Intrinsic::x86_sse42_pcmpestri128; // "86.sse42.pcmpestri128"
  21869. case 'm': // 1 string to match.
  21870. if (memcmp(NameR.data()+18, "128", 3))
  21871. break;
  21872. return Intrinsic::x86_sse42_pcmpestrm128; // "86.sse42.pcmpestrm128"
  21873. }
  21874. break;
  21875. case 'i': // 2 strings to match.
  21876. if (memcmp(NameR.data()+14, "str", 3))
  21877. break;
  21878. switch (NameR[17]) {
  21879. default: break;
  21880. case 'i': // 1 string to match.
  21881. if (memcmp(NameR.data()+18, "128", 3))
  21882. break;
  21883. return Intrinsic::x86_sse42_pcmpistri128; // "86.sse42.pcmpistri128"
  21884. case 'm': // 1 string to match.
  21885. if (memcmp(NameR.data()+18, "128", 3))
  21886. break;
  21887. return Intrinsic::x86_sse42_pcmpistrm128; // "86.sse42.pcmpistrm128"
  21888. }
  21889. break;
  21890. }
  21891. break;
  21892. case 's': // 2 strings to match.
  21893. if (memcmp(NameR.data()+6, "e3.ph", 5))
  21894. break;
  21895. switch (NameR[11]) {
  21896. default: break;
  21897. case 'a': // 1 string to match.
  21898. if (memcmp(NameR.data()+12, "dd.sw.128", 9))
  21899. break;
  21900. return Intrinsic::x86_ssse3_phadd_sw_128; // "86.ssse3.phadd.sw.128"
  21901. case 's': // 1 string to match.
  21902. if (memcmp(NameR.data()+12, "ub.sw.128", 9))
  21903. break;
  21904. return Intrinsic::x86_ssse3_phsub_sw_128; // "86.ssse3.phsub.sw.128"
  21905. }
  21906. break;
  21907. }
  21908. break;
  21909. case 'x': // 2 strings to match.
  21910. if (memcmp(NameR.data()+4, "op.vpermil2p", 12))
  21911. break;
  21912. switch (NameR[16]) {
  21913. default: break;
  21914. case 'd': // 1 string to match.
  21915. if (memcmp(NameR.data()+17, ".256", 4))
  21916. break;
  21917. return Intrinsic::x86_xop_vpermil2pd_256; // "86.xop.vpermil2pd.256"
  21918. case 's': // 1 string to match.
  21919. if (memcmp(NameR.data()+17, ".256", 4))
  21920. break;
  21921. return Intrinsic::x86_xop_vpermil2ps_256; // "86.xop.vpermil2ps.256"
  21922. }
  21923. break;
  21924. }
  21925. break;
  21926. case 22: // 21 strings to match.
  21927. if (memcmp(NameR.data()+0, "86.", 3))
  21928. break;
  21929. switch (NameR[3]) {
  21930. default: break;
  21931. case 'a': // 11 strings to match.
  21932. if (memcmp(NameR.data()+4, "vx", 2))
  21933. break;
  21934. switch (NameR[6]) {
  21935. default: break;
  21936. case '.': // 4 strings to match.
  21937. switch (NameR[7]) {
  21938. default: break;
  21939. case 'm': // 2 strings to match.
  21940. if (memcmp(NameR.data()+8, "askload.p", 9))
  21941. break;
  21942. switch (NameR[17]) {
  21943. default: break;
  21944. case 'd': // 1 string to match.
  21945. if (memcmp(NameR.data()+18, ".256", 4))
  21946. break;
  21947. return Intrinsic::x86_avx_maskload_pd_256; // "86.avx.maskload.pd.256"
  21948. case 's': // 1 string to match.
  21949. if (memcmp(NameR.data()+18, ".256", 4))
  21950. break;
  21951. return Intrinsic::x86_avx_maskload_ps_256; // "86.avx.maskload.ps.256"
  21952. }
  21953. break;
  21954. case 'v': // 2 strings to match.
  21955. if (memcmp(NameR.data()+8, "testnzc.p", 9))
  21956. break;
  21957. switch (NameR[17]) {
  21958. default: break;
  21959. case 'd': // 1 string to match.
  21960. if (memcmp(NameR.data()+18, ".256", 4))
  21961. break;
  21962. return Intrinsic::x86_avx_vtestnzc_pd_256; // "86.avx.vtestnzc.pd.256"
  21963. case 's': // 1 string to match.
  21964. if (memcmp(NameR.data()+18, ".256", 4))
  21965. break;
  21966. return Intrinsic::x86_avx_vtestnzc_ps_256; // "86.avx.vtestnzc.ps.256"
  21967. }
  21968. break;
  21969. }
  21970. break;
  21971. case '2': // 7 strings to match.
  21972. if (NameR[7] != '.')
  21973. break;
  21974. switch (NameR[8]) {
  21975. default: break;
  21976. case 'g': // 4 strings to match.
  21977. if (memcmp(NameR.data()+9, "ather.", 6))
  21978. break;
  21979. switch (NameR[15]) {
  21980. default: break;
  21981. case 'd': // 2 strings to match.
  21982. if (NameR[16] != '.')
  21983. break;
  21984. switch (NameR[17]) {
  21985. default: break;
  21986. case 'd': // 1 string to match.
  21987. if (memcmp(NameR.data()+18, ".256", 4))
  21988. break;
  21989. return Intrinsic::x86_avx2_gather_d_d_256; // "86.avx2.gather.d.d.256"
  21990. case 'q': // 1 string to match.
  21991. if (memcmp(NameR.data()+18, ".256", 4))
  21992. break;
  21993. return Intrinsic::x86_avx2_gather_d_q_256; // "86.avx2.gather.d.q.256"
  21994. }
  21995. break;
  21996. case 'q': // 2 strings to match.
  21997. if (NameR[16] != '.')
  21998. break;
  21999. switch (NameR[17]) {
  22000. default: break;
  22001. case 'd': // 1 string to match.
  22002. if (memcmp(NameR.data()+18, ".256", 4))
  22003. break;
  22004. return Intrinsic::x86_avx2_gather_q_d_256; // "86.avx2.gather.q.d.256"
  22005. case 'q': // 1 string to match.
  22006. if (memcmp(NameR.data()+18, ".256", 4))
  22007. break;
  22008. return Intrinsic::x86_avx2_gather_q_q_256; // "86.avx2.gather.q.q.256"
  22009. }
  22010. break;
  22011. }
  22012. break;
  22013. case 'm': // 2 strings to match.
  22014. if (memcmp(NameR.data()+9, "askload.", 8))
  22015. break;
  22016. switch (NameR[17]) {
  22017. default: break;
  22018. case 'd': // 1 string to match.
  22019. if (memcmp(NameR.data()+18, ".256", 4))
  22020. break;
  22021. return Intrinsic::x86_avx2_maskload_d_256; // "86.avx2.maskload.d.256"
  22022. case 'q': // 1 string to match.
  22023. if (memcmp(NameR.data()+18, ".256", 4))
  22024. break;
  22025. return Intrinsic::x86_avx2_maskload_q_256; // "86.avx2.maskload.q.256"
  22026. }
  22027. break;
  22028. case 'v': // 1 string to match.
  22029. if (memcmp(NameR.data()+9, "broadcasti128", 13))
  22030. break;
  22031. return Intrinsic::x86_avx2_vbroadcasti128; // "86.avx2.vbroadcasti128"
  22032. }
  22033. break;
  22034. }
  22035. break;
  22036. case 's': // 10 strings to match.
  22037. if (memcmp(NameR.data()+4, "se42.pcmp", 9))
  22038. break;
  22039. switch (NameR[13]) {
  22040. default: break;
  22041. case 'e': // 5 strings to match.
  22042. if (memcmp(NameR.data()+14, "stri", 4))
  22043. break;
  22044. switch (NameR[18]) {
  22045. default: break;
  22046. case 'a': // 1 string to match.
  22047. if (memcmp(NameR.data()+19, "128", 3))
  22048. break;
  22049. return Intrinsic::x86_sse42_pcmpestria128; // "86.sse42.pcmpestria128"
  22050. case 'c': // 1 string to match.
  22051. if (memcmp(NameR.data()+19, "128", 3))
  22052. break;
  22053. return Intrinsic::x86_sse42_pcmpestric128; // "86.sse42.pcmpestric128"
  22054. case 'o': // 1 string to match.
  22055. if (memcmp(NameR.data()+19, "128", 3))
  22056. break;
  22057. return Intrinsic::x86_sse42_pcmpestrio128; // "86.sse42.pcmpestrio128"
  22058. case 's': // 1 string to match.
  22059. if (memcmp(NameR.data()+19, "128", 3))
  22060. break;
  22061. return Intrinsic::x86_sse42_pcmpestris128; // "86.sse42.pcmpestris128"
  22062. case 'z': // 1 string to match.
  22063. if (memcmp(NameR.data()+19, "128", 3))
  22064. break;
  22065. return Intrinsic::x86_sse42_pcmpestriz128; // "86.sse42.pcmpestriz128"
  22066. }
  22067. break;
  22068. case 'i': // 5 strings to match.
  22069. if (memcmp(NameR.data()+14, "stri", 4))
  22070. break;
  22071. switch (NameR[18]) {
  22072. default: break;
  22073. case 'a': // 1 string to match.
  22074. if (memcmp(NameR.data()+19, "128", 3))
  22075. break;
  22076. return Intrinsic::x86_sse42_pcmpistria128; // "86.sse42.pcmpistria128"
  22077. case 'c': // 1 string to match.
  22078. if (memcmp(NameR.data()+19, "128", 3))
  22079. break;
  22080. return Intrinsic::x86_sse42_pcmpistric128; // "86.sse42.pcmpistric128"
  22081. case 'o': // 1 string to match.
  22082. if (memcmp(NameR.data()+19, "128", 3))
  22083. break;
  22084. return Intrinsic::x86_sse42_pcmpistrio128; // "86.sse42.pcmpistrio128"
  22085. case 's': // 1 string to match.
  22086. if (memcmp(NameR.data()+19, "128", 3))
  22087. break;
  22088. return Intrinsic::x86_sse42_pcmpistris128; // "86.sse42.pcmpistris128"
  22089. case 'z': // 1 string to match.
  22090. if (memcmp(NameR.data()+19, "128", 3))
  22091. break;
  22092. return Intrinsic::x86_sse42_pcmpistriz128; // "86.sse42.pcmpistriz128"
  22093. }
  22094. break;
  22095. }
  22096. break;
  22097. }
  22098. break;
  22099. case 23: // 21 strings to match.
  22100. if (memcmp(NameR.data()+0, "86.", 3))
  22101. break;
  22102. switch (NameR[3]) {
  22103. default: break;
  22104. case 'a': // 16 strings to match.
  22105. if (memcmp(NameR.data()+4, "vx", 2))
  22106. break;
  22107. switch (NameR[6]) {
  22108. default: break;
  22109. case '.': // 2 strings to match.
  22110. if (memcmp(NameR.data()+7, "maskstore.p", 11))
  22111. break;
  22112. switch (NameR[18]) {
  22113. default: break;
  22114. case 'd': // 1 string to match.
  22115. if (memcmp(NameR.data()+19, ".256", 4))
  22116. break;
  22117. return Intrinsic::x86_avx_maskstore_pd_256; // "86.avx.maskstore.pd.256"
  22118. case 's': // 1 string to match.
  22119. if (memcmp(NameR.data()+19, ".256", 4))
  22120. break;
  22121. return Intrinsic::x86_avx_maskstore_ps_256; // "86.avx.maskstore.ps.256"
  22122. }
  22123. break;
  22124. case '2': // 14 strings to match.
  22125. if (NameR[7] != '.')
  22126. break;
  22127. switch (NameR[8]) {
  22128. default: break;
  22129. case 'g': // 4 strings to match.
  22130. if (memcmp(NameR.data()+9, "ather.", 6))
  22131. break;
  22132. switch (NameR[15]) {
  22133. default: break;
  22134. case 'd': // 2 strings to match.
  22135. if (memcmp(NameR.data()+16, ".p", 2))
  22136. break;
  22137. switch (NameR[18]) {
  22138. default: break;
  22139. case 'd': // 1 string to match.
  22140. if (memcmp(NameR.data()+19, ".256", 4))
  22141. break;
  22142. return Intrinsic::x86_avx2_gather_d_pd_256; // "86.avx2.gather.d.pd.256"
  22143. case 's': // 1 string to match.
  22144. if (memcmp(NameR.data()+19, ".256", 4))
  22145. break;
  22146. return Intrinsic::x86_avx2_gather_d_ps_256; // "86.avx2.gather.d.ps.256"
  22147. }
  22148. break;
  22149. case 'q': // 2 strings to match.
  22150. if (memcmp(NameR.data()+16, ".p", 2))
  22151. break;
  22152. switch (NameR[18]) {
  22153. default: break;
  22154. case 'd': // 1 string to match.
  22155. if (memcmp(NameR.data()+19, ".256", 4))
  22156. break;
  22157. return Intrinsic::x86_avx2_gather_q_pd_256; // "86.avx2.gather.q.pd.256"
  22158. case 's': // 1 string to match.
  22159. if (memcmp(NameR.data()+19, ".256", 4))
  22160. break;
  22161. return Intrinsic::x86_avx2_gather_q_ps_256; // "86.avx2.gather.q.ps.256"
  22162. }
  22163. break;
  22164. }
  22165. break;
  22166. case 'm': // 2 strings to match.
  22167. if (memcmp(NameR.data()+9, "askstore.", 9))
  22168. break;
  22169. switch (NameR[18]) {
  22170. default: break;
  22171. case 'd': // 1 string to match.
  22172. if (memcmp(NameR.data()+19, ".256", 4))
  22173. break;
  22174. return Intrinsic::x86_avx2_maskstore_d_256; // "86.avx2.maskstore.d.256"
  22175. case 'q': // 1 string to match.
  22176. if (memcmp(NameR.data()+19, ".256", 4))
  22177. break;
  22178. return Intrinsic::x86_avx2_maskstore_q_256; // "86.avx2.maskstore.q.256"
  22179. }
  22180. break;
  22181. case 'p': // 8 strings to match.
  22182. if (memcmp(NameR.data()+9, "broadcast", 9))
  22183. break;
  22184. switch (NameR[18]) {
  22185. default: break;
  22186. case 'b': // 2 strings to match.
  22187. if (NameR[19] != '.')
  22188. break;
  22189. switch (NameR[20]) {
  22190. default: break;
  22191. case '1': // 1 string to match.
  22192. if (memcmp(NameR.data()+21, "28", 2))
  22193. break;
  22194. return Intrinsic::x86_avx2_pbroadcastb_128; // "86.avx2.pbroadcastb.128"
  22195. case '2': // 1 string to match.
  22196. if (memcmp(NameR.data()+21, "56", 2))
  22197. break;
  22198. return Intrinsic::x86_avx2_pbroadcastb_256; // "86.avx2.pbroadcastb.256"
  22199. }
  22200. break;
  22201. case 'd': // 2 strings to match.
  22202. if (NameR[19] != '.')
  22203. break;
  22204. switch (NameR[20]) {
  22205. default: break;
  22206. case '1': // 1 string to match.
  22207. if (memcmp(NameR.data()+21, "28", 2))
  22208. break;
  22209. return Intrinsic::x86_avx2_pbroadcastd_128; // "86.avx2.pbroadcastd.128"
  22210. case '2': // 1 string to match.
  22211. if (memcmp(NameR.data()+21, "56", 2))
  22212. break;
  22213. return Intrinsic::x86_avx2_pbroadcastd_256; // "86.avx2.pbroadcastd.256"
  22214. }
  22215. break;
  22216. case 'q': // 2 strings to match.
  22217. if (NameR[19] != '.')
  22218. break;
  22219. switch (NameR[20]) {
  22220. default: break;
  22221. case '1': // 1 string to match.
  22222. if (memcmp(NameR.data()+21, "28", 2))
  22223. break;
  22224. return Intrinsic::x86_avx2_pbroadcastq_128; // "86.avx2.pbroadcastq.128"
  22225. case '2': // 1 string to match.
  22226. if (memcmp(NameR.data()+21, "56", 2))
  22227. break;
  22228. return Intrinsic::x86_avx2_pbroadcastq_256; // "86.avx2.pbroadcastq.256"
  22229. }
  22230. break;
  22231. case 'w': // 2 strings to match.
  22232. if (NameR[19] != '.')
  22233. break;
  22234. switch (NameR[20]) {
  22235. default: break;
  22236. case '1': // 1 string to match.
  22237. if (memcmp(NameR.data()+21, "28", 2))
  22238. break;
  22239. return Intrinsic::x86_avx2_pbroadcastw_128; // "86.avx2.pbroadcastw.128"
  22240. case '2': // 1 string to match.
  22241. if (memcmp(NameR.data()+21, "56", 2))
  22242. break;
  22243. return Intrinsic::x86_avx2_pbroadcastw_256; // "86.avx2.pbroadcastw.256"
  22244. }
  22245. break;
  22246. }
  22247. break;
  22248. }
  22249. break;
  22250. }
  22251. break;
  22252. case 'f': // 4 strings to match.
  22253. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  22254. break;
  22255. switch (NameR[10]) {
  22256. default: break;
  22257. case 'a': // 2 strings to match.
  22258. if (memcmp(NameR.data()+11, "ddsub.p", 7))
  22259. break;
  22260. switch (NameR[18]) {
  22261. default: break;
  22262. case 'd': // 1 string to match.
  22263. if (memcmp(NameR.data()+19, ".256", 4))
  22264. break;
  22265. return Intrinsic::x86_fma_vfmaddsub_pd_256; // "86.fma.vfmaddsub.pd.256"
  22266. case 's': // 1 string to match.
  22267. if (memcmp(NameR.data()+19, ".256", 4))
  22268. break;
  22269. return Intrinsic::x86_fma_vfmaddsub_ps_256; // "86.fma.vfmaddsub.ps.256"
  22270. }
  22271. break;
  22272. case 's': // 2 strings to match.
  22273. if (memcmp(NameR.data()+11, "ubadd.p", 7))
  22274. break;
  22275. switch (NameR[18]) {
  22276. default: break;
  22277. case 'd': // 1 string to match.
  22278. if (memcmp(NameR.data()+19, ".256", 4))
  22279. break;
  22280. return Intrinsic::x86_fma_vfmsubadd_pd_256; // "86.fma.vfmsubadd.pd.256"
  22281. case 's': // 1 string to match.
  22282. if (memcmp(NameR.data()+19, ".256", 4))
  22283. break;
  22284. return Intrinsic::x86_fma_vfmsubadd_ps_256; // "86.fma.vfmsubadd.ps.256"
  22285. }
  22286. break;
  22287. }
  22288. break;
  22289. case 's': // 1 string to match.
  22290. if (memcmp(NameR.data()+4, "sse3.pmul.hr.sw.128", 19))
  22291. break;
  22292. return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "86.ssse3.pmul.hr.sw.128"
  22293. }
  22294. break;
  22295. case 24: // 10 strings to match.
  22296. if (memcmp(NameR.data()+0, "86.", 3))
  22297. break;
  22298. switch (NameR[3]) {
  22299. default: break;
  22300. case 'a': // 9 strings to match.
  22301. switch (NameR[4]) {
  22302. default: break;
  22303. case 'e': // 1 string to match.
  22304. if (memcmp(NameR.data()+5, "sni.aeskeygenassist", 19))
  22305. break;
  22306. return Intrinsic::x86_aesni_aeskeygenassist; // "86.aesni.aeskeygenassist"
  22307. case 'v': // 8 strings to match.
  22308. if (NameR[5] != 'x')
  22309. break;
  22310. switch (NameR[6]) {
  22311. default: break;
  22312. case '.': // 7 strings to match.
  22313. if (NameR[7] != 'v')
  22314. break;
  22315. switch (NameR[8]) {
  22316. default: break;
  22317. case 'b': // 2 strings to match.
  22318. if (memcmp(NameR.data()+9, "roadcast.s", 10))
  22319. break;
  22320. switch (NameR[19]) {
  22321. default: break;
  22322. case 'd': // 1 string to match.
  22323. if (memcmp(NameR.data()+20, ".256", 4))
  22324. break;
  22325. return Intrinsic::x86_avx_vbroadcast_sd_256; // "86.avx.vbroadcast.sd.256"
  22326. case 's': // 1 string to match.
  22327. if (memcmp(NameR.data()+20, ".256", 4))
  22328. break;
  22329. return Intrinsic::x86_avx_vbroadcast_ss_256; // "86.avx.vbroadcast.ss.256"
  22330. }
  22331. break;
  22332. case 'p': // 5 strings to match.
  22333. if (memcmp(NameR.data()+9, "erm", 3))
  22334. break;
  22335. switch (NameR[12]) {
  22336. default: break;
  22337. case '2': // 3 strings to match.
  22338. if (memcmp(NameR.data()+13, "f128.", 5))
  22339. break;
  22340. switch (NameR[18]) {
  22341. default: break;
  22342. case 'p': // 2 strings to match.
  22343. switch (NameR[19]) {
  22344. default: break;
  22345. case 'd': // 1 string to match.
  22346. if (memcmp(NameR.data()+20, ".256", 4))
  22347. break;
  22348. return Intrinsic::x86_avx_vperm2f128_pd_256; // "86.avx.vperm2f128.pd.256"
  22349. case 's': // 1 string to match.
  22350. if (memcmp(NameR.data()+20, ".256", 4))
  22351. break;
  22352. return Intrinsic::x86_avx_vperm2f128_ps_256; // "86.avx.vperm2f128.ps.256"
  22353. }
  22354. break;
  22355. case 's': // 1 string to match.
  22356. if (memcmp(NameR.data()+19, "i.256", 5))
  22357. break;
  22358. return Intrinsic::x86_avx_vperm2f128_si_256; // "86.avx.vperm2f128.si.256"
  22359. }
  22360. break;
  22361. case 'i': // 2 strings to match.
  22362. if (memcmp(NameR.data()+13, "lvar.p", 6))
  22363. break;
  22364. switch (NameR[19]) {
  22365. default: break;
  22366. case 'd': // 1 string to match.
  22367. if (memcmp(NameR.data()+20, ".256", 4))
  22368. break;
  22369. return Intrinsic::x86_avx_vpermilvar_pd_256; // "86.avx.vpermilvar.pd.256"
  22370. case 's': // 1 string to match.
  22371. if (memcmp(NameR.data()+20, ".256", 4))
  22372. break;
  22373. return Intrinsic::x86_avx_vpermilvar_ps_256; // "86.avx.vpermilvar.ps.256"
  22374. }
  22375. break;
  22376. }
  22377. break;
  22378. }
  22379. break;
  22380. case '2': // 1 string to match.
  22381. if (memcmp(NameR.data()+7, ".vbroadcast.ss.ps", 17))
  22382. break;
  22383. return Intrinsic::x86_avx2_vbroadcast_ss_ps; // "86.avx2.vbroadcast.ss.ps"
  22384. }
  22385. break;
  22386. }
  22387. break;
  22388. case 's': // 1 string to match.
  22389. if (memcmp(NameR.data()+4, "sse3.pmadd.ub.sw.128", 20))
  22390. break;
  22391. return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "86.ssse3.pmadd.ub.sw.128"
  22392. }
  22393. break;
  22394. case 25: // 3 strings to match.
  22395. if (memcmp(NameR.data()+0, "86.avx.vinsertf128.", 19))
  22396. break;
  22397. switch (NameR[19]) {
  22398. default: break;
  22399. case 'p': // 2 strings to match.
  22400. switch (NameR[20]) {
  22401. default: break;
  22402. case 'd': // 1 string to match.
  22403. if (memcmp(NameR.data()+21, ".256", 4))
  22404. break;
  22405. return Intrinsic::x86_avx_vinsertf128_pd_256; // "86.avx.vinsertf128.pd.256"
  22406. case 's': // 1 string to match.
  22407. if (memcmp(NameR.data()+21, ".256", 4))
  22408. break;
  22409. return Intrinsic::x86_avx_vinsertf128_ps_256; // "86.avx.vinsertf128.ps.256"
  22410. }
  22411. break;
  22412. case 's': // 1 string to match.
  22413. if (memcmp(NameR.data()+20, "i.256", 5))
  22414. break;
  22415. return Intrinsic::x86_avx_vinsertf128_si_256; // "86.avx.vinsertf128.si.256"
  22416. }
  22417. break;
  22418. case 26: // 3 strings to match.
  22419. if (memcmp(NameR.data()+0, "86.avx.vextractf128.", 20))
  22420. break;
  22421. switch (NameR[20]) {
  22422. default: break;
  22423. case 'p': // 2 strings to match.
  22424. switch (NameR[21]) {
  22425. default: break;
  22426. case 'd': // 1 string to match.
  22427. if (memcmp(NameR.data()+22, ".256", 4))
  22428. break;
  22429. return Intrinsic::x86_avx_vextractf128_pd_256; // "86.avx.vextractf128.pd.256"
  22430. case 's': // 1 string to match.
  22431. if (memcmp(NameR.data()+22, ".256", 4))
  22432. break;
  22433. return Intrinsic::x86_avx_vextractf128_ps_256; // "86.avx.vextractf128.ps.256"
  22434. }
  22435. break;
  22436. case 's': // 1 string to match.
  22437. if (memcmp(NameR.data()+21, "i.256", 5))
  22438. break;
  22439. return Intrinsic::x86_avx_vextractf128_si_256; // "86.avx.vextractf128.si.256"
  22440. }
  22441. break;
  22442. case 28: // 4 strings to match.
  22443. if (memcmp(NameR.data()+0, "86.avx", 6))
  22444. break;
  22445. switch (NameR[6]) {
  22446. default: break;
  22447. case '.': // 2 strings to match.
  22448. if (memcmp(NameR.data()+7, "vbroadcastf128.p", 16))
  22449. break;
  22450. switch (NameR[23]) {
  22451. default: break;
  22452. case 'd': // 1 string to match.
  22453. if (memcmp(NameR.data()+24, ".256", 4))
  22454. break;
  22455. return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "86.avx.vbroadcastf128.pd.256"
  22456. case 's': // 1 string to match.
  22457. if (memcmp(NameR.data()+24, ".256", 4))
  22458. break;
  22459. return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "86.avx.vbroadcastf128.ps.256"
  22460. }
  22461. break;
  22462. case '2': // 2 strings to match.
  22463. if (memcmp(NameR.data()+7, ".vbroadcast.s", 13))
  22464. break;
  22465. switch (NameR[20]) {
  22466. default: break;
  22467. case 'd': // 1 string to match.
  22468. if (memcmp(NameR.data()+21, ".pd.256", 7))
  22469. break;
  22470. return Intrinsic::x86_avx2_vbroadcast_sd_pd_256; // "86.avx2.vbroadcast.sd.pd.256"
  22471. case 's': // 1 string to match.
  22472. if (memcmp(NameR.data()+21, ".ps.256", 7))
  22473. break;
  22474. return Intrinsic::x86_avx2_vbroadcast_ss_ps_256; // "86.avx2.vbroadcast.ss.ps.256"
  22475. }
  22476. break;
  22477. }
  22478. break;
  22479. }
  22480. break; // end of 'x' case.
  22481. }
  22482. #endif
  22483. // Global intrinsic function declaration type table.
  22484. #ifdef GET_INTRINSIC_GENERATOR_GLOBAL
  22485. static const unsigned IIT_Table[] = {
  22486. 0x2E2E, (1U<<31) | 310, 0x4444440, 0x4444440, 0x4, (1U<<31) | 276, 0x4444440,
  22487. 0x4444440, 0x444440, 0x444440, 0x444444, 0x444444, 0x2F2F2F, 0x2F2F2F, 0x2F2F,
  22488. 0x686848, 0x696949, 0x686848, 0x696949, (1U<<31) | 294, 0x2F2F2F2F, 0x2F2F, 0x2F2F,
  22489. 0x2F2F, 0x45F0F, 0x45F0F, 0x6939, 0x44F1F, 0x44F1F, 0x3969, 0x2F2F2F,
  22490. 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x42E2F, (1U<<31) | 354, (1U<<31) | 401, (1U<<31) | 343, (1U<<31) | 427,
  22491. (1U<<31) | 330, (1U<<31) | 459, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 303, (1U<<31) | 303,
  22492. (1U<<31) | 303, 0x2F2F2F, 0x6F2F2F, 0x6F2F2F, 0x2F2F2F, 0x6F2F, 0x6F2F, 0x2F2F2F,
  22493. 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 301, (1U<<31) | 301,
  22494. 0x2F2F2F, (1U<<31) | 303, (1U<<31) | 289, (1U<<31) | 289, (1U<<31) | 289, 0x2F2F, 0x2F2F2F, (1U<<31) | 294,
  22495. (1U<<31) | 294, (1U<<31) | 294, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 294, (1U<<31) | 294, (1U<<31) | 294, 0x2F2F2F,
  22496. 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 294, 0x2F2F, 0x2F2F2F, 0x2F2F2F,
  22497. 0x2F2F2F, (1U<<31) | 294, 0x2F2F2F, 0x2F2F2F, 0x2F2F, 0x2F2F2F, (1U<<31) | 294, 0x2F2F2F2F,
  22498. (1U<<31) | 303, (1U<<31) | 303, (1U<<31) | 294, 0x2F2F2F, 0x2F2F2F, 0x42F2E0, 0x42F2F2E0, (1U<<31) | 391,
  22499. (1U<<31) | 363, (1U<<31) | 415, (1U<<31) | 374, (1U<<31) | 445, (1U<<31) | 294, 0x2A2A2A, 0x2A2A2A2A, (1U<<31) | 265,
  22500. (1U<<31) | 263, 0x2A2A2A2A, (1U<<31) | 265, (1U<<31) | 263, (1U<<31) | 261, 0x444, 0x444, 0x40,
  22501. 0x444, 0x2E444, 0x2E, 0x444, 0x1F6, 0x1F6, 0xF0F, 0x36,
  22502. 0x63, 0x445F1F, 0x444F1F, 0x444F1F, 0x445F0F, 0x444F0F, 0x444F0F, 0x445F0F,
  22503. 0x444F0F, 0x444F0F, 0x1F1F, 0x10F0F, 0xF0F, 0x10F0F, 0x0, (1U<<31) | 501,
  22504. (1U<<31) | 496, 0x0, 0x0, 0x42E, 0x2E40, 0x2E50, 0x40, 0x2E0,
  22505. 0x2E0, 0x2E, 0x2E4, 0x2E4, 0x0, 0x1F1F, 0x1F1F, 0xF0F0F,
  22506. 0x1F1F, 0x1F1F, 0x4, 0x1F1F1F1F, 0x1F1F1F1F, 0x42E, 0x2EE2E2E, 0x2E2EE0,
  22507. 0x2EE2E2E0, 0x44, 0x55, 0x44, 0x444, 0x444, 0x444, 0x444,
  22508. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22509. 0x444, 0x444, 0x555, 0x555, 0x444, 0x545, 0x444, 0x444,
  22510. 0x555, 0x44, 0x44, 0x444, 0x444, 0x444, 0x444, 0x445,
  22511. 0x445, 0x444, 0x555, 0x444, 0x555, 0x444, 0x555, 0x444,
  22512. 0x555, 0x44, 0x55, 0x44, 0x44, 0x55, 0x444, 0x444,
  22513. 0x555, 0x54, 0x54, 0x44, 0x44, 0x44, 0x44, 0x444,
  22514. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22515. 0x444, 0x444, 0x444, 0x444, 0x555, 0x444, 0x444, 0x444,
  22516. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22517. 0x44, 0x44, 0x44, 0x45, 0x44, 0x444, 0x444, 0x55,
  22518. 0x45, 0x44, 0x55, 0x55, 0x55, 0x55, 0x555, 0x555,
  22519. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22520. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22521. 0x555, 0x555, 0x551, 0x551, 0x551, 0x551, 0x551, 0x551,
  22522. 0x551, 0x551, 0x55, 0x555, 0x555, 0x555, 0x555, 0x555,
  22523. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22524. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x5555, 0x555,
  22525. 0x5555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22526. 0x555, 0x444, 0x555, 0x44, 0x44, 0x444, 0x555, 0x445,
  22527. 0x445, 0x541, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441,
  22528. 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x445, 0x445,
  22529. 0x444, 0x444, 0x444, 0x444, 0x555, 0x444, 0x444, 0x444,
  22530. 0x444, 0x444, 0x444, 0x444, 0x444, 0x451, 0x551, 0x451,
  22531. 0x551, 0x451, 0x451, 0x451, 0x451, 0x451, 0x451, 0x451,
  22532. 0x451, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555,
  22533. 0x4555, 0x554, 0x41, 0x441, 0x441, 0x41, 0x441, 0x441,
  22534. 0x441, 0x441, 0x441, 0x551, 0x441, 0x441, 0x441, 0x441,
  22535. 0x551, 0x441, 0x441, 0x551, 0x441, 0x441, 0x45, 0x4444,
  22536. 0x4444, 0x4444, 0x4444, 0x41, 0x441, 0x441, 0x41, 0x44,
  22537. 0x41, 0x444, 0x5545, 0x441, 0x4441, 0x4441, 0x4441, 0x4441,
  22538. 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441,
  22539. 0x441, 0x441, 0x441, 0x4441, 0x4441, 0x4441, 0x4441, 0x57,
  22540. 0x56, 0x75, 0x75, 0x76, 0x75, 0x75, 0x74, 0x74,
  22541. 0x74, 0x74, 0x65, 0x65, 0x67, 0x65, 0x65, 0x64,
  22542. 0x64, 0x64, 0x64, 0x57, 0x56, 0x47, 0x46, 0x47,
  22543. 0x46, 0x777, 0x471, 0x771, 0x771, 0x771, 0x771, 0x777,
  22544. 0x777, 0x77, 0x7777, 0x7777, 0x47777, 0x7777, 0x7777, 0x47,
  22545. 0x47, 0x777, 0x777, 0x777, 0x777, 0x666, 0x461, 0x661,
  22546. 0x661, 0x661, 0x661, 0x666, 0x666, 0x66, 0x6666, 0x6666,
  22547. 0x46666, 0x6666, 0x6666, 0x46, 0x46, 0x666, 0x666, 0x666,
  22548. 0x666, 0x4444, 0x4444, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
  22549. 0x4455, 0x445, 0x445, 0x444, 0x444, 0x444, 0x444, 0x445,
  22550. 0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
  22551. 0x4455, 0x444, 0x445, 0x4455, 0x4455, 0x445, 0x444, 0x444,
  22552. 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555,
  22553. 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
  22554. 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x555, 0x555, 0x555,
  22555. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22556. 0x555, 0x555, 0x555, 0x555, 0x555, 0x4444, 0x4444, 0x4444,
  22557. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22558. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x444,
  22559. 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444,
  22560. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22561. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x444,
  22562. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22563. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22564. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22565. 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
  22566. 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445,
  22567. 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
  22568. 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445,
  22569. 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22570. 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22571. 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22572. 0x4444, 0x4444, 0x4444, 0x444, 0x4455, 0x4455, 0x4455, 0x4455,
  22573. 0x4455, 0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x445, 0x445,
  22574. 0x445, 0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455, 0x4455,
  22575. 0x4455, 0x4455, 0x4455, 0x4455, 0x444, 0x4444, 0x4444, 0x4444,
  22576. 0x555, 0x555, 0x5555, 0x5555, 0x555, 0x555, 0x555, 0x555,
  22577. 0x5555, 0x5555, 0x554, 0x554, 0x555, 0x555, 0x4455, 0x5555,
  22578. 0x5555, 0x5555, 0x4455, 0x4455, 0x4455, 0x4455, 0x555, 0x555,
  22579. 0x445, 0x444, 0x445, 0x444, 0x445, 0x445, 0x554, 0x554,
  22580. 0x5555, 0x5555, 0x5555, 0x5555, 0x555, 0x555, 0x555, 0x555,
  22581. 0x4555, 0x455, 0x454, 0x5555, 0x555, 0x4444, 0x4444, 0x4444,
  22582. 0x4444, 0x4444, 0x454, 0x454, 0x454, 0x454, 0x4444, 0x4444,
  22583. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22584. 0x4444, 0x445, 0x4455, 0x445, 0x4455, 0x5555, 0x5555, 0x555,
  22585. 0x555, 0x5555, 0x5555, 0x555, 0x555, 0x4444, 0x4444, 0x4444,
  22586. 0x5555, 0x5555, 0x555, 0x4455, 0x4455, 0x445, 0x445, 0x5555,
  22587. 0x5555, 0x555, 0x555, 0x4444, 0x455, 0x4555, 0x4555, 0x4555,
  22588. 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444,
  22589. 0x4444, 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555,
  22590. 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x455,
  22591. 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x455, 0x455,
  22592. 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x454,
  22593. 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555,
  22594. 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x454, 0x455,
  22595. 0x455, 0x44, 0x55, 0x44, 0x54, 0x44, 0x54, 0x44,
  22596. 0x44, 0x54, 0x444, 0x444, 0x44, 0x54, 0x44, 0x54,
  22597. 0x55, 0x4444, 0x544, 0x4455, 0x555, 0x44444, 0x5444, 0x44555,
  22598. 0x5555, 0x55, 0x555, 0x455, 0x4555, 0x4555, 0x4555, 0x4555,
  22599. 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x455, 0x455,
  22600. 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444,
  22601. 0x4444, 0x4444, 0x4444, 0x4444, 0x455, 0x455, 0x455, 0x4555,
  22602. 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444,
  22603. 0x4444, 0x455, 0x455, 0x445, 0x554, 0x444, 0x444, 0x555,
  22604. 0x555, 0x555, 0x555, 0x44, 0x44, 0x44444, 0x44444, 0x44444,
  22605. 0x44444, 0x444, 0x444, 0x441, 0x441, 0x4555, 0x4555, 0x455,
  22606. 0x455, 0x4555, 0x54, 0x54, 0x54, 0x55, 0x54, 0x55,
  22607. 0x54, 0x55, 0x54, 0x55, 0x44, 0x45, 0x4555, 0x4555,
  22608. 0x45, 0x45, 0x54, 0x555, 0x54, 0x555, 0x45, 0x45,
  22609. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x454, 0x54,
  22610. 0x4444, 0x544, 0x4455, 0x555, 0x444, 0x441, 0x441, 0x4444,
  22611. 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4444, 0x4444, 0x4444,
  22612. 0x4455, 0x44555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22613. 0x454, 0x454, 0x54, 0x455, 0x44, 0x442E2E2E, 0x2E2E2E0, (1U<<31) | 282,
  22614. (1U<<31) | 283, 0x2E50, 0x2E50, 0x1F1F, 0x1F1F, 0x1F1F, 0x42E0, (1U<<31) | 9,
  22615. (1U<<31) | 9, 0x144F23F0, 0x3838, 0x2929, 0x44, 0x383838, 0x383838, 0x444,
  22616. 0x383838, 0x383838, 0x444, 0x444, 0x444, 0x383838, 0x292929, 0x383838,
  22617. 0x292929, 0x292929, 0x292929, 0x444, 0x4444, 0x4444, 0x44, 0x4,
  22618. 0x38380, 0x38380, 0x38380, 0x29294, 0x29294, 0x29294, 0x29294, 0x29294,
  22619. 0x29294, 0x29290, 0x29290, 0x29290, 0x383855, 0x383855, 0x4455, 0x383855,
  22620. 0x383855, 0x292955, 0x292955, 0x383855, 0x383855, 0x383855, 0x4455, 0x383855,
  22621. 0x383855, 0x292955, 0x292955, 0x383855, 0x454, 0x454, 0x454, 0x454,
  22622. 0x454, 0x454, 0x444, 0x42E4, 0x42E4, 0x42E4, 0x4455, 0x4455,
  22623. 0x383855, 0x383855, 0x383855, 0x383855, 0x444, 0x4455, 0x4455, 0x455,
  22624. 0x383838, 0x383838, 0x38384, 0x38384, 0x382938, 0x382938, 0x383838, 0x444,
  22625. 0x383838, 0x444, 0x383855, 0x383855, 0x445, 0x445, 0x383838, 0x383838,
  22626. 0x292929, 0x384, 0x384, 0x2938, 0x2938, 0x2938, 0x2938, 0x2938,
  22627. 0x2938, 0x2938, 0x2938, 0x383829, 0x44438, 0x44438, 0x4438, 0x383829,
  22628. 0x4438, 0x383829, 0x4444, 0x294, 0x44, 0x438, 0x429, 0x455,
  22629. 0x43838, 0x42929, 0x43838, 0x444, 0x43838, 0x42929, 0x43838, 0x42929,
  22630. 0x444, 0x43838, 0x42929, 0x383838, 0x383838, 0x444, 0x383838, 0x383838,
  22631. 0x444, 0x444, 0x383838, 0x292929, 0x383838, 0x292929, 0x292929, 0x292929,
  22632. 0x440, 0x44, 0x55, 0x777, 0x666, 0x666, 0x777, 0x666,
  22633. 0x666, 0x777, 0x666, 0x666, 0x777, 0x666, 0x666, 0x63F6,
  22634. 0x43F4, 0x43F4, 0x0, 0x44, 0x44, 0x44, 0x75, 0x64,
  22635. 0x46, 0x57, 0x44, 0x55, 0x77, 0x66, 0x66, 0x44,
  22636. 0x54, 0x3F0, 0x3F0, 0x66, 0x66, 0x76, 0x76, 0x76,
  22637. 0x76, 0x76, 0x76, 0x76, 0x76, 0x74, 0x74, 0x74,
  22638. 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x74,
  22639. 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x666,
  22640. 0x666, 0x777, 0x666, 0x666, 0x777, 0x666, 0x666, 0x777,
  22641. 0x666, 0x666, 0x777, 0x666, 0x666, 0x77, 0x66, 0x66,
  22642. 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
  22643. 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
  22644. 0x65, 0x65, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
  22645. 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
  22646. 0x65, 0x65, 0x77, 0x66, 0x66, 0x77, 0x66, 0x66,
  22647. 0x7777, 0x6666, 0x6666, 0x7777, 0x6666, 0x6666, 0x7777, 0x6666,
  22648. 0x6666, 0x7777, 0x6666, 0x6666, 0x777, 0x666, 0x666, 0x777,
  22649. 0x666, 0x666, 0x36, 0x47, 0x47, 0x47, 0x47, 0x46,
  22650. 0x46, 0x46, 0x46, 0x1FE1F, 0xFE0F, 0x3FE3F, 0x77, 0x66,
  22651. 0x66, 0x57, 0x57, 0x57, 0x57, 0x56, 0x56, 0x56,
  22652. 0x56, 0x447, 0x444, 0x555, 0x444, 0x555, 0x0, 0x0,
  22653. 0x0, 0x444, 0x555, 0x444, 0x555, 0x77, 0x66, 0x33,
  22654. 0x44, 0x55, 0x22, 0x7F3F, 0x444, 0x444, 0x777, 0x666,
  22655. 0x666, 0x777, 0x666, 0x666, 0x777, 0x666, 0x666, 0x777,
  22656. 0x666, 0x666, 0x444, 0x555, 0x444, 0x555, 0x44, 0x54,
  22657. 0x4444, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F,
  22658. 0x7F3F, 0x7F3F, 0x77, 0x77, 0x66, 0x66, 0x77, 0x66,
  22659. 0x66, 0x77, 0x66, 0x66, 0x77, 0x66, 0x66, 0x4,
  22660. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22661. 0x4, 0x4, 0x4, 0x4, 0x77, 0x66, 0x66, 0x77,
  22662. 0x66, 0x66, 0x4444, 0x4444, 0x77, 0x66, 0x66, 0x66,
  22663. 0x66, 0x66, 0x66, 0x77, 0x66, 0x66, 0x77, 0x66,
  22664. 0x66, 0x77, 0x66, 0x66, 0x77, 0x66, 0x66, 0x77,
  22665. 0x66, 0x66, 0x47, 0x47, 0x47, 0x47, 0x46, 0x46,
  22666. 0x46, 0x46, 0x57, 0x57, 0x57, 0x57, 0x56, 0x56,
  22667. 0x56, 0x56, 0x12E0F, 0x40, 0x1F1F1F, 0x41F1F, 0x40, 0x0,
  22668. 0x442E0, 0x442E0, 0x442E0, 0x442E0, 0x2E2B, 0x2E3A, 0x2E49, 0x2E2B,
  22669. 0x2E2B, 0x2E49, 0x2E49, 0x3A, 0x490, 0x2E2B0, 0x2E3A0, 0x2E490,
  22670. 0x2E490, 0x2E490, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x2B2B2B, 0x3A3A3A,
  22671. 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x44969,
  22672. 0x44969, 0x696949, 0x696944, 0x696949, 0x696944, 0x2B2B2B, 0x2B2B44, 0x3A3A3A,
  22673. 0x3A3A44, 0x494949, 0x494944, 0x696949, 0x696944, 0x696949, 0x696944, 0x2B2B2B,
  22674. 0x2B2B44, 0x3A3A3A, 0x3A3A44, 0x494949, 0x494944, 0x2B2B2B, 0x2B2B44, 0x3A3A3A,
  22675. 0x3A3A44, 0x494949, 0x494944, 0x46949, 0x46949, 0x6969, 0x6969, 0x69696969,
  22676. 0x696969, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x3A3A3A3A,
  22677. 0x3A3A3A3A, 0x696969, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949,
  22678. 0x3A3A3A3A, 0x492B2B49, 0x493A3A49, 0x493A3A49, 0x492B2B49, 0x493A3A49, 0x493A3A49, 0x2B2B3A,
  22679. 0x3A3A49, 0x2B2B3A, 0x3A3A49, 0x2B2B3A, 0x3A3A49, 0x2B2B3A, 0x3A3A49, 0x69696969,
  22680. 0x2B494949, 0x49493A, 0x3A3A2B, 0x3A3A2B, 0x49492B, 0x49493A, 0x3A3A2B, 0x49493A,
  22681. 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x2B2B2B, 0x3A3A3A, 0x494949,
  22682. 0x6969, 0x49494949, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x494949, 0x494949,
  22683. 0x2B2B2B, 0x3A3A3A, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x494949, 0x494949,
  22684. 0x2B2B2B, 0x3A3A3A, 0x494949, 0x2B2B2B, 0x3A3A3A, 0x494949, 0x494949, 0x492B49,
  22685. 0x493A49, 0x492B49, 0x494949, 0x3A49, 0x2B3A, 0x3A49, 0x3A49, 0x2B3A,
  22686. 0x3A49, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0,
  22687. 0x2E0, 0x0, 0x4442E0, (1U<<31) | 320, 0x40, 0x4, 0x5, 0x4,
  22688. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22689. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22690. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22691. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x42E,
  22692. (1U<<31) | 0, 0x2E4, 0x42E0, 0x42E4, 0x1F1F, (1U<<31) | 0, 0x494949, 0x494949,
  22693. 0x3A3A3A, 0x33A3A, 0x34949, 0x494949, 0x22B2B, 0x494949, 0x33A3A, 0x34949,
  22694. 0x494949, 0x494949, 0x494949, 0x2B2B2B, 0x22B2B, 0x3A3A3A, 0x33A3A, 0x34949,
  22695. 0x494949, 0x494949, 0x2B2B2B, 0x22B2B, 0x3A3A3A, 0x33A3A, 0x34949, 0x494949,
  22696. 0x494949, 0x2B2B2B, 0x22B2B, 0x3A3A3A, 0x33A3A, 0x34949, 0x787878, 0x787878,
  22697. 0x787878, 0x787878, 0x787878, 0x787878, 0x787878, 0x696969, 0x696969, 0x696969,
  22698. 0x696969, 0x696969, 0x696969, 0x69696969, 0x69696969, 0x69696969, 0x696969, 0x33A3A,
  22699. 0x3A3A49, 0x3A3A3A49, 0x3A4949, 0x3A3A49, 0x3A3A49, 0x3A3A49, 0x3A3A49, 0x33A49,
  22700. 0x3A3A49, 0x3A3A49, 0x33A49, 0x494949, 0x494949, 0x494949, 0x22B2B, 0x494949,
  22701. 0x33A3A, 0x34949, 0x494949, 0x3A3A3A, 0x33A3A, 0x34949, 0x494949, 0x24949,
  22702. 0x43A3A, 0x22B2B, 0x43A3A, 0x22B2B, 0x494949, 0x22B2B, 0x33A3A, 0x34949,
  22703. 0x1F1F, (1U<<31) | 0, 0x2EE2E0, 0x2E0, 0x2E, 0x0, (1U<<31) | 0, (1U<<31) | 0,
  22704. (1U<<31) | 0, 0x2E2E0, 0x2E0, 0x42E2E2E0, 0x2E0, 0xDDD, 0xDD, 0xDDD,
  22705. 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDD,
  22706. 0xDDD, 0xDDD, 0xDDD, 0xDD, 0xDDD, 0xDDD, 0xDD, 0xDDD,
  22707. 0xDD, 0xDDD, 0xDDD, 0xDD, 0xDD, 0x585858, 0x585858, 0x585858,
  22708. 0x585858, 0x5858, 0x25858, (1U<<31) | 29, (1U<<31) | 65, (1U<<31) | 193, (1U<<31) | 227, (1U<<31) | 125,
  22709. (1U<<31) | 171, (1U<<31) | 77, (1U<<31) | 101, (1U<<31) | 41, (1U<<31) | 53, (1U<<31) | 205, (1U<<31) | 239, (1U<<31) | 137,
  22710. (1U<<31) | 149, (1U<<31) | 89, (1U<<31) | 113, 0x492E49, 0x4A2E4A, 0x582E58, 0x592E59, 0x49492E0,
  22711. 0x4A4A2E0, 0x58582E0, 0x59592E0, 0x2E59, 0x42C2C3B, 0x2C2C, 0x4A4A, 0x3B3B,
  22712. 0x4A4A3B, 0x3B3B2C, 0x4A4A3B, 0x3B3B2C, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B,
  22713. 0x2C2C2C, 0x3B3B3B, 0x4494949, 0x44A4A4A, 0x2C2C2C2C, 0x43B3B3B, 0x2B2B, 0x2B2C,
  22714. 0x4949, 0x494A, 0x5858, 0x5859, 0x3A3A, 0x3A3B, 0x4A4A4A, 0x6A6A6A,
  22715. 0x4A4A4A, 0x3B3B3B, 0x3B3B3B, 0x4A4A4A, 0x3B3B3B, 0x3B3B3B, 0x2C2C3B, 0x3B3B4A,
  22716. 0x2C2C2C, 0x4A4A4A, 0x3B3B3B, 0x2C2C2C, 0x4A4A4A, 0x3B3B3B, 0x2C2C2C, 0x4A4A4A,
  22717. 0x3B3B3B, 0x2C2C2C, 0x4A4A4A, 0x3B3B3B, 0x2C4, 0x2B4A, 0x2B59, 0x2B3B,
  22718. 0x4959, 0x3A4A, 0x3A59, 0x2B4A, 0x2B59, 0x2B3B, 0x4959, 0x3A4A,
  22719. 0x3A59, 0x4A4A59, 0x3B3B3B, 0x3B3B3B, 0x3B3B3B, 0x4A4A59, 0x2C2C59, 0x2C2C2C,
  22720. 0x2C2C2C, 0x4A4A4A, 0x3B3B3B, 0x494A4A, 0x45959, 0x45959, 0x585959, 0x3A3B3B,
  22721. 0x44A4A, 0x45959, 0x43B3B, 0x494949, 0x4A4A4A, 0x585858, 0x595959, 0x494A4A,
  22722. 0x3A3B3B, 0x44A4A, 0x43B3B, 0x494949, 0x4A4A4A, 0x494A4A, 0x45959, 0x45959,
  22723. 0x585959, 0x3A3B3B, 0x44A4A, 0x45959, 0x43B3B, 0x494949, 0x4A4A4A, 0x585858,
  22724. 0x595959, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B, 0x7879, 0x6969, 0x696A,
  22725. 0x2E59, 0x25958, 0x2585959, 0x2595959, 0x797979, 0x6A6A6A, 0x4797979, 0x46A6A6A,
  22726. 0x79797979, 0x6A6A6A6A, 0x2797979, 0x26A6A6A, 0x7969, 0x7949, 0x6979, 0x6A4A,
  22727. 0x4979, 0x4A6A, 0x7949, 0x6A4A, 0x46A6A6A, 0x797979, 0x6A6A6A, 0x797979,
  22728. 0x6A6A6A, 0x2E2C, 0x782E78, 0x792E79, 0x692E69, 0x6A2E6A, 0x78782E0, 0x79792E0,
  22729. 0x69692E0, 0x6A6A2E0, 0x797979, 0x6A6A6A, 0x797979, 0x6A6A6A, 0x794, 0x6A4,
  22730. 0x59594, 0x59594, 0x59594, 0x6A6A, 0x47979, 0x46A6A, 0x6A6A, 0x7979,
  22731. 0x6A6A, 0x2C2E0, 0x792E0, 0x6A2E0, 0x2E79, 0x2E69, 0x2E6A, 0x2E79,
  22732. 0x2E6A, 0x27978, 0x26A69, 0x24A49, 0x2787979, 0x2696A6A, 0x2494A4A, 0x2797979,
  22733. 0x26A6A6A, 0x24A4A4A, 0x587878, 0x597979, 0x496969, 0x4A6A6A, 0x78784, 0x79794,
  22734. 0x69694, 0x6A6A4, 0x78784, 0x79794, 0x69694, 0x6A6A4, 0x78784, 0x79794,
  22735. 0x69694, 0x6A6A4, 0x0, 0x0, 0x444, 0x555, 0x444, 0x555,
  22736. 0x444, 0x555, 0x444, 0x555, 0x78787878, 0x79797979, 0x69696969, 0x6A6A6A6A,
  22737. 0x78787878, 0x69696969, 0x78787878, 0x79797979, 0x69696969, 0x6A6A6A6A, 0x78787878, 0x79797979,
  22738. 0x69696969, 0x6A6A6A6A, 0x78787878, 0x69696969, 0x78787878, 0x79797979, 0x69696969, 0x6A6A6A6A,
  22739. 0x78787878, 0x79797979, 0x69696969, 0x6A6A6A6A, 0x78787878, 0x69696969, 0x78787878, 0x79797979,
  22740. 0x69696969, 0x6A6A6A6A, 0x78787878, 0x69696969, 0x20, 0x0, 0x0, 0x2EDD0,
  22741. 0xDDE0, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD,
  22742. 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0x2DDD, 0xDDD, 0xDDD, 0xDDD,
  22743. 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0x4D4,
  22744. 0x44DD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xD4, 0xDDD,
  22745. 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD,
  22746. 0x4DD, 0x4DD, 0x4DD, 0xDDD, 0xDDD, 0x4DD, 0x4DD, 0xDDD,
  22747. 0xDDD, 0xDDD, 0x4DD, 0x4DD, 0x4DD, 0xDDD, 0xDDD, 0xDDD,
  22748. 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0xDDD,
  22749. 0xDDD, 0xDDD, 0xDDD, 0xDDD, 0x2585858, 0x4, 0x5, 0x4,
  22750. 0x5, (1U<<31) | 387, (1U<<31) | 488, (1U<<31) | 492, 0x787878, 0x2E0, 0x2787878, 0x2787878,
  22751. 0x78784, 0x78784, 0x78784, 0x78784, 0x78784, 0x78784, 0x4978, 0x4969,
  22752. 0x7849, 0x7869, 0x6949, 0x6978, 0x784, 0x785, 0x786969, 0x47878,
  22753. 0x57878, 0x697878, 0x7849, 0x6949, 0x784, 0x785, 0x787878, 0x0,
  22754. 0x2E2B2B0, 0x787878, 0x787878, 0x0, 0x787878, 0x787878, 0x784, 0x787878,
  22755. 0x49493A, 0x3A3A2B, 0x3A3A2B, 0x2B2B2B, 0x3A3A3A, 0x2B2B2B, 0x3A3A3A, 0x2B2B2B,
  22756. 0x3A3A3A, 0x3A3A49, 0x3A3A3A, 0x2B2B2B, 0x3A3A3A, 0x2B2B2B, 0x2B4, 0x3A3A3A,
  22757. 0x3A3A3A, 0x494958, 0x2B2B58, 0x494949, 0x45858, 0x45858, 0x585858, 0x3A3A3A,
  22758. 0x44949, 0x45858, 0x43A3A, 0x494949, 0x3A3A3A, 0x44949, 0x43A3A, 0x494949,
  22759. 0x45858, 0x45858, 0x585858, 0x3A3A3A, 0x44949, 0x45858, 0x43A3A, 0x2B2B2B,
  22760. 0x3A3A3A, 0x2B2B2B, 0x3A3A3A, 0x7878, 0x7878, 0x492E0, 0x2B2E0, 0x782E0,
  22761. 0x787878, 0x78784, 0x78784, 0x78784, 0x78784, 0x78784, 0x78784, 0x787878,
  22762. 0x696969, 0x787878, 0x696969, 0x787878, 0x696969, 0x2E2B, 0x442E0, 0x440,
  22763. 0x4787878, 0x4696969, 0x78787878, 0x69696969, 0x4787878, 0x4696969, 0x4694, 0x4696969,
  22764. 0x2E58, 0x42B2B3A, 0x49493A, 0x2B2B2B2B, 0x43A3A3A, 0x42B4, 0x4494, 0x4585,
  22765. 0x3A3A, 0x2B2B2B, 0x494949, 0x494949, 0x3A3A3A, 0x2B2B2B, 0x494949, 0x494949,
  22766. 0x3A3A3A, 0x2B49, 0x2B58, 0x2B3A, 0x4958, 0x3A49, 0x3A58, 0x2B49,
  22767. 0x2B58, 0x2B3A, 0x4958, 0x3A49, 0x3A58, 0x494958, 0x58584, 0x58584,
  22768. 0x58584, 0x47878, 0x46969, 0x4787878, 0x4696969, 0x344, 0x444, 0x244,
  22769. 0x555, 0x255, 0x242B42B4, 0x242B42B4, 0x242B42B4, 0x242B42B4, 0x242B42B4, 0x242B42B4,
  22770. (1U<<31) | 19, 0x22B2B4, 0x22B2B4, 0x22B2B4, 0x22B2B4, 0x22B2B4, 0x22B2B4, 0x22B2B2B,
  22771. 0x2B5858, 0x225858, 0x585858, 0x22585858, 0x782E0, 0x692E0, 0x696969, 0x2696969,
  22772. 0x2696969, 0x69694, 0x69694, 0x69694, 0x69694, 0x69694, 0x69694, 0x78D,
  22773. 0xD78, 0xD6969, 0x69D, 0x46969, 0x56969, 0x694, 0x695, 0x78D,
  22774. 0x69D, 0x694, 0x695, 0x696969, 0x2E0, 0x696969, 0x696969, 0x696969,
  22775. 0x696969, 0x694, 0x696969, 0x2DD, 0x6969, 0x6969, 0x6969, 0x6969,
  22776. 0x0, 0x6969, 0x6969, 0x2E0, 0x692E0, 0x696969, 0x69694, 0x69694,
  22777. 0x69694, 0x69694, 0x69694, 0x69694, 0xDD, 0x2B2B, 0xDD, 0x4949,
  22778. 0xDD, 0x3A3A, 0xDDD, 0x494949, 0xDDD, 0x3A3A3A, 0xDDD, 0x3A3A3A,
  22779. 0xDDD, 0x494949, 0xDDD, 0x3A3A3A, 0xDDD, 0x3A3A3A, 0xDDD, 0x2B2B3A,
  22780. 0xDDD, 0x3A3A3A, 0xDDD, 0x2B2B2B, 0xDDD, 0x2B2B2B, 0xDDD, 0x494949,
  22781. 0xDDD, 0x3A3A3A, 0x3A69, 0x3A6A, 0x4693A, 0x46A3A, 0x40, 0x50,
  22782. 0x40, 0x50, 0x7878, 0x7979, 0x6969, 0x6A6A, 0x7878, 0x6969,
  22783. 0x58585858, 0x59595959, 0x22B2B2B, 0x2494949, 0x2585858, 0x22B2B2B, 0x2494949, 0x2585858,
  22784. 0x23A3A3A, 0x23A3A3A, (1U<<31) | 217, (1U<<31) | 251, (1U<<31) | 161, (1U<<31) | 183, 0x2B49, 0x2B58,
  22785. 0x2B3A, 0x4958, 0x2B49, 0x2B58, 0x2B3A, 0x4958, 0x3A49, 0x3A58,
  22786. 0x3A49, 0x3A58, 0x2B3A, 0x4958, 0x3A49, 0x49494949, 0x58494958, 0x58494958,
  22787. 0x49494949, 0x58494958, 0x58494958, 0x493A3A49, 0x3A3A3A3A, 0x493A3A49, 0x3A3A3A3A, 0x493A3A49,
  22788. 0x493A3A49, 0x2B2B2B2B, 0x2B2B2B, 0x22B2B, 0x494949, 0x24949, 0x585858, 0x25858,
  22789. 0x3A3A3A, 0x23A3A, 0x2B2B2B, 0x494949, 0x585858, 0x3A3A3A, 0x2B2B2B, 0x494949,
  22790. 0x585858, 0x3A3A3A, 0x44, 0x2E2E, 0x43F0, 0x0, 0x40, 0x4444,
  22791. (1U<<31) | 481, 0x3F0, 0x3F4, 0x3F0, 0x4, 0x4, 0x4, 0x44,
  22792. 0x43F, 0x7F3F, 0x3F4, 0x3F4, 0x3F4, 0x2E3F0, 0x2E3F0, 0x2E3F0,
  22793. 0x2E3F0, 0x2E3F0, 0x43F4, 0x3F4, 0x3F0, 0x3F0, 0x43F0, 0x43F0,
  22794. 0x43F4, 0x43F0, 0x3F4, 0x43F0, 0x7F3F0, 0x43F0, 0x2E3F0, 0x440,
  22795. 0x43F0, 0x43F0, 0x7F3F0, 0x40, 0x43F0, 0x2E3F0, 0x444, 0x0,
  22796. 0x3F0, 0x3F4, 0x3F4, 0x2E, 0x444, 0
  22797. };
  22798. static const unsigned char IIT_LongEncodingTable[] = {
  22799. /* 0 */ 18, 15, 0, 1, 15, 0, 15, 0, 0,
  22800. /* 9 */ 0, 15, 3, 15, 7, 15, 8, 4, 1, 0,
  22801. /* 19 */ 11, 2, 11, 2, 4, 11, 2, 4, 2, 0,
  22802. /* 29 */ 9, 4, 9, 4, 14, 2, 9, 4, 9, 4, 2, 0,
  22803. /* 41 */ 9, 4, 9, 4, 14, 2, 8, 5, 9, 4, 2, 0,
  22804. /* 53 */ 9, 4, 9, 4, 14, 2, 9, 5, 9, 4, 2, 0,
  22805. /* 65 */ 10, 4, 10, 4, 14, 2, 10, 4, 10, 4, 2, 0,
  22806. /* 77 */ 8, 5, 8, 5, 14, 2, 9, 4, 8, 5, 2, 0,
  22807. /* 89 */ 8, 5, 8, 5, 14, 2, 8, 5, 8, 5, 2, 0,
  22808. /* 101 */ 9, 5, 9, 5, 14, 2, 9, 4, 9, 5, 2, 0,
  22809. /* 113 */ 9, 5, 9, 5, 14, 2, 9, 5, 9, 5, 2, 0,
  22810. /* 125 */ 9, 6, 9, 6, 14, 2, 9, 4, 9, 6, 2, 0,
  22811. /* 137 */ 9, 6, 9, 6, 14, 2, 8, 5, 9, 6, 2, 0,
  22812. /* 149 */ 9, 6, 9, 6, 14, 2, 9, 5, 9, 6, 2, 0,
  22813. /* 161 */ 9, 6, 9, 6, 9, 6, 9, 6, 2, 0,
  22814. /* 171 */ 10, 6, 10, 6, 14, 2, 10, 4, 10, 6, 2, 0,
  22815. /* 183 */ 10, 6, 10, 6, 10, 6, 10, 6, 2, 0,
  22816. /* 193 */ 8, 7, 8, 7, 14, 2, 9, 4, 8, 7, 2, 0,
  22817. /* 205 */ 8, 7, 8, 7, 14, 2, 8, 5, 8, 7, 2, 0,
  22818. /* 217 */ 8, 7, 8, 7, 8, 7, 8, 7, 2, 0,
  22819. /* 227 */ 9, 7, 9, 7, 14, 2, 9, 4, 9, 7, 2, 0,
  22820. /* 239 */ 9, 7, 9, 7, 14, 2, 9, 5, 9, 7, 2, 0,
  22821. /* 251 */ 9, 7, 9, 7, 9, 7, 9, 7, 2, 0,
  22822. /* 261 */ 10, 2, 10, 2, 10, 2, 10, 2, 10, 2, 10, 2, 10, 2, 0,
  22823. /* 276 */ 18, 4, 4, 14, 2, 0,
  22824. /* 282 */ 0, 14, 17, 5, 14, 2, 0,
  22825. /* 289 */ 15, 2, 22, 2, 0,
  22826. /* 294 */ 15, 2, 22, 2, 22, 2, 0,
  22827. /* 301 */ 15, 2, 15, 2, 23, 2, 23, 2, 0,
  22828. /* 310 */ 15, 0, 15, 0, 14, 2, 14, 2, 4, 0,
  22829. /* 320 */ 15, 3, 15, 3, 14, 2, 14, 2, 4, 0,
  22830. /* 330 */ 20, 15, 2, 15, 2, 15, 2, 15, 2, 14, 2, 4, 0,
  22831. /* 343 */ 19, 15, 2, 15, 2, 15, 2, 14, 2, 4, 0,
  22832. /* 354 */ 18, 15, 2, 15, 2, 14, 2, 4, 0,
  22833. /* 363 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 4, 0,
  22834. /* 374 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 0,
  22835. /* 387 */ 18, 3, 4, 0,
  22836. /* 391 */ 0, 14, 2, 15, 2, 15, 2, 4, 4, 0,
  22837. /* 401 */ 18, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 4, 4, 0,
  22838. /* 415 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22839. /* 427 */ 19, 15, 2, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22840. /* 445 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22841. /* 459 */ 20, 15, 2, 15, 2, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22842. /* 481 */ 18, 4, 4, 4, 4, 4, 0,
  22843. /* 488 */ 18, 4, 4, 0,
  22844. /* 492 */ 18, 5, 4, 0,
  22845. /* 496 */ 0, 16, 5, 16, 0,
  22846. /* 501 */ 0, 16, 16, 0,
  22847. 255
  22848. };
  22849. #endif
  22850. // Add parameter attributes that are not common to all intrinsics.
  22851. #ifdef GET_INTRINSIC_ATTRIBUTES
  22852. AttrListPtr Intrinsic::getAttributes(ID id) {
  22853. static const uint8_t IntrinsicsToAttributesMap[] = {
  22854. 1, // llvm.adjust.trampoline
  22855. 2, // llvm.annotation
  22856. 2, // llvm.arm.cdp
  22857. 2, // llvm.arm.cdp2
  22858. 3, // llvm.arm.get.fpscr
  22859. 1, // llvm.arm.ldrexd
  22860. 2, // llvm.arm.mcr
  22861. 2, // llvm.arm.mcr2
  22862. 2, // llvm.arm.mcrr
  22863. 2, // llvm.arm.mcrr2
  22864. 2, // llvm.arm.mrc
  22865. 2, // llvm.arm.mrc2
  22866. 3, // llvm.arm.neon.vabds
  22867. 3, // llvm.arm.neon.vabdu
  22868. 3, // llvm.arm.neon.vabs
  22869. 3, // llvm.arm.neon.vacged
  22870. 3, // llvm.arm.neon.vacgeq
  22871. 3, // llvm.arm.neon.vacgtd
  22872. 3, // llvm.arm.neon.vacgtq
  22873. 3, // llvm.arm.neon.vaddhn
  22874. 3, // llvm.arm.neon.vbsl
  22875. 3, // llvm.arm.neon.vcls
  22876. 3, // llvm.arm.neon.vclz
  22877. 3, // llvm.arm.neon.vcnt
  22878. 3, // llvm.arm.neon.vcvtfp2fxs
  22879. 3, // llvm.arm.neon.vcvtfp2fxu
  22880. 3, // llvm.arm.neon.vcvtfp2hf
  22881. 3, // llvm.arm.neon.vcvtfxs2fp
  22882. 3, // llvm.arm.neon.vcvtfxu2fp
  22883. 3, // llvm.arm.neon.vcvthf2fp
  22884. 3, // llvm.arm.neon.vhadds
  22885. 3, // llvm.arm.neon.vhaddu
  22886. 3, // llvm.arm.neon.vhsubs
  22887. 3, // llvm.arm.neon.vhsubu
  22888. 1, // llvm.arm.neon.vld1
  22889. 1, // llvm.arm.neon.vld2
  22890. 1, // llvm.arm.neon.vld2lane
  22891. 1, // llvm.arm.neon.vld3
  22892. 1, // llvm.arm.neon.vld3lane
  22893. 1, // llvm.arm.neon.vld4
  22894. 1, // llvm.arm.neon.vld4lane
  22895. 3, // llvm.arm.neon.vmaxs
  22896. 3, // llvm.arm.neon.vmaxu
  22897. 3, // llvm.arm.neon.vmins
  22898. 3, // llvm.arm.neon.vminu
  22899. 3, // llvm.arm.neon.vmullp
  22900. 3, // llvm.arm.neon.vmulls
  22901. 3, // llvm.arm.neon.vmullu
  22902. 3, // llvm.arm.neon.vmulp
  22903. 3, // llvm.arm.neon.vpadals
  22904. 3, // llvm.arm.neon.vpadalu
  22905. 3, // llvm.arm.neon.vpadd
  22906. 3, // llvm.arm.neon.vpaddls
  22907. 3, // llvm.arm.neon.vpaddlu
  22908. 3, // llvm.arm.neon.vpmaxs
  22909. 3, // llvm.arm.neon.vpmaxu
  22910. 3, // llvm.arm.neon.vpmins
  22911. 3, // llvm.arm.neon.vpminu
  22912. 3, // llvm.arm.neon.vqabs
  22913. 3, // llvm.arm.neon.vqadds
  22914. 3, // llvm.arm.neon.vqaddu
  22915. 3, // llvm.arm.neon.vqdmlal
  22916. 3, // llvm.arm.neon.vqdmlsl
  22917. 3, // llvm.arm.neon.vqdmulh
  22918. 3, // llvm.arm.neon.vqdmull
  22919. 3, // llvm.arm.neon.vqmovns
  22920. 3, // llvm.arm.neon.vqmovnsu
  22921. 3, // llvm.arm.neon.vqmovnu
  22922. 3, // llvm.arm.neon.vqneg
  22923. 3, // llvm.arm.neon.vqrdmulh
  22924. 3, // llvm.arm.neon.vqrshiftns
  22925. 3, // llvm.arm.neon.vqrshiftnsu
  22926. 3, // llvm.arm.neon.vqrshiftnu
  22927. 3, // llvm.arm.neon.vqrshifts
  22928. 3, // llvm.arm.neon.vqrshiftu
  22929. 3, // llvm.arm.neon.vqshiftns
  22930. 3, // llvm.arm.neon.vqshiftnsu
  22931. 3, // llvm.arm.neon.vqshiftnu
  22932. 3, // llvm.arm.neon.vqshifts
  22933. 3, // llvm.arm.neon.vqshiftsu
  22934. 3, // llvm.arm.neon.vqshiftu
  22935. 3, // llvm.arm.neon.vqsubs
  22936. 3, // llvm.arm.neon.vqsubu
  22937. 3, // llvm.arm.neon.vraddhn
  22938. 3, // llvm.arm.neon.vrecpe
  22939. 3, // llvm.arm.neon.vrecps
  22940. 3, // llvm.arm.neon.vrhadds
  22941. 3, // llvm.arm.neon.vrhaddu
  22942. 3, // llvm.arm.neon.vrshiftn
  22943. 3, // llvm.arm.neon.vrshifts
  22944. 3, // llvm.arm.neon.vrshiftu
  22945. 3, // llvm.arm.neon.vrsqrte
  22946. 3, // llvm.arm.neon.vrsqrts
  22947. 3, // llvm.arm.neon.vrsubhn
  22948. 3, // llvm.arm.neon.vshiftins
  22949. 3, // llvm.arm.neon.vshiftls
  22950. 3, // llvm.arm.neon.vshiftlu
  22951. 3, // llvm.arm.neon.vshiftn
  22952. 3, // llvm.arm.neon.vshifts
  22953. 3, // llvm.arm.neon.vshiftu
  22954. 2, // llvm.arm.neon.vst1
  22955. 2, // llvm.arm.neon.vst2
  22956. 2, // llvm.arm.neon.vst2lane
  22957. 2, // llvm.arm.neon.vst3
  22958. 2, // llvm.arm.neon.vst3lane
  22959. 2, // llvm.arm.neon.vst4
  22960. 2, // llvm.arm.neon.vst4lane
  22961. 3, // llvm.arm.neon.vsubhn
  22962. 3, // llvm.arm.neon.vtbl1
  22963. 3, // llvm.arm.neon.vtbl2
  22964. 3, // llvm.arm.neon.vtbl3
  22965. 3, // llvm.arm.neon.vtbl4
  22966. 3, // llvm.arm.neon.vtbx1
  22967. 3, // llvm.arm.neon.vtbx2
  22968. 3, // llvm.arm.neon.vtbx3
  22969. 3, // llvm.arm.neon.vtbx4
  22970. 3, // llvm.arm.qadd
  22971. 3, // llvm.arm.qsub
  22972. 2, // llvm.arm.set.fpscr
  22973. 3, // llvm.arm.ssat
  22974. 2, // llvm.arm.strexd
  22975. 3, // llvm.arm.thread.pointer
  22976. 3, // llvm.arm.usat
  22977. 3, // llvm.arm.vcvtr
  22978. 3, // llvm.arm.vcvtru
  22979. 3, // llvm.bswap
  22980. 3, // llvm.convert.from.fp16
  22981. 3, // llvm.convert.to.fp16
  22982. 2, // llvm.convertff
  22983. 2, // llvm.convertfsi
  22984. 2, // llvm.convertfui
  22985. 2, // llvm.convertsif
  22986. 2, // llvm.convertss
  22987. 2, // llvm.convertsu
  22988. 2, // llvm.convertuif
  22989. 2, // llvm.convertus
  22990. 2, // llvm.convertuu
  22991. 1, // llvm.cos
  22992. 3, // llvm.ctlz
  22993. 3, // llvm.ctpop
  22994. 3, // llvm.cttz
  22995. 2, // llvm.cuda.syncthreads
  22996. 3, // llvm.dbg.declare
  22997. 3, // llvm.dbg.value
  22998. 2, // llvm.debugtrap
  22999. 3, // llvm.donothing
  23000. 2, // llvm.eh.dwarf.cfa
  23001. 2, // llvm.eh.return.i32
  23002. 2, // llvm.eh.return.i64
  23003. 3, // llvm.eh.sjlj.callsite
  23004. 2, // llvm.eh.sjlj.functioncontext
  23005. 2, // llvm.eh.sjlj.longjmp
  23006. 3, // llvm.eh.sjlj.lsda
  23007. 2, // llvm.eh.sjlj.setjmp
  23008. 3, // llvm.eh.typeid.for
  23009. 2, // llvm.eh.unwind.init
  23010. 1, // llvm.exp
  23011. 1, // llvm.exp2
  23012. 3, // llvm.expect
  23013. 1, // llvm.fabs
  23014. 1, // llvm.floor
  23015. 2, // llvm.flt.rounds
  23016. 3, // llvm.fma
  23017. 3, // llvm.fmuladd
  23018. 3, // llvm.frameaddress
  23019. 1, // llvm.gcread
  23020. 2, // llvm.gcroot
  23021. 4, // llvm.gcwrite
  23022. 3, // llvm.hexagon.A2.abs
  23023. 3, // llvm.hexagon.A2.absp
  23024. 3, // llvm.hexagon.A2.abssat
  23025. 3, // llvm.hexagon.A2.add
  23026. 3, // llvm.hexagon.A2.addh.h16.hh
  23027. 3, // llvm.hexagon.A2.addh.h16.hl
  23028. 3, // llvm.hexagon.A2.addh.h16.lh
  23029. 3, // llvm.hexagon.A2.addh.h16.ll
  23030. 3, // llvm.hexagon.A2.addh.h16.sat.hh
  23031. 3, // llvm.hexagon.A2.addh.h16.sat.hl
  23032. 3, // llvm.hexagon.A2.addh.h16.sat.lh
  23033. 3, // llvm.hexagon.A2.addh.h16.sat.ll
  23034. 3, // llvm.hexagon.A2.addh.l16.hl
  23035. 3, // llvm.hexagon.A2.addh.l16.ll
  23036. 3, // llvm.hexagon.A2.addh.l16.sat.hl
  23037. 3, // llvm.hexagon.A2.addh.l16.sat.ll
  23038. 3, // llvm.hexagon.A2.addi
  23039. 3, // llvm.hexagon.A2.addp
  23040. 3, // llvm.hexagon.A2.addpsat
  23041. 3, // llvm.hexagon.A2.addsat
  23042. 3, // llvm.hexagon.A2.addsp
  23043. 3, // llvm.hexagon.A2.and
  23044. 3, // llvm.hexagon.A2.andir
  23045. 3, // llvm.hexagon.A2.andp
  23046. 3, // llvm.hexagon.A2.aslh
  23047. 3, // llvm.hexagon.A2.asrh
  23048. 3, // llvm.hexagon.A2.combine.hh
  23049. 3, // llvm.hexagon.A2.combine.hl
  23050. 3, // llvm.hexagon.A2.combine.lh
  23051. 3, // llvm.hexagon.A2.combine.ll
  23052. 3, // llvm.hexagon.A2.combineii
  23053. 3, // llvm.hexagon.A2.combinew
  23054. 3, // llvm.hexagon.A2.max
  23055. 3, // llvm.hexagon.A2.maxp
  23056. 3, // llvm.hexagon.A2.maxu
  23057. 3, // llvm.hexagon.A2.maxup
  23058. 3, // llvm.hexagon.A2.min
  23059. 3, // llvm.hexagon.A2.minp
  23060. 3, // llvm.hexagon.A2.minu
  23061. 3, // llvm.hexagon.A2.minup
  23062. 3, // llvm.hexagon.A2.neg
  23063. 3, // llvm.hexagon.A2.negp
  23064. 3, // llvm.hexagon.A2.negsat
  23065. 3, // llvm.hexagon.A2.not
  23066. 3, // llvm.hexagon.A2.notp
  23067. 3, // llvm.hexagon.A2.or
  23068. 3, // llvm.hexagon.A2.orir
  23069. 3, // llvm.hexagon.A2.orp
  23070. 3, // llvm.hexagon.A2.roundsat
  23071. 3, // llvm.hexagon.A2.sat
  23072. 3, // llvm.hexagon.A2.satb
  23073. 3, // llvm.hexagon.A2.sath
  23074. 3, // llvm.hexagon.A2.satub
  23075. 3, // llvm.hexagon.A2.satuh
  23076. 3, // llvm.hexagon.A2.sub
  23077. 3, // llvm.hexagon.A2.subh.h16.hh
  23078. 3, // llvm.hexagon.A2.subh.h16.hl
  23079. 3, // llvm.hexagon.A2.subh.h16.lh
  23080. 3, // llvm.hexagon.A2.subh.h16.ll
  23081. 3, // llvm.hexagon.A2.subh.h16.sat.hh
  23082. 3, // llvm.hexagon.A2.subh.h16.sat.hl
  23083. 3, // llvm.hexagon.A2.subh.h16.sat.lh
  23084. 3, // llvm.hexagon.A2.subh.h16.sat.ll
  23085. 3, // llvm.hexagon.A2.subh.l16.hl
  23086. 3, // llvm.hexagon.A2.subh.l16.ll
  23087. 3, // llvm.hexagon.A2.subh.l16.sat.hl
  23088. 3, // llvm.hexagon.A2.subh.l16.sat.ll
  23089. 3, // llvm.hexagon.A2.subp
  23090. 3, // llvm.hexagon.A2.subri
  23091. 3, // llvm.hexagon.A2.subsat
  23092. 3, // llvm.hexagon.A2.svaddh
  23093. 3, // llvm.hexagon.A2.svaddhs
  23094. 3, // llvm.hexagon.A2.svadduhs
  23095. 3, // llvm.hexagon.A2.svavgh
  23096. 3, // llvm.hexagon.A2.svavghs
  23097. 3, // llvm.hexagon.A2.svnavgh
  23098. 3, // llvm.hexagon.A2.svsubh
  23099. 3, // llvm.hexagon.A2.svsubhs
  23100. 3, // llvm.hexagon.A2.svsubuhs
  23101. 3, // llvm.hexagon.A2.swiz
  23102. 3, // llvm.hexagon.A2.sxtb
  23103. 3, // llvm.hexagon.A2.sxth
  23104. 3, // llvm.hexagon.A2.sxtw
  23105. 3, // llvm.hexagon.A2.tfr
  23106. 3, // llvm.hexagon.A2.tfrih
  23107. 3, // llvm.hexagon.A2.tfril
  23108. 3, // llvm.hexagon.A2.tfrp
  23109. 3, // llvm.hexagon.A2.tfrpi
  23110. 3, // llvm.hexagon.A2.tfrsi
  23111. 3, // llvm.hexagon.A2.vabsh
  23112. 3, // llvm.hexagon.A2.vabshsat
  23113. 3, // llvm.hexagon.A2.vabsw
  23114. 3, // llvm.hexagon.A2.vabswsat
  23115. 3, // llvm.hexagon.A2.vaddb.map
  23116. 3, // llvm.hexagon.A2.vaddh
  23117. 3, // llvm.hexagon.A2.vaddhs
  23118. 3, // llvm.hexagon.A2.vaddub
  23119. 3, // llvm.hexagon.A2.vaddubs
  23120. 3, // llvm.hexagon.A2.vadduhs
  23121. 3, // llvm.hexagon.A2.vaddw
  23122. 3, // llvm.hexagon.A2.vaddws
  23123. 3, // llvm.hexagon.A2.vavgh
  23124. 3, // llvm.hexagon.A2.vavghcr
  23125. 3, // llvm.hexagon.A2.vavghr
  23126. 3, // llvm.hexagon.A2.vavgub
  23127. 3, // llvm.hexagon.A2.vavgubr
  23128. 3, // llvm.hexagon.A2.vavguh
  23129. 3, // llvm.hexagon.A2.vavguhr
  23130. 3, // llvm.hexagon.A2.vavguw
  23131. 3, // llvm.hexagon.A2.vavguwr
  23132. 3, // llvm.hexagon.A2.vavgw
  23133. 3, // llvm.hexagon.A2.vavgwcr
  23134. 3, // llvm.hexagon.A2.vavgwr
  23135. 3, // llvm.hexagon.A2.vcmpbeq
  23136. 3, // llvm.hexagon.A2.vcmpbgtu
  23137. 3, // llvm.hexagon.A2.vcmpheq
  23138. 3, // llvm.hexagon.A2.vcmphgt
  23139. 3, // llvm.hexagon.A2.vcmphgtu
  23140. 3, // llvm.hexagon.A2.vcmpweq
  23141. 3, // llvm.hexagon.A2.vcmpwgt
  23142. 3, // llvm.hexagon.A2.vcmpwgtu
  23143. 3, // llvm.hexagon.A2.vconj
  23144. 3, // llvm.hexagon.A2.vmaxb
  23145. 3, // llvm.hexagon.A2.vmaxh
  23146. 3, // llvm.hexagon.A2.vmaxub
  23147. 3, // llvm.hexagon.A2.vmaxuh
  23148. 3, // llvm.hexagon.A2.vmaxuw
  23149. 3, // llvm.hexagon.A2.vmaxw
  23150. 3, // llvm.hexagon.A2.vminb
  23151. 3, // llvm.hexagon.A2.vminh
  23152. 3, // llvm.hexagon.A2.vminub
  23153. 3, // llvm.hexagon.A2.vminuh
  23154. 3, // llvm.hexagon.A2.vminuw
  23155. 3, // llvm.hexagon.A2.vminw
  23156. 3, // llvm.hexagon.A2.vnavgh
  23157. 3, // llvm.hexagon.A2.vnavghcr
  23158. 3, // llvm.hexagon.A2.vnavghr
  23159. 3, // llvm.hexagon.A2.vnavgw
  23160. 3, // llvm.hexagon.A2.vnavgwcr
  23161. 3, // llvm.hexagon.A2.vnavgwr
  23162. 3, // llvm.hexagon.A2.vraddub
  23163. 3, // llvm.hexagon.A2.vraddub.acc
  23164. 3, // llvm.hexagon.A2.vrsadub
  23165. 3, // llvm.hexagon.A2.vrsadub.acc
  23166. 3, // llvm.hexagon.A2.vsubb.map
  23167. 3, // llvm.hexagon.A2.vsubh
  23168. 3, // llvm.hexagon.A2.vsubhs
  23169. 3, // llvm.hexagon.A2.vsubub
  23170. 3, // llvm.hexagon.A2.vsububs
  23171. 3, // llvm.hexagon.A2.vsubuhs
  23172. 3, // llvm.hexagon.A2.vsubw
  23173. 3, // llvm.hexagon.A2.vsubws
  23174. 3, // llvm.hexagon.A2.xor
  23175. 3, // llvm.hexagon.A2.xorp
  23176. 3, // llvm.hexagon.A2.zxtb
  23177. 3, // llvm.hexagon.A2.zxth
  23178. 3, // llvm.hexagon.A4.andn
  23179. 3, // llvm.hexagon.A4.andnp
  23180. 3, // llvm.hexagon.A4.bitsplit
  23181. 3, // llvm.hexagon.A4.bitspliti
  23182. 3, // llvm.hexagon.A4.boundscheck
  23183. 3, // llvm.hexagon.A4.cmpbeq
  23184. 3, // llvm.hexagon.A4.cmpbeqi
  23185. 3, // llvm.hexagon.A4.cmpbgt
  23186. 3, // llvm.hexagon.A4.cmpbgti
  23187. 3, // llvm.hexagon.A4.cmpbgtu
  23188. 3, // llvm.hexagon.A4.cmpbgtui
  23189. 3, // llvm.hexagon.A4.cmpheq
  23190. 3, // llvm.hexagon.A4.cmpheqi
  23191. 3, // llvm.hexagon.A4.cmphgt
  23192. 3, // llvm.hexagon.A4.cmphgti
  23193. 3, // llvm.hexagon.A4.cmphgtu
  23194. 3, // llvm.hexagon.A4.cmphgtui
  23195. 3, // llvm.hexagon.A4.combineir
  23196. 3, // llvm.hexagon.A4.combineri
  23197. 3, // llvm.hexagon.A4.cround.ri
  23198. 3, // llvm.hexagon.A4.cround.rr
  23199. 3, // llvm.hexagon.A4.modwrapu
  23200. 3, // llvm.hexagon.A4.orn
  23201. 3, // llvm.hexagon.A4.ornp
  23202. 3, // llvm.hexagon.A4.rcmpeq
  23203. 3, // llvm.hexagon.A4.rcmpeqi
  23204. 3, // llvm.hexagon.A4.rcmpneq
  23205. 3, // llvm.hexagon.A4.rcmpneqi
  23206. 3, // llvm.hexagon.A4.round.ri
  23207. 3, // llvm.hexagon.A4.round.ri.sat
  23208. 3, // llvm.hexagon.A4.round.rr
  23209. 3, // llvm.hexagon.A4.round.rr.sat
  23210. 3, // llvm.hexagon.A4.tlbmatch
  23211. 3, // llvm.hexagon.A4.vcmpbeq.any
  23212. 3, // llvm.hexagon.A4.vcmpbeqi
  23213. 3, // llvm.hexagon.A4.vcmpbgt
  23214. 3, // llvm.hexagon.A4.vcmpbgti
  23215. 3, // llvm.hexagon.A4.vcmpbgtui
  23216. 3, // llvm.hexagon.A4.vcmpheqi
  23217. 3, // llvm.hexagon.A4.vcmphgti
  23218. 3, // llvm.hexagon.A4.vcmphgtui
  23219. 3, // llvm.hexagon.A4.vcmpweqi
  23220. 3, // llvm.hexagon.A4.vcmpwgti
  23221. 3, // llvm.hexagon.A4.vcmpwgtui
  23222. 3, // llvm.hexagon.A4.vrmaxh
  23223. 3, // llvm.hexagon.A4.vrmaxuh
  23224. 3, // llvm.hexagon.A4.vrmaxuw
  23225. 3, // llvm.hexagon.A4.vrmaxw
  23226. 3, // llvm.hexagon.A4.vrminh
  23227. 3, // llvm.hexagon.A4.vrminuh
  23228. 3, // llvm.hexagon.A4.vrminuw
  23229. 3, // llvm.hexagon.A4.vrminw
  23230. 3, // llvm.hexagon.A5.vaddhubs
  23231. 3, // llvm.hexagon.C2.all8
  23232. 3, // llvm.hexagon.C2.and
  23233. 3, // llvm.hexagon.C2.andn
  23234. 3, // llvm.hexagon.C2.any8
  23235. 3, // llvm.hexagon.C2.bitsclr
  23236. 3, // llvm.hexagon.C2.bitsclri
  23237. 3, // llvm.hexagon.C2.bitsset
  23238. 3, // llvm.hexagon.C2.cmpeq
  23239. 3, // llvm.hexagon.C2.cmpeqi
  23240. 3, // llvm.hexagon.C2.cmpeqp
  23241. 3, // llvm.hexagon.C2.cmpgei
  23242. 3, // llvm.hexagon.C2.cmpgeui
  23243. 3, // llvm.hexagon.C2.cmpgt
  23244. 3, // llvm.hexagon.C2.cmpgti
  23245. 3, // llvm.hexagon.C2.cmpgtp
  23246. 3, // llvm.hexagon.C2.cmpgtu
  23247. 3, // llvm.hexagon.C2.cmpgtui
  23248. 3, // llvm.hexagon.C2.cmpgtup
  23249. 3, // llvm.hexagon.C2.cmplt
  23250. 3, // llvm.hexagon.C2.cmpltu
  23251. 3, // llvm.hexagon.C2.mask
  23252. 3, // llvm.hexagon.C2.mux
  23253. 3, // llvm.hexagon.C2.muxii
  23254. 3, // llvm.hexagon.C2.muxir
  23255. 3, // llvm.hexagon.C2.muxri
  23256. 3, // llvm.hexagon.C2.not
  23257. 3, // llvm.hexagon.C2.or
  23258. 3, // llvm.hexagon.C2.orn
  23259. 3, // llvm.hexagon.C2.pxfer.map
  23260. 3, // llvm.hexagon.C2.tfrpr
  23261. 3, // llvm.hexagon.C2.tfrrp
  23262. 3, // llvm.hexagon.C2.vitpack
  23263. 3, // llvm.hexagon.C2.vmux
  23264. 3, // llvm.hexagon.C2.xor
  23265. 3, // llvm.hexagon.C4.and.and
  23266. 3, // llvm.hexagon.C4.and.andn
  23267. 3, // llvm.hexagon.C4.and.or
  23268. 3, // llvm.hexagon.C4.and.orn
  23269. 3, // llvm.hexagon.C4.cmplte
  23270. 3, // llvm.hexagon.C4.cmpltei
  23271. 3, // llvm.hexagon.C4.cmplteu
  23272. 3, // llvm.hexagon.C4.cmplteui
  23273. 3, // llvm.hexagon.C4.cmpneq
  23274. 3, // llvm.hexagon.C4.cmpneqi
  23275. 3, // llvm.hexagon.C4.fastcorner9
  23276. 3, // llvm.hexagon.C4.fastcorner9.not
  23277. 3, // llvm.hexagon.C4.nbitsclr
  23278. 3, // llvm.hexagon.C4.nbitsclri
  23279. 3, // llvm.hexagon.C4.nbitsset
  23280. 3, // llvm.hexagon.C4.or.and
  23281. 3, // llvm.hexagon.C4.or.andn
  23282. 3, // llvm.hexagon.C4.or.or
  23283. 3, // llvm.hexagon.C4.or.orn
  23284. 3, // llvm.hexagon.F2.conv.d2df
  23285. 3, // llvm.hexagon.F2.conv.d2sf
  23286. 3, // llvm.hexagon.F2.conv.df2d
  23287. 3, // llvm.hexagon.F2.conv.df2d.chop
  23288. 3, // llvm.hexagon.F2.conv.df2sf
  23289. 3, // llvm.hexagon.F2.conv.df2ud
  23290. 3, // llvm.hexagon.F2.conv.df2ud.chop
  23291. 3, // llvm.hexagon.F2.conv.df2uw
  23292. 3, // llvm.hexagon.F2.conv.df2uw.chop
  23293. 3, // llvm.hexagon.F2.conv.df2w
  23294. 3, // llvm.hexagon.F2.conv.df2w.chop
  23295. 3, // llvm.hexagon.F2.conv.sf2d
  23296. 3, // llvm.hexagon.F2.conv.sf2d.chop
  23297. 3, // llvm.hexagon.F2.conv.sf2df
  23298. 3, // llvm.hexagon.F2.conv.sf2ud
  23299. 3, // llvm.hexagon.F2.conv.sf2ud.chop
  23300. 3, // llvm.hexagon.F2.conv.sf2uw
  23301. 3, // llvm.hexagon.F2.conv.sf2uw.chop
  23302. 3, // llvm.hexagon.F2.conv.sf2w
  23303. 3, // llvm.hexagon.F2.conv.sf2w.chop
  23304. 3, // llvm.hexagon.F2.conv.ud2df
  23305. 3, // llvm.hexagon.F2.conv.ud2sf
  23306. 3, // llvm.hexagon.F2.conv.uw2df
  23307. 3, // llvm.hexagon.F2.conv.uw2sf
  23308. 3, // llvm.hexagon.F2.conv.w2df
  23309. 3, // llvm.hexagon.F2.conv.w2sf
  23310. 3, // llvm.hexagon.F2.dfadd
  23311. 3, // llvm.hexagon.F2.dfclass
  23312. 3, // llvm.hexagon.F2.dfcmpeq
  23313. 3, // llvm.hexagon.F2.dfcmpge
  23314. 3, // llvm.hexagon.F2.dfcmpgt
  23315. 3, // llvm.hexagon.F2.dfcmpuo
  23316. 3, // llvm.hexagon.F2.dffixupd
  23317. 3, // llvm.hexagon.F2.dffixupn
  23318. 3, // llvm.hexagon.F2.dffixupr
  23319. 3, // llvm.hexagon.F2.dffma
  23320. 3, // llvm.hexagon.F2.dffma.lib
  23321. 3, // llvm.hexagon.F2.dffma.sc
  23322. 3, // llvm.hexagon.F2.dffms
  23323. 3, // llvm.hexagon.F2.dffms.lib
  23324. 3, // llvm.hexagon.F2.dfimm.n
  23325. 3, // llvm.hexagon.F2.dfimm.p
  23326. 3, // llvm.hexagon.F2.dfmax
  23327. 3, // llvm.hexagon.F2.dfmin
  23328. 3, // llvm.hexagon.F2.dfmpy
  23329. 3, // llvm.hexagon.F2.dfsub
  23330. 3, // llvm.hexagon.F2.sfadd
  23331. 3, // llvm.hexagon.F2.sfclass
  23332. 3, // llvm.hexagon.F2.sfcmpeq
  23333. 3, // llvm.hexagon.F2.sfcmpge
  23334. 3, // llvm.hexagon.F2.sfcmpgt
  23335. 3, // llvm.hexagon.F2.sfcmpuo
  23336. 3, // llvm.hexagon.F2.sffixupd
  23337. 3, // llvm.hexagon.F2.sffixupn
  23338. 3, // llvm.hexagon.F2.sffixupr
  23339. 3, // llvm.hexagon.F2.sffma
  23340. 3, // llvm.hexagon.F2.sffma.lib
  23341. 3, // llvm.hexagon.F2.sffma.sc
  23342. 3, // llvm.hexagon.F2.sffms
  23343. 3, // llvm.hexagon.F2.sffms.lib
  23344. 3, // llvm.hexagon.F2.sfimm.n
  23345. 3, // llvm.hexagon.F2.sfimm.p
  23346. 3, // llvm.hexagon.F2.sfmax
  23347. 3, // llvm.hexagon.F2.sfmin
  23348. 3, // llvm.hexagon.F2.sfmpy
  23349. 3, // llvm.hexagon.F2.sfsub
  23350. 3, // llvm.hexagon.M2.acci
  23351. 3, // llvm.hexagon.M2.accii
  23352. 3, // llvm.hexagon.M2.cmaci.s0
  23353. 3, // llvm.hexagon.M2.cmacr.s0
  23354. 3, // llvm.hexagon.M2.cmacs.s0
  23355. 3, // llvm.hexagon.M2.cmacs.s1
  23356. 3, // llvm.hexagon.M2.cmacsc.s0
  23357. 3, // llvm.hexagon.M2.cmacsc.s1
  23358. 3, // llvm.hexagon.M2.cmpyi.s0
  23359. 3, // llvm.hexagon.M2.cmpyr.s0
  23360. 3, // llvm.hexagon.M2.cmpyrs.s0
  23361. 3, // llvm.hexagon.M2.cmpyrs.s1
  23362. 3, // llvm.hexagon.M2.cmpyrsc.s0
  23363. 3, // llvm.hexagon.M2.cmpyrsc.s1
  23364. 3, // llvm.hexagon.M2.cmpys.s0
  23365. 3, // llvm.hexagon.M2.cmpys.s1
  23366. 3, // llvm.hexagon.M2.cmpysc.s0
  23367. 3, // llvm.hexagon.M2.cmpysc.s1
  23368. 3, // llvm.hexagon.M2.cnacs.s0
  23369. 3, // llvm.hexagon.M2.cnacs.s1
  23370. 3, // llvm.hexagon.M2.cnacsc.s0
  23371. 3, // llvm.hexagon.M2.cnacsc.s1
  23372. 3, // llvm.hexagon.M2.dpmpyss.acc.s0
  23373. 3, // llvm.hexagon.M2.dpmpyss.nac.s0
  23374. 3, // llvm.hexagon.M2.dpmpyss.rnd.s0
  23375. 3, // llvm.hexagon.M2.dpmpyss.s0
  23376. 3, // llvm.hexagon.M2.dpmpyuu.acc.s0
  23377. 3, // llvm.hexagon.M2.dpmpyuu.nac.s0
  23378. 3, // llvm.hexagon.M2.dpmpyuu.s0
  23379. 3, // llvm.hexagon.M2.hmmpyh.rs1
  23380. 3, // llvm.hexagon.M2.hmmpyh.s1
  23381. 3, // llvm.hexagon.M2.hmmpyl.rs1
  23382. 3, // llvm.hexagon.M2.hmmpyl.s1
  23383. 3, // llvm.hexagon.M2.maci
  23384. 3, // llvm.hexagon.M2.macsin
  23385. 3, // llvm.hexagon.M2.macsip
  23386. 3, // llvm.hexagon.M2.mmachs.rs0
  23387. 3, // llvm.hexagon.M2.mmachs.rs1
  23388. 3, // llvm.hexagon.M2.mmachs.s0
  23389. 3, // llvm.hexagon.M2.mmachs.s1
  23390. 3, // llvm.hexagon.M2.mmacls.rs0
  23391. 3, // llvm.hexagon.M2.mmacls.rs1
  23392. 3, // llvm.hexagon.M2.mmacls.s0
  23393. 3, // llvm.hexagon.M2.mmacls.s1
  23394. 3, // llvm.hexagon.M2.mmacuhs.rs0
  23395. 3, // llvm.hexagon.M2.mmacuhs.rs1
  23396. 3, // llvm.hexagon.M2.mmacuhs.s0
  23397. 3, // llvm.hexagon.M2.mmacuhs.s1
  23398. 3, // llvm.hexagon.M2.mmaculs.rs0
  23399. 3, // llvm.hexagon.M2.mmaculs.rs1
  23400. 3, // llvm.hexagon.M2.mmaculs.s0
  23401. 3, // llvm.hexagon.M2.mmaculs.s1
  23402. 3, // llvm.hexagon.M2.mmpyh.rs0
  23403. 3, // llvm.hexagon.M2.mmpyh.rs1
  23404. 3, // llvm.hexagon.M2.mmpyh.s0
  23405. 3, // llvm.hexagon.M2.mmpyh.s1
  23406. 3, // llvm.hexagon.M2.mmpyl.rs0
  23407. 3, // llvm.hexagon.M2.mmpyl.rs1
  23408. 3, // llvm.hexagon.M2.mmpyl.s0
  23409. 3, // llvm.hexagon.M2.mmpyl.s1
  23410. 3, // llvm.hexagon.M2.mmpyuh.rs0
  23411. 3, // llvm.hexagon.M2.mmpyuh.rs1
  23412. 3, // llvm.hexagon.M2.mmpyuh.s0
  23413. 3, // llvm.hexagon.M2.mmpyuh.s1
  23414. 3, // llvm.hexagon.M2.mmpyul.rs0
  23415. 3, // llvm.hexagon.M2.mmpyul.rs1
  23416. 3, // llvm.hexagon.M2.mmpyul.s0
  23417. 3, // llvm.hexagon.M2.mmpyul.s1
  23418. 3, // llvm.hexagon.M2.mpy.acc.hh.s0
  23419. 3, // llvm.hexagon.M2.mpy.acc.hh.s1
  23420. 3, // llvm.hexagon.M2.mpy.acc.hl.s0
  23421. 3, // llvm.hexagon.M2.mpy.acc.hl.s1
  23422. 3, // llvm.hexagon.M2.mpy.acc.lh.s0
  23423. 3, // llvm.hexagon.M2.mpy.acc.lh.s1
  23424. 3, // llvm.hexagon.M2.mpy.acc.ll.s0
  23425. 3, // llvm.hexagon.M2.mpy.acc.ll.s1
  23426. 3, // llvm.hexagon.M2.mpy.acc.sat.hh.s0
  23427. 3, // llvm.hexagon.M2.mpy.acc.sat.hh.s1
  23428. 3, // llvm.hexagon.M2.mpy.acc.sat.hl.s0
  23429. 3, // llvm.hexagon.M2.mpy.acc.sat.hl.s1
  23430. 3, // llvm.hexagon.M2.mpy.acc.sat.lh.s0
  23431. 3, // llvm.hexagon.M2.mpy.acc.sat.lh.s1
  23432. 3, // llvm.hexagon.M2.mpy.acc.sat.ll.s0
  23433. 3, // llvm.hexagon.M2.mpy.acc.sat.ll.s1
  23434. 3, // llvm.hexagon.M2.mpy.hh.s0
  23435. 3, // llvm.hexagon.M2.mpy.hh.s1
  23436. 3, // llvm.hexagon.M2.mpy.hl.s0
  23437. 3, // llvm.hexagon.M2.mpy.hl.s1
  23438. 3, // llvm.hexagon.M2.mpy.lh.s0
  23439. 3, // llvm.hexagon.M2.mpy.lh.s1
  23440. 3, // llvm.hexagon.M2.mpy.ll.s0
  23441. 3, // llvm.hexagon.M2.mpy.ll.s1
  23442. 3, // llvm.hexagon.M2.mpy.nac.hh.s0
  23443. 3, // llvm.hexagon.M2.mpy.nac.hh.s1
  23444. 3, // llvm.hexagon.M2.mpy.nac.hl.s0
  23445. 3, // llvm.hexagon.M2.mpy.nac.hl.s1
  23446. 3, // llvm.hexagon.M2.mpy.nac.lh.s0
  23447. 3, // llvm.hexagon.M2.mpy.nac.lh.s1
  23448. 3, // llvm.hexagon.M2.mpy.nac.ll.s0
  23449. 3, // llvm.hexagon.M2.mpy.nac.ll.s1
  23450. 3, // llvm.hexagon.M2.mpy.nac.sat.hh.s0
  23451. 3, // llvm.hexagon.M2.mpy.nac.sat.hh.s1
  23452. 3, // llvm.hexagon.M2.mpy.nac.sat.hl.s0
  23453. 3, // llvm.hexagon.M2.mpy.nac.sat.hl.s1
  23454. 3, // llvm.hexagon.M2.mpy.nac.sat.lh.s0
  23455. 3, // llvm.hexagon.M2.mpy.nac.sat.lh.s1
  23456. 3, // llvm.hexagon.M2.mpy.nac.sat.ll.s0
  23457. 3, // llvm.hexagon.M2.mpy.nac.sat.ll.s1
  23458. 3, // llvm.hexagon.M2.mpy.rnd.hh.s0
  23459. 3, // llvm.hexagon.M2.mpy.rnd.hh.s1
  23460. 3, // llvm.hexagon.M2.mpy.rnd.hl.s0
  23461. 3, // llvm.hexagon.M2.mpy.rnd.hl.s1
  23462. 3, // llvm.hexagon.M2.mpy.rnd.lh.s0
  23463. 3, // llvm.hexagon.M2.mpy.rnd.lh.s1
  23464. 3, // llvm.hexagon.M2.mpy.rnd.ll.s0
  23465. 3, // llvm.hexagon.M2.mpy.rnd.ll.s1
  23466. 3, // llvm.hexagon.M2.mpy.sat.hh.s0
  23467. 3, // llvm.hexagon.M2.mpy.sat.hh.s1
  23468. 3, // llvm.hexagon.M2.mpy.sat.hl.s0
  23469. 3, // llvm.hexagon.M2.mpy.sat.hl.s1
  23470. 3, // llvm.hexagon.M2.mpy.sat.lh.s0
  23471. 3, // llvm.hexagon.M2.mpy.sat.lh.s1
  23472. 3, // llvm.hexagon.M2.mpy.sat.ll.s0
  23473. 3, // llvm.hexagon.M2.mpy.sat.ll.s1
  23474. 3, // llvm.hexagon.M2.mpy.sat.rnd.hh.s0
  23475. 3, // llvm.hexagon.M2.mpy.sat.rnd.hh.s1
  23476. 3, // llvm.hexagon.M2.mpy.sat.rnd.hl.s0
  23477. 3, // llvm.hexagon.M2.mpy.sat.rnd.hl.s1
  23478. 3, // llvm.hexagon.M2.mpy.sat.rnd.lh.s0
  23479. 3, // llvm.hexagon.M2.mpy.sat.rnd.lh.s1
  23480. 3, // llvm.hexagon.M2.mpy.sat.rnd.ll.s0
  23481. 3, // llvm.hexagon.M2.mpy.sat.rnd.ll.s1
  23482. 3, // llvm.hexagon.M2.mpy.up
  23483. 3, // llvm.hexagon.M2.mpy.up.s1
  23484. 3, // llvm.hexagon.M2.mpy.up.s1.sat
  23485. 3, // llvm.hexagon.M2.mpyd.acc.hh.s0
  23486. 3, // llvm.hexagon.M2.mpyd.acc.hh.s1
  23487. 3, // llvm.hexagon.M2.mpyd.acc.hl.s0
  23488. 3, // llvm.hexagon.M2.mpyd.acc.hl.s1
  23489. 3, // llvm.hexagon.M2.mpyd.acc.lh.s0
  23490. 3, // llvm.hexagon.M2.mpyd.acc.lh.s1
  23491. 3, // llvm.hexagon.M2.mpyd.acc.ll.s0
  23492. 3, // llvm.hexagon.M2.mpyd.acc.ll.s1
  23493. 3, // llvm.hexagon.M2.mpyd.hh.s0
  23494. 3, // llvm.hexagon.M2.mpyd.hh.s1
  23495. 3, // llvm.hexagon.M2.mpyd.hl.s0
  23496. 3, // llvm.hexagon.M2.mpyd.hl.s1
  23497. 3, // llvm.hexagon.M2.mpyd.lh.s0
  23498. 3, // llvm.hexagon.M2.mpyd.lh.s1
  23499. 3, // llvm.hexagon.M2.mpyd.ll.s0
  23500. 3, // llvm.hexagon.M2.mpyd.ll.s1
  23501. 3, // llvm.hexagon.M2.mpyd.nac.hh.s0
  23502. 3, // llvm.hexagon.M2.mpyd.nac.hh.s1
  23503. 3, // llvm.hexagon.M2.mpyd.nac.hl.s0
  23504. 3, // llvm.hexagon.M2.mpyd.nac.hl.s1
  23505. 3, // llvm.hexagon.M2.mpyd.nac.lh.s0
  23506. 3, // llvm.hexagon.M2.mpyd.nac.lh.s1
  23507. 3, // llvm.hexagon.M2.mpyd.nac.ll.s0
  23508. 3, // llvm.hexagon.M2.mpyd.nac.ll.s1
  23509. 3, // llvm.hexagon.M2.mpyd.rnd.hh.s0
  23510. 3, // llvm.hexagon.M2.mpyd.rnd.hh.s1
  23511. 3, // llvm.hexagon.M2.mpyd.rnd.hl.s0
  23512. 3, // llvm.hexagon.M2.mpyd.rnd.hl.s1
  23513. 3, // llvm.hexagon.M2.mpyd.rnd.lh.s0
  23514. 3, // llvm.hexagon.M2.mpyd.rnd.lh.s1
  23515. 3, // llvm.hexagon.M2.mpyd.rnd.ll.s0
  23516. 3, // llvm.hexagon.M2.mpyd.rnd.ll.s1
  23517. 3, // llvm.hexagon.M2.mpyi
  23518. 3, // llvm.hexagon.M2.mpysmi
  23519. 3, // llvm.hexagon.M2.mpysu.up
  23520. 3, // llvm.hexagon.M2.mpyu.acc.hh.s0
  23521. 3, // llvm.hexagon.M2.mpyu.acc.hh.s1
  23522. 3, // llvm.hexagon.M2.mpyu.acc.hl.s0
  23523. 3, // llvm.hexagon.M2.mpyu.acc.hl.s1
  23524. 3, // llvm.hexagon.M2.mpyu.acc.lh.s0
  23525. 3, // llvm.hexagon.M2.mpyu.acc.lh.s1
  23526. 3, // llvm.hexagon.M2.mpyu.acc.ll.s0
  23527. 3, // llvm.hexagon.M2.mpyu.acc.ll.s1
  23528. 3, // llvm.hexagon.M2.mpyu.hh.s0
  23529. 3, // llvm.hexagon.M2.mpyu.hh.s1
  23530. 3, // llvm.hexagon.M2.mpyu.hl.s0
  23531. 3, // llvm.hexagon.M2.mpyu.hl.s1
  23532. 3, // llvm.hexagon.M2.mpyu.lh.s0
  23533. 3, // llvm.hexagon.M2.mpyu.lh.s1
  23534. 3, // llvm.hexagon.M2.mpyu.ll.s0
  23535. 3, // llvm.hexagon.M2.mpyu.ll.s1
  23536. 3, // llvm.hexagon.M2.mpyu.nac.hh.s0
  23537. 3, // llvm.hexagon.M2.mpyu.nac.hh.s1
  23538. 3, // llvm.hexagon.M2.mpyu.nac.hl.s0
  23539. 3, // llvm.hexagon.M2.mpyu.nac.hl.s1
  23540. 3, // llvm.hexagon.M2.mpyu.nac.lh.s0
  23541. 3, // llvm.hexagon.M2.mpyu.nac.lh.s1
  23542. 3, // llvm.hexagon.M2.mpyu.nac.ll.s0
  23543. 3, // llvm.hexagon.M2.mpyu.nac.ll.s1
  23544. 3, // llvm.hexagon.M2.mpyu.up
  23545. 3, // llvm.hexagon.M2.mpyud.acc.hh.s0
  23546. 3, // llvm.hexagon.M2.mpyud.acc.hh.s1
  23547. 3, // llvm.hexagon.M2.mpyud.acc.hl.s0
  23548. 3, // llvm.hexagon.M2.mpyud.acc.hl.s1
  23549. 3, // llvm.hexagon.M2.mpyud.acc.lh.s0
  23550. 3, // llvm.hexagon.M2.mpyud.acc.lh.s1
  23551. 3, // llvm.hexagon.M2.mpyud.acc.ll.s0
  23552. 3, // llvm.hexagon.M2.mpyud.acc.ll.s1
  23553. 3, // llvm.hexagon.M2.mpyud.hh.s0
  23554. 3, // llvm.hexagon.M2.mpyud.hh.s1
  23555. 3, // llvm.hexagon.M2.mpyud.hl.s0
  23556. 3, // llvm.hexagon.M2.mpyud.hl.s1
  23557. 3, // llvm.hexagon.M2.mpyud.lh.s0
  23558. 3, // llvm.hexagon.M2.mpyud.lh.s1
  23559. 3, // llvm.hexagon.M2.mpyud.ll.s0
  23560. 3, // llvm.hexagon.M2.mpyud.ll.s1
  23561. 3, // llvm.hexagon.M2.mpyud.nac.hh.s0
  23562. 3, // llvm.hexagon.M2.mpyud.nac.hh.s1
  23563. 3, // llvm.hexagon.M2.mpyud.nac.hl.s0
  23564. 3, // llvm.hexagon.M2.mpyud.nac.hl.s1
  23565. 3, // llvm.hexagon.M2.mpyud.nac.lh.s0
  23566. 3, // llvm.hexagon.M2.mpyud.nac.lh.s1
  23567. 3, // llvm.hexagon.M2.mpyud.nac.ll.s0
  23568. 3, // llvm.hexagon.M2.mpyud.nac.ll.s1
  23569. 3, // llvm.hexagon.M2.mpyui
  23570. 3, // llvm.hexagon.M2.nacci
  23571. 3, // llvm.hexagon.M2.naccii
  23572. 3, // llvm.hexagon.M2.subacc
  23573. 3, // llvm.hexagon.M2.vabsdiffh
  23574. 3, // llvm.hexagon.M2.vabsdiffw
  23575. 3, // llvm.hexagon.M2.vcmac.s0.sat.i
  23576. 3, // llvm.hexagon.M2.vcmac.s0.sat.r
  23577. 3, // llvm.hexagon.M2.vcmpy.s0.sat.i
  23578. 3, // llvm.hexagon.M2.vcmpy.s0.sat.r
  23579. 3, // llvm.hexagon.M2.vcmpy.s1.sat.i
  23580. 3, // llvm.hexagon.M2.vcmpy.s1.sat.r
  23581. 3, // llvm.hexagon.M2.vdmacs.s0
  23582. 3, // llvm.hexagon.M2.vdmacs.s1
  23583. 3, // llvm.hexagon.M2.vdmpyrs.s0
  23584. 3, // llvm.hexagon.M2.vdmpyrs.s1
  23585. 3, // llvm.hexagon.M2.vdmpys.s0
  23586. 3, // llvm.hexagon.M2.vdmpys.s1
  23587. 3, // llvm.hexagon.M2.vmac2
  23588. 3, // llvm.hexagon.M2.vmac2es
  23589. 3, // llvm.hexagon.M2.vmac2es.s0
  23590. 3, // llvm.hexagon.M2.vmac2es.s1
  23591. 3, // llvm.hexagon.M2.vmac2s.s0
  23592. 3, // llvm.hexagon.M2.vmac2s.s1
  23593. 3, // llvm.hexagon.M2.vmac2su.s0
  23594. 3, // llvm.hexagon.M2.vmac2su.s1
  23595. 3, // llvm.hexagon.M2.vmpy2es.s0
  23596. 3, // llvm.hexagon.M2.vmpy2es.s1
  23597. 3, // llvm.hexagon.M2.vmpy2s.s0
  23598. 3, // llvm.hexagon.M2.vmpy2s.s0pack
  23599. 3, // llvm.hexagon.M2.vmpy2s.s1
  23600. 3, // llvm.hexagon.M2.vmpy2s.s1pack
  23601. 3, // llvm.hexagon.M2.vmpy2su.s0
  23602. 3, // llvm.hexagon.M2.vmpy2su.s1
  23603. 3, // llvm.hexagon.M2.vraddh
  23604. 3, // llvm.hexagon.M2.vradduh
  23605. 3, // llvm.hexagon.M2.vrcmaci.s0
  23606. 3, // llvm.hexagon.M2.vrcmaci.s0c
  23607. 3, // llvm.hexagon.M2.vrcmacr.s0
  23608. 3, // llvm.hexagon.M2.vrcmacr.s0c
  23609. 3, // llvm.hexagon.M2.vrcmpyi.s0
  23610. 3, // llvm.hexagon.M2.vrcmpyi.s0c
  23611. 3, // llvm.hexagon.M2.vrcmpyr.s0
  23612. 3, // llvm.hexagon.M2.vrcmpyr.s0c
  23613. 3, // llvm.hexagon.M2.vrcmpys.acc.s1
  23614. 3, // llvm.hexagon.M2.vrcmpys.s1
  23615. 3, // llvm.hexagon.M2.vrcmpys.s1rp
  23616. 3, // llvm.hexagon.M2.vrmac.s0
  23617. 3, // llvm.hexagon.M2.vrmpy.s0
  23618. 3, // llvm.hexagon.M2.xor.xacc
  23619. 3, // llvm.hexagon.M4.and.and
  23620. 3, // llvm.hexagon.M4.and.andn
  23621. 3, // llvm.hexagon.M4.and.or
  23622. 3, // llvm.hexagon.M4.and.xor
  23623. 3, // llvm.hexagon.M4.cmpyi.wh
  23624. 3, // llvm.hexagon.M4.cmpyi.whc
  23625. 3, // llvm.hexagon.M4.cmpyr.wh
  23626. 3, // llvm.hexagon.M4.cmpyr.whc
  23627. 3, // llvm.hexagon.M4.mac.up.s1.sat
  23628. 3, // llvm.hexagon.M4.mpyri.addi
  23629. 3, // llvm.hexagon.M4.mpyri.addr
  23630. 3, // llvm.hexagon.M4.mpyri.addr.u2
  23631. 3, // llvm.hexagon.M4.mpyrr.addi
  23632. 3, // llvm.hexagon.M4.mpyrr.addr
  23633. 3, // llvm.hexagon.M4.nac.up.s1.sat
  23634. 3, // llvm.hexagon.M4.or.and
  23635. 3, // llvm.hexagon.M4.or.andn
  23636. 3, // llvm.hexagon.M4.or.or
  23637. 3, // llvm.hexagon.M4.or.xor
  23638. 3, // llvm.hexagon.M4.pmpyw
  23639. 3, // llvm.hexagon.M4.pmpyw.acc
  23640. 3, // llvm.hexagon.M4.vpmpyh
  23641. 3, // llvm.hexagon.M4.vpmpyh.acc
  23642. 3, // llvm.hexagon.M4.vrmpyeh.acc.s0
  23643. 3, // llvm.hexagon.M4.vrmpyeh.acc.s1
  23644. 3, // llvm.hexagon.M4.vrmpyeh.s0
  23645. 3, // llvm.hexagon.M4.vrmpyeh.s1
  23646. 3, // llvm.hexagon.M4.vrmpyoh.acc.s0
  23647. 3, // llvm.hexagon.M4.vrmpyoh.acc.s1
  23648. 3, // llvm.hexagon.M4.vrmpyoh.s0
  23649. 3, // llvm.hexagon.M4.vrmpyoh.s1
  23650. 3, // llvm.hexagon.M4.xor.and
  23651. 3, // llvm.hexagon.M4.xor.andn
  23652. 3, // llvm.hexagon.M4.xor.or
  23653. 3, // llvm.hexagon.M4.xor.xacc
  23654. 3, // llvm.hexagon.M5.vdmacbsu
  23655. 3, // llvm.hexagon.M5.vdmpybsu
  23656. 3, // llvm.hexagon.M5.vmacbsu
  23657. 3, // llvm.hexagon.M5.vmacbuu
  23658. 3, // llvm.hexagon.M5.vmpybsu
  23659. 3, // llvm.hexagon.M5.vmpybuu
  23660. 3, // llvm.hexagon.M5.vrmacbsu
  23661. 3, // llvm.hexagon.M5.vrmacbuu
  23662. 3, // llvm.hexagon.M5.vrmpybsu
  23663. 3, // llvm.hexagon.M5.vrmpybuu
  23664. 3, // llvm.hexagon.S2.addasl.rrri
  23665. 3, // llvm.hexagon.S2.asl.i.p
  23666. 3, // llvm.hexagon.S2.asl.i.p.acc
  23667. 3, // llvm.hexagon.S2.asl.i.p.and
  23668. 3, // llvm.hexagon.S2.asl.i.p.nac
  23669. 3, // llvm.hexagon.S2.asl.i.p.or
  23670. 3, // llvm.hexagon.S2.asl.i.p.xacc
  23671. 3, // llvm.hexagon.S2.asl.i.r
  23672. 3, // llvm.hexagon.S2.asl.i.r.acc
  23673. 3, // llvm.hexagon.S2.asl.i.r.and
  23674. 3, // llvm.hexagon.S2.asl.i.r.nac
  23675. 3, // llvm.hexagon.S2.asl.i.r.or
  23676. 3, // llvm.hexagon.S2.asl.i.r.sat
  23677. 3, // llvm.hexagon.S2.asl.i.r.xacc
  23678. 3, // llvm.hexagon.S2.asl.i.vh
  23679. 3, // llvm.hexagon.S2.asl.i.vw
  23680. 3, // llvm.hexagon.S2.asl.r.p
  23681. 3, // llvm.hexagon.S2.asl.r.p.acc
  23682. 3, // llvm.hexagon.S2.asl.r.p.and
  23683. 3, // llvm.hexagon.S2.asl.r.p.nac
  23684. 3, // llvm.hexagon.S2.asl.r.p.or
  23685. 3, // llvm.hexagon.S2.asl.r.p.xor
  23686. 3, // llvm.hexagon.S2.asl.r.r
  23687. 3, // llvm.hexagon.S2.asl.r.r.acc
  23688. 3, // llvm.hexagon.S2.asl.r.r.and
  23689. 3, // llvm.hexagon.S2.asl.r.r.nac
  23690. 3, // llvm.hexagon.S2.asl.r.r.or
  23691. 3, // llvm.hexagon.S2.asl.r.r.sat
  23692. 3, // llvm.hexagon.S2.asl.r.vh
  23693. 3, // llvm.hexagon.S2.asl.r.vw
  23694. 3, // llvm.hexagon.S2.asr.i.p
  23695. 3, // llvm.hexagon.S2.asr.i.p.acc
  23696. 3, // llvm.hexagon.S2.asr.i.p.and
  23697. 3, // llvm.hexagon.S2.asr.i.p.nac
  23698. 3, // llvm.hexagon.S2.asr.i.p.or
  23699. 3, // llvm.hexagon.S2.asr.i.p.rnd
  23700. 3, // llvm.hexagon.S2.asr.i.p.rnd.goodsyntax
  23701. 3, // llvm.hexagon.S2.asr.i.r
  23702. 3, // llvm.hexagon.S2.asr.i.r.acc
  23703. 3, // llvm.hexagon.S2.asr.i.r.and
  23704. 3, // llvm.hexagon.S2.asr.i.r.nac
  23705. 3, // llvm.hexagon.S2.asr.i.r.or
  23706. 3, // llvm.hexagon.S2.asr.i.r.rnd
  23707. 3, // llvm.hexagon.S2.asr.i.r.rnd.goodsyntax
  23708. 3, // llvm.hexagon.S2.asr.i.svw.trun
  23709. 3, // llvm.hexagon.S2.asr.i.vh
  23710. 3, // llvm.hexagon.S2.asr.i.vw
  23711. 3, // llvm.hexagon.S2.asr.r.p
  23712. 3, // llvm.hexagon.S2.asr.r.p.acc
  23713. 3, // llvm.hexagon.S2.asr.r.p.and
  23714. 3, // llvm.hexagon.S2.asr.r.p.nac
  23715. 3, // llvm.hexagon.S2.asr.r.p.or
  23716. 3, // llvm.hexagon.S2.asr.r.p.xor
  23717. 3, // llvm.hexagon.S2.asr.r.r
  23718. 3, // llvm.hexagon.S2.asr.r.r.acc
  23719. 3, // llvm.hexagon.S2.asr.r.r.and
  23720. 3, // llvm.hexagon.S2.asr.r.r.nac
  23721. 3, // llvm.hexagon.S2.asr.r.r.or
  23722. 3, // llvm.hexagon.S2.asr.r.r.sat
  23723. 3, // llvm.hexagon.S2.asr.r.svw.trun
  23724. 3, // llvm.hexagon.S2.asr.r.vh
  23725. 3, // llvm.hexagon.S2.asr.r.vw
  23726. 3, // llvm.hexagon.S2.brev
  23727. 3, // llvm.hexagon.S2.brevp
  23728. 3, // llvm.hexagon.S2.cl0
  23729. 3, // llvm.hexagon.S2.cl0p
  23730. 3, // llvm.hexagon.S2.cl1
  23731. 3, // llvm.hexagon.S2.cl1p
  23732. 3, // llvm.hexagon.S2.clb
  23733. 3, // llvm.hexagon.S2.clbnorm
  23734. 3, // llvm.hexagon.S2.clbp
  23735. 3, // llvm.hexagon.S2.clrbit.i
  23736. 3, // llvm.hexagon.S2.clrbit.r
  23737. 3, // llvm.hexagon.S2.ct0
  23738. 3, // llvm.hexagon.S2.ct0p
  23739. 3, // llvm.hexagon.S2.ct1
  23740. 3, // llvm.hexagon.S2.ct1p
  23741. 3, // llvm.hexagon.S2.deinterleave
  23742. 3, // llvm.hexagon.S2.extractu
  23743. 3, // llvm.hexagon.S2.extractu.rp
  23744. 3, // llvm.hexagon.S2.extractup
  23745. 3, // llvm.hexagon.S2.extractup.rp
  23746. 3, // llvm.hexagon.S2.insert
  23747. 3, // llvm.hexagon.S2.insert.rp
  23748. 3, // llvm.hexagon.S2.insertp
  23749. 3, // llvm.hexagon.S2.insertp.rp
  23750. 3, // llvm.hexagon.S2.interleave
  23751. 3, // llvm.hexagon.S2.lfsp
  23752. 3, // llvm.hexagon.S2.lsl.r.p
  23753. 3, // llvm.hexagon.S2.lsl.r.p.acc
  23754. 3, // llvm.hexagon.S2.lsl.r.p.and
  23755. 3, // llvm.hexagon.S2.lsl.r.p.nac
  23756. 3, // llvm.hexagon.S2.lsl.r.p.or
  23757. 3, // llvm.hexagon.S2.lsl.r.p.xor
  23758. 3, // llvm.hexagon.S2.lsl.r.r
  23759. 3, // llvm.hexagon.S2.lsl.r.r.acc
  23760. 3, // llvm.hexagon.S2.lsl.r.r.and
  23761. 3, // llvm.hexagon.S2.lsl.r.r.nac
  23762. 3, // llvm.hexagon.S2.lsl.r.r.or
  23763. 3, // llvm.hexagon.S2.lsl.r.vh
  23764. 3, // llvm.hexagon.S2.lsl.r.vw
  23765. 3, // llvm.hexagon.S2.lsr.i.p
  23766. 3, // llvm.hexagon.S2.lsr.i.p.acc
  23767. 3, // llvm.hexagon.S2.lsr.i.p.and
  23768. 3, // llvm.hexagon.S2.lsr.i.p.nac
  23769. 3, // llvm.hexagon.S2.lsr.i.p.or
  23770. 3, // llvm.hexagon.S2.lsr.i.p.xacc
  23771. 3, // llvm.hexagon.S2.lsr.i.r
  23772. 3, // llvm.hexagon.S2.lsr.i.r.acc
  23773. 3, // llvm.hexagon.S2.lsr.i.r.and
  23774. 3, // llvm.hexagon.S2.lsr.i.r.nac
  23775. 3, // llvm.hexagon.S2.lsr.i.r.or
  23776. 3, // llvm.hexagon.S2.lsr.i.r.xacc
  23777. 3, // llvm.hexagon.S2.lsr.i.vh
  23778. 3, // llvm.hexagon.S2.lsr.i.vw
  23779. 3, // llvm.hexagon.S2.lsr.r.p
  23780. 3, // llvm.hexagon.S2.lsr.r.p.acc
  23781. 3, // llvm.hexagon.S2.lsr.r.p.and
  23782. 3, // llvm.hexagon.S2.lsr.r.p.nac
  23783. 3, // llvm.hexagon.S2.lsr.r.p.or
  23784. 3, // llvm.hexagon.S2.lsr.r.p.xor
  23785. 3, // llvm.hexagon.S2.lsr.r.r
  23786. 3, // llvm.hexagon.S2.lsr.r.r.acc
  23787. 3, // llvm.hexagon.S2.lsr.r.r.and
  23788. 3, // llvm.hexagon.S2.lsr.r.r.nac
  23789. 3, // llvm.hexagon.S2.lsr.r.r.or
  23790. 3, // llvm.hexagon.S2.lsr.r.vh
  23791. 3, // llvm.hexagon.S2.lsr.r.vw
  23792. 3, // llvm.hexagon.S2.packhl
  23793. 3, // llvm.hexagon.S2.parityp
  23794. 3, // llvm.hexagon.S2.setbit.i
  23795. 3, // llvm.hexagon.S2.setbit.r
  23796. 3, // llvm.hexagon.S2.shuffeb
  23797. 3, // llvm.hexagon.S2.shuffeh
  23798. 3, // llvm.hexagon.S2.shuffob
  23799. 3, // llvm.hexagon.S2.shuffoh
  23800. 3, // llvm.hexagon.S2.svsathb
  23801. 3, // llvm.hexagon.S2.svsathub
  23802. 3, // llvm.hexagon.S2.tableidxb.goodsyntax
  23803. 3, // llvm.hexagon.S2.tableidxd.goodsyntax
  23804. 3, // llvm.hexagon.S2.tableidxh.goodsyntax
  23805. 3, // llvm.hexagon.S2.tableidxw.goodsyntax
  23806. 3, // llvm.hexagon.S2.togglebit.i
  23807. 3, // llvm.hexagon.S2.togglebit.r
  23808. 3, // llvm.hexagon.S2.tstbit.i
  23809. 3, // llvm.hexagon.S2.tstbit.r
  23810. 3, // llvm.hexagon.S2.valignib
  23811. 3, // llvm.hexagon.S2.valignrb
  23812. 3, // llvm.hexagon.S2.vcnegh
  23813. 3, // llvm.hexagon.S2.vcrotate
  23814. 3, // llvm.hexagon.S2.vrcnegh
  23815. 3, // llvm.hexagon.S2.vrndpackwh
  23816. 3, // llvm.hexagon.S2.vrndpackwhs
  23817. 3, // llvm.hexagon.S2.vsathb
  23818. 3, // llvm.hexagon.S2.vsathb.nopack
  23819. 3, // llvm.hexagon.S2.vsathub
  23820. 3, // llvm.hexagon.S2.vsathub.nopack
  23821. 3, // llvm.hexagon.S2.vsatwh
  23822. 3, // llvm.hexagon.S2.vsatwh.nopack
  23823. 3, // llvm.hexagon.S2.vsatwuh
  23824. 3, // llvm.hexagon.S2.vsatwuh.nopack
  23825. 3, // llvm.hexagon.S2.vsplatrb
  23826. 3, // llvm.hexagon.S2.vsplatrh
  23827. 3, // llvm.hexagon.S2.vspliceib
  23828. 3, // llvm.hexagon.S2.vsplicerb
  23829. 3, // llvm.hexagon.S2.vsxtbh
  23830. 3, // llvm.hexagon.S2.vsxthw
  23831. 3, // llvm.hexagon.S2.vtrunehb
  23832. 3, // llvm.hexagon.S2.vtrunewh
  23833. 3, // llvm.hexagon.S2.vtrunohb
  23834. 3, // llvm.hexagon.S2.vtrunowh
  23835. 3, // llvm.hexagon.S2.vzxtbh
  23836. 3, // llvm.hexagon.S2.vzxthw
  23837. 3, // llvm.hexagon.S4.addaddi
  23838. 3, // llvm.hexagon.S4.addi.asl.ri
  23839. 3, // llvm.hexagon.S4.addi.lsr.ri
  23840. 3, // llvm.hexagon.S4.andi.asl.ri
  23841. 3, // llvm.hexagon.S4.andi.lsr.ri
  23842. 3, // llvm.hexagon.S4.clbaddi
  23843. 3, // llvm.hexagon.S4.clbpaddi
  23844. 3, // llvm.hexagon.S4.clbpnorm
  23845. 3, // llvm.hexagon.S4.extract
  23846. 3, // llvm.hexagon.S4.extract.rp
  23847. 3, // llvm.hexagon.S4.extractp
  23848. 3, // llvm.hexagon.S4.extractp.rp
  23849. 3, // llvm.hexagon.S4.lsli
  23850. 3, // llvm.hexagon.S4.ntstbit.i
  23851. 3, // llvm.hexagon.S4.ntstbit.r
  23852. 3, // llvm.hexagon.S4.or.andi
  23853. 3, // llvm.hexagon.S4.or.andix
  23854. 3, // llvm.hexagon.S4.or.ori
  23855. 3, // llvm.hexagon.S4.ori.asl.ri
  23856. 3, // llvm.hexagon.S4.ori.lsr.ri
  23857. 3, // llvm.hexagon.S4.parity
  23858. 3, // llvm.hexagon.S4.subaddi
  23859. 3, // llvm.hexagon.S4.subi.asl.ri
  23860. 3, // llvm.hexagon.S4.subi.lsr.ri
  23861. 3, // llvm.hexagon.S4.vrcrotate
  23862. 3, // llvm.hexagon.S4.vrcrotate.acc
  23863. 3, // llvm.hexagon.S4.vxaddsubh
  23864. 3, // llvm.hexagon.S4.vxaddsubhr
  23865. 3, // llvm.hexagon.S4.vxaddsubw
  23866. 3, // llvm.hexagon.S4.vxsubaddh
  23867. 3, // llvm.hexagon.S4.vxsubaddhr
  23868. 3, // llvm.hexagon.S4.vxsubaddw
  23869. 3, // llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax
  23870. 3, // llvm.hexagon.S5.asrhub.sat
  23871. 3, // llvm.hexagon.S5.popcountp
  23872. 3, // llvm.hexagon.S5.vasrhrnd.goodsyntax
  23873. 3, // llvm.hexagon.SI.to.SXTHI.asrh
  23874. 2, // llvm.hexagon.circ.ldd
  23875. 5, // llvm.init.trampoline
  23876. 6, // llvm.invariant.end
  23877. 7, // llvm.invariant.start
  23878. 7, // llvm.lifetime.end
  23879. 7, // llvm.lifetime.start
  23880. 1, // llvm.log
  23881. 1, // llvm.log10
  23882. 1, // llvm.log2
  23883. 2, // llvm.longjmp
  23884. 8, // llvm.memcpy
  23885. 8, // llvm.memmove
  23886. 5, // llvm.memset
  23887. 2, // llvm.mips.absq.s.ph
  23888. 2, // llvm.mips.absq.s.qb
  23889. 2, // llvm.mips.absq.s.w
  23890. 2, // llvm.mips.addq.ph
  23891. 2, // llvm.mips.addq.s.ph
  23892. 2, // llvm.mips.addq.s.w
  23893. 3, // llvm.mips.addqh.ph
  23894. 3, // llvm.mips.addqh.r.ph
  23895. 3, // llvm.mips.addqh.r.w
  23896. 3, // llvm.mips.addqh.w
  23897. 2, // llvm.mips.addsc
  23898. 2, // llvm.mips.addu.ph
  23899. 2, // llvm.mips.addu.qb
  23900. 2, // llvm.mips.addu.s.ph
  23901. 2, // llvm.mips.addu.s.qb
  23902. 3, // llvm.mips.adduh.qb
  23903. 3, // llvm.mips.adduh.r.qb
  23904. 2, // llvm.mips.addwc
  23905. 3, // llvm.mips.append
  23906. 3, // llvm.mips.balign
  23907. 3, // llvm.mips.bitrev
  23908. 1, // llvm.mips.bposge32
  23909. 2, // llvm.mips.cmp.eq.ph
  23910. 2, // llvm.mips.cmp.le.ph
  23911. 2, // llvm.mips.cmp.lt.ph
  23912. 2, // llvm.mips.cmpgdu.eq.qb
  23913. 2, // llvm.mips.cmpgdu.le.qb
  23914. 2, // llvm.mips.cmpgdu.lt.qb
  23915. 2, // llvm.mips.cmpgu.eq.qb
  23916. 2, // llvm.mips.cmpgu.le.qb
  23917. 2, // llvm.mips.cmpgu.lt.qb
  23918. 2, // llvm.mips.cmpu.eq.qb
  23919. 2, // llvm.mips.cmpu.le.qb
  23920. 2, // llvm.mips.cmpu.lt.qb
  23921. 3, // llvm.mips.dpa.w.ph
  23922. 2, // llvm.mips.dpaq.s.w.ph
  23923. 2, // llvm.mips.dpaq.sa.l.w
  23924. 2, // llvm.mips.dpaqx.s.w.ph
  23925. 2, // llvm.mips.dpaqx.sa.w.ph
  23926. 3, // llvm.mips.dpau.h.qbl
  23927. 3, // llvm.mips.dpau.h.qbr
  23928. 3, // llvm.mips.dpax.w.ph
  23929. 3, // llvm.mips.dps.w.ph
  23930. 2, // llvm.mips.dpsq.s.w.ph
  23931. 2, // llvm.mips.dpsq.sa.l.w
  23932. 2, // llvm.mips.dpsqx.s.w.ph
  23933. 2, // llvm.mips.dpsqx.sa.w.ph
  23934. 3, // llvm.mips.dpsu.h.qbl
  23935. 3, // llvm.mips.dpsu.h.qbr
  23936. 3, // llvm.mips.dpsx.w.ph
  23937. 2, // llvm.mips.extp
  23938. 2, // llvm.mips.extpdp
  23939. 2, // llvm.mips.extr.r.w
  23940. 2, // llvm.mips.extr.rs.w
  23941. 2, // llvm.mips.extr.s.h
  23942. 2, // llvm.mips.extr.w
  23943. 1, // llvm.mips.insv
  23944. 1, // llvm.mips.lbux
  23945. 1, // llvm.mips.lhx
  23946. 1, // llvm.mips.lwx
  23947. 3, // llvm.mips.madd
  23948. 3, // llvm.mips.maddu
  23949. 2, // llvm.mips.maq.s.w.phl
  23950. 2, // llvm.mips.maq.s.w.phr
  23951. 2, // llvm.mips.maq.sa.w.phl
  23952. 2, // llvm.mips.maq.sa.w.phr
  23953. 3, // llvm.mips.modsub
  23954. 3, // llvm.mips.msub
  23955. 3, // llvm.mips.msubu
  23956. 2, // llvm.mips.mthlip
  23957. 2, // llvm.mips.mul.ph
  23958. 2, // llvm.mips.mul.s.ph
  23959. 2, // llvm.mips.muleq.s.w.phl
  23960. 2, // llvm.mips.muleq.s.w.phr
  23961. 2, // llvm.mips.muleu.s.ph.qbl
  23962. 2, // llvm.mips.muleu.s.ph.qbr
  23963. 2, // llvm.mips.mulq.rs.ph
  23964. 2, // llvm.mips.mulq.rs.w
  23965. 2, // llvm.mips.mulq.s.ph
  23966. 2, // llvm.mips.mulq.s.w
  23967. 3, // llvm.mips.mulsa.w.ph
  23968. 2, // llvm.mips.mulsaq.s.w.ph
  23969. 3, // llvm.mips.mult
  23970. 3, // llvm.mips.multu
  23971. 3, // llvm.mips.packrl.ph
  23972. 1, // llvm.mips.pick.ph
  23973. 1, // llvm.mips.pick.qb
  23974. 3, // llvm.mips.preceq.w.phl
  23975. 3, // llvm.mips.preceq.w.phr
  23976. 3, // llvm.mips.precequ.ph.qbl
  23977. 3, // llvm.mips.precequ.ph.qbla
  23978. 3, // llvm.mips.precequ.ph.qbr
  23979. 3, // llvm.mips.precequ.ph.qbra
  23980. 3, // llvm.mips.preceu.ph.qbl
  23981. 3, // llvm.mips.preceu.ph.qbla
  23982. 3, // llvm.mips.preceu.ph.qbr
  23983. 3, // llvm.mips.preceu.ph.qbra
  23984. 2, // llvm.mips.precr.qb.ph
  23985. 3, // llvm.mips.precr.sra.ph.w
  23986. 3, // llvm.mips.precr.sra.r.ph.w
  23987. 3, // llvm.mips.precrq.ph.w
  23988. 3, // llvm.mips.precrq.qb.ph
  23989. 2, // llvm.mips.precrq.rs.ph.w
  23990. 2, // llvm.mips.precrqu.s.qb.ph
  23991. 3, // llvm.mips.prepend
  23992. 3, // llvm.mips.raddu.w.qb
  23993. 1, // llvm.mips.rddsp
  23994. 3, // llvm.mips.repl.ph
  23995. 3, // llvm.mips.repl.qb
  23996. 3, // llvm.mips.shilo
  23997. 2, // llvm.mips.shll.ph
  23998. 2, // llvm.mips.shll.qb
  23999. 2, // llvm.mips.shll.s.ph
  24000. 2, // llvm.mips.shll.s.w
  24001. 3, // llvm.mips.shra.ph
  24002. 3, // llvm.mips.shra.qb
  24003. 3, // llvm.mips.shra.r.ph
  24004. 3, // llvm.mips.shra.r.qb
  24005. 3, // llvm.mips.shra.r.w
  24006. 3, // llvm.mips.shrl.ph
  24007. 3, // llvm.mips.shrl.qb
  24008. 2, // llvm.mips.subq.ph
  24009. 2, // llvm.mips.subq.s.ph
  24010. 2, // llvm.mips.subq.s.w
  24011. 3, // llvm.mips.subqh.ph
  24012. 3, // llvm.mips.subqh.r.ph
  24013. 3, // llvm.mips.subqh.r.w
  24014. 3, // llvm.mips.subqh.w
  24015. 2, // llvm.mips.subu.ph
  24016. 2, // llvm.mips.subu.qb
  24017. 2, // llvm.mips.subu.s.ph
  24018. 2, // llvm.mips.subu.s.qb
  24019. 3, // llvm.mips.subuh.qb
  24020. 3, // llvm.mips.subuh.r.qb
  24021. 2, // llvm.mips.wrdsp
  24022. 3, // llvm.nvvm.abs.i
  24023. 3, // llvm.nvvm.abs.ll
  24024. 3, // llvm.nvvm.add.rm.d
  24025. 3, // llvm.nvvm.add.rm.f
  24026. 3, // llvm.nvvm.add.rm.ftz.f
  24027. 3, // llvm.nvvm.add.rn.d
  24028. 3, // llvm.nvvm.add.rn.f
  24029. 3, // llvm.nvvm.add.rn.ftz.f
  24030. 3, // llvm.nvvm.add.rp.d
  24031. 3, // llvm.nvvm.add.rp.f
  24032. 3, // llvm.nvvm.add.rp.ftz.f
  24033. 3, // llvm.nvvm.add.rz.d
  24034. 3, // llvm.nvvm.add.rz.f
  24035. 3, // llvm.nvvm.add.rz.ftz.f
  24036. 5, // llvm.nvvm.atomic.load.add.f32
  24037. 5, // llvm.nvvm.atomic.load.dec.32
  24038. 5, // llvm.nvvm.atomic.load.inc.32
  24039. 2, // llvm.nvvm.barrier0
  24040. 2, // llvm.nvvm.barrier0.and
  24041. 2, // llvm.nvvm.barrier0.or
  24042. 2, // llvm.nvvm.barrier0.popc
  24043. 3, // llvm.nvvm.bitcast.d2ll
  24044. 3, // llvm.nvvm.bitcast.f2i
  24045. 3, // llvm.nvvm.bitcast.i2f
  24046. 3, // llvm.nvvm.bitcast.ll2d
  24047. 3, // llvm.nvvm.brev32
  24048. 3, // llvm.nvvm.brev64
  24049. 3, // llvm.nvvm.ceil.d
  24050. 3, // llvm.nvvm.ceil.f
  24051. 3, // llvm.nvvm.ceil.ftz.f
  24052. 3, // llvm.nvvm.clz.i
  24053. 3, // llvm.nvvm.clz.ll
  24054. 2, // llvm.nvvm.compiler.error
  24055. 2, // llvm.nvvm.compiler.warn
  24056. 3, // llvm.nvvm.cos.approx.f
  24057. 3, // llvm.nvvm.cos.approx.ftz.f
  24058. 3, // llvm.nvvm.d2f.rm
  24059. 3, // llvm.nvvm.d2f.rm.ftz
  24060. 3, // llvm.nvvm.d2f.rn
  24061. 3, // llvm.nvvm.d2f.rn.ftz
  24062. 3, // llvm.nvvm.d2f.rp
  24063. 3, // llvm.nvvm.d2f.rp.ftz
  24064. 3, // llvm.nvvm.d2f.rz
  24065. 3, // llvm.nvvm.d2f.rz.ftz
  24066. 3, // llvm.nvvm.d2i.hi
  24067. 3, // llvm.nvvm.d2i.lo
  24068. 3, // llvm.nvvm.d2i.rm
  24069. 3, // llvm.nvvm.d2i.rn
  24070. 3, // llvm.nvvm.d2i.rp
  24071. 3, // llvm.nvvm.d2i.rz
  24072. 3, // llvm.nvvm.d2ll.rm
  24073. 3, // llvm.nvvm.d2ll.rn
  24074. 3, // llvm.nvvm.d2ll.rp
  24075. 3, // llvm.nvvm.d2ll.rz
  24076. 3, // llvm.nvvm.d2ui.rm
  24077. 3, // llvm.nvvm.d2ui.rn
  24078. 3, // llvm.nvvm.d2ui.rp
  24079. 3, // llvm.nvvm.d2ui.rz
  24080. 3, // llvm.nvvm.d2ull.rm
  24081. 3, // llvm.nvvm.d2ull.rn
  24082. 3, // llvm.nvvm.d2ull.rp
  24083. 3, // llvm.nvvm.d2ull.rz
  24084. 3, // llvm.nvvm.div.approx.f
  24085. 3, // llvm.nvvm.div.approx.ftz.f
  24086. 3, // llvm.nvvm.div.rm.d
  24087. 3, // llvm.nvvm.div.rm.f
  24088. 3, // llvm.nvvm.div.rm.ftz.f
  24089. 3, // llvm.nvvm.div.rn.d
  24090. 3, // llvm.nvvm.div.rn.f
  24091. 3, // llvm.nvvm.div.rn.ftz.f
  24092. 3, // llvm.nvvm.div.rp.d
  24093. 3, // llvm.nvvm.div.rp.f
  24094. 3, // llvm.nvvm.div.rp.ftz.f
  24095. 3, // llvm.nvvm.div.rz.d
  24096. 3, // llvm.nvvm.div.rz.f
  24097. 3, // llvm.nvvm.div.rz.ftz.f
  24098. 3, // llvm.nvvm.ex2.approx.d
  24099. 3, // llvm.nvvm.ex2.approx.f
  24100. 3, // llvm.nvvm.ex2.approx.ftz.f
  24101. 3, // llvm.nvvm.f2h.rn
  24102. 3, // llvm.nvvm.f2h.rn.ftz
  24103. 3, // llvm.nvvm.f2i.rm
  24104. 3, // llvm.nvvm.f2i.rm.ftz
  24105. 3, // llvm.nvvm.f2i.rn
  24106. 3, // llvm.nvvm.f2i.rn.ftz
  24107. 3, // llvm.nvvm.f2i.rp
  24108. 3, // llvm.nvvm.f2i.rp.ftz
  24109. 3, // llvm.nvvm.f2i.rz
  24110. 3, // llvm.nvvm.f2i.rz.ftz
  24111. 3, // llvm.nvvm.f2ll.rm
  24112. 3, // llvm.nvvm.f2ll.rm.ftz
  24113. 3, // llvm.nvvm.f2ll.rn
  24114. 3, // llvm.nvvm.f2ll.rn.ftz
  24115. 3, // llvm.nvvm.f2ll.rp
  24116. 3, // llvm.nvvm.f2ll.rp.ftz
  24117. 3, // llvm.nvvm.f2ll.rz
  24118. 3, // llvm.nvvm.f2ll.rz.ftz
  24119. 3, // llvm.nvvm.f2ui.rm
  24120. 3, // llvm.nvvm.f2ui.rm.ftz
  24121. 3, // llvm.nvvm.f2ui.rn
  24122. 3, // llvm.nvvm.f2ui.rn.ftz
  24123. 3, // llvm.nvvm.f2ui.rp
  24124. 3, // llvm.nvvm.f2ui.rp.ftz
  24125. 3, // llvm.nvvm.f2ui.rz
  24126. 3, // llvm.nvvm.f2ui.rz.ftz
  24127. 3, // llvm.nvvm.f2ull.rm
  24128. 3, // llvm.nvvm.f2ull.rm.ftz
  24129. 3, // llvm.nvvm.f2ull.rn
  24130. 3, // llvm.nvvm.f2ull.rn.ftz
  24131. 3, // llvm.nvvm.f2ull.rp
  24132. 3, // llvm.nvvm.f2ull.rp.ftz
  24133. 3, // llvm.nvvm.f2ull.rz
  24134. 3, // llvm.nvvm.f2ull.rz.ftz
  24135. 3, // llvm.nvvm.fabs.d
  24136. 3, // llvm.nvvm.fabs.f
  24137. 3, // llvm.nvvm.fabs.ftz.f
  24138. 3, // llvm.nvvm.floor.d
  24139. 3, // llvm.nvvm.floor.f
  24140. 3, // llvm.nvvm.floor.ftz.f
  24141. 3, // llvm.nvvm.fma.rm.d
  24142. 3, // llvm.nvvm.fma.rm.f
  24143. 3, // llvm.nvvm.fma.rm.ftz.f
  24144. 3, // llvm.nvvm.fma.rn.d
  24145. 3, // llvm.nvvm.fma.rn.f
  24146. 3, // llvm.nvvm.fma.rn.ftz.f
  24147. 3, // llvm.nvvm.fma.rp.d
  24148. 3, // llvm.nvvm.fma.rp.f
  24149. 3, // llvm.nvvm.fma.rp.ftz.f
  24150. 3, // llvm.nvvm.fma.rz.d
  24151. 3, // llvm.nvvm.fma.rz.f
  24152. 3, // llvm.nvvm.fma.rz.ftz.f
  24153. 3, // llvm.nvvm.fmax.d
  24154. 3, // llvm.nvvm.fmax.f
  24155. 3, // llvm.nvvm.fmax.ftz.f
  24156. 3, // llvm.nvvm.fmin.d
  24157. 3, // llvm.nvvm.fmin.f
  24158. 3, // llvm.nvvm.fmin.ftz.f
  24159. 3, // llvm.nvvm.h2f
  24160. 3, // llvm.nvvm.i2d.rm
  24161. 3, // llvm.nvvm.i2d.rn
  24162. 3, // llvm.nvvm.i2d.rp
  24163. 3, // llvm.nvvm.i2d.rz
  24164. 3, // llvm.nvvm.i2f.rm
  24165. 3, // llvm.nvvm.i2f.rn
  24166. 3, // llvm.nvvm.i2f.rp
  24167. 3, // llvm.nvvm.i2f.rz
  24168. 9, // llvm.nvvm.ldu.global.f
  24169. 9, // llvm.nvvm.ldu.global.i
  24170. 9, // llvm.nvvm.ldu.global.p
  24171. 3, // llvm.nvvm.lg2.approx.d
  24172. 3, // llvm.nvvm.lg2.approx.f
  24173. 3, // llvm.nvvm.lg2.approx.ftz.f
  24174. 3, // llvm.nvvm.ll2d.rm
  24175. 3, // llvm.nvvm.ll2d.rn
  24176. 3, // llvm.nvvm.ll2d.rp
  24177. 3, // llvm.nvvm.ll2d.rz
  24178. 3, // llvm.nvvm.ll2f.rm
  24179. 3, // llvm.nvvm.ll2f.rn
  24180. 3, // llvm.nvvm.ll2f.rp
  24181. 3, // llvm.nvvm.ll2f.rz
  24182. 3, // llvm.nvvm.lohi.i2d
  24183. 3, // llvm.nvvm.max.i
  24184. 3, // llvm.nvvm.max.ll
  24185. 3, // llvm.nvvm.max.ui
  24186. 3, // llvm.nvvm.max.ull
  24187. 2, // llvm.nvvm.membar.cta
  24188. 2, // llvm.nvvm.membar.gl
  24189. 2, // llvm.nvvm.membar.sys
  24190. 3, // llvm.nvvm.min.i
  24191. 3, // llvm.nvvm.min.ll
  24192. 3, // llvm.nvvm.min.ui
  24193. 3, // llvm.nvvm.min.ull
  24194. 3, // llvm.nvvm.move.double
  24195. 3, // llvm.nvvm.move.float
  24196. 3, // llvm.nvvm.move.i16
  24197. 3, // llvm.nvvm.move.i32
  24198. 3, // llvm.nvvm.move.i64
  24199. 3, // llvm.nvvm.move.i8
  24200. 10, // llvm.nvvm.move.ptr
  24201. 3, // llvm.nvvm.mul24.i
  24202. 3, // llvm.nvvm.mul24.ui
  24203. 3, // llvm.nvvm.mul.rm.d
  24204. 3, // llvm.nvvm.mul.rm.f
  24205. 3, // llvm.nvvm.mul.rm.ftz.f
  24206. 3, // llvm.nvvm.mul.rn.d
  24207. 3, // llvm.nvvm.mul.rn.f
  24208. 3, // llvm.nvvm.mul.rn.ftz.f
  24209. 3, // llvm.nvvm.mul.rp.d
  24210. 3, // llvm.nvvm.mul.rp.f
  24211. 3, // llvm.nvvm.mul.rp.ftz.f
  24212. 3, // llvm.nvvm.mul.rz.d
  24213. 3, // llvm.nvvm.mul.rz.f
  24214. 3, // llvm.nvvm.mul.rz.ftz.f
  24215. 3, // llvm.nvvm.mulhi.i
  24216. 3, // llvm.nvvm.mulhi.ll
  24217. 3, // llvm.nvvm.mulhi.ui
  24218. 3, // llvm.nvvm.mulhi.ull
  24219. 3, // llvm.nvvm.popc.i
  24220. 3, // llvm.nvvm.popc.ll
  24221. 3, // llvm.nvvm.prmt
  24222. 10, // llvm.nvvm.ptr.constant.to.gen
  24223. 10, // llvm.nvvm.ptr.gen.to.constant
  24224. 10, // llvm.nvvm.ptr.gen.to.global
  24225. 10, // llvm.nvvm.ptr.gen.to.local
  24226. 10, // llvm.nvvm.ptr.gen.to.param
  24227. 10, // llvm.nvvm.ptr.gen.to.shared
  24228. 10, // llvm.nvvm.ptr.global.to.gen
  24229. 10, // llvm.nvvm.ptr.local.to.gen
  24230. 10, // llvm.nvvm.ptr.shared.to.gen
  24231. 3, // llvm.nvvm.rcp.approx.ftz.d
  24232. 3, // llvm.nvvm.rcp.rm.d
  24233. 3, // llvm.nvvm.rcp.rm.f
  24234. 3, // llvm.nvvm.rcp.rm.ftz.f
  24235. 3, // llvm.nvvm.rcp.rn.d
  24236. 3, // llvm.nvvm.rcp.rn.f
  24237. 3, // llvm.nvvm.rcp.rn.ftz.f
  24238. 3, // llvm.nvvm.rcp.rp.d
  24239. 3, // llvm.nvvm.rcp.rp.f
  24240. 3, // llvm.nvvm.rcp.rp.ftz.f
  24241. 3, // llvm.nvvm.rcp.rz.d
  24242. 3, // llvm.nvvm.rcp.rz.f
  24243. 3, // llvm.nvvm.rcp.rz.ftz.f
  24244. 3, // llvm.nvvm.read.ptx.sreg.ctaid.x
  24245. 3, // llvm.nvvm.read.ptx.sreg.ctaid.y
  24246. 3, // llvm.nvvm.read.ptx.sreg.ctaid.z
  24247. 3, // llvm.nvvm.read.ptx.sreg.nctaid.x
  24248. 3, // llvm.nvvm.read.ptx.sreg.nctaid.y
  24249. 3, // llvm.nvvm.read.ptx.sreg.nctaid.z
  24250. 3, // llvm.nvvm.read.ptx.sreg.ntid.x
  24251. 3, // llvm.nvvm.read.ptx.sreg.ntid.y
  24252. 3, // llvm.nvvm.read.ptx.sreg.ntid.z
  24253. 3, // llvm.nvvm.read.ptx.sreg.tid.x
  24254. 3, // llvm.nvvm.read.ptx.sreg.tid.y
  24255. 3, // llvm.nvvm.read.ptx.sreg.tid.z
  24256. 3, // llvm.nvvm.read.ptx.sreg.warpsize
  24257. 3, // llvm.nvvm.round.d
  24258. 3, // llvm.nvvm.round.f
  24259. 3, // llvm.nvvm.round.ftz.f
  24260. 3, // llvm.nvvm.rsqrt.approx.d
  24261. 3, // llvm.nvvm.rsqrt.approx.f
  24262. 3, // llvm.nvvm.rsqrt.approx.ftz.f
  24263. 3, // llvm.nvvm.sad.i
  24264. 3, // llvm.nvvm.sad.ui
  24265. 3, // llvm.nvvm.saturate.d
  24266. 3, // llvm.nvvm.saturate.f
  24267. 3, // llvm.nvvm.saturate.ftz.f
  24268. 3, // llvm.nvvm.sin.approx.f
  24269. 3, // llvm.nvvm.sin.approx.ftz.f
  24270. 3, // llvm.nvvm.sqrt.approx.f
  24271. 3, // llvm.nvvm.sqrt.approx.ftz.f
  24272. 3, // llvm.nvvm.sqrt.rm.d
  24273. 3, // llvm.nvvm.sqrt.rm.f
  24274. 3, // llvm.nvvm.sqrt.rm.ftz.f
  24275. 3, // llvm.nvvm.sqrt.rn.d
  24276. 3, // llvm.nvvm.sqrt.rn.f
  24277. 3, // llvm.nvvm.sqrt.rn.ftz.f
  24278. 3, // llvm.nvvm.sqrt.rp.d
  24279. 3, // llvm.nvvm.sqrt.rp.f
  24280. 3, // llvm.nvvm.sqrt.rp.ftz.f
  24281. 3, // llvm.nvvm.sqrt.rz.d
  24282. 3, // llvm.nvvm.sqrt.rz.f
  24283. 3, // llvm.nvvm.sqrt.rz.ftz.f
  24284. 3, // llvm.nvvm.trunc.d
  24285. 3, // llvm.nvvm.trunc.f
  24286. 3, // llvm.nvvm.trunc.ftz.f
  24287. 3, // llvm.nvvm.ui2d.rm
  24288. 3, // llvm.nvvm.ui2d.rn
  24289. 3, // llvm.nvvm.ui2d.rp
  24290. 3, // llvm.nvvm.ui2d.rz
  24291. 3, // llvm.nvvm.ui2f.rm
  24292. 3, // llvm.nvvm.ui2f.rn
  24293. 3, // llvm.nvvm.ui2f.rp
  24294. 3, // llvm.nvvm.ui2f.rz
  24295. 3, // llvm.nvvm.ull2d.rm
  24296. 3, // llvm.nvvm.ull2d.rn
  24297. 3, // llvm.nvvm.ull2d.rp
  24298. 3, // llvm.nvvm.ull2d.rz
  24299. 3, // llvm.nvvm.ull2f.rm
  24300. 3, // llvm.nvvm.ull2f.rn
  24301. 3, // llvm.nvvm.ull2f.rp
  24302. 3, // llvm.nvvm.ull2f.rz
  24303. 3, // llvm.objectsize
  24304. 2, // llvm.pcmarker
  24305. 1, // llvm.pow
  24306. 1, // llvm.powi
  24307. 2, // llvm.ppc.altivec.dss
  24308. 2, // llvm.ppc.altivec.dssall
  24309. 2, // llvm.ppc.altivec.dst
  24310. 2, // llvm.ppc.altivec.dstst
  24311. 2, // llvm.ppc.altivec.dststt
  24312. 2, // llvm.ppc.altivec.dstt
  24313. 1, // llvm.ppc.altivec.lvebx
  24314. 1, // llvm.ppc.altivec.lvehx
  24315. 1, // llvm.ppc.altivec.lvewx
  24316. 3, // llvm.ppc.altivec.lvsl
  24317. 3, // llvm.ppc.altivec.lvsr
  24318. 1, // llvm.ppc.altivec.lvx
  24319. 1, // llvm.ppc.altivec.lvxl
  24320. 1, // llvm.ppc.altivec.mfvscr
  24321. 2, // llvm.ppc.altivec.mtvscr
  24322. 2, // llvm.ppc.altivec.stvebx
  24323. 2, // llvm.ppc.altivec.stvehx
  24324. 2, // llvm.ppc.altivec.stvewx
  24325. 2, // llvm.ppc.altivec.stvx
  24326. 2, // llvm.ppc.altivec.stvxl
  24327. 3, // llvm.ppc.altivec.vaddcuw
  24328. 3, // llvm.ppc.altivec.vaddsbs
  24329. 3, // llvm.ppc.altivec.vaddshs
  24330. 3, // llvm.ppc.altivec.vaddsws
  24331. 3, // llvm.ppc.altivec.vaddubs
  24332. 3, // llvm.ppc.altivec.vadduhs
  24333. 3, // llvm.ppc.altivec.vadduws
  24334. 3, // llvm.ppc.altivec.vavgsb
  24335. 3, // llvm.ppc.altivec.vavgsh
  24336. 3, // llvm.ppc.altivec.vavgsw
  24337. 3, // llvm.ppc.altivec.vavgub
  24338. 3, // llvm.ppc.altivec.vavguh
  24339. 3, // llvm.ppc.altivec.vavguw
  24340. 3, // llvm.ppc.altivec.vcfsx
  24341. 3, // llvm.ppc.altivec.vcfux
  24342. 3, // llvm.ppc.altivec.vcmpbfp
  24343. 3, // llvm.ppc.altivec.vcmpbfp.p
  24344. 3, // llvm.ppc.altivec.vcmpeqfp
  24345. 3, // llvm.ppc.altivec.vcmpeqfp.p
  24346. 3, // llvm.ppc.altivec.vcmpequb
  24347. 3, // llvm.ppc.altivec.vcmpequb.p
  24348. 3, // llvm.ppc.altivec.vcmpequh
  24349. 3, // llvm.ppc.altivec.vcmpequh.p
  24350. 3, // llvm.ppc.altivec.vcmpequw
  24351. 3, // llvm.ppc.altivec.vcmpequw.p
  24352. 3, // llvm.ppc.altivec.vcmpgefp
  24353. 3, // llvm.ppc.altivec.vcmpgefp.p
  24354. 3, // llvm.ppc.altivec.vcmpgtfp
  24355. 3, // llvm.ppc.altivec.vcmpgtfp.p
  24356. 3, // llvm.ppc.altivec.vcmpgtsb
  24357. 3, // llvm.ppc.altivec.vcmpgtsb.p
  24358. 3, // llvm.ppc.altivec.vcmpgtsh
  24359. 3, // llvm.ppc.altivec.vcmpgtsh.p
  24360. 3, // llvm.ppc.altivec.vcmpgtsw
  24361. 3, // llvm.ppc.altivec.vcmpgtsw.p
  24362. 3, // llvm.ppc.altivec.vcmpgtub
  24363. 3, // llvm.ppc.altivec.vcmpgtub.p
  24364. 3, // llvm.ppc.altivec.vcmpgtuh
  24365. 3, // llvm.ppc.altivec.vcmpgtuh.p
  24366. 3, // llvm.ppc.altivec.vcmpgtuw
  24367. 3, // llvm.ppc.altivec.vcmpgtuw.p
  24368. 3, // llvm.ppc.altivec.vctsxs
  24369. 3, // llvm.ppc.altivec.vctuxs
  24370. 3, // llvm.ppc.altivec.vexptefp
  24371. 3, // llvm.ppc.altivec.vlogefp
  24372. 3, // llvm.ppc.altivec.vmaddfp
  24373. 3, // llvm.ppc.altivec.vmaxfp
  24374. 3, // llvm.ppc.altivec.vmaxsb
  24375. 3, // llvm.ppc.altivec.vmaxsh
  24376. 3, // llvm.ppc.altivec.vmaxsw
  24377. 3, // llvm.ppc.altivec.vmaxub
  24378. 3, // llvm.ppc.altivec.vmaxuh
  24379. 3, // llvm.ppc.altivec.vmaxuw
  24380. 3, // llvm.ppc.altivec.vmhaddshs
  24381. 3, // llvm.ppc.altivec.vmhraddshs
  24382. 3, // llvm.ppc.altivec.vminfp
  24383. 3, // llvm.ppc.altivec.vminsb
  24384. 3, // llvm.ppc.altivec.vminsh
  24385. 3, // llvm.ppc.altivec.vminsw
  24386. 3, // llvm.ppc.altivec.vminub
  24387. 3, // llvm.ppc.altivec.vminuh
  24388. 3, // llvm.ppc.altivec.vminuw
  24389. 3, // llvm.ppc.altivec.vmladduhm
  24390. 3, // llvm.ppc.altivec.vmsummbm
  24391. 3, // llvm.ppc.altivec.vmsumshm
  24392. 3, // llvm.ppc.altivec.vmsumshs
  24393. 3, // llvm.ppc.altivec.vmsumubm
  24394. 3, // llvm.ppc.altivec.vmsumuhm
  24395. 3, // llvm.ppc.altivec.vmsumuhs
  24396. 3, // llvm.ppc.altivec.vmulesb
  24397. 3, // llvm.ppc.altivec.vmulesh
  24398. 3, // llvm.ppc.altivec.vmuleub
  24399. 3, // llvm.ppc.altivec.vmuleuh
  24400. 3, // llvm.ppc.altivec.vmulosb
  24401. 3, // llvm.ppc.altivec.vmulosh
  24402. 3, // llvm.ppc.altivec.vmuloub
  24403. 3, // llvm.ppc.altivec.vmulouh
  24404. 3, // llvm.ppc.altivec.vnmsubfp
  24405. 3, // llvm.ppc.altivec.vperm
  24406. 3, // llvm.ppc.altivec.vpkpx
  24407. 3, // llvm.ppc.altivec.vpkshss
  24408. 3, // llvm.ppc.altivec.vpkshus
  24409. 3, // llvm.ppc.altivec.vpkswss
  24410. 3, // llvm.ppc.altivec.vpkswus
  24411. 3, // llvm.ppc.altivec.vpkuhus
  24412. 3, // llvm.ppc.altivec.vpkuwus
  24413. 3, // llvm.ppc.altivec.vrefp
  24414. 3, // llvm.ppc.altivec.vrfim
  24415. 3, // llvm.ppc.altivec.vrfin
  24416. 3, // llvm.ppc.altivec.vrfip
  24417. 3, // llvm.ppc.altivec.vrfiz
  24418. 3, // llvm.ppc.altivec.vrlb
  24419. 3, // llvm.ppc.altivec.vrlh
  24420. 3, // llvm.ppc.altivec.vrlw
  24421. 3, // llvm.ppc.altivec.vrsqrtefp
  24422. 3, // llvm.ppc.altivec.vsel
  24423. 3, // llvm.ppc.altivec.vsl
  24424. 3, // llvm.ppc.altivec.vslb
  24425. 3, // llvm.ppc.altivec.vslh
  24426. 3, // llvm.ppc.altivec.vslo
  24427. 3, // llvm.ppc.altivec.vslw
  24428. 3, // llvm.ppc.altivec.vsr
  24429. 3, // llvm.ppc.altivec.vsrab
  24430. 3, // llvm.ppc.altivec.vsrah
  24431. 3, // llvm.ppc.altivec.vsraw
  24432. 3, // llvm.ppc.altivec.vsrb
  24433. 3, // llvm.ppc.altivec.vsrh
  24434. 3, // llvm.ppc.altivec.vsro
  24435. 3, // llvm.ppc.altivec.vsrw
  24436. 3, // llvm.ppc.altivec.vsubcuw
  24437. 3, // llvm.ppc.altivec.vsubsbs
  24438. 3, // llvm.ppc.altivec.vsubshs
  24439. 3, // llvm.ppc.altivec.vsubsws
  24440. 3, // llvm.ppc.altivec.vsububs
  24441. 3, // llvm.ppc.altivec.vsubuhs
  24442. 3, // llvm.ppc.altivec.vsubuws
  24443. 3, // llvm.ppc.altivec.vsum2sws
  24444. 3, // llvm.ppc.altivec.vsum4sbs
  24445. 3, // llvm.ppc.altivec.vsum4shs
  24446. 3, // llvm.ppc.altivec.vsum4ubs
  24447. 3, // llvm.ppc.altivec.vsumsws
  24448. 3, // llvm.ppc.altivec.vupkhpx
  24449. 3, // llvm.ppc.altivec.vupkhsb
  24450. 3, // llvm.ppc.altivec.vupkhsh
  24451. 3, // llvm.ppc.altivec.vupklpx
  24452. 3, // llvm.ppc.altivec.vupklsb
  24453. 3, // llvm.ppc.altivec.vupklsh
  24454. 2, // llvm.ppc.dcba
  24455. 2, // llvm.ppc.dcbf
  24456. 2, // llvm.ppc.dcbi
  24457. 2, // llvm.ppc.dcbst
  24458. 2, // llvm.ppc.dcbt
  24459. 2, // llvm.ppc.dcbtst
  24460. 2, // llvm.ppc.dcbz
  24461. 2, // llvm.ppc.dcbzl
  24462. 2, // llvm.ppc.sync
  24463. 5, // llvm.prefetch
  24464. 2, // llvm.ptr.annotation
  24465. 2, // llvm.ptx.bar.sync
  24466. 3, // llvm.ptx.read.clock
  24467. 3, // llvm.ptx.read.clock64
  24468. 3, // llvm.ptx.read.ctaid.w
  24469. 3, // llvm.ptx.read.ctaid.x
  24470. 3, // llvm.ptx.read.ctaid.y
  24471. 3, // llvm.ptx.read.ctaid.z
  24472. 3, // llvm.ptx.read.gridid
  24473. 3, // llvm.ptx.read.laneid
  24474. 3, // llvm.ptx.read.lanemask.eq
  24475. 3, // llvm.ptx.read.lanemask.ge
  24476. 3, // llvm.ptx.read.lanemask.gt
  24477. 3, // llvm.ptx.read.lanemask.le
  24478. 3, // llvm.ptx.read.lanemask.lt
  24479. 3, // llvm.ptx.read.nctaid.w
  24480. 3, // llvm.ptx.read.nctaid.x
  24481. 3, // llvm.ptx.read.nctaid.y
  24482. 3, // llvm.ptx.read.nctaid.z
  24483. 3, // llvm.ptx.read.nsmid
  24484. 3, // llvm.ptx.read.ntid.w
  24485. 3, // llvm.ptx.read.ntid.x
  24486. 3, // llvm.ptx.read.ntid.y
  24487. 3, // llvm.ptx.read.ntid.z
  24488. 3, // llvm.ptx.read.nwarpid
  24489. 3, // llvm.ptx.read.pm0
  24490. 3, // llvm.ptx.read.pm1
  24491. 3, // llvm.ptx.read.pm2
  24492. 3, // llvm.ptx.read.pm3
  24493. 3, // llvm.ptx.read.smid
  24494. 3, // llvm.ptx.read.tid.w
  24495. 3, // llvm.ptx.read.tid.x
  24496. 3, // llvm.ptx.read.tid.y
  24497. 3, // llvm.ptx.read.tid.z
  24498. 3, // llvm.ptx.read.warpid
  24499. 2, // llvm.readcyclecounter
  24500. 3, // llvm.returnaddress
  24501. 3, // llvm.sadd.with.overflow
  24502. 2, // llvm.setjmp
  24503. 2, // llvm.siglongjmp
  24504. 2, // llvm.sigsetjmp
  24505. 1, // llvm.sin
  24506. 3, // llvm.smul.with.overflow
  24507. 3, // llvm.spu.si.a
  24508. 3, // llvm.spu.si.addx
  24509. 3, // llvm.spu.si.ah
  24510. 3, // llvm.spu.si.ahi
  24511. 3, // llvm.spu.si.ai
  24512. 3, // llvm.spu.si.and
  24513. 3, // llvm.spu.si.andbi
  24514. 3, // llvm.spu.si.andc
  24515. 3, // llvm.spu.si.andhi
  24516. 3, // llvm.spu.si.andi
  24517. 3, // llvm.spu.si.bg
  24518. 3, // llvm.spu.si.bgx
  24519. 3, // llvm.spu.si.ceq
  24520. 3, // llvm.spu.si.ceqb
  24521. 3, // llvm.spu.si.ceqbi
  24522. 3, // llvm.spu.si.ceqh
  24523. 3, // llvm.spu.si.ceqhi
  24524. 3, // llvm.spu.si.ceqi
  24525. 3, // llvm.spu.si.cg
  24526. 3, // llvm.spu.si.cgt
  24527. 3, // llvm.spu.si.cgtb
  24528. 3, // llvm.spu.si.cgtbi
  24529. 3, // llvm.spu.si.cgth
  24530. 3, // llvm.spu.si.cgthi
  24531. 3, // llvm.spu.si.cgti
  24532. 3, // llvm.spu.si.cgx
  24533. 3, // llvm.spu.si.clgt
  24534. 3, // llvm.spu.si.clgtb
  24535. 3, // llvm.spu.si.clgtbi
  24536. 3, // llvm.spu.si.clgth
  24537. 3, // llvm.spu.si.clgthi
  24538. 3, // llvm.spu.si.clgti
  24539. 3, // llvm.spu.si.dfa
  24540. 3, // llvm.spu.si.dfm
  24541. 3, // llvm.spu.si.dfma
  24542. 3, // llvm.spu.si.dfms
  24543. 3, // llvm.spu.si.dfnma
  24544. 3, // llvm.spu.si.dfnms
  24545. 3, // llvm.spu.si.dfs
  24546. 3, // llvm.spu.si.fa
  24547. 3, // llvm.spu.si.fceq
  24548. 3, // llvm.spu.si.fcgt
  24549. 3, // llvm.spu.si.fcmeq
  24550. 3, // llvm.spu.si.fcmgt
  24551. 3, // llvm.spu.si.fm
  24552. 3, // llvm.spu.si.fma
  24553. 3, // llvm.spu.si.fms
  24554. 3, // llvm.spu.si.fnms
  24555. 3, // llvm.spu.si.fs
  24556. 3, // llvm.spu.si.fsmbi
  24557. 3, // llvm.spu.si.mpy
  24558. 3, // llvm.spu.si.mpya
  24559. 3, // llvm.spu.si.mpyh
  24560. 3, // llvm.spu.si.mpyhh
  24561. 3, // llvm.spu.si.mpyhha
  24562. 3, // llvm.spu.si.mpyhhau
  24563. 3, // llvm.spu.si.mpyhhu
  24564. 3, // llvm.spu.si.mpyi
  24565. 3, // llvm.spu.si.mpys
  24566. 3, // llvm.spu.si.mpyu
  24567. 3, // llvm.spu.si.mpyui
  24568. 3, // llvm.spu.si.nand
  24569. 3, // llvm.spu.si.nor
  24570. 3, // llvm.spu.si.or
  24571. 3, // llvm.spu.si.orbi
  24572. 3, // llvm.spu.si.orc
  24573. 3, // llvm.spu.si.orhi
  24574. 3, // llvm.spu.si.ori
  24575. 3, // llvm.spu.si.sf
  24576. 3, // llvm.spu.si.sfh
  24577. 3, // llvm.spu.si.sfhi
  24578. 3, // llvm.spu.si.sfi
  24579. 3, // llvm.spu.si.sfx
  24580. 3, // llvm.spu.si.shli
  24581. 3, // llvm.spu.si.shlqbi
  24582. 3, // llvm.spu.si.shlqbii
  24583. 3, // llvm.spu.si.shlqby
  24584. 3, // llvm.spu.si.shlqbyi
  24585. 3, // llvm.spu.si.xor
  24586. 3, // llvm.spu.si.xorbi
  24587. 3, // llvm.spu.si.xorhi
  24588. 3, // llvm.spu.si.xori
  24589. 1, // llvm.sqrt
  24590. 3, // llvm.ssub.with.overflow
  24591. 2, // llvm.stackprotector
  24592. 2, // llvm.stackrestore
  24593. 2, // llvm.stacksave
  24594. 11, // llvm.trap
  24595. 3, // llvm.uadd.with.overflow
  24596. 3, // llvm.umul.with.overflow
  24597. 3, // llvm.usub.with.overflow
  24598. 2, // llvm.va_copy
  24599. 2, // llvm.va_end
  24600. 2, // llvm.var.annotation
  24601. 2, // llvm.va_start
  24602. 3, // llvm.x86.3dnow.pavgusb
  24603. 3, // llvm.x86.3dnow.pf2id
  24604. 3, // llvm.x86.3dnow.pfacc
  24605. 3, // llvm.x86.3dnow.pfadd
  24606. 3, // llvm.x86.3dnow.pfcmpeq
  24607. 3, // llvm.x86.3dnow.pfcmpge
  24608. 3, // llvm.x86.3dnow.pfcmpgt
  24609. 3, // llvm.x86.3dnow.pfmax
  24610. 3, // llvm.x86.3dnow.pfmin
  24611. 3, // llvm.x86.3dnow.pfmul
  24612. 3, // llvm.x86.3dnow.pfrcp
  24613. 3, // llvm.x86.3dnow.pfrcpit1
  24614. 3, // llvm.x86.3dnow.pfrcpit2
  24615. 3, // llvm.x86.3dnow.pfrsqit1
  24616. 3, // llvm.x86.3dnow.pfrsqrt
  24617. 3, // llvm.x86.3dnow.pfsub
  24618. 3, // llvm.x86.3dnow.pfsubr
  24619. 3, // llvm.x86.3dnow.pi2fd
  24620. 3, // llvm.x86.3dnow.pmulhrw
  24621. 3, // llvm.x86.3dnowa.pf2iw
  24622. 3, // llvm.x86.3dnowa.pfnacc
  24623. 3, // llvm.x86.3dnowa.pfpnacc
  24624. 3, // llvm.x86.3dnowa.pi2fw
  24625. 3, // llvm.x86.3dnowa.pswapd
  24626. 3, // llvm.x86.aesni.aesdec
  24627. 3, // llvm.x86.aesni.aesdeclast
  24628. 3, // llvm.x86.aesni.aesenc
  24629. 3, // llvm.x86.aesni.aesenclast
  24630. 3, // llvm.x86.aesni.aesimc
  24631. 3, // llvm.x86.aesni.aeskeygenassist
  24632. 1, // llvm.x86.avx2.gather.d.d
  24633. 1, // llvm.x86.avx2.gather.d.d.256
  24634. 1, // llvm.x86.avx2.gather.d.pd
  24635. 1, // llvm.x86.avx2.gather.d.pd.256
  24636. 1, // llvm.x86.avx2.gather.d.ps
  24637. 1, // llvm.x86.avx2.gather.d.ps.256
  24638. 1, // llvm.x86.avx2.gather.d.q
  24639. 1, // llvm.x86.avx2.gather.d.q.256
  24640. 1, // llvm.x86.avx2.gather.q.d
  24641. 1, // llvm.x86.avx2.gather.q.d.256
  24642. 1, // llvm.x86.avx2.gather.q.pd
  24643. 1, // llvm.x86.avx2.gather.q.pd.256
  24644. 1, // llvm.x86.avx2.gather.q.ps
  24645. 1, // llvm.x86.avx2.gather.q.ps.256
  24646. 1, // llvm.x86.avx2.gather.q.q
  24647. 1, // llvm.x86.avx2.gather.q.q.256
  24648. 1, // llvm.x86.avx2.maskload.d
  24649. 1, // llvm.x86.avx2.maskload.d.256
  24650. 1, // llvm.x86.avx2.maskload.q
  24651. 1, // llvm.x86.avx2.maskload.q.256
  24652. 2, // llvm.x86.avx2.maskstore.d
  24653. 2, // llvm.x86.avx2.maskstore.d.256
  24654. 2, // llvm.x86.avx2.maskstore.q
  24655. 2, // llvm.x86.avx2.maskstore.q.256
  24656. 1, // llvm.x86.avx2.movntdqa
  24657. 3, // llvm.x86.avx2.mpsadbw
  24658. 3, // llvm.x86.avx2.pabs.b
  24659. 3, // llvm.x86.avx2.pabs.d
  24660. 3, // llvm.x86.avx2.pabs.w
  24661. 3, // llvm.x86.avx2.packssdw
  24662. 3, // llvm.x86.avx2.packsswb
  24663. 3, // llvm.x86.avx2.packusdw
  24664. 3, // llvm.x86.avx2.packuswb
  24665. 3, // llvm.x86.avx2.padds.b
  24666. 3, // llvm.x86.avx2.padds.w
  24667. 3, // llvm.x86.avx2.paddus.b
  24668. 3, // llvm.x86.avx2.paddus.w
  24669. 3, // llvm.x86.avx2.pavg.b
  24670. 3, // llvm.x86.avx2.pavg.w
  24671. 3, // llvm.x86.avx2.pblendd.128
  24672. 3, // llvm.x86.avx2.pblendd.256
  24673. 3, // llvm.x86.avx2.pblendvb
  24674. 3, // llvm.x86.avx2.pblendw
  24675. 3, // llvm.x86.avx2.pbroadcastb.128
  24676. 3, // llvm.x86.avx2.pbroadcastb.256
  24677. 3, // llvm.x86.avx2.pbroadcastd.128
  24678. 3, // llvm.x86.avx2.pbroadcastd.256
  24679. 3, // llvm.x86.avx2.pbroadcastq.128
  24680. 3, // llvm.x86.avx2.pbroadcastq.256
  24681. 3, // llvm.x86.avx2.pbroadcastw.128
  24682. 3, // llvm.x86.avx2.pbroadcastw.256
  24683. 3, // llvm.x86.avx2.permd
  24684. 3, // llvm.x86.avx2.permps
  24685. 3, // llvm.x86.avx2.phadd.d
  24686. 3, // llvm.x86.avx2.phadd.sw
  24687. 3, // llvm.x86.avx2.phadd.w
  24688. 3, // llvm.x86.avx2.phsub.d
  24689. 3, // llvm.x86.avx2.phsub.sw
  24690. 3, // llvm.x86.avx2.phsub.w
  24691. 3, // llvm.x86.avx2.pmadd.ub.sw
  24692. 3, // llvm.x86.avx2.pmadd.wd
  24693. 3, // llvm.x86.avx2.pmaxs.b
  24694. 3, // llvm.x86.avx2.pmaxs.d
  24695. 3, // llvm.x86.avx2.pmaxs.w
  24696. 3, // llvm.x86.avx2.pmaxu.b
  24697. 3, // llvm.x86.avx2.pmaxu.d
  24698. 3, // llvm.x86.avx2.pmaxu.w
  24699. 3, // llvm.x86.avx2.pmins.b
  24700. 3, // llvm.x86.avx2.pmins.d
  24701. 3, // llvm.x86.avx2.pmins.w
  24702. 3, // llvm.x86.avx2.pminu.b
  24703. 3, // llvm.x86.avx2.pminu.d
  24704. 3, // llvm.x86.avx2.pminu.w
  24705. 3, // llvm.x86.avx2.pmovmskb
  24706. 3, // llvm.x86.avx2.pmovsxbd
  24707. 3, // llvm.x86.avx2.pmovsxbq
  24708. 3, // llvm.x86.avx2.pmovsxbw
  24709. 3, // llvm.x86.avx2.pmovsxdq
  24710. 3, // llvm.x86.avx2.pmovsxwd
  24711. 3, // llvm.x86.avx2.pmovsxwq
  24712. 3, // llvm.x86.avx2.pmovzxbd
  24713. 3, // llvm.x86.avx2.pmovzxbq
  24714. 3, // llvm.x86.avx2.pmovzxbw
  24715. 3, // llvm.x86.avx2.pmovzxdq
  24716. 3, // llvm.x86.avx2.pmovzxwd
  24717. 3, // llvm.x86.avx2.pmovzxwq
  24718. 3, // llvm.x86.avx2.pmul.dq
  24719. 3, // llvm.x86.avx2.pmul.hr.sw
  24720. 3, // llvm.x86.avx2.pmulh.w
  24721. 3, // llvm.x86.avx2.pmulhu.w
  24722. 3, // llvm.x86.avx2.pmulu.dq
  24723. 3, // llvm.x86.avx2.psad.bw
  24724. 3, // llvm.x86.avx2.pshuf.b
  24725. 3, // llvm.x86.avx2.psign.b
  24726. 3, // llvm.x86.avx2.psign.d
  24727. 3, // llvm.x86.avx2.psign.w
  24728. 3, // llvm.x86.avx2.psll.d
  24729. 3, // llvm.x86.avx2.psll.dq
  24730. 3, // llvm.x86.avx2.psll.dq.bs
  24731. 3, // llvm.x86.avx2.psll.q
  24732. 3, // llvm.x86.avx2.psll.w
  24733. 3, // llvm.x86.avx2.pslli.d
  24734. 3, // llvm.x86.avx2.pslli.q
  24735. 3, // llvm.x86.avx2.pslli.w
  24736. 3, // llvm.x86.avx2.psllv.d
  24737. 3, // llvm.x86.avx2.psllv.d.256
  24738. 3, // llvm.x86.avx2.psllv.q
  24739. 3, // llvm.x86.avx2.psllv.q.256
  24740. 3, // llvm.x86.avx2.psra.d
  24741. 3, // llvm.x86.avx2.psra.w
  24742. 3, // llvm.x86.avx2.psrai.d
  24743. 3, // llvm.x86.avx2.psrai.w
  24744. 3, // llvm.x86.avx2.psrav.d
  24745. 3, // llvm.x86.avx2.psrav.d.256
  24746. 3, // llvm.x86.avx2.psrl.d
  24747. 3, // llvm.x86.avx2.psrl.dq
  24748. 3, // llvm.x86.avx2.psrl.dq.bs
  24749. 3, // llvm.x86.avx2.psrl.q
  24750. 3, // llvm.x86.avx2.psrl.w
  24751. 3, // llvm.x86.avx2.psrli.d
  24752. 3, // llvm.x86.avx2.psrli.q
  24753. 3, // llvm.x86.avx2.psrli.w
  24754. 3, // llvm.x86.avx2.psrlv.d
  24755. 3, // llvm.x86.avx2.psrlv.d.256
  24756. 3, // llvm.x86.avx2.psrlv.q
  24757. 3, // llvm.x86.avx2.psrlv.q.256
  24758. 3, // llvm.x86.avx2.psubs.b
  24759. 3, // llvm.x86.avx2.psubs.w
  24760. 3, // llvm.x86.avx2.psubus.b
  24761. 3, // llvm.x86.avx2.psubus.w
  24762. 3, // llvm.x86.avx2.vbroadcast.sd.pd.256
  24763. 3, // llvm.x86.avx2.vbroadcast.ss.ps
  24764. 3, // llvm.x86.avx2.vbroadcast.ss.ps.256
  24765. 1, // llvm.x86.avx2.vbroadcasti128
  24766. 3, // llvm.x86.avx2.vextracti128
  24767. 3, // llvm.x86.avx2.vinserti128
  24768. 3, // llvm.x86.avx2.vperm2i128
  24769. 3, // llvm.x86.avx.addsub.pd.256
  24770. 3, // llvm.x86.avx.addsub.ps.256
  24771. 3, // llvm.x86.avx.blend.pd.256
  24772. 3, // llvm.x86.avx.blend.ps.256
  24773. 3, // llvm.x86.avx.blendv.pd.256
  24774. 3, // llvm.x86.avx.blendv.ps.256
  24775. 3, // llvm.x86.avx.cmp.pd.256
  24776. 3, // llvm.x86.avx.cmp.ps.256
  24777. 3, // llvm.x86.avx.cvt.pd2.ps.256
  24778. 3, // llvm.x86.avx.cvt.pd2dq.256
  24779. 3, // llvm.x86.avx.cvt.ps2.pd.256
  24780. 3, // llvm.x86.avx.cvt.ps2dq.256
  24781. 3, // llvm.x86.avx.cvtdq2.pd.256
  24782. 3, // llvm.x86.avx.cvtdq2.ps.256
  24783. 3, // llvm.x86.avx.cvtt.pd2dq.256
  24784. 3, // llvm.x86.avx.cvtt.ps2dq.256
  24785. 3, // llvm.x86.avx.dp.ps.256
  24786. 3, // llvm.x86.avx.hadd.pd.256
  24787. 3, // llvm.x86.avx.hadd.ps.256
  24788. 3, // llvm.x86.avx.hsub.pd.256
  24789. 3, // llvm.x86.avx.hsub.ps.256
  24790. 1, // llvm.x86.avx.ldu.dq.256
  24791. 1, // llvm.x86.avx.maskload.pd
  24792. 1, // llvm.x86.avx.maskload.pd.256
  24793. 1, // llvm.x86.avx.maskload.ps
  24794. 1, // llvm.x86.avx.maskload.ps.256
  24795. 2, // llvm.x86.avx.maskstore.pd
  24796. 2, // llvm.x86.avx.maskstore.pd.256
  24797. 2, // llvm.x86.avx.maskstore.ps
  24798. 2, // llvm.x86.avx.maskstore.ps.256
  24799. 3, // llvm.x86.avx.max.pd.256
  24800. 3, // llvm.x86.avx.max.ps.256
  24801. 3, // llvm.x86.avx.min.pd.256
  24802. 3, // llvm.x86.avx.min.ps.256
  24803. 3, // llvm.x86.avx.movmsk.pd.256
  24804. 3, // llvm.x86.avx.movmsk.ps.256
  24805. 3, // llvm.x86.avx.ptestc.256
  24806. 3, // llvm.x86.avx.ptestnzc.256
  24807. 3, // llvm.x86.avx.ptestz.256
  24808. 3, // llvm.x86.avx.rcp.ps.256
  24809. 3, // llvm.x86.avx.round.pd.256
  24810. 3, // llvm.x86.avx.round.ps.256
  24811. 3, // llvm.x86.avx.rsqrt.ps.256
  24812. 3, // llvm.x86.avx.sqrt.pd.256
  24813. 3, // llvm.x86.avx.sqrt.ps.256
  24814. 2, // llvm.x86.avx.storeu.dq.256
  24815. 2, // llvm.x86.avx.storeu.pd.256
  24816. 2, // llvm.x86.avx.storeu.ps.256
  24817. 1, // llvm.x86.avx.vbroadcast.sd.256
  24818. 1, // llvm.x86.avx.vbroadcast.ss
  24819. 1, // llvm.x86.avx.vbroadcast.ss.256
  24820. 1, // llvm.x86.avx.vbroadcastf128.pd.256
  24821. 1, // llvm.x86.avx.vbroadcastf128.ps.256
  24822. 3, // llvm.x86.avx.vextractf128.pd.256
  24823. 3, // llvm.x86.avx.vextractf128.ps.256
  24824. 3, // llvm.x86.avx.vextractf128.si.256
  24825. 3, // llvm.x86.avx.vinsertf128.pd.256
  24826. 3, // llvm.x86.avx.vinsertf128.ps.256
  24827. 3, // llvm.x86.avx.vinsertf128.si.256
  24828. 3, // llvm.x86.avx.vperm2f128.pd.256
  24829. 3, // llvm.x86.avx.vperm2f128.ps.256
  24830. 3, // llvm.x86.avx.vperm2f128.si.256
  24831. 3, // llvm.x86.avx.vpermilvar.pd
  24832. 3, // llvm.x86.avx.vpermilvar.pd.256
  24833. 3, // llvm.x86.avx.vpermilvar.ps
  24834. 3, // llvm.x86.avx.vpermilvar.ps.256
  24835. 3, // llvm.x86.avx.vtestc.pd
  24836. 3, // llvm.x86.avx.vtestc.pd.256
  24837. 3, // llvm.x86.avx.vtestc.ps
  24838. 3, // llvm.x86.avx.vtestc.ps.256
  24839. 3, // llvm.x86.avx.vtestnzc.pd
  24840. 3, // llvm.x86.avx.vtestnzc.pd.256
  24841. 3, // llvm.x86.avx.vtestnzc.ps
  24842. 3, // llvm.x86.avx.vtestnzc.ps.256
  24843. 3, // llvm.x86.avx.vtestz.pd
  24844. 3, // llvm.x86.avx.vtestz.pd.256
  24845. 3, // llvm.x86.avx.vtestz.ps
  24846. 3, // llvm.x86.avx.vtestz.ps.256
  24847. 2, // llvm.x86.avx.vzeroall
  24848. 2, // llvm.x86.avx.vzeroupper
  24849. 3, // llvm.x86.bmi.bextr.32
  24850. 3, // llvm.x86.bmi.bextr.64
  24851. 3, // llvm.x86.bmi.bzhi.32
  24852. 3, // llvm.x86.bmi.bzhi.64
  24853. 3, // llvm.x86.bmi.pdep.32
  24854. 3, // llvm.x86.bmi.pdep.64
  24855. 3, // llvm.x86.bmi.pext.32
  24856. 3, // llvm.x86.bmi.pext.64
  24857. 3, // llvm.x86.fma.vfmadd.pd
  24858. 3, // llvm.x86.fma.vfmadd.pd.256
  24859. 3, // llvm.x86.fma.vfmadd.ps
  24860. 3, // llvm.x86.fma.vfmadd.ps.256
  24861. 3, // llvm.x86.fma.vfmadd.sd
  24862. 3, // llvm.x86.fma.vfmadd.ss
  24863. 3, // llvm.x86.fma.vfmaddsub.pd
  24864. 3, // llvm.x86.fma.vfmaddsub.pd.256
  24865. 3, // llvm.x86.fma.vfmaddsub.ps
  24866. 3, // llvm.x86.fma.vfmaddsub.ps.256
  24867. 3, // llvm.x86.fma.vfmsub.pd
  24868. 3, // llvm.x86.fma.vfmsub.pd.256
  24869. 3, // llvm.x86.fma.vfmsub.ps
  24870. 3, // llvm.x86.fma.vfmsub.ps.256
  24871. 3, // llvm.x86.fma.vfmsub.sd
  24872. 3, // llvm.x86.fma.vfmsub.ss
  24873. 3, // llvm.x86.fma.vfmsubadd.pd
  24874. 3, // llvm.x86.fma.vfmsubadd.pd.256
  24875. 3, // llvm.x86.fma.vfmsubadd.ps
  24876. 3, // llvm.x86.fma.vfmsubadd.ps.256
  24877. 3, // llvm.x86.fma.vfnmadd.pd
  24878. 3, // llvm.x86.fma.vfnmadd.pd.256
  24879. 3, // llvm.x86.fma.vfnmadd.ps
  24880. 3, // llvm.x86.fma.vfnmadd.ps.256
  24881. 3, // llvm.x86.fma.vfnmadd.sd
  24882. 3, // llvm.x86.fma.vfnmadd.ss
  24883. 3, // llvm.x86.fma.vfnmsub.pd
  24884. 3, // llvm.x86.fma.vfnmsub.pd.256
  24885. 3, // llvm.x86.fma.vfnmsub.ps
  24886. 3, // llvm.x86.fma.vfnmsub.ps.256
  24887. 3, // llvm.x86.fma.vfnmsub.sd
  24888. 3, // llvm.x86.fma.vfnmsub.ss
  24889. 2, // llvm.x86.int
  24890. 2, // llvm.x86.mmx.emms
  24891. 2, // llvm.x86.mmx.femms
  24892. 2, // llvm.x86.mmx.maskmovq
  24893. 2, // llvm.x86.mmx.movnt.dq
  24894. 3, // llvm.x86.mmx.packssdw
  24895. 3, // llvm.x86.mmx.packsswb
  24896. 3, // llvm.x86.mmx.packuswb
  24897. 3, // llvm.x86.mmx.padd.b
  24898. 3, // llvm.x86.mmx.padd.d
  24899. 3, // llvm.x86.mmx.padd.q
  24900. 3, // llvm.x86.mmx.padd.w
  24901. 3, // llvm.x86.mmx.padds.b
  24902. 3, // llvm.x86.mmx.padds.w
  24903. 3, // llvm.x86.mmx.paddus.b
  24904. 3, // llvm.x86.mmx.paddus.w
  24905. 3, // llvm.x86.mmx.palignr.b
  24906. 3, // llvm.x86.mmx.pand
  24907. 3, // llvm.x86.mmx.pandn
  24908. 3, // llvm.x86.mmx.pavg.b
  24909. 3, // llvm.x86.mmx.pavg.w
  24910. 3, // llvm.x86.mmx.pcmpeq.b
  24911. 3, // llvm.x86.mmx.pcmpeq.d
  24912. 3, // llvm.x86.mmx.pcmpeq.w
  24913. 3, // llvm.x86.mmx.pcmpgt.b
  24914. 3, // llvm.x86.mmx.pcmpgt.d
  24915. 3, // llvm.x86.mmx.pcmpgt.w
  24916. 3, // llvm.x86.mmx.pextr.w
  24917. 3, // llvm.x86.mmx.pinsr.w
  24918. 3, // llvm.x86.mmx.pmadd.wd
  24919. 3, // llvm.x86.mmx.pmaxs.w
  24920. 3, // llvm.x86.mmx.pmaxu.b
  24921. 3, // llvm.x86.mmx.pmins.w
  24922. 3, // llvm.x86.mmx.pminu.b
  24923. 3, // llvm.x86.mmx.pmovmskb
  24924. 3, // llvm.x86.mmx.pmulh.w
  24925. 3, // llvm.x86.mmx.pmulhu.w
  24926. 3, // llvm.x86.mmx.pmull.w
  24927. 3, // llvm.x86.mmx.pmulu.dq
  24928. 3, // llvm.x86.mmx.por
  24929. 3, // llvm.x86.mmx.psad.bw
  24930. 3, // llvm.x86.mmx.psll.d
  24931. 3, // llvm.x86.mmx.psll.q
  24932. 3, // llvm.x86.mmx.psll.w
  24933. 3, // llvm.x86.mmx.pslli.d
  24934. 3, // llvm.x86.mmx.pslli.q
  24935. 3, // llvm.x86.mmx.pslli.w
  24936. 3, // llvm.x86.mmx.psra.d
  24937. 3, // llvm.x86.mmx.psra.w
  24938. 3, // llvm.x86.mmx.psrai.d
  24939. 3, // llvm.x86.mmx.psrai.w
  24940. 3, // llvm.x86.mmx.psrl.d
  24941. 3, // llvm.x86.mmx.psrl.q
  24942. 3, // llvm.x86.mmx.psrl.w
  24943. 3, // llvm.x86.mmx.psrli.d
  24944. 3, // llvm.x86.mmx.psrli.q
  24945. 3, // llvm.x86.mmx.psrli.w
  24946. 3, // llvm.x86.mmx.psub.b
  24947. 3, // llvm.x86.mmx.psub.d
  24948. 3, // llvm.x86.mmx.psub.q
  24949. 3, // llvm.x86.mmx.psub.w
  24950. 3, // llvm.x86.mmx.psubs.b
  24951. 3, // llvm.x86.mmx.psubs.w
  24952. 3, // llvm.x86.mmx.psubus.b
  24953. 3, // llvm.x86.mmx.psubus.w
  24954. 3, // llvm.x86.mmx.punpckhbw
  24955. 3, // llvm.x86.mmx.punpckhdq
  24956. 3, // llvm.x86.mmx.punpckhwd
  24957. 3, // llvm.x86.mmx.punpcklbw
  24958. 3, // llvm.x86.mmx.punpckldq
  24959. 3, // llvm.x86.mmx.punpcklwd
  24960. 3, // llvm.x86.mmx.pxor
  24961. 3, // llvm.x86.pclmulqdq
  24962. 2, // llvm.x86.rdfsbase.32
  24963. 2, // llvm.x86.rdfsbase.64
  24964. 2, // llvm.x86.rdgsbase.32
  24965. 2, // llvm.x86.rdgsbase.64
  24966. 2, // llvm.x86.rdrand.16
  24967. 2, // llvm.x86.rdrand.32
  24968. 2, // llvm.x86.rdrand.64
  24969. 3, // llvm.x86.sse2.add.sd
  24970. 2, // llvm.x86.sse2.clflush
  24971. 3, // llvm.x86.sse2.cmp.pd
  24972. 3, // llvm.x86.sse2.cmp.sd
  24973. 3, // llvm.x86.sse2.comieq.sd
  24974. 3, // llvm.x86.sse2.comige.sd
  24975. 3, // llvm.x86.sse2.comigt.sd
  24976. 3, // llvm.x86.sse2.comile.sd
  24977. 3, // llvm.x86.sse2.comilt.sd
  24978. 3, // llvm.x86.sse2.comineq.sd
  24979. 3, // llvm.x86.sse2.cvtdq2pd
  24980. 3, // llvm.x86.sse2.cvtdq2ps
  24981. 3, // llvm.x86.sse2.cvtpd2dq
  24982. 3, // llvm.x86.sse2.cvtpd2ps
  24983. 3, // llvm.x86.sse2.cvtps2dq
  24984. 3, // llvm.x86.sse2.cvtps2pd
  24985. 3, // llvm.x86.sse2.cvtsd2si
  24986. 3, // llvm.x86.sse2.cvtsd2si64
  24987. 3, // llvm.x86.sse2.cvtsd2ss
  24988. 3, // llvm.x86.sse2.cvtsi2sd
  24989. 3, // llvm.x86.sse2.cvtsi642sd
  24990. 3, // llvm.x86.sse2.cvtss2sd
  24991. 3, // llvm.x86.sse2.cvttpd2dq
  24992. 3, // llvm.x86.sse2.cvttps2dq
  24993. 3, // llvm.x86.sse2.cvttsd2si
  24994. 3, // llvm.x86.sse2.cvttsd2si64
  24995. 3, // llvm.x86.sse2.div.sd
  24996. 2, // llvm.x86.sse2.lfence
  24997. 2, // llvm.x86.sse2.maskmov.dqu
  24998. 3, // llvm.x86.sse2.max.pd
  24999. 3, // llvm.x86.sse2.max.sd
  25000. 2, // llvm.x86.sse2.mfence
  25001. 3, // llvm.x86.sse2.min.pd
  25002. 3, // llvm.x86.sse2.min.sd
  25003. 3, // llvm.x86.sse2.movmsk.pd
  25004. 3, // llvm.x86.sse2.mul.sd
  25005. 3, // llvm.x86.sse2.packssdw.128
  25006. 3, // llvm.x86.sse2.packsswb.128
  25007. 3, // llvm.x86.sse2.packuswb.128
  25008. 3, // llvm.x86.sse2.padds.b
  25009. 3, // llvm.x86.sse2.padds.w
  25010. 3, // llvm.x86.sse2.paddus.b
  25011. 3, // llvm.x86.sse2.paddus.w
  25012. 3, // llvm.x86.sse2.pavg.b
  25013. 3, // llvm.x86.sse2.pavg.w
  25014. 3, // llvm.x86.sse2.pmadd.wd
  25015. 3, // llvm.x86.sse2.pmaxs.w
  25016. 3, // llvm.x86.sse2.pmaxu.b
  25017. 3, // llvm.x86.sse2.pmins.w
  25018. 3, // llvm.x86.sse2.pminu.b
  25019. 3, // llvm.x86.sse2.pmovmskb.128
  25020. 3, // llvm.x86.sse2.pmulh.w
  25021. 3, // llvm.x86.sse2.pmulhu.w
  25022. 3, // llvm.x86.sse2.pmulu.dq
  25023. 3, // llvm.x86.sse2.psad.bw
  25024. 3, // llvm.x86.sse2.psll.d
  25025. 3, // llvm.x86.sse2.psll.dq
  25026. 3, // llvm.x86.sse2.psll.dq.bs
  25027. 3, // llvm.x86.sse2.psll.q
  25028. 3, // llvm.x86.sse2.psll.w
  25029. 3, // llvm.x86.sse2.pslli.d
  25030. 3, // llvm.x86.sse2.pslli.q
  25031. 3, // llvm.x86.sse2.pslli.w
  25032. 3, // llvm.x86.sse2.psra.d
  25033. 3, // llvm.x86.sse2.psra.w
  25034. 3, // llvm.x86.sse2.psrai.d
  25035. 3, // llvm.x86.sse2.psrai.w
  25036. 3, // llvm.x86.sse2.psrl.d
  25037. 3, // llvm.x86.sse2.psrl.dq
  25038. 3, // llvm.x86.sse2.psrl.dq.bs
  25039. 3, // llvm.x86.sse2.psrl.q
  25040. 3, // llvm.x86.sse2.psrl.w
  25041. 3, // llvm.x86.sse2.psrli.d
  25042. 3, // llvm.x86.sse2.psrli.q
  25043. 3, // llvm.x86.sse2.psrli.w
  25044. 3, // llvm.x86.sse2.psubs.b
  25045. 3, // llvm.x86.sse2.psubs.w
  25046. 3, // llvm.x86.sse2.psubus.b
  25047. 3, // llvm.x86.sse2.psubus.w
  25048. 3, // llvm.x86.sse2.sqrt.pd
  25049. 3, // llvm.x86.sse2.sqrt.sd
  25050. 2, // llvm.x86.sse2.storel.dq
  25051. 2, // llvm.x86.sse2.storeu.dq
  25052. 2, // llvm.x86.sse2.storeu.pd
  25053. 3, // llvm.x86.sse2.sub.sd
  25054. 3, // llvm.x86.sse2.ucomieq.sd
  25055. 3, // llvm.x86.sse2.ucomige.sd
  25056. 3, // llvm.x86.sse2.ucomigt.sd
  25057. 3, // llvm.x86.sse2.ucomile.sd
  25058. 3, // llvm.x86.sse2.ucomilt.sd
  25059. 3, // llvm.x86.sse2.ucomineq.sd
  25060. 3, // llvm.x86.sse3.addsub.pd
  25061. 3, // llvm.x86.sse3.addsub.ps
  25062. 3, // llvm.x86.sse3.hadd.pd
  25063. 3, // llvm.x86.sse3.hadd.ps
  25064. 3, // llvm.x86.sse3.hsub.pd
  25065. 3, // llvm.x86.sse3.hsub.ps
  25066. 1, // llvm.x86.sse3.ldu.dq
  25067. 2, // llvm.x86.sse3.monitor
  25068. 2, // llvm.x86.sse3.mwait
  25069. 3, // llvm.x86.sse41.blendpd
  25070. 3, // llvm.x86.sse41.blendps
  25071. 3, // llvm.x86.sse41.blendvpd
  25072. 3, // llvm.x86.sse41.blendvps
  25073. 3, // llvm.x86.sse41.dppd
  25074. 3, // llvm.x86.sse41.dpps
  25075. 3, // llvm.x86.sse41.extractps
  25076. 3, // llvm.x86.sse41.insertps
  25077. 1, // llvm.x86.sse41.movntdqa
  25078. 3, // llvm.x86.sse41.mpsadbw
  25079. 3, // llvm.x86.sse41.packusdw
  25080. 3, // llvm.x86.sse41.pblendvb
  25081. 3, // llvm.x86.sse41.pblendw
  25082. 3, // llvm.x86.sse41.pextrb
  25083. 3, // llvm.x86.sse41.pextrd
  25084. 3, // llvm.x86.sse41.pextrq
  25085. 3, // llvm.x86.sse41.phminposuw
  25086. 3, // llvm.x86.sse41.pmaxsb
  25087. 3, // llvm.x86.sse41.pmaxsd
  25088. 3, // llvm.x86.sse41.pmaxud
  25089. 3, // llvm.x86.sse41.pmaxuw
  25090. 3, // llvm.x86.sse41.pminsb
  25091. 3, // llvm.x86.sse41.pminsd
  25092. 3, // llvm.x86.sse41.pminud
  25093. 3, // llvm.x86.sse41.pminuw
  25094. 3, // llvm.x86.sse41.pmovsxbd
  25095. 3, // llvm.x86.sse41.pmovsxbq
  25096. 3, // llvm.x86.sse41.pmovsxbw
  25097. 3, // llvm.x86.sse41.pmovsxdq
  25098. 3, // llvm.x86.sse41.pmovsxwd
  25099. 3, // llvm.x86.sse41.pmovsxwq
  25100. 3, // llvm.x86.sse41.pmovzxbd
  25101. 3, // llvm.x86.sse41.pmovzxbq
  25102. 3, // llvm.x86.sse41.pmovzxbw
  25103. 3, // llvm.x86.sse41.pmovzxdq
  25104. 3, // llvm.x86.sse41.pmovzxwd
  25105. 3, // llvm.x86.sse41.pmovzxwq
  25106. 3, // llvm.x86.sse41.pmuldq
  25107. 3, // llvm.x86.sse41.ptestc
  25108. 3, // llvm.x86.sse41.ptestnzc
  25109. 3, // llvm.x86.sse41.ptestz
  25110. 3, // llvm.x86.sse41.round.pd
  25111. 3, // llvm.x86.sse41.round.ps
  25112. 3, // llvm.x86.sse41.round.sd
  25113. 3, // llvm.x86.sse41.round.ss
  25114. 3, // llvm.x86.sse42.crc32.32.16
  25115. 3, // llvm.x86.sse42.crc32.32.32
  25116. 3, // llvm.x86.sse42.crc32.32.8
  25117. 3, // llvm.x86.sse42.crc32.64.64
  25118. 3, // llvm.x86.sse42.crc32.64.8
  25119. 3, // llvm.x86.sse42.pcmpestri128
  25120. 3, // llvm.x86.sse42.pcmpestria128
  25121. 3, // llvm.x86.sse42.pcmpestric128
  25122. 3, // llvm.x86.sse42.pcmpestrio128
  25123. 3, // llvm.x86.sse42.pcmpestris128
  25124. 3, // llvm.x86.sse42.pcmpestriz128
  25125. 3, // llvm.x86.sse42.pcmpestrm128
  25126. 3, // llvm.x86.sse42.pcmpistri128
  25127. 3, // llvm.x86.sse42.pcmpistria128
  25128. 3, // llvm.x86.sse42.pcmpistric128
  25129. 3, // llvm.x86.sse42.pcmpistrio128
  25130. 3, // llvm.x86.sse42.pcmpistris128
  25131. 3, // llvm.x86.sse42.pcmpistriz128
  25132. 3, // llvm.x86.sse42.pcmpistrm128
  25133. 3, // llvm.x86.sse4a.extrq
  25134. 3, // llvm.x86.sse4a.extrqi
  25135. 3, // llvm.x86.sse4a.insertq
  25136. 3, // llvm.x86.sse4a.insertqi
  25137. 2, // llvm.x86.sse4a.movnt.sd
  25138. 2, // llvm.x86.sse4a.movnt.ss
  25139. 3, // llvm.x86.sse.add.ss
  25140. 3, // llvm.x86.sse.cmp.ps
  25141. 3, // llvm.x86.sse.cmp.ss
  25142. 3, // llvm.x86.sse.comieq.ss
  25143. 3, // llvm.x86.sse.comige.ss
  25144. 3, // llvm.x86.sse.comigt.ss
  25145. 3, // llvm.x86.sse.comile.ss
  25146. 3, // llvm.x86.sse.comilt.ss
  25147. 3, // llvm.x86.sse.comineq.ss
  25148. 3, // llvm.x86.sse.cvtpd2pi
  25149. 3, // llvm.x86.sse.cvtpi2pd
  25150. 3, // llvm.x86.sse.cvtpi2ps
  25151. 3, // llvm.x86.sse.cvtps2pi
  25152. 3, // llvm.x86.sse.cvtsi2ss
  25153. 3, // llvm.x86.sse.cvtsi642ss
  25154. 3, // llvm.x86.sse.cvtss2si
  25155. 3, // llvm.x86.sse.cvtss2si64
  25156. 3, // llvm.x86.sse.cvttpd2pi
  25157. 3, // llvm.x86.sse.cvttps2pi
  25158. 3, // llvm.x86.sse.cvttss2si
  25159. 3, // llvm.x86.sse.cvttss2si64
  25160. 3, // llvm.x86.sse.div.ss
  25161. 2, // llvm.x86.sse.ldmxcsr
  25162. 3, // llvm.x86.sse.max.ps
  25163. 3, // llvm.x86.sse.max.ss
  25164. 3, // llvm.x86.sse.min.ps
  25165. 3, // llvm.x86.sse.min.ss
  25166. 3, // llvm.x86.sse.movmsk.ps
  25167. 3, // llvm.x86.sse.mul.ss
  25168. 3, // llvm.x86.sse.pshuf.w
  25169. 3, // llvm.x86.sse.rcp.ps
  25170. 3, // llvm.x86.sse.rcp.ss
  25171. 3, // llvm.x86.sse.rsqrt.ps
  25172. 3, // llvm.x86.sse.rsqrt.ss
  25173. 2, // llvm.x86.sse.sfence
  25174. 3, // llvm.x86.sse.sqrt.ps
  25175. 3, // llvm.x86.sse.sqrt.ss
  25176. 2, // llvm.x86.sse.stmxcsr
  25177. 2, // llvm.x86.sse.storeu.ps
  25178. 3, // llvm.x86.sse.sub.ss
  25179. 3, // llvm.x86.sse.ucomieq.ss
  25180. 3, // llvm.x86.sse.ucomige.ss
  25181. 3, // llvm.x86.sse.ucomigt.ss
  25182. 3, // llvm.x86.sse.ucomile.ss
  25183. 3, // llvm.x86.sse.ucomilt.ss
  25184. 3, // llvm.x86.sse.ucomineq.ss
  25185. 3, // llvm.x86.ssse3.pabs.b
  25186. 3, // llvm.x86.ssse3.pabs.b.128
  25187. 3, // llvm.x86.ssse3.pabs.d
  25188. 3, // llvm.x86.ssse3.pabs.d.128
  25189. 3, // llvm.x86.ssse3.pabs.w
  25190. 3, // llvm.x86.ssse3.pabs.w.128
  25191. 3, // llvm.x86.ssse3.phadd.d
  25192. 3, // llvm.x86.ssse3.phadd.d.128
  25193. 3, // llvm.x86.ssse3.phadd.sw
  25194. 3, // llvm.x86.ssse3.phadd.sw.128
  25195. 3, // llvm.x86.ssse3.phadd.w
  25196. 3, // llvm.x86.ssse3.phadd.w.128
  25197. 3, // llvm.x86.ssse3.phsub.d
  25198. 3, // llvm.x86.ssse3.phsub.d.128
  25199. 3, // llvm.x86.ssse3.phsub.sw
  25200. 3, // llvm.x86.ssse3.phsub.sw.128
  25201. 3, // llvm.x86.ssse3.phsub.w
  25202. 3, // llvm.x86.ssse3.phsub.w.128
  25203. 3, // llvm.x86.ssse3.pmadd.ub.sw
  25204. 3, // llvm.x86.ssse3.pmadd.ub.sw.128
  25205. 3, // llvm.x86.ssse3.pmul.hr.sw
  25206. 3, // llvm.x86.ssse3.pmul.hr.sw.128
  25207. 3, // llvm.x86.ssse3.pshuf.b
  25208. 3, // llvm.x86.ssse3.pshuf.b.128
  25209. 3, // llvm.x86.ssse3.psign.b
  25210. 3, // llvm.x86.ssse3.psign.b.128
  25211. 3, // llvm.x86.ssse3.psign.d
  25212. 3, // llvm.x86.ssse3.psign.d.128
  25213. 3, // llvm.x86.ssse3.psign.w
  25214. 3, // llvm.x86.ssse3.psign.w.128
  25215. 3, // llvm.x86.vcvtph2ps.128
  25216. 3, // llvm.x86.vcvtph2ps.256
  25217. 3, // llvm.x86.vcvtps2ph.128
  25218. 3, // llvm.x86.vcvtps2ph.256
  25219. 2, // llvm.x86.wrfsbase.32
  25220. 2, // llvm.x86.wrfsbase.64
  25221. 2, // llvm.x86.wrgsbase.32
  25222. 2, // llvm.x86.wrgsbase.64
  25223. 3, // llvm.x86.xop.vfrcz.pd
  25224. 3, // llvm.x86.xop.vfrcz.pd.256
  25225. 3, // llvm.x86.xop.vfrcz.ps
  25226. 3, // llvm.x86.xop.vfrcz.ps.256
  25227. 3, // llvm.x86.xop.vfrcz.sd
  25228. 3, // llvm.x86.xop.vfrcz.ss
  25229. 3, // llvm.x86.xop.vpcmov
  25230. 3, // llvm.x86.xop.vpcmov.256
  25231. 3, // llvm.x86.xop.vpcomb
  25232. 3, // llvm.x86.xop.vpcomd
  25233. 3, // llvm.x86.xop.vpcomq
  25234. 3, // llvm.x86.xop.vpcomub
  25235. 3, // llvm.x86.xop.vpcomud
  25236. 3, // llvm.x86.xop.vpcomuq
  25237. 3, // llvm.x86.xop.vpcomuw
  25238. 3, // llvm.x86.xop.vpcomw
  25239. 3, // llvm.x86.xop.vpermil2pd
  25240. 3, // llvm.x86.xop.vpermil2pd.256
  25241. 3, // llvm.x86.xop.vpermil2ps
  25242. 3, // llvm.x86.xop.vpermil2ps.256
  25243. 3, // llvm.x86.xop.vphaddbd
  25244. 3, // llvm.x86.xop.vphaddbq
  25245. 3, // llvm.x86.xop.vphaddbw
  25246. 3, // llvm.x86.xop.vphadddq
  25247. 3, // llvm.x86.xop.vphaddubd
  25248. 3, // llvm.x86.xop.vphaddubq
  25249. 3, // llvm.x86.xop.vphaddubw
  25250. 3, // llvm.x86.xop.vphaddudq
  25251. 3, // llvm.x86.xop.vphadduwd
  25252. 3, // llvm.x86.xop.vphadduwq
  25253. 3, // llvm.x86.xop.vphaddwd
  25254. 3, // llvm.x86.xop.vphaddwq
  25255. 3, // llvm.x86.xop.vphsubbw
  25256. 3, // llvm.x86.xop.vphsubdq
  25257. 3, // llvm.x86.xop.vphsubwd
  25258. 3, // llvm.x86.xop.vpmacsdd
  25259. 3, // llvm.x86.xop.vpmacsdqh
  25260. 3, // llvm.x86.xop.vpmacsdql
  25261. 3, // llvm.x86.xop.vpmacssdd
  25262. 3, // llvm.x86.xop.vpmacssdqh
  25263. 3, // llvm.x86.xop.vpmacssdql
  25264. 3, // llvm.x86.xop.vpmacsswd
  25265. 3, // llvm.x86.xop.vpmacssww
  25266. 3, // llvm.x86.xop.vpmacswd
  25267. 3, // llvm.x86.xop.vpmacsww
  25268. 3, // llvm.x86.xop.vpmadcsswd
  25269. 3, // llvm.x86.xop.vpmadcswd
  25270. 3, // llvm.x86.xop.vpperm
  25271. 3, // llvm.x86.xop.vprotb
  25272. 3, // llvm.x86.xop.vprotbi
  25273. 3, // llvm.x86.xop.vprotd
  25274. 3, // llvm.x86.xop.vprotdi
  25275. 3, // llvm.x86.xop.vprotq
  25276. 3, // llvm.x86.xop.vprotqi
  25277. 3, // llvm.x86.xop.vprotw
  25278. 3, // llvm.x86.xop.vprotwi
  25279. 3, // llvm.x86.xop.vpshab
  25280. 3, // llvm.x86.xop.vpshad
  25281. 3, // llvm.x86.xop.vpshaq
  25282. 3, // llvm.x86.xop.vpshaw
  25283. 3, // llvm.x86.xop.vpshlb
  25284. 3, // llvm.x86.xop.vpshld
  25285. 3, // llvm.x86.xop.vpshlq
  25286. 3, // llvm.x86.xop.vpshlw
  25287. 3, // llvm.xcore.bitrev
  25288. 2, // llvm.xcore.checkevent
  25289. 5, // llvm.xcore.chkct
  25290. 2, // llvm.xcore.clre
  25291. 2, // llvm.xcore.clrsr
  25292. 3, // llvm.xcore.crc32
  25293. 3, // llvm.xcore.crc8
  25294. 5, // llvm.xcore.eeu
  25295. 5, // llvm.xcore.endin
  25296. 5, // llvm.xcore.freer
  25297. 2, // llvm.xcore.geted
  25298. 2, // llvm.xcore.getet
  25299. 3, // llvm.xcore.getid
  25300. 2, // llvm.xcore.getps
  25301. 2, // llvm.xcore.getr
  25302. 5, // llvm.xcore.getst
  25303. 5, // llvm.xcore.getts
  25304. 5, // llvm.xcore.in
  25305. 5, // llvm.xcore.inct
  25306. 5, // llvm.xcore.initcp
  25307. 5, // llvm.xcore.initdp
  25308. 5, // llvm.xcore.initlr
  25309. 5, // llvm.xcore.initpc
  25310. 5, // llvm.xcore.initsp
  25311. 5, // llvm.xcore.inshr
  25312. 5, // llvm.xcore.int
  25313. 5, // llvm.xcore.mjoin
  25314. 5, // llvm.xcore.msync
  25315. 5, // llvm.xcore.out
  25316. 5, // llvm.xcore.outct
  25317. 5, // llvm.xcore.outshr
  25318. 5, // llvm.xcore.outt
  25319. 5, // llvm.xcore.peek
  25320. 5, // llvm.xcore.setc
  25321. 8, // llvm.xcore.setclk
  25322. 5, // llvm.xcore.setd
  25323. 5, // llvm.xcore.setev
  25324. 2, // llvm.xcore.setps
  25325. 5, // llvm.xcore.setpsc
  25326. 5, // llvm.xcore.setpt
  25327. 8, // llvm.xcore.setrdy
  25328. 2, // llvm.xcore.setsr
  25329. 5, // llvm.xcore.settw
  25330. 5, // llvm.xcore.setv
  25331. 3, // llvm.xcore.sext
  25332. 2, // llvm.xcore.ssync
  25333. 5, // llvm.xcore.syncr
  25334. 5, // llvm.xcore.testct
  25335. 5, // llvm.xcore.testwct
  25336. 1, // llvm.xcore.waitevent
  25337. 3, // llvm.xcore.zext
  25338. };
  25339. AttributeWithIndex AWI[3];
  25340. unsigned NumAttrs = 0;
  25341. if (id != 0) {
  25342. switch(IntrinsicsToAttributesMap[id - 1]) {
  25343. default: llvm_unreachable("Invalid attribute number");
  25344. case 3:
  25345. AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadNone);
  25346. NumAttrs = 1;
  25347. break;
  25348. case 10:
  25349. AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
  25350. AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadNone);
  25351. NumAttrs = 2;
  25352. break;
  25353. case 1:
  25354. AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadOnly);
  25355. NumAttrs = 1;
  25356. break;
  25357. case 9:
  25358. AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
  25359. AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::ReadOnly);
  25360. NumAttrs = 2;
  25361. break;
  25362. case 2:
  25363. AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
  25364. NumAttrs = 1;
  25365. break;
  25366. case 5:
  25367. AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
  25368. AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
  25369. NumAttrs = 2;
  25370. break;
  25371. case 8:
  25372. AWI[0] = AttributeWithIndex::get(1, Attribute::NoCapture);
  25373. AWI[1] = AttributeWithIndex::get(2, Attribute::NoCapture);
  25374. AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
  25375. NumAttrs = 3;
  25376. break;
  25377. case 7:
  25378. AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture);
  25379. AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
  25380. NumAttrs = 2;
  25381. break;
  25382. case 4:
  25383. AWI[0] = AttributeWithIndex::get(2, Attribute::NoCapture);
  25384. AWI[1] = AttributeWithIndex::get(3, Attribute::NoCapture);
  25385. AWI[2] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
  25386. NumAttrs = 3;
  25387. break;
  25388. case 6:
  25389. AWI[0] = AttributeWithIndex::get(3, Attribute::NoCapture);
  25390. AWI[1] = AttributeWithIndex::get(~0, Attribute::NoUnwind);
  25391. NumAttrs = 2;
  25392. break;
  25393. case 11:
  25394. AWI[0] = AttributeWithIndex::get(~0, Attribute::NoUnwind|Attribute::NoReturn);
  25395. NumAttrs = 1;
  25396. break;
  25397. }
  25398. }
  25399. return AttrListPtr::get(ArrayRef<AttributeWithIndex>(AWI, NumAttrs));
  25400. }
  25401. #endif // GET_INTRINSIC_ATTRIBUTES
  25402. // Determine intrinsic alias analysis mod/ref behavior.
  25403. #ifdef GET_INTRINSIC_MODREF_BEHAVIOR
  25404. assert(iid <= Intrinsic::xcore_zext && "Unknown intrinsic.");
  25405. static const uint8_t IntrinsicModRefBehavior[] = {
  25406. /* invalid */ UnknownModRefBehavior,
  25407. /* adjust_trampoline */ OnlyReadsArgumentPointees,
  25408. /* annotation */ UnknownModRefBehavior,
  25409. /* arm_cdp */ UnknownModRefBehavior,
  25410. /* arm_cdp2 */ UnknownModRefBehavior,
  25411. /* arm_get_fpscr */ DoesNotAccessMemory,
  25412. /* arm_ldrexd */ OnlyReadsArgumentPointees,
  25413. /* arm_mcr */ UnknownModRefBehavior,
  25414. /* arm_mcr2 */ UnknownModRefBehavior,
  25415. /* arm_mcrr */ UnknownModRefBehavior,
  25416. /* arm_mcrr2 */ UnknownModRefBehavior,
  25417. /* arm_mrc */ UnknownModRefBehavior,
  25418. /* arm_mrc2 */ UnknownModRefBehavior,
  25419. /* arm_neon_vabds */ DoesNotAccessMemory,
  25420. /* arm_neon_vabdu */ DoesNotAccessMemory,
  25421. /* arm_neon_vabs */ DoesNotAccessMemory,
  25422. /* arm_neon_vacged */ DoesNotAccessMemory,
  25423. /* arm_neon_vacgeq */ DoesNotAccessMemory,
  25424. /* arm_neon_vacgtd */ DoesNotAccessMemory,
  25425. /* arm_neon_vacgtq */ DoesNotAccessMemory,
  25426. /* arm_neon_vaddhn */ DoesNotAccessMemory,
  25427. /* arm_neon_vbsl */ DoesNotAccessMemory,
  25428. /* arm_neon_vcls */ DoesNotAccessMemory,
  25429. /* arm_neon_vclz */ DoesNotAccessMemory,
  25430. /* arm_neon_vcnt */ DoesNotAccessMemory,
  25431. /* arm_neon_vcvtfp2fxs */ DoesNotAccessMemory,
  25432. /* arm_neon_vcvtfp2fxu */ DoesNotAccessMemory,
  25433. /* arm_neon_vcvtfp2hf */ DoesNotAccessMemory,
  25434. /* arm_neon_vcvtfxs2fp */ DoesNotAccessMemory,
  25435. /* arm_neon_vcvtfxu2fp */ DoesNotAccessMemory,
  25436. /* arm_neon_vcvthf2fp */ DoesNotAccessMemory,
  25437. /* arm_neon_vhadds */ DoesNotAccessMemory,
  25438. /* arm_neon_vhaddu */ DoesNotAccessMemory,
  25439. /* arm_neon_vhsubs */ DoesNotAccessMemory,
  25440. /* arm_neon_vhsubu */ DoesNotAccessMemory,
  25441. /* arm_neon_vld1 */ OnlyReadsArgumentPointees,
  25442. /* arm_neon_vld2 */ OnlyReadsArgumentPointees,
  25443. /* arm_neon_vld2lane */ OnlyReadsArgumentPointees,
  25444. /* arm_neon_vld3 */ OnlyReadsArgumentPointees,
  25445. /* arm_neon_vld3lane */ OnlyReadsArgumentPointees,
  25446. /* arm_neon_vld4 */ OnlyReadsArgumentPointees,
  25447. /* arm_neon_vld4lane */ OnlyReadsArgumentPointees,
  25448. /* arm_neon_vmaxs */ DoesNotAccessMemory,
  25449. /* arm_neon_vmaxu */ DoesNotAccessMemory,
  25450. /* arm_neon_vmins */ DoesNotAccessMemory,
  25451. /* arm_neon_vminu */ DoesNotAccessMemory,
  25452. /* arm_neon_vmullp */ DoesNotAccessMemory,
  25453. /* arm_neon_vmulls */ DoesNotAccessMemory,
  25454. /* arm_neon_vmullu */ DoesNotAccessMemory,
  25455. /* arm_neon_vmulp */ DoesNotAccessMemory,
  25456. /* arm_neon_vpadals */ DoesNotAccessMemory,
  25457. /* arm_neon_vpadalu */ DoesNotAccessMemory,
  25458. /* arm_neon_vpadd */ DoesNotAccessMemory,
  25459. /* arm_neon_vpaddls */ DoesNotAccessMemory,
  25460. /* arm_neon_vpaddlu */ DoesNotAccessMemory,
  25461. /* arm_neon_vpmaxs */ DoesNotAccessMemory,
  25462. /* arm_neon_vpmaxu */ DoesNotAccessMemory,
  25463. /* arm_neon_vpmins */ DoesNotAccessMemory,
  25464. /* arm_neon_vpminu */ DoesNotAccessMemory,
  25465. /* arm_neon_vqabs */ DoesNotAccessMemory,
  25466. /* arm_neon_vqadds */ DoesNotAccessMemory,
  25467. /* arm_neon_vqaddu */ DoesNotAccessMemory,
  25468. /* arm_neon_vqdmlal */ DoesNotAccessMemory,
  25469. /* arm_neon_vqdmlsl */ DoesNotAccessMemory,
  25470. /* arm_neon_vqdmulh */ DoesNotAccessMemory,
  25471. /* arm_neon_vqdmull */ DoesNotAccessMemory,
  25472. /* arm_neon_vqmovns */ DoesNotAccessMemory,
  25473. /* arm_neon_vqmovnsu */ DoesNotAccessMemory,
  25474. /* arm_neon_vqmovnu */ DoesNotAccessMemory,
  25475. /* arm_neon_vqneg */ DoesNotAccessMemory,
  25476. /* arm_neon_vqrdmulh */ DoesNotAccessMemory,
  25477. /* arm_neon_vqrshiftns */ DoesNotAccessMemory,
  25478. /* arm_neon_vqrshiftnsu */ DoesNotAccessMemory,
  25479. /* arm_neon_vqrshiftnu */ DoesNotAccessMemory,
  25480. /* arm_neon_vqrshifts */ DoesNotAccessMemory,
  25481. /* arm_neon_vqrshiftu */ DoesNotAccessMemory,
  25482. /* arm_neon_vqshiftns */ DoesNotAccessMemory,
  25483. /* arm_neon_vqshiftnsu */ DoesNotAccessMemory,
  25484. /* arm_neon_vqshiftnu */ DoesNotAccessMemory,
  25485. /* arm_neon_vqshifts */ DoesNotAccessMemory,
  25486. /* arm_neon_vqshiftsu */ DoesNotAccessMemory,
  25487. /* arm_neon_vqshiftu */ DoesNotAccessMemory,
  25488. /* arm_neon_vqsubs */ DoesNotAccessMemory,
  25489. /* arm_neon_vqsubu */ DoesNotAccessMemory,
  25490. /* arm_neon_vraddhn */ DoesNotAccessMemory,
  25491. /* arm_neon_vrecpe */ DoesNotAccessMemory,
  25492. /* arm_neon_vrecps */ DoesNotAccessMemory,
  25493. /* arm_neon_vrhadds */ DoesNotAccessMemory,
  25494. /* arm_neon_vrhaddu */ DoesNotAccessMemory,
  25495. /* arm_neon_vrshiftn */ DoesNotAccessMemory,
  25496. /* arm_neon_vrshifts */ DoesNotAccessMemory,
  25497. /* arm_neon_vrshiftu */ DoesNotAccessMemory,
  25498. /* arm_neon_vrsqrte */ DoesNotAccessMemory,
  25499. /* arm_neon_vrsqrts */ DoesNotAccessMemory,
  25500. /* arm_neon_vrsubhn */ DoesNotAccessMemory,
  25501. /* arm_neon_vshiftins */ DoesNotAccessMemory,
  25502. /* arm_neon_vshiftls */ DoesNotAccessMemory,
  25503. /* arm_neon_vshiftlu */ DoesNotAccessMemory,
  25504. /* arm_neon_vshiftn */ DoesNotAccessMemory,
  25505. /* arm_neon_vshifts */ DoesNotAccessMemory,
  25506. /* arm_neon_vshiftu */ DoesNotAccessMemory,
  25507. /* arm_neon_vst1 */ OnlyAccessesArgumentPointees,
  25508. /* arm_neon_vst2 */ OnlyAccessesArgumentPointees,
  25509. /* arm_neon_vst2lane */ OnlyAccessesArgumentPointees,
  25510. /* arm_neon_vst3 */ OnlyAccessesArgumentPointees,
  25511. /* arm_neon_vst3lane */ OnlyAccessesArgumentPointees,
  25512. /* arm_neon_vst4 */ OnlyAccessesArgumentPointees,
  25513. /* arm_neon_vst4lane */ OnlyAccessesArgumentPointees,
  25514. /* arm_neon_vsubhn */ DoesNotAccessMemory,
  25515. /* arm_neon_vtbl1 */ DoesNotAccessMemory,
  25516. /* arm_neon_vtbl2 */ DoesNotAccessMemory,
  25517. /* arm_neon_vtbl3 */ DoesNotAccessMemory,
  25518. /* arm_neon_vtbl4 */ DoesNotAccessMemory,
  25519. /* arm_neon_vtbx1 */ DoesNotAccessMemory,
  25520. /* arm_neon_vtbx2 */ DoesNotAccessMemory,
  25521. /* arm_neon_vtbx3 */ DoesNotAccessMemory,
  25522. /* arm_neon_vtbx4 */ DoesNotAccessMemory,
  25523. /* arm_qadd */ DoesNotAccessMemory,
  25524. /* arm_qsub */ DoesNotAccessMemory,
  25525. /* arm_set_fpscr */ UnknownModRefBehavior,
  25526. /* arm_ssat */ DoesNotAccessMemory,
  25527. /* arm_strexd */ OnlyAccessesArgumentPointees,
  25528. /* arm_thread_pointer */ DoesNotAccessMemory,
  25529. /* arm_usat */ DoesNotAccessMemory,
  25530. /* arm_vcvtr */ DoesNotAccessMemory,
  25531. /* arm_vcvtru */ DoesNotAccessMemory,
  25532. /* bswap */ DoesNotAccessMemory,
  25533. /* convert_from_fp16 */ DoesNotAccessMemory,
  25534. /* convert_to_fp16 */ DoesNotAccessMemory,
  25535. /* convertff */ UnknownModRefBehavior,
  25536. /* convertfsi */ UnknownModRefBehavior,
  25537. /* convertfui */ UnknownModRefBehavior,
  25538. /* convertsif */ UnknownModRefBehavior,
  25539. /* convertss */ UnknownModRefBehavior,
  25540. /* convertsu */ UnknownModRefBehavior,
  25541. /* convertuif */ UnknownModRefBehavior,
  25542. /* convertus */ UnknownModRefBehavior,
  25543. /* convertuu */ UnknownModRefBehavior,
  25544. /* cos */ OnlyReadsMemory,
  25545. /* ctlz */ DoesNotAccessMemory,
  25546. /* ctpop */ DoesNotAccessMemory,
  25547. /* cttz */ DoesNotAccessMemory,
  25548. /* cuda_syncthreads */ UnknownModRefBehavior,
  25549. /* dbg_declare */ DoesNotAccessMemory,
  25550. /* dbg_value */ DoesNotAccessMemory,
  25551. /* debugtrap */ UnknownModRefBehavior,
  25552. /* donothing */ DoesNotAccessMemory,
  25553. /* eh_dwarf_cfa */ UnknownModRefBehavior,
  25554. /* eh_return_i32 */ UnknownModRefBehavior,
  25555. /* eh_return_i64 */ UnknownModRefBehavior,
  25556. /* eh_sjlj_callsite */ DoesNotAccessMemory,
  25557. /* eh_sjlj_functioncontext */ UnknownModRefBehavior,
  25558. /* eh_sjlj_longjmp */ UnknownModRefBehavior,
  25559. /* eh_sjlj_lsda */ DoesNotAccessMemory,
  25560. /* eh_sjlj_setjmp */ UnknownModRefBehavior,
  25561. /* eh_typeid_for */ DoesNotAccessMemory,
  25562. /* eh_unwind_init */ UnknownModRefBehavior,
  25563. /* exp */ OnlyReadsMemory,
  25564. /* exp2 */ OnlyReadsMemory,
  25565. /* expect */ DoesNotAccessMemory,
  25566. /* fabs */ OnlyReadsMemory,
  25567. /* floor */ OnlyReadsMemory,
  25568. /* flt_rounds */ UnknownModRefBehavior,
  25569. /* fma */ DoesNotAccessMemory,
  25570. /* fmuladd */ DoesNotAccessMemory,
  25571. /* frameaddress */ DoesNotAccessMemory,
  25572. /* gcread */ OnlyReadsArgumentPointees,
  25573. /* gcroot */ UnknownModRefBehavior,
  25574. /* gcwrite */ OnlyAccessesArgumentPointees,
  25575. /* hexagon_A2_abs */ DoesNotAccessMemory,
  25576. /* hexagon_A2_absp */ DoesNotAccessMemory,
  25577. /* hexagon_A2_abssat */ DoesNotAccessMemory,
  25578. /* hexagon_A2_add */ DoesNotAccessMemory,
  25579. /* hexagon_A2_addh_h16_hh */ DoesNotAccessMemory,
  25580. /* hexagon_A2_addh_h16_hl */ DoesNotAccessMemory,
  25581. /* hexagon_A2_addh_h16_lh */ DoesNotAccessMemory,
  25582. /* hexagon_A2_addh_h16_ll */ DoesNotAccessMemory,
  25583. /* hexagon_A2_addh_h16_sat_hh */ DoesNotAccessMemory,
  25584. /* hexagon_A2_addh_h16_sat_hl */ DoesNotAccessMemory,
  25585. /* hexagon_A2_addh_h16_sat_lh */ DoesNotAccessMemory,
  25586. /* hexagon_A2_addh_h16_sat_ll */ DoesNotAccessMemory,
  25587. /* hexagon_A2_addh_l16_hl */ DoesNotAccessMemory,
  25588. /* hexagon_A2_addh_l16_ll */ DoesNotAccessMemory,
  25589. /* hexagon_A2_addh_l16_sat_hl */ DoesNotAccessMemory,
  25590. /* hexagon_A2_addh_l16_sat_ll */ DoesNotAccessMemory,
  25591. /* hexagon_A2_addi */ DoesNotAccessMemory,
  25592. /* hexagon_A2_addp */ DoesNotAccessMemory,
  25593. /* hexagon_A2_addpsat */ DoesNotAccessMemory,
  25594. /* hexagon_A2_addsat */ DoesNotAccessMemory,
  25595. /* hexagon_A2_addsp */ DoesNotAccessMemory,
  25596. /* hexagon_A2_and */ DoesNotAccessMemory,
  25597. /* hexagon_A2_andir */ DoesNotAccessMemory,
  25598. /* hexagon_A2_andp */ DoesNotAccessMemory,
  25599. /* hexagon_A2_aslh */ DoesNotAccessMemory,
  25600. /* hexagon_A2_asrh */ DoesNotAccessMemory,
  25601. /* hexagon_A2_combine_hh */ DoesNotAccessMemory,
  25602. /* hexagon_A2_combine_hl */ DoesNotAccessMemory,
  25603. /* hexagon_A2_combine_lh */ DoesNotAccessMemory,
  25604. /* hexagon_A2_combine_ll */ DoesNotAccessMemory,
  25605. /* hexagon_A2_combineii */ DoesNotAccessMemory,
  25606. /* hexagon_A2_combinew */ DoesNotAccessMemory,
  25607. /* hexagon_A2_max */ DoesNotAccessMemory,
  25608. /* hexagon_A2_maxp */ DoesNotAccessMemory,
  25609. /* hexagon_A2_maxu */ DoesNotAccessMemory,
  25610. /* hexagon_A2_maxup */ DoesNotAccessMemory,
  25611. /* hexagon_A2_min */ DoesNotAccessMemory,
  25612. /* hexagon_A2_minp */ DoesNotAccessMemory,
  25613. /* hexagon_A2_minu */ DoesNotAccessMemory,
  25614. /* hexagon_A2_minup */ DoesNotAccessMemory,
  25615. /* hexagon_A2_neg */ DoesNotAccessMemory,
  25616. /* hexagon_A2_negp */ DoesNotAccessMemory,
  25617. /* hexagon_A2_negsat */ DoesNotAccessMemory,
  25618. /* hexagon_A2_not */ DoesNotAccessMemory,
  25619. /* hexagon_A2_notp */ DoesNotAccessMemory,
  25620. /* hexagon_A2_or */ DoesNotAccessMemory,
  25621. /* hexagon_A2_orir */ DoesNotAccessMemory,
  25622. /* hexagon_A2_orp */ DoesNotAccessMemory,
  25623. /* hexagon_A2_roundsat */ DoesNotAccessMemory,
  25624. /* hexagon_A2_sat */ DoesNotAccessMemory,
  25625. /* hexagon_A2_satb */ DoesNotAccessMemory,
  25626. /* hexagon_A2_sath */ DoesNotAccessMemory,
  25627. /* hexagon_A2_satub */ DoesNotAccessMemory,
  25628. /* hexagon_A2_satuh */ DoesNotAccessMemory,
  25629. /* hexagon_A2_sub */ DoesNotAccessMemory,
  25630. /* hexagon_A2_subh_h16_hh */ DoesNotAccessMemory,
  25631. /* hexagon_A2_subh_h16_hl */ DoesNotAccessMemory,
  25632. /* hexagon_A2_subh_h16_lh */ DoesNotAccessMemory,
  25633. /* hexagon_A2_subh_h16_ll */ DoesNotAccessMemory,
  25634. /* hexagon_A2_subh_h16_sat_hh */ DoesNotAccessMemory,
  25635. /* hexagon_A2_subh_h16_sat_hl */ DoesNotAccessMemory,
  25636. /* hexagon_A2_subh_h16_sat_lh */ DoesNotAccessMemory,
  25637. /* hexagon_A2_subh_h16_sat_ll */ DoesNotAccessMemory,
  25638. /* hexagon_A2_subh_l16_hl */ DoesNotAccessMemory,
  25639. /* hexagon_A2_subh_l16_ll */ DoesNotAccessMemory,
  25640. /* hexagon_A2_subh_l16_sat_hl */ DoesNotAccessMemory,
  25641. /* hexagon_A2_subh_l16_sat_ll */ DoesNotAccessMemory,
  25642. /* hexagon_A2_subp */ DoesNotAccessMemory,
  25643. /* hexagon_A2_subri */ DoesNotAccessMemory,
  25644. /* hexagon_A2_subsat */ DoesNotAccessMemory,
  25645. /* hexagon_A2_svaddh */ DoesNotAccessMemory,
  25646. /* hexagon_A2_svaddhs */ DoesNotAccessMemory,
  25647. /* hexagon_A2_svadduhs */ DoesNotAccessMemory,
  25648. /* hexagon_A2_svavgh */ DoesNotAccessMemory,
  25649. /* hexagon_A2_svavghs */ DoesNotAccessMemory,
  25650. /* hexagon_A2_svnavgh */ DoesNotAccessMemory,
  25651. /* hexagon_A2_svsubh */ DoesNotAccessMemory,
  25652. /* hexagon_A2_svsubhs */ DoesNotAccessMemory,
  25653. /* hexagon_A2_svsubuhs */ DoesNotAccessMemory,
  25654. /* hexagon_A2_swiz */ DoesNotAccessMemory,
  25655. /* hexagon_A2_sxtb */ DoesNotAccessMemory,
  25656. /* hexagon_A2_sxth */ DoesNotAccessMemory,
  25657. /* hexagon_A2_sxtw */ DoesNotAccessMemory,
  25658. /* hexagon_A2_tfr */ DoesNotAccessMemory,
  25659. /* hexagon_A2_tfrih */ DoesNotAccessMemory,
  25660. /* hexagon_A2_tfril */ DoesNotAccessMemory,
  25661. /* hexagon_A2_tfrp */ DoesNotAccessMemory,
  25662. /* hexagon_A2_tfrpi */ DoesNotAccessMemory,
  25663. /* hexagon_A2_tfrsi */ DoesNotAccessMemory,
  25664. /* hexagon_A2_vabsh */ DoesNotAccessMemory,
  25665. /* hexagon_A2_vabshsat */ DoesNotAccessMemory,
  25666. /* hexagon_A2_vabsw */ DoesNotAccessMemory,
  25667. /* hexagon_A2_vabswsat */ DoesNotAccessMemory,
  25668. /* hexagon_A2_vaddb_map */ DoesNotAccessMemory,
  25669. /* hexagon_A2_vaddh */ DoesNotAccessMemory,
  25670. /* hexagon_A2_vaddhs */ DoesNotAccessMemory,
  25671. /* hexagon_A2_vaddub */ DoesNotAccessMemory,
  25672. /* hexagon_A2_vaddubs */ DoesNotAccessMemory,
  25673. /* hexagon_A2_vadduhs */ DoesNotAccessMemory,
  25674. /* hexagon_A2_vaddw */ DoesNotAccessMemory,
  25675. /* hexagon_A2_vaddws */ DoesNotAccessMemory,
  25676. /* hexagon_A2_vavgh */ DoesNotAccessMemory,
  25677. /* hexagon_A2_vavghcr */ DoesNotAccessMemory,
  25678. /* hexagon_A2_vavghr */ DoesNotAccessMemory,
  25679. /* hexagon_A2_vavgub */ DoesNotAccessMemory,
  25680. /* hexagon_A2_vavgubr */ DoesNotAccessMemory,
  25681. /* hexagon_A2_vavguh */ DoesNotAccessMemory,
  25682. /* hexagon_A2_vavguhr */ DoesNotAccessMemory,
  25683. /* hexagon_A2_vavguw */ DoesNotAccessMemory,
  25684. /* hexagon_A2_vavguwr */ DoesNotAccessMemory,
  25685. /* hexagon_A2_vavgw */ DoesNotAccessMemory,
  25686. /* hexagon_A2_vavgwcr */ DoesNotAccessMemory,
  25687. /* hexagon_A2_vavgwr */ DoesNotAccessMemory,
  25688. /* hexagon_A2_vcmpbeq */ DoesNotAccessMemory,
  25689. /* hexagon_A2_vcmpbgtu */ DoesNotAccessMemory,
  25690. /* hexagon_A2_vcmpheq */ DoesNotAccessMemory,
  25691. /* hexagon_A2_vcmphgt */ DoesNotAccessMemory,
  25692. /* hexagon_A2_vcmphgtu */ DoesNotAccessMemory,
  25693. /* hexagon_A2_vcmpweq */ DoesNotAccessMemory,
  25694. /* hexagon_A2_vcmpwgt */ DoesNotAccessMemory,
  25695. /* hexagon_A2_vcmpwgtu */ DoesNotAccessMemory,
  25696. /* hexagon_A2_vconj */ DoesNotAccessMemory,
  25697. /* hexagon_A2_vmaxb */ DoesNotAccessMemory,
  25698. /* hexagon_A2_vmaxh */ DoesNotAccessMemory,
  25699. /* hexagon_A2_vmaxub */ DoesNotAccessMemory,
  25700. /* hexagon_A2_vmaxuh */ DoesNotAccessMemory,
  25701. /* hexagon_A2_vmaxuw */ DoesNotAccessMemory,
  25702. /* hexagon_A2_vmaxw */ DoesNotAccessMemory,
  25703. /* hexagon_A2_vminb */ DoesNotAccessMemory,
  25704. /* hexagon_A2_vminh */ DoesNotAccessMemory,
  25705. /* hexagon_A2_vminub */ DoesNotAccessMemory,
  25706. /* hexagon_A2_vminuh */ DoesNotAccessMemory,
  25707. /* hexagon_A2_vminuw */ DoesNotAccessMemory,
  25708. /* hexagon_A2_vminw */ DoesNotAccessMemory,
  25709. /* hexagon_A2_vnavgh */ DoesNotAccessMemory,
  25710. /* hexagon_A2_vnavghcr */ DoesNotAccessMemory,
  25711. /* hexagon_A2_vnavghr */ DoesNotAccessMemory,
  25712. /* hexagon_A2_vnavgw */ DoesNotAccessMemory,
  25713. /* hexagon_A2_vnavgwcr */ DoesNotAccessMemory,
  25714. /* hexagon_A2_vnavgwr */ DoesNotAccessMemory,
  25715. /* hexagon_A2_vraddub */ DoesNotAccessMemory,
  25716. /* hexagon_A2_vraddub_acc */ DoesNotAccessMemory,
  25717. /* hexagon_A2_vrsadub */ DoesNotAccessMemory,
  25718. /* hexagon_A2_vrsadub_acc */ DoesNotAccessMemory,
  25719. /* hexagon_A2_vsubb_map */ DoesNotAccessMemory,
  25720. /* hexagon_A2_vsubh */ DoesNotAccessMemory,
  25721. /* hexagon_A2_vsubhs */ DoesNotAccessMemory,
  25722. /* hexagon_A2_vsubub */ DoesNotAccessMemory,
  25723. /* hexagon_A2_vsububs */ DoesNotAccessMemory,
  25724. /* hexagon_A2_vsubuhs */ DoesNotAccessMemory,
  25725. /* hexagon_A2_vsubw */ DoesNotAccessMemory,
  25726. /* hexagon_A2_vsubws */ DoesNotAccessMemory,
  25727. /* hexagon_A2_xor */ DoesNotAccessMemory,
  25728. /* hexagon_A2_xorp */ DoesNotAccessMemory,
  25729. /* hexagon_A2_zxtb */ DoesNotAccessMemory,
  25730. /* hexagon_A2_zxth */ DoesNotAccessMemory,
  25731. /* hexagon_A4_andn */ DoesNotAccessMemory,
  25732. /* hexagon_A4_andnp */ DoesNotAccessMemory,
  25733. /* hexagon_A4_bitsplit */ DoesNotAccessMemory,
  25734. /* hexagon_A4_bitspliti */ DoesNotAccessMemory,
  25735. /* hexagon_A4_boundscheck */ DoesNotAccessMemory,
  25736. /* hexagon_A4_cmpbeq */ DoesNotAccessMemory,
  25737. /* hexagon_A4_cmpbeqi */ DoesNotAccessMemory,
  25738. /* hexagon_A4_cmpbgt */ DoesNotAccessMemory,
  25739. /* hexagon_A4_cmpbgti */ DoesNotAccessMemory,
  25740. /* hexagon_A4_cmpbgtu */ DoesNotAccessMemory,
  25741. /* hexagon_A4_cmpbgtui */ DoesNotAccessMemory,
  25742. /* hexagon_A4_cmpheq */ DoesNotAccessMemory,
  25743. /* hexagon_A4_cmpheqi */ DoesNotAccessMemory,
  25744. /* hexagon_A4_cmphgt */ DoesNotAccessMemory,
  25745. /* hexagon_A4_cmphgti */ DoesNotAccessMemory,
  25746. /* hexagon_A4_cmphgtu */ DoesNotAccessMemory,
  25747. /* hexagon_A4_cmphgtui */ DoesNotAccessMemory,
  25748. /* hexagon_A4_combineir */ DoesNotAccessMemory,
  25749. /* hexagon_A4_combineri */ DoesNotAccessMemory,
  25750. /* hexagon_A4_cround_ri */ DoesNotAccessMemory,
  25751. /* hexagon_A4_cround_rr */ DoesNotAccessMemory,
  25752. /* hexagon_A4_modwrapu */ DoesNotAccessMemory,
  25753. /* hexagon_A4_orn */ DoesNotAccessMemory,
  25754. /* hexagon_A4_ornp */ DoesNotAccessMemory,
  25755. /* hexagon_A4_rcmpeq */ DoesNotAccessMemory,
  25756. /* hexagon_A4_rcmpeqi */ DoesNotAccessMemory,
  25757. /* hexagon_A4_rcmpneq */ DoesNotAccessMemory,
  25758. /* hexagon_A4_rcmpneqi */ DoesNotAccessMemory,
  25759. /* hexagon_A4_round_ri */ DoesNotAccessMemory,
  25760. /* hexagon_A4_round_ri_sat */ DoesNotAccessMemory,
  25761. /* hexagon_A4_round_rr */ DoesNotAccessMemory,
  25762. /* hexagon_A4_round_rr_sat */ DoesNotAccessMemory,
  25763. /* hexagon_A4_tlbmatch */ DoesNotAccessMemory,
  25764. /* hexagon_A4_vcmpbeq_any */ DoesNotAccessMemory,
  25765. /* hexagon_A4_vcmpbeqi */ DoesNotAccessMemory,
  25766. /* hexagon_A4_vcmpbgt */ DoesNotAccessMemory,
  25767. /* hexagon_A4_vcmpbgti */ DoesNotAccessMemory,
  25768. /* hexagon_A4_vcmpbgtui */ DoesNotAccessMemory,
  25769. /* hexagon_A4_vcmpheqi */ DoesNotAccessMemory,
  25770. /* hexagon_A4_vcmphgti */ DoesNotAccessMemory,
  25771. /* hexagon_A4_vcmphgtui */ DoesNotAccessMemory,
  25772. /* hexagon_A4_vcmpweqi */ DoesNotAccessMemory,
  25773. /* hexagon_A4_vcmpwgti */ DoesNotAccessMemory,
  25774. /* hexagon_A4_vcmpwgtui */ DoesNotAccessMemory,
  25775. /* hexagon_A4_vrmaxh */ DoesNotAccessMemory,
  25776. /* hexagon_A4_vrmaxuh */ DoesNotAccessMemory,
  25777. /* hexagon_A4_vrmaxuw */ DoesNotAccessMemory,
  25778. /* hexagon_A4_vrmaxw */ DoesNotAccessMemory,
  25779. /* hexagon_A4_vrminh */ DoesNotAccessMemory,
  25780. /* hexagon_A4_vrminuh */ DoesNotAccessMemory,
  25781. /* hexagon_A4_vrminuw */ DoesNotAccessMemory,
  25782. /* hexagon_A4_vrminw */ DoesNotAccessMemory,
  25783. /* hexagon_A5_vaddhubs */ DoesNotAccessMemory,
  25784. /* hexagon_C2_all8 */ DoesNotAccessMemory,
  25785. /* hexagon_C2_and */ DoesNotAccessMemory,
  25786. /* hexagon_C2_andn */ DoesNotAccessMemory,
  25787. /* hexagon_C2_any8 */ DoesNotAccessMemory,
  25788. /* hexagon_C2_bitsclr */ DoesNotAccessMemory,
  25789. /* hexagon_C2_bitsclri */ DoesNotAccessMemory,
  25790. /* hexagon_C2_bitsset */ DoesNotAccessMemory,
  25791. /* hexagon_C2_cmpeq */ DoesNotAccessMemory,
  25792. /* hexagon_C2_cmpeqi */ DoesNotAccessMemory,
  25793. /* hexagon_C2_cmpeqp */ DoesNotAccessMemory,
  25794. /* hexagon_C2_cmpgei */ DoesNotAccessMemory,
  25795. /* hexagon_C2_cmpgeui */ DoesNotAccessMemory,
  25796. /* hexagon_C2_cmpgt */ DoesNotAccessMemory,
  25797. /* hexagon_C2_cmpgti */ DoesNotAccessMemory,
  25798. /* hexagon_C2_cmpgtp */ DoesNotAccessMemory,
  25799. /* hexagon_C2_cmpgtu */ DoesNotAccessMemory,
  25800. /* hexagon_C2_cmpgtui */ DoesNotAccessMemory,
  25801. /* hexagon_C2_cmpgtup */ DoesNotAccessMemory,
  25802. /* hexagon_C2_cmplt */ DoesNotAccessMemory,
  25803. /* hexagon_C2_cmpltu */ DoesNotAccessMemory,
  25804. /* hexagon_C2_mask */ DoesNotAccessMemory,
  25805. /* hexagon_C2_mux */ DoesNotAccessMemory,
  25806. /* hexagon_C2_muxii */ DoesNotAccessMemory,
  25807. /* hexagon_C2_muxir */ DoesNotAccessMemory,
  25808. /* hexagon_C2_muxri */ DoesNotAccessMemory,
  25809. /* hexagon_C2_not */ DoesNotAccessMemory,
  25810. /* hexagon_C2_or */ DoesNotAccessMemory,
  25811. /* hexagon_C2_orn */ DoesNotAccessMemory,
  25812. /* hexagon_C2_pxfer_map */ DoesNotAccessMemory,
  25813. /* hexagon_C2_tfrpr */ DoesNotAccessMemory,
  25814. /* hexagon_C2_tfrrp */ DoesNotAccessMemory,
  25815. /* hexagon_C2_vitpack */ DoesNotAccessMemory,
  25816. /* hexagon_C2_vmux */ DoesNotAccessMemory,
  25817. /* hexagon_C2_xor */ DoesNotAccessMemory,
  25818. /* hexagon_C4_and_and */ DoesNotAccessMemory,
  25819. /* hexagon_C4_and_andn */ DoesNotAccessMemory,
  25820. /* hexagon_C4_and_or */ DoesNotAccessMemory,
  25821. /* hexagon_C4_and_orn */ DoesNotAccessMemory,
  25822. /* hexagon_C4_cmplte */ DoesNotAccessMemory,
  25823. /* hexagon_C4_cmpltei */ DoesNotAccessMemory,
  25824. /* hexagon_C4_cmplteu */ DoesNotAccessMemory,
  25825. /* hexagon_C4_cmplteui */ DoesNotAccessMemory,
  25826. /* hexagon_C4_cmpneq */ DoesNotAccessMemory,
  25827. /* hexagon_C4_cmpneqi */ DoesNotAccessMemory,
  25828. /* hexagon_C4_fastcorner9 */ DoesNotAccessMemory,
  25829. /* hexagon_C4_fastcorner9_not */ DoesNotAccessMemory,
  25830. /* hexagon_C4_nbitsclr */ DoesNotAccessMemory,
  25831. /* hexagon_C4_nbitsclri */ DoesNotAccessMemory,
  25832. /* hexagon_C4_nbitsset */ DoesNotAccessMemory,
  25833. /* hexagon_C4_or_and */ DoesNotAccessMemory,
  25834. /* hexagon_C4_or_andn */ DoesNotAccessMemory,
  25835. /* hexagon_C4_or_or */ DoesNotAccessMemory,
  25836. /* hexagon_C4_or_orn */ DoesNotAccessMemory,
  25837. /* hexagon_F2_conv_d2df */ DoesNotAccessMemory,
  25838. /* hexagon_F2_conv_d2sf */ DoesNotAccessMemory,
  25839. /* hexagon_F2_conv_df2d */ DoesNotAccessMemory,
  25840. /* hexagon_F2_conv_df2d_chop */ DoesNotAccessMemory,
  25841. /* hexagon_F2_conv_df2sf */ DoesNotAccessMemory,
  25842. /* hexagon_F2_conv_df2ud */ DoesNotAccessMemory,
  25843. /* hexagon_F2_conv_df2ud_chop */ DoesNotAccessMemory,
  25844. /* hexagon_F2_conv_df2uw */ DoesNotAccessMemory,
  25845. /* hexagon_F2_conv_df2uw_chop */ DoesNotAccessMemory,
  25846. /* hexagon_F2_conv_df2w */ DoesNotAccessMemory,
  25847. /* hexagon_F2_conv_df2w_chop */ DoesNotAccessMemory,
  25848. /* hexagon_F2_conv_sf2d */ DoesNotAccessMemory,
  25849. /* hexagon_F2_conv_sf2d_chop */ DoesNotAccessMemory,
  25850. /* hexagon_F2_conv_sf2df */ DoesNotAccessMemory,
  25851. /* hexagon_F2_conv_sf2ud */ DoesNotAccessMemory,
  25852. /* hexagon_F2_conv_sf2ud_chop */ DoesNotAccessMemory,
  25853. /* hexagon_F2_conv_sf2uw */ DoesNotAccessMemory,
  25854. /* hexagon_F2_conv_sf2uw_chop */ DoesNotAccessMemory,
  25855. /* hexagon_F2_conv_sf2w */ DoesNotAccessMemory,
  25856. /* hexagon_F2_conv_sf2w_chop */ DoesNotAccessMemory,
  25857. /* hexagon_F2_conv_ud2df */ DoesNotAccessMemory,
  25858. /* hexagon_F2_conv_ud2sf */ DoesNotAccessMemory,
  25859. /* hexagon_F2_conv_uw2df */ DoesNotAccessMemory,
  25860. /* hexagon_F2_conv_uw2sf */ DoesNotAccessMemory,
  25861. /* hexagon_F2_conv_w2df */ DoesNotAccessMemory,
  25862. /* hexagon_F2_conv_w2sf */ DoesNotAccessMemory,
  25863. /* hexagon_F2_dfadd */ DoesNotAccessMemory,
  25864. /* hexagon_F2_dfclass */ DoesNotAccessMemory,
  25865. /* hexagon_F2_dfcmpeq */ DoesNotAccessMemory,
  25866. /* hexagon_F2_dfcmpge */ DoesNotAccessMemory,
  25867. /* hexagon_F2_dfcmpgt */ DoesNotAccessMemory,
  25868. /* hexagon_F2_dfcmpuo */ DoesNotAccessMemory,
  25869. /* hexagon_F2_dffixupd */ DoesNotAccessMemory,
  25870. /* hexagon_F2_dffixupn */ DoesNotAccessMemory,
  25871. /* hexagon_F2_dffixupr */ DoesNotAccessMemory,
  25872. /* hexagon_F2_dffma */ DoesNotAccessMemory,
  25873. /* hexagon_F2_dffma_lib */ DoesNotAccessMemory,
  25874. /* hexagon_F2_dffma_sc */ DoesNotAccessMemory,
  25875. /* hexagon_F2_dffms */ DoesNotAccessMemory,
  25876. /* hexagon_F2_dffms_lib */ DoesNotAccessMemory,
  25877. /* hexagon_F2_dfimm_n */ DoesNotAccessMemory,
  25878. /* hexagon_F2_dfimm_p */ DoesNotAccessMemory,
  25879. /* hexagon_F2_dfmax */ DoesNotAccessMemory,
  25880. /* hexagon_F2_dfmin */ DoesNotAccessMemory,
  25881. /* hexagon_F2_dfmpy */ DoesNotAccessMemory,
  25882. /* hexagon_F2_dfsub */ DoesNotAccessMemory,
  25883. /* hexagon_F2_sfadd */ DoesNotAccessMemory,
  25884. /* hexagon_F2_sfclass */ DoesNotAccessMemory,
  25885. /* hexagon_F2_sfcmpeq */ DoesNotAccessMemory,
  25886. /* hexagon_F2_sfcmpge */ DoesNotAccessMemory,
  25887. /* hexagon_F2_sfcmpgt */ DoesNotAccessMemory,
  25888. /* hexagon_F2_sfcmpuo */ DoesNotAccessMemory,
  25889. /* hexagon_F2_sffixupd */ DoesNotAccessMemory,
  25890. /* hexagon_F2_sffixupn */ DoesNotAccessMemory,
  25891. /* hexagon_F2_sffixupr */ DoesNotAccessMemory,
  25892. /* hexagon_F2_sffma */ DoesNotAccessMemory,
  25893. /* hexagon_F2_sffma_lib */ DoesNotAccessMemory,
  25894. /* hexagon_F2_sffma_sc */ DoesNotAccessMemory,
  25895. /* hexagon_F2_sffms */ DoesNotAccessMemory,
  25896. /* hexagon_F2_sffms_lib */ DoesNotAccessMemory,
  25897. /* hexagon_F2_sfimm_n */ DoesNotAccessMemory,
  25898. /* hexagon_F2_sfimm_p */ DoesNotAccessMemory,
  25899. /* hexagon_F2_sfmax */ DoesNotAccessMemory,
  25900. /* hexagon_F2_sfmin */ DoesNotAccessMemory,
  25901. /* hexagon_F2_sfmpy */ DoesNotAccessMemory,
  25902. /* hexagon_F2_sfsub */ DoesNotAccessMemory,
  25903. /* hexagon_M2_acci */ DoesNotAccessMemory,
  25904. /* hexagon_M2_accii */ DoesNotAccessMemory,
  25905. /* hexagon_M2_cmaci_s0 */ DoesNotAccessMemory,
  25906. /* hexagon_M2_cmacr_s0 */ DoesNotAccessMemory,
  25907. /* hexagon_M2_cmacs_s0 */ DoesNotAccessMemory,
  25908. /* hexagon_M2_cmacs_s1 */ DoesNotAccessMemory,
  25909. /* hexagon_M2_cmacsc_s0 */ DoesNotAccessMemory,
  25910. /* hexagon_M2_cmacsc_s1 */ DoesNotAccessMemory,
  25911. /* hexagon_M2_cmpyi_s0 */ DoesNotAccessMemory,
  25912. /* hexagon_M2_cmpyr_s0 */ DoesNotAccessMemory,
  25913. /* hexagon_M2_cmpyrs_s0 */ DoesNotAccessMemory,
  25914. /* hexagon_M2_cmpyrs_s1 */ DoesNotAccessMemory,
  25915. /* hexagon_M2_cmpyrsc_s0 */ DoesNotAccessMemory,
  25916. /* hexagon_M2_cmpyrsc_s1 */ DoesNotAccessMemory,
  25917. /* hexagon_M2_cmpys_s0 */ DoesNotAccessMemory,
  25918. /* hexagon_M2_cmpys_s1 */ DoesNotAccessMemory,
  25919. /* hexagon_M2_cmpysc_s0 */ DoesNotAccessMemory,
  25920. /* hexagon_M2_cmpysc_s1 */ DoesNotAccessMemory,
  25921. /* hexagon_M2_cnacs_s0 */ DoesNotAccessMemory,
  25922. /* hexagon_M2_cnacs_s1 */ DoesNotAccessMemory,
  25923. /* hexagon_M2_cnacsc_s0 */ DoesNotAccessMemory,
  25924. /* hexagon_M2_cnacsc_s1 */ DoesNotAccessMemory,
  25925. /* hexagon_M2_dpmpyss_acc_s0 */ DoesNotAccessMemory,
  25926. /* hexagon_M2_dpmpyss_nac_s0 */ DoesNotAccessMemory,
  25927. /* hexagon_M2_dpmpyss_rnd_s0 */ DoesNotAccessMemory,
  25928. /* hexagon_M2_dpmpyss_s0 */ DoesNotAccessMemory,
  25929. /* hexagon_M2_dpmpyuu_acc_s0 */ DoesNotAccessMemory,
  25930. /* hexagon_M2_dpmpyuu_nac_s0 */ DoesNotAccessMemory,
  25931. /* hexagon_M2_dpmpyuu_s0 */ DoesNotAccessMemory,
  25932. /* hexagon_M2_hmmpyh_rs1 */ DoesNotAccessMemory,
  25933. /* hexagon_M2_hmmpyh_s1 */ DoesNotAccessMemory,
  25934. /* hexagon_M2_hmmpyl_rs1 */ DoesNotAccessMemory,
  25935. /* hexagon_M2_hmmpyl_s1 */ DoesNotAccessMemory,
  25936. /* hexagon_M2_maci */ DoesNotAccessMemory,
  25937. /* hexagon_M2_macsin */ DoesNotAccessMemory,
  25938. /* hexagon_M2_macsip */ DoesNotAccessMemory,
  25939. /* hexagon_M2_mmachs_rs0 */ DoesNotAccessMemory,
  25940. /* hexagon_M2_mmachs_rs1 */ DoesNotAccessMemory,
  25941. /* hexagon_M2_mmachs_s0 */ DoesNotAccessMemory,
  25942. /* hexagon_M2_mmachs_s1 */ DoesNotAccessMemory,
  25943. /* hexagon_M2_mmacls_rs0 */ DoesNotAccessMemory,
  25944. /* hexagon_M2_mmacls_rs1 */ DoesNotAccessMemory,
  25945. /* hexagon_M2_mmacls_s0 */ DoesNotAccessMemory,
  25946. /* hexagon_M2_mmacls_s1 */ DoesNotAccessMemory,
  25947. /* hexagon_M2_mmacuhs_rs0 */ DoesNotAccessMemory,
  25948. /* hexagon_M2_mmacuhs_rs1 */ DoesNotAccessMemory,
  25949. /* hexagon_M2_mmacuhs_s0 */ DoesNotAccessMemory,
  25950. /* hexagon_M2_mmacuhs_s1 */ DoesNotAccessMemory,
  25951. /* hexagon_M2_mmaculs_rs0 */ DoesNotAccessMemory,
  25952. /* hexagon_M2_mmaculs_rs1 */ DoesNotAccessMemory,
  25953. /* hexagon_M2_mmaculs_s0 */ DoesNotAccessMemory,
  25954. /* hexagon_M2_mmaculs_s1 */ DoesNotAccessMemory,
  25955. /* hexagon_M2_mmpyh_rs0 */ DoesNotAccessMemory,
  25956. /* hexagon_M2_mmpyh_rs1 */ DoesNotAccessMemory,
  25957. /* hexagon_M2_mmpyh_s0 */ DoesNotAccessMemory,
  25958. /* hexagon_M2_mmpyh_s1 */ DoesNotAccessMemory,
  25959. /* hexagon_M2_mmpyl_rs0 */ DoesNotAccessMemory,
  25960. /* hexagon_M2_mmpyl_rs1 */ DoesNotAccessMemory,
  25961. /* hexagon_M2_mmpyl_s0 */ DoesNotAccessMemory,
  25962. /* hexagon_M2_mmpyl_s1 */ DoesNotAccessMemory,
  25963. /* hexagon_M2_mmpyuh_rs0 */ DoesNotAccessMemory,
  25964. /* hexagon_M2_mmpyuh_rs1 */ DoesNotAccessMemory,
  25965. /* hexagon_M2_mmpyuh_s0 */ DoesNotAccessMemory,
  25966. /* hexagon_M2_mmpyuh_s1 */ DoesNotAccessMemory,
  25967. /* hexagon_M2_mmpyul_rs0 */ DoesNotAccessMemory,
  25968. /* hexagon_M2_mmpyul_rs1 */ DoesNotAccessMemory,
  25969. /* hexagon_M2_mmpyul_s0 */ DoesNotAccessMemory,
  25970. /* hexagon_M2_mmpyul_s1 */ DoesNotAccessMemory,
  25971. /* hexagon_M2_mpy_acc_hh_s0 */ DoesNotAccessMemory,
  25972. /* hexagon_M2_mpy_acc_hh_s1 */ DoesNotAccessMemory,
  25973. /* hexagon_M2_mpy_acc_hl_s0 */ DoesNotAccessMemory,
  25974. /* hexagon_M2_mpy_acc_hl_s1 */ DoesNotAccessMemory,
  25975. /* hexagon_M2_mpy_acc_lh_s0 */ DoesNotAccessMemory,
  25976. /* hexagon_M2_mpy_acc_lh_s1 */ DoesNotAccessMemory,
  25977. /* hexagon_M2_mpy_acc_ll_s0 */ DoesNotAccessMemory,
  25978. /* hexagon_M2_mpy_acc_ll_s1 */ DoesNotAccessMemory,
  25979. /* hexagon_M2_mpy_acc_sat_hh_s0 */ DoesNotAccessMemory,
  25980. /* hexagon_M2_mpy_acc_sat_hh_s1 */ DoesNotAccessMemory,
  25981. /* hexagon_M2_mpy_acc_sat_hl_s0 */ DoesNotAccessMemory,
  25982. /* hexagon_M2_mpy_acc_sat_hl_s1 */ DoesNotAccessMemory,
  25983. /* hexagon_M2_mpy_acc_sat_lh_s0 */ DoesNotAccessMemory,
  25984. /* hexagon_M2_mpy_acc_sat_lh_s1 */ DoesNotAccessMemory,
  25985. /* hexagon_M2_mpy_acc_sat_ll_s0 */ DoesNotAccessMemory,
  25986. /* hexagon_M2_mpy_acc_sat_ll_s1 */ DoesNotAccessMemory,
  25987. /* hexagon_M2_mpy_hh_s0 */ DoesNotAccessMemory,
  25988. /* hexagon_M2_mpy_hh_s1 */ DoesNotAccessMemory,
  25989. /* hexagon_M2_mpy_hl_s0 */ DoesNotAccessMemory,
  25990. /* hexagon_M2_mpy_hl_s1 */ DoesNotAccessMemory,
  25991. /* hexagon_M2_mpy_lh_s0 */ DoesNotAccessMemory,
  25992. /* hexagon_M2_mpy_lh_s1 */ DoesNotAccessMemory,
  25993. /* hexagon_M2_mpy_ll_s0 */ DoesNotAccessMemory,
  25994. /* hexagon_M2_mpy_ll_s1 */ DoesNotAccessMemory,
  25995. /* hexagon_M2_mpy_nac_hh_s0 */ DoesNotAccessMemory,
  25996. /* hexagon_M2_mpy_nac_hh_s1 */ DoesNotAccessMemory,
  25997. /* hexagon_M2_mpy_nac_hl_s0 */ DoesNotAccessMemory,
  25998. /* hexagon_M2_mpy_nac_hl_s1 */ DoesNotAccessMemory,
  25999. /* hexagon_M2_mpy_nac_lh_s0 */ DoesNotAccessMemory,
  26000. /* hexagon_M2_mpy_nac_lh_s1 */ DoesNotAccessMemory,
  26001. /* hexagon_M2_mpy_nac_ll_s0 */ DoesNotAccessMemory,
  26002. /* hexagon_M2_mpy_nac_ll_s1 */ DoesNotAccessMemory,
  26003. /* hexagon_M2_mpy_nac_sat_hh_s0 */ DoesNotAccessMemory,
  26004. /* hexagon_M2_mpy_nac_sat_hh_s1 */ DoesNotAccessMemory,
  26005. /* hexagon_M2_mpy_nac_sat_hl_s0 */ DoesNotAccessMemory,
  26006. /* hexagon_M2_mpy_nac_sat_hl_s1 */ DoesNotAccessMemory,
  26007. /* hexagon_M2_mpy_nac_sat_lh_s0 */ DoesNotAccessMemory,
  26008. /* hexagon_M2_mpy_nac_sat_lh_s1 */ DoesNotAccessMemory,
  26009. /* hexagon_M2_mpy_nac_sat_ll_s0 */ DoesNotAccessMemory,
  26010. /* hexagon_M2_mpy_nac_sat_ll_s1 */ DoesNotAccessMemory,
  26011. /* hexagon_M2_mpy_rnd_hh_s0 */ DoesNotAccessMemory,
  26012. /* hexagon_M2_mpy_rnd_hh_s1 */ DoesNotAccessMemory,
  26013. /* hexagon_M2_mpy_rnd_hl_s0 */ DoesNotAccessMemory,
  26014. /* hexagon_M2_mpy_rnd_hl_s1 */ DoesNotAccessMemory,
  26015. /* hexagon_M2_mpy_rnd_lh_s0 */ DoesNotAccessMemory,
  26016. /* hexagon_M2_mpy_rnd_lh_s1 */ DoesNotAccessMemory,
  26017. /* hexagon_M2_mpy_rnd_ll_s0 */ DoesNotAccessMemory,
  26018. /* hexagon_M2_mpy_rnd_ll_s1 */ DoesNotAccessMemory,
  26019. /* hexagon_M2_mpy_sat_hh_s0 */ DoesNotAccessMemory,
  26020. /* hexagon_M2_mpy_sat_hh_s1 */ DoesNotAccessMemory,
  26021. /* hexagon_M2_mpy_sat_hl_s0 */ DoesNotAccessMemory,
  26022. /* hexagon_M2_mpy_sat_hl_s1 */ DoesNotAccessMemory,
  26023. /* hexagon_M2_mpy_sat_lh_s0 */ DoesNotAccessMemory,
  26024. /* hexagon_M2_mpy_sat_lh_s1 */ DoesNotAccessMemory,
  26025. /* hexagon_M2_mpy_sat_ll_s0 */ DoesNotAccessMemory,
  26026. /* hexagon_M2_mpy_sat_ll_s1 */ DoesNotAccessMemory,
  26027. /* hexagon_M2_mpy_sat_rnd_hh_s0 */ DoesNotAccessMemory,
  26028. /* hexagon_M2_mpy_sat_rnd_hh_s1 */ DoesNotAccessMemory,
  26029. /* hexagon_M2_mpy_sat_rnd_hl_s0 */ DoesNotAccessMemory,
  26030. /* hexagon_M2_mpy_sat_rnd_hl_s1 */ DoesNotAccessMemory,
  26031. /* hexagon_M2_mpy_sat_rnd_lh_s0 */ DoesNotAccessMemory,
  26032. /* hexagon_M2_mpy_sat_rnd_lh_s1 */ DoesNotAccessMemory,
  26033. /* hexagon_M2_mpy_sat_rnd_ll_s0 */ DoesNotAccessMemory,
  26034. /* hexagon_M2_mpy_sat_rnd_ll_s1 */ DoesNotAccessMemory,
  26035. /* hexagon_M2_mpy_up */ DoesNotAccessMemory,
  26036. /* hexagon_M2_mpy_up_s1 */ DoesNotAccessMemory,
  26037. /* hexagon_M2_mpy_up_s1_sat */ DoesNotAccessMemory,
  26038. /* hexagon_M2_mpyd_acc_hh_s0 */ DoesNotAccessMemory,
  26039. /* hexagon_M2_mpyd_acc_hh_s1 */ DoesNotAccessMemory,
  26040. /* hexagon_M2_mpyd_acc_hl_s0 */ DoesNotAccessMemory,
  26041. /* hexagon_M2_mpyd_acc_hl_s1 */ DoesNotAccessMemory,
  26042. /* hexagon_M2_mpyd_acc_lh_s0 */ DoesNotAccessMemory,
  26043. /* hexagon_M2_mpyd_acc_lh_s1 */ DoesNotAccessMemory,
  26044. /* hexagon_M2_mpyd_acc_ll_s0 */ DoesNotAccessMemory,
  26045. /* hexagon_M2_mpyd_acc_ll_s1 */ DoesNotAccessMemory,
  26046. /* hexagon_M2_mpyd_hh_s0 */ DoesNotAccessMemory,
  26047. /* hexagon_M2_mpyd_hh_s1 */ DoesNotAccessMemory,
  26048. /* hexagon_M2_mpyd_hl_s0 */ DoesNotAccessMemory,
  26049. /* hexagon_M2_mpyd_hl_s1 */ DoesNotAccessMemory,
  26050. /* hexagon_M2_mpyd_lh_s0 */ DoesNotAccessMemory,
  26051. /* hexagon_M2_mpyd_lh_s1 */ DoesNotAccessMemory,
  26052. /* hexagon_M2_mpyd_ll_s0 */ DoesNotAccessMemory,
  26053. /* hexagon_M2_mpyd_ll_s1 */ DoesNotAccessMemory,
  26054. /* hexagon_M2_mpyd_nac_hh_s0 */ DoesNotAccessMemory,
  26055. /* hexagon_M2_mpyd_nac_hh_s1 */ DoesNotAccessMemory,
  26056. /* hexagon_M2_mpyd_nac_hl_s0 */ DoesNotAccessMemory,
  26057. /* hexagon_M2_mpyd_nac_hl_s1 */ DoesNotAccessMemory,
  26058. /* hexagon_M2_mpyd_nac_lh_s0 */ DoesNotAccessMemory,
  26059. /* hexagon_M2_mpyd_nac_lh_s1 */ DoesNotAccessMemory,
  26060. /* hexagon_M2_mpyd_nac_ll_s0 */ DoesNotAccessMemory,
  26061. /* hexagon_M2_mpyd_nac_ll_s1 */ DoesNotAccessMemory,
  26062. /* hexagon_M2_mpyd_rnd_hh_s0 */ DoesNotAccessMemory,
  26063. /* hexagon_M2_mpyd_rnd_hh_s1 */ DoesNotAccessMemory,
  26064. /* hexagon_M2_mpyd_rnd_hl_s0 */ DoesNotAccessMemory,
  26065. /* hexagon_M2_mpyd_rnd_hl_s1 */ DoesNotAccessMemory,
  26066. /* hexagon_M2_mpyd_rnd_lh_s0 */ DoesNotAccessMemory,
  26067. /* hexagon_M2_mpyd_rnd_lh_s1 */ DoesNotAccessMemory,
  26068. /* hexagon_M2_mpyd_rnd_ll_s0 */ DoesNotAccessMemory,
  26069. /* hexagon_M2_mpyd_rnd_ll_s1 */ DoesNotAccessMemory,
  26070. /* hexagon_M2_mpyi */ DoesNotAccessMemory,
  26071. /* hexagon_M2_mpysmi */ DoesNotAccessMemory,
  26072. /* hexagon_M2_mpysu_up */ DoesNotAccessMemory,
  26073. /* hexagon_M2_mpyu_acc_hh_s0 */ DoesNotAccessMemory,
  26074. /* hexagon_M2_mpyu_acc_hh_s1 */ DoesNotAccessMemory,
  26075. /* hexagon_M2_mpyu_acc_hl_s0 */ DoesNotAccessMemory,
  26076. /* hexagon_M2_mpyu_acc_hl_s1 */ DoesNotAccessMemory,
  26077. /* hexagon_M2_mpyu_acc_lh_s0 */ DoesNotAccessMemory,
  26078. /* hexagon_M2_mpyu_acc_lh_s1 */ DoesNotAccessMemory,
  26079. /* hexagon_M2_mpyu_acc_ll_s0 */ DoesNotAccessMemory,
  26080. /* hexagon_M2_mpyu_acc_ll_s1 */ DoesNotAccessMemory,
  26081. /* hexagon_M2_mpyu_hh_s0 */ DoesNotAccessMemory,
  26082. /* hexagon_M2_mpyu_hh_s1 */ DoesNotAccessMemory,
  26083. /* hexagon_M2_mpyu_hl_s0 */ DoesNotAccessMemory,
  26084. /* hexagon_M2_mpyu_hl_s1 */ DoesNotAccessMemory,
  26085. /* hexagon_M2_mpyu_lh_s0 */ DoesNotAccessMemory,
  26086. /* hexagon_M2_mpyu_lh_s1 */ DoesNotAccessMemory,
  26087. /* hexagon_M2_mpyu_ll_s0 */ DoesNotAccessMemory,
  26088. /* hexagon_M2_mpyu_ll_s1 */ DoesNotAccessMemory,
  26089. /* hexagon_M2_mpyu_nac_hh_s0 */ DoesNotAccessMemory,
  26090. /* hexagon_M2_mpyu_nac_hh_s1 */ DoesNotAccessMemory,
  26091. /* hexagon_M2_mpyu_nac_hl_s0 */ DoesNotAccessMemory,
  26092. /* hexagon_M2_mpyu_nac_hl_s1 */ DoesNotAccessMemory,
  26093. /* hexagon_M2_mpyu_nac_lh_s0 */ DoesNotAccessMemory,
  26094. /* hexagon_M2_mpyu_nac_lh_s1 */ DoesNotAccessMemory,
  26095. /* hexagon_M2_mpyu_nac_ll_s0 */ DoesNotAccessMemory,
  26096. /* hexagon_M2_mpyu_nac_ll_s1 */ DoesNotAccessMemory,
  26097. /* hexagon_M2_mpyu_up */ DoesNotAccessMemory,
  26098. /* hexagon_M2_mpyud_acc_hh_s0 */ DoesNotAccessMemory,
  26099. /* hexagon_M2_mpyud_acc_hh_s1 */ DoesNotAccessMemory,
  26100. /* hexagon_M2_mpyud_acc_hl_s0 */ DoesNotAccessMemory,
  26101. /* hexagon_M2_mpyud_acc_hl_s1 */ DoesNotAccessMemory,
  26102. /* hexagon_M2_mpyud_acc_lh_s0 */ DoesNotAccessMemory,
  26103. /* hexagon_M2_mpyud_acc_lh_s1 */ DoesNotAccessMemory,
  26104. /* hexagon_M2_mpyud_acc_ll_s0 */ DoesNotAccessMemory,
  26105. /* hexagon_M2_mpyud_acc_ll_s1 */ DoesNotAccessMemory,
  26106. /* hexagon_M2_mpyud_hh_s0 */ DoesNotAccessMemory,
  26107. /* hexagon_M2_mpyud_hh_s1 */ DoesNotAccessMemory,
  26108. /* hexagon_M2_mpyud_hl_s0 */ DoesNotAccessMemory,
  26109. /* hexagon_M2_mpyud_hl_s1 */ DoesNotAccessMemory,
  26110. /* hexagon_M2_mpyud_lh_s0 */ DoesNotAccessMemory,
  26111. /* hexagon_M2_mpyud_lh_s1 */ DoesNotAccessMemory,
  26112. /* hexagon_M2_mpyud_ll_s0 */ DoesNotAccessMemory,
  26113. /* hexagon_M2_mpyud_ll_s1 */ DoesNotAccessMemory,
  26114. /* hexagon_M2_mpyud_nac_hh_s0 */ DoesNotAccessMemory,
  26115. /* hexagon_M2_mpyud_nac_hh_s1 */ DoesNotAccessMemory,
  26116. /* hexagon_M2_mpyud_nac_hl_s0 */ DoesNotAccessMemory,
  26117. /* hexagon_M2_mpyud_nac_hl_s1 */ DoesNotAccessMemory,
  26118. /* hexagon_M2_mpyud_nac_lh_s0 */ DoesNotAccessMemory,
  26119. /* hexagon_M2_mpyud_nac_lh_s1 */ DoesNotAccessMemory,
  26120. /* hexagon_M2_mpyud_nac_ll_s0 */ DoesNotAccessMemory,
  26121. /* hexagon_M2_mpyud_nac_ll_s1 */ DoesNotAccessMemory,
  26122. /* hexagon_M2_mpyui */ DoesNotAccessMemory,
  26123. /* hexagon_M2_nacci */ DoesNotAccessMemory,
  26124. /* hexagon_M2_naccii */ DoesNotAccessMemory,
  26125. /* hexagon_M2_subacc */ DoesNotAccessMemory,
  26126. /* hexagon_M2_vabsdiffh */ DoesNotAccessMemory,
  26127. /* hexagon_M2_vabsdiffw */ DoesNotAccessMemory,
  26128. /* hexagon_M2_vcmac_s0_sat_i */ DoesNotAccessMemory,
  26129. /* hexagon_M2_vcmac_s0_sat_r */ DoesNotAccessMemory,
  26130. /* hexagon_M2_vcmpy_s0_sat_i */ DoesNotAccessMemory,
  26131. /* hexagon_M2_vcmpy_s0_sat_r */ DoesNotAccessMemory,
  26132. /* hexagon_M2_vcmpy_s1_sat_i */ DoesNotAccessMemory,
  26133. /* hexagon_M2_vcmpy_s1_sat_r */ DoesNotAccessMemory,
  26134. /* hexagon_M2_vdmacs_s0 */ DoesNotAccessMemory,
  26135. /* hexagon_M2_vdmacs_s1 */ DoesNotAccessMemory,
  26136. /* hexagon_M2_vdmpyrs_s0 */ DoesNotAccessMemory,
  26137. /* hexagon_M2_vdmpyrs_s1 */ DoesNotAccessMemory,
  26138. /* hexagon_M2_vdmpys_s0 */ DoesNotAccessMemory,
  26139. /* hexagon_M2_vdmpys_s1 */ DoesNotAccessMemory,
  26140. /* hexagon_M2_vmac2 */ DoesNotAccessMemory,
  26141. /* hexagon_M2_vmac2es */ DoesNotAccessMemory,
  26142. /* hexagon_M2_vmac2es_s0 */ DoesNotAccessMemory,
  26143. /* hexagon_M2_vmac2es_s1 */ DoesNotAccessMemory,
  26144. /* hexagon_M2_vmac2s_s0 */ DoesNotAccessMemory,
  26145. /* hexagon_M2_vmac2s_s1 */ DoesNotAccessMemory,
  26146. /* hexagon_M2_vmac2su_s0 */ DoesNotAccessMemory,
  26147. /* hexagon_M2_vmac2su_s1 */ DoesNotAccessMemory,
  26148. /* hexagon_M2_vmpy2es_s0 */ DoesNotAccessMemory,
  26149. /* hexagon_M2_vmpy2es_s1 */ DoesNotAccessMemory,
  26150. /* hexagon_M2_vmpy2s_s0 */ DoesNotAccessMemory,
  26151. /* hexagon_M2_vmpy2s_s0pack */ DoesNotAccessMemory,
  26152. /* hexagon_M2_vmpy2s_s1 */ DoesNotAccessMemory,
  26153. /* hexagon_M2_vmpy2s_s1pack */ DoesNotAccessMemory,
  26154. /* hexagon_M2_vmpy2su_s0 */ DoesNotAccessMemory,
  26155. /* hexagon_M2_vmpy2su_s1 */ DoesNotAccessMemory,
  26156. /* hexagon_M2_vraddh */ DoesNotAccessMemory,
  26157. /* hexagon_M2_vradduh */ DoesNotAccessMemory,
  26158. /* hexagon_M2_vrcmaci_s0 */ DoesNotAccessMemory,
  26159. /* hexagon_M2_vrcmaci_s0c */ DoesNotAccessMemory,
  26160. /* hexagon_M2_vrcmacr_s0 */ DoesNotAccessMemory,
  26161. /* hexagon_M2_vrcmacr_s0c */ DoesNotAccessMemory,
  26162. /* hexagon_M2_vrcmpyi_s0 */ DoesNotAccessMemory,
  26163. /* hexagon_M2_vrcmpyi_s0c */ DoesNotAccessMemory,
  26164. /* hexagon_M2_vrcmpyr_s0 */ DoesNotAccessMemory,
  26165. /* hexagon_M2_vrcmpyr_s0c */ DoesNotAccessMemory,
  26166. /* hexagon_M2_vrcmpys_acc_s1 */ DoesNotAccessMemory,
  26167. /* hexagon_M2_vrcmpys_s1 */ DoesNotAccessMemory,
  26168. /* hexagon_M2_vrcmpys_s1rp */ DoesNotAccessMemory,
  26169. /* hexagon_M2_vrmac_s0 */ DoesNotAccessMemory,
  26170. /* hexagon_M2_vrmpy_s0 */ DoesNotAccessMemory,
  26171. /* hexagon_M2_xor_xacc */ DoesNotAccessMemory,
  26172. /* hexagon_M4_and_and */ DoesNotAccessMemory,
  26173. /* hexagon_M4_and_andn */ DoesNotAccessMemory,
  26174. /* hexagon_M4_and_or */ DoesNotAccessMemory,
  26175. /* hexagon_M4_and_xor */ DoesNotAccessMemory,
  26176. /* hexagon_M4_cmpyi_wh */ DoesNotAccessMemory,
  26177. /* hexagon_M4_cmpyi_whc */ DoesNotAccessMemory,
  26178. /* hexagon_M4_cmpyr_wh */ DoesNotAccessMemory,
  26179. /* hexagon_M4_cmpyr_whc */ DoesNotAccessMemory,
  26180. /* hexagon_M4_mac_up_s1_sat */ DoesNotAccessMemory,
  26181. /* hexagon_M4_mpyri_addi */ DoesNotAccessMemory,
  26182. /* hexagon_M4_mpyri_addr */ DoesNotAccessMemory,
  26183. /* hexagon_M4_mpyri_addr_u2 */ DoesNotAccessMemory,
  26184. /* hexagon_M4_mpyrr_addi */ DoesNotAccessMemory,
  26185. /* hexagon_M4_mpyrr_addr */ DoesNotAccessMemory,
  26186. /* hexagon_M4_nac_up_s1_sat */ DoesNotAccessMemory,
  26187. /* hexagon_M4_or_and */ DoesNotAccessMemory,
  26188. /* hexagon_M4_or_andn */ DoesNotAccessMemory,
  26189. /* hexagon_M4_or_or */ DoesNotAccessMemory,
  26190. /* hexagon_M4_or_xor */ DoesNotAccessMemory,
  26191. /* hexagon_M4_pmpyw */ DoesNotAccessMemory,
  26192. /* hexagon_M4_pmpyw_acc */ DoesNotAccessMemory,
  26193. /* hexagon_M4_vpmpyh */ DoesNotAccessMemory,
  26194. /* hexagon_M4_vpmpyh_acc */ DoesNotAccessMemory,
  26195. /* hexagon_M4_vrmpyeh_acc_s0 */ DoesNotAccessMemory,
  26196. /* hexagon_M4_vrmpyeh_acc_s1 */ DoesNotAccessMemory,
  26197. /* hexagon_M4_vrmpyeh_s0 */ DoesNotAccessMemory,
  26198. /* hexagon_M4_vrmpyeh_s1 */ DoesNotAccessMemory,
  26199. /* hexagon_M4_vrmpyoh_acc_s0 */ DoesNotAccessMemory,
  26200. /* hexagon_M4_vrmpyoh_acc_s1 */ DoesNotAccessMemory,
  26201. /* hexagon_M4_vrmpyoh_s0 */ DoesNotAccessMemory,
  26202. /* hexagon_M4_vrmpyoh_s1 */ DoesNotAccessMemory,
  26203. /* hexagon_M4_xor_and */ DoesNotAccessMemory,
  26204. /* hexagon_M4_xor_andn */ DoesNotAccessMemory,
  26205. /* hexagon_M4_xor_or */ DoesNotAccessMemory,
  26206. /* hexagon_M4_xor_xacc */ DoesNotAccessMemory,
  26207. /* hexagon_M5_vdmacbsu */ DoesNotAccessMemory,
  26208. /* hexagon_M5_vdmpybsu */ DoesNotAccessMemory,
  26209. /* hexagon_M5_vmacbsu */ DoesNotAccessMemory,
  26210. /* hexagon_M5_vmacbuu */ DoesNotAccessMemory,
  26211. /* hexagon_M5_vmpybsu */ DoesNotAccessMemory,
  26212. /* hexagon_M5_vmpybuu */ DoesNotAccessMemory,
  26213. /* hexagon_M5_vrmacbsu */ DoesNotAccessMemory,
  26214. /* hexagon_M5_vrmacbuu */ DoesNotAccessMemory,
  26215. /* hexagon_M5_vrmpybsu */ DoesNotAccessMemory,
  26216. /* hexagon_M5_vrmpybuu */ DoesNotAccessMemory,
  26217. /* hexagon_S2_addasl_rrri */ DoesNotAccessMemory,
  26218. /* hexagon_S2_asl_i_p */ DoesNotAccessMemory,
  26219. /* hexagon_S2_asl_i_p_acc */ DoesNotAccessMemory,
  26220. /* hexagon_S2_asl_i_p_and */ DoesNotAccessMemory,
  26221. /* hexagon_S2_asl_i_p_nac */ DoesNotAccessMemory,
  26222. /* hexagon_S2_asl_i_p_or */ DoesNotAccessMemory,
  26223. /* hexagon_S2_asl_i_p_xacc */ DoesNotAccessMemory,
  26224. /* hexagon_S2_asl_i_r */ DoesNotAccessMemory,
  26225. /* hexagon_S2_asl_i_r_acc */ DoesNotAccessMemory,
  26226. /* hexagon_S2_asl_i_r_and */ DoesNotAccessMemory,
  26227. /* hexagon_S2_asl_i_r_nac */ DoesNotAccessMemory,
  26228. /* hexagon_S2_asl_i_r_or */ DoesNotAccessMemory,
  26229. /* hexagon_S2_asl_i_r_sat */ DoesNotAccessMemory,
  26230. /* hexagon_S2_asl_i_r_xacc */ DoesNotAccessMemory,
  26231. /* hexagon_S2_asl_i_vh */ DoesNotAccessMemory,
  26232. /* hexagon_S2_asl_i_vw */ DoesNotAccessMemory,
  26233. /* hexagon_S2_asl_r_p */ DoesNotAccessMemory,
  26234. /* hexagon_S2_asl_r_p_acc */ DoesNotAccessMemory,
  26235. /* hexagon_S2_asl_r_p_and */ DoesNotAccessMemory,
  26236. /* hexagon_S2_asl_r_p_nac */ DoesNotAccessMemory,
  26237. /* hexagon_S2_asl_r_p_or */ DoesNotAccessMemory,
  26238. /* hexagon_S2_asl_r_p_xor */ DoesNotAccessMemory,
  26239. /* hexagon_S2_asl_r_r */ DoesNotAccessMemory,
  26240. /* hexagon_S2_asl_r_r_acc */ DoesNotAccessMemory,
  26241. /* hexagon_S2_asl_r_r_and */ DoesNotAccessMemory,
  26242. /* hexagon_S2_asl_r_r_nac */ DoesNotAccessMemory,
  26243. /* hexagon_S2_asl_r_r_or */ DoesNotAccessMemory,
  26244. /* hexagon_S2_asl_r_r_sat */ DoesNotAccessMemory,
  26245. /* hexagon_S2_asl_r_vh */ DoesNotAccessMemory,
  26246. /* hexagon_S2_asl_r_vw */ DoesNotAccessMemory,
  26247. /* hexagon_S2_asr_i_p */ DoesNotAccessMemory,
  26248. /* hexagon_S2_asr_i_p_acc */ DoesNotAccessMemory,
  26249. /* hexagon_S2_asr_i_p_and */ DoesNotAccessMemory,
  26250. /* hexagon_S2_asr_i_p_nac */ DoesNotAccessMemory,
  26251. /* hexagon_S2_asr_i_p_or */ DoesNotAccessMemory,
  26252. /* hexagon_S2_asr_i_p_rnd */ DoesNotAccessMemory,
  26253. /* hexagon_S2_asr_i_p_rnd_goodsyntax */ DoesNotAccessMemory,
  26254. /* hexagon_S2_asr_i_r */ DoesNotAccessMemory,
  26255. /* hexagon_S2_asr_i_r_acc */ DoesNotAccessMemory,
  26256. /* hexagon_S2_asr_i_r_and */ DoesNotAccessMemory,
  26257. /* hexagon_S2_asr_i_r_nac */ DoesNotAccessMemory,
  26258. /* hexagon_S2_asr_i_r_or */ DoesNotAccessMemory,
  26259. /* hexagon_S2_asr_i_r_rnd */ DoesNotAccessMemory,
  26260. /* hexagon_S2_asr_i_r_rnd_goodsyntax */ DoesNotAccessMemory,
  26261. /* hexagon_S2_asr_i_svw_trun */ DoesNotAccessMemory,
  26262. /* hexagon_S2_asr_i_vh */ DoesNotAccessMemory,
  26263. /* hexagon_S2_asr_i_vw */ DoesNotAccessMemory,
  26264. /* hexagon_S2_asr_r_p */ DoesNotAccessMemory,
  26265. /* hexagon_S2_asr_r_p_acc */ DoesNotAccessMemory,
  26266. /* hexagon_S2_asr_r_p_and */ DoesNotAccessMemory,
  26267. /* hexagon_S2_asr_r_p_nac */ DoesNotAccessMemory,
  26268. /* hexagon_S2_asr_r_p_or */ DoesNotAccessMemory,
  26269. /* hexagon_S2_asr_r_p_xor */ DoesNotAccessMemory,
  26270. /* hexagon_S2_asr_r_r */ DoesNotAccessMemory,
  26271. /* hexagon_S2_asr_r_r_acc */ DoesNotAccessMemory,
  26272. /* hexagon_S2_asr_r_r_and */ DoesNotAccessMemory,
  26273. /* hexagon_S2_asr_r_r_nac */ DoesNotAccessMemory,
  26274. /* hexagon_S2_asr_r_r_or */ DoesNotAccessMemory,
  26275. /* hexagon_S2_asr_r_r_sat */ DoesNotAccessMemory,
  26276. /* hexagon_S2_asr_r_svw_trun */ DoesNotAccessMemory,
  26277. /* hexagon_S2_asr_r_vh */ DoesNotAccessMemory,
  26278. /* hexagon_S2_asr_r_vw */ DoesNotAccessMemory,
  26279. /* hexagon_S2_brev */ DoesNotAccessMemory,
  26280. /* hexagon_S2_brevp */ DoesNotAccessMemory,
  26281. /* hexagon_S2_cl0 */ DoesNotAccessMemory,
  26282. /* hexagon_S2_cl0p */ DoesNotAccessMemory,
  26283. /* hexagon_S2_cl1 */ DoesNotAccessMemory,
  26284. /* hexagon_S2_cl1p */ DoesNotAccessMemory,
  26285. /* hexagon_S2_clb */ DoesNotAccessMemory,
  26286. /* hexagon_S2_clbnorm */ DoesNotAccessMemory,
  26287. /* hexagon_S2_clbp */ DoesNotAccessMemory,
  26288. /* hexagon_S2_clrbit_i */ DoesNotAccessMemory,
  26289. /* hexagon_S2_clrbit_r */ DoesNotAccessMemory,
  26290. /* hexagon_S2_ct0 */ DoesNotAccessMemory,
  26291. /* hexagon_S2_ct0p */ DoesNotAccessMemory,
  26292. /* hexagon_S2_ct1 */ DoesNotAccessMemory,
  26293. /* hexagon_S2_ct1p */ DoesNotAccessMemory,
  26294. /* hexagon_S2_deinterleave */ DoesNotAccessMemory,
  26295. /* hexagon_S2_extractu */ DoesNotAccessMemory,
  26296. /* hexagon_S2_extractu_rp */ DoesNotAccessMemory,
  26297. /* hexagon_S2_extractup */ DoesNotAccessMemory,
  26298. /* hexagon_S2_extractup_rp */ DoesNotAccessMemory,
  26299. /* hexagon_S2_insert */ DoesNotAccessMemory,
  26300. /* hexagon_S2_insert_rp */ DoesNotAccessMemory,
  26301. /* hexagon_S2_insertp */ DoesNotAccessMemory,
  26302. /* hexagon_S2_insertp_rp */ DoesNotAccessMemory,
  26303. /* hexagon_S2_interleave */ DoesNotAccessMemory,
  26304. /* hexagon_S2_lfsp */ DoesNotAccessMemory,
  26305. /* hexagon_S2_lsl_r_p */ DoesNotAccessMemory,
  26306. /* hexagon_S2_lsl_r_p_acc */ DoesNotAccessMemory,
  26307. /* hexagon_S2_lsl_r_p_and */ DoesNotAccessMemory,
  26308. /* hexagon_S2_lsl_r_p_nac */ DoesNotAccessMemory,
  26309. /* hexagon_S2_lsl_r_p_or */ DoesNotAccessMemory,
  26310. /* hexagon_S2_lsl_r_p_xor */ DoesNotAccessMemory,
  26311. /* hexagon_S2_lsl_r_r */ DoesNotAccessMemory,
  26312. /* hexagon_S2_lsl_r_r_acc */ DoesNotAccessMemory,
  26313. /* hexagon_S2_lsl_r_r_and */ DoesNotAccessMemory,
  26314. /* hexagon_S2_lsl_r_r_nac */ DoesNotAccessMemory,
  26315. /* hexagon_S2_lsl_r_r_or */ DoesNotAccessMemory,
  26316. /* hexagon_S2_lsl_r_vh */ DoesNotAccessMemory,
  26317. /* hexagon_S2_lsl_r_vw */ DoesNotAccessMemory,
  26318. /* hexagon_S2_lsr_i_p */ DoesNotAccessMemory,
  26319. /* hexagon_S2_lsr_i_p_acc */ DoesNotAccessMemory,
  26320. /* hexagon_S2_lsr_i_p_and */ DoesNotAccessMemory,
  26321. /* hexagon_S2_lsr_i_p_nac */ DoesNotAccessMemory,
  26322. /* hexagon_S2_lsr_i_p_or */ DoesNotAccessMemory,
  26323. /* hexagon_S2_lsr_i_p_xacc */ DoesNotAccessMemory,
  26324. /* hexagon_S2_lsr_i_r */ DoesNotAccessMemory,
  26325. /* hexagon_S2_lsr_i_r_acc */ DoesNotAccessMemory,
  26326. /* hexagon_S2_lsr_i_r_and */ DoesNotAccessMemory,
  26327. /* hexagon_S2_lsr_i_r_nac */ DoesNotAccessMemory,
  26328. /* hexagon_S2_lsr_i_r_or */ DoesNotAccessMemory,
  26329. /* hexagon_S2_lsr_i_r_xacc */ DoesNotAccessMemory,
  26330. /* hexagon_S2_lsr_i_vh */ DoesNotAccessMemory,
  26331. /* hexagon_S2_lsr_i_vw */ DoesNotAccessMemory,
  26332. /* hexagon_S2_lsr_r_p */ DoesNotAccessMemory,
  26333. /* hexagon_S2_lsr_r_p_acc */ DoesNotAccessMemory,
  26334. /* hexagon_S2_lsr_r_p_and */ DoesNotAccessMemory,
  26335. /* hexagon_S2_lsr_r_p_nac */ DoesNotAccessMemory,
  26336. /* hexagon_S2_lsr_r_p_or */ DoesNotAccessMemory,
  26337. /* hexagon_S2_lsr_r_p_xor */ DoesNotAccessMemory,
  26338. /* hexagon_S2_lsr_r_r */ DoesNotAccessMemory,
  26339. /* hexagon_S2_lsr_r_r_acc */ DoesNotAccessMemory,
  26340. /* hexagon_S2_lsr_r_r_and */ DoesNotAccessMemory,
  26341. /* hexagon_S2_lsr_r_r_nac */ DoesNotAccessMemory,
  26342. /* hexagon_S2_lsr_r_r_or */ DoesNotAccessMemory,
  26343. /* hexagon_S2_lsr_r_vh */ DoesNotAccessMemory,
  26344. /* hexagon_S2_lsr_r_vw */ DoesNotAccessMemory,
  26345. /* hexagon_S2_packhl */ DoesNotAccessMemory,
  26346. /* hexagon_S2_parityp */ DoesNotAccessMemory,
  26347. /* hexagon_S2_setbit_i */ DoesNotAccessMemory,
  26348. /* hexagon_S2_setbit_r */ DoesNotAccessMemory,
  26349. /* hexagon_S2_shuffeb */ DoesNotAccessMemory,
  26350. /* hexagon_S2_shuffeh */ DoesNotAccessMemory,
  26351. /* hexagon_S2_shuffob */ DoesNotAccessMemory,
  26352. /* hexagon_S2_shuffoh */ DoesNotAccessMemory,
  26353. /* hexagon_S2_svsathb */ DoesNotAccessMemory,
  26354. /* hexagon_S2_svsathub */ DoesNotAccessMemory,
  26355. /* hexagon_S2_tableidxb_goodsyntax */ DoesNotAccessMemory,
  26356. /* hexagon_S2_tableidxd_goodsyntax */ DoesNotAccessMemory,
  26357. /* hexagon_S2_tableidxh_goodsyntax */ DoesNotAccessMemory,
  26358. /* hexagon_S2_tableidxw_goodsyntax */ DoesNotAccessMemory,
  26359. /* hexagon_S2_togglebit_i */ DoesNotAccessMemory,
  26360. /* hexagon_S2_togglebit_r */ DoesNotAccessMemory,
  26361. /* hexagon_S2_tstbit_i */ DoesNotAccessMemory,
  26362. /* hexagon_S2_tstbit_r */ DoesNotAccessMemory,
  26363. /* hexagon_S2_valignib */ DoesNotAccessMemory,
  26364. /* hexagon_S2_valignrb */ DoesNotAccessMemory,
  26365. /* hexagon_S2_vcnegh */ DoesNotAccessMemory,
  26366. /* hexagon_S2_vcrotate */ DoesNotAccessMemory,
  26367. /* hexagon_S2_vrcnegh */ DoesNotAccessMemory,
  26368. /* hexagon_S2_vrndpackwh */ DoesNotAccessMemory,
  26369. /* hexagon_S2_vrndpackwhs */ DoesNotAccessMemory,
  26370. /* hexagon_S2_vsathb */ DoesNotAccessMemory,
  26371. /* hexagon_S2_vsathb_nopack */ DoesNotAccessMemory,
  26372. /* hexagon_S2_vsathub */ DoesNotAccessMemory,
  26373. /* hexagon_S2_vsathub_nopack */ DoesNotAccessMemory,
  26374. /* hexagon_S2_vsatwh */ DoesNotAccessMemory,
  26375. /* hexagon_S2_vsatwh_nopack */ DoesNotAccessMemory,
  26376. /* hexagon_S2_vsatwuh */ DoesNotAccessMemory,
  26377. /* hexagon_S2_vsatwuh_nopack */ DoesNotAccessMemory,
  26378. /* hexagon_S2_vsplatrb */ DoesNotAccessMemory,
  26379. /* hexagon_S2_vsplatrh */ DoesNotAccessMemory,
  26380. /* hexagon_S2_vspliceib */ DoesNotAccessMemory,
  26381. /* hexagon_S2_vsplicerb */ DoesNotAccessMemory,
  26382. /* hexagon_S2_vsxtbh */ DoesNotAccessMemory,
  26383. /* hexagon_S2_vsxthw */ DoesNotAccessMemory,
  26384. /* hexagon_S2_vtrunehb */ DoesNotAccessMemory,
  26385. /* hexagon_S2_vtrunewh */ DoesNotAccessMemory,
  26386. /* hexagon_S2_vtrunohb */ DoesNotAccessMemory,
  26387. /* hexagon_S2_vtrunowh */ DoesNotAccessMemory,
  26388. /* hexagon_S2_vzxtbh */ DoesNotAccessMemory,
  26389. /* hexagon_S2_vzxthw */ DoesNotAccessMemory,
  26390. /* hexagon_S4_addaddi */ DoesNotAccessMemory,
  26391. /* hexagon_S4_addi_asl_ri */ DoesNotAccessMemory,
  26392. /* hexagon_S4_addi_lsr_ri */ DoesNotAccessMemory,
  26393. /* hexagon_S4_andi_asl_ri */ DoesNotAccessMemory,
  26394. /* hexagon_S4_andi_lsr_ri */ DoesNotAccessMemory,
  26395. /* hexagon_S4_clbaddi */ DoesNotAccessMemory,
  26396. /* hexagon_S4_clbpaddi */ DoesNotAccessMemory,
  26397. /* hexagon_S4_clbpnorm */ DoesNotAccessMemory,
  26398. /* hexagon_S4_extract */ DoesNotAccessMemory,
  26399. /* hexagon_S4_extract_rp */ DoesNotAccessMemory,
  26400. /* hexagon_S4_extractp */ DoesNotAccessMemory,
  26401. /* hexagon_S4_extractp_rp */ DoesNotAccessMemory,
  26402. /* hexagon_S4_lsli */ DoesNotAccessMemory,
  26403. /* hexagon_S4_ntstbit_i */ DoesNotAccessMemory,
  26404. /* hexagon_S4_ntstbit_r */ DoesNotAccessMemory,
  26405. /* hexagon_S4_or_andi */ DoesNotAccessMemory,
  26406. /* hexagon_S4_or_andix */ DoesNotAccessMemory,
  26407. /* hexagon_S4_or_ori */ DoesNotAccessMemory,
  26408. /* hexagon_S4_ori_asl_ri */ DoesNotAccessMemory,
  26409. /* hexagon_S4_ori_lsr_ri */ DoesNotAccessMemory,
  26410. /* hexagon_S4_parity */ DoesNotAccessMemory,
  26411. /* hexagon_S4_subaddi */ DoesNotAccessMemory,
  26412. /* hexagon_S4_subi_asl_ri */ DoesNotAccessMemory,
  26413. /* hexagon_S4_subi_lsr_ri */ DoesNotAccessMemory,
  26414. /* hexagon_S4_vrcrotate */ DoesNotAccessMemory,
  26415. /* hexagon_S4_vrcrotate_acc */ DoesNotAccessMemory,
  26416. /* hexagon_S4_vxaddsubh */ DoesNotAccessMemory,
  26417. /* hexagon_S4_vxaddsubhr */ DoesNotAccessMemory,
  26418. /* hexagon_S4_vxaddsubw */ DoesNotAccessMemory,
  26419. /* hexagon_S4_vxsubaddh */ DoesNotAccessMemory,
  26420. /* hexagon_S4_vxsubaddhr */ DoesNotAccessMemory,
  26421. /* hexagon_S4_vxsubaddw */ DoesNotAccessMemory,
  26422. /* hexagon_S5_asrhub_rnd_sat_goodsyntax */ DoesNotAccessMemory,
  26423. /* hexagon_S5_asrhub_sat */ DoesNotAccessMemory,
  26424. /* hexagon_S5_popcountp */ DoesNotAccessMemory,
  26425. /* hexagon_S5_vasrhrnd_goodsyntax */ DoesNotAccessMemory,
  26426. /* hexagon_SI_to_SXTHI_asrh */ DoesNotAccessMemory,
  26427. /* hexagon_circ_ldd */ OnlyAccessesArgumentPointees,
  26428. /* init_trampoline */ OnlyAccessesArgumentPointees,
  26429. /* invariant_end */ OnlyAccessesArgumentPointees,
  26430. /* invariant_start */ OnlyAccessesArgumentPointees,
  26431. /* lifetime_end */ OnlyAccessesArgumentPointees,
  26432. /* lifetime_start */ OnlyAccessesArgumentPointees,
  26433. /* log */ OnlyReadsMemory,
  26434. /* log10 */ OnlyReadsMemory,
  26435. /* log2 */ OnlyReadsMemory,
  26436. /* longjmp */ UnknownModRefBehavior,
  26437. /* memcpy */ OnlyAccessesArgumentPointees,
  26438. /* memmove */ OnlyAccessesArgumentPointees,
  26439. /* memset */ OnlyAccessesArgumentPointees,
  26440. /* mips_absq_s_ph */ UnknownModRefBehavior,
  26441. /* mips_absq_s_qb */ UnknownModRefBehavior,
  26442. /* mips_absq_s_w */ UnknownModRefBehavior,
  26443. /* mips_addq_ph */ UnknownModRefBehavior,
  26444. /* mips_addq_s_ph */ UnknownModRefBehavior,
  26445. /* mips_addq_s_w */ UnknownModRefBehavior,
  26446. /* mips_addqh_ph */ DoesNotAccessMemory,
  26447. /* mips_addqh_r_ph */ DoesNotAccessMemory,
  26448. /* mips_addqh_r_w */ DoesNotAccessMemory,
  26449. /* mips_addqh_w */ DoesNotAccessMemory,
  26450. /* mips_addsc */ UnknownModRefBehavior,
  26451. /* mips_addu_ph */ UnknownModRefBehavior,
  26452. /* mips_addu_qb */ UnknownModRefBehavior,
  26453. /* mips_addu_s_ph */ UnknownModRefBehavior,
  26454. /* mips_addu_s_qb */ UnknownModRefBehavior,
  26455. /* mips_adduh_qb */ DoesNotAccessMemory,
  26456. /* mips_adduh_r_qb */ DoesNotAccessMemory,
  26457. /* mips_addwc */ UnknownModRefBehavior,
  26458. /* mips_append */ DoesNotAccessMemory,
  26459. /* mips_balign */ DoesNotAccessMemory,
  26460. /* mips_bitrev */ DoesNotAccessMemory,
  26461. /* mips_bposge32 */ OnlyReadsMemory,
  26462. /* mips_cmp_eq_ph */ UnknownModRefBehavior,
  26463. /* mips_cmp_le_ph */ UnknownModRefBehavior,
  26464. /* mips_cmp_lt_ph */ UnknownModRefBehavior,
  26465. /* mips_cmpgdu_eq_qb */ UnknownModRefBehavior,
  26466. /* mips_cmpgdu_le_qb */ UnknownModRefBehavior,
  26467. /* mips_cmpgdu_lt_qb */ UnknownModRefBehavior,
  26468. /* mips_cmpgu_eq_qb */ UnknownModRefBehavior,
  26469. /* mips_cmpgu_le_qb */ UnknownModRefBehavior,
  26470. /* mips_cmpgu_lt_qb */ UnknownModRefBehavior,
  26471. /* mips_cmpu_eq_qb */ UnknownModRefBehavior,
  26472. /* mips_cmpu_le_qb */ UnknownModRefBehavior,
  26473. /* mips_cmpu_lt_qb */ UnknownModRefBehavior,
  26474. /* mips_dpa_w_ph */ DoesNotAccessMemory,
  26475. /* mips_dpaq_s_w_ph */ UnknownModRefBehavior,
  26476. /* mips_dpaq_sa_l_w */ UnknownModRefBehavior,
  26477. /* mips_dpaqx_s_w_ph */ UnknownModRefBehavior,
  26478. /* mips_dpaqx_sa_w_ph */ UnknownModRefBehavior,
  26479. /* mips_dpau_h_qbl */ DoesNotAccessMemory,
  26480. /* mips_dpau_h_qbr */ DoesNotAccessMemory,
  26481. /* mips_dpax_w_ph */ DoesNotAccessMemory,
  26482. /* mips_dps_w_ph */ DoesNotAccessMemory,
  26483. /* mips_dpsq_s_w_ph */ UnknownModRefBehavior,
  26484. /* mips_dpsq_sa_l_w */ UnknownModRefBehavior,
  26485. /* mips_dpsqx_s_w_ph */ UnknownModRefBehavior,
  26486. /* mips_dpsqx_sa_w_ph */ UnknownModRefBehavior,
  26487. /* mips_dpsu_h_qbl */ DoesNotAccessMemory,
  26488. /* mips_dpsu_h_qbr */ DoesNotAccessMemory,
  26489. /* mips_dpsx_w_ph */ DoesNotAccessMemory,
  26490. /* mips_extp */ UnknownModRefBehavior,
  26491. /* mips_extpdp */ UnknownModRefBehavior,
  26492. /* mips_extr_r_w */ UnknownModRefBehavior,
  26493. /* mips_extr_rs_w */ UnknownModRefBehavior,
  26494. /* mips_extr_s_h */ UnknownModRefBehavior,
  26495. /* mips_extr_w */ UnknownModRefBehavior,
  26496. /* mips_insv */ OnlyReadsMemory,
  26497. /* mips_lbux */ OnlyReadsArgumentPointees,
  26498. /* mips_lhx */ OnlyReadsArgumentPointees,
  26499. /* mips_lwx */ OnlyReadsArgumentPointees,
  26500. /* mips_madd */ DoesNotAccessMemory,
  26501. /* mips_maddu */ DoesNotAccessMemory,
  26502. /* mips_maq_s_w_phl */ UnknownModRefBehavior,
  26503. /* mips_maq_s_w_phr */ UnknownModRefBehavior,
  26504. /* mips_maq_sa_w_phl */ UnknownModRefBehavior,
  26505. /* mips_maq_sa_w_phr */ UnknownModRefBehavior,
  26506. /* mips_modsub */ DoesNotAccessMemory,
  26507. /* mips_msub */ DoesNotAccessMemory,
  26508. /* mips_msubu */ DoesNotAccessMemory,
  26509. /* mips_mthlip */ UnknownModRefBehavior,
  26510. /* mips_mul_ph */ UnknownModRefBehavior,
  26511. /* mips_mul_s_ph */ UnknownModRefBehavior,
  26512. /* mips_muleq_s_w_phl */ UnknownModRefBehavior,
  26513. /* mips_muleq_s_w_phr */ UnknownModRefBehavior,
  26514. /* mips_muleu_s_ph_qbl */ UnknownModRefBehavior,
  26515. /* mips_muleu_s_ph_qbr */ UnknownModRefBehavior,
  26516. /* mips_mulq_rs_ph */ UnknownModRefBehavior,
  26517. /* mips_mulq_rs_w */ UnknownModRefBehavior,
  26518. /* mips_mulq_s_ph */ UnknownModRefBehavior,
  26519. /* mips_mulq_s_w */ UnknownModRefBehavior,
  26520. /* mips_mulsa_w_ph */ DoesNotAccessMemory,
  26521. /* mips_mulsaq_s_w_ph */ UnknownModRefBehavior,
  26522. /* mips_mult */ DoesNotAccessMemory,
  26523. /* mips_multu */ DoesNotAccessMemory,
  26524. /* mips_packrl_ph */ DoesNotAccessMemory,
  26525. /* mips_pick_ph */ OnlyReadsMemory,
  26526. /* mips_pick_qb */ OnlyReadsMemory,
  26527. /* mips_preceq_w_phl */ DoesNotAccessMemory,
  26528. /* mips_preceq_w_phr */ DoesNotAccessMemory,
  26529. /* mips_precequ_ph_qbl */ DoesNotAccessMemory,
  26530. /* mips_precequ_ph_qbla */ DoesNotAccessMemory,
  26531. /* mips_precequ_ph_qbr */ DoesNotAccessMemory,
  26532. /* mips_precequ_ph_qbra */ DoesNotAccessMemory,
  26533. /* mips_preceu_ph_qbl */ DoesNotAccessMemory,
  26534. /* mips_preceu_ph_qbla */ DoesNotAccessMemory,
  26535. /* mips_preceu_ph_qbr */ DoesNotAccessMemory,
  26536. /* mips_preceu_ph_qbra */ DoesNotAccessMemory,
  26537. /* mips_precr_qb_ph */ UnknownModRefBehavior,
  26538. /* mips_precr_sra_ph_w */ DoesNotAccessMemory,
  26539. /* mips_precr_sra_r_ph_w */ DoesNotAccessMemory,
  26540. /* mips_precrq_ph_w */ DoesNotAccessMemory,
  26541. /* mips_precrq_qb_ph */ DoesNotAccessMemory,
  26542. /* mips_precrq_rs_ph_w */ UnknownModRefBehavior,
  26543. /* mips_precrqu_s_qb_ph */ UnknownModRefBehavior,
  26544. /* mips_prepend */ DoesNotAccessMemory,
  26545. /* mips_raddu_w_qb */ DoesNotAccessMemory,
  26546. /* mips_rddsp */ OnlyReadsMemory,
  26547. /* mips_repl_ph */ DoesNotAccessMemory,
  26548. /* mips_repl_qb */ DoesNotAccessMemory,
  26549. /* mips_shilo */ DoesNotAccessMemory,
  26550. /* mips_shll_ph */ UnknownModRefBehavior,
  26551. /* mips_shll_qb */ UnknownModRefBehavior,
  26552. /* mips_shll_s_ph */ UnknownModRefBehavior,
  26553. /* mips_shll_s_w */ UnknownModRefBehavior,
  26554. /* mips_shra_ph */ DoesNotAccessMemory,
  26555. /* mips_shra_qb */ DoesNotAccessMemory,
  26556. /* mips_shra_r_ph */ DoesNotAccessMemory,
  26557. /* mips_shra_r_qb */ DoesNotAccessMemory,
  26558. /* mips_shra_r_w */ DoesNotAccessMemory,
  26559. /* mips_shrl_ph */ DoesNotAccessMemory,
  26560. /* mips_shrl_qb */ DoesNotAccessMemory,
  26561. /* mips_subq_ph */ UnknownModRefBehavior,
  26562. /* mips_subq_s_ph */ UnknownModRefBehavior,
  26563. /* mips_subq_s_w */ UnknownModRefBehavior,
  26564. /* mips_subqh_ph */ DoesNotAccessMemory,
  26565. /* mips_subqh_r_ph */ DoesNotAccessMemory,
  26566. /* mips_subqh_r_w */ DoesNotAccessMemory,
  26567. /* mips_subqh_w */ DoesNotAccessMemory,
  26568. /* mips_subu_ph */ UnknownModRefBehavior,
  26569. /* mips_subu_qb */ UnknownModRefBehavior,
  26570. /* mips_subu_s_ph */ UnknownModRefBehavior,
  26571. /* mips_subu_s_qb */ UnknownModRefBehavior,
  26572. /* mips_subuh_qb */ DoesNotAccessMemory,
  26573. /* mips_subuh_r_qb */ DoesNotAccessMemory,
  26574. /* mips_wrdsp */ UnknownModRefBehavior,
  26575. /* nvvm_abs_i */ DoesNotAccessMemory,
  26576. /* nvvm_abs_ll */ DoesNotAccessMemory,
  26577. /* nvvm_add_rm_d */ DoesNotAccessMemory,
  26578. /* nvvm_add_rm_f */ DoesNotAccessMemory,
  26579. /* nvvm_add_rm_ftz_f */ DoesNotAccessMemory,
  26580. /* nvvm_add_rn_d */ DoesNotAccessMemory,
  26581. /* nvvm_add_rn_f */ DoesNotAccessMemory,
  26582. /* nvvm_add_rn_ftz_f */ DoesNotAccessMemory,
  26583. /* nvvm_add_rp_d */ DoesNotAccessMemory,
  26584. /* nvvm_add_rp_f */ DoesNotAccessMemory,
  26585. /* nvvm_add_rp_ftz_f */ DoesNotAccessMemory,
  26586. /* nvvm_add_rz_d */ DoesNotAccessMemory,
  26587. /* nvvm_add_rz_f */ DoesNotAccessMemory,
  26588. /* nvvm_add_rz_ftz_f */ DoesNotAccessMemory,
  26589. /* nvvm_atomic_load_add_f32 */ OnlyAccessesArgumentPointees,
  26590. /* nvvm_atomic_load_dec_32 */ OnlyAccessesArgumentPointees,
  26591. /* nvvm_atomic_load_inc_32 */ OnlyAccessesArgumentPointees,
  26592. /* nvvm_barrier0 */ UnknownModRefBehavior,
  26593. /* nvvm_barrier0_and */ UnknownModRefBehavior,
  26594. /* nvvm_barrier0_or */ UnknownModRefBehavior,
  26595. /* nvvm_barrier0_popc */ UnknownModRefBehavior,
  26596. /* nvvm_bitcast_d2ll */ DoesNotAccessMemory,
  26597. /* nvvm_bitcast_f2i */ DoesNotAccessMemory,
  26598. /* nvvm_bitcast_i2f */ DoesNotAccessMemory,
  26599. /* nvvm_bitcast_ll2d */ DoesNotAccessMemory,
  26600. /* nvvm_brev32 */ DoesNotAccessMemory,
  26601. /* nvvm_brev64 */ DoesNotAccessMemory,
  26602. /* nvvm_ceil_d */ DoesNotAccessMemory,
  26603. /* nvvm_ceil_f */ DoesNotAccessMemory,
  26604. /* nvvm_ceil_ftz_f */ DoesNotAccessMemory,
  26605. /* nvvm_clz_i */ DoesNotAccessMemory,
  26606. /* nvvm_clz_ll */ DoesNotAccessMemory,
  26607. /* nvvm_compiler_error */ UnknownModRefBehavior,
  26608. /* nvvm_compiler_warn */ UnknownModRefBehavior,
  26609. /* nvvm_cos_approx_f */ DoesNotAccessMemory,
  26610. /* nvvm_cos_approx_ftz_f */ DoesNotAccessMemory,
  26611. /* nvvm_d2f_rm */ DoesNotAccessMemory,
  26612. /* nvvm_d2f_rm_ftz */ DoesNotAccessMemory,
  26613. /* nvvm_d2f_rn */ DoesNotAccessMemory,
  26614. /* nvvm_d2f_rn_ftz */ DoesNotAccessMemory,
  26615. /* nvvm_d2f_rp */ DoesNotAccessMemory,
  26616. /* nvvm_d2f_rp_ftz */ DoesNotAccessMemory,
  26617. /* nvvm_d2f_rz */ DoesNotAccessMemory,
  26618. /* nvvm_d2f_rz_ftz */ DoesNotAccessMemory,
  26619. /* nvvm_d2i_hi */ DoesNotAccessMemory,
  26620. /* nvvm_d2i_lo */ DoesNotAccessMemory,
  26621. /* nvvm_d2i_rm */ DoesNotAccessMemory,
  26622. /* nvvm_d2i_rn */ DoesNotAccessMemory,
  26623. /* nvvm_d2i_rp */ DoesNotAccessMemory,
  26624. /* nvvm_d2i_rz */ DoesNotAccessMemory,
  26625. /* nvvm_d2ll_rm */ DoesNotAccessMemory,
  26626. /* nvvm_d2ll_rn */ DoesNotAccessMemory,
  26627. /* nvvm_d2ll_rp */ DoesNotAccessMemory,
  26628. /* nvvm_d2ll_rz */ DoesNotAccessMemory,
  26629. /* nvvm_d2ui_rm */ DoesNotAccessMemory,
  26630. /* nvvm_d2ui_rn */ DoesNotAccessMemory,
  26631. /* nvvm_d2ui_rp */ DoesNotAccessMemory,
  26632. /* nvvm_d2ui_rz */ DoesNotAccessMemory,
  26633. /* nvvm_d2ull_rm */ DoesNotAccessMemory,
  26634. /* nvvm_d2ull_rn */ DoesNotAccessMemory,
  26635. /* nvvm_d2ull_rp */ DoesNotAccessMemory,
  26636. /* nvvm_d2ull_rz */ DoesNotAccessMemory,
  26637. /* nvvm_div_approx_f */ DoesNotAccessMemory,
  26638. /* nvvm_div_approx_ftz_f */ DoesNotAccessMemory,
  26639. /* nvvm_div_rm_d */ DoesNotAccessMemory,
  26640. /* nvvm_div_rm_f */ DoesNotAccessMemory,
  26641. /* nvvm_div_rm_ftz_f */ DoesNotAccessMemory,
  26642. /* nvvm_div_rn_d */ DoesNotAccessMemory,
  26643. /* nvvm_div_rn_f */ DoesNotAccessMemory,
  26644. /* nvvm_div_rn_ftz_f */ DoesNotAccessMemory,
  26645. /* nvvm_div_rp_d */ DoesNotAccessMemory,
  26646. /* nvvm_div_rp_f */ DoesNotAccessMemory,
  26647. /* nvvm_div_rp_ftz_f */ DoesNotAccessMemory,
  26648. /* nvvm_div_rz_d */ DoesNotAccessMemory,
  26649. /* nvvm_div_rz_f */ DoesNotAccessMemory,
  26650. /* nvvm_div_rz_ftz_f */ DoesNotAccessMemory,
  26651. /* nvvm_ex2_approx_d */ DoesNotAccessMemory,
  26652. /* nvvm_ex2_approx_f */ DoesNotAccessMemory,
  26653. /* nvvm_ex2_approx_ftz_f */ DoesNotAccessMemory,
  26654. /* nvvm_f2h_rn */ DoesNotAccessMemory,
  26655. /* nvvm_f2h_rn_ftz */ DoesNotAccessMemory,
  26656. /* nvvm_f2i_rm */ DoesNotAccessMemory,
  26657. /* nvvm_f2i_rm_ftz */ DoesNotAccessMemory,
  26658. /* nvvm_f2i_rn */ DoesNotAccessMemory,
  26659. /* nvvm_f2i_rn_ftz */ DoesNotAccessMemory,
  26660. /* nvvm_f2i_rp */ DoesNotAccessMemory,
  26661. /* nvvm_f2i_rp_ftz */ DoesNotAccessMemory,
  26662. /* nvvm_f2i_rz */ DoesNotAccessMemory,
  26663. /* nvvm_f2i_rz_ftz */ DoesNotAccessMemory,
  26664. /* nvvm_f2ll_rm */ DoesNotAccessMemory,
  26665. /* nvvm_f2ll_rm_ftz */ DoesNotAccessMemory,
  26666. /* nvvm_f2ll_rn */ DoesNotAccessMemory,
  26667. /* nvvm_f2ll_rn_ftz */ DoesNotAccessMemory,
  26668. /* nvvm_f2ll_rp */ DoesNotAccessMemory,
  26669. /* nvvm_f2ll_rp_ftz */ DoesNotAccessMemory,
  26670. /* nvvm_f2ll_rz */ DoesNotAccessMemory,
  26671. /* nvvm_f2ll_rz_ftz */ DoesNotAccessMemory,
  26672. /* nvvm_f2ui_rm */ DoesNotAccessMemory,
  26673. /* nvvm_f2ui_rm_ftz */ DoesNotAccessMemory,
  26674. /* nvvm_f2ui_rn */ DoesNotAccessMemory,
  26675. /* nvvm_f2ui_rn_ftz */ DoesNotAccessMemory,
  26676. /* nvvm_f2ui_rp */ DoesNotAccessMemory,
  26677. /* nvvm_f2ui_rp_ftz */ DoesNotAccessMemory,
  26678. /* nvvm_f2ui_rz */ DoesNotAccessMemory,
  26679. /* nvvm_f2ui_rz_ftz */ DoesNotAccessMemory,
  26680. /* nvvm_f2ull_rm */ DoesNotAccessMemory,
  26681. /* nvvm_f2ull_rm_ftz */ DoesNotAccessMemory,
  26682. /* nvvm_f2ull_rn */ DoesNotAccessMemory,
  26683. /* nvvm_f2ull_rn_ftz */ DoesNotAccessMemory,
  26684. /* nvvm_f2ull_rp */ DoesNotAccessMemory,
  26685. /* nvvm_f2ull_rp_ftz */ DoesNotAccessMemory,
  26686. /* nvvm_f2ull_rz */ DoesNotAccessMemory,
  26687. /* nvvm_f2ull_rz_ftz */ DoesNotAccessMemory,
  26688. /* nvvm_fabs_d */ DoesNotAccessMemory,
  26689. /* nvvm_fabs_f */ DoesNotAccessMemory,
  26690. /* nvvm_fabs_ftz_f */ DoesNotAccessMemory,
  26691. /* nvvm_floor_d */ DoesNotAccessMemory,
  26692. /* nvvm_floor_f */ DoesNotAccessMemory,
  26693. /* nvvm_floor_ftz_f */ DoesNotAccessMemory,
  26694. /* nvvm_fma_rm_d */ DoesNotAccessMemory,
  26695. /* nvvm_fma_rm_f */ DoesNotAccessMemory,
  26696. /* nvvm_fma_rm_ftz_f */ DoesNotAccessMemory,
  26697. /* nvvm_fma_rn_d */ DoesNotAccessMemory,
  26698. /* nvvm_fma_rn_f */ DoesNotAccessMemory,
  26699. /* nvvm_fma_rn_ftz_f */ DoesNotAccessMemory,
  26700. /* nvvm_fma_rp_d */ DoesNotAccessMemory,
  26701. /* nvvm_fma_rp_f */ DoesNotAccessMemory,
  26702. /* nvvm_fma_rp_ftz_f */ DoesNotAccessMemory,
  26703. /* nvvm_fma_rz_d */ DoesNotAccessMemory,
  26704. /* nvvm_fma_rz_f */ DoesNotAccessMemory,
  26705. /* nvvm_fma_rz_ftz_f */ DoesNotAccessMemory,
  26706. /* nvvm_fmax_d */ DoesNotAccessMemory,
  26707. /* nvvm_fmax_f */ DoesNotAccessMemory,
  26708. /* nvvm_fmax_ftz_f */ DoesNotAccessMemory,
  26709. /* nvvm_fmin_d */ DoesNotAccessMemory,
  26710. /* nvvm_fmin_f */ DoesNotAccessMemory,
  26711. /* nvvm_fmin_ftz_f */ DoesNotAccessMemory,
  26712. /* nvvm_h2f */ DoesNotAccessMemory,
  26713. /* nvvm_i2d_rm */ DoesNotAccessMemory,
  26714. /* nvvm_i2d_rn */ DoesNotAccessMemory,
  26715. /* nvvm_i2d_rp */ DoesNotAccessMemory,
  26716. /* nvvm_i2d_rz */ DoesNotAccessMemory,
  26717. /* nvvm_i2f_rm */ DoesNotAccessMemory,
  26718. /* nvvm_i2f_rn */ DoesNotAccessMemory,
  26719. /* nvvm_i2f_rp */ DoesNotAccessMemory,
  26720. /* nvvm_i2f_rz */ DoesNotAccessMemory,
  26721. /* nvvm_ldu_global_f */ OnlyReadsMemory,
  26722. /* nvvm_ldu_global_i */ OnlyReadsMemory,
  26723. /* nvvm_ldu_global_p */ OnlyReadsMemory,
  26724. /* nvvm_lg2_approx_d */ DoesNotAccessMemory,
  26725. /* nvvm_lg2_approx_f */ DoesNotAccessMemory,
  26726. /* nvvm_lg2_approx_ftz_f */ DoesNotAccessMemory,
  26727. /* nvvm_ll2d_rm */ DoesNotAccessMemory,
  26728. /* nvvm_ll2d_rn */ DoesNotAccessMemory,
  26729. /* nvvm_ll2d_rp */ DoesNotAccessMemory,
  26730. /* nvvm_ll2d_rz */ DoesNotAccessMemory,
  26731. /* nvvm_ll2f_rm */ DoesNotAccessMemory,
  26732. /* nvvm_ll2f_rn */ DoesNotAccessMemory,
  26733. /* nvvm_ll2f_rp */ DoesNotAccessMemory,
  26734. /* nvvm_ll2f_rz */ DoesNotAccessMemory,
  26735. /* nvvm_lohi_i2d */ DoesNotAccessMemory,
  26736. /* nvvm_max_i */ DoesNotAccessMemory,
  26737. /* nvvm_max_ll */ DoesNotAccessMemory,
  26738. /* nvvm_max_ui */ DoesNotAccessMemory,
  26739. /* nvvm_max_ull */ DoesNotAccessMemory,
  26740. /* nvvm_membar_cta */ UnknownModRefBehavior,
  26741. /* nvvm_membar_gl */ UnknownModRefBehavior,
  26742. /* nvvm_membar_sys */ UnknownModRefBehavior,
  26743. /* nvvm_min_i */ DoesNotAccessMemory,
  26744. /* nvvm_min_ll */ DoesNotAccessMemory,
  26745. /* nvvm_min_ui */ DoesNotAccessMemory,
  26746. /* nvvm_min_ull */ DoesNotAccessMemory,
  26747. /* nvvm_move_double */ DoesNotAccessMemory,
  26748. /* nvvm_move_float */ DoesNotAccessMemory,
  26749. /* nvvm_move_i16 */ DoesNotAccessMemory,
  26750. /* nvvm_move_i32 */ DoesNotAccessMemory,
  26751. /* nvvm_move_i64 */ DoesNotAccessMemory,
  26752. /* nvvm_move_i8 */ DoesNotAccessMemory,
  26753. /* nvvm_move_ptr */ DoesNotAccessMemory,
  26754. /* nvvm_mul24_i */ DoesNotAccessMemory,
  26755. /* nvvm_mul24_ui */ DoesNotAccessMemory,
  26756. /* nvvm_mul_rm_d */ DoesNotAccessMemory,
  26757. /* nvvm_mul_rm_f */ DoesNotAccessMemory,
  26758. /* nvvm_mul_rm_ftz_f */ DoesNotAccessMemory,
  26759. /* nvvm_mul_rn_d */ DoesNotAccessMemory,
  26760. /* nvvm_mul_rn_f */ DoesNotAccessMemory,
  26761. /* nvvm_mul_rn_ftz_f */ DoesNotAccessMemory,
  26762. /* nvvm_mul_rp_d */ DoesNotAccessMemory,
  26763. /* nvvm_mul_rp_f */ DoesNotAccessMemory,
  26764. /* nvvm_mul_rp_ftz_f */ DoesNotAccessMemory,
  26765. /* nvvm_mul_rz_d */ DoesNotAccessMemory,
  26766. /* nvvm_mul_rz_f */ DoesNotAccessMemory,
  26767. /* nvvm_mul_rz_ftz_f */ DoesNotAccessMemory,
  26768. /* nvvm_mulhi_i */ DoesNotAccessMemory,
  26769. /* nvvm_mulhi_ll */ DoesNotAccessMemory,
  26770. /* nvvm_mulhi_ui */ DoesNotAccessMemory,
  26771. /* nvvm_mulhi_ull */ DoesNotAccessMemory,
  26772. /* nvvm_popc_i */ DoesNotAccessMemory,
  26773. /* nvvm_popc_ll */ DoesNotAccessMemory,
  26774. /* nvvm_prmt */ DoesNotAccessMemory,
  26775. /* nvvm_ptr_constant_to_gen */ DoesNotAccessMemory,
  26776. /* nvvm_ptr_gen_to_constant */ DoesNotAccessMemory,
  26777. /* nvvm_ptr_gen_to_global */ DoesNotAccessMemory,
  26778. /* nvvm_ptr_gen_to_local */ DoesNotAccessMemory,
  26779. /* nvvm_ptr_gen_to_param */ DoesNotAccessMemory,
  26780. /* nvvm_ptr_gen_to_shared */ DoesNotAccessMemory,
  26781. /* nvvm_ptr_global_to_gen */ DoesNotAccessMemory,
  26782. /* nvvm_ptr_local_to_gen */ DoesNotAccessMemory,
  26783. /* nvvm_ptr_shared_to_gen */ DoesNotAccessMemory,
  26784. /* nvvm_rcp_approx_ftz_d */ DoesNotAccessMemory,
  26785. /* nvvm_rcp_rm_d */ DoesNotAccessMemory,
  26786. /* nvvm_rcp_rm_f */ DoesNotAccessMemory,
  26787. /* nvvm_rcp_rm_ftz_f */ DoesNotAccessMemory,
  26788. /* nvvm_rcp_rn_d */ DoesNotAccessMemory,
  26789. /* nvvm_rcp_rn_f */ DoesNotAccessMemory,
  26790. /* nvvm_rcp_rn_ftz_f */ DoesNotAccessMemory,
  26791. /* nvvm_rcp_rp_d */ DoesNotAccessMemory,
  26792. /* nvvm_rcp_rp_f */ DoesNotAccessMemory,
  26793. /* nvvm_rcp_rp_ftz_f */ DoesNotAccessMemory,
  26794. /* nvvm_rcp_rz_d */ DoesNotAccessMemory,
  26795. /* nvvm_rcp_rz_f */ DoesNotAccessMemory,
  26796. /* nvvm_rcp_rz_ftz_f */ DoesNotAccessMemory,
  26797. /* nvvm_read_ptx_sreg_ctaid_x */ DoesNotAccessMemory,
  26798. /* nvvm_read_ptx_sreg_ctaid_y */ DoesNotAccessMemory,
  26799. /* nvvm_read_ptx_sreg_ctaid_z */ DoesNotAccessMemory,
  26800. /* nvvm_read_ptx_sreg_nctaid_x */ DoesNotAccessMemory,
  26801. /* nvvm_read_ptx_sreg_nctaid_y */ DoesNotAccessMemory,
  26802. /* nvvm_read_ptx_sreg_nctaid_z */ DoesNotAccessMemory,
  26803. /* nvvm_read_ptx_sreg_ntid_x */ DoesNotAccessMemory,
  26804. /* nvvm_read_ptx_sreg_ntid_y */ DoesNotAccessMemory,
  26805. /* nvvm_read_ptx_sreg_ntid_z */ DoesNotAccessMemory,
  26806. /* nvvm_read_ptx_sreg_tid_x */ DoesNotAccessMemory,
  26807. /* nvvm_read_ptx_sreg_tid_y */ DoesNotAccessMemory,
  26808. /* nvvm_read_ptx_sreg_tid_z */ DoesNotAccessMemory,
  26809. /* nvvm_read_ptx_sreg_warpsize */ DoesNotAccessMemory,
  26810. /* nvvm_round_d */ DoesNotAccessMemory,
  26811. /* nvvm_round_f */ DoesNotAccessMemory,
  26812. /* nvvm_round_ftz_f */ DoesNotAccessMemory,
  26813. /* nvvm_rsqrt_approx_d */ DoesNotAccessMemory,
  26814. /* nvvm_rsqrt_approx_f */ DoesNotAccessMemory,
  26815. /* nvvm_rsqrt_approx_ftz_f */ DoesNotAccessMemory,
  26816. /* nvvm_sad_i */ DoesNotAccessMemory,
  26817. /* nvvm_sad_ui */ DoesNotAccessMemory,
  26818. /* nvvm_saturate_d */ DoesNotAccessMemory,
  26819. /* nvvm_saturate_f */ DoesNotAccessMemory,
  26820. /* nvvm_saturate_ftz_f */ DoesNotAccessMemory,
  26821. /* nvvm_sin_approx_f */ DoesNotAccessMemory,
  26822. /* nvvm_sin_approx_ftz_f */ DoesNotAccessMemory,
  26823. /* nvvm_sqrt_approx_f */ DoesNotAccessMemory,
  26824. /* nvvm_sqrt_approx_ftz_f */ DoesNotAccessMemory,
  26825. /* nvvm_sqrt_rm_d */ DoesNotAccessMemory,
  26826. /* nvvm_sqrt_rm_f */ DoesNotAccessMemory,
  26827. /* nvvm_sqrt_rm_ftz_f */ DoesNotAccessMemory,
  26828. /* nvvm_sqrt_rn_d */ DoesNotAccessMemory,
  26829. /* nvvm_sqrt_rn_f */ DoesNotAccessMemory,
  26830. /* nvvm_sqrt_rn_ftz_f */ DoesNotAccessMemory,
  26831. /* nvvm_sqrt_rp_d */ DoesNotAccessMemory,
  26832. /* nvvm_sqrt_rp_f */ DoesNotAccessMemory,
  26833. /* nvvm_sqrt_rp_ftz_f */ DoesNotAccessMemory,
  26834. /* nvvm_sqrt_rz_d */ DoesNotAccessMemory,
  26835. /* nvvm_sqrt_rz_f */ DoesNotAccessMemory,
  26836. /* nvvm_sqrt_rz_ftz_f */ DoesNotAccessMemory,
  26837. /* nvvm_trunc_d */ DoesNotAccessMemory,
  26838. /* nvvm_trunc_f */ DoesNotAccessMemory,
  26839. /* nvvm_trunc_ftz_f */ DoesNotAccessMemory,
  26840. /* nvvm_ui2d_rm */ DoesNotAccessMemory,
  26841. /* nvvm_ui2d_rn */ DoesNotAccessMemory,
  26842. /* nvvm_ui2d_rp */ DoesNotAccessMemory,
  26843. /* nvvm_ui2d_rz */ DoesNotAccessMemory,
  26844. /* nvvm_ui2f_rm */ DoesNotAccessMemory,
  26845. /* nvvm_ui2f_rn */ DoesNotAccessMemory,
  26846. /* nvvm_ui2f_rp */ DoesNotAccessMemory,
  26847. /* nvvm_ui2f_rz */ DoesNotAccessMemory,
  26848. /* nvvm_ull2d_rm */ DoesNotAccessMemory,
  26849. /* nvvm_ull2d_rn */ DoesNotAccessMemory,
  26850. /* nvvm_ull2d_rp */ DoesNotAccessMemory,
  26851. /* nvvm_ull2d_rz */ DoesNotAccessMemory,
  26852. /* nvvm_ull2f_rm */ DoesNotAccessMemory,
  26853. /* nvvm_ull2f_rn */ DoesNotAccessMemory,
  26854. /* nvvm_ull2f_rp */ DoesNotAccessMemory,
  26855. /* nvvm_ull2f_rz */ DoesNotAccessMemory,
  26856. /* objectsize */ DoesNotAccessMemory,
  26857. /* pcmarker */ UnknownModRefBehavior,
  26858. /* pow */ OnlyReadsMemory,
  26859. /* powi */ OnlyReadsMemory,
  26860. /* ppc_altivec_dss */ UnknownModRefBehavior,
  26861. /* ppc_altivec_dssall */ UnknownModRefBehavior,
  26862. /* ppc_altivec_dst */ UnknownModRefBehavior,
  26863. /* ppc_altivec_dstst */ UnknownModRefBehavior,
  26864. /* ppc_altivec_dststt */ UnknownModRefBehavior,
  26865. /* ppc_altivec_dstt */ UnknownModRefBehavior,
  26866. /* ppc_altivec_lvebx */ OnlyReadsMemory,
  26867. /* ppc_altivec_lvehx */ OnlyReadsMemory,
  26868. /* ppc_altivec_lvewx */ OnlyReadsMemory,
  26869. /* ppc_altivec_lvsl */ DoesNotAccessMemory,
  26870. /* ppc_altivec_lvsr */ DoesNotAccessMemory,
  26871. /* ppc_altivec_lvx */ OnlyReadsMemory,
  26872. /* ppc_altivec_lvxl */ OnlyReadsMemory,
  26873. /* ppc_altivec_mfvscr */ OnlyReadsMemory,
  26874. /* ppc_altivec_mtvscr */ UnknownModRefBehavior,
  26875. /* ppc_altivec_stvebx */ UnknownModRefBehavior,
  26876. /* ppc_altivec_stvehx */ UnknownModRefBehavior,
  26877. /* ppc_altivec_stvewx */ UnknownModRefBehavior,
  26878. /* ppc_altivec_stvx */ UnknownModRefBehavior,
  26879. /* ppc_altivec_stvxl */ UnknownModRefBehavior,
  26880. /* ppc_altivec_vaddcuw */ DoesNotAccessMemory,
  26881. /* ppc_altivec_vaddsbs */ DoesNotAccessMemory,
  26882. /* ppc_altivec_vaddshs */ DoesNotAccessMemory,
  26883. /* ppc_altivec_vaddsws */ DoesNotAccessMemory,
  26884. /* ppc_altivec_vaddubs */ DoesNotAccessMemory,
  26885. /* ppc_altivec_vadduhs */ DoesNotAccessMemory,
  26886. /* ppc_altivec_vadduws */ DoesNotAccessMemory,
  26887. /* ppc_altivec_vavgsb */ DoesNotAccessMemory,
  26888. /* ppc_altivec_vavgsh */ DoesNotAccessMemory,
  26889. /* ppc_altivec_vavgsw */ DoesNotAccessMemory,
  26890. /* ppc_altivec_vavgub */ DoesNotAccessMemory,
  26891. /* ppc_altivec_vavguh */ DoesNotAccessMemory,
  26892. /* ppc_altivec_vavguw */ DoesNotAccessMemory,
  26893. /* ppc_altivec_vcfsx */ DoesNotAccessMemory,
  26894. /* ppc_altivec_vcfux */ DoesNotAccessMemory,
  26895. /* ppc_altivec_vcmpbfp */ DoesNotAccessMemory,
  26896. /* ppc_altivec_vcmpbfp_p */ DoesNotAccessMemory,
  26897. /* ppc_altivec_vcmpeqfp */ DoesNotAccessMemory,
  26898. /* ppc_altivec_vcmpeqfp_p */ DoesNotAccessMemory,
  26899. /* ppc_altivec_vcmpequb */ DoesNotAccessMemory,
  26900. /* ppc_altivec_vcmpequb_p */ DoesNotAccessMemory,
  26901. /* ppc_altivec_vcmpequh */ DoesNotAccessMemory,
  26902. /* ppc_altivec_vcmpequh_p */ DoesNotAccessMemory,
  26903. /* ppc_altivec_vcmpequw */ DoesNotAccessMemory,
  26904. /* ppc_altivec_vcmpequw_p */ DoesNotAccessMemory,
  26905. /* ppc_altivec_vcmpgefp */ DoesNotAccessMemory,
  26906. /* ppc_altivec_vcmpgefp_p */ DoesNotAccessMemory,
  26907. /* ppc_altivec_vcmpgtfp */ DoesNotAccessMemory,
  26908. /* ppc_altivec_vcmpgtfp_p */ DoesNotAccessMemory,
  26909. /* ppc_altivec_vcmpgtsb */ DoesNotAccessMemory,
  26910. /* ppc_altivec_vcmpgtsb_p */ DoesNotAccessMemory,
  26911. /* ppc_altivec_vcmpgtsh */ DoesNotAccessMemory,
  26912. /* ppc_altivec_vcmpgtsh_p */ DoesNotAccessMemory,
  26913. /* ppc_altivec_vcmpgtsw */ DoesNotAccessMemory,
  26914. /* ppc_altivec_vcmpgtsw_p */ DoesNotAccessMemory,
  26915. /* ppc_altivec_vcmpgtub */ DoesNotAccessMemory,
  26916. /* ppc_altivec_vcmpgtub_p */ DoesNotAccessMemory,
  26917. /* ppc_altivec_vcmpgtuh */ DoesNotAccessMemory,
  26918. /* ppc_altivec_vcmpgtuh_p */ DoesNotAccessMemory,
  26919. /* ppc_altivec_vcmpgtuw */ DoesNotAccessMemory,
  26920. /* ppc_altivec_vcmpgtuw_p */ DoesNotAccessMemory,
  26921. /* ppc_altivec_vctsxs */ DoesNotAccessMemory,
  26922. /* ppc_altivec_vctuxs */ DoesNotAccessMemory,
  26923. /* ppc_altivec_vexptefp */ DoesNotAccessMemory,
  26924. /* ppc_altivec_vlogefp */ DoesNotAccessMemory,
  26925. /* ppc_altivec_vmaddfp */ DoesNotAccessMemory,
  26926. /* ppc_altivec_vmaxfp */ DoesNotAccessMemory,
  26927. /* ppc_altivec_vmaxsb */ DoesNotAccessMemory,
  26928. /* ppc_altivec_vmaxsh */ DoesNotAccessMemory,
  26929. /* ppc_altivec_vmaxsw */ DoesNotAccessMemory,
  26930. /* ppc_altivec_vmaxub */ DoesNotAccessMemory,
  26931. /* ppc_altivec_vmaxuh */ DoesNotAccessMemory,
  26932. /* ppc_altivec_vmaxuw */ DoesNotAccessMemory,
  26933. /* ppc_altivec_vmhaddshs */ DoesNotAccessMemory,
  26934. /* ppc_altivec_vmhraddshs */ DoesNotAccessMemory,
  26935. /* ppc_altivec_vminfp */ DoesNotAccessMemory,
  26936. /* ppc_altivec_vminsb */ DoesNotAccessMemory,
  26937. /* ppc_altivec_vminsh */ DoesNotAccessMemory,
  26938. /* ppc_altivec_vminsw */ DoesNotAccessMemory,
  26939. /* ppc_altivec_vminub */ DoesNotAccessMemory,
  26940. /* ppc_altivec_vminuh */ DoesNotAccessMemory,
  26941. /* ppc_altivec_vminuw */ DoesNotAccessMemory,
  26942. /* ppc_altivec_vmladduhm */ DoesNotAccessMemory,
  26943. /* ppc_altivec_vmsummbm */ DoesNotAccessMemory,
  26944. /* ppc_altivec_vmsumshm */ DoesNotAccessMemory,
  26945. /* ppc_altivec_vmsumshs */ DoesNotAccessMemory,
  26946. /* ppc_altivec_vmsumubm */ DoesNotAccessMemory,
  26947. /* ppc_altivec_vmsumuhm */ DoesNotAccessMemory,
  26948. /* ppc_altivec_vmsumuhs */ DoesNotAccessMemory,
  26949. /* ppc_altivec_vmulesb */ DoesNotAccessMemory,
  26950. /* ppc_altivec_vmulesh */ DoesNotAccessMemory,
  26951. /* ppc_altivec_vmuleub */ DoesNotAccessMemory,
  26952. /* ppc_altivec_vmuleuh */ DoesNotAccessMemory,
  26953. /* ppc_altivec_vmulosb */ DoesNotAccessMemory,
  26954. /* ppc_altivec_vmulosh */ DoesNotAccessMemory,
  26955. /* ppc_altivec_vmuloub */ DoesNotAccessMemory,
  26956. /* ppc_altivec_vmulouh */ DoesNotAccessMemory,
  26957. /* ppc_altivec_vnmsubfp */ DoesNotAccessMemory,
  26958. /* ppc_altivec_vperm */ DoesNotAccessMemory,
  26959. /* ppc_altivec_vpkpx */ DoesNotAccessMemory,
  26960. /* ppc_altivec_vpkshss */ DoesNotAccessMemory,
  26961. /* ppc_altivec_vpkshus */ DoesNotAccessMemory,
  26962. /* ppc_altivec_vpkswss */ DoesNotAccessMemory,
  26963. /* ppc_altivec_vpkswus */ DoesNotAccessMemory,
  26964. /* ppc_altivec_vpkuhus */ DoesNotAccessMemory,
  26965. /* ppc_altivec_vpkuwus */ DoesNotAccessMemory,
  26966. /* ppc_altivec_vrefp */ DoesNotAccessMemory,
  26967. /* ppc_altivec_vrfim */ DoesNotAccessMemory,
  26968. /* ppc_altivec_vrfin */ DoesNotAccessMemory,
  26969. /* ppc_altivec_vrfip */ DoesNotAccessMemory,
  26970. /* ppc_altivec_vrfiz */ DoesNotAccessMemory,
  26971. /* ppc_altivec_vrlb */ DoesNotAccessMemory,
  26972. /* ppc_altivec_vrlh */ DoesNotAccessMemory,
  26973. /* ppc_altivec_vrlw */ DoesNotAccessMemory,
  26974. /* ppc_altivec_vrsqrtefp */ DoesNotAccessMemory,
  26975. /* ppc_altivec_vsel */ DoesNotAccessMemory,
  26976. /* ppc_altivec_vsl */ DoesNotAccessMemory,
  26977. /* ppc_altivec_vslb */ DoesNotAccessMemory,
  26978. /* ppc_altivec_vslh */ DoesNotAccessMemory,
  26979. /* ppc_altivec_vslo */ DoesNotAccessMemory,
  26980. /* ppc_altivec_vslw */ DoesNotAccessMemory,
  26981. /* ppc_altivec_vsr */ DoesNotAccessMemory,
  26982. /* ppc_altivec_vsrab */ DoesNotAccessMemory,
  26983. /* ppc_altivec_vsrah */ DoesNotAccessMemory,
  26984. /* ppc_altivec_vsraw */ DoesNotAccessMemory,
  26985. /* ppc_altivec_vsrb */ DoesNotAccessMemory,
  26986. /* ppc_altivec_vsrh */ DoesNotAccessMemory,
  26987. /* ppc_altivec_vsro */ DoesNotAccessMemory,
  26988. /* ppc_altivec_vsrw */ DoesNotAccessMemory,
  26989. /* ppc_altivec_vsubcuw */ DoesNotAccessMemory,
  26990. /* ppc_altivec_vsubsbs */ DoesNotAccessMemory,
  26991. /* ppc_altivec_vsubshs */ DoesNotAccessMemory,
  26992. /* ppc_altivec_vsubsws */ DoesNotAccessMemory,
  26993. /* ppc_altivec_vsububs */ DoesNotAccessMemory,
  26994. /* ppc_altivec_vsubuhs */ DoesNotAccessMemory,
  26995. /* ppc_altivec_vsubuws */ DoesNotAccessMemory,
  26996. /* ppc_altivec_vsum2sws */ DoesNotAccessMemory,
  26997. /* ppc_altivec_vsum4sbs */ DoesNotAccessMemory,
  26998. /* ppc_altivec_vsum4shs */ DoesNotAccessMemory,
  26999. /* ppc_altivec_vsum4ubs */ DoesNotAccessMemory,
  27000. /* ppc_altivec_vsumsws */ DoesNotAccessMemory,
  27001. /* ppc_altivec_vupkhpx */ DoesNotAccessMemory,
  27002. /* ppc_altivec_vupkhsb */ DoesNotAccessMemory,
  27003. /* ppc_altivec_vupkhsh */ DoesNotAccessMemory,
  27004. /* ppc_altivec_vupklpx */ DoesNotAccessMemory,
  27005. /* ppc_altivec_vupklsb */ DoesNotAccessMemory,
  27006. /* ppc_altivec_vupklsh */ DoesNotAccessMemory,
  27007. /* ppc_dcba */ UnknownModRefBehavior,
  27008. /* ppc_dcbf */ UnknownModRefBehavior,
  27009. /* ppc_dcbi */ UnknownModRefBehavior,
  27010. /* ppc_dcbst */ UnknownModRefBehavior,
  27011. /* ppc_dcbt */ UnknownModRefBehavior,
  27012. /* ppc_dcbtst */ UnknownModRefBehavior,
  27013. /* ppc_dcbz */ UnknownModRefBehavior,
  27014. /* ppc_dcbzl */ UnknownModRefBehavior,
  27015. /* ppc_sync */ UnknownModRefBehavior,
  27016. /* prefetch */ OnlyAccessesArgumentPointees,
  27017. /* ptr_annotation */ UnknownModRefBehavior,
  27018. /* ptx_bar_sync */ UnknownModRefBehavior,
  27019. /* ptx_read_clock */ DoesNotAccessMemory,
  27020. /* ptx_read_clock64 */ DoesNotAccessMemory,
  27021. /* ptx_read_ctaid_w */ DoesNotAccessMemory,
  27022. /* ptx_read_ctaid_x */ DoesNotAccessMemory,
  27023. /* ptx_read_ctaid_y */ DoesNotAccessMemory,
  27024. /* ptx_read_ctaid_z */ DoesNotAccessMemory,
  27025. /* ptx_read_gridid */ DoesNotAccessMemory,
  27026. /* ptx_read_laneid */ DoesNotAccessMemory,
  27027. /* ptx_read_lanemask_eq */ DoesNotAccessMemory,
  27028. /* ptx_read_lanemask_ge */ DoesNotAccessMemory,
  27029. /* ptx_read_lanemask_gt */ DoesNotAccessMemory,
  27030. /* ptx_read_lanemask_le */ DoesNotAccessMemory,
  27031. /* ptx_read_lanemask_lt */ DoesNotAccessMemory,
  27032. /* ptx_read_nctaid_w */ DoesNotAccessMemory,
  27033. /* ptx_read_nctaid_x */ DoesNotAccessMemory,
  27034. /* ptx_read_nctaid_y */ DoesNotAccessMemory,
  27035. /* ptx_read_nctaid_z */ DoesNotAccessMemory,
  27036. /* ptx_read_nsmid */ DoesNotAccessMemory,
  27037. /* ptx_read_ntid_w */ DoesNotAccessMemory,
  27038. /* ptx_read_ntid_x */ DoesNotAccessMemory,
  27039. /* ptx_read_ntid_y */ DoesNotAccessMemory,
  27040. /* ptx_read_ntid_z */ DoesNotAccessMemory,
  27041. /* ptx_read_nwarpid */ DoesNotAccessMemory,
  27042. /* ptx_read_pm0 */ DoesNotAccessMemory,
  27043. /* ptx_read_pm1 */ DoesNotAccessMemory,
  27044. /* ptx_read_pm2 */ DoesNotAccessMemory,
  27045. /* ptx_read_pm3 */ DoesNotAccessMemory,
  27046. /* ptx_read_smid */ DoesNotAccessMemory,
  27047. /* ptx_read_tid_w */ DoesNotAccessMemory,
  27048. /* ptx_read_tid_x */ DoesNotAccessMemory,
  27049. /* ptx_read_tid_y */ DoesNotAccessMemory,
  27050. /* ptx_read_tid_z */ DoesNotAccessMemory,
  27051. /* ptx_read_warpid */ DoesNotAccessMemory,
  27052. /* readcyclecounter */ UnknownModRefBehavior,
  27053. /* returnaddress */ DoesNotAccessMemory,
  27054. /* sadd_with_overflow */ DoesNotAccessMemory,
  27055. /* setjmp */ UnknownModRefBehavior,
  27056. /* siglongjmp */ UnknownModRefBehavior,
  27057. /* sigsetjmp */ UnknownModRefBehavior,
  27058. /* sin */ OnlyReadsMemory,
  27059. /* smul_with_overflow */ DoesNotAccessMemory,
  27060. /* spu_si_a */ DoesNotAccessMemory,
  27061. /* spu_si_addx */ DoesNotAccessMemory,
  27062. /* spu_si_ah */ DoesNotAccessMemory,
  27063. /* spu_si_ahi */ DoesNotAccessMemory,
  27064. /* spu_si_ai */ DoesNotAccessMemory,
  27065. /* spu_si_and */ DoesNotAccessMemory,
  27066. /* spu_si_andbi */ DoesNotAccessMemory,
  27067. /* spu_si_andc */ DoesNotAccessMemory,
  27068. /* spu_si_andhi */ DoesNotAccessMemory,
  27069. /* spu_si_andi */ DoesNotAccessMemory,
  27070. /* spu_si_bg */ DoesNotAccessMemory,
  27071. /* spu_si_bgx */ DoesNotAccessMemory,
  27072. /* spu_si_ceq */ DoesNotAccessMemory,
  27073. /* spu_si_ceqb */ DoesNotAccessMemory,
  27074. /* spu_si_ceqbi */ DoesNotAccessMemory,
  27075. /* spu_si_ceqh */ DoesNotAccessMemory,
  27076. /* spu_si_ceqhi */ DoesNotAccessMemory,
  27077. /* spu_si_ceqi */ DoesNotAccessMemory,
  27078. /* spu_si_cg */ DoesNotAccessMemory,
  27079. /* spu_si_cgt */ DoesNotAccessMemory,
  27080. /* spu_si_cgtb */ DoesNotAccessMemory,
  27081. /* spu_si_cgtbi */ DoesNotAccessMemory,
  27082. /* spu_si_cgth */ DoesNotAccessMemory,
  27083. /* spu_si_cgthi */ DoesNotAccessMemory,
  27084. /* spu_si_cgti */ DoesNotAccessMemory,
  27085. /* spu_si_cgx */ DoesNotAccessMemory,
  27086. /* spu_si_clgt */ DoesNotAccessMemory,
  27087. /* spu_si_clgtb */ DoesNotAccessMemory,
  27088. /* spu_si_clgtbi */ DoesNotAccessMemory,
  27089. /* spu_si_clgth */ DoesNotAccessMemory,
  27090. /* spu_si_clgthi */ DoesNotAccessMemory,
  27091. /* spu_si_clgti */ DoesNotAccessMemory,
  27092. /* spu_si_dfa */ DoesNotAccessMemory,
  27093. /* spu_si_dfm */ DoesNotAccessMemory,
  27094. /* spu_si_dfma */ DoesNotAccessMemory,
  27095. /* spu_si_dfms */ DoesNotAccessMemory,
  27096. /* spu_si_dfnma */ DoesNotAccessMemory,
  27097. /* spu_si_dfnms */ DoesNotAccessMemory,
  27098. /* spu_si_dfs */ DoesNotAccessMemory,
  27099. /* spu_si_fa */ DoesNotAccessMemory,
  27100. /* spu_si_fceq */ DoesNotAccessMemory,
  27101. /* spu_si_fcgt */ DoesNotAccessMemory,
  27102. /* spu_si_fcmeq */ DoesNotAccessMemory,
  27103. /* spu_si_fcmgt */ DoesNotAccessMemory,
  27104. /* spu_si_fm */ DoesNotAccessMemory,
  27105. /* spu_si_fma */ DoesNotAccessMemory,
  27106. /* spu_si_fms */ DoesNotAccessMemory,
  27107. /* spu_si_fnms */ DoesNotAccessMemory,
  27108. /* spu_si_fs */ DoesNotAccessMemory,
  27109. /* spu_si_fsmbi */ DoesNotAccessMemory,
  27110. /* spu_si_mpy */ DoesNotAccessMemory,
  27111. /* spu_si_mpya */ DoesNotAccessMemory,
  27112. /* spu_si_mpyh */ DoesNotAccessMemory,
  27113. /* spu_si_mpyhh */ DoesNotAccessMemory,
  27114. /* spu_si_mpyhha */ DoesNotAccessMemory,
  27115. /* spu_si_mpyhhau */ DoesNotAccessMemory,
  27116. /* spu_si_mpyhhu */ DoesNotAccessMemory,
  27117. /* spu_si_mpyi */ DoesNotAccessMemory,
  27118. /* spu_si_mpys */ DoesNotAccessMemory,
  27119. /* spu_si_mpyu */ DoesNotAccessMemory,
  27120. /* spu_si_mpyui */ DoesNotAccessMemory,
  27121. /* spu_si_nand */ DoesNotAccessMemory,
  27122. /* spu_si_nor */ DoesNotAccessMemory,
  27123. /* spu_si_or */ DoesNotAccessMemory,
  27124. /* spu_si_orbi */ DoesNotAccessMemory,
  27125. /* spu_si_orc */ DoesNotAccessMemory,
  27126. /* spu_si_orhi */ DoesNotAccessMemory,
  27127. /* spu_si_ori */ DoesNotAccessMemory,
  27128. /* spu_si_sf */ DoesNotAccessMemory,
  27129. /* spu_si_sfh */ DoesNotAccessMemory,
  27130. /* spu_si_sfhi */ DoesNotAccessMemory,
  27131. /* spu_si_sfi */ DoesNotAccessMemory,
  27132. /* spu_si_sfx */ DoesNotAccessMemory,
  27133. /* spu_si_shli */ DoesNotAccessMemory,
  27134. /* spu_si_shlqbi */ DoesNotAccessMemory,
  27135. /* spu_si_shlqbii */ DoesNotAccessMemory,
  27136. /* spu_si_shlqby */ DoesNotAccessMemory,
  27137. /* spu_si_shlqbyi */ DoesNotAccessMemory,
  27138. /* spu_si_xor */ DoesNotAccessMemory,
  27139. /* spu_si_xorbi */ DoesNotAccessMemory,
  27140. /* spu_si_xorhi */ DoesNotAccessMemory,
  27141. /* spu_si_xori */ DoesNotAccessMemory,
  27142. /* sqrt */ OnlyReadsMemory,
  27143. /* ssub_with_overflow */ DoesNotAccessMemory,
  27144. /* stackprotector */ UnknownModRefBehavior,
  27145. /* stackrestore */ UnknownModRefBehavior,
  27146. /* stacksave */ UnknownModRefBehavior,
  27147. /* trap */ UnknownModRefBehavior,
  27148. /* uadd_with_overflow */ DoesNotAccessMemory,
  27149. /* umul_with_overflow */ DoesNotAccessMemory,
  27150. /* usub_with_overflow */ DoesNotAccessMemory,
  27151. /* vacopy */ UnknownModRefBehavior,
  27152. /* vaend */ UnknownModRefBehavior,
  27153. /* var_annotation */ UnknownModRefBehavior,
  27154. /* vastart */ UnknownModRefBehavior,
  27155. /* x86_3dnow_pavgusb */ DoesNotAccessMemory,
  27156. /* x86_3dnow_pf2id */ DoesNotAccessMemory,
  27157. /* x86_3dnow_pfacc */ DoesNotAccessMemory,
  27158. /* x86_3dnow_pfadd */ DoesNotAccessMemory,
  27159. /* x86_3dnow_pfcmpeq */ DoesNotAccessMemory,
  27160. /* x86_3dnow_pfcmpge */ DoesNotAccessMemory,
  27161. /* x86_3dnow_pfcmpgt */ DoesNotAccessMemory,
  27162. /* x86_3dnow_pfmax */ DoesNotAccessMemory,
  27163. /* x86_3dnow_pfmin */ DoesNotAccessMemory,
  27164. /* x86_3dnow_pfmul */ DoesNotAccessMemory,
  27165. /* x86_3dnow_pfrcp */ DoesNotAccessMemory,
  27166. /* x86_3dnow_pfrcpit1 */ DoesNotAccessMemory,
  27167. /* x86_3dnow_pfrcpit2 */ DoesNotAccessMemory,
  27168. /* x86_3dnow_pfrsqit1 */ DoesNotAccessMemory,
  27169. /* x86_3dnow_pfrsqrt */ DoesNotAccessMemory,
  27170. /* x86_3dnow_pfsub */ DoesNotAccessMemory,
  27171. /* x86_3dnow_pfsubr */ DoesNotAccessMemory,
  27172. /* x86_3dnow_pi2fd */ DoesNotAccessMemory,
  27173. /* x86_3dnow_pmulhrw */ DoesNotAccessMemory,
  27174. /* x86_3dnowa_pf2iw */ DoesNotAccessMemory,
  27175. /* x86_3dnowa_pfnacc */ DoesNotAccessMemory,
  27176. /* x86_3dnowa_pfpnacc */ DoesNotAccessMemory,
  27177. /* x86_3dnowa_pi2fw */ DoesNotAccessMemory,
  27178. /* x86_3dnowa_pswapd */ DoesNotAccessMemory,
  27179. /* x86_aesni_aesdec */ DoesNotAccessMemory,
  27180. /* x86_aesni_aesdeclast */ DoesNotAccessMemory,
  27181. /* x86_aesni_aesenc */ DoesNotAccessMemory,
  27182. /* x86_aesni_aesenclast */ DoesNotAccessMemory,
  27183. /* x86_aesni_aesimc */ DoesNotAccessMemory,
  27184. /* x86_aesni_aeskeygenassist */ DoesNotAccessMemory,
  27185. /* x86_avx2_gather_d_d */ OnlyReadsMemory,
  27186. /* x86_avx2_gather_d_d_256 */ OnlyReadsMemory,
  27187. /* x86_avx2_gather_d_pd */ OnlyReadsMemory,
  27188. /* x86_avx2_gather_d_pd_256 */ OnlyReadsMemory,
  27189. /* x86_avx2_gather_d_ps */ OnlyReadsMemory,
  27190. /* x86_avx2_gather_d_ps_256 */ OnlyReadsMemory,
  27191. /* x86_avx2_gather_d_q */ OnlyReadsMemory,
  27192. /* x86_avx2_gather_d_q_256 */ OnlyReadsMemory,
  27193. /* x86_avx2_gather_q_d */ OnlyReadsMemory,
  27194. /* x86_avx2_gather_q_d_256 */ OnlyReadsMemory,
  27195. /* x86_avx2_gather_q_pd */ OnlyReadsMemory,
  27196. /* x86_avx2_gather_q_pd_256 */ OnlyReadsMemory,
  27197. /* x86_avx2_gather_q_ps */ OnlyReadsMemory,
  27198. /* x86_avx2_gather_q_ps_256 */ OnlyReadsMemory,
  27199. /* x86_avx2_gather_q_q */ OnlyReadsMemory,
  27200. /* x86_avx2_gather_q_q_256 */ OnlyReadsMemory,
  27201. /* x86_avx2_maskload_d */ OnlyReadsArgumentPointees,
  27202. /* x86_avx2_maskload_d_256 */ OnlyReadsArgumentPointees,
  27203. /* x86_avx2_maskload_q */ OnlyReadsArgumentPointees,
  27204. /* x86_avx2_maskload_q_256 */ OnlyReadsArgumentPointees,
  27205. /* x86_avx2_maskstore_d */ OnlyAccessesArgumentPointees,
  27206. /* x86_avx2_maskstore_d_256 */ OnlyAccessesArgumentPointees,
  27207. /* x86_avx2_maskstore_q */ OnlyAccessesArgumentPointees,
  27208. /* x86_avx2_maskstore_q_256 */ OnlyAccessesArgumentPointees,
  27209. /* x86_avx2_movntdqa */ OnlyReadsMemory,
  27210. /* x86_avx2_mpsadbw */ DoesNotAccessMemory,
  27211. /* x86_avx2_pabs_b */ DoesNotAccessMemory,
  27212. /* x86_avx2_pabs_d */ DoesNotAccessMemory,
  27213. /* x86_avx2_pabs_w */ DoesNotAccessMemory,
  27214. /* x86_avx2_packssdw */ DoesNotAccessMemory,
  27215. /* x86_avx2_packsswb */ DoesNotAccessMemory,
  27216. /* x86_avx2_packusdw */ DoesNotAccessMemory,
  27217. /* x86_avx2_packuswb */ DoesNotAccessMemory,
  27218. /* x86_avx2_padds_b */ DoesNotAccessMemory,
  27219. /* x86_avx2_padds_w */ DoesNotAccessMemory,
  27220. /* x86_avx2_paddus_b */ DoesNotAccessMemory,
  27221. /* x86_avx2_paddus_w */ DoesNotAccessMemory,
  27222. /* x86_avx2_pavg_b */ DoesNotAccessMemory,
  27223. /* x86_avx2_pavg_w */ DoesNotAccessMemory,
  27224. /* x86_avx2_pblendd_128 */ DoesNotAccessMemory,
  27225. /* x86_avx2_pblendd_256 */ DoesNotAccessMemory,
  27226. /* x86_avx2_pblendvb */ DoesNotAccessMemory,
  27227. /* x86_avx2_pblendw */ DoesNotAccessMemory,
  27228. /* x86_avx2_pbroadcastb_128 */ DoesNotAccessMemory,
  27229. /* x86_avx2_pbroadcastb_256 */ DoesNotAccessMemory,
  27230. /* x86_avx2_pbroadcastd_128 */ DoesNotAccessMemory,
  27231. /* x86_avx2_pbroadcastd_256 */ DoesNotAccessMemory,
  27232. /* x86_avx2_pbroadcastq_128 */ DoesNotAccessMemory,
  27233. /* x86_avx2_pbroadcastq_256 */ DoesNotAccessMemory,
  27234. /* x86_avx2_pbroadcastw_128 */ DoesNotAccessMemory,
  27235. /* x86_avx2_pbroadcastw_256 */ DoesNotAccessMemory,
  27236. /* x86_avx2_permd */ DoesNotAccessMemory,
  27237. /* x86_avx2_permps */ DoesNotAccessMemory,
  27238. /* x86_avx2_phadd_d */ DoesNotAccessMemory,
  27239. /* x86_avx2_phadd_sw */ DoesNotAccessMemory,
  27240. /* x86_avx2_phadd_w */ DoesNotAccessMemory,
  27241. /* x86_avx2_phsub_d */ DoesNotAccessMemory,
  27242. /* x86_avx2_phsub_sw */ DoesNotAccessMemory,
  27243. /* x86_avx2_phsub_w */ DoesNotAccessMemory,
  27244. /* x86_avx2_pmadd_ub_sw */ DoesNotAccessMemory,
  27245. /* x86_avx2_pmadd_wd */ DoesNotAccessMemory,
  27246. /* x86_avx2_pmaxs_b */ DoesNotAccessMemory,
  27247. /* x86_avx2_pmaxs_d */ DoesNotAccessMemory,
  27248. /* x86_avx2_pmaxs_w */ DoesNotAccessMemory,
  27249. /* x86_avx2_pmaxu_b */ DoesNotAccessMemory,
  27250. /* x86_avx2_pmaxu_d */ DoesNotAccessMemory,
  27251. /* x86_avx2_pmaxu_w */ DoesNotAccessMemory,
  27252. /* x86_avx2_pmins_b */ DoesNotAccessMemory,
  27253. /* x86_avx2_pmins_d */ DoesNotAccessMemory,
  27254. /* x86_avx2_pmins_w */ DoesNotAccessMemory,
  27255. /* x86_avx2_pminu_b */ DoesNotAccessMemory,
  27256. /* x86_avx2_pminu_d */ DoesNotAccessMemory,
  27257. /* x86_avx2_pminu_w */ DoesNotAccessMemory,
  27258. /* x86_avx2_pmovmskb */ DoesNotAccessMemory,
  27259. /* x86_avx2_pmovsxbd */ DoesNotAccessMemory,
  27260. /* x86_avx2_pmovsxbq */ DoesNotAccessMemory,
  27261. /* x86_avx2_pmovsxbw */ DoesNotAccessMemory,
  27262. /* x86_avx2_pmovsxdq */ DoesNotAccessMemory,
  27263. /* x86_avx2_pmovsxwd */ DoesNotAccessMemory,
  27264. /* x86_avx2_pmovsxwq */ DoesNotAccessMemory,
  27265. /* x86_avx2_pmovzxbd */ DoesNotAccessMemory,
  27266. /* x86_avx2_pmovzxbq */ DoesNotAccessMemory,
  27267. /* x86_avx2_pmovzxbw */ DoesNotAccessMemory,
  27268. /* x86_avx2_pmovzxdq */ DoesNotAccessMemory,
  27269. /* x86_avx2_pmovzxwd */ DoesNotAccessMemory,
  27270. /* x86_avx2_pmovzxwq */ DoesNotAccessMemory,
  27271. /* x86_avx2_pmul_dq */ DoesNotAccessMemory,
  27272. /* x86_avx2_pmul_hr_sw */ DoesNotAccessMemory,
  27273. /* x86_avx2_pmulh_w */ DoesNotAccessMemory,
  27274. /* x86_avx2_pmulhu_w */ DoesNotAccessMemory,
  27275. /* x86_avx2_pmulu_dq */ DoesNotAccessMemory,
  27276. /* x86_avx2_psad_bw */ DoesNotAccessMemory,
  27277. /* x86_avx2_pshuf_b */ DoesNotAccessMemory,
  27278. /* x86_avx2_psign_b */ DoesNotAccessMemory,
  27279. /* x86_avx2_psign_d */ DoesNotAccessMemory,
  27280. /* x86_avx2_psign_w */ DoesNotAccessMemory,
  27281. /* x86_avx2_psll_d */ DoesNotAccessMemory,
  27282. /* x86_avx2_psll_dq */ DoesNotAccessMemory,
  27283. /* x86_avx2_psll_dq_bs */ DoesNotAccessMemory,
  27284. /* x86_avx2_psll_q */ DoesNotAccessMemory,
  27285. /* x86_avx2_psll_w */ DoesNotAccessMemory,
  27286. /* x86_avx2_pslli_d */ DoesNotAccessMemory,
  27287. /* x86_avx2_pslli_q */ DoesNotAccessMemory,
  27288. /* x86_avx2_pslli_w */ DoesNotAccessMemory,
  27289. /* x86_avx2_psllv_d */ DoesNotAccessMemory,
  27290. /* x86_avx2_psllv_d_256 */ DoesNotAccessMemory,
  27291. /* x86_avx2_psllv_q */ DoesNotAccessMemory,
  27292. /* x86_avx2_psllv_q_256 */ DoesNotAccessMemory,
  27293. /* x86_avx2_psra_d */ DoesNotAccessMemory,
  27294. /* x86_avx2_psra_w */ DoesNotAccessMemory,
  27295. /* x86_avx2_psrai_d */ DoesNotAccessMemory,
  27296. /* x86_avx2_psrai_w */ DoesNotAccessMemory,
  27297. /* x86_avx2_psrav_d */ DoesNotAccessMemory,
  27298. /* x86_avx2_psrav_d_256 */ DoesNotAccessMemory,
  27299. /* x86_avx2_psrl_d */ DoesNotAccessMemory,
  27300. /* x86_avx2_psrl_dq */ DoesNotAccessMemory,
  27301. /* x86_avx2_psrl_dq_bs */ DoesNotAccessMemory,
  27302. /* x86_avx2_psrl_q */ DoesNotAccessMemory,
  27303. /* x86_avx2_psrl_w */ DoesNotAccessMemory,
  27304. /* x86_avx2_psrli_d */ DoesNotAccessMemory,
  27305. /* x86_avx2_psrli_q */ DoesNotAccessMemory,
  27306. /* x86_avx2_psrli_w */ DoesNotAccessMemory,
  27307. /* x86_avx2_psrlv_d */ DoesNotAccessMemory,
  27308. /* x86_avx2_psrlv_d_256 */ DoesNotAccessMemory,
  27309. /* x86_avx2_psrlv_q */ DoesNotAccessMemory,
  27310. /* x86_avx2_psrlv_q_256 */ DoesNotAccessMemory,
  27311. /* x86_avx2_psubs_b */ DoesNotAccessMemory,
  27312. /* x86_avx2_psubs_w */ DoesNotAccessMemory,
  27313. /* x86_avx2_psubus_b */ DoesNotAccessMemory,
  27314. /* x86_avx2_psubus_w */ DoesNotAccessMemory,
  27315. /* x86_avx2_vbroadcast_sd_pd_256 */ DoesNotAccessMemory,
  27316. /* x86_avx2_vbroadcast_ss_ps */ DoesNotAccessMemory,
  27317. /* x86_avx2_vbroadcast_ss_ps_256 */ DoesNotAccessMemory,
  27318. /* x86_avx2_vbroadcasti128 */ OnlyReadsArgumentPointees,
  27319. /* x86_avx2_vextracti128 */ DoesNotAccessMemory,
  27320. /* x86_avx2_vinserti128 */ DoesNotAccessMemory,
  27321. /* x86_avx2_vperm2i128 */ DoesNotAccessMemory,
  27322. /* x86_avx_addsub_pd_256 */ DoesNotAccessMemory,
  27323. /* x86_avx_addsub_ps_256 */ DoesNotAccessMemory,
  27324. /* x86_avx_blend_pd_256 */ DoesNotAccessMemory,
  27325. /* x86_avx_blend_ps_256 */ DoesNotAccessMemory,
  27326. /* x86_avx_blendv_pd_256 */ DoesNotAccessMemory,
  27327. /* x86_avx_blendv_ps_256 */ DoesNotAccessMemory,
  27328. /* x86_avx_cmp_pd_256 */ DoesNotAccessMemory,
  27329. /* x86_avx_cmp_ps_256 */ DoesNotAccessMemory,
  27330. /* x86_avx_cvt_pd2_ps_256 */ DoesNotAccessMemory,
  27331. /* x86_avx_cvt_pd2dq_256 */ DoesNotAccessMemory,
  27332. /* x86_avx_cvt_ps2_pd_256 */ DoesNotAccessMemory,
  27333. /* x86_avx_cvt_ps2dq_256 */ DoesNotAccessMemory,
  27334. /* x86_avx_cvtdq2_pd_256 */ DoesNotAccessMemory,
  27335. /* x86_avx_cvtdq2_ps_256 */ DoesNotAccessMemory,
  27336. /* x86_avx_cvtt_pd2dq_256 */ DoesNotAccessMemory,
  27337. /* x86_avx_cvtt_ps2dq_256 */ DoesNotAccessMemory,
  27338. /* x86_avx_dp_ps_256 */ DoesNotAccessMemory,
  27339. /* x86_avx_hadd_pd_256 */ DoesNotAccessMemory,
  27340. /* x86_avx_hadd_ps_256 */ DoesNotAccessMemory,
  27341. /* x86_avx_hsub_pd_256 */ DoesNotAccessMemory,
  27342. /* x86_avx_hsub_ps_256 */ DoesNotAccessMemory,
  27343. /* x86_avx_ldu_dq_256 */ OnlyReadsMemory,
  27344. /* x86_avx_maskload_pd */ OnlyReadsArgumentPointees,
  27345. /* x86_avx_maskload_pd_256 */ OnlyReadsArgumentPointees,
  27346. /* x86_avx_maskload_ps */ OnlyReadsArgumentPointees,
  27347. /* x86_avx_maskload_ps_256 */ OnlyReadsArgumentPointees,
  27348. /* x86_avx_maskstore_pd */ OnlyAccessesArgumentPointees,
  27349. /* x86_avx_maskstore_pd_256 */ OnlyAccessesArgumentPointees,
  27350. /* x86_avx_maskstore_ps */ OnlyAccessesArgumentPointees,
  27351. /* x86_avx_maskstore_ps_256 */ OnlyAccessesArgumentPointees,
  27352. /* x86_avx_max_pd_256 */ DoesNotAccessMemory,
  27353. /* x86_avx_max_ps_256 */ DoesNotAccessMemory,
  27354. /* x86_avx_min_pd_256 */ DoesNotAccessMemory,
  27355. /* x86_avx_min_ps_256 */ DoesNotAccessMemory,
  27356. /* x86_avx_movmsk_pd_256 */ DoesNotAccessMemory,
  27357. /* x86_avx_movmsk_ps_256 */ DoesNotAccessMemory,
  27358. /* x86_avx_ptestc_256 */ DoesNotAccessMemory,
  27359. /* x86_avx_ptestnzc_256 */ DoesNotAccessMemory,
  27360. /* x86_avx_ptestz_256 */ DoesNotAccessMemory,
  27361. /* x86_avx_rcp_ps_256 */ DoesNotAccessMemory,
  27362. /* x86_avx_round_pd_256 */ DoesNotAccessMemory,
  27363. /* x86_avx_round_ps_256 */ DoesNotAccessMemory,
  27364. /* x86_avx_rsqrt_ps_256 */ DoesNotAccessMemory,
  27365. /* x86_avx_sqrt_pd_256 */ DoesNotAccessMemory,
  27366. /* x86_avx_sqrt_ps_256 */ DoesNotAccessMemory,
  27367. /* x86_avx_storeu_dq_256 */ OnlyAccessesArgumentPointees,
  27368. /* x86_avx_storeu_pd_256 */ OnlyAccessesArgumentPointees,
  27369. /* x86_avx_storeu_ps_256 */ OnlyAccessesArgumentPointees,
  27370. /* x86_avx_vbroadcast_sd_256 */ OnlyReadsArgumentPointees,
  27371. /* x86_avx_vbroadcast_ss */ OnlyReadsArgumentPointees,
  27372. /* x86_avx_vbroadcast_ss_256 */ OnlyReadsArgumentPointees,
  27373. /* x86_avx_vbroadcastf128_pd_256 */ OnlyReadsArgumentPointees,
  27374. /* x86_avx_vbroadcastf128_ps_256 */ OnlyReadsArgumentPointees,
  27375. /* x86_avx_vextractf128_pd_256 */ DoesNotAccessMemory,
  27376. /* x86_avx_vextractf128_ps_256 */ DoesNotAccessMemory,
  27377. /* x86_avx_vextractf128_si_256 */ DoesNotAccessMemory,
  27378. /* x86_avx_vinsertf128_pd_256 */ DoesNotAccessMemory,
  27379. /* x86_avx_vinsertf128_ps_256 */ DoesNotAccessMemory,
  27380. /* x86_avx_vinsertf128_si_256 */ DoesNotAccessMemory,
  27381. /* x86_avx_vperm2f128_pd_256 */ DoesNotAccessMemory,
  27382. /* x86_avx_vperm2f128_ps_256 */ DoesNotAccessMemory,
  27383. /* x86_avx_vperm2f128_si_256 */ DoesNotAccessMemory,
  27384. /* x86_avx_vpermilvar_pd */ DoesNotAccessMemory,
  27385. /* x86_avx_vpermilvar_pd_256 */ DoesNotAccessMemory,
  27386. /* x86_avx_vpermilvar_ps */ DoesNotAccessMemory,
  27387. /* x86_avx_vpermilvar_ps_256 */ DoesNotAccessMemory,
  27388. /* x86_avx_vtestc_pd */ DoesNotAccessMemory,
  27389. /* x86_avx_vtestc_pd_256 */ DoesNotAccessMemory,
  27390. /* x86_avx_vtestc_ps */ DoesNotAccessMemory,
  27391. /* x86_avx_vtestc_ps_256 */ DoesNotAccessMemory,
  27392. /* x86_avx_vtestnzc_pd */ DoesNotAccessMemory,
  27393. /* x86_avx_vtestnzc_pd_256 */ DoesNotAccessMemory,
  27394. /* x86_avx_vtestnzc_ps */ DoesNotAccessMemory,
  27395. /* x86_avx_vtestnzc_ps_256 */ DoesNotAccessMemory,
  27396. /* x86_avx_vtestz_pd */ DoesNotAccessMemory,
  27397. /* x86_avx_vtestz_pd_256 */ DoesNotAccessMemory,
  27398. /* x86_avx_vtestz_ps */ DoesNotAccessMemory,
  27399. /* x86_avx_vtestz_ps_256 */ DoesNotAccessMemory,
  27400. /* x86_avx_vzeroall */ UnknownModRefBehavior,
  27401. /* x86_avx_vzeroupper */ UnknownModRefBehavior,
  27402. /* x86_bmi_bextr_32 */ DoesNotAccessMemory,
  27403. /* x86_bmi_bextr_64 */ DoesNotAccessMemory,
  27404. /* x86_bmi_bzhi_32 */ DoesNotAccessMemory,
  27405. /* x86_bmi_bzhi_64 */ DoesNotAccessMemory,
  27406. /* x86_bmi_pdep_32 */ DoesNotAccessMemory,
  27407. /* x86_bmi_pdep_64 */ DoesNotAccessMemory,
  27408. /* x86_bmi_pext_32 */ DoesNotAccessMemory,
  27409. /* x86_bmi_pext_64 */ DoesNotAccessMemory,
  27410. /* x86_fma_vfmadd_pd */ DoesNotAccessMemory,
  27411. /* x86_fma_vfmadd_pd_256 */ DoesNotAccessMemory,
  27412. /* x86_fma_vfmadd_ps */ DoesNotAccessMemory,
  27413. /* x86_fma_vfmadd_ps_256 */ DoesNotAccessMemory,
  27414. /* x86_fma_vfmadd_sd */ DoesNotAccessMemory,
  27415. /* x86_fma_vfmadd_ss */ DoesNotAccessMemory,
  27416. /* x86_fma_vfmaddsub_pd */ DoesNotAccessMemory,
  27417. /* x86_fma_vfmaddsub_pd_256 */ DoesNotAccessMemory,
  27418. /* x86_fma_vfmaddsub_ps */ DoesNotAccessMemory,
  27419. /* x86_fma_vfmaddsub_ps_256 */ DoesNotAccessMemory,
  27420. /* x86_fma_vfmsub_pd */ DoesNotAccessMemory,
  27421. /* x86_fma_vfmsub_pd_256 */ DoesNotAccessMemory,
  27422. /* x86_fma_vfmsub_ps */ DoesNotAccessMemory,
  27423. /* x86_fma_vfmsub_ps_256 */ DoesNotAccessMemory,
  27424. /* x86_fma_vfmsub_sd */ DoesNotAccessMemory,
  27425. /* x86_fma_vfmsub_ss */ DoesNotAccessMemory,
  27426. /* x86_fma_vfmsubadd_pd */ DoesNotAccessMemory,
  27427. /* x86_fma_vfmsubadd_pd_256 */ DoesNotAccessMemory,
  27428. /* x86_fma_vfmsubadd_ps */ DoesNotAccessMemory,
  27429. /* x86_fma_vfmsubadd_ps_256 */ DoesNotAccessMemory,
  27430. /* x86_fma_vfnmadd_pd */ DoesNotAccessMemory,
  27431. /* x86_fma_vfnmadd_pd_256 */ DoesNotAccessMemory,
  27432. /* x86_fma_vfnmadd_ps */ DoesNotAccessMemory,
  27433. /* x86_fma_vfnmadd_ps_256 */ DoesNotAccessMemory,
  27434. /* x86_fma_vfnmadd_sd */ DoesNotAccessMemory,
  27435. /* x86_fma_vfnmadd_ss */ DoesNotAccessMemory,
  27436. /* x86_fma_vfnmsub_pd */ DoesNotAccessMemory,
  27437. /* x86_fma_vfnmsub_pd_256 */ DoesNotAccessMemory,
  27438. /* x86_fma_vfnmsub_ps */ DoesNotAccessMemory,
  27439. /* x86_fma_vfnmsub_ps_256 */ DoesNotAccessMemory,
  27440. /* x86_fma_vfnmsub_sd */ DoesNotAccessMemory,
  27441. /* x86_fma_vfnmsub_ss */ DoesNotAccessMemory,
  27442. /* x86_int */ UnknownModRefBehavior,
  27443. /* x86_mmx_emms */ UnknownModRefBehavior,
  27444. /* x86_mmx_femms */ UnknownModRefBehavior,
  27445. /* x86_mmx_maskmovq */ UnknownModRefBehavior,
  27446. /* x86_mmx_movnt_dq */ UnknownModRefBehavior,
  27447. /* x86_mmx_packssdw */ DoesNotAccessMemory,
  27448. /* x86_mmx_packsswb */ DoesNotAccessMemory,
  27449. /* x86_mmx_packuswb */ DoesNotAccessMemory,
  27450. /* x86_mmx_padd_b */ DoesNotAccessMemory,
  27451. /* x86_mmx_padd_d */ DoesNotAccessMemory,
  27452. /* x86_mmx_padd_q */ DoesNotAccessMemory,
  27453. /* x86_mmx_padd_w */ DoesNotAccessMemory,
  27454. /* x86_mmx_padds_b */ DoesNotAccessMemory,
  27455. /* x86_mmx_padds_w */ DoesNotAccessMemory,
  27456. /* x86_mmx_paddus_b */ DoesNotAccessMemory,
  27457. /* x86_mmx_paddus_w */ DoesNotAccessMemory,
  27458. /* x86_mmx_palignr_b */ DoesNotAccessMemory,
  27459. /* x86_mmx_pand */ DoesNotAccessMemory,
  27460. /* x86_mmx_pandn */ DoesNotAccessMemory,
  27461. /* x86_mmx_pavg_b */ DoesNotAccessMemory,
  27462. /* x86_mmx_pavg_w */ DoesNotAccessMemory,
  27463. /* x86_mmx_pcmpeq_b */ DoesNotAccessMemory,
  27464. /* x86_mmx_pcmpeq_d */ DoesNotAccessMemory,
  27465. /* x86_mmx_pcmpeq_w */ DoesNotAccessMemory,
  27466. /* x86_mmx_pcmpgt_b */ DoesNotAccessMemory,
  27467. /* x86_mmx_pcmpgt_d */ DoesNotAccessMemory,
  27468. /* x86_mmx_pcmpgt_w */ DoesNotAccessMemory,
  27469. /* x86_mmx_pextr_w */ DoesNotAccessMemory,
  27470. /* x86_mmx_pinsr_w */ DoesNotAccessMemory,
  27471. /* x86_mmx_pmadd_wd */ DoesNotAccessMemory,
  27472. /* x86_mmx_pmaxs_w */ DoesNotAccessMemory,
  27473. /* x86_mmx_pmaxu_b */ DoesNotAccessMemory,
  27474. /* x86_mmx_pmins_w */ DoesNotAccessMemory,
  27475. /* x86_mmx_pminu_b */ DoesNotAccessMemory,
  27476. /* x86_mmx_pmovmskb */ DoesNotAccessMemory,
  27477. /* x86_mmx_pmulh_w */ DoesNotAccessMemory,
  27478. /* x86_mmx_pmulhu_w */ DoesNotAccessMemory,
  27479. /* x86_mmx_pmull_w */ DoesNotAccessMemory,
  27480. /* x86_mmx_pmulu_dq */ DoesNotAccessMemory,
  27481. /* x86_mmx_por */ DoesNotAccessMemory,
  27482. /* x86_mmx_psad_bw */ DoesNotAccessMemory,
  27483. /* x86_mmx_psll_d */ DoesNotAccessMemory,
  27484. /* x86_mmx_psll_q */ DoesNotAccessMemory,
  27485. /* x86_mmx_psll_w */ DoesNotAccessMemory,
  27486. /* x86_mmx_pslli_d */ DoesNotAccessMemory,
  27487. /* x86_mmx_pslli_q */ DoesNotAccessMemory,
  27488. /* x86_mmx_pslli_w */ DoesNotAccessMemory,
  27489. /* x86_mmx_psra_d */ DoesNotAccessMemory,
  27490. /* x86_mmx_psra_w */ DoesNotAccessMemory,
  27491. /* x86_mmx_psrai_d */ DoesNotAccessMemory,
  27492. /* x86_mmx_psrai_w */ DoesNotAccessMemory,
  27493. /* x86_mmx_psrl_d */ DoesNotAccessMemory,
  27494. /* x86_mmx_psrl_q */ DoesNotAccessMemory,
  27495. /* x86_mmx_psrl_w */ DoesNotAccessMemory,
  27496. /* x86_mmx_psrli_d */ DoesNotAccessMemory,
  27497. /* x86_mmx_psrli_q */ DoesNotAccessMemory,
  27498. /* x86_mmx_psrli_w */ DoesNotAccessMemory,
  27499. /* x86_mmx_psub_b */ DoesNotAccessMemory,
  27500. /* x86_mmx_psub_d */ DoesNotAccessMemory,
  27501. /* x86_mmx_psub_q */ DoesNotAccessMemory,
  27502. /* x86_mmx_psub_w */ DoesNotAccessMemory,
  27503. /* x86_mmx_psubs_b */ DoesNotAccessMemory,
  27504. /* x86_mmx_psubs_w */ DoesNotAccessMemory,
  27505. /* x86_mmx_psubus_b */ DoesNotAccessMemory,
  27506. /* x86_mmx_psubus_w */ DoesNotAccessMemory,
  27507. /* x86_mmx_punpckhbw */ DoesNotAccessMemory,
  27508. /* x86_mmx_punpckhdq */ DoesNotAccessMemory,
  27509. /* x86_mmx_punpckhwd */ DoesNotAccessMemory,
  27510. /* x86_mmx_punpcklbw */ DoesNotAccessMemory,
  27511. /* x86_mmx_punpckldq */ DoesNotAccessMemory,
  27512. /* x86_mmx_punpcklwd */ DoesNotAccessMemory,
  27513. /* x86_mmx_pxor */ DoesNotAccessMemory,
  27514. /* x86_pclmulqdq */ DoesNotAccessMemory,
  27515. /* x86_rdfsbase_32 */ UnknownModRefBehavior,
  27516. /* x86_rdfsbase_64 */ UnknownModRefBehavior,
  27517. /* x86_rdgsbase_32 */ UnknownModRefBehavior,
  27518. /* x86_rdgsbase_64 */ UnknownModRefBehavior,
  27519. /* x86_rdrand_16 */ UnknownModRefBehavior,
  27520. /* x86_rdrand_32 */ UnknownModRefBehavior,
  27521. /* x86_rdrand_64 */ UnknownModRefBehavior,
  27522. /* x86_sse2_add_sd */ DoesNotAccessMemory,
  27523. /* x86_sse2_clflush */ UnknownModRefBehavior,
  27524. /* x86_sse2_cmp_pd */ DoesNotAccessMemory,
  27525. /* x86_sse2_cmp_sd */ DoesNotAccessMemory,
  27526. /* x86_sse2_comieq_sd */ DoesNotAccessMemory,
  27527. /* x86_sse2_comige_sd */ DoesNotAccessMemory,
  27528. /* x86_sse2_comigt_sd */ DoesNotAccessMemory,
  27529. /* x86_sse2_comile_sd */ DoesNotAccessMemory,
  27530. /* x86_sse2_comilt_sd */ DoesNotAccessMemory,
  27531. /* x86_sse2_comineq_sd */ DoesNotAccessMemory,
  27532. /* x86_sse2_cvtdq2pd */ DoesNotAccessMemory,
  27533. /* x86_sse2_cvtdq2ps */ DoesNotAccessMemory,
  27534. /* x86_sse2_cvtpd2dq */ DoesNotAccessMemory,
  27535. /* x86_sse2_cvtpd2ps */ DoesNotAccessMemory,
  27536. /* x86_sse2_cvtps2dq */ DoesNotAccessMemory,
  27537. /* x86_sse2_cvtps2pd */ DoesNotAccessMemory,
  27538. /* x86_sse2_cvtsd2si */ DoesNotAccessMemory,
  27539. /* x86_sse2_cvtsd2si64 */ DoesNotAccessMemory,
  27540. /* x86_sse2_cvtsd2ss */ DoesNotAccessMemory,
  27541. /* x86_sse2_cvtsi2sd */ DoesNotAccessMemory,
  27542. /* x86_sse2_cvtsi642sd */ DoesNotAccessMemory,
  27543. /* x86_sse2_cvtss2sd */ DoesNotAccessMemory,
  27544. /* x86_sse2_cvttpd2dq */ DoesNotAccessMemory,
  27545. /* x86_sse2_cvttps2dq */ DoesNotAccessMemory,
  27546. /* x86_sse2_cvttsd2si */ DoesNotAccessMemory,
  27547. /* x86_sse2_cvttsd2si64 */ DoesNotAccessMemory,
  27548. /* x86_sse2_div_sd */ DoesNotAccessMemory,
  27549. /* x86_sse2_lfence */ UnknownModRefBehavior,
  27550. /* x86_sse2_maskmov_dqu */ UnknownModRefBehavior,
  27551. /* x86_sse2_max_pd */ DoesNotAccessMemory,
  27552. /* x86_sse2_max_sd */ DoesNotAccessMemory,
  27553. /* x86_sse2_mfence */ UnknownModRefBehavior,
  27554. /* x86_sse2_min_pd */ DoesNotAccessMemory,
  27555. /* x86_sse2_min_sd */ DoesNotAccessMemory,
  27556. /* x86_sse2_movmsk_pd */ DoesNotAccessMemory,
  27557. /* x86_sse2_mul_sd */ DoesNotAccessMemory,
  27558. /* x86_sse2_packssdw_128 */ DoesNotAccessMemory,
  27559. /* x86_sse2_packsswb_128 */ DoesNotAccessMemory,
  27560. /* x86_sse2_packuswb_128 */ DoesNotAccessMemory,
  27561. /* x86_sse2_padds_b */ DoesNotAccessMemory,
  27562. /* x86_sse2_padds_w */ DoesNotAccessMemory,
  27563. /* x86_sse2_paddus_b */ DoesNotAccessMemory,
  27564. /* x86_sse2_paddus_w */ DoesNotAccessMemory,
  27565. /* x86_sse2_pavg_b */ DoesNotAccessMemory,
  27566. /* x86_sse2_pavg_w */ DoesNotAccessMemory,
  27567. /* x86_sse2_pmadd_wd */ DoesNotAccessMemory,
  27568. /* x86_sse2_pmaxs_w */ DoesNotAccessMemory,
  27569. /* x86_sse2_pmaxu_b */ DoesNotAccessMemory,
  27570. /* x86_sse2_pmins_w */ DoesNotAccessMemory,
  27571. /* x86_sse2_pminu_b */ DoesNotAccessMemory,
  27572. /* x86_sse2_pmovmskb_128 */ DoesNotAccessMemory,
  27573. /* x86_sse2_pmulh_w */ DoesNotAccessMemory,
  27574. /* x86_sse2_pmulhu_w */ DoesNotAccessMemory,
  27575. /* x86_sse2_pmulu_dq */ DoesNotAccessMemory,
  27576. /* x86_sse2_psad_bw */ DoesNotAccessMemory,
  27577. /* x86_sse2_psll_d */ DoesNotAccessMemory,
  27578. /* x86_sse2_psll_dq */ DoesNotAccessMemory,
  27579. /* x86_sse2_psll_dq_bs */ DoesNotAccessMemory,
  27580. /* x86_sse2_psll_q */ DoesNotAccessMemory,
  27581. /* x86_sse2_psll_w */ DoesNotAccessMemory,
  27582. /* x86_sse2_pslli_d */ DoesNotAccessMemory,
  27583. /* x86_sse2_pslli_q */ DoesNotAccessMemory,
  27584. /* x86_sse2_pslli_w */ DoesNotAccessMemory,
  27585. /* x86_sse2_psra_d */ DoesNotAccessMemory,
  27586. /* x86_sse2_psra_w */ DoesNotAccessMemory,
  27587. /* x86_sse2_psrai_d */ DoesNotAccessMemory,
  27588. /* x86_sse2_psrai_w */ DoesNotAccessMemory,
  27589. /* x86_sse2_psrl_d */ DoesNotAccessMemory,
  27590. /* x86_sse2_psrl_dq */ DoesNotAccessMemory,
  27591. /* x86_sse2_psrl_dq_bs */ DoesNotAccessMemory,
  27592. /* x86_sse2_psrl_q */ DoesNotAccessMemory,
  27593. /* x86_sse2_psrl_w */ DoesNotAccessMemory,
  27594. /* x86_sse2_psrli_d */ DoesNotAccessMemory,
  27595. /* x86_sse2_psrli_q */ DoesNotAccessMemory,
  27596. /* x86_sse2_psrli_w */ DoesNotAccessMemory,
  27597. /* x86_sse2_psubs_b */ DoesNotAccessMemory,
  27598. /* x86_sse2_psubs_w */ DoesNotAccessMemory,
  27599. /* x86_sse2_psubus_b */ DoesNotAccessMemory,
  27600. /* x86_sse2_psubus_w */ DoesNotAccessMemory,
  27601. /* x86_sse2_sqrt_pd */ DoesNotAccessMemory,
  27602. /* x86_sse2_sqrt_sd */ DoesNotAccessMemory,
  27603. /* x86_sse2_storel_dq */ OnlyAccessesArgumentPointees,
  27604. /* x86_sse2_storeu_dq */ OnlyAccessesArgumentPointees,
  27605. /* x86_sse2_storeu_pd */ OnlyAccessesArgumentPointees,
  27606. /* x86_sse2_sub_sd */ DoesNotAccessMemory,
  27607. /* x86_sse2_ucomieq_sd */ DoesNotAccessMemory,
  27608. /* x86_sse2_ucomige_sd */ DoesNotAccessMemory,
  27609. /* x86_sse2_ucomigt_sd */ DoesNotAccessMemory,
  27610. /* x86_sse2_ucomile_sd */ DoesNotAccessMemory,
  27611. /* x86_sse2_ucomilt_sd */ DoesNotAccessMemory,
  27612. /* x86_sse2_ucomineq_sd */ DoesNotAccessMemory,
  27613. /* x86_sse3_addsub_pd */ DoesNotAccessMemory,
  27614. /* x86_sse3_addsub_ps */ DoesNotAccessMemory,
  27615. /* x86_sse3_hadd_pd */ DoesNotAccessMemory,
  27616. /* x86_sse3_hadd_ps */ DoesNotAccessMemory,
  27617. /* x86_sse3_hsub_pd */ DoesNotAccessMemory,
  27618. /* x86_sse3_hsub_ps */ DoesNotAccessMemory,
  27619. /* x86_sse3_ldu_dq */ OnlyReadsMemory,
  27620. /* x86_sse3_monitor */ UnknownModRefBehavior,
  27621. /* x86_sse3_mwait */ UnknownModRefBehavior,
  27622. /* x86_sse41_blendpd */ DoesNotAccessMemory,
  27623. /* x86_sse41_blendps */ DoesNotAccessMemory,
  27624. /* x86_sse41_blendvpd */ DoesNotAccessMemory,
  27625. /* x86_sse41_blendvps */ DoesNotAccessMemory,
  27626. /* x86_sse41_dppd */ DoesNotAccessMemory,
  27627. /* x86_sse41_dpps */ DoesNotAccessMemory,
  27628. /* x86_sse41_extractps */ DoesNotAccessMemory,
  27629. /* x86_sse41_insertps */ DoesNotAccessMemory,
  27630. /* x86_sse41_movntdqa */ OnlyReadsMemory,
  27631. /* x86_sse41_mpsadbw */ DoesNotAccessMemory,
  27632. /* x86_sse41_packusdw */ DoesNotAccessMemory,
  27633. /* x86_sse41_pblendvb */ DoesNotAccessMemory,
  27634. /* x86_sse41_pblendw */ DoesNotAccessMemory,
  27635. /* x86_sse41_pextrb */ DoesNotAccessMemory,
  27636. /* x86_sse41_pextrd */ DoesNotAccessMemory,
  27637. /* x86_sse41_pextrq */ DoesNotAccessMemory,
  27638. /* x86_sse41_phminposuw */ DoesNotAccessMemory,
  27639. /* x86_sse41_pmaxsb */ DoesNotAccessMemory,
  27640. /* x86_sse41_pmaxsd */ DoesNotAccessMemory,
  27641. /* x86_sse41_pmaxud */ DoesNotAccessMemory,
  27642. /* x86_sse41_pmaxuw */ DoesNotAccessMemory,
  27643. /* x86_sse41_pminsb */ DoesNotAccessMemory,
  27644. /* x86_sse41_pminsd */ DoesNotAccessMemory,
  27645. /* x86_sse41_pminud */ DoesNotAccessMemory,
  27646. /* x86_sse41_pminuw */ DoesNotAccessMemory,
  27647. /* x86_sse41_pmovsxbd */ DoesNotAccessMemory,
  27648. /* x86_sse41_pmovsxbq */ DoesNotAccessMemory,
  27649. /* x86_sse41_pmovsxbw */ DoesNotAccessMemory,
  27650. /* x86_sse41_pmovsxdq */ DoesNotAccessMemory,
  27651. /* x86_sse41_pmovsxwd */ DoesNotAccessMemory,
  27652. /* x86_sse41_pmovsxwq */ DoesNotAccessMemory,
  27653. /* x86_sse41_pmovzxbd */ DoesNotAccessMemory,
  27654. /* x86_sse41_pmovzxbq */ DoesNotAccessMemory,
  27655. /* x86_sse41_pmovzxbw */ DoesNotAccessMemory,
  27656. /* x86_sse41_pmovzxdq */ DoesNotAccessMemory,
  27657. /* x86_sse41_pmovzxwd */ DoesNotAccessMemory,
  27658. /* x86_sse41_pmovzxwq */ DoesNotAccessMemory,
  27659. /* x86_sse41_pmuldq */ DoesNotAccessMemory,
  27660. /* x86_sse41_ptestc */ DoesNotAccessMemory,
  27661. /* x86_sse41_ptestnzc */ DoesNotAccessMemory,
  27662. /* x86_sse41_ptestz */ DoesNotAccessMemory,
  27663. /* x86_sse41_round_pd */ DoesNotAccessMemory,
  27664. /* x86_sse41_round_ps */ DoesNotAccessMemory,
  27665. /* x86_sse41_round_sd */ DoesNotAccessMemory,
  27666. /* x86_sse41_round_ss */ DoesNotAccessMemory,
  27667. /* x86_sse42_crc32_32_16 */ DoesNotAccessMemory,
  27668. /* x86_sse42_crc32_32_32 */ DoesNotAccessMemory,
  27669. /* x86_sse42_crc32_32_8 */ DoesNotAccessMemory,
  27670. /* x86_sse42_crc32_64_64 */ DoesNotAccessMemory,
  27671. /* x86_sse42_crc32_64_8 */ DoesNotAccessMemory,
  27672. /* x86_sse42_pcmpestri128 */ DoesNotAccessMemory,
  27673. /* x86_sse42_pcmpestria128 */ DoesNotAccessMemory,
  27674. /* x86_sse42_pcmpestric128 */ DoesNotAccessMemory,
  27675. /* x86_sse42_pcmpestrio128 */ DoesNotAccessMemory,
  27676. /* x86_sse42_pcmpestris128 */ DoesNotAccessMemory,
  27677. /* x86_sse42_pcmpestriz128 */ DoesNotAccessMemory,
  27678. /* x86_sse42_pcmpestrm128 */ DoesNotAccessMemory,
  27679. /* x86_sse42_pcmpistri128 */ DoesNotAccessMemory,
  27680. /* x86_sse42_pcmpistria128 */ DoesNotAccessMemory,
  27681. /* x86_sse42_pcmpistric128 */ DoesNotAccessMemory,
  27682. /* x86_sse42_pcmpistrio128 */ DoesNotAccessMemory,
  27683. /* x86_sse42_pcmpistris128 */ DoesNotAccessMemory,
  27684. /* x86_sse42_pcmpistriz128 */ DoesNotAccessMemory,
  27685. /* x86_sse42_pcmpistrm128 */ DoesNotAccessMemory,
  27686. /* x86_sse4a_extrq */ DoesNotAccessMemory,
  27687. /* x86_sse4a_extrqi */ DoesNotAccessMemory,
  27688. /* x86_sse4a_insertq */ DoesNotAccessMemory,
  27689. /* x86_sse4a_insertqi */ DoesNotAccessMemory,
  27690. /* x86_sse4a_movnt_sd */ UnknownModRefBehavior,
  27691. /* x86_sse4a_movnt_ss */ UnknownModRefBehavior,
  27692. /* x86_sse_add_ss */ DoesNotAccessMemory,
  27693. /* x86_sse_cmp_ps */ DoesNotAccessMemory,
  27694. /* x86_sse_cmp_ss */ DoesNotAccessMemory,
  27695. /* x86_sse_comieq_ss */ DoesNotAccessMemory,
  27696. /* x86_sse_comige_ss */ DoesNotAccessMemory,
  27697. /* x86_sse_comigt_ss */ DoesNotAccessMemory,
  27698. /* x86_sse_comile_ss */ DoesNotAccessMemory,
  27699. /* x86_sse_comilt_ss */ DoesNotAccessMemory,
  27700. /* x86_sse_comineq_ss */ DoesNotAccessMemory,
  27701. /* x86_sse_cvtpd2pi */ DoesNotAccessMemory,
  27702. /* x86_sse_cvtpi2pd */ DoesNotAccessMemory,
  27703. /* x86_sse_cvtpi2ps */ DoesNotAccessMemory,
  27704. /* x86_sse_cvtps2pi */ DoesNotAccessMemory,
  27705. /* x86_sse_cvtsi2ss */ DoesNotAccessMemory,
  27706. /* x86_sse_cvtsi642ss */ DoesNotAccessMemory,
  27707. /* x86_sse_cvtss2si */ DoesNotAccessMemory,
  27708. /* x86_sse_cvtss2si64 */ DoesNotAccessMemory,
  27709. /* x86_sse_cvttpd2pi */ DoesNotAccessMemory,
  27710. /* x86_sse_cvttps2pi */ DoesNotAccessMemory,
  27711. /* x86_sse_cvttss2si */ DoesNotAccessMemory,
  27712. /* x86_sse_cvttss2si64 */ DoesNotAccessMemory,
  27713. /* x86_sse_div_ss */ DoesNotAccessMemory,
  27714. /* x86_sse_ldmxcsr */ UnknownModRefBehavior,
  27715. /* x86_sse_max_ps */ DoesNotAccessMemory,
  27716. /* x86_sse_max_ss */ DoesNotAccessMemory,
  27717. /* x86_sse_min_ps */ DoesNotAccessMemory,
  27718. /* x86_sse_min_ss */ DoesNotAccessMemory,
  27719. /* x86_sse_movmsk_ps */ DoesNotAccessMemory,
  27720. /* x86_sse_mul_ss */ DoesNotAccessMemory,
  27721. /* x86_sse_pshuf_w */ DoesNotAccessMemory,
  27722. /* x86_sse_rcp_ps */ DoesNotAccessMemory,
  27723. /* x86_sse_rcp_ss */ DoesNotAccessMemory,
  27724. /* x86_sse_rsqrt_ps */ DoesNotAccessMemory,
  27725. /* x86_sse_rsqrt_ss */ DoesNotAccessMemory,
  27726. /* x86_sse_sfence */ UnknownModRefBehavior,
  27727. /* x86_sse_sqrt_ps */ DoesNotAccessMemory,
  27728. /* x86_sse_sqrt_ss */ DoesNotAccessMemory,
  27729. /* x86_sse_stmxcsr */ UnknownModRefBehavior,
  27730. /* x86_sse_storeu_ps */ OnlyAccessesArgumentPointees,
  27731. /* x86_sse_sub_ss */ DoesNotAccessMemory,
  27732. /* x86_sse_ucomieq_ss */ DoesNotAccessMemory,
  27733. /* x86_sse_ucomige_ss */ DoesNotAccessMemory,
  27734. /* x86_sse_ucomigt_ss */ DoesNotAccessMemory,
  27735. /* x86_sse_ucomile_ss */ DoesNotAccessMemory,
  27736. /* x86_sse_ucomilt_ss */ DoesNotAccessMemory,
  27737. /* x86_sse_ucomineq_ss */ DoesNotAccessMemory,
  27738. /* x86_ssse3_pabs_b */ DoesNotAccessMemory,
  27739. /* x86_ssse3_pabs_b_128 */ DoesNotAccessMemory,
  27740. /* x86_ssse3_pabs_d */ DoesNotAccessMemory,
  27741. /* x86_ssse3_pabs_d_128 */ DoesNotAccessMemory,
  27742. /* x86_ssse3_pabs_w */ DoesNotAccessMemory,
  27743. /* x86_ssse3_pabs_w_128 */ DoesNotAccessMemory,
  27744. /* x86_ssse3_phadd_d */ DoesNotAccessMemory,
  27745. /* x86_ssse3_phadd_d_128 */ DoesNotAccessMemory,
  27746. /* x86_ssse3_phadd_sw */ DoesNotAccessMemory,
  27747. /* x86_ssse3_phadd_sw_128 */ DoesNotAccessMemory,
  27748. /* x86_ssse3_phadd_w */ DoesNotAccessMemory,
  27749. /* x86_ssse3_phadd_w_128 */ DoesNotAccessMemory,
  27750. /* x86_ssse3_phsub_d */ DoesNotAccessMemory,
  27751. /* x86_ssse3_phsub_d_128 */ DoesNotAccessMemory,
  27752. /* x86_ssse3_phsub_sw */ DoesNotAccessMemory,
  27753. /* x86_ssse3_phsub_sw_128 */ DoesNotAccessMemory,
  27754. /* x86_ssse3_phsub_w */ DoesNotAccessMemory,
  27755. /* x86_ssse3_phsub_w_128 */ DoesNotAccessMemory,
  27756. /* x86_ssse3_pmadd_ub_sw */ DoesNotAccessMemory,
  27757. /* x86_ssse3_pmadd_ub_sw_128 */ DoesNotAccessMemory,
  27758. /* x86_ssse3_pmul_hr_sw */ DoesNotAccessMemory,
  27759. /* x86_ssse3_pmul_hr_sw_128 */ DoesNotAccessMemory,
  27760. /* x86_ssse3_pshuf_b */ DoesNotAccessMemory,
  27761. /* x86_ssse3_pshuf_b_128 */ DoesNotAccessMemory,
  27762. /* x86_ssse3_psign_b */ DoesNotAccessMemory,
  27763. /* x86_ssse3_psign_b_128 */ DoesNotAccessMemory,
  27764. /* x86_ssse3_psign_d */ DoesNotAccessMemory,
  27765. /* x86_ssse3_psign_d_128 */ DoesNotAccessMemory,
  27766. /* x86_ssse3_psign_w */ DoesNotAccessMemory,
  27767. /* x86_ssse3_psign_w_128 */ DoesNotAccessMemory,
  27768. /* x86_vcvtph2ps_128 */ DoesNotAccessMemory,
  27769. /* x86_vcvtph2ps_256 */ DoesNotAccessMemory,
  27770. /* x86_vcvtps2ph_128 */ DoesNotAccessMemory,
  27771. /* x86_vcvtps2ph_256 */ DoesNotAccessMemory,
  27772. /* x86_wrfsbase_32 */ UnknownModRefBehavior,
  27773. /* x86_wrfsbase_64 */ UnknownModRefBehavior,
  27774. /* x86_wrgsbase_32 */ UnknownModRefBehavior,
  27775. /* x86_wrgsbase_64 */ UnknownModRefBehavior,
  27776. /* x86_xop_vfrcz_pd */ DoesNotAccessMemory,
  27777. /* x86_xop_vfrcz_pd_256 */ DoesNotAccessMemory,
  27778. /* x86_xop_vfrcz_ps */ DoesNotAccessMemory,
  27779. /* x86_xop_vfrcz_ps_256 */ DoesNotAccessMemory,
  27780. /* x86_xop_vfrcz_sd */ DoesNotAccessMemory,
  27781. /* x86_xop_vfrcz_ss */ DoesNotAccessMemory,
  27782. /* x86_xop_vpcmov */ DoesNotAccessMemory,
  27783. /* x86_xop_vpcmov_256 */ DoesNotAccessMemory,
  27784. /* x86_xop_vpcomb */ DoesNotAccessMemory,
  27785. /* x86_xop_vpcomd */ DoesNotAccessMemory,
  27786. /* x86_xop_vpcomq */ DoesNotAccessMemory,
  27787. /* x86_xop_vpcomub */ DoesNotAccessMemory,
  27788. /* x86_xop_vpcomud */ DoesNotAccessMemory,
  27789. /* x86_xop_vpcomuq */ DoesNotAccessMemory,
  27790. /* x86_xop_vpcomuw */ DoesNotAccessMemory,
  27791. /* x86_xop_vpcomw */ DoesNotAccessMemory,
  27792. /* x86_xop_vpermil2pd */ DoesNotAccessMemory,
  27793. /* x86_xop_vpermil2pd_256 */ DoesNotAccessMemory,
  27794. /* x86_xop_vpermil2ps */ DoesNotAccessMemory,
  27795. /* x86_xop_vpermil2ps_256 */ DoesNotAccessMemory,
  27796. /* x86_xop_vphaddbd */ DoesNotAccessMemory,
  27797. /* x86_xop_vphaddbq */ DoesNotAccessMemory,
  27798. /* x86_xop_vphaddbw */ DoesNotAccessMemory,
  27799. /* x86_xop_vphadddq */ DoesNotAccessMemory,
  27800. /* x86_xop_vphaddubd */ DoesNotAccessMemory,
  27801. /* x86_xop_vphaddubq */ DoesNotAccessMemory,
  27802. /* x86_xop_vphaddubw */ DoesNotAccessMemory,
  27803. /* x86_xop_vphaddudq */ DoesNotAccessMemory,
  27804. /* x86_xop_vphadduwd */ DoesNotAccessMemory,
  27805. /* x86_xop_vphadduwq */ DoesNotAccessMemory,
  27806. /* x86_xop_vphaddwd */ DoesNotAccessMemory,
  27807. /* x86_xop_vphaddwq */ DoesNotAccessMemory,
  27808. /* x86_xop_vphsubbw */ DoesNotAccessMemory,
  27809. /* x86_xop_vphsubdq */ DoesNotAccessMemory,
  27810. /* x86_xop_vphsubwd */ DoesNotAccessMemory,
  27811. /* x86_xop_vpmacsdd */ DoesNotAccessMemory,
  27812. /* x86_xop_vpmacsdqh */ DoesNotAccessMemory,
  27813. /* x86_xop_vpmacsdql */ DoesNotAccessMemory,
  27814. /* x86_xop_vpmacssdd */ DoesNotAccessMemory,
  27815. /* x86_xop_vpmacssdqh */ DoesNotAccessMemory,
  27816. /* x86_xop_vpmacssdql */ DoesNotAccessMemory,
  27817. /* x86_xop_vpmacsswd */ DoesNotAccessMemory,
  27818. /* x86_xop_vpmacssww */ DoesNotAccessMemory,
  27819. /* x86_xop_vpmacswd */ DoesNotAccessMemory,
  27820. /* x86_xop_vpmacsww */ DoesNotAccessMemory,
  27821. /* x86_xop_vpmadcsswd */ DoesNotAccessMemory,
  27822. /* x86_xop_vpmadcswd */ DoesNotAccessMemory,
  27823. /* x86_xop_vpperm */ DoesNotAccessMemory,
  27824. /* x86_xop_vprotb */ DoesNotAccessMemory,
  27825. /* x86_xop_vprotbi */ DoesNotAccessMemory,
  27826. /* x86_xop_vprotd */ DoesNotAccessMemory,
  27827. /* x86_xop_vprotdi */ DoesNotAccessMemory,
  27828. /* x86_xop_vprotq */ DoesNotAccessMemory,
  27829. /* x86_xop_vprotqi */ DoesNotAccessMemory,
  27830. /* x86_xop_vprotw */ DoesNotAccessMemory,
  27831. /* x86_xop_vprotwi */ DoesNotAccessMemory,
  27832. /* x86_xop_vpshab */ DoesNotAccessMemory,
  27833. /* x86_xop_vpshad */ DoesNotAccessMemory,
  27834. /* x86_xop_vpshaq */ DoesNotAccessMemory,
  27835. /* x86_xop_vpshaw */ DoesNotAccessMemory,
  27836. /* x86_xop_vpshlb */ DoesNotAccessMemory,
  27837. /* x86_xop_vpshld */ DoesNotAccessMemory,
  27838. /* x86_xop_vpshlq */ DoesNotAccessMemory,
  27839. /* x86_xop_vpshlw */ DoesNotAccessMemory,
  27840. /* xcore_bitrev */ DoesNotAccessMemory,
  27841. /* xcore_checkevent */ UnknownModRefBehavior,
  27842. /* xcore_chkct */ UnknownModRefBehavior,
  27843. /* xcore_clre */ UnknownModRefBehavior,
  27844. /* xcore_clrsr */ UnknownModRefBehavior,
  27845. /* xcore_crc32 */ DoesNotAccessMemory,
  27846. /* xcore_crc8 */ DoesNotAccessMemory,
  27847. /* xcore_eeu */ UnknownModRefBehavior,
  27848. /* xcore_endin */ UnknownModRefBehavior,
  27849. /* xcore_freer */ UnknownModRefBehavior,
  27850. /* xcore_geted */ UnknownModRefBehavior,
  27851. /* xcore_getet */ UnknownModRefBehavior,
  27852. /* xcore_getid */ DoesNotAccessMemory,
  27853. /* xcore_getps */ UnknownModRefBehavior,
  27854. /* xcore_getr */ UnknownModRefBehavior,
  27855. /* xcore_getst */ UnknownModRefBehavior,
  27856. /* xcore_getts */ UnknownModRefBehavior,
  27857. /* xcore_in */ UnknownModRefBehavior,
  27858. /* xcore_inct */ UnknownModRefBehavior,
  27859. /* xcore_initcp */ UnknownModRefBehavior,
  27860. /* xcore_initdp */ UnknownModRefBehavior,
  27861. /* xcore_initlr */ UnknownModRefBehavior,
  27862. /* xcore_initpc */ UnknownModRefBehavior,
  27863. /* xcore_initsp */ UnknownModRefBehavior,
  27864. /* xcore_inshr */ UnknownModRefBehavior,
  27865. /* xcore_int */ UnknownModRefBehavior,
  27866. /* xcore_mjoin */ UnknownModRefBehavior,
  27867. /* xcore_msync */ UnknownModRefBehavior,
  27868. /* xcore_out */ UnknownModRefBehavior,
  27869. /* xcore_outct */ UnknownModRefBehavior,
  27870. /* xcore_outshr */ UnknownModRefBehavior,
  27871. /* xcore_outt */ UnknownModRefBehavior,
  27872. /* xcore_peek */ UnknownModRefBehavior,
  27873. /* xcore_setc */ UnknownModRefBehavior,
  27874. /* xcore_setclk */ UnknownModRefBehavior,
  27875. /* xcore_setd */ UnknownModRefBehavior,
  27876. /* xcore_setev */ UnknownModRefBehavior,
  27877. /* xcore_setps */ UnknownModRefBehavior,
  27878. /* xcore_setpsc */ UnknownModRefBehavior,
  27879. /* xcore_setpt */ UnknownModRefBehavior,
  27880. /* xcore_setrdy */ UnknownModRefBehavior,
  27881. /* xcore_setsr */ UnknownModRefBehavior,
  27882. /* xcore_settw */ UnknownModRefBehavior,
  27883. /* xcore_setv */ UnknownModRefBehavior,
  27884. /* xcore_sext */ DoesNotAccessMemory,
  27885. /* xcore_ssync */ UnknownModRefBehavior,
  27886. /* xcore_syncr */ UnknownModRefBehavior,
  27887. /* xcore_testct */ UnknownModRefBehavior,
  27888. /* xcore_testwct */ UnknownModRefBehavior,
  27889. /* xcore_waitevent */ OnlyReadsMemory,
  27890. /* xcore_zext */ DoesNotAccessMemory,
  27891. };
  27892. return static_cast<ModRefBehavior>(IntrinsicModRefBehavior[iid]);
  27893. #endif // GET_INTRINSIC_MODREF_BEHAVIOR
  27894. // Get the LLVM intrinsic that corresponds to a GCC builtin.
  27895. // This is used by the C front-end. The GCC builtin name is passed
  27896. // in as BuiltinName, and a target prefix (e.g. 'ppc') is passed
  27897. // in as TargetPrefix. The result is assigned to 'IntrinsicID'.
  27898. #ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN
  27899. Intrinsic::ID Intrinsic::getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) {
  27900. StringRef BuiltinName(BuiltinNameStr);
  27901. StringRef TargetPrefix(TargetPrefixStr);
  27902. /* Target Independent Builtins */ {
  27903. switch (BuiltinName.size()) {
  27904. default: break;
  27905. case 10: // 1 string to match.
  27906. if (memcmp(BuiltinName.data()+0, "__nvvm_h2f", 10))
  27907. break;
  27908. return Intrinsic::nvvm_h2f; // "__nvvm_h2f"
  27909. case 11: // 2 strings to match.
  27910. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  27911. break;
  27912. switch (BuiltinName[7]) {
  27913. default: break;
  27914. case 'b': // 1 string to match.
  27915. if (memcmp(BuiltinName.data()+8, "ar0", 3))
  27916. break;
  27917. return Intrinsic::nvvm_barrier0; // "__nvvm_bar0"
  27918. case 'p': // 1 string to match.
  27919. if (memcmp(BuiltinName.data()+8, "rmt", 3))
  27920. break;
  27921. return Intrinsic::nvvm_prmt; // "__nvvm_prmt"
  27922. }
  27923. break;
  27924. case 12: // 5 strings to match.
  27925. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  27926. break;
  27927. switch (BuiltinName[7]) {
  27928. default: break;
  27929. case 'a': // 1 string to match.
  27930. if (memcmp(BuiltinName.data()+8, "bs_i", 4))
  27931. break;
  27932. return Intrinsic::nvvm_abs_i; // "__nvvm_abs_i"
  27933. case 'c': // 1 string to match.
  27934. if (memcmp(BuiltinName.data()+8, "lz_i", 4))
  27935. break;
  27936. return Intrinsic::nvvm_clz_i; // "__nvvm_clz_i"
  27937. case 'm': // 2 strings to match.
  27938. switch (BuiltinName[8]) {
  27939. default: break;
  27940. case 'a': // 1 string to match.
  27941. if (memcmp(BuiltinName.data()+9, "x_i", 3))
  27942. break;
  27943. return Intrinsic::nvvm_max_i; // "__nvvm_max_i"
  27944. case 'i': // 1 string to match.
  27945. if (memcmp(BuiltinName.data()+9, "n_i", 3))
  27946. break;
  27947. return Intrinsic::nvvm_min_i; // "__nvvm_min_i"
  27948. }
  27949. break;
  27950. case 's': // 1 string to match.
  27951. if (memcmp(BuiltinName.data()+8, "ad_i", 4))
  27952. break;
  27953. return Intrinsic::nvvm_sad_i; // "__nvvm_sad_i"
  27954. }
  27955. break;
  27956. case 13: // 42 strings to match.
  27957. if (memcmp(BuiltinName.data()+0, "__", 2))
  27958. break;
  27959. switch (BuiltinName[2]) {
  27960. default: break;
  27961. case 'n': // 41 strings to match.
  27962. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  27963. break;
  27964. switch (BuiltinName[7]) {
  27965. default: break;
  27966. case 'a': // 1 string to match.
  27967. if (memcmp(BuiltinName.data()+8, "bs_ll", 5))
  27968. break;
  27969. return Intrinsic::nvvm_abs_ll; // "__nvvm_abs_ll"
  27970. case 'b': // 2 strings to match.
  27971. if (memcmp(BuiltinName.data()+8, "rev", 3))
  27972. break;
  27973. switch (BuiltinName[11]) {
  27974. default: break;
  27975. case '3': // 1 string to match.
  27976. if (BuiltinName[12] != '2')
  27977. break;
  27978. return Intrinsic::nvvm_brev32; // "__nvvm_brev32"
  27979. case '6': // 1 string to match.
  27980. if (BuiltinName[12] != '4')
  27981. break;
  27982. return Intrinsic::nvvm_brev64; // "__nvvm_brev64"
  27983. }
  27984. break;
  27985. case 'c': // 3 strings to match.
  27986. switch (BuiltinName[8]) {
  27987. default: break;
  27988. case 'e': // 2 strings to match.
  27989. if (memcmp(BuiltinName.data()+9, "il_", 3))
  27990. break;
  27991. switch (BuiltinName[12]) {
  27992. default: break;
  27993. case 'd': // 1 string to match.
  27994. return Intrinsic::nvvm_ceil_d; // "__nvvm_ceil_d"
  27995. case 'f': // 1 string to match.
  27996. return Intrinsic::nvvm_ceil_f; // "__nvvm_ceil_f"
  27997. }
  27998. break;
  27999. case 'l': // 1 string to match.
  28000. if (memcmp(BuiltinName.data()+9, "z_ll", 4))
  28001. break;
  28002. return Intrinsic::nvvm_clz_ll; // "__nvvm_clz_ll"
  28003. }
  28004. break;
  28005. case 'd': // 10 strings to match.
  28006. if (BuiltinName[8] != '2')
  28007. break;
  28008. switch (BuiltinName[9]) {
  28009. default: break;
  28010. case 'f': // 4 strings to match.
  28011. if (memcmp(BuiltinName.data()+10, "_r", 2))
  28012. break;
  28013. switch (BuiltinName[12]) {
  28014. default: break;
  28015. case 'm': // 1 string to match.
  28016. return Intrinsic::nvvm_d2f_rm; // "__nvvm_d2f_rm"
  28017. case 'n': // 1 string to match.
  28018. return Intrinsic::nvvm_d2f_rn; // "__nvvm_d2f_rn"
  28019. case 'p': // 1 string to match.
  28020. return Intrinsic::nvvm_d2f_rp; // "__nvvm_d2f_rp"
  28021. case 'z': // 1 string to match.
  28022. return Intrinsic::nvvm_d2f_rz; // "__nvvm_d2f_rz"
  28023. }
  28024. break;
  28025. case 'i': // 6 strings to match.
  28026. if (BuiltinName[10] != '_')
  28027. break;
  28028. switch (BuiltinName[11]) {
  28029. default: break;
  28030. case 'h': // 1 string to match.
  28031. if (BuiltinName[12] != 'i')
  28032. break;
  28033. return Intrinsic::nvvm_d2i_hi; // "__nvvm_d2i_hi"
  28034. case 'l': // 1 string to match.
  28035. if (BuiltinName[12] != 'o')
  28036. break;
  28037. return Intrinsic::nvvm_d2i_lo; // "__nvvm_d2i_lo"
  28038. case 'r': // 4 strings to match.
  28039. switch (BuiltinName[12]) {
  28040. default: break;
  28041. case 'm': // 1 string to match.
  28042. return Intrinsic::nvvm_d2i_rm; // "__nvvm_d2i_rm"
  28043. case 'n': // 1 string to match.
  28044. return Intrinsic::nvvm_d2i_rn; // "__nvvm_d2i_rn"
  28045. case 'p': // 1 string to match.
  28046. return Intrinsic::nvvm_d2i_rp; // "__nvvm_d2i_rp"
  28047. case 'z': // 1 string to match.
  28048. return Intrinsic::nvvm_d2i_rz; // "__nvvm_d2i_rz"
  28049. }
  28050. break;
  28051. }
  28052. break;
  28053. }
  28054. break;
  28055. case 'f': // 11 strings to match.
  28056. switch (BuiltinName[8]) {
  28057. default: break;
  28058. case '2': // 5 strings to match.
  28059. switch (BuiltinName[9]) {
  28060. default: break;
  28061. case 'h': // 1 string to match.
  28062. if (memcmp(BuiltinName.data()+10, "_rn", 3))
  28063. break;
  28064. return Intrinsic::nvvm_f2h_rn; // "__nvvm_f2h_rn"
  28065. case 'i': // 4 strings to match.
  28066. if (memcmp(BuiltinName.data()+10, "_r", 2))
  28067. break;
  28068. switch (BuiltinName[12]) {
  28069. default: break;
  28070. case 'm': // 1 string to match.
  28071. return Intrinsic::nvvm_f2i_rm; // "__nvvm_f2i_rm"
  28072. case 'n': // 1 string to match.
  28073. return Intrinsic::nvvm_f2i_rn; // "__nvvm_f2i_rn"
  28074. case 'p': // 1 string to match.
  28075. return Intrinsic::nvvm_f2i_rp; // "__nvvm_f2i_rp"
  28076. case 'z': // 1 string to match.
  28077. return Intrinsic::nvvm_f2i_rz; // "__nvvm_f2i_rz"
  28078. }
  28079. break;
  28080. }
  28081. break;
  28082. case 'a': // 2 strings to match.
  28083. if (memcmp(BuiltinName.data()+9, "bs_", 3))
  28084. break;
  28085. switch (BuiltinName[12]) {
  28086. default: break;
  28087. case 'd': // 1 string to match.
  28088. return Intrinsic::nvvm_fabs_d; // "__nvvm_fabs_d"
  28089. case 'f': // 1 string to match.
  28090. return Intrinsic::nvvm_fabs_f; // "__nvvm_fabs_f"
  28091. }
  28092. break;
  28093. case 'm': // 4 strings to match.
  28094. switch (BuiltinName[9]) {
  28095. default: break;
  28096. case 'a': // 2 strings to match.
  28097. if (memcmp(BuiltinName.data()+10, "x_", 2))
  28098. break;
  28099. switch (BuiltinName[12]) {
  28100. default: break;
  28101. case 'd': // 1 string to match.
  28102. return Intrinsic::nvvm_fmax_d; // "__nvvm_fmax_d"
  28103. case 'f': // 1 string to match.
  28104. return Intrinsic::nvvm_fmax_f; // "__nvvm_fmax_f"
  28105. }
  28106. break;
  28107. case 'i': // 2 strings to match.
  28108. if (memcmp(BuiltinName.data()+10, "n_", 2))
  28109. break;
  28110. switch (BuiltinName[12]) {
  28111. default: break;
  28112. case 'd': // 1 string to match.
  28113. return Intrinsic::nvvm_fmin_d; // "__nvvm_fmin_d"
  28114. case 'f': // 1 string to match.
  28115. return Intrinsic::nvvm_fmin_f; // "__nvvm_fmin_f"
  28116. }
  28117. break;
  28118. }
  28119. break;
  28120. }
  28121. break;
  28122. case 'i': // 8 strings to match.
  28123. if (BuiltinName[8] != '2')
  28124. break;
  28125. switch (BuiltinName[9]) {
  28126. default: break;
  28127. case 'd': // 4 strings to match.
  28128. if (memcmp(BuiltinName.data()+10, "_r", 2))
  28129. break;
  28130. switch (BuiltinName[12]) {
  28131. default: break;
  28132. case 'm': // 1 string to match.
  28133. return Intrinsic::nvvm_i2d_rm; // "__nvvm_i2d_rm"
  28134. case 'n': // 1 string to match.
  28135. return Intrinsic::nvvm_i2d_rn; // "__nvvm_i2d_rn"
  28136. case 'p': // 1 string to match.
  28137. return Intrinsic::nvvm_i2d_rp; // "__nvvm_i2d_rp"
  28138. case 'z': // 1 string to match.
  28139. return Intrinsic::nvvm_i2d_rz; // "__nvvm_i2d_rz"
  28140. }
  28141. break;
  28142. case 'f': // 4 strings to match.
  28143. if (memcmp(BuiltinName.data()+10, "_r", 2))
  28144. break;
  28145. switch (BuiltinName[12]) {
  28146. default: break;
  28147. case 'm': // 1 string to match.
  28148. return Intrinsic::nvvm_i2f_rm; // "__nvvm_i2f_rm"
  28149. case 'n': // 1 string to match.
  28150. return Intrinsic::nvvm_i2f_rn; // "__nvvm_i2f_rn"
  28151. case 'p': // 1 string to match.
  28152. return Intrinsic::nvvm_i2f_rp; // "__nvvm_i2f_rp"
  28153. case 'z': // 1 string to match.
  28154. return Intrinsic::nvvm_i2f_rz; // "__nvvm_i2f_rz"
  28155. }
  28156. break;
  28157. }
  28158. break;
  28159. case 'm': // 4 strings to match.
  28160. switch (BuiltinName[8]) {
  28161. default: break;
  28162. case 'a': // 2 strings to match.
  28163. if (memcmp(BuiltinName.data()+9, "x_", 2))
  28164. break;
  28165. switch (BuiltinName[11]) {
  28166. default: break;
  28167. case 'l': // 1 string to match.
  28168. if (BuiltinName[12] != 'l')
  28169. break;
  28170. return Intrinsic::nvvm_max_ll; // "__nvvm_max_ll"
  28171. case 'u': // 1 string to match.
  28172. if (BuiltinName[12] != 'i')
  28173. break;
  28174. return Intrinsic::nvvm_max_ui; // "__nvvm_max_ui"
  28175. }
  28176. break;
  28177. case 'i': // 2 strings to match.
  28178. if (memcmp(BuiltinName.data()+9, "n_", 2))
  28179. break;
  28180. switch (BuiltinName[11]) {
  28181. default: break;
  28182. case 'l': // 1 string to match.
  28183. if (BuiltinName[12] != 'l')
  28184. break;
  28185. return Intrinsic::nvvm_min_ll; // "__nvvm_min_ll"
  28186. case 'u': // 1 string to match.
  28187. if (BuiltinName[12] != 'i')
  28188. break;
  28189. return Intrinsic::nvvm_min_ui; // "__nvvm_min_ui"
  28190. }
  28191. break;
  28192. }
  28193. break;
  28194. case 'p': // 1 string to match.
  28195. if (memcmp(BuiltinName.data()+8, "opc_i", 5))
  28196. break;
  28197. return Intrinsic::nvvm_popc_i; // "__nvvm_popc_i"
  28198. case 's': // 1 string to match.
  28199. if (memcmp(BuiltinName.data()+8, "ad_ui", 5))
  28200. break;
  28201. return Intrinsic::nvvm_sad_ui; // "__nvvm_sad_ui"
  28202. }
  28203. break;
  28204. case 's': // 1 string to match.
  28205. if (memcmp(BuiltinName.data()+3, "yncthreads", 10))
  28206. break;
  28207. return Intrinsic::cuda_syncthreads; // "__syncthreads"
  28208. }
  28209. break;
  28210. case 14: // 47 strings to match.
  28211. if (memcmp(BuiltinName.data()+0, "__", 2))
  28212. break;
  28213. switch (BuiltinName[2]) {
  28214. default: break;
  28215. case 'b': // 1 string to match.
  28216. if (memcmp(BuiltinName.data()+3, "uiltin_trap", 11))
  28217. break;
  28218. return Intrinsic::trap; // "__builtin_trap"
  28219. case 'g': // 2 strings to match.
  28220. if (memcmp(BuiltinName.data()+3, "nu_", 3))
  28221. break;
  28222. switch (BuiltinName[6]) {
  28223. default: break;
  28224. case 'f': // 1 string to match.
  28225. if (memcmp(BuiltinName.data()+7, "2h_ieee", 7))
  28226. break;
  28227. return Intrinsic::convert_to_fp16; // "__gnu_f2h_ieee"
  28228. case 'h': // 1 string to match.
  28229. if (memcmp(BuiltinName.data()+7, "2f_ieee", 7))
  28230. break;
  28231. return Intrinsic::convert_from_fp16; // "__gnu_h2f_ieee"
  28232. }
  28233. break;
  28234. case 'n': // 44 strings to match.
  28235. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  28236. break;
  28237. switch (BuiltinName[7]) {
  28238. default: break;
  28239. case 'b': // 1 string to match.
  28240. if (memcmp(BuiltinName.data()+8, "ar0_or", 6))
  28241. break;
  28242. return Intrinsic::nvvm_barrier0_or; // "__nvvm_bar0_or"
  28243. case 'd': // 8 strings to match.
  28244. if (BuiltinName[8] != '2')
  28245. break;
  28246. switch (BuiltinName[9]) {
  28247. default: break;
  28248. case 'l': // 4 strings to match.
  28249. if (memcmp(BuiltinName.data()+10, "l_r", 3))
  28250. break;
  28251. switch (BuiltinName[13]) {
  28252. default: break;
  28253. case 'm': // 1 string to match.
  28254. return Intrinsic::nvvm_d2ll_rm; // "__nvvm_d2ll_rm"
  28255. case 'n': // 1 string to match.
  28256. return Intrinsic::nvvm_d2ll_rn; // "__nvvm_d2ll_rn"
  28257. case 'p': // 1 string to match.
  28258. return Intrinsic::nvvm_d2ll_rp; // "__nvvm_d2ll_rp"
  28259. case 'z': // 1 string to match.
  28260. return Intrinsic::nvvm_d2ll_rz; // "__nvvm_d2ll_rz"
  28261. }
  28262. break;
  28263. case 'u': // 4 strings to match.
  28264. if (memcmp(BuiltinName.data()+10, "i_r", 3))
  28265. break;
  28266. switch (BuiltinName[13]) {
  28267. default: break;
  28268. case 'm': // 1 string to match.
  28269. return Intrinsic::nvvm_d2ui_rm; // "__nvvm_d2ui_rm"
  28270. case 'n': // 1 string to match.
  28271. return Intrinsic::nvvm_d2ui_rn; // "__nvvm_d2ui_rn"
  28272. case 'p': // 1 string to match.
  28273. return Intrinsic::nvvm_d2ui_rp; // "__nvvm_d2ui_rp"
  28274. case 'z': // 1 string to match.
  28275. return Intrinsic::nvvm_d2ui_rz; // "__nvvm_d2ui_rz"
  28276. }
  28277. break;
  28278. }
  28279. break;
  28280. case 'f': // 10 strings to match.
  28281. switch (BuiltinName[8]) {
  28282. default: break;
  28283. case '2': // 8 strings to match.
  28284. switch (BuiltinName[9]) {
  28285. default: break;
  28286. case 'l': // 4 strings to match.
  28287. if (memcmp(BuiltinName.data()+10, "l_r", 3))
  28288. break;
  28289. switch (BuiltinName[13]) {
  28290. default: break;
  28291. case 'm': // 1 string to match.
  28292. return Intrinsic::nvvm_f2ll_rm; // "__nvvm_f2ll_rm"
  28293. case 'n': // 1 string to match.
  28294. return Intrinsic::nvvm_f2ll_rn; // "__nvvm_f2ll_rn"
  28295. case 'p': // 1 string to match.
  28296. return Intrinsic::nvvm_f2ll_rp; // "__nvvm_f2ll_rp"
  28297. case 'z': // 1 string to match.
  28298. return Intrinsic::nvvm_f2ll_rz; // "__nvvm_f2ll_rz"
  28299. }
  28300. break;
  28301. case 'u': // 4 strings to match.
  28302. if (memcmp(BuiltinName.data()+10, "i_r", 3))
  28303. break;
  28304. switch (BuiltinName[13]) {
  28305. default: break;
  28306. case 'm': // 1 string to match.
  28307. return Intrinsic::nvvm_f2ui_rm; // "__nvvm_f2ui_rm"
  28308. case 'n': // 1 string to match.
  28309. return Intrinsic::nvvm_f2ui_rn; // "__nvvm_f2ui_rn"
  28310. case 'p': // 1 string to match.
  28311. return Intrinsic::nvvm_f2ui_rp; // "__nvvm_f2ui_rp"
  28312. case 'z': // 1 string to match.
  28313. return Intrinsic::nvvm_f2ui_rz; // "__nvvm_f2ui_rz"
  28314. }
  28315. break;
  28316. }
  28317. break;
  28318. case 'l': // 2 strings to match.
  28319. if (memcmp(BuiltinName.data()+9, "oor_", 4))
  28320. break;
  28321. switch (BuiltinName[13]) {
  28322. default: break;
  28323. case 'd': // 1 string to match.
  28324. return Intrinsic::nvvm_floor_d; // "__nvvm_floor_d"
  28325. case 'f': // 1 string to match.
  28326. return Intrinsic::nvvm_floor_f; // "__nvvm_floor_f"
  28327. }
  28328. break;
  28329. }
  28330. break;
  28331. case 'l': // 8 strings to match.
  28332. if (memcmp(BuiltinName.data()+8, "l2", 2))
  28333. break;
  28334. switch (BuiltinName[10]) {
  28335. default: break;
  28336. case 'd': // 4 strings to match.
  28337. if (memcmp(BuiltinName.data()+11, "_r", 2))
  28338. break;
  28339. switch (BuiltinName[13]) {
  28340. default: break;
  28341. case 'm': // 1 string to match.
  28342. return Intrinsic::nvvm_ll2d_rm; // "__nvvm_ll2d_rm"
  28343. case 'n': // 1 string to match.
  28344. return Intrinsic::nvvm_ll2d_rn; // "__nvvm_ll2d_rn"
  28345. case 'p': // 1 string to match.
  28346. return Intrinsic::nvvm_ll2d_rp; // "__nvvm_ll2d_rp"
  28347. case 'z': // 1 string to match.
  28348. return Intrinsic::nvvm_ll2d_rz; // "__nvvm_ll2d_rz"
  28349. }
  28350. break;
  28351. case 'f': // 4 strings to match.
  28352. if (memcmp(BuiltinName.data()+11, "_r", 2))
  28353. break;
  28354. switch (BuiltinName[13]) {
  28355. default: break;
  28356. case 'm': // 1 string to match.
  28357. return Intrinsic::nvvm_ll2f_rm; // "__nvvm_ll2f_rm"
  28358. case 'n': // 1 string to match.
  28359. return Intrinsic::nvvm_ll2f_rn; // "__nvvm_ll2f_rn"
  28360. case 'p': // 1 string to match.
  28361. return Intrinsic::nvvm_ll2f_rp; // "__nvvm_ll2f_rp"
  28362. case 'z': // 1 string to match.
  28363. return Intrinsic::nvvm_ll2f_rz; // "__nvvm_ll2f_rz"
  28364. }
  28365. break;
  28366. }
  28367. break;
  28368. case 'm': // 4 strings to match.
  28369. switch (BuiltinName[8]) {
  28370. default: break;
  28371. case 'a': // 1 string to match.
  28372. if (memcmp(BuiltinName.data()+9, "x_ull", 5))
  28373. break;
  28374. return Intrinsic::nvvm_max_ull; // "__nvvm_max_ull"
  28375. case 'i': // 1 string to match.
  28376. if (memcmp(BuiltinName.data()+9, "n_ull", 5))
  28377. break;
  28378. return Intrinsic::nvvm_min_ull; // "__nvvm_min_ull"
  28379. case 'u': // 2 strings to match.
  28380. if (BuiltinName[9] != 'l')
  28381. break;
  28382. switch (BuiltinName[10]) {
  28383. default: break;
  28384. case '2': // 1 string to match.
  28385. if (memcmp(BuiltinName.data()+11, "4_i", 3))
  28386. break;
  28387. return Intrinsic::nvvm_mul24_i; // "__nvvm_mul24_i"
  28388. case 'h': // 1 string to match.
  28389. if (memcmp(BuiltinName.data()+11, "i_i", 3))
  28390. break;
  28391. return Intrinsic::nvvm_mulhi_i; // "__nvvm_mulhi_i"
  28392. }
  28393. break;
  28394. }
  28395. break;
  28396. case 'p': // 1 string to match.
  28397. if (memcmp(BuiltinName.data()+8, "opc_ll", 6))
  28398. break;
  28399. return Intrinsic::nvvm_popc_ll; // "__nvvm_popc_ll"
  28400. case 'r': // 2 strings to match.
  28401. if (memcmp(BuiltinName.data()+8, "ound_", 5))
  28402. break;
  28403. switch (BuiltinName[13]) {
  28404. default: break;
  28405. case 'd': // 1 string to match.
  28406. return Intrinsic::nvvm_round_d; // "__nvvm_round_d"
  28407. case 'f': // 1 string to match.
  28408. return Intrinsic::nvvm_round_f; // "__nvvm_round_f"
  28409. }
  28410. break;
  28411. case 't': // 2 strings to match.
  28412. if (memcmp(BuiltinName.data()+8, "runc_", 5))
  28413. break;
  28414. switch (BuiltinName[13]) {
  28415. default: break;
  28416. case 'd': // 1 string to match.
  28417. return Intrinsic::nvvm_trunc_d; // "__nvvm_trunc_d"
  28418. case 'f': // 1 string to match.
  28419. return Intrinsic::nvvm_trunc_f; // "__nvvm_trunc_f"
  28420. }
  28421. break;
  28422. case 'u': // 8 strings to match.
  28423. if (memcmp(BuiltinName.data()+8, "i2", 2))
  28424. break;
  28425. switch (BuiltinName[10]) {
  28426. default: break;
  28427. case 'd': // 4 strings to match.
  28428. if (memcmp(BuiltinName.data()+11, "_r", 2))
  28429. break;
  28430. switch (BuiltinName[13]) {
  28431. default: break;
  28432. case 'm': // 1 string to match.
  28433. return Intrinsic::nvvm_ui2d_rm; // "__nvvm_ui2d_rm"
  28434. case 'n': // 1 string to match.
  28435. return Intrinsic::nvvm_ui2d_rn; // "__nvvm_ui2d_rn"
  28436. case 'p': // 1 string to match.
  28437. return Intrinsic::nvvm_ui2d_rp; // "__nvvm_ui2d_rp"
  28438. case 'z': // 1 string to match.
  28439. return Intrinsic::nvvm_ui2d_rz; // "__nvvm_ui2d_rz"
  28440. }
  28441. break;
  28442. case 'f': // 4 strings to match.
  28443. if (memcmp(BuiltinName.data()+11, "_r", 2))
  28444. break;
  28445. switch (BuiltinName[13]) {
  28446. default: break;
  28447. case 'm': // 1 string to match.
  28448. return Intrinsic::nvvm_ui2f_rm; // "__nvvm_ui2f_rm"
  28449. case 'n': // 1 string to match.
  28450. return Intrinsic::nvvm_ui2f_rn; // "__nvvm_ui2f_rn"
  28451. case 'p': // 1 string to match.
  28452. return Intrinsic::nvvm_ui2f_rp; // "__nvvm_ui2f_rp"
  28453. case 'z': // 1 string to match.
  28454. return Intrinsic::nvvm_ui2f_rz; // "__nvvm_ui2f_rz"
  28455. }
  28456. break;
  28457. }
  28458. break;
  28459. }
  28460. break;
  28461. }
  28462. break;
  28463. case 15: // 61 strings to match.
  28464. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  28465. break;
  28466. switch (BuiltinName[7]) {
  28467. default: break;
  28468. case 'a': // 8 strings to match.
  28469. if (memcmp(BuiltinName.data()+8, "dd_r", 4))
  28470. break;
  28471. switch (BuiltinName[12]) {
  28472. default: break;
  28473. case 'm': // 2 strings to match.
  28474. if (BuiltinName[13] != '_')
  28475. break;
  28476. switch (BuiltinName[14]) {
  28477. default: break;
  28478. case 'd': // 1 string to match.
  28479. return Intrinsic::nvvm_add_rm_d; // "__nvvm_add_rm_d"
  28480. case 'f': // 1 string to match.
  28481. return Intrinsic::nvvm_add_rm_f; // "__nvvm_add_rm_f"
  28482. }
  28483. break;
  28484. case 'n': // 2 strings to match.
  28485. if (BuiltinName[13] != '_')
  28486. break;
  28487. switch (BuiltinName[14]) {
  28488. default: break;
  28489. case 'd': // 1 string to match.
  28490. return Intrinsic::nvvm_add_rn_d; // "__nvvm_add_rn_d"
  28491. case 'f': // 1 string to match.
  28492. return Intrinsic::nvvm_add_rn_f; // "__nvvm_add_rn_f"
  28493. }
  28494. break;
  28495. case 'p': // 2 strings to match.
  28496. if (BuiltinName[13] != '_')
  28497. break;
  28498. switch (BuiltinName[14]) {
  28499. default: break;
  28500. case 'd': // 1 string to match.
  28501. return Intrinsic::nvvm_add_rp_d; // "__nvvm_add_rp_d"
  28502. case 'f': // 1 string to match.
  28503. return Intrinsic::nvvm_add_rp_f; // "__nvvm_add_rp_f"
  28504. }
  28505. break;
  28506. case 'z': // 2 strings to match.
  28507. if (BuiltinName[13] != '_')
  28508. break;
  28509. switch (BuiltinName[14]) {
  28510. default: break;
  28511. case 'd': // 1 string to match.
  28512. return Intrinsic::nvvm_add_rz_d; // "__nvvm_add_rz_d"
  28513. case 'f': // 1 string to match.
  28514. return Intrinsic::nvvm_add_rz_f; // "__nvvm_add_rz_f"
  28515. }
  28516. break;
  28517. }
  28518. break;
  28519. case 'b': // 1 string to match.
  28520. if (memcmp(BuiltinName.data()+8, "ar0_and", 7))
  28521. break;
  28522. return Intrinsic::nvvm_barrier0_and; // "__nvvm_bar0_and"
  28523. case 'd': // 12 strings to match.
  28524. switch (BuiltinName[8]) {
  28525. default: break;
  28526. case '2': // 4 strings to match.
  28527. if (memcmp(BuiltinName.data()+9, "ull_r", 5))
  28528. break;
  28529. switch (BuiltinName[14]) {
  28530. default: break;
  28531. case 'm': // 1 string to match.
  28532. return Intrinsic::nvvm_d2ull_rm; // "__nvvm_d2ull_rm"
  28533. case 'n': // 1 string to match.
  28534. return Intrinsic::nvvm_d2ull_rn; // "__nvvm_d2ull_rn"
  28535. case 'p': // 1 string to match.
  28536. return Intrinsic::nvvm_d2ull_rp; // "__nvvm_d2ull_rp"
  28537. case 'z': // 1 string to match.
  28538. return Intrinsic::nvvm_d2ull_rz; // "__nvvm_d2ull_rz"
  28539. }
  28540. break;
  28541. case 'i': // 8 strings to match.
  28542. if (memcmp(BuiltinName.data()+9, "v_r", 3))
  28543. break;
  28544. switch (BuiltinName[12]) {
  28545. default: break;
  28546. case 'm': // 2 strings to match.
  28547. if (BuiltinName[13] != '_')
  28548. break;
  28549. switch (BuiltinName[14]) {
  28550. default: break;
  28551. case 'd': // 1 string to match.
  28552. return Intrinsic::nvvm_div_rm_d; // "__nvvm_div_rm_d"
  28553. case 'f': // 1 string to match.
  28554. return Intrinsic::nvvm_div_rm_f; // "__nvvm_div_rm_f"
  28555. }
  28556. break;
  28557. case 'n': // 2 strings to match.
  28558. if (BuiltinName[13] != '_')
  28559. break;
  28560. switch (BuiltinName[14]) {
  28561. default: break;
  28562. case 'd': // 1 string to match.
  28563. return Intrinsic::nvvm_div_rn_d; // "__nvvm_div_rn_d"
  28564. case 'f': // 1 string to match.
  28565. return Intrinsic::nvvm_div_rn_f; // "__nvvm_div_rn_f"
  28566. }
  28567. break;
  28568. case 'p': // 2 strings to match.
  28569. if (BuiltinName[13] != '_')
  28570. break;
  28571. switch (BuiltinName[14]) {
  28572. default: break;
  28573. case 'd': // 1 string to match.
  28574. return Intrinsic::nvvm_div_rp_d; // "__nvvm_div_rp_d"
  28575. case 'f': // 1 string to match.
  28576. return Intrinsic::nvvm_div_rp_f; // "__nvvm_div_rp_f"
  28577. }
  28578. break;
  28579. case 'z': // 2 strings to match.
  28580. if (BuiltinName[13] != '_')
  28581. break;
  28582. switch (BuiltinName[14]) {
  28583. default: break;
  28584. case 'd': // 1 string to match.
  28585. return Intrinsic::nvvm_div_rz_d; // "__nvvm_div_rz_d"
  28586. case 'f': // 1 string to match.
  28587. return Intrinsic::nvvm_div_rz_f; // "__nvvm_div_rz_f"
  28588. }
  28589. break;
  28590. }
  28591. break;
  28592. }
  28593. break;
  28594. case 'f': // 12 strings to match.
  28595. switch (BuiltinName[8]) {
  28596. default: break;
  28597. case '2': // 4 strings to match.
  28598. if (memcmp(BuiltinName.data()+9, "ull_r", 5))
  28599. break;
  28600. switch (BuiltinName[14]) {
  28601. default: break;
  28602. case 'm': // 1 string to match.
  28603. return Intrinsic::nvvm_f2ull_rm; // "__nvvm_f2ull_rm"
  28604. case 'n': // 1 string to match.
  28605. return Intrinsic::nvvm_f2ull_rn; // "__nvvm_f2ull_rn"
  28606. case 'p': // 1 string to match.
  28607. return Intrinsic::nvvm_f2ull_rp; // "__nvvm_f2ull_rp"
  28608. case 'z': // 1 string to match.
  28609. return Intrinsic::nvvm_f2ull_rz; // "__nvvm_f2ull_rz"
  28610. }
  28611. break;
  28612. case 'm': // 8 strings to match.
  28613. if (memcmp(BuiltinName.data()+9, "a_r", 3))
  28614. break;
  28615. switch (BuiltinName[12]) {
  28616. default: break;
  28617. case 'm': // 2 strings to match.
  28618. if (BuiltinName[13] != '_')
  28619. break;
  28620. switch (BuiltinName[14]) {
  28621. default: break;
  28622. case 'd': // 1 string to match.
  28623. return Intrinsic::nvvm_fma_rm_d; // "__nvvm_fma_rm_d"
  28624. case 'f': // 1 string to match.
  28625. return Intrinsic::nvvm_fma_rm_f; // "__nvvm_fma_rm_f"
  28626. }
  28627. break;
  28628. case 'n': // 2 strings to match.
  28629. if (BuiltinName[13] != '_')
  28630. break;
  28631. switch (BuiltinName[14]) {
  28632. default: break;
  28633. case 'd': // 1 string to match.
  28634. return Intrinsic::nvvm_fma_rn_d; // "__nvvm_fma_rn_d"
  28635. case 'f': // 1 string to match.
  28636. return Intrinsic::nvvm_fma_rn_f; // "__nvvm_fma_rn_f"
  28637. }
  28638. break;
  28639. case 'p': // 2 strings to match.
  28640. if (BuiltinName[13] != '_')
  28641. break;
  28642. switch (BuiltinName[14]) {
  28643. default: break;
  28644. case 'd': // 1 string to match.
  28645. return Intrinsic::nvvm_fma_rp_d; // "__nvvm_fma_rp_d"
  28646. case 'f': // 1 string to match.
  28647. return Intrinsic::nvvm_fma_rp_f; // "__nvvm_fma_rp_f"
  28648. }
  28649. break;
  28650. case 'z': // 2 strings to match.
  28651. if (BuiltinName[13] != '_')
  28652. break;
  28653. switch (BuiltinName[14]) {
  28654. default: break;
  28655. case 'd': // 1 string to match.
  28656. return Intrinsic::nvvm_fma_rz_d; // "__nvvm_fma_rz_d"
  28657. case 'f': // 1 string to match.
  28658. return Intrinsic::nvvm_fma_rz_f; // "__nvvm_fma_rz_f"
  28659. }
  28660. break;
  28661. }
  28662. break;
  28663. }
  28664. break;
  28665. case 'l': // 1 string to match.
  28666. if (memcmp(BuiltinName.data()+8, "ohi_i2d", 7))
  28667. break;
  28668. return Intrinsic::nvvm_lohi_i2d; // "__nvvm_lohi_i2d"
  28669. case 'm': // 11 strings to match.
  28670. if (memcmp(BuiltinName.data()+8, "ul", 2))
  28671. break;
  28672. switch (BuiltinName[10]) {
  28673. default: break;
  28674. case '2': // 1 string to match.
  28675. if (memcmp(BuiltinName.data()+11, "4_ui", 4))
  28676. break;
  28677. return Intrinsic::nvvm_mul24_ui; // "__nvvm_mul24_ui"
  28678. case '_': // 8 strings to match.
  28679. if (BuiltinName[11] != 'r')
  28680. break;
  28681. switch (BuiltinName[12]) {
  28682. default: break;
  28683. case 'm': // 2 strings to match.
  28684. if (BuiltinName[13] != '_')
  28685. break;
  28686. switch (BuiltinName[14]) {
  28687. default: break;
  28688. case 'd': // 1 string to match.
  28689. return Intrinsic::nvvm_mul_rm_d; // "__nvvm_mul_rm_d"
  28690. case 'f': // 1 string to match.
  28691. return Intrinsic::nvvm_mul_rm_f; // "__nvvm_mul_rm_f"
  28692. }
  28693. break;
  28694. case 'n': // 2 strings to match.
  28695. if (BuiltinName[13] != '_')
  28696. break;
  28697. switch (BuiltinName[14]) {
  28698. default: break;
  28699. case 'd': // 1 string to match.
  28700. return Intrinsic::nvvm_mul_rn_d; // "__nvvm_mul_rn_d"
  28701. case 'f': // 1 string to match.
  28702. return Intrinsic::nvvm_mul_rn_f; // "__nvvm_mul_rn_f"
  28703. }
  28704. break;
  28705. case 'p': // 2 strings to match.
  28706. if (BuiltinName[13] != '_')
  28707. break;
  28708. switch (BuiltinName[14]) {
  28709. default: break;
  28710. case 'd': // 1 string to match.
  28711. return Intrinsic::nvvm_mul_rp_d; // "__nvvm_mul_rp_d"
  28712. case 'f': // 1 string to match.
  28713. return Intrinsic::nvvm_mul_rp_f; // "__nvvm_mul_rp_f"
  28714. }
  28715. break;
  28716. case 'z': // 2 strings to match.
  28717. if (BuiltinName[13] != '_')
  28718. break;
  28719. switch (BuiltinName[14]) {
  28720. default: break;
  28721. case 'd': // 1 string to match.
  28722. return Intrinsic::nvvm_mul_rz_d; // "__nvvm_mul_rz_d"
  28723. case 'f': // 1 string to match.
  28724. return Intrinsic::nvvm_mul_rz_f; // "__nvvm_mul_rz_f"
  28725. }
  28726. break;
  28727. }
  28728. break;
  28729. case 'h': // 2 strings to match.
  28730. if (memcmp(BuiltinName.data()+11, "i_", 2))
  28731. break;
  28732. switch (BuiltinName[13]) {
  28733. default: break;
  28734. case 'l': // 1 string to match.
  28735. if (BuiltinName[14] != 'l')
  28736. break;
  28737. return Intrinsic::nvvm_mulhi_ll; // "__nvvm_mulhi_ll"
  28738. case 'u': // 1 string to match.
  28739. if (BuiltinName[14] != 'i')
  28740. break;
  28741. return Intrinsic::nvvm_mulhi_ui; // "__nvvm_mulhi_ui"
  28742. }
  28743. break;
  28744. }
  28745. break;
  28746. case 'r': // 8 strings to match.
  28747. if (memcmp(BuiltinName.data()+8, "cp_r", 4))
  28748. break;
  28749. switch (BuiltinName[12]) {
  28750. default: break;
  28751. case 'm': // 2 strings to match.
  28752. if (BuiltinName[13] != '_')
  28753. break;
  28754. switch (BuiltinName[14]) {
  28755. default: break;
  28756. case 'd': // 1 string to match.
  28757. return Intrinsic::nvvm_rcp_rm_d; // "__nvvm_rcp_rm_d"
  28758. case 'f': // 1 string to match.
  28759. return Intrinsic::nvvm_rcp_rm_f; // "__nvvm_rcp_rm_f"
  28760. }
  28761. break;
  28762. case 'n': // 2 strings to match.
  28763. if (BuiltinName[13] != '_')
  28764. break;
  28765. switch (BuiltinName[14]) {
  28766. default: break;
  28767. case 'd': // 1 string to match.
  28768. return Intrinsic::nvvm_rcp_rn_d; // "__nvvm_rcp_rn_d"
  28769. case 'f': // 1 string to match.
  28770. return Intrinsic::nvvm_rcp_rn_f; // "__nvvm_rcp_rn_f"
  28771. }
  28772. break;
  28773. case 'p': // 2 strings to match.
  28774. if (BuiltinName[13] != '_')
  28775. break;
  28776. switch (BuiltinName[14]) {
  28777. default: break;
  28778. case 'd': // 1 string to match.
  28779. return Intrinsic::nvvm_rcp_rp_d; // "__nvvm_rcp_rp_d"
  28780. case 'f': // 1 string to match.
  28781. return Intrinsic::nvvm_rcp_rp_f; // "__nvvm_rcp_rp_f"
  28782. }
  28783. break;
  28784. case 'z': // 2 strings to match.
  28785. if (BuiltinName[13] != '_')
  28786. break;
  28787. switch (BuiltinName[14]) {
  28788. default: break;
  28789. case 'd': // 1 string to match.
  28790. return Intrinsic::nvvm_rcp_rz_d; // "__nvvm_rcp_rz_d"
  28791. case 'f': // 1 string to match.
  28792. return Intrinsic::nvvm_rcp_rz_f; // "__nvvm_rcp_rz_f"
  28793. }
  28794. break;
  28795. }
  28796. break;
  28797. case 'u': // 8 strings to match.
  28798. if (memcmp(BuiltinName.data()+8, "ll2", 3))
  28799. break;
  28800. switch (BuiltinName[11]) {
  28801. default: break;
  28802. case 'd': // 4 strings to match.
  28803. if (memcmp(BuiltinName.data()+12, "_r", 2))
  28804. break;
  28805. switch (BuiltinName[14]) {
  28806. default: break;
  28807. case 'm': // 1 string to match.
  28808. return Intrinsic::nvvm_ull2d_rm; // "__nvvm_ull2d_rm"
  28809. case 'n': // 1 string to match.
  28810. return Intrinsic::nvvm_ull2d_rn; // "__nvvm_ull2d_rn"
  28811. case 'p': // 1 string to match.
  28812. return Intrinsic::nvvm_ull2d_rp; // "__nvvm_ull2d_rp"
  28813. case 'z': // 1 string to match.
  28814. return Intrinsic::nvvm_ull2d_rz; // "__nvvm_ull2d_rz"
  28815. }
  28816. break;
  28817. case 'f': // 4 strings to match.
  28818. if (memcmp(BuiltinName.data()+12, "_r", 2))
  28819. break;
  28820. switch (BuiltinName[14]) {
  28821. default: break;
  28822. case 'm': // 1 string to match.
  28823. return Intrinsic::nvvm_ull2f_rm; // "__nvvm_ull2f_rm"
  28824. case 'n': // 1 string to match.
  28825. return Intrinsic::nvvm_ull2f_rn; // "__nvvm_ull2f_rn"
  28826. case 'p': // 1 string to match.
  28827. return Intrinsic::nvvm_ull2f_rp; // "__nvvm_ull2f_rp"
  28828. case 'z': // 1 string to match.
  28829. return Intrinsic::nvvm_ull2f_rz; // "__nvvm_ull2f_rz"
  28830. }
  28831. break;
  28832. }
  28833. break;
  28834. }
  28835. break;
  28836. case 16: // 11 strings to match.
  28837. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  28838. break;
  28839. switch (BuiltinName[7]) {
  28840. default: break;
  28841. case 'b': // 1 string to match.
  28842. if (memcmp(BuiltinName.data()+8, "ar0_popc", 8))
  28843. break;
  28844. return Intrinsic::nvvm_barrier0_popc; // "__nvvm_bar0_popc"
  28845. case 'm': // 2 strings to match.
  28846. switch (BuiltinName[8]) {
  28847. default: break;
  28848. case 'e': // 1 string to match.
  28849. if (memcmp(BuiltinName.data()+9, "mbar_gl", 7))
  28850. break;
  28851. return Intrinsic::nvvm_membar_gl; // "__nvvm_membar_gl"
  28852. case 'u': // 1 string to match.
  28853. if (memcmp(BuiltinName.data()+9, "lhi_ull", 7))
  28854. break;
  28855. return Intrinsic::nvvm_mulhi_ull; // "__nvvm_mulhi_ull"
  28856. }
  28857. break;
  28858. case 's': // 8 strings to match.
  28859. if (memcmp(BuiltinName.data()+8, "qrt_r", 5))
  28860. break;
  28861. switch (BuiltinName[13]) {
  28862. default: break;
  28863. case 'm': // 2 strings to match.
  28864. if (BuiltinName[14] != '_')
  28865. break;
  28866. switch (BuiltinName[15]) {
  28867. default: break;
  28868. case 'd': // 1 string to match.
  28869. return Intrinsic::nvvm_sqrt_rm_d; // "__nvvm_sqrt_rm_d"
  28870. case 'f': // 1 string to match.
  28871. return Intrinsic::nvvm_sqrt_rm_f; // "__nvvm_sqrt_rm_f"
  28872. }
  28873. break;
  28874. case 'n': // 2 strings to match.
  28875. if (BuiltinName[14] != '_')
  28876. break;
  28877. switch (BuiltinName[15]) {
  28878. default: break;
  28879. case 'd': // 1 string to match.
  28880. return Intrinsic::nvvm_sqrt_rn_d; // "__nvvm_sqrt_rn_d"
  28881. case 'f': // 1 string to match.
  28882. return Intrinsic::nvvm_sqrt_rn_f; // "__nvvm_sqrt_rn_f"
  28883. }
  28884. break;
  28885. case 'p': // 2 strings to match.
  28886. if (BuiltinName[14] != '_')
  28887. break;
  28888. switch (BuiltinName[15]) {
  28889. default: break;
  28890. case 'd': // 1 string to match.
  28891. return Intrinsic::nvvm_sqrt_rp_d; // "__nvvm_sqrt_rp_d"
  28892. case 'f': // 1 string to match.
  28893. return Intrinsic::nvvm_sqrt_rp_f; // "__nvvm_sqrt_rp_f"
  28894. }
  28895. break;
  28896. case 'z': // 2 strings to match.
  28897. if (BuiltinName[14] != '_')
  28898. break;
  28899. switch (BuiltinName[15]) {
  28900. default: break;
  28901. case 'd': // 1 string to match.
  28902. return Intrinsic::nvvm_sqrt_rz_d; // "__nvvm_sqrt_rz_d"
  28903. case 'f': // 1 string to match.
  28904. return Intrinsic::nvvm_sqrt_rz_f; // "__nvvm_sqrt_rz_f"
  28905. }
  28906. break;
  28907. }
  28908. break;
  28909. }
  28910. break;
  28911. case 17: // 17 strings to match.
  28912. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  28913. break;
  28914. switch (BuiltinName[7]) {
  28915. default: break;
  28916. case 'c': // 1 string to match.
  28917. if (memcmp(BuiltinName.data()+8, "eil_ftz_f", 9))
  28918. break;
  28919. return Intrinsic::nvvm_ceil_ftz_f; // "__nvvm_ceil_ftz_f"
  28920. case 'd': // 4 strings to match.
  28921. if (memcmp(BuiltinName.data()+8, "2f_r", 4))
  28922. break;
  28923. switch (BuiltinName[12]) {
  28924. default: break;
  28925. case 'm': // 1 string to match.
  28926. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28927. break;
  28928. return Intrinsic::nvvm_d2f_rm_ftz; // "__nvvm_d2f_rm_ftz"
  28929. case 'n': // 1 string to match.
  28930. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28931. break;
  28932. return Intrinsic::nvvm_d2f_rn_ftz; // "__nvvm_d2f_rn_ftz"
  28933. case 'p': // 1 string to match.
  28934. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28935. break;
  28936. return Intrinsic::nvvm_d2f_rp_ftz; // "__nvvm_d2f_rp_ftz"
  28937. case 'z': // 1 string to match.
  28938. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28939. break;
  28940. return Intrinsic::nvvm_d2f_rz_ftz; // "__nvvm_d2f_rz_ftz"
  28941. }
  28942. break;
  28943. case 'f': // 8 strings to match.
  28944. switch (BuiltinName[8]) {
  28945. default: break;
  28946. case '2': // 5 strings to match.
  28947. switch (BuiltinName[9]) {
  28948. default: break;
  28949. case 'h': // 1 string to match.
  28950. if (memcmp(BuiltinName.data()+10, "_rn_ftz", 7))
  28951. break;
  28952. return Intrinsic::nvvm_f2h_rn_ftz; // "__nvvm_f2h_rn_ftz"
  28953. case 'i': // 4 strings to match.
  28954. if (memcmp(BuiltinName.data()+10, "_r", 2))
  28955. break;
  28956. switch (BuiltinName[12]) {
  28957. default: break;
  28958. case 'm': // 1 string to match.
  28959. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28960. break;
  28961. return Intrinsic::nvvm_f2i_rm_ftz; // "__nvvm_f2i_rm_ftz"
  28962. case 'n': // 1 string to match.
  28963. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28964. break;
  28965. return Intrinsic::nvvm_f2i_rn_ftz; // "__nvvm_f2i_rn_ftz"
  28966. case 'p': // 1 string to match.
  28967. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28968. break;
  28969. return Intrinsic::nvvm_f2i_rp_ftz; // "__nvvm_f2i_rp_ftz"
  28970. case 'z': // 1 string to match.
  28971. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28972. break;
  28973. return Intrinsic::nvvm_f2i_rz_ftz; // "__nvvm_f2i_rz_ftz"
  28974. }
  28975. break;
  28976. }
  28977. break;
  28978. case 'a': // 1 string to match.
  28979. if (memcmp(BuiltinName.data()+9, "bs_ftz_f", 8))
  28980. break;
  28981. return Intrinsic::nvvm_fabs_ftz_f; // "__nvvm_fabs_ftz_f"
  28982. case 'm': // 2 strings to match.
  28983. switch (BuiltinName[9]) {
  28984. default: break;
  28985. case 'a': // 1 string to match.
  28986. if (memcmp(BuiltinName.data()+10, "x_ftz_f", 7))
  28987. break;
  28988. return Intrinsic::nvvm_fmax_ftz_f; // "__nvvm_fmax_ftz_f"
  28989. case 'i': // 1 string to match.
  28990. if (memcmp(BuiltinName.data()+10, "n_ftz_f", 7))
  28991. break;
  28992. return Intrinsic::nvvm_fmin_ftz_f; // "__nvvm_fmin_ftz_f"
  28993. }
  28994. break;
  28995. }
  28996. break;
  28997. case 'm': // 2 strings to match.
  28998. if (memcmp(BuiltinName.data()+8, "embar_", 6))
  28999. break;
  29000. switch (BuiltinName[14]) {
  29001. default: break;
  29002. case 'c': // 1 string to match.
  29003. if (memcmp(BuiltinName.data()+15, "ta", 2))
  29004. break;
  29005. return Intrinsic::nvvm_membar_cta; // "__nvvm_membar_cta"
  29006. case 's': // 1 string to match.
  29007. if (memcmp(BuiltinName.data()+15, "ys", 2))
  29008. break;
  29009. return Intrinsic::nvvm_membar_sys; // "__nvvm_membar_sys"
  29010. }
  29011. break;
  29012. case 's': // 2 strings to match.
  29013. if (memcmp(BuiltinName.data()+8, "aturate_", 8))
  29014. break;
  29015. switch (BuiltinName[16]) {
  29016. default: break;
  29017. case 'd': // 1 string to match.
  29018. return Intrinsic::nvvm_saturate_d; // "__nvvm_saturate_d"
  29019. case 'f': // 1 string to match.
  29020. return Intrinsic::nvvm_saturate_f; // "__nvvm_saturate_f"
  29021. }
  29022. break;
  29023. }
  29024. break;
  29025. case 18: // 13 strings to match.
  29026. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  29027. break;
  29028. switch (BuiltinName[7]) {
  29029. default: break;
  29030. case 'b': // 2 strings to match.
  29031. if (memcmp(BuiltinName.data()+8, "itcast_", 7))
  29032. break;
  29033. switch (BuiltinName[15]) {
  29034. default: break;
  29035. case 'f': // 1 string to match.
  29036. if (memcmp(BuiltinName.data()+16, "2i", 2))
  29037. break;
  29038. return Intrinsic::nvvm_bitcast_f2i; // "__nvvm_bitcast_f2i"
  29039. case 'i': // 1 string to match.
  29040. if (memcmp(BuiltinName.data()+16, "2f", 2))
  29041. break;
  29042. return Intrinsic::nvvm_bitcast_i2f; // "__nvvm_bitcast_i2f"
  29043. }
  29044. break;
  29045. case 'f': // 9 strings to match.
  29046. switch (BuiltinName[8]) {
  29047. default: break;
  29048. case '2': // 8 strings to match.
  29049. switch (BuiltinName[9]) {
  29050. default: break;
  29051. case 'l': // 4 strings to match.
  29052. if (memcmp(BuiltinName.data()+10, "l_r", 3))
  29053. break;
  29054. switch (BuiltinName[13]) {
  29055. default: break;
  29056. case 'm': // 1 string to match.
  29057. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29058. break;
  29059. return Intrinsic::nvvm_f2ll_rm_ftz; // "__nvvm_f2ll_rm_ftz"
  29060. case 'n': // 1 string to match.
  29061. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29062. break;
  29063. return Intrinsic::nvvm_f2ll_rn_ftz; // "__nvvm_f2ll_rn_ftz"
  29064. case 'p': // 1 string to match.
  29065. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29066. break;
  29067. return Intrinsic::nvvm_f2ll_rp_ftz; // "__nvvm_f2ll_rp_ftz"
  29068. case 'z': // 1 string to match.
  29069. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29070. break;
  29071. return Intrinsic::nvvm_f2ll_rz_ftz; // "__nvvm_f2ll_rz_ftz"
  29072. }
  29073. break;
  29074. case 'u': // 4 strings to match.
  29075. if (memcmp(BuiltinName.data()+10, "i_r", 3))
  29076. break;
  29077. switch (BuiltinName[13]) {
  29078. default: break;
  29079. case 'm': // 1 string to match.
  29080. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29081. break;
  29082. return Intrinsic::nvvm_f2ui_rm_ftz; // "__nvvm_f2ui_rm_ftz"
  29083. case 'n': // 1 string to match.
  29084. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29085. break;
  29086. return Intrinsic::nvvm_f2ui_rn_ftz; // "__nvvm_f2ui_rn_ftz"
  29087. case 'p': // 1 string to match.
  29088. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29089. break;
  29090. return Intrinsic::nvvm_f2ui_rp_ftz; // "__nvvm_f2ui_rp_ftz"
  29091. case 'z': // 1 string to match.
  29092. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  29093. break;
  29094. return Intrinsic::nvvm_f2ui_rz_ftz; // "__nvvm_f2ui_rz_ftz"
  29095. }
  29096. break;
  29097. }
  29098. break;
  29099. case 'l': // 1 string to match.
  29100. if (memcmp(BuiltinName.data()+9, "oor_ftz_f", 9))
  29101. break;
  29102. return Intrinsic::nvvm_floor_ftz_f; // "__nvvm_floor_ftz_f"
  29103. }
  29104. break;
  29105. case 'r': // 1 string to match.
  29106. if (memcmp(BuiltinName.data()+8, "ound_ftz_f", 10))
  29107. break;
  29108. return Intrinsic::nvvm_round_ftz_f; // "__nvvm_round_ftz_f"
  29109. case 't': // 1 string to match.
  29110. if (memcmp(BuiltinName.data()+8, "runc_ftz_f", 10))
  29111. break;
  29112. return Intrinsic::nvvm_trunc_ftz_f; // "__nvvm_trunc_ftz_f"
  29113. }
  29114. break;
  29115. case 19: // 34 strings to match.
  29116. if (memcmp(BuiltinName.data()+0, "__", 2))
  29117. break;
  29118. switch (BuiltinName[2]) {
  29119. default: break;
  29120. case 'b': // 1 string to match.
  29121. if (memcmp(BuiltinName.data()+3, "uiltin_debugtrap", 16))
  29122. break;
  29123. return Intrinsic::debugtrap; // "__builtin_debugtrap"
  29124. case 'n': // 33 strings to match.
  29125. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  29126. break;
  29127. switch (BuiltinName[7]) {
  29128. default: break;
  29129. case 'a': // 4 strings to match.
  29130. if (memcmp(BuiltinName.data()+8, "dd_r", 4))
  29131. break;
  29132. switch (BuiltinName[12]) {
  29133. default: break;
  29134. case 'm': // 1 string to match.
  29135. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29136. break;
  29137. return Intrinsic::nvvm_add_rm_ftz_f; // "__nvvm_add_rm_ftz_f"
  29138. case 'n': // 1 string to match.
  29139. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29140. break;
  29141. return Intrinsic::nvvm_add_rn_ftz_f; // "__nvvm_add_rn_ftz_f"
  29142. case 'p': // 1 string to match.
  29143. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29144. break;
  29145. return Intrinsic::nvvm_add_rp_ftz_f; // "__nvvm_add_rp_ftz_f"
  29146. case 'z': // 1 string to match.
  29147. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29148. break;
  29149. return Intrinsic::nvvm_add_rz_ftz_f; // "__nvvm_add_rz_ftz_f"
  29150. }
  29151. break;
  29152. case 'b': // 2 strings to match.
  29153. if (memcmp(BuiltinName.data()+8, "itcast_", 7))
  29154. break;
  29155. switch (BuiltinName[15]) {
  29156. default: break;
  29157. case 'd': // 1 string to match.
  29158. if (memcmp(BuiltinName.data()+16, "2ll", 3))
  29159. break;
  29160. return Intrinsic::nvvm_bitcast_d2ll; // "__nvvm_bitcast_d2ll"
  29161. case 'l': // 1 string to match.
  29162. if (memcmp(BuiltinName.data()+16, "l2d", 3))
  29163. break;
  29164. return Intrinsic::nvvm_bitcast_ll2d; // "__nvvm_bitcast_ll2d"
  29165. }
  29166. break;
  29167. case 'c': // 1 string to match.
  29168. if (memcmp(BuiltinName.data()+8, "os_approx_f", 11))
  29169. break;
  29170. return Intrinsic::nvvm_cos_approx_f; // "__nvvm_cos_approx_f"
  29171. case 'd': // 5 strings to match.
  29172. if (memcmp(BuiltinName.data()+8, "iv_", 3))
  29173. break;
  29174. switch (BuiltinName[11]) {
  29175. default: break;
  29176. case 'a': // 1 string to match.
  29177. if (memcmp(BuiltinName.data()+12, "pprox_f", 7))
  29178. break;
  29179. return Intrinsic::nvvm_div_approx_f; // "__nvvm_div_approx_f"
  29180. case 'r': // 4 strings to match.
  29181. switch (BuiltinName[12]) {
  29182. default: break;
  29183. case 'm': // 1 string to match.
  29184. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29185. break;
  29186. return Intrinsic::nvvm_div_rm_ftz_f; // "__nvvm_div_rm_ftz_f"
  29187. case 'n': // 1 string to match.
  29188. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29189. break;
  29190. return Intrinsic::nvvm_div_rn_ftz_f; // "__nvvm_div_rn_ftz_f"
  29191. case 'p': // 1 string to match.
  29192. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29193. break;
  29194. return Intrinsic::nvvm_div_rp_ftz_f; // "__nvvm_div_rp_ftz_f"
  29195. case 'z': // 1 string to match.
  29196. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29197. break;
  29198. return Intrinsic::nvvm_div_rz_ftz_f; // "__nvvm_div_rz_ftz_f"
  29199. }
  29200. break;
  29201. }
  29202. break;
  29203. case 'e': // 2 strings to match.
  29204. if (memcmp(BuiltinName.data()+8, "x2_approx_", 10))
  29205. break;
  29206. switch (BuiltinName[18]) {
  29207. default: break;
  29208. case 'd': // 1 string to match.
  29209. return Intrinsic::nvvm_ex2_approx_d; // "__nvvm_ex2_approx_d"
  29210. case 'f': // 1 string to match.
  29211. return Intrinsic::nvvm_ex2_approx_f; // "__nvvm_ex2_approx_f"
  29212. }
  29213. break;
  29214. case 'f': // 8 strings to match.
  29215. switch (BuiltinName[8]) {
  29216. default: break;
  29217. case '2': // 4 strings to match.
  29218. if (memcmp(BuiltinName.data()+9, "ull_r", 5))
  29219. break;
  29220. switch (BuiltinName[14]) {
  29221. default: break;
  29222. case 'm': // 1 string to match.
  29223. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  29224. break;
  29225. return Intrinsic::nvvm_f2ull_rm_ftz; // "__nvvm_f2ull_rm_ftz"
  29226. case 'n': // 1 string to match.
  29227. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  29228. break;
  29229. return Intrinsic::nvvm_f2ull_rn_ftz; // "__nvvm_f2ull_rn_ftz"
  29230. case 'p': // 1 string to match.
  29231. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  29232. break;
  29233. return Intrinsic::nvvm_f2ull_rp_ftz; // "__nvvm_f2ull_rp_ftz"
  29234. case 'z': // 1 string to match.
  29235. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  29236. break;
  29237. return Intrinsic::nvvm_f2ull_rz_ftz; // "__nvvm_f2ull_rz_ftz"
  29238. }
  29239. break;
  29240. case 'm': // 4 strings to match.
  29241. if (memcmp(BuiltinName.data()+9, "a_r", 3))
  29242. break;
  29243. switch (BuiltinName[12]) {
  29244. default: break;
  29245. case 'm': // 1 string to match.
  29246. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29247. break;
  29248. return Intrinsic::nvvm_fma_rm_ftz_f; // "__nvvm_fma_rm_ftz_f"
  29249. case 'n': // 1 string to match.
  29250. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29251. break;
  29252. return Intrinsic::nvvm_fma_rn_ftz_f; // "__nvvm_fma_rn_ftz_f"
  29253. case 'p': // 1 string to match.
  29254. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29255. break;
  29256. return Intrinsic::nvvm_fma_rp_ftz_f; // "__nvvm_fma_rp_ftz_f"
  29257. case 'z': // 1 string to match.
  29258. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29259. break;
  29260. return Intrinsic::nvvm_fma_rz_ftz_f; // "__nvvm_fma_rz_ftz_f"
  29261. }
  29262. break;
  29263. }
  29264. break;
  29265. case 'l': // 2 strings to match.
  29266. if (memcmp(BuiltinName.data()+8, "g2_approx_", 10))
  29267. break;
  29268. switch (BuiltinName[18]) {
  29269. default: break;
  29270. case 'd': // 1 string to match.
  29271. return Intrinsic::nvvm_lg2_approx_d; // "__nvvm_lg2_approx_d"
  29272. case 'f': // 1 string to match.
  29273. return Intrinsic::nvvm_lg2_approx_f; // "__nvvm_lg2_approx_f"
  29274. }
  29275. break;
  29276. case 'm': // 4 strings to match.
  29277. if (memcmp(BuiltinName.data()+8, "ul_r", 4))
  29278. break;
  29279. switch (BuiltinName[12]) {
  29280. default: break;
  29281. case 'm': // 1 string to match.
  29282. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29283. break;
  29284. return Intrinsic::nvvm_mul_rm_ftz_f; // "__nvvm_mul_rm_ftz_f"
  29285. case 'n': // 1 string to match.
  29286. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29287. break;
  29288. return Intrinsic::nvvm_mul_rn_ftz_f; // "__nvvm_mul_rn_ftz_f"
  29289. case 'p': // 1 string to match.
  29290. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29291. break;
  29292. return Intrinsic::nvvm_mul_rp_ftz_f; // "__nvvm_mul_rp_ftz_f"
  29293. case 'z': // 1 string to match.
  29294. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29295. break;
  29296. return Intrinsic::nvvm_mul_rz_ftz_f; // "__nvvm_mul_rz_ftz_f"
  29297. }
  29298. break;
  29299. case 'r': // 4 strings to match.
  29300. if (memcmp(BuiltinName.data()+8, "cp_r", 4))
  29301. break;
  29302. switch (BuiltinName[12]) {
  29303. default: break;
  29304. case 'm': // 1 string to match.
  29305. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29306. break;
  29307. return Intrinsic::nvvm_rcp_rm_ftz_f; // "__nvvm_rcp_rm_ftz_f"
  29308. case 'n': // 1 string to match.
  29309. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29310. break;
  29311. return Intrinsic::nvvm_rcp_rn_ftz_f; // "__nvvm_rcp_rn_ftz_f"
  29312. case 'p': // 1 string to match.
  29313. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29314. break;
  29315. return Intrinsic::nvvm_rcp_rp_ftz_f; // "__nvvm_rcp_rp_ftz_f"
  29316. case 'z': // 1 string to match.
  29317. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  29318. break;
  29319. return Intrinsic::nvvm_rcp_rz_ftz_f; // "__nvvm_rcp_rz_ftz_f"
  29320. }
  29321. break;
  29322. case 's': // 1 string to match.
  29323. if (memcmp(BuiltinName.data()+8, "in_approx_f", 11))
  29324. break;
  29325. return Intrinsic::nvvm_sin_approx_f; // "__nvvm_sin_approx_f"
  29326. }
  29327. break;
  29328. }
  29329. break;
  29330. case 20: // 7 strings to match.
  29331. if (memcmp(BuiltinName.data()+0, "__", 2))
  29332. break;
  29333. switch (BuiltinName[2]) {
  29334. default: break;
  29335. case 'b': // 2 strings to match.
  29336. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29337. break;
  29338. switch (BuiltinName[10]) {
  29339. default: break;
  29340. case 'f': // 1 string to match.
  29341. if (memcmp(BuiltinName.data()+11, "lt_rounds", 9))
  29342. break;
  29343. return Intrinsic::flt_rounds; // "__builtin_flt_rounds"
  29344. case 's': // 1 string to match.
  29345. if (memcmp(BuiltinName.data()+11, "tack_save", 9))
  29346. break;
  29347. return Intrinsic::stacksave; // "__builtin_stack_save"
  29348. }
  29349. break;
  29350. case 'n': // 5 strings to match.
  29351. if (memcmp(BuiltinName.data()+3, "vvm_sqrt_", 9))
  29352. break;
  29353. switch (BuiltinName[12]) {
  29354. default: break;
  29355. case 'a': // 1 string to match.
  29356. if (memcmp(BuiltinName.data()+13, "pprox_f", 7))
  29357. break;
  29358. return Intrinsic::nvvm_sqrt_approx_f; // "__nvvm_sqrt_approx_f"
  29359. case 'r': // 4 strings to match.
  29360. switch (BuiltinName[13]) {
  29361. default: break;
  29362. case 'm': // 1 string to match.
  29363. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  29364. break;
  29365. return Intrinsic::nvvm_sqrt_rm_ftz_f; // "__nvvm_sqrt_rm_ftz_f"
  29366. case 'n': // 1 string to match.
  29367. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  29368. break;
  29369. return Intrinsic::nvvm_sqrt_rn_ftz_f; // "__nvvm_sqrt_rn_ftz_f"
  29370. case 'p': // 1 string to match.
  29371. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  29372. break;
  29373. return Intrinsic::nvvm_sqrt_rp_ftz_f; // "__nvvm_sqrt_rp_ftz_f"
  29374. case 'z': // 1 string to match.
  29375. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  29376. break;
  29377. return Intrinsic::nvvm_sqrt_rz_ftz_f; // "__nvvm_sqrt_rz_ftz_f"
  29378. }
  29379. break;
  29380. }
  29381. break;
  29382. }
  29383. break;
  29384. case 21: // 23 strings to match.
  29385. if (memcmp(BuiltinName.data()+0, "__", 2))
  29386. break;
  29387. switch (BuiltinName[2]) {
  29388. default: break;
  29389. case 'b': // 20 strings to match.
  29390. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29391. break;
  29392. switch (BuiltinName[10]) {
  29393. default: break;
  29394. case 'i': // 18 strings to match.
  29395. if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
  29396. break;
  29397. switch (BuiltinName[17]) {
  29398. default: break;
  29399. case 'c': // 5 strings to match.
  29400. switch (BuiltinName[18]) {
  29401. default: break;
  29402. case 'm': // 1 string to match.
  29403. if (memcmp(BuiltinName.data()+19, "ov", 2))
  29404. break;
  29405. return Intrinsic::x86_xop_vpcmov; // "__builtin_ia32_vpcmov"
  29406. case 'o': // 4 strings to match.
  29407. if (BuiltinName[19] != 'm')
  29408. break;
  29409. switch (BuiltinName[20]) {
  29410. default: break;
  29411. case 'b': // 1 string to match.
  29412. return Intrinsic::x86_xop_vpcomb; // "__builtin_ia32_vpcomb"
  29413. case 'd': // 1 string to match.
  29414. return Intrinsic::x86_xop_vpcomd; // "__builtin_ia32_vpcomd"
  29415. case 'q': // 1 string to match.
  29416. return Intrinsic::x86_xop_vpcomq; // "__builtin_ia32_vpcomq"
  29417. case 'w': // 1 string to match.
  29418. return Intrinsic::x86_xop_vpcomw; // "__builtin_ia32_vpcomw"
  29419. }
  29420. break;
  29421. }
  29422. break;
  29423. case 'p': // 1 string to match.
  29424. if (memcmp(BuiltinName.data()+18, "erm", 3))
  29425. break;
  29426. return Intrinsic::x86_xop_vpperm; // "__builtin_ia32_vpperm"
  29427. case 'r': // 4 strings to match.
  29428. if (memcmp(BuiltinName.data()+18, "ot", 2))
  29429. break;
  29430. switch (BuiltinName[20]) {
  29431. default: break;
  29432. case 'b': // 1 string to match.
  29433. return Intrinsic::x86_xop_vprotb; // "__builtin_ia32_vprotb"
  29434. case 'd': // 1 string to match.
  29435. return Intrinsic::x86_xop_vprotd; // "__builtin_ia32_vprotd"
  29436. case 'q': // 1 string to match.
  29437. return Intrinsic::x86_xop_vprotq; // "__builtin_ia32_vprotq"
  29438. case 'w': // 1 string to match.
  29439. return Intrinsic::x86_xop_vprotw; // "__builtin_ia32_vprotw"
  29440. }
  29441. break;
  29442. case 's': // 8 strings to match.
  29443. if (BuiltinName[18] != 'h')
  29444. break;
  29445. switch (BuiltinName[19]) {
  29446. default: break;
  29447. case 'a': // 4 strings to match.
  29448. switch (BuiltinName[20]) {
  29449. default: break;
  29450. case 'b': // 1 string to match.
  29451. return Intrinsic::x86_xop_vpshab; // "__builtin_ia32_vpshab"
  29452. case 'd': // 1 string to match.
  29453. return Intrinsic::x86_xop_vpshad; // "__builtin_ia32_vpshad"
  29454. case 'q': // 1 string to match.
  29455. return Intrinsic::x86_xop_vpshaq; // "__builtin_ia32_vpshaq"
  29456. case 'w': // 1 string to match.
  29457. return Intrinsic::x86_xop_vpshaw; // "__builtin_ia32_vpshaw"
  29458. }
  29459. break;
  29460. case 'l': // 4 strings to match.
  29461. switch (BuiltinName[20]) {
  29462. default: break;
  29463. case 'b': // 1 string to match.
  29464. return Intrinsic::x86_xop_vpshlb; // "__builtin_ia32_vpshlb"
  29465. case 'd': // 1 string to match.
  29466. return Intrinsic::x86_xop_vpshld; // "__builtin_ia32_vpshld"
  29467. case 'q': // 1 string to match.
  29468. return Intrinsic::x86_xop_vpshlq; // "__builtin_ia32_vpshlq"
  29469. case 'w': // 1 string to match.
  29470. return Intrinsic::x86_xop_vpshlw; // "__builtin_ia32_vpshlw"
  29471. }
  29472. break;
  29473. }
  29474. break;
  29475. }
  29476. break;
  29477. case 'o': // 1 string to match.
  29478. if (memcmp(BuiltinName.data()+11, "bject_size", 10))
  29479. break;
  29480. return Intrinsic::objectsize; // "__builtin_object_size"
  29481. case 'u': // 1 string to match.
  29482. if (memcmp(BuiltinName.data()+11, "nwind_init", 10))
  29483. break;
  29484. return Intrinsic::eh_unwind_init; // "__builtin_unwind_init"
  29485. }
  29486. break;
  29487. case 'n': // 3 strings to match.
  29488. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  29489. break;
  29490. switch (BuiltinName[7]) {
  29491. default: break;
  29492. case 'r': // 2 strings to match.
  29493. if (memcmp(BuiltinName.data()+8, "sqrt_approx_", 12))
  29494. break;
  29495. switch (BuiltinName[20]) {
  29496. default: break;
  29497. case 'd': // 1 string to match.
  29498. return Intrinsic::nvvm_rsqrt_approx_d; // "__nvvm_rsqrt_approx_d"
  29499. case 'f': // 1 string to match.
  29500. return Intrinsic::nvvm_rsqrt_approx_f; // "__nvvm_rsqrt_approx_f"
  29501. }
  29502. break;
  29503. case 's': // 1 string to match.
  29504. if (memcmp(BuiltinName.data()+8, "aturate_ftz_f", 13))
  29505. break;
  29506. return Intrinsic::nvvm_saturate_ftz_f; // "__nvvm_saturate_ftz_f"
  29507. }
  29508. break;
  29509. }
  29510. break;
  29511. case 22: // 17 strings to match.
  29512. if (memcmp(BuiltinName.data()+0, "__builtin_", 10))
  29513. break;
  29514. switch (BuiltinName[10]) {
  29515. default: break;
  29516. case 'i': // 12 strings to match.
  29517. if (memcmp(BuiltinName.data()+11, "a32_v", 5))
  29518. break;
  29519. switch (BuiltinName[16]) {
  29520. default: break;
  29521. case 'f': // 4 strings to match.
  29522. if (memcmp(BuiltinName.data()+17, "rcz", 3))
  29523. break;
  29524. switch (BuiltinName[20]) {
  29525. default: break;
  29526. case 'p': // 2 strings to match.
  29527. switch (BuiltinName[21]) {
  29528. default: break;
  29529. case 'd': // 1 string to match.
  29530. return Intrinsic::x86_xop_vfrcz_pd; // "__builtin_ia32_vfrczpd"
  29531. case 's': // 1 string to match.
  29532. return Intrinsic::x86_xop_vfrcz_ps; // "__builtin_ia32_vfrczps"
  29533. }
  29534. break;
  29535. case 's': // 2 strings to match.
  29536. switch (BuiltinName[21]) {
  29537. default: break;
  29538. case 'd': // 1 string to match.
  29539. return Intrinsic::x86_xop_vfrcz_sd; // "__builtin_ia32_vfrczsd"
  29540. case 's': // 1 string to match.
  29541. return Intrinsic::x86_xop_vfrcz_ss; // "__builtin_ia32_vfrczss"
  29542. }
  29543. break;
  29544. }
  29545. break;
  29546. case 'p': // 8 strings to match.
  29547. switch (BuiltinName[17]) {
  29548. default: break;
  29549. case 'c': // 4 strings to match.
  29550. if (memcmp(BuiltinName.data()+18, "omu", 3))
  29551. break;
  29552. switch (BuiltinName[21]) {
  29553. default: break;
  29554. case 'b': // 1 string to match.
  29555. return Intrinsic::x86_xop_vpcomub; // "__builtin_ia32_vpcomub"
  29556. case 'd': // 1 string to match.
  29557. return Intrinsic::x86_xop_vpcomud; // "__builtin_ia32_vpcomud"
  29558. case 'q': // 1 string to match.
  29559. return Intrinsic::x86_xop_vpcomuq; // "__builtin_ia32_vpcomuq"
  29560. case 'w': // 1 string to match.
  29561. return Intrinsic::x86_xop_vpcomuw; // "__builtin_ia32_vpcomuw"
  29562. }
  29563. break;
  29564. case 'r': // 4 strings to match.
  29565. if (memcmp(BuiltinName.data()+18, "ot", 2))
  29566. break;
  29567. switch (BuiltinName[20]) {
  29568. default: break;
  29569. case 'b': // 1 string to match.
  29570. if (BuiltinName[21] != 'i')
  29571. break;
  29572. return Intrinsic::x86_xop_vprotbi; // "__builtin_ia32_vprotbi"
  29573. case 'd': // 1 string to match.
  29574. if (BuiltinName[21] != 'i')
  29575. break;
  29576. return Intrinsic::x86_xop_vprotdi; // "__builtin_ia32_vprotdi"
  29577. case 'q': // 1 string to match.
  29578. if (BuiltinName[21] != 'i')
  29579. break;
  29580. return Intrinsic::x86_xop_vprotqi; // "__builtin_ia32_vprotqi"
  29581. case 'w': // 1 string to match.
  29582. if (BuiltinName[21] != 'i')
  29583. break;
  29584. return Intrinsic::x86_xop_vprotwi; // "__builtin_ia32_vprotwi"
  29585. }
  29586. break;
  29587. }
  29588. break;
  29589. }
  29590. break;
  29591. case 'p': // 5 strings to match.
  29592. if (memcmp(BuiltinName.data()+11, "tx_", 3))
  29593. break;
  29594. switch (BuiltinName[14]) {
  29595. default: break;
  29596. case 'b': // 1 string to match.
  29597. if (memcmp(BuiltinName.data()+15, "ar_sync", 7))
  29598. break;
  29599. return Intrinsic::ptx_bar_sync; // "__builtin_ptx_bar_sync"
  29600. case 'r': // 4 strings to match.
  29601. if (memcmp(BuiltinName.data()+15, "ead_pm", 6))
  29602. break;
  29603. switch (BuiltinName[21]) {
  29604. default: break;
  29605. case '0': // 1 string to match.
  29606. return Intrinsic::ptx_read_pm0; // "__builtin_ptx_read_pm0"
  29607. case '1': // 1 string to match.
  29608. return Intrinsic::ptx_read_pm1; // "__builtin_ptx_read_pm1"
  29609. case '2': // 1 string to match.
  29610. return Intrinsic::ptx_read_pm2; // "__builtin_ptx_read_pm2"
  29611. case '3': // 1 string to match.
  29612. return Intrinsic::ptx_read_pm3; // "__builtin_ptx_read_pm3"
  29613. }
  29614. break;
  29615. }
  29616. break;
  29617. }
  29618. break;
  29619. case 23: // 20 strings to match.
  29620. if (memcmp(BuiltinName.data()+0, "__", 2))
  29621. break;
  29622. switch (BuiltinName[2]) {
  29623. default: break;
  29624. case 'b': // 14 strings to match.
  29625. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29626. break;
  29627. switch (BuiltinName[10]) {
  29628. default: break;
  29629. case 'i': // 12 strings to match.
  29630. if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
  29631. break;
  29632. switch (BuiltinName[17]) {
  29633. default: break;
  29634. case 'h': // 9 strings to match.
  29635. switch (BuiltinName[18]) {
  29636. default: break;
  29637. case 'a': // 6 strings to match.
  29638. if (memcmp(BuiltinName.data()+19, "dd", 2))
  29639. break;
  29640. switch (BuiltinName[21]) {
  29641. default: break;
  29642. case 'b': // 3 strings to match.
  29643. switch (BuiltinName[22]) {
  29644. default: break;
  29645. case 'd': // 1 string to match.
  29646. return Intrinsic::x86_xop_vphaddbd; // "__builtin_ia32_vphaddbd"
  29647. case 'q': // 1 string to match.
  29648. return Intrinsic::x86_xop_vphaddbq; // "__builtin_ia32_vphaddbq"
  29649. case 'w': // 1 string to match.
  29650. return Intrinsic::x86_xop_vphaddbw; // "__builtin_ia32_vphaddbw"
  29651. }
  29652. break;
  29653. case 'd': // 1 string to match.
  29654. if (BuiltinName[22] != 'q')
  29655. break;
  29656. return Intrinsic::x86_xop_vphadddq; // "__builtin_ia32_vphadddq"
  29657. case 'w': // 2 strings to match.
  29658. switch (BuiltinName[22]) {
  29659. default: break;
  29660. case 'd': // 1 string to match.
  29661. return Intrinsic::x86_xop_vphaddwd; // "__builtin_ia32_vphaddwd"
  29662. case 'q': // 1 string to match.
  29663. return Intrinsic::x86_xop_vphaddwq; // "__builtin_ia32_vphaddwq"
  29664. }
  29665. break;
  29666. }
  29667. break;
  29668. case 's': // 3 strings to match.
  29669. if (memcmp(BuiltinName.data()+19, "ub", 2))
  29670. break;
  29671. switch (BuiltinName[21]) {
  29672. default: break;
  29673. case 'b': // 1 string to match.
  29674. if (BuiltinName[22] != 'w')
  29675. break;
  29676. return Intrinsic::x86_xop_vphsubbw; // "__builtin_ia32_vphsubbw"
  29677. case 'd': // 1 string to match.
  29678. if (BuiltinName[22] != 'q')
  29679. break;
  29680. return Intrinsic::x86_xop_vphsubdq; // "__builtin_ia32_vphsubdq"
  29681. case 'w': // 1 string to match.
  29682. if (BuiltinName[22] != 'd')
  29683. break;
  29684. return Intrinsic::x86_xop_vphsubwd; // "__builtin_ia32_vphsubwd"
  29685. }
  29686. break;
  29687. }
  29688. break;
  29689. case 'm': // 3 strings to match.
  29690. if (memcmp(BuiltinName.data()+18, "acs", 3))
  29691. break;
  29692. switch (BuiltinName[21]) {
  29693. default: break;
  29694. case 'd': // 1 string to match.
  29695. if (BuiltinName[22] != 'd')
  29696. break;
  29697. return Intrinsic::x86_xop_vpmacsdd; // "__builtin_ia32_vpmacsdd"
  29698. case 'w': // 2 strings to match.
  29699. switch (BuiltinName[22]) {
  29700. default: break;
  29701. case 'd': // 1 string to match.
  29702. return Intrinsic::x86_xop_vpmacswd; // "__builtin_ia32_vpmacswd"
  29703. case 'w': // 1 string to match.
  29704. return Intrinsic::x86_xop_vpmacsww; // "__builtin_ia32_vpmacsww"
  29705. }
  29706. break;
  29707. }
  29708. break;
  29709. }
  29710. break;
  29711. case 'p': // 1 string to match.
  29712. if (memcmp(BuiltinName.data()+11, "tx_read_smid", 12))
  29713. break;
  29714. return Intrinsic::ptx_read_smid; // "__builtin_ptx_read_smid"
  29715. case 's': // 1 string to match.
  29716. if (memcmp(BuiltinName.data()+11, "tack_restore", 12))
  29717. break;
  29718. return Intrinsic::stackrestore; // "__builtin_stack_restore"
  29719. }
  29720. break;
  29721. case 'n': // 6 strings to match.
  29722. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  29723. break;
  29724. switch (BuiltinName[7]) {
  29725. default: break;
  29726. case 'c': // 1 string to match.
  29727. if (memcmp(BuiltinName.data()+8, "os_approx_ftz_f", 15))
  29728. break;
  29729. return Intrinsic::nvvm_cos_approx_ftz_f; // "__nvvm_cos_approx_ftz_f"
  29730. case 'd': // 1 string to match.
  29731. if (memcmp(BuiltinName.data()+8, "iv_approx_ftz_f", 15))
  29732. break;
  29733. return Intrinsic::nvvm_div_approx_ftz_f; // "__nvvm_div_approx_ftz_f"
  29734. case 'e': // 1 string to match.
  29735. if (memcmp(BuiltinName.data()+8, "x2_approx_ftz_f", 15))
  29736. break;
  29737. return Intrinsic::nvvm_ex2_approx_ftz_f; // "__nvvm_ex2_approx_ftz_f"
  29738. case 'l': // 1 string to match.
  29739. if (memcmp(BuiltinName.data()+8, "g2_approx_ftz_f", 15))
  29740. break;
  29741. return Intrinsic::nvvm_lg2_approx_ftz_f; // "__nvvm_lg2_approx_ftz_f"
  29742. case 'r': // 1 string to match.
  29743. if (memcmp(BuiltinName.data()+8, "cp_approx_ftz_d", 15))
  29744. break;
  29745. return Intrinsic::nvvm_rcp_approx_ftz_d; // "__nvvm_rcp_approx_ftz_d"
  29746. case 's': // 1 string to match.
  29747. if (memcmp(BuiltinName.data()+8, "in_approx_ftz_f", 15))
  29748. break;
  29749. return Intrinsic::nvvm_sin_approx_ftz_f; // "__nvvm_sin_approx_ftz_f"
  29750. }
  29751. break;
  29752. }
  29753. break;
  29754. case 24: // 19 strings to match.
  29755. if (memcmp(BuiltinName.data()+0, "__", 2))
  29756. break;
  29757. switch (BuiltinName[2]) {
  29758. default: break;
  29759. case 'b': // 18 strings to match.
  29760. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29761. break;
  29762. switch (BuiltinName[10]) {
  29763. default: break;
  29764. case 'i': // 12 strings to match.
  29765. if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
  29766. break;
  29767. switch (BuiltinName[17]) {
  29768. default: break;
  29769. case 'h': // 6 strings to match.
  29770. if (memcmp(BuiltinName.data()+18, "addu", 4))
  29771. break;
  29772. switch (BuiltinName[22]) {
  29773. default: break;
  29774. case 'b': // 3 strings to match.
  29775. switch (BuiltinName[23]) {
  29776. default: break;
  29777. case 'd': // 1 string to match.
  29778. return Intrinsic::x86_xop_vphaddubd; // "__builtin_ia32_vphaddubd"
  29779. case 'q': // 1 string to match.
  29780. return Intrinsic::x86_xop_vphaddubq; // "__builtin_ia32_vphaddubq"
  29781. case 'w': // 1 string to match.
  29782. return Intrinsic::x86_xop_vphaddubw; // "__builtin_ia32_vphaddubw"
  29783. }
  29784. break;
  29785. case 'd': // 1 string to match.
  29786. if (BuiltinName[23] != 'q')
  29787. break;
  29788. return Intrinsic::x86_xop_vphaddudq; // "__builtin_ia32_vphaddudq"
  29789. case 'w': // 2 strings to match.
  29790. switch (BuiltinName[23]) {
  29791. default: break;
  29792. case 'd': // 1 string to match.
  29793. return Intrinsic::x86_xop_vphadduwd; // "__builtin_ia32_vphadduwd"
  29794. case 'q': // 1 string to match.
  29795. return Intrinsic::x86_xop_vphadduwq; // "__builtin_ia32_vphadduwq"
  29796. }
  29797. break;
  29798. }
  29799. break;
  29800. case 'm': // 6 strings to match.
  29801. if (BuiltinName[18] != 'a')
  29802. break;
  29803. switch (BuiltinName[19]) {
  29804. default: break;
  29805. case 'c': // 5 strings to match.
  29806. if (BuiltinName[20] != 's')
  29807. break;
  29808. switch (BuiltinName[21]) {
  29809. default: break;
  29810. case 'd': // 2 strings to match.
  29811. if (BuiltinName[22] != 'q')
  29812. break;
  29813. switch (BuiltinName[23]) {
  29814. default: break;
  29815. case 'h': // 1 string to match.
  29816. return Intrinsic::x86_xop_vpmacsdqh; // "__builtin_ia32_vpmacsdqh"
  29817. case 'l': // 1 string to match.
  29818. return Intrinsic::x86_xop_vpmacsdql; // "__builtin_ia32_vpmacsdql"
  29819. }
  29820. break;
  29821. case 's': // 3 strings to match.
  29822. switch (BuiltinName[22]) {
  29823. default: break;
  29824. case 'd': // 1 string to match.
  29825. if (BuiltinName[23] != 'd')
  29826. break;
  29827. return Intrinsic::x86_xop_vpmacssdd; // "__builtin_ia32_vpmacssdd"
  29828. case 'w': // 2 strings to match.
  29829. switch (BuiltinName[23]) {
  29830. default: break;
  29831. case 'd': // 1 string to match.
  29832. return Intrinsic::x86_xop_vpmacsswd; // "__builtin_ia32_vpmacsswd"
  29833. case 'w': // 1 string to match.
  29834. return Intrinsic::x86_xop_vpmacssww; // "__builtin_ia32_vpmacssww"
  29835. }
  29836. break;
  29837. }
  29838. break;
  29839. }
  29840. break;
  29841. case 'd': // 1 string to match.
  29842. if (memcmp(BuiltinName.data()+20, "cswd", 4))
  29843. break;
  29844. return Intrinsic::x86_xop_vpmadcswd; // "__builtin_ia32_vpmadcswd"
  29845. }
  29846. break;
  29847. }
  29848. break;
  29849. case 'p': // 6 strings to match.
  29850. if (memcmp(BuiltinName.data()+11, "tx_read_", 8))
  29851. break;
  29852. switch (BuiltinName[19]) {
  29853. default: break;
  29854. case 'c': // 1 string to match.
  29855. if (memcmp(BuiltinName.data()+20, "lock", 4))
  29856. break;
  29857. return Intrinsic::ptx_read_clock; // "__builtin_ptx_read_clock"
  29858. case 'n': // 1 string to match.
  29859. if (memcmp(BuiltinName.data()+20, "smid", 4))
  29860. break;
  29861. return Intrinsic::ptx_read_nsmid; // "__builtin_ptx_read_nsmid"
  29862. case 't': // 4 strings to match.
  29863. if (memcmp(BuiltinName.data()+20, "id_", 3))
  29864. break;
  29865. switch (BuiltinName[23]) {
  29866. default: break;
  29867. case 'w': // 1 string to match.
  29868. return Intrinsic::ptx_read_tid_w; // "__builtin_ptx_read_tid_w"
  29869. case 'x': // 1 string to match.
  29870. return Intrinsic::ptx_read_tid_x; // "__builtin_ptx_read_tid_x"
  29871. case 'y': // 1 string to match.
  29872. return Intrinsic::ptx_read_tid_y; // "__builtin_ptx_read_tid_y"
  29873. case 'z': // 1 string to match.
  29874. return Intrinsic::ptx_read_tid_z; // "__builtin_ptx_read_tid_z"
  29875. }
  29876. break;
  29877. }
  29878. break;
  29879. }
  29880. break;
  29881. case 'n': // 1 string to match.
  29882. if (memcmp(BuiltinName.data()+3, "vvm_sqrt_approx_ftz_f", 21))
  29883. break;
  29884. return Intrinsic::nvvm_sqrt_approx_ftz_f; // "__nvvm_sqrt_approx_ftz_f"
  29885. }
  29886. break;
  29887. case 25: // 17 strings to match.
  29888. if (memcmp(BuiltinName.data()+0, "__", 2))
  29889. break;
  29890. switch (BuiltinName[2]) {
  29891. default: break;
  29892. case 'b': // 16 strings to match.
  29893. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29894. break;
  29895. switch (BuiltinName[10]) {
  29896. default: break;
  29897. case 'i': // 9 strings to match.
  29898. switch (BuiltinName[11]) {
  29899. default: break;
  29900. case 'a': // 8 strings to match.
  29901. if (memcmp(BuiltinName.data()+12, "32_v", 4))
  29902. break;
  29903. switch (BuiltinName[16]) {
  29904. default: break;
  29905. case 'f': // 2 strings to match.
  29906. if (memcmp(BuiltinName.data()+17, "rczp", 4))
  29907. break;
  29908. switch (BuiltinName[21]) {
  29909. default: break;
  29910. case 'd': // 1 string to match.
  29911. if (memcmp(BuiltinName.data()+22, "256", 3))
  29912. break;
  29913. return Intrinsic::x86_xop_vfrcz_pd_256; // "__builtin_ia32_vfrczpd256"
  29914. case 's': // 1 string to match.
  29915. if (memcmp(BuiltinName.data()+22, "256", 3))
  29916. break;
  29917. return Intrinsic::x86_xop_vfrcz_ps_256; // "__builtin_ia32_vfrczps256"
  29918. }
  29919. break;
  29920. case 'p': // 6 strings to match.
  29921. switch (BuiltinName[17]) {
  29922. default: break;
  29923. case 'c': // 1 string to match.
  29924. if (memcmp(BuiltinName.data()+18, "mov_256", 7))
  29925. break;
  29926. return Intrinsic::x86_xop_vpcmov_256; // "__builtin_ia32_vpcmov_256"
  29927. case 'e': // 2 strings to match.
  29928. if (memcmp(BuiltinName.data()+18, "rmil2p", 6))
  29929. break;
  29930. switch (BuiltinName[24]) {
  29931. default: break;
  29932. case 'd': // 1 string to match.
  29933. return Intrinsic::x86_xop_vpermil2pd; // "__builtin_ia32_vpermil2pd"
  29934. case 's': // 1 string to match.
  29935. return Intrinsic::x86_xop_vpermil2ps; // "__builtin_ia32_vpermil2ps"
  29936. }
  29937. break;
  29938. case 'm': // 3 strings to match.
  29939. if (BuiltinName[18] != 'a')
  29940. break;
  29941. switch (BuiltinName[19]) {
  29942. default: break;
  29943. case 'c': // 2 strings to match.
  29944. if (memcmp(BuiltinName.data()+20, "ssdq", 4))
  29945. break;
  29946. switch (BuiltinName[24]) {
  29947. default: break;
  29948. case 'h': // 1 string to match.
  29949. return Intrinsic::x86_xop_vpmacssdqh; // "__builtin_ia32_vpmacssdqh"
  29950. case 'l': // 1 string to match.
  29951. return Intrinsic::x86_xop_vpmacssdql; // "__builtin_ia32_vpmacssdql"
  29952. }
  29953. break;
  29954. case 'd': // 1 string to match.
  29955. if (memcmp(BuiltinName.data()+20, "csswd", 5))
  29956. break;
  29957. return Intrinsic::x86_xop_vpmadcsswd; // "__builtin_ia32_vpmadcsswd"
  29958. }
  29959. break;
  29960. }
  29961. break;
  29962. }
  29963. break;
  29964. case 'n': // 1 string to match.
  29965. if (memcmp(BuiltinName.data()+12, "it_trampoline", 13))
  29966. break;
  29967. return Intrinsic::init_trampoline; // "__builtin_init_trampoline"
  29968. }
  29969. break;
  29970. case 'p': // 7 strings to match.
  29971. if (memcmp(BuiltinName.data()+11, "tx_read_", 8))
  29972. break;
  29973. switch (BuiltinName[19]) {
  29974. default: break;
  29975. case 'g': // 1 string to match.
  29976. if (memcmp(BuiltinName.data()+20, "ridid", 5))
  29977. break;
  29978. return Intrinsic::ptx_read_gridid; // "__builtin_ptx_read_gridid"
  29979. case 'l': // 1 string to match.
  29980. if (memcmp(BuiltinName.data()+20, "aneid", 5))
  29981. break;
  29982. return Intrinsic::ptx_read_laneid; // "__builtin_ptx_read_laneid"
  29983. case 'n': // 4 strings to match.
  29984. if (memcmp(BuiltinName.data()+20, "tid_", 4))
  29985. break;
  29986. switch (BuiltinName[24]) {
  29987. default: break;
  29988. case 'w': // 1 string to match.
  29989. return Intrinsic::ptx_read_ntid_w; // "__builtin_ptx_read_ntid_w"
  29990. case 'x': // 1 string to match.
  29991. return Intrinsic::ptx_read_ntid_x; // "__builtin_ptx_read_ntid_x"
  29992. case 'y': // 1 string to match.
  29993. return Intrinsic::ptx_read_ntid_y; // "__builtin_ptx_read_ntid_y"
  29994. case 'z': // 1 string to match.
  29995. return Intrinsic::ptx_read_ntid_z; // "__builtin_ptx_read_ntid_z"
  29996. }
  29997. break;
  29998. case 'w': // 1 string to match.
  29999. if (memcmp(BuiltinName.data()+20, "arpid", 5))
  30000. break;
  30001. return Intrinsic::ptx_read_warpid; // "__builtin_ptx_read_warpid"
  30002. }
  30003. break;
  30004. }
  30005. break;
  30006. case 'n': // 1 string to match.
  30007. if (memcmp(BuiltinName.data()+3, "vvm_rsqrt_approx_ftz_f", 22))
  30008. break;
  30009. return Intrinsic::nvvm_rsqrt_approx_ftz_f; // "__nvvm_rsqrt_approx_ftz_f"
  30010. }
  30011. break;
  30012. case 26: // 9 strings to match.
  30013. if (memcmp(BuiltinName.data()+0, "__", 2))
  30014. break;
  30015. switch (BuiltinName[2]) {
  30016. default: break;
  30017. case 'b': // 6 strings to match.
  30018. if (memcmp(BuiltinName.data()+3, "uiltin_ptx_read_", 16))
  30019. break;
  30020. switch (BuiltinName[19]) {
  30021. default: break;
  30022. case 'c': // 5 strings to match.
  30023. switch (BuiltinName[20]) {
  30024. default: break;
  30025. case 'l': // 1 string to match.
  30026. if (memcmp(BuiltinName.data()+21, "ock64", 5))
  30027. break;
  30028. return Intrinsic::ptx_read_clock64; // "__builtin_ptx_read_clock64"
  30029. case 't': // 4 strings to match.
  30030. if (memcmp(BuiltinName.data()+21, "aid_", 4))
  30031. break;
  30032. switch (BuiltinName[25]) {
  30033. default: break;
  30034. case 'w': // 1 string to match.
  30035. return Intrinsic::ptx_read_ctaid_w; // "__builtin_ptx_read_ctaid_w"
  30036. case 'x': // 1 string to match.
  30037. return Intrinsic::ptx_read_ctaid_x; // "__builtin_ptx_read_ctaid_x"
  30038. case 'y': // 1 string to match.
  30039. return Intrinsic::ptx_read_ctaid_y; // "__builtin_ptx_read_ctaid_y"
  30040. case 'z': // 1 string to match.
  30041. return Intrinsic::ptx_read_ctaid_z; // "__builtin_ptx_read_ctaid_z"
  30042. }
  30043. break;
  30044. }
  30045. break;
  30046. case 'n': // 1 string to match.
  30047. if (memcmp(BuiltinName.data()+20, "warpid", 6))
  30048. break;
  30049. return Intrinsic::ptx_read_nwarpid; // "__builtin_ptx_read_nwarpid"
  30050. }
  30051. break;
  30052. case 'n': // 3 strings to match.
  30053. if (memcmp(BuiltinName.data()+3, "vvm_read_ptx_sreg_tid_", 22))
  30054. break;
  30055. switch (BuiltinName[25]) {
  30056. default: break;
  30057. case 'x': // 1 string to match.
  30058. return Intrinsic::nvvm_read_ptx_sreg_tid_x; // "__nvvm_read_ptx_sreg_tid_x"
  30059. case 'y': // 1 string to match.
  30060. return Intrinsic::nvvm_read_ptx_sreg_tid_y; // "__nvvm_read_ptx_sreg_tid_y"
  30061. case 'z': // 1 string to match.
  30062. return Intrinsic::nvvm_read_ptx_sreg_tid_z; // "__nvvm_read_ptx_sreg_tid_z"
  30063. }
  30064. break;
  30065. }
  30066. break;
  30067. case 27: // 8 strings to match.
  30068. if (memcmp(BuiltinName.data()+0, "__", 2))
  30069. break;
  30070. switch (BuiltinName[2]) {
  30071. default: break;
  30072. case 'b': // 5 strings to match.
  30073. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  30074. break;
  30075. switch (BuiltinName[10]) {
  30076. default: break;
  30077. case 'a': // 1 string to match.
  30078. if (memcmp(BuiltinName.data()+11, "djust_trampoline", 16))
  30079. break;
  30080. return Intrinsic::adjust_trampoline; // "__builtin_adjust_trampoline"
  30081. case 'p': // 4 strings to match.
  30082. if (memcmp(BuiltinName.data()+11, "tx_read_nctaid_", 15))
  30083. break;
  30084. switch (BuiltinName[26]) {
  30085. default: break;
  30086. case 'w': // 1 string to match.
  30087. return Intrinsic::ptx_read_nctaid_w; // "__builtin_ptx_read_nctaid_w"
  30088. case 'x': // 1 string to match.
  30089. return Intrinsic::ptx_read_nctaid_x; // "__builtin_ptx_read_nctaid_x"
  30090. case 'y': // 1 string to match.
  30091. return Intrinsic::ptx_read_nctaid_y; // "__builtin_ptx_read_nctaid_y"
  30092. case 'z': // 1 string to match.
  30093. return Intrinsic::ptx_read_nctaid_z; // "__builtin_ptx_read_nctaid_z"
  30094. }
  30095. break;
  30096. }
  30097. break;
  30098. case 'n': // 3 strings to match.
  30099. if (memcmp(BuiltinName.data()+3, "vvm_read_ptx_sreg_ntid_", 23))
  30100. break;
  30101. switch (BuiltinName[26]) {
  30102. default: break;
  30103. case 'x': // 1 string to match.
  30104. return Intrinsic::nvvm_read_ptx_sreg_ntid_x; // "__nvvm_read_ptx_sreg_ntid_x"
  30105. case 'y': // 1 string to match.
  30106. return Intrinsic::nvvm_read_ptx_sreg_ntid_y; // "__nvvm_read_ptx_sreg_ntid_y"
  30107. case 'z': // 1 string to match.
  30108. return Intrinsic::nvvm_read_ptx_sreg_ntid_z; // "__nvvm_read_ptx_sreg_ntid_z"
  30109. }
  30110. break;
  30111. }
  30112. break;
  30113. case 28: // 5 strings to match.
  30114. if (memcmp(BuiltinName.data()+0, "__", 2))
  30115. break;
  30116. switch (BuiltinName[2]) {
  30117. default: break;
  30118. case 'b': // 2 strings to match.
  30119. if (memcmp(BuiltinName.data()+3, "uiltin_ia32_vpermil2p", 21))
  30120. break;
  30121. switch (BuiltinName[24]) {
  30122. default: break;
  30123. case 'd': // 1 string to match.
  30124. if (memcmp(BuiltinName.data()+25, "256", 3))
  30125. break;
  30126. return Intrinsic::x86_xop_vpermil2pd_256; // "__builtin_ia32_vpermil2pd256"
  30127. case 's': // 1 string to match.
  30128. if (memcmp(BuiltinName.data()+25, "256", 3))
  30129. break;
  30130. return Intrinsic::x86_xop_vpermil2ps_256; // "__builtin_ia32_vpermil2ps256"
  30131. }
  30132. break;
  30133. case 'n': // 3 strings to match.
  30134. if (memcmp(BuiltinName.data()+3, "vvm_read_ptx_sreg_ctaid_", 24))
  30135. break;
  30136. switch (BuiltinName[27]) {
  30137. default: break;
  30138. case 'x': // 1 string to match.
  30139. return Intrinsic::nvvm_read_ptx_sreg_ctaid_x; // "__nvvm_read_ptx_sreg_ctaid_x"
  30140. case 'y': // 1 string to match.
  30141. return Intrinsic::nvvm_read_ptx_sreg_ctaid_y; // "__nvvm_read_ptx_sreg_ctaid_y"
  30142. case 'z': // 1 string to match.
  30143. return Intrinsic::nvvm_read_ptx_sreg_ctaid_z; // "__nvvm_read_ptx_sreg_ctaid_z"
  30144. }
  30145. break;
  30146. }
  30147. break;
  30148. case 29: // 4 strings to match.
  30149. if (memcmp(BuiltinName.data()+0, "__nvvm_read_ptx_sreg_", 21))
  30150. break;
  30151. switch (BuiltinName[21]) {
  30152. default: break;
  30153. case 'n': // 3 strings to match.
  30154. if (memcmp(BuiltinName.data()+22, "ctaid_", 6))
  30155. break;
  30156. switch (BuiltinName[28]) {
  30157. default: break;
  30158. case 'x': // 1 string to match.
  30159. return Intrinsic::nvvm_read_ptx_sreg_nctaid_x; // "__nvvm_read_ptx_sreg_nctaid_x"
  30160. case 'y': // 1 string to match.
  30161. return Intrinsic::nvvm_read_ptx_sreg_nctaid_y; // "__nvvm_read_ptx_sreg_nctaid_y"
  30162. case 'z': // 1 string to match.
  30163. return Intrinsic::nvvm_read_ptx_sreg_nctaid_z; // "__nvvm_read_ptx_sreg_nctaid_z"
  30164. }
  30165. break;
  30166. case 'w': // 1 string to match.
  30167. if (memcmp(BuiltinName.data()+22, "arpsize", 7))
  30168. break;
  30169. return Intrinsic::nvvm_read_ptx_sreg_warpsize; // "__nvvm_read_ptx_sreg_warpsize"
  30170. }
  30171. break;
  30172. case 30: // 5 strings to match.
  30173. if (memcmp(BuiltinName.data()+0, "__builtin_ptx_read_lanemask_", 28))
  30174. break;
  30175. switch (BuiltinName[28]) {
  30176. default: break;
  30177. case 'e': // 1 string to match.
  30178. if (BuiltinName[29] != 'q')
  30179. break;
  30180. return Intrinsic::ptx_read_lanemask_eq; // "__builtin_ptx_read_lanemask_eq"
  30181. case 'g': // 2 strings to match.
  30182. switch (BuiltinName[29]) {
  30183. default: break;
  30184. case 'e': // 1 string to match.
  30185. return Intrinsic::ptx_read_lanemask_ge; // "__builtin_ptx_read_lanemask_ge"
  30186. case 't': // 1 string to match.
  30187. return Intrinsic::ptx_read_lanemask_gt; // "__builtin_ptx_read_lanemask_gt"
  30188. }
  30189. break;
  30190. case 'l': // 2 strings to match.
  30191. switch (BuiltinName[29]) {
  30192. default: break;
  30193. case 'e': // 1 string to match.
  30194. return Intrinsic::ptx_read_lanemask_le; // "__builtin_ptx_read_lanemask_le"
  30195. case 't': // 1 string to match.
  30196. return Intrinsic::ptx_read_lanemask_lt; // "__builtin_ptx_read_lanemask_lt"
  30197. }
  30198. break;
  30199. }
  30200. break;
  30201. }
  30202. }
  30203. if (TargetPrefix == "arm") {
  30204. switch (BuiltinName.size()) {
  30205. default: break;
  30206. case 17: // 3 strings to match.
  30207. if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
  30208. break;
  30209. switch (BuiltinName[14]) {
  30210. default: break;
  30211. case 'c': // 1 string to match.
  30212. if (memcmp(BuiltinName.data()+15, "dp", 2))
  30213. break;
  30214. return Intrinsic::arm_cdp; // "__builtin_arm_cdp"
  30215. case 'm': // 2 strings to match.
  30216. switch (BuiltinName[15]) {
  30217. default: break;
  30218. case 'c': // 1 string to match.
  30219. if (BuiltinName[16] != 'r')
  30220. break;
  30221. return Intrinsic::arm_mcr; // "__builtin_arm_mcr"
  30222. case 'r': // 1 string to match.
  30223. if (BuiltinName[16] != 'c')
  30224. break;
  30225. return Intrinsic::arm_mrc; // "__builtin_arm_mrc"
  30226. }
  30227. break;
  30228. }
  30229. break;
  30230. case 18: // 8 strings to match.
  30231. if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
  30232. break;
  30233. switch (BuiltinName[14]) {
  30234. default: break;
  30235. case 'c': // 1 string to match.
  30236. if (memcmp(BuiltinName.data()+15, "dp2", 3))
  30237. break;
  30238. return Intrinsic::arm_cdp2; // "__builtin_arm_cdp2"
  30239. case 'm': // 3 strings to match.
  30240. switch (BuiltinName[15]) {
  30241. default: break;
  30242. case 'c': // 2 strings to match.
  30243. if (BuiltinName[16] != 'r')
  30244. break;
  30245. switch (BuiltinName[17]) {
  30246. default: break;
  30247. case '2': // 1 string to match.
  30248. return Intrinsic::arm_mcr2; // "__builtin_arm_mcr2"
  30249. case 'r': // 1 string to match.
  30250. return Intrinsic::arm_mcrr; // "__builtin_arm_mcrr"
  30251. }
  30252. break;
  30253. case 'r': // 1 string to match.
  30254. if (memcmp(BuiltinName.data()+16, "c2", 2))
  30255. break;
  30256. return Intrinsic::arm_mrc2; // "__builtin_arm_mrc2"
  30257. }
  30258. break;
  30259. case 'q': // 2 strings to match.
  30260. switch (BuiltinName[15]) {
  30261. default: break;
  30262. case 'a': // 1 string to match.
  30263. if (memcmp(BuiltinName.data()+16, "dd", 2))
  30264. break;
  30265. return Intrinsic::arm_qadd; // "__builtin_arm_qadd"
  30266. case 's': // 1 string to match.
  30267. if (memcmp(BuiltinName.data()+16, "ub", 2))
  30268. break;
  30269. return Intrinsic::arm_qsub; // "__builtin_arm_qsub"
  30270. }
  30271. break;
  30272. case 's': // 1 string to match.
  30273. if (memcmp(BuiltinName.data()+15, "sat", 3))
  30274. break;
  30275. return Intrinsic::arm_ssat; // "__builtin_arm_ssat"
  30276. case 'u': // 1 string to match.
  30277. if (memcmp(BuiltinName.data()+15, "sat", 3))
  30278. break;
  30279. return Intrinsic::arm_usat; // "__builtin_arm_usat"
  30280. }
  30281. break;
  30282. case 19: // 1 string to match.
  30283. if (memcmp(BuiltinName.data()+0, "__builtin_arm_mcrr2", 19))
  30284. break;
  30285. return Intrinsic::arm_mcrr2; // "__builtin_arm_mcrr2"
  30286. case 23: // 2 strings to match.
  30287. if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
  30288. break;
  30289. switch (BuiltinName[14]) {
  30290. default: break;
  30291. case 'g': // 1 string to match.
  30292. if (memcmp(BuiltinName.data()+15, "et_fpscr", 8))
  30293. break;
  30294. return Intrinsic::arm_get_fpscr; // "__builtin_arm_get_fpscr"
  30295. case 's': // 1 string to match.
  30296. if (memcmp(BuiltinName.data()+15, "et_fpscr", 8))
  30297. break;
  30298. return Intrinsic::arm_set_fpscr; // "__builtin_arm_set_fpscr"
  30299. }
  30300. break;
  30301. case 24: // 1 string to match.
  30302. if (memcmp(BuiltinName.data()+0, "__builtin_thread_pointer", 24))
  30303. break;
  30304. return Intrinsic::arm_thread_pointer; // "__builtin_thread_pointer"
  30305. }
  30306. }
  30307. if (TargetPrefix == "hexagon") {
  30308. switch (BuiltinName.size()) {
  30309. default: break;
  30310. case 18: // 1 string to match.
  30311. if (memcmp(BuiltinName.data()+0, "__builtin_circ_ldd", 18))
  30312. break;
  30313. return Intrinsic::hexagon_circ_ldd; // "__builtin_circ_ldd"
  30314. case 23: // 2 strings to match.
  30315. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  30316. break;
  30317. switch (BuiltinName[18]) {
  30318. default: break;
  30319. case 'A': // 1 string to match.
  30320. if (memcmp(BuiltinName.data()+19, "2_or", 4))
  30321. break;
  30322. return Intrinsic::hexagon_A2_or; // "__builtin_HEXAGON_A2_or"
  30323. case 'C': // 1 string to match.
  30324. if (memcmp(BuiltinName.data()+19, "2_or", 4))
  30325. break;
  30326. return Intrinsic::hexagon_C2_or; // "__builtin_HEXAGON_C2_or"
  30327. }
  30328. break;
  30329. case 24: // 23 strings to match.
  30330. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  30331. break;
  30332. switch (BuiltinName[18]) {
  30333. default: break;
  30334. case 'A': // 13 strings to match.
  30335. switch (BuiltinName[19]) {
  30336. default: break;
  30337. case '2': // 12 strings to match.
  30338. if (BuiltinName[20] != '_')
  30339. break;
  30340. switch (BuiltinName[21]) {
  30341. default: break;
  30342. case 'a': // 3 strings to match.
  30343. switch (BuiltinName[22]) {
  30344. default: break;
  30345. case 'b': // 1 string to match.
  30346. if (BuiltinName[23] != 's')
  30347. break;
  30348. return Intrinsic::hexagon_A2_abs; // "__builtin_HEXAGON_A2_abs"
  30349. case 'd': // 1 string to match.
  30350. if (BuiltinName[23] != 'd')
  30351. break;
  30352. return Intrinsic::hexagon_A2_add; // "__builtin_HEXAGON_A2_add"
  30353. case 'n': // 1 string to match.
  30354. if (BuiltinName[23] != 'd')
  30355. break;
  30356. return Intrinsic::hexagon_A2_and; // "__builtin_HEXAGON_A2_and"
  30357. }
  30358. break;
  30359. case 'm': // 2 strings to match.
  30360. switch (BuiltinName[22]) {
  30361. default: break;
  30362. case 'a': // 1 string to match.
  30363. if (BuiltinName[23] != 'x')
  30364. break;
  30365. return Intrinsic::hexagon_A2_max; // "__builtin_HEXAGON_A2_max"
  30366. case 'i': // 1 string to match.
  30367. if (BuiltinName[23] != 'n')
  30368. break;
  30369. return Intrinsic::hexagon_A2_min; // "__builtin_HEXAGON_A2_min"
  30370. }
  30371. break;
  30372. case 'n': // 2 strings to match.
  30373. switch (BuiltinName[22]) {
  30374. default: break;
  30375. case 'e': // 1 string to match.
  30376. if (BuiltinName[23] != 'g')
  30377. break;
  30378. return Intrinsic::hexagon_A2_neg; // "__builtin_HEXAGON_A2_neg"
  30379. case 'o': // 1 string to match.
  30380. if (BuiltinName[23] != 't')
  30381. break;
  30382. return Intrinsic::hexagon_A2_not; // "__builtin_HEXAGON_A2_not"
  30383. }
  30384. break;
  30385. case 'o': // 1 string to match.
  30386. if (memcmp(BuiltinName.data()+22, "rp", 2))
  30387. break;
  30388. return Intrinsic::hexagon_A2_orp; // "__builtin_HEXAGON_A2_orp"
  30389. case 's': // 2 strings to match.
  30390. switch (BuiltinName[22]) {
  30391. default: break;
  30392. case 'a': // 1 string to match.
  30393. if (BuiltinName[23] != 't')
  30394. break;
  30395. return Intrinsic::hexagon_A2_sat; // "__builtin_HEXAGON_A2_sat"
  30396. case 'u': // 1 string to match.
  30397. if (BuiltinName[23] != 'b')
  30398. break;
  30399. return Intrinsic::hexagon_A2_sub; // "__builtin_HEXAGON_A2_sub"
  30400. }
  30401. break;
  30402. case 't': // 1 string to match.
  30403. if (memcmp(BuiltinName.data()+22, "fr", 2))
  30404. break;
  30405. return Intrinsic::hexagon_A2_tfr; // "__builtin_HEXAGON_A2_tfr"
  30406. case 'x': // 1 string to match.
  30407. if (memcmp(BuiltinName.data()+22, "or", 2))
  30408. break;
  30409. return Intrinsic::hexagon_A2_xor; // "__builtin_HEXAGON_A2_xor"
  30410. }
  30411. break;
  30412. case '4': // 1 string to match.
  30413. if (memcmp(BuiltinName.data()+20, "_orn", 4))
  30414. break;
  30415. return Intrinsic::hexagon_A4_orn; // "__builtin_HEXAGON_A4_orn"
  30416. }
  30417. break;
  30418. case 'C': // 5 strings to match.
  30419. if (memcmp(BuiltinName.data()+19, "2_", 2))
  30420. break;
  30421. switch (BuiltinName[21]) {
  30422. default: break;
  30423. case 'a': // 1 string to match.
  30424. if (memcmp(BuiltinName.data()+22, "nd", 2))
  30425. break;
  30426. return Intrinsic::hexagon_C2_and; // "__builtin_HEXAGON_C2_and"
  30427. case 'm': // 1 string to match.
  30428. if (memcmp(BuiltinName.data()+22, "ux", 2))
  30429. break;
  30430. return Intrinsic::hexagon_C2_mux; // "__builtin_HEXAGON_C2_mux"
  30431. case 'n': // 1 string to match.
  30432. if (memcmp(BuiltinName.data()+22, "ot", 2))
  30433. break;
  30434. return Intrinsic::hexagon_C2_not; // "__builtin_HEXAGON_C2_not"
  30435. case 'o': // 1 string to match.
  30436. if (memcmp(BuiltinName.data()+22, "rn", 2))
  30437. break;
  30438. return Intrinsic::hexagon_C2_orn; // "__builtin_HEXAGON_C2_orn"
  30439. case 'x': // 1 string to match.
  30440. if (memcmp(BuiltinName.data()+22, "or", 2))
  30441. break;
  30442. return Intrinsic::hexagon_C2_xor; // "__builtin_HEXAGON_C2_xor"
  30443. }
  30444. break;
  30445. case 'S': // 5 strings to match.
  30446. if (memcmp(BuiltinName.data()+19, "2_c", 3))
  30447. break;
  30448. switch (BuiltinName[22]) {
  30449. default: break;
  30450. case 'l': // 3 strings to match.
  30451. switch (BuiltinName[23]) {
  30452. default: break;
  30453. case '0': // 1 string to match.
  30454. return Intrinsic::hexagon_S2_cl0; // "__builtin_HEXAGON_S2_cl0"
  30455. case '1': // 1 string to match.
  30456. return Intrinsic::hexagon_S2_cl1; // "__builtin_HEXAGON_S2_cl1"
  30457. case 'b': // 1 string to match.
  30458. return Intrinsic::hexagon_S2_clb; // "__builtin_HEXAGON_S2_clb"
  30459. }
  30460. break;
  30461. case 't': // 2 strings to match.
  30462. switch (BuiltinName[23]) {
  30463. default: break;
  30464. case '0': // 1 string to match.
  30465. return Intrinsic::hexagon_S2_ct0; // "__builtin_HEXAGON_S2_ct0"
  30466. case '1': // 1 string to match.
  30467. return Intrinsic::hexagon_S2_ct1; // "__builtin_HEXAGON_S2_ct1"
  30468. }
  30469. break;
  30470. }
  30471. break;
  30472. }
  30473. break;
  30474. case 25: // 42 strings to match.
  30475. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  30476. break;
  30477. switch (BuiltinName[18]) {
  30478. default: break;
  30479. case 'A': // 26 strings to match.
  30480. switch (BuiltinName[19]) {
  30481. default: break;
  30482. case '2': // 24 strings to match.
  30483. if (BuiltinName[20] != '_')
  30484. break;
  30485. switch (BuiltinName[21]) {
  30486. default: break;
  30487. case 'a': // 6 strings to match.
  30488. switch (BuiltinName[22]) {
  30489. default: break;
  30490. case 'b': // 1 string to match.
  30491. if (memcmp(BuiltinName.data()+23, "sp", 2))
  30492. break;
  30493. return Intrinsic::hexagon_A2_absp; // "__builtin_HEXAGON_A2_absp"
  30494. case 'd': // 2 strings to match.
  30495. if (BuiltinName[23] != 'd')
  30496. break;
  30497. switch (BuiltinName[24]) {
  30498. default: break;
  30499. case 'i': // 1 string to match.
  30500. return Intrinsic::hexagon_A2_addi; // "__builtin_HEXAGON_A2_addi"
  30501. case 'p': // 1 string to match.
  30502. return Intrinsic::hexagon_A2_addp; // "__builtin_HEXAGON_A2_addp"
  30503. }
  30504. break;
  30505. case 'n': // 1 string to match.
  30506. if (memcmp(BuiltinName.data()+23, "dp", 2))
  30507. break;
  30508. return Intrinsic::hexagon_A2_andp; // "__builtin_HEXAGON_A2_andp"
  30509. case 's': // 2 strings to match.
  30510. switch (BuiltinName[23]) {
  30511. default: break;
  30512. case 'l': // 1 string to match.
  30513. if (BuiltinName[24] != 'h')
  30514. break;
  30515. return Intrinsic::hexagon_A2_aslh; // "__builtin_HEXAGON_A2_aslh"
  30516. case 'r': // 1 string to match.
  30517. if (BuiltinName[24] != 'h')
  30518. break;
  30519. return Intrinsic::hexagon_A2_asrh; // "__builtin_HEXAGON_A2_asrh"
  30520. }
  30521. break;
  30522. }
  30523. break;
  30524. case 'm': // 4 strings to match.
  30525. switch (BuiltinName[22]) {
  30526. default: break;
  30527. case 'a': // 2 strings to match.
  30528. if (BuiltinName[23] != 'x')
  30529. break;
  30530. switch (BuiltinName[24]) {
  30531. default: break;
  30532. case 'p': // 1 string to match.
  30533. return Intrinsic::hexagon_A2_maxp; // "__builtin_HEXAGON_A2_maxp"
  30534. case 'u': // 1 string to match.
  30535. return Intrinsic::hexagon_A2_maxu; // "__builtin_HEXAGON_A2_maxu"
  30536. }
  30537. break;
  30538. case 'i': // 2 strings to match.
  30539. if (BuiltinName[23] != 'n')
  30540. break;
  30541. switch (BuiltinName[24]) {
  30542. default: break;
  30543. case 'p': // 1 string to match.
  30544. return Intrinsic::hexagon_A2_minp; // "__builtin_HEXAGON_A2_minp"
  30545. case 'u': // 1 string to match.
  30546. return Intrinsic::hexagon_A2_minu; // "__builtin_HEXAGON_A2_minu"
  30547. }
  30548. break;
  30549. }
  30550. break;
  30551. case 'n': // 2 strings to match.
  30552. switch (BuiltinName[22]) {
  30553. default: break;
  30554. case 'e': // 1 string to match.
  30555. if (memcmp(BuiltinName.data()+23, "gp", 2))
  30556. break;
  30557. return Intrinsic::hexagon_A2_negp; // "__builtin_HEXAGON_A2_negp"
  30558. case 'o': // 1 string to match.
  30559. if (memcmp(BuiltinName.data()+23, "tp", 2))
  30560. break;
  30561. return Intrinsic::hexagon_A2_notp; // "__builtin_HEXAGON_A2_notp"
  30562. }
  30563. break;
  30564. case 'o': // 1 string to match.
  30565. if (memcmp(BuiltinName.data()+22, "rir", 3))
  30566. break;
  30567. return Intrinsic::hexagon_A2_orir; // "__builtin_HEXAGON_A2_orir"
  30568. case 's': // 7 strings to match.
  30569. switch (BuiltinName[22]) {
  30570. default: break;
  30571. case 'a': // 2 strings to match.
  30572. if (BuiltinName[23] != 't')
  30573. break;
  30574. switch (BuiltinName[24]) {
  30575. default: break;
  30576. case 'b': // 1 string to match.
  30577. return Intrinsic::hexagon_A2_satb; // "__builtin_HEXAGON_A2_satb"
  30578. case 'h': // 1 string to match.
  30579. return Intrinsic::hexagon_A2_sath; // "__builtin_HEXAGON_A2_sath"
  30580. }
  30581. break;
  30582. case 'u': // 1 string to match.
  30583. if (memcmp(BuiltinName.data()+23, "bp", 2))
  30584. break;
  30585. return Intrinsic::hexagon_A2_subp; // "__builtin_HEXAGON_A2_subp"
  30586. case 'w': // 1 string to match.
  30587. if (memcmp(BuiltinName.data()+23, "iz", 2))
  30588. break;
  30589. return Intrinsic::hexagon_A2_swiz; // "__builtin_HEXAGON_A2_swiz"
  30590. case 'x': // 3 strings to match.
  30591. if (BuiltinName[23] != 't')
  30592. break;
  30593. switch (BuiltinName[24]) {
  30594. default: break;
  30595. case 'b': // 1 string to match.
  30596. return Intrinsic::hexagon_A2_sxtb; // "__builtin_HEXAGON_A2_sxtb"
  30597. case 'h': // 1 string to match.
  30598. return Intrinsic::hexagon_A2_sxth; // "__builtin_HEXAGON_A2_sxth"
  30599. case 'w': // 1 string to match.
  30600. return Intrinsic::hexagon_A2_sxtw; // "__builtin_HEXAGON_A2_sxtw"
  30601. }
  30602. break;
  30603. }
  30604. break;
  30605. case 't': // 1 string to match.
  30606. if (memcmp(BuiltinName.data()+22, "frp", 3))
  30607. break;
  30608. return Intrinsic::hexagon_A2_tfrp; // "__builtin_HEXAGON_A2_tfrp"
  30609. case 'x': // 1 string to match.
  30610. if (memcmp(BuiltinName.data()+22, "orp", 3))
  30611. break;
  30612. return Intrinsic::hexagon_A2_xorp; // "__builtin_HEXAGON_A2_xorp"
  30613. case 'z': // 2 strings to match.
  30614. if (memcmp(BuiltinName.data()+22, "xt", 2))
  30615. break;
  30616. switch (BuiltinName[24]) {
  30617. default: break;
  30618. case 'b': // 1 string to match.
  30619. return Intrinsic::hexagon_A2_zxtb; // "__builtin_HEXAGON_A2_zxtb"
  30620. case 'h': // 1 string to match.
  30621. return Intrinsic::hexagon_A2_zxth; // "__builtin_HEXAGON_A2_zxth"
  30622. }
  30623. break;
  30624. }
  30625. break;
  30626. case '4': // 2 strings to match.
  30627. if (BuiltinName[20] != '_')
  30628. break;
  30629. switch (BuiltinName[21]) {
  30630. default: break;
  30631. case 'a': // 1 string to match.
  30632. if (memcmp(BuiltinName.data()+22, "ndn", 3))
  30633. break;
  30634. return Intrinsic::hexagon_A4_andn; // "__builtin_HEXAGON_A4_andn"
  30635. case 'o': // 1 string to match.
  30636. if (memcmp(BuiltinName.data()+22, "rnp", 3))
  30637. break;
  30638. return Intrinsic::hexagon_A4_ornp; // "__builtin_HEXAGON_A4_ornp"
  30639. }
  30640. break;
  30641. }
  30642. break;
  30643. case 'C': // 5 strings to match.
  30644. if (memcmp(BuiltinName.data()+19, "2_", 2))
  30645. break;
  30646. switch (BuiltinName[21]) {
  30647. default: break;
  30648. case 'a': // 3 strings to match.
  30649. switch (BuiltinName[22]) {
  30650. default: break;
  30651. case 'l': // 1 string to match.
  30652. if (memcmp(BuiltinName.data()+23, "l8", 2))
  30653. break;
  30654. return Intrinsic::hexagon_C2_all8; // "__builtin_HEXAGON_C2_all8"
  30655. case 'n': // 2 strings to match.
  30656. switch (BuiltinName[23]) {
  30657. default: break;
  30658. case 'd': // 1 string to match.
  30659. if (BuiltinName[24] != 'n')
  30660. break;
  30661. return Intrinsic::hexagon_C2_andn; // "__builtin_HEXAGON_C2_andn"
  30662. case 'y': // 1 string to match.
  30663. if (BuiltinName[24] != '8')
  30664. break;
  30665. return Intrinsic::hexagon_C2_any8; // "__builtin_HEXAGON_C2_any8"
  30666. }
  30667. break;
  30668. }
  30669. break;
  30670. case 'm': // 1 string to match.
  30671. if (memcmp(BuiltinName.data()+22, "ask", 3))
  30672. break;
  30673. return Intrinsic::hexagon_C2_mask; // "__builtin_HEXAGON_C2_mask"
  30674. case 'v': // 1 string to match.
  30675. if (memcmp(BuiltinName.data()+22, "mux", 3))
  30676. break;
  30677. return Intrinsic::hexagon_C2_vmux; // "__builtin_HEXAGON_C2_vmux"
  30678. }
  30679. break;
  30680. case 'M': // 3 strings to match.
  30681. if (memcmp(BuiltinName.data()+19, "2_", 2))
  30682. break;
  30683. switch (BuiltinName[21]) {
  30684. default: break;
  30685. case 'a': // 1 string to match.
  30686. if (memcmp(BuiltinName.data()+22, "cci", 3))
  30687. break;
  30688. return Intrinsic::hexagon_M2_acci; // "__builtin_HEXAGON_M2_acci"
  30689. case 'm': // 2 strings to match.
  30690. switch (BuiltinName[22]) {
  30691. default: break;
  30692. case 'a': // 1 string to match.
  30693. if (memcmp(BuiltinName.data()+23, "ci", 2))
  30694. break;
  30695. return Intrinsic::hexagon_M2_maci; // "__builtin_HEXAGON_M2_maci"
  30696. case 'p': // 1 string to match.
  30697. if (memcmp(BuiltinName.data()+23, "yi", 2))
  30698. break;
  30699. return Intrinsic::hexagon_M2_mpyi; // "__builtin_HEXAGON_M2_mpyi"
  30700. }
  30701. break;
  30702. }
  30703. break;
  30704. case 'S': // 8 strings to match.
  30705. switch (BuiltinName[19]) {
  30706. default: break;
  30707. case '2': // 7 strings to match.
  30708. if (BuiltinName[20] != '_')
  30709. break;
  30710. switch (BuiltinName[21]) {
  30711. default: break;
  30712. case 'b': // 1 string to match.
  30713. if (memcmp(BuiltinName.data()+22, "rev", 3))
  30714. break;
  30715. return Intrinsic::hexagon_S2_brev; // "__builtin_HEXAGON_S2_brev"
  30716. case 'c': // 5 strings to match.
  30717. switch (BuiltinName[22]) {
  30718. default: break;
  30719. case 'l': // 3 strings to match.
  30720. switch (BuiltinName[23]) {
  30721. default: break;
  30722. case '0': // 1 string to match.
  30723. if (BuiltinName[24] != 'p')
  30724. break;
  30725. return Intrinsic::hexagon_S2_cl0p; // "__builtin_HEXAGON_S2_cl0p"
  30726. case '1': // 1 string to match.
  30727. if (BuiltinName[24] != 'p')
  30728. break;
  30729. return Intrinsic::hexagon_S2_cl1p; // "__builtin_HEXAGON_S2_cl1p"
  30730. case 'b': // 1 string to match.
  30731. if (BuiltinName[24] != 'p')
  30732. break;
  30733. return Intrinsic::hexagon_S2_clbp; // "__builtin_HEXAGON_S2_clbp"
  30734. }
  30735. break;
  30736. case 't': // 2 strings to match.
  30737. switch (BuiltinName[23]) {
  30738. default: break;
  30739. case '0': // 1 string to match.
  30740. if (BuiltinName[24] != 'p')
  30741. break;
  30742. return Intrinsic::hexagon_S2_ct0p; // "__builtin_HEXAGON_S2_ct0p"
  30743. case '1': // 1 string to match.
  30744. if (BuiltinName[24] != 'p')
  30745. break;
  30746. return Intrinsic::hexagon_S2_ct1p; // "__builtin_HEXAGON_S2_ct1p"
  30747. }
  30748. break;
  30749. }
  30750. break;
  30751. case 'l': // 1 string to match.
  30752. if (memcmp(BuiltinName.data()+22, "fsp", 3))
  30753. break;
  30754. return Intrinsic::hexagon_S2_lfsp; // "__builtin_HEXAGON_S2_lfsp"
  30755. }
  30756. break;
  30757. case '4': // 1 string to match.
  30758. if (memcmp(BuiltinName.data()+20, "_lsli", 5))
  30759. break;
  30760. return Intrinsic::hexagon_S4_lsli; // "__builtin_HEXAGON_S4_lsli"
  30761. }
  30762. break;
  30763. }
  30764. break;
  30765. case 26: // 58 strings to match.
  30766. if (memcmp(BuiltinName.data()+0, "__builtin_", 10))
  30767. break;
  30768. switch (BuiltinName[10]) {
  30769. default: break;
  30770. case 'H': // 57 strings to match.
  30771. if (memcmp(BuiltinName.data()+11, "EXAGON_", 7))
  30772. break;
  30773. switch (BuiltinName[18]) {
  30774. default: break;
  30775. case 'A': // 27 strings to match.
  30776. switch (BuiltinName[19]) {
  30777. default: break;
  30778. case '2': // 26 strings to match.
  30779. if (BuiltinName[20] != '_')
  30780. break;
  30781. switch (BuiltinName[21]) {
  30782. default: break;
  30783. case 'a': // 2 strings to match.
  30784. switch (BuiltinName[22]) {
  30785. default: break;
  30786. case 'd': // 1 string to match.
  30787. if (memcmp(BuiltinName.data()+23, "dsp", 3))
  30788. break;
  30789. return Intrinsic::hexagon_A2_addsp; // "__builtin_HEXAGON_A2_addsp"
  30790. case 'n': // 1 string to match.
  30791. if (memcmp(BuiltinName.data()+23, "dir", 3))
  30792. break;
  30793. return Intrinsic::hexagon_A2_andir; // "__builtin_HEXAGON_A2_andir"
  30794. }
  30795. break;
  30796. case 'm': // 2 strings to match.
  30797. switch (BuiltinName[22]) {
  30798. default: break;
  30799. case 'a': // 1 string to match.
  30800. if (memcmp(BuiltinName.data()+23, "xup", 3))
  30801. break;
  30802. return Intrinsic::hexagon_A2_maxup; // "__builtin_HEXAGON_A2_maxup"
  30803. case 'i': // 1 string to match.
  30804. if (memcmp(BuiltinName.data()+23, "nup", 3))
  30805. break;
  30806. return Intrinsic::hexagon_A2_minup; // "__builtin_HEXAGON_A2_minup"
  30807. }
  30808. break;
  30809. case 's': // 3 strings to match.
  30810. switch (BuiltinName[22]) {
  30811. default: break;
  30812. case 'a': // 2 strings to match.
  30813. if (memcmp(BuiltinName.data()+23, "tu", 2))
  30814. break;
  30815. switch (BuiltinName[25]) {
  30816. default: break;
  30817. case 'b': // 1 string to match.
  30818. return Intrinsic::hexagon_A2_satub; // "__builtin_HEXAGON_A2_satub"
  30819. case 'h': // 1 string to match.
  30820. return Intrinsic::hexagon_A2_satuh; // "__builtin_HEXAGON_A2_satuh"
  30821. }
  30822. break;
  30823. case 'u': // 1 string to match.
  30824. if (memcmp(BuiltinName.data()+23, "bri", 3))
  30825. break;
  30826. return Intrinsic::hexagon_A2_subri; // "__builtin_HEXAGON_A2_subri"
  30827. }
  30828. break;
  30829. case 't': // 4 strings to match.
  30830. if (memcmp(BuiltinName.data()+22, "fr", 2))
  30831. break;
  30832. switch (BuiltinName[24]) {
  30833. default: break;
  30834. case 'i': // 2 strings to match.
  30835. switch (BuiltinName[25]) {
  30836. default: break;
  30837. case 'h': // 1 string to match.
  30838. return Intrinsic::hexagon_A2_tfrih; // "__builtin_HEXAGON_A2_tfrih"
  30839. case 'l': // 1 string to match.
  30840. return Intrinsic::hexagon_A2_tfril; // "__builtin_HEXAGON_A2_tfril"
  30841. }
  30842. break;
  30843. case 'p': // 1 string to match.
  30844. if (BuiltinName[25] != 'i')
  30845. break;
  30846. return Intrinsic::hexagon_A2_tfrpi; // "__builtin_HEXAGON_A2_tfrpi"
  30847. case 's': // 1 string to match.
  30848. if (BuiltinName[25] != 'i')
  30849. break;
  30850. return Intrinsic::hexagon_A2_tfrsi; // "__builtin_HEXAGON_A2_tfrsi"
  30851. }
  30852. break;
  30853. case 'v': // 15 strings to match.
  30854. switch (BuiltinName[22]) {
  30855. default: break;
  30856. case 'a': // 6 strings to match.
  30857. switch (BuiltinName[23]) {
  30858. default: break;
  30859. case 'b': // 2 strings to match.
  30860. if (BuiltinName[24] != 's')
  30861. break;
  30862. switch (BuiltinName[25]) {
  30863. default: break;
  30864. case 'h': // 1 string to match.
  30865. return Intrinsic::hexagon_A2_vabsh; // "__builtin_HEXAGON_A2_vabsh"
  30866. case 'w': // 1 string to match.
  30867. return Intrinsic::hexagon_A2_vabsw; // "__builtin_HEXAGON_A2_vabsw"
  30868. }
  30869. break;
  30870. case 'd': // 2 strings to match.
  30871. if (BuiltinName[24] != 'd')
  30872. break;
  30873. switch (BuiltinName[25]) {
  30874. default: break;
  30875. case 'h': // 1 string to match.
  30876. return Intrinsic::hexagon_A2_vaddh; // "__builtin_HEXAGON_A2_vaddh"
  30877. case 'w': // 1 string to match.
  30878. return Intrinsic::hexagon_A2_vaddw; // "__builtin_HEXAGON_A2_vaddw"
  30879. }
  30880. break;
  30881. case 'v': // 2 strings to match.
  30882. if (BuiltinName[24] != 'g')
  30883. break;
  30884. switch (BuiltinName[25]) {
  30885. default: break;
  30886. case 'h': // 1 string to match.
  30887. return Intrinsic::hexagon_A2_vavgh; // "__builtin_HEXAGON_A2_vavgh"
  30888. case 'w': // 1 string to match.
  30889. return Intrinsic::hexagon_A2_vavgw; // "__builtin_HEXAGON_A2_vavgw"
  30890. }
  30891. break;
  30892. }
  30893. break;
  30894. case 'c': // 1 string to match.
  30895. if (memcmp(BuiltinName.data()+23, "onj", 3))
  30896. break;
  30897. return Intrinsic::hexagon_A2_vconj; // "__builtin_HEXAGON_A2_vconj"
  30898. case 'm': // 6 strings to match.
  30899. switch (BuiltinName[23]) {
  30900. default: break;
  30901. case 'a': // 3 strings to match.
  30902. if (BuiltinName[24] != 'x')
  30903. break;
  30904. switch (BuiltinName[25]) {
  30905. default: break;
  30906. case 'b': // 1 string to match.
  30907. return Intrinsic::hexagon_A2_vmaxb; // "__builtin_HEXAGON_A2_vmaxb"
  30908. case 'h': // 1 string to match.
  30909. return Intrinsic::hexagon_A2_vmaxh; // "__builtin_HEXAGON_A2_vmaxh"
  30910. case 'w': // 1 string to match.
  30911. return Intrinsic::hexagon_A2_vmaxw; // "__builtin_HEXAGON_A2_vmaxw"
  30912. }
  30913. break;
  30914. case 'i': // 3 strings to match.
  30915. if (BuiltinName[24] != 'n')
  30916. break;
  30917. switch (BuiltinName[25]) {
  30918. default: break;
  30919. case 'b': // 1 string to match.
  30920. return Intrinsic::hexagon_A2_vminb; // "__builtin_HEXAGON_A2_vminb"
  30921. case 'h': // 1 string to match.
  30922. return Intrinsic::hexagon_A2_vminh; // "__builtin_HEXAGON_A2_vminh"
  30923. case 'w': // 1 string to match.
  30924. return Intrinsic::hexagon_A2_vminw; // "__builtin_HEXAGON_A2_vminw"
  30925. }
  30926. break;
  30927. }
  30928. break;
  30929. case 's': // 2 strings to match.
  30930. if (memcmp(BuiltinName.data()+23, "ub", 2))
  30931. break;
  30932. switch (BuiltinName[25]) {
  30933. default: break;
  30934. case 'h': // 1 string to match.
  30935. return Intrinsic::hexagon_A2_vsubh; // "__builtin_HEXAGON_A2_vsubh"
  30936. case 'w': // 1 string to match.
  30937. return Intrinsic::hexagon_A2_vsubw; // "__builtin_HEXAGON_A2_vsubw"
  30938. }
  30939. break;
  30940. }
  30941. break;
  30942. }
  30943. break;
  30944. case '4': // 1 string to match.
  30945. if (memcmp(BuiltinName.data()+20, "_andnp", 6))
  30946. break;
  30947. return Intrinsic::hexagon_A4_andnp; // "__builtin_HEXAGON_A4_andnp"
  30948. }
  30949. break;
  30950. case 'C': // 9 strings to match.
  30951. switch (BuiltinName[19]) {
  30952. default: break;
  30953. case '2': // 8 strings to match.
  30954. if (BuiltinName[20] != '_')
  30955. break;
  30956. switch (BuiltinName[21]) {
  30957. default: break;
  30958. case 'c': // 3 strings to match.
  30959. if (memcmp(BuiltinName.data()+22, "mp", 2))
  30960. break;
  30961. switch (BuiltinName[24]) {
  30962. default: break;
  30963. case 'e': // 1 string to match.
  30964. if (BuiltinName[25] != 'q')
  30965. break;
  30966. return Intrinsic::hexagon_C2_cmpeq; // "__builtin_HEXAGON_C2_cmpeq"
  30967. case 'g': // 1 string to match.
  30968. if (BuiltinName[25] != 't')
  30969. break;
  30970. return Intrinsic::hexagon_C2_cmpgt; // "__builtin_HEXAGON_C2_cmpgt"
  30971. case 'l': // 1 string to match.
  30972. if (BuiltinName[25] != 't')
  30973. break;
  30974. return Intrinsic::hexagon_C2_cmplt; // "__builtin_HEXAGON_C2_cmplt"
  30975. }
  30976. break;
  30977. case 'm': // 3 strings to match.
  30978. if (memcmp(BuiltinName.data()+22, "ux", 2))
  30979. break;
  30980. switch (BuiltinName[24]) {
  30981. default: break;
  30982. case 'i': // 2 strings to match.
  30983. switch (BuiltinName[25]) {
  30984. default: break;
  30985. case 'i': // 1 string to match.
  30986. return Intrinsic::hexagon_C2_muxii; // "__builtin_HEXAGON_C2_muxii"
  30987. case 'r': // 1 string to match.
  30988. return Intrinsic::hexagon_C2_muxir; // "__builtin_HEXAGON_C2_muxir"
  30989. }
  30990. break;
  30991. case 'r': // 1 string to match.
  30992. if (BuiltinName[25] != 'i')
  30993. break;
  30994. return Intrinsic::hexagon_C2_muxri; // "__builtin_HEXAGON_C2_muxri"
  30995. }
  30996. break;
  30997. case 't': // 2 strings to match.
  30998. if (memcmp(BuiltinName.data()+22, "fr", 2))
  30999. break;
  31000. switch (BuiltinName[24]) {
  31001. default: break;
  31002. case 'p': // 1 string to match.
  31003. if (BuiltinName[25] != 'r')
  31004. break;
  31005. return Intrinsic::hexagon_C2_tfrpr; // "__builtin_HEXAGON_C2_tfrpr"
  31006. case 'r': // 1 string to match.
  31007. if (BuiltinName[25] != 'p')
  31008. break;
  31009. return Intrinsic::hexagon_C2_tfrrp; // "__builtin_HEXAGON_C2_tfrrp"
  31010. }
  31011. break;
  31012. }
  31013. break;
  31014. case '4': // 1 string to match.
  31015. if (memcmp(BuiltinName.data()+20, "_or_or", 6))
  31016. break;
  31017. return Intrinsic::hexagon_C4_or_or; // "__builtin_HEXAGON_C4_or_or"
  31018. }
  31019. break;
  31020. case 'F': // 14 strings to match.
  31021. if (memcmp(BuiltinName.data()+19, "2_", 2))
  31022. break;
  31023. switch (BuiltinName[21]) {
  31024. default: break;
  31025. case 'd': // 7 strings to match.
  31026. if (BuiltinName[22] != 'f')
  31027. break;
  31028. switch (BuiltinName[23]) {
  31029. default: break;
  31030. case 'a': // 1 string to match.
  31031. if (memcmp(BuiltinName.data()+24, "dd", 2))
  31032. break;
  31033. return Intrinsic::hexagon_F2_dfadd; // "__builtin_HEXAGON_F2_dfadd"
  31034. case 'f': // 2 strings to match.
  31035. if (BuiltinName[24] != 'm')
  31036. break;
  31037. switch (BuiltinName[25]) {
  31038. default: break;
  31039. case 'a': // 1 string to match.
  31040. return Intrinsic::hexagon_F2_dffma; // "__builtin_HEXAGON_F2_dffma"
  31041. case 's': // 1 string to match.
  31042. return Intrinsic::hexagon_F2_dffms; // "__builtin_HEXAGON_F2_dffms"
  31043. }
  31044. break;
  31045. case 'm': // 3 strings to match.
  31046. switch (BuiltinName[24]) {
  31047. default: break;
  31048. case 'a': // 1 string to match.
  31049. if (BuiltinName[25] != 'x')
  31050. break;
  31051. return Intrinsic::hexagon_F2_dfmax; // "__builtin_HEXAGON_F2_dfmax"
  31052. case 'i': // 1 string to match.
  31053. if (BuiltinName[25] != 'n')
  31054. break;
  31055. return Intrinsic::hexagon_F2_dfmin; // "__builtin_HEXAGON_F2_dfmin"
  31056. case 'p': // 1 string to match.
  31057. if (BuiltinName[25] != 'y')
  31058. break;
  31059. return Intrinsic::hexagon_F2_dfmpy; // "__builtin_HEXAGON_F2_dfmpy"
  31060. }
  31061. break;
  31062. case 's': // 1 string to match.
  31063. if (memcmp(BuiltinName.data()+24, "ub", 2))
  31064. break;
  31065. return Intrinsic::hexagon_F2_dfsub; // "__builtin_HEXAGON_F2_dfsub"
  31066. }
  31067. break;
  31068. case 's': // 7 strings to match.
  31069. if (BuiltinName[22] != 'f')
  31070. break;
  31071. switch (BuiltinName[23]) {
  31072. default: break;
  31073. case 'a': // 1 string to match.
  31074. if (memcmp(BuiltinName.data()+24, "dd", 2))
  31075. break;
  31076. return Intrinsic::hexagon_F2_sfadd; // "__builtin_HEXAGON_F2_sfadd"
  31077. case 'f': // 2 strings to match.
  31078. if (BuiltinName[24] != 'm')
  31079. break;
  31080. switch (BuiltinName[25]) {
  31081. default: break;
  31082. case 'a': // 1 string to match.
  31083. return Intrinsic::hexagon_F2_sffma; // "__builtin_HEXAGON_F2_sffma"
  31084. case 's': // 1 string to match.
  31085. return Intrinsic::hexagon_F2_sffms; // "__builtin_HEXAGON_F2_sffms"
  31086. }
  31087. break;
  31088. case 'm': // 3 strings to match.
  31089. switch (BuiltinName[24]) {
  31090. default: break;
  31091. case 'a': // 1 string to match.
  31092. if (BuiltinName[25] != 'x')
  31093. break;
  31094. return Intrinsic::hexagon_F2_sfmax; // "__builtin_HEXAGON_F2_sfmax"
  31095. case 'i': // 1 string to match.
  31096. if (BuiltinName[25] != 'n')
  31097. break;
  31098. return Intrinsic::hexagon_F2_sfmin; // "__builtin_HEXAGON_F2_sfmin"
  31099. case 'p': // 1 string to match.
  31100. if (BuiltinName[25] != 'y')
  31101. break;
  31102. return Intrinsic::hexagon_F2_sfmpy; // "__builtin_HEXAGON_F2_sfmpy"
  31103. }
  31104. break;
  31105. case 's': // 1 string to match.
  31106. if (memcmp(BuiltinName.data()+24, "ub", 2))
  31107. break;
  31108. return Intrinsic::hexagon_F2_sfsub; // "__builtin_HEXAGON_F2_sfsub"
  31109. }
  31110. break;
  31111. }
  31112. break;
  31113. case 'M': // 6 strings to match.
  31114. switch (BuiltinName[19]) {
  31115. default: break;
  31116. case '2': // 4 strings to match.
  31117. if (BuiltinName[20] != '_')
  31118. break;
  31119. switch (BuiltinName[21]) {
  31120. default: break;
  31121. case 'a': // 1 string to match.
  31122. if (memcmp(BuiltinName.data()+22, "ccii", 4))
  31123. break;
  31124. return Intrinsic::hexagon_M2_accii; // "__builtin_HEXAGON_M2_accii"
  31125. case 'm': // 1 string to match.
  31126. if (memcmp(BuiltinName.data()+22, "pyui", 4))
  31127. break;
  31128. return Intrinsic::hexagon_M2_mpyui; // "__builtin_HEXAGON_M2_mpyui"
  31129. case 'n': // 1 string to match.
  31130. if (memcmp(BuiltinName.data()+22, "acci", 4))
  31131. break;
  31132. return Intrinsic::hexagon_M2_nacci; // "__builtin_HEXAGON_M2_nacci"
  31133. case 'v': // 1 string to match.
  31134. if (memcmp(BuiltinName.data()+22, "mac2", 4))
  31135. break;
  31136. return Intrinsic::hexagon_M2_vmac2; // "__builtin_HEXAGON_M2_vmac2"
  31137. }
  31138. break;
  31139. case '4': // 2 strings to match.
  31140. if (BuiltinName[20] != '_')
  31141. break;
  31142. switch (BuiltinName[21]) {
  31143. default: break;
  31144. case 'o': // 1 string to match.
  31145. if (memcmp(BuiltinName.data()+22, "r_or", 4))
  31146. break;
  31147. return Intrinsic::hexagon_M4_or_or; // "__builtin_HEXAGON_M4_or_or"
  31148. case 'p': // 1 string to match.
  31149. if (memcmp(BuiltinName.data()+22, "mpyw", 4))
  31150. break;
  31151. return Intrinsic::hexagon_M4_pmpyw; // "__builtin_HEXAGON_M4_pmpyw"
  31152. }
  31153. break;
  31154. }
  31155. break;
  31156. case 'S': // 1 string to match.
  31157. if (memcmp(BuiltinName.data()+19, "2_brevp", 7))
  31158. break;
  31159. return Intrinsic::hexagon_S2_brevp; // "__builtin_HEXAGON_S2_brevp"
  31160. }
  31161. break;
  31162. case 'S': // 1 string to match.
  31163. if (memcmp(BuiltinName.data()+11, "I_to_SXTHI_asrh", 15))
  31164. break;
  31165. return Intrinsic::hexagon_SI_to_SXTHI_asrh; // "__builtin_SI_to_SXTHI_asrh"
  31166. }
  31167. break;
  31168. case 27: // 70 strings to match.
  31169. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  31170. break;
  31171. switch (BuiltinName[18]) {
  31172. default: break;
  31173. case 'A': // 35 strings to match.
  31174. switch (BuiltinName[19]) {
  31175. default: break;
  31176. case '2': // 26 strings to match.
  31177. if (BuiltinName[20] != '_')
  31178. break;
  31179. switch (BuiltinName[21]) {
  31180. default: break;
  31181. case 'a': // 2 strings to match.
  31182. switch (BuiltinName[22]) {
  31183. default: break;
  31184. case 'b': // 1 string to match.
  31185. if (memcmp(BuiltinName.data()+23, "ssat", 4))
  31186. break;
  31187. return Intrinsic::hexagon_A2_abssat; // "__builtin_HEXAGON_A2_abssat"
  31188. case 'd': // 1 string to match.
  31189. if (memcmp(BuiltinName.data()+23, "dsat", 4))
  31190. break;
  31191. return Intrinsic::hexagon_A2_addsat; // "__builtin_HEXAGON_A2_addsat"
  31192. }
  31193. break;
  31194. case 'n': // 1 string to match.
  31195. if (memcmp(BuiltinName.data()+22, "egsat", 5))
  31196. break;
  31197. return Intrinsic::hexagon_A2_negsat; // "__builtin_HEXAGON_A2_negsat"
  31198. case 's': // 4 strings to match.
  31199. switch (BuiltinName[22]) {
  31200. default: break;
  31201. case 'u': // 1 string to match.
  31202. if (memcmp(BuiltinName.data()+23, "bsat", 4))
  31203. break;
  31204. return Intrinsic::hexagon_A2_subsat; // "__builtin_HEXAGON_A2_subsat"
  31205. case 'v': // 3 strings to match.
  31206. switch (BuiltinName[23]) {
  31207. default: break;
  31208. case 'a': // 2 strings to match.
  31209. switch (BuiltinName[24]) {
  31210. default: break;
  31211. case 'd': // 1 string to match.
  31212. if (memcmp(BuiltinName.data()+25, "dh", 2))
  31213. break;
  31214. return Intrinsic::hexagon_A2_svaddh; // "__builtin_HEXAGON_A2_svaddh"
  31215. case 'v': // 1 string to match.
  31216. if (memcmp(BuiltinName.data()+25, "gh", 2))
  31217. break;
  31218. return Intrinsic::hexagon_A2_svavgh; // "__builtin_HEXAGON_A2_svavgh"
  31219. }
  31220. break;
  31221. case 's': // 1 string to match.
  31222. if (memcmp(BuiltinName.data()+24, "ubh", 3))
  31223. break;
  31224. return Intrinsic::hexagon_A2_svsubh; // "__builtin_HEXAGON_A2_svsubh"
  31225. }
  31226. break;
  31227. }
  31228. break;
  31229. case 'v': // 19 strings to match.
  31230. switch (BuiltinName[22]) {
  31231. default: break;
  31232. case 'a': // 8 strings to match.
  31233. switch (BuiltinName[23]) {
  31234. default: break;
  31235. case 'd': // 3 strings to match.
  31236. if (BuiltinName[24] != 'd')
  31237. break;
  31238. switch (BuiltinName[25]) {
  31239. default: break;
  31240. case 'h': // 1 string to match.
  31241. if (BuiltinName[26] != 's')
  31242. break;
  31243. return Intrinsic::hexagon_A2_vaddhs; // "__builtin_HEXAGON_A2_vaddhs"
  31244. case 'u': // 1 string to match.
  31245. if (BuiltinName[26] != 'b')
  31246. break;
  31247. return Intrinsic::hexagon_A2_vaddub; // "__builtin_HEXAGON_A2_vaddub"
  31248. case 'w': // 1 string to match.
  31249. if (BuiltinName[26] != 's')
  31250. break;
  31251. return Intrinsic::hexagon_A2_vaddws; // "__builtin_HEXAGON_A2_vaddws"
  31252. }
  31253. break;
  31254. case 'v': // 5 strings to match.
  31255. if (BuiltinName[24] != 'g')
  31256. break;
  31257. switch (BuiltinName[25]) {
  31258. default: break;
  31259. case 'h': // 1 string to match.
  31260. if (BuiltinName[26] != 'r')
  31261. break;
  31262. return Intrinsic::hexagon_A2_vavghr; // "__builtin_HEXAGON_A2_vavghr"
  31263. case 'u': // 3 strings to match.
  31264. switch (BuiltinName[26]) {
  31265. default: break;
  31266. case 'b': // 1 string to match.
  31267. return Intrinsic::hexagon_A2_vavgub; // "__builtin_HEXAGON_A2_vavgub"
  31268. case 'h': // 1 string to match.
  31269. return Intrinsic::hexagon_A2_vavguh; // "__builtin_HEXAGON_A2_vavguh"
  31270. case 'w': // 1 string to match.
  31271. return Intrinsic::hexagon_A2_vavguw; // "__builtin_HEXAGON_A2_vavguw"
  31272. }
  31273. break;
  31274. case 'w': // 1 string to match.
  31275. if (BuiltinName[26] != 'r')
  31276. break;
  31277. return Intrinsic::hexagon_A2_vavgwr; // "__builtin_HEXAGON_A2_vavgwr"
  31278. }
  31279. break;
  31280. }
  31281. break;
  31282. case 'm': // 6 strings to match.
  31283. switch (BuiltinName[23]) {
  31284. default: break;
  31285. case 'a': // 3 strings to match.
  31286. if (memcmp(BuiltinName.data()+24, "xu", 2))
  31287. break;
  31288. switch (BuiltinName[26]) {
  31289. default: break;
  31290. case 'b': // 1 string to match.
  31291. return Intrinsic::hexagon_A2_vmaxub; // "__builtin_HEXAGON_A2_vmaxub"
  31292. case 'h': // 1 string to match.
  31293. return Intrinsic::hexagon_A2_vmaxuh; // "__builtin_HEXAGON_A2_vmaxuh"
  31294. case 'w': // 1 string to match.
  31295. return Intrinsic::hexagon_A2_vmaxuw; // "__builtin_HEXAGON_A2_vmaxuw"
  31296. }
  31297. break;
  31298. case 'i': // 3 strings to match.
  31299. if (memcmp(BuiltinName.data()+24, "nu", 2))
  31300. break;
  31301. switch (BuiltinName[26]) {
  31302. default: break;
  31303. case 'b': // 1 string to match.
  31304. return Intrinsic::hexagon_A2_vminub; // "__builtin_HEXAGON_A2_vminub"
  31305. case 'h': // 1 string to match.
  31306. return Intrinsic::hexagon_A2_vminuh; // "__builtin_HEXAGON_A2_vminuh"
  31307. case 'w': // 1 string to match.
  31308. return Intrinsic::hexagon_A2_vminuw; // "__builtin_HEXAGON_A2_vminuw"
  31309. }
  31310. break;
  31311. }
  31312. break;
  31313. case 'n': // 2 strings to match.
  31314. if (memcmp(BuiltinName.data()+23, "avg", 3))
  31315. break;
  31316. switch (BuiltinName[26]) {
  31317. default: break;
  31318. case 'h': // 1 string to match.
  31319. return Intrinsic::hexagon_A2_vnavgh; // "__builtin_HEXAGON_A2_vnavgh"
  31320. case 'w': // 1 string to match.
  31321. return Intrinsic::hexagon_A2_vnavgw; // "__builtin_HEXAGON_A2_vnavgw"
  31322. }
  31323. break;
  31324. case 's': // 3 strings to match.
  31325. if (memcmp(BuiltinName.data()+23, "ub", 2))
  31326. break;
  31327. switch (BuiltinName[25]) {
  31328. default: break;
  31329. case 'h': // 1 string to match.
  31330. if (BuiltinName[26] != 's')
  31331. break;
  31332. return Intrinsic::hexagon_A2_vsubhs; // "__builtin_HEXAGON_A2_vsubhs"
  31333. case 'u': // 1 string to match.
  31334. if (BuiltinName[26] != 'b')
  31335. break;
  31336. return Intrinsic::hexagon_A2_vsubub; // "__builtin_HEXAGON_A2_vsubub"
  31337. case 'w': // 1 string to match.
  31338. if (BuiltinName[26] != 's')
  31339. break;
  31340. return Intrinsic::hexagon_A2_vsubws; // "__builtin_HEXAGON_A2_vsubws"
  31341. }
  31342. break;
  31343. }
  31344. break;
  31345. }
  31346. break;
  31347. case '4': // 9 strings to match.
  31348. if (BuiltinName[20] != '_')
  31349. break;
  31350. switch (BuiltinName[21]) {
  31351. default: break;
  31352. case 'c': // 4 strings to match.
  31353. if (memcmp(BuiltinName.data()+22, "mp", 2))
  31354. break;
  31355. switch (BuiltinName[24]) {
  31356. default: break;
  31357. case 'b': // 2 strings to match.
  31358. switch (BuiltinName[25]) {
  31359. default: break;
  31360. case 'e': // 1 string to match.
  31361. if (BuiltinName[26] != 'q')
  31362. break;
  31363. return Intrinsic::hexagon_A4_cmpbeq; // "__builtin_HEXAGON_A4_cmpbeq"
  31364. case 'g': // 1 string to match.
  31365. if (BuiltinName[26] != 't')
  31366. break;
  31367. return Intrinsic::hexagon_A4_cmpbgt; // "__builtin_HEXAGON_A4_cmpbgt"
  31368. }
  31369. break;
  31370. case 'h': // 2 strings to match.
  31371. switch (BuiltinName[25]) {
  31372. default: break;
  31373. case 'e': // 1 string to match.
  31374. if (BuiltinName[26] != 'q')
  31375. break;
  31376. return Intrinsic::hexagon_A4_cmpheq; // "__builtin_HEXAGON_A4_cmpheq"
  31377. case 'g': // 1 string to match.
  31378. if (BuiltinName[26] != 't')
  31379. break;
  31380. return Intrinsic::hexagon_A4_cmphgt; // "__builtin_HEXAGON_A4_cmphgt"
  31381. }
  31382. break;
  31383. }
  31384. break;
  31385. case 'r': // 1 string to match.
  31386. if (memcmp(BuiltinName.data()+22, "cmpeq", 5))
  31387. break;
  31388. return Intrinsic::hexagon_A4_rcmpeq; // "__builtin_HEXAGON_A4_rcmpeq"
  31389. case 'v': // 4 strings to match.
  31390. if (memcmp(BuiltinName.data()+22, "rm", 2))
  31391. break;
  31392. switch (BuiltinName[24]) {
  31393. default: break;
  31394. case 'a': // 2 strings to match.
  31395. if (BuiltinName[25] != 'x')
  31396. break;
  31397. switch (BuiltinName[26]) {
  31398. default: break;
  31399. case 'h': // 1 string to match.
  31400. return Intrinsic::hexagon_A4_vrmaxh; // "__builtin_HEXAGON_A4_vrmaxh"
  31401. case 'w': // 1 string to match.
  31402. return Intrinsic::hexagon_A4_vrmaxw; // "__builtin_HEXAGON_A4_vrmaxw"
  31403. }
  31404. break;
  31405. case 'i': // 2 strings to match.
  31406. if (BuiltinName[25] != 'n')
  31407. break;
  31408. switch (BuiltinName[26]) {
  31409. default: break;
  31410. case 'h': // 1 string to match.
  31411. return Intrinsic::hexagon_A4_vrminh; // "__builtin_HEXAGON_A4_vrminh"
  31412. case 'w': // 1 string to match.
  31413. return Intrinsic::hexagon_A4_vrminw; // "__builtin_HEXAGON_A4_vrminw"
  31414. }
  31415. break;
  31416. }
  31417. break;
  31418. }
  31419. break;
  31420. }
  31421. break;
  31422. case 'C': // 12 strings to match.
  31423. switch (BuiltinName[19]) {
  31424. default: break;
  31425. case '2': // 7 strings to match.
  31426. if (memcmp(BuiltinName.data()+20, "_cmp", 4))
  31427. break;
  31428. switch (BuiltinName[24]) {
  31429. default: break;
  31430. case 'e': // 2 strings to match.
  31431. if (BuiltinName[25] != 'q')
  31432. break;
  31433. switch (BuiltinName[26]) {
  31434. default: break;
  31435. case 'i': // 1 string to match.
  31436. return Intrinsic::hexagon_C2_cmpeqi; // "__builtin_HEXAGON_C2_cmpeqi"
  31437. case 'p': // 1 string to match.
  31438. return Intrinsic::hexagon_C2_cmpeqp; // "__builtin_HEXAGON_C2_cmpeqp"
  31439. }
  31440. break;
  31441. case 'g': // 4 strings to match.
  31442. switch (BuiltinName[25]) {
  31443. default: break;
  31444. case 'e': // 1 string to match.
  31445. if (BuiltinName[26] != 'i')
  31446. break;
  31447. return Intrinsic::hexagon_C2_cmpgei; // "__builtin_HEXAGON_C2_cmpgei"
  31448. case 't': // 3 strings to match.
  31449. switch (BuiltinName[26]) {
  31450. default: break;
  31451. case 'i': // 1 string to match.
  31452. return Intrinsic::hexagon_C2_cmpgti; // "__builtin_HEXAGON_C2_cmpgti"
  31453. case 'p': // 1 string to match.
  31454. return Intrinsic::hexagon_C2_cmpgtp; // "__builtin_HEXAGON_C2_cmpgtp"
  31455. case 'u': // 1 string to match.
  31456. return Intrinsic::hexagon_C2_cmpgtu; // "__builtin_HEXAGON_C2_cmpgtu"
  31457. }
  31458. break;
  31459. }
  31460. break;
  31461. case 'l': // 1 string to match.
  31462. if (memcmp(BuiltinName.data()+25, "tu", 2))
  31463. break;
  31464. return Intrinsic::hexagon_C2_cmpltu; // "__builtin_HEXAGON_C2_cmpltu"
  31465. }
  31466. break;
  31467. case '4': // 5 strings to match.
  31468. if (BuiltinName[20] != '_')
  31469. break;
  31470. switch (BuiltinName[21]) {
  31471. default: break;
  31472. case 'a': // 1 string to match.
  31473. if (memcmp(BuiltinName.data()+22, "nd_or", 5))
  31474. break;
  31475. return Intrinsic::hexagon_C4_and_or; // "__builtin_HEXAGON_C4_and_or"
  31476. case 'c': // 2 strings to match.
  31477. if (memcmp(BuiltinName.data()+22, "mp", 2))
  31478. break;
  31479. switch (BuiltinName[24]) {
  31480. default: break;
  31481. case 'l': // 1 string to match.
  31482. if (memcmp(BuiltinName.data()+25, "te", 2))
  31483. break;
  31484. return Intrinsic::hexagon_C4_cmplte; // "__builtin_HEXAGON_C4_cmplte"
  31485. case 'n': // 1 string to match.
  31486. if (memcmp(BuiltinName.data()+25, "eq", 2))
  31487. break;
  31488. return Intrinsic::hexagon_C4_cmpneq; // "__builtin_HEXAGON_C4_cmpneq"
  31489. }
  31490. break;
  31491. case 'o': // 2 strings to match.
  31492. if (memcmp(BuiltinName.data()+22, "r_", 2))
  31493. break;
  31494. switch (BuiltinName[24]) {
  31495. default: break;
  31496. case 'a': // 1 string to match.
  31497. if (memcmp(BuiltinName.data()+25, "nd", 2))
  31498. break;
  31499. return Intrinsic::hexagon_C4_or_and; // "__builtin_HEXAGON_C4_or_and"
  31500. case 'o': // 1 string to match.
  31501. if (memcmp(BuiltinName.data()+25, "rn", 2))
  31502. break;
  31503. return Intrinsic::hexagon_C4_or_orn; // "__builtin_HEXAGON_C4_or_orn"
  31504. }
  31505. break;
  31506. }
  31507. break;
  31508. }
  31509. break;
  31510. case 'M': // 12 strings to match.
  31511. switch (BuiltinName[19]) {
  31512. default: break;
  31513. case '2': // 7 strings to match.
  31514. if (BuiltinName[20] != '_')
  31515. break;
  31516. switch (BuiltinName[21]) {
  31517. default: break;
  31518. case 'm': // 4 strings to match.
  31519. switch (BuiltinName[22]) {
  31520. default: break;
  31521. case 'a': // 2 strings to match.
  31522. if (memcmp(BuiltinName.data()+23, "csi", 3))
  31523. break;
  31524. switch (BuiltinName[26]) {
  31525. default: break;
  31526. case 'n': // 1 string to match.
  31527. return Intrinsic::hexagon_M2_macsin; // "__builtin_HEXAGON_M2_macsin"
  31528. case 'p': // 1 string to match.
  31529. return Intrinsic::hexagon_M2_macsip; // "__builtin_HEXAGON_M2_macsip"
  31530. }
  31531. break;
  31532. case 'p': // 2 strings to match.
  31533. if (BuiltinName[23] != 'y')
  31534. break;
  31535. switch (BuiltinName[24]) {
  31536. default: break;
  31537. case '_': // 1 string to match.
  31538. if (memcmp(BuiltinName.data()+25, "up", 2))
  31539. break;
  31540. return Intrinsic::hexagon_M2_mpy_up; // "__builtin_HEXAGON_M2_mpy_up"
  31541. case 's': // 1 string to match.
  31542. if (memcmp(BuiltinName.data()+25, "mi", 2))
  31543. break;
  31544. return Intrinsic::hexagon_M2_mpysmi; // "__builtin_HEXAGON_M2_mpysmi"
  31545. }
  31546. break;
  31547. }
  31548. break;
  31549. case 'n': // 1 string to match.
  31550. if (memcmp(BuiltinName.data()+22, "accii", 5))
  31551. break;
  31552. return Intrinsic::hexagon_M2_naccii; // "__builtin_HEXAGON_M2_naccii"
  31553. case 's': // 1 string to match.
  31554. if (memcmp(BuiltinName.data()+22, "ubacc", 5))
  31555. break;
  31556. return Intrinsic::hexagon_M2_subacc; // "__builtin_HEXAGON_M2_subacc"
  31557. case 'v': // 1 string to match.
  31558. if (memcmp(BuiltinName.data()+22, "raddh", 5))
  31559. break;
  31560. return Intrinsic::hexagon_M2_vraddh; // "__builtin_HEXAGON_M2_vraddh"
  31561. }
  31562. break;
  31563. case '4': // 5 strings to match.
  31564. if (BuiltinName[20] != '_')
  31565. break;
  31566. switch (BuiltinName[21]) {
  31567. default: break;
  31568. case 'a': // 1 string to match.
  31569. if (memcmp(BuiltinName.data()+22, "nd_or", 5))
  31570. break;
  31571. return Intrinsic::hexagon_M4_and_or; // "__builtin_HEXAGON_M4_and_or"
  31572. case 'o': // 2 strings to match.
  31573. if (memcmp(BuiltinName.data()+22, "r_", 2))
  31574. break;
  31575. switch (BuiltinName[24]) {
  31576. default: break;
  31577. case 'a': // 1 string to match.
  31578. if (memcmp(BuiltinName.data()+25, "nd", 2))
  31579. break;
  31580. return Intrinsic::hexagon_M4_or_and; // "__builtin_HEXAGON_M4_or_and"
  31581. case 'x': // 1 string to match.
  31582. if (memcmp(BuiltinName.data()+25, "or", 2))
  31583. break;
  31584. return Intrinsic::hexagon_M4_or_xor; // "__builtin_HEXAGON_M4_or_xor"
  31585. }
  31586. break;
  31587. case 'v': // 1 string to match.
  31588. if (memcmp(BuiltinName.data()+22, "pmpyh", 5))
  31589. break;
  31590. return Intrinsic::hexagon_M4_vpmpyh; // "__builtin_HEXAGON_M4_vpmpyh"
  31591. case 'x': // 1 string to match.
  31592. if (memcmp(BuiltinName.data()+22, "or_or", 5))
  31593. break;
  31594. return Intrinsic::hexagon_M4_xor_or; // "__builtin_HEXAGON_M4_xor_or"
  31595. }
  31596. break;
  31597. }
  31598. break;
  31599. case 'S': // 11 strings to match.
  31600. switch (BuiltinName[19]) {
  31601. default: break;
  31602. case '2': // 9 strings to match.
  31603. if (BuiltinName[20] != '_')
  31604. break;
  31605. switch (BuiltinName[21]) {
  31606. default: break;
  31607. case 'i': // 1 string to match.
  31608. if (memcmp(BuiltinName.data()+22, "nsert", 5))
  31609. break;
  31610. return Intrinsic::hexagon_S2_insert; // "__builtin_HEXAGON_S2_insert"
  31611. case 'p': // 1 string to match.
  31612. if (memcmp(BuiltinName.data()+22, "ackhl", 5))
  31613. break;
  31614. return Intrinsic::hexagon_S2_packhl; // "__builtin_HEXAGON_S2_packhl"
  31615. case 'v': // 7 strings to match.
  31616. switch (BuiltinName[22]) {
  31617. default: break;
  31618. case 'c': // 1 string to match.
  31619. if (memcmp(BuiltinName.data()+23, "negh", 4))
  31620. break;
  31621. return Intrinsic::hexagon_S2_vcnegh; // "__builtin_HEXAGON_S2_vcnegh"
  31622. case 's': // 4 strings to match.
  31623. switch (BuiltinName[23]) {
  31624. default: break;
  31625. case 'a': // 2 strings to match.
  31626. if (BuiltinName[24] != 't')
  31627. break;
  31628. switch (BuiltinName[25]) {
  31629. default: break;
  31630. case 'h': // 1 string to match.
  31631. if (BuiltinName[26] != 'b')
  31632. break;
  31633. return Intrinsic::hexagon_S2_vsathb; // "__builtin_HEXAGON_S2_vsathb"
  31634. case 'w': // 1 string to match.
  31635. if (BuiltinName[26] != 'h')
  31636. break;
  31637. return Intrinsic::hexagon_S2_vsatwh; // "__builtin_HEXAGON_S2_vsatwh"
  31638. }
  31639. break;
  31640. case 'x': // 2 strings to match.
  31641. if (BuiltinName[24] != 't')
  31642. break;
  31643. switch (BuiltinName[25]) {
  31644. default: break;
  31645. case 'b': // 1 string to match.
  31646. if (BuiltinName[26] != 'h')
  31647. break;
  31648. return Intrinsic::hexagon_S2_vsxtbh; // "__builtin_HEXAGON_S2_vsxtbh"
  31649. case 'h': // 1 string to match.
  31650. if (BuiltinName[26] != 'w')
  31651. break;
  31652. return Intrinsic::hexagon_S2_vsxthw; // "__builtin_HEXAGON_S2_vsxthw"
  31653. }
  31654. break;
  31655. }
  31656. break;
  31657. case 'z': // 2 strings to match.
  31658. if (memcmp(BuiltinName.data()+23, "xt", 2))
  31659. break;
  31660. switch (BuiltinName[25]) {
  31661. default: break;
  31662. case 'b': // 1 string to match.
  31663. if (BuiltinName[26] != 'h')
  31664. break;
  31665. return Intrinsic::hexagon_S2_vzxtbh; // "__builtin_HEXAGON_S2_vzxtbh"
  31666. case 'h': // 1 string to match.
  31667. if (BuiltinName[26] != 'w')
  31668. break;
  31669. return Intrinsic::hexagon_S2_vzxthw; // "__builtin_HEXAGON_S2_vzxthw"
  31670. }
  31671. break;
  31672. }
  31673. break;
  31674. }
  31675. break;
  31676. case '4': // 2 strings to match.
  31677. if (BuiltinName[20] != '_')
  31678. break;
  31679. switch (BuiltinName[21]) {
  31680. default: break;
  31681. case 'o': // 1 string to match.
  31682. if (memcmp(BuiltinName.data()+22, "r_ori", 5))
  31683. break;
  31684. return Intrinsic::hexagon_S4_or_ori; // "__builtin_HEXAGON_S4_or_ori"
  31685. case 'p': // 1 string to match.
  31686. if (memcmp(BuiltinName.data()+22, "arity", 5))
  31687. break;
  31688. return Intrinsic::hexagon_S4_parity; // "__builtin_HEXAGON_S4_parity"
  31689. }
  31690. break;
  31691. }
  31692. break;
  31693. }
  31694. break;
  31695. case 28: // 103 strings to match.
  31696. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  31697. break;
  31698. switch (BuiltinName[18]) {
  31699. default: break;
  31700. case 'A': // 36 strings to match.
  31701. switch (BuiltinName[19]) {
  31702. default: break;
  31703. case '2': // 23 strings to match.
  31704. if (BuiltinName[20] != '_')
  31705. break;
  31706. switch (BuiltinName[21]) {
  31707. default: break;
  31708. case 'a': // 1 string to match.
  31709. if (memcmp(BuiltinName.data()+22, "ddpsat", 6))
  31710. break;
  31711. return Intrinsic::hexagon_A2_addpsat; // "__builtin_HEXAGON_A2_addpsat"
  31712. case 's': // 4 strings to match.
  31713. if (BuiltinName[22] != 'v')
  31714. break;
  31715. switch (BuiltinName[23]) {
  31716. default: break;
  31717. case 'a': // 2 strings to match.
  31718. switch (BuiltinName[24]) {
  31719. default: break;
  31720. case 'd': // 1 string to match.
  31721. if (memcmp(BuiltinName.data()+25, "dhs", 3))
  31722. break;
  31723. return Intrinsic::hexagon_A2_svaddhs; // "__builtin_HEXAGON_A2_svaddhs"
  31724. case 'v': // 1 string to match.
  31725. if (memcmp(BuiltinName.data()+25, "ghs", 3))
  31726. break;
  31727. return Intrinsic::hexagon_A2_svavghs; // "__builtin_HEXAGON_A2_svavghs"
  31728. }
  31729. break;
  31730. case 'n': // 1 string to match.
  31731. if (memcmp(BuiltinName.data()+24, "avgh", 4))
  31732. break;
  31733. return Intrinsic::hexagon_A2_svnavgh; // "__builtin_HEXAGON_A2_svnavgh"
  31734. case 's': // 1 string to match.
  31735. if (memcmp(BuiltinName.data()+24, "ubhs", 4))
  31736. break;
  31737. return Intrinsic::hexagon_A2_svsubhs; // "__builtin_HEXAGON_A2_svsubhs"
  31738. }
  31739. break;
  31740. case 'v': // 18 strings to match.
  31741. switch (BuiltinName[22]) {
  31742. default: break;
  31743. case 'a': // 7 strings to match.
  31744. switch (BuiltinName[23]) {
  31745. default: break;
  31746. case 'd': // 2 strings to match.
  31747. if (memcmp(BuiltinName.data()+24, "du", 2))
  31748. break;
  31749. switch (BuiltinName[26]) {
  31750. default: break;
  31751. case 'b': // 1 string to match.
  31752. if (BuiltinName[27] != 's')
  31753. break;
  31754. return Intrinsic::hexagon_A2_vaddubs; // "__builtin_HEXAGON_A2_vaddubs"
  31755. case 'h': // 1 string to match.
  31756. if (BuiltinName[27] != 's')
  31757. break;
  31758. return Intrinsic::hexagon_A2_vadduhs; // "__builtin_HEXAGON_A2_vadduhs"
  31759. }
  31760. break;
  31761. case 'v': // 5 strings to match.
  31762. if (BuiltinName[24] != 'g')
  31763. break;
  31764. switch (BuiltinName[25]) {
  31765. default: break;
  31766. case 'h': // 1 string to match.
  31767. if (memcmp(BuiltinName.data()+26, "cr", 2))
  31768. break;
  31769. return Intrinsic::hexagon_A2_vavghcr; // "__builtin_HEXAGON_A2_vavghcr"
  31770. case 'u': // 3 strings to match.
  31771. switch (BuiltinName[26]) {
  31772. default: break;
  31773. case 'b': // 1 string to match.
  31774. if (BuiltinName[27] != 'r')
  31775. break;
  31776. return Intrinsic::hexagon_A2_vavgubr; // "__builtin_HEXAGON_A2_vavgubr"
  31777. case 'h': // 1 string to match.
  31778. if (BuiltinName[27] != 'r')
  31779. break;
  31780. return Intrinsic::hexagon_A2_vavguhr; // "__builtin_HEXAGON_A2_vavguhr"
  31781. case 'w': // 1 string to match.
  31782. if (BuiltinName[27] != 'r')
  31783. break;
  31784. return Intrinsic::hexagon_A2_vavguwr; // "__builtin_HEXAGON_A2_vavguwr"
  31785. }
  31786. break;
  31787. case 'w': // 1 string to match.
  31788. if (memcmp(BuiltinName.data()+26, "cr", 2))
  31789. break;
  31790. return Intrinsic::hexagon_A2_vavgwcr; // "__builtin_HEXAGON_A2_vavgwcr"
  31791. }
  31792. break;
  31793. }
  31794. break;
  31795. case 'c': // 5 strings to match.
  31796. if (memcmp(BuiltinName.data()+23, "mp", 2))
  31797. break;
  31798. switch (BuiltinName[25]) {
  31799. default: break;
  31800. case 'b': // 1 string to match.
  31801. if (memcmp(BuiltinName.data()+26, "eq", 2))
  31802. break;
  31803. return Intrinsic::hexagon_A2_vcmpbeq; // "__builtin_HEXAGON_A2_vcmpbeq"
  31804. case 'h': // 2 strings to match.
  31805. switch (BuiltinName[26]) {
  31806. default: break;
  31807. case 'e': // 1 string to match.
  31808. if (BuiltinName[27] != 'q')
  31809. break;
  31810. return Intrinsic::hexagon_A2_vcmpheq; // "__builtin_HEXAGON_A2_vcmpheq"
  31811. case 'g': // 1 string to match.
  31812. if (BuiltinName[27] != 't')
  31813. break;
  31814. return Intrinsic::hexagon_A2_vcmphgt; // "__builtin_HEXAGON_A2_vcmphgt"
  31815. }
  31816. break;
  31817. case 'w': // 2 strings to match.
  31818. switch (BuiltinName[26]) {
  31819. default: break;
  31820. case 'e': // 1 string to match.
  31821. if (BuiltinName[27] != 'q')
  31822. break;
  31823. return Intrinsic::hexagon_A2_vcmpweq; // "__builtin_HEXAGON_A2_vcmpweq"
  31824. case 'g': // 1 string to match.
  31825. if (BuiltinName[27] != 't')
  31826. break;
  31827. return Intrinsic::hexagon_A2_vcmpwgt; // "__builtin_HEXAGON_A2_vcmpwgt"
  31828. }
  31829. break;
  31830. }
  31831. break;
  31832. case 'n': // 2 strings to match.
  31833. if (memcmp(BuiltinName.data()+23, "avg", 3))
  31834. break;
  31835. switch (BuiltinName[26]) {
  31836. default: break;
  31837. case 'h': // 1 string to match.
  31838. if (BuiltinName[27] != 'r')
  31839. break;
  31840. return Intrinsic::hexagon_A2_vnavghr; // "__builtin_HEXAGON_A2_vnavghr"
  31841. case 'w': // 1 string to match.
  31842. if (BuiltinName[27] != 'r')
  31843. break;
  31844. return Intrinsic::hexagon_A2_vnavgwr; // "__builtin_HEXAGON_A2_vnavgwr"
  31845. }
  31846. break;
  31847. case 'r': // 2 strings to match.
  31848. switch (BuiltinName[23]) {
  31849. default: break;
  31850. case 'a': // 1 string to match.
  31851. if (memcmp(BuiltinName.data()+24, "ddub", 4))
  31852. break;
  31853. return Intrinsic::hexagon_A2_vraddub; // "__builtin_HEXAGON_A2_vraddub"
  31854. case 's': // 1 string to match.
  31855. if (memcmp(BuiltinName.data()+24, "adub", 4))
  31856. break;
  31857. return Intrinsic::hexagon_A2_vrsadub; // "__builtin_HEXAGON_A2_vrsadub"
  31858. }
  31859. break;
  31860. case 's': // 2 strings to match.
  31861. if (memcmp(BuiltinName.data()+23, "ubu", 3))
  31862. break;
  31863. switch (BuiltinName[26]) {
  31864. default: break;
  31865. case 'b': // 1 string to match.
  31866. if (BuiltinName[27] != 's')
  31867. break;
  31868. return Intrinsic::hexagon_A2_vsububs; // "__builtin_HEXAGON_A2_vsububs"
  31869. case 'h': // 1 string to match.
  31870. if (BuiltinName[27] != 's')
  31871. break;
  31872. return Intrinsic::hexagon_A2_vsubuhs; // "__builtin_HEXAGON_A2_vsubuhs"
  31873. }
  31874. break;
  31875. }
  31876. break;
  31877. }
  31878. break;
  31879. case '4': // 13 strings to match.
  31880. if (BuiltinName[20] != '_')
  31881. break;
  31882. switch (BuiltinName[21]) {
  31883. default: break;
  31884. case 'c': // 6 strings to match.
  31885. if (memcmp(BuiltinName.data()+22, "mp", 2))
  31886. break;
  31887. switch (BuiltinName[24]) {
  31888. default: break;
  31889. case 'b': // 3 strings to match.
  31890. switch (BuiltinName[25]) {
  31891. default: break;
  31892. case 'e': // 1 string to match.
  31893. if (memcmp(BuiltinName.data()+26, "qi", 2))
  31894. break;
  31895. return Intrinsic::hexagon_A4_cmpbeqi; // "__builtin_HEXAGON_A4_cmpbeqi"
  31896. case 'g': // 2 strings to match.
  31897. if (BuiltinName[26] != 't')
  31898. break;
  31899. switch (BuiltinName[27]) {
  31900. default: break;
  31901. case 'i': // 1 string to match.
  31902. return Intrinsic::hexagon_A4_cmpbgti; // "__builtin_HEXAGON_A4_cmpbgti"
  31903. case 'u': // 1 string to match.
  31904. return Intrinsic::hexagon_A4_cmpbgtu; // "__builtin_HEXAGON_A4_cmpbgtu"
  31905. }
  31906. break;
  31907. }
  31908. break;
  31909. case 'h': // 3 strings to match.
  31910. switch (BuiltinName[25]) {
  31911. default: break;
  31912. case 'e': // 1 string to match.
  31913. if (memcmp(BuiltinName.data()+26, "qi", 2))
  31914. break;
  31915. return Intrinsic::hexagon_A4_cmpheqi; // "__builtin_HEXAGON_A4_cmpheqi"
  31916. case 'g': // 2 strings to match.
  31917. if (BuiltinName[26] != 't')
  31918. break;
  31919. switch (BuiltinName[27]) {
  31920. default: break;
  31921. case 'i': // 1 string to match.
  31922. return Intrinsic::hexagon_A4_cmphgti; // "__builtin_HEXAGON_A4_cmphgti"
  31923. case 'u': // 1 string to match.
  31924. return Intrinsic::hexagon_A4_cmphgtu; // "__builtin_HEXAGON_A4_cmphgtu"
  31925. }
  31926. break;
  31927. }
  31928. break;
  31929. }
  31930. break;
  31931. case 'r': // 2 strings to match.
  31932. if (memcmp(BuiltinName.data()+22, "cmp", 3))
  31933. break;
  31934. switch (BuiltinName[25]) {
  31935. default: break;
  31936. case 'e': // 1 string to match.
  31937. if (memcmp(BuiltinName.data()+26, "qi", 2))
  31938. break;
  31939. return Intrinsic::hexagon_A4_rcmpeqi; // "__builtin_HEXAGON_A4_rcmpeqi"
  31940. case 'n': // 1 string to match.
  31941. if (memcmp(BuiltinName.data()+26, "eq", 2))
  31942. break;
  31943. return Intrinsic::hexagon_A4_rcmpneq; // "__builtin_HEXAGON_A4_rcmpneq"
  31944. }
  31945. break;
  31946. case 'v': // 5 strings to match.
  31947. switch (BuiltinName[22]) {
  31948. default: break;
  31949. case 'c': // 1 string to match.
  31950. if (memcmp(BuiltinName.data()+23, "mpbgt", 5))
  31951. break;
  31952. return Intrinsic::hexagon_A4_vcmpbgt; // "__builtin_HEXAGON_A4_vcmpbgt"
  31953. case 'r': // 4 strings to match.
  31954. if (BuiltinName[23] != 'm')
  31955. break;
  31956. switch (BuiltinName[24]) {
  31957. default: break;
  31958. case 'a': // 2 strings to match.
  31959. if (memcmp(BuiltinName.data()+25, "xu", 2))
  31960. break;
  31961. switch (BuiltinName[27]) {
  31962. default: break;
  31963. case 'h': // 1 string to match.
  31964. return Intrinsic::hexagon_A4_vrmaxuh; // "__builtin_HEXAGON_A4_vrmaxuh"
  31965. case 'w': // 1 string to match.
  31966. return Intrinsic::hexagon_A4_vrmaxuw; // "__builtin_HEXAGON_A4_vrmaxuw"
  31967. }
  31968. break;
  31969. case 'i': // 2 strings to match.
  31970. if (memcmp(BuiltinName.data()+25, "nu", 2))
  31971. break;
  31972. switch (BuiltinName[27]) {
  31973. default: break;
  31974. case 'h': // 1 string to match.
  31975. return Intrinsic::hexagon_A4_vrminuh; // "__builtin_HEXAGON_A4_vrminuh"
  31976. case 'w': // 1 string to match.
  31977. return Intrinsic::hexagon_A4_vrminuw; // "__builtin_HEXAGON_A4_vrminuw"
  31978. }
  31979. break;
  31980. }
  31981. break;
  31982. }
  31983. break;
  31984. }
  31985. break;
  31986. }
  31987. break;
  31988. case 'C': // 12 strings to match.
  31989. switch (BuiltinName[19]) {
  31990. default: break;
  31991. case '2': // 6 strings to match.
  31992. if (BuiltinName[20] != '_')
  31993. break;
  31994. switch (BuiltinName[21]) {
  31995. default: break;
  31996. case 'b': // 2 strings to match.
  31997. if (memcmp(BuiltinName.data()+22, "its", 3))
  31998. break;
  31999. switch (BuiltinName[25]) {
  32000. default: break;
  32001. case 'c': // 1 string to match.
  32002. if (memcmp(BuiltinName.data()+26, "lr", 2))
  32003. break;
  32004. return Intrinsic::hexagon_C2_bitsclr; // "__builtin_HEXAGON_C2_bitsclr"
  32005. case 's': // 1 string to match.
  32006. if (memcmp(BuiltinName.data()+26, "et", 2))
  32007. break;
  32008. return Intrinsic::hexagon_C2_bitsset; // "__builtin_HEXAGON_C2_bitsset"
  32009. }
  32010. break;
  32011. case 'c': // 3 strings to match.
  32012. if (memcmp(BuiltinName.data()+22, "mpg", 3))
  32013. break;
  32014. switch (BuiltinName[25]) {
  32015. default: break;
  32016. case 'e': // 1 string to match.
  32017. if (memcmp(BuiltinName.data()+26, "ui", 2))
  32018. break;
  32019. return Intrinsic::hexagon_C2_cmpgeui; // "__builtin_HEXAGON_C2_cmpgeui"
  32020. case 't': // 2 strings to match.
  32021. if (BuiltinName[26] != 'u')
  32022. break;
  32023. switch (BuiltinName[27]) {
  32024. default: break;
  32025. case 'i': // 1 string to match.
  32026. return Intrinsic::hexagon_C2_cmpgtui; // "__builtin_HEXAGON_C2_cmpgtui"
  32027. case 'p': // 1 string to match.
  32028. return Intrinsic::hexagon_C2_cmpgtup; // "__builtin_HEXAGON_C2_cmpgtup"
  32029. }
  32030. break;
  32031. }
  32032. break;
  32033. case 'v': // 1 string to match.
  32034. if (memcmp(BuiltinName.data()+22, "itpack", 6))
  32035. break;
  32036. return Intrinsic::hexagon_C2_vitpack; // "__builtin_HEXAGON_C2_vitpack"
  32037. }
  32038. break;
  32039. case '4': // 6 strings to match.
  32040. if (BuiltinName[20] != '_')
  32041. break;
  32042. switch (BuiltinName[21]) {
  32043. default: break;
  32044. case 'a': // 2 strings to match.
  32045. if (memcmp(BuiltinName.data()+22, "nd_", 3))
  32046. break;
  32047. switch (BuiltinName[25]) {
  32048. default: break;
  32049. case 'a': // 1 string to match.
  32050. if (memcmp(BuiltinName.data()+26, "nd", 2))
  32051. break;
  32052. return Intrinsic::hexagon_C4_and_and; // "__builtin_HEXAGON_C4_and_and"
  32053. case 'o': // 1 string to match.
  32054. if (memcmp(BuiltinName.data()+26, "rn", 2))
  32055. break;
  32056. return Intrinsic::hexagon_C4_and_orn; // "__builtin_HEXAGON_C4_and_orn"
  32057. }
  32058. break;
  32059. case 'c': // 3 strings to match.
  32060. if (memcmp(BuiltinName.data()+22, "mp", 2))
  32061. break;
  32062. switch (BuiltinName[24]) {
  32063. default: break;
  32064. case 'l': // 2 strings to match.
  32065. if (memcmp(BuiltinName.data()+25, "te", 2))
  32066. break;
  32067. switch (BuiltinName[27]) {
  32068. default: break;
  32069. case 'i': // 1 string to match.
  32070. return Intrinsic::hexagon_C4_cmpltei; // "__builtin_HEXAGON_C4_cmpltei"
  32071. case 'u': // 1 string to match.
  32072. return Intrinsic::hexagon_C4_cmplteu; // "__builtin_HEXAGON_C4_cmplteu"
  32073. }
  32074. break;
  32075. case 'n': // 1 string to match.
  32076. if (memcmp(BuiltinName.data()+25, "eqi", 3))
  32077. break;
  32078. return Intrinsic::hexagon_C4_cmpneqi; // "__builtin_HEXAGON_C4_cmpneqi"
  32079. }
  32080. break;
  32081. case 'o': // 1 string to match.
  32082. if (memcmp(BuiltinName.data()+22, "r_andn", 6))
  32083. break;
  32084. return Intrinsic::hexagon_C4_or_andn; // "__builtin_HEXAGON_C4_or_andn"
  32085. }
  32086. break;
  32087. }
  32088. break;
  32089. case 'F': // 14 strings to match.
  32090. if (memcmp(BuiltinName.data()+19, "2_", 2))
  32091. break;
  32092. switch (BuiltinName[21]) {
  32093. default: break;
  32094. case 'd': // 7 strings to match.
  32095. if (BuiltinName[22] != 'f')
  32096. break;
  32097. switch (BuiltinName[23]) {
  32098. default: break;
  32099. case 'c': // 5 strings to match.
  32100. switch (BuiltinName[24]) {
  32101. default: break;
  32102. case 'l': // 1 string to match.
  32103. if (memcmp(BuiltinName.data()+25, "ass", 3))
  32104. break;
  32105. return Intrinsic::hexagon_F2_dfclass; // "__builtin_HEXAGON_F2_dfclass"
  32106. case 'm': // 4 strings to match.
  32107. if (BuiltinName[25] != 'p')
  32108. break;
  32109. switch (BuiltinName[26]) {
  32110. default: break;
  32111. case 'e': // 1 string to match.
  32112. if (BuiltinName[27] != 'q')
  32113. break;
  32114. return Intrinsic::hexagon_F2_dfcmpeq; // "__builtin_HEXAGON_F2_dfcmpeq"
  32115. case 'g': // 2 strings to match.
  32116. switch (BuiltinName[27]) {
  32117. default: break;
  32118. case 'e': // 1 string to match.
  32119. return Intrinsic::hexagon_F2_dfcmpge; // "__builtin_HEXAGON_F2_dfcmpge"
  32120. case 't': // 1 string to match.
  32121. return Intrinsic::hexagon_F2_dfcmpgt; // "__builtin_HEXAGON_F2_dfcmpgt"
  32122. }
  32123. break;
  32124. case 'u': // 1 string to match.
  32125. if (BuiltinName[27] != 'o')
  32126. break;
  32127. return Intrinsic::hexagon_F2_dfcmpuo; // "__builtin_HEXAGON_F2_dfcmpuo"
  32128. }
  32129. break;
  32130. }
  32131. break;
  32132. case 'i': // 2 strings to match.
  32133. if (memcmp(BuiltinName.data()+24, "mm_", 3))
  32134. break;
  32135. switch (BuiltinName[27]) {
  32136. default: break;
  32137. case 'n': // 1 string to match.
  32138. return Intrinsic::hexagon_F2_dfimm_n; // "__builtin_HEXAGON_F2_dfimm_n"
  32139. case 'p': // 1 string to match.
  32140. return Intrinsic::hexagon_F2_dfimm_p; // "__builtin_HEXAGON_F2_dfimm_p"
  32141. }
  32142. break;
  32143. }
  32144. break;
  32145. case 's': // 7 strings to match.
  32146. if (BuiltinName[22] != 'f')
  32147. break;
  32148. switch (BuiltinName[23]) {
  32149. default: break;
  32150. case 'c': // 5 strings to match.
  32151. switch (BuiltinName[24]) {
  32152. default: break;
  32153. case 'l': // 1 string to match.
  32154. if (memcmp(BuiltinName.data()+25, "ass", 3))
  32155. break;
  32156. return Intrinsic::hexagon_F2_sfclass; // "__builtin_HEXAGON_F2_sfclass"
  32157. case 'm': // 4 strings to match.
  32158. if (BuiltinName[25] != 'p')
  32159. break;
  32160. switch (BuiltinName[26]) {
  32161. default: break;
  32162. case 'e': // 1 string to match.
  32163. if (BuiltinName[27] != 'q')
  32164. break;
  32165. return Intrinsic::hexagon_F2_sfcmpeq; // "__builtin_HEXAGON_F2_sfcmpeq"
  32166. case 'g': // 2 strings to match.
  32167. switch (BuiltinName[27]) {
  32168. default: break;
  32169. case 'e': // 1 string to match.
  32170. return Intrinsic::hexagon_F2_sfcmpge; // "__builtin_HEXAGON_F2_sfcmpge"
  32171. case 't': // 1 string to match.
  32172. return Intrinsic::hexagon_F2_sfcmpgt; // "__builtin_HEXAGON_F2_sfcmpgt"
  32173. }
  32174. break;
  32175. case 'u': // 1 string to match.
  32176. if (BuiltinName[27] != 'o')
  32177. break;
  32178. return Intrinsic::hexagon_F2_sfcmpuo; // "__builtin_HEXAGON_F2_sfcmpuo"
  32179. }
  32180. break;
  32181. }
  32182. break;
  32183. case 'i': // 2 strings to match.
  32184. if (memcmp(BuiltinName.data()+24, "mm_", 3))
  32185. break;
  32186. switch (BuiltinName[27]) {
  32187. default: break;
  32188. case 'n': // 1 string to match.
  32189. return Intrinsic::hexagon_F2_sfimm_n; // "__builtin_HEXAGON_F2_sfimm_n"
  32190. case 'p': // 1 string to match.
  32191. return Intrinsic::hexagon_F2_sfimm_p; // "__builtin_HEXAGON_F2_sfimm_p"
  32192. }
  32193. break;
  32194. }
  32195. break;
  32196. }
  32197. break;
  32198. case 'M': // 11 strings to match.
  32199. switch (BuiltinName[19]) {
  32200. default: break;
  32201. case '2': // 3 strings to match.
  32202. if (BuiltinName[20] != '_')
  32203. break;
  32204. switch (BuiltinName[21]) {
  32205. default: break;
  32206. case 'm': // 1 string to match.
  32207. if (memcmp(BuiltinName.data()+22, "pyu_up", 6))
  32208. break;
  32209. return Intrinsic::hexagon_M2_mpyu_up; // "__builtin_HEXAGON_M2_mpyu_up"
  32210. case 'v': // 2 strings to match.
  32211. switch (BuiltinName[22]) {
  32212. default: break;
  32213. case 'm': // 1 string to match.
  32214. if (memcmp(BuiltinName.data()+23, "ac2es", 5))
  32215. break;
  32216. return Intrinsic::hexagon_M2_vmac2es; // "__builtin_HEXAGON_M2_vmac2es"
  32217. case 'r': // 1 string to match.
  32218. if (memcmp(BuiltinName.data()+23, "adduh", 5))
  32219. break;
  32220. return Intrinsic::hexagon_M2_vradduh; // "__builtin_HEXAGON_M2_vradduh"
  32221. }
  32222. break;
  32223. }
  32224. break;
  32225. case '4': // 4 strings to match.
  32226. if (BuiltinName[20] != '_')
  32227. break;
  32228. switch (BuiltinName[21]) {
  32229. default: break;
  32230. case 'a': // 2 strings to match.
  32231. if (memcmp(BuiltinName.data()+22, "nd_", 3))
  32232. break;
  32233. switch (BuiltinName[25]) {
  32234. default: break;
  32235. case 'a': // 1 string to match.
  32236. if (memcmp(BuiltinName.data()+26, "nd", 2))
  32237. break;
  32238. return Intrinsic::hexagon_M4_and_and; // "__builtin_HEXAGON_M4_and_and"
  32239. case 'x': // 1 string to match.
  32240. if (memcmp(BuiltinName.data()+26, "or", 2))
  32241. break;
  32242. return Intrinsic::hexagon_M4_and_xor; // "__builtin_HEXAGON_M4_and_xor"
  32243. }
  32244. break;
  32245. case 'o': // 1 string to match.
  32246. if (memcmp(BuiltinName.data()+22, "r_andn", 6))
  32247. break;
  32248. return Intrinsic::hexagon_M4_or_andn; // "__builtin_HEXAGON_M4_or_andn"
  32249. case 'x': // 1 string to match.
  32250. if (memcmp(BuiltinName.data()+22, "or_and", 6))
  32251. break;
  32252. return Intrinsic::hexagon_M4_xor_and; // "__builtin_HEXAGON_M4_xor_and"
  32253. }
  32254. break;
  32255. case '5': // 4 strings to match.
  32256. if (memcmp(BuiltinName.data()+20, "_vm", 3))
  32257. break;
  32258. switch (BuiltinName[23]) {
  32259. default: break;
  32260. case 'a': // 2 strings to match.
  32261. if (memcmp(BuiltinName.data()+24, "cb", 2))
  32262. break;
  32263. switch (BuiltinName[26]) {
  32264. default: break;
  32265. case 's': // 1 string to match.
  32266. if (BuiltinName[27] != 'u')
  32267. break;
  32268. return Intrinsic::hexagon_M5_vmacbsu; // "__builtin_HEXAGON_M5_vmacbsu"
  32269. case 'u': // 1 string to match.
  32270. if (BuiltinName[27] != 'u')
  32271. break;
  32272. return Intrinsic::hexagon_M5_vmacbuu; // "__builtin_HEXAGON_M5_vmacbuu"
  32273. }
  32274. break;
  32275. case 'p': // 2 strings to match.
  32276. if (memcmp(BuiltinName.data()+24, "yb", 2))
  32277. break;
  32278. switch (BuiltinName[26]) {
  32279. default: break;
  32280. case 's': // 1 string to match.
  32281. if (BuiltinName[27] != 'u')
  32282. break;
  32283. return Intrinsic::hexagon_M5_vmpybsu; // "__builtin_HEXAGON_M5_vmpybsu"
  32284. case 'u': // 1 string to match.
  32285. if (BuiltinName[27] != 'u')
  32286. break;
  32287. return Intrinsic::hexagon_M5_vmpybuu; // "__builtin_HEXAGON_M5_vmpybuu"
  32288. }
  32289. break;
  32290. }
  32291. break;
  32292. }
  32293. break;
  32294. case 'S': // 30 strings to match.
  32295. switch (BuiltinName[19]) {
  32296. default: break;
  32297. case '2': // 25 strings to match.
  32298. if (BuiltinName[20] != '_')
  32299. break;
  32300. switch (BuiltinName[21]) {
  32301. default: break;
  32302. case 'a': // 8 strings to match.
  32303. if (BuiltinName[22] != 's')
  32304. break;
  32305. switch (BuiltinName[23]) {
  32306. default: break;
  32307. case 'l': // 4 strings to match.
  32308. if (BuiltinName[24] != '_')
  32309. break;
  32310. switch (BuiltinName[25]) {
  32311. default: break;
  32312. case 'i': // 2 strings to match.
  32313. if (BuiltinName[26] != '_')
  32314. break;
  32315. switch (BuiltinName[27]) {
  32316. default: break;
  32317. case 'p': // 1 string to match.
  32318. return Intrinsic::hexagon_S2_asl_i_p; // "__builtin_HEXAGON_S2_asl_i_p"
  32319. case 'r': // 1 string to match.
  32320. return Intrinsic::hexagon_S2_asl_i_r; // "__builtin_HEXAGON_S2_asl_i_r"
  32321. }
  32322. break;
  32323. case 'r': // 2 strings to match.
  32324. if (BuiltinName[26] != '_')
  32325. break;
  32326. switch (BuiltinName[27]) {
  32327. default: break;
  32328. case 'p': // 1 string to match.
  32329. return Intrinsic::hexagon_S2_asl_r_p; // "__builtin_HEXAGON_S2_asl_r_p"
  32330. case 'r': // 1 string to match.
  32331. return Intrinsic::hexagon_S2_asl_r_r; // "__builtin_HEXAGON_S2_asl_r_r"
  32332. }
  32333. break;
  32334. }
  32335. break;
  32336. case 'r': // 4 strings to match.
  32337. if (BuiltinName[24] != '_')
  32338. break;
  32339. switch (BuiltinName[25]) {
  32340. default: break;
  32341. case 'i': // 2 strings to match.
  32342. if (BuiltinName[26] != '_')
  32343. break;
  32344. switch (BuiltinName[27]) {
  32345. default: break;
  32346. case 'p': // 1 string to match.
  32347. return Intrinsic::hexagon_S2_asr_i_p; // "__builtin_HEXAGON_S2_asr_i_p"
  32348. case 'r': // 1 string to match.
  32349. return Intrinsic::hexagon_S2_asr_i_r; // "__builtin_HEXAGON_S2_asr_i_r"
  32350. }
  32351. break;
  32352. case 'r': // 2 strings to match.
  32353. if (BuiltinName[26] != '_')
  32354. break;
  32355. switch (BuiltinName[27]) {
  32356. default: break;
  32357. case 'p': // 1 string to match.
  32358. return Intrinsic::hexagon_S2_asr_r_p; // "__builtin_HEXAGON_S2_asr_r_p"
  32359. case 'r': // 1 string to match.
  32360. return Intrinsic::hexagon_S2_asr_r_r; // "__builtin_HEXAGON_S2_asr_r_r"
  32361. }
  32362. break;
  32363. }
  32364. break;
  32365. }
  32366. break;
  32367. case 'c': // 1 string to match.
  32368. if (memcmp(BuiltinName.data()+22, "lbnorm", 6))
  32369. break;
  32370. return Intrinsic::hexagon_S2_clbnorm; // "__builtin_HEXAGON_S2_clbnorm"
  32371. case 'i': // 1 string to match.
  32372. if (memcmp(BuiltinName.data()+22, "nsertp", 6))
  32373. break;
  32374. return Intrinsic::hexagon_S2_insertp; // "__builtin_HEXAGON_S2_insertp"
  32375. case 'l': // 6 strings to match.
  32376. if (BuiltinName[22] != 's')
  32377. break;
  32378. switch (BuiltinName[23]) {
  32379. default: break;
  32380. case 'l': // 2 strings to match.
  32381. if (memcmp(BuiltinName.data()+24, "_r_", 3))
  32382. break;
  32383. switch (BuiltinName[27]) {
  32384. default: break;
  32385. case 'p': // 1 string to match.
  32386. return Intrinsic::hexagon_S2_lsl_r_p; // "__builtin_HEXAGON_S2_lsl_r_p"
  32387. case 'r': // 1 string to match.
  32388. return Intrinsic::hexagon_S2_lsl_r_r; // "__builtin_HEXAGON_S2_lsl_r_r"
  32389. }
  32390. break;
  32391. case 'r': // 4 strings to match.
  32392. if (BuiltinName[24] != '_')
  32393. break;
  32394. switch (BuiltinName[25]) {
  32395. default: break;
  32396. case 'i': // 2 strings to match.
  32397. if (BuiltinName[26] != '_')
  32398. break;
  32399. switch (BuiltinName[27]) {
  32400. default: break;
  32401. case 'p': // 1 string to match.
  32402. return Intrinsic::hexagon_S2_lsr_i_p; // "__builtin_HEXAGON_S2_lsr_i_p"
  32403. case 'r': // 1 string to match.
  32404. return Intrinsic::hexagon_S2_lsr_i_r; // "__builtin_HEXAGON_S2_lsr_i_r"
  32405. }
  32406. break;
  32407. case 'r': // 2 strings to match.
  32408. if (BuiltinName[26] != '_')
  32409. break;
  32410. switch (BuiltinName[27]) {
  32411. default: break;
  32412. case 'p': // 1 string to match.
  32413. return Intrinsic::hexagon_S2_lsr_r_p; // "__builtin_HEXAGON_S2_lsr_r_p"
  32414. case 'r': // 1 string to match.
  32415. return Intrinsic::hexagon_S2_lsr_r_r; // "__builtin_HEXAGON_S2_lsr_r_r"
  32416. }
  32417. break;
  32418. }
  32419. break;
  32420. }
  32421. break;
  32422. case 'p': // 1 string to match.
  32423. if (memcmp(BuiltinName.data()+22, "arityp", 6))
  32424. break;
  32425. return Intrinsic::hexagon_S2_parityp; // "__builtin_HEXAGON_S2_parityp"
  32426. case 's': // 5 strings to match.
  32427. switch (BuiltinName[22]) {
  32428. default: break;
  32429. case 'h': // 4 strings to match.
  32430. if (memcmp(BuiltinName.data()+23, "uff", 3))
  32431. break;
  32432. switch (BuiltinName[26]) {
  32433. default: break;
  32434. case 'e': // 2 strings to match.
  32435. switch (BuiltinName[27]) {
  32436. default: break;
  32437. case 'b': // 1 string to match.
  32438. return Intrinsic::hexagon_S2_shuffeb; // "__builtin_HEXAGON_S2_shuffeb"
  32439. case 'h': // 1 string to match.
  32440. return Intrinsic::hexagon_S2_shuffeh; // "__builtin_HEXAGON_S2_shuffeh"
  32441. }
  32442. break;
  32443. case 'o': // 2 strings to match.
  32444. switch (BuiltinName[27]) {
  32445. default: break;
  32446. case 'b': // 1 string to match.
  32447. return Intrinsic::hexagon_S2_shuffob; // "__builtin_HEXAGON_S2_shuffob"
  32448. case 'h': // 1 string to match.
  32449. return Intrinsic::hexagon_S2_shuffoh; // "__builtin_HEXAGON_S2_shuffoh"
  32450. }
  32451. break;
  32452. }
  32453. break;
  32454. case 'v': // 1 string to match.
  32455. if (memcmp(BuiltinName.data()+23, "sathb", 5))
  32456. break;
  32457. return Intrinsic::hexagon_S2_svsathb; // "__builtin_HEXAGON_S2_svsathb"
  32458. }
  32459. break;
  32460. case 'v': // 3 strings to match.
  32461. switch (BuiltinName[22]) {
  32462. default: break;
  32463. case 'r': // 1 string to match.
  32464. if (memcmp(BuiltinName.data()+23, "cnegh", 5))
  32465. break;
  32466. return Intrinsic::hexagon_S2_vrcnegh; // "__builtin_HEXAGON_S2_vrcnegh"
  32467. case 's': // 2 strings to match.
  32468. if (memcmp(BuiltinName.data()+23, "at", 2))
  32469. break;
  32470. switch (BuiltinName[25]) {
  32471. default: break;
  32472. case 'h': // 1 string to match.
  32473. if (memcmp(BuiltinName.data()+26, "ub", 2))
  32474. break;
  32475. return Intrinsic::hexagon_S2_vsathub; // "__builtin_HEXAGON_S2_vsathub"
  32476. case 'w': // 1 string to match.
  32477. if (memcmp(BuiltinName.data()+26, "uh", 2))
  32478. break;
  32479. return Intrinsic::hexagon_S2_vsatwuh; // "__builtin_HEXAGON_S2_vsatwuh"
  32480. }
  32481. break;
  32482. }
  32483. break;
  32484. }
  32485. break;
  32486. case '4': // 5 strings to match.
  32487. if (BuiltinName[20] != '_')
  32488. break;
  32489. switch (BuiltinName[21]) {
  32490. default: break;
  32491. case 'a': // 1 string to match.
  32492. if (memcmp(BuiltinName.data()+22, "ddaddi", 6))
  32493. break;
  32494. return Intrinsic::hexagon_S4_addaddi; // "__builtin_HEXAGON_S4_addaddi"
  32495. case 'c': // 1 string to match.
  32496. if (memcmp(BuiltinName.data()+22, "lbaddi", 6))
  32497. break;
  32498. return Intrinsic::hexagon_S4_clbaddi; // "__builtin_HEXAGON_S4_clbaddi"
  32499. case 'e': // 1 string to match.
  32500. if (memcmp(BuiltinName.data()+22, "xtract", 6))
  32501. break;
  32502. return Intrinsic::hexagon_S4_extract; // "__builtin_HEXAGON_S4_extract"
  32503. case 'o': // 1 string to match.
  32504. if (memcmp(BuiltinName.data()+22, "r_andi", 6))
  32505. break;
  32506. return Intrinsic::hexagon_S4_or_andi; // "__builtin_HEXAGON_S4_or_andi"
  32507. case 's': // 1 string to match.
  32508. if (memcmp(BuiltinName.data()+22, "ubaddi", 6))
  32509. break;
  32510. return Intrinsic::hexagon_S4_subaddi; // "__builtin_HEXAGON_S4_subaddi"
  32511. }
  32512. break;
  32513. }
  32514. break;
  32515. }
  32516. break;
  32517. case 29: // 103 strings to match.
  32518. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  32519. break;
  32520. switch (BuiltinName[18]) {
  32521. default: break;
  32522. case 'A': // 26 strings to match.
  32523. switch (BuiltinName[19]) {
  32524. default: break;
  32525. case '2': // 11 strings to match.
  32526. if (BuiltinName[20] != '_')
  32527. break;
  32528. switch (BuiltinName[21]) {
  32529. default: break;
  32530. case 'c': // 1 string to match.
  32531. if (memcmp(BuiltinName.data()+22, "ombinew", 7))
  32532. break;
  32533. return Intrinsic::hexagon_A2_combinew; // "__builtin_HEXAGON_A2_combinew"
  32534. case 'r': // 1 string to match.
  32535. if (memcmp(BuiltinName.data()+22, "oundsat", 7))
  32536. break;
  32537. return Intrinsic::hexagon_A2_roundsat; // "__builtin_HEXAGON_A2_roundsat"
  32538. case 's': // 2 strings to match.
  32539. if (BuiltinName[22] != 'v')
  32540. break;
  32541. switch (BuiltinName[23]) {
  32542. default: break;
  32543. case 'a': // 1 string to match.
  32544. if (memcmp(BuiltinName.data()+24, "dduhs", 5))
  32545. break;
  32546. return Intrinsic::hexagon_A2_svadduhs; // "__builtin_HEXAGON_A2_svadduhs"
  32547. case 's': // 1 string to match.
  32548. if (memcmp(BuiltinName.data()+24, "ubuhs", 5))
  32549. break;
  32550. return Intrinsic::hexagon_A2_svsubuhs; // "__builtin_HEXAGON_A2_svsubuhs"
  32551. }
  32552. break;
  32553. case 'v': // 7 strings to match.
  32554. switch (BuiltinName[22]) {
  32555. default: break;
  32556. case 'a': // 2 strings to match.
  32557. if (memcmp(BuiltinName.data()+23, "bs", 2))
  32558. break;
  32559. switch (BuiltinName[25]) {
  32560. default: break;
  32561. case 'h': // 1 string to match.
  32562. if (memcmp(BuiltinName.data()+26, "sat", 3))
  32563. break;
  32564. return Intrinsic::hexagon_A2_vabshsat; // "__builtin_HEXAGON_A2_vabshsat"
  32565. case 'w': // 1 string to match.
  32566. if (memcmp(BuiltinName.data()+26, "sat", 3))
  32567. break;
  32568. return Intrinsic::hexagon_A2_vabswsat; // "__builtin_HEXAGON_A2_vabswsat"
  32569. }
  32570. break;
  32571. case 'c': // 3 strings to match.
  32572. if (memcmp(BuiltinName.data()+23, "mp", 2))
  32573. break;
  32574. switch (BuiltinName[25]) {
  32575. default: break;
  32576. case 'b': // 1 string to match.
  32577. if (memcmp(BuiltinName.data()+26, "gtu", 3))
  32578. break;
  32579. return Intrinsic::hexagon_A2_vcmpbgtu; // "__builtin_HEXAGON_A2_vcmpbgtu"
  32580. case 'h': // 1 string to match.
  32581. if (memcmp(BuiltinName.data()+26, "gtu", 3))
  32582. break;
  32583. return Intrinsic::hexagon_A2_vcmphgtu; // "__builtin_HEXAGON_A2_vcmphgtu"
  32584. case 'w': // 1 string to match.
  32585. if (memcmp(BuiltinName.data()+26, "gtu", 3))
  32586. break;
  32587. return Intrinsic::hexagon_A2_vcmpwgtu; // "__builtin_HEXAGON_A2_vcmpwgtu"
  32588. }
  32589. break;
  32590. case 'n': // 2 strings to match.
  32591. if (memcmp(BuiltinName.data()+23, "avg", 3))
  32592. break;
  32593. switch (BuiltinName[26]) {
  32594. default: break;
  32595. case 'h': // 1 string to match.
  32596. if (memcmp(BuiltinName.data()+27, "cr", 2))
  32597. break;
  32598. return Intrinsic::hexagon_A2_vnavghcr; // "__builtin_HEXAGON_A2_vnavghcr"
  32599. case 'w': // 1 string to match.
  32600. if (memcmp(BuiltinName.data()+27, "cr", 2))
  32601. break;
  32602. return Intrinsic::hexagon_A2_vnavgwcr; // "__builtin_HEXAGON_A2_vnavgwcr"
  32603. }
  32604. break;
  32605. }
  32606. break;
  32607. }
  32608. break;
  32609. case '4': // 14 strings to match.
  32610. if (BuiltinName[20] != '_')
  32611. break;
  32612. switch (BuiltinName[21]) {
  32613. default: break;
  32614. case 'b': // 1 string to match.
  32615. if (memcmp(BuiltinName.data()+22, "itsplit", 7))
  32616. break;
  32617. return Intrinsic::hexagon_A4_bitsplit; // "__builtin_HEXAGON_A4_bitsplit"
  32618. case 'c': // 2 strings to match.
  32619. if (memcmp(BuiltinName.data()+22, "mp", 2))
  32620. break;
  32621. switch (BuiltinName[24]) {
  32622. default: break;
  32623. case 'b': // 1 string to match.
  32624. if (memcmp(BuiltinName.data()+25, "gtui", 4))
  32625. break;
  32626. return Intrinsic::hexagon_A4_cmpbgtui; // "__builtin_HEXAGON_A4_cmpbgtui"
  32627. case 'h': // 1 string to match.
  32628. if (memcmp(BuiltinName.data()+25, "gtui", 4))
  32629. break;
  32630. return Intrinsic::hexagon_A4_cmphgtui; // "__builtin_HEXAGON_A4_cmphgtui"
  32631. }
  32632. break;
  32633. case 'm': // 1 string to match.
  32634. if (memcmp(BuiltinName.data()+22, "odwrapu", 7))
  32635. break;
  32636. return Intrinsic::hexagon_A4_modwrapu; // "__builtin_HEXAGON_A4_modwrapu"
  32637. case 'r': // 3 strings to match.
  32638. switch (BuiltinName[22]) {
  32639. default: break;
  32640. case 'c': // 1 string to match.
  32641. if (memcmp(BuiltinName.data()+23, "mpneqi", 6))
  32642. break;
  32643. return Intrinsic::hexagon_A4_rcmpneqi; // "__builtin_HEXAGON_A4_rcmpneqi"
  32644. case 'o': // 2 strings to match.
  32645. if (memcmp(BuiltinName.data()+23, "und_r", 5))
  32646. break;
  32647. switch (BuiltinName[28]) {
  32648. default: break;
  32649. case 'i': // 1 string to match.
  32650. return Intrinsic::hexagon_A4_round_ri; // "__builtin_HEXAGON_A4_round_ri"
  32651. case 'r': // 1 string to match.
  32652. return Intrinsic::hexagon_A4_round_rr; // "__builtin_HEXAGON_A4_round_rr"
  32653. }
  32654. break;
  32655. }
  32656. break;
  32657. case 't': // 1 string to match.
  32658. if (memcmp(BuiltinName.data()+22, "lbmatch", 7))
  32659. break;
  32660. return Intrinsic::hexagon_A4_tlbmatch; // "__builtin_HEXAGON_A4_tlbmatch"
  32661. case 'v': // 6 strings to match.
  32662. if (memcmp(BuiltinName.data()+22, "cmp", 3))
  32663. break;
  32664. switch (BuiltinName[25]) {
  32665. default: break;
  32666. case 'b': // 2 strings to match.
  32667. switch (BuiltinName[26]) {
  32668. default: break;
  32669. case 'e': // 1 string to match.
  32670. if (memcmp(BuiltinName.data()+27, "qi", 2))
  32671. break;
  32672. return Intrinsic::hexagon_A4_vcmpbeqi; // "__builtin_HEXAGON_A4_vcmpbeqi"
  32673. case 'g': // 1 string to match.
  32674. if (memcmp(BuiltinName.data()+27, "ti", 2))
  32675. break;
  32676. return Intrinsic::hexagon_A4_vcmpbgti; // "__builtin_HEXAGON_A4_vcmpbgti"
  32677. }
  32678. break;
  32679. case 'h': // 2 strings to match.
  32680. switch (BuiltinName[26]) {
  32681. default: break;
  32682. case 'e': // 1 string to match.
  32683. if (memcmp(BuiltinName.data()+27, "qi", 2))
  32684. break;
  32685. return Intrinsic::hexagon_A4_vcmpheqi; // "__builtin_HEXAGON_A4_vcmpheqi"
  32686. case 'g': // 1 string to match.
  32687. if (memcmp(BuiltinName.data()+27, "ti", 2))
  32688. break;
  32689. return Intrinsic::hexagon_A4_vcmphgti; // "__builtin_HEXAGON_A4_vcmphgti"
  32690. }
  32691. break;
  32692. case 'w': // 2 strings to match.
  32693. switch (BuiltinName[26]) {
  32694. default: break;
  32695. case 'e': // 1 string to match.
  32696. if (memcmp(BuiltinName.data()+27, "qi", 2))
  32697. break;
  32698. return Intrinsic::hexagon_A4_vcmpweqi; // "__builtin_HEXAGON_A4_vcmpweqi"
  32699. case 'g': // 1 string to match.
  32700. if (memcmp(BuiltinName.data()+27, "ti", 2))
  32701. break;
  32702. return Intrinsic::hexagon_A4_vcmpwgti; // "__builtin_HEXAGON_A4_vcmpwgti"
  32703. }
  32704. break;
  32705. }
  32706. break;
  32707. }
  32708. break;
  32709. case '5': // 1 string to match.
  32710. if (memcmp(BuiltinName.data()+20, "_vaddhubs", 9))
  32711. break;
  32712. return Intrinsic::hexagon_A5_vaddhubs; // "__builtin_HEXAGON_A5_vaddhubs"
  32713. }
  32714. break;
  32715. case 'C': // 5 strings to match.
  32716. switch (BuiltinName[19]) {
  32717. default: break;
  32718. case '2': // 1 string to match.
  32719. if (memcmp(BuiltinName.data()+20, "_bitsclri", 9))
  32720. break;
  32721. return Intrinsic::hexagon_C2_bitsclri; // "__builtin_HEXAGON_C2_bitsclri"
  32722. case '4': // 4 strings to match.
  32723. if (BuiltinName[20] != '_')
  32724. break;
  32725. switch (BuiltinName[21]) {
  32726. default: break;
  32727. case 'a': // 1 string to match.
  32728. if (memcmp(BuiltinName.data()+22, "nd_andn", 7))
  32729. break;
  32730. return Intrinsic::hexagon_C4_and_andn; // "__builtin_HEXAGON_C4_and_andn"
  32731. case 'c': // 1 string to match.
  32732. if (memcmp(BuiltinName.data()+22, "mplteui", 7))
  32733. break;
  32734. return Intrinsic::hexagon_C4_cmplteui; // "__builtin_HEXAGON_C4_cmplteui"
  32735. case 'n': // 2 strings to match.
  32736. if (memcmp(BuiltinName.data()+22, "bits", 4))
  32737. break;
  32738. switch (BuiltinName[26]) {
  32739. default: break;
  32740. case 'c': // 1 string to match.
  32741. if (memcmp(BuiltinName.data()+27, "lr", 2))
  32742. break;
  32743. return Intrinsic::hexagon_C4_nbitsclr; // "__builtin_HEXAGON_C4_nbitsclr"
  32744. case 's': // 1 string to match.
  32745. if (memcmp(BuiltinName.data()+27, "et", 2))
  32746. break;
  32747. return Intrinsic::hexagon_C4_nbitsset; // "__builtin_HEXAGON_C4_nbitsset"
  32748. }
  32749. break;
  32750. }
  32751. break;
  32752. }
  32753. break;
  32754. case 'F': // 8 strings to match.
  32755. if (memcmp(BuiltinName.data()+19, "2_", 2))
  32756. break;
  32757. switch (BuiltinName[21]) {
  32758. default: break;
  32759. case 'd': // 4 strings to match.
  32760. if (memcmp(BuiltinName.data()+22, "ff", 2))
  32761. break;
  32762. switch (BuiltinName[24]) {
  32763. default: break;
  32764. case 'i': // 3 strings to match.
  32765. if (memcmp(BuiltinName.data()+25, "xup", 3))
  32766. break;
  32767. switch (BuiltinName[28]) {
  32768. default: break;
  32769. case 'd': // 1 string to match.
  32770. return Intrinsic::hexagon_F2_dffixupd; // "__builtin_HEXAGON_F2_dffixupd"
  32771. case 'n': // 1 string to match.
  32772. return Intrinsic::hexagon_F2_dffixupn; // "__builtin_HEXAGON_F2_dffixupn"
  32773. case 'r': // 1 string to match.
  32774. return Intrinsic::hexagon_F2_dffixupr; // "__builtin_HEXAGON_F2_dffixupr"
  32775. }
  32776. break;
  32777. case 'm': // 1 string to match.
  32778. if (memcmp(BuiltinName.data()+25, "a_sc", 4))
  32779. break;
  32780. return Intrinsic::hexagon_F2_dffma_sc; // "__builtin_HEXAGON_F2_dffma_sc"
  32781. }
  32782. break;
  32783. case 's': // 4 strings to match.
  32784. if (memcmp(BuiltinName.data()+22, "ff", 2))
  32785. break;
  32786. switch (BuiltinName[24]) {
  32787. default: break;
  32788. case 'i': // 3 strings to match.
  32789. if (memcmp(BuiltinName.data()+25, "xup", 3))
  32790. break;
  32791. switch (BuiltinName[28]) {
  32792. default: break;
  32793. case 'd': // 1 string to match.
  32794. return Intrinsic::hexagon_F2_sffixupd; // "__builtin_HEXAGON_F2_sffixupd"
  32795. case 'n': // 1 string to match.
  32796. return Intrinsic::hexagon_F2_sffixupn; // "__builtin_HEXAGON_F2_sffixupn"
  32797. case 'r': // 1 string to match.
  32798. return Intrinsic::hexagon_F2_sffixupr; // "__builtin_HEXAGON_F2_sffixupr"
  32799. }
  32800. break;
  32801. case 'm': // 1 string to match.
  32802. if (memcmp(BuiltinName.data()+25, "a_sc", 4))
  32803. break;
  32804. return Intrinsic::hexagon_F2_sffma_sc; // "__builtin_HEXAGON_F2_sffma_sc"
  32805. }
  32806. break;
  32807. }
  32808. break;
  32809. case 'M': // 29 strings to match.
  32810. switch (BuiltinName[19]) {
  32811. default: break;
  32812. case '2': // 18 strings to match.
  32813. if (BuiltinName[20] != '_')
  32814. break;
  32815. switch (BuiltinName[21]) {
  32816. default: break;
  32817. case 'c': // 10 strings to match.
  32818. switch (BuiltinName[22]) {
  32819. default: break;
  32820. case 'm': // 8 strings to match.
  32821. switch (BuiltinName[23]) {
  32822. default: break;
  32823. case 'a': // 4 strings to match.
  32824. if (BuiltinName[24] != 'c')
  32825. break;
  32826. switch (BuiltinName[25]) {
  32827. default: break;
  32828. case 'i': // 1 string to match.
  32829. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32830. break;
  32831. return Intrinsic::hexagon_M2_cmaci_s0; // "__builtin_HEXAGON_M2_cmaci_s0"
  32832. case 'r': // 1 string to match.
  32833. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32834. break;
  32835. return Intrinsic::hexagon_M2_cmacr_s0; // "__builtin_HEXAGON_M2_cmacr_s0"
  32836. case 's': // 2 strings to match.
  32837. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32838. break;
  32839. switch (BuiltinName[28]) {
  32840. default: break;
  32841. case '0': // 1 string to match.
  32842. return Intrinsic::hexagon_M2_cmacs_s0; // "__builtin_HEXAGON_M2_cmacs_s0"
  32843. case '1': // 1 string to match.
  32844. return Intrinsic::hexagon_M2_cmacs_s1; // "__builtin_HEXAGON_M2_cmacs_s1"
  32845. }
  32846. break;
  32847. }
  32848. break;
  32849. case 'p': // 4 strings to match.
  32850. if (BuiltinName[24] != 'y')
  32851. break;
  32852. switch (BuiltinName[25]) {
  32853. default: break;
  32854. case 'i': // 1 string to match.
  32855. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32856. break;
  32857. return Intrinsic::hexagon_M2_cmpyi_s0; // "__builtin_HEXAGON_M2_cmpyi_s0"
  32858. case 'r': // 1 string to match.
  32859. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32860. break;
  32861. return Intrinsic::hexagon_M2_cmpyr_s0; // "__builtin_HEXAGON_M2_cmpyr_s0"
  32862. case 's': // 2 strings to match.
  32863. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32864. break;
  32865. switch (BuiltinName[28]) {
  32866. default: break;
  32867. case '0': // 1 string to match.
  32868. return Intrinsic::hexagon_M2_cmpys_s0; // "__builtin_HEXAGON_M2_cmpys_s0"
  32869. case '1': // 1 string to match.
  32870. return Intrinsic::hexagon_M2_cmpys_s1; // "__builtin_HEXAGON_M2_cmpys_s1"
  32871. }
  32872. break;
  32873. }
  32874. break;
  32875. }
  32876. break;
  32877. case 'n': // 2 strings to match.
  32878. if (memcmp(BuiltinName.data()+23, "acs_s", 5))
  32879. break;
  32880. switch (BuiltinName[28]) {
  32881. default: break;
  32882. case '0': // 1 string to match.
  32883. return Intrinsic::hexagon_M2_cnacs_s0; // "__builtin_HEXAGON_M2_cnacs_s0"
  32884. case '1': // 1 string to match.
  32885. return Intrinsic::hexagon_M2_cnacs_s1; // "__builtin_HEXAGON_M2_cnacs_s1"
  32886. }
  32887. break;
  32888. }
  32889. break;
  32890. case 'm': // 5 strings to match.
  32891. switch (BuiltinName[22]) {
  32892. default: break;
  32893. case 'm': // 4 strings to match.
  32894. if (memcmp(BuiltinName.data()+23, "py", 2))
  32895. break;
  32896. switch (BuiltinName[25]) {
  32897. default: break;
  32898. case 'h': // 2 strings to match.
  32899. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32900. break;
  32901. switch (BuiltinName[28]) {
  32902. default: break;
  32903. case '0': // 1 string to match.
  32904. return Intrinsic::hexagon_M2_mmpyh_s0; // "__builtin_HEXAGON_M2_mmpyh_s0"
  32905. case '1': // 1 string to match.
  32906. return Intrinsic::hexagon_M2_mmpyh_s1; // "__builtin_HEXAGON_M2_mmpyh_s1"
  32907. }
  32908. break;
  32909. case 'l': // 2 strings to match.
  32910. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32911. break;
  32912. switch (BuiltinName[28]) {
  32913. default: break;
  32914. case '0': // 1 string to match.
  32915. return Intrinsic::hexagon_M2_mmpyl_s0; // "__builtin_HEXAGON_M2_mmpyl_s0"
  32916. case '1': // 1 string to match.
  32917. return Intrinsic::hexagon_M2_mmpyl_s1; // "__builtin_HEXAGON_M2_mmpyl_s1"
  32918. }
  32919. break;
  32920. }
  32921. break;
  32922. case 'p': // 1 string to match.
  32923. if (memcmp(BuiltinName.data()+23, "ysu_up", 6))
  32924. break;
  32925. return Intrinsic::hexagon_M2_mpysu_up; // "__builtin_HEXAGON_M2_mpysu_up"
  32926. }
  32927. break;
  32928. case 'v': // 2 strings to match.
  32929. if (memcmp(BuiltinName.data()+22, "rm", 2))
  32930. break;
  32931. switch (BuiltinName[24]) {
  32932. default: break;
  32933. case 'a': // 1 string to match.
  32934. if (memcmp(BuiltinName.data()+25, "c_s0", 4))
  32935. break;
  32936. return Intrinsic::hexagon_M2_vrmac_s0; // "__builtin_HEXAGON_M2_vrmac_s0"
  32937. case 'p': // 1 string to match.
  32938. if (memcmp(BuiltinName.data()+25, "y_s0", 4))
  32939. break;
  32940. return Intrinsic::hexagon_M2_vrmpy_s0; // "__builtin_HEXAGON_M2_vrmpy_s0"
  32941. }
  32942. break;
  32943. case 'x': // 1 string to match.
  32944. if (memcmp(BuiltinName.data()+22, "or_xacc", 7))
  32945. break;
  32946. return Intrinsic::hexagon_M2_xor_xacc; // "__builtin_HEXAGON_M2_xor_xacc"
  32947. }
  32948. break;
  32949. case '4': // 5 strings to match.
  32950. if (BuiltinName[20] != '_')
  32951. break;
  32952. switch (BuiltinName[21]) {
  32953. default: break;
  32954. case 'a': // 1 string to match.
  32955. if (memcmp(BuiltinName.data()+22, "nd_andn", 7))
  32956. break;
  32957. return Intrinsic::hexagon_M4_and_andn; // "__builtin_HEXAGON_M4_and_andn"
  32958. case 'c': // 2 strings to match.
  32959. if (memcmp(BuiltinName.data()+22, "mpy", 3))
  32960. break;
  32961. switch (BuiltinName[25]) {
  32962. default: break;
  32963. case 'i': // 1 string to match.
  32964. if (memcmp(BuiltinName.data()+26, "_wh", 3))
  32965. break;
  32966. return Intrinsic::hexagon_M4_cmpyi_wh; // "__builtin_HEXAGON_M4_cmpyi_wh"
  32967. case 'r': // 1 string to match.
  32968. if (memcmp(BuiltinName.data()+26, "_wh", 3))
  32969. break;
  32970. return Intrinsic::hexagon_M4_cmpyr_wh; // "__builtin_HEXAGON_M4_cmpyr_wh"
  32971. }
  32972. break;
  32973. case 'x': // 2 strings to match.
  32974. if (memcmp(BuiltinName.data()+22, "or_", 3))
  32975. break;
  32976. switch (BuiltinName[25]) {
  32977. default: break;
  32978. case 'a': // 1 string to match.
  32979. if (memcmp(BuiltinName.data()+26, "ndn", 3))
  32980. break;
  32981. return Intrinsic::hexagon_M4_xor_andn; // "__builtin_HEXAGON_M4_xor_andn"
  32982. case 'x': // 1 string to match.
  32983. if (memcmp(BuiltinName.data()+26, "acc", 3))
  32984. break;
  32985. return Intrinsic::hexagon_M4_xor_xacc; // "__builtin_HEXAGON_M4_xor_xacc"
  32986. }
  32987. break;
  32988. }
  32989. break;
  32990. case '5': // 6 strings to match.
  32991. if (memcmp(BuiltinName.data()+20, "_v", 2))
  32992. break;
  32993. switch (BuiltinName[22]) {
  32994. default: break;
  32995. case 'd': // 2 strings to match.
  32996. if (BuiltinName[23] != 'm')
  32997. break;
  32998. switch (BuiltinName[24]) {
  32999. default: break;
  33000. case 'a': // 1 string to match.
  33001. if (memcmp(BuiltinName.data()+25, "cbsu", 4))
  33002. break;
  33003. return Intrinsic::hexagon_M5_vdmacbsu; // "__builtin_HEXAGON_M5_vdmacbsu"
  33004. case 'p': // 1 string to match.
  33005. if (memcmp(BuiltinName.data()+25, "ybsu", 4))
  33006. break;
  33007. return Intrinsic::hexagon_M5_vdmpybsu; // "__builtin_HEXAGON_M5_vdmpybsu"
  33008. }
  33009. break;
  33010. case 'r': // 4 strings to match.
  33011. if (BuiltinName[23] != 'm')
  33012. break;
  33013. switch (BuiltinName[24]) {
  33014. default: break;
  33015. case 'a': // 2 strings to match.
  33016. if (memcmp(BuiltinName.data()+25, "cb", 2))
  33017. break;
  33018. switch (BuiltinName[27]) {
  33019. default: break;
  33020. case 's': // 1 string to match.
  33021. if (BuiltinName[28] != 'u')
  33022. break;
  33023. return Intrinsic::hexagon_M5_vrmacbsu; // "__builtin_HEXAGON_M5_vrmacbsu"
  33024. case 'u': // 1 string to match.
  33025. if (BuiltinName[28] != 'u')
  33026. break;
  33027. return Intrinsic::hexagon_M5_vrmacbuu; // "__builtin_HEXAGON_M5_vrmacbuu"
  33028. }
  33029. break;
  33030. case 'p': // 2 strings to match.
  33031. if (memcmp(BuiltinName.data()+25, "yb", 2))
  33032. break;
  33033. switch (BuiltinName[27]) {
  33034. default: break;
  33035. case 's': // 1 string to match.
  33036. if (BuiltinName[28] != 'u')
  33037. break;
  33038. return Intrinsic::hexagon_M5_vrmpybsu; // "__builtin_HEXAGON_M5_vrmpybsu"
  33039. case 'u': // 1 string to match.
  33040. if (BuiltinName[28] != 'u')
  33041. break;
  33042. return Intrinsic::hexagon_M5_vrmpybuu; // "__builtin_HEXAGON_M5_vrmpybuu"
  33043. }
  33044. break;
  33045. }
  33046. break;
  33047. }
  33048. break;
  33049. }
  33050. break;
  33051. case 'S': // 35 strings to match.
  33052. switch (BuiltinName[19]) {
  33053. default: break;
  33054. case '2': // 31 strings to match.
  33055. if (BuiltinName[20] != '_')
  33056. break;
  33057. switch (BuiltinName[21]) {
  33058. default: break;
  33059. case 'a': // 8 strings to match.
  33060. if (BuiltinName[22] != 's')
  33061. break;
  33062. switch (BuiltinName[23]) {
  33063. default: break;
  33064. case 'l': // 4 strings to match.
  33065. if (BuiltinName[24] != '_')
  33066. break;
  33067. switch (BuiltinName[25]) {
  33068. default: break;
  33069. case 'i': // 2 strings to match.
  33070. if (memcmp(BuiltinName.data()+26, "_v", 2))
  33071. break;
  33072. switch (BuiltinName[28]) {
  33073. default: break;
  33074. case 'h': // 1 string to match.
  33075. return Intrinsic::hexagon_S2_asl_i_vh; // "__builtin_HEXAGON_S2_asl_i_vh"
  33076. case 'w': // 1 string to match.
  33077. return Intrinsic::hexagon_S2_asl_i_vw; // "__builtin_HEXAGON_S2_asl_i_vw"
  33078. }
  33079. break;
  33080. case 'r': // 2 strings to match.
  33081. if (memcmp(BuiltinName.data()+26, "_v", 2))
  33082. break;
  33083. switch (BuiltinName[28]) {
  33084. default: break;
  33085. case 'h': // 1 string to match.
  33086. return Intrinsic::hexagon_S2_asl_r_vh; // "__builtin_HEXAGON_S2_asl_r_vh"
  33087. case 'w': // 1 string to match.
  33088. return Intrinsic::hexagon_S2_asl_r_vw; // "__builtin_HEXAGON_S2_asl_r_vw"
  33089. }
  33090. break;
  33091. }
  33092. break;
  33093. case 'r': // 4 strings to match.
  33094. if (BuiltinName[24] != '_')
  33095. break;
  33096. switch (BuiltinName[25]) {
  33097. default: break;
  33098. case 'i': // 2 strings to match.
  33099. if (memcmp(BuiltinName.data()+26, "_v", 2))
  33100. break;
  33101. switch (BuiltinName[28]) {
  33102. default: break;
  33103. case 'h': // 1 string to match.
  33104. return Intrinsic::hexagon_S2_asr_i_vh; // "__builtin_HEXAGON_S2_asr_i_vh"
  33105. case 'w': // 1 string to match.
  33106. return Intrinsic::hexagon_S2_asr_i_vw; // "__builtin_HEXAGON_S2_asr_i_vw"
  33107. }
  33108. break;
  33109. case 'r': // 2 strings to match.
  33110. if (memcmp(BuiltinName.data()+26, "_v", 2))
  33111. break;
  33112. switch (BuiltinName[28]) {
  33113. default: break;
  33114. case 'h': // 1 string to match.
  33115. return Intrinsic::hexagon_S2_asr_r_vh; // "__builtin_HEXAGON_S2_asr_r_vh"
  33116. case 'w': // 1 string to match.
  33117. return Intrinsic::hexagon_S2_asr_r_vw; // "__builtin_HEXAGON_S2_asr_r_vw"
  33118. }
  33119. break;
  33120. }
  33121. break;
  33122. }
  33123. break;
  33124. case 'c': // 2 strings to match.
  33125. if (memcmp(BuiltinName.data()+22, "lrbit_", 6))
  33126. break;
  33127. switch (BuiltinName[28]) {
  33128. default: break;
  33129. case 'i': // 1 string to match.
  33130. return Intrinsic::hexagon_S2_clrbit_i; // "__builtin_HEXAGON_S2_clrbit_i"
  33131. case 'r': // 1 string to match.
  33132. return Intrinsic::hexagon_S2_clrbit_r; // "__builtin_HEXAGON_S2_clrbit_r"
  33133. }
  33134. break;
  33135. case 'e': // 1 string to match.
  33136. if (memcmp(BuiltinName.data()+22, "xtractu", 7))
  33137. break;
  33138. return Intrinsic::hexagon_S2_extractu; // "__builtin_HEXAGON_S2_extractu"
  33139. case 'l': // 6 strings to match.
  33140. if (BuiltinName[22] != 's')
  33141. break;
  33142. switch (BuiltinName[23]) {
  33143. default: break;
  33144. case 'l': // 2 strings to match.
  33145. if (memcmp(BuiltinName.data()+24, "_r_v", 4))
  33146. break;
  33147. switch (BuiltinName[28]) {
  33148. default: break;
  33149. case 'h': // 1 string to match.
  33150. return Intrinsic::hexagon_S2_lsl_r_vh; // "__builtin_HEXAGON_S2_lsl_r_vh"
  33151. case 'w': // 1 string to match.
  33152. return Intrinsic::hexagon_S2_lsl_r_vw; // "__builtin_HEXAGON_S2_lsl_r_vw"
  33153. }
  33154. break;
  33155. case 'r': // 4 strings to match.
  33156. if (BuiltinName[24] != '_')
  33157. break;
  33158. switch (BuiltinName[25]) {
  33159. default: break;
  33160. case 'i': // 2 strings to match.
  33161. if (memcmp(BuiltinName.data()+26, "_v", 2))
  33162. break;
  33163. switch (BuiltinName[28]) {
  33164. default: break;
  33165. case 'h': // 1 string to match.
  33166. return Intrinsic::hexagon_S2_lsr_i_vh; // "__builtin_HEXAGON_S2_lsr_i_vh"
  33167. case 'w': // 1 string to match.
  33168. return Intrinsic::hexagon_S2_lsr_i_vw; // "__builtin_HEXAGON_S2_lsr_i_vw"
  33169. }
  33170. break;
  33171. case 'r': // 2 strings to match.
  33172. if (memcmp(BuiltinName.data()+26, "_v", 2))
  33173. break;
  33174. switch (BuiltinName[28]) {
  33175. default: break;
  33176. case 'h': // 1 string to match.
  33177. return Intrinsic::hexagon_S2_lsr_r_vh; // "__builtin_HEXAGON_S2_lsr_r_vh"
  33178. case 'w': // 1 string to match.
  33179. return Intrinsic::hexagon_S2_lsr_r_vw; // "__builtin_HEXAGON_S2_lsr_r_vw"
  33180. }
  33181. break;
  33182. }
  33183. break;
  33184. }
  33185. break;
  33186. case 's': // 3 strings to match.
  33187. switch (BuiltinName[22]) {
  33188. default: break;
  33189. case 'e': // 2 strings to match.
  33190. if (memcmp(BuiltinName.data()+23, "tbit_", 5))
  33191. break;
  33192. switch (BuiltinName[28]) {
  33193. default: break;
  33194. case 'i': // 1 string to match.
  33195. return Intrinsic::hexagon_S2_setbit_i; // "__builtin_HEXAGON_S2_setbit_i"
  33196. case 'r': // 1 string to match.
  33197. return Intrinsic::hexagon_S2_setbit_r; // "__builtin_HEXAGON_S2_setbit_r"
  33198. }
  33199. break;
  33200. case 'v': // 1 string to match.
  33201. if (memcmp(BuiltinName.data()+23, "sathub", 6))
  33202. break;
  33203. return Intrinsic::hexagon_S2_svsathub; // "__builtin_HEXAGON_S2_svsathub"
  33204. }
  33205. break;
  33206. case 't': // 2 strings to match.
  33207. if (memcmp(BuiltinName.data()+22, "stbit_", 6))
  33208. break;
  33209. switch (BuiltinName[28]) {
  33210. default: break;
  33211. case 'i': // 1 string to match.
  33212. return Intrinsic::hexagon_S2_tstbit_i; // "__builtin_HEXAGON_S2_tstbit_i"
  33213. case 'r': // 1 string to match.
  33214. return Intrinsic::hexagon_S2_tstbit_r; // "__builtin_HEXAGON_S2_tstbit_r"
  33215. }
  33216. break;
  33217. case 'v': // 9 strings to match.
  33218. switch (BuiltinName[22]) {
  33219. default: break;
  33220. case 'a': // 2 strings to match.
  33221. if (memcmp(BuiltinName.data()+23, "lign", 4))
  33222. break;
  33223. switch (BuiltinName[27]) {
  33224. default: break;
  33225. case 'i': // 1 string to match.
  33226. if (BuiltinName[28] != 'b')
  33227. break;
  33228. return Intrinsic::hexagon_S2_valignib; // "__builtin_HEXAGON_S2_valignib"
  33229. case 'r': // 1 string to match.
  33230. if (BuiltinName[28] != 'b')
  33231. break;
  33232. return Intrinsic::hexagon_S2_valignrb; // "__builtin_HEXAGON_S2_valignrb"
  33233. }
  33234. break;
  33235. case 'c': // 1 string to match.
  33236. if (memcmp(BuiltinName.data()+23, "rotate", 6))
  33237. break;
  33238. return Intrinsic::hexagon_S2_vcrotate; // "__builtin_HEXAGON_S2_vcrotate"
  33239. case 's': // 2 strings to match.
  33240. if (memcmp(BuiltinName.data()+23, "platr", 5))
  33241. break;
  33242. switch (BuiltinName[28]) {
  33243. default: break;
  33244. case 'b': // 1 string to match.
  33245. return Intrinsic::hexagon_S2_vsplatrb; // "__builtin_HEXAGON_S2_vsplatrb"
  33246. case 'h': // 1 string to match.
  33247. return Intrinsic::hexagon_S2_vsplatrh; // "__builtin_HEXAGON_S2_vsplatrh"
  33248. }
  33249. break;
  33250. case 't': // 4 strings to match.
  33251. if (memcmp(BuiltinName.data()+23, "run", 3))
  33252. break;
  33253. switch (BuiltinName[26]) {
  33254. default: break;
  33255. case 'e': // 2 strings to match.
  33256. switch (BuiltinName[27]) {
  33257. default: break;
  33258. case 'h': // 1 string to match.
  33259. if (BuiltinName[28] != 'b')
  33260. break;
  33261. return Intrinsic::hexagon_S2_vtrunehb; // "__builtin_HEXAGON_S2_vtrunehb"
  33262. case 'w': // 1 string to match.
  33263. if (BuiltinName[28] != 'h')
  33264. break;
  33265. return Intrinsic::hexagon_S2_vtrunewh; // "__builtin_HEXAGON_S2_vtrunewh"
  33266. }
  33267. break;
  33268. case 'o': // 2 strings to match.
  33269. switch (BuiltinName[27]) {
  33270. default: break;
  33271. case 'h': // 1 string to match.
  33272. if (BuiltinName[28] != 'b')
  33273. break;
  33274. return Intrinsic::hexagon_S2_vtrunohb; // "__builtin_HEXAGON_S2_vtrunohb"
  33275. case 'w': // 1 string to match.
  33276. if (BuiltinName[28] != 'h')
  33277. break;
  33278. return Intrinsic::hexagon_S2_vtrunowh; // "__builtin_HEXAGON_S2_vtrunowh"
  33279. }
  33280. break;
  33281. }
  33282. break;
  33283. }
  33284. break;
  33285. }
  33286. break;
  33287. case '4': // 4 strings to match.
  33288. if (BuiltinName[20] != '_')
  33289. break;
  33290. switch (BuiltinName[21]) {
  33291. default: break;
  33292. case 'c': // 2 strings to match.
  33293. if (memcmp(BuiltinName.data()+22, "lbp", 3))
  33294. break;
  33295. switch (BuiltinName[25]) {
  33296. default: break;
  33297. case 'a': // 1 string to match.
  33298. if (memcmp(BuiltinName.data()+26, "ddi", 3))
  33299. break;
  33300. return Intrinsic::hexagon_S4_clbpaddi; // "__builtin_HEXAGON_S4_clbpaddi"
  33301. case 'n': // 1 string to match.
  33302. if (memcmp(BuiltinName.data()+26, "orm", 3))
  33303. break;
  33304. return Intrinsic::hexagon_S4_clbpnorm; // "__builtin_HEXAGON_S4_clbpnorm"
  33305. }
  33306. break;
  33307. case 'e': // 1 string to match.
  33308. if (memcmp(BuiltinName.data()+22, "xtractp", 7))
  33309. break;
  33310. return Intrinsic::hexagon_S4_extractp; // "__builtin_HEXAGON_S4_extractp"
  33311. case 'o': // 1 string to match.
  33312. if (memcmp(BuiltinName.data()+22, "r_andix", 7))
  33313. break;
  33314. return Intrinsic::hexagon_S4_or_andix; // "__builtin_HEXAGON_S4_or_andix"
  33315. }
  33316. break;
  33317. }
  33318. break;
  33319. }
  33320. break;
  33321. case 30: // 81 strings to match.
  33322. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  33323. break;
  33324. switch (BuiltinName[18]) {
  33325. default: break;
  33326. case 'A': // 11 strings to match.
  33327. switch (BuiltinName[19]) {
  33328. default: break;
  33329. case '2': // 3 strings to match.
  33330. if (BuiltinName[20] != '_')
  33331. break;
  33332. switch (BuiltinName[21]) {
  33333. default: break;
  33334. case 'c': // 1 string to match.
  33335. if (memcmp(BuiltinName.data()+22, "ombineii", 8))
  33336. break;
  33337. return Intrinsic::hexagon_A2_combineii; // "__builtin_HEXAGON_A2_combineii"
  33338. case 'v': // 2 strings to match.
  33339. switch (BuiltinName[22]) {
  33340. default: break;
  33341. case 'a': // 1 string to match.
  33342. if (memcmp(BuiltinName.data()+23, "ddb_map", 7))
  33343. break;
  33344. return Intrinsic::hexagon_A2_vaddb_map; // "__builtin_HEXAGON_A2_vaddb_map"
  33345. case 's': // 1 string to match.
  33346. if (memcmp(BuiltinName.data()+23, "ubb_map", 7))
  33347. break;
  33348. return Intrinsic::hexagon_A2_vsubb_map; // "__builtin_HEXAGON_A2_vsubb_map"
  33349. }
  33350. break;
  33351. }
  33352. break;
  33353. case '4': // 8 strings to match.
  33354. if (BuiltinName[20] != '_')
  33355. break;
  33356. switch (BuiltinName[21]) {
  33357. default: break;
  33358. case 'b': // 1 string to match.
  33359. if (memcmp(BuiltinName.data()+22, "itspliti", 8))
  33360. break;
  33361. return Intrinsic::hexagon_A4_bitspliti; // "__builtin_HEXAGON_A4_bitspliti"
  33362. case 'c': // 4 strings to match.
  33363. switch (BuiltinName[22]) {
  33364. default: break;
  33365. case 'o': // 2 strings to match.
  33366. if (memcmp(BuiltinName.data()+23, "mbine", 5))
  33367. break;
  33368. switch (BuiltinName[28]) {
  33369. default: break;
  33370. case 'i': // 1 string to match.
  33371. if (BuiltinName[29] != 'r')
  33372. break;
  33373. return Intrinsic::hexagon_A4_combineir; // "__builtin_HEXAGON_A4_combineir"
  33374. case 'r': // 1 string to match.
  33375. if (BuiltinName[29] != 'i')
  33376. break;
  33377. return Intrinsic::hexagon_A4_combineri; // "__builtin_HEXAGON_A4_combineri"
  33378. }
  33379. break;
  33380. case 'r': // 2 strings to match.
  33381. if (memcmp(BuiltinName.data()+23, "ound_r", 6))
  33382. break;
  33383. switch (BuiltinName[29]) {
  33384. default: break;
  33385. case 'i': // 1 string to match.
  33386. return Intrinsic::hexagon_A4_cround_ri; // "__builtin_HEXAGON_A4_cround_ri"
  33387. case 'r': // 1 string to match.
  33388. return Intrinsic::hexagon_A4_cround_rr; // "__builtin_HEXAGON_A4_cround_rr"
  33389. }
  33390. break;
  33391. }
  33392. break;
  33393. case 'v': // 3 strings to match.
  33394. if (memcmp(BuiltinName.data()+22, "cmp", 3))
  33395. break;
  33396. switch (BuiltinName[25]) {
  33397. default: break;
  33398. case 'b': // 1 string to match.
  33399. if (memcmp(BuiltinName.data()+26, "gtui", 4))
  33400. break;
  33401. return Intrinsic::hexagon_A4_vcmpbgtui; // "__builtin_HEXAGON_A4_vcmpbgtui"
  33402. case 'h': // 1 string to match.
  33403. if (memcmp(BuiltinName.data()+26, "gtui", 4))
  33404. break;
  33405. return Intrinsic::hexagon_A4_vcmphgtui; // "__builtin_HEXAGON_A4_vcmphgtui"
  33406. case 'w': // 1 string to match.
  33407. if (memcmp(BuiltinName.data()+26, "gtui", 4))
  33408. break;
  33409. return Intrinsic::hexagon_A4_vcmpwgtui; // "__builtin_HEXAGON_A4_vcmpwgtui"
  33410. }
  33411. break;
  33412. }
  33413. break;
  33414. }
  33415. break;
  33416. case 'C': // 2 strings to match.
  33417. switch (BuiltinName[19]) {
  33418. default: break;
  33419. case '2': // 1 string to match.
  33420. if (memcmp(BuiltinName.data()+20, "_pxfer_map", 10))
  33421. break;
  33422. return Intrinsic::hexagon_C2_pxfer_map; // "__builtin_HEXAGON_C2_pxfer_map"
  33423. case '4': // 1 string to match.
  33424. if (memcmp(BuiltinName.data()+20, "_nbitsclri", 10))
  33425. break;
  33426. return Intrinsic::hexagon_C4_nbitsclri; // "__builtin_HEXAGON_C4_nbitsclri"
  33427. }
  33428. break;
  33429. case 'F': // 12 strings to match.
  33430. if (memcmp(BuiltinName.data()+19, "2_", 2))
  33431. break;
  33432. switch (BuiltinName[21]) {
  33433. default: break;
  33434. case 'c': // 8 strings to match.
  33435. if (memcmp(BuiltinName.data()+22, "onv_", 4))
  33436. break;
  33437. switch (BuiltinName[26]) {
  33438. default: break;
  33439. case 'd': // 4 strings to match.
  33440. switch (BuiltinName[27]) {
  33441. default: break;
  33442. case '2': // 2 strings to match.
  33443. switch (BuiltinName[28]) {
  33444. default: break;
  33445. case 'd': // 1 string to match.
  33446. if (BuiltinName[29] != 'f')
  33447. break;
  33448. return Intrinsic::hexagon_F2_conv_d2df; // "__builtin_HEXAGON_F2_conv_d2df"
  33449. case 's': // 1 string to match.
  33450. if (BuiltinName[29] != 'f')
  33451. break;
  33452. return Intrinsic::hexagon_F2_conv_d2sf; // "__builtin_HEXAGON_F2_conv_d2sf"
  33453. }
  33454. break;
  33455. case 'f': // 2 strings to match.
  33456. if (BuiltinName[28] != '2')
  33457. break;
  33458. switch (BuiltinName[29]) {
  33459. default: break;
  33460. case 'd': // 1 string to match.
  33461. return Intrinsic::hexagon_F2_conv_df2d; // "__builtin_HEXAGON_F2_conv_df2d"
  33462. case 'w': // 1 string to match.
  33463. return Intrinsic::hexagon_F2_conv_df2w; // "__builtin_HEXAGON_F2_conv_df2w"
  33464. }
  33465. break;
  33466. }
  33467. break;
  33468. case 's': // 2 strings to match.
  33469. if (memcmp(BuiltinName.data()+27, "f2", 2))
  33470. break;
  33471. switch (BuiltinName[29]) {
  33472. default: break;
  33473. case 'd': // 1 string to match.
  33474. return Intrinsic::hexagon_F2_conv_sf2d; // "__builtin_HEXAGON_F2_conv_sf2d"
  33475. case 'w': // 1 string to match.
  33476. return Intrinsic::hexagon_F2_conv_sf2w; // "__builtin_HEXAGON_F2_conv_sf2w"
  33477. }
  33478. break;
  33479. case 'w': // 2 strings to match.
  33480. if (BuiltinName[27] != '2')
  33481. break;
  33482. switch (BuiltinName[28]) {
  33483. default: break;
  33484. case 'd': // 1 string to match.
  33485. if (BuiltinName[29] != 'f')
  33486. break;
  33487. return Intrinsic::hexagon_F2_conv_w2df; // "__builtin_HEXAGON_F2_conv_w2df"
  33488. case 's': // 1 string to match.
  33489. if (BuiltinName[29] != 'f')
  33490. break;
  33491. return Intrinsic::hexagon_F2_conv_w2sf; // "__builtin_HEXAGON_F2_conv_w2sf"
  33492. }
  33493. break;
  33494. }
  33495. break;
  33496. case 'd': // 2 strings to match.
  33497. if (memcmp(BuiltinName.data()+22, "ffm", 3))
  33498. break;
  33499. switch (BuiltinName[25]) {
  33500. default: break;
  33501. case 'a': // 1 string to match.
  33502. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  33503. break;
  33504. return Intrinsic::hexagon_F2_dffma_lib; // "__builtin_HEXAGON_F2_dffma_lib"
  33505. case 's': // 1 string to match.
  33506. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  33507. break;
  33508. return Intrinsic::hexagon_F2_dffms_lib; // "__builtin_HEXAGON_F2_dffms_lib"
  33509. }
  33510. break;
  33511. case 's': // 2 strings to match.
  33512. if (memcmp(BuiltinName.data()+22, "ffm", 3))
  33513. break;
  33514. switch (BuiltinName[25]) {
  33515. default: break;
  33516. case 'a': // 1 string to match.
  33517. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  33518. break;
  33519. return Intrinsic::hexagon_F2_sffma_lib; // "__builtin_HEXAGON_F2_sffma_lib"
  33520. case 's': // 1 string to match.
  33521. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  33522. break;
  33523. return Intrinsic::hexagon_F2_sffms_lib; // "__builtin_HEXAGON_F2_sffms_lib"
  33524. }
  33525. break;
  33526. }
  33527. break;
  33528. case 'M': // 44 strings to match.
  33529. switch (BuiltinName[19]) {
  33530. default: break;
  33531. case '2': // 41 strings to match.
  33532. if (BuiltinName[20] != '_')
  33533. break;
  33534. switch (BuiltinName[21]) {
  33535. default: break;
  33536. case 'c': // 8 strings to match.
  33537. switch (BuiltinName[22]) {
  33538. default: break;
  33539. case 'm': // 6 strings to match.
  33540. switch (BuiltinName[23]) {
  33541. default: break;
  33542. case 'a': // 2 strings to match.
  33543. if (memcmp(BuiltinName.data()+24, "csc_s", 5))
  33544. break;
  33545. switch (BuiltinName[29]) {
  33546. default: break;
  33547. case '0': // 1 string to match.
  33548. return Intrinsic::hexagon_M2_cmacsc_s0; // "__builtin_HEXAGON_M2_cmacsc_s0"
  33549. case '1': // 1 string to match.
  33550. return Intrinsic::hexagon_M2_cmacsc_s1; // "__builtin_HEXAGON_M2_cmacsc_s1"
  33551. }
  33552. break;
  33553. case 'p': // 4 strings to match.
  33554. if (BuiltinName[24] != 'y')
  33555. break;
  33556. switch (BuiltinName[25]) {
  33557. default: break;
  33558. case 'r': // 2 strings to match.
  33559. if (memcmp(BuiltinName.data()+26, "s_s", 3))
  33560. break;
  33561. switch (BuiltinName[29]) {
  33562. default: break;
  33563. case '0': // 1 string to match.
  33564. return Intrinsic::hexagon_M2_cmpyrs_s0; // "__builtin_HEXAGON_M2_cmpyrs_s0"
  33565. case '1': // 1 string to match.
  33566. return Intrinsic::hexagon_M2_cmpyrs_s1; // "__builtin_HEXAGON_M2_cmpyrs_s1"
  33567. }
  33568. break;
  33569. case 's': // 2 strings to match.
  33570. if (memcmp(BuiltinName.data()+26, "c_s", 3))
  33571. break;
  33572. switch (BuiltinName[29]) {
  33573. default: break;
  33574. case '0': // 1 string to match.
  33575. return Intrinsic::hexagon_M2_cmpysc_s0; // "__builtin_HEXAGON_M2_cmpysc_s0"
  33576. case '1': // 1 string to match.
  33577. return Intrinsic::hexagon_M2_cmpysc_s1; // "__builtin_HEXAGON_M2_cmpysc_s1"
  33578. }
  33579. break;
  33580. }
  33581. break;
  33582. }
  33583. break;
  33584. case 'n': // 2 strings to match.
  33585. if (memcmp(BuiltinName.data()+23, "acsc_s", 6))
  33586. break;
  33587. switch (BuiltinName[29]) {
  33588. default: break;
  33589. case '0': // 1 string to match.
  33590. return Intrinsic::hexagon_M2_cnacsc_s0; // "__builtin_HEXAGON_M2_cnacsc_s0"
  33591. case '1': // 1 string to match.
  33592. return Intrinsic::hexagon_M2_cnacsc_s1; // "__builtin_HEXAGON_M2_cnacsc_s1"
  33593. }
  33594. break;
  33595. }
  33596. break;
  33597. case 'h': // 2 strings to match.
  33598. if (memcmp(BuiltinName.data()+22, "mmpy", 4))
  33599. break;
  33600. switch (BuiltinName[26]) {
  33601. default: break;
  33602. case 'h': // 1 string to match.
  33603. if (memcmp(BuiltinName.data()+27, "_s1", 3))
  33604. break;
  33605. return Intrinsic::hexagon_M2_hmmpyh_s1; // "__builtin_HEXAGON_M2_hmmpyh_s1"
  33606. case 'l': // 1 string to match.
  33607. if (memcmp(BuiltinName.data()+27, "_s1", 3))
  33608. break;
  33609. return Intrinsic::hexagon_M2_hmmpyl_s1; // "__builtin_HEXAGON_M2_hmmpyl_s1"
  33610. }
  33611. break;
  33612. case 'm': // 21 strings to match.
  33613. switch (BuiltinName[22]) {
  33614. default: break;
  33615. case 'm': // 12 strings to match.
  33616. switch (BuiltinName[23]) {
  33617. default: break;
  33618. case 'a': // 4 strings to match.
  33619. if (BuiltinName[24] != 'c')
  33620. break;
  33621. switch (BuiltinName[25]) {
  33622. default: break;
  33623. case 'h': // 2 strings to match.
  33624. if (memcmp(BuiltinName.data()+26, "s_s", 3))
  33625. break;
  33626. switch (BuiltinName[29]) {
  33627. default: break;
  33628. case '0': // 1 string to match.
  33629. return Intrinsic::hexagon_M2_mmachs_s0; // "__builtin_HEXAGON_M2_mmachs_s0"
  33630. case '1': // 1 string to match.
  33631. return Intrinsic::hexagon_M2_mmachs_s1; // "__builtin_HEXAGON_M2_mmachs_s1"
  33632. }
  33633. break;
  33634. case 'l': // 2 strings to match.
  33635. if (memcmp(BuiltinName.data()+26, "s_s", 3))
  33636. break;
  33637. switch (BuiltinName[29]) {
  33638. default: break;
  33639. case '0': // 1 string to match.
  33640. return Intrinsic::hexagon_M2_mmacls_s0; // "__builtin_HEXAGON_M2_mmacls_s0"
  33641. case '1': // 1 string to match.
  33642. return Intrinsic::hexagon_M2_mmacls_s1; // "__builtin_HEXAGON_M2_mmacls_s1"
  33643. }
  33644. break;
  33645. }
  33646. break;
  33647. case 'p': // 8 strings to match.
  33648. if (BuiltinName[24] != 'y')
  33649. break;
  33650. switch (BuiltinName[25]) {
  33651. default: break;
  33652. case 'h': // 2 strings to match.
  33653. if (memcmp(BuiltinName.data()+26, "_rs", 3))
  33654. break;
  33655. switch (BuiltinName[29]) {
  33656. default: break;
  33657. case '0': // 1 string to match.
  33658. return Intrinsic::hexagon_M2_mmpyh_rs0; // "__builtin_HEXAGON_M2_mmpyh_rs0"
  33659. case '1': // 1 string to match.
  33660. return Intrinsic::hexagon_M2_mmpyh_rs1; // "__builtin_HEXAGON_M2_mmpyh_rs1"
  33661. }
  33662. break;
  33663. case 'l': // 2 strings to match.
  33664. if (memcmp(BuiltinName.data()+26, "_rs", 3))
  33665. break;
  33666. switch (BuiltinName[29]) {
  33667. default: break;
  33668. case '0': // 1 string to match.
  33669. return Intrinsic::hexagon_M2_mmpyl_rs0; // "__builtin_HEXAGON_M2_mmpyl_rs0"
  33670. case '1': // 1 string to match.
  33671. return Intrinsic::hexagon_M2_mmpyl_rs1; // "__builtin_HEXAGON_M2_mmpyl_rs1"
  33672. }
  33673. break;
  33674. case 'u': // 4 strings to match.
  33675. switch (BuiltinName[26]) {
  33676. default: break;
  33677. case 'h': // 2 strings to match.
  33678. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33679. break;
  33680. switch (BuiltinName[29]) {
  33681. default: break;
  33682. case '0': // 1 string to match.
  33683. return Intrinsic::hexagon_M2_mmpyuh_s0; // "__builtin_HEXAGON_M2_mmpyuh_s0"
  33684. case '1': // 1 string to match.
  33685. return Intrinsic::hexagon_M2_mmpyuh_s1; // "__builtin_HEXAGON_M2_mmpyuh_s1"
  33686. }
  33687. break;
  33688. case 'l': // 2 strings to match.
  33689. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33690. break;
  33691. switch (BuiltinName[29]) {
  33692. default: break;
  33693. case '0': // 1 string to match.
  33694. return Intrinsic::hexagon_M2_mmpyul_s0; // "__builtin_HEXAGON_M2_mmpyul_s0"
  33695. case '1': // 1 string to match.
  33696. return Intrinsic::hexagon_M2_mmpyul_s1; // "__builtin_HEXAGON_M2_mmpyul_s1"
  33697. }
  33698. break;
  33699. }
  33700. break;
  33701. }
  33702. break;
  33703. }
  33704. break;
  33705. case 'p': // 9 strings to match.
  33706. if (memcmp(BuiltinName.data()+23, "y_", 2))
  33707. break;
  33708. switch (BuiltinName[25]) {
  33709. default: break;
  33710. case 'h': // 4 strings to match.
  33711. switch (BuiltinName[26]) {
  33712. default: break;
  33713. case 'h': // 2 strings to match.
  33714. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33715. break;
  33716. switch (BuiltinName[29]) {
  33717. default: break;
  33718. case '0': // 1 string to match.
  33719. return Intrinsic::hexagon_M2_mpy_hh_s0; // "__builtin_HEXAGON_M2_mpy_hh_s0"
  33720. case '1': // 1 string to match.
  33721. return Intrinsic::hexagon_M2_mpy_hh_s1; // "__builtin_HEXAGON_M2_mpy_hh_s1"
  33722. }
  33723. break;
  33724. case 'l': // 2 strings to match.
  33725. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33726. break;
  33727. switch (BuiltinName[29]) {
  33728. default: break;
  33729. case '0': // 1 string to match.
  33730. return Intrinsic::hexagon_M2_mpy_hl_s0; // "__builtin_HEXAGON_M2_mpy_hl_s0"
  33731. case '1': // 1 string to match.
  33732. return Intrinsic::hexagon_M2_mpy_hl_s1; // "__builtin_HEXAGON_M2_mpy_hl_s1"
  33733. }
  33734. break;
  33735. }
  33736. break;
  33737. case 'l': // 4 strings to match.
  33738. switch (BuiltinName[26]) {
  33739. default: break;
  33740. case 'h': // 2 strings to match.
  33741. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33742. break;
  33743. switch (BuiltinName[29]) {
  33744. default: break;
  33745. case '0': // 1 string to match.
  33746. return Intrinsic::hexagon_M2_mpy_lh_s0; // "__builtin_HEXAGON_M2_mpy_lh_s0"
  33747. case '1': // 1 string to match.
  33748. return Intrinsic::hexagon_M2_mpy_lh_s1; // "__builtin_HEXAGON_M2_mpy_lh_s1"
  33749. }
  33750. break;
  33751. case 'l': // 2 strings to match.
  33752. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33753. break;
  33754. switch (BuiltinName[29]) {
  33755. default: break;
  33756. case '0': // 1 string to match.
  33757. return Intrinsic::hexagon_M2_mpy_ll_s0; // "__builtin_HEXAGON_M2_mpy_ll_s0"
  33758. case '1': // 1 string to match.
  33759. return Intrinsic::hexagon_M2_mpy_ll_s1; // "__builtin_HEXAGON_M2_mpy_ll_s1"
  33760. }
  33761. break;
  33762. }
  33763. break;
  33764. case 'u': // 1 string to match.
  33765. if (memcmp(BuiltinName.data()+26, "p_s1", 4))
  33766. break;
  33767. return Intrinsic::hexagon_M2_mpy_up_s1; // "__builtin_HEXAGON_M2_mpy_up_s1"
  33768. }
  33769. break;
  33770. }
  33771. break;
  33772. case 'v': // 10 strings to match.
  33773. switch (BuiltinName[22]) {
  33774. default: break;
  33775. case 'a': // 2 strings to match.
  33776. if (memcmp(BuiltinName.data()+23, "bsdiff", 6))
  33777. break;
  33778. switch (BuiltinName[29]) {
  33779. default: break;
  33780. case 'h': // 1 string to match.
  33781. return Intrinsic::hexagon_M2_vabsdiffh; // "__builtin_HEXAGON_M2_vabsdiffh"
  33782. case 'w': // 1 string to match.
  33783. return Intrinsic::hexagon_M2_vabsdiffw; // "__builtin_HEXAGON_M2_vabsdiffw"
  33784. }
  33785. break;
  33786. case 'd': // 4 strings to match.
  33787. if (BuiltinName[23] != 'm')
  33788. break;
  33789. switch (BuiltinName[24]) {
  33790. default: break;
  33791. case 'a': // 2 strings to match.
  33792. if (memcmp(BuiltinName.data()+25, "cs_s", 4))
  33793. break;
  33794. switch (BuiltinName[29]) {
  33795. default: break;
  33796. case '0': // 1 string to match.
  33797. return Intrinsic::hexagon_M2_vdmacs_s0; // "__builtin_HEXAGON_M2_vdmacs_s0"
  33798. case '1': // 1 string to match.
  33799. return Intrinsic::hexagon_M2_vdmacs_s1; // "__builtin_HEXAGON_M2_vdmacs_s1"
  33800. }
  33801. break;
  33802. case 'p': // 2 strings to match.
  33803. if (memcmp(BuiltinName.data()+25, "ys_s", 4))
  33804. break;
  33805. switch (BuiltinName[29]) {
  33806. default: break;
  33807. case '0': // 1 string to match.
  33808. return Intrinsic::hexagon_M2_vdmpys_s0; // "__builtin_HEXAGON_M2_vdmpys_s0"
  33809. case '1': // 1 string to match.
  33810. return Intrinsic::hexagon_M2_vdmpys_s1; // "__builtin_HEXAGON_M2_vdmpys_s1"
  33811. }
  33812. break;
  33813. }
  33814. break;
  33815. case 'm': // 4 strings to match.
  33816. switch (BuiltinName[23]) {
  33817. default: break;
  33818. case 'a': // 2 strings to match.
  33819. if (memcmp(BuiltinName.data()+24, "c2s_s", 5))
  33820. break;
  33821. switch (BuiltinName[29]) {
  33822. default: break;
  33823. case '0': // 1 string to match.
  33824. return Intrinsic::hexagon_M2_vmac2s_s0; // "__builtin_HEXAGON_M2_vmac2s_s0"
  33825. case '1': // 1 string to match.
  33826. return Intrinsic::hexagon_M2_vmac2s_s1; // "__builtin_HEXAGON_M2_vmac2s_s1"
  33827. }
  33828. break;
  33829. case 'p': // 2 strings to match.
  33830. if (memcmp(BuiltinName.data()+24, "y2s_s", 5))
  33831. break;
  33832. switch (BuiltinName[29]) {
  33833. default: break;
  33834. case '0': // 1 string to match.
  33835. return Intrinsic::hexagon_M2_vmpy2s_s0; // "__builtin_HEXAGON_M2_vmpy2s_s0"
  33836. case '1': // 1 string to match.
  33837. return Intrinsic::hexagon_M2_vmpy2s_s1; // "__builtin_HEXAGON_M2_vmpy2s_s1"
  33838. }
  33839. break;
  33840. }
  33841. break;
  33842. }
  33843. break;
  33844. }
  33845. break;
  33846. case '4': // 3 strings to match.
  33847. if (BuiltinName[20] != '_')
  33848. break;
  33849. switch (BuiltinName[21]) {
  33850. default: break;
  33851. case 'c': // 2 strings to match.
  33852. if (memcmp(BuiltinName.data()+22, "mpy", 3))
  33853. break;
  33854. switch (BuiltinName[25]) {
  33855. default: break;
  33856. case 'i': // 1 string to match.
  33857. if (memcmp(BuiltinName.data()+26, "_whc", 4))
  33858. break;
  33859. return Intrinsic::hexagon_M4_cmpyi_whc; // "__builtin_HEXAGON_M4_cmpyi_whc"
  33860. case 'r': // 1 string to match.
  33861. if (memcmp(BuiltinName.data()+26, "_whc", 4))
  33862. break;
  33863. return Intrinsic::hexagon_M4_cmpyr_whc; // "__builtin_HEXAGON_M4_cmpyr_whc"
  33864. }
  33865. break;
  33866. case 'p': // 1 string to match.
  33867. if (memcmp(BuiltinName.data()+22, "mpyw_acc", 8))
  33868. break;
  33869. return Intrinsic::hexagon_M4_pmpyw_acc; // "__builtin_HEXAGON_M4_pmpyw_acc"
  33870. }
  33871. break;
  33872. }
  33873. break;
  33874. case 'S': // 12 strings to match.
  33875. switch (BuiltinName[19]) {
  33876. default: break;
  33877. case '2': // 4 strings to match.
  33878. if (BuiltinName[20] != '_')
  33879. break;
  33880. switch (BuiltinName[21]) {
  33881. default: break;
  33882. case 'e': // 1 string to match.
  33883. if (memcmp(BuiltinName.data()+22, "xtractup", 8))
  33884. break;
  33885. return Intrinsic::hexagon_S2_extractup; // "__builtin_HEXAGON_S2_extractup"
  33886. case 'i': // 1 string to match.
  33887. if (memcmp(BuiltinName.data()+22, "nsert_rp", 8))
  33888. break;
  33889. return Intrinsic::hexagon_S2_insert_rp; // "__builtin_HEXAGON_S2_insert_rp"
  33890. case 'v': // 2 strings to match.
  33891. if (memcmp(BuiltinName.data()+22, "splice", 6))
  33892. break;
  33893. switch (BuiltinName[28]) {
  33894. default: break;
  33895. case 'i': // 1 string to match.
  33896. if (BuiltinName[29] != 'b')
  33897. break;
  33898. return Intrinsic::hexagon_S2_vspliceib; // "__builtin_HEXAGON_S2_vspliceib"
  33899. case 'r': // 1 string to match.
  33900. if (BuiltinName[29] != 'b')
  33901. break;
  33902. return Intrinsic::hexagon_S2_vsplicerb; // "__builtin_HEXAGON_S2_vsplicerb"
  33903. }
  33904. break;
  33905. }
  33906. break;
  33907. case '4': // 7 strings to match.
  33908. if (BuiltinName[20] != '_')
  33909. break;
  33910. switch (BuiltinName[21]) {
  33911. default: break;
  33912. case 'n': // 2 strings to match.
  33913. if (memcmp(BuiltinName.data()+22, "tstbit_", 7))
  33914. break;
  33915. switch (BuiltinName[29]) {
  33916. default: break;
  33917. case 'i': // 1 string to match.
  33918. return Intrinsic::hexagon_S4_ntstbit_i; // "__builtin_HEXAGON_S4_ntstbit_i"
  33919. case 'r': // 1 string to match.
  33920. return Intrinsic::hexagon_S4_ntstbit_r; // "__builtin_HEXAGON_S4_ntstbit_r"
  33921. }
  33922. break;
  33923. case 'v': // 5 strings to match.
  33924. switch (BuiltinName[22]) {
  33925. default: break;
  33926. case 'r': // 1 string to match.
  33927. if (memcmp(BuiltinName.data()+23, "crotate", 7))
  33928. break;
  33929. return Intrinsic::hexagon_S4_vrcrotate; // "__builtin_HEXAGON_S4_vrcrotate"
  33930. case 'x': // 4 strings to match.
  33931. switch (BuiltinName[23]) {
  33932. default: break;
  33933. case 'a': // 2 strings to match.
  33934. if (memcmp(BuiltinName.data()+24, "ddsub", 5))
  33935. break;
  33936. switch (BuiltinName[29]) {
  33937. default: break;
  33938. case 'h': // 1 string to match.
  33939. return Intrinsic::hexagon_S4_vxaddsubh; // "__builtin_HEXAGON_S4_vxaddsubh"
  33940. case 'w': // 1 string to match.
  33941. return Intrinsic::hexagon_S4_vxaddsubw; // "__builtin_HEXAGON_S4_vxaddsubw"
  33942. }
  33943. break;
  33944. case 's': // 2 strings to match.
  33945. if (memcmp(BuiltinName.data()+24, "ubadd", 5))
  33946. break;
  33947. switch (BuiltinName[29]) {
  33948. default: break;
  33949. case 'h': // 1 string to match.
  33950. return Intrinsic::hexagon_S4_vxsubaddh; // "__builtin_HEXAGON_S4_vxsubaddh"
  33951. case 'w': // 1 string to match.
  33952. return Intrinsic::hexagon_S4_vxsubaddw; // "__builtin_HEXAGON_S4_vxsubaddw"
  33953. }
  33954. break;
  33955. }
  33956. break;
  33957. }
  33958. break;
  33959. }
  33960. break;
  33961. case '5': // 1 string to match.
  33962. if (memcmp(BuiltinName.data()+20, "_popcountp", 10))
  33963. break;
  33964. return Intrinsic::hexagon_S5_popcountp; // "__builtin_HEXAGON_S5_popcountp"
  33965. }
  33966. break;
  33967. }
  33968. break;
  33969. case 31: // 95 strings to match.
  33970. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  33971. break;
  33972. switch (BuiltinName[18]) {
  33973. default: break;
  33974. case 'A': // 4 strings to match.
  33975. if (memcmp(BuiltinName.data()+19, "2_combine_", 10))
  33976. break;
  33977. switch (BuiltinName[29]) {
  33978. default: break;
  33979. case 'h': // 2 strings to match.
  33980. switch (BuiltinName[30]) {
  33981. default: break;
  33982. case 'h': // 1 string to match.
  33983. return Intrinsic::hexagon_A2_combine_hh; // "__builtin_HEXAGON_A2_combine_hh"
  33984. case 'l': // 1 string to match.
  33985. return Intrinsic::hexagon_A2_combine_hl; // "__builtin_HEXAGON_A2_combine_hl"
  33986. }
  33987. break;
  33988. case 'l': // 2 strings to match.
  33989. switch (BuiltinName[30]) {
  33990. default: break;
  33991. case 'h': // 1 string to match.
  33992. return Intrinsic::hexagon_A2_combine_lh; // "__builtin_HEXAGON_A2_combine_lh"
  33993. case 'l': // 1 string to match.
  33994. return Intrinsic::hexagon_A2_combine_ll; // "__builtin_HEXAGON_A2_combine_ll"
  33995. }
  33996. break;
  33997. }
  33998. break;
  33999. case 'F': // 10 strings to match.
  34000. if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
  34001. break;
  34002. switch (BuiltinName[26]) {
  34003. default: break;
  34004. case 'd': // 3 strings to match.
  34005. if (memcmp(BuiltinName.data()+27, "f2", 2))
  34006. break;
  34007. switch (BuiltinName[29]) {
  34008. default: break;
  34009. case 's': // 1 string to match.
  34010. if (BuiltinName[30] != 'f')
  34011. break;
  34012. return Intrinsic::hexagon_F2_conv_df2sf; // "__builtin_HEXAGON_F2_conv_df2sf"
  34013. case 'u': // 2 strings to match.
  34014. switch (BuiltinName[30]) {
  34015. default: break;
  34016. case 'd': // 1 string to match.
  34017. return Intrinsic::hexagon_F2_conv_df2ud; // "__builtin_HEXAGON_F2_conv_df2ud"
  34018. case 'w': // 1 string to match.
  34019. return Intrinsic::hexagon_F2_conv_df2uw; // "__builtin_HEXAGON_F2_conv_df2uw"
  34020. }
  34021. break;
  34022. }
  34023. break;
  34024. case 's': // 3 strings to match.
  34025. if (memcmp(BuiltinName.data()+27, "f2", 2))
  34026. break;
  34027. switch (BuiltinName[29]) {
  34028. default: break;
  34029. case 'd': // 1 string to match.
  34030. if (BuiltinName[30] != 'f')
  34031. break;
  34032. return Intrinsic::hexagon_F2_conv_sf2df; // "__builtin_HEXAGON_F2_conv_sf2df"
  34033. case 'u': // 2 strings to match.
  34034. switch (BuiltinName[30]) {
  34035. default: break;
  34036. case 'd': // 1 string to match.
  34037. return Intrinsic::hexagon_F2_conv_sf2ud; // "__builtin_HEXAGON_F2_conv_sf2ud"
  34038. case 'w': // 1 string to match.
  34039. return Intrinsic::hexagon_F2_conv_sf2uw; // "__builtin_HEXAGON_F2_conv_sf2uw"
  34040. }
  34041. break;
  34042. }
  34043. break;
  34044. case 'u': // 4 strings to match.
  34045. switch (BuiltinName[27]) {
  34046. default: break;
  34047. case 'd': // 2 strings to match.
  34048. if (BuiltinName[28] != '2')
  34049. break;
  34050. switch (BuiltinName[29]) {
  34051. default: break;
  34052. case 'd': // 1 string to match.
  34053. if (BuiltinName[30] != 'f')
  34054. break;
  34055. return Intrinsic::hexagon_F2_conv_ud2df; // "__builtin_HEXAGON_F2_conv_ud2df"
  34056. case 's': // 1 string to match.
  34057. if (BuiltinName[30] != 'f')
  34058. break;
  34059. return Intrinsic::hexagon_F2_conv_ud2sf; // "__builtin_HEXAGON_F2_conv_ud2sf"
  34060. }
  34061. break;
  34062. case 'w': // 2 strings to match.
  34063. if (BuiltinName[28] != '2')
  34064. break;
  34065. switch (BuiltinName[29]) {
  34066. default: break;
  34067. case 'd': // 1 string to match.
  34068. if (BuiltinName[30] != 'f')
  34069. break;
  34070. return Intrinsic::hexagon_F2_conv_uw2df; // "__builtin_HEXAGON_F2_conv_uw2df"
  34071. case 's': // 1 string to match.
  34072. if (BuiltinName[30] != 'f')
  34073. break;
  34074. return Intrinsic::hexagon_F2_conv_uw2sf; // "__builtin_HEXAGON_F2_conv_uw2sf"
  34075. }
  34076. break;
  34077. }
  34078. break;
  34079. }
  34080. break;
  34081. case 'M': // 58 strings to match.
  34082. switch (BuiltinName[19]) {
  34083. default: break;
  34084. case '2': // 49 strings to match.
  34085. if (BuiltinName[20] != '_')
  34086. break;
  34087. switch (BuiltinName[21]) {
  34088. default: break;
  34089. case 'c': // 2 strings to match.
  34090. if (memcmp(BuiltinName.data()+22, "mpyrsc_s", 8))
  34091. break;
  34092. switch (BuiltinName[30]) {
  34093. default: break;
  34094. case '0': // 1 string to match.
  34095. return Intrinsic::hexagon_M2_cmpyrsc_s0; // "__builtin_HEXAGON_M2_cmpyrsc_s0"
  34096. case '1': // 1 string to match.
  34097. return Intrinsic::hexagon_M2_cmpyrsc_s1; // "__builtin_HEXAGON_M2_cmpyrsc_s1"
  34098. }
  34099. break;
  34100. case 'd': // 2 strings to match.
  34101. if (memcmp(BuiltinName.data()+22, "pmpy", 4))
  34102. break;
  34103. switch (BuiltinName[26]) {
  34104. default: break;
  34105. case 's': // 1 string to match.
  34106. if (memcmp(BuiltinName.data()+27, "s_s0", 4))
  34107. break;
  34108. return Intrinsic::hexagon_M2_dpmpyss_s0; // "__builtin_HEXAGON_M2_dpmpyss_s0"
  34109. case 'u': // 1 string to match.
  34110. if (memcmp(BuiltinName.data()+27, "u_s0", 4))
  34111. break;
  34112. return Intrinsic::hexagon_M2_dpmpyuu_s0; // "__builtin_HEXAGON_M2_dpmpyuu_s0"
  34113. }
  34114. break;
  34115. case 'h': // 2 strings to match.
  34116. if (memcmp(BuiltinName.data()+22, "mmpy", 4))
  34117. break;
  34118. switch (BuiltinName[26]) {
  34119. default: break;
  34120. case 'h': // 1 string to match.
  34121. if (memcmp(BuiltinName.data()+27, "_rs1", 4))
  34122. break;
  34123. return Intrinsic::hexagon_M2_hmmpyh_rs1; // "__builtin_HEXAGON_M2_hmmpyh_rs1"
  34124. case 'l': // 1 string to match.
  34125. if (memcmp(BuiltinName.data()+27, "_rs1", 4))
  34126. break;
  34127. return Intrinsic::hexagon_M2_hmmpyl_rs1; // "__builtin_HEXAGON_M2_hmmpyl_rs1"
  34128. }
  34129. break;
  34130. case 'm': // 28 strings to match.
  34131. switch (BuiltinName[22]) {
  34132. default: break;
  34133. case 'm': // 12 strings to match.
  34134. switch (BuiltinName[23]) {
  34135. default: break;
  34136. case 'a': // 8 strings to match.
  34137. if (BuiltinName[24] != 'c')
  34138. break;
  34139. switch (BuiltinName[25]) {
  34140. default: break;
  34141. case 'h': // 2 strings to match.
  34142. if (memcmp(BuiltinName.data()+26, "s_rs", 4))
  34143. break;
  34144. switch (BuiltinName[30]) {
  34145. default: break;
  34146. case '0': // 1 string to match.
  34147. return Intrinsic::hexagon_M2_mmachs_rs0; // "__builtin_HEXAGON_M2_mmachs_rs0"
  34148. case '1': // 1 string to match.
  34149. return Intrinsic::hexagon_M2_mmachs_rs1; // "__builtin_HEXAGON_M2_mmachs_rs1"
  34150. }
  34151. break;
  34152. case 'l': // 2 strings to match.
  34153. if (memcmp(BuiltinName.data()+26, "s_rs", 4))
  34154. break;
  34155. switch (BuiltinName[30]) {
  34156. default: break;
  34157. case '0': // 1 string to match.
  34158. return Intrinsic::hexagon_M2_mmacls_rs0; // "__builtin_HEXAGON_M2_mmacls_rs0"
  34159. case '1': // 1 string to match.
  34160. return Intrinsic::hexagon_M2_mmacls_rs1; // "__builtin_HEXAGON_M2_mmacls_rs1"
  34161. }
  34162. break;
  34163. case 'u': // 4 strings to match.
  34164. switch (BuiltinName[26]) {
  34165. default: break;
  34166. case 'h': // 2 strings to match.
  34167. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  34168. break;
  34169. switch (BuiltinName[30]) {
  34170. default: break;
  34171. case '0': // 1 string to match.
  34172. return Intrinsic::hexagon_M2_mmacuhs_s0; // "__builtin_HEXAGON_M2_mmacuhs_s0"
  34173. case '1': // 1 string to match.
  34174. return Intrinsic::hexagon_M2_mmacuhs_s1; // "__builtin_HEXAGON_M2_mmacuhs_s1"
  34175. }
  34176. break;
  34177. case 'l': // 2 strings to match.
  34178. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  34179. break;
  34180. switch (BuiltinName[30]) {
  34181. default: break;
  34182. case '0': // 1 string to match.
  34183. return Intrinsic::hexagon_M2_mmaculs_s0; // "__builtin_HEXAGON_M2_mmaculs_s0"
  34184. case '1': // 1 string to match.
  34185. return Intrinsic::hexagon_M2_mmaculs_s1; // "__builtin_HEXAGON_M2_mmaculs_s1"
  34186. }
  34187. break;
  34188. }
  34189. break;
  34190. }
  34191. break;
  34192. case 'p': // 4 strings to match.
  34193. if (memcmp(BuiltinName.data()+24, "yu", 2))
  34194. break;
  34195. switch (BuiltinName[26]) {
  34196. default: break;
  34197. case 'h': // 2 strings to match.
  34198. if (memcmp(BuiltinName.data()+27, "_rs", 3))
  34199. break;
  34200. switch (BuiltinName[30]) {
  34201. default: break;
  34202. case '0': // 1 string to match.
  34203. return Intrinsic::hexagon_M2_mmpyuh_rs0; // "__builtin_HEXAGON_M2_mmpyuh_rs0"
  34204. case '1': // 1 string to match.
  34205. return Intrinsic::hexagon_M2_mmpyuh_rs1; // "__builtin_HEXAGON_M2_mmpyuh_rs1"
  34206. }
  34207. break;
  34208. case 'l': // 2 strings to match.
  34209. if (memcmp(BuiltinName.data()+27, "_rs", 3))
  34210. break;
  34211. switch (BuiltinName[30]) {
  34212. default: break;
  34213. case '0': // 1 string to match.
  34214. return Intrinsic::hexagon_M2_mmpyul_rs0; // "__builtin_HEXAGON_M2_mmpyul_rs0"
  34215. case '1': // 1 string to match.
  34216. return Intrinsic::hexagon_M2_mmpyul_rs1; // "__builtin_HEXAGON_M2_mmpyul_rs1"
  34217. }
  34218. break;
  34219. }
  34220. break;
  34221. }
  34222. break;
  34223. case 'p': // 16 strings to match.
  34224. if (BuiltinName[23] != 'y')
  34225. break;
  34226. switch (BuiltinName[24]) {
  34227. default: break;
  34228. case 'd': // 8 strings to match.
  34229. if (BuiltinName[25] != '_')
  34230. break;
  34231. switch (BuiltinName[26]) {
  34232. default: break;
  34233. case 'h': // 4 strings to match.
  34234. switch (BuiltinName[27]) {
  34235. default: break;
  34236. case 'h': // 2 strings to match.
  34237. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34238. break;
  34239. switch (BuiltinName[30]) {
  34240. default: break;
  34241. case '0': // 1 string to match.
  34242. return Intrinsic::hexagon_M2_mpyd_hh_s0; // "__builtin_HEXAGON_M2_mpyd_hh_s0"
  34243. case '1': // 1 string to match.
  34244. return Intrinsic::hexagon_M2_mpyd_hh_s1; // "__builtin_HEXAGON_M2_mpyd_hh_s1"
  34245. }
  34246. break;
  34247. case 'l': // 2 strings to match.
  34248. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34249. break;
  34250. switch (BuiltinName[30]) {
  34251. default: break;
  34252. case '0': // 1 string to match.
  34253. return Intrinsic::hexagon_M2_mpyd_hl_s0; // "__builtin_HEXAGON_M2_mpyd_hl_s0"
  34254. case '1': // 1 string to match.
  34255. return Intrinsic::hexagon_M2_mpyd_hl_s1; // "__builtin_HEXAGON_M2_mpyd_hl_s1"
  34256. }
  34257. break;
  34258. }
  34259. break;
  34260. case 'l': // 4 strings to match.
  34261. switch (BuiltinName[27]) {
  34262. default: break;
  34263. case 'h': // 2 strings to match.
  34264. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34265. break;
  34266. switch (BuiltinName[30]) {
  34267. default: break;
  34268. case '0': // 1 string to match.
  34269. return Intrinsic::hexagon_M2_mpyd_lh_s0; // "__builtin_HEXAGON_M2_mpyd_lh_s0"
  34270. case '1': // 1 string to match.
  34271. return Intrinsic::hexagon_M2_mpyd_lh_s1; // "__builtin_HEXAGON_M2_mpyd_lh_s1"
  34272. }
  34273. break;
  34274. case 'l': // 2 strings to match.
  34275. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34276. break;
  34277. switch (BuiltinName[30]) {
  34278. default: break;
  34279. case '0': // 1 string to match.
  34280. return Intrinsic::hexagon_M2_mpyd_ll_s0; // "__builtin_HEXAGON_M2_mpyd_ll_s0"
  34281. case '1': // 1 string to match.
  34282. return Intrinsic::hexagon_M2_mpyd_ll_s1; // "__builtin_HEXAGON_M2_mpyd_ll_s1"
  34283. }
  34284. break;
  34285. }
  34286. break;
  34287. }
  34288. break;
  34289. case 'u': // 8 strings to match.
  34290. if (BuiltinName[25] != '_')
  34291. break;
  34292. switch (BuiltinName[26]) {
  34293. default: break;
  34294. case 'h': // 4 strings to match.
  34295. switch (BuiltinName[27]) {
  34296. default: break;
  34297. case 'h': // 2 strings to match.
  34298. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34299. break;
  34300. switch (BuiltinName[30]) {
  34301. default: break;
  34302. case '0': // 1 string to match.
  34303. return Intrinsic::hexagon_M2_mpyu_hh_s0; // "__builtin_HEXAGON_M2_mpyu_hh_s0"
  34304. case '1': // 1 string to match.
  34305. return Intrinsic::hexagon_M2_mpyu_hh_s1; // "__builtin_HEXAGON_M2_mpyu_hh_s1"
  34306. }
  34307. break;
  34308. case 'l': // 2 strings to match.
  34309. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34310. break;
  34311. switch (BuiltinName[30]) {
  34312. default: break;
  34313. case '0': // 1 string to match.
  34314. return Intrinsic::hexagon_M2_mpyu_hl_s0; // "__builtin_HEXAGON_M2_mpyu_hl_s0"
  34315. case '1': // 1 string to match.
  34316. return Intrinsic::hexagon_M2_mpyu_hl_s1; // "__builtin_HEXAGON_M2_mpyu_hl_s1"
  34317. }
  34318. break;
  34319. }
  34320. break;
  34321. case 'l': // 4 strings to match.
  34322. switch (BuiltinName[27]) {
  34323. default: break;
  34324. case 'h': // 2 strings to match.
  34325. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34326. break;
  34327. switch (BuiltinName[30]) {
  34328. default: break;
  34329. case '0': // 1 string to match.
  34330. return Intrinsic::hexagon_M2_mpyu_lh_s0; // "__builtin_HEXAGON_M2_mpyu_lh_s0"
  34331. case '1': // 1 string to match.
  34332. return Intrinsic::hexagon_M2_mpyu_lh_s1; // "__builtin_HEXAGON_M2_mpyu_lh_s1"
  34333. }
  34334. break;
  34335. case 'l': // 2 strings to match.
  34336. if (memcmp(BuiltinName.data()+28, "_s", 2))
  34337. break;
  34338. switch (BuiltinName[30]) {
  34339. default: break;
  34340. case '0': // 1 string to match.
  34341. return Intrinsic::hexagon_M2_mpyu_ll_s0; // "__builtin_HEXAGON_M2_mpyu_ll_s0"
  34342. case '1': // 1 string to match.
  34343. return Intrinsic::hexagon_M2_mpyu_ll_s1; // "__builtin_HEXAGON_M2_mpyu_ll_s1"
  34344. }
  34345. break;
  34346. }
  34347. break;
  34348. }
  34349. break;
  34350. }
  34351. break;
  34352. }
  34353. break;
  34354. case 'v': // 15 strings to match.
  34355. switch (BuiltinName[22]) {
  34356. default: break;
  34357. case 'd': // 2 strings to match.
  34358. if (memcmp(BuiltinName.data()+23, "mpyrs_s", 7))
  34359. break;
  34360. switch (BuiltinName[30]) {
  34361. default: break;
  34362. case '0': // 1 string to match.
  34363. return Intrinsic::hexagon_M2_vdmpyrs_s0; // "__builtin_HEXAGON_M2_vdmpyrs_s0"
  34364. case '1': // 1 string to match.
  34365. return Intrinsic::hexagon_M2_vdmpyrs_s1; // "__builtin_HEXAGON_M2_vdmpyrs_s1"
  34366. }
  34367. break;
  34368. case 'm': // 8 strings to match.
  34369. switch (BuiltinName[23]) {
  34370. default: break;
  34371. case 'a': // 4 strings to match.
  34372. if (memcmp(BuiltinName.data()+24, "c2", 2))
  34373. break;
  34374. switch (BuiltinName[26]) {
  34375. default: break;
  34376. case 'e': // 2 strings to match.
  34377. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  34378. break;
  34379. switch (BuiltinName[30]) {
  34380. default: break;
  34381. case '0': // 1 string to match.
  34382. return Intrinsic::hexagon_M2_vmac2es_s0; // "__builtin_HEXAGON_M2_vmac2es_s0"
  34383. case '1': // 1 string to match.
  34384. return Intrinsic::hexagon_M2_vmac2es_s1; // "__builtin_HEXAGON_M2_vmac2es_s1"
  34385. }
  34386. break;
  34387. case 's': // 2 strings to match.
  34388. if (memcmp(BuiltinName.data()+27, "u_s", 3))
  34389. break;
  34390. switch (BuiltinName[30]) {
  34391. default: break;
  34392. case '0': // 1 string to match.
  34393. return Intrinsic::hexagon_M2_vmac2su_s0; // "__builtin_HEXAGON_M2_vmac2su_s0"
  34394. case '1': // 1 string to match.
  34395. return Intrinsic::hexagon_M2_vmac2su_s1; // "__builtin_HEXAGON_M2_vmac2su_s1"
  34396. }
  34397. break;
  34398. }
  34399. break;
  34400. case 'p': // 4 strings to match.
  34401. if (memcmp(BuiltinName.data()+24, "y2", 2))
  34402. break;
  34403. switch (BuiltinName[26]) {
  34404. default: break;
  34405. case 'e': // 2 strings to match.
  34406. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  34407. break;
  34408. switch (BuiltinName[30]) {
  34409. default: break;
  34410. case '0': // 1 string to match.
  34411. return Intrinsic::hexagon_M2_vmpy2es_s0; // "__builtin_HEXAGON_M2_vmpy2es_s0"
  34412. case '1': // 1 string to match.
  34413. return Intrinsic::hexagon_M2_vmpy2es_s1; // "__builtin_HEXAGON_M2_vmpy2es_s1"
  34414. }
  34415. break;
  34416. case 's': // 2 strings to match.
  34417. if (memcmp(BuiltinName.data()+27, "u_s", 3))
  34418. break;
  34419. switch (BuiltinName[30]) {
  34420. default: break;
  34421. case '0': // 1 string to match.
  34422. return Intrinsic::hexagon_M2_vmpy2su_s0; // "__builtin_HEXAGON_M2_vmpy2su_s0"
  34423. case '1': // 1 string to match.
  34424. return Intrinsic::hexagon_M2_vmpy2su_s1; // "__builtin_HEXAGON_M2_vmpy2su_s1"
  34425. }
  34426. break;
  34427. }
  34428. break;
  34429. }
  34430. break;
  34431. case 'r': // 5 strings to match.
  34432. if (memcmp(BuiltinName.data()+23, "cm", 2))
  34433. break;
  34434. switch (BuiltinName[25]) {
  34435. default: break;
  34436. case 'a': // 2 strings to match.
  34437. if (BuiltinName[26] != 'c')
  34438. break;
  34439. switch (BuiltinName[27]) {
  34440. default: break;
  34441. case 'i': // 1 string to match.
  34442. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  34443. break;
  34444. return Intrinsic::hexagon_M2_vrcmaci_s0; // "__builtin_HEXAGON_M2_vrcmaci_s0"
  34445. case 'r': // 1 string to match.
  34446. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  34447. break;
  34448. return Intrinsic::hexagon_M2_vrcmacr_s0; // "__builtin_HEXAGON_M2_vrcmacr_s0"
  34449. }
  34450. break;
  34451. case 'p': // 3 strings to match.
  34452. if (BuiltinName[26] != 'y')
  34453. break;
  34454. switch (BuiltinName[27]) {
  34455. default: break;
  34456. case 'i': // 1 string to match.
  34457. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  34458. break;
  34459. return Intrinsic::hexagon_M2_vrcmpyi_s0; // "__builtin_HEXAGON_M2_vrcmpyi_s0"
  34460. case 'r': // 1 string to match.
  34461. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  34462. break;
  34463. return Intrinsic::hexagon_M2_vrcmpyr_s0; // "__builtin_HEXAGON_M2_vrcmpyr_s0"
  34464. case 's': // 1 string to match.
  34465. if (memcmp(BuiltinName.data()+28, "_s1", 3))
  34466. break;
  34467. return Intrinsic::hexagon_M2_vrcmpys_s1; // "__builtin_HEXAGON_M2_vrcmpys_s1"
  34468. }
  34469. break;
  34470. }
  34471. break;
  34472. }
  34473. break;
  34474. }
  34475. break;
  34476. case '4': // 9 strings to match.
  34477. if (BuiltinName[20] != '_')
  34478. break;
  34479. switch (BuiltinName[21]) {
  34480. default: break;
  34481. case 'm': // 4 strings to match.
  34482. if (memcmp(BuiltinName.data()+22, "pyr", 3))
  34483. break;
  34484. switch (BuiltinName[25]) {
  34485. default: break;
  34486. case 'i': // 2 strings to match.
  34487. if (memcmp(BuiltinName.data()+26, "_add", 4))
  34488. break;
  34489. switch (BuiltinName[30]) {
  34490. default: break;
  34491. case 'i': // 1 string to match.
  34492. return Intrinsic::hexagon_M4_mpyri_addi; // "__builtin_HEXAGON_M4_mpyri_addi"
  34493. case 'r': // 1 string to match.
  34494. return Intrinsic::hexagon_M4_mpyri_addr; // "__builtin_HEXAGON_M4_mpyri_addr"
  34495. }
  34496. break;
  34497. case 'r': // 2 strings to match.
  34498. if (memcmp(BuiltinName.data()+26, "_add", 4))
  34499. break;
  34500. switch (BuiltinName[30]) {
  34501. default: break;
  34502. case 'i': // 1 string to match.
  34503. return Intrinsic::hexagon_M4_mpyrr_addi; // "__builtin_HEXAGON_M4_mpyrr_addi"
  34504. case 'r': // 1 string to match.
  34505. return Intrinsic::hexagon_M4_mpyrr_addr; // "__builtin_HEXAGON_M4_mpyrr_addr"
  34506. }
  34507. break;
  34508. }
  34509. break;
  34510. case 'v': // 5 strings to match.
  34511. switch (BuiltinName[22]) {
  34512. default: break;
  34513. case 'p': // 1 string to match.
  34514. if (memcmp(BuiltinName.data()+23, "mpyh_acc", 8))
  34515. break;
  34516. return Intrinsic::hexagon_M4_vpmpyh_acc; // "__builtin_HEXAGON_M4_vpmpyh_acc"
  34517. case 'r': // 4 strings to match.
  34518. if (memcmp(BuiltinName.data()+23, "mpy", 3))
  34519. break;
  34520. switch (BuiltinName[26]) {
  34521. default: break;
  34522. case 'e': // 2 strings to match.
  34523. if (memcmp(BuiltinName.data()+27, "h_s", 3))
  34524. break;
  34525. switch (BuiltinName[30]) {
  34526. default: break;
  34527. case '0': // 1 string to match.
  34528. return Intrinsic::hexagon_M4_vrmpyeh_s0; // "__builtin_HEXAGON_M4_vrmpyeh_s0"
  34529. case '1': // 1 string to match.
  34530. return Intrinsic::hexagon_M4_vrmpyeh_s1; // "__builtin_HEXAGON_M4_vrmpyeh_s1"
  34531. }
  34532. break;
  34533. case 'o': // 2 strings to match.
  34534. if (memcmp(BuiltinName.data()+27, "h_s", 3))
  34535. break;
  34536. switch (BuiltinName[30]) {
  34537. default: break;
  34538. case '0': // 1 string to match.
  34539. return Intrinsic::hexagon_M4_vrmpyoh_s0; // "__builtin_HEXAGON_M4_vrmpyoh_s0"
  34540. case '1': // 1 string to match.
  34541. return Intrinsic::hexagon_M4_vrmpyoh_s1; // "__builtin_HEXAGON_M4_vrmpyoh_s1"
  34542. }
  34543. break;
  34544. }
  34545. break;
  34546. }
  34547. break;
  34548. }
  34549. break;
  34550. }
  34551. break;
  34552. case 'S': // 23 strings to match.
  34553. switch (BuiltinName[19]) {
  34554. default: break;
  34555. case '2': // 17 strings to match.
  34556. if (BuiltinName[20] != '_')
  34557. break;
  34558. switch (BuiltinName[21]) {
  34559. default: break;
  34560. case 'a': // 8 strings to match.
  34561. if (BuiltinName[22] != 's')
  34562. break;
  34563. switch (BuiltinName[23]) {
  34564. default: break;
  34565. case 'l': // 4 strings to match.
  34566. if (BuiltinName[24] != '_')
  34567. break;
  34568. switch (BuiltinName[25]) {
  34569. default: break;
  34570. case 'i': // 2 strings to match.
  34571. if (BuiltinName[26] != '_')
  34572. break;
  34573. switch (BuiltinName[27]) {
  34574. default: break;
  34575. case 'p': // 1 string to match.
  34576. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34577. break;
  34578. return Intrinsic::hexagon_S2_asl_i_p_or; // "__builtin_HEXAGON_S2_asl_i_p_or"
  34579. case 'r': // 1 string to match.
  34580. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34581. break;
  34582. return Intrinsic::hexagon_S2_asl_i_r_or; // "__builtin_HEXAGON_S2_asl_i_r_or"
  34583. }
  34584. break;
  34585. case 'r': // 2 strings to match.
  34586. if (BuiltinName[26] != '_')
  34587. break;
  34588. switch (BuiltinName[27]) {
  34589. default: break;
  34590. case 'p': // 1 string to match.
  34591. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34592. break;
  34593. return Intrinsic::hexagon_S2_asl_r_p_or; // "__builtin_HEXAGON_S2_asl_r_p_or"
  34594. case 'r': // 1 string to match.
  34595. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34596. break;
  34597. return Intrinsic::hexagon_S2_asl_r_r_or; // "__builtin_HEXAGON_S2_asl_r_r_or"
  34598. }
  34599. break;
  34600. }
  34601. break;
  34602. case 'r': // 4 strings to match.
  34603. if (BuiltinName[24] != '_')
  34604. break;
  34605. switch (BuiltinName[25]) {
  34606. default: break;
  34607. case 'i': // 2 strings to match.
  34608. if (BuiltinName[26] != '_')
  34609. break;
  34610. switch (BuiltinName[27]) {
  34611. default: break;
  34612. case 'p': // 1 string to match.
  34613. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34614. break;
  34615. return Intrinsic::hexagon_S2_asr_i_p_or; // "__builtin_HEXAGON_S2_asr_i_p_or"
  34616. case 'r': // 1 string to match.
  34617. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34618. break;
  34619. return Intrinsic::hexagon_S2_asr_i_r_or; // "__builtin_HEXAGON_S2_asr_i_r_or"
  34620. }
  34621. break;
  34622. case 'r': // 2 strings to match.
  34623. if (BuiltinName[26] != '_')
  34624. break;
  34625. switch (BuiltinName[27]) {
  34626. default: break;
  34627. case 'p': // 1 string to match.
  34628. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34629. break;
  34630. return Intrinsic::hexagon_S2_asr_r_p_or; // "__builtin_HEXAGON_S2_asr_r_p_or"
  34631. case 'r': // 1 string to match.
  34632. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34633. break;
  34634. return Intrinsic::hexagon_S2_asr_r_r_or; // "__builtin_HEXAGON_S2_asr_r_r_or"
  34635. }
  34636. break;
  34637. }
  34638. break;
  34639. }
  34640. break;
  34641. case 'i': // 2 strings to match.
  34642. if (BuiltinName[22] != 'n')
  34643. break;
  34644. switch (BuiltinName[23]) {
  34645. default: break;
  34646. case 's': // 1 string to match.
  34647. if (memcmp(BuiltinName.data()+24, "ertp_rp", 7))
  34648. break;
  34649. return Intrinsic::hexagon_S2_insertp_rp; // "__builtin_HEXAGON_S2_insertp_rp"
  34650. case 't': // 1 string to match.
  34651. if (memcmp(BuiltinName.data()+24, "erleave", 7))
  34652. break;
  34653. return Intrinsic::hexagon_S2_interleave; // "__builtin_HEXAGON_S2_interleave"
  34654. }
  34655. break;
  34656. case 'l': // 6 strings to match.
  34657. if (BuiltinName[22] != 's')
  34658. break;
  34659. switch (BuiltinName[23]) {
  34660. default: break;
  34661. case 'l': // 2 strings to match.
  34662. if (memcmp(BuiltinName.data()+24, "_r_", 3))
  34663. break;
  34664. switch (BuiltinName[27]) {
  34665. default: break;
  34666. case 'p': // 1 string to match.
  34667. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34668. break;
  34669. return Intrinsic::hexagon_S2_lsl_r_p_or; // "__builtin_HEXAGON_S2_lsl_r_p_or"
  34670. case 'r': // 1 string to match.
  34671. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34672. break;
  34673. return Intrinsic::hexagon_S2_lsl_r_r_or; // "__builtin_HEXAGON_S2_lsl_r_r_or"
  34674. }
  34675. break;
  34676. case 'r': // 4 strings to match.
  34677. if (BuiltinName[24] != '_')
  34678. break;
  34679. switch (BuiltinName[25]) {
  34680. default: break;
  34681. case 'i': // 2 strings to match.
  34682. if (BuiltinName[26] != '_')
  34683. break;
  34684. switch (BuiltinName[27]) {
  34685. default: break;
  34686. case 'p': // 1 string to match.
  34687. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34688. break;
  34689. return Intrinsic::hexagon_S2_lsr_i_p_or; // "__builtin_HEXAGON_S2_lsr_i_p_or"
  34690. case 'r': // 1 string to match.
  34691. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34692. break;
  34693. return Intrinsic::hexagon_S2_lsr_i_r_or; // "__builtin_HEXAGON_S2_lsr_i_r_or"
  34694. }
  34695. break;
  34696. case 'r': // 2 strings to match.
  34697. if (BuiltinName[26] != '_')
  34698. break;
  34699. switch (BuiltinName[27]) {
  34700. default: break;
  34701. case 'p': // 1 string to match.
  34702. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34703. break;
  34704. return Intrinsic::hexagon_S2_lsr_r_p_or; // "__builtin_HEXAGON_S2_lsr_r_p_or"
  34705. case 'r': // 1 string to match.
  34706. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34707. break;
  34708. return Intrinsic::hexagon_S2_lsr_r_r_or; // "__builtin_HEXAGON_S2_lsr_r_r_or"
  34709. }
  34710. break;
  34711. }
  34712. break;
  34713. }
  34714. break;
  34715. case 'v': // 1 string to match.
  34716. if (memcmp(BuiltinName.data()+22, "rndpackwh", 9))
  34717. break;
  34718. return Intrinsic::hexagon_S2_vrndpackwh; // "__builtin_HEXAGON_S2_vrndpackwh"
  34719. }
  34720. break;
  34721. case '4': // 5 strings to match.
  34722. if (BuiltinName[20] != '_')
  34723. break;
  34724. switch (BuiltinName[21]) {
  34725. default: break;
  34726. case 'e': // 1 string to match.
  34727. if (memcmp(BuiltinName.data()+22, "xtract_rp", 9))
  34728. break;
  34729. return Intrinsic::hexagon_S4_extract_rp; // "__builtin_HEXAGON_S4_extract_rp"
  34730. case 'o': // 2 strings to match.
  34731. if (memcmp(BuiltinName.data()+22, "ri_", 3))
  34732. break;
  34733. switch (BuiltinName[25]) {
  34734. default: break;
  34735. case 'a': // 1 string to match.
  34736. if (memcmp(BuiltinName.data()+26, "sl_ri", 5))
  34737. break;
  34738. return Intrinsic::hexagon_S4_ori_asl_ri; // "__builtin_HEXAGON_S4_ori_asl_ri"
  34739. case 'l': // 1 string to match.
  34740. if (memcmp(BuiltinName.data()+26, "sr_ri", 5))
  34741. break;
  34742. return Intrinsic::hexagon_S4_ori_lsr_ri; // "__builtin_HEXAGON_S4_ori_lsr_ri"
  34743. }
  34744. break;
  34745. case 'v': // 2 strings to match.
  34746. if (BuiltinName[22] != 'x')
  34747. break;
  34748. switch (BuiltinName[23]) {
  34749. default: break;
  34750. case 'a': // 1 string to match.
  34751. if (memcmp(BuiltinName.data()+24, "ddsubhr", 7))
  34752. break;
  34753. return Intrinsic::hexagon_S4_vxaddsubhr; // "__builtin_HEXAGON_S4_vxaddsubhr"
  34754. case 's': // 1 string to match.
  34755. if (memcmp(BuiltinName.data()+24, "ubaddhr", 7))
  34756. break;
  34757. return Intrinsic::hexagon_S4_vxsubaddhr; // "__builtin_HEXAGON_S4_vxsubaddhr"
  34758. }
  34759. break;
  34760. }
  34761. break;
  34762. case '5': // 1 string to match.
  34763. if (memcmp(BuiltinName.data()+20, "_asrhub_sat", 11))
  34764. break;
  34765. return Intrinsic::hexagon_S5_asrhub_sat; // "__builtin_HEXAGON_S5_asrhub_sat"
  34766. }
  34767. break;
  34768. }
  34769. break;
  34770. case 32: // 96 strings to match.
  34771. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  34772. break;
  34773. switch (BuiltinName[18]) {
  34774. default: break;
  34775. case 'A': // 16 strings to match.
  34776. switch (BuiltinName[19]) {
  34777. default: break;
  34778. case '2': // 14 strings to match.
  34779. if (BuiltinName[20] != '_')
  34780. break;
  34781. switch (BuiltinName[21]) {
  34782. default: break;
  34783. case 'a': // 6 strings to match.
  34784. if (memcmp(BuiltinName.data()+22, "ddh_", 4))
  34785. break;
  34786. switch (BuiltinName[26]) {
  34787. default: break;
  34788. case 'h': // 4 strings to match.
  34789. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34790. break;
  34791. switch (BuiltinName[30]) {
  34792. default: break;
  34793. case 'h': // 2 strings to match.
  34794. switch (BuiltinName[31]) {
  34795. default: break;
  34796. case 'h': // 1 string to match.
  34797. return Intrinsic::hexagon_A2_addh_h16_hh; // "__builtin_HEXAGON_A2_addh_h16_hh"
  34798. case 'l': // 1 string to match.
  34799. return Intrinsic::hexagon_A2_addh_h16_hl; // "__builtin_HEXAGON_A2_addh_h16_hl"
  34800. }
  34801. break;
  34802. case 'l': // 2 strings to match.
  34803. switch (BuiltinName[31]) {
  34804. default: break;
  34805. case 'h': // 1 string to match.
  34806. return Intrinsic::hexagon_A2_addh_h16_lh; // "__builtin_HEXAGON_A2_addh_h16_lh"
  34807. case 'l': // 1 string to match.
  34808. return Intrinsic::hexagon_A2_addh_h16_ll; // "__builtin_HEXAGON_A2_addh_h16_ll"
  34809. }
  34810. break;
  34811. }
  34812. break;
  34813. case 'l': // 2 strings to match.
  34814. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34815. break;
  34816. switch (BuiltinName[30]) {
  34817. default: break;
  34818. case 'h': // 1 string to match.
  34819. if (BuiltinName[31] != 'l')
  34820. break;
  34821. return Intrinsic::hexagon_A2_addh_l16_hl; // "__builtin_HEXAGON_A2_addh_l16_hl"
  34822. case 'l': // 1 string to match.
  34823. if (BuiltinName[31] != 'l')
  34824. break;
  34825. return Intrinsic::hexagon_A2_addh_l16_ll; // "__builtin_HEXAGON_A2_addh_l16_ll"
  34826. }
  34827. break;
  34828. }
  34829. break;
  34830. case 's': // 6 strings to match.
  34831. if (memcmp(BuiltinName.data()+22, "ubh_", 4))
  34832. break;
  34833. switch (BuiltinName[26]) {
  34834. default: break;
  34835. case 'h': // 4 strings to match.
  34836. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34837. break;
  34838. switch (BuiltinName[30]) {
  34839. default: break;
  34840. case 'h': // 2 strings to match.
  34841. switch (BuiltinName[31]) {
  34842. default: break;
  34843. case 'h': // 1 string to match.
  34844. return Intrinsic::hexagon_A2_subh_h16_hh; // "__builtin_HEXAGON_A2_subh_h16_hh"
  34845. case 'l': // 1 string to match.
  34846. return Intrinsic::hexagon_A2_subh_h16_hl; // "__builtin_HEXAGON_A2_subh_h16_hl"
  34847. }
  34848. break;
  34849. case 'l': // 2 strings to match.
  34850. switch (BuiltinName[31]) {
  34851. default: break;
  34852. case 'h': // 1 string to match.
  34853. return Intrinsic::hexagon_A2_subh_h16_lh; // "__builtin_HEXAGON_A2_subh_h16_lh"
  34854. case 'l': // 1 string to match.
  34855. return Intrinsic::hexagon_A2_subh_h16_ll; // "__builtin_HEXAGON_A2_subh_h16_ll"
  34856. }
  34857. break;
  34858. }
  34859. break;
  34860. case 'l': // 2 strings to match.
  34861. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34862. break;
  34863. switch (BuiltinName[30]) {
  34864. default: break;
  34865. case 'h': // 1 string to match.
  34866. if (BuiltinName[31] != 'l')
  34867. break;
  34868. return Intrinsic::hexagon_A2_subh_l16_hl; // "__builtin_HEXAGON_A2_subh_l16_hl"
  34869. case 'l': // 1 string to match.
  34870. if (BuiltinName[31] != 'l')
  34871. break;
  34872. return Intrinsic::hexagon_A2_subh_l16_ll; // "__builtin_HEXAGON_A2_subh_l16_ll"
  34873. }
  34874. break;
  34875. }
  34876. break;
  34877. case 'v': // 2 strings to match.
  34878. if (BuiltinName[22] != 'r')
  34879. break;
  34880. switch (BuiltinName[23]) {
  34881. default: break;
  34882. case 'a': // 1 string to match.
  34883. if (memcmp(BuiltinName.data()+24, "ddub_acc", 8))
  34884. break;
  34885. return Intrinsic::hexagon_A2_vraddub_acc; // "__builtin_HEXAGON_A2_vraddub_acc"
  34886. case 's': // 1 string to match.
  34887. if (memcmp(BuiltinName.data()+24, "adub_acc", 8))
  34888. break;
  34889. return Intrinsic::hexagon_A2_vrsadub_acc; // "__builtin_HEXAGON_A2_vrsadub_acc"
  34890. }
  34891. break;
  34892. }
  34893. break;
  34894. case '4': // 2 strings to match.
  34895. if (BuiltinName[20] != '_')
  34896. break;
  34897. switch (BuiltinName[21]) {
  34898. default: break;
  34899. case 'b': // 1 string to match.
  34900. if (memcmp(BuiltinName.data()+22, "oundscheck", 10))
  34901. break;
  34902. return Intrinsic::hexagon_A4_boundscheck; // "__builtin_HEXAGON_A4_boundscheck"
  34903. case 'v': // 1 string to match.
  34904. if (memcmp(BuiltinName.data()+22, "cmpbeq_any", 10))
  34905. break;
  34906. return Intrinsic::hexagon_A4_vcmpbeq_any; // "__builtin_HEXAGON_A4_vcmpbeq_any"
  34907. }
  34908. break;
  34909. }
  34910. break;
  34911. case 'C': // 1 string to match.
  34912. if (memcmp(BuiltinName.data()+19, "4_fastcorner9", 13))
  34913. break;
  34914. return Intrinsic::hexagon_C4_fastcorner9; // "__builtin_HEXAGON_C4_fastcorner9"
  34915. case 'M': // 16 strings to match.
  34916. if (memcmp(BuiltinName.data()+19, "2_", 2))
  34917. break;
  34918. switch (BuiltinName[21]) {
  34919. default: break;
  34920. case 'm': // 12 strings to match.
  34921. switch (BuiltinName[22]) {
  34922. default: break;
  34923. case 'm': // 4 strings to match.
  34924. if (memcmp(BuiltinName.data()+23, "acu", 3))
  34925. break;
  34926. switch (BuiltinName[26]) {
  34927. default: break;
  34928. case 'h': // 2 strings to match.
  34929. if (memcmp(BuiltinName.data()+27, "s_rs", 4))
  34930. break;
  34931. switch (BuiltinName[31]) {
  34932. default: break;
  34933. case '0': // 1 string to match.
  34934. return Intrinsic::hexagon_M2_mmacuhs_rs0; // "__builtin_HEXAGON_M2_mmacuhs_rs0"
  34935. case '1': // 1 string to match.
  34936. return Intrinsic::hexagon_M2_mmacuhs_rs1; // "__builtin_HEXAGON_M2_mmacuhs_rs1"
  34937. }
  34938. break;
  34939. case 'l': // 2 strings to match.
  34940. if (memcmp(BuiltinName.data()+27, "s_rs", 4))
  34941. break;
  34942. switch (BuiltinName[31]) {
  34943. default: break;
  34944. case '0': // 1 string to match.
  34945. return Intrinsic::hexagon_M2_mmaculs_rs0; // "__builtin_HEXAGON_M2_mmaculs_rs0"
  34946. case '1': // 1 string to match.
  34947. return Intrinsic::hexagon_M2_mmaculs_rs1; // "__builtin_HEXAGON_M2_mmaculs_rs1"
  34948. }
  34949. break;
  34950. }
  34951. break;
  34952. case 'p': // 8 strings to match.
  34953. if (memcmp(BuiltinName.data()+23, "yud_", 4))
  34954. break;
  34955. switch (BuiltinName[27]) {
  34956. default: break;
  34957. case 'h': // 4 strings to match.
  34958. switch (BuiltinName[28]) {
  34959. default: break;
  34960. case 'h': // 2 strings to match.
  34961. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34962. break;
  34963. switch (BuiltinName[31]) {
  34964. default: break;
  34965. case '0': // 1 string to match.
  34966. return Intrinsic::hexagon_M2_mpyud_hh_s0; // "__builtin_HEXAGON_M2_mpyud_hh_s0"
  34967. case '1': // 1 string to match.
  34968. return Intrinsic::hexagon_M2_mpyud_hh_s1; // "__builtin_HEXAGON_M2_mpyud_hh_s1"
  34969. }
  34970. break;
  34971. case 'l': // 2 strings to match.
  34972. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34973. break;
  34974. switch (BuiltinName[31]) {
  34975. default: break;
  34976. case '0': // 1 string to match.
  34977. return Intrinsic::hexagon_M2_mpyud_hl_s0; // "__builtin_HEXAGON_M2_mpyud_hl_s0"
  34978. case '1': // 1 string to match.
  34979. return Intrinsic::hexagon_M2_mpyud_hl_s1; // "__builtin_HEXAGON_M2_mpyud_hl_s1"
  34980. }
  34981. break;
  34982. }
  34983. break;
  34984. case 'l': // 4 strings to match.
  34985. switch (BuiltinName[28]) {
  34986. default: break;
  34987. case 'h': // 2 strings to match.
  34988. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34989. break;
  34990. switch (BuiltinName[31]) {
  34991. default: break;
  34992. case '0': // 1 string to match.
  34993. return Intrinsic::hexagon_M2_mpyud_lh_s0; // "__builtin_HEXAGON_M2_mpyud_lh_s0"
  34994. case '1': // 1 string to match.
  34995. return Intrinsic::hexagon_M2_mpyud_lh_s1; // "__builtin_HEXAGON_M2_mpyud_lh_s1"
  34996. }
  34997. break;
  34998. case 'l': // 2 strings to match.
  34999. if (memcmp(BuiltinName.data()+29, "_s", 2))
  35000. break;
  35001. switch (BuiltinName[31]) {
  35002. default: break;
  35003. case '0': // 1 string to match.
  35004. return Intrinsic::hexagon_M2_mpyud_ll_s0; // "__builtin_HEXAGON_M2_mpyud_ll_s0"
  35005. case '1': // 1 string to match.
  35006. return Intrinsic::hexagon_M2_mpyud_ll_s1; // "__builtin_HEXAGON_M2_mpyud_ll_s1"
  35007. }
  35008. break;
  35009. }
  35010. break;
  35011. }
  35012. break;
  35013. }
  35014. break;
  35015. case 'v': // 4 strings to match.
  35016. if (memcmp(BuiltinName.data()+22, "rcm", 3))
  35017. break;
  35018. switch (BuiltinName[25]) {
  35019. default: break;
  35020. case 'a': // 2 strings to match.
  35021. if (BuiltinName[26] != 'c')
  35022. break;
  35023. switch (BuiltinName[27]) {
  35024. default: break;
  35025. case 'i': // 1 string to match.
  35026. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  35027. break;
  35028. return Intrinsic::hexagon_M2_vrcmaci_s0c; // "__builtin_HEXAGON_M2_vrcmaci_s0c"
  35029. case 'r': // 1 string to match.
  35030. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  35031. break;
  35032. return Intrinsic::hexagon_M2_vrcmacr_s0c; // "__builtin_HEXAGON_M2_vrcmacr_s0c"
  35033. }
  35034. break;
  35035. case 'p': // 2 strings to match.
  35036. if (BuiltinName[26] != 'y')
  35037. break;
  35038. switch (BuiltinName[27]) {
  35039. default: break;
  35040. case 'i': // 1 string to match.
  35041. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  35042. break;
  35043. return Intrinsic::hexagon_M2_vrcmpyi_s0c; // "__builtin_HEXAGON_M2_vrcmpyi_s0c"
  35044. case 'r': // 1 string to match.
  35045. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  35046. break;
  35047. return Intrinsic::hexagon_M2_vrcmpyr_s0c; // "__builtin_HEXAGON_M2_vrcmpyr_s0c"
  35048. }
  35049. break;
  35050. }
  35051. break;
  35052. }
  35053. break;
  35054. case 'S': // 63 strings to match.
  35055. switch (BuiltinName[19]) {
  35056. default: break;
  35057. case '2': // 56 strings to match.
  35058. if (BuiltinName[20] != '_')
  35059. break;
  35060. switch (BuiltinName[21]) {
  35061. default: break;
  35062. case 'a': // 32 strings to match.
  35063. switch (BuiltinName[22]) {
  35064. default: break;
  35065. case 'd': // 1 string to match.
  35066. if (memcmp(BuiltinName.data()+23, "dasl_rrri", 9))
  35067. break;
  35068. return Intrinsic::hexagon_S2_addasl_rrri; // "__builtin_HEXAGON_S2_addasl_rrri"
  35069. case 's': // 31 strings to match.
  35070. switch (BuiltinName[23]) {
  35071. default: break;
  35072. case 'l': // 15 strings to match.
  35073. if (BuiltinName[24] != '_')
  35074. break;
  35075. switch (BuiltinName[25]) {
  35076. default: break;
  35077. case 'i': // 7 strings to match.
  35078. if (BuiltinName[26] != '_')
  35079. break;
  35080. switch (BuiltinName[27]) {
  35081. default: break;
  35082. case 'p': // 3 strings to match.
  35083. if (BuiltinName[28] != '_')
  35084. break;
  35085. switch (BuiltinName[29]) {
  35086. default: break;
  35087. case 'a': // 2 strings to match.
  35088. switch (BuiltinName[30]) {
  35089. default: break;
  35090. case 'c': // 1 string to match.
  35091. if (BuiltinName[31] != 'c')
  35092. break;
  35093. return Intrinsic::hexagon_S2_asl_i_p_acc; // "__builtin_HEXAGON_S2_asl_i_p_acc"
  35094. case 'n': // 1 string to match.
  35095. if (BuiltinName[31] != 'd')
  35096. break;
  35097. return Intrinsic::hexagon_S2_asl_i_p_and; // "__builtin_HEXAGON_S2_asl_i_p_and"
  35098. }
  35099. break;
  35100. case 'n': // 1 string to match.
  35101. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35102. break;
  35103. return Intrinsic::hexagon_S2_asl_i_p_nac; // "__builtin_HEXAGON_S2_asl_i_p_nac"
  35104. }
  35105. break;
  35106. case 'r': // 4 strings to match.
  35107. if (BuiltinName[28] != '_')
  35108. break;
  35109. switch (BuiltinName[29]) {
  35110. default: break;
  35111. case 'a': // 2 strings to match.
  35112. switch (BuiltinName[30]) {
  35113. default: break;
  35114. case 'c': // 1 string to match.
  35115. if (BuiltinName[31] != 'c')
  35116. break;
  35117. return Intrinsic::hexagon_S2_asl_i_r_acc; // "__builtin_HEXAGON_S2_asl_i_r_acc"
  35118. case 'n': // 1 string to match.
  35119. if (BuiltinName[31] != 'd')
  35120. break;
  35121. return Intrinsic::hexagon_S2_asl_i_r_and; // "__builtin_HEXAGON_S2_asl_i_r_and"
  35122. }
  35123. break;
  35124. case 'n': // 1 string to match.
  35125. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35126. break;
  35127. return Intrinsic::hexagon_S2_asl_i_r_nac; // "__builtin_HEXAGON_S2_asl_i_r_nac"
  35128. case 's': // 1 string to match.
  35129. if (memcmp(BuiltinName.data()+30, "at", 2))
  35130. break;
  35131. return Intrinsic::hexagon_S2_asl_i_r_sat; // "__builtin_HEXAGON_S2_asl_i_r_sat"
  35132. }
  35133. break;
  35134. }
  35135. break;
  35136. case 'r': // 8 strings to match.
  35137. if (BuiltinName[26] != '_')
  35138. break;
  35139. switch (BuiltinName[27]) {
  35140. default: break;
  35141. case 'p': // 4 strings to match.
  35142. if (BuiltinName[28] != '_')
  35143. break;
  35144. switch (BuiltinName[29]) {
  35145. default: break;
  35146. case 'a': // 2 strings to match.
  35147. switch (BuiltinName[30]) {
  35148. default: break;
  35149. case 'c': // 1 string to match.
  35150. if (BuiltinName[31] != 'c')
  35151. break;
  35152. return Intrinsic::hexagon_S2_asl_r_p_acc; // "__builtin_HEXAGON_S2_asl_r_p_acc"
  35153. case 'n': // 1 string to match.
  35154. if (BuiltinName[31] != 'd')
  35155. break;
  35156. return Intrinsic::hexagon_S2_asl_r_p_and; // "__builtin_HEXAGON_S2_asl_r_p_and"
  35157. }
  35158. break;
  35159. case 'n': // 1 string to match.
  35160. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35161. break;
  35162. return Intrinsic::hexagon_S2_asl_r_p_nac; // "__builtin_HEXAGON_S2_asl_r_p_nac"
  35163. case 'x': // 1 string to match.
  35164. if (memcmp(BuiltinName.data()+30, "or", 2))
  35165. break;
  35166. return Intrinsic::hexagon_S2_asl_r_p_xor; // "__builtin_HEXAGON_S2_asl_r_p_xor"
  35167. }
  35168. break;
  35169. case 'r': // 4 strings to match.
  35170. if (BuiltinName[28] != '_')
  35171. break;
  35172. switch (BuiltinName[29]) {
  35173. default: break;
  35174. case 'a': // 2 strings to match.
  35175. switch (BuiltinName[30]) {
  35176. default: break;
  35177. case 'c': // 1 string to match.
  35178. if (BuiltinName[31] != 'c')
  35179. break;
  35180. return Intrinsic::hexagon_S2_asl_r_r_acc; // "__builtin_HEXAGON_S2_asl_r_r_acc"
  35181. case 'n': // 1 string to match.
  35182. if (BuiltinName[31] != 'd')
  35183. break;
  35184. return Intrinsic::hexagon_S2_asl_r_r_and; // "__builtin_HEXAGON_S2_asl_r_r_and"
  35185. }
  35186. break;
  35187. case 'n': // 1 string to match.
  35188. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35189. break;
  35190. return Intrinsic::hexagon_S2_asl_r_r_nac; // "__builtin_HEXAGON_S2_asl_r_r_nac"
  35191. case 's': // 1 string to match.
  35192. if (memcmp(BuiltinName.data()+30, "at", 2))
  35193. break;
  35194. return Intrinsic::hexagon_S2_asl_r_r_sat; // "__builtin_HEXAGON_S2_asl_r_r_sat"
  35195. }
  35196. break;
  35197. }
  35198. break;
  35199. }
  35200. break;
  35201. case 'r': // 16 strings to match.
  35202. if (BuiltinName[24] != '_')
  35203. break;
  35204. switch (BuiltinName[25]) {
  35205. default: break;
  35206. case 'i': // 8 strings to match.
  35207. if (BuiltinName[26] != '_')
  35208. break;
  35209. switch (BuiltinName[27]) {
  35210. default: break;
  35211. case 'p': // 4 strings to match.
  35212. if (BuiltinName[28] != '_')
  35213. break;
  35214. switch (BuiltinName[29]) {
  35215. default: break;
  35216. case 'a': // 2 strings to match.
  35217. switch (BuiltinName[30]) {
  35218. default: break;
  35219. case 'c': // 1 string to match.
  35220. if (BuiltinName[31] != 'c')
  35221. break;
  35222. return Intrinsic::hexagon_S2_asr_i_p_acc; // "__builtin_HEXAGON_S2_asr_i_p_acc"
  35223. case 'n': // 1 string to match.
  35224. if (BuiltinName[31] != 'd')
  35225. break;
  35226. return Intrinsic::hexagon_S2_asr_i_p_and; // "__builtin_HEXAGON_S2_asr_i_p_and"
  35227. }
  35228. break;
  35229. case 'n': // 1 string to match.
  35230. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35231. break;
  35232. return Intrinsic::hexagon_S2_asr_i_p_nac; // "__builtin_HEXAGON_S2_asr_i_p_nac"
  35233. case 'r': // 1 string to match.
  35234. if (memcmp(BuiltinName.data()+30, "nd", 2))
  35235. break;
  35236. return Intrinsic::hexagon_S2_asr_i_p_rnd; // "__builtin_HEXAGON_S2_asr_i_p_rnd"
  35237. }
  35238. break;
  35239. case 'r': // 4 strings to match.
  35240. if (BuiltinName[28] != '_')
  35241. break;
  35242. switch (BuiltinName[29]) {
  35243. default: break;
  35244. case 'a': // 2 strings to match.
  35245. switch (BuiltinName[30]) {
  35246. default: break;
  35247. case 'c': // 1 string to match.
  35248. if (BuiltinName[31] != 'c')
  35249. break;
  35250. return Intrinsic::hexagon_S2_asr_i_r_acc; // "__builtin_HEXAGON_S2_asr_i_r_acc"
  35251. case 'n': // 1 string to match.
  35252. if (BuiltinName[31] != 'd')
  35253. break;
  35254. return Intrinsic::hexagon_S2_asr_i_r_and; // "__builtin_HEXAGON_S2_asr_i_r_and"
  35255. }
  35256. break;
  35257. case 'n': // 1 string to match.
  35258. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35259. break;
  35260. return Intrinsic::hexagon_S2_asr_i_r_nac; // "__builtin_HEXAGON_S2_asr_i_r_nac"
  35261. case 'r': // 1 string to match.
  35262. if (memcmp(BuiltinName.data()+30, "nd", 2))
  35263. break;
  35264. return Intrinsic::hexagon_S2_asr_i_r_rnd; // "__builtin_HEXAGON_S2_asr_i_r_rnd"
  35265. }
  35266. break;
  35267. }
  35268. break;
  35269. case 'r': // 8 strings to match.
  35270. if (BuiltinName[26] != '_')
  35271. break;
  35272. switch (BuiltinName[27]) {
  35273. default: break;
  35274. case 'p': // 4 strings to match.
  35275. if (BuiltinName[28] != '_')
  35276. break;
  35277. switch (BuiltinName[29]) {
  35278. default: break;
  35279. case 'a': // 2 strings to match.
  35280. switch (BuiltinName[30]) {
  35281. default: break;
  35282. case 'c': // 1 string to match.
  35283. if (BuiltinName[31] != 'c')
  35284. break;
  35285. return Intrinsic::hexagon_S2_asr_r_p_acc; // "__builtin_HEXAGON_S2_asr_r_p_acc"
  35286. case 'n': // 1 string to match.
  35287. if (BuiltinName[31] != 'd')
  35288. break;
  35289. return Intrinsic::hexagon_S2_asr_r_p_and; // "__builtin_HEXAGON_S2_asr_r_p_and"
  35290. }
  35291. break;
  35292. case 'n': // 1 string to match.
  35293. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35294. break;
  35295. return Intrinsic::hexagon_S2_asr_r_p_nac; // "__builtin_HEXAGON_S2_asr_r_p_nac"
  35296. case 'x': // 1 string to match.
  35297. if (memcmp(BuiltinName.data()+30, "or", 2))
  35298. break;
  35299. return Intrinsic::hexagon_S2_asr_r_p_xor; // "__builtin_HEXAGON_S2_asr_r_p_xor"
  35300. }
  35301. break;
  35302. case 'r': // 4 strings to match.
  35303. if (BuiltinName[28] != '_')
  35304. break;
  35305. switch (BuiltinName[29]) {
  35306. default: break;
  35307. case 'a': // 2 strings to match.
  35308. switch (BuiltinName[30]) {
  35309. default: break;
  35310. case 'c': // 1 string to match.
  35311. if (BuiltinName[31] != 'c')
  35312. break;
  35313. return Intrinsic::hexagon_S2_asr_r_r_acc; // "__builtin_HEXAGON_S2_asr_r_r_acc"
  35314. case 'n': // 1 string to match.
  35315. if (BuiltinName[31] != 'd')
  35316. break;
  35317. return Intrinsic::hexagon_S2_asr_r_r_and; // "__builtin_HEXAGON_S2_asr_r_r_and"
  35318. }
  35319. break;
  35320. case 'n': // 1 string to match.
  35321. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35322. break;
  35323. return Intrinsic::hexagon_S2_asr_r_r_nac; // "__builtin_HEXAGON_S2_asr_r_r_nac"
  35324. case 's': // 1 string to match.
  35325. if (memcmp(BuiltinName.data()+30, "at", 2))
  35326. break;
  35327. return Intrinsic::hexagon_S2_asr_r_r_sat; // "__builtin_HEXAGON_S2_asr_r_r_sat"
  35328. }
  35329. break;
  35330. }
  35331. break;
  35332. }
  35333. break;
  35334. }
  35335. break;
  35336. }
  35337. break;
  35338. case 'e': // 1 string to match.
  35339. if (memcmp(BuiltinName.data()+22, "xtractu_rp", 10))
  35340. break;
  35341. return Intrinsic::hexagon_S2_extractu_rp; // "__builtin_HEXAGON_S2_extractu_rp"
  35342. case 'l': // 20 strings to match.
  35343. if (BuiltinName[22] != 's')
  35344. break;
  35345. switch (BuiltinName[23]) {
  35346. default: break;
  35347. case 'l': // 7 strings to match.
  35348. if (memcmp(BuiltinName.data()+24, "_r_", 3))
  35349. break;
  35350. switch (BuiltinName[27]) {
  35351. default: break;
  35352. case 'p': // 4 strings to match.
  35353. if (BuiltinName[28] != '_')
  35354. break;
  35355. switch (BuiltinName[29]) {
  35356. default: break;
  35357. case 'a': // 2 strings to match.
  35358. switch (BuiltinName[30]) {
  35359. default: break;
  35360. case 'c': // 1 string to match.
  35361. if (BuiltinName[31] != 'c')
  35362. break;
  35363. return Intrinsic::hexagon_S2_lsl_r_p_acc; // "__builtin_HEXAGON_S2_lsl_r_p_acc"
  35364. case 'n': // 1 string to match.
  35365. if (BuiltinName[31] != 'd')
  35366. break;
  35367. return Intrinsic::hexagon_S2_lsl_r_p_and; // "__builtin_HEXAGON_S2_lsl_r_p_and"
  35368. }
  35369. break;
  35370. case 'n': // 1 string to match.
  35371. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35372. break;
  35373. return Intrinsic::hexagon_S2_lsl_r_p_nac; // "__builtin_HEXAGON_S2_lsl_r_p_nac"
  35374. case 'x': // 1 string to match.
  35375. if (memcmp(BuiltinName.data()+30, "or", 2))
  35376. break;
  35377. return Intrinsic::hexagon_S2_lsl_r_p_xor; // "__builtin_HEXAGON_S2_lsl_r_p_xor"
  35378. }
  35379. break;
  35380. case 'r': // 3 strings to match.
  35381. if (BuiltinName[28] != '_')
  35382. break;
  35383. switch (BuiltinName[29]) {
  35384. default: break;
  35385. case 'a': // 2 strings to match.
  35386. switch (BuiltinName[30]) {
  35387. default: break;
  35388. case 'c': // 1 string to match.
  35389. if (BuiltinName[31] != 'c')
  35390. break;
  35391. return Intrinsic::hexagon_S2_lsl_r_r_acc; // "__builtin_HEXAGON_S2_lsl_r_r_acc"
  35392. case 'n': // 1 string to match.
  35393. if (BuiltinName[31] != 'd')
  35394. break;
  35395. return Intrinsic::hexagon_S2_lsl_r_r_and; // "__builtin_HEXAGON_S2_lsl_r_r_and"
  35396. }
  35397. break;
  35398. case 'n': // 1 string to match.
  35399. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35400. break;
  35401. return Intrinsic::hexagon_S2_lsl_r_r_nac; // "__builtin_HEXAGON_S2_lsl_r_r_nac"
  35402. }
  35403. break;
  35404. }
  35405. break;
  35406. case 'r': // 13 strings to match.
  35407. if (BuiltinName[24] != '_')
  35408. break;
  35409. switch (BuiltinName[25]) {
  35410. default: break;
  35411. case 'i': // 6 strings to match.
  35412. if (BuiltinName[26] != '_')
  35413. break;
  35414. switch (BuiltinName[27]) {
  35415. default: break;
  35416. case 'p': // 3 strings to match.
  35417. if (BuiltinName[28] != '_')
  35418. break;
  35419. switch (BuiltinName[29]) {
  35420. default: break;
  35421. case 'a': // 2 strings to match.
  35422. switch (BuiltinName[30]) {
  35423. default: break;
  35424. case 'c': // 1 string to match.
  35425. if (BuiltinName[31] != 'c')
  35426. break;
  35427. return Intrinsic::hexagon_S2_lsr_i_p_acc; // "__builtin_HEXAGON_S2_lsr_i_p_acc"
  35428. case 'n': // 1 string to match.
  35429. if (BuiltinName[31] != 'd')
  35430. break;
  35431. return Intrinsic::hexagon_S2_lsr_i_p_and; // "__builtin_HEXAGON_S2_lsr_i_p_and"
  35432. }
  35433. break;
  35434. case 'n': // 1 string to match.
  35435. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35436. break;
  35437. return Intrinsic::hexagon_S2_lsr_i_p_nac; // "__builtin_HEXAGON_S2_lsr_i_p_nac"
  35438. }
  35439. break;
  35440. case 'r': // 3 strings to match.
  35441. if (BuiltinName[28] != '_')
  35442. break;
  35443. switch (BuiltinName[29]) {
  35444. default: break;
  35445. case 'a': // 2 strings to match.
  35446. switch (BuiltinName[30]) {
  35447. default: break;
  35448. case 'c': // 1 string to match.
  35449. if (BuiltinName[31] != 'c')
  35450. break;
  35451. return Intrinsic::hexagon_S2_lsr_i_r_acc; // "__builtin_HEXAGON_S2_lsr_i_r_acc"
  35452. case 'n': // 1 string to match.
  35453. if (BuiltinName[31] != 'd')
  35454. break;
  35455. return Intrinsic::hexagon_S2_lsr_i_r_and; // "__builtin_HEXAGON_S2_lsr_i_r_and"
  35456. }
  35457. break;
  35458. case 'n': // 1 string to match.
  35459. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35460. break;
  35461. return Intrinsic::hexagon_S2_lsr_i_r_nac; // "__builtin_HEXAGON_S2_lsr_i_r_nac"
  35462. }
  35463. break;
  35464. }
  35465. break;
  35466. case 'r': // 7 strings to match.
  35467. if (BuiltinName[26] != '_')
  35468. break;
  35469. switch (BuiltinName[27]) {
  35470. default: break;
  35471. case 'p': // 4 strings to match.
  35472. if (BuiltinName[28] != '_')
  35473. break;
  35474. switch (BuiltinName[29]) {
  35475. default: break;
  35476. case 'a': // 2 strings to match.
  35477. switch (BuiltinName[30]) {
  35478. default: break;
  35479. case 'c': // 1 string to match.
  35480. if (BuiltinName[31] != 'c')
  35481. break;
  35482. return Intrinsic::hexagon_S2_lsr_r_p_acc; // "__builtin_HEXAGON_S2_lsr_r_p_acc"
  35483. case 'n': // 1 string to match.
  35484. if (BuiltinName[31] != 'd')
  35485. break;
  35486. return Intrinsic::hexagon_S2_lsr_r_p_and; // "__builtin_HEXAGON_S2_lsr_r_p_and"
  35487. }
  35488. break;
  35489. case 'n': // 1 string to match.
  35490. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35491. break;
  35492. return Intrinsic::hexagon_S2_lsr_r_p_nac; // "__builtin_HEXAGON_S2_lsr_r_p_nac"
  35493. case 'x': // 1 string to match.
  35494. if (memcmp(BuiltinName.data()+30, "or", 2))
  35495. break;
  35496. return Intrinsic::hexagon_S2_lsr_r_p_xor; // "__builtin_HEXAGON_S2_lsr_r_p_xor"
  35497. }
  35498. break;
  35499. case 'r': // 3 strings to match.
  35500. if (BuiltinName[28] != '_')
  35501. break;
  35502. switch (BuiltinName[29]) {
  35503. default: break;
  35504. case 'a': // 2 strings to match.
  35505. switch (BuiltinName[30]) {
  35506. default: break;
  35507. case 'c': // 1 string to match.
  35508. if (BuiltinName[31] != 'c')
  35509. break;
  35510. return Intrinsic::hexagon_S2_lsr_r_r_acc; // "__builtin_HEXAGON_S2_lsr_r_r_acc"
  35511. case 'n': // 1 string to match.
  35512. if (BuiltinName[31] != 'd')
  35513. break;
  35514. return Intrinsic::hexagon_S2_lsr_r_r_and; // "__builtin_HEXAGON_S2_lsr_r_r_and"
  35515. }
  35516. break;
  35517. case 'n': // 1 string to match.
  35518. if (memcmp(BuiltinName.data()+30, "ac", 2))
  35519. break;
  35520. return Intrinsic::hexagon_S2_lsr_r_r_nac; // "__builtin_HEXAGON_S2_lsr_r_r_nac"
  35521. }
  35522. break;
  35523. }
  35524. break;
  35525. }
  35526. break;
  35527. }
  35528. break;
  35529. case 't': // 2 strings to match.
  35530. if (memcmp(BuiltinName.data()+22, "ogglebit_", 9))
  35531. break;
  35532. switch (BuiltinName[31]) {
  35533. default: break;
  35534. case 'i': // 1 string to match.
  35535. return Intrinsic::hexagon_S2_togglebit_i; // "__builtin_HEXAGON_S2_togglebit_i"
  35536. case 'r': // 1 string to match.
  35537. return Intrinsic::hexagon_S2_togglebit_r; // "__builtin_HEXAGON_S2_togglebit_r"
  35538. }
  35539. break;
  35540. case 'v': // 1 string to match.
  35541. if (memcmp(BuiltinName.data()+22, "rndpackwhs", 10))
  35542. break;
  35543. return Intrinsic::hexagon_S2_vrndpackwhs; // "__builtin_HEXAGON_S2_vrndpackwhs"
  35544. }
  35545. break;
  35546. case '4': // 7 strings to match.
  35547. if (BuiltinName[20] != '_')
  35548. break;
  35549. switch (BuiltinName[21]) {
  35550. default: break;
  35551. case 'a': // 4 strings to match.
  35552. switch (BuiltinName[22]) {
  35553. default: break;
  35554. case 'd': // 2 strings to match.
  35555. if (memcmp(BuiltinName.data()+23, "di_", 3))
  35556. break;
  35557. switch (BuiltinName[26]) {
  35558. default: break;
  35559. case 'a': // 1 string to match.
  35560. if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
  35561. break;
  35562. return Intrinsic::hexagon_S4_addi_asl_ri; // "__builtin_HEXAGON_S4_addi_asl_ri"
  35563. case 'l': // 1 string to match.
  35564. if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
  35565. break;
  35566. return Intrinsic::hexagon_S4_addi_lsr_ri; // "__builtin_HEXAGON_S4_addi_lsr_ri"
  35567. }
  35568. break;
  35569. case 'n': // 2 strings to match.
  35570. if (memcmp(BuiltinName.data()+23, "di_", 3))
  35571. break;
  35572. switch (BuiltinName[26]) {
  35573. default: break;
  35574. case 'a': // 1 string to match.
  35575. if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
  35576. break;
  35577. return Intrinsic::hexagon_S4_andi_asl_ri; // "__builtin_HEXAGON_S4_andi_asl_ri"
  35578. case 'l': // 1 string to match.
  35579. if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
  35580. break;
  35581. return Intrinsic::hexagon_S4_andi_lsr_ri; // "__builtin_HEXAGON_S4_andi_lsr_ri"
  35582. }
  35583. break;
  35584. }
  35585. break;
  35586. case 'e': // 1 string to match.
  35587. if (memcmp(BuiltinName.data()+22, "xtractp_rp", 10))
  35588. break;
  35589. return Intrinsic::hexagon_S4_extractp_rp; // "__builtin_HEXAGON_S4_extractp_rp"
  35590. case 's': // 2 strings to match.
  35591. if (memcmp(BuiltinName.data()+22, "ubi_", 4))
  35592. break;
  35593. switch (BuiltinName[26]) {
  35594. default: break;
  35595. case 'a': // 1 string to match.
  35596. if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
  35597. break;
  35598. return Intrinsic::hexagon_S4_subi_asl_ri; // "__builtin_HEXAGON_S4_subi_asl_ri"
  35599. case 'l': // 1 string to match.
  35600. if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
  35601. break;
  35602. return Intrinsic::hexagon_S4_subi_lsr_ri; // "__builtin_HEXAGON_S4_subi_lsr_ri"
  35603. }
  35604. break;
  35605. }
  35606. break;
  35607. }
  35608. break;
  35609. }
  35610. break;
  35611. case 33: // 9 strings to match.
  35612. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  35613. break;
  35614. switch (BuiltinName[18]) {
  35615. default: break;
  35616. case 'A': // 2 strings to match.
  35617. if (memcmp(BuiltinName.data()+19, "4_round_r", 9))
  35618. break;
  35619. switch (BuiltinName[28]) {
  35620. default: break;
  35621. case 'i': // 1 string to match.
  35622. if (memcmp(BuiltinName.data()+29, "_sat", 4))
  35623. break;
  35624. return Intrinsic::hexagon_A4_round_ri_sat; // "__builtin_HEXAGON_A4_round_ri_sat"
  35625. case 'r': // 1 string to match.
  35626. if (memcmp(BuiltinName.data()+29, "_sat", 4))
  35627. break;
  35628. return Intrinsic::hexagon_A4_round_rr_sat; // "__builtin_HEXAGON_A4_round_rr_sat"
  35629. }
  35630. break;
  35631. case 'M': // 1 string to match.
  35632. if (memcmp(BuiltinName.data()+19, "2_vrcmpys_s1rp", 14))
  35633. break;
  35634. return Intrinsic::hexagon_M2_vrcmpys_s1rp; // "__builtin_HEXAGON_M2_vrcmpys_s1rp"
  35635. case 'S': // 6 strings to match.
  35636. if (memcmp(BuiltinName.data()+19, "2_", 2))
  35637. break;
  35638. switch (BuiltinName[21]) {
  35639. default: break;
  35640. case 'a': // 2 strings to match.
  35641. if (memcmp(BuiltinName.data()+22, "sl_i_", 5))
  35642. break;
  35643. switch (BuiltinName[27]) {
  35644. default: break;
  35645. case 'p': // 1 string to match.
  35646. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35647. break;
  35648. return Intrinsic::hexagon_S2_asl_i_p_xacc; // "__builtin_HEXAGON_S2_asl_i_p_xacc"
  35649. case 'r': // 1 string to match.
  35650. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35651. break;
  35652. return Intrinsic::hexagon_S2_asl_i_r_xacc; // "__builtin_HEXAGON_S2_asl_i_r_xacc"
  35653. }
  35654. break;
  35655. case 'd': // 1 string to match.
  35656. if (memcmp(BuiltinName.data()+22, "einterleave", 11))
  35657. break;
  35658. return Intrinsic::hexagon_S2_deinterleave; // "__builtin_HEXAGON_S2_deinterleave"
  35659. case 'e': // 1 string to match.
  35660. if (memcmp(BuiltinName.data()+22, "xtractup_rp", 11))
  35661. break;
  35662. return Intrinsic::hexagon_S2_extractup_rp; // "__builtin_HEXAGON_S2_extractup_rp"
  35663. case 'l': // 2 strings to match.
  35664. if (memcmp(BuiltinName.data()+22, "sr_i_", 5))
  35665. break;
  35666. switch (BuiltinName[27]) {
  35667. default: break;
  35668. case 'p': // 1 string to match.
  35669. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35670. break;
  35671. return Intrinsic::hexagon_S2_lsr_i_p_xacc; // "__builtin_HEXAGON_S2_lsr_i_p_xacc"
  35672. case 'r': // 1 string to match.
  35673. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35674. break;
  35675. return Intrinsic::hexagon_S2_lsr_i_r_xacc; // "__builtin_HEXAGON_S2_lsr_i_r_xacc"
  35676. }
  35677. break;
  35678. }
  35679. break;
  35680. }
  35681. break;
  35682. case 34: // 41 strings to match.
  35683. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  35684. break;
  35685. switch (BuiltinName[18]) {
  35686. default: break;
  35687. case 'M': // 38 strings to match.
  35688. switch (BuiltinName[19]) {
  35689. default: break;
  35690. case '2': // 35 strings to match.
  35691. if (BuiltinName[20] != '_')
  35692. break;
  35693. switch (BuiltinName[21]) {
  35694. default: break;
  35695. case 'm': // 33 strings to match.
  35696. if (memcmp(BuiltinName.data()+22, "py_", 3))
  35697. break;
  35698. switch (BuiltinName[25]) {
  35699. default: break;
  35700. case 'a': // 8 strings to match.
  35701. if (memcmp(BuiltinName.data()+26, "cc_", 3))
  35702. break;
  35703. switch (BuiltinName[29]) {
  35704. default: break;
  35705. case 'h': // 4 strings to match.
  35706. switch (BuiltinName[30]) {
  35707. default: break;
  35708. case 'h': // 2 strings to match.
  35709. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35710. break;
  35711. switch (BuiltinName[33]) {
  35712. default: break;
  35713. case '0': // 1 string to match.
  35714. return Intrinsic::hexagon_M2_mpy_acc_hh_s0; // "__builtin_HEXAGON_M2_mpy_acc_hh_s0"
  35715. case '1': // 1 string to match.
  35716. return Intrinsic::hexagon_M2_mpy_acc_hh_s1; // "__builtin_HEXAGON_M2_mpy_acc_hh_s1"
  35717. }
  35718. break;
  35719. case 'l': // 2 strings to match.
  35720. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35721. break;
  35722. switch (BuiltinName[33]) {
  35723. default: break;
  35724. case '0': // 1 string to match.
  35725. return Intrinsic::hexagon_M2_mpy_acc_hl_s0; // "__builtin_HEXAGON_M2_mpy_acc_hl_s0"
  35726. case '1': // 1 string to match.
  35727. return Intrinsic::hexagon_M2_mpy_acc_hl_s1; // "__builtin_HEXAGON_M2_mpy_acc_hl_s1"
  35728. }
  35729. break;
  35730. }
  35731. break;
  35732. case 'l': // 4 strings to match.
  35733. switch (BuiltinName[30]) {
  35734. default: break;
  35735. case 'h': // 2 strings to match.
  35736. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35737. break;
  35738. switch (BuiltinName[33]) {
  35739. default: break;
  35740. case '0': // 1 string to match.
  35741. return Intrinsic::hexagon_M2_mpy_acc_lh_s0; // "__builtin_HEXAGON_M2_mpy_acc_lh_s0"
  35742. case '1': // 1 string to match.
  35743. return Intrinsic::hexagon_M2_mpy_acc_lh_s1; // "__builtin_HEXAGON_M2_mpy_acc_lh_s1"
  35744. }
  35745. break;
  35746. case 'l': // 2 strings to match.
  35747. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35748. break;
  35749. switch (BuiltinName[33]) {
  35750. default: break;
  35751. case '0': // 1 string to match.
  35752. return Intrinsic::hexagon_M2_mpy_acc_ll_s0; // "__builtin_HEXAGON_M2_mpy_acc_ll_s0"
  35753. case '1': // 1 string to match.
  35754. return Intrinsic::hexagon_M2_mpy_acc_ll_s1; // "__builtin_HEXAGON_M2_mpy_acc_ll_s1"
  35755. }
  35756. break;
  35757. }
  35758. break;
  35759. }
  35760. break;
  35761. case 'n': // 8 strings to match.
  35762. if (memcmp(BuiltinName.data()+26, "ac_", 3))
  35763. break;
  35764. switch (BuiltinName[29]) {
  35765. default: break;
  35766. case 'h': // 4 strings to match.
  35767. switch (BuiltinName[30]) {
  35768. default: break;
  35769. case 'h': // 2 strings to match.
  35770. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35771. break;
  35772. switch (BuiltinName[33]) {
  35773. default: break;
  35774. case '0': // 1 string to match.
  35775. return Intrinsic::hexagon_M2_mpy_nac_hh_s0; // "__builtin_HEXAGON_M2_mpy_nac_hh_s0"
  35776. case '1': // 1 string to match.
  35777. return Intrinsic::hexagon_M2_mpy_nac_hh_s1; // "__builtin_HEXAGON_M2_mpy_nac_hh_s1"
  35778. }
  35779. break;
  35780. case 'l': // 2 strings to match.
  35781. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35782. break;
  35783. switch (BuiltinName[33]) {
  35784. default: break;
  35785. case '0': // 1 string to match.
  35786. return Intrinsic::hexagon_M2_mpy_nac_hl_s0; // "__builtin_HEXAGON_M2_mpy_nac_hl_s0"
  35787. case '1': // 1 string to match.
  35788. return Intrinsic::hexagon_M2_mpy_nac_hl_s1; // "__builtin_HEXAGON_M2_mpy_nac_hl_s1"
  35789. }
  35790. break;
  35791. }
  35792. break;
  35793. case 'l': // 4 strings to match.
  35794. switch (BuiltinName[30]) {
  35795. default: break;
  35796. case 'h': // 2 strings to match.
  35797. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35798. break;
  35799. switch (BuiltinName[33]) {
  35800. default: break;
  35801. case '0': // 1 string to match.
  35802. return Intrinsic::hexagon_M2_mpy_nac_lh_s0; // "__builtin_HEXAGON_M2_mpy_nac_lh_s0"
  35803. case '1': // 1 string to match.
  35804. return Intrinsic::hexagon_M2_mpy_nac_lh_s1; // "__builtin_HEXAGON_M2_mpy_nac_lh_s1"
  35805. }
  35806. break;
  35807. case 'l': // 2 strings to match.
  35808. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35809. break;
  35810. switch (BuiltinName[33]) {
  35811. default: break;
  35812. case '0': // 1 string to match.
  35813. return Intrinsic::hexagon_M2_mpy_nac_ll_s0; // "__builtin_HEXAGON_M2_mpy_nac_ll_s0"
  35814. case '1': // 1 string to match.
  35815. return Intrinsic::hexagon_M2_mpy_nac_ll_s1; // "__builtin_HEXAGON_M2_mpy_nac_ll_s1"
  35816. }
  35817. break;
  35818. }
  35819. break;
  35820. }
  35821. break;
  35822. case 'r': // 8 strings to match.
  35823. if (memcmp(BuiltinName.data()+26, "nd_", 3))
  35824. break;
  35825. switch (BuiltinName[29]) {
  35826. default: break;
  35827. case 'h': // 4 strings to match.
  35828. switch (BuiltinName[30]) {
  35829. default: break;
  35830. case 'h': // 2 strings to match.
  35831. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35832. break;
  35833. switch (BuiltinName[33]) {
  35834. default: break;
  35835. case '0': // 1 string to match.
  35836. return Intrinsic::hexagon_M2_mpy_rnd_hh_s0; // "__builtin_HEXAGON_M2_mpy_rnd_hh_s0"
  35837. case '1': // 1 string to match.
  35838. return Intrinsic::hexagon_M2_mpy_rnd_hh_s1; // "__builtin_HEXAGON_M2_mpy_rnd_hh_s1"
  35839. }
  35840. break;
  35841. case 'l': // 2 strings to match.
  35842. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35843. break;
  35844. switch (BuiltinName[33]) {
  35845. default: break;
  35846. case '0': // 1 string to match.
  35847. return Intrinsic::hexagon_M2_mpy_rnd_hl_s0; // "__builtin_HEXAGON_M2_mpy_rnd_hl_s0"
  35848. case '1': // 1 string to match.
  35849. return Intrinsic::hexagon_M2_mpy_rnd_hl_s1; // "__builtin_HEXAGON_M2_mpy_rnd_hl_s1"
  35850. }
  35851. break;
  35852. }
  35853. break;
  35854. case 'l': // 4 strings to match.
  35855. switch (BuiltinName[30]) {
  35856. default: break;
  35857. case 'h': // 2 strings to match.
  35858. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35859. break;
  35860. switch (BuiltinName[33]) {
  35861. default: break;
  35862. case '0': // 1 string to match.
  35863. return Intrinsic::hexagon_M2_mpy_rnd_lh_s0; // "__builtin_HEXAGON_M2_mpy_rnd_lh_s0"
  35864. case '1': // 1 string to match.
  35865. return Intrinsic::hexagon_M2_mpy_rnd_lh_s1; // "__builtin_HEXAGON_M2_mpy_rnd_lh_s1"
  35866. }
  35867. break;
  35868. case 'l': // 2 strings to match.
  35869. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35870. break;
  35871. switch (BuiltinName[33]) {
  35872. default: break;
  35873. case '0': // 1 string to match.
  35874. return Intrinsic::hexagon_M2_mpy_rnd_ll_s0; // "__builtin_HEXAGON_M2_mpy_rnd_ll_s0"
  35875. case '1': // 1 string to match.
  35876. return Intrinsic::hexagon_M2_mpy_rnd_ll_s1; // "__builtin_HEXAGON_M2_mpy_rnd_ll_s1"
  35877. }
  35878. break;
  35879. }
  35880. break;
  35881. }
  35882. break;
  35883. case 's': // 8 strings to match.
  35884. if (memcmp(BuiltinName.data()+26, "at_", 3))
  35885. break;
  35886. switch (BuiltinName[29]) {
  35887. default: break;
  35888. case 'h': // 4 strings to match.
  35889. switch (BuiltinName[30]) {
  35890. default: break;
  35891. case 'h': // 2 strings to match.
  35892. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35893. break;
  35894. switch (BuiltinName[33]) {
  35895. default: break;
  35896. case '0': // 1 string to match.
  35897. return Intrinsic::hexagon_M2_mpy_sat_hh_s0; // "__builtin_HEXAGON_M2_mpy_sat_hh_s0"
  35898. case '1': // 1 string to match.
  35899. return Intrinsic::hexagon_M2_mpy_sat_hh_s1; // "__builtin_HEXAGON_M2_mpy_sat_hh_s1"
  35900. }
  35901. break;
  35902. case 'l': // 2 strings to match.
  35903. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35904. break;
  35905. switch (BuiltinName[33]) {
  35906. default: break;
  35907. case '0': // 1 string to match.
  35908. return Intrinsic::hexagon_M2_mpy_sat_hl_s0; // "__builtin_HEXAGON_M2_mpy_sat_hl_s0"
  35909. case '1': // 1 string to match.
  35910. return Intrinsic::hexagon_M2_mpy_sat_hl_s1; // "__builtin_HEXAGON_M2_mpy_sat_hl_s1"
  35911. }
  35912. break;
  35913. }
  35914. break;
  35915. case 'l': // 4 strings to match.
  35916. switch (BuiltinName[30]) {
  35917. default: break;
  35918. case 'h': // 2 strings to match.
  35919. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35920. break;
  35921. switch (BuiltinName[33]) {
  35922. default: break;
  35923. case '0': // 1 string to match.
  35924. return Intrinsic::hexagon_M2_mpy_sat_lh_s0; // "__builtin_HEXAGON_M2_mpy_sat_lh_s0"
  35925. case '1': // 1 string to match.
  35926. return Intrinsic::hexagon_M2_mpy_sat_lh_s1; // "__builtin_HEXAGON_M2_mpy_sat_lh_s1"
  35927. }
  35928. break;
  35929. case 'l': // 2 strings to match.
  35930. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35931. break;
  35932. switch (BuiltinName[33]) {
  35933. default: break;
  35934. case '0': // 1 string to match.
  35935. return Intrinsic::hexagon_M2_mpy_sat_ll_s0; // "__builtin_HEXAGON_M2_mpy_sat_ll_s0"
  35936. case '1': // 1 string to match.
  35937. return Intrinsic::hexagon_M2_mpy_sat_ll_s1; // "__builtin_HEXAGON_M2_mpy_sat_ll_s1"
  35938. }
  35939. break;
  35940. }
  35941. break;
  35942. }
  35943. break;
  35944. case 'u': // 1 string to match.
  35945. if (memcmp(BuiltinName.data()+26, "p_s1_sat", 8))
  35946. break;
  35947. return Intrinsic::hexagon_M2_mpy_up_s1_sat; // "__builtin_HEXAGON_M2_mpy_up_s1_sat"
  35948. }
  35949. break;
  35950. case 'v': // 2 strings to match.
  35951. if (memcmp(BuiltinName.data()+22, "mpy2s_s", 7))
  35952. break;
  35953. switch (BuiltinName[29]) {
  35954. default: break;
  35955. case '0': // 1 string to match.
  35956. if (memcmp(BuiltinName.data()+30, "pack", 4))
  35957. break;
  35958. return Intrinsic::hexagon_M2_vmpy2s_s0pack; // "__builtin_HEXAGON_M2_vmpy2s_s0pack"
  35959. case '1': // 1 string to match.
  35960. if (memcmp(BuiltinName.data()+30, "pack", 4))
  35961. break;
  35962. return Intrinsic::hexagon_M2_vmpy2s_s1pack; // "__builtin_HEXAGON_M2_vmpy2s_s1pack"
  35963. }
  35964. break;
  35965. }
  35966. break;
  35967. case '4': // 3 strings to match.
  35968. if (BuiltinName[20] != '_')
  35969. break;
  35970. switch (BuiltinName[21]) {
  35971. default: break;
  35972. case 'm': // 2 strings to match.
  35973. switch (BuiltinName[22]) {
  35974. default: break;
  35975. case 'a': // 1 string to match.
  35976. if (memcmp(BuiltinName.data()+23, "c_up_s1_sat", 11))
  35977. break;
  35978. return Intrinsic::hexagon_M4_mac_up_s1_sat; // "__builtin_HEXAGON_M4_mac_up_s1_sat"
  35979. case 'p': // 1 string to match.
  35980. if (memcmp(BuiltinName.data()+23, "yri_addr_u2", 11))
  35981. break;
  35982. return Intrinsic::hexagon_M4_mpyri_addr_u2; // "__builtin_HEXAGON_M4_mpyri_addr_u2"
  35983. }
  35984. break;
  35985. case 'n': // 1 string to match.
  35986. if (memcmp(BuiltinName.data()+22, "ac_up_s1_sat", 12))
  35987. break;
  35988. return Intrinsic::hexagon_M4_nac_up_s1_sat; // "__builtin_HEXAGON_M4_nac_up_s1_sat"
  35989. }
  35990. break;
  35991. }
  35992. break;
  35993. case 'S': // 3 strings to match.
  35994. switch (BuiltinName[19]) {
  35995. default: break;
  35996. case '2': // 2 strings to match.
  35997. if (memcmp(BuiltinName.data()+20, "_vsat", 5))
  35998. break;
  35999. switch (BuiltinName[25]) {
  36000. default: break;
  36001. case 'h': // 1 string to match.
  36002. if (memcmp(BuiltinName.data()+26, "b_nopack", 8))
  36003. break;
  36004. return Intrinsic::hexagon_S2_vsathb_nopack; // "__builtin_HEXAGON_S2_vsathb_nopack"
  36005. case 'w': // 1 string to match.
  36006. if (memcmp(BuiltinName.data()+26, "h_nopack", 8))
  36007. break;
  36008. return Intrinsic::hexagon_S2_vsatwh_nopack; // "__builtin_HEXAGON_S2_vsatwh_nopack"
  36009. }
  36010. break;
  36011. case '4': // 1 string to match.
  36012. if (memcmp(BuiltinName.data()+20, "_vrcrotate_acc", 14))
  36013. break;
  36014. return Intrinsic::hexagon_S4_vrcrotate_acc; // "__builtin_HEXAGON_S4_vrcrotate_acc"
  36015. }
  36016. break;
  36017. }
  36018. break;
  36019. case 35: // 64 strings to match.
  36020. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  36021. break;
  36022. switch (BuiltinName[18]) {
  36023. default: break;
  36024. case 'F': // 4 strings to match.
  36025. if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
  36026. break;
  36027. switch (BuiltinName[26]) {
  36028. default: break;
  36029. case 'd': // 2 strings to match.
  36030. if (memcmp(BuiltinName.data()+27, "f2", 2))
  36031. break;
  36032. switch (BuiltinName[29]) {
  36033. default: break;
  36034. case 'd': // 1 string to match.
  36035. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  36036. break;
  36037. return Intrinsic::hexagon_F2_conv_df2d_chop; // "__builtin_HEXAGON_F2_conv_df2d_chop"
  36038. case 'w': // 1 string to match.
  36039. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  36040. break;
  36041. return Intrinsic::hexagon_F2_conv_df2w_chop; // "__builtin_HEXAGON_F2_conv_df2w_chop"
  36042. }
  36043. break;
  36044. case 's': // 2 strings to match.
  36045. if (memcmp(BuiltinName.data()+27, "f2", 2))
  36046. break;
  36047. switch (BuiltinName[29]) {
  36048. default: break;
  36049. case 'd': // 1 string to match.
  36050. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  36051. break;
  36052. return Intrinsic::hexagon_F2_conv_sf2d_chop; // "__builtin_HEXAGON_F2_conv_sf2d_chop"
  36053. case 'w': // 1 string to match.
  36054. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  36055. break;
  36056. return Intrinsic::hexagon_F2_conv_sf2w_chop; // "__builtin_HEXAGON_F2_conv_sf2w_chop"
  36057. }
  36058. break;
  36059. }
  36060. break;
  36061. case 'M': // 56 strings to match.
  36062. switch (BuiltinName[19]) {
  36063. default: break;
  36064. case '2': // 52 strings to match.
  36065. if (BuiltinName[20] != '_')
  36066. break;
  36067. switch (BuiltinName[21]) {
  36068. default: break;
  36069. case 'd': // 5 strings to match.
  36070. if (memcmp(BuiltinName.data()+22, "pmpy", 4))
  36071. break;
  36072. switch (BuiltinName[26]) {
  36073. default: break;
  36074. case 's': // 3 strings to match.
  36075. if (memcmp(BuiltinName.data()+27, "s_", 2))
  36076. break;
  36077. switch (BuiltinName[29]) {
  36078. default: break;
  36079. case 'a': // 1 string to match.
  36080. if (memcmp(BuiltinName.data()+30, "cc_s0", 5))
  36081. break;
  36082. return Intrinsic::hexagon_M2_dpmpyss_acc_s0; // "__builtin_HEXAGON_M2_dpmpyss_acc_s0"
  36083. case 'n': // 1 string to match.
  36084. if (memcmp(BuiltinName.data()+30, "ac_s0", 5))
  36085. break;
  36086. return Intrinsic::hexagon_M2_dpmpyss_nac_s0; // "__builtin_HEXAGON_M2_dpmpyss_nac_s0"
  36087. case 'r': // 1 string to match.
  36088. if (memcmp(BuiltinName.data()+30, "nd_s0", 5))
  36089. break;
  36090. return Intrinsic::hexagon_M2_dpmpyss_rnd_s0; // "__builtin_HEXAGON_M2_dpmpyss_rnd_s0"
  36091. }
  36092. break;
  36093. case 'u': // 2 strings to match.
  36094. if (memcmp(BuiltinName.data()+27, "u_", 2))
  36095. break;
  36096. switch (BuiltinName[29]) {
  36097. default: break;
  36098. case 'a': // 1 string to match.
  36099. if (memcmp(BuiltinName.data()+30, "cc_s0", 5))
  36100. break;
  36101. return Intrinsic::hexagon_M2_dpmpyuu_acc_s0; // "__builtin_HEXAGON_M2_dpmpyuu_acc_s0"
  36102. case 'n': // 1 string to match.
  36103. if (memcmp(BuiltinName.data()+30, "ac_s0", 5))
  36104. break;
  36105. return Intrinsic::hexagon_M2_dpmpyuu_nac_s0; // "__builtin_HEXAGON_M2_dpmpyuu_nac_s0"
  36106. }
  36107. break;
  36108. }
  36109. break;
  36110. case 'm': // 40 strings to match.
  36111. if (memcmp(BuiltinName.data()+22, "py", 2))
  36112. break;
  36113. switch (BuiltinName[24]) {
  36114. default: break;
  36115. case 'd': // 24 strings to match.
  36116. if (BuiltinName[25] != '_')
  36117. break;
  36118. switch (BuiltinName[26]) {
  36119. default: break;
  36120. case 'a': // 8 strings to match.
  36121. if (memcmp(BuiltinName.data()+27, "cc_", 3))
  36122. break;
  36123. switch (BuiltinName[30]) {
  36124. default: break;
  36125. case 'h': // 4 strings to match.
  36126. switch (BuiltinName[31]) {
  36127. default: break;
  36128. case 'h': // 2 strings to match.
  36129. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36130. break;
  36131. switch (BuiltinName[34]) {
  36132. default: break;
  36133. case '0': // 1 string to match.
  36134. return Intrinsic::hexagon_M2_mpyd_acc_hh_s0; // "__builtin_HEXAGON_M2_mpyd_acc_hh_s0"
  36135. case '1': // 1 string to match.
  36136. return Intrinsic::hexagon_M2_mpyd_acc_hh_s1; // "__builtin_HEXAGON_M2_mpyd_acc_hh_s1"
  36137. }
  36138. break;
  36139. case 'l': // 2 strings to match.
  36140. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36141. break;
  36142. switch (BuiltinName[34]) {
  36143. default: break;
  36144. case '0': // 1 string to match.
  36145. return Intrinsic::hexagon_M2_mpyd_acc_hl_s0; // "__builtin_HEXAGON_M2_mpyd_acc_hl_s0"
  36146. case '1': // 1 string to match.
  36147. return Intrinsic::hexagon_M2_mpyd_acc_hl_s1; // "__builtin_HEXAGON_M2_mpyd_acc_hl_s1"
  36148. }
  36149. break;
  36150. }
  36151. break;
  36152. case 'l': // 4 strings to match.
  36153. switch (BuiltinName[31]) {
  36154. default: break;
  36155. case 'h': // 2 strings to match.
  36156. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36157. break;
  36158. switch (BuiltinName[34]) {
  36159. default: break;
  36160. case '0': // 1 string to match.
  36161. return Intrinsic::hexagon_M2_mpyd_acc_lh_s0; // "__builtin_HEXAGON_M2_mpyd_acc_lh_s0"
  36162. case '1': // 1 string to match.
  36163. return Intrinsic::hexagon_M2_mpyd_acc_lh_s1; // "__builtin_HEXAGON_M2_mpyd_acc_lh_s1"
  36164. }
  36165. break;
  36166. case 'l': // 2 strings to match.
  36167. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36168. break;
  36169. switch (BuiltinName[34]) {
  36170. default: break;
  36171. case '0': // 1 string to match.
  36172. return Intrinsic::hexagon_M2_mpyd_acc_ll_s0; // "__builtin_HEXAGON_M2_mpyd_acc_ll_s0"
  36173. case '1': // 1 string to match.
  36174. return Intrinsic::hexagon_M2_mpyd_acc_ll_s1; // "__builtin_HEXAGON_M2_mpyd_acc_ll_s1"
  36175. }
  36176. break;
  36177. }
  36178. break;
  36179. }
  36180. break;
  36181. case 'n': // 8 strings to match.
  36182. if (memcmp(BuiltinName.data()+27, "ac_", 3))
  36183. break;
  36184. switch (BuiltinName[30]) {
  36185. default: break;
  36186. case 'h': // 4 strings to match.
  36187. switch (BuiltinName[31]) {
  36188. default: break;
  36189. case 'h': // 2 strings to match.
  36190. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36191. break;
  36192. switch (BuiltinName[34]) {
  36193. default: break;
  36194. case '0': // 1 string to match.
  36195. return Intrinsic::hexagon_M2_mpyd_nac_hh_s0; // "__builtin_HEXAGON_M2_mpyd_nac_hh_s0"
  36196. case '1': // 1 string to match.
  36197. return Intrinsic::hexagon_M2_mpyd_nac_hh_s1; // "__builtin_HEXAGON_M2_mpyd_nac_hh_s1"
  36198. }
  36199. break;
  36200. case 'l': // 2 strings to match.
  36201. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36202. break;
  36203. switch (BuiltinName[34]) {
  36204. default: break;
  36205. case '0': // 1 string to match.
  36206. return Intrinsic::hexagon_M2_mpyd_nac_hl_s0; // "__builtin_HEXAGON_M2_mpyd_nac_hl_s0"
  36207. case '1': // 1 string to match.
  36208. return Intrinsic::hexagon_M2_mpyd_nac_hl_s1; // "__builtin_HEXAGON_M2_mpyd_nac_hl_s1"
  36209. }
  36210. break;
  36211. }
  36212. break;
  36213. case 'l': // 4 strings to match.
  36214. switch (BuiltinName[31]) {
  36215. default: break;
  36216. case 'h': // 2 strings to match.
  36217. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36218. break;
  36219. switch (BuiltinName[34]) {
  36220. default: break;
  36221. case '0': // 1 string to match.
  36222. return Intrinsic::hexagon_M2_mpyd_nac_lh_s0; // "__builtin_HEXAGON_M2_mpyd_nac_lh_s0"
  36223. case '1': // 1 string to match.
  36224. return Intrinsic::hexagon_M2_mpyd_nac_lh_s1; // "__builtin_HEXAGON_M2_mpyd_nac_lh_s1"
  36225. }
  36226. break;
  36227. case 'l': // 2 strings to match.
  36228. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36229. break;
  36230. switch (BuiltinName[34]) {
  36231. default: break;
  36232. case '0': // 1 string to match.
  36233. return Intrinsic::hexagon_M2_mpyd_nac_ll_s0; // "__builtin_HEXAGON_M2_mpyd_nac_ll_s0"
  36234. case '1': // 1 string to match.
  36235. return Intrinsic::hexagon_M2_mpyd_nac_ll_s1; // "__builtin_HEXAGON_M2_mpyd_nac_ll_s1"
  36236. }
  36237. break;
  36238. }
  36239. break;
  36240. }
  36241. break;
  36242. case 'r': // 8 strings to match.
  36243. if (memcmp(BuiltinName.data()+27, "nd_", 3))
  36244. break;
  36245. switch (BuiltinName[30]) {
  36246. default: break;
  36247. case 'h': // 4 strings to match.
  36248. switch (BuiltinName[31]) {
  36249. default: break;
  36250. case 'h': // 2 strings to match.
  36251. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36252. break;
  36253. switch (BuiltinName[34]) {
  36254. default: break;
  36255. case '0': // 1 string to match.
  36256. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_hh_s0"
  36257. case '1': // 1 string to match.
  36258. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_hh_s1"
  36259. }
  36260. break;
  36261. case 'l': // 2 strings to match.
  36262. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36263. break;
  36264. switch (BuiltinName[34]) {
  36265. default: break;
  36266. case '0': // 1 string to match.
  36267. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_hl_s0"
  36268. case '1': // 1 string to match.
  36269. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_hl_s1"
  36270. }
  36271. break;
  36272. }
  36273. break;
  36274. case 'l': // 4 strings to match.
  36275. switch (BuiltinName[31]) {
  36276. default: break;
  36277. case 'h': // 2 strings to match.
  36278. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36279. break;
  36280. switch (BuiltinName[34]) {
  36281. default: break;
  36282. case '0': // 1 string to match.
  36283. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_lh_s0"
  36284. case '1': // 1 string to match.
  36285. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_lh_s1"
  36286. }
  36287. break;
  36288. case 'l': // 2 strings to match.
  36289. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36290. break;
  36291. switch (BuiltinName[34]) {
  36292. default: break;
  36293. case '0': // 1 string to match.
  36294. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_ll_s0"
  36295. case '1': // 1 string to match.
  36296. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_ll_s1"
  36297. }
  36298. break;
  36299. }
  36300. break;
  36301. }
  36302. break;
  36303. }
  36304. break;
  36305. case 'u': // 16 strings to match.
  36306. if (BuiltinName[25] != '_')
  36307. break;
  36308. switch (BuiltinName[26]) {
  36309. default: break;
  36310. case 'a': // 8 strings to match.
  36311. if (memcmp(BuiltinName.data()+27, "cc_", 3))
  36312. break;
  36313. switch (BuiltinName[30]) {
  36314. default: break;
  36315. case 'h': // 4 strings to match.
  36316. switch (BuiltinName[31]) {
  36317. default: break;
  36318. case 'h': // 2 strings to match.
  36319. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36320. break;
  36321. switch (BuiltinName[34]) {
  36322. default: break;
  36323. case '0': // 1 string to match.
  36324. return Intrinsic::hexagon_M2_mpyu_acc_hh_s0; // "__builtin_HEXAGON_M2_mpyu_acc_hh_s0"
  36325. case '1': // 1 string to match.
  36326. return Intrinsic::hexagon_M2_mpyu_acc_hh_s1; // "__builtin_HEXAGON_M2_mpyu_acc_hh_s1"
  36327. }
  36328. break;
  36329. case 'l': // 2 strings to match.
  36330. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36331. break;
  36332. switch (BuiltinName[34]) {
  36333. default: break;
  36334. case '0': // 1 string to match.
  36335. return Intrinsic::hexagon_M2_mpyu_acc_hl_s0; // "__builtin_HEXAGON_M2_mpyu_acc_hl_s0"
  36336. case '1': // 1 string to match.
  36337. return Intrinsic::hexagon_M2_mpyu_acc_hl_s1; // "__builtin_HEXAGON_M2_mpyu_acc_hl_s1"
  36338. }
  36339. break;
  36340. }
  36341. break;
  36342. case 'l': // 4 strings to match.
  36343. switch (BuiltinName[31]) {
  36344. default: break;
  36345. case 'h': // 2 strings to match.
  36346. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36347. break;
  36348. switch (BuiltinName[34]) {
  36349. default: break;
  36350. case '0': // 1 string to match.
  36351. return Intrinsic::hexagon_M2_mpyu_acc_lh_s0; // "__builtin_HEXAGON_M2_mpyu_acc_lh_s0"
  36352. case '1': // 1 string to match.
  36353. return Intrinsic::hexagon_M2_mpyu_acc_lh_s1; // "__builtin_HEXAGON_M2_mpyu_acc_lh_s1"
  36354. }
  36355. break;
  36356. case 'l': // 2 strings to match.
  36357. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36358. break;
  36359. switch (BuiltinName[34]) {
  36360. default: break;
  36361. case '0': // 1 string to match.
  36362. return Intrinsic::hexagon_M2_mpyu_acc_ll_s0; // "__builtin_HEXAGON_M2_mpyu_acc_ll_s0"
  36363. case '1': // 1 string to match.
  36364. return Intrinsic::hexagon_M2_mpyu_acc_ll_s1; // "__builtin_HEXAGON_M2_mpyu_acc_ll_s1"
  36365. }
  36366. break;
  36367. }
  36368. break;
  36369. }
  36370. break;
  36371. case 'n': // 8 strings to match.
  36372. if (memcmp(BuiltinName.data()+27, "ac_", 3))
  36373. break;
  36374. switch (BuiltinName[30]) {
  36375. default: break;
  36376. case 'h': // 4 strings to match.
  36377. switch (BuiltinName[31]) {
  36378. default: break;
  36379. case 'h': // 2 strings to match.
  36380. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36381. break;
  36382. switch (BuiltinName[34]) {
  36383. default: break;
  36384. case '0': // 1 string to match.
  36385. return Intrinsic::hexagon_M2_mpyu_nac_hh_s0; // "__builtin_HEXAGON_M2_mpyu_nac_hh_s0"
  36386. case '1': // 1 string to match.
  36387. return Intrinsic::hexagon_M2_mpyu_nac_hh_s1; // "__builtin_HEXAGON_M2_mpyu_nac_hh_s1"
  36388. }
  36389. break;
  36390. case 'l': // 2 strings to match.
  36391. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36392. break;
  36393. switch (BuiltinName[34]) {
  36394. default: break;
  36395. case '0': // 1 string to match.
  36396. return Intrinsic::hexagon_M2_mpyu_nac_hl_s0; // "__builtin_HEXAGON_M2_mpyu_nac_hl_s0"
  36397. case '1': // 1 string to match.
  36398. return Intrinsic::hexagon_M2_mpyu_nac_hl_s1; // "__builtin_HEXAGON_M2_mpyu_nac_hl_s1"
  36399. }
  36400. break;
  36401. }
  36402. break;
  36403. case 'l': // 4 strings to match.
  36404. switch (BuiltinName[31]) {
  36405. default: break;
  36406. case 'h': // 2 strings to match.
  36407. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36408. break;
  36409. switch (BuiltinName[34]) {
  36410. default: break;
  36411. case '0': // 1 string to match.
  36412. return Intrinsic::hexagon_M2_mpyu_nac_lh_s0; // "__builtin_HEXAGON_M2_mpyu_nac_lh_s0"
  36413. case '1': // 1 string to match.
  36414. return Intrinsic::hexagon_M2_mpyu_nac_lh_s1; // "__builtin_HEXAGON_M2_mpyu_nac_lh_s1"
  36415. }
  36416. break;
  36417. case 'l': // 2 strings to match.
  36418. if (memcmp(BuiltinName.data()+32, "_s", 2))
  36419. break;
  36420. switch (BuiltinName[34]) {
  36421. default: break;
  36422. case '0': // 1 string to match.
  36423. return Intrinsic::hexagon_M2_mpyu_nac_ll_s0; // "__builtin_HEXAGON_M2_mpyu_nac_ll_s0"
  36424. case '1': // 1 string to match.
  36425. return Intrinsic::hexagon_M2_mpyu_nac_ll_s1; // "__builtin_HEXAGON_M2_mpyu_nac_ll_s1"
  36426. }
  36427. break;
  36428. }
  36429. break;
  36430. }
  36431. break;
  36432. }
  36433. break;
  36434. }
  36435. break;
  36436. case 'v': // 7 strings to match.
  36437. switch (BuiltinName[22]) {
  36438. default: break;
  36439. case 'c': // 6 strings to match.
  36440. if (BuiltinName[23] != 'm')
  36441. break;
  36442. switch (BuiltinName[24]) {
  36443. default: break;
  36444. case 'a': // 2 strings to match.
  36445. if (memcmp(BuiltinName.data()+25, "c_s0_sat_", 9))
  36446. break;
  36447. switch (BuiltinName[34]) {
  36448. default: break;
  36449. case 'i': // 1 string to match.
  36450. return Intrinsic::hexagon_M2_vcmac_s0_sat_i; // "__builtin_HEXAGON_M2_vcmac_s0_sat_i"
  36451. case 'r': // 1 string to match.
  36452. return Intrinsic::hexagon_M2_vcmac_s0_sat_r; // "__builtin_HEXAGON_M2_vcmac_s0_sat_r"
  36453. }
  36454. break;
  36455. case 'p': // 4 strings to match.
  36456. if (memcmp(BuiltinName.data()+25, "y_s", 3))
  36457. break;
  36458. switch (BuiltinName[28]) {
  36459. default: break;
  36460. case '0': // 2 strings to match.
  36461. if (memcmp(BuiltinName.data()+29, "_sat_", 5))
  36462. break;
  36463. switch (BuiltinName[34]) {
  36464. default: break;
  36465. case 'i': // 1 string to match.
  36466. return Intrinsic::hexagon_M2_vcmpy_s0_sat_i; // "__builtin_HEXAGON_M2_vcmpy_s0_sat_i"
  36467. case 'r': // 1 string to match.
  36468. return Intrinsic::hexagon_M2_vcmpy_s0_sat_r; // "__builtin_HEXAGON_M2_vcmpy_s0_sat_r"
  36469. }
  36470. break;
  36471. case '1': // 2 strings to match.
  36472. if (memcmp(BuiltinName.data()+29, "_sat_", 5))
  36473. break;
  36474. switch (BuiltinName[34]) {
  36475. default: break;
  36476. case 'i': // 1 string to match.
  36477. return Intrinsic::hexagon_M2_vcmpy_s1_sat_i; // "__builtin_HEXAGON_M2_vcmpy_s1_sat_i"
  36478. case 'r': // 1 string to match.
  36479. return Intrinsic::hexagon_M2_vcmpy_s1_sat_r; // "__builtin_HEXAGON_M2_vcmpy_s1_sat_r"
  36480. }
  36481. break;
  36482. }
  36483. break;
  36484. }
  36485. break;
  36486. case 'r': // 1 string to match.
  36487. if (memcmp(BuiltinName.data()+23, "cmpys_acc_s1", 12))
  36488. break;
  36489. return Intrinsic::hexagon_M2_vrcmpys_acc_s1; // "__builtin_HEXAGON_M2_vrcmpys_acc_s1"
  36490. }
  36491. break;
  36492. }
  36493. break;
  36494. case '4': // 4 strings to match.
  36495. if (memcmp(BuiltinName.data()+20, "_vrmpy", 6))
  36496. break;
  36497. switch (BuiltinName[26]) {
  36498. default: break;
  36499. case 'e': // 2 strings to match.
  36500. if (memcmp(BuiltinName.data()+27, "h_acc_s", 7))
  36501. break;
  36502. switch (BuiltinName[34]) {
  36503. default: break;
  36504. case '0': // 1 string to match.
  36505. return Intrinsic::hexagon_M4_vrmpyeh_acc_s0; // "__builtin_HEXAGON_M4_vrmpyeh_acc_s0"
  36506. case '1': // 1 string to match.
  36507. return Intrinsic::hexagon_M4_vrmpyeh_acc_s1; // "__builtin_HEXAGON_M4_vrmpyeh_acc_s1"
  36508. }
  36509. break;
  36510. case 'o': // 2 strings to match.
  36511. if (memcmp(BuiltinName.data()+27, "h_acc_s", 7))
  36512. break;
  36513. switch (BuiltinName[34]) {
  36514. default: break;
  36515. case '0': // 1 string to match.
  36516. return Intrinsic::hexagon_M4_vrmpyoh_acc_s0; // "__builtin_HEXAGON_M4_vrmpyoh_acc_s0"
  36517. case '1': // 1 string to match.
  36518. return Intrinsic::hexagon_M4_vrmpyoh_acc_s1; // "__builtin_HEXAGON_M4_vrmpyoh_acc_s1"
  36519. }
  36520. break;
  36521. }
  36522. break;
  36523. }
  36524. break;
  36525. case 'S': // 4 strings to match.
  36526. if (memcmp(BuiltinName.data()+19, "2_", 2))
  36527. break;
  36528. switch (BuiltinName[21]) {
  36529. default: break;
  36530. case 'a': // 2 strings to match.
  36531. if (memcmp(BuiltinName.data()+22, "sr_", 3))
  36532. break;
  36533. switch (BuiltinName[25]) {
  36534. default: break;
  36535. case 'i': // 1 string to match.
  36536. if (memcmp(BuiltinName.data()+26, "_svw_trun", 9))
  36537. break;
  36538. return Intrinsic::hexagon_S2_asr_i_svw_trun; // "__builtin_HEXAGON_S2_asr_i_svw_trun"
  36539. case 'r': // 1 string to match.
  36540. if (memcmp(BuiltinName.data()+26, "_svw_trun", 9))
  36541. break;
  36542. return Intrinsic::hexagon_S2_asr_r_svw_trun; // "__builtin_HEXAGON_S2_asr_r_svw_trun"
  36543. }
  36544. break;
  36545. case 'v': // 2 strings to match.
  36546. if (memcmp(BuiltinName.data()+22, "sat", 3))
  36547. break;
  36548. switch (BuiltinName[25]) {
  36549. default: break;
  36550. case 'h': // 1 string to match.
  36551. if (memcmp(BuiltinName.data()+26, "ub_nopack", 9))
  36552. break;
  36553. return Intrinsic::hexagon_S2_vsathub_nopack; // "__builtin_HEXAGON_S2_vsathub_nopack"
  36554. case 'w': // 1 string to match.
  36555. if (memcmp(BuiltinName.data()+26, "uh_nopack", 9))
  36556. break;
  36557. return Intrinsic::hexagon_S2_vsatwuh_nopack; // "__builtin_HEXAGON_S2_vsatwuh_nopack"
  36558. }
  36559. break;
  36560. }
  36561. break;
  36562. }
  36563. break;
  36564. case 36: // 33 strings to match.
  36565. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  36566. break;
  36567. switch (BuiltinName[18]) {
  36568. default: break;
  36569. case 'A': // 12 strings to match.
  36570. if (memcmp(BuiltinName.data()+19, "2_", 2))
  36571. break;
  36572. switch (BuiltinName[21]) {
  36573. default: break;
  36574. case 'a': // 6 strings to match.
  36575. if (memcmp(BuiltinName.data()+22, "ddh_", 4))
  36576. break;
  36577. switch (BuiltinName[26]) {
  36578. default: break;
  36579. case 'h': // 4 strings to match.
  36580. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36581. break;
  36582. switch (BuiltinName[34]) {
  36583. default: break;
  36584. case 'h': // 2 strings to match.
  36585. switch (BuiltinName[35]) {
  36586. default: break;
  36587. case 'h': // 1 string to match.
  36588. return Intrinsic::hexagon_A2_addh_h16_sat_hh; // "__builtin_HEXAGON_A2_addh_h16_sat_hh"
  36589. case 'l': // 1 string to match.
  36590. return Intrinsic::hexagon_A2_addh_h16_sat_hl; // "__builtin_HEXAGON_A2_addh_h16_sat_hl"
  36591. }
  36592. break;
  36593. case 'l': // 2 strings to match.
  36594. switch (BuiltinName[35]) {
  36595. default: break;
  36596. case 'h': // 1 string to match.
  36597. return Intrinsic::hexagon_A2_addh_h16_sat_lh; // "__builtin_HEXAGON_A2_addh_h16_sat_lh"
  36598. case 'l': // 1 string to match.
  36599. return Intrinsic::hexagon_A2_addh_h16_sat_ll; // "__builtin_HEXAGON_A2_addh_h16_sat_ll"
  36600. }
  36601. break;
  36602. }
  36603. break;
  36604. case 'l': // 2 strings to match.
  36605. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36606. break;
  36607. switch (BuiltinName[34]) {
  36608. default: break;
  36609. case 'h': // 1 string to match.
  36610. if (BuiltinName[35] != 'l')
  36611. break;
  36612. return Intrinsic::hexagon_A2_addh_l16_sat_hl; // "__builtin_HEXAGON_A2_addh_l16_sat_hl"
  36613. case 'l': // 1 string to match.
  36614. if (BuiltinName[35] != 'l')
  36615. break;
  36616. return Intrinsic::hexagon_A2_addh_l16_sat_ll; // "__builtin_HEXAGON_A2_addh_l16_sat_ll"
  36617. }
  36618. break;
  36619. }
  36620. break;
  36621. case 's': // 6 strings to match.
  36622. if (memcmp(BuiltinName.data()+22, "ubh_", 4))
  36623. break;
  36624. switch (BuiltinName[26]) {
  36625. default: break;
  36626. case 'h': // 4 strings to match.
  36627. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36628. break;
  36629. switch (BuiltinName[34]) {
  36630. default: break;
  36631. case 'h': // 2 strings to match.
  36632. switch (BuiltinName[35]) {
  36633. default: break;
  36634. case 'h': // 1 string to match.
  36635. return Intrinsic::hexagon_A2_subh_h16_sat_hh; // "__builtin_HEXAGON_A2_subh_h16_sat_hh"
  36636. case 'l': // 1 string to match.
  36637. return Intrinsic::hexagon_A2_subh_h16_sat_hl; // "__builtin_HEXAGON_A2_subh_h16_sat_hl"
  36638. }
  36639. break;
  36640. case 'l': // 2 strings to match.
  36641. switch (BuiltinName[35]) {
  36642. default: break;
  36643. case 'h': // 1 string to match.
  36644. return Intrinsic::hexagon_A2_subh_h16_sat_lh; // "__builtin_HEXAGON_A2_subh_h16_sat_lh"
  36645. case 'l': // 1 string to match.
  36646. return Intrinsic::hexagon_A2_subh_h16_sat_ll; // "__builtin_HEXAGON_A2_subh_h16_sat_ll"
  36647. }
  36648. break;
  36649. }
  36650. break;
  36651. case 'l': // 2 strings to match.
  36652. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36653. break;
  36654. switch (BuiltinName[34]) {
  36655. default: break;
  36656. case 'h': // 1 string to match.
  36657. if (BuiltinName[35] != 'l')
  36658. break;
  36659. return Intrinsic::hexagon_A2_subh_l16_sat_hl; // "__builtin_HEXAGON_A2_subh_l16_sat_hl"
  36660. case 'l': // 1 string to match.
  36661. if (BuiltinName[35] != 'l')
  36662. break;
  36663. return Intrinsic::hexagon_A2_subh_l16_sat_ll; // "__builtin_HEXAGON_A2_subh_l16_sat_ll"
  36664. }
  36665. break;
  36666. }
  36667. break;
  36668. }
  36669. break;
  36670. case 'C': // 1 string to match.
  36671. if (memcmp(BuiltinName.data()+19, "4_fastcorner9_not", 17))
  36672. break;
  36673. return Intrinsic::hexagon_C4_fastcorner9_not; // "__builtin_HEXAGON_C4_fastcorner9_not"
  36674. case 'F': // 4 strings to match.
  36675. if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
  36676. break;
  36677. switch (BuiltinName[26]) {
  36678. default: break;
  36679. case 'd': // 2 strings to match.
  36680. if (memcmp(BuiltinName.data()+27, "f2u", 3))
  36681. break;
  36682. switch (BuiltinName[30]) {
  36683. default: break;
  36684. case 'd': // 1 string to match.
  36685. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36686. break;
  36687. return Intrinsic::hexagon_F2_conv_df2ud_chop; // "__builtin_HEXAGON_F2_conv_df2ud_chop"
  36688. case 'w': // 1 string to match.
  36689. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36690. break;
  36691. return Intrinsic::hexagon_F2_conv_df2uw_chop; // "__builtin_HEXAGON_F2_conv_df2uw_chop"
  36692. }
  36693. break;
  36694. case 's': // 2 strings to match.
  36695. if (memcmp(BuiltinName.data()+27, "f2u", 3))
  36696. break;
  36697. switch (BuiltinName[30]) {
  36698. default: break;
  36699. case 'd': // 1 string to match.
  36700. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36701. break;
  36702. return Intrinsic::hexagon_F2_conv_sf2ud_chop; // "__builtin_HEXAGON_F2_conv_sf2ud_chop"
  36703. case 'w': // 1 string to match.
  36704. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36705. break;
  36706. return Intrinsic::hexagon_F2_conv_sf2uw_chop; // "__builtin_HEXAGON_F2_conv_sf2uw_chop"
  36707. }
  36708. break;
  36709. }
  36710. break;
  36711. case 'M': // 16 strings to match.
  36712. if (memcmp(BuiltinName.data()+19, "2_mpyud_", 8))
  36713. break;
  36714. switch (BuiltinName[27]) {
  36715. default: break;
  36716. case 'a': // 8 strings to match.
  36717. if (memcmp(BuiltinName.data()+28, "cc_", 3))
  36718. break;
  36719. switch (BuiltinName[31]) {
  36720. default: break;
  36721. case 'h': // 4 strings to match.
  36722. switch (BuiltinName[32]) {
  36723. default: break;
  36724. case 'h': // 2 strings to match.
  36725. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36726. break;
  36727. switch (BuiltinName[35]) {
  36728. default: break;
  36729. case '0': // 1 string to match.
  36730. return Intrinsic::hexagon_M2_mpyud_acc_hh_s0; // "__builtin_HEXAGON_M2_mpyud_acc_hh_s0"
  36731. case '1': // 1 string to match.
  36732. return Intrinsic::hexagon_M2_mpyud_acc_hh_s1; // "__builtin_HEXAGON_M2_mpyud_acc_hh_s1"
  36733. }
  36734. break;
  36735. case 'l': // 2 strings to match.
  36736. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36737. break;
  36738. switch (BuiltinName[35]) {
  36739. default: break;
  36740. case '0': // 1 string to match.
  36741. return Intrinsic::hexagon_M2_mpyud_acc_hl_s0; // "__builtin_HEXAGON_M2_mpyud_acc_hl_s0"
  36742. case '1': // 1 string to match.
  36743. return Intrinsic::hexagon_M2_mpyud_acc_hl_s1; // "__builtin_HEXAGON_M2_mpyud_acc_hl_s1"
  36744. }
  36745. break;
  36746. }
  36747. break;
  36748. case 'l': // 4 strings to match.
  36749. switch (BuiltinName[32]) {
  36750. default: break;
  36751. case 'h': // 2 strings to match.
  36752. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36753. break;
  36754. switch (BuiltinName[35]) {
  36755. default: break;
  36756. case '0': // 1 string to match.
  36757. return Intrinsic::hexagon_M2_mpyud_acc_lh_s0; // "__builtin_HEXAGON_M2_mpyud_acc_lh_s0"
  36758. case '1': // 1 string to match.
  36759. return Intrinsic::hexagon_M2_mpyud_acc_lh_s1; // "__builtin_HEXAGON_M2_mpyud_acc_lh_s1"
  36760. }
  36761. break;
  36762. case 'l': // 2 strings to match.
  36763. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36764. break;
  36765. switch (BuiltinName[35]) {
  36766. default: break;
  36767. case '0': // 1 string to match.
  36768. return Intrinsic::hexagon_M2_mpyud_acc_ll_s0; // "__builtin_HEXAGON_M2_mpyud_acc_ll_s0"
  36769. case '1': // 1 string to match.
  36770. return Intrinsic::hexagon_M2_mpyud_acc_ll_s1; // "__builtin_HEXAGON_M2_mpyud_acc_ll_s1"
  36771. }
  36772. break;
  36773. }
  36774. break;
  36775. }
  36776. break;
  36777. case 'n': // 8 strings to match.
  36778. if (memcmp(BuiltinName.data()+28, "ac_", 3))
  36779. break;
  36780. switch (BuiltinName[31]) {
  36781. default: break;
  36782. case 'h': // 4 strings to match.
  36783. switch (BuiltinName[32]) {
  36784. default: break;
  36785. case 'h': // 2 strings to match.
  36786. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36787. break;
  36788. switch (BuiltinName[35]) {
  36789. default: break;
  36790. case '0': // 1 string to match.
  36791. return Intrinsic::hexagon_M2_mpyud_nac_hh_s0; // "__builtin_HEXAGON_M2_mpyud_nac_hh_s0"
  36792. case '1': // 1 string to match.
  36793. return Intrinsic::hexagon_M2_mpyud_nac_hh_s1; // "__builtin_HEXAGON_M2_mpyud_nac_hh_s1"
  36794. }
  36795. break;
  36796. case 'l': // 2 strings to match.
  36797. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36798. break;
  36799. switch (BuiltinName[35]) {
  36800. default: break;
  36801. case '0': // 1 string to match.
  36802. return Intrinsic::hexagon_M2_mpyud_nac_hl_s0; // "__builtin_HEXAGON_M2_mpyud_nac_hl_s0"
  36803. case '1': // 1 string to match.
  36804. return Intrinsic::hexagon_M2_mpyud_nac_hl_s1; // "__builtin_HEXAGON_M2_mpyud_nac_hl_s1"
  36805. }
  36806. break;
  36807. }
  36808. break;
  36809. case 'l': // 4 strings to match.
  36810. switch (BuiltinName[32]) {
  36811. default: break;
  36812. case 'h': // 2 strings to match.
  36813. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36814. break;
  36815. switch (BuiltinName[35]) {
  36816. default: break;
  36817. case '0': // 1 string to match.
  36818. return Intrinsic::hexagon_M2_mpyud_nac_lh_s0; // "__builtin_HEXAGON_M2_mpyud_nac_lh_s0"
  36819. case '1': // 1 string to match.
  36820. return Intrinsic::hexagon_M2_mpyud_nac_lh_s1; // "__builtin_HEXAGON_M2_mpyud_nac_lh_s1"
  36821. }
  36822. break;
  36823. case 'l': // 2 strings to match.
  36824. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36825. break;
  36826. switch (BuiltinName[35]) {
  36827. default: break;
  36828. case '0': // 1 string to match.
  36829. return Intrinsic::hexagon_M2_mpyud_nac_ll_s0; // "__builtin_HEXAGON_M2_mpyud_nac_ll_s0"
  36830. case '1': // 1 string to match.
  36831. return Intrinsic::hexagon_M2_mpyud_nac_ll_s1; // "__builtin_HEXAGON_M2_mpyud_nac_ll_s1"
  36832. }
  36833. break;
  36834. }
  36835. break;
  36836. }
  36837. break;
  36838. }
  36839. break;
  36840. }
  36841. break;
  36842. case 38: // 24 strings to match.
  36843. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_M2_mpy_", 25))
  36844. break;
  36845. switch (BuiltinName[25]) {
  36846. default: break;
  36847. case 'a': // 8 strings to match.
  36848. if (memcmp(BuiltinName.data()+26, "cc_sat_", 7))
  36849. break;
  36850. switch (BuiltinName[33]) {
  36851. default: break;
  36852. case 'h': // 4 strings to match.
  36853. switch (BuiltinName[34]) {
  36854. default: break;
  36855. case 'h': // 2 strings to match.
  36856. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36857. break;
  36858. switch (BuiltinName[37]) {
  36859. default: break;
  36860. case '0': // 1 string to match.
  36861. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_hh_s0"
  36862. case '1': // 1 string to match.
  36863. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_hh_s1"
  36864. }
  36865. break;
  36866. case 'l': // 2 strings to match.
  36867. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36868. break;
  36869. switch (BuiltinName[37]) {
  36870. default: break;
  36871. case '0': // 1 string to match.
  36872. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_hl_s0"
  36873. case '1': // 1 string to match.
  36874. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_hl_s1"
  36875. }
  36876. break;
  36877. }
  36878. break;
  36879. case 'l': // 4 strings to match.
  36880. switch (BuiltinName[34]) {
  36881. default: break;
  36882. case 'h': // 2 strings to match.
  36883. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36884. break;
  36885. switch (BuiltinName[37]) {
  36886. default: break;
  36887. case '0': // 1 string to match.
  36888. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_lh_s0"
  36889. case '1': // 1 string to match.
  36890. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_lh_s1"
  36891. }
  36892. break;
  36893. case 'l': // 2 strings to match.
  36894. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36895. break;
  36896. switch (BuiltinName[37]) {
  36897. default: break;
  36898. case '0': // 1 string to match.
  36899. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_ll_s0"
  36900. case '1': // 1 string to match.
  36901. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_ll_s1"
  36902. }
  36903. break;
  36904. }
  36905. break;
  36906. }
  36907. break;
  36908. case 'n': // 8 strings to match.
  36909. if (memcmp(BuiltinName.data()+26, "ac_sat_", 7))
  36910. break;
  36911. switch (BuiltinName[33]) {
  36912. default: break;
  36913. case 'h': // 4 strings to match.
  36914. switch (BuiltinName[34]) {
  36915. default: break;
  36916. case 'h': // 2 strings to match.
  36917. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36918. break;
  36919. switch (BuiltinName[37]) {
  36920. default: break;
  36921. case '0': // 1 string to match.
  36922. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_hh_s0"
  36923. case '1': // 1 string to match.
  36924. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_hh_s1"
  36925. }
  36926. break;
  36927. case 'l': // 2 strings to match.
  36928. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36929. break;
  36930. switch (BuiltinName[37]) {
  36931. default: break;
  36932. case '0': // 1 string to match.
  36933. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_hl_s0"
  36934. case '1': // 1 string to match.
  36935. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_hl_s1"
  36936. }
  36937. break;
  36938. }
  36939. break;
  36940. case 'l': // 4 strings to match.
  36941. switch (BuiltinName[34]) {
  36942. default: break;
  36943. case 'h': // 2 strings to match.
  36944. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36945. break;
  36946. switch (BuiltinName[37]) {
  36947. default: break;
  36948. case '0': // 1 string to match.
  36949. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_lh_s0"
  36950. case '1': // 1 string to match.
  36951. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_lh_s1"
  36952. }
  36953. break;
  36954. case 'l': // 2 strings to match.
  36955. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36956. break;
  36957. switch (BuiltinName[37]) {
  36958. default: break;
  36959. case '0': // 1 string to match.
  36960. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_ll_s0"
  36961. case '1': // 1 string to match.
  36962. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_ll_s1"
  36963. }
  36964. break;
  36965. }
  36966. break;
  36967. }
  36968. break;
  36969. case 's': // 8 strings to match.
  36970. if (memcmp(BuiltinName.data()+26, "at_rnd_", 7))
  36971. break;
  36972. switch (BuiltinName[33]) {
  36973. default: break;
  36974. case 'h': // 4 strings to match.
  36975. switch (BuiltinName[34]) {
  36976. default: break;
  36977. case 'h': // 2 strings to match.
  36978. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36979. break;
  36980. switch (BuiltinName[37]) {
  36981. default: break;
  36982. case '0': // 1 string to match.
  36983. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0"
  36984. case '1': // 1 string to match.
  36985. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1"
  36986. }
  36987. break;
  36988. case 'l': // 2 strings to match.
  36989. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36990. break;
  36991. switch (BuiltinName[37]) {
  36992. default: break;
  36993. case '0': // 1 string to match.
  36994. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0"
  36995. case '1': // 1 string to match.
  36996. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1"
  36997. }
  36998. break;
  36999. }
  37000. break;
  37001. case 'l': // 4 strings to match.
  37002. switch (BuiltinName[34]) {
  37003. default: break;
  37004. case 'h': // 2 strings to match.
  37005. if (memcmp(BuiltinName.data()+35, "_s", 2))
  37006. break;
  37007. switch (BuiltinName[37]) {
  37008. default: break;
  37009. case '0': // 1 string to match.
  37010. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0"
  37011. case '1': // 1 string to match.
  37012. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1"
  37013. }
  37014. break;
  37015. case 'l': // 2 strings to match.
  37016. if (memcmp(BuiltinName.data()+35, "_s", 2))
  37017. break;
  37018. switch (BuiltinName[37]) {
  37019. default: break;
  37020. case '0': // 1 string to match.
  37021. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0"
  37022. case '1': // 1 string to match.
  37023. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1"
  37024. }
  37025. break;
  37026. }
  37027. break;
  37028. }
  37029. break;
  37030. }
  37031. break;
  37032. case 40: // 1 string to match.
  37033. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S5_vasrhrnd_goodsyntax", 40))
  37034. break;
  37035. return Intrinsic::hexagon_S5_vasrhrnd_goodsyntax; // "__builtin_HEXAGON_S5_vasrhrnd_goodsyntax"
  37036. case 41: // 4 strings to match.
  37037. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S2_tableidx", 29))
  37038. break;
  37039. switch (BuiltinName[29]) {
  37040. default: break;
  37041. case 'b': // 1 string to match.
  37042. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  37043. break;
  37044. return Intrinsic::hexagon_S2_tableidxb_goodsyntax; // "__builtin_HEXAGON_S2_tableidxb_goodsyntax"
  37045. case 'd': // 1 string to match.
  37046. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  37047. break;
  37048. return Intrinsic::hexagon_S2_tableidxd_goodsyntax; // "__builtin_HEXAGON_S2_tableidxd_goodsyntax"
  37049. case 'h': // 1 string to match.
  37050. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  37051. break;
  37052. return Intrinsic::hexagon_S2_tableidxh_goodsyntax; // "__builtin_HEXAGON_S2_tableidxh_goodsyntax"
  37053. case 'w': // 1 string to match.
  37054. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  37055. break;
  37056. return Intrinsic::hexagon_S2_tableidxw_goodsyntax; // "__builtin_HEXAGON_S2_tableidxw_goodsyntax"
  37057. }
  37058. break;
  37059. case 43: // 2 strings to match.
  37060. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S2_asr_i_", 27))
  37061. break;
  37062. switch (BuiltinName[27]) {
  37063. default: break;
  37064. case 'p': // 1 string to match.
  37065. if (memcmp(BuiltinName.data()+28, "_rnd_goodsyntax", 15))
  37066. break;
  37067. return Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax; // "__builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax"
  37068. case 'r': // 1 string to match.
  37069. if (memcmp(BuiltinName.data()+28, "_rnd_goodsyntax", 15))
  37070. break;
  37071. return Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax; // "__builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax"
  37072. }
  37073. break;
  37074. case 46: // 1 string to match.
  37075. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax", 46))
  37076. break;
  37077. return Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax; // "__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax"
  37078. }
  37079. }
  37080. if (TargetPrefix == "mips") {
  37081. switch (BuiltinName.size()) {
  37082. default: break;
  37083. case 18: // 2 strings to match.
  37084. if (memcmp(BuiltinName.data()+0, "__builtin_mips_l", 16))
  37085. break;
  37086. switch (BuiltinName[16]) {
  37087. default: break;
  37088. case 'h': // 1 string to match.
  37089. if (BuiltinName[17] != 'x')
  37090. break;
  37091. return Intrinsic::mips_lhx; // "__builtin_mips_lhx"
  37092. case 'w': // 1 string to match.
  37093. if (BuiltinName[17] != 'x')
  37094. break;
  37095. return Intrinsic::mips_lwx; // "__builtin_mips_lwx"
  37096. }
  37097. break;
  37098. case 19: // 6 strings to match.
  37099. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37100. break;
  37101. switch (BuiltinName[15]) {
  37102. default: break;
  37103. case 'e': // 1 string to match.
  37104. if (memcmp(BuiltinName.data()+16, "xtp", 3))
  37105. break;
  37106. return Intrinsic::mips_extp; // "__builtin_mips_extp"
  37107. case 'i': // 1 string to match.
  37108. if (memcmp(BuiltinName.data()+16, "nsv", 3))
  37109. break;
  37110. return Intrinsic::mips_insv; // "__builtin_mips_insv"
  37111. case 'l': // 1 string to match.
  37112. if (memcmp(BuiltinName.data()+16, "bux", 3))
  37113. break;
  37114. return Intrinsic::mips_lbux; // "__builtin_mips_lbux"
  37115. case 'm': // 3 strings to match.
  37116. switch (BuiltinName[16]) {
  37117. default: break;
  37118. case 'a': // 1 string to match.
  37119. if (memcmp(BuiltinName.data()+17, "dd", 2))
  37120. break;
  37121. return Intrinsic::mips_madd; // "__builtin_mips_madd"
  37122. case 's': // 1 string to match.
  37123. if (memcmp(BuiltinName.data()+17, "ub", 2))
  37124. break;
  37125. return Intrinsic::mips_msub; // "__builtin_mips_msub"
  37126. case 'u': // 1 string to match.
  37127. if (memcmp(BuiltinName.data()+17, "lt", 2))
  37128. break;
  37129. return Intrinsic::mips_mult; // "__builtin_mips_mult"
  37130. }
  37131. break;
  37132. }
  37133. break;
  37134. case 20: // 8 strings to match.
  37135. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37136. break;
  37137. switch (BuiltinName[15]) {
  37138. default: break;
  37139. case 'a': // 2 strings to match.
  37140. if (memcmp(BuiltinName.data()+16, "dd", 2))
  37141. break;
  37142. switch (BuiltinName[18]) {
  37143. default: break;
  37144. case 's': // 1 string to match.
  37145. if (BuiltinName[19] != 'c')
  37146. break;
  37147. return Intrinsic::mips_addsc; // "__builtin_mips_addsc"
  37148. case 'w': // 1 string to match.
  37149. if (BuiltinName[19] != 'c')
  37150. break;
  37151. return Intrinsic::mips_addwc; // "__builtin_mips_addwc"
  37152. }
  37153. break;
  37154. case 'm': // 3 strings to match.
  37155. switch (BuiltinName[16]) {
  37156. default: break;
  37157. case 'a': // 1 string to match.
  37158. if (memcmp(BuiltinName.data()+17, "ddu", 3))
  37159. break;
  37160. return Intrinsic::mips_maddu; // "__builtin_mips_maddu"
  37161. case 's': // 1 string to match.
  37162. if (memcmp(BuiltinName.data()+17, "ubu", 3))
  37163. break;
  37164. return Intrinsic::mips_msubu; // "__builtin_mips_msubu"
  37165. case 'u': // 1 string to match.
  37166. if (memcmp(BuiltinName.data()+17, "ltu", 3))
  37167. break;
  37168. return Intrinsic::mips_multu; // "__builtin_mips_multu"
  37169. }
  37170. break;
  37171. case 'r': // 1 string to match.
  37172. if (memcmp(BuiltinName.data()+16, "ddsp", 4))
  37173. break;
  37174. return Intrinsic::mips_rddsp; // "__builtin_mips_rddsp"
  37175. case 's': // 1 string to match.
  37176. if (memcmp(BuiltinName.data()+16, "hilo", 4))
  37177. break;
  37178. return Intrinsic::mips_shilo; // "__builtin_mips_shilo"
  37179. case 'w': // 1 string to match.
  37180. if (memcmp(BuiltinName.data()+16, "rdsp", 4))
  37181. break;
  37182. return Intrinsic::mips_wrdsp; // "__builtin_mips_wrdsp"
  37183. }
  37184. break;
  37185. case 21: // 8 strings to match.
  37186. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37187. break;
  37188. switch (BuiltinName[15]) {
  37189. default: break;
  37190. case 'a': // 1 string to match.
  37191. if (memcmp(BuiltinName.data()+16, "ppend", 5))
  37192. break;
  37193. return Intrinsic::mips_append; // "__builtin_mips_append"
  37194. case 'b': // 2 strings to match.
  37195. switch (BuiltinName[16]) {
  37196. default: break;
  37197. case 'a': // 1 string to match.
  37198. if (memcmp(BuiltinName.data()+17, "lign", 4))
  37199. break;
  37200. return Intrinsic::mips_balign; // "__builtin_mips_balign"
  37201. case 'i': // 1 string to match.
  37202. if (memcmp(BuiltinName.data()+17, "trev", 4))
  37203. break;
  37204. return Intrinsic::mips_bitrev; // "__builtin_mips_bitrev"
  37205. }
  37206. break;
  37207. case 'e': // 2 strings to match.
  37208. if (memcmp(BuiltinName.data()+16, "xt", 2))
  37209. break;
  37210. switch (BuiltinName[18]) {
  37211. default: break;
  37212. case 'p': // 1 string to match.
  37213. if (memcmp(BuiltinName.data()+19, "dp", 2))
  37214. break;
  37215. return Intrinsic::mips_extpdp; // "__builtin_mips_extpdp"
  37216. case 'r': // 1 string to match.
  37217. if (memcmp(BuiltinName.data()+19, "_w", 2))
  37218. break;
  37219. return Intrinsic::mips_extr_w; // "__builtin_mips_extr_w"
  37220. }
  37221. break;
  37222. case 'm': // 3 strings to match.
  37223. switch (BuiltinName[16]) {
  37224. default: break;
  37225. case 'o': // 1 string to match.
  37226. if (memcmp(BuiltinName.data()+17, "dsub", 4))
  37227. break;
  37228. return Intrinsic::mips_modsub; // "__builtin_mips_modsub"
  37229. case 't': // 1 string to match.
  37230. if (memcmp(BuiltinName.data()+17, "hlip", 4))
  37231. break;
  37232. return Intrinsic::mips_mthlip; // "__builtin_mips_mthlip"
  37233. case 'u': // 1 string to match.
  37234. if (memcmp(BuiltinName.data()+17, "l_ph", 4))
  37235. break;
  37236. return Intrinsic::mips_mul_ph; // "__builtin_mips_mul_ph"
  37237. }
  37238. break;
  37239. }
  37240. break;
  37241. case 22: // 19 strings to match.
  37242. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37243. break;
  37244. switch (BuiltinName[15]) {
  37245. default: break;
  37246. case 'a': // 4 strings to match.
  37247. if (memcmp(BuiltinName.data()+16, "dd", 2))
  37248. break;
  37249. switch (BuiltinName[18]) {
  37250. default: break;
  37251. case 'q': // 2 strings to match.
  37252. switch (BuiltinName[19]) {
  37253. default: break;
  37254. case '_': // 1 string to match.
  37255. if (memcmp(BuiltinName.data()+20, "ph", 2))
  37256. break;
  37257. return Intrinsic::mips_addq_ph; // "__builtin_mips_addq_ph"
  37258. case 'h': // 1 string to match.
  37259. if (memcmp(BuiltinName.data()+20, "_w", 2))
  37260. break;
  37261. return Intrinsic::mips_addqh_w; // "__builtin_mips_addqh_w"
  37262. }
  37263. break;
  37264. case 'u': // 2 strings to match.
  37265. if (BuiltinName[19] != '_')
  37266. break;
  37267. switch (BuiltinName[20]) {
  37268. default: break;
  37269. case 'p': // 1 string to match.
  37270. if (BuiltinName[21] != 'h')
  37271. break;
  37272. return Intrinsic::mips_addu_ph; // "__builtin_mips_addu_ph"
  37273. case 'q': // 1 string to match.
  37274. if (BuiltinName[21] != 'b')
  37275. break;
  37276. return Intrinsic::mips_addu_qb; // "__builtin_mips_addu_qb"
  37277. }
  37278. break;
  37279. }
  37280. break;
  37281. case 'p': // 3 strings to match.
  37282. switch (BuiltinName[16]) {
  37283. default: break;
  37284. case 'i': // 2 strings to match.
  37285. if (memcmp(BuiltinName.data()+17, "ck_", 3))
  37286. break;
  37287. switch (BuiltinName[20]) {
  37288. default: break;
  37289. case 'p': // 1 string to match.
  37290. if (BuiltinName[21] != 'h')
  37291. break;
  37292. return Intrinsic::mips_pick_ph; // "__builtin_mips_pick_ph"
  37293. case 'q': // 1 string to match.
  37294. if (BuiltinName[21] != 'b')
  37295. break;
  37296. return Intrinsic::mips_pick_qb; // "__builtin_mips_pick_qb"
  37297. }
  37298. break;
  37299. case 'r': // 1 string to match.
  37300. if (memcmp(BuiltinName.data()+17, "epend", 5))
  37301. break;
  37302. return Intrinsic::mips_prepend; // "__builtin_mips_prepend"
  37303. }
  37304. break;
  37305. case 'r': // 2 strings to match.
  37306. if (memcmp(BuiltinName.data()+16, "epl_", 4))
  37307. break;
  37308. switch (BuiltinName[20]) {
  37309. default: break;
  37310. case 'p': // 1 string to match.
  37311. if (BuiltinName[21] != 'h')
  37312. break;
  37313. return Intrinsic::mips_repl_ph; // "__builtin_mips_repl_ph"
  37314. case 'q': // 1 string to match.
  37315. if (BuiltinName[21] != 'b')
  37316. break;
  37317. return Intrinsic::mips_repl_qb; // "__builtin_mips_repl_qb"
  37318. }
  37319. break;
  37320. case 's': // 10 strings to match.
  37321. switch (BuiltinName[16]) {
  37322. default: break;
  37323. case 'h': // 6 strings to match.
  37324. switch (BuiltinName[17]) {
  37325. default: break;
  37326. case 'l': // 2 strings to match.
  37327. if (memcmp(BuiltinName.data()+18, "l_", 2))
  37328. break;
  37329. switch (BuiltinName[20]) {
  37330. default: break;
  37331. case 'p': // 1 string to match.
  37332. if (BuiltinName[21] != 'h')
  37333. break;
  37334. return Intrinsic::mips_shll_ph; // "__builtin_mips_shll_ph"
  37335. case 'q': // 1 string to match.
  37336. if (BuiltinName[21] != 'b')
  37337. break;
  37338. return Intrinsic::mips_shll_qb; // "__builtin_mips_shll_qb"
  37339. }
  37340. break;
  37341. case 'r': // 4 strings to match.
  37342. switch (BuiltinName[18]) {
  37343. default: break;
  37344. case 'a': // 2 strings to match.
  37345. if (BuiltinName[19] != '_')
  37346. break;
  37347. switch (BuiltinName[20]) {
  37348. default: break;
  37349. case 'p': // 1 string to match.
  37350. if (BuiltinName[21] != 'h')
  37351. break;
  37352. return Intrinsic::mips_shra_ph; // "__builtin_mips_shra_ph"
  37353. case 'q': // 1 string to match.
  37354. if (BuiltinName[21] != 'b')
  37355. break;
  37356. return Intrinsic::mips_shra_qb; // "__builtin_mips_shra_qb"
  37357. }
  37358. break;
  37359. case 'l': // 2 strings to match.
  37360. if (BuiltinName[19] != '_')
  37361. break;
  37362. switch (BuiltinName[20]) {
  37363. default: break;
  37364. case 'p': // 1 string to match.
  37365. if (BuiltinName[21] != 'h')
  37366. break;
  37367. return Intrinsic::mips_shrl_ph; // "__builtin_mips_shrl_ph"
  37368. case 'q': // 1 string to match.
  37369. if (BuiltinName[21] != 'b')
  37370. break;
  37371. return Intrinsic::mips_shrl_qb; // "__builtin_mips_shrl_qb"
  37372. }
  37373. break;
  37374. }
  37375. break;
  37376. }
  37377. break;
  37378. case 'u': // 4 strings to match.
  37379. if (BuiltinName[17] != 'b')
  37380. break;
  37381. switch (BuiltinName[18]) {
  37382. default: break;
  37383. case 'q': // 2 strings to match.
  37384. switch (BuiltinName[19]) {
  37385. default: break;
  37386. case '_': // 1 string to match.
  37387. if (memcmp(BuiltinName.data()+20, "ph", 2))
  37388. break;
  37389. return Intrinsic::mips_subq_ph; // "__builtin_mips_subq_ph"
  37390. case 'h': // 1 string to match.
  37391. if (memcmp(BuiltinName.data()+20, "_w", 2))
  37392. break;
  37393. return Intrinsic::mips_subqh_w; // "__builtin_mips_subqh_w"
  37394. }
  37395. break;
  37396. case 'u': // 2 strings to match.
  37397. if (BuiltinName[19] != '_')
  37398. break;
  37399. switch (BuiltinName[20]) {
  37400. default: break;
  37401. case 'p': // 1 string to match.
  37402. if (BuiltinName[21] != 'h')
  37403. break;
  37404. return Intrinsic::mips_subu_ph; // "__builtin_mips_subu_ph"
  37405. case 'q': // 1 string to match.
  37406. if (BuiltinName[21] != 'b')
  37407. break;
  37408. return Intrinsic::mips_subu_qb; // "__builtin_mips_subu_qb"
  37409. }
  37410. break;
  37411. }
  37412. break;
  37413. }
  37414. break;
  37415. }
  37416. break;
  37417. case 23: // 16 strings to match.
  37418. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37419. break;
  37420. switch (BuiltinName[15]) {
  37421. default: break;
  37422. case 'a': // 4 strings to match.
  37423. switch (BuiltinName[16]) {
  37424. default: break;
  37425. case 'b': // 1 string to match.
  37426. if (memcmp(BuiltinName.data()+17, "sq_s_w", 6))
  37427. break;
  37428. return Intrinsic::mips_absq_s_w; // "__builtin_mips_absq_s_w"
  37429. case 'd': // 3 strings to match.
  37430. if (BuiltinName[17] != 'd')
  37431. break;
  37432. switch (BuiltinName[18]) {
  37433. default: break;
  37434. case 'q': // 2 strings to match.
  37435. switch (BuiltinName[19]) {
  37436. default: break;
  37437. case '_': // 1 string to match.
  37438. if (memcmp(BuiltinName.data()+20, "s_w", 3))
  37439. break;
  37440. return Intrinsic::mips_addq_s_w; // "__builtin_mips_addq_s_w"
  37441. case 'h': // 1 string to match.
  37442. if (memcmp(BuiltinName.data()+20, "_ph", 3))
  37443. break;
  37444. return Intrinsic::mips_addqh_ph; // "__builtin_mips_addqh_ph"
  37445. }
  37446. break;
  37447. case 'u': // 1 string to match.
  37448. if (memcmp(BuiltinName.data()+19, "h_qb", 4))
  37449. break;
  37450. return Intrinsic::mips_adduh_qb; // "__builtin_mips_adduh_qb"
  37451. }
  37452. break;
  37453. }
  37454. break;
  37455. case 'b': // 1 string to match.
  37456. if (memcmp(BuiltinName.data()+16, "posge32", 7))
  37457. break;
  37458. return Intrinsic::mips_bposge32; // "__builtin_mips_bposge32"
  37459. case 'd': // 2 strings to match.
  37460. if (BuiltinName[16] != 'p')
  37461. break;
  37462. switch (BuiltinName[17]) {
  37463. default: break;
  37464. case 'a': // 1 string to match.
  37465. if (memcmp(BuiltinName.data()+18, "_w_ph", 5))
  37466. break;
  37467. return Intrinsic::mips_dpa_w_ph; // "__builtin_mips_dpa_w_ph"
  37468. case 's': // 1 string to match.
  37469. if (memcmp(BuiltinName.data()+18, "_w_ph", 5))
  37470. break;
  37471. return Intrinsic::mips_dps_w_ph; // "__builtin_mips_dps_w_ph"
  37472. }
  37473. break;
  37474. case 'e': // 2 strings to match.
  37475. if (memcmp(BuiltinName.data()+16, "xtr_", 4))
  37476. break;
  37477. switch (BuiltinName[20]) {
  37478. default: break;
  37479. case 'r': // 1 string to match.
  37480. if (memcmp(BuiltinName.data()+21, "_w", 2))
  37481. break;
  37482. return Intrinsic::mips_extr_r_w; // "__builtin_mips_extr_r_w"
  37483. case 's': // 1 string to match.
  37484. if (memcmp(BuiltinName.data()+21, "_h", 2))
  37485. break;
  37486. return Intrinsic::mips_extr_s_h; // "__builtin_mips_extr_s_h"
  37487. }
  37488. break;
  37489. case 'm': // 2 strings to match.
  37490. if (memcmp(BuiltinName.data()+16, "ul", 2))
  37491. break;
  37492. switch (BuiltinName[18]) {
  37493. default: break;
  37494. case '_': // 1 string to match.
  37495. if (memcmp(BuiltinName.data()+19, "s_ph", 4))
  37496. break;
  37497. return Intrinsic::mips_mul_s_ph; // "__builtin_mips_mul_s_ph"
  37498. case 'q': // 1 string to match.
  37499. if (memcmp(BuiltinName.data()+19, "_s_w", 4))
  37500. break;
  37501. return Intrinsic::mips_mulq_s_w; // "__builtin_mips_mulq_s_w"
  37502. }
  37503. break;
  37504. case 's': // 5 strings to match.
  37505. switch (BuiltinName[16]) {
  37506. default: break;
  37507. case 'h': // 2 strings to match.
  37508. switch (BuiltinName[17]) {
  37509. default: break;
  37510. case 'l': // 1 string to match.
  37511. if (memcmp(BuiltinName.data()+18, "l_s_w", 5))
  37512. break;
  37513. return Intrinsic::mips_shll_s_w; // "__builtin_mips_shll_s_w"
  37514. case 'r': // 1 string to match.
  37515. if (memcmp(BuiltinName.data()+18, "a_r_w", 5))
  37516. break;
  37517. return Intrinsic::mips_shra_r_w; // "__builtin_mips_shra_r_w"
  37518. }
  37519. break;
  37520. case 'u': // 3 strings to match.
  37521. if (BuiltinName[17] != 'b')
  37522. break;
  37523. switch (BuiltinName[18]) {
  37524. default: break;
  37525. case 'q': // 2 strings to match.
  37526. switch (BuiltinName[19]) {
  37527. default: break;
  37528. case '_': // 1 string to match.
  37529. if (memcmp(BuiltinName.data()+20, "s_w", 3))
  37530. break;
  37531. return Intrinsic::mips_subq_s_w; // "__builtin_mips_subq_s_w"
  37532. case 'h': // 1 string to match.
  37533. if (memcmp(BuiltinName.data()+20, "_ph", 3))
  37534. break;
  37535. return Intrinsic::mips_subqh_ph; // "__builtin_mips_subqh_ph"
  37536. }
  37537. break;
  37538. case 'u': // 1 string to match.
  37539. if (memcmp(BuiltinName.data()+19, "h_qb", 4))
  37540. break;
  37541. return Intrinsic::mips_subuh_qb; // "__builtin_mips_subuh_qb"
  37542. }
  37543. break;
  37544. }
  37545. break;
  37546. }
  37547. break;
  37548. case 24: // 22 strings to match.
  37549. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37550. break;
  37551. switch (BuiltinName[15]) {
  37552. default: break;
  37553. case 'a': // 6 strings to match.
  37554. switch (BuiltinName[16]) {
  37555. default: break;
  37556. case 'b': // 2 strings to match.
  37557. if (memcmp(BuiltinName.data()+17, "sq_s_", 5))
  37558. break;
  37559. switch (BuiltinName[22]) {
  37560. default: break;
  37561. case 'p': // 1 string to match.
  37562. if (BuiltinName[23] != 'h')
  37563. break;
  37564. return Intrinsic::mips_absq_s_ph; // "__builtin_mips_absq_s_ph"
  37565. case 'q': // 1 string to match.
  37566. if (BuiltinName[23] != 'b')
  37567. break;
  37568. return Intrinsic::mips_absq_s_qb; // "__builtin_mips_absq_s_qb"
  37569. }
  37570. break;
  37571. case 'd': // 4 strings to match.
  37572. if (BuiltinName[17] != 'd')
  37573. break;
  37574. switch (BuiltinName[18]) {
  37575. default: break;
  37576. case 'q': // 2 strings to match.
  37577. switch (BuiltinName[19]) {
  37578. default: break;
  37579. case '_': // 1 string to match.
  37580. if (memcmp(BuiltinName.data()+20, "s_ph", 4))
  37581. break;
  37582. return Intrinsic::mips_addq_s_ph; // "__builtin_mips_addq_s_ph"
  37583. case 'h': // 1 string to match.
  37584. if (memcmp(BuiltinName.data()+20, "_r_w", 4))
  37585. break;
  37586. return Intrinsic::mips_addqh_r_w; // "__builtin_mips_addqh_r_w"
  37587. }
  37588. break;
  37589. case 'u': // 2 strings to match.
  37590. if (memcmp(BuiltinName.data()+19, "_s_", 3))
  37591. break;
  37592. switch (BuiltinName[22]) {
  37593. default: break;
  37594. case 'p': // 1 string to match.
  37595. if (BuiltinName[23] != 'h')
  37596. break;
  37597. return Intrinsic::mips_addu_s_ph; // "__builtin_mips_addu_s_ph"
  37598. case 'q': // 1 string to match.
  37599. if (BuiltinName[23] != 'b')
  37600. break;
  37601. return Intrinsic::mips_addu_s_qb; // "__builtin_mips_addu_s_qb"
  37602. }
  37603. break;
  37604. }
  37605. break;
  37606. }
  37607. break;
  37608. case 'c': // 3 strings to match.
  37609. if (memcmp(BuiltinName.data()+16, "mp_", 3))
  37610. break;
  37611. switch (BuiltinName[19]) {
  37612. default: break;
  37613. case 'e': // 1 string to match.
  37614. if (memcmp(BuiltinName.data()+20, "q_ph", 4))
  37615. break;
  37616. return Intrinsic::mips_cmp_eq_ph; // "__builtin_mips_cmp_eq_ph"
  37617. case 'l': // 2 strings to match.
  37618. switch (BuiltinName[20]) {
  37619. default: break;
  37620. case 'e': // 1 string to match.
  37621. if (memcmp(BuiltinName.data()+21, "_ph", 3))
  37622. break;
  37623. return Intrinsic::mips_cmp_le_ph; // "__builtin_mips_cmp_le_ph"
  37624. case 't': // 1 string to match.
  37625. if (memcmp(BuiltinName.data()+21, "_ph", 3))
  37626. break;
  37627. return Intrinsic::mips_cmp_lt_ph; // "__builtin_mips_cmp_lt_ph"
  37628. }
  37629. break;
  37630. }
  37631. break;
  37632. case 'd': // 2 strings to match.
  37633. if (BuiltinName[16] != 'p')
  37634. break;
  37635. switch (BuiltinName[17]) {
  37636. default: break;
  37637. case 'a': // 1 string to match.
  37638. if (memcmp(BuiltinName.data()+18, "x_w_ph", 6))
  37639. break;
  37640. return Intrinsic::mips_dpax_w_ph; // "__builtin_mips_dpax_w_ph"
  37641. case 's': // 1 string to match.
  37642. if (memcmp(BuiltinName.data()+18, "x_w_ph", 6))
  37643. break;
  37644. return Intrinsic::mips_dpsx_w_ph; // "__builtin_mips_dpsx_w_ph"
  37645. }
  37646. break;
  37647. case 'e': // 1 string to match.
  37648. if (memcmp(BuiltinName.data()+16, "xtr_rs_w", 8))
  37649. break;
  37650. return Intrinsic::mips_extr_rs_w; // "__builtin_mips_extr_rs_w"
  37651. case 'm': // 2 strings to match.
  37652. if (memcmp(BuiltinName.data()+16, "ulq_", 4))
  37653. break;
  37654. switch (BuiltinName[20]) {
  37655. default: break;
  37656. case 'r': // 1 string to match.
  37657. if (memcmp(BuiltinName.data()+21, "s_w", 3))
  37658. break;
  37659. return Intrinsic::mips_mulq_rs_w; // "__builtin_mips_mulq_rs_w"
  37660. case 's': // 1 string to match.
  37661. if (memcmp(BuiltinName.data()+21, "_ph", 3))
  37662. break;
  37663. return Intrinsic::mips_mulq_s_ph; // "__builtin_mips_mulq_s_ph"
  37664. }
  37665. break;
  37666. case 'p': // 1 string to match.
  37667. if (memcmp(BuiltinName.data()+16, "ackrl_ph", 8))
  37668. break;
  37669. return Intrinsic::mips_packrl_ph; // "__builtin_mips_packrl_ph"
  37670. case 's': // 7 strings to match.
  37671. switch (BuiltinName[16]) {
  37672. default: break;
  37673. case 'h': // 3 strings to match.
  37674. switch (BuiltinName[17]) {
  37675. default: break;
  37676. case 'l': // 1 string to match.
  37677. if (memcmp(BuiltinName.data()+18, "l_s_ph", 6))
  37678. break;
  37679. return Intrinsic::mips_shll_s_ph; // "__builtin_mips_shll_s_ph"
  37680. case 'r': // 2 strings to match.
  37681. if (memcmp(BuiltinName.data()+18, "a_r_", 4))
  37682. break;
  37683. switch (BuiltinName[22]) {
  37684. default: break;
  37685. case 'p': // 1 string to match.
  37686. if (BuiltinName[23] != 'h')
  37687. break;
  37688. return Intrinsic::mips_shra_r_ph; // "__builtin_mips_shra_r_ph"
  37689. case 'q': // 1 string to match.
  37690. if (BuiltinName[23] != 'b')
  37691. break;
  37692. return Intrinsic::mips_shra_r_qb; // "__builtin_mips_shra_r_qb"
  37693. }
  37694. break;
  37695. }
  37696. break;
  37697. case 'u': // 4 strings to match.
  37698. if (BuiltinName[17] != 'b')
  37699. break;
  37700. switch (BuiltinName[18]) {
  37701. default: break;
  37702. case 'q': // 2 strings to match.
  37703. switch (BuiltinName[19]) {
  37704. default: break;
  37705. case '_': // 1 string to match.
  37706. if (memcmp(BuiltinName.data()+20, "s_ph", 4))
  37707. break;
  37708. return Intrinsic::mips_subq_s_ph; // "__builtin_mips_subq_s_ph"
  37709. case 'h': // 1 string to match.
  37710. if (memcmp(BuiltinName.data()+20, "_r_w", 4))
  37711. break;
  37712. return Intrinsic::mips_subqh_r_w; // "__builtin_mips_subqh_r_w"
  37713. }
  37714. break;
  37715. case 'u': // 2 strings to match.
  37716. if (memcmp(BuiltinName.data()+19, "_s_", 3))
  37717. break;
  37718. switch (BuiltinName[22]) {
  37719. default: break;
  37720. case 'p': // 1 string to match.
  37721. if (BuiltinName[23] != 'h')
  37722. break;
  37723. return Intrinsic::mips_subu_s_ph; // "__builtin_mips_subu_s_ph"
  37724. case 'q': // 1 string to match.
  37725. if (BuiltinName[23] != 'b')
  37726. break;
  37727. return Intrinsic::mips_subu_s_qb; // "__builtin_mips_subu_s_qb"
  37728. }
  37729. break;
  37730. }
  37731. break;
  37732. }
  37733. break;
  37734. }
  37735. break;
  37736. case 25: // 14 strings to match.
  37737. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37738. break;
  37739. switch (BuiltinName[15]) {
  37740. default: break;
  37741. case 'a': // 2 strings to match.
  37742. if (memcmp(BuiltinName.data()+16, "dd", 2))
  37743. break;
  37744. switch (BuiltinName[18]) {
  37745. default: break;
  37746. case 'q': // 1 string to match.
  37747. if (memcmp(BuiltinName.data()+19, "h_r_ph", 6))
  37748. break;
  37749. return Intrinsic::mips_addqh_r_ph; // "__builtin_mips_addqh_r_ph"
  37750. case 'u': // 1 string to match.
  37751. if (memcmp(BuiltinName.data()+19, "h_r_qb", 6))
  37752. break;
  37753. return Intrinsic::mips_adduh_r_qb; // "__builtin_mips_adduh_r_qb"
  37754. }
  37755. break;
  37756. case 'c': // 3 strings to match.
  37757. if (memcmp(BuiltinName.data()+16, "mpu_", 4))
  37758. break;
  37759. switch (BuiltinName[20]) {
  37760. default: break;
  37761. case 'e': // 1 string to match.
  37762. if (memcmp(BuiltinName.data()+21, "q_qb", 4))
  37763. break;
  37764. return Intrinsic::mips_cmpu_eq_qb; // "__builtin_mips_cmpu_eq_qb"
  37765. case 'l': // 2 strings to match.
  37766. switch (BuiltinName[21]) {
  37767. default: break;
  37768. case 'e': // 1 string to match.
  37769. if (memcmp(BuiltinName.data()+22, "_qb", 3))
  37770. break;
  37771. return Intrinsic::mips_cmpu_le_qb; // "__builtin_mips_cmpu_le_qb"
  37772. case 't': // 1 string to match.
  37773. if (memcmp(BuiltinName.data()+22, "_qb", 3))
  37774. break;
  37775. return Intrinsic::mips_cmpu_lt_qb; // "__builtin_mips_cmpu_lt_qb"
  37776. }
  37777. break;
  37778. }
  37779. break;
  37780. case 'd': // 4 strings to match.
  37781. if (BuiltinName[16] != 'p')
  37782. break;
  37783. switch (BuiltinName[17]) {
  37784. default: break;
  37785. case 'a': // 2 strings to match.
  37786. if (memcmp(BuiltinName.data()+18, "u_h_qb", 6))
  37787. break;
  37788. switch (BuiltinName[24]) {
  37789. default: break;
  37790. case 'l': // 1 string to match.
  37791. return Intrinsic::mips_dpau_h_qbl; // "__builtin_mips_dpau_h_qbl"
  37792. case 'r': // 1 string to match.
  37793. return Intrinsic::mips_dpau_h_qbr; // "__builtin_mips_dpau_h_qbr"
  37794. }
  37795. break;
  37796. case 's': // 2 strings to match.
  37797. if (memcmp(BuiltinName.data()+18, "u_h_qb", 6))
  37798. break;
  37799. switch (BuiltinName[24]) {
  37800. default: break;
  37801. case 'l': // 1 string to match.
  37802. return Intrinsic::mips_dpsu_h_qbl; // "__builtin_mips_dpsu_h_qbl"
  37803. case 'r': // 1 string to match.
  37804. return Intrinsic::mips_dpsu_h_qbr; // "__builtin_mips_dpsu_h_qbr"
  37805. }
  37806. break;
  37807. }
  37808. break;
  37809. case 'm': // 2 strings to match.
  37810. if (memcmp(BuiltinName.data()+16, "ul", 2))
  37811. break;
  37812. switch (BuiltinName[18]) {
  37813. default: break;
  37814. case 'q': // 1 string to match.
  37815. if (memcmp(BuiltinName.data()+19, "_rs_ph", 6))
  37816. break;
  37817. return Intrinsic::mips_mulq_rs_ph; // "__builtin_mips_mulq_rs_ph"
  37818. case 's': // 1 string to match.
  37819. if (memcmp(BuiltinName.data()+19, "a_w_ph", 6))
  37820. break;
  37821. return Intrinsic::mips_mulsa_w_ph; // "__builtin_mips_mulsa_w_ph"
  37822. }
  37823. break;
  37824. case 'r': // 1 string to match.
  37825. if (memcmp(BuiltinName.data()+16, "addu_w_qb", 9))
  37826. break;
  37827. return Intrinsic::mips_raddu_w_qb; // "__builtin_mips_raddu_w_qb"
  37828. case 's': // 2 strings to match.
  37829. if (memcmp(BuiltinName.data()+16, "ub", 2))
  37830. break;
  37831. switch (BuiltinName[18]) {
  37832. default: break;
  37833. case 'q': // 1 string to match.
  37834. if (memcmp(BuiltinName.data()+19, "h_r_ph", 6))
  37835. break;
  37836. return Intrinsic::mips_subqh_r_ph; // "__builtin_mips_subqh_r_ph"
  37837. case 'u': // 1 string to match.
  37838. if (memcmp(BuiltinName.data()+19, "h_r_qb", 6))
  37839. break;
  37840. return Intrinsic::mips_subuh_r_qb; // "__builtin_mips_subuh_r_qb"
  37841. }
  37842. break;
  37843. }
  37844. break;
  37845. case 26: // 11 strings to match.
  37846. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37847. break;
  37848. switch (BuiltinName[15]) {
  37849. default: break;
  37850. case 'c': // 3 strings to match.
  37851. if (memcmp(BuiltinName.data()+16, "mpgu_", 5))
  37852. break;
  37853. switch (BuiltinName[21]) {
  37854. default: break;
  37855. case 'e': // 1 string to match.
  37856. if (memcmp(BuiltinName.data()+22, "q_qb", 4))
  37857. break;
  37858. return Intrinsic::mips_cmpgu_eq_qb; // "__builtin_mips_cmpgu_eq_qb"
  37859. case 'l': // 2 strings to match.
  37860. switch (BuiltinName[22]) {
  37861. default: break;
  37862. case 'e': // 1 string to match.
  37863. if (memcmp(BuiltinName.data()+23, "_qb", 3))
  37864. break;
  37865. return Intrinsic::mips_cmpgu_le_qb; // "__builtin_mips_cmpgu_le_qb"
  37866. case 't': // 1 string to match.
  37867. if (memcmp(BuiltinName.data()+23, "_qb", 3))
  37868. break;
  37869. return Intrinsic::mips_cmpgu_lt_qb; // "__builtin_mips_cmpgu_lt_qb"
  37870. }
  37871. break;
  37872. }
  37873. break;
  37874. case 'd': // 4 strings to match.
  37875. if (BuiltinName[16] != 'p')
  37876. break;
  37877. switch (BuiltinName[17]) {
  37878. default: break;
  37879. case 'a': // 2 strings to match.
  37880. if (memcmp(BuiltinName.data()+18, "q_s", 3))
  37881. break;
  37882. switch (BuiltinName[21]) {
  37883. default: break;
  37884. case '_': // 1 string to match.
  37885. if (memcmp(BuiltinName.data()+22, "w_ph", 4))
  37886. break;
  37887. return Intrinsic::mips_dpaq_s_w_ph; // "__builtin_mips_dpaq_s_w_ph"
  37888. case 'a': // 1 string to match.
  37889. if (memcmp(BuiltinName.data()+22, "_l_w", 4))
  37890. break;
  37891. return Intrinsic::mips_dpaq_sa_l_w; // "__builtin_mips_dpaq_sa_l_w"
  37892. }
  37893. break;
  37894. case 's': // 2 strings to match.
  37895. if (memcmp(BuiltinName.data()+18, "q_s", 3))
  37896. break;
  37897. switch (BuiltinName[21]) {
  37898. default: break;
  37899. case '_': // 1 string to match.
  37900. if (memcmp(BuiltinName.data()+22, "w_ph", 4))
  37901. break;
  37902. return Intrinsic::mips_dpsq_s_w_ph; // "__builtin_mips_dpsq_s_w_ph"
  37903. case 'a': // 1 string to match.
  37904. if (memcmp(BuiltinName.data()+22, "_l_w", 4))
  37905. break;
  37906. return Intrinsic::mips_dpsq_sa_l_w; // "__builtin_mips_dpsq_sa_l_w"
  37907. }
  37908. break;
  37909. }
  37910. break;
  37911. case 'm': // 2 strings to match.
  37912. if (memcmp(BuiltinName.data()+16, "aq_s_w_ph", 9))
  37913. break;
  37914. switch (BuiltinName[25]) {
  37915. default: break;
  37916. case 'l': // 1 string to match.
  37917. return Intrinsic::mips_maq_s_w_phl; // "__builtin_mips_maq_s_w_phl"
  37918. case 'r': // 1 string to match.
  37919. return Intrinsic::mips_maq_s_w_phr; // "__builtin_mips_maq_s_w_phr"
  37920. }
  37921. break;
  37922. case 'p': // 2 strings to match.
  37923. if (memcmp(BuiltinName.data()+16, "recr", 4))
  37924. break;
  37925. switch (BuiltinName[20]) {
  37926. default: break;
  37927. case '_': // 1 string to match.
  37928. if (memcmp(BuiltinName.data()+21, "qb_ph", 5))
  37929. break;
  37930. return Intrinsic::mips_precr_qb_ph; // "__builtin_mips_precr_qb_ph"
  37931. case 'q': // 1 string to match.
  37932. if (memcmp(BuiltinName.data()+21, "_ph_w", 5))
  37933. break;
  37934. return Intrinsic::mips_precrq_ph_w; // "__builtin_mips_precrq_ph_w"
  37935. }
  37936. break;
  37937. }
  37938. break;
  37939. case 27: // 10 strings to match.
  37940. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37941. break;
  37942. switch (BuiltinName[15]) {
  37943. default: break;
  37944. case 'c': // 3 strings to match.
  37945. if (memcmp(BuiltinName.data()+16, "mpgdu_", 6))
  37946. break;
  37947. switch (BuiltinName[22]) {
  37948. default: break;
  37949. case 'e': // 1 string to match.
  37950. if (memcmp(BuiltinName.data()+23, "q_qb", 4))
  37951. break;
  37952. return Intrinsic::mips_cmpgdu_eq_qb; // "__builtin_mips_cmpgdu_eq_qb"
  37953. case 'l': // 2 strings to match.
  37954. switch (BuiltinName[23]) {
  37955. default: break;
  37956. case 'e': // 1 string to match.
  37957. if (memcmp(BuiltinName.data()+24, "_qb", 3))
  37958. break;
  37959. return Intrinsic::mips_cmpgdu_le_qb; // "__builtin_mips_cmpgdu_le_qb"
  37960. case 't': // 1 string to match.
  37961. if (memcmp(BuiltinName.data()+24, "_qb", 3))
  37962. break;
  37963. return Intrinsic::mips_cmpgdu_lt_qb; // "__builtin_mips_cmpgdu_lt_qb"
  37964. }
  37965. break;
  37966. }
  37967. break;
  37968. case 'd': // 2 strings to match.
  37969. if (BuiltinName[16] != 'p')
  37970. break;
  37971. switch (BuiltinName[17]) {
  37972. default: break;
  37973. case 'a': // 1 string to match.
  37974. if (memcmp(BuiltinName.data()+18, "qx_s_w_ph", 9))
  37975. break;
  37976. return Intrinsic::mips_dpaqx_s_w_ph; // "__builtin_mips_dpaqx_s_w_ph"
  37977. case 's': // 1 string to match.
  37978. if (memcmp(BuiltinName.data()+18, "qx_s_w_ph", 9))
  37979. break;
  37980. return Intrinsic::mips_dpsqx_s_w_ph; // "__builtin_mips_dpsqx_s_w_ph"
  37981. }
  37982. break;
  37983. case 'm': // 2 strings to match.
  37984. if (memcmp(BuiltinName.data()+16, "aq_sa_w_ph", 10))
  37985. break;
  37986. switch (BuiltinName[26]) {
  37987. default: break;
  37988. case 'l': // 1 string to match.
  37989. return Intrinsic::mips_maq_sa_w_phl; // "__builtin_mips_maq_sa_w_phl"
  37990. case 'r': // 1 string to match.
  37991. return Intrinsic::mips_maq_sa_w_phr; // "__builtin_mips_maq_sa_w_phr"
  37992. }
  37993. break;
  37994. case 'p': // 3 strings to match.
  37995. if (memcmp(BuiltinName.data()+16, "rec", 3))
  37996. break;
  37997. switch (BuiltinName[19]) {
  37998. default: break;
  37999. case 'e': // 2 strings to match.
  38000. if (memcmp(BuiltinName.data()+20, "q_w_ph", 6))
  38001. break;
  38002. switch (BuiltinName[26]) {
  38003. default: break;
  38004. case 'l': // 1 string to match.
  38005. return Intrinsic::mips_preceq_w_phl; // "__builtin_mips_preceq_w_phl"
  38006. case 'r': // 1 string to match.
  38007. return Intrinsic::mips_preceq_w_phr; // "__builtin_mips_preceq_w_phr"
  38008. }
  38009. break;
  38010. case 'r': // 1 string to match.
  38011. if (memcmp(BuiltinName.data()+20, "q_qb_ph", 7))
  38012. break;
  38013. return Intrinsic::mips_precrq_qb_ph; // "__builtin_mips_precrq_qb_ph"
  38014. }
  38015. break;
  38016. }
  38017. break;
  38018. case 28: // 7 strings to match.
  38019. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  38020. break;
  38021. switch (BuiltinName[15]) {
  38022. default: break;
  38023. case 'd': // 2 strings to match.
  38024. if (BuiltinName[16] != 'p')
  38025. break;
  38026. switch (BuiltinName[17]) {
  38027. default: break;
  38028. case 'a': // 1 string to match.
  38029. if (memcmp(BuiltinName.data()+18, "qx_sa_w_ph", 10))
  38030. break;
  38031. return Intrinsic::mips_dpaqx_sa_w_ph; // "__builtin_mips_dpaqx_sa_w_ph"
  38032. case 's': // 1 string to match.
  38033. if (memcmp(BuiltinName.data()+18, "qx_sa_w_ph", 10))
  38034. break;
  38035. return Intrinsic::mips_dpsqx_sa_w_ph; // "__builtin_mips_dpsqx_sa_w_ph"
  38036. }
  38037. break;
  38038. case 'm': // 3 strings to match.
  38039. if (memcmp(BuiltinName.data()+16, "ul", 2))
  38040. break;
  38041. switch (BuiltinName[18]) {
  38042. default: break;
  38043. case 'e': // 2 strings to match.
  38044. if (memcmp(BuiltinName.data()+19, "q_s_w_ph", 8))
  38045. break;
  38046. switch (BuiltinName[27]) {
  38047. default: break;
  38048. case 'l': // 1 string to match.
  38049. return Intrinsic::mips_muleq_s_w_phl; // "__builtin_mips_muleq_s_w_phl"
  38050. case 'r': // 1 string to match.
  38051. return Intrinsic::mips_muleq_s_w_phr; // "__builtin_mips_muleq_s_w_phr"
  38052. }
  38053. break;
  38054. case 's': // 1 string to match.
  38055. if (memcmp(BuiltinName.data()+19, "aq_s_w_ph", 9))
  38056. break;
  38057. return Intrinsic::mips_mulsaq_s_w_ph; // "__builtin_mips_mulsaq_s_w_ph"
  38058. }
  38059. break;
  38060. case 'p': // 2 strings to match.
  38061. if (memcmp(BuiltinName.data()+16, "receu_ph_qb", 11))
  38062. break;
  38063. switch (BuiltinName[27]) {
  38064. default: break;
  38065. case 'l': // 1 string to match.
  38066. return Intrinsic::mips_preceu_ph_qbl; // "__builtin_mips_preceu_ph_qbl"
  38067. case 'r': // 1 string to match.
  38068. return Intrinsic::mips_preceu_ph_qbr; // "__builtin_mips_preceu_ph_qbr"
  38069. }
  38070. break;
  38071. }
  38072. break;
  38073. case 29: // 8 strings to match.
  38074. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  38075. break;
  38076. switch (BuiltinName[15]) {
  38077. default: break;
  38078. case 'm': // 2 strings to match.
  38079. if (memcmp(BuiltinName.data()+16, "uleu_s_ph_qb", 12))
  38080. break;
  38081. switch (BuiltinName[28]) {
  38082. default: break;
  38083. case 'l': // 1 string to match.
  38084. return Intrinsic::mips_muleu_s_ph_qbl; // "__builtin_mips_muleu_s_ph_qbl"
  38085. case 'r': // 1 string to match.
  38086. return Intrinsic::mips_muleu_s_ph_qbr; // "__builtin_mips_muleu_s_ph_qbr"
  38087. }
  38088. break;
  38089. case 'p': // 6 strings to match.
  38090. if (memcmp(BuiltinName.data()+16, "rec", 3))
  38091. break;
  38092. switch (BuiltinName[19]) {
  38093. default: break;
  38094. case 'e': // 4 strings to match.
  38095. switch (BuiltinName[20]) {
  38096. default: break;
  38097. case 'q': // 2 strings to match.
  38098. if (memcmp(BuiltinName.data()+21, "u_ph_qb", 7))
  38099. break;
  38100. switch (BuiltinName[28]) {
  38101. default: break;
  38102. case 'l': // 1 string to match.
  38103. return Intrinsic::mips_precequ_ph_qbl; // "__builtin_mips_precequ_ph_qbl"
  38104. case 'r': // 1 string to match.
  38105. return Intrinsic::mips_precequ_ph_qbr; // "__builtin_mips_precequ_ph_qbr"
  38106. }
  38107. break;
  38108. case 'u': // 2 strings to match.
  38109. if (memcmp(BuiltinName.data()+21, "_ph_qb", 6))
  38110. break;
  38111. switch (BuiltinName[27]) {
  38112. default: break;
  38113. case 'l': // 1 string to match.
  38114. if (BuiltinName[28] != 'a')
  38115. break;
  38116. return Intrinsic::mips_preceu_ph_qbla; // "__builtin_mips_preceu_ph_qbla"
  38117. case 'r': // 1 string to match.
  38118. if (BuiltinName[28] != 'a')
  38119. break;
  38120. return Intrinsic::mips_preceu_ph_qbra; // "__builtin_mips_preceu_ph_qbra"
  38121. }
  38122. break;
  38123. }
  38124. break;
  38125. case 'r': // 2 strings to match.
  38126. switch (BuiltinName[20]) {
  38127. default: break;
  38128. case '_': // 1 string to match.
  38129. if (memcmp(BuiltinName.data()+21, "sra_ph_w", 8))
  38130. break;
  38131. return Intrinsic::mips_precr_sra_ph_w; // "__builtin_mips_precr_sra_ph_w"
  38132. case 'q': // 1 string to match.
  38133. if (memcmp(BuiltinName.data()+21, "_rs_ph_w", 8))
  38134. break;
  38135. return Intrinsic::mips_precrq_rs_ph_w; // "__builtin_mips_precrq_rs_ph_w"
  38136. }
  38137. break;
  38138. }
  38139. break;
  38140. }
  38141. break;
  38142. case 30: // 3 strings to match.
  38143. if (memcmp(BuiltinName.data()+0, "__builtin_mips_prec", 19))
  38144. break;
  38145. switch (BuiltinName[19]) {
  38146. default: break;
  38147. case 'e': // 2 strings to match.
  38148. if (memcmp(BuiltinName.data()+20, "qu_ph_qb", 8))
  38149. break;
  38150. switch (BuiltinName[28]) {
  38151. default: break;
  38152. case 'l': // 1 string to match.
  38153. if (BuiltinName[29] != 'a')
  38154. break;
  38155. return Intrinsic::mips_precequ_ph_qbla; // "__builtin_mips_precequ_ph_qbla"
  38156. case 'r': // 1 string to match.
  38157. if (BuiltinName[29] != 'a')
  38158. break;
  38159. return Intrinsic::mips_precequ_ph_qbra; // "__builtin_mips_precequ_ph_qbra"
  38160. }
  38161. break;
  38162. case 'r': // 1 string to match.
  38163. if (memcmp(BuiltinName.data()+20, "qu_s_qb_ph", 10))
  38164. break;
  38165. return Intrinsic::mips_precrqu_s_qb_ph; // "__builtin_mips_precrqu_s_qb_ph"
  38166. }
  38167. break;
  38168. case 31: // 1 string to match.
  38169. if (memcmp(BuiltinName.data()+0, "__builtin_mips_precr_sra_r_ph_w", 31))
  38170. break;
  38171. return Intrinsic::mips_precr_sra_r_ph_w; // "__builtin_mips_precr_sra_r_ph_w"
  38172. }
  38173. }
  38174. if (TargetPrefix == "ppc") {
  38175. switch (BuiltinName.size()) {
  38176. default: break;
  38177. case 21: // 4 strings to match.
  38178. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  38179. break;
  38180. switch (BuiltinName[18]) {
  38181. default: break;
  38182. case 'd': // 2 strings to match.
  38183. if (BuiltinName[19] != 's')
  38184. break;
  38185. switch (BuiltinName[20]) {
  38186. default: break;
  38187. case 's': // 1 string to match.
  38188. return Intrinsic::ppc_altivec_dss; // "__builtin_altivec_dss"
  38189. case 't': // 1 string to match.
  38190. return Intrinsic::ppc_altivec_dst; // "__builtin_altivec_dst"
  38191. }
  38192. break;
  38193. case 'v': // 2 strings to match.
  38194. if (BuiltinName[19] != 's')
  38195. break;
  38196. switch (BuiltinName[20]) {
  38197. default: break;
  38198. case 'l': // 1 string to match.
  38199. return Intrinsic::ppc_altivec_vsl; // "__builtin_altivec_vsl"
  38200. case 'r': // 1 string to match.
  38201. return Intrinsic::ppc_altivec_vsr; // "__builtin_altivec_vsr"
  38202. }
  38203. break;
  38204. }
  38205. break;
  38206. case 22: // 12 strings to match.
  38207. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  38208. break;
  38209. switch (BuiltinName[18]) {
  38210. default: break;
  38211. case 'd': // 1 string to match.
  38212. if (memcmp(BuiltinName.data()+19, "stt", 3))
  38213. break;
  38214. return Intrinsic::ppc_altivec_dstt; // "__builtin_altivec_dstt"
  38215. case 'v': // 11 strings to match.
  38216. switch (BuiltinName[19]) {
  38217. default: break;
  38218. case 'r': // 3 strings to match.
  38219. if (BuiltinName[20] != 'l')
  38220. break;
  38221. switch (BuiltinName[21]) {
  38222. default: break;
  38223. case 'b': // 1 string to match.
  38224. return Intrinsic::ppc_altivec_vrlb; // "__builtin_altivec_vrlb"
  38225. case 'h': // 1 string to match.
  38226. return Intrinsic::ppc_altivec_vrlh; // "__builtin_altivec_vrlh"
  38227. case 'w': // 1 string to match.
  38228. return Intrinsic::ppc_altivec_vrlw; // "__builtin_altivec_vrlw"
  38229. }
  38230. break;
  38231. case 's': // 8 strings to match.
  38232. switch (BuiltinName[20]) {
  38233. default: break;
  38234. case 'l': // 4 strings to match.
  38235. switch (BuiltinName[21]) {
  38236. default: break;
  38237. case 'b': // 1 string to match.
  38238. return Intrinsic::ppc_altivec_vslb; // "__builtin_altivec_vslb"
  38239. case 'h': // 1 string to match.
  38240. return Intrinsic::ppc_altivec_vslh; // "__builtin_altivec_vslh"
  38241. case 'o': // 1 string to match.
  38242. return Intrinsic::ppc_altivec_vslo; // "__builtin_altivec_vslo"
  38243. case 'w': // 1 string to match.
  38244. return Intrinsic::ppc_altivec_vslw; // "__builtin_altivec_vslw"
  38245. }
  38246. break;
  38247. case 'r': // 4 strings to match.
  38248. switch (BuiltinName[21]) {
  38249. default: break;
  38250. case 'b': // 1 string to match.
  38251. return Intrinsic::ppc_altivec_vsrb; // "__builtin_altivec_vsrb"
  38252. case 'h': // 1 string to match.
  38253. return Intrinsic::ppc_altivec_vsrh; // "__builtin_altivec_vsrh"
  38254. case 'o': // 1 string to match.
  38255. return Intrinsic::ppc_altivec_vsro; // "__builtin_altivec_vsro"
  38256. case 'w': // 1 string to match.
  38257. return Intrinsic::ppc_altivec_vsrw; // "__builtin_altivec_vsrw"
  38258. }
  38259. break;
  38260. }
  38261. break;
  38262. }
  38263. break;
  38264. }
  38265. break;
  38266. case 23: // 12 strings to match.
  38267. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  38268. break;
  38269. switch (BuiltinName[18]) {
  38270. default: break;
  38271. case 'd': // 1 string to match.
  38272. if (memcmp(BuiltinName.data()+19, "stst", 4))
  38273. break;
  38274. return Intrinsic::ppc_altivec_dstst; // "__builtin_altivec_dstst"
  38275. case 'v': // 11 strings to match.
  38276. switch (BuiltinName[19]) {
  38277. default: break;
  38278. case 'c': // 2 strings to match.
  38279. if (BuiltinName[20] != 'f')
  38280. break;
  38281. switch (BuiltinName[21]) {
  38282. default: break;
  38283. case 's': // 1 string to match.
  38284. if (BuiltinName[22] != 'x')
  38285. break;
  38286. return Intrinsic::ppc_altivec_vcfsx; // "__builtin_altivec_vcfsx"
  38287. case 'u': // 1 string to match.
  38288. if (BuiltinName[22] != 'x')
  38289. break;
  38290. return Intrinsic::ppc_altivec_vcfux; // "__builtin_altivec_vcfux"
  38291. }
  38292. break;
  38293. case 'p': // 1 string to match.
  38294. if (memcmp(BuiltinName.data()+20, "kpx", 3))
  38295. break;
  38296. return Intrinsic::ppc_altivec_vpkpx; // "__builtin_altivec_vpkpx"
  38297. case 'r': // 5 strings to match.
  38298. switch (BuiltinName[20]) {
  38299. default: break;
  38300. case 'e': // 1 string to match.
  38301. if (memcmp(BuiltinName.data()+21, "fp", 2))
  38302. break;
  38303. return Intrinsic::ppc_altivec_vrefp; // "__builtin_altivec_vrefp"
  38304. case 'f': // 4 strings to match.
  38305. if (BuiltinName[21] != 'i')
  38306. break;
  38307. switch (BuiltinName[22]) {
  38308. default: break;
  38309. case 'm': // 1 string to match.
  38310. return Intrinsic::ppc_altivec_vrfim; // "__builtin_altivec_vrfim"
  38311. case 'n': // 1 string to match.
  38312. return Intrinsic::ppc_altivec_vrfin; // "__builtin_altivec_vrfin"
  38313. case 'p': // 1 string to match.
  38314. return Intrinsic::ppc_altivec_vrfip; // "__builtin_altivec_vrfip"
  38315. case 'z': // 1 string to match.
  38316. return Intrinsic::ppc_altivec_vrfiz; // "__builtin_altivec_vrfiz"
  38317. }
  38318. break;
  38319. }
  38320. break;
  38321. case 's': // 3 strings to match.
  38322. if (memcmp(BuiltinName.data()+20, "ra", 2))
  38323. break;
  38324. switch (BuiltinName[22]) {
  38325. default: break;
  38326. case 'b': // 1 string to match.
  38327. return Intrinsic::ppc_altivec_vsrab; // "__builtin_altivec_vsrab"
  38328. case 'h': // 1 string to match.
  38329. return Intrinsic::ppc_altivec_vsrah; // "__builtin_altivec_vsrah"
  38330. case 'w': // 1 string to match.
  38331. return Intrinsic::ppc_altivec_vsraw; // "__builtin_altivec_vsraw"
  38332. }
  38333. break;
  38334. }
  38335. break;
  38336. }
  38337. break;
  38338. case 24: // 26 strings to match.
  38339. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  38340. break;
  38341. switch (BuiltinName[18]) {
  38342. default: break;
  38343. case 'd': // 2 strings to match.
  38344. if (BuiltinName[19] != 's')
  38345. break;
  38346. switch (BuiltinName[20]) {
  38347. default: break;
  38348. case 's': // 1 string to match.
  38349. if (memcmp(BuiltinName.data()+21, "all", 3))
  38350. break;
  38351. return Intrinsic::ppc_altivec_dssall; // "__builtin_altivec_dssall"
  38352. case 't': // 1 string to match.
  38353. if (memcmp(BuiltinName.data()+21, "stt", 3))
  38354. break;
  38355. return Intrinsic::ppc_altivec_dststt; // "__builtin_altivec_dststt"
  38356. }
  38357. break;
  38358. case 'm': // 2 strings to match.
  38359. switch (BuiltinName[19]) {
  38360. default: break;
  38361. case 'f': // 1 string to match.
  38362. if (memcmp(BuiltinName.data()+20, "vscr", 4))
  38363. break;
  38364. return Intrinsic::ppc_altivec_mfvscr; // "__builtin_altivec_mfvscr"
  38365. case 't': // 1 string to match.
  38366. if (memcmp(BuiltinName.data()+20, "vscr", 4))
  38367. break;
  38368. return Intrinsic::ppc_altivec_mtvscr; // "__builtin_altivec_mtvscr"
  38369. }
  38370. break;
  38371. case 'v': // 22 strings to match.
  38372. switch (BuiltinName[19]) {
  38373. default: break;
  38374. case 'a': // 6 strings to match.
  38375. if (memcmp(BuiltinName.data()+20, "vg", 2))
  38376. break;
  38377. switch (BuiltinName[22]) {
  38378. default: break;
  38379. case 's': // 3 strings to match.
  38380. switch (BuiltinName[23]) {
  38381. default: break;
  38382. case 'b': // 1 string to match.
  38383. return Intrinsic::ppc_altivec_vavgsb; // "__builtin_altivec_vavgsb"
  38384. case 'h': // 1 string to match.
  38385. return Intrinsic::ppc_altivec_vavgsh; // "__builtin_altivec_vavgsh"
  38386. case 'w': // 1 string to match.
  38387. return Intrinsic::ppc_altivec_vavgsw; // "__builtin_altivec_vavgsw"
  38388. }
  38389. break;
  38390. case 'u': // 3 strings to match.
  38391. switch (BuiltinName[23]) {
  38392. default: break;
  38393. case 'b': // 1 string to match.
  38394. return Intrinsic::ppc_altivec_vavgub; // "__builtin_altivec_vavgub"
  38395. case 'h': // 1 string to match.
  38396. return Intrinsic::ppc_altivec_vavguh; // "__builtin_altivec_vavguh"
  38397. case 'w': // 1 string to match.
  38398. return Intrinsic::ppc_altivec_vavguw; // "__builtin_altivec_vavguw"
  38399. }
  38400. break;
  38401. }
  38402. break;
  38403. case 'c': // 2 strings to match.
  38404. if (BuiltinName[20] != 't')
  38405. break;
  38406. switch (BuiltinName[21]) {
  38407. default: break;
  38408. case 's': // 1 string to match.
  38409. if (memcmp(BuiltinName.data()+22, "xs", 2))
  38410. break;
  38411. return Intrinsic::ppc_altivec_vctsxs; // "__builtin_altivec_vctsxs"
  38412. case 'u': // 1 string to match.
  38413. if (memcmp(BuiltinName.data()+22, "xs", 2))
  38414. break;
  38415. return Intrinsic::ppc_altivec_vctuxs; // "__builtin_altivec_vctuxs"
  38416. }
  38417. break;
  38418. case 'm': // 14 strings to match.
  38419. switch (BuiltinName[20]) {
  38420. default: break;
  38421. case 'a': // 7 strings to match.
  38422. if (BuiltinName[21] != 'x')
  38423. break;
  38424. switch (BuiltinName[22]) {
  38425. default: break;
  38426. case 'f': // 1 string to match.
  38427. if (BuiltinName[23] != 'p')
  38428. break;
  38429. return Intrinsic::ppc_altivec_vmaxfp; // "__builtin_altivec_vmaxfp"
  38430. case 's': // 3 strings to match.
  38431. switch (BuiltinName[23]) {
  38432. default: break;
  38433. case 'b': // 1 string to match.
  38434. return Intrinsic::ppc_altivec_vmaxsb; // "__builtin_altivec_vmaxsb"
  38435. case 'h': // 1 string to match.
  38436. return Intrinsic::ppc_altivec_vmaxsh; // "__builtin_altivec_vmaxsh"
  38437. case 'w': // 1 string to match.
  38438. return Intrinsic::ppc_altivec_vmaxsw; // "__builtin_altivec_vmaxsw"
  38439. }
  38440. break;
  38441. case 'u': // 3 strings to match.
  38442. switch (BuiltinName[23]) {
  38443. default: break;
  38444. case 'b': // 1 string to match.
  38445. return Intrinsic::ppc_altivec_vmaxub; // "__builtin_altivec_vmaxub"
  38446. case 'h': // 1 string to match.
  38447. return Intrinsic::ppc_altivec_vmaxuh; // "__builtin_altivec_vmaxuh"
  38448. case 'w': // 1 string to match.
  38449. return Intrinsic::ppc_altivec_vmaxuw; // "__builtin_altivec_vmaxuw"
  38450. }
  38451. break;
  38452. }
  38453. break;
  38454. case 'i': // 7 strings to match.
  38455. if (BuiltinName[21] != 'n')
  38456. break;
  38457. switch (BuiltinName[22]) {
  38458. default: break;
  38459. case 'f': // 1 string to match.
  38460. if (BuiltinName[23] != 'p')
  38461. break;
  38462. return Intrinsic::ppc_altivec_vminfp; // "__builtin_altivec_vminfp"
  38463. case 's': // 3 strings to match.
  38464. switch (BuiltinName[23]) {
  38465. default: break;
  38466. case 'b': // 1 string to match.
  38467. return Intrinsic::ppc_altivec_vminsb; // "__builtin_altivec_vminsb"
  38468. case 'h': // 1 string to match.
  38469. return Intrinsic::ppc_altivec_vminsh; // "__builtin_altivec_vminsh"
  38470. case 'w': // 1 string to match.
  38471. return Intrinsic::ppc_altivec_vminsw; // "__builtin_altivec_vminsw"
  38472. }
  38473. break;
  38474. case 'u': // 3 strings to match.
  38475. switch (BuiltinName[23]) {
  38476. default: break;
  38477. case 'b': // 1 string to match.
  38478. return Intrinsic::ppc_altivec_vminub; // "__builtin_altivec_vminub"
  38479. case 'h': // 1 string to match.
  38480. return Intrinsic::ppc_altivec_vminuh; // "__builtin_altivec_vminuh"
  38481. case 'w': // 1 string to match.
  38482. return Intrinsic::ppc_altivec_vminuw; // "__builtin_altivec_vminuw"
  38483. }
  38484. break;
  38485. }
  38486. break;
  38487. }
  38488. break;
  38489. }
  38490. break;
  38491. }
  38492. break;
  38493. case 25: // 38 strings to match.
  38494. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38495. break;
  38496. switch (BuiltinName[19]) {
  38497. default: break;
  38498. case 'a': // 7 strings to match.
  38499. if (memcmp(BuiltinName.data()+20, "dd", 2))
  38500. break;
  38501. switch (BuiltinName[22]) {
  38502. default: break;
  38503. case 'c': // 1 string to match.
  38504. if (memcmp(BuiltinName.data()+23, "uw", 2))
  38505. break;
  38506. return Intrinsic::ppc_altivec_vaddcuw; // "__builtin_altivec_vaddcuw"
  38507. case 's': // 3 strings to match.
  38508. switch (BuiltinName[23]) {
  38509. default: break;
  38510. case 'b': // 1 string to match.
  38511. if (BuiltinName[24] != 's')
  38512. break;
  38513. return Intrinsic::ppc_altivec_vaddsbs; // "__builtin_altivec_vaddsbs"
  38514. case 'h': // 1 string to match.
  38515. if (BuiltinName[24] != 's')
  38516. break;
  38517. return Intrinsic::ppc_altivec_vaddshs; // "__builtin_altivec_vaddshs"
  38518. case 'w': // 1 string to match.
  38519. if (BuiltinName[24] != 's')
  38520. break;
  38521. return Intrinsic::ppc_altivec_vaddsws; // "__builtin_altivec_vaddsws"
  38522. }
  38523. break;
  38524. case 'u': // 3 strings to match.
  38525. switch (BuiltinName[23]) {
  38526. default: break;
  38527. case 'b': // 1 string to match.
  38528. if (BuiltinName[24] != 's')
  38529. break;
  38530. return Intrinsic::ppc_altivec_vaddubs; // "__builtin_altivec_vaddubs"
  38531. case 'h': // 1 string to match.
  38532. if (BuiltinName[24] != 's')
  38533. break;
  38534. return Intrinsic::ppc_altivec_vadduhs; // "__builtin_altivec_vadduhs"
  38535. case 'w': // 1 string to match.
  38536. if (BuiltinName[24] != 's')
  38537. break;
  38538. return Intrinsic::ppc_altivec_vadduws; // "__builtin_altivec_vadduws"
  38539. }
  38540. break;
  38541. }
  38542. break;
  38543. case 'c': // 1 string to match.
  38544. if (memcmp(BuiltinName.data()+20, "mpbfp", 5))
  38545. break;
  38546. return Intrinsic::ppc_altivec_vcmpbfp; // "__builtin_altivec_vcmpbfp"
  38547. case 'l': // 1 string to match.
  38548. if (memcmp(BuiltinName.data()+20, "ogefp", 5))
  38549. break;
  38550. return Intrinsic::ppc_altivec_vlogefp; // "__builtin_altivec_vlogefp"
  38551. case 'm': // 9 strings to match.
  38552. switch (BuiltinName[20]) {
  38553. default: break;
  38554. case 'a': // 1 string to match.
  38555. if (memcmp(BuiltinName.data()+21, "ddfp", 4))
  38556. break;
  38557. return Intrinsic::ppc_altivec_vmaddfp; // "__builtin_altivec_vmaddfp"
  38558. case 'u': // 8 strings to match.
  38559. if (BuiltinName[21] != 'l')
  38560. break;
  38561. switch (BuiltinName[22]) {
  38562. default: break;
  38563. case 'e': // 4 strings to match.
  38564. switch (BuiltinName[23]) {
  38565. default: break;
  38566. case 's': // 2 strings to match.
  38567. switch (BuiltinName[24]) {
  38568. default: break;
  38569. case 'b': // 1 string to match.
  38570. return Intrinsic::ppc_altivec_vmulesb; // "__builtin_altivec_vmulesb"
  38571. case 'h': // 1 string to match.
  38572. return Intrinsic::ppc_altivec_vmulesh; // "__builtin_altivec_vmulesh"
  38573. }
  38574. break;
  38575. case 'u': // 2 strings to match.
  38576. switch (BuiltinName[24]) {
  38577. default: break;
  38578. case 'b': // 1 string to match.
  38579. return Intrinsic::ppc_altivec_vmuleub; // "__builtin_altivec_vmuleub"
  38580. case 'h': // 1 string to match.
  38581. return Intrinsic::ppc_altivec_vmuleuh; // "__builtin_altivec_vmuleuh"
  38582. }
  38583. break;
  38584. }
  38585. break;
  38586. case 'o': // 4 strings to match.
  38587. switch (BuiltinName[23]) {
  38588. default: break;
  38589. case 's': // 2 strings to match.
  38590. switch (BuiltinName[24]) {
  38591. default: break;
  38592. case 'b': // 1 string to match.
  38593. return Intrinsic::ppc_altivec_vmulosb; // "__builtin_altivec_vmulosb"
  38594. case 'h': // 1 string to match.
  38595. return Intrinsic::ppc_altivec_vmulosh; // "__builtin_altivec_vmulosh"
  38596. }
  38597. break;
  38598. case 'u': // 2 strings to match.
  38599. switch (BuiltinName[24]) {
  38600. default: break;
  38601. case 'b': // 1 string to match.
  38602. return Intrinsic::ppc_altivec_vmuloub; // "__builtin_altivec_vmuloub"
  38603. case 'h': // 1 string to match.
  38604. return Intrinsic::ppc_altivec_vmulouh; // "__builtin_altivec_vmulouh"
  38605. }
  38606. break;
  38607. }
  38608. break;
  38609. }
  38610. break;
  38611. }
  38612. break;
  38613. case 'p': // 6 strings to match.
  38614. if (BuiltinName[20] != 'k')
  38615. break;
  38616. switch (BuiltinName[21]) {
  38617. default: break;
  38618. case 's': // 4 strings to match.
  38619. switch (BuiltinName[22]) {
  38620. default: break;
  38621. case 'h': // 2 strings to match.
  38622. switch (BuiltinName[23]) {
  38623. default: break;
  38624. case 's': // 1 string to match.
  38625. if (BuiltinName[24] != 's')
  38626. break;
  38627. return Intrinsic::ppc_altivec_vpkshss; // "__builtin_altivec_vpkshss"
  38628. case 'u': // 1 string to match.
  38629. if (BuiltinName[24] != 's')
  38630. break;
  38631. return Intrinsic::ppc_altivec_vpkshus; // "__builtin_altivec_vpkshus"
  38632. }
  38633. break;
  38634. case 'w': // 2 strings to match.
  38635. switch (BuiltinName[23]) {
  38636. default: break;
  38637. case 's': // 1 string to match.
  38638. if (BuiltinName[24] != 's')
  38639. break;
  38640. return Intrinsic::ppc_altivec_vpkswss; // "__builtin_altivec_vpkswss"
  38641. case 'u': // 1 string to match.
  38642. if (BuiltinName[24] != 's')
  38643. break;
  38644. return Intrinsic::ppc_altivec_vpkswus; // "__builtin_altivec_vpkswus"
  38645. }
  38646. break;
  38647. }
  38648. break;
  38649. case 'u': // 2 strings to match.
  38650. switch (BuiltinName[22]) {
  38651. default: break;
  38652. case 'h': // 1 string to match.
  38653. if (memcmp(BuiltinName.data()+23, "us", 2))
  38654. break;
  38655. return Intrinsic::ppc_altivec_vpkuhus; // "__builtin_altivec_vpkuhus"
  38656. case 'w': // 1 string to match.
  38657. if (memcmp(BuiltinName.data()+23, "us", 2))
  38658. break;
  38659. return Intrinsic::ppc_altivec_vpkuwus; // "__builtin_altivec_vpkuwus"
  38660. }
  38661. break;
  38662. }
  38663. break;
  38664. case 's': // 8 strings to match.
  38665. if (BuiltinName[20] != 'u')
  38666. break;
  38667. switch (BuiltinName[21]) {
  38668. default: break;
  38669. case 'b': // 7 strings to match.
  38670. switch (BuiltinName[22]) {
  38671. default: break;
  38672. case 'c': // 1 string to match.
  38673. if (memcmp(BuiltinName.data()+23, "uw", 2))
  38674. break;
  38675. return Intrinsic::ppc_altivec_vsubcuw; // "__builtin_altivec_vsubcuw"
  38676. case 's': // 3 strings to match.
  38677. switch (BuiltinName[23]) {
  38678. default: break;
  38679. case 'b': // 1 string to match.
  38680. if (BuiltinName[24] != 's')
  38681. break;
  38682. return Intrinsic::ppc_altivec_vsubsbs; // "__builtin_altivec_vsubsbs"
  38683. case 'h': // 1 string to match.
  38684. if (BuiltinName[24] != 's')
  38685. break;
  38686. return Intrinsic::ppc_altivec_vsubshs; // "__builtin_altivec_vsubshs"
  38687. case 'w': // 1 string to match.
  38688. if (BuiltinName[24] != 's')
  38689. break;
  38690. return Intrinsic::ppc_altivec_vsubsws; // "__builtin_altivec_vsubsws"
  38691. }
  38692. break;
  38693. case 'u': // 3 strings to match.
  38694. switch (BuiltinName[23]) {
  38695. default: break;
  38696. case 'b': // 1 string to match.
  38697. if (BuiltinName[24] != 's')
  38698. break;
  38699. return Intrinsic::ppc_altivec_vsububs; // "__builtin_altivec_vsububs"
  38700. case 'h': // 1 string to match.
  38701. if (BuiltinName[24] != 's')
  38702. break;
  38703. return Intrinsic::ppc_altivec_vsubuhs; // "__builtin_altivec_vsubuhs"
  38704. case 'w': // 1 string to match.
  38705. if (BuiltinName[24] != 's')
  38706. break;
  38707. return Intrinsic::ppc_altivec_vsubuws; // "__builtin_altivec_vsubuws"
  38708. }
  38709. break;
  38710. }
  38711. break;
  38712. case 'm': // 1 string to match.
  38713. if (memcmp(BuiltinName.data()+22, "sws", 3))
  38714. break;
  38715. return Intrinsic::ppc_altivec_vsumsws; // "__builtin_altivec_vsumsws"
  38716. }
  38717. break;
  38718. case 'u': // 6 strings to match.
  38719. if (memcmp(BuiltinName.data()+20, "pk", 2))
  38720. break;
  38721. switch (BuiltinName[22]) {
  38722. default: break;
  38723. case 'h': // 3 strings to match.
  38724. switch (BuiltinName[23]) {
  38725. default: break;
  38726. case 'p': // 1 string to match.
  38727. if (BuiltinName[24] != 'x')
  38728. break;
  38729. return Intrinsic::ppc_altivec_vupkhpx; // "__builtin_altivec_vupkhpx"
  38730. case 's': // 2 strings to match.
  38731. switch (BuiltinName[24]) {
  38732. default: break;
  38733. case 'b': // 1 string to match.
  38734. return Intrinsic::ppc_altivec_vupkhsb; // "__builtin_altivec_vupkhsb"
  38735. case 'h': // 1 string to match.
  38736. return Intrinsic::ppc_altivec_vupkhsh; // "__builtin_altivec_vupkhsh"
  38737. }
  38738. break;
  38739. }
  38740. break;
  38741. case 'l': // 3 strings to match.
  38742. switch (BuiltinName[23]) {
  38743. default: break;
  38744. case 'p': // 1 string to match.
  38745. if (BuiltinName[24] != 'x')
  38746. break;
  38747. return Intrinsic::ppc_altivec_vupklpx; // "__builtin_altivec_vupklpx"
  38748. case 's': // 2 strings to match.
  38749. switch (BuiltinName[24]) {
  38750. default: break;
  38751. case 'b': // 1 string to match.
  38752. return Intrinsic::ppc_altivec_vupklsb; // "__builtin_altivec_vupklsb"
  38753. case 'h': // 1 string to match.
  38754. return Intrinsic::ppc_altivec_vupklsh; // "__builtin_altivec_vupklsh"
  38755. }
  38756. break;
  38757. }
  38758. break;
  38759. }
  38760. break;
  38761. }
  38762. break;
  38763. case 26: // 25 strings to match.
  38764. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38765. break;
  38766. switch (BuiltinName[19]) {
  38767. default: break;
  38768. case 'c': // 12 strings to match.
  38769. if (memcmp(BuiltinName.data()+20, "mp", 2))
  38770. break;
  38771. switch (BuiltinName[22]) {
  38772. default: break;
  38773. case 'e': // 4 strings to match.
  38774. if (BuiltinName[23] != 'q')
  38775. break;
  38776. switch (BuiltinName[24]) {
  38777. default: break;
  38778. case 'f': // 1 string to match.
  38779. if (BuiltinName[25] != 'p')
  38780. break;
  38781. return Intrinsic::ppc_altivec_vcmpeqfp; // "__builtin_altivec_vcmpeqfp"
  38782. case 'u': // 3 strings to match.
  38783. switch (BuiltinName[25]) {
  38784. default: break;
  38785. case 'b': // 1 string to match.
  38786. return Intrinsic::ppc_altivec_vcmpequb; // "__builtin_altivec_vcmpequb"
  38787. case 'h': // 1 string to match.
  38788. return Intrinsic::ppc_altivec_vcmpequh; // "__builtin_altivec_vcmpequh"
  38789. case 'w': // 1 string to match.
  38790. return Intrinsic::ppc_altivec_vcmpequw; // "__builtin_altivec_vcmpequw"
  38791. }
  38792. break;
  38793. }
  38794. break;
  38795. case 'g': // 8 strings to match.
  38796. switch (BuiltinName[23]) {
  38797. default: break;
  38798. case 'e': // 1 string to match.
  38799. if (memcmp(BuiltinName.data()+24, "fp", 2))
  38800. break;
  38801. return Intrinsic::ppc_altivec_vcmpgefp; // "__builtin_altivec_vcmpgefp"
  38802. case 't': // 7 strings to match.
  38803. switch (BuiltinName[24]) {
  38804. default: break;
  38805. case 'f': // 1 string to match.
  38806. if (BuiltinName[25] != 'p')
  38807. break;
  38808. return Intrinsic::ppc_altivec_vcmpgtfp; // "__builtin_altivec_vcmpgtfp"
  38809. case 's': // 3 strings to match.
  38810. switch (BuiltinName[25]) {
  38811. default: break;
  38812. case 'b': // 1 string to match.
  38813. return Intrinsic::ppc_altivec_vcmpgtsb; // "__builtin_altivec_vcmpgtsb"
  38814. case 'h': // 1 string to match.
  38815. return Intrinsic::ppc_altivec_vcmpgtsh; // "__builtin_altivec_vcmpgtsh"
  38816. case 'w': // 1 string to match.
  38817. return Intrinsic::ppc_altivec_vcmpgtsw; // "__builtin_altivec_vcmpgtsw"
  38818. }
  38819. break;
  38820. case 'u': // 3 strings to match.
  38821. switch (BuiltinName[25]) {
  38822. default: break;
  38823. case 'b': // 1 string to match.
  38824. return Intrinsic::ppc_altivec_vcmpgtub; // "__builtin_altivec_vcmpgtub"
  38825. case 'h': // 1 string to match.
  38826. return Intrinsic::ppc_altivec_vcmpgtuh; // "__builtin_altivec_vcmpgtuh"
  38827. case 'w': // 1 string to match.
  38828. return Intrinsic::ppc_altivec_vcmpgtuw; // "__builtin_altivec_vcmpgtuw"
  38829. }
  38830. break;
  38831. }
  38832. break;
  38833. }
  38834. break;
  38835. }
  38836. break;
  38837. case 'e': // 1 string to match.
  38838. if (memcmp(BuiltinName.data()+20, "xptefp", 6))
  38839. break;
  38840. return Intrinsic::ppc_altivec_vexptefp; // "__builtin_altivec_vexptefp"
  38841. case 'm': // 6 strings to match.
  38842. if (memcmp(BuiltinName.data()+20, "sum", 3))
  38843. break;
  38844. switch (BuiltinName[23]) {
  38845. default: break;
  38846. case 'm': // 1 string to match.
  38847. if (memcmp(BuiltinName.data()+24, "bm", 2))
  38848. break;
  38849. return Intrinsic::ppc_altivec_vmsummbm; // "__builtin_altivec_vmsummbm"
  38850. case 's': // 2 strings to match.
  38851. if (BuiltinName[24] != 'h')
  38852. break;
  38853. switch (BuiltinName[25]) {
  38854. default: break;
  38855. case 'm': // 1 string to match.
  38856. return Intrinsic::ppc_altivec_vmsumshm; // "__builtin_altivec_vmsumshm"
  38857. case 's': // 1 string to match.
  38858. return Intrinsic::ppc_altivec_vmsumshs; // "__builtin_altivec_vmsumshs"
  38859. }
  38860. break;
  38861. case 'u': // 3 strings to match.
  38862. switch (BuiltinName[24]) {
  38863. default: break;
  38864. case 'b': // 1 string to match.
  38865. if (BuiltinName[25] != 'm')
  38866. break;
  38867. return Intrinsic::ppc_altivec_vmsumubm; // "__builtin_altivec_vmsumubm"
  38868. case 'h': // 2 strings to match.
  38869. switch (BuiltinName[25]) {
  38870. default: break;
  38871. case 'm': // 1 string to match.
  38872. return Intrinsic::ppc_altivec_vmsumuhm; // "__builtin_altivec_vmsumuhm"
  38873. case 's': // 1 string to match.
  38874. return Intrinsic::ppc_altivec_vmsumuhs; // "__builtin_altivec_vmsumuhs"
  38875. }
  38876. break;
  38877. }
  38878. break;
  38879. }
  38880. break;
  38881. case 'n': // 1 string to match.
  38882. if (memcmp(BuiltinName.data()+20, "msubfp", 6))
  38883. break;
  38884. return Intrinsic::ppc_altivec_vnmsubfp; // "__builtin_altivec_vnmsubfp"
  38885. case 's': // 5 strings to match.
  38886. switch (BuiltinName[20]) {
  38887. default: break;
  38888. case 'e': // 1 string to match.
  38889. if (memcmp(BuiltinName.data()+21, "l_4si", 5))
  38890. break;
  38891. return Intrinsic::ppc_altivec_vsel; // "__builtin_altivec_vsel_4si"
  38892. case 'u': // 4 strings to match.
  38893. if (BuiltinName[21] != 'm')
  38894. break;
  38895. switch (BuiltinName[22]) {
  38896. default: break;
  38897. case '2': // 1 string to match.
  38898. if (memcmp(BuiltinName.data()+23, "sws", 3))
  38899. break;
  38900. return Intrinsic::ppc_altivec_vsum2sws; // "__builtin_altivec_vsum2sws"
  38901. case '4': // 3 strings to match.
  38902. switch (BuiltinName[23]) {
  38903. default: break;
  38904. case 's': // 2 strings to match.
  38905. switch (BuiltinName[24]) {
  38906. default: break;
  38907. case 'b': // 1 string to match.
  38908. if (BuiltinName[25] != 's')
  38909. break;
  38910. return Intrinsic::ppc_altivec_vsum4sbs; // "__builtin_altivec_vsum4sbs"
  38911. case 'h': // 1 string to match.
  38912. if (BuiltinName[25] != 's')
  38913. break;
  38914. return Intrinsic::ppc_altivec_vsum4shs; // "__builtin_altivec_vsum4shs"
  38915. }
  38916. break;
  38917. case 'u': // 1 string to match.
  38918. if (memcmp(BuiltinName.data()+24, "bs", 2))
  38919. break;
  38920. return Intrinsic::ppc_altivec_vsum4ubs; // "__builtin_altivec_vsum4ubs"
  38921. }
  38922. break;
  38923. }
  38924. break;
  38925. }
  38926. break;
  38927. }
  38928. break;
  38929. case 27: // 5 strings to match.
  38930. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38931. break;
  38932. switch (BuiltinName[19]) {
  38933. default: break;
  38934. case 'c': // 1 string to match.
  38935. if (memcmp(BuiltinName.data()+20, "mpbfp_p", 7))
  38936. break;
  38937. return Intrinsic::ppc_altivec_vcmpbfp_p; // "__builtin_altivec_vcmpbfp_p"
  38938. case 'm': // 2 strings to match.
  38939. switch (BuiltinName[20]) {
  38940. default: break;
  38941. case 'h': // 1 string to match.
  38942. if (memcmp(BuiltinName.data()+21, "addshs", 6))
  38943. break;
  38944. return Intrinsic::ppc_altivec_vmhaddshs; // "__builtin_altivec_vmhaddshs"
  38945. case 'l': // 1 string to match.
  38946. if (memcmp(BuiltinName.data()+21, "adduhm", 6))
  38947. break;
  38948. return Intrinsic::ppc_altivec_vmladduhm; // "__builtin_altivec_vmladduhm"
  38949. }
  38950. break;
  38951. case 'p': // 1 string to match.
  38952. if (memcmp(BuiltinName.data()+20, "erm_4si", 7))
  38953. break;
  38954. return Intrinsic::ppc_altivec_vperm; // "__builtin_altivec_vperm_4si"
  38955. case 'r': // 1 string to match.
  38956. if (memcmp(BuiltinName.data()+20, "sqrtefp", 7))
  38957. break;
  38958. return Intrinsic::ppc_altivec_vrsqrtefp; // "__builtin_altivec_vrsqrtefp"
  38959. }
  38960. break;
  38961. case 28: // 13 strings to match.
  38962. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38963. break;
  38964. switch (BuiltinName[19]) {
  38965. default: break;
  38966. case 'c': // 12 strings to match.
  38967. if (memcmp(BuiltinName.data()+20, "mp", 2))
  38968. break;
  38969. switch (BuiltinName[22]) {
  38970. default: break;
  38971. case 'e': // 4 strings to match.
  38972. if (BuiltinName[23] != 'q')
  38973. break;
  38974. switch (BuiltinName[24]) {
  38975. default: break;
  38976. case 'f': // 1 string to match.
  38977. if (memcmp(BuiltinName.data()+25, "p_p", 3))
  38978. break;
  38979. return Intrinsic::ppc_altivec_vcmpeqfp_p; // "__builtin_altivec_vcmpeqfp_p"
  38980. case 'u': // 3 strings to match.
  38981. switch (BuiltinName[25]) {
  38982. default: break;
  38983. case 'b': // 1 string to match.
  38984. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38985. break;
  38986. return Intrinsic::ppc_altivec_vcmpequb_p; // "__builtin_altivec_vcmpequb_p"
  38987. case 'h': // 1 string to match.
  38988. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38989. break;
  38990. return Intrinsic::ppc_altivec_vcmpequh_p; // "__builtin_altivec_vcmpequh_p"
  38991. case 'w': // 1 string to match.
  38992. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38993. break;
  38994. return Intrinsic::ppc_altivec_vcmpequw_p; // "__builtin_altivec_vcmpequw_p"
  38995. }
  38996. break;
  38997. }
  38998. break;
  38999. case 'g': // 8 strings to match.
  39000. switch (BuiltinName[23]) {
  39001. default: break;
  39002. case 'e': // 1 string to match.
  39003. if (memcmp(BuiltinName.data()+24, "fp_p", 4))
  39004. break;
  39005. return Intrinsic::ppc_altivec_vcmpgefp_p; // "__builtin_altivec_vcmpgefp_p"
  39006. case 't': // 7 strings to match.
  39007. switch (BuiltinName[24]) {
  39008. default: break;
  39009. case 'f': // 1 string to match.
  39010. if (memcmp(BuiltinName.data()+25, "p_p", 3))
  39011. break;
  39012. return Intrinsic::ppc_altivec_vcmpgtfp_p; // "__builtin_altivec_vcmpgtfp_p"
  39013. case 's': // 3 strings to match.
  39014. switch (BuiltinName[25]) {
  39015. default: break;
  39016. case 'b': // 1 string to match.
  39017. if (memcmp(BuiltinName.data()+26, "_p", 2))
  39018. break;
  39019. return Intrinsic::ppc_altivec_vcmpgtsb_p; // "__builtin_altivec_vcmpgtsb_p"
  39020. case 'h': // 1 string to match.
  39021. if (memcmp(BuiltinName.data()+26, "_p", 2))
  39022. break;
  39023. return Intrinsic::ppc_altivec_vcmpgtsh_p; // "__builtin_altivec_vcmpgtsh_p"
  39024. case 'w': // 1 string to match.
  39025. if (memcmp(BuiltinName.data()+26, "_p", 2))
  39026. break;
  39027. return Intrinsic::ppc_altivec_vcmpgtsw_p; // "__builtin_altivec_vcmpgtsw_p"
  39028. }
  39029. break;
  39030. case 'u': // 3 strings to match.
  39031. switch (BuiltinName[25]) {
  39032. default: break;
  39033. case 'b': // 1 string to match.
  39034. if (memcmp(BuiltinName.data()+26, "_p", 2))
  39035. break;
  39036. return Intrinsic::ppc_altivec_vcmpgtub_p; // "__builtin_altivec_vcmpgtub_p"
  39037. case 'h': // 1 string to match.
  39038. if (memcmp(BuiltinName.data()+26, "_p", 2))
  39039. break;
  39040. return Intrinsic::ppc_altivec_vcmpgtuh_p; // "__builtin_altivec_vcmpgtuh_p"
  39041. case 'w': // 1 string to match.
  39042. if (memcmp(BuiltinName.data()+26, "_p", 2))
  39043. break;
  39044. return Intrinsic::ppc_altivec_vcmpgtuw_p; // "__builtin_altivec_vcmpgtuw_p"
  39045. }
  39046. break;
  39047. }
  39048. break;
  39049. }
  39050. break;
  39051. }
  39052. break;
  39053. case 'm': // 1 string to match.
  39054. if (memcmp(BuiltinName.data()+20, "hraddshs", 8))
  39055. break;
  39056. return Intrinsic::ppc_altivec_vmhraddshs; // "__builtin_altivec_vmhraddshs"
  39057. }
  39058. break;
  39059. }
  39060. }
  39061. if (TargetPrefix == "spu") {
  39062. switch (BuiltinName.size()) {
  39063. default: break;
  39064. case 14: // 1 string to match.
  39065. if (memcmp(BuiltinName.data()+0, "__builtin_si_a", 14))
  39066. break;
  39067. return Intrinsic::spu_si_a; // "__builtin_si_a"
  39068. case 15: // 9 strings to match.
  39069. if (memcmp(BuiltinName.data()+0, "__builtin_si_", 13))
  39070. break;
  39071. switch (BuiltinName[13]) {
  39072. default: break;
  39073. case 'a': // 2 strings to match.
  39074. switch (BuiltinName[14]) {
  39075. default: break;
  39076. case 'h': // 1 string to match.
  39077. return Intrinsic::spu_si_ah; // "__builtin_si_ah"
  39078. case 'i': // 1 string to match.
  39079. return Intrinsic::spu_si_ai; // "__builtin_si_ai"
  39080. }
  39081. break;
  39082. case 'b': // 1 string to match.
  39083. if (BuiltinName[14] != 'g')
  39084. break;
  39085. return Intrinsic::spu_si_bg; // "__builtin_si_bg"
  39086. case 'c': // 1 string to match.
  39087. if (BuiltinName[14] != 'g')
  39088. break;
  39089. return Intrinsic::spu_si_cg; // "__builtin_si_cg"
  39090. case 'f': // 3 strings to match.
  39091. switch (BuiltinName[14]) {
  39092. default: break;
  39093. case 'a': // 1 string to match.
  39094. return Intrinsic::spu_si_fa; // "__builtin_si_fa"
  39095. case 'm': // 1 string to match.
  39096. return Intrinsic::spu_si_fm; // "__builtin_si_fm"
  39097. case 's': // 1 string to match.
  39098. return Intrinsic::spu_si_fs; // "__builtin_si_fs"
  39099. }
  39100. break;
  39101. case 'o': // 1 string to match.
  39102. if (BuiltinName[14] != 'r')
  39103. break;
  39104. return Intrinsic::spu_si_or; // "__builtin_si_or"
  39105. case 's': // 1 string to match.
  39106. if (BuiltinName[14] != 'f')
  39107. break;
  39108. return Intrinsic::spu_si_sf; // "__builtin_si_sf"
  39109. }
  39110. break;
  39111. case 16: // 19 strings to match.
  39112. if (memcmp(BuiltinName.data()+0, "__builtin_si_", 13))
  39113. break;
  39114. switch (BuiltinName[13]) {
  39115. default: break;
  39116. case 'a': // 2 strings to match.
  39117. switch (BuiltinName[14]) {
  39118. default: break;
  39119. case 'h': // 1 string to match.
  39120. if (BuiltinName[15] != 'i')
  39121. break;
  39122. return Intrinsic::spu_si_ahi; // "__builtin_si_ahi"
  39123. case 'n': // 1 string to match.
  39124. if (BuiltinName[15] != 'd')
  39125. break;
  39126. return Intrinsic::spu_si_and; // "__builtin_si_and"
  39127. }
  39128. break;
  39129. case 'b': // 1 string to match.
  39130. if (memcmp(BuiltinName.data()+14, "gx", 2))
  39131. break;
  39132. return Intrinsic::spu_si_bgx; // "__builtin_si_bgx"
  39133. case 'c': // 3 strings to match.
  39134. switch (BuiltinName[14]) {
  39135. default: break;
  39136. case 'e': // 1 string to match.
  39137. if (BuiltinName[15] != 'q')
  39138. break;
  39139. return Intrinsic::spu_si_ceq; // "__builtin_si_ceq"
  39140. case 'g': // 2 strings to match.
  39141. switch (BuiltinName[15]) {
  39142. default: break;
  39143. case 't': // 1 string to match.
  39144. return Intrinsic::spu_si_cgt; // "__builtin_si_cgt"
  39145. case 'x': // 1 string to match.
  39146. return Intrinsic::spu_si_cgx; // "__builtin_si_cgx"
  39147. }
  39148. break;
  39149. }
  39150. break;
  39151. case 'd': // 3 strings to match.
  39152. if (BuiltinName[14] != 'f')
  39153. break;
  39154. switch (BuiltinName[15]) {
  39155. default: break;
  39156. case 'a': // 1 string to match.
  39157. return Intrinsic::spu_si_dfa; // "__builtin_si_dfa"
  39158. case 'm': // 1 string to match.
  39159. return Intrinsic::spu_si_dfm; // "__builtin_si_dfm"
  39160. case 's': // 1 string to match.
  39161. return Intrinsic::spu_si_dfs; // "__builtin_si_dfs"
  39162. }
  39163. break;
  39164. case 'f': // 2 strings to match.
  39165. if (BuiltinName[14] != 'm')
  39166. break;
  39167. switch (BuiltinName[15]) {
  39168. default: break;
  39169. case 'a': // 1 string to match.
  39170. return Intrinsic::spu_si_fma; // "__builtin_si_fma"
  39171. case 's': // 1 string to match.
  39172. return Intrinsic::spu_si_fms; // "__builtin_si_fms"
  39173. }
  39174. break;
  39175. case 'm': // 1 string to match.
  39176. if (memcmp(BuiltinName.data()+14, "py", 2))
  39177. break;
  39178. return Intrinsic::spu_si_mpy; // "__builtin_si_mpy"
  39179. case 'n': // 1 string to match.
  39180. if (memcmp(BuiltinName.data()+14, "or", 2))
  39181. break;
  39182. return Intrinsic::spu_si_nor; // "__builtin_si_nor"
  39183. case 'o': // 2 strings to match.
  39184. if (BuiltinName[14] != 'r')
  39185. break;
  39186. switch (BuiltinName[15]) {
  39187. default: break;
  39188. case 'c': // 1 string to match.
  39189. return Intrinsic::spu_si_orc; // "__builtin_si_orc"
  39190. case 'i': // 1 string to match.
  39191. return Intrinsic::spu_si_ori; // "__builtin_si_ori"
  39192. }
  39193. break;
  39194. case 's': // 3 strings to match.
  39195. if (BuiltinName[14] != 'f')
  39196. break;
  39197. switch (BuiltinName[15]) {
  39198. default: break;
  39199. case 'h': // 1 string to match.
  39200. return Intrinsic::spu_si_sfh; // "__builtin_si_sfh"
  39201. case 'i': // 1 string to match.
  39202. return Intrinsic::spu_si_sfi; // "__builtin_si_sfi"
  39203. case 'x': // 1 string to match.
  39204. return Intrinsic::spu_si_sfx; // "__builtin_si_sfx"
  39205. }
  39206. break;
  39207. case 'x': // 1 string to match.
  39208. if (memcmp(BuiltinName.data()+14, "or", 2))
  39209. break;
  39210. return Intrinsic::spu_si_xor; // "__builtin_si_xor"
  39211. }
  39212. break;
  39213. case 17: // 26 strings to match.
  39214. if (memcmp(BuiltinName.data()+0, "__builtin_si_", 13))
  39215. break;
  39216. switch (BuiltinName[13]) {
  39217. default: break;
  39218. case 'a': // 3 strings to match.
  39219. switch (BuiltinName[14]) {
  39220. default: break;
  39221. case 'd': // 1 string to match.
  39222. if (memcmp(BuiltinName.data()+15, "dx", 2))
  39223. break;
  39224. return Intrinsic::spu_si_addx; // "__builtin_si_addx"
  39225. case 'n': // 2 strings to match.
  39226. if (BuiltinName[15] != 'd')
  39227. break;
  39228. switch (BuiltinName[16]) {
  39229. default: break;
  39230. case 'c': // 1 string to match.
  39231. return Intrinsic::spu_si_andc; // "__builtin_si_andc"
  39232. case 'i': // 1 string to match.
  39233. return Intrinsic::spu_si_andi; // "__builtin_si_andi"
  39234. }
  39235. break;
  39236. }
  39237. break;
  39238. case 'c': // 7 strings to match.
  39239. switch (BuiltinName[14]) {
  39240. default: break;
  39241. case 'e': // 3 strings to match.
  39242. if (BuiltinName[15] != 'q')
  39243. break;
  39244. switch (BuiltinName[16]) {
  39245. default: break;
  39246. case 'b': // 1 string to match.
  39247. return Intrinsic::spu_si_ceqb; // "__builtin_si_ceqb"
  39248. case 'h': // 1 string to match.
  39249. return Intrinsic::spu_si_ceqh; // "__builtin_si_ceqh"
  39250. case 'i': // 1 string to match.
  39251. return Intrinsic::spu_si_ceqi; // "__builtin_si_ceqi"
  39252. }
  39253. break;
  39254. case 'g': // 3 strings to match.
  39255. if (BuiltinName[15] != 't')
  39256. break;
  39257. switch (BuiltinName[16]) {
  39258. default: break;
  39259. case 'b': // 1 string to match.
  39260. return Intrinsic::spu_si_cgtb; // "__builtin_si_cgtb"
  39261. case 'h': // 1 string to match.
  39262. return Intrinsic::spu_si_cgth; // "__builtin_si_cgth"
  39263. case 'i': // 1 string to match.
  39264. return Intrinsic::spu_si_cgti; // "__builtin_si_cgti"
  39265. }
  39266. break;
  39267. case 'l': // 1 string to match.
  39268. if (memcmp(BuiltinName.data()+15, "gt", 2))
  39269. break;
  39270. return Intrinsic::spu_si_clgt; // "__builtin_si_clgt"
  39271. }
  39272. break;
  39273. case 'd': // 2 strings to match.
  39274. if (memcmp(BuiltinName.data()+14, "fm", 2))
  39275. break;
  39276. switch (BuiltinName[16]) {
  39277. default: break;
  39278. case 'a': // 1 string to match.
  39279. return Intrinsic::spu_si_dfma; // "__builtin_si_dfma"
  39280. case 's': // 1 string to match.
  39281. return Intrinsic::spu_si_dfms; // "__builtin_si_dfms"
  39282. }
  39283. break;
  39284. case 'f': // 3 strings to match.
  39285. switch (BuiltinName[14]) {
  39286. default: break;
  39287. case 'c': // 2 strings to match.
  39288. switch (BuiltinName[15]) {
  39289. default: break;
  39290. case 'e': // 1 string to match.
  39291. if (BuiltinName[16] != 'q')
  39292. break;
  39293. return Intrinsic::spu_si_fceq; // "__builtin_si_fceq"
  39294. case 'g': // 1 string to match.
  39295. if (BuiltinName[16] != 't')
  39296. break;
  39297. return Intrinsic::spu_si_fcgt; // "__builtin_si_fcgt"
  39298. }
  39299. break;
  39300. case 'n': // 1 string to match.
  39301. if (memcmp(BuiltinName.data()+15, "ms", 2))
  39302. break;
  39303. return Intrinsic::spu_si_fnms; // "__builtin_si_fnms"
  39304. }
  39305. break;
  39306. case 'm': // 5 strings to match.
  39307. if (memcmp(BuiltinName.data()+14, "py", 2))
  39308. break;
  39309. switch (BuiltinName[16]) {
  39310. default: break;
  39311. case 'a': // 1 string to match.
  39312. return Intrinsic::spu_si_mpya; // "__builtin_si_mpya"
  39313. case 'h': // 1 string to match.
  39314. return Intrinsic::spu_si_mpyh; // "__builtin_si_mpyh"
  39315. case 'i': // 1 string to match.
  39316. return Intrinsic::spu_si_mpyi; // "__builtin_si_mpyi"
  39317. case 's': // 1 string to match.
  39318. return Intrinsic::spu_si_mpys; // "__builtin_si_mpys"
  39319. case 'u': // 1 string to match.
  39320. return Intrinsic::spu_si_mpyu; // "__builtin_si_mpyu"
  39321. }
  39322. break;
  39323. case 'n': // 1 string to match.
  39324. if (memcmp(BuiltinName.data()+14, "and", 3))
  39325. break;
  39326. return Intrinsic::spu_si_nand; // "__builtin_si_nand"
  39327. case 'o': // 2 strings to match.
  39328. if (BuiltinName[14] != 'r')
  39329. break;
  39330. switch (BuiltinName[15]) {
  39331. default: break;
  39332. case 'b': // 1 string to match.
  39333. if (BuiltinName[16] != 'i')
  39334. break;
  39335. return Intrinsic::spu_si_orbi; // "__builtin_si_orbi"
  39336. case 'h': // 1 string to match.
  39337. if (BuiltinName[16] != 'i')
  39338. break;
  39339. return Intrinsic::spu_si_orhi; // "__builtin_si_orhi"
  39340. }
  39341. break;
  39342. case 's': // 2 strings to match.
  39343. switch (BuiltinName[14]) {
  39344. default: break;
  39345. case 'f': // 1 string to match.
  39346. if (memcmp(BuiltinName.data()+15, "hi", 2))
  39347. break;
  39348. return Intrinsic::spu_si_sfhi; // "__builtin_si_sfhi"
  39349. case 'h': // 1 string to match.
  39350. if (memcmp(BuiltinName.data()+15, "li", 2))
  39351. break;
  39352. return Intrinsic::spu_si_shli; // "__builtin_si_shli"
  39353. }
  39354. break;
  39355. case 'x': // 1 string to match.
  39356. if (memcmp(BuiltinName.data()+14, "ori", 3))
  39357. break;
  39358. return Intrinsic::spu_si_xori; // "__builtin_si_xori"
  39359. }
  39360. break;
  39361. case 18: // 18 strings to match.
  39362. if (memcmp(BuiltinName.data()+0, "__builtin_si_", 13))
  39363. break;
  39364. switch (BuiltinName[13]) {
  39365. default: break;
  39366. case 'a': // 2 strings to match.
  39367. if (memcmp(BuiltinName.data()+14, "nd", 2))
  39368. break;
  39369. switch (BuiltinName[16]) {
  39370. default: break;
  39371. case 'b': // 1 string to match.
  39372. if (BuiltinName[17] != 'i')
  39373. break;
  39374. return Intrinsic::spu_si_andbi; // "__builtin_si_andbi"
  39375. case 'h': // 1 string to match.
  39376. if (BuiltinName[17] != 'i')
  39377. break;
  39378. return Intrinsic::spu_si_andhi; // "__builtin_si_andhi"
  39379. }
  39380. break;
  39381. case 'c': // 7 strings to match.
  39382. switch (BuiltinName[14]) {
  39383. default: break;
  39384. case 'e': // 2 strings to match.
  39385. if (BuiltinName[15] != 'q')
  39386. break;
  39387. switch (BuiltinName[16]) {
  39388. default: break;
  39389. case 'b': // 1 string to match.
  39390. if (BuiltinName[17] != 'i')
  39391. break;
  39392. return Intrinsic::spu_si_ceqbi; // "__builtin_si_ceqbi"
  39393. case 'h': // 1 string to match.
  39394. if (BuiltinName[17] != 'i')
  39395. break;
  39396. return Intrinsic::spu_si_ceqhi; // "__builtin_si_ceqhi"
  39397. }
  39398. break;
  39399. case 'g': // 2 strings to match.
  39400. if (BuiltinName[15] != 't')
  39401. break;
  39402. switch (BuiltinName[16]) {
  39403. default: break;
  39404. case 'b': // 1 string to match.
  39405. if (BuiltinName[17] != 'i')
  39406. break;
  39407. return Intrinsic::spu_si_cgtbi; // "__builtin_si_cgtbi"
  39408. case 'h': // 1 string to match.
  39409. if (BuiltinName[17] != 'i')
  39410. break;
  39411. return Intrinsic::spu_si_cgthi; // "__builtin_si_cgthi"
  39412. }
  39413. break;
  39414. case 'l': // 3 strings to match.
  39415. if (memcmp(BuiltinName.data()+15, "gt", 2))
  39416. break;
  39417. switch (BuiltinName[17]) {
  39418. default: break;
  39419. case 'b': // 1 string to match.
  39420. return Intrinsic::spu_si_clgtb; // "__builtin_si_clgtb"
  39421. case 'h': // 1 string to match.
  39422. return Intrinsic::spu_si_clgth; // "__builtin_si_clgth"
  39423. case 'i': // 1 string to match.
  39424. return Intrinsic::spu_si_clgti; // "__builtin_si_clgti"
  39425. }
  39426. break;
  39427. }
  39428. break;
  39429. case 'd': // 2 strings to match.
  39430. if (memcmp(BuiltinName.data()+14, "fnm", 3))
  39431. break;
  39432. switch (BuiltinName[17]) {
  39433. default: break;
  39434. case 'a': // 1 string to match.
  39435. return Intrinsic::spu_si_dfnma; // "__builtin_si_dfnma"
  39436. case 's': // 1 string to match.
  39437. return Intrinsic::spu_si_dfnms; // "__builtin_si_dfnms"
  39438. }
  39439. break;
  39440. case 'f': // 3 strings to match.
  39441. switch (BuiltinName[14]) {
  39442. default: break;
  39443. case 'c': // 2 strings to match.
  39444. if (BuiltinName[15] != 'm')
  39445. break;
  39446. switch (BuiltinName[16]) {
  39447. default: break;
  39448. case 'e': // 1 string to match.
  39449. if (BuiltinName[17] != 'q')
  39450. break;
  39451. return Intrinsic::spu_si_fcmeq; // "__builtin_si_fcmeq"
  39452. case 'g': // 1 string to match.
  39453. if (BuiltinName[17] != 't')
  39454. break;
  39455. return Intrinsic::spu_si_fcmgt; // "__builtin_si_fcmgt"
  39456. }
  39457. break;
  39458. case 's': // 1 string to match.
  39459. if (memcmp(BuiltinName.data()+15, "mbi", 3))
  39460. break;
  39461. return Intrinsic::spu_si_fsmbi; // "__builtin_si_fsmbi"
  39462. }
  39463. break;
  39464. case 'm': // 2 strings to match.
  39465. if (memcmp(BuiltinName.data()+14, "py", 2))
  39466. break;
  39467. switch (BuiltinName[16]) {
  39468. default: break;
  39469. case 'h': // 1 string to match.
  39470. if (BuiltinName[17] != 'h')
  39471. break;
  39472. return Intrinsic::spu_si_mpyhh; // "__builtin_si_mpyhh"
  39473. case 'u': // 1 string to match.
  39474. if (BuiltinName[17] != 'i')
  39475. break;
  39476. return Intrinsic::spu_si_mpyui; // "__builtin_si_mpyui"
  39477. }
  39478. break;
  39479. case 'x': // 2 strings to match.
  39480. if (memcmp(BuiltinName.data()+14, "or", 2))
  39481. break;
  39482. switch (BuiltinName[16]) {
  39483. default: break;
  39484. case 'b': // 1 string to match.
  39485. if (BuiltinName[17] != 'i')
  39486. break;
  39487. return Intrinsic::spu_si_xorbi; // "__builtin_si_xorbi"
  39488. case 'h': // 1 string to match.
  39489. if (BuiltinName[17] != 'i')
  39490. break;
  39491. return Intrinsic::spu_si_xorhi; // "__builtin_si_xorhi"
  39492. }
  39493. break;
  39494. }
  39495. break;
  39496. case 19: // 6 strings to match.
  39497. if (memcmp(BuiltinName.data()+0, "__builtin_si_", 13))
  39498. break;
  39499. switch (BuiltinName[13]) {
  39500. default: break;
  39501. case 'c': // 2 strings to match.
  39502. if (memcmp(BuiltinName.data()+14, "lgt", 3))
  39503. break;
  39504. switch (BuiltinName[17]) {
  39505. default: break;
  39506. case 'b': // 1 string to match.
  39507. if (BuiltinName[18] != 'i')
  39508. break;
  39509. return Intrinsic::spu_si_clgtbi; // "__builtin_si_clgtbi"
  39510. case 'h': // 1 string to match.
  39511. if (BuiltinName[18] != 'i')
  39512. break;
  39513. return Intrinsic::spu_si_clgthi; // "__builtin_si_clgthi"
  39514. }
  39515. break;
  39516. case 'm': // 2 strings to match.
  39517. if (memcmp(BuiltinName.data()+14, "pyhh", 4))
  39518. break;
  39519. switch (BuiltinName[18]) {
  39520. default: break;
  39521. case 'a': // 1 string to match.
  39522. return Intrinsic::spu_si_mpyhha; // "__builtin_si_mpyhha"
  39523. case 'u': // 1 string to match.
  39524. return Intrinsic::spu_si_mpyhhu; // "__builtin_si_mpyhhu"
  39525. }
  39526. break;
  39527. case 's': // 2 strings to match.
  39528. if (memcmp(BuiltinName.data()+14, "hlqb", 4))
  39529. break;
  39530. switch (BuiltinName[18]) {
  39531. default: break;
  39532. case 'i': // 1 string to match.
  39533. return Intrinsic::spu_si_shlqbi; // "__builtin_si_shlqbi"
  39534. case 'y': // 1 string to match.
  39535. return Intrinsic::spu_si_shlqby; // "__builtin_si_shlqby"
  39536. }
  39537. break;
  39538. }
  39539. break;
  39540. case 20: // 3 strings to match.
  39541. if (memcmp(BuiltinName.data()+0, "__builtin_si_", 13))
  39542. break;
  39543. switch (BuiltinName[13]) {
  39544. default: break;
  39545. case 'm': // 1 string to match.
  39546. if (memcmp(BuiltinName.data()+14, "pyhhau", 6))
  39547. break;
  39548. return Intrinsic::spu_si_mpyhhau; // "__builtin_si_mpyhhau"
  39549. case 's': // 2 strings to match.
  39550. if (memcmp(BuiltinName.data()+14, "hlqb", 4))
  39551. break;
  39552. switch (BuiltinName[18]) {
  39553. default: break;
  39554. case 'i': // 1 string to match.
  39555. if (BuiltinName[19] != 'i')
  39556. break;
  39557. return Intrinsic::spu_si_shlqbii; // "__builtin_si_shlqbii"
  39558. case 'y': // 1 string to match.
  39559. if (BuiltinName[19] != 'i')
  39560. break;
  39561. return Intrinsic::spu_si_shlqbyi; // "__builtin_si_shlqbyi"
  39562. }
  39563. break;
  39564. }
  39565. break;
  39566. }
  39567. }
  39568. if (TargetPrefix == "x86") {
  39569. switch (BuiltinName.size()) {
  39570. default: break;
  39571. case 18: // 1 string to match.
  39572. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_por", 18))
  39573. break;
  39574. return Intrinsic::x86_mmx_por; // "__builtin_ia32_por"
  39575. case 19: // 5 strings to match.
  39576. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  39577. break;
  39578. switch (BuiltinName[15]) {
  39579. default: break;
  39580. case 'd': // 2 strings to match.
  39581. if (memcmp(BuiltinName.data()+16, "pp", 2))
  39582. break;
  39583. switch (BuiltinName[18]) {
  39584. default: break;
  39585. case 'd': // 1 string to match.
  39586. return Intrinsic::x86_sse41_dppd; // "__builtin_ia32_dppd"
  39587. case 's': // 1 string to match.
  39588. return Intrinsic::x86_sse41_dpps; // "__builtin_ia32_dpps"
  39589. }
  39590. break;
  39591. case 'e': // 1 string to match.
  39592. if (memcmp(BuiltinName.data()+16, "mms", 3))
  39593. break;
  39594. return Intrinsic::x86_mmx_emms; // "__builtin_ia32_emms"
  39595. case 'p': // 2 strings to match.
  39596. switch (BuiltinName[16]) {
  39597. default: break;
  39598. case 'a': // 1 string to match.
  39599. if (memcmp(BuiltinName.data()+17, "nd", 2))
  39600. break;
  39601. return Intrinsic::x86_mmx_pand; // "__builtin_ia32_pand"
  39602. case 'x': // 1 string to match.
  39603. if (memcmp(BuiltinName.data()+17, "or", 2))
  39604. break;
  39605. return Intrinsic::x86_mmx_pxor; // "__builtin_ia32_pxor"
  39606. }
  39607. break;
  39608. }
  39609. break;
  39610. case 20: // 59 strings to match.
  39611. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  39612. break;
  39613. switch (BuiltinName[15]) {
  39614. default: break;
  39615. case 'a': // 2 strings to match.
  39616. if (memcmp(BuiltinName.data()+16, "dds", 3))
  39617. break;
  39618. switch (BuiltinName[19]) {
  39619. default: break;
  39620. case 'd': // 1 string to match.
  39621. return Intrinsic::x86_sse2_add_sd; // "__builtin_ia32_addsd"
  39622. case 's': // 1 string to match.
  39623. return Intrinsic::x86_sse_add_ss; // "__builtin_ia32_addss"
  39624. }
  39625. break;
  39626. case 'c': // 4 strings to match.
  39627. if (memcmp(BuiltinName.data()+16, "mp", 2))
  39628. break;
  39629. switch (BuiltinName[18]) {
  39630. default: break;
  39631. case 'p': // 2 strings to match.
  39632. switch (BuiltinName[19]) {
  39633. default: break;
  39634. case 'd': // 1 string to match.
  39635. return Intrinsic::x86_sse2_cmp_pd; // "__builtin_ia32_cmppd"
  39636. case 's': // 1 string to match.
  39637. return Intrinsic::x86_sse_cmp_ps; // "__builtin_ia32_cmpps"
  39638. }
  39639. break;
  39640. case 's': // 2 strings to match.
  39641. switch (BuiltinName[19]) {
  39642. default: break;
  39643. case 'd': // 1 string to match.
  39644. return Intrinsic::x86_sse2_cmp_sd; // "__builtin_ia32_cmpsd"
  39645. case 's': // 1 string to match.
  39646. return Intrinsic::x86_sse_cmp_ss; // "__builtin_ia32_cmpss"
  39647. }
  39648. break;
  39649. }
  39650. break;
  39651. case 'd': // 2 strings to match.
  39652. if (memcmp(BuiltinName.data()+16, "ivs", 3))
  39653. break;
  39654. switch (BuiltinName[19]) {
  39655. default: break;
  39656. case 'd': // 1 string to match.
  39657. return Intrinsic::x86_sse2_div_sd; // "__builtin_ia32_divsd"
  39658. case 's': // 1 string to match.
  39659. return Intrinsic::x86_sse_div_ss; // "__builtin_ia32_divss"
  39660. }
  39661. break;
  39662. case 'e': // 1 string to match.
  39663. if (memcmp(BuiltinName.data()+16, "xtrq", 4))
  39664. break;
  39665. return Intrinsic::x86_sse4a_extrq; // "__builtin_ia32_extrq"
  39666. case 'f': // 1 string to match.
  39667. if (memcmp(BuiltinName.data()+16, "emms", 4))
  39668. break;
  39669. return Intrinsic::x86_mmx_femms; // "__builtin_ia32_femms"
  39670. case 'l': // 1 string to match.
  39671. if (memcmp(BuiltinName.data()+16, "ddqu", 4))
  39672. break;
  39673. return Intrinsic::x86_sse3_ldu_dq; // "__builtin_ia32_lddqu"
  39674. case 'm': // 11 strings to match.
  39675. switch (BuiltinName[16]) {
  39676. default: break;
  39677. case 'a': // 4 strings to match.
  39678. if (BuiltinName[17] != 'x')
  39679. break;
  39680. switch (BuiltinName[18]) {
  39681. default: break;
  39682. case 'p': // 2 strings to match.
  39683. switch (BuiltinName[19]) {
  39684. default: break;
  39685. case 'd': // 1 string to match.
  39686. return Intrinsic::x86_sse2_max_pd; // "__builtin_ia32_maxpd"
  39687. case 's': // 1 string to match.
  39688. return Intrinsic::x86_sse_max_ps; // "__builtin_ia32_maxps"
  39689. }
  39690. break;
  39691. case 's': // 2 strings to match.
  39692. switch (BuiltinName[19]) {
  39693. default: break;
  39694. case 'd': // 1 string to match.
  39695. return Intrinsic::x86_sse2_max_sd; // "__builtin_ia32_maxsd"
  39696. case 's': // 1 string to match.
  39697. return Intrinsic::x86_sse_max_ss; // "__builtin_ia32_maxss"
  39698. }
  39699. break;
  39700. }
  39701. break;
  39702. case 'i': // 4 strings to match.
  39703. if (BuiltinName[17] != 'n')
  39704. break;
  39705. switch (BuiltinName[18]) {
  39706. default: break;
  39707. case 'p': // 2 strings to match.
  39708. switch (BuiltinName[19]) {
  39709. default: break;
  39710. case 'd': // 1 string to match.
  39711. return Intrinsic::x86_sse2_min_pd; // "__builtin_ia32_minpd"
  39712. case 's': // 1 string to match.
  39713. return Intrinsic::x86_sse_min_ps; // "__builtin_ia32_minps"
  39714. }
  39715. break;
  39716. case 's': // 2 strings to match.
  39717. switch (BuiltinName[19]) {
  39718. default: break;
  39719. case 'd': // 1 string to match.
  39720. return Intrinsic::x86_sse2_min_sd; // "__builtin_ia32_minsd"
  39721. case 's': // 1 string to match.
  39722. return Intrinsic::x86_sse_min_ss; // "__builtin_ia32_minss"
  39723. }
  39724. break;
  39725. }
  39726. break;
  39727. case 'u': // 2 strings to match.
  39728. if (memcmp(BuiltinName.data()+17, "ls", 2))
  39729. break;
  39730. switch (BuiltinName[19]) {
  39731. default: break;
  39732. case 'd': // 1 string to match.
  39733. return Intrinsic::x86_sse2_mul_sd; // "__builtin_ia32_mulsd"
  39734. case 's': // 1 string to match.
  39735. return Intrinsic::x86_sse_mul_ss; // "__builtin_ia32_mulss"
  39736. }
  39737. break;
  39738. case 'w': // 1 string to match.
  39739. if (memcmp(BuiltinName.data()+17, "ait", 3))
  39740. break;
  39741. return Intrinsic::x86_sse3_mwait; // "__builtin_ia32_mwait"
  39742. }
  39743. break;
  39744. case 'p': // 33 strings to match.
  39745. switch (BuiltinName[16]) {
  39746. default: break;
  39747. case 'a': // 10 strings to match.
  39748. switch (BuiltinName[17]) {
  39749. default: break;
  39750. case 'b': // 3 strings to match.
  39751. if (BuiltinName[18] != 's')
  39752. break;
  39753. switch (BuiltinName[19]) {
  39754. default: break;
  39755. case 'b': // 1 string to match.
  39756. return Intrinsic::x86_ssse3_pabs_b; // "__builtin_ia32_pabsb"
  39757. case 'd': // 1 string to match.
  39758. return Intrinsic::x86_ssse3_pabs_d; // "__builtin_ia32_pabsd"
  39759. case 'w': // 1 string to match.
  39760. return Intrinsic::x86_ssse3_pabs_w; // "__builtin_ia32_pabsw"
  39761. }
  39762. break;
  39763. case 'd': // 4 strings to match.
  39764. if (BuiltinName[18] != 'd')
  39765. break;
  39766. switch (BuiltinName[19]) {
  39767. default: break;
  39768. case 'b': // 1 string to match.
  39769. return Intrinsic::x86_mmx_padd_b; // "__builtin_ia32_paddb"
  39770. case 'd': // 1 string to match.
  39771. return Intrinsic::x86_mmx_padd_d; // "__builtin_ia32_paddd"
  39772. case 'q': // 1 string to match.
  39773. return Intrinsic::x86_mmx_padd_q; // "__builtin_ia32_paddq"
  39774. case 'w': // 1 string to match.
  39775. return Intrinsic::x86_mmx_padd_w; // "__builtin_ia32_paddw"
  39776. }
  39777. break;
  39778. case 'n': // 1 string to match.
  39779. if (memcmp(BuiltinName.data()+18, "dn", 2))
  39780. break;
  39781. return Intrinsic::x86_mmx_pandn; // "__builtin_ia32_pandn"
  39782. case 'v': // 2 strings to match.
  39783. if (BuiltinName[18] != 'g')
  39784. break;
  39785. switch (BuiltinName[19]) {
  39786. default: break;
  39787. case 'b': // 1 string to match.
  39788. return Intrinsic::x86_mmx_pavg_b; // "__builtin_ia32_pavgb"
  39789. case 'w': // 1 string to match.
  39790. return Intrinsic::x86_mmx_pavg_w; // "__builtin_ia32_pavgw"
  39791. }
  39792. break;
  39793. }
  39794. break;
  39795. case 'f': // 9 strings to match.
  39796. switch (BuiltinName[17]) {
  39797. default: break;
  39798. case '2': // 2 strings to match.
  39799. if (BuiltinName[18] != 'i')
  39800. break;
  39801. switch (BuiltinName[19]) {
  39802. default: break;
  39803. case 'd': // 1 string to match.
  39804. return Intrinsic::x86_3dnow_pf2id; // "__builtin_ia32_pf2id"
  39805. case 'w': // 1 string to match.
  39806. return Intrinsic::x86_3dnowa_pf2iw; // "__builtin_ia32_pf2iw"
  39807. }
  39808. break;
  39809. case 'a': // 2 strings to match.
  39810. switch (BuiltinName[18]) {
  39811. default: break;
  39812. case 'c': // 1 string to match.
  39813. if (BuiltinName[19] != 'c')
  39814. break;
  39815. return Intrinsic::x86_3dnow_pfacc; // "__builtin_ia32_pfacc"
  39816. case 'd': // 1 string to match.
  39817. if (BuiltinName[19] != 'd')
  39818. break;
  39819. return Intrinsic::x86_3dnow_pfadd; // "__builtin_ia32_pfadd"
  39820. }
  39821. break;
  39822. case 'm': // 3 strings to match.
  39823. switch (BuiltinName[18]) {
  39824. default: break;
  39825. case 'a': // 1 string to match.
  39826. if (BuiltinName[19] != 'x')
  39827. break;
  39828. return Intrinsic::x86_3dnow_pfmax; // "__builtin_ia32_pfmax"
  39829. case 'i': // 1 string to match.
  39830. if (BuiltinName[19] != 'n')
  39831. break;
  39832. return Intrinsic::x86_3dnow_pfmin; // "__builtin_ia32_pfmin"
  39833. case 'u': // 1 string to match.
  39834. if (BuiltinName[19] != 'l')
  39835. break;
  39836. return Intrinsic::x86_3dnow_pfmul; // "__builtin_ia32_pfmul"
  39837. }
  39838. break;
  39839. case 'r': // 1 string to match.
  39840. if (memcmp(BuiltinName.data()+18, "cp", 2))
  39841. break;
  39842. return Intrinsic::x86_3dnow_pfrcp; // "__builtin_ia32_pfrcp"
  39843. case 's': // 1 string to match.
  39844. if (memcmp(BuiltinName.data()+18, "ub", 2))
  39845. break;
  39846. return Intrinsic::x86_3dnow_pfsub; // "__builtin_ia32_pfsub"
  39847. }
  39848. break;
  39849. case 'i': // 2 strings to match.
  39850. if (memcmp(BuiltinName.data()+17, "2f", 2))
  39851. break;
  39852. switch (BuiltinName[19]) {
  39853. default: break;
  39854. case 'd': // 1 string to match.
  39855. return Intrinsic::x86_3dnow_pi2fd; // "__builtin_ia32_pi2fd"
  39856. case 'w': // 1 string to match.
  39857. return Intrinsic::x86_3dnowa_pi2fw; // "__builtin_ia32_pi2fw"
  39858. }
  39859. break;
  39860. case 's': // 12 strings to match.
  39861. switch (BuiltinName[17]) {
  39862. default: break;
  39863. case 'l': // 3 strings to match.
  39864. if (BuiltinName[18] != 'l')
  39865. break;
  39866. switch (BuiltinName[19]) {
  39867. default: break;
  39868. case 'd': // 1 string to match.
  39869. return Intrinsic::x86_mmx_psll_d; // "__builtin_ia32_pslld"
  39870. case 'q': // 1 string to match.
  39871. return Intrinsic::x86_mmx_psll_q; // "__builtin_ia32_psllq"
  39872. case 'w': // 1 string to match.
  39873. return Intrinsic::x86_mmx_psll_w; // "__builtin_ia32_psllw"
  39874. }
  39875. break;
  39876. case 'r': // 5 strings to match.
  39877. switch (BuiltinName[18]) {
  39878. default: break;
  39879. case 'a': // 2 strings to match.
  39880. switch (BuiltinName[19]) {
  39881. default: break;
  39882. case 'd': // 1 string to match.
  39883. return Intrinsic::x86_mmx_psra_d; // "__builtin_ia32_psrad"
  39884. case 'w': // 1 string to match.
  39885. return Intrinsic::x86_mmx_psra_w; // "__builtin_ia32_psraw"
  39886. }
  39887. break;
  39888. case 'l': // 3 strings to match.
  39889. switch (BuiltinName[19]) {
  39890. default: break;
  39891. case 'd': // 1 string to match.
  39892. return Intrinsic::x86_mmx_psrl_d; // "__builtin_ia32_psrld"
  39893. case 'q': // 1 string to match.
  39894. return Intrinsic::x86_mmx_psrl_q; // "__builtin_ia32_psrlq"
  39895. case 'w': // 1 string to match.
  39896. return Intrinsic::x86_mmx_psrl_w; // "__builtin_ia32_psrlw"
  39897. }
  39898. break;
  39899. }
  39900. break;
  39901. case 'u': // 4 strings to match.
  39902. if (BuiltinName[18] != 'b')
  39903. break;
  39904. switch (BuiltinName[19]) {
  39905. default: break;
  39906. case 'b': // 1 string to match.
  39907. return Intrinsic::x86_mmx_psub_b; // "__builtin_ia32_psubb"
  39908. case 'd': // 1 string to match.
  39909. return Intrinsic::x86_mmx_psub_d; // "__builtin_ia32_psubd"
  39910. case 'q': // 1 string to match.
  39911. return Intrinsic::x86_mmx_psub_q; // "__builtin_ia32_psubq"
  39912. case 'w': // 1 string to match.
  39913. return Intrinsic::x86_mmx_psub_w; // "__builtin_ia32_psubw"
  39914. }
  39915. break;
  39916. }
  39917. break;
  39918. }
  39919. break;
  39920. case 'r': // 2 strings to match.
  39921. if (memcmp(BuiltinName.data()+16, "cp", 2))
  39922. break;
  39923. switch (BuiltinName[18]) {
  39924. default: break;
  39925. case 'p': // 1 string to match.
  39926. if (BuiltinName[19] != 's')
  39927. break;
  39928. return Intrinsic::x86_sse_rcp_ps; // "__builtin_ia32_rcpps"
  39929. case 's': // 1 string to match.
  39930. if (BuiltinName[19] != 's')
  39931. break;
  39932. return Intrinsic::x86_sse_rcp_ss; // "__builtin_ia32_rcpss"
  39933. }
  39934. break;
  39935. case 's': // 2 strings to match.
  39936. if (memcmp(BuiltinName.data()+16, "ubs", 3))
  39937. break;
  39938. switch (BuiltinName[19]) {
  39939. default: break;
  39940. case 'd': // 1 string to match.
  39941. return Intrinsic::x86_sse2_sub_sd; // "__builtin_ia32_subsd"
  39942. case 's': // 1 string to match.
  39943. return Intrinsic::x86_sse_sub_ss; // "__builtin_ia32_subss"
  39944. }
  39945. break;
  39946. }
  39947. break;
  39948. case 21: // 48 strings to match.
  39949. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  39950. break;
  39951. switch (BuiltinName[15]) {
  39952. default: break;
  39953. case 'c': // 5 strings to match.
  39954. if (memcmp(BuiltinName.data()+16, "omi", 3))
  39955. break;
  39956. switch (BuiltinName[19]) {
  39957. default: break;
  39958. case 'e': // 1 string to match.
  39959. if (BuiltinName[20] != 'q')
  39960. break;
  39961. return Intrinsic::x86_sse_comieq_ss; // "__builtin_ia32_comieq"
  39962. case 'g': // 2 strings to match.
  39963. switch (BuiltinName[20]) {
  39964. default: break;
  39965. case 'e': // 1 string to match.
  39966. return Intrinsic::x86_sse_comige_ss; // "__builtin_ia32_comige"
  39967. case 't': // 1 string to match.
  39968. return Intrinsic::x86_sse_comigt_ss; // "__builtin_ia32_comigt"
  39969. }
  39970. break;
  39971. case 'l': // 2 strings to match.
  39972. switch (BuiltinName[20]) {
  39973. default: break;
  39974. case 'e': // 1 string to match.
  39975. return Intrinsic::x86_sse_comile_ss; // "__builtin_ia32_comile"
  39976. case 't': // 1 string to match.
  39977. return Intrinsic::x86_sse_comilt_ss; // "__builtin_ia32_comilt"
  39978. }
  39979. break;
  39980. }
  39981. break;
  39982. case 'e': // 1 string to match.
  39983. if (memcmp(BuiltinName.data()+16, "xtrqi", 5))
  39984. break;
  39985. return Intrinsic::x86_sse4a_extrqi; // "__builtin_ia32_extrqi"
  39986. case 'h': // 4 strings to match.
  39987. switch (BuiltinName[16]) {
  39988. default: break;
  39989. case 'a': // 2 strings to match.
  39990. if (memcmp(BuiltinName.data()+17, "ddp", 3))
  39991. break;
  39992. switch (BuiltinName[20]) {
  39993. default: break;
  39994. case 'd': // 1 string to match.
  39995. return Intrinsic::x86_sse3_hadd_pd; // "__builtin_ia32_haddpd"
  39996. case 's': // 1 string to match.
  39997. return Intrinsic::x86_sse3_hadd_ps; // "__builtin_ia32_haddps"
  39998. }
  39999. break;
  40000. case 's': // 2 strings to match.
  40001. if (memcmp(BuiltinName.data()+17, "ubp", 3))
  40002. break;
  40003. switch (BuiltinName[20]) {
  40004. default: break;
  40005. case 'd': // 1 string to match.
  40006. return Intrinsic::x86_sse3_hsub_pd; // "__builtin_ia32_hsubpd"
  40007. case 's': // 1 string to match.
  40008. return Intrinsic::x86_sse3_hsub_ps; // "__builtin_ia32_hsubps"
  40009. }
  40010. break;
  40011. }
  40012. break;
  40013. case 'l': // 1 string to match.
  40014. if (memcmp(BuiltinName.data()+16, "fence", 5))
  40015. break;
  40016. return Intrinsic::x86_sse2_lfence; // "__builtin_ia32_lfence"
  40017. case 'm': // 2 strings to match.
  40018. switch (BuiltinName[16]) {
  40019. default: break;
  40020. case 'f': // 1 string to match.
  40021. if (memcmp(BuiltinName.data()+17, "ence", 4))
  40022. break;
  40023. return Intrinsic::x86_sse2_mfence; // "__builtin_ia32_mfence"
  40024. case 'o': // 1 string to match.
  40025. if (memcmp(BuiltinName.data()+17, "vntq", 4))
  40026. break;
  40027. return Intrinsic::x86_mmx_movnt_dq; // "__builtin_ia32_movntq"
  40028. }
  40029. break;
  40030. case 'p': // 30 strings to match.
  40031. switch (BuiltinName[16]) {
  40032. default: break;
  40033. case 'a': // 2 strings to match.
  40034. if (memcmp(BuiltinName.data()+17, "dds", 3))
  40035. break;
  40036. switch (BuiltinName[20]) {
  40037. default: break;
  40038. case 'b': // 1 string to match.
  40039. return Intrinsic::x86_mmx_padds_b; // "__builtin_ia32_paddsb"
  40040. case 'w': // 1 string to match.
  40041. return Intrinsic::x86_mmx_padds_w; // "__builtin_ia32_paddsw"
  40042. }
  40043. break;
  40044. case 'f': // 2 strings to match.
  40045. switch (BuiltinName[17]) {
  40046. default: break;
  40047. case 'n': // 1 string to match.
  40048. if (memcmp(BuiltinName.data()+18, "acc", 3))
  40049. break;
  40050. return Intrinsic::x86_3dnowa_pfnacc; // "__builtin_ia32_pfnacc"
  40051. case 's': // 1 string to match.
  40052. if (memcmp(BuiltinName.data()+18, "ubr", 3))
  40053. break;
  40054. return Intrinsic::x86_3dnow_pfsubr; // "__builtin_ia32_pfsubr"
  40055. }
  40056. break;
  40057. case 'h': // 4 strings to match.
  40058. switch (BuiltinName[17]) {
  40059. default: break;
  40060. case 'a': // 2 strings to match.
  40061. if (memcmp(BuiltinName.data()+18, "dd", 2))
  40062. break;
  40063. switch (BuiltinName[20]) {
  40064. default: break;
  40065. case 'd': // 1 string to match.
  40066. return Intrinsic::x86_ssse3_phadd_d; // "__builtin_ia32_phaddd"
  40067. case 'w': // 1 string to match.
  40068. return Intrinsic::x86_ssse3_phadd_w; // "__builtin_ia32_phaddw"
  40069. }
  40070. break;
  40071. case 's': // 2 strings to match.
  40072. if (memcmp(BuiltinName.data()+18, "ub", 2))
  40073. break;
  40074. switch (BuiltinName[20]) {
  40075. default: break;
  40076. case 'd': // 1 string to match.
  40077. return Intrinsic::x86_ssse3_phsub_d; // "__builtin_ia32_phsubd"
  40078. case 'w': // 1 string to match.
  40079. return Intrinsic::x86_ssse3_phsub_w; // "__builtin_ia32_phsubw"
  40080. }
  40081. break;
  40082. }
  40083. break;
  40084. case 'm': // 6 strings to match.
  40085. switch (BuiltinName[17]) {
  40086. default: break;
  40087. case 'a': // 2 strings to match.
  40088. if (BuiltinName[18] != 'x')
  40089. break;
  40090. switch (BuiltinName[19]) {
  40091. default: break;
  40092. case 's': // 1 string to match.
  40093. if (BuiltinName[20] != 'w')
  40094. break;
  40095. return Intrinsic::x86_mmx_pmaxs_w; // "__builtin_ia32_pmaxsw"
  40096. case 'u': // 1 string to match.
  40097. if (BuiltinName[20] != 'b')
  40098. break;
  40099. return Intrinsic::x86_mmx_pmaxu_b; // "__builtin_ia32_pmaxub"
  40100. }
  40101. break;
  40102. case 'i': // 2 strings to match.
  40103. if (BuiltinName[18] != 'n')
  40104. break;
  40105. switch (BuiltinName[19]) {
  40106. default: break;
  40107. case 's': // 1 string to match.
  40108. if (BuiltinName[20] != 'w')
  40109. break;
  40110. return Intrinsic::x86_mmx_pmins_w; // "__builtin_ia32_pminsw"
  40111. case 'u': // 1 string to match.
  40112. if (BuiltinName[20] != 'b')
  40113. break;
  40114. return Intrinsic::x86_mmx_pminu_b; // "__builtin_ia32_pminub"
  40115. }
  40116. break;
  40117. case 'u': // 2 strings to match.
  40118. if (BuiltinName[18] != 'l')
  40119. break;
  40120. switch (BuiltinName[19]) {
  40121. default: break;
  40122. case 'h': // 1 string to match.
  40123. if (BuiltinName[20] != 'w')
  40124. break;
  40125. return Intrinsic::x86_mmx_pmulh_w; // "__builtin_ia32_pmulhw"
  40126. case 'l': // 1 string to match.
  40127. if (BuiltinName[20] != 'w')
  40128. break;
  40129. return Intrinsic::x86_mmx_pmull_w; // "__builtin_ia32_pmullw"
  40130. }
  40131. break;
  40132. }
  40133. break;
  40134. case 's': // 16 strings to match.
  40135. switch (BuiltinName[17]) {
  40136. default: break;
  40137. case 'a': // 1 string to match.
  40138. if (memcmp(BuiltinName.data()+18, "dbw", 3))
  40139. break;
  40140. return Intrinsic::x86_mmx_psad_bw; // "__builtin_ia32_psadbw"
  40141. case 'h': // 2 strings to match.
  40142. if (memcmp(BuiltinName.data()+18, "uf", 2))
  40143. break;
  40144. switch (BuiltinName[20]) {
  40145. default: break;
  40146. case 'b': // 1 string to match.
  40147. return Intrinsic::x86_ssse3_pshuf_b; // "__builtin_ia32_pshufb"
  40148. case 'w': // 1 string to match.
  40149. return Intrinsic::x86_sse_pshuf_w; // "__builtin_ia32_pshufw"
  40150. }
  40151. break;
  40152. case 'i': // 3 strings to match.
  40153. if (memcmp(BuiltinName.data()+18, "gn", 2))
  40154. break;
  40155. switch (BuiltinName[20]) {
  40156. default: break;
  40157. case 'b': // 1 string to match.
  40158. return Intrinsic::x86_ssse3_psign_b; // "__builtin_ia32_psignb"
  40159. case 'd': // 1 string to match.
  40160. return Intrinsic::x86_ssse3_psign_d; // "__builtin_ia32_psignd"
  40161. case 'w': // 1 string to match.
  40162. return Intrinsic::x86_ssse3_psign_w; // "__builtin_ia32_psignw"
  40163. }
  40164. break;
  40165. case 'l': // 3 strings to match.
  40166. if (BuiltinName[18] != 'l')
  40167. break;
  40168. switch (BuiltinName[19]) {
  40169. default: break;
  40170. case 'd': // 1 string to match.
  40171. if (BuiltinName[20] != 'i')
  40172. break;
  40173. return Intrinsic::x86_mmx_pslli_d; // "__builtin_ia32_pslldi"
  40174. case 'q': // 1 string to match.
  40175. if (BuiltinName[20] != 'i')
  40176. break;
  40177. return Intrinsic::x86_mmx_pslli_q; // "__builtin_ia32_psllqi"
  40178. case 'w': // 1 string to match.
  40179. if (BuiltinName[20] != 'i')
  40180. break;
  40181. return Intrinsic::x86_mmx_pslli_w; // "__builtin_ia32_psllwi"
  40182. }
  40183. break;
  40184. case 'r': // 5 strings to match.
  40185. switch (BuiltinName[18]) {
  40186. default: break;
  40187. case 'a': // 2 strings to match.
  40188. switch (BuiltinName[19]) {
  40189. default: break;
  40190. case 'd': // 1 string to match.
  40191. if (BuiltinName[20] != 'i')
  40192. break;
  40193. return Intrinsic::x86_mmx_psrai_d; // "__builtin_ia32_psradi"
  40194. case 'w': // 1 string to match.
  40195. if (BuiltinName[20] != 'i')
  40196. break;
  40197. return Intrinsic::x86_mmx_psrai_w; // "__builtin_ia32_psrawi"
  40198. }
  40199. break;
  40200. case 'l': // 3 strings to match.
  40201. switch (BuiltinName[19]) {
  40202. default: break;
  40203. case 'd': // 1 string to match.
  40204. if (BuiltinName[20] != 'i')
  40205. break;
  40206. return Intrinsic::x86_mmx_psrli_d; // "__builtin_ia32_psrldi"
  40207. case 'q': // 1 string to match.
  40208. if (BuiltinName[20] != 'i')
  40209. break;
  40210. return Intrinsic::x86_mmx_psrli_q; // "__builtin_ia32_psrlqi"
  40211. case 'w': // 1 string to match.
  40212. if (BuiltinName[20] != 'i')
  40213. break;
  40214. return Intrinsic::x86_mmx_psrli_w; // "__builtin_ia32_psrlwi"
  40215. }
  40216. break;
  40217. }
  40218. break;
  40219. case 'u': // 2 strings to match.
  40220. if (memcmp(BuiltinName.data()+18, "bs", 2))
  40221. break;
  40222. switch (BuiltinName[20]) {
  40223. default: break;
  40224. case 'b': // 1 string to match.
  40225. return Intrinsic::x86_mmx_psubs_b; // "__builtin_ia32_psubsb"
  40226. case 'w': // 1 string to match.
  40227. return Intrinsic::x86_mmx_psubs_w; // "__builtin_ia32_psubsw"
  40228. }
  40229. break;
  40230. }
  40231. break;
  40232. }
  40233. break;
  40234. case 's': // 5 strings to match.
  40235. switch (BuiltinName[16]) {
  40236. default: break;
  40237. case 'f': // 1 string to match.
  40238. if (memcmp(BuiltinName.data()+17, "ence", 4))
  40239. break;
  40240. return Intrinsic::x86_sse_sfence; // "__builtin_ia32_sfence"
  40241. case 'q': // 4 strings to match.
  40242. if (memcmp(BuiltinName.data()+17, "rt", 2))
  40243. break;
  40244. switch (BuiltinName[19]) {
  40245. default: break;
  40246. case 'p': // 2 strings to match.
  40247. switch (BuiltinName[20]) {
  40248. default: break;
  40249. case 'd': // 1 string to match.
  40250. return Intrinsic::x86_sse2_sqrt_pd; // "__builtin_ia32_sqrtpd"
  40251. case 's': // 1 string to match.
  40252. return Intrinsic::x86_sse_sqrt_ps; // "__builtin_ia32_sqrtps"
  40253. }
  40254. break;
  40255. case 's': // 2 strings to match.
  40256. switch (BuiltinName[20]) {
  40257. default: break;
  40258. case 'd': // 1 string to match.
  40259. return Intrinsic::x86_sse2_sqrt_sd; // "__builtin_ia32_sqrtsd"
  40260. case 's': // 1 string to match.
  40261. return Intrinsic::x86_sse_sqrt_ss; // "__builtin_ia32_sqrtss"
  40262. }
  40263. break;
  40264. }
  40265. break;
  40266. }
  40267. break;
  40268. }
  40269. break;
  40270. case 22: // 53 strings to match.
  40271. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  40272. break;
  40273. switch (BuiltinName[15]) {
  40274. default: break;
  40275. case 'b': // 4 strings to match.
  40276. switch (BuiltinName[16]) {
  40277. default: break;
  40278. case 'l': // 2 strings to match.
  40279. if (memcmp(BuiltinName.data()+17, "endp", 4))
  40280. break;
  40281. switch (BuiltinName[21]) {
  40282. default: break;
  40283. case 'd': // 1 string to match.
  40284. return Intrinsic::x86_sse41_blendpd; // "__builtin_ia32_blendpd"
  40285. case 's': // 1 string to match.
  40286. return Intrinsic::x86_sse41_blendps; // "__builtin_ia32_blendps"
  40287. }
  40288. break;
  40289. case 'z': // 2 strings to match.
  40290. if (memcmp(BuiltinName.data()+17, "hi_", 3))
  40291. break;
  40292. switch (BuiltinName[20]) {
  40293. default: break;
  40294. case 'd': // 1 string to match.
  40295. if (BuiltinName[21] != 'i')
  40296. break;
  40297. return Intrinsic::x86_bmi_bzhi_64; // "__builtin_ia32_bzhi_di"
  40298. case 's': // 1 string to match.
  40299. if (BuiltinName[21] != 'i')
  40300. break;
  40301. return Intrinsic::x86_bmi_bzhi_32; // "__builtin_ia32_bzhi_si"
  40302. }
  40303. break;
  40304. }
  40305. break;
  40306. case 'c': // 6 strings to match.
  40307. switch (BuiltinName[16]) {
  40308. default: break;
  40309. case 'l': // 1 string to match.
  40310. if (memcmp(BuiltinName.data()+17, "flush", 5))
  40311. break;
  40312. return Intrinsic::x86_sse2_clflush; // "__builtin_ia32_clflush"
  40313. case 'o': // 1 string to match.
  40314. if (memcmp(BuiltinName.data()+17, "mineq", 5))
  40315. break;
  40316. return Intrinsic::x86_sse_comineq_ss; // "__builtin_ia32_comineq"
  40317. case 'r': // 4 strings to match.
  40318. if (memcmp(BuiltinName.data()+17, "c32", 3))
  40319. break;
  40320. switch (BuiltinName[20]) {
  40321. default: break;
  40322. case 'd': // 1 string to match.
  40323. if (BuiltinName[21] != 'i')
  40324. break;
  40325. return Intrinsic::x86_sse42_crc32_64_64; // "__builtin_ia32_crc32di"
  40326. case 'h': // 1 string to match.
  40327. if (BuiltinName[21] != 'i')
  40328. break;
  40329. return Intrinsic::x86_sse42_crc32_32_16; // "__builtin_ia32_crc32hi"
  40330. case 'q': // 1 string to match.
  40331. if (BuiltinName[21] != 'i')
  40332. break;
  40333. return Intrinsic::x86_sse42_crc32_32_8; // "__builtin_ia32_crc32qi"
  40334. case 's': // 1 string to match.
  40335. if (BuiltinName[21] != 'i')
  40336. break;
  40337. return Intrinsic::x86_sse42_crc32_32_32; // "__builtin_ia32_crc32si"
  40338. }
  40339. break;
  40340. }
  40341. break;
  40342. case 'd': // 1 string to match.
  40343. if (memcmp(BuiltinName.data()+16, "pps256", 6))
  40344. break;
  40345. return Intrinsic::x86_avx_dp_ps_256; // "__builtin_ia32_dpps256"
  40346. case 'i': // 1 string to match.
  40347. if (memcmp(BuiltinName.data()+16, "nsertq", 6))
  40348. break;
  40349. return Intrinsic::x86_sse4a_insertq; // "__builtin_ia32_insertq"
  40350. case 'm': // 3 strings to match.
  40351. if (BuiltinName[16] != 'o')
  40352. break;
  40353. switch (BuiltinName[17]) {
  40354. default: break;
  40355. case 'n': // 1 string to match.
  40356. if (memcmp(BuiltinName.data()+18, "itor", 4))
  40357. break;
  40358. return Intrinsic::x86_sse3_monitor; // "__builtin_ia32_monitor"
  40359. case 'v': // 2 strings to match.
  40360. if (memcmp(BuiltinName.data()+18, "nts", 3))
  40361. break;
  40362. switch (BuiltinName[21]) {
  40363. default: break;
  40364. case 'd': // 1 string to match.
  40365. return Intrinsic::x86_sse4a_movnt_sd; // "__builtin_ia32_movntsd"
  40366. case 's': // 1 string to match.
  40367. return Intrinsic::x86_sse4a_movnt_ss; // "__builtin_ia32_movntss"
  40368. }
  40369. break;
  40370. }
  40371. break;
  40372. case 'p': // 27 strings to match.
  40373. switch (BuiltinName[16]) {
  40374. default: break;
  40375. case 'a': // 4 strings to match.
  40376. switch (BuiltinName[17]) {
  40377. default: break;
  40378. case 'd': // 2 strings to match.
  40379. if (memcmp(BuiltinName.data()+18, "dus", 3))
  40380. break;
  40381. switch (BuiltinName[21]) {
  40382. default: break;
  40383. case 'b': // 1 string to match.
  40384. return Intrinsic::x86_mmx_paddus_b; // "__builtin_ia32_paddusb"
  40385. case 'w': // 1 string to match.
  40386. return Intrinsic::x86_mmx_paddus_w; // "__builtin_ia32_paddusw"
  40387. }
  40388. break;
  40389. case 'l': // 1 string to match.
  40390. if (memcmp(BuiltinName.data()+18, "ignr", 4))
  40391. break;
  40392. return Intrinsic::x86_mmx_palignr_b; // "__builtin_ia32_palignr"
  40393. case 'v': // 1 string to match.
  40394. if (memcmp(BuiltinName.data()+18, "gusb", 4))
  40395. break;
  40396. return Intrinsic::x86_3dnow_pavgusb; // "__builtin_ia32_pavgusb"
  40397. }
  40398. break;
  40399. case 'c': // 6 strings to match.
  40400. if (memcmp(BuiltinName.data()+17, "mp", 2))
  40401. break;
  40402. switch (BuiltinName[19]) {
  40403. default: break;
  40404. case 'e': // 3 strings to match.
  40405. if (BuiltinName[20] != 'q')
  40406. break;
  40407. switch (BuiltinName[21]) {
  40408. default: break;
  40409. case 'b': // 1 string to match.
  40410. return Intrinsic::x86_mmx_pcmpeq_b; // "__builtin_ia32_pcmpeqb"
  40411. case 'd': // 1 string to match.
  40412. return Intrinsic::x86_mmx_pcmpeq_d; // "__builtin_ia32_pcmpeqd"
  40413. case 'w': // 1 string to match.
  40414. return Intrinsic::x86_mmx_pcmpeq_w; // "__builtin_ia32_pcmpeqw"
  40415. }
  40416. break;
  40417. case 'g': // 3 strings to match.
  40418. if (BuiltinName[20] != 't')
  40419. break;
  40420. switch (BuiltinName[21]) {
  40421. default: break;
  40422. case 'b': // 1 string to match.
  40423. return Intrinsic::x86_mmx_pcmpgt_b; // "__builtin_ia32_pcmpgtb"
  40424. case 'd': // 1 string to match.
  40425. return Intrinsic::x86_mmx_pcmpgt_d; // "__builtin_ia32_pcmpgtd"
  40426. case 'w': // 1 string to match.
  40427. return Intrinsic::x86_mmx_pcmpgt_w; // "__builtin_ia32_pcmpgtw"
  40428. }
  40429. break;
  40430. }
  40431. break;
  40432. case 'd': // 2 strings to match.
  40433. if (memcmp(BuiltinName.data()+17, "ep_", 3))
  40434. break;
  40435. switch (BuiltinName[20]) {
  40436. default: break;
  40437. case 'd': // 1 string to match.
  40438. if (BuiltinName[21] != 'i')
  40439. break;
  40440. return Intrinsic::x86_bmi_pdep_64; // "__builtin_ia32_pdep_di"
  40441. case 's': // 1 string to match.
  40442. if (BuiltinName[21] != 'i')
  40443. break;
  40444. return Intrinsic::x86_bmi_pdep_32; // "__builtin_ia32_pdep_si"
  40445. }
  40446. break;
  40447. case 'e': // 2 strings to match.
  40448. if (memcmp(BuiltinName.data()+17, "xt_", 3))
  40449. break;
  40450. switch (BuiltinName[20]) {
  40451. default: break;
  40452. case 'd': // 1 string to match.
  40453. if (BuiltinName[21] != 'i')
  40454. break;
  40455. return Intrinsic::x86_bmi_pext_64; // "__builtin_ia32_pext_di"
  40456. case 's': // 1 string to match.
  40457. if (BuiltinName[21] != 'i')
  40458. break;
  40459. return Intrinsic::x86_bmi_pext_32; // "__builtin_ia32_pext_si"
  40460. }
  40461. break;
  40462. case 'f': // 5 strings to match.
  40463. switch (BuiltinName[17]) {
  40464. default: break;
  40465. case 'c': // 3 strings to match.
  40466. if (memcmp(BuiltinName.data()+18, "mp", 2))
  40467. break;
  40468. switch (BuiltinName[20]) {
  40469. default: break;
  40470. case 'e': // 1 string to match.
  40471. if (BuiltinName[21] != 'q')
  40472. break;
  40473. return Intrinsic::x86_3dnow_pfcmpeq; // "__builtin_ia32_pfcmpeq"
  40474. case 'g': // 2 strings to match.
  40475. switch (BuiltinName[21]) {
  40476. default: break;
  40477. case 'e': // 1 string to match.
  40478. return Intrinsic::x86_3dnow_pfcmpge; // "__builtin_ia32_pfcmpge"
  40479. case 't': // 1 string to match.
  40480. return Intrinsic::x86_3dnow_pfcmpgt; // "__builtin_ia32_pfcmpgt"
  40481. }
  40482. break;
  40483. }
  40484. break;
  40485. case 'p': // 1 string to match.
  40486. if (memcmp(BuiltinName.data()+18, "nacc", 4))
  40487. break;
  40488. return Intrinsic::x86_3dnowa_pfpnacc; // "__builtin_ia32_pfpnacc"
  40489. case 'r': // 1 string to match.
  40490. if (memcmp(BuiltinName.data()+18, "sqrt", 4))
  40491. break;
  40492. return Intrinsic::x86_3dnow_pfrsqrt; // "__builtin_ia32_pfrsqrt"
  40493. }
  40494. break;
  40495. case 'h': // 2 strings to match.
  40496. switch (BuiltinName[17]) {
  40497. default: break;
  40498. case 'a': // 1 string to match.
  40499. if (memcmp(BuiltinName.data()+18, "ddsw", 4))
  40500. break;
  40501. return Intrinsic::x86_ssse3_phadd_sw; // "__builtin_ia32_phaddsw"
  40502. case 's': // 1 string to match.
  40503. if (memcmp(BuiltinName.data()+18, "ubsw", 4))
  40504. break;
  40505. return Intrinsic::x86_ssse3_phsub_sw; // "__builtin_ia32_phsubsw"
  40506. }
  40507. break;
  40508. case 'm': // 4 strings to match.
  40509. switch (BuiltinName[17]) {
  40510. default: break;
  40511. case 'a': // 1 string to match.
  40512. if (memcmp(BuiltinName.data()+18, "ddwd", 4))
  40513. break;
  40514. return Intrinsic::x86_mmx_pmadd_wd; // "__builtin_ia32_pmaddwd"
  40515. case 'u': // 3 strings to match.
  40516. if (BuiltinName[18] != 'l')
  40517. break;
  40518. switch (BuiltinName[19]) {
  40519. default: break;
  40520. case 'h': // 2 strings to match.
  40521. switch (BuiltinName[20]) {
  40522. default: break;
  40523. case 'r': // 1 string to match.
  40524. if (BuiltinName[21] != 'w')
  40525. break;
  40526. return Intrinsic::x86_3dnow_pmulhrw; // "__builtin_ia32_pmulhrw"
  40527. case 'u': // 1 string to match.
  40528. if (BuiltinName[21] != 'w')
  40529. break;
  40530. return Intrinsic::x86_mmx_pmulhu_w; // "__builtin_ia32_pmulhuw"
  40531. }
  40532. break;
  40533. case 'u': // 1 string to match.
  40534. if (memcmp(BuiltinName.data()+20, "dq", 2))
  40535. break;
  40536. return Intrinsic::x86_mmx_pmulu_dq; // "__builtin_ia32_pmuludq"
  40537. }
  40538. break;
  40539. }
  40540. break;
  40541. case 's': // 2 strings to match.
  40542. if (memcmp(BuiltinName.data()+17, "ubus", 4))
  40543. break;
  40544. switch (BuiltinName[21]) {
  40545. default: break;
  40546. case 'b': // 1 string to match.
  40547. return Intrinsic::x86_mmx_psubus_b; // "__builtin_ia32_psubusb"
  40548. case 'w': // 1 string to match.
  40549. return Intrinsic::x86_mmx_psubus_w; // "__builtin_ia32_psubusw"
  40550. }
  40551. break;
  40552. }
  40553. break;
  40554. case 'r': // 6 strings to match.
  40555. switch (BuiltinName[16]) {
  40556. default: break;
  40557. case 'o': // 4 strings to match.
  40558. if (memcmp(BuiltinName.data()+17, "und", 3))
  40559. break;
  40560. switch (BuiltinName[20]) {
  40561. default: break;
  40562. case 'p': // 2 strings to match.
  40563. switch (BuiltinName[21]) {
  40564. default: break;
  40565. case 'd': // 1 string to match.
  40566. return Intrinsic::x86_sse41_round_pd; // "__builtin_ia32_roundpd"
  40567. case 's': // 1 string to match.
  40568. return Intrinsic::x86_sse41_round_ps; // "__builtin_ia32_roundps"
  40569. }
  40570. break;
  40571. case 's': // 2 strings to match.
  40572. switch (BuiltinName[21]) {
  40573. default: break;
  40574. case 'd': // 1 string to match.
  40575. return Intrinsic::x86_sse41_round_sd; // "__builtin_ia32_roundsd"
  40576. case 's': // 1 string to match.
  40577. return Intrinsic::x86_sse41_round_ss; // "__builtin_ia32_roundss"
  40578. }
  40579. break;
  40580. }
  40581. break;
  40582. case 's': // 2 strings to match.
  40583. if (memcmp(BuiltinName.data()+17, "qrt", 3))
  40584. break;
  40585. switch (BuiltinName[20]) {
  40586. default: break;
  40587. case 'p': // 1 string to match.
  40588. if (BuiltinName[21] != 's')
  40589. break;
  40590. return Intrinsic::x86_sse_rsqrt_ps; // "__builtin_ia32_rsqrtps"
  40591. case 's': // 1 string to match.
  40592. if (BuiltinName[21] != 's')
  40593. break;
  40594. return Intrinsic::x86_sse_rsqrt_ss; // "__builtin_ia32_rsqrtss"
  40595. }
  40596. break;
  40597. }
  40598. break;
  40599. case 'u': // 5 strings to match.
  40600. if (memcmp(BuiltinName.data()+16, "comi", 4))
  40601. break;
  40602. switch (BuiltinName[20]) {
  40603. default: break;
  40604. case 'e': // 1 string to match.
  40605. if (BuiltinName[21] != 'q')
  40606. break;
  40607. return Intrinsic::x86_sse_ucomieq_ss; // "__builtin_ia32_ucomieq"
  40608. case 'g': // 2 strings to match.
  40609. switch (BuiltinName[21]) {
  40610. default: break;
  40611. case 'e': // 1 string to match.
  40612. return Intrinsic::x86_sse_ucomige_ss; // "__builtin_ia32_ucomige"
  40613. case 't': // 1 string to match.
  40614. return Intrinsic::x86_sse_ucomigt_ss; // "__builtin_ia32_ucomigt"
  40615. }
  40616. break;
  40617. case 'l': // 2 strings to match.
  40618. switch (BuiltinName[21]) {
  40619. default: break;
  40620. case 'e': // 1 string to match.
  40621. return Intrinsic::x86_sse_ucomile_ss; // "__builtin_ia32_ucomile"
  40622. case 't': // 1 string to match.
  40623. return Intrinsic::x86_sse_ucomilt_ss; // "__builtin_ia32_ucomilt"
  40624. }
  40625. break;
  40626. }
  40627. break;
  40628. }
  40629. break;
  40630. case 23: // 99 strings to match.
  40631. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  40632. break;
  40633. switch (BuiltinName[15]) {
  40634. default: break;
  40635. case 'a': // 2 strings to match.
  40636. if (memcmp(BuiltinName.data()+16, "ddsubp", 6))
  40637. break;
  40638. switch (BuiltinName[22]) {
  40639. default: break;
  40640. case 'd': // 1 string to match.
  40641. return Intrinsic::x86_sse3_addsub_pd; // "__builtin_ia32_addsubpd"
  40642. case 's': // 1 string to match.
  40643. return Intrinsic::x86_sse3_addsub_ps; // "__builtin_ia32_addsubps"
  40644. }
  40645. break;
  40646. case 'b': // 2 strings to match.
  40647. if (memcmp(BuiltinName.data()+16, "lendvp", 6))
  40648. break;
  40649. switch (BuiltinName[22]) {
  40650. default: break;
  40651. case 'd': // 1 string to match.
  40652. return Intrinsic::x86_sse41_blendvpd; // "__builtin_ia32_blendvpd"
  40653. case 's': // 1 string to match.
  40654. return Intrinsic::x86_sse41_blendvps; // "__builtin_ia32_blendvps"
  40655. }
  40656. break;
  40657. case 'c': // 23 strings to match.
  40658. switch (BuiltinName[16]) {
  40659. default: break;
  40660. case 'm': // 2 strings to match.
  40661. if (memcmp(BuiltinName.data()+17, "pp", 2))
  40662. break;
  40663. switch (BuiltinName[19]) {
  40664. default: break;
  40665. case 'd': // 1 string to match.
  40666. if (memcmp(BuiltinName.data()+20, "256", 3))
  40667. break;
  40668. return Intrinsic::x86_avx_cmp_pd_256; // "__builtin_ia32_cmppd256"
  40669. case 's': // 1 string to match.
  40670. if (memcmp(BuiltinName.data()+20, "256", 3))
  40671. break;
  40672. return Intrinsic::x86_avx_cmp_ps_256; // "__builtin_ia32_cmpps256"
  40673. }
  40674. break;
  40675. case 'o': // 5 strings to match.
  40676. if (memcmp(BuiltinName.data()+17, "misd", 4))
  40677. break;
  40678. switch (BuiltinName[21]) {
  40679. default: break;
  40680. case 'e': // 1 string to match.
  40681. if (BuiltinName[22] != 'q')
  40682. break;
  40683. return Intrinsic::x86_sse2_comieq_sd; // "__builtin_ia32_comisdeq"
  40684. case 'g': // 2 strings to match.
  40685. switch (BuiltinName[22]) {
  40686. default: break;
  40687. case 'e': // 1 string to match.
  40688. return Intrinsic::x86_sse2_comige_sd; // "__builtin_ia32_comisdge"
  40689. case 't': // 1 string to match.
  40690. return Intrinsic::x86_sse2_comigt_sd; // "__builtin_ia32_comisdgt"
  40691. }
  40692. break;
  40693. case 'l': // 2 strings to match.
  40694. switch (BuiltinName[22]) {
  40695. default: break;
  40696. case 'e': // 1 string to match.
  40697. return Intrinsic::x86_sse2_comile_sd; // "__builtin_ia32_comisdle"
  40698. case 't': // 1 string to match.
  40699. return Intrinsic::x86_sse2_comilt_sd; // "__builtin_ia32_comisdlt"
  40700. }
  40701. break;
  40702. }
  40703. break;
  40704. case 'v': // 16 strings to match.
  40705. if (BuiltinName[17] != 't')
  40706. break;
  40707. switch (BuiltinName[18]) {
  40708. default: break;
  40709. case 'd': // 2 strings to match.
  40710. if (memcmp(BuiltinName.data()+19, "q2p", 3))
  40711. break;
  40712. switch (BuiltinName[22]) {
  40713. default: break;
  40714. case 'd': // 1 string to match.
  40715. return Intrinsic::x86_sse2_cvtdq2pd; // "__builtin_ia32_cvtdq2pd"
  40716. case 's': // 1 string to match.
  40717. return Intrinsic::x86_sse2_cvtdq2ps; // "__builtin_ia32_cvtdq2ps"
  40718. }
  40719. break;
  40720. case 'p': // 8 strings to match.
  40721. switch (BuiltinName[19]) {
  40722. default: break;
  40723. case 'd': // 3 strings to match.
  40724. if (BuiltinName[20] != '2')
  40725. break;
  40726. switch (BuiltinName[21]) {
  40727. default: break;
  40728. case 'd': // 1 string to match.
  40729. if (BuiltinName[22] != 'q')
  40730. break;
  40731. return Intrinsic::x86_sse2_cvtpd2dq; // "__builtin_ia32_cvtpd2dq"
  40732. case 'p': // 2 strings to match.
  40733. switch (BuiltinName[22]) {
  40734. default: break;
  40735. case 'i': // 1 string to match.
  40736. return Intrinsic::x86_sse_cvtpd2pi; // "__builtin_ia32_cvtpd2pi"
  40737. case 's': // 1 string to match.
  40738. return Intrinsic::x86_sse2_cvtpd2ps; // "__builtin_ia32_cvtpd2ps"
  40739. }
  40740. break;
  40741. }
  40742. break;
  40743. case 'i': // 2 strings to match.
  40744. if (memcmp(BuiltinName.data()+20, "2p", 2))
  40745. break;
  40746. switch (BuiltinName[22]) {
  40747. default: break;
  40748. case 'd': // 1 string to match.
  40749. return Intrinsic::x86_sse_cvtpi2pd; // "__builtin_ia32_cvtpi2pd"
  40750. case 's': // 1 string to match.
  40751. return Intrinsic::x86_sse_cvtpi2ps; // "__builtin_ia32_cvtpi2ps"
  40752. }
  40753. break;
  40754. case 's': // 3 strings to match.
  40755. if (BuiltinName[20] != '2')
  40756. break;
  40757. switch (BuiltinName[21]) {
  40758. default: break;
  40759. case 'd': // 1 string to match.
  40760. if (BuiltinName[22] != 'q')
  40761. break;
  40762. return Intrinsic::x86_sse2_cvtps2dq; // "__builtin_ia32_cvtps2dq"
  40763. case 'p': // 2 strings to match.
  40764. switch (BuiltinName[22]) {
  40765. default: break;
  40766. case 'd': // 1 string to match.
  40767. return Intrinsic::x86_sse2_cvtps2pd; // "__builtin_ia32_cvtps2pd"
  40768. case 'i': // 1 string to match.
  40769. return Intrinsic::x86_sse_cvtps2pi; // "__builtin_ia32_cvtps2pi"
  40770. }
  40771. break;
  40772. }
  40773. break;
  40774. }
  40775. break;
  40776. case 's': // 6 strings to match.
  40777. switch (BuiltinName[19]) {
  40778. default: break;
  40779. case 'd': // 2 strings to match.
  40780. if (memcmp(BuiltinName.data()+20, "2s", 2))
  40781. break;
  40782. switch (BuiltinName[22]) {
  40783. default: break;
  40784. case 'i': // 1 string to match.
  40785. return Intrinsic::x86_sse2_cvtsd2si; // "__builtin_ia32_cvtsd2si"
  40786. case 's': // 1 string to match.
  40787. return Intrinsic::x86_sse2_cvtsd2ss; // "__builtin_ia32_cvtsd2ss"
  40788. }
  40789. break;
  40790. case 'i': // 2 strings to match.
  40791. if (memcmp(BuiltinName.data()+20, "2s", 2))
  40792. break;
  40793. switch (BuiltinName[22]) {
  40794. default: break;
  40795. case 'd': // 1 string to match.
  40796. return Intrinsic::x86_sse2_cvtsi2sd; // "__builtin_ia32_cvtsi2sd"
  40797. case 's': // 1 string to match.
  40798. return Intrinsic::x86_sse_cvtsi2ss; // "__builtin_ia32_cvtsi2ss"
  40799. }
  40800. break;
  40801. case 's': // 2 strings to match.
  40802. if (memcmp(BuiltinName.data()+20, "2s", 2))
  40803. break;
  40804. switch (BuiltinName[22]) {
  40805. default: break;
  40806. case 'd': // 1 string to match.
  40807. return Intrinsic::x86_sse2_cvtss2sd; // "__builtin_ia32_cvtss2sd"
  40808. case 'i': // 1 string to match.
  40809. return Intrinsic::x86_sse_cvtss2si; // "__builtin_ia32_cvtss2si"
  40810. }
  40811. break;
  40812. }
  40813. break;
  40814. }
  40815. break;
  40816. }
  40817. break;
  40818. case 'i': // 1 string to match.
  40819. if (memcmp(BuiltinName.data()+16, "nsertqi", 7))
  40820. break;
  40821. return Intrinsic::x86_sse4a_insertqi; // "__builtin_ia32_insertqi"
  40822. case 'l': // 1 string to match.
  40823. if (memcmp(BuiltinName.data()+16, "ddqu256", 7))
  40824. break;
  40825. return Intrinsic::x86_avx_ldu_dq_256; // "__builtin_ia32_lddqu256"
  40826. case 'm': // 8 strings to match.
  40827. switch (BuiltinName[16]) {
  40828. default: break;
  40829. case 'a': // 3 strings to match.
  40830. switch (BuiltinName[17]) {
  40831. default: break;
  40832. case 's': // 1 string to match.
  40833. if (memcmp(BuiltinName.data()+18, "kmovq", 5))
  40834. break;
  40835. return Intrinsic::x86_mmx_maskmovq; // "__builtin_ia32_maskmovq"
  40836. case 'x': // 2 strings to match.
  40837. if (BuiltinName[18] != 'p')
  40838. break;
  40839. switch (BuiltinName[19]) {
  40840. default: break;
  40841. case 'd': // 1 string to match.
  40842. if (memcmp(BuiltinName.data()+20, "256", 3))
  40843. break;
  40844. return Intrinsic::x86_avx_max_pd_256; // "__builtin_ia32_maxpd256"
  40845. case 's': // 1 string to match.
  40846. if (memcmp(BuiltinName.data()+20, "256", 3))
  40847. break;
  40848. return Intrinsic::x86_avx_max_ps_256; // "__builtin_ia32_maxps256"
  40849. }
  40850. break;
  40851. }
  40852. break;
  40853. case 'i': // 2 strings to match.
  40854. if (memcmp(BuiltinName.data()+17, "np", 2))
  40855. break;
  40856. switch (BuiltinName[19]) {
  40857. default: break;
  40858. case 'd': // 1 string to match.
  40859. if (memcmp(BuiltinName.data()+20, "256", 3))
  40860. break;
  40861. return Intrinsic::x86_avx_min_pd_256; // "__builtin_ia32_minpd256"
  40862. case 's': // 1 string to match.
  40863. if (memcmp(BuiltinName.data()+20, "256", 3))
  40864. break;
  40865. return Intrinsic::x86_avx_min_ps_256; // "__builtin_ia32_minps256"
  40866. }
  40867. break;
  40868. case 'o': // 3 strings to match.
  40869. if (BuiltinName[17] != 'v')
  40870. break;
  40871. switch (BuiltinName[18]) {
  40872. default: break;
  40873. case 'm': // 2 strings to match.
  40874. if (memcmp(BuiltinName.data()+19, "skp", 3))
  40875. break;
  40876. switch (BuiltinName[22]) {
  40877. default: break;
  40878. case 'd': // 1 string to match.
  40879. return Intrinsic::x86_sse2_movmsk_pd; // "__builtin_ia32_movmskpd"
  40880. case 's': // 1 string to match.
  40881. return Intrinsic::x86_sse_movmsk_ps; // "__builtin_ia32_movmskps"
  40882. }
  40883. break;
  40884. case 'n': // 1 string to match.
  40885. if (memcmp(BuiltinName.data()+19, "tdqa", 4))
  40886. break;
  40887. return Intrinsic::x86_sse41_movntdqa; // "__builtin_ia32_movntdqa"
  40888. }
  40889. break;
  40890. }
  40891. break;
  40892. case 'p': // 44 strings to match.
  40893. switch (BuiltinName[16]) {
  40894. default: break;
  40895. case 'a': // 13 strings to match.
  40896. switch (BuiltinName[17]) {
  40897. default: break;
  40898. case 'b': // 6 strings to match.
  40899. if (BuiltinName[18] != 's')
  40900. break;
  40901. switch (BuiltinName[19]) {
  40902. default: break;
  40903. case 'b': // 2 strings to match.
  40904. switch (BuiltinName[20]) {
  40905. default: break;
  40906. case '1': // 1 string to match.
  40907. if (memcmp(BuiltinName.data()+21, "28", 2))
  40908. break;
  40909. return Intrinsic::x86_ssse3_pabs_b_128; // "__builtin_ia32_pabsb128"
  40910. case '2': // 1 string to match.
  40911. if (memcmp(BuiltinName.data()+21, "56", 2))
  40912. break;
  40913. return Intrinsic::x86_avx2_pabs_b; // "__builtin_ia32_pabsb256"
  40914. }
  40915. break;
  40916. case 'd': // 2 strings to match.
  40917. switch (BuiltinName[20]) {
  40918. default: break;
  40919. case '1': // 1 string to match.
  40920. if (memcmp(BuiltinName.data()+21, "28", 2))
  40921. break;
  40922. return Intrinsic::x86_ssse3_pabs_d_128; // "__builtin_ia32_pabsd128"
  40923. case '2': // 1 string to match.
  40924. if (memcmp(BuiltinName.data()+21, "56", 2))
  40925. break;
  40926. return Intrinsic::x86_avx2_pabs_d; // "__builtin_ia32_pabsd256"
  40927. }
  40928. break;
  40929. case 'w': // 2 strings to match.
  40930. switch (BuiltinName[20]) {
  40931. default: break;
  40932. case '1': // 1 string to match.
  40933. if (memcmp(BuiltinName.data()+21, "28", 2))
  40934. break;
  40935. return Intrinsic::x86_ssse3_pabs_w_128; // "__builtin_ia32_pabsw128"
  40936. case '2': // 1 string to match.
  40937. if (memcmp(BuiltinName.data()+21, "56", 2))
  40938. break;
  40939. return Intrinsic::x86_avx2_pabs_w; // "__builtin_ia32_pabsw256"
  40940. }
  40941. break;
  40942. }
  40943. break;
  40944. case 'c': // 3 strings to match.
  40945. if (BuiltinName[18] != 'k')
  40946. break;
  40947. switch (BuiltinName[19]) {
  40948. default: break;
  40949. case 's': // 2 strings to match.
  40950. if (BuiltinName[20] != 's')
  40951. break;
  40952. switch (BuiltinName[21]) {
  40953. default: break;
  40954. case 'd': // 1 string to match.
  40955. if (BuiltinName[22] != 'w')
  40956. break;
  40957. return Intrinsic::x86_mmx_packssdw; // "__builtin_ia32_packssdw"
  40958. case 'w': // 1 string to match.
  40959. if (BuiltinName[22] != 'b')
  40960. break;
  40961. return Intrinsic::x86_mmx_packsswb; // "__builtin_ia32_packsswb"
  40962. }
  40963. break;
  40964. case 'u': // 1 string to match.
  40965. if (memcmp(BuiltinName.data()+20, "swb", 3))
  40966. break;
  40967. return Intrinsic::x86_mmx_packuswb; // "__builtin_ia32_packuswb"
  40968. }
  40969. break;
  40970. case 'v': // 4 strings to match.
  40971. if (BuiltinName[18] != 'g')
  40972. break;
  40973. switch (BuiltinName[19]) {
  40974. default: break;
  40975. case 'b': // 2 strings to match.
  40976. switch (BuiltinName[20]) {
  40977. default: break;
  40978. case '1': // 1 string to match.
  40979. if (memcmp(BuiltinName.data()+21, "28", 2))
  40980. break;
  40981. return Intrinsic::x86_sse2_pavg_b; // "__builtin_ia32_pavgb128"
  40982. case '2': // 1 string to match.
  40983. if (memcmp(BuiltinName.data()+21, "56", 2))
  40984. break;
  40985. return Intrinsic::x86_avx2_pavg_b; // "__builtin_ia32_pavgb256"
  40986. }
  40987. break;
  40988. case 'w': // 2 strings to match.
  40989. switch (BuiltinName[20]) {
  40990. default: break;
  40991. case '1': // 1 string to match.
  40992. if (memcmp(BuiltinName.data()+21, "28", 2))
  40993. break;
  40994. return Intrinsic::x86_sse2_pavg_w; // "__builtin_ia32_pavgw128"
  40995. case '2': // 1 string to match.
  40996. if (memcmp(BuiltinName.data()+21, "56", 2))
  40997. break;
  40998. return Intrinsic::x86_avx2_pavg_w; // "__builtin_ia32_pavgw256"
  40999. }
  41000. break;
  41001. }
  41002. break;
  41003. }
  41004. break;
  41005. case 'f': // 3 strings to match.
  41006. if (BuiltinName[17] != 'r')
  41007. break;
  41008. switch (BuiltinName[18]) {
  41009. default: break;
  41010. case 'c': // 2 strings to match.
  41011. if (memcmp(BuiltinName.data()+19, "pit", 3))
  41012. break;
  41013. switch (BuiltinName[22]) {
  41014. default: break;
  41015. case '1': // 1 string to match.
  41016. return Intrinsic::x86_3dnow_pfrcpit1; // "__builtin_ia32_pfrcpit1"
  41017. case '2': // 1 string to match.
  41018. return Intrinsic::x86_3dnow_pfrcpit2; // "__builtin_ia32_pfrcpit2"
  41019. }
  41020. break;
  41021. case 's': // 1 string to match.
  41022. if (memcmp(BuiltinName.data()+19, "qit1", 4))
  41023. break;
  41024. return Intrinsic::x86_3dnow_pfrsqit1; // "__builtin_ia32_pfrsqit1"
  41025. }
  41026. break;
  41027. case 'm': // 2 strings to match.
  41028. switch (BuiltinName[17]) {
  41029. default: break;
  41030. case 'o': // 1 string to match.
  41031. if (memcmp(BuiltinName.data()+18, "vmskb", 5))
  41032. break;
  41033. return Intrinsic::x86_mmx_pmovmskb; // "__builtin_ia32_pmovmskb"
  41034. case 'u': // 1 string to match.
  41035. if (memcmp(BuiltinName.data()+18, "lhrsw", 5))
  41036. break;
  41037. return Intrinsic::x86_ssse3_pmul_hr_sw; // "__builtin_ia32_pmulhrsw"
  41038. }
  41039. break;
  41040. case 's': // 26 strings to match.
  41041. switch (BuiltinName[17]) {
  41042. default: break;
  41043. case 'l': // 10 strings to match.
  41044. if (BuiltinName[18] != 'l')
  41045. break;
  41046. switch (BuiltinName[19]) {
  41047. default: break;
  41048. case 'd': // 2 strings to match.
  41049. switch (BuiltinName[20]) {
  41050. default: break;
  41051. case '1': // 1 string to match.
  41052. if (memcmp(BuiltinName.data()+21, "28", 2))
  41053. break;
  41054. return Intrinsic::x86_sse2_psll_d; // "__builtin_ia32_pslld128"
  41055. case '2': // 1 string to match.
  41056. if (memcmp(BuiltinName.data()+21, "56", 2))
  41057. break;
  41058. return Intrinsic::x86_avx2_psll_d; // "__builtin_ia32_pslld256"
  41059. }
  41060. break;
  41061. case 'q': // 2 strings to match.
  41062. switch (BuiltinName[20]) {
  41063. default: break;
  41064. case '1': // 1 string to match.
  41065. if (memcmp(BuiltinName.data()+21, "28", 2))
  41066. break;
  41067. return Intrinsic::x86_sse2_psll_q; // "__builtin_ia32_psllq128"
  41068. case '2': // 1 string to match.
  41069. if (memcmp(BuiltinName.data()+21, "56", 2))
  41070. break;
  41071. return Intrinsic::x86_avx2_psll_q; // "__builtin_ia32_psllq256"
  41072. }
  41073. break;
  41074. case 'v': // 4 strings to match.
  41075. switch (BuiltinName[20]) {
  41076. default: break;
  41077. case '2': // 1 string to match.
  41078. if (memcmp(BuiltinName.data()+21, "di", 2))
  41079. break;
  41080. return Intrinsic::x86_avx2_psllv_q; // "__builtin_ia32_psllv2di"
  41081. case '4': // 2 strings to match.
  41082. switch (BuiltinName[21]) {
  41083. default: break;
  41084. case 'd': // 1 string to match.
  41085. if (BuiltinName[22] != 'i')
  41086. break;
  41087. return Intrinsic::x86_avx2_psllv_q_256; // "__builtin_ia32_psllv4di"
  41088. case 's': // 1 string to match.
  41089. if (BuiltinName[22] != 'i')
  41090. break;
  41091. return Intrinsic::x86_avx2_psllv_d; // "__builtin_ia32_psllv4si"
  41092. }
  41093. break;
  41094. case '8': // 1 string to match.
  41095. if (memcmp(BuiltinName.data()+21, "si", 2))
  41096. break;
  41097. return Intrinsic::x86_avx2_psllv_d_256; // "__builtin_ia32_psllv8si"
  41098. }
  41099. break;
  41100. case 'w': // 2 strings to match.
  41101. switch (BuiltinName[20]) {
  41102. default: break;
  41103. case '1': // 1 string to match.
  41104. if (memcmp(BuiltinName.data()+21, "28", 2))
  41105. break;
  41106. return Intrinsic::x86_sse2_psll_w; // "__builtin_ia32_psllw128"
  41107. case '2': // 1 string to match.
  41108. if (memcmp(BuiltinName.data()+21, "56", 2))
  41109. break;
  41110. return Intrinsic::x86_avx2_psll_w; // "__builtin_ia32_psllw256"
  41111. }
  41112. break;
  41113. }
  41114. break;
  41115. case 'r': // 16 strings to match.
  41116. switch (BuiltinName[18]) {
  41117. default: break;
  41118. case 'a': // 6 strings to match.
  41119. switch (BuiltinName[19]) {
  41120. default: break;
  41121. case 'd': // 2 strings to match.
  41122. switch (BuiltinName[20]) {
  41123. default: break;
  41124. case '1': // 1 string to match.
  41125. if (memcmp(BuiltinName.data()+21, "28", 2))
  41126. break;
  41127. return Intrinsic::x86_sse2_psra_d; // "__builtin_ia32_psrad128"
  41128. case '2': // 1 string to match.
  41129. if (memcmp(BuiltinName.data()+21, "56", 2))
  41130. break;
  41131. return Intrinsic::x86_avx2_psra_d; // "__builtin_ia32_psrad256"
  41132. }
  41133. break;
  41134. case 'v': // 2 strings to match.
  41135. switch (BuiltinName[20]) {
  41136. default: break;
  41137. case '4': // 1 string to match.
  41138. if (memcmp(BuiltinName.data()+21, "si", 2))
  41139. break;
  41140. return Intrinsic::x86_avx2_psrav_d; // "__builtin_ia32_psrav4si"
  41141. case '8': // 1 string to match.
  41142. if (memcmp(BuiltinName.data()+21, "si", 2))
  41143. break;
  41144. return Intrinsic::x86_avx2_psrav_d_256; // "__builtin_ia32_psrav8si"
  41145. }
  41146. break;
  41147. case 'w': // 2 strings to match.
  41148. switch (BuiltinName[20]) {
  41149. default: break;
  41150. case '1': // 1 string to match.
  41151. if (memcmp(BuiltinName.data()+21, "28", 2))
  41152. break;
  41153. return Intrinsic::x86_sse2_psra_w; // "__builtin_ia32_psraw128"
  41154. case '2': // 1 string to match.
  41155. if (memcmp(BuiltinName.data()+21, "56", 2))
  41156. break;
  41157. return Intrinsic::x86_avx2_psra_w; // "__builtin_ia32_psraw256"
  41158. }
  41159. break;
  41160. }
  41161. break;
  41162. case 'l': // 10 strings to match.
  41163. switch (BuiltinName[19]) {
  41164. default: break;
  41165. case 'd': // 2 strings to match.
  41166. switch (BuiltinName[20]) {
  41167. default: break;
  41168. case '1': // 1 string to match.
  41169. if (memcmp(BuiltinName.data()+21, "28", 2))
  41170. break;
  41171. return Intrinsic::x86_sse2_psrl_d; // "__builtin_ia32_psrld128"
  41172. case '2': // 1 string to match.
  41173. if (memcmp(BuiltinName.data()+21, "56", 2))
  41174. break;
  41175. return Intrinsic::x86_avx2_psrl_d; // "__builtin_ia32_psrld256"
  41176. }
  41177. break;
  41178. case 'q': // 2 strings to match.
  41179. switch (BuiltinName[20]) {
  41180. default: break;
  41181. case '1': // 1 string to match.
  41182. if (memcmp(BuiltinName.data()+21, "28", 2))
  41183. break;
  41184. return Intrinsic::x86_sse2_psrl_q; // "__builtin_ia32_psrlq128"
  41185. case '2': // 1 string to match.
  41186. if (memcmp(BuiltinName.data()+21, "56", 2))
  41187. break;
  41188. return Intrinsic::x86_avx2_psrl_q; // "__builtin_ia32_psrlq256"
  41189. }
  41190. break;
  41191. case 'v': // 4 strings to match.
  41192. switch (BuiltinName[20]) {
  41193. default: break;
  41194. case '2': // 1 string to match.
  41195. if (memcmp(BuiltinName.data()+21, "di", 2))
  41196. break;
  41197. return Intrinsic::x86_avx2_psrlv_q; // "__builtin_ia32_psrlv2di"
  41198. case '4': // 2 strings to match.
  41199. switch (BuiltinName[21]) {
  41200. default: break;
  41201. case 'd': // 1 string to match.
  41202. if (BuiltinName[22] != 'i')
  41203. break;
  41204. return Intrinsic::x86_avx2_psrlv_q_256; // "__builtin_ia32_psrlv4di"
  41205. case 's': // 1 string to match.
  41206. if (BuiltinName[22] != 'i')
  41207. break;
  41208. return Intrinsic::x86_avx2_psrlv_d; // "__builtin_ia32_psrlv4si"
  41209. }
  41210. break;
  41211. case '8': // 1 string to match.
  41212. if (memcmp(BuiltinName.data()+21, "si", 2))
  41213. break;
  41214. return Intrinsic::x86_avx2_psrlv_d_256; // "__builtin_ia32_psrlv8si"
  41215. }
  41216. break;
  41217. case 'w': // 2 strings to match.
  41218. switch (BuiltinName[20]) {
  41219. default: break;
  41220. case '1': // 1 string to match.
  41221. if (memcmp(BuiltinName.data()+21, "28", 2))
  41222. break;
  41223. return Intrinsic::x86_sse2_psrl_w; // "__builtin_ia32_psrlw128"
  41224. case '2': // 1 string to match.
  41225. if (memcmp(BuiltinName.data()+21, "56", 2))
  41226. break;
  41227. return Intrinsic::x86_avx2_psrl_w; // "__builtin_ia32_psrlw256"
  41228. }
  41229. break;
  41230. }
  41231. break;
  41232. }
  41233. break;
  41234. }
  41235. break;
  41236. }
  41237. break;
  41238. case 'r': // 1 string to match.
  41239. if (memcmp(BuiltinName.data()+16, "cpps256", 7))
  41240. break;
  41241. return Intrinsic::x86_avx_rcp_ps_256; // "__builtin_ia32_rcpps256"
  41242. case 's': // 3 strings to match.
  41243. if (memcmp(BuiltinName.data()+16, "tore", 4))
  41244. break;
  41245. switch (BuiltinName[20]) {
  41246. default: break;
  41247. case 'd': // 1 string to match.
  41248. if (memcmp(BuiltinName.data()+21, "qu", 2))
  41249. break;
  41250. return Intrinsic::x86_sse2_storeu_dq; // "__builtin_ia32_storedqu"
  41251. case 'u': // 2 strings to match.
  41252. if (BuiltinName[21] != 'p')
  41253. break;
  41254. switch (BuiltinName[22]) {
  41255. default: break;
  41256. case 'd': // 1 string to match.
  41257. return Intrinsic::x86_sse2_storeu_pd; // "__builtin_ia32_storeupd"
  41258. case 's': // 1 string to match.
  41259. return Intrinsic::x86_sse_storeu_ps; // "__builtin_ia32_storeups"
  41260. }
  41261. break;
  41262. }
  41263. break;
  41264. case 'u': // 1 string to match.
  41265. if (memcmp(BuiltinName.data()+16, "comineq", 7))
  41266. break;
  41267. return Intrinsic::x86_sse_ucomineq_ss; // "__builtin_ia32_ucomineq"
  41268. case 'v': // 13 strings to match.
  41269. switch (BuiltinName[16]) {
  41270. default: break;
  41271. case 'f': // 8 strings to match.
  41272. if (BuiltinName[17] != 'm')
  41273. break;
  41274. switch (BuiltinName[18]) {
  41275. default: break;
  41276. case 'a': // 4 strings to match.
  41277. if (memcmp(BuiltinName.data()+19, "dd", 2))
  41278. break;
  41279. switch (BuiltinName[21]) {
  41280. default: break;
  41281. case 'p': // 2 strings to match.
  41282. switch (BuiltinName[22]) {
  41283. default: break;
  41284. case 'd': // 1 string to match.
  41285. return Intrinsic::x86_fma_vfmadd_pd; // "__builtin_ia32_vfmaddpd"
  41286. case 's': // 1 string to match.
  41287. return Intrinsic::x86_fma_vfmadd_ps; // "__builtin_ia32_vfmaddps"
  41288. }
  41289. break;
  41290. case 's': // 2 strings to match.
  41291. switch (BuiltinName[22]) {
  41292. default: break;
  41293. case 'd': // 1 string to match.
  41294. return Intrinsic::x86_fma_vfmadd_sd; // "__builtin_ia32_vfmaddsd"
  41295. case 's': // 1 string to match.
  41296. return Intrinsic::x86_fma_vfmadd_ss; // "__builtin_ia32_vfmaddss"
  41297. }
  41298. break;
  41299. }
  41300. break;
  41301. case 's': // 4 strings to match.
  41302. if (memcmp(BuiltinName.data()+19, "ub", 2))
  41303. break;
  41304. switch (BuiltinName[21]) {
  41305. default: break;
  41306. case 'p': // 2 strings to match.
  41307. switch (BuiltinName[22]) {
  41308. default: break;
  41309. case 'd': // 1 string to match.
  41310. return Intrinsic::x86_fma_vfmsub_pd; // "__builtin_ia32_vfmsubpd"
  41311. case 's': // 1 string to match.
  41312. return Intrinsic::x86_fma_vfmsub_ps; // "__builtin_ia32_vfmsubps"
  41313. }
  41314. break;
  41315. case 's': // 2 strings to match.
  41316. switch (BuiltinName[22]) {
  41317. default: break;
  41318. case 'd': // 1 string to match.
  41319. return Intrinsic::x86_fma_vfmsub_sd; // "__builtin_ia32_vfmsubsd"
  41320. case 's': // 1 string to match.
  41321. return Intrinsic::x86_fma_vfmsub_ss; // "__builtin_ia32_vfmsubss"
  41322. }
  41323. break;
  41324. }
  41325. break;
  41326. }
  41327. break;
  41328. case 't': // 4 strings to match.
  41329. if (memcmp(BuiltinName.data()+17, "est", 3))
  41330. break;
  41331. switch (BuiltinName[20]) {
  41332. default: break;
  41333. case 'c': // 2 strings to match.
  41334. if (BuiltinName[21] != 'p')
  41335. break;
  41336. switch (BuiltinName[22]) {
  41337. default: break;
  41338. case 'd': // 1 string to match.
  41339. return Intrinsic::x86_avx_vtestc_pd; // "__builtin_ia32_vtestcpd"
  41340. case 's': // 1 string to match.
  41341. return Intrinsic::x86_avx_vtestc_ps; // "__builtin_ia32_vtestcps"
  41342. }
  41343. break;
  41344. case 'z': // 2 strings to match.
  41345. if (BuiltinName[21] != 'p')
  41346. break;
  41347. switch (BuiltinName[22]) {
  41348. default: break;
  41349. case 'd': // 1 string to match.
  41350. return Intrinsic::x86_avx_vtestz_pd; // "__builtin_ia32_vtestzpd"
  41351. case 's': // 1 string to match.
  41352. return Intrinsic::x86_avx_vtestz_ps; // "__builtin_ia32_vtestzps"
  41353. }
  41354. break;
  41355. }
  41356. break;
  41357. case 'z': // 1 string to match.
  41358. if (memcmp(BuiltinName.data()+17, "eroall", 6))
  41359. break;
  41360. return Intrinsic::x86_avx_vzeroall; // "__builtin_ia32_vzeroall"
  41361. }
  41362. break;
  41363. }
  41364. break;
  41365. case 24: // 121 strings to match.
  41366. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  41367. break;
  41368. switch (BuiltinName[15]) {
  41369. default: break;
  41370. case 'a': // 3 strings to match.
  41371. if (memcmp(BuiltinName.data()+16, "es", 2))
  41372. break;
  41373. switch (BuiltinName[18]) {
  41374. default: break;
  41375. case 'd': // 1 string to match.
  41376. if (memcmp(BuiltinName.data()+19, "ec128", 5))
  41377. break;
  41378. return Intrinsic::x86_aesni_aesdec; // "__builtin_ia32_aesdec128"
  41379. case 'e': // 1 string to match.
  41380. if (memcmp(BuiltinName.data()+19, "nc128", 5))
  41381. break;
  41382. return Intrinsic::x86_aesni_aesenc; // "__builtin_ia32_aesenc128"
  41383. case 'i': // 1 string to match.
  41384. if (memcmp(BuiltinName.data()+19, "mc128", 5))
  41385. break;
  41386. return Intrinsic::x86_aesni_aesimc; // "__builtin_ia32_aesimc128"
  41387. }
  41388. break;
  41389. case 'b': // 2 strings to match.
  41390. if (memcmp(BuiltinName.data()+16, "extr_u", 6))
  41391. break;
  41392. switch (BuiltinName[22]) {
  41393. default: break;
  41394. case '3': // 1 string to match.
  41395. if (BuiltinName[23] != '2')
  41396. break;
  41397. return Intrinsic::x86_bmi_bextr_32; // "__builtin_ia32_bextr_u32"
  41398. case '6': // 1 string to match.
  41399. if (BuiltinName[23] != '4')
  41400. break;
  41401. return Intrinsic::x86_bmi_bextr_64; // "__builtin_ia32_bextr_u64"
  41402. }
  41403. break;
  41404. case 'c': // 7 strings to match.
  41405. switch (BuiltinName[16]) {
  41406. default: break;
  41407. case 'o': // 1 string to match.
  41408. if (memcmp(BuiltinName.data()+17, "misdneq", 7))
  41409. break;
  41410. return Intrinsic::x86_sse2_comineq_sd; // "__builtin_ia32_comisdneq"
  41411. case 'v': // 6 strings to match.
  41412. if (memcmp(BuiltinName.data()+17, "tt", 2))
  41413. break;
  41414. switch (BuiltinName[19]) {
  41415. default: break;
  41416. case 'p': // 4 strings to match.
  41417. switch (BuiltinName[20]) {
  41418. default: break;
  41419. case 'd': // 2 strings to match.
  41420. if (BuiltinName[21] != '2')
  41421. break;
  41422. switch (BuiltinName[22]) {
  41423. default: break;
  41424. case 'd': // 1 string to match.
  41425. if (BuiltinName[23] != 'q')
  41426. break;
  41427. return Intrinsic::x86_sse2_cvttpd2dq; // "__builtin_ia32_cvttpd2dq"
  41428. case 'p': // 1 string to match.
  41429. if (BuiltinName[23] != 'i')
  41430. break;
  41431. return Intrinsic::x86_sse_cvttpd2pi; // "__builtin_ia32_cvttpd2pi"
  41432. }
  41433. break;
  41434. case 's': // 2 strings to match.
  41435. if (BuiltinName[21] != '2')
  41436. break;
  41437. switch (BuiltinName[22]) {
  41438. default: break;
  41439. case 'd': // 1 string to match.
  41440. if (BuiltinName[23] != 'q')
  41441. break;
  41442. return Intrinsic::x86_sse2_cvttps2dq; // "__builtin_ia32_cvttps2dq"
  41443. case 'p': // 1 string to match.
  41444. if (BuiltinName[23] != 'i')
  41445. break;
  41446. return Intrinsic::x86_sse_cvttps2pi; // "__builtin_ia32_cvttps2pi"
  41447. }
  41448. break;
  41449. }
  41450. break;
  41451. case 's': // 2 strings to match.
  41452. switch (BuiltinName[20]) {
  41453. default: break;
  41454. case 'd': // 1 string to match.
  41455. if (memcmp(BuiltinName.data()+21, "2si", 3))
  41456. break;
  41457. return Intrinsic::x86_sse2_cvttsd2si; // "__builtin_ia32_cvttsd2si"
  41458. case 's': // 1 string to match.
  41459. if (memcmp(BuiltinName.data()+21, "2si", 3))
  41460. break;
  41461. return Intrinsic::x86_sse_cvttss2si; // "__builtin_ia32_cvttss2si"
  41462. }
  41463. break;
  41464. }
  41465. break;
  41466. }
  41467. break;
  41468. case 'g': // 4 strings to match.
  41469. if (memcmp(BuiltinName.data()+16, "ather", 5))
  41470. break;
  41471. switch (BuiltinName[21]) {
  41472. default: break;
  41473. case 'd': // 2 strings to match.
  41474. if (BuiltinName[22] != '_')
  41475. break;
  41476. switch (BuiltinName[23]) {
  41477. default: break;
  41478. case 'd': // 1 string to match.
  41479. return Intrinsic::x86_avx2_gather_d_d; // "__builtin_ia32_gatherd_d"
  41480. case 'q': // 1 string to match.
  41481. return Intrinsic::x86_avx2_gather_d_q; // "__builtin_ia32_gatherd_q"
  41482. }
  41483. break;
  41484. case 'q': // 2 strings to match.
  41485. if (BuiltinName[22] != '_')
  41486. break;
  41487. switch (BuiltinName[23]) {
  41488. default: break;
  41489. case 'd': // 1 string to match.
  41490. return Intrinsic::x86_avx2_gather_q_d; // "__builtin_ia32_gatherq_d"
  41491. case 'q': // 1 string to match.
  41492. return Intrinsic::x86_avx2_gather_q_q; // "__builtin_ia32_gatherq_q"
  41493. }
  41494. break;
  41495. }
  41496. break;
  41497. case 'h': // 4 strings to match.
  41498. switch (BuiltinName[16]) {
  41499. default: break;
  41500. case 'a': // 2 strings to match.
  41501. if (memcmp(BuiltinName.data()+17, "ddp", 3))
  41502. break;
  41503. switch (BuiltinName[20]) {
  41504. default: break;
  41505. case 'd': // 1 string to match.
  41506. if (memcmp(BuiltinName.data()+21, "256", 3))
  41507. break;
  41508. return Intrinsic::x86_avx_hadd_pd_256; // "__builtin_ia32_haddpd256"
  41509. case 's': // 1 string to match.
  41510. if (memcmp(BuiltinName.data()+21, "256", 3))
  41511. break;
  41512. return Intrinsic::x86_avx_hadd_ps_256; // "__builtin_ia32_haddps256"
  41513. }
  41514. break;
  41515. case 's': // 2 strings to match.
  41516. if (memcmp(BuiltinName.data()+17, "ubp", 3))
  41517. break;
  41518. switch (BuiltinName[20]) {
  41519. default: break;
  41520. case 'd': // 1 string to match.
  41521. if (memcmp(BuiltinName.data()+21, "256", 3))
  41522. break;
  41523. return Intrinsic::x86_avx_hsub_pd_256; // "__builtin_ia32_hsubpd256"
  41524. case 's': // 1 string to match.
  41525. if (memcmp(BuiltinName.data()+21, "256", 3))
  41526. break;
  41527. return Intrinsic::x86_avx_hsub_ps_256; // "__builtin_ia32_hsubps256"
  41528. }
  41529. break;
  41530. }
  41531. break;
  41532. case 'm': // 2 strings to match.
  41533. if (memcmp(BuiltinName.data()+16, "askload", 7))
  41534. break;
  41535. switch (BuiltinName[23]) {
  41536. default: break;
  41537. case 'd': // 1 string to match.
  41538. return Intrinsic::x86_avx2_maskload_d; // "__builtin_ia32_maskloadd"
  41539. case 'q': // 1 string to match.
  41540. return Intrinsic::x86_avx2_maskload_q; // "__builtin_ia32_maskloadq"
  41541. }
  41542. break;
  41543. case 'p': // 82 strings to match.
  41544. switch (BuiltinName[16]) {
  41545. default: break;
  41546. case 'a': // 4 strings to match.
  41547. if (memcmp(BuiltinName.data()+17, "dds", 3))
  41548. break;
  41549. switch (BuiltinName[20]) {
  41550. default: break;
  41551. case 'b': // 2 strings to match.
  41552. switch (BuiltinName[21]) {
  41553. default: break;
  41554. case '1': // 1 string to match.
  41555. if (memcmp(BuiltinName.data()+22, "28", 2))
  41556. break;
  41557. return Intrinsic::x86_sse2_padds_b; // "__builtin_ia32_paddsb128"
  41558. case '2': // 1 string to match.
  41559. if (memcmp(BuiltinName.data()+22, "56", 2))
  41560. break;
  41561. return Intrinsic::x86_avx2_padds_b; // "__builtin_ia32_paddsb256"
  41562. }
  41563. break;
  41564. case 'w': // 2 strings to match.
  41565. switch (BuiltinName[21]) {
  41566. default: break;
  41567. case '1': // 1 string to match.
  41568. if (memcmp(BuiltinName.data()+22, "28", 2))
  41569. break;
  41570. return Intrinsic::x86_sse2_padds_w; // "__builtin_ia32_paddsw128"
  41571. case '2': // 1 string to match.
  41572. if (memcmp(BuiltinName.data()+22, "56", 2))
  41573. break;
  41574. return Intrinsic::x86_avx2_padds_w; // "__builtin_ia32_paddsw256"
  41575. }
  41576. break;
  41577. }
  41578. break;
  41579. case 'e': // 1 string to match.
  41580. if (memcmp(BuiltinName.data()+17, "rmti256", 7))
  41581. break;
  41582. return Intrinsic::x86_avx2_vperm2i128; // "__builtin_ia32_permti256"
  41583. case 'h': // 8 strings to match.
  41584. switch (BuiltinName[17]) {
  41585. default: break;
  41586. case 'a': // 4 strings to match.
  41587. if (memcmp(BuiltinName.data()+18, "dd", 2))
  41588. break;
  41589. switch (BuiltinName[20]) {
  41590. default: break;
  41591. case 'd': // 2 strings to match.
  41592. switch (BuiltinName[21]) {
  41593. default: break;
  41594. case '1': // 1 string to match.
  41595. if (memcmp(BuiltinName.data()+22, "28", 2))
  41596. break;
  41597. return Intrinsic::x86_ssse3_phadd_d_128; // "__builtin_ia32_phaddd128"
  41598. case '2': // 1 string to match.
  41599. if (memcmp(BuiltinName.data()+22, "56", 2))
  41600. break;
  41601. return Intrinsic::x86_avx2_phadd_d; // "__builtin_ia32_phaddd256"
  41602. }
  41603. break;
  41604. case 'w': // 2 strings to match.
  41605. switch (BuiltinName[21]) {
  41606. default: break;
  41607. case '1': // 1 string to match.
  41608. if (memcmp(BuiltinName.data()+22, "28", 2))
  41609. break;
  41610. return Intrinsic::x86_ssse3_phadd_w_128; // "__builtin_ia32_phaddw128"
  41611. case '2': // 1 string to match.
  41612. if (memcmp(BuiltinName.data()+22, "56", 2))
  41613. break;
  41614. return Intrinsic::x86_avx2_phadd_w; // "__builtin_ia32_phaddw256"
  41615. }
  41616. break;
  41617. }
  41618. break;
  41619. case 's': // 4 strings to match.
  41620. if (memcmp(BuiltinName.data()+18, "ub", 2))
  41621. break;
  41622. switch (BuiltinName[20]) {
  41623. default: break;
  41624. case 'd': // 2 strings to match.
  41625. switch (BuiltinName[21]) {
  41626. default: break;
  41627. case '1': // 1 string to match.
  41628. if (memcmp(BuiltinName.data()+22, "28", 2))
  41629. break;
  41630. return Intrinsic::x86_ssse3_phsub_d_128; // "__builtin_ia32_phsubd128"
  41631. case '2': // 1 string to match.
  41632. if (memcmp(BuiltinName.data()+22, "56", 2))
  41633. break;
  41634. return Intrinsic::x86_avx2_phsub_d; // "__builtin_ia32_phsubd256"
  41635. }
  41636. break;
  41637. case 'w': // 2 strings to match.
  41638. switch (BuiltinName[21]) {
  41639. default: break;
  41640. case '1': // 1 string to match.
  41641. if (memcmp(BuiltinName.data()+22, "28", 2))
  41642. break;
  41643. return Intrinsic::x86_ssse3_phsub_w_128; // "__builtin_ia32_phsubw128"
  41644. case '2': // 1 string to match.
  41645. if (memcmp(BuiltinName.data()+22, "56", 2))
  41646. break;
  41647. return Intrinsic::x86_avx2_phsub_w; // "__builtin_ia32_phsubw256"
  41648. }
  41649. break;
  41650. }
  41651. break;
  41652. }
  41653. break;
  41654. case 'm': // 29 strings to match.
  41655. switch (BuiltinName[17]) {
  41656. default: break;
  41657. case 'a': // 13 strings to match.
  41658. switch (BuiltinName[18]) {
  41659. default: break;
  41660. case 'd': // 1 string to match.
  41661. if (memcmp(BuiltinName.data()+19, "dubsw", 5))
  41662. break;
  41663. return Intrinsic::x86_ssse3_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw"
  41664. case 'x': // 12 strings to match.
  41665. switch (BuiltinName[19]) {
  41666. default: break;
  41667. case 's': // 6 strings to match.
  41668. switch (BuiltinName[20]) {
  41669. default: break;
  41670. case 'b': // 2 strings to match.
  41671. switch (BuiltinName[21]) {
  41672. default: break;
  41673. case '1': // 1 string to match.
  41674. if (memcmp(BuiltinName.data()+22, "28", 2))
  41675. break;
  41676. return Intrinsic::x86_sse41_pmaxsb; // "__builtin_ia32_pmaxsb128"
  41677. case '2': // 1 string to match.
  41678. if (memcmp(BuiltinName.data()+22, "56", 2))
  41679. break;
  41680. return Intrinsic::x86_avx2_pmaxs_b; // "__builtin_ia32_pmaxsb256"
  41681. }
  41682. break;
  41683. case 'd': // 2 strings to match.
  41684. switch (BuiltinName[21]) {
  41685. default: break;
  41686. case '1': // 1 string to match.
  41687. if (memcmp(BuiltinName.data()+22, "28", 2))
  41688. break;
  41689. return Intrinsic::x86_sse41_pmaxsd; // "__builtin_ia32_pmaxsd128"
  41690. case '2': // 1 string to match.
  41691. if (memcmp(BuiltinName.data()+22, "56", 2))
  41692. break;
  41693. return Intrinsic::x86_avx2_pmaxs_d; // "__builtin_ia32_pmaxsd256"
  41694. }
  41695. break;
  41696. case 'w': // 2 strings to match.
  41697. switch (BuiltinName[21]) {
  41698. default: break;
  41699. case '1': // 1 string to match.
  41700. if (memcmp(BuiltinName.data()+22, "28", 2))
  41701. break;
  41702. return Intrinsic::x86_sse2_pmaxs_w; // "__builtin_ia32_pmaxsw128"
  41703. case '2': // 1 string to match.
  41704. if (memcmp(BuiltinName.data()+22, "56", 2))
  41705. break;
  41706. return Intrinsic::x86_avx2_pmaxs_w; // "__builtin_ia32_pmaxsw256"
  41707. }
  41708. break;
  41709. }
  41710. break;
  41711. case 'u': // 6 strings to match.
  41712. switch (BuiltinName[20]) {
  41713. default: break;
  41714. case 'b': // 2 strings to match.
  41715. switch (BuiltinName[21]) {
  41716. default: break;
  41717. case '1': // 1 string to match.
  41718. if (memcmp(BuiltinName.data()+22, "28", 2))
  41719. break;
  41720. return Intrinsic::x86_sse2_pmaxu_b; // "__builtin_ia32_pmaxub128"
  41721. case '2': // 1 string to match.
  41722. if (memcmp(BuiltinName.data()+22, "56", 2))
  41723. break;
  41724. return Intrinsic::x86_avx2_pmaxu_b; // "__builtin_ia32_pmaxub256"
  41725. }
  41726. break;
  41727. case 'd': // 2 strings to match.
  41728. switch (BuiltinName[21]) {
  41729. default: break;
  41730. case '1': // 1 string to match.
  41731. if (memcmp(BuiltinName.data()+22, "28", 2))
  41732. break;
  41733. return Intrinsic::x86_sse41_pmaxud; // "__builtin_ia32_pmaxud128"
  41734. case '2': // 1 string to match.
  41735. if (memcmp(BuiltinName.data()+22, "56", 2))
  41736. break;
  41737. return Intrinsic::x86_avx2_pmaxu_d; // "__builtin_ia32_pmaxud256"
  41738. }
  41739. break;
  41740. case 'w': // 2 strings to match.
  41741. switch (BuiltinName[21]) {
  41742. default: break;
  41743. case '1': // 1 string to match.
  41744. if (memcmp(BuiltinName.data()+22, "28", 2))
  41745. break;
  41746. return Intrinsic::x86_sse41_pmaxuw; // "__builtin_ia32_pmaxuw128"
  41747. case '2': // 1 string to match.
  41748. if (memcmp(BuiltinName.data()+22, "56", 2))
  41749. break;
  41750. return Intrinsic::x86_avx2_pmaxu_w; // "__builtin_ia32_pmaxuw256"
  41751. }
  41752. break;
  41753. }
  41754. break;
  41755. }
  41756. break;
  41757. }
  41758. break;
  41759. case 'i': // 12 strings to match.
  41760. if (BuiltinName[18] != 'n')
  41761. break;
  41762. switch (BuiltinName[19]) {
  41763. default: break;
  41764. case 's': // 6 strings to match.
  41765. switch (BuiltinName[20]) {
  41766. default: break;
  41767. case 'b': // 2 strings to match.
  41768. switch (BuiltinName[21]) {
  41769. default: break;
  41770. case '1': // 1 string to match.
  41771. if (memcmp(BuiltinName.data()+22, "28", 2))
  41772. break;
  41773. return Intrinsic::x86_sse41_pminsb; // "__builtin_ia32_pminsb128"
  41774. case '2': // 1 string to match.
  41775. if (memcmp(BuiltinName.data()+22, "56", 2))
  41776. break;
  41777. return Intrinsic::x86_avx2_pmins_b; // "__builtin_ia32_pminsb256"
  41778. }
  41779. break;
  41780. case 'd': // 2 strings to match.
  41781. switch (BuiltinName[21]) {
  41782. default: break;
  41783. case '1': // 1 string to match.
  41784. if (memcmp(BuiltinName.data()+22, "28", 2))
  41785. break;
  41786. return Intrinsic::x86_sse41_pminsd; // "__builtin_ia32_pminsd128"
  41787. case '2': // 1 string to match.
  41788. if (memcmp(BuiltinName.data()+22, "56", 2))
  41789. break;
  41790. return Intrinsic::x86_avx2_pmins_d; // "__builtin_ia32_pminsd256"
  41791. }
  41792. break;
  41793. case 'w': // 2 strings to match.
  41794. switch (BuiltinName[21]) {
  41795. default: break;
  41796. case '1': // 1 string to match.
  41797. if (memcmp(BuiltinName.data()+22, "28", 2))
  41798. break;
  41799. return Intrinsic::x86_sse2_pmins_w; // "__builtin_ia32_pminsw128"
  41800. case '2': // 1 string to match.
  41801. if (memcmp(BuiltinName.data()+22, "56", 2))
  41802. break;
  41803. return Intrinsic::x86_avx2_pmins_w; // "__builtin_ia32_pminsw256"
  41804. }
  41805. break;
  41806. }
  41807. break;
  41808. case 'u': // 6 strings to match.
  41809. switch (BuiltinName[20]) {
  41810. default: break;
  41811. case 'b': // 2 strings to match.
  41812. switch (BuiltinName[21]) {
  41813. default: break;
  41814. case '1': // 1 string to match.
  41815. if (memcmp(BuiltinName.data()+22, "28", 2))
  41816. break;
  41817. return Intrinsic::x86_sse2_pminu_b; // "__builtin_ia32_pminub128"
  41818. case '2': // 1 string to match.
  41819. if (memcmp(BuiltinName.data()+22, "56", 2))
  41820. break;
  41821. return Intrinsic::x86_avx2_pminu_b; // "__builtin_ia32_pminub256"
  41822. }
  41823. break;
  41824. case 'd': // 2 strings to match.
  41825. switch (BuiltinName[21]) {
  41826. default: break;
  41827. case '1': // 1 string to match.
  41828. if (memcmp(BuiltinName.data()+22, "28", 2))
  41829. break;
  41830. return Intrinsic::x86_sse41_pminud; // "__builtin_ia32_pminud128"
  41831. case '2': // 1 string to match.
  41832. if (memcmp(BuiltinName.data()+22, "56", 2))
  41833. break;
  41834. return Intrinsic::x86_avx2_pminu_d; // "__builtin_ia32_pminud256"
  41835. }
  41836. break;
  41837. case 'w': // 2 strings to match.
  41838. switch (BuiltinName[21]) {
  41839. default: break;
  41840. case '1': // 1 string to match.
  41841. if (memcmp(BuiltinName.data()+22, "28", 2))
  41842. break;
  41843. return Intrinsic::x86_sse41_pminuw; // "__builtin_ia32_pminuw128"
  41844. case '2': // 1 string to match.
  41845. if (memcmp(BuiltinName.data()+22, "56", 2))
  41846. break;
  41847. return Intrinsic::x86_avx2_pminu_w; // "__builtin_ia32_pminuw256"
  41848. }
  41849. break;
  41850. }
  41851. break;
  41852. }
  41853. break;
  41854. case 'u': // 4 strings to match.
  41855. if (BuiltinName[18] != 'l')
  41856. break;
  41857. switch (BuiltinName[19]) {
  41858. default: break;
  41859. case 'd': // 2 strings to match.
  41860. if (BuiltinName[20] != 'q')
  41861. break;
  41862. switch (BuiltinName[21]) {
  41863. default: break;
  41864. case '1': // 1 string to match.
  41865. if (memcmp(BuiltinName.data()+22, "28", 2))
  41866. break;
  41867. return Intrinsic::x86_sse41_pmuldq; // "__builtin_ia32_pmuldq128"
  41868. case '2': // 1 string to match.
  41869. if (memcmp(BuiltinName.data()+22, "56", 2))
  41870. break;
  41871. return Intrinsic::x86_avx2_pmul_dq; // "__builtin_ia32_pmuldq256"
  41872. }
  41873. break;
  41874. case 'h': // 2 strings to match.
  41875. if (BuiltinName[20] != 'w')
  41876. break;
  41877. switch (BuiltinName[21]) {
  41878. default: break;
  41879. case '1': // 1 string to match.
  41880. if (memcmp(BuiltinName.data()+22, "28", 2))
  41881. break;
  41882. return Intrinsic::x86_sse2_pmulh_w; // "__builtin_ia32_pmulhw128"
  41883. case '2': // 1 string to match.
  41884. if (memcmp(BuiltinName.data()+22, "56", 2))
  41885. break;
  41886. return Intrinsic::x86_avx2_pmulh_w; // "__builtin_ia32_pmulhw256"
  41887. }
  41888. break;
  41889. }
  41890. break;
  41891. }
  41892. break;
  41893. case 's': // 30 strings to match.
  41894. switch (BuiltinName[17]) {
  41895. default: break;
  41896. case 'a': // 2 strings to match.
  41897. if (memcmp(BuiltinName.data()+18, "dbw", 3))
  41898. break;
  41899. switch (BuiltinName[21]) {
  41900. default: break;
  41901. case '1': // 1 string to match.
  41902. if (memcmp(BuiltinName.data()+22, "28", 2))
  41903. break;
  41904. return Intrinsic::x86_sse2_psad_bw; // "__builtin_ia32_psadbw128"
  41905. case '2': // 1 string to match.
  41906. if (memcmp(BuiltinName.data()+22, "56", 2))
  41907. break;
  41908. return Intrinsic::x86_avx2_psad_bw; // "__builtin_ia32_psadbw256"
  41909. }
  41910. break;
  41911. case 'h': // 2 strings to match.
  41912. if (memcmp(BuiltinName.data()+18, "ufb", 3))
  41913. break;
  41914. switch (BuiltinName[21]) {
  41915. default: break;
  41916. case '1': // 1 string to match.
  41917. if (memcmp(BuiltinName.data()+22, "28", 2))
  41918. break;
  41919. return Intrinsic::x86_ssse3_pshuf_b_128; // "__builtin_ia32_pshufb128"
  41920. case '2': // 1 string to match.
  41921. if (memcmp(BuiltinName.data()+22, "56", 2))
  41922. break;
  41923. return Intrinsic::x86_avx2_pshuf_b; // "__builtin_ia32_pshufb256"
  41924. }
  41925. break;
  41926. case 'i': // 6 strings to match.
  41927. if (memcmp(BuiltinName.data()+18, "gn", 2))
  41928. break;
  41929. switch (BuiltinName[20]) {
  41930. default: break;
  41931. case 'b': // 2 strings to match.
  41932. switch (BuiltinName[21]) {
  41933. default: break;
  41934. case '1': // 1 string to match.
  41935. if (memcmp(BuiltinName.data()+22, "28", 2))
  41936. break;
  41937. return Intrinsic::x86_ssse3_psign_b_128; // "__builtin_ia32_psignb128"
  41938. case '2': // 1 string to match.
  41939. if (memcmp(BuiltinName.data()+22, "56", 2))
  41940. break;
  41941. return Intrinsic::x86_avx2_psign_b; // "__builtin_ia32_psignb256"
  41942. }
  41943. break;
  41944. case 'd': // 2 strings to match.
  41945. switch (BuiltinName[21]) {
  41946. default: break;
  41947. case '1': // 1 string to match.
  41948. if (memcmp(BuiltinName.data()+22, "28", 2))
  41949. break;
  41950. return Intrinsic::x86_ssse3_psign_d_128; // "__builtin_ia32_psignd128"
  41951. case '2': // 1 string to match.
  41952. if (memcmp(BuiltinName.data()+22, "56", 2))
  41953. break;
  41954. return Intrinsic::x86_avx2_psign_d; // "__builtin_ia32_psignd256"
  41955. }
  41956. break;
  41957. case 'w': // 2 strings to match.
  41958. switch (BuiltinName[21]) {
  41959. default: break;
  41960. case '1': // 1 string to match.
  41961. if (memcmp(BuiltinName.data()+22, "28", 2))
  41962. break;
  41963. return Intrinsic::x86_ssse3_psign_w_128; // "__builtin_ia32_psignw128"
  41964. case '2': // 1 string to match.
  41965. if (memcmp(BuiltinName.data()+22, "56", 2))
  41966. break;
  41967. return Intrinsic::x86_avx2_psign_w; // "__builtin_ia32_psignw256"
  41968. }
  41969. break;
  41970. }
  41971. break;
  41972. case 'l': // 6 strings to match.
  41973. if (BuiltinName[18] != 'l')
  41974. break;
  41975. switch (BuiltinName[19]) {
  41976. default: break;
  41977. case 'd': // 2 strings to match.
  41978. if (BuiltinName[20] != 'i')
  41979. break;
  41980. switch (BuiltinName[21]) {
  41981. default: break;
  41982. case '1': // 1 string to match.
  41983. if (memcmp(BuiltinName.data()+22, "28", 2))
  41984. break;
  41985. return Intrinsic::x86_sse2_pslli_d; // "__builtin_ia32_pslldi128"
  41986. case '2': // 1 string to match.
  41987. if (memcmp(BuiltinName.data()+22, "56", 2))
  41988. break;
  41989. return Intrinsic::x86_avx2_pslli_d; // "__builtin_ia32_pslldi256"
  41990. }
  41991. break;
  41992. case 'q': // 2 strings to match.
  41993. if (BuiltinName[20] != 'i')
  41994. break;
  41995. switch (BuiltinName[21]) {
  41996. default: break;
  41997. case '1': // 1 string to match.
  41998. if (memcmp(BuiltinName.data()+22, "28", 2))
  41999. break;
  42000. return Intrinsic::x86_sse2_pslli_q; // "__builtin_ia32_psllqi128"
  42001. case '2': // 1 string to match.
  42002. if (memcmp(BuiltinName.data()+22, "56", 2))
  42003. break;
  42004. return Intrinsic::x86_avx2_pslli_q; // "__builtin_ia32_psllqi256"
  42005. }
  42006. break;
  42007. case 'w': // 2 strings to match.
  42008. if (BuiltinName[20] != 'i')
  42009. break;
  42010. switch (BuiltinName[21]) {
  42011. default: break;
  42012. case '1': // 1 string to match.
  42013. if (memcmp(BuiltinName.data()+22, "28", 2))
  42014. break;
  42015. return Intrinsic::x86_sse2_pslli_w; // "__builtin_ia32_psllwi128"
  42016. case '2': // 1 string to match.
  42017. if (memcmp(BuiltinName.data()+22, "56", 2))
  42018. break;
  42019. return Intrinsic::x86_avx2_pslli_w; // "__builtin_ia32_psllwi256"
  42020. }
  42021. break;
  42022. }
  42023. break;
  42024. case 'r': // 10 strings to match.
  42025. switch (BuiltinName[18]) {
  42026. default: break;
  42027. case 'a': // 4 strings to match.
  42028. switch (BuiltinName[19]) {
  42029. default: break;
  42030. case 'd': // 2 strings to match.
  42031. if (BuiltinName[20] != 'i')
  42032. break;
  42033. switch (BuiltinName[21]) {
  42034. default: break;
  42035. case '1': // 1 string to match.
  42036. if (memcmp(BuiltinName.data()+22, "28", 2))
  42037. break;
  42038. return Intrinsic::x86_sse2_psrai_d; // "__builtin_ia32_psradi128"
  42039. case '2': // 1 string to match.
  42040. if (memcmp(BuiltinName.data()+22, "56", 2))
  42041. break;
  42042. return Intrinsic::x86_avx2_psrai_d; // "__builtin_ia32_psradi256"
  42043. }
  42044. break;
  42045. case 'w': // 2 strings to match.
  42046. if (BuiltinName[20] != 'i')
  42047. break;
  42048. switch (BuiltinName[21]) {
  42049. default: break;
  42050. case '1': // 1 string to match.
  42051. if (memcmp(BuiltinName.data()+22, "28", 2))
  42052. break;
  42053. return Intrinsic::x86_sse2_psrai_w; // "__builtin_ia32_psrawi128"
  42054. case '2': // 1 string to match.
  42055. if (memcmp(BuiltinName.data()+22, "56", 2))
  42056. break;
  42057. return Intrinsic::x86_avx2_psrai_w; // "__builtin_ia32_psrawi256"
  42058. }
  42059. break;
  42060. }
  42061. break;
  42062. case 'l': // 6 strings to match.
  42063. switch (BuiltinName[19]) {
  42064. default: break;
  42065. case 'd': // 2 strings to match.
  42066. if (BuiltinName[20] != 'i')
  42067. break;
  42068. switch (BuiltinName[21]) {
  42069. default: break;
  42070. case '1': // 1 string to match.
  42071. if (memcmp(BuiltinName.data()+22, "28", 2))
  42072. break;
  42073. return Intrinsic::x86_sse2_psrli_d; // "__builtin_ia32_psrldi128"
  42074. case '2': // 1 string to match.
  42075. if (memcmp(BuiltinName.data()+22, "56", 2))
  42076. break;
  42077. return Intrinsic::x86_avx2_psrli_d; // "__builtin_ia32_psrldi256"
  42078. }
  42079. break;
  42080. case 'q': // 2 strings to match.
  42081. if (BuiltinName[20] != 'i')
  42082. break;
  42083. switch (BuiltinName[21]) {
  42084. default: break;
  42085. case '1': // 1 string to match.
  42086. if (memcmp(BuiltinName.data()+22, "28", 2))
  42087. break;
  42088. return Intrinsic::x86_sse2_psrli_q; // "__builtin_ia32_psrlqi128"
  42089. case '2': // 1 string to match.
  42090. if (memcmp(BuiltinName.data()+22, "56", 2))
  42091. break;
  42092. return Intrinsic::x86_avx2_psrli_q; // "__builtin_ia32_psrlqi256"
  42093. }
  42094. break;
  42095. case 'w': // 2 strings to match.
  42096. if (BuiltinName[20] != 'i')
  42097. break;
  42098. switch (BuiltinName[21]) {
  42099. default: break;
  42100. case '1': // 1 string to match.
  42101. if (memcmp(BuiltinName.data()+22, "28", 2))
  42102. break;
  42103. return Intrinsic::x86_sse2_psrli_w; // "__builtin_ia32_psrlwi128"
  42104. case '2': // 1 string to match.
  42105. if (memcmp(BuiltinName.data()+22, "56", 2))
  42106. break;
  42107. return Intrinsic::x86_avx2_psrli_w; // "__builtin_ia32_psrlwi256"
  42108. }
  42109. break;
  42110. }
  42111. break;
  42112. }
  42113. break;
  42114. case 'u': // 4 strings to match.
  42115. if (memcmp(BuiltinName.data()+18, "bs", 2))
  42116. break;
  42117. switch (BuiltinName[20]) {
  42118. default: break;
  42119. case 'b': // 2 strings to match.
  42120. switch (BuiltinName[21]) {
  42121. default: break;
  42122. case '1': // 1 string to match.
  42123. if (memcmp(BuiltinName.data()+22, "28", 2))
  42124. break;
  42125. return Intrinsic::x86_sse2_psubs_b; // "__builtin_ia32_psubsb128"
  42126. case '2': // 1 string to match.
  42127. if (memcmp(BuiltinName.data()+22, "56", 2))
  42128. break;
  42129. return Intrinsic::x86_avx2_psubs_b; // "__builtin_ia32_psubsb256"
  42130. }
  42131. break;
  42132. case 'w': // 2 strings to match.
  42133. switch (BuiltinName[21]) {
  42134. default: break;
  42135. case '1': // 1 string to match.
  42136. if (memcmp(BuiltinName.data()+22, "28", 2))
  42137. break;
  42138. return Intrinsic::x86_sse2_psubs_w; // "__builtin_ia32_psubsw128"
  42139. case '2': // 1 string to match.
  42140. if (memcmp(BuiltinName.data()+22, "56", 2))
  42141. break;
  42142. return Intrinsic::x86_avx2_psubs_w; // "__builtin_ia32_psubsw256"
  42143. }
  42144. break;
  42145. }
  42146. break;
  42147. }
  42148. break;
  42149. case 't': // 4 strings to match.
  42150. if (memcmp(BuiltinName.data()+17, "est", 3))
  42151. break;
  42152. switch (BuiltinName[20]) {
  42153. default: break;
  42154. case 'c': // 2 strings to match.
  42155. switch (BuiltinName[21]) {
  42156. default: break;
  42157. case '1': // 1 string to match.
  42158. if (memcmp(BuiltinName.data()+22, "28", 2))
  42159. break;
  42160. return Intrinsic::x86_sse41_ptestc; // "__builtin_ia32_ptestc128"
  42161. case '2': // 1 string to match.
  42162. if (memcmp(BuiltinName.data()+22, "56", 2))
  42163. break;
  42164. return Intrinsic::x86_avx_ptestc_256; // "__builtin_ia32_ptestc256"
  42165. }
  42166. break;
  42167. case 'z': // 2 strings to match.
  42168. switch (BuiltinName[21]) {
  42169. default: break;
  42170. case '1': // 1 string to match.
  42171. if (memcmp(BuiltinName.data()+22, "28", 2))
  42172. break;
  42173. return Intrinsic::x86_sse41_ptestz; // "__builtin_ia32_ptestz128"
  42174. case '2': // 1 string to match.
  42175. if (memcmp(BuiltinName.data()+22, "56", 2))
  42176. break;
  42177. return Intrinsic::x86_avx_ptestz_256; // "__builtin_ia32_ptestz256"
  42178. }
  42179. break;
  42180. }
  42181. break;
  42182. case 'u': // 6 strings to match.
  42183. if (memcmp(BuiltinName.data()+17, "npck", 4))
  42184. break;
  42185. switch (BuiltinName[21]) {
  42186. default: break;
  42187. case 'h': // 3 strings to match.
  42188. switch (BuiltinName[22]) {
  42189. default: break;
  42190. case 'b': // 1 string to match.
  42191. if (BuiltinName[23] != 'w')
  42192. break;
  42193. return Intrinsic::x86_mmx_punpckhbw; // "__builtin_ia32_punpckhbw"
  42194. case 'd': // 1 string to match.
  42195. if (BuiltinName[23] != 'q')
  42196. break;
  42197. return Intrinsic::x86_mmx_punpckhdq; // "__builtin_ia32_punpckhdq"
  42198. case 'w': // 1 string to match.
  42199. if (BuiltinName[23] != 'd')
  42200. break;
  42201. return Intrinsic::x86_mmx_punpckhwd; // "__builtin_ia32_punpckhwd"
  42202. }
  42203. break;
  42204. case 'l': // 3 strings to match.
  42205. switch (BuiltinName[22]) {
  42206. default: break;
  42207. case 'b': // 1 string to match.
  42208. if (BuiltinName[23] != 'w')
  42209. break;
  42210. return Intrinsic::x86_mmx_punpcklbw; // "__builtin_ia32_punpcklbw"
  42211. case 'd': // 1 string to match.
  42212. if (BuiltinName[23] != 'q')
  42213. break;
  42214. return Intrinsic::x86_mmx_punpckldq; // "__builtin_ia32_punpckldq"
  42215. case 'w': // 1 string to match.
  42216. if (BuiltinName[23] != 'd')
  42217. break;
  42218. return Intrinsic::x86_mmx_punpcklwd; // "__builtin_ia32_punpcklwd"
  42219. }
  42220. break;
  42221. }
  42222. break;
  42223. }
  42224. break;
  42225. case 's': // 2 strings to match.
  42226. if (memcmp(BuiltinName.data()+16, "qrtp", 4))
  42227. break;
  42228. switch (BuiltinName[20]) {
  42229. default: break;
  42230. case 'd': // 1 string to match.
  42231. if (memcmp(BuiltinName.data()+21, "256", 3))
  42232. break;
  42233. return Intrinsic::x86_avx_sqrt_pd_256; // "__builtin_ia32_sqrtpd256"
  42234. case 's': // 1 string to match.
  42235. if (memcmp(BuiltinName.data()+21, "256", 3))
  42236. break;
  42237. return Intrinsic::x86_avx_sqrt_ps_256; // "__builtin_ia32_sqrtps256"
  42238. }
  42239. break;
  42240. case 'u': // 5 strings to match.
  42241. if (memcmp(BuiltinName.data()+16, "comisd", 6))
  42242. break;
  42243. switch (BuiltinName[22]) {
  42244. default: break;
  42245. case 'e': // 1 string to match.
  42246. if (BuiltinName[23] != 'q')
  42247. break;
  42248. return Intrinsic::x86_sse2_ucomieq_sd; // "__builtin_ia32_ucomisdeq"
  42249. case 'g': // 2 strings to match.
  42250. switch (BuiltinName[23]) {
  42251. default: break;
  42252. case 'e': // 1 string to match.
  42253. return Intrinsic::x86_sse2_ucomige_sd; // "__builtin_ia32_ucomisdge"
  42254. case 't': // 1 string to match.
  42255. return Intrinsic::x86_sse2_ucomigt_sd; // "__builtin_ia32_ucomisdgt"
  42256. }
  42257. break;
  42258. case 'l': // 2 strings to match.
  42259. switch (BuiltinName[23]) {
  42260. default: break;
  42261. case 'e': // 1 string to match.
  42262. return Intrinsic::x86_sse2_ucomile_sd; // "__builtin_ia32_ucomisdle"
  42263. case 't': // 1 string to match.
  42264. return Intrinsic::x86_sse2_ucomilt_sd; // "__builtin_ia32_ucomisdlt"
  42265. }
  42266. break;
  42267. }
  42268. break;
  42269. case 'v': // 10 strings to match.
  42270. switch (BuiltinName[16]) {
  42271. default: break;
  42272. case 'c': // 2 strings to match.
  42273. if (memcmp(BuiltinName.data()+17, "vtp", 3))
  42274. break;
  42275. switch (BuiltinName[20]) {
  42276. default: break;
  42277. case 'h': // 1 string to match.
  42278. if (memcmp(BuiltinName.data()+21, "2ps", 3))
  42279. break;
  42280. return Intrinsic::x86_vcvtph2ps_128; // "__builtin_ia32_vcvtph2ps"
  42281. case 's': // 1 string to match.
  42282. if (memcmp(BuiltinName.data()+21, "2ph", 3))
  42283. break;
  42284. return Intrinsic::x86_vcvtps2ph_128; // "__builtin_ia32_vcvtps2ph"
  42285. }
  42286. break;
  42287. case 'f': // 8 strings to match.
  42288. if (memcmp(BuiltinName.data()+17, "nm", 2))
  42289. break;
  42290. switch (BuiltinName[19]) {
  42291. default: break;
  42292. case 'a': // 4 strings to match.
  42293. if (memcmp(BuiltinName.data()+20, "dd", 2))
  42294. break;
  42295. switch (BuiltinName[22]) {
  42296. default: break;
  42297. case 'p': // 2 strings to match.
  42298. switch (BuiltinName[23]) {
  42299. default: break;
  42300. case 'd': // 1 string to match.
  42301. return Intrinsic::x86_fma_vfnmadd_pd; // "__builtin_ia32_vfnmaddpd"
  42302. case 's': // 1 string to match.
  42303. return Intrinsic::x86_fma_vfnmadd_ps; // "__builtin_ia32_vfnmaddps"
  42304. }
  42305. break;
  42306. case 's': // 2 strings to match.
  42307. switch (BuiltinName[23]) {
  42308. default: break;
  42309. case 'd': // 1 string to match.
  42310. return Intrinsic::x86_fma_vfnmadd_sd; // "__builtin_ia32_vfnmaddsd"
  42311. case 's': // 1 string to match.
  42312. return Intrinsic::x86_fma_vfnmadd_ss; // "__builtin_ia32_vfnmaddss"
  42313. }
  42314. break;
  42315. }
  42316. break;
  42317. case 's': // 4 strings to match.
  42318. if (memcmp(BuiltinName.data()+20, "ub", 2))
  42319. break;
  42320. switch (BuiltinName[22]) {
  42321. default: break;
  42322. case 'p': // 2 strings to match.
  42323. switch (BuiltinName[23]) {
  42324. default: break;
  42325. case 'd': // 1 string to match.
  42326. return Intrinsic::x86_fma_vfnmsub_pd; // "__builtin_ia32_vfnmsubpd"
  42327. case 's': // 1 string to match.
  42328. return Intrinsic::x86_fma_vfnmsub_ps; // "__builtin_ia32_vfnmsubps"
  42329. }
  42330. break;
  42331. case 's': // 2 strings to match.
  42332. switch (BuiltinName[23]) {
  42333. default: break;
  42334. case 'd': // 1 string to match.
  42335. return Intrinsic::x86_fma_vfnmsub_sd; // "__builtin_ia32_vfnmsubsd"
  42336. case 's': // 1 string to match.
  42337. return Intrinsic::x86_fma_vfnmsub_ss; // "__builtin_ia32_vfnmsubss"
  42338. }
  42339. break;
  42340. }
  42341. break;
  42342. }
  42343. break;
  42344. }
  42345. break;
  42346. }
  42347. break;
  42348. case 25: // 59 strings to match.
  42349. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  42350. break;
  42351. switch (BuiltinName[15]) {
  42352. default: break;
  42353. case 'b': // 2 strings to match.
  42354. if (memcmp(BuiltinName.data()+16, "lendp", 5))
  42355. break;
  42356. switch (BuiltinName[21]) {
  42357. default: break;
  42358. case 'd': // 1 string to match.
  42359. if (memcmp(BuiltinName.data()+22, "256", 3))
  42360. break;
  42361. return Intrinsic::x86_avx_blend_pd_256; // "__builtin_ia32_blendpd256"
  42362. case 's': // 1 string to match.
  42363. if (memcmp(BuiltinName.data()+22, "256", 3))
  42364. break;
  42365. return Intrinsic::x86_avx_blend_ps_256; // "__builtin_ia32_blendps256"
  42366. }
  42367. break;
  42368. case 'c': // 4 strings to match.
  42369. if (memcmp(BuiltinName.data()+16, "vts", 3))
  42370. break;
  42371. switch (BuiltinName[19]) {
  42372. default: break;
  42373. case 'd': // 1 string to match.
  42374. if (memcmp(BuiltinName.data()+20, "2si64", 5))
  42375. break;
  42376. return Intrinsic::x86_sse2_cvtsd2si64; // "__builtin_ia32_cvtsd2si64"
  42377. case 'i': // 2 strings to match.
  42378. if (memcmp(BuiltinName.data()+20, "642s", 4))
  42379. break;
  42380. switch (BuiltinName[24]) {
  42381. default: break;
  42382. case 'd': // 1 string to match.
  42383. return Intrinsic::x86_sse2_cvtsi642sd; // "__builtin_ia32_cvtsi642sd"
  42384. case 's': // 1 string to match.
  42385. return Intrinsic::x86_sse_cvtsi642ss; // "__builtin_ia32_cvtsi642ss"
  42386. }
  42387. break;
  42388. case 's': // 1 string to match.
  42389. if (memcmp(BuiltinName.data()+20, "2si64", 5))
  42390. break;
  42391. return Intrinsic::x86_sse_cvtss2si64; // "__builtin_ia32_cvtss2si64"
  42392. }
  42393. break;
  42394. case 'g': // 4 strings to match.
  42395. if (memcmp(BuiltinName.data()+16, "ather", 5))
  42396. break;
  42397. switch (BuiltinName[21]) {
  42398. default: break;
  42399. case 'd': // 2 strings to match.
  42400. if (memcmp(BuiltinName.data()+22, "_p", 2))
  42401. break;
  42402. switch (BuiltinName[24]) {
  42403. default: break;
  42404. case 'd': // 1 string to match.
  42405. return Intrinsic::x86_avx2_gather_d_pd; // "__builtin_ia32_gatherd_pd"
  42406. case 's': // 1 string to match.
  42407. return Intrinsic::x86_avx2_gather_d_ps; // "__builtin_ia32_gatherd_ps"
  42408. }
  42409. break;
  42410. case 'q': // 2 strings to match.
  42411. if (memcmp(BuiltinName.data()+22, "_p", 2))
  42412. break;
  42413. switch (BuiltinName[24]) {
  42414. default: break;
  42415. case 'd': // 1 string to match.
  42416. return Intrinsic::x86_avx2_gather_q_pd; // "__builtin_ia32_gatherq_pd"
  42417. case 's': // 1 string to match.
  42418. return Intrinsic::x86_avx2_gather_q_ps; // "__builtin_ia32_gatherq_ps"
  42419. }
  42420. break;
  42421. }
  42422. break;
  42423. case 'm': // 7 strings to match.
  42424. switch (BuiltinName[16]) {
  42425. default: break;
  42426. case 'a': // 5 strings to match.
  42427. if (memcmp(BuiltinName.data()+17, "sk", 2))
  42428. break;
  42429. switch (BuiltinName[19]) {
  42430. default: break;
  42431. case 'l': // 2 strings to match.
  42432. if (memcmp(BuiltinName.data()+20, "oadp", 4))
  42433. break;
  42434. switch (BuiltinName[24]) {
  42435. default: break;
  42436. case 'd': // 1 string to match.
  42437. return Intrinsic::x86_avx_maskload_pd; // "__builtin_ia32_maskloadpd"
  42438. case 's': // 1 string to match.
  42439. return Intrinsic::x86_avx_maskload_ps; // "__builtin_ia32_maskloadps"
  42440. }
  42441. break;
  42442. case 'm': // 1 string to match.
  42443. if (memcmp(BuiltinName.data()+20, "ovdqu", 5))
  42444. break;
  42445. return Intrinsic::x86_sse2_maskmov_dqu; // "__builtin_ia32_maskmovdqu"
  42446. case 's': // 2 strings to match.
  42447. if (memcmp(BuiltinName.data()+20, "tore", 4))
  42448. break;
  42449. switch (BuiltinName[24]) {
  42450. default: break;
  42451. case 'd': // 1 string to match.
  42452. return Intrinsic::x86_avx2_maskstore_d; // "__builtin_ia32_maskstored"
  42453. case 'q': // 1 string to match.
  42454. return Intrinsic::x86_avx2_maskstore_q; // "__builtin_ia32_maskstoreq"
  42455. }
  42456. break;
  42457. }
  42458. break;
  42459. case 'p': // 2 strings to match.
  42460. if (memcmp(BuiltinName.data()+17, "sadbw", 5))
  42461. break;
  42462. switch (BuiltinName[22]) {
  42463. default: break;
  42464. case '1': // 1 string to match.
  42465. if (memcmp(BuiltinName.data()+23, "28", 2))
  42466. break;
  42467. return Intrinsic::x86_sse41_mpsadbw; // "__builtin_ia32_mpsadbw128"
  42468. case '2': // 1 string to match.
  42469. if (memcmp(BuiltinName.data()+23, "56", 2))
  42470. break;
  42471. return Intrinsic::x86_avx2_mpsadbw; // "__builtin_ia32_mpsadbw256"
  42472. }
  42473. break;
  42474. }
  42475. break;
  42476. case 'p': // 26 strings to match.
  42477. switch (BuiltinName[16]) {
  42478. default: break;
  42479. case 'a': // 4 strings to match.
  42480. if (memcmp(BuiltinName.data()+17, "ddus", 4))
  42481. break;
  42482. switch (BuiltinName[21]) {
  42483. default: break;
  42484. case 'b': // 2 strings to match.
  42485. switch (BuiltinName[22]) {
  42486. default: break;
  42487. case '1': // 1 string to match.
  42488. if (memcmp(BuiltinName.data()+23, "28", 2))
  42489. break;
  42490. return Intrinsic::x86_sse2_paddus_b; // "__builtin_ia32_paddusb128"
  42491. case '2': // 1 string to match.
  42492. if (memcmp(BuiltinName.data()+23, "56", 2))
  42493. break;
  42494. return Intrinsic::x86_avx2_paddus_b; // "__builtin_ia32_paddusb256"
  42495. }
  42496. break;
  42497. case 'w': // 2 strings to match.
  42498. switch (BuiltinName[22]) {
  42499. default: break;
  42500. case '1': // 1 string to match.
  42501. if (memcmp(BuiltinName.data()+23, "28", 2))
  42502. break;
  42503. return Intrinsic::x86_sse2_paddus_w; // "__builtin_ia32_paddusw128"
  42504. case '2': // 1 string to match.
  42505. if (memcmp(BuiltinName.data()+23, "56", 2))
  42506. break;
  42507. return Intrinsic::x86_avx2_paddus_w; // "__builtin_ia32_paddusw256"
  42508. }
  42509. break;
  42510. }
  42511. break;
  42512. case 'b': // 4 strings to match.
  42513. if (memcmp(BuiltinName.data()+17, "lend", 4))
  42514. break;
  42515. switch (BuiltinName[21]) {
  42516. default: break;
  42517. case 'd': // 2 strings to match.
  42518. switch (BuiltinName[22]) {
  42519. default: break;
  42520. case '1': // 1 string to match.
  42521. if (memcmp(BuiltinName.data()+23, "28", 2))
  42522. break;
  42523. return Intrinsic::x86_avx2_pblendd_128; // "__builtin_ia32_pblendd128"
  42524. case '2': // 1 string to match.
  42525. if (memcmp(BuiltinName.data()+23, "56", 2))
  42526. break;
  42527. return Intrinsic::x86_avx2_pblendd_256; // "__builtin_ia32_pblendd256"
  42528. }
  42529. break;
  42530. case 'w': // 2 strings to match.
  42531. switch (BuiltinName[22]) {
  42532. default: break;
  42533. case '1': // 1 string to match.
  42534. if (memcmp(BuiltinName.data()+23, "28", 2))
  42535. break;
  42536. return Intrinsic::x86_sse41_pblendw; // "__builtin_ia32_pblendw128"
  42537. case '2': // 1 string to match.
  42538. if (memcmp(BuiltinName.data()+23, "56", 2))
  42539. break;
  42540. return Intrinsic::x86_avx2_pblendw; // "__builtin_ia32_pblendw256"
  42541. }
  42542. break;
  42543. }
  42544. break;
  42545. case 'h': // 4 strings to match.
  42546. switch (BuiltinName[17]) {
  42547. default: break;
  42548. case 'a': // 2 strings to match.
  42549. if (memcmp(BuiltinName.data()+18, "ddsw", 4))
  42550. break;
  42551. switch (BuiltinName[22]) {
  42552. default: break;
  42553. case '1': // 1 string to match.
  42554. if (memcmp(BuiltinName.data()+23, "28", 2))
  42555. break;
  42556. return Intrinsic::x86_ssse3_phadd_sw_128; // "__builtin_ia32_phaddsw128"
  42557. case '2': // 1 string to match.
  42558. if (memcmp(BuiltinName.data()+23, "56", 2))
  42559. break;
  42560. return Intrinsic::x86_avx2_phadd_sw; // "__builtin_ia32_phaddsw256"
  42561. }
  42562. break;
  42563. case 's': // 2 strings to match.
  42564. if (memcmp(BuiltinName.data()+18, "ubsw", 4))
  42565. break;
  42566. switch (BuiltinName[22]) {
  42567. default: break;
  42568. case '1': // 1 string to match.
  42569. if (memcmp(BuiltinName.data()+23, "28", 2))
  42570. break;
  42571. return Intrinsic::x86_ssse3_phsub_sw_128; // "__builtin_ia32_phsubsw128"
  42572. case '2': // 1 string to match.
  42573. if (memcmp(BuiltinName.data()+23, "56", 2))
  42574. break;
  42575. return Intrinsic::x86_avx2_phsub_sw; // "__builtin_ia32_phsubsw256"
  42576. }
  42577. break;
  42578. }
  42579. break;
  42580. case 'm': // 6 strings to match.
  42581. switch (BuiltinName[17]) {
  42582. default: break;
  42583. case 'a': // 2 strings to match.
  42584. if (memcmp(BuiltinName.data()+18, "ddwd", 4))
  42585. break;
  42586. switch (BuiltinName[22]) {
  42587. default: break;
  42588. case '1': // 1 string to match.
  42589. if (memcmp(BuiltinName.data()+23, "28", 2))
  42590. break;
  42591. return Intrinsic::x86_sse2_pmadd_wd; // "__builtin_ia32_pmaddwd128"
  42592. case '2': // 1 string to match.
  42593. if (memcmp(BuiltinName.data()+23, "56", 2))
  42594. break;
  42595. return Intrinsic::x86_avx2_pmadd_wd; // "__builtin_ia32_pmaddwd256"
  42596. }
  42597. break;
  42598. case 'u': // 4 strings to match.
  42599. if (BuiltinName[18] != 'l')
  42600. break;
  42601. switch (BuiltinName[19]) {
  42602. default: break;
  42603. case 'h': // 2 strings to match.
  42604. if (memcmp(BuiltinName.data()+20, "uw", 2))
  42605. break;
  42606. switch (BuiltinName[22]) {
  42607. default: break;
  42608. case '1': // 1 string to match.
  42609. if (memcmp(BuiltinName.data()+23, "28", 2))
  42610. break;
  42611. return Intrinsic::x86_sse2_pmulhu_w; // "__builtin_ia32_pmulhuw128"
  42612. case '2': // 1 string to match.
  42613. if (memcmp(BuiltinName.data()+23, "56", 2))
  42614. break;
  42615. return Intrinsic::x86_avx2_pmulhu_w; // "__builtin_ia32_pmulhuw256"
  42616. }
  42617. break;
  42618. case 'u': // 2 strings to match.
  42619. if (memcmp(BuiltinName.data()+20, "dq", 2))
  42620. break;
  42621. switch (BuiltinName[22]) {
  42622. default: break;
  42623. case '1': // 1 string to match.
  42624. if (memcmp(BuiltinName.data()+23, "28", 2))
  42625. break;
  42626. return Intrinsic::x86_sse2_pmulu_dq; // "__builtin_ia32_pmuludq128"
  42627. case '2': // 1 string to match.
  42628. if (memcmp(BuiltinName.data()+23, "56", 2))
  42629. break;
  42630. return Intrinsic::x86_avx2_pmulu_dq; // "__builtin_ia32_pmuludq256"
  42631. }
  42632. break;
  42633. }
  42634. break;
  42635. }
  42636. break;
  42637. case 's': // 8 strings to match.
  42638. switch (BuiltinName[17]) {
  42639. default: break;
  42640. case 'l': // 2 strings to match.
  42641. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  42642. break;
  42643. switch (BuiltinName[22]) {
  42644. default: break;
  42645. case '1': // 1 string to match.
  42646. if (memcmp(BuiltinName.data()+23, "28", 2))
  42647. break;
  42648. return Intrinsic::x86_sse2_psll_dq; // "__builtin_ia32_pslldqi128"
  42649. case '2': // 1 string to match.
  42650. if (memcmp(BuiltinName.data()+23, "56", 2))
  42651. break;
  42652. return Intrinsic::x86_avx2_psll_dq; // "__builtin_ia32_pslldqi256"
  42653. }
  42654. break;
  42655. case 'r': // 2 strings to match.
  42656. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  42657. break;
  42658. switch (BuiltinName[22]) {
  42659. default: break;
  42660. case '1': // 1 string to match.
  42661. if (memcmp(BuiltinName.data()+23, "28", 2))
  42662. break;
  42663. return Intrinsic::x86_sse2_psrl_dq; // "__builtin_ia32_psrldqi128"
  42664. case '2': // 1 string to match.
  42665. if (memcmp(BuiltinName.data()+23, "56", 2))
  42666. break;
  42667. return Intrinsic::x86_avx2_psrl_dq; // "__builtin_ia32_psrldqi256"
  42668. }
  42669. break;
  42670. case 'u': // 4 strings to match.
  42671. if (memcmp(BuiltinName.data()+18, "bus", 3))
  42672. break;
  42673. switch (BuiltinName[21]) {
  42674. default: break;
  42675. case 'b': // 2 strings to match.
  42676. switch (BuiltinName[22]) {
  42677. default: break;
  42678. case '1': // 1 string to match.
  42679. if (memcmp(BuiltinName.data()+23, "28", 2))
  42680. break;
  42681. return Intrinsic::x86_sse2_psubus_b; // "__builtin_ia32_psubusb128"
  42682. case '2': // 1 string to match.
  42683. if (memcmp(BuiltinName.data()+23, "56", 2))
  42684. break;
  42685. return Intrinsic::x86_avx2_psubus_b; // "__builtin_ia32_psubusb256"
  42686. }
  42687. break;
  42688. case 'w': // 2 strings to match.
  42689. switch (BuiltinName[22]) {
  42690. default: break;
  42691. case '1': // 1 string to match.
  42692. if (memcmp(BuiltinName.data()+23, "28", 2))
  42693. break;
  42694. return Intrinsic::x86_sse2_psubus_w; // "__builtin_ia32_psubusw128"
  42695. case '2': // 1 string to match.
  42696. if (memcmp(BuiltinName.data()+23, "56", 2))
  42697. break;
  42698. return Intrinsic::x86_avx2_psubus_w; // "__builtin_ia32_psubusw256"
  42699. }
  42700. break;
  42701. }
  42702. break;
  42703. }
  42704. break;
  42705. }
  42706. break;
  42707. case 'r': // 7 strings to match.
  42708. switch (BuiltinName[16]) {
  42709. default: break;
  42710. case 'd': // 4 strings to match.
  42711. switch (BuiltinName[17]) {
  42712. default: break;
  42713. case 'f': // 2 strings to match.
  42714. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  42715. break;
  42716. switch (BuiltinName[23]) {
  42717. default: break;
  42718. case '3': // 1 string to match.
  42719. if (BuiltinName[24] != '2')
  42720. break;
  42721. return Intrinsic::x86_rdfsbase_32; // "__builtin_ia32_rdfsbase32"
  42722. case '6': // 1 string to match.
  42723. if (BuiltinName[24] != '4')
  42724. break;
  42725. return Intrinsic::x86_rdfsbase_64; // "__builtin_ia32_rdfsbase64"
  42726. }
  42727. break;
  42728. case 'g': // 2 strings to match.
  42729. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  42730. break;
  42731. switch (BuiltinName[23]) {
  42732. default: break;
  42733. case '3': // 1 string to match.
  42734. if (BuiltinName[24] != '2')
  42735. break;
  42736. return Intrinsic::x86_rdgsbase_32; // "__builtin_ia32_rdgsbase32"
  42737. case '6': // 1 string to match.
  42738. if (BuiltinName[24] != '4')
  42739. break;
  42740. return Intrinsic::x86_rdgsbase_64; // "__builtin_ia32_rdgsbase64"
  42741. }
  42742. break;
  42743. }
  42744. break;
  42745. case 'o': // 2 strings to match.
  42746. if (memcmp(BuiltinName.data()+17, "undp", 4))
  42747. break;
  42748. switch (BuiltinName[21]) {
  42749. default: break;
  42750. case 'd': // 1 string to match.
  42751. if (memcmp(BuiltinName.data()+22, "256", 3))
  42752. break;
  42753. return Intrinsic::x86_avx_round_pd_256; // "__builtin_ia32_roundpd256"
  42754. case 's': // 1 string to match.
  42755. if (memcmp(BuiltinName.data()+22, "256", 3))
  42756. break;
  42757. return Intrinsic::x86_avx_round_ps_256; // "__builtin_ia32_roundps256"
  42758. }
  42759. break;
  42760. case 's': // 1 string to match.
  42761. if (memcmp(BuiltinName.data()+17, "qrtps256", 8))
  42762. break;
  42763. return Intrinsic::x86_avx_rsqrt_ps_256; // "__builtin_ia32_rsqrtps256"
  42764. }
  42765. break;
  42766. case 's': // 1 string to match.
  42767. if (memcmp(BuiltinName.data()+16, "torelv4si", 9))
  42768. break;
  42769. return Intrinsic::x86_sse2_storel_dq; // "__builtin_ia32_storelv4si"
  42770. case 'u': // 1 string to match.
  42771. if (memcmp(BuiltinName.data()+16, "comisdneq", 9))
  42772. break;
  42773. return Intrinsic::x86_sse2_ucomineq_sd; // "__builtin_ia32_ucomisdneq"
  42774. case 'v': // 3 strings to match.
  42775. switch (BuiltinName[16]) {
  42776. default: break;
  42777. case 't': // 2 strings to match.
  42778. if (memcmp(BuiltinName.data()+17, "estnzcp", 7))
  42779. break;
  42780. switch (BuiltinName[24]) {
  42781. default: break;
  42782. case 'd': // 1 string to match.
  42783. return Intrinsic::x86_avx_vtestnzc_pd; // "__builtin_ia32_vtestnzcpd"
  42784. case 's': // 1 string to match.
  42785. return Intrinsic::x86_avx_vtestnzc_ps; // "__builtin_ia32_vtestnzcps"
  42786. }
  42787. break;
  42788. case 'z': // 1 string to match.
  42789. if (memcmp(BuiltinName.data()+17, "eroupper", 8))
  42790. break;
  42791. return Intrinsic::x86_avx_vzeroupper; // "__builtin_ia32_vzeroupper"
  42792. }
  42793. break;
  42794. case 'w': // 4 strings to match.
  42795. if (BuiltinName[16] != 'r')
  42796. break;
  42797. switch (BuiltinName[17]) {
  42798. default: break;
  42799. case 'f': // 2 strings to match.
  42800. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  42801. break;
  42802. switch (BuiltinName[23]) {
  42803. default: break;
  42804. case '3': // 1 string to match.
  42805. if (BuiltinName[24] != '2')
  42806. break;
  42807. return Intrinsic::x86_wrfsbase_32; // "__builtin_ia32_wrfsbase32"
  42808. case '6': // 1 string to match.
  42809. if (BuiltinName[24] != '4')
  42810. break;
  42811. return Intrinsic::x86_wrfsbase_64; // "__builtin_ia32_wrfsbase64"
  42812. }
  42813. break;
  42814. case 'g': // 2 strings to match.
  42815. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  42816. break;
  42817. switch (BuiltinName[23]) {
  42818. default: break;
  42819. case '3': // 1 string to match.
  42820. if (BuiltinName[24] != '2')
  42821. break;
  42822. return Intrinsic::x86_wrgsbase_32; // "__builtin_ia32_wrgsbase32"
  42823. case '6': // 1 string to match.
  42824. if (BuiltinName[24] != '4')
  42825. break;
  42826. return Intrinsic::x86_wrgsbase_64; // "__builtin_ia32_wrgsbase64"
  42827. }
  42828. break;
  42829. }
  42830. break;
  42831. }
  42832. break;
  42833. case 26: // 73 strings to match.
  42834. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  42835. break;
  42836. switch (BuiltinName[15]) {
  42837. default: break;
  42838. case 'a': // 2 strings to match.
  42839. if (memcmp(BuiltinName.data()+16, "ddsubp", 6))
  42840. break;
  42841. switch (BuiltinName[22]) {
  42842. default: break;
  42843. case 'd': // 1 string to match.
  42844. if (memcmp(BuiltinName.data()+23, "256", 3))
  42845. break;
  42846. return Intrinsic::x86_avx_addsub_pd_256; // "__builtin_ia32_addsubpd256"
  42847. case 's': // 1 string to match.
  42848. if (memcmp(BuiltinName.data()+23, "256", 3))
  42849. break;
  42850. return Intrinsic::x86_avx_addsub_ps_256; // "__builtin_ia32_addsubps256"
  42851. }
  42852. break;
  42853. case 'b': // 2 strings to match.
  42854. if (memcmp(BuiltinName.data()+16, "lendvp", 6))
  42855. break;
  42856. switch (BuiltinName[22]) {
  42857. default: break;
  42858. case 'd': // 1 string to match.
  42859. if (memcmp(BuiltinName.data()+23, "256", 3))
  42860. break;
  42861. return Intrinsic::x86_avx_blendv_pd_256; // "__builtin_ia32_blendvpd256"
  42862. case 's': // 1 string to match.
  42863. if (memcmp(BuiltinName.data()+23, "256", 3))
  42864. break;
  42865. return Intrinsic::x86_avx_blendv_ps_256; // "__builtin_ia32_blendvps256"
  42866. }
  42867. break;
  42868. case 'c': // 8 strings to match.
  42869. if (memcmp(BuiltinName.data()+16, "vt", 2))
  42870. break;
  42871. switch (BuiltinName[18]) {
  42872. default: break;
  42873. case 'd': // 2 strings to match.
  42874. if (memcmp(BuiltinName.data()+19, "q2p", 3))
  42875. break;
  42876. switch (BuiltinName[22]) {
  42877. default: break;
  42878. case 'd': // 1 string to match.
  42879. if (memcmp(BuiltinName.data()+23, "256", 3))
  42880. break;
  42881. return Intrinsic::x86_avx_cvtdq2_pd_256; // "__builtin_ia32_cvtdq2pd256"
  42882. case 's': // 1 string to match.
  42883. if (memcmp(BuiltinName.data()+23, "256", 3))
  42884. break;
  42885. return Intrinsic::x86_avx_cvtdq2_ps_256; // "__builtin_ia32_cvtdq2ps256"
  42886. }
  42887. break;
  42888. case 'p': // 4 strings to match.
  42889. switch (BuiltinName[19]) {
  42890. default: break;
  42891. case 'd': // 2 strings to match.
  42892. if (BuiltinName[20] != '2')
  42893. break;
  42894. switch (BuiltinName[21]) {
  42895. default: break;
  42896. case 'd': // 1 string to match.
  42897. if (memcmp(BuiltinName.data()+22, "q256", 4))
  42898. break;
  42899. return Intrinsic::x86_avx_cvt_pd2dq_256; // "__builtin_ia32_cvtpd2dq256"
  42900. case 'p': // 1 string to match.
  42901. if (memcmp(BuiltinName.data()+22, "s256", 4))
  42902. break;
  42903. return Intrinsic::x86_avx_cvt_pd2_ps_256; // "__builtin_ia32_cvtpd2ps256"
  42904. }
  42905. break;
  42906. case 's': // 2 strings to match.
  42907. if (BuiltinName[20] != '2')
  42908. break;
  42909. switch (BuiltinName[21]) {
  42910. default: break;
  42911. case 'd': // 1 string to match.
  42912. if (memcmp(BuiltinName.data()+22, "q256", 4))
  42913. break;
  42914. return Intrinsic::x86_avx_cvt_ps2dq_256; // "__builtin_ia32_cvtps2dq256"
  42915. case 'p': // 1 string to match.
  42916. if (memcmp(BuiltinName.data()+22, "d256", 4))
  42917. break;
  42918. return Intrinsic::x86_avx_cvt_ps2_pd_256; // "__builtin_ia32_cvtps2pd256"
  42919. }
  42920. break;
  42921. }
  42922. break;
  42923. case 't': // 2 strings to match.
  42924. if (BuiltinName[19] != 's')
  42925. break;
  42926. switch (BuiltinName[20]) {
  42927. default: break;
  42928. case 'd': // 1 string to match.
  42929. if (memcmp(BuiltinName.data()+21, "2si64", 5))
  42930. break;
  42931. return Intrinsic::x86_sse2_cvttsd2si64; // "__builtin_ia32_cvttsd2si64"
  42932. case 's': // 1 string to match.
  42933. if (memcmp(BuiltinName.data()+21, "2si64", 5))
  42934. break;
  42935. return Intrinsic::x86_sse_cvttss2si64; // "__builtin_ia32_cvttss2si64"
  42936. }
  42937. break;
  42938. }
  42939. break;
  42940. case 'i': // 1 string to match.
  42941. if (memcmp(BuiltinName.data()+16, "nsertps128", 10))
  42942. break;
  42943. return Intrinsic::x86_sse41_insertps; // "__builtin_ia32_insertps128"
  42944. case 'm': // 5 strings to match.
  42945. switch (BuiltinName[16]) {
  42946. default: break;
  42947. case 'a': // 2 strings to match.
  42948. if (memcmp(BuiltinName.data()+17, "skstorep", 8))
  42949. break;
  42950. switch (BuiltinName[25]) {
  42951. default: break;
  42952. case 'd': // 1 string to match.
  42953. return Intrinsic::x86_avx_maskstore_pd; // "__builtin_ia32_maskstorepd"
  42954. case 's': // 1 string to match.
  42955. return Intrinsic::x86_avx_maskstore_ps; // "__builtin_ia32_maskstoreps"
  42956. }
  42957. break;
  42958. case 'o': // 3 strings to match.
  42959. if (BuiltinName[17] != 'v')
  42960. break;
  42961. switch (BuiltinName[18]) {
  42962. default: break;
  42963. case 'm': // 2 strings to match.
  42964. if (memcmp(BuiltinName.data()+19, "skp", 3))
  42965. break;
  42966. switch (BuiltinName[22]) {
  42967. default: break;
  42968. case 'd': // 1 string to match.
  42969. if (memcmp(BuiltinName.data()+23, "256", 3))
  42970. break;
  42971. return Intrinsic::x86_avx_movmsk_pd_256; // "__builtin_ia32_movmskpd256"
  42972. case 's': // 1 string to match.
  42973. if (memcmp(BuiltinName.data()+23, "256", 3))
  42974. break;
  42975. return Intrinsic::x86_avx_movmsk_ps_256; // "__builtin_ia32_movmskps256"
  42976. }
  42977. break;
  42978. case 'n': // 1 string to match.
  42979. if (memcmp(BuiltinName.data()+19, "tdqa256", 7))
  42980. break;
  42981. return Intrinsic::x86_avx2_movntdqa; // "__builtin_ia32_movntdqa256"
  42982. }
  42983. break;
  42984. }
  42985. break;
  42986. case 'p': // 40 strings to match.
  42987. switch (BuiltinName[16]) {
  42988. default: break;
  42989. case 'a': // 8 strings to match.
  42990. if (memcmp(BuiltinName.data()+17, "ck", 2))
  42991. break;
  42992. switch (BuiltinName[19]) {
  42993. default: break;
  42994. case 's': // 4 strings to match.
  42995. if (BuiltinName[20] != 's')
  42996. break;
  42997. switch (BuiltinName[21]) {
  42998. default: break;
  42999. case 'd': // 2 strings to match.
  43000. if (BuiltinName[22] != 'w')
  43001. break;
  43002. switch (BuiltinName[23]) {
  43003. default: break;
  43004. case '1': // 1 string to match.
  43005. if (memcmp(BuiltinName.data()+24, "28", 2))
  43006. break;
  43007. return Intrinsic::x86_sse2_packssdw_128; // "__builtin_ia32_packssdw128"
  43008. case '2': // 1 string to match.
  43009. if (memcmp(BuiltinName.data()+24, "56", 2))
  43010. break;
  43011. return Intrinsic::x86_avx2_packssdw; // "__builtin_ia32_packssdw256"
  43012. }
  43013. break;
  43014. case 'w': // 2 strings to match.
  43015. if (BuiltinName[22] != 'b')
  43016. break;
  43017. switch (BuiltinName[23]) {
  43018. default: break;
  43019. case '1': // 1 string to match.
  43020. if (memcmp(BuiltinName.data()+24, "28", 2))
  43021. break;
  43022. return Intrinsic::x86_sse2_packsswb_128; // "__builtin_ia32_packsswb128"
  43023. case '2': // 1 string to match.
  43024. if (memcmp(BuiltinName.data()+24, "56", 2))
  43025. break;
  43026. return Intrinsic::x86_avx2_packsswb; // "__builtin_ia32_packsswb256"
  43027. }
  43028. break;
  43029. }
  43030. break;
  43031. case 'u': // 4 strings to match.
  43032. if (BuiltinName[20] != 's')
  43033. break;
  43034. switch (BuiltinName[21]) {
  43035. default: break;
  43036. case 'd': // 2 strings to match.
  43037. if (BuiltinName[22] != 'w')
  43038. break;
  43039. switch (BuiltinName[23]) {
  43040. default: break;
  43041. case '1': // 1 string to match.
  43042. if (memcmp(BuiltinName.data()+24, "28", 2))
  43043. break;
  43044. return Intrinsic::x86_sse41_packusdw; // "__builtin_ia32_packusdw128"
  43045. case '2': // 1 string to match.
  43046. if (memcmp(BuiltinName.data()+24, "56", 2))
  43047. break;
  43048. return Intrinsic::x86_avx2_packusdw; // "__builtin_ia32_packusdw256"
  43049. }
  43050. break;
  43051. case 'w': // 2 strings to match.
  43052. if (BuiltinName[22] != 'b')
  43053. break;
  43054. switch (BuiltinName[23]) {
  43055. default: break;
  43056. case '1': // 1 string to match.
  43057. if (memcmp(BuiltinName.data()+24, "28", 2))
  43058. break;
  43059. return Intrinsic::x86_sse2_packuswb_128; // "__builtin_ia32_packuswb128"
  43060. case '2': // 1 string to match.
  43061. if (memcmp(BuiltinName.data()+24, "56", 2))
  43062. break;
  43063. return Intrinsic::x86_avx2_packuswb; // "__builtin_ia32_packuswb256"
  43064. }
  43065. break;
  43066. }
  43067. break;
  43068. }
  43069. break;
  43070. case 'b': // 2 strings to match.
  43071. if (memcmp(BuiltinName.data()+17, "lendvb", 6))
  43072. break;
  43073. switch (BuiltinName[23]) {
  43074. default: break;
  43075. case '1': // 1 string to match.
  43076. if (memcmp(BuiltinName.data()+24, "28", 2))
  43077. break;
  43078. return Intrinsic::x86_sse41_pblendvb; // "__builtin_ia32_pblendvb128"
  43079. case '2': // 1 string to match.
  43080. if (memcmp(BuiltinName.data()+24, "56", 2))
  43081. break;
  43082. return Intrinsic::x86_avx2_pblendvb; // "__builtin_ia32_pblendvb256"
  43083. }
  43084. break;
  43085. case 'm': // 28 strings to match.
  43086. switch (BuiltinName[17]) {
  43087. default: break;
  43088. case 'o': // 26 strings to match.
  43089. if (BuiltinName[18] != 'v')
  43090. break;
  43091. switch (BuiltinName[19]) {
  43092. default: break;
  43093. case 'm': // 2 strings to match.
  43094. if (memcmp(BuiltinName.data()+20, "skb", 3))
  43095. break;
  43096. switch (BuiltinName[23]) {
  43097. default: break;
  43098. case '1': // 1 string to match.
  43099. if (memcmp(BuiltinName.data()+24, "28", 2))
  43100. break;
  43101. return Intrinsic::x86_sse2_pmovmskb_128; // "__builtin_ia32_pmovmskb128"
  43102. case '2': // 1 string to match.
  43103. if (memcmp(BuiltinName.data()+24, "56", 2))
  43104. break;
  43105. return Intrinsic::x86_avx2_pmovmskb; // "__builtin_ia32_pmovmskb256"
  43106. }
  43107. break;
  43108. case 's': // 12 strings to match.
  43109. if (BuiltinName[20] != 'x')
  43110. break;
  43111. switch (BuiltinName[21]) {
  43112. default: break;
  43113. case 'b': // 6 strings to match.
  43114. switch (BuiltinName[22]) {
  43115. default: break;
  43116. case 'd': // 2 strings to match.
  43117. switch (BuiltinName[23]) {
  43118. default: break;
  43119. case '1': // 1 string to match.
  43120. if (memcmp(BuiltinName.data()+24, "28", 2))
  43121. break;
  43122. return Intrinsic::x86_sse41_pmovsxbd; // "__builtin_ia32_pmovsxbd128"
  43123. case '2': // 1 string to match.
  43124. if (memcmp(BuiltinName.data()+24, "56", 2))
  43125. break;
  43126. return Intrinsic::x86_avx2_pmovsxbd; // "__builtin_ia32_pmovsxbd256"
  43127. }
  43128. break;
  43129. case 'q': // 2 strings to match.
  43130. switch (BuiltinName[23]) {
  43131. default: break;
  43132. case '1': // 1 string to match.
  43133. if (memcmp(BuiltinName.data()+24, "28", 2))
  43134. break;
  43135. return Intrinsic::x86_sse41_pmovsxbq; // "__builtin_ia32_pmovsxbq128"
  43136. case '2': // 1 string to match.
  43137. if (memcmp(BuiltinName.data()+24, "56", 2))
  43138. break;
  43139. return Intrinsic::x86_avx2_pmovsxbq; // "__builtin_ia32_pmovsxbq256"
  43140. }
  43141. break;
  43142. case 'w': // 2 strings to match.
  43143. switch (BuiltinName[23]) {
  43144. default: break;
  43145. case '1': // 1 string to match.
  43146. if (memcmp(BuiltinName.data()+24, "28", 2))
  43147. break;
  43148. return Intrinsic::x86_sse41_pmovsxbw; // "__builtin_ia32_pmovsxbw128"
  43149. case '2': // 1 string to match.
  43150. if (memcmp(BuiltinName.data()+24, "56", 2))
  43151. break;
  43152. return Intrinsic::x86_avx2_pmovsxbw; // "__builtin_ia32_pmovsxbw256"
  43153. }
  43154. break;
  43155. }
  43156. break;
  43157. case 'd': // 2 strings to match.
  43158. if (BuiltinName[22] != 'q')
  43159. break;
  43160. switch (BuiltinName[23]) {
  43161. default: break;
  43162. case '1': // 1 string to match.
  43163. if (memcmp(BuiltinName.data()+24, "28", 2))
  43164. break;
  43165. return Intrinsic::x86_sse41_pmovsxdq; // "__builtin_ia32_pmovsxdq128"
  43166. case '2': // 1 string to match.
  43167. if (memcmp(BuiltinName.data()+24, "56", 2))
  43168. break;
  43169. return Intrinsic::x86_avx2_pmovsxdq; // "__builtin_ia32_pmovsxdq256"
  43170. }
  43171. break;
  43172. case 'w': // 4 strings to match.
  43173. switch (BuiltinName[22]) {
  43174. default: break;
  43175. case 'd': // 2 strings to match.
  43176. switch (BuiltinName[23]) {
  43177. default: break;
  43178. case '1': // 1 string to match.
  43179. if (memcmp(BuiltinName.data()+24, "28", 2))
  43180. break;
  43181. return Intrinsic::x86_sse41_pmovsxwd; // "__builtin_ia32_pmovsxwd128"
  43182. case '2': // 1 string to match.
  43183. if (memcmp(BuiltinName.data()+24, "56", 2))
  43184. break;
  43185. return Intrinsic::x86_avx2_pmovsxwd; // "__builtin_ia32_pmovsxwd256"
  43186. }
  43187. break;
  43188. case 'q': // 2 strings to match.
  43189. switch (BuiltinName[23]) {
  43190. default: break;
  43191. case '1': // 1 string to match.
  43192. if (memcmp(BuiltinName.data()+24, "28", 2))
  43193. break;
  43194. return Intrinsic::x86_sse41_pmovsxwq; // "__builtin_ia32_pmovsxwq128"
  43195. case '2': // 1 string to match.
  43196. if (memcmp(BuiltinName.data()+24, "56", 2))
  43197. break;
  43198. return Intrinsic::x86_avx2_pmovsxwq; // "__builtin_ia32_pmovsxwq256"
  43199. }
  43200. break;
  43201. }
  43202. break;
  43203. }
  43204. break;
  43205. case 'z': // 12 strings to match.
  43206. if (BuiltinName[20] != 'x')
  43207. break;
  43208. switch (BuiltinName[21]) {
  43209. default: break;
  43210. case 'b': // 6 strings to match.
  43211. switch (BuiltinName[22]) {
  43212. default: break;
  43213. case 'd': // 2 strings to match.
  43214. switch (BuiltinName[23]) {
  43215. default: break;
  43216. case '1': // 1 string to match.
  43217. if (memcmp(BuiltinName.data()+24, "28", 2))
  43218. break;
  43219. return Intrinsic::x86_sse41_pmovzxbd; // "__builtin_ia32_pmovzxbd128"
  43220. case '2': // 1 string to match.
  43221. if (memcmp(BuiltinName.data()+24, "56", 2))
  43222. break;
  43223. return Intrinsic::x86_avx2_pmovzxbd; // "__builtin_ia32_pmovzxbd256"
  43224. }
  43225. break;
  43226. case 'q': // 2 strings to match.
  43227. switch (BuiltinName[23]) {
  43228. default: break;
  43229. case '1': // 1 string to match.
  43230. if (memcmp(BuiltinName.data()+24, "28", 2))
  43231. break;
  43232. return Intrinsic::x86_sse41_pmovzxbq; // "__builtin_ia32_pmovzxbq128"
  43233. case '2': // 1 string to match.
  43234. if (memcmp(BuiltinName.data()+24, "56", 2))
  43235. break;
  43236. return Intrinsic::x86_avx2_pmovzxbq; // "__builtin_ia32_pmovzxbq256"
  43237. }
  43238. break;
  43239. case 'w': // 2 strings to match.
  43240. switch (BuiltinName[23]) {
  43241. default: break;
  43242. case '1': // 1 string to match.
  43243. if (memcmp(BuiltinName.data()+24, "28", 2))
  43244. break;
  43245. return Intrinsic::x86_sse41_pmovzxbw; // "__builtin_ia32_pmovzxbw128"
  43246. case '2': // 1 string to match.
  43247. if (memcmp(BuiltinName.data()+24, "56", 2))
  43248. break;
  43249. return Intrinsic::x86_avx2_pmovzxbw; // "__builtin_ia32_pmovzxbw256"
  43250. }
  43251. break;
  43252. }
  43253. break;
  43254. case 'd': // 2 strings to match.
  43255. if (BuiltinName[22] != 'q')
  43256. break;
  43257. switch (BuiltinName[23]) {
  43258. default: break;
  43259. case '1': // 1 string to match.
  43260. if (memcmp(BuiltinName.data()+24, "28", 2))
  43261. break;
  43262. return Intrinsic::x86_sse41_pmovzxdq; // "__builtin_ia32_pmovzxdq128"
  43263. case '2': // 1 string to match.
  43264. if (memcmp(BuiltinName.data()+24, "56", 2))
  43265. break;
  43266. return Intrinsic::x86_avx2_pmovzxdq; // "__builtin_ia32_pmovzxdq256"
  43267. }
  43268. break;
  43269. case 'w': // 4 strings to match.
  43270. switch (BuiltinName[22]) {
  43271. default: break;
  43272. case 'd': // 2 strings to match.
  43273. switch (BuiltinName[23]) {
  43274. default: break;
  43275. case '1': // 1 string to match.
  43276. if (memcmp(BuiltinName.data()+24, "28", 2))
  43277. break;
  43278. return Intrinsic::x86_sse41_pmovzxwd; // "__builtin_ia32_pmovzxwd128"
  43279. case '2': // 1 string to match.
  43280. if (memcmp(BuiltinName.data()+24, "56", 2))
  43281. break;
  43282. return Intrinsic::x86_avx2_pmovzxwd; // "__builtin_ia32_pmovzxwd256"
  43283. }
  43284. break;
  43285. case 'q': // 2 strings to match.
  43286. switch (BuiltinName[23]) {
  43287. default: break;
  43288. case '1': // 1 string to match.
  43289. if (memcmp(BuiltinName.data()+24, "28", 2))
  43290. break;
  43291. return Intrinsic::x86_sse41_pmovzxwq; // "__builtin_ia32_pmovzxwq128"
  43292. case '2': // 1 string to match.
  43293. if (memcmp(BuiltinName.data()+24, "56", 2))
  43294. break;
  43295. return Intrinsic::x86_avx2_pmovzxwq; // "__builtin_ia32_pmovzxwq256"
  43296. }
  43297. break;
  43298. }
  43299. break;
  43300. }
  43301. break;
  43302. }
  43303. break;
  43304. case 'u': // 2 strings to match.
  43305. if (memcmp(BuiltinName.data()+18, "lhrsw", 5))
  43306. break;
  43307. switch (BuiltinName[23]) {
  43308. default: break;
  43309. case '1': // 1 string to match.
  43310. if (memcmp(BuiltinName.data()+24, "28", 2))
  43311. break;
  43312. return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "__builtin_ia32_pmulhrsw128"
  43313. case '2': // 1 string to match.
  43314. if (memcmp(BuiltinName.data()+24, "56", 2))
  43315. break;
  43316. return Intrinsic::x86_avx2_pmul_hr_sw; // "__builtin_ia32_pmulhrsw256"
  43317. }
  43318. break;
  43319. }
  43320. break;
  43321. case 't': // 2 strings to match.
  43322. if (memcmp(BuiltinName.data()+17, "estnzc", 6))
  43323. break;
  43324. switch (BuiltinName[23]) {
  43325. default: break;
  43326. case '1': // 1 string to match.
  43327. if (memcmp(BuiltinName.data()+24, "28", 2))
  43328. break;
  43329. return Intrinsic::x86_sse41_ptestnzc; // "__builtin_ia32_ptestnzc128"
  43330. case '2': // 1 string to match.
  43331. if (memcmp(BuiltinName.data()+24, "56", 2))
  43332. break;
  43333. return Intrinsic::x86_avx_ptestnzc_256; // "__builtin_ia32_ptestnzc256"
  43334. }
  43335. break;
  43336. }
  43337. break;
  43338. case 's': // 3 strings to match.
  43339. if (memcmp(BuiltinName.data()+16, "tore", 4))
  43340. break;
  43341. switch (BuiltinName[20]) {
  43342. default: break;
  43343. case 'd': // 1 string to match.
  43344. if (memcmp(BuiltinName.data()+21, "qu256", 5))
  43345. break;
  43346. return Intrinsic::x86_avx_storeu_dq_256; // "__builtin_ia32_storedqu256"
  43347. case 'u': // 2 strings to match.
  43348. if (BuiltinName[21] != 'p')
  43349. break;
  43350. switch (BuiltinName[22]) {
  43351. default: break;
  43352. case 'd': // 1 string to match.
  43353. if (memcmp(BuiltinName.data()+23, "256", 3))
  43354. break;
  43355. return Intrinsic::x86_avx_storeu_pd_256; // "__builtin_ia32_storeupd256"
  43356. case 's': // 1 string to match.
  43357. if (memcmp(BuiltinName.data()+23, "256", 3))
  43358. break;
  43359. return Intrinsic::x86_avx_storeu_ps_256; // "__builtin_ia32_storeups256"
  43360. }
  43361. break;
  43362. }
  43363. break;
  43364. case 'v': // 12 strings to match.
  43365. switch (BuiltinName[16]) {
  43366. default: break;
  43367. case 'f': // 8 strings to match.
  43368. if (BuiltinName[17] != 'm')
  43369. break;
  43370. switch (BuiltinName[18]) {
  43371. default: break;
  43372. case 'a': // 4 strings to match.
  43373. if (memcmp(BuiltinName.data()+19, "dd", 2))
  43374. break;
  43375. switch (BuiltinName[21]) {
  43376. default: break;
  43377. case 'p': // 2 strings to match.
  43378. switch (BuiltinName[22]) {
  43379. default: break;
  43380. case 'd': // 1 string to match.
  43381. if (memcmp(BuiltinName.data()+23, "256", 3))
  43382. break;
  43383. return Intrinsic::x86_fma_vfmadd_pd_256; // "__builtin_ia32_vfmaddpd256"
  43384. case 's': // 1 string to match.
  43385. if (memcmp(BuiltinName.data()+23, "256", 3))
  43386. break;
  43387. return Intrinsic::x86_fma_vfmadd_ps_256; // "__builtin_ia32_vfmaddps256"
  43388. }
  43389. break;
  43390. case 's': // 2 strings to match.
  43391. if (memcmp(BuiltinName.data()+22, "ubp", 3))
  43392. break;
  43393. switch (BuiltinName[25]) {
  43394. default: break;
  43395. case 'd': // 1 string to match.
  43396. return Intrinsic::x86_fma_vfmaddsub_pd; // "__builtin_ia32_vfmaddsubpd"
  43397. case 's': // 1 string to match.
  43398. return Intrinsic::x86_fma_vfmaddsub_ps; // "__builtin_ia32_vfmaddsubps"
  43399. }
  43400. break;
  43401. }
  43402. break;
  43403. case 's': // 4 strings to match.
  43404. if (memcmp(BuiltinName.data()+19, "ub", 2))
  43405. break;
  43406. switch (BuiltinName[21]) {
  43407. default: break;
  43408. case 'a': // 2 strings to match.
  43409. if (memcmp(BuiltinName.data()+22, "ddp", 3))
  43410. break;
  43411. switch (BuiltinName[25]) {
  43412. default: break;
  43413. case 'd': // 1 string to match.
  43414. return Intrinsic::x86_fma_vfmsubadd_pd; // "__builtin_ia32_vfmsubaddpd"
  43415. case 's': // 1 string to match.
  43416. return Intrinsic::x86_fma_vfmsubadd_ps; // "__builtin_ia32_vfmsubaddps"
  43417. }
  43418. break;
  43419. case 'p': // 2 strings to match.
  43420. switch (BuiltinName[22]) {
  43421. default: break;
  43422. case 'd': // 1 string to match.
  43423. if (memcmp(BuiltinName.data()+23, "256", 3))
  43424. break;
  43425. return Intrinsic::x86_fma_vfmsub_pd_256; // "__builtin_ia32_vfmsubpd256"
  43426. case 's': // 1 string to match.
  43427. if (memcmp(BuiltinName.data()+23, "256", 3))
  43428. break;
  43429. return Intrinsic::x86_fma_vfmsub_ps_256; // "__builtin_ia32_vfmsubps256"
  43430. }
  43431. break;
  43432. }
  43433. break;
  43434. }
  43435. break;
  43436. case 't': // 4 strings to match.
  43437. if (memcmp(BuiltinName.data()+17, "est", 3))
  43438. break;
  43439. switch (BuiltinName[20]) {
  43440. default: break;
  43441. case 'c': // 2 strings to match.
  43442. if (BuiltinName[21] != 'p')
  43443. break;
  43444. switch (BuiltinName[22]) {
  43445. default: break;
  43446. case 'd': // 1 string to match.
  43447. if (memcmp(BuiltinName.data()+23, "256", 3))
  43448. break;
  43449. return Intrinsic::x86_avx_vtestc_pd_256; // "__builtin_ia32_vtestcpd256"
  43450. case 's': // 1 string to match.
  43451. if (memcmp(BuiltinName.data()+23, "256", 3))
  43452. break;
  43453. return Intrinsic::x86_avx_vtestc_ps_256; // "__builtin_ia32_vtestcps256"
  43454. }
  43455. break;
  43456. case 'z': // 2 strings to match.
  43457. if (BuiltinName[21] != 'p')
  43458. break;
  43459. switch (BuiltinName[22]) {
  43460. default: break;
  43461. case 'd': // 1 string to match.
  43462. if (memcmp(BuiltinName.data()+23, "256", 3))
  43463. break;
  43464. return Intrinsic::x86_avx_vtestz_pd_256; // "__builtin_ia32_vtestzpd256"
  43465. case 's': // 1 string to match.
  43466. if (memcmp(BuiltinName.data()+23, "256", 3))
  43467. break;
  43468. return Intrinsic::x86_avx_vtestz_ps_256; // "__builtin_ia32_vtestzps256"
  43469. }
  43470. break;
  43471. }
  43472. break;
  43473. }
  43474. break;
  43475. }
  43476. break;
  43477. case 27: // 29 strings to match.
  43478. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  43479. break;
  43480. switch (BuiltinName[15]) {
  43481. default: break;
  43482. case 'c': // 2 strings to match.
  43483. if (memcmp(BuiltinName.data()+16, "vttp", 4))
  43484. break;
  43485. switch (BuiltinName[20]) {
  43486. default: break;
  43487. case 'd': // 1 string to match.
  43488. if (memcmp(BuiltinName.data()+21, "2dq256", 6))
  43489. break;
  43490. return Intrinsic::x86_avx_cvtt_pd2dq_256; // "__builtin_ia32_cvttpd2dq256"
  43491. case 's': // 1 string to match.
  43492. if (memcmp(BuiltinName.data()+21, "2dq256", 6))
  43493. break;
  43494. return Intrinsic::x86_avx_cvtt_ps2dq_256; // "__builtin_ia32_cvttps2dq256"
  43495. }
  43496. break;
  43497. case 'e': // 1 string to match.
  43498. if (memcmp(BuiltinName.data()+16, "xtractps128", 11))
  43499. break;
  43500. return Intrinsic::x86_sse41_extractps; // "__builtin_ia32_extractps128"
  43501. case 'g': // 4 strings to match.
  43502. if (memcmp(BuiltinName.data()+16, "ather", 5))
  43503. break;
  43504. switch (BuiltinName[21]) {
  43505. default: break;
  43506. case 'd': // 2 strings to match.
  43507. if (BuiltinName[22] != '_')
  43508. break;
  43509. switch (BuiltinName[23]) {
  43510. default: break;
  43511. case 'd': // 1 string to match.
  43512. if (memcmp(BuiltinName.data()+24, "256", 3))
  43513. break;
  43514. return Intrinsic::x86_avx2_gather_d_d_256; // "__builtin_ia32_gatherd_d256"
  43515. case 'q': // 1 string to match.
  43516. if (memcmp(BuiltinName.data()+24, "256", 3))
  43517. break;
  43518. return Intrinsic::x86_avx2_gather_d_q_256; // "__builtin_ia32_gatherd_q256"
  43519. }
  43520. break;
  43521. case 'q': // 2 strings to match.
  43522. if (BuiltinName[22] != '_')
  43523. break;
  43524. switch (BuiltinName[23]) {
  43525. default: break;
  43526. case 'd': // 1 string to match.
  43527. if (memcmp(BuiltinName.data()+24, "256", 3))
  43528. break;
  43529. return Intrinsic::x86_avx2_gather_q_d_256; // "__builtin_ia32_gatherq_d256"
  43530. case 'q': // 1 string to match.
  43531. if (memcmp(BuiltinName.data()+24, "256", 3))
  43532. break;
  43533. return Intrinsic::x86_avx2_gather_q_q_256; // "__builtin_ia32_gatherq_q256"
  43534. }
  43535. break;
  43536. }
  43537. break;
  43538. case 'm': // 2 strings to match.
  43539. if (memcmp(BuiltinName.data()+16, "askload", 7))
  43540. break;
  43541. switch (BuiltinName[23]) {
  43542. default: break;
  43543. case 'd': // 1 string to match.
  43544. if (memcmp(BuiltinName.data()+24, "256", 3))
  43545. break;
  43546. return Intrinsic::x86_avx2_maskload_d_256; // "__builtin_ia32_maskloadd256"
  43547. case 'q': // 1 string to match.
  43548. if (memcmp(BuiltinName.data()+24, "256", 3))
  43549. break;
  43550. return Intrinsic::x86_avx2_maskload_q_256; // "__builtin_ia32_maskloadq256"
  43551. }
  43552. break;
  43553. case 'p': // 9 strings to match.
  43554. switch (BuiltinName[16]) {
  43555. default: break;
  43556. case 'c': // 5 strings to match.
  43557. switch (BuiltinName[17]) {
  43558. default: break;
  43559. case 'l': // 1 string to match.
  43560. if (memcmp(BuiltinName.data()+18, "mulqdq128", 9))
  43561. break;
  43562. return Intrinsic::x86_pclmulqdq; // "__builtin_ia32_pclmulqdq128"
  43563. case 'm': // 4 strings to match.
  43564. if (BuiltinName[18] != 'p')
  43565. break;
  43566. switch (BuiltinName[19]) {
  43567. default: break;
  43568. case 'e': // 2 strings to match.
  43569. if (memcmp(BuiltinName.data()+20, "str", 3))
  43570. break;
  43571. switch (BuiltinName[23]) {
  43572. default: break;
  43573. case 'i': // 1 string to match.
  43574. if (memcmp(BuiltinName.data()+24, "128", 3))
  43575. break;
  43576. return Intrinsic::x86_sse42_pcmpestri128; // "__builtin_ia32_pcmpestri128"
  43577. case 'm': // 1 string to match.
  43578. if (memcmp(BuiltinName.data()+24, "128", 3))
  43579. break;
  43580. return Intrinsic::x86_sse42_pcmpestrm128; // "__builtin_ia32_pcmpestrm128"
  43581. }
  43582. break;
  43583. case 'i': // 2 strings to match.
  43584. if (memcmp(BuiltinName.data()+20, "str", 3))
  43585. break;
  43586. switch (BuiltinName[23]) {
  43587. default: break;
  43588. case 'i': // 1 string to match.
  43589. if (memcmp(BuiltinName.data()+24, "128", 3))
  43590. break;
  43591. return Intrinsic::x86_sse42_pcmpistri128; // "__builtin_ia32_pcmpistri128"
  43592. case 'm': // 1 string to match.
  43593. if (memcmp(BuiltinName.data()+24, "128", 3))
  43594. break;
  43595. return Intrinsic::x86_sse42_pcmpistrm128; // "__builtin_ia32_pcmpistrm128"
  43596. }
  43597. break;
  43598. }
  43599. break;
  43600. }
  43601. break;
  43602. case 'e': // 2 strings to match.
  43603. if (memcmp(BuiltinName.data()+17, "rmvars", 6))
  43604. break;
  43605. switch (BuiltinName[23]) {
  43606. default: break;
  43607. case 'f': // 1 string to match.
  43608. if (memcmp(BuiltinName.data()+24, "256", 3))
  43609. break;
  43610. return Intrinsic::x86_avx2_permps; // "__builtin_ia32_permvarsf256"
  43611. case 'i': // 1 string to match.
  43612. if (memcmp(BuiltinName.data()+24, "256", 3))
  43613. break;
  43614. return Intrinsic::x86_avx2_permd; // "__builtin_ia32_permvarsi256"
  43615. }
  43616. break;
  43617. case 'm': // 2 strings to match.
  43618. if (memcmp(BuiltinName.data()+17, "addubsw", 7))
  43619. break;
  43620. switch (BuiltinName[24]) {
  43621. default: break;
  43622. case '1': // 1 string to match.
  43623. if (memcmp(BuiltinName.data()+25, "28", 2))
  43624. break;
  43625. return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "__builtin_ia32_pmaddubsw128"
  43626. case '2': // 1 string to match.
  43627. if (memcmp(BuiltinName.data()+25, "56", 2))
  43628. break;
  43629. return Intrinsic::x86_avx2_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw256"
  43630. }
  43631. break;
  43632. }
  43633. break;
  43634. case 'v': // 11 strings to match.
  43635. switch (BuiltinName[16]) {
  43636. default: break;
  43637. case 'b': // 1 string to match.
  43638. if (memcmp(BuiltinName.data()+17, "roadcastss", 10))
  43639. break;
  43640. return Intrinsic::x86_avx_vbroadcast_ss; // "__builtin_ia32_vbroadcastss"
  43641. case 'c': // 2 strings to match.
  43642. if (memcmp(BuiltinName.data()+17, "vtp", 3))
  43643. break;
  43644. switch (BuiltinName[20]) {
  43645. default: break;
  43646. case 'h': // 1 string to match.
  43647. if (memcmp(BuiltinName.data()+21, "2ps256", 6))
  43648. break;
  43649. return Intrinsic::x86_vcvtph2ps_256; // "__builtin_ia32_vcvtph2ps256"
  43650. case 's': // 1 string to match.
  43651. if (memcmp(BuiltinName.data()+21, "2ph256", 6))
  43652. break;
  43653. return Intrinsic::x86_vcvtps2ph_256; // "__builtin_ia32_vcvtps2ph256"
  43654. }
  43655. break;
  43656. case 'e': // 2 strings to match.
  43657. if (memcmp(BuiltinName.data()+17, "c_", 2))
  43658. break;
  43659. switch (BuiltinName[19]) {
  43660. default: break;
  43661. case 'e': // 1 string to match.
  43662. if (memcmp(BuiltinName.data()+20, "xt_v4hi", 7))
  43663. break;
  43664. return Intrinsic::x86_mmx_pextr_w; // "__builtin_ia32_vec_ext_v4hi"
  43665. case 's': // 1 string to match.
  43666. if (memcmp(BuiltinName.data()+20, "et_v4hi", 7))
  43667. break;
  43668. return Intrinsic::x86_mmx_pinsr_w; // "__builtin_ia32_vec_set_v4hi"
  43669. }
  43670. break;
  43671. case 'f': // 4 strings to match.
  43672. if (memcmp(BuiltinName.data()+17, "nm", 2))
  43673. break;
  43674. switch (BuiltinName[19]) {
  43675. default: break;
  43676. case 'a': // 2 strings to match.
  43677. if (memcmp(BuiltinName.data()+20, "ddp", 3))
  43678. break;
  43679. switch (BuiltinName[23]) {
  43680. default: break;
  43681. case 'd': // 1 string to match.
  43682. if (memcmp(BuiltinName.data()+24, "256", 3))
  43683. break;
  43684. return Intrinsic::x86_fma_vfnmadd_pd_256; // "__builtin_ia32_vfnmaddpd256"
  43685. case 's': // 1 string to match.
  43686. if (memcmp(BuiltinName.data()+24, "256", 3))
  43687. break;
  43688. return Intrinsic::x86_fma_vfnmadd_ps_256; // "__builtin_ia32_vfnmaddps256"
  43689. }
  43690. break;
  43691. case 's': // 2 strings to match.
  43692. if (memcmp(BuiltinName.data()+20, "ubp", 3))
  43693. break;
  43694. switch (BuiltinName[23]) {
  43695. default: break;
  43696. case 'd': // 1 string to match.
  43697. if (memcmp(BuiltinName.data()+24, "256", 3))
  43698. break;
  43699. return Intrinsic::x86_fma_vfnmsub_pd_256; // "__builtin_ia32_vfnmsubpd256"
  43700. case 's': // 1 string to match.
  43701. if (memcmp(BuiltinName.data()+24, "256", 3))
  43702. break;
  43703. return Intrinsic::x86_fma_vfnmsub_ps_256; // "__builtin_ia32_vfnmsubps256"
  43704. }
  43705. break;
  43706. }
  43707. break;
  43708. case 'p': // 2 strings to match.
  43709. if (memcmp(BuiltinName.data()+17, "ermilvarp", 9))
  43710. break;
  43711. switch (BuiltinName[26]) {
  43712. default: break;
  43713. case 'd': // 1 string to match.
  43714. return Intrinsic::x86_avx_vpermilvar_pd; // "__builtin_ia32_vpermilvarpd"
  43715. case 's': // 1 string to match.
  43716. return Intrinsic::x86_avx_vpermilvar_ps; // "__builtin_ia32_vpermilvarps"
  43717. }
  43718. break;
  43719. }
  43720. break;
  43721. }
  43722. break;
  43723. case 28: // 24 strings to match.
  43724. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  43725. break;
  43726. switch (BuiltinName[15]) {
  43727. default: break;
  43728. case 'a': // 2 strings to match.
  43729. if (memcmp(BuiltinName.data()+16, "es", 2))
  43730. break;
  43731. switch (BuiltinName[18]) {
  43732. default: break;
  43733. case 'd': // 1 string to match.
  43734. if (memcmp(BuiltinName.data()+19, "eclast128", 9))
  43735. break;
  43736. return Intrinsic::x86_aesni_aesdeclast; // "__builtin_ia32_aesdeclast128"
  43737. case 'e': // 1 string to match.
  43738. if (memcmp(BuiltinName.data()+19, "nclast128", 9))
  43739. break;
  43740. return Intrinsic::x86_aesni_aesenclast; // "__builtin_ia32_aesenclast128"
  43741. }
  43742. break;
  43743. case 'g': // 4 strings to match.
  43744. if (memcmp(BuiltinName.data()+16, "ather", 5))
  43745. break;
  43746. switch (BuiltinName[21]) {
  43747. default: break;
  43748. case 'd': // 2 strings to match.
  43749. if (memcmp(BuiltinName.data()+22, "_p", 2))
  43750. break;
  43751. switch (BuiltinName[24]) {
  43752. default: break;
  43753. case 'd': // 1 string to match.
  43754. if (memcmp(BuiltinName.data()+25, "256", 3))
  43755. break;
  43756. return Intrinsic::x86_avx2_gather_d_pd_256; // "__builtin_ia32_gatherd_pd256"
  43757. case 's': // 1 string to match.
  43758. if (memcmp(BuiltinName.data()+25, "256", 3))
  43759. break;
  43760. return Intrinsic::x86_avx2_gather_d_ps_256; // "__builtin_ia32_gatherd_ps256"
  43761. }
  43762. break;
  43763. case 'q': // 2 strings to match.
  43764. if (memcmp(BuiltinName.data()+22, "_p", 2))
  43765. break;
  43766. switch (BuiltinName[24]) {
  43767. default: break;
  43768. case 'd': // 1 string to match.
  43769. if (memcmp(BuiltinName.data()+25, "256", 3))
  43770. break;
  43771. return Intrinsic::x86_avx2_gather_q_pd_256; // "__builtin_ia32_gatherq_pd256"
  43772. case 's': // 1 string to match.
  43773. if (memcmp(BuiltinName.data()+25, "256", 3))
  43774. break;
  43775. return Intrinsic::x86_avx2_gather_q_ps_256; // "__builtin_ia32_gatherq_ps256"
  43776. }
  43777. break;
  43778. }
  43779. break;
  43780. case 'i': // 1 string to match.
  43781. if (memcmp(BuiltinName.data()+16, "nsert128i256", 12))
  43782. break;
  43783. return Intrinsic::x86_avx2_vinserti128; // "__builtin_ia32_insert128i256"
  43784. case 'm': // 4 strings to match.
  43785. if (memcmp(BuiltinName.data()+16, "ask", 3))
  43786. break;
  43787. switch (BuiltinName[19]) {
  43788. default: break;
  43789. case 'l': // 2 strings to match.
  43790. if (memcmp(BuiltinName.data()+20, "oadp", 4))
  43791. break;
  43792. switch (BuiltinName[24]) {
  43793. default: break;
  43794. case 'd': // 1 string to match.
  43795. if (memcmp(BuiltinName.data()+25, "256", 3))
  43796. break;
  43797. return Intrinsic::x86_avx_maskload_pd_256; // "__builtin_ia32_maskloadpd256"
  43798. case 's': // 1 string to match.
  43799. if (memcmp(BuiltinName.data()+25, "256", 3))
  43800. break;
  43801. return Intrinsic::x86_avx_maskload_ps_256; // "__builtin_ia32_maskloadps256"
  43802. }
  43803. break;
  43804. case 's': // 2 strings to match.
  43805. if (memcmp(BuiltinName.data()+20, "tore", 4))
  43806. break;
  43807. switch (BuiltinName[24]) {
  43808. default: break;
  43809. case 'd': // 1 string to match.
  43810. if (memcmp(BuiltinName.data()+25, "256", 3))
  43811. break;
  43812. return Intrinsic::x86_avx2_maskstore_d_256; // "__builtin_ia32_maskstored256"
  43813. case 'q': // 1 string to match.
  43814. if (memcmp(BuiltinName.data()+25, "256", 3))
  43815. break;
  43816. return Intrinsic::x86_avx2_maskstore_q_256; // "__builtin_ia32_maskstoreq256"
  43817. }
  43818. break;
  43819. }
  43820. break;
  43821. case 'p': // 11 strings to match.
  43822. switch (BuiltinName[16]) {
  43823. default: break;
  43824. case 'c': // 10 strings to match.
  43825. if (memcmp(BuiltinName.data()+17, "mp", 2))
  43826. break;
  43827. switch (BuiltinName[19]) {
  43828. default: break;
  43829. case 'e': // 5 strings to match.
  43830. if (memcmp(BuiltinName.data()+20, "stri", 4))
  43831. break;
  43832. switch (BuiltinName[24]) {
  43833. default: break;
  43834. case 'a': // 1 string to match.
  43835. if (memcmp(BuiltinName.data()+25, "128", 3))
  43836. break;
  43837. return Intrinsic::x86_sse42_pcmpestria128; // "__builtin_ia32_pcmpestria128"
  43838. case 'c': // 1 string to match.
  43839. if (memcmp(BuiltinName.data()+25, "128", 3))
  43840. break;
  43841. return Intrinsic::x86_sse42_pcmpestric128; // "__builtin_ia32_pcmpestric128"
  43842. case 'o': // 1 string to match.
  43843. if (memcmp(BuiltinName.data()+25, "128", 3))
  43844. break;
  43845. return Intrinsic::x86_sse42_pcmpestrio128; // "__builtin_ia32_pcmpestrio128"
  43846. case 's': // 1 string to match.
  43847. if (memcmp(BuiltinName.data()+25, "128", 3))
  43848. break;
  43849. return Intrinsic::x86_sse42_pcmpestris128; // "__builtin_ia32_pcmpestris128"
  43850. case 'z': // 1 string to match.
  43851. if (memcmp(BuiltinName.data()+25, "128", 3))
  43852. break;
  43853. return Intrinsic::x86_sse42_pcmpestriz128; // "__builtin_ia32_pcmpestriz128"
  43854. }
  43855. break;
  43856. case 'i': // 5 strings to match.
  43857. if (memcmp(BuiltinName.data()+20, "stri", 4))
  43858. break;
  43859. switch (BuiltinName[24]) {
  43860. default: break;
  43861. case 'a': // 1 string to match.
  43862. if (memcmp(BuiltinName.data()+25, "128", 3))
  43863. break;
  43864. return Intrinsic::x86_sse42_pcmpistria128; // "__builtin_ia32_pcmpistria128"
  43865. case 'c': // 1 string to match.
  43866. if (memcmp(BuiltinName.data()+25, "128", 3))
  43867. break;
  43868. return Intrinsic::x86_sse42_pcmpistric128; // "__builtin_ia32_pcmpistric128"
  43869. case 'o': // 1 string to match.
  43870. if (memcmp(BuiltinName.data()+25, "128", 3))
  43871. break;
  43872. return Intrinsic::x86_sse42_pcmpistrio128; // "__builtin_ia32_pcmpistrio128"
  43873. case 's': // 1 string to match.
  43874. if (memcmp(BuiltinName.data()+25, "128", 3))
  43875. break;
  43876. return Intrinsic::x86_sse42_pcmpistris128; // "__builtin_ia32_pcmpistris128"
  43877. case 'z': // 1 string to match.
  43878. if (memcmp(BuiltinName.data()+25, "128", 3))
  43879. break;
  43880. return Intrinsic::x86_sse42_pcmpistriz128; // "__builtin_ia32_pcmpistriz128"
  43881. }
  43882. break;
  43883. }
  43884. break;
  43885. case 'h': // 1 string to match.
  43886. if (memcmp(BuiltinName.data()+17, "minposuw128", 11))
  43887. break;
  43888. return Intrinsic::x86_sse41_phminposuw; // "__builtin_ia32_phminposuw128"
  43889. }
  43890. break;
  43891. case 'v': // 2 strings to match.
  43892. if (memcmp(BuiltinName.data()+16, "testnzcp", 8))
  43893. break;
  43894. switch (BuiltinName[24]) {
  43895. default: break;
  43896. case 'd': // 1 string to match.
  43897. if (memcmp(BuiltinName.data()+25, "256", 3))
  43898. break;
  43899. return Intrinsic::x86_avx_vtestnzc_pd_256; // "__builtin_ia32_vtestnzcpd256"
  43900. case 's': // 1 string to match.
  43901. if (memcmp(BuiltinName.data()+25, "256", 3))
  43902. break;
  43903. return Intrinsic::x86_avx_vtestnzc_ps_256; // "__builtin_ia32_vtestnzcps256"
  43904. }
  43905. break;
  43906. }
  43907. break;
  43908. case 29: // 15 strings to match.
  43909. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  43910. break;
  43911. switch (BuiltinName[15]) {
  43912. default: break;
  43913. case 'e': // 1 string to match.
  43914. if (memcmp(BuiltinName.data()+16, "xtract128i256", 13))
  43915. break;
  43916. return Intrinsic::x86_avx2_vextracti128; // "__builtin_ia32_extract128i256"
  43917. case 'm': // 2 strings to match.
  43918. if (memcmp(BuiltinName.data()+16, "askstorep", 9))
  43919. break;
  43920. switch (BuiltinName[25]) {
  43921. default: break;
  43922. case 'd': // 1 string to match.
  43923. if (memcmp(BuiltinName.data()+26, "256", 3))
  43924. break;
  43925. return Intrinsic::x86_avx_maskstore_pd_256; // "__builtin_ia32_maskstorepd256"
  43926. case 's': // 1 string to match.
  43927. if (memcmp(BuiltinName.data()+26, "256", 3))
  43928. break;
  43929. return Intrinsic::x86_avx_maskstore_ps_256; // "__builtin_ia32_maskstoreps256"
  43930. }
  43931. break;
  43932. case 'p': // 8 strings to match.
  43933. if (memcmp(BuiltinName.data()+16, "broadcast", 9))
  43934. break;
  43935. switch (BuiltinName[25]) {
  43936. default: break;
  43937. case 'b': // 2 strings to match.
  43938. switch (BuiltinName[26]) {
  43939. default: break;
  43940. case '1': // 1 string to match.
  43941. if (memcmp(BuiltinName.data()+27, "28", 2))
  43942. break;
  43943. return Intrinsic::x86_avx2_pbroadcastb_128; // "__builtin_ia32_pbroadcastb128"
  43944. case '2': // 1 string to match.
  43945. if (memcmp(BuiltinName.data()+27, "56", 2))
  43946. break;
  43947. return Intrinsic::x86_avx2_pbroadcastb_256; // "__builtin_ia32_pbroadcastb256"
  43948. }
  43949. break;
  43950. case 'd': // 2 strings to match.
  43951. switch (BuiltinName[26]) {
  43952. default: break;
  43953. case '1': // 1 string to match.
  43954. if (memcmp(BuiltinName.data()+27, "28", 2))
  43955. break;
  43956. return Intrinsic::x86_avx2_pbroadcastd_128; // "__builtin_ia32_pbroadcastd128"
  43957. case '2': // 1 string to match.
  43958. if (memcmp(BuiltinName.data()+27, "56", 2))
  43959. break;
  43960. return Intrinsic::x86_avx2_pbroadcastd_256; // "__builtin_ia32_pbroadcastd256"
  43961. }
  43962. break;
  43963. case 'q': // 2 strings to match.
  43964. switch (BuiltinName[26]) {
  43965. default: break;
  43966. case '1': // 1 string to match.
  43967. if (memcmp(BuiltinName.data()+27, "28", 2))
  43968. break;
  43969. return Intrinsic::x86_avx2_pbroadcastq_128; // "__builtin_ia32_pbroadcastq128"
  43970. case '2': // 1 string to match.
  43971. if (memcmp(BuiltinName.data()+27, "56", 2))
  43972. break;
  43973. return Intrinsic::x86_avx2_pbroadcastq_256; // "__builtin_ia32_pbroadcastq256"
  43974. }
  43975. break;
  43976. case 'w': // 2 strings to match.
  43977. switch (BuiltinName[26]) {
  43978. default: break;
  43979. case '1': // 1 string to match.
  43980. if (memcmp(BuiltinName.data()+27, "28", 2))
  43981. break;
  43982. return Intrinsic::x86_avx2_pbroadcastw_128; // "__builtin_ia32_pbroadcastw128"
  43983. case '2': // 1 string to match.
  43984. if (memcmp(BuiltinName.data()+27, "56", 2))
  43985. break;
  43986. return Intrinsic::x86_avx2_pbroadcastw_256; // "__builtin_ia32_pbroadcastw256"
  43987. }
  43988. break;
  43989. }
  43990. break;
  43991. case 'v': // 4 strings to match.
  43992. if (memcmp(BuiltinName.data()+16, "fm", 2))
  43993. break;
  43994. switch (BuiltinName[18]) {
  43995. default: break;
  43996. case 'a': // 2 strings to match.
  43997. if (memcmp(BuiltinName.data()+19, "ddsubp", 6))
  43998. break;
  43999. switch (BuiltinName[25]) {
  44000. default: break;
  44001. case 'd': // 1 string to match.
  44002. if (memcmp(BuiltinName.data()+26, "256", 3))
  44003. break;
  44004. return Intrinsic::x86_fma_vfmaddsub_pd_256; // "__builtin_ia32_vfmaddsubpd256"
  44005. case 's': // 1 string to match.
  44006. if (memcmp(BuiltinName.data()+26, "256", 3))
  44007. break;
  44008. return Intrinsic::x86_fma_vfmaddsub_ps_256; // "__builtin_ia32_vfmaddsubps256"
  44009. }
  44010. break;
  44011. case 's': // 2 strings to match.
  44012. if (memcmp(BuiltinName.data()+19, "ubaddp", 6))
  44013. break;
  44014. switch (BuiltinName[25]) {
  44015. default: break;
  44016. case 'd': // 1 string to match.
  44017. if (memcmp(BuiltinName.data()+26, "256", 3))
  44018. break;
  44019. return Intrinsic::x86_fma_vfmsubadd_pd_256; // "__builtin_ia32_vfmsubaddpd256"
  44020. case 's': // 1 string to match.
  44021. if (memcmp(BuiltinName.data()+26, "256", 3))
  44022. break;
  44023. return Intrinsic::x86_fma_vfmsubadd_ps_256; // "__builtin_ia32_vfmsubaddps256"
  44024. }
  44025. break;
  44026. }
  44027. break;
  44028. }
  44029. break;
  44030. case 30: // 6 strings to match.
  44031. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_v", 16))
  44032. break;
  44033. switch (BuiltinName[16]) {
  44034. default: break;
  44035. case 'b': // 4 strings to match.
  44036. if (memcmp(BuiltinName.data()+17, "roadcasts", 9))
  44037. break;
  44038. switch (BuiltinName[26]) {
  44039. default: break;
  44040. case 'd': // 1 string to match.
  44041. if (memcmp(BuiltinName.data()+27, "256", 3))
  44042. break;
  44043. return Intrinsic::x86_avx_vbroadcast_sd_256; // "__builtin_ia32_vbroadcastsd256"
  44044. case 'i': // 1 string to match.
  44045. if (memcmp(BuiltinName.data()+27, "256", 3))
  44046. break;
  44047. return Intrinsic::x86_avx2_vbroadcasti128; // "__builtin_ia32_vbroadcastsi256"
  44048. case 's': // 2 strings to match.
  44049. switch (BuiltinName[27]) {
  44050. default: break;
  44051. case '2': // 1 string to match.
  44052. if (memcmp(BuiltinName.data()+28, "56", 2))
  44053. break;
  44054. return Intrinsic::x86_avx_vbroadcast_ss_256; // "__builtin_ia32_vbroadcastss256"
  44055. case '_': // 1 string to match.
  44056. if (memcmp(BuiltinName.data()+28, "ps", 2))
  44057. break;
  44058. return Intrinsic::x86_avx2_vbroadcast_ss_ps; // "__builtin_ia32_vbroadcastss_ps"
  44059. }
  44060. break;
  44061. }
  44062. break;
  44063. case 'p': // 2 strings to match.
  44064. if (memcmp(BuiltinName.data()+17, "ermilvarp", 9))
  44065. break;
  44066. switch (BuiltinName[26]) {
  44067. default: break;
  44068. case 'd': // 1 string to match.
  44069. if (memcmp(BuiltinName.data()+27, "256", 3))
  44070. break;
  44071. return Intrinsic::x86_avx_vpermilvar_pd_256; // "__builtin_ia32_vpermilvarpd256"
  44072. case 's': // 1 string to match.
  44073. if (memcmp(BuiltinName.data()+27, "256", 3))
  44074. break;
  44075. return Intrinsic::x86_avx_vpermilvar_ps_256; // "__builtin_ia32_vpermilvarps256"
  44076. }
  44077. break;
  44078. }
  44079. break;
  44080. case 31: // 3 strings to match.
  44081. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_vperm2f128_", 26))
  44082. break;
  44083. switch (BuiltinName[26]) {
  44084. default: break;
  44085. case 'p': // 2 strings to match.
  44086. switch (BuiltinName[27]) {
  44087. default: break;
  44088. case 'd': // 1 string to match.
  44089. if (memcmp(BuiltinName.data()+28, "256", 3))
  44090. break;
  44091. return Intrinsic::x86_avx_vperm2f128_pd_256; // "__builtin_ia32_vperm2f128_pd256"
  44092. case 's': // 1 string to match.
  44093. if (memcmp(BuiltinName.data()+28, "256", 3))
  44094. break;
  44095. return Intrinsic::x86_avx_vperm2f128_ps_256; // "__builtin_ia32_vperm2f128_ps256"
  44096. }
  44097. break;
  44098. case 's': // 1 string to match.
  44099. if (memcmp(BuiltinName.data()+27, "i256", 4))
  44100. break;
  44101. return Intrinsic::x86_avx_vperm2f128_si_256; // "__builtin_ia32_vperm2f128_si256"
  44102. }
  44103. break;
  44104. case 32: // 3 strings to match.
  44105. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_vinsertf128_", 27))
  44106. break;
  44107. switch (BuiltinName[27]) {
  44108. default: break;
  44109. case 'p': // 2 strings to match.
  44110. switch (BuiltinName[28]) {
  44111. default: break;
  44112. case 'd': // 1 string to match.
  44113. if (memcmp(BuiltinName.data()+29, "256", 3))
  44114. break;
  44115. return Intrinsic::x86_avx_vinsertf128_pd_256; // "__builtin_ia32_vinsertf128_pd256"
  44116. case 's': // 1 string to match.
  44117. if (memcmp(BuiltinName.data()+29, "256", 3))
  44118. break;
  44119. return Intrinsic::x86_avx_vinsertf128_ps_256; // "__builtin_ia32_vinsertf128_ps256"
  44120. }
  44121. break;
  44122. case 's': // 1 string to match.
  44123. if (memcmp(BuiltinName.data()+28, "i256", 4))
  44124. break;
  44125. return Intrinsic::x86_avx_vinsertf128_si_256; // "__builtin_ia32_vinsertf128_si256"
  44126. }
  44127. break;
  44128. case 33: // 6 strings to match.
  44129. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  44130. break;
  44131. switch (BuiltinName[15]) {
  44132. default: break;
  44133. case 'a': // 1 string to match.
  44134. if (memcmp(BuiltinName.data()+16, "eskeygenassist128", 17))
  44135. break;
  44136. return Intrinsic::x86_aesni_aeskeygenassist; // "__builtin_ia32_aeskeygenassist128"
  44137. case 'v': // 5 strings to match.
  44138. switch (BuiltinName[16]) {
  44139. default: break;
  44140. case 'b': // 2 strings to match.
  44141. if (memcmp(BuiltinName.data()+17, "roadcasts", 9))
  44142. break;
  44143. switch (BuiltinName[26]) {
  44144. default: break;
  44145. case 'd': // 1 string to match.
  44146. if (memcmp(BuiltinName.data()+27, "_pd256", 6))
  44147. break;
  44148. return Intrinsic::x86_avx2_vbroadcast_sd_pd_256; // "__builtin_ia32_vbroadcastsd_pd256"
  44149. case 's': // 1 string to match.
  44150. if (memcmp(BuiltinName.data()+27, "_ps256", 6))
  44151. break;
  44152. return Intrinsic::x86_avx2_vbroadcast_ss_ps_256; // "__builtin_ia32_vbroadcastss_ps256"
  44153. }
  44154. break;
  44155. case 'e': // 3 strings to match.
  44156. if (memcmp(BuiltinName.data()+17, "xtractf128_", 11))
  44157. break;
  44158. switch (BuiltinName[28]) {
  44159. default: break;
  44160. case 'p': // 2 strings to match.
  44161. switch (BuiltinName[29]) {
  44162. default: break;
  44163. case 'd': // 1 string to match.
  44164. if (memcmp(BuiltinName.data()+30, "256", 3))
  44165. break;
  44166. return Intrinsic::x86_avx_vextractf128_pd_256; // "__builtin_ia32_vextractf128_pd256"
  44167. case 's': // 1 string to match.
  44168. if (memcmp(BuiltinName.data()+30, "256", 3))
  44169. break;
  44170. return Intrinsic::x86_avx_vextractf128_ps_256; // "__builtin_ia32_vextractf128_ps256"
  44171. }
  44172. break;
  44173. case 's': // 1 string to match.
  44174. if (memcmp(BuiltinName.data()+29, "i256", 4))
  44175. break;
  44176. return Intrinsic::x86_avx_vextractf128_si_256; // "__builtin_ia32_vextractf128_si256"
  44177. }
  44178. break;
  44179. }
  44180. break;
  44181. }
  44182. break;
  44183. case 35: // 6 strings to match.
  44184. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  44185. break;
  44186. switch (BuiltinName[15]) {
  44187. default: break;
  44188. case 'p': // 4 strings to match.
  44189. if (BuiltinName[16] != 's')
  44190. break;
  44191. switch (BuiltinName[17]) {
  44192. default: break;
  44193. case 'l': // 2 strings to match.
  44194. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  44195. break;
  44196. switch (BuiltinName[22]) {
  44197. default: break;
  44198. case '1': // 1 string to match.
  44199. if (memcmp(BuiltinName.data()+23, "28_byteshift", 12))
  44200. break;
  44201. return Intrinsic::x86_sse2_psll_dq_bs; // "__builtin_ia32_pslldqi128_byteshift"
  44202. case '2': // 1 string to match.
  44203. if (memcmp(BuiltinName.data()+23, "56_byteshift", 12))
  44204. break;
  44205. return Intrinsic::x86_avx2_psll_dq_bs; // "__builtin_ia32_pslldqi256_byteshift"
  44206. }
  44207. break;
  44208. case 'r': // 2 strings to match.
  44209. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  44210. break;
  44211. switch (BuiltinName[22]) {
  44212. default: break;
  44213. case '1': // 1 string to match.
  44214. if (memcmp(BuiltinName.data()+23, "28_byteshift", 12))
  44215. break;
  44216. return Intrinsic::x86_sse2_psrl_dq_bs; // "__builtin_ia32_psrldqi128_byteshift"
  44217. case '2': // 1 string to match.
  44218. if (memcmp(BuiltinName.data()+23, "56_byteshift", 12))
  44219. break;
  44220. return Intrinsic::x86_avx2_psrl_dq_bs; // "__builtin_ia32_psrldqi256_byteshift"
  44221. }
  44222. break;
  44223. }
  44224. break;
  44225. case 'v': // 2 strings to match.
  44226. if (memcmp(BuiltinName.data()+16, "broadcastf128_p", 15))
  44227. break;
  44228. switch (BuiltinName[31]) {
  44229. default: break;
  44230. case 'd': // 1 string to match.
  44231. if (memcmp(BuiltinName.data()+32, "256", 3))
  44232. break;
  44233. return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "__builtin_ia32_vbroadcastf128_pd256"
  44234. case 's': // 1 string to match.
  44235. if (memcmp(BuiltinName.data()+32, "256", 3))
  44236. break;
  44237. return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "__builtin_ia32_vbroadcastf128_ps256"
  44238. }
  44239. break;
  44240. }
  44241. break;
  44242. }
  44243. }
  44244. return Intrinsic::not_intrinsic;
  44245. }
  44246. #endif
  44247. #if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc)
  44248. // let's return it to _setjmp state
  44249. # pragma pop_macro("setjmp")
  44250. # undef setjmp_undefined_for_msvc
  44251. #endif