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.

43301 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. ceil, // llvm.ceil
  144. convert_from_fp16, // llvm.convert.from.fp16
  145. convert_to_fp16, // llvm.convert.to.fp16
  146. convertff, // llvm.convertff
  147. convertfsi, // llvm.convertfsi
  148. convertfui, // llvm.convertfui
  149. convertsif, // llvm.convertsif
  150. convertss, // llvm.convertss
  151. convertsu, // llvm.convertsu
  152. convertuif, // llvm.convertuif
  153. convertus, // llvm.convertus
  154. convertuu, // llvm.convertuu
  155. cos, // llvm.cos
  156. ctlz, // llvm.ctlz
  157. ctpop, // llvm.ctpop
  158. cttz, // llvm.cttz
  159. cuda_syncthreads, // llvm.cuda.syncthreads
  160. dbg_declare, // llvm.dbg.declare
  161. dbg_value, // llvm.dbg.value
  162. debugtrap, // llvm.debugtrap
  163. donothing, // llvm.donothing
  164. eh_dwarf_cfa, // llvm.eh.dwarf.cfa
  165. eh_return_i32, // llvm.eh.return.i32
  166. eh_return_i64, // llvm.eh.return.i64
  167. eh_sjlj_callsite, // llvm.eh.sjlj.callsite
  168. eh_sjlj_functioncontext, // llvm.eh.sjlj.functioncontext
  169. eh_sjlj_longjmp, // llvm.eh.sjlj.longjmp
  170. eh_sjlj_lsda, // llvm.eh.sjlj.lsda
  171. eh_sjlj_setjmp, // llvm.eh.sjlj.setjmp
  172. eh_typeid_for, // llvm.eh.typeid.for
  173. eh_unwind_init, // llvm.eh.unwind.init
  174. exp, // llvm.exp
  175. exp2, // llvm.exp2
  176. expect, // llvm.expect
  177. fabs, // llvm.fabs
  178. floor, // llvm.floor
  179. flt_rounds, // llvm.flt.rounds
  180. fma, // llvm.fma
  181. fmuladd, // llvm.fmuladd
  182. frameaddress, // llvm.frameaddress
  183. gcread, // llvm.gcread
  184. gcroot, // llvm.gcroot
  185. gcwrite, // llvm.gcwrite
  186. hexagon_A2_abs, // llvm.hexagon.A2.abs
  187. hexagon_A2_absp, // llvm.hexagon.A2.absp
  188. hexagon_A2_abssat, // llvm.hexagon.A2.abssat
  189. hexagon_A2_add, // llvm.hexagon.A2.add
  190. hexagon_A2_addh_h16_hh, // llvm.hexagon.A2.addh.h16.hh
  191. hexagon_A2_addh_h16_hl, // llvm.hexagon.A2.addh.h16.hl
  192. hexagon_A2_addh_h16_lh, // llvm.hexagon.A2.addh.h16.lh
  193. hexagon_A2_addh_h16_ll, // llvm.hexagon.A2.addh.h16.ll
  194. hexagon_A2_addh_h16_sat_hh, // llvm.hexagon.A2.addh.h16.sat.hh
  195. hexagon_A2_addh_h16_sat_hl, // llvm.hexagon.A2.addh.h16.sat.hl
  196. hexagon_A2_addh_h16_sat_lh, // llvm.hexagon.A2.addh.h16.sat.lh
  197. hexagon_A2_addh_h16_sat_ll, // llvm.hexagon.A2.addh.h16.sat.ll
  198. hexagon_A2_addh_l16_hl, // llvm.hexagon.A2.addh.l16.hl
  199. hexagon_A2_addh_l16_ll, // llvm.hexagon.A2.addh.l16.ll
  200. hexagon_A2_addh_l16_sat_hl, // llvm.hexagon.A2.addh.l16.sat.hl
  201. hexagon_A2_addh_l16_sat_ll, // llvm.hexagon.A2.addh.l16.sat.ll
  202. hexagon_A2_addi, // llvm.hexagon.A2.addi
  203. hexagon_A2_addp, // llvm.hexagon.A2.addp
  204. hexagon_A2_addpsat, // llvm.hexagon.A2.addpsat
  205. hexagon_A2_addsat, // llvm.hexagon.A2.addsat
  206. hexagon_A2_addsp, // llvm.hexagon.A2.addsp
  207. hexagon_A2_and, // llvm.hexagon.A2.and
  208. hexagon_A2_andir, // llvm.hexagon.A2.andir
  209. hexagon_A2_andp, // llvm.hexagon.A2.andp
  210. hexagon_A2_aslh, // llvm.hexagon.A2.aslh
  211. hexagon_A2_asrh, // llvm.hexagon.A2.asrh
  212. hexagon_A2_combine_hh, // llvm.hexagon.A2.combine.hh
  213. hexagon_A2_combine_hl, // llvm.hexagon.A2.combine.hl
  214. hexagon_A2_combine_lh, // llvm.hexagon.A2.combine.lh
  215. hexagon_A2_combine_ll, // llvm.hexagon.A2.combine.ll
  216. hexagon_A2_combineii, // llvm.hexagon.A2.combineii
  217. hexagon_A2_combinew, // llvm.hexagon.A2.combinew
  218. hexagon_A2_max, // llvm.hexagon.A2.max
  219. hexagon_A2_maxp, // llvm.hexagon.A2.maxp
  220. hexagon_A2_maxu, // llvm.hexagon.A2.maxu
  221. hexagon_A2_maxup, // llvm.hexagon.A2.maxup
  222. hexagon_A2_min, // llvm.hexagon.A2.min
  223. hexagon_A2_minp, // llvm.hexagon.A2.minp
  224. hexagon_A2_minu, // llvm.hexagon.A2.minu
  225. hexagon_A2_minup, // llvm.hexagon.A2.minup
  226. hexagon_A2_neg, // llvm.hexagon.A2.neg
  227. hexagon_A2_negp, // llvm.hexagon.A2.negp
  228. hexagon_A2_negsat, // llvm.hexagon.A2.negsat
  229. hexagon_A2_not, // llvm.hexagon.A2.not
  230. hexagon_A2_notp, // llvm.hexagon.A2.notp
  231. hexagon_A2_or, // llvm.hexagon.A2.or
  232. hexagon_A2_orir, // llvm.hexagon.A2.orir
  233. hexagon_A2_orp, // llvm.hexagon.A2.orp
  234. hexagon_A2_roundsat, // llvm.hexagon.A2.roundsat
  235. hexagon_A2_sat, // llvm.hexagon.A2.sat
  236. hexagon_A2_satb, // llvm.hexagon.A2.satb
  237. hexagon_A2_sath, // llvm.hexagon.A2.sath
  238. hexagon_A2_satub, // llvm.hexagon.A2.satub
  239. hexagon_A2_satuh, // llvm.hexagon.A2.satuh
  240. hexagon_A2_sub, // llvm.hexagon.A2.sub
  241. hexagon_A2_subh_h16_hh, // llvm.hexagon.A2.subh.h16.hh
  242. hexagon_A2_subh_h16_hl, // llvm.hexagon.A2.subh.h16.hl
  243. hexagon_A2_subh_h16_lh, // llvm.hexagon.A2.subh.h16.lh
  244. hexagon_A2_subh_h16_ll, // llvm.hexagon.A2.subh.h16.ll
  245. hexagon_A2_subh_h16_sat_hh, // llvm.hexagon.A2.subh.h16.sat.hh
  246. hexagon_A2_subh_h16_sat_hl, // llvm.hexagon.A2.subh.h16.sat.hl
  247. hexagon_A2_subh_h16_sat_lh, // llvm.hexagon.A2.subh.h16.sat.lh
  248. hexagon_A2_subh_h16_sat_ll, // llvm.hexagon.A2.subh.h16.sat.ll
  249. hexagon_A2_subh_l16_hl, // llvm.hexagon.A2.subh.l16.hl
  250. hexagon_A2_subh_l16_ll, // llvm.hexagon.A2.subh.l16.ll
  251. hexagon_A2_subh_l16_sat_hl, // llvm.hexagon.A2.subh.l16.sat.hl
  252. hexagon_A2_subh_l16_sat_ll, // llvm.hexagon.A2.subh.l16.sat.ll
  253. hexagon_A2_subp, // llvm.hexagon.A2.subp
  254. hexagon_A2_subri, // llvm.hexagon.A2.subri
  255. hexagon_A2_subsat, // llvm.hexagon.A2.subsat
  256. hexagon_A2_svaddh, // llvm.hexagon.A2.svaddh
  257. hexagon_A2_svaddhs, // llvm.hexagon.A2.svaddhs
  258. hexagon_A2_svadduhs, // llvm.hexagon.A2.svadduhs
  259. hexagon_A2_svavgh, // llvm.hexagon.A2.svavgh
  260. hexagon_A2_svavghs, // llvm.hexagon.A2.svavghs
  261. hexagon_A2_svnavgh, // llvm.hexagon.A2.svnavgh
  262. hexagon_A2_svsubh, // llvm.hexagon.A2.svsubh
  263. hexagon_A2_svsubhs, // llvm.hexagon.A2.svsubhs
  264. hexagon_A2_svsubuhs, // llvm.hexagon.A2.svsubuhs
  265. hexagon_A2_swiz, // llvm.hexagon.A2.swiz
  266. hexagon_A2_sxtb, // llvm.hexagon.A2.sxtb
  267. hexagon_A2_sxth, // llvm.hexagon.A2.sxth
  268. hexagon_A2_sxtw, // llvm.hexagon.A2.sxtw
  269. hexagon_A2_tfr, // llvm.hexagon.A2.tfr
  270. hexagon_A2_tfrih, // llvm.hexagon.A2.tfrih
  271. hexagon_A2_tfril, // llvm.hexagon.A2.tfril
  272. hexagon_A2_tfrp, // llvm.hexagon.A2.tfrp
  273. hexagon_A2_tfrpi, // llvm.hexagon.A2.tfrpi
  274. hexagon_A2_tfrsi, // llvm.hexagon.A2.tfrsi
  275. hexagon_A2_vabsh, // llvm.hexagon.A2.vabsh
  276. hexagon_A2_vabshsat, // llvm.hexagon.A2.vabshsat
  277. hexagon_A2_vabsw, // llvm.hexagon.A2.vabsw
  278. hexagon_A2_vabswsat, // llvm.hexagon.A2.vabswsat
  279. hexagon_A2_vaddb_map, // llvm.hexagon.A2.vaddb.map
  280. hexagon_A2_vaddh, // llvm.hexagon.A2.vaddh
  281. hexagon_A2_vaddhs, // llvm.hexagon.A2.vaddhs
  282. hexagon_A2_vaddub, // llvm.hexagon.A2.vaddub
  283. hexagon_A2_vaddubs, // llvm.hexagon.A2.vaddubs
  284. hexagon_A2_vadduhs, // llvm.hexagon.A2.vadduhs
  285. hexagon_A2_vaddw, // llvm.hexagon.A2.vaddw
  286. hexagon_A2_vaddws, // llvm.hexagon.A2.vaddws
  287. hexagon_A2_vavgh, // llvm.hexagon.A2.vavgh
  288. hexagon_A2_vavghcr, // llvm.hexagon.A2.vavghcr
  289. hexagon_A2_vavghr, // llvm.hexagon.A2.vavghr
  290. hexagon_A2_vavgub, // llvm.hexagon.A2.vavgub
  291. hexagon_A2_vavgubr, // llvm.hexagon.A2.vavgubr
  292. hexagon_A2_vavguh, // llvm.hexagon.A2.vavguh
  293. hexagon_A2_vavguhr, // llvm.hexagon.A2.vavguhr
  294. hexagon_A2_vavguw, // llvm.hexagon.A2.vavguw
  295. hexagon_A2_vavguwr, // llvm.hexagon.A2.vavguwr
  296. hexagon_A2_vavgw, // llvm.hexagon.A2.vavgw
  297. hexagon_A2_vavgwcr, // llvm.hexagon.A2.vavgwcr
  298. hexagon_A2_vavgwr, // llvm.hexagon.A2.vavgwr
  299. hexagon_A2_vcmpbeq, // llvm.hexagon.A2.vcmpbeq
  300. hexagon_A2_vcmpbgtu, // llvm.hexagon.A2.vcmpbgtu
  301. hexagon_A2_vcmpheq, // llvm.hexagon.A2.vcmpheq
  302. hexagon_A2_vcmphgt, // llvm.hexagon.A2.vcmphgt
  303. hexagon_A2_vcmphgtu, // llvm.hexagon.A2.vcmphgtu
  304. hexagon_A2_vcmpweq, // llvm.hexagon.A2.vcmpweq
  305. hexagon_A2_vcmpwgt, // llvm.hexagon.A2.vcmpwgt
  306. hexagon_A2_vcmpwgtu, // llvm.hexagon.A2.vcmpwgtu
  307. hexagon_A2_vconj, // llvm.hexagon.A2.vconj
  308. hexagon_A2_vmaxb, // llvm.hexagon.A2.vmaxb
  309. hexagon_A2_vmaxh, // llvm.hexagon.A2.vmaxh
  310. hexagon_A2_vmaxub, // llvm.hexagon.A2.vmaxub
  311. hexagon_A2_vmaxuh, // llvm.hexagon.A2.vmaxuh
  312. hexagon_A2_vmaxuw, // llvm.hexagon.A2.vmaxuw
  313. hexagon_A2_vmaxw, // llvm.hexagon.A2.vmaxw
  314. hexagon_A2_vminb, // llvm.hexagon.A2.vminb
  315. hexagon_A2_vminh, // llvm.hexagon.A2.vminh
  316. hexagon_A2_vminub, // llvm.hexagon.A2.vminub
  317. hexagon_A2_vminuh, // llvm.hexagon.A2.vminuh
  318. hexagon_A2_vminuw, // llvm.hexagon.A2.vminuw
  319. hexagon_A2_vminw, // llvm.hexagon.A2.vminw
  320. hexagon_A2_vnavgh, // llvm.hexagon.A2.vnavgh
  321. hexagon_A2_vnavghcr, // llvm.hexagon.A2.vnavghcr
  322. hexagon_A2_vnavghr, // llvm.hexagon.A2.vnavghr
  323. hexagon_A2_vnavgw, // llvm.hexagon.A2.vnavgw
  324. hexagon_A2_vnavgwcr, // llvm.hexagon.A2.vnavgwcr
  325. hexagon_A2_vnavgwr, // llvm.hexagon.A2.vnavgwr
  326. hexagon_A2_vraddub, // llvm.hexagon.A2.vraddub
  327. hexagon_A2_vraddub_acc, // llvm.hexagon.A2.vraddub.acc
  328. hexagon_A2_vrsadub, // llvm.hexagon.A2.vrsadub
  329. hexagon_A2_vrsadub_acc, // llvm.hexagon.A2.vrsadub.acc
  330. hexagon_A2_vsubb_map, // llvm.hexagon.A2.vsubb.map
  331. hexagon_A2_vsubh, // llvm.hexagon.A2.vsubh
  332. hexagon_A2_vsubhs, // llvm.hexagon.A2.vsubhs
  333. hexagon_A2_vsubub, // llvm.hexagon.A2.vsubub
  334. hexagon_A2_vsububs, // llvm.hexagon.A2.vsububs
  335. hexagon_A2_vsubuhs, // llvm.hexagon.A2.vsubuhs
  336. hexagon_A2_vsubw, // llvm.hexagon.A2.vsubw
  337. hexagon_A2_vsubws, // llvm.hexagon.A2.vsubws
  338. hexagon_A2_xor, // llvm.hexagon.A2.xor
  339. hexagon_A2_xorp, // llvm.hexagon.A2.xorp
  340. hexagon_A2_zxtb, // llvm.hexagon.A2.zxtb
  341. hexagon_A2_zxth, // llvm.hexagon.A2.zxth
  342. hexagon_A4_andn, // llvm.hexagon.A4.andn
  343. hexagon_A4_andnp, // llvm.hexagon.A4.andnp
  344. hexagon_A4_bitsplit, // llvm.hexagon.A4.bitsplit
  345. hexagon_A4_bitspliti, // llvm.hexagon.A4.bitspliti
  346. hexagon_A4_boundscheck, // llvm.hexagon.A4.boundscheck
  347. hexagon_A4_cmpbeq, // llvm.hexagon.A4.cmpbeq
  348. hexagon_A4_cmpbeqi, // llvm.hexagon.A4.cmpbeqi
  349. hexagon_A4_cmpbgt, // llvm.hexagon.A4.cmpbgt
  350. hexagon_A4_cmpbgti, // llvm.hexagon.A4.cmpbgti
  351. hexagon_A4_cmpbgtu, // llvm.hexagon.A4.cmpbgtu
  352. hexagon_A4_cmpbgtui, // llvm.hexagon.A4.cmpbgtui
  353. hexagon_A4_cmpheq, // llvm.hexagon.A4.cmpheq
  354. hexagon_A4_cmpheqi, // llvm.hexagon.A4.cmpheqi
  355. hexagon_A4_cmphgt, // llvm.hexagon.A4.cmphgt
  356. hexagon_A4_cmphgti, // llvm.hexagon.A4.cmphgti
  357. hexagon_A4_cmphgtu, // llvm.hexagon.A4.cmphgtu
  358. hexagon_A4_cmphgtui, // llvm.hexagon.A4.cmphgtui
  359. hexagon_A4_combineir, // llvm.hexagon.A4.combineir
  360. hexagon_A4_combineri, // llvm.hexagon.A4.combineri
  361. hexagon_A4_cround_ri, // llvm.hexagon.A4.cround.ri
  362. hexagon_A4_cround_rr, // llvm.hexagon.A4.cround.rr
  363. hexagon_A4_modwrapu, // llvm.hexagon.A4.modwrapu
  364. hexagon_A4_orn, // llvm.hexagon.A4.orn
  365. hexagon_A4_ornp, // llvm.hexagon.A4.ornp
  366. hexagon_A4_rcmpeq, // llvm.hexagon.A4.rcmpeq
  367. hexagon_A4_rcmpeqi, // llvm.hexagon.A4.rcmpeqi
  368. hexagon_A4_rcmpneq, // llvm.hexagon.A4.rcmpneq
  369. hexagon_A4_rcmpneqi, // llvm.hexagon.A4.rcmpneqi
  370. hexagon_A4_round_ri, // llvm.hexagon.A4.round.ri
  371. hexagon_A4_round_ri_sat, // llvm.hexagon.A4.round.ri.sat
  372. hexagon_A4_round_rr, // llvm.hexagon.A4.round.rr
  373. hexagon_A4_round_rr_sat, // llvm.hexagon.A4.round.rr.sat
  374. hexagon_A4_tlbmatch, // llvm.hexagon.A4.tlbmatch
  375. hexagon_A4_vcmpbeq_any, // llvm.hexagon.A4.vcmpbeq.any
  376. hexagon_A4_vcmpbeqi, // llvm.hexagon.A4.vcmpbeqi
  377. hexagon_A4_vcmpbgt, // llvm.hexagon.A4.vcmpbgt
  378. hexagon_A4_vcmpbgti, // llvm.hexagon.A4.vcmpbgti
  379. hexagon_A4_vcmpbgtui, // llvm.hexagon.A4.vcmpbgtui
  380. hexagon_A4_vcmpheqi, // llvm.hexagon.A4.vcmpheqi
  381. hexagon_A4_vcmphgti, // llvm.hexagon.A4.vcmphgti
  382. hexagon_A4_vcmphgtui, // llvm.hexagon.A4.vcmphgtui
  383. hexagon_A4_vcmpweqi, // llvm.hexagon.A4.vcmpweqi
  384. hexagon_A4_vcmpwgti, // llvm.hexagon.A4.vcmpwgti
  385. hexagon_A4_vcmpwgtui, // llvm.hexagon.A4.vcmpwgtui
  386. hexagon_A4_vrmaxh, // llvm.hexagon.A4.vrmaxh
  387. hexagon_A4_vrmaxuh, // llvm.hexagon.A4.vrmaxuh
  388. hexagon_A4_vrmaxuw, // llvm.hexagon.A4.vrmaxuw
  389. hexagon_A4_vrmaxw, // llvm.hexagon.A4.vrmaxw
  390. hexagon_A4_vrminh, // llvm.hexagon.A4.vrminh
  391. hexagon_A4_vrminuh, // llvm.hexagon.A4.vrminuh
  392. hexagon_A4_vrminuw, // llvm.hexagon.A4.vrminuw
  393. hexagon_A4_vrminw, // llvm.hexagon.A4.vrminw
  394. hexagon_A5_vaddhubs, // llvm.hexagon.A5.vaddhubs
  395. hexagon_C2_all8, // llvm.hexagon.C2.all8
  396. hexagon_C2_and, // llvm.hexagon.C2.and
  397. hexagon_C2_andn, // llvm.hexagon.C2.andn
  398. hexagon_C2_any8, // llvm.hexagon.C2.any8
  399. hexagon_C2_bitsclr, // llvm.hexagon.C2.bitsclr
  400. hexagon_C2_bitsclri, // llvm.hexagon.C2.bitsclri
  401. hexagon_C2_bitsset, // llvm.hexagon.C2.bitsset
  402. hexagon_C2_cmpeq, // llvm.hexagon.C2.cmpeq
  403. hexagon_C2_cmpeqi, // llvm.hexagon.C2.cmpeqi
  404. hexagon_C2_cmpeqp, // llvm.hexagon.C2.cmpeqp
  405. hexagon_C2_cmpgei, // llvm.hexagon.C2.cmpgei
  406. hexagon_C2_cmpgeui, // llvm.hexagon.C2.cmpgeui
  407. hexagon_C2_cmpgt, // llvm.hexagon.C2.cmpgt
  408. hexagon_C2_cmpgti, // llvm.hexagon.C2.cmpgti
  409. hexagon_C2_cmpgtp, // llvm.hexagon.C2.cmpgtp
  410. hexagon_C2_cmpgtu, // llvm.hexagon.C2.cmpgtu
  411. hexagon_C2_cmpgtui, // llvm.hexagon.C2.cmpgtui
  412. hexagon_C2_cmpgtup, // llvm.hexagon.C2.cmpgtup
  413. hexagon_C2_cmplt, // llvm.hexagon.C2.cmplt
  414. hexagon_C2_cmpltu, // llvm.hexagon.C2.cmpltu
  415. hexagon_C2_mask, // llvm.hexagon.C2.mask
  416. hexagon_C2_mux, // llvm.hexagon.C2.mux
  417. hexagon_C2_muxii, // llvm.hexagon.C2.muxii
  418. hexagon_C2_muxir, // llvm.hexagon.C2.muxir
  419. hexagon_C2_muxri, // llvm.hexagon.C2.muxri
  420. hexagon_C2_not, // llvm.hexagon.C2.not
  421. hexagon_C2_or, // llvm.hexagon.C2.or
  422. hexagon_C2_orn, // llvm.hexagon.C2.orn
  423. hexagon_C2_pxfer_map, // llvm.hexagon.C2.pxfer.map
  424. hexagon_C2_tfrpr, // llvm.hexagon.C2.tfrpr
  425. hexagon_C2_tfrrp, // llvm.hexagon.C2.tfrrp
  426. hexagon_C2_vitpack, // llvm.hexagon.C2.vitpack
  427. hexagon_C2_vmux, // llvm.hexagon.C2.vmux
  428. hexagon_C2_xor, // llvm.hexagon.C2.xor
  429. hexagon_C4_and_and, // llvm.hexagon.C4.and.and
  430. hexagon_C4_and_andn, // llvm.hexagon.C4.and.andn
  431. hexagon_C4_and_or, // llvm.hexagon.C4.and.or
  432. hexagon_C4_and_orn, // llvm.hexagon.C4.and.orn
  433. hexagon_C4_cmplte, // llvm.hexagon.C4.cmplte
  434. hexagon_C4_cmpltei, // llvm.hexagon.C4.cmpltei
  435. hexagon_C4_cmplteu, // llvm.hexagon.C4.cmplteu
  436. hexagon_C4_cmplteui, // llvm.hexagon.C4.cmplteui
  437. hexagon_C4_cmpneq, // llvm.hexagon.C4.cmpneq
  438. hexagon_C4_cmpneqi, // llvm.hexagon.C4.cmpneqi
  439. hexagon_C4_fastcorner9, // llvm.hexagon.C4.fastcorner9
  440. hexagon_C4_fastcorner9_not, // llvm.hexagon.C4.fastcorner9.not
  441. hexagon_C4_nbitsclr, // llvm.hexagon.C4.nbitsclr
  442. hexagon_C4_nbitsclri, // llvm.hexagon.C4.nbitsclri
  443. hexagon_C4_nbitsset, // llvm.hexagon.C4.nbitsset
  444. hexagon_C4_or_and, // llvm.hexagon.C4.or.and
  445. hexagon_C4_or_andn, // llvm.hexagon.C4.or.andn
  446. hexagon_C4_or_or, // llvm.hexagon.C4.or.or
  447. hexagon_C4_or_orn, // llvm.hexagon.C4.or.orn
  448. hexagon_F2_conv_d2df, // llvm.hexagon.F2.conv.d2df
  449. hexagon_F2_conv_d2sf, // llvm.hexagon.F2.conv.d2sf
  450. hexagon_F2_conv_df2d, // llvm.hexagon.F2.conv.df2d
  451. hexagon_F2_conv_df2d_chop, // llvm.hexagon.F2.conv.df2d.chop
  452. hexagon_F2_conv_df2sf, // llvm.hexagon.F2.conv.df2sf
  453. hexagon_F2_conv_df2ud, // llvm.hexagon.F2.conv.df2ud
  454. hexagon_F2_conv_df2ud_chop, // llvm.hexagon.F2.conv.df2ud.chop
  455. hexagon_F2_conv_df2uw, // llvm.hexagon.F2.conv.df2uw
  456. hexagon_F2_conv_df2uw_chop, // llvm.hexagon.F2.conv.df2uw.chop
  457. hexagon_F2_conv_df2w, // llvm.hexagon.F2.conv.df2w
  458. hexagon_F2_conv_df2w_chop, // llvm.hexagon.F2.conv.df2w.chop
  459. hexagon_F2_conv_sf2d, // llvm.hexagon.F2.conv.sf2d
  460. hexagon_F2_conv_sf2d_chop, // llvm.hexagon.F2.conv.sf2d.chop
  461. hexagon_F2_conv_sf2df, // llvm.hexagon.F2.conv.sf2df
  462. hexagon_F2_conv_sf2ud, // llvm.hexagon.F2.conv.sf2ud
  463. hexagon_F2_conv_sf2ud_chop, // llvm.hexagon.F2.conv.sf2ud.chop
  464. hexagon_F2_conv_sf2uw, // llvm.hexagon.F2.conv.sf2uw
  465. hexagon_F2_conv_sf2uw_chop, // llvm.hexagon.F2.conv.sf2uw.chop
  466. hexagon_F2_conv_sf2w, // llvm.hexagon.F2.conv.sf2w
  467. hexagon_F2_conv_sf2w_chop, // llvm.hexagon.F2.conv.sf2w.chop
  468. hexagon_F2_conv_ud2df, // llvm.hexagon.F2.conv.ud2df
  469. hexagon_F2_conv_ud2sf, // llvm.hexagon.F2.conv.ud2sf
  470. hexagon_F2_conv_uw2df, // llvm.hexagon.F2.conv.uw2df
  471. hexagon_F2_conv_uw2sf, // llvm.hexagon.F2.conv.uw2sf
  472. hexagon_F2_conv_w2df, // llvm.hexagon.F2.conv.w2df
  473. hexagon_F2_conv_w2sf, // llvm.hexagon.F2.conv.w2sf
  474. hexagon_F2_dfadd, // llvm.hexagon.F2.dfadd
  475. hexagon_F2_dfclass, // llvm.hexagon.F2.dfclass
  476. hexagon_F2_dfcmpeq, // llvm.hexagon.F2.dfcmpeq
  477. hexagon_F2_dfcmpge, // llvm.hexagon.F2.dfcmpge
  478. hexagon_F2_dfcmpgt, // llvm.hexagon.F2.dfcmpgt
  479. hexagon_F2_dfcmpuo, // llvm.hexagon.F2.dfcmpuo
  480. hexagon_F2_dffixupd, // llvm.hexagon.F2.dffixupd
  481. hexagon_F2_dffixupn, // llvm.hexagon.F2.dffixupn
  482. hexagon_F2_dffixupr, // llvm.hexagon.F2.dffixupr
  483. hexagon_F2_dffma, // llvm.hexagon.F2.dffma
  484. hexagon_F2_dffma_lib, // llvm.hexagon.F2.dffma.lib
  485. hexagon_F2_dffma_sc, // llvm.hexagon.F2.dffma.sc
  486. hexagon_F2_dffms, // llvm.hexagon.F2.dffms
  487. hexagon_F2_dffms_lib, // llvm.hexagon.F2.dffms.lib
  488. hexagon_F2_dfimm_n, // llvm.hexagon.F2.dfimm.n
  489. hexagon_F2_dfimm_p, // llvm.hexagon.F2.dfimm.p
  490. hexagon_F2_dfmax, // llvm.hexagon.F2.dfmax
  491. hexagon_F2_dfmin, // llvm.hexagon.F2.dfmin
  492. hexagon_F2_dfmpy, // llvm.hexagon.F2.dfmpy
  493. hexagon_F2_dfsub, // llvm.hexagon.F2.dfsub
  494. hexagon_F2_sfadd, // llvm.hexagon.F2.sfadd
  495. hexagon_F2_sfclass, // llvm.hexagon.F2.sfclass
  496. hexagon_F2_sfcmpeq, // llvm.hexagon.F2.sfcmpeq
  497. hexagon_F2_sfcmpge, // llvm.hexagon.F2.sfcmpge
  498. hexagon_F2_sfcmpgt, // llvm.hexagon.F2.sfcmpgt
  499. hexagon_F2_sfcmpuo, // llvm.hexagon.F2.sfcmpuo
  500. hexagon_F2_sffixupd, // llvm.hexagon.F2.sffixupd
  501. hexagon_F2_sffixupn, // llvm.hexagon.F2.sffixupn
  502. hexagon_F2_sffixupr, // llvm.hexagon.F2.sffixupr
  503. hexagon_F2_sffma, // llvm.hexagon.F2.sffma
  504. hexagon_F2_sffma_lib, // llvm.hexagon.F2.sffma.lib
  505. hexagon_F2_sffma_sc, // llvm.hexagon.F2.sffma.sc
  506. hexagon_F2_sffms, // llvm.hexagon.F2.sffms
  507. hexagon_F2_sffms_lib, // llvm.hexagon.F2.sffms.lib
  508. hexagon_F2_sfimm_n, // llvm.hexagon.F2.sfimm.n
  509. hexagon_F2_sfimm_p, // llvm.hexagon.F2.sfimm.p
  510. hexagon_F2_sfmax, // llvm.hexagon.F2.sfmax
  511. hexagon_F2_sfmin, // llvm.hexagon.F2.sfmin
  512. hexagon_F2_sfmpy, // llvm.hexagon.F2.sfmpy
  513. hexagon_F2_sfsub, // llvm.hexagon.F2.sfsub
  514. hexagon_M2_acci, // llvm.hexagon.M2.acci
  515. hexagon_M2_accii, // llvm.hexagon.M2.accii
  516. hexagon_M2_cmaci_s0, // llvm.hexagon.M2.cmaci.s0
  517. hexagon_M2_cmacr_s0, // llvm.hexagon.M2.cmacr.s0
  518. hexagon_M2_cmacs_s0, // llvm.hexagon.M2.cmacs.s0
  519. hexagon_M2_cmacs_s1, // llvm.hexagon.M2.cmacs.s1
  520. hexagon_M2_cmacsc_s0, // llvm.hexagon.M2.cmacsc.s0
  521. hexagon_M2_cmacsc_s1, // llvm.hexagon.M2.cmacsc.s1
  522. hexagon_M2_cmpyi_s0, // llvm.hexagon.M2.cmpyi.s0
  523. hexagon_M2_cmpyr_s0, // llvm.hexagon.M2.cmpyr.s0
  524. hexagon_M2_cmpyrs_s0, // llvm.hexagon.M2.cmpyrs.s0
  525. hexagon_M2_cmpyrs_s1, // llvm.hexagon.M2.cmpyrs.s1
  526. hexagon_M2_cmpyrsc_s0, // llvm.hexagon.M2.cmpyrsc.s0
  527. hexagon_M2_cmpyrsc_s1, // llvm.hexagon.M2.cmpyrsc.s1
  528. hexagon_M2_cmpys_s0, // llvm.hexagon.M2.cmpys.s0
  529. hexagon_M2_cmpys_s1, // llvm.hexagon.M2.cmpys.s1
  530. hexagon_M2_cmpysc_s0, // llvm.hexagon.M2.cmpysc.s0
  531. hexagon_M2_cmpysc_s1, // llvm.hexagon.M2.cmpysc.s1
  532. hexagon_M2_cnacs_s0, // llvm.hexagon.M2.cnacs.s0
  533. hexagon_M2_cnacs_s1, // llvm.hexagon.M2.cnacs.s1
  534. hexagon_M2_cnacsc_s0, // llvm.hexagon.M2.cnacsc.s0
  535. hexagon_M2_cnacsc_s1, // llvm.hexagon.M2.cnacsc.s1
  536. hexagon_M2_dpmpyss_acc_s0, // llvm.hexagon.M2.dpmpyss.acc.s0
  537. hexagon_M2_dpmpyss_nac_s0, // llvm.hexagon.M2.dpmpyss.nac.s0
  538. hexagon_M2_dpmpyss_rnd_s0, // llvm.hexagon.M2.dpmpyss.rnd.s0
  539. hexagon_M2_dpmpyss_s0, // llvm.hexagon.M2.dpmpyss.s0
  540. hexagon_M2_dpmpyuu_acc_s0, // llvm.hexagon.M2.dpmpyuu.acc.s0
  541. hexagon_M2_dpmpyuu_nac_s0, // llvm.hexagon.M2.dpmpyuu.nac.s0
  542. hexagon_M2_dpmpyuu_s0, // llvm.hexagon.M2.dpmpyuu.s0
  543. hexagon_M2_hmmpyh_rs1, // llvm.hexagon.M2.hmmpyh.rs1
  544. hexagon_M2_hmmpyh_s1, // llvm.hexagon.M2.hmmpyh.s1
  545. hexagon_M2_hmmpyl_rs1, // llvm.hexagon.M2.hmmpyl.rs1
  546. hexagon_M2_hmmpyl_s1, // llvm.hexagon.M2.hmmpyl.s1
  547. hexagon_M2_maci, // llvm.hexagon.M2.maci
  548. hexagon_M2_macsin, // llvm.hexagon.M2.macsin
  549. hexagon_M2_macsip, // llvm.hexagon.M2.macsip
  550. hexagon_M2_mmachs_rs0, // llvm.hexagon.M2.mmachs.rs0
  551. hexagon_M2_mmachs_rs1, // llvm.hexagon.M2.mmachs.rs1
  552. hexagon_M2_mmachs_s0, // llvm.hexagon.M2.mmachs.s0
  553. hexagon_M2_mmachs_s1, // llvm.hexagon.M2.mmachs.s1
  554. hexagon_M2_mmacls_rs0, // llvm.hexagon.M2.mmacls.rs0
  555. hexagon_M2_mmacls_rs1, // llvm.hexagon.M2.mmacls.rs1
  556. hexagon_M2_mmacls_s0, // llvm.hexagon.M2.mmacls.s0
  557. hexagon_M2_mmacls_s1, // llvm.hexagon.M2.mmacls.s1
  558. hexagon_M2_mmacuhs_rs0, // llvm.hexagon.M2.mmacuhs.rs0
  559. hexagon_M2_mmacuhs_rs1, // llvm.hexagon.M2.mmacuhs.rs1
  560. hexagon_M2_mmacuhs_s0, // llvm.hexagon.M2.mmacuhs.s0
  561. hexagon_M2_mmacuhs_s1, // llvm.hexagon.M2.mmacuhs.s1
  562. hexagon_M2_mmaculs_rs0, // llvm.hexagon.M2.mmaculs.rs0
  563. hexagon_M2_mmaculs_rs1, // llvm.hexagon.M2.mmaculs.rs1
  564. hexagon_M2_mmaculs_s0, // llvm.hexagon.M2.mmaculs.s0
  565. hexagon_M2_mmaculs_s1, // llvm.hexagon.M2.mmaculs.s1
  566. hexagon_M2_mmpyh_rs0, // llvm.hexagon.M2.mmpyh.rs0
  567. hexagon_M2_mmpyh_rs1, // llvm.hexagon.M2.mmpyh.rs1
  568. hexagon_M2_mmpyh_s0, // llvm.hexagon.M2.mmpyh.s0
  569. hexagon_M2_mmpyh_s1, // llvm.hexagon.M2.mmpyh.s1
  570. hexagon_M2_mmpyl_rs0, // llvm.hexagon.M2.mmpyl.rs0
  571. hexagon_M2_mmpyl_rs1, // llvm.hexagon.M2.mmpyl.rs1
  572. hexagon_M2_mmpyl_s0, // llvm.hexagon.M2.mmpyl.s0
  573. hexagon_M2_mmpyl_s1, // llvm.hexagon.M2.mmpyl.s1
  574. hexagon_M2_mmpyuh_rs0, // llvm.hexagon.M2.mmpyuh.rs0
  575. hexagon_M2_mmpyuh_rs1, // llvm.hexagon.M2.mmpyuh.rs1
  576. hexagon_M2_mmpyuh_s0, // llvm.hexagon.M2.mmpyuh.s0
  577. hexagon_M2_mmpyuh_s1, // llvm.hexagon.M2.mmpyuh.s1
  578. hexagon_M2_mmpyul_rs0, // llvm.hexagon.M2.mmpyul.rs0
  579. hexagon_M2_mmpyul_rs1, // llvm.hexagon.M2.mmpyul.rs1
  580. hexagon_M2_mmpyul_s0, // llvm.hexagon.M2.mmpyul.s0
  581. hexagon_M2_mmpyul_s1, // llvm.hexagon.M2.mmpyul.s1
  582. hexagon_M2_mpy_acc_hh_s0, // llvm.hexagon.M2.mpy.acc.hh.s0
  583. hexagon_M2_mpy_acc_hh_s1, // llvm.hexagon.M2.mpy.acc.hh.s1
  584. hexagon_M2_mpy_acc_hl_s0, // llvm.hexagon.M2.mpy.acc.hl.s0
  585. hexagon_M2_mpy_acc_hl_s1, // llvm.hexagon.M2.mpy.acc.hl.s1
  586. hexagon_M2_mpy_acc_lh_s0, // llvm.hexagon.M2.mpy.acc.lh.s0
  587. hexagon_M2_mpy_acc_lh_s1, // llvm.hexagon.M2.mpy.acc.lh.s1
  588. hexagon_M2_mpy_acc_ll_s0, // llvm.hexagon.M2.mpy.acc.ll.s0
  589. hexagon_M2_mpy_acc_ll_s1, // llvm.hexagon.M2.mpy.acc.ll.s1
  590. hexagon_M2_mpy_acc_sat_hh_s0, // llvm.hexagon.M2.mpy.acc.sat.hh.s0
  591. hexagon_M2_mpy_acc_sat_hh_s1, // llvm.hexagon.M2.mpy.acc.sat.hh.s1
  592. hexagon_M2_mpy_acc_sat_hl_s0, // llvm.hexagon.M2.mpy.acc.sat.hl.s0
  593. hexagon_M2_mpy_acc_sat_hl_s1, // llvm.hexagon.M2.mpy.acc.sat.hl.s1
  594. hexagon_M2_mpy_acc_sat_lh_s0, // llvm.hexagon.M2.mpy.acc.sat.lh.s0
  595. hexagon_M2_mpy_acc_sat_lh_s1, // llvm.hexagon.M2.mpy.acc.sat.lh.s1
  596. hexagon_M2_mpy_acc_sat_ll_s0, // llvm.hexagon.M2.mpy.acc.sat.ll.s0
  597. hexagon_M2_mpy_acc_sat_ll_s1, // llvm.hexagon.M2.mpy.acc.sat.ll.s1
  598. hexagon_M2_mpy_hh_s0, // llvm.hexagon.M2.mpy.hh.s0
  599. hexagon_M2_mpy_hh_s1, // llvm.hexagon.M2.mpy.hh.s1
  600. hexagon_M2_mpy_hl_s0, // llvm.hexagon.M2.mpy.hl.s0
  601. hexagon_M2_mpy_hl_s1, // llvm.hexagon.M2.mpy.hl.s1
  602. hexagon_M2_mpy_lh_s0, // llvm.hexagon.M2.mpy.lh.s0
  603. hexagon_M2_mpy_lh_s1, // llvm.hexagon.M2.mpy.lh.s1
  604. hexagon_M2_mpy_ll_s0, // llvm.hexagon.M2.mpy.ll.s0
  605. hexagon_M2_mpy_ll_s1, // llvm.hexagon.M2.mpy.ll.s1
  606. hexagon_M2_mpy_nac_hh_s0, // llvm.hexagon.M2.mpy.nac.hh.s0
  607. hexagon_M2_mpy_nac_hh_s1, // llvm.hexagon.M2.mpy.nac.hh.s1
  608. hexagon_M2_mpy_nac_hl_s0, // llvm.hexagon.M2.mpy.nac.hl.s0
  609. hexagon_M2_mpy_nac_hl_s1, // llvm.hexagon.M2.mpy.nac.hl.s1
  610. hexagon_M2_mpy_nac_lh_s0, // llvm.hexagon.M2.mpy.nac.lh.s0
  611. hexagon_M2_mpy_nac_lh_s1, // llvm.hexagon.M2.mpy.nac.lh.s1
  612. hexagon_M2_mpy_nac_ll_s0, // llvm.hexagon.M2.mpy.nac.ll.s0
  613. hexagon_M2_mpy_nac_ll_s1, // llvm.hexagon.M2.mpy.nac.ll.s1
  614. hexagon_M2_mpy_nac_sat_hh_s0, // llvm.hexagon.M2.mpy.nac.sat.hh.s0
  615. hexagon_M2_mpy_nac_sat_hh_s1, // llvm.hexagon.M2.mpy.nac.sat.hh.s1
  616. hexagon_M2_mpy_nac_sat_hl_s0, // llvm.hexagon.M2.mpy.nac.sat.hl.s0
  617. hexagon_M2_mpy_nac_sat_hl_s1, // llvm.hexagon.M2.mpy.nac.sat.hl.s1
  618. hexagon_M2_mpy_nac_sat_lh_s0, // llvm.hexagon.M2.mpy.nac.sat.lh.s0
  619. hexagon_M2_mpy_nac_sat_lh_s1, // llvm.hexagon.M2.mpy.nac.sat.lh.s1
  620. hexagon_M2_mpy_nac_sat_ll_s0, // llvm.hexagon.M2.mpy.nac.sat.ll.s0
  621. hexagon_M2_mpy_nac_sat_ll_s1, // llvm.hexagon.M2.mpy.nac.sat.ll.s1
  622. hexagon_M2_mpy_rnd_hh_s0, // llvm.hexagon.M2.mpy.rnd.hh.s0
  623. hexagon_M2_mpy_rnd_hh_s1, // llvm.hexagon.M2.mpy.rnd.hh.s1
  624. hexagon_M2_mpy_rnd_hl_s0, // llvm.hexagon.M2.mpy.rnd.hl.s0
  625. hexagon_M2_mpy_rnd_hl_s1, // llvm.hexagon.M2.mpy.rnd.hl.s1
  626. hexagon_M2_mpy_rnd_lh_s0, // llvm.hexagon.M2.mpy.rnd.lh.s0
  627. hexagon_M2_mpy_rnd_lh_s1, // llvm.hexagon.M2.mpy.rnd.lh.s1
  628. hexagon_M2_mpy_rnd_ll_s0, // llvm.hexagon.M2.mpy.rnd.ll.s0
  629. hexagon_M2_mpy_rnd_ll_s1, // llvm.hexagon.M2.mpy.rnd.ll.s1
  630. hexagon_M2_mpy_sat_hh_s0, // llvm.hexagon.M2.mpy.sat.hh.s0
  631. hexagon_M2_mpy_sat_hh_s1, // llvm.hexagon.M2.mpy.sat.hh.s1
  632. hexagon_M2_mpy_sat_hl_s0, // llvm.hexagon.M2.mpy.sat.hl.s0
  633. hexagon_M2_mpy_sat_hl_s1, // llvm.hexagon.M2.mpy.sat.hl.s1
  634. hexagon_M2_mpy_sat_lh_s0, // llvm.hexagon.M2.mpy.sat.lh.s0
  635. hexagon_M2_mpy_sat_lh_s1, // llvm.hexagon.M2.mpy.sat.lh.s1
  636. hexagon_M2_mpy_sat_ll_s0, // llvm.hexagon.M2.mpy.sat.ll.s0
  637. hexagon_M2_mpy_sat_ll_s1, // llvm.hexagon.M2.mpy.sat.ll.s1
  638. hexagon_M2_mpy_sat_rnd_hh_s0, // llvm.hexagon.M2.mpy.sat.rnd.hh.s0
  639. hexagon_M2_mpy_sat_rnd_hh_s1, // llvm.hexagon.M2.mpy.sat.rnd.hh.s1
  640. hexagon_M2_mpy_sat_rnd_hl_s0, // llvm.hexagon.M2.mpy.sat.rnd.hl.s0
  641. hexagon_M2_mpy_sat_rnd_hl_s1, // llvm.hexagon.M2.mpy.sat.rnd.hl.s1
  642. hexagon_M2_mpy_sat_rnd_lh_s0, // llvm.hexagon.M2.mpy.sat.rnd.lh.s0
  643. hexagon_M2_mpy_sat_rnd_lh_s1, // llvm.hexagon.M2.mpy.sat.rnd.lh.s1
  644. hexagon_M2_mpy_sat_rnd_ll_s0, // llvm.hexagon.M2.mpy.sat.rnd.ll.s0
  645. hexagon_M2_mpy_sat_rnd_ll_s1, // llvm.hexagon.M2.mpy.sat.rnd.ll.s1
  646. hexagon_M2_mpy_up, // llvm.hexagon.M2.mpy.up
  647. hexagon_M2_mpy_up_s1, // llvm.hexagon.M2.mpy.up.s1
  648. hexagon_M2_mpy_up_s1_sat, // llvm.hexagon.M2.mpy.up.s1.sat
  649. hexagon_M2_mpyd_acc_hh_s0, // llvm.hexagon.M2.mpyd.acc.hh.s0
  650. hexagon_M2_mpyd_acc_hh_s1, // llvm.hexagon.M2.mpyd.acc.hh.s1
  651. hexagon_M2_mpyd_acc_hl_s0, // llvm.hexagon.M2.mpyd.acc.hl.s0
  652. hexagon_M2_mpyd_acc_hl_s1, // llvm.hexagon.M2.mpyd.acc.hl.s1
  653. hexagon_M2_mpyd_acc_lh_s0, // llvm.hexagon.M2.mpyd.acc.lh.s0
  654. hexagon_M2_mpyd_acc_lh_s1, // llvm.hexagon.M2.mpyd.acc.lh.s1
  655. hexagon_M2_mpyd_acc_ll_s0, // llvm.hexagon.M2.mpyd.acc.ll.s0
  656. hexagon_M2_mpyd_acc_ll_s1, // llvm.hexagon.M2.mpyd.acc.ll.s1
  657. hexagon_M2_mpyd_hh_s0, // llvm.hexagon.M2.mpyd.hh.s0
  658. hexagon_M2_mpyd_hh_s1, // llvm.hexagon.M2.mpyd.hh.s1
  659. hexagon_M2_mpyd_hl_s0, // llvm.hexagon.M2.mpyd.hl.s0
  660. hexagon_M2_mpyd_hl_s1, // llvm.hexagon.M2.mpyd.hl.s1
  661. hexagon_M2_mpyd_lh_s0, // llvm.hexagon.M2.mpyd.lh.s0
  662. hexagon_M2_mpyd_lh_s1, // llvm.hexagon.M2.mpyd.lh.s1
  663. hexagon_M2_mpyd_ll_s0, // llvm.hexagon.M2.mpyd.ll.s0
  664. hexagon_M2_mpyd_ll_s1, // llvm.hexagon.M2.mpyd.ll.s1
  665. hexagon_M2_mpyd_nac_hh_s0, // llvm.hexagon.M2.mpyd.nac.hh.s0
  666. hexagon_M2_mpyd_nac_hh_s1, // llvm.hexagon.M2.mpyd.nac.hh.s1
  667. hexagon_M2_mpyd_nac_hl_s0, // llvm.hexagon.M2.mpyd.nac.hl.s0
  668. hexagon_M2_mpyd_nac_hl_s1, // llvm.hexagon.M2.mpyd.nac.hl.s1
  669. hexagon_M2_mpyd_nac_lh_s0, // llvm.hexagon.M2.mpyd.nac.lh.s0
  670. hexagon_M2_mpyd_nac_lh_s1, // llvm.hexagon.M2.mpyd.nac.lh.s1
  671. hexagon_M2_mpyd_nac_ll_s0, // llvm.hexagon.M2.mpyd.nac.ll.s0
  672. hexagon_M2_mpyd_nac_ll_s1, // llvm.hexagon.M2.mpyd.nac.ll.s1
  673. hexagon_M2_mpyd_rnd_hh_s0, // llvm.hexagon.M2.mpyd.rnd.hh.s0
  674. hexagon_M2_mpyd_rnd_hh_s1, // llvm.hexagon.M2.mpyd.rnd.hh.s1
  675. hexagon_M2_mpyd_rnd_hl_s0, // llvm.hexagon.M2.mpyd.rnd.hl.s0
  676. hexagon_M2_mpyd_rnd_hl_s1, // llvm.hexagon.M2.mpyd.rnd.hl.s1
  677. hexagon_M2_mpyd_rnd_lh_s0, // llvm.hexagon.M2.mpyd.rnd.lh.s0
  678. hexagon_M2_mpyd_rnd_lh_s1, // llvm.hexagon.M2.mpyd.rnd.lh.s1
  679. hexagon_M2_mpyd_rnd_ll_s0, // llvm.hexagon.M2.mpyd.rnd.ll.s0
  680. hexagon_M2_mpyd_rnd_ll_s1, // llvm.hexagon.M2.mpyd.rnd.ll.s1
  681. hexagon_M2_mpyi, // llvm.hexagon.M2.mpyi
  682. hexagon_M2_mpysmi, // llvm.hexagon.M2.mpysmi
  683. hexagon_M2_mpysu_up, // llvm.hexagon.M2.mpysu.up
  684. hexagon_M2_mpyu_acc_hh_s0, // llvm.hexagon.M2.mpyu.acc.hh.s0
  685. hexagon_M2_mpyu_acc_hh_s1, // llvm.hexagon.M2.mpyu.acc.hh.s1
  686. hexagon_M2_mpyu_acc_hl_s0, // llvm.hexagon.M2.mpyu.acc.hl.s0
  687. hexagon_M2_mpyu_acc_hl_s1, // llvm.hexagon.M2.mpyu.acc.hl.s1
  688. hexagon_M2_mpyu_acc_lh_s0, // llvm.hexagon.M2.mpyu.acc.lh.s0
  689. hexagon_M2_mpyu_acc_lh_s1, // llvm.hexagon.M2.mpyu.acc.lh.s1
  690. hexagon_M2_mpyu_acc_ll_s0, // llvm.hexagon.M2.mpyu.acc.ll.s0
  691. hexagon_M2_mpyu_acc_ll_s1, // llvm.hexagon.M2.mpyu.acc.ll.s1
  692. hexagon_M2_mpyu_hh_s0, // llvm.hexagon.M2.mpyu.hh.s0
  693. hexagon_M2_mpyu_hh_s1, // llvm.hexagon.M2.mpyu.hh.s1
  694. hexagon_M2_mpyu_hl_s0, // llvm.hexagon.M2.mpyu.hl.s0
  695. hexagon_M2_mpyu_hl_s1, // llvm.hexagon.M2.mpyu.hl.s1
  696. hexagon_M2_mpyu_lh_s0, // llvm.hexagon.M2.mpyu.lh.s0
  697. hexagon_M2_mpyu_lh_s1, // llvm.hexagon.M2.mpyu.lh.s1
  698. hexagon_M2_mpyu_ll_s0, // llvm.hexagon.M2.mpyu.ll.s0
  699. hexagon_M2_mpyu_ll_s1, // llvm.hexagon.M2.mpyu.ll.s1
  700. hexagon_M2_mpyu_nac_hh_s0, // llvm.hexagon.M2.mpyu.nac.hh.s0
  701. hexagon_M2_mpyu_nac_hh_s1, // llvm.hexagon.M2.mpyu.nac.hh.s1
  702. hexagon_M2_mpyu_nac_hl_s0, // llvm.hexagon.M2.mpyu.nac.hl.s0
  703. hexagon_M2_mpyu_nac_hl_s1, // llvm.hexagon.M2.mpyu.nac.hl.s1
  704. hexagon_M2_mpyu_nac_lh_s0, // llvm.hexagon.M2.mpyu.nac.lh.s0
  705. hexagon_M2_mpyu_nac_lh_s1, // llvm.hexagon.M2.mpyu.nac.lh.s1
  706. hexagon_M2_mpyu_nac_ll_s0, // llvm.hexagon.M2.mpyu.nac.ll.s0
  707. hexagon_M2_mpyu_nac_ll_s1, // llvm.hexagon.M2.mpyu.nac.ll.s1
  708. hexagon_M2_mpyu_up, // llvm.hexagon.M2.mpyu.up
  709. hexagon_M2_mpyud_acc_hh_s0, // llvm.hexagon.M2.mpyud.acc.hh.s0
  710. hexagon_M2_mpyud_acc_hh_s1, // llvm.hexagon.M2.mpyud.acc.hh.s1
  711. hexagon_M2_mpyud_acc_hl_s0, // llvm.hexagon.M2.mpyud.acc.hl.s0
  712. hexagon_M2_mpyud_acc_hl_s1, // llvm.hexagon.M2.mpyud.acc.hl.s1
  713. hexagon_M2_mpyud_acc_lh_s0, // llvm.hexagon.M2.mpyud.acc.lh.s0
  714. hexagon_M2_mpyud_acc_lh_s1, // llvm.hexagon.M2.mpyud.acc.lh.s1
  715. hexagon_M2_mpyud_acc_ll_s0, // llvm.hexagon.M2.mpyud.acc.ll.s0
  716. hexagon_M2_mpyud_acc_ll_s1, // llvm.hexagon.M2.mpyud.acc.ll.s1
  717. hexagon_M2_mpyud_hh_s0, // llvm.hexagon.M2.mpyud.hh.s0
  718. hexagon_M2_mpyud_hh_s1, // llvm.hexagon.M2.mpyud.hh.s1
  719. hexagon_M2_mpyud_hl_s0, // llvm.hexagon.M2.mpyud.hl.s0
  720. hexagon_M2_mpyud_hl_s1, // llvm.hexagon.M2.mpyud.hl.s1
  721. hexagon_M2_mpyud_lh_s0, // llvm.hexagon.M2.mpyud.lh.s0
  722. hexagon_M2_mpyud_lh_s1, // llvm.hexagon.M2.mpyud.lh.s1
  723. hexagon_M2_mpyud_ll_s0, // llvm.hexagon.M2.mpyud.ll.s0
  724. hexagon_M2_mpyud_ll_s1, // llvm.hexagon.M2.mpyud.ll.s1
  725. hexagon_M2_mpyud_nac_hh_s0, // llvm.hexagon.M2.mpyud.nac.hh.s0
  726. hexagon_M2_mpyud_nac_hh_s1, // llvm.hexagon.M2.mpyud.nac.hh.s1
  727. hexagon_M2_mpyud_nac_hl_s0, // llvm.hexagon.M2.mpyud.nac.hl.s0
  728. hexagon_M2_mpyud_nac_hl_s1, // llvm.hexagon.M2.mpyud.nac.hl.s1
  729. hexagon_M2_mpyud_nac_lh_s0, // llvm.hexagon.M2.mpyud.nac.lh.s0
  730. hexagon_M2_mpyud_nac_lh_s1, // llvm.hexagon.M2.mpyud.nac.lh.s1
  731. hexagon_M2_mpyud_nac_ll_s0, // llvm.hexagon.M2.mpyud.nac.ll.s0
  732. hexagon_M2_mpyud_nac_ll_s1, // llvm.hexagon.M2.mpyud.nac.ll.s1
  733. hexagon_M2_mpyui, // llvm.hexagon.M2.mpyui
  734. hexagon_M2_nacci, // llvm.hexagon.M2.nacci
  735. hexagon_M2_naccii, // llvm.hexagon.M2.naccii
  736. hexagon_M2_subacc, // llvm.hexagon.M2.subacc
  737. hexagon_M2_vabsdiffh, // llvm.hexagon.M2.vabsdiffh
  738. hexagon_M2_vabsdiffw, // llvm.hexagon.M2.vabsdiffw
  739. hexagon_M2_vcmac_s0_sat_i, // llvm.hexagon.M2.vcmac.s0.sat.i
  740. hexagon_M2_vcmac_s0_sat_r, // llvm.hexagon.M2.vcmac.s0.sat.r
  741. hexagon_M2_vcmpy_s0_sat_i, // llvm.hexagon.M2.vcmpy.s0.sat.i
  742. hexagon_M2_vcmpy_s0_sat_r, // llvm.hexagon.M2.vcmpy.s0.sat.r
  743. hexagon_M2_vcmpy_s1_sat_i, // llvm.hexagon.M2.vcmpy.s1.sat.i
  744. hexagon_M2_vcmpy_s1_sat_r, // llvm.hexagon.M2.vcmpy.s1.sat.r
  745. hexagon_M2_vdmacs_s0, // llvm.hexagon.M2.vdmacs.s0
  746. hexagon_M2_vdmacs_s1, // llvm.hexagon.M2.vdmacs.s1
  747. hexagon_M2_vdmpyrs_s0, // llvm.hexagon.M2.vdmpyrs.s0
  748. hexagon_M2_vdmpyrs_s1, // llvm.hexagon.M2.vdmpyrs.s1
  749. hexagon_M2_vdmpys_s0, // llvm.hexagon.M2.vdmpys.s0
  750. hexagon_M2_vdmpys_s1, // llvm.hexagon.M2.vdmpys.s1
  751. hexagon_M2_vmac2, // llvm.hexagon.M2.vmac2
  752. hexagon_M2_vmac2es, // llvm.hexagon.M2.vmac2es
  753. hexagon_M2_vmac2es_s0, // llvm.hexagon.M2.vmac2es.s0
  754. hexagon_M2_vmac2es_s1, // llvm.hexagon.M2.vmac2es.s1
  755. hexagon_M2_vmac2s_s0, // llvm.hexagon.M2.vmac2s.s0
  756. hexagon_M2_vmac2s_s1, // llvm.hexagon.M2.vmac2s.s1
  757. hexagon_M2_vmac2su_s0, // llvm.hexagon.M2.vmac2su.s0
  758. hexagon_M2_vmac2su_s1, // llvm.hexagon.M2.vmac2su.s1
  759. hexagon_M2_vmpy2es_s0, // llvm.hexagon.M2.vmpy2es.s0
  760. hexagon_M2_vmpy2es_s1, // llvm.hexagon.M2.vmpy2es.s1
  761. hexagon_M2_vmpy2s_s0, // llvm.hexagon.M2.vmpy2s.s0
  762. hexagon_M2_vmpy2s_s0pack, // llvm.hexagon.M2.vmpy2s.s0pack
  763. hexagon_M2_vmpy2s_s1, // llvm.hexagon.M2.vmpy2s.s1
  764. hexagon_M2_vmpy2s_s1pack, // llvm.hexagon.M2.vmpy2s.s1pack
  765. hexagon_M2_vmpy2su_s0, // llvm.hexagon.M2.vmpy2su.s0
  766. hexagon_M2_vmpy2su_s1, // llvm.hexagon.M2.vmpy2su.s1
  767. hexagon_M2_vraddh, // llvm.hexagon.M2.vraddh
  768. hexagon_M2_vradduh, // llvm.hexagon.M2.vradduh
  769. hexagon_M2_vrcmaci_s0, // llvm.hexagon.M2.vrcmaci.s0
  770. hexagon_M2_vrcmaci_s0c, // llvm.hexagon.M2.vrcmaci.s0c
  771. hexagon_M2_vrcmacr_s0, // llvm.hexagon.M2.vrcmacr.s0
  772. hexagon_M2_vrcmacr_s0c, // llvm.hexagon.M2.vrcmacr.s0c
  773. hexagon_M2_vrcmpyi_s0, // llvm.hexagon.M2.vrcmpyi.s0
  774. hexagon_M2_vrcmpyi_s0c, // llvm.hexagon.M2.vrcmpyi.s0c
  775. hexagon_M2_vrcmpyr_s0, // llvm.hexagon.M2.vrcmpyr.s0
  776. hexagon_M2_vrcmpyr_s0c, // llvm.hexagon.M2.vrcmpyr.s0c
  777. hexagon_M2_vrcmpys_acc_s1, // llvm.hexagon.M2.vrcmpys.acc.s1
  778. hexagon_M2_vrcmpys_s1, // llvm.hexagon.M2.vrcmpys.s1
  779. hexagon_M2_vrcmpys_s1rp, // llvm.hexagon.M2.vrcmpys.s1rp
  780. hexagon_M2_vrmac_s0, // llvm.hexagon.M2.vrmac.s0
  781. hexagon_M2_vrmpy_s0, // llvm.hexagon.M2.vrmpy.s0
  782. hexagon_M2_xor_xacc, // llvm.hexagon.M2.xor.xacc
  783. hexagon_M4_and_and, // llvm.hexagon.M4.and.and
  784. hexagon_M4_and_andn, // llvm.hexagon.M4.and.andn
  785. hexagon_M4_and_or, // llvm.hexagon.M4.and.or
  786. hexagon_M4_and_xor, // llvm.hexagon.M4.and.xor
  787. hexagon_M4_cmpyi_wh, // llvm.hexagon.M4.cmpyi.wh
  788. hexagon_M4_cmpyi_whc, // llvm.hexagon.M4.cmpyi.whc
  789. hexagon_M4_cmpyr_wh, // llvm.hexagon.M4.cmpyr.wh
  790. hexagon_M4_cmpyr_whc, // llvm.hexagon.M4.cmpyr.whc
  791. hexagon_M4_mac_up_s1_sat, // llvm.hexagon.M4.mac.up.s1.sat
  792. hexagon_M4_mpyri_addi, // llvm.hexagon.M4.mpyri.addi
  793. hexagon_M4_mpyri_addr, // llvm.hexagon.M4.mpyri.addr
  794. hexagon_M4_mpyri_addr_u2, // llvm.hexagon.M4.mpyri.addr.u2
  795. hexagon_M4_mpyrr_addi, // llvm.hexagon.M4.mpyrr.addi
  796. hexagon_M4_mpyrr_addr, // llvm.hexagon.M4.mpyrr.addr
  797. hexagon_M4_nac_up_s1_sat, // llvm.hexagon.M4.nac.up.s1.sat
  798. hexagon_M4_or_and, // llvm.hexagon.M4.or.and
  799. hexagon_M4_or_andn, // llvm.hexagon.M4.or.andn
  800. hexagon_M4_or_or, // llvm.hexagon.M4.or.or
  801. hexagon_M4_or_xor, // llvm.hexagon.M4.or.xor
  802. hexagon_M4_pmpyw, // llvm.hexagon.M4.pmpyw
  803. hexagon_M4_pmpyw_acc, // llvm.hexagon.M4.pmpyw.acc
  804. hexagon_M4_vpmpyh, // llvm.hexagon.M4.vpmpyh
  805. hexagon_M4_vpmpyh_acc, // llvm.hexagon.M4.vpmpyh.acc
  806. hexagon_M4_vrmpyeh_acc_s0, // llvm.hexagon.M4.vrmpyeh.acc.s0
  807. hexagon_M4_vrmpyeh_acc_s1, // llvm.hexagon.M4.vrmpyeh.acc.s1
  808. hexagon_M4_vrmpyeh_s0, // llvm.hexagon.M4.vrmpyeh.s0
  809. hexagon_M4_vrmpyeh_s1, // llvm.hexagon.M4.vrmpyeh.s1
  810. hexagon_M4_vrmpyoh_acc_s0, // llvm.hexagon.M4.vrmpyoh.acc.s0
  811. hexagon_M4_vrmpyoh_acc_s1, // llvm.hexagon.M4.vrmpyoh.acc.s1
  812. hexagon_M4_vrmpyoh_s0, // llvm.hexagon.M4.vrmpyoh.s0
  813. hexagon_M4_vrmpyoh_s1, // llvm.hexagon.M4.vrmpyoh.s1
  814. hexagon_M4_xor_and, // llvm.hexagon.M4.xor.and
  815. hexagon_M4_xor_andn, // llvm.hexagon.M4.xor.andn
  816. hexagon_M4_xor_or, // llvm.hexagon.M4.xor.or
  817. hexagon_M4_xor_xacc, // llvm.hexagon.M4.xor.xacc
  818. hexagon_M5_vdmacbsu, // llvm.hexagon.M5.vdmacbsu
  819. hexagon_M5_vdmpybsu, // llvm.hexagon.M5.vdmpybsu
  820. hexagon_M5_vmacbsu, // llvm.hexagon.M5.vmacbsu
  821. hexagon_M5_vmacbuu, // llvm.hexagon.M5.vmacbuu
  822. hexagon_M5_vmpybsu, // llvm.hexagon.M5.vmpybsu
  823. hexagon_M5_vmpybuu, // llvm.hexagon.M5.vmpybuu
  824. hexagon_M5_vrmacbsu, // llvm.hexagon.M5.vrmacbsu
  825. hexagon_M5_vrmacbuu, // llvm.hexagon.M5.vrmacbuu
  826. hexagon_M5_vrmpybsu, // llvm.hexagon.M5.vrmpybsu
  827. hexagon_M5_vrmpybuu, // llvm.hexagon.M5.vrmpybuu
  828. hexagon_S2_addasl_rrri, // llvm.hexagon.S2.addasl.rrri
  829. hexagon_S2_asl_i_p, // llvm.hexagon.S2.asl.i.p
  830. hexagon_S2_asl_i_p_acc, // llvm.hexagon.S2.asl.i.p.acc
  831. hexagon_S2_asl_i_p_and, // llvm.hexagon.S2.asl.i.p.and
  832. hexagon_S2_asl_i_p_nac, // llvm.hexagon.S2.asl.i.p.nac
  833. hexagon_S2_asl_i_p_or, // llvm.hexagon.S2.asl.i.p.or
  834. hexagon_S2_asl_i_p_xacc, // llvm.hexagon.S2.asl.i.p.xacc
  835. hexagon_S2_asl_i_r, // llvm.hexagon.S2.asl.i.r
  836. hexagon_S2_asl_i_r_acc, // llvm.hexagon.S2.asl.i.r.acc
  837. hexagon_S2_asl_i_r_and, // llvm.hexagon.S2.asl.i.r.and
  838. hexagon_S2_asl_i_r_nac, // llvm.hexagon.S2.asl.i.r.nac
  839. hexagon_S2_asl_i_r_or, // llvm.hexagon.S2.asl.i.r.or
  840. hexagon_S2_asl_i_r_sat, // llvm.hexagon.S2.asl.i.r.sat
  841. hexagon_S2_asl_i_r_xacc, // llvm.hexagon.S2.asl.i.r.xacc
  842. hexagon_S2_asl_i_vh, // llvm.hexagon.S2.asl.i.vh
  843. hexagon_S2_asl_i_vw, // llvm.hexagon.S2.asl.i.vw
  844. hexagon_S2_asl_r_p, // llvm.hexagon.S2.asl.r.p
  845. hexagon_S2_asl_r_p_acc, // llvm.hexagon.S2.asl.r.p.acc
  846. hexagon_S2_asl_r_p_and, // llvm.hexagon.S2.asl.r.p.and
  847. hexagon_S2_asl_r_p_nac, // llvm.hexagon.S2.asl.r.p.nac
  848. hexagon_S2_asl_r_p_or, // llvm.hexagon.S2.asl.r.p.or
  849. hexagon_S2_asl_r_p_xor, // llvm.hexagon.S2.asl.r.p.xor
  850. hexagon_S2_asl_r_r, // llvm.hexagon.S2.asl.r.r
  851. hexagon_S2_asl_r_r_acc, // llvm.hexagon.S2.asl.r.r.acc
  852. hexagon_S2_asl_r_r_and, // llvm.hexagon.S2.asl.r.r.and
  853. hexagon_S2_asl_r_r_nac, // llvm.hexagon.S2.asl.r.r.nac
  854. hexagon_S2_asl_r_r_or, // llvm.hexagon.S2.asl.r.r.or
  855. hexagon_S2_asl_r_r_sat, // llvm.hexagon.S2.asl.r.r.sat
  856. hexagon_S2_asl_r_vh, // llvm.hexagon.S2.asl.r.vh
  857. hexagon_S2_asl_r_vw, // llvm.hexagon.S2.asl.r.vw
  858. hexagon_S2_asr_i_p, // llvm.hexagon.S2.asr.i.p
  859. hexagon_S2_asr_i_p_acc, // llvm.hexagon.S2.asr.i.p.acc
  860. hexagon_S2_asr_i_p_and, // llvm.hexagon.S2.asr.i.p.and
  861. hexagon_S2_asr_i_p_nac, // llvm.hexagon.S2.asr.i.p.nac
  862. hexagon_S2_asr_i_p_or, // llvm.hexagon.S2.asr.i.p.or
  863. hexagon_S2_asr_i_p_rnd, // llvm.hexagon.S2.asr.i.p.rnd
  864. hexagon_S2_asr_i_p_rnd_goodsyntax, // llvm.hexagon.S2.asr.i.p.rnd.goodsyntax
  865. hexagon_S2_asr_i_r, // llvm.hexagon.S2.asr.i.r
  866. hexagon_S2_asr_i_r_acc, // llvm.hexagon.S2.asr.i.r.acc
  867. hexagon_S2_asr_i_r_and, // llvm.hexagon.S2.asr.i.r.and
  868. hexagon_S2_asr_i_r_nac, // llvm.hexagon.S2.asr.i.r.nac
  869. hexagon_S2_asr_i_r_or, // llvm.hexagon.S2.asr.i.r.or
  870. hexagon_S2_asr_i_r_rnd, // llvm.hexagon.S2.asr.i.r.rnd
  871. hexagon_S2_asr_i_r_rnd_goodsyntax, // llvm.hexagon.S2.asr.i.r.rnd.goodsyntax
  872. hexagon_S2_asr_i_svw_trun, // llvm.hexagon.S2.asr.i.svw.trun
  873. hexagon_S2_asr_i_vh, // llvm.hexagon.S2.asr.i.vh
  874. hexagon_S2_asr_i_vw, // llvm.hexagon.S2.asr.i.vw
  875. hexagon_S2_asr_r_p, // llvm.hexagon.S2.asr.r.p
  876. hexagon_S2_asr_r_p_acc, // llvm.hexagon.S2.asr.r.p.acc
  877. hexagon_S2_asr_r_p_and, // llvm.hexagon.S2.asr.r.p.and
  878. hexagon_S2_asr_r_p_nac, // llvm.hexagon.S2.asr.r.p.nac
  879. hexagon_S2_asr_r_p_or, // llvm.hexagon.S2.asr.r.p.or
  880. hexagon_S2_asr_r_p_xor, // llvm.hexagon.S2.asr.r.p.xor
  881. hexagon_S2_asr_r_r, // llvm.hexagon.S2.asr.r.r
  882. hexagon_S2_asr_r_r_acc, // llvm.hexagon.S2.asr.r.r.acc
  883. hexagon_S2_asr_r_r_and, // llvm.hexagon.S2.asr.r.r.and
  884. hexagon_S2_asr_r_r_nac, // llvm.hexagon.S2.asr.r.r.nac
  885. hexagon_S2_asr_r_r_or, // llvm.hexagon.S2.asr.r.r.or
  886. hexagon_S2_asr_r_r_sat, // llvm.hexagon.S2.asr.r.r.sat
  887. hexagon_S2_asr_r_svw_trun, // llvm.hexagon.S2.asr.r.svw.trun
  888. hexagon_S2_asr_r_vh, // llvm.hexagon.S2.asr.r.vh
  889. hexagon_S2_asr_r_vw, // llvm.hexagon.S2.asr.r.vw
  890. hexagon_S2_brev, // llvm.hexagon.S2.brev
  891. hexagon_S2_brevp, // llvm.hexagon.S2.brevp
  892. hexagon_S2_cl0, // llvm.hexagon.S2.cl0
  893. hexagon_S2_cl0p, // llvm.hexagon.S2.cl0p
  894. hexagon_S2_cl1, // llvm.hexagon.S2.cl1
  895. hexagon_S2_cl1p, // llvm.hexagon.S2.cl1p
  896. hexagon_S2_clb, // llvm.hexagon.S2.clb
  897. hexagon_S2_clbnorm, // llvm.hexagon.S2.clbnorm
  898. hexagon_S2_clbp, // llvm.hexagon.S2.clbp
  899. hexagon_S2_clrbit_i, // llvm.hexagon.S2.clrbit.i
  900. hexagon_S2_clrbit_r, // llvm.hexagon.S2.clrbit.r
  901. hexagon_S2_ct0, // llvm.hexagon.S2.ct0
  902. hexagon_S2_ct0p, // llvm.hexagon.S2.ct0p
  903. hexagon_S2_ct1, // llvm.hexagon.S2.ct1
  904. hexagon_S2_ct1p, // llvm.hexagon.S2.ct1p
  905. hexagon_S2_deinterleave, // llvm.hexagon.S2.deinterleave
  906. hexagon_S2_extractu, // llvm.hexagon.S2.extractu
  907. hexagon_S2_extractu_rp, // llvm.hexagon.S2.extractu.rp
  908. hexagon_S2_extractup, // llvm.hexagon.S2.extractup
  909. hexagon_S2_extractup_rp, // llvm.hexagon.S2.extractup.rp
  910. hexagon_S2_insert, // llvm.hexagon.S2.insert
  911. hexagon_S2_insert_rp, // llvm.hexagon.S2.insert.rp
  912. hexagon_S2_insertp, // llvm.hexagon.S2.insertp
  913. hexagon_S2_insertp_rp, // llvm.hexagon.S2.insertp.rp
  914. hexagon_S2_interleave, // llvm.hexagon.S2.interleave
  915. hexagon_S2_lfsp, // llvm.hexagon.S2.lfsp
  916. hexagon_S2_lsl_r_p, // llvm.hexagon.S2.lsl.r.p
  917. hexagon_S2_lsl_r_p_acc, // llvm.hexagon.S2.lsl.r.p.acc
  918. hexagon_S2_lsl_r_p_and, // llvm.hexagon.S2.lsl.r.p.and
  919. hexagon_S2_lsl_r_p_nac, // llvm.hexagon.S2.lsl.r.p.nac
  920. hexagon_S2_lsl_r_p_or, // llvm.hexagon.S2.lsl.r.p.or
  921. hexagon_S2_lsl_r_p_xor, // llvm.hexagon.S2.lsl.r.p.xor
  922. hexagon_S2_lsl_r_r, // llvm.hexagon.S2.lsl.r.r
  923. hexagon_S2_lsl_r_r_acc, // llvm.hexagon.S2.lsl.r.r.acc
  924. hexagon_S2_lsl_r_r_and, // llvm.hexagon.S2.lsl.r.r.and
  925. hexagon_S2_lsl_r_r_nac, // llvm.hexagon.S2.lsl.r.r.nac
  926. hexagon_S2_lsl_r_r_or, // llvm.hexagon.S2.lsl.r.r.or
  927. hexagon_S2_lsl_r_vh, // llvm.hexagon.S2.lsl.r.vh
  928. hexagon_S2_lsl_r_vw, // llvm.hexagon.S2.lsl.r.vw
  929. hexagon_S2_lsr_i_p, // llvm.hexagon.S2.lsr.i.p
  930. hexagon_S2_lsr_i_p_acc, // llvm.hexagon.S2.lsr.i.p.acc
  931. hexagon_S2_lsr_i_p_and, // llvm.hexagon.S2.lsr.i.p.and
  932. hexagon_S2_lsr_i_p_nac, // llvm.hexagon.S2.lsr.i.p.nac
  933. hexagon_S2_lsr_i_p_or, // llvm.hexagon.S2.lsr.i.p.or
  934. hexagon_S2_lsr_i_p_xacc, // llvm.hexagon.S2.lsr.i.p.xacc
  935. hexagon_S2_lsr_i_r, // llvm.hexagon.S2.lsr.i.r
  936. hexagon_S2_lsr_i_r_acc, // llvm.hexagon.S2.lsr.i.r.acc
  937. hexagon_S2_lsr_i_r_and, // llvm.hexagon.S2.lsr.i.r.and
  938. hexagon_S2_lsr_i_r_nac, // llvm.hexagon.S2.lsr.i.r.nac
  939. hexagon_S2_lsr_i_r_or, // llvm.hexagon.S2.lsr.i.r.or
  940. hexagon_S2_lsr_i_r_xacc, // llvm.hexagon.S2.lsr.i.r.xacc
  941. hexagon_S2_lsr_i_vh, // llvm.hexagon.S2.lsr.i.vh
  942. hexagon_S2_lsr_i_vw, // llvm.hexagon.S2.lsr.i.vw
  943. hexagon_S2_lsr_r_p, // llvm.hexagon.S2.lsr.r.p
  944. hexagon_S2_lsr_r_p_acc, // llvm.hexagon.S2.lsr.r.p.acc
  945. hexagon_S2_lsr_r_p_and, // llvm.hexagon.S2.lsr.r.p.and
  946. hexagon_S2_lsr_r_p_nac, // llvm.hexagon.S2.lsr.r.p.nac
  947. hexagon_S2_lsr_r_p_or, // llvm.hexagon.S2.lsr.r.p.or
  948. hexagon_S2_lsr_r_p_xor, // llvm.hexagon.S2.lsr.r.p.xor
  949. hexagon_S2_lsr_r_r, // llvm.hexagon.S2.lsr.r.r
  950. hexagon_S2_lsr_r_r_acc, // llvm.hexagon.S2.lsr.r.r.acc
  951. hexagon_S2_lsr_r_r_and, // llvm.hexagon.S2.lsr.r.r.and
  952. hexagon_S2_lsr_r_r_nac, // llvm.hexagon.S2.lsr.r.r.nac
  953. hexagon_S2_lsr_r_r_or, // llvm.hexagon.S2.lsr.r.r.or
  954. hexagon_S2_lsr_r_vh, // llvm.hexagon.S2.lsr.r.vh
  955. hexagon_S2_lsr_r_vw, // llvm.hexagon.S2.lsr.r.vw
  956. hexagon_S2_packhl, // llvm.hexagon.S2.packhl
  957. hexagon_S2_parityp, // llvm.hexagon.S2.parityp
  958. hexagon_S2_setbit_i, // llvm.hexagon.S2.setbit.i
  959. hexagon_S2_setbit_r, // llvm.hexagon.S2.setbit.r
  960. hexagon_S2_shuffeb, // llvm.hexagon.S2.shuffeb
  961. hexagon_S2_shuffeh, // llvm.hexagon.S2.shuffeh
  962. hexagon_S2_shuffob, // llvm.hexagon.S2.shuffob
  963. hexagon_S2_shuffoh, // llvm.hexagon.S2.shuffoh
  964. hexagon_S2_svsathb, // llvm.hexagon.S2.svsathb
  965. hexagon_S2_svsathub, // llvm.hexagon.S2.svsathub
  966. hexagon_S2_tableidxb_goodsyntax, // llvm.hexagon.S2.tableidxb.goodsyntax
  967. hexagon_S2_tableidxd_goodsyntax, // llvm.hexagon.S2.tableidxd.goodsyntax
  968. hexagon_S2_tableidxh_goodsyntax, // llvm.hexagon.S2.tableidxh.goodsyntax
  969. hexagon_S2_tableidxw_goodsyntax, // llvm.hexagon.S2.tableidxw.goodsyntax
  970. hexagon_S2_togglebit_i, // llvm.hexagon.S2.togglebit.i
  971. hexagon_S2_togglebit_r, // llvm.hexagon.S2.togglebit.r
  972. hexagon_S2_tstbit_i, // llvm.hexagon.S2.tstbit.i
  973. hexagon_S2_tstbit_r, // llvm.hexagon.S2.tstbit.r
  974. hexagon_S2_valignib, // llvm.hexagon.S2.valignib
  975. hexagon_S2_valignrb, // llvm.hexagon.S2.valignrb
  976. hexagon_S2_vcnegh, // llvm.hexagon.S2.vcnegh
  977. hexagon_S2_vcrotate, // llvm.hexagon.S2.vcrotate
  978. hexagon_S2_vrcnegh, // llvm.hexagon.S2.vrcnegh
  979. hexagon_S2_vrndpackwh, // llvm.hexagon.S2.vrndpackwh
  980. hexagon_S2_vrndpackwhs, // llvm.hexagon.S2.vrndpackwhs
  981. hexagon_S2_vsathb, // llvm.hexagon.S2.vsathb
  982. hexagon_S2_vsathb_nopack, // llvm.hexagon.S2.vsathb.nopack
  983. hexagon_S2_vsathub, // llvm.hexagon.S2.vsathub
  984. hexagon_S2_vsathub_nopack, // llvm.hexagon.S2.vsathub.nopack
  985. hexagon_S2_vsatwh, // llvm.hexagon.S2.vsatwh
  986. hexagon_S2_vsatwh_nopack, // llvm.hexagon.S2.vsatwh.nopack
  987. hexagon_S2_vsatwuh, // llvm.hexagon.S2.vsatwuh
  988. hexagon_S2_vsatwuh_nopack, // llvm.hexagon.S2.vsatwuh.nopack
  989. hexagon_S2_vsplatrb, // llvm.hexagon.S2.vsplatrb
  990. hexagon_S2_vsplatrh, // llvm.hexagon.S2.vsplatrh
  991. hexagon_S2_vspliceib, // llvm.hexagon.S2.vspliceib
  992. hexagon_S2_vsplicerb, // llvm.hexagon.S2.vsplicerb
  993. hexagon_S2_vsxtbh, // llvm.hexagon.S2.vsxtbh
  994. hexagon_S2_vsxthw, // llvm.hexagon.S2.vsxthw
  995. hexagon_S2_vtrunehb, // llvm.hexagon.S2.vtrunehb
  996. hexagon_S2_vtrunewh, // llvm.hexagon.S2.vtrunewh
  997. hexagon_S2_vtrunohb, // llvm.hexagon.S2.vtrunohb
  998. hexagon_S2_vtrunowh, // llvm.hexagon.S2.vtrunowh
  999. hexagon_S2_vzxtbh, // llvm.hexagon.S2.vzxtbh
  1000. hexagon_S2_vzxthw, // llvm.hexagon.S2.vzxthw
  1001. hexagon_S4_addaddi, // llvm.hexagon.S4.addaddi
  1002. hexagon_S4_addi_asl_ri, // llvm.hexagon.S4.addi.asl.ri
  1003. hexagon_S4_addi_lsr_ri, // llvm.hexagon.S4.addi.lsr.ri
  1004. hexagon_S4_andi_asl_ri, // llvm.hexagon.S4.andi.asl.ri
  1005. hexagon_S4_andi_lsr_ri, // llvm.hexagon.S4.andi.lsr.ri
  1006. hexagon_S4_clbaddi, // llvm.hexagon.S4.clbaddi
  1007. hexagon_S4_clbpaddi, // llvm.hexagon.S4.clbpaddi
  1008. hexagon_S4_clbpnorm, // llvm.hexagon.S4.clbpnorm
  1009. hexagon_S4_extract, // llvm.hexagon.S4.extract
  1010. hexagon_S4_extract_rp, // llvm.hexagon.S4.extract.rp
  1011. hexagon_S4_extractp, // llvm.hexagon.S4.extractp
  1012. hexagon_S4_extractp_rp, // llvm.hexagon.S4.extractp.rp
  1013. hexagon_S4_lsli, // llvm.hexagon.S4.lsli
  1014. hexagon_S4_ntstbit_i, // llvm.hexagon.S4.ntstbit.i
  1015. hexagon_S4_ntstbit_r, // llvm.hexagon.S4.ntstbit.r
  1016. hexagon_S4_or_andi, // llvm.hexagon.S4.or.andi
  1017. hexagon_S4_or_andix, // llvm.hexagon.S4.or.andix
  1018. hexagon_S4_or_ori, // llvm.hexagon.S4.or.ori
  1019. hexagon_S4_ori_asl_ri, // llvm.hexagon.S4.ori.asl.ri
  1020. hexagon_S4_ori_lsr_ri, // llvm.hexagon.S4.ori.lsr.ri
  1021. hexagon_S4_parity, // llvm.hexagon.S4.parity
  1022. hexagon_S4_subaddi, // llvm.hexagon.S4.subaddi
  1023. hexagon_S4_subi_asl_ri, // llvm.hexagon.S4.subi.asl.ri
  1024. hexagon_S4_subi_lsr_ri, // llvm.hexagon.S4.subi.lsr.ri
  1025. hexagon_S4_vrcrotate, // llvm.hexagon.S4.vrcrotate
  1026. hexagon_S4_vrcrotate_acc, // llvm.hexagon.S4.vrcrotate.acc
  1027. hexagon_S4_vxaddsubh, // llvm.hexagon.S4.vxaddsubh
  1028. hexagon_S4_vxaddsubhr, // llvm.hexagon.S4.vxaddsubhr
  1029. hexagon_S4_vxaddsubw, // llvm.hexagon.S4.vxaddsubw
  1030. hexagon_S4_vxsubaddh, // llvm.hexagon.S4.vxsubaddh
  1031. hexagon_S4_vxsubaddhr, // llvm.hexagon.S4.vxsubaddhr
  1032. hexagon_S4_vxsubaddw, // llvm.hexagon.S4.vxsubaddw
  1033. hexagon_S5_asrhub_rnd_sat_goodsyntax, // llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax
  1034. hexagon_S5_asrhub_sat, // llvm.hexagon.S5.asrhub.sat
  1035. hexagon_S5_popcountp, // llvm.hexagon.S5.popcountp
  1036. hexagon_S5_vasrhrnd_goodsyntax, // llvm.hexagon.S5.vasrhrnd.goodsyntax
  1037. hexagon_SI_to_SXTHI_asrh, // llvm.hexagon.SI.to.SXTHI.asrh
  1038. hexagon_circ_ldd, // llvm.hexagon.circ.ldd
  1039. init_trampoline, // llvm.init.trampoline
  1040. invariant_end, // llvm.invariant.end
  1041. invariant_start, // llvm.invariant.start
  1042. lifetime_end, // llvm.lifetime.end
  1043. lifetime_start, // llvm.lifetime.start
  1044. log, // llvm.log
  1045. log10, // llvm.log10
  1046. log2, // llvm.log2
  1047. longjmp, // llvm.longjmp
  1048. memcpy, // llvm.memcpy
  1049. memmove, // llvm.memmove
  1050. memset, // llvm.memset
  1051. mips_absq_s_ph, // llvm.mips.absq.s.ph
  1052. mips_absq_s_qb, // llvm.mips.absq.s.qb
  1053. mips_absq_s_w, // llvm.mips.absq.s.w
  1054. mips_addq_ph, // llvm.mips.addq.ph
  1055. mips_addq_s_ph, // llvm.mips.addq.s.ph
  1056. mips_addq_s_w, // llvm.mips.addq.s.w
  1057. mips_addqh_ph, // llvm.mips.addqh.ph
  1058. mips_addqh_r_ph, // llvm.mips.addqh.r.ph
  1059. mips_addqh_r_w, // llvm.mips.addqh.r.w
  1060. mips_addqh_w, // llvm.mips.addqh.w
  1061. mips_addsc, // llvm.mips.addsc
  1062. mips_addu_ph, // llvm.mips.addu.ph
  1063. mips_addu_qb, // llvm.mips.addu.qb
  1064. mips_addu_s_ph, // llvm.mips.addu.s.ph
  1065. mips_addu_s_qb, // llvm.mips.addu.s.qb
  1066. mips_adduh_qb, // llvm.mips.adduh.qb
  1067. mips_adduh_r_qb, // llvm.mips.adduh.r.qb
  1068. mips_addwc, // llvm.mips.addwc
  1069. mips_append, // llvm.mips.append
  1070. mips_balign, // llvm.mips.balign
  1071. mips_bitrev, // llvm.mips.bitrev
  1072. mips_bposge32, // llvm.mips.bposge32
  1073. mips_cmp_eq_ph, // llvm.mips.cmp.eq.ph
  1074. mips_cmp_le_ph, // llvm.mips.cmp.le.ph
  1075. mips_cmp_lt_ph, // llvm.mips.cmp.lt.ph
  1076. mips_cmpgdu_eq_qb, // llvm.mips.cmpgdu.eq.qb
  1077. mips_cmpgdu_le_qb, // llvm.mips.cmpgdu.le.qb
  1078. mips_cmpgdu_lt_qb, // llvm.mips.cmpgdu.lt.qb
  1079. mips_cmpgu_eq_qb, // llvm.mips.cmpgu.eq.qb
  1080. mips_cmpgu_le_qb, // llvm.mips.cmpgu.le.qb
  1081. mips_cmpgu_lt_qb, // llvm.mips.cmpgu.lt.qb
  1082. mips_cmpu_eq_qb, // llvm.mips.cmpu.eq.qb
  1083. mips_cmpu_le_qb, // llvm.mips.cmpu.le.qb
  1084. mips_cmpu_lt_qb, // llvm.mips.cmpu.lt.qb
  1085. mips_dpa_w_ph, // llvm.mips.dpa.w.ph
  1086. mips_dpaq_s_w_ph, // llvm.mips.dpaq.s.w.ph
  1087. mips_dpaq_sa_l_w, // llvm.mips.dpaq.sa.l.w
  1088. mips_dpaqx_s_w_ph, // llvm.mips.dpaqx.s.w.ph
  1089. mips_dpaqx_sa_w_ph, // llvm.mips.dpaqx.sa.w.ph
  1090. mips_dpau_h_qbl, // llvm.mips.dpau.h.qbl
  1091. mips_dpau_h_qbr, // llvm.mips.dpau.h.qbr
  1092. mips_dpax_w_ph, // llvm.mips.dpax.w.ph
  1093. mips_dps_w_ph, // llvm.mips.dps.w.ph
  1094. mips_dpsq_s_w_ph, // llvm.mips.dpsq.s.w.ph
  1095. mips_dpsq_sa_l_w, // llvm.mips.dpsq.sa.l.w
  1096. mips_dpsqx_s_w_ph, // llvm.mips.dpsqx.s.w.ph
  1097. mips_dpsqx_sa_w_ph, // llvm.mips.dpsqx.sa.w.ph
  1098. mips_dpsu_h_qbl, // llvm.mips.dpsu.h.qbl
  1099. mips_dpsu_h_qbr, // llvm.mips.dpsu.h.qbr
  1100. mips_dpsx_w_ph, // llvm.mips.dpsx.w.ph
  1101. mips_extp, // llvm.mips.extp
  1102. mips_extpdp, // llvm.mips.extpdp
  1103. mips_extr_r_w, // llvm.mips.extr.r.w
  1104. mips_extr_rs_w, // llvm.mips.extr.rs.w
  1105. mips_extr_s_h, // llvm.mips.extr.s.h
  1106. mips_extr_w, // llvm.mips.extr.w
  1107. mips_insv, // llvm.mips.insv
  1108. mips_lbux, // llvm.mips.lbux
  1109. mips_lhx, // llvm.mips.lhx
  1110. mips_lwx, // llvm.mips.lwx
  1111. mips_madd, // llvm.mips.madd
  1112. mips_maddu, // llvm.mips.maddu
  1113. mips_maq_s_w_phl, // llvm.mips.maq.s.w.phl
  1114. mips_maq_s_w_phr, // llvm.mips.maq.s.w.phr
  1115. mips_maq_sa_w_phl, // llvm.mips.maq.sa.w.phl
  1116. mips_maq_sa_w_phr, // llvm.mips.maq.sa.w.phr
  1117. mips_modsub, // llvm.mips.modsub
  1118. mips_msub, // llvm.mips.msub
  1119. mips_msubu, // llvm.mips.msubu
  1120. mips_mthlip, // llvm.mips.mthlip
  1121. mips_mul_ph, // llvm.mips.mul.ph
  1122. mips_mul_s_ph, // llvm.mips.mul.s.ph
  1123. mips_muleq_s_w_phl, // llvm.mips.muleq.s.w.phl
  1124. mips_muleq_s_w_phr, // llvm.mips.muleq.s.w.phr
  1125. mips_muleu_s_ph_qbl, // llvm.mips.muleu.s.ph.qbl
  1126. mips_muleu_s_ph_qbr, // llvm.mips.muleu.s.ph.qbr
  1127. mips_mulq_rs_ph, // llvm.mips.mulq.rs.ph
  1128. mips_mulq_rs_w, // llvm.mips.mulq.rs.w
  1129. mips_mulq_s_ph, // llvm.mips.mulq.s.ph
  1130. mips_mulq_s_w, // llvm.mips.mulq.s.w
  1131. mips_mulsa_w_ph, // llvm.mips.mulsa.w.ph
  1132. mips_mulsaq_s_w_ph, // llvm.mips.mulsaq.s.w.ph
  1133. mips_mult, // llvm.mips.mult
  1134. mips_multu, // llvm.mips.multu
  1135. mips_packrl_ph, // llvm.mips.packrl.ph
  1136. mips_pick_ph, // llvm.mips.pick.ph
  1137. mips_pick_qb, // llvm.mips.pick.qb
  1138. mips_preceq_w_phl, // llvm.mips.preceq.w.phl
  1139. mips_preceq_w_phr, // llvm.mips.preceq.w.phr
  1140. mips_precequ_ph_qbl, // llvm.mips.precequ.ph.qbl
  1141. mips_precequ_ph_qbla, // llvm.mips.precequ.ph.qbla
  1142. mips_precequ_ph_qbr, // llvm.mips.precequ.ph.qbr
  1143. mips_precequ_ph_qbra, // llvm.mips.precequ.ph.qbra
  1144. mips_preceu_ph_qbl, // llvm.mips.preceu.ph.qbl
  1145. mips_preceu_ph_qbla, // llvm.mips.preceu.ph.qbla
  1146. mips_preceu_ph_qbr, // llvm.mips.preceu.ph.qbr
  1147. mips_preceu_ph_qbra, // llvm.mips.preceu.ph.qbra
  1148. mips_precr_qb_ph, // llvm.mips.precr.qb.ph
  1149. mips_precr_sra_ph_w, // llvm.mips.precr.sra.ph.w
  1150. mips_precr_sra_r_ph_w, // llvm.mips.precr.sra.r.ph.w
  1151. mips_precrq_ph_w, // llvm.mips.precrq.ph.w
  1152. mips_precrq_qb_ph, // llvm.mips.precrq.qb.ph
  1153. mips_precrq_rs_ph_w, // llvm.mips.precrq.rs.ph.w
  1154. mips_precrqu_s_qb_ph, // llvm.mips.precrqu.s.qb.ph
  1155. mips_prepend, // llvm.mips.prepend
  1156. mips_raddu_w_qb, // llvm.mips.raddu.w.qb
  1157. mips_rddsp, // llvm.mips.rddsp
  1158. mips_repl_ph, // llvm.mips.repl.ph
  1159. mips_repl_qb, // llvm.mips.repl.qb
  1160. mips_shilo, // llvm.mips.shilo
  1161. mips_shll_ph, // llvm.mips.shll.ph
  1162. mips_shll_qb, // llvm.mips.shll.qb
  1163. mips_shll_s_ph, // llvm.mips.shll.s.ph
  1164. mips_shll_s_w, // llvm.mips.shll.s.w
  1165. mips_shra_ph, // llvm.mips.shra.ph
  1166. mips_shra_qb, // llvm.mips.shra.qb
  1167. mips_shra_r_ph, // llvm.mips.shra.r.ph
  1168. mips_shra_r_qb, // llvm.mips.shra.r.qb
  1169. mips_shra_r_w, // llvm.mips.shra.r.w
  1170. mips_shrl_ph, // llvm.mips.shrl.ph
  1171. mips_shrl_qb, // llvm.mips.shrl.qb
  1172. mips_subq_ph, // llvm.mips.subq.ph
  1173. mips_subq_s_ph, // llvm.mips.subq.s.ph
  1174. mips_subq_s_w, // llvm.mips.subq.s.w
  1175. mips_subqh_ph, // llvm.mips.subqh.ph
  1176. mips_subqh_r_ph, // llvm.mips.subqh.r.ph
  1177. mips_subqh_r_w, // llvm.mips.subqh.r.w
  1178. mips_subqh_w, // llvm.mips.subqh.w
  1179. mips_subu_ph, // llvm.mips.subu.ph
  1180. mips_subu_qb, // llvm.mips.subu.qb
  1181. mips_subu_s_ph, // llvm.mips.subu.s.ph
  1182. mips_subu_s_qb, // llvm.mips.subu.s.qb
  1183. mips_subuh_qb, // llvm.mips.subuh.qb
  1184. mips_subuh_r_qb, // llvm.mips.subuh.r.qb
  1185. mips_wrdsp, // llvm.mips.wrdsp
  1186. nearbyint, // llvm.nearbyint
  1187. nvvm_abs_i, // llvm.nvvm.abs.i
  1188. nvvm_abs_ll, // llvm.nvvm.abs.ll
  1189. nvvm_add_rm_d, // llvm.nvvm.add.rm.d
  1190. nvvm_add_rm_f, // llvm.nvvm.add.rm.f
  1191. nvvm_add_rm_ftz_f, // llvm.nvvm.add.rm.ftz.f
  1192. nvvm_add_rn_d, // llvm.nvvm.add.rn.d
  1193. nvvm_add_rn_f, // llvm.nvvm.add.rn.f
  1194. nvvm_add_rn_ftz_f, // llvm.nvvm.add.rn.ftz.f
  1195. nvvm_add_rp_d, // llvm.nvvm.add.rp.d
  1196. nvvm_add_rp_f, // llvm.nvvm.add.rp.f
  1197. nvvm_add_rp_ftz_f, // llvm.nvvm.add.rp.ftz.f
  1198. nvvm_add_rz_d, // llvm.nvvm.add.rz.d
  1199. nvvm_add_rz_f, // llvm.nvvm.add.rz.f
  1200. nvvm_add_rz_ftz_f, // llvm.nvvm.add.rz.ftz.f
  1201. nvvm_atomic_load_add_f32, // llvm.nvvm.atomic.load.add.f32
  1202. nvvm_atomic_load_dec_32, // llvm.nvvm.atomic.load.dec.32
  1203. nvvm_atomic_load_inc_32, // llvm.nvvm.atomic.load.inc.32
  1204. nvvm_barrier0, // llvm.nvvm.barrier0
  1205. nvvm_barrier0_and, // llvm.nvvm.barrier0.and
  1206. nvvm_barrier0_or, // llvm.nvvm.barrier0.or
  1207. nvvm_barrier0_popc, // llvm.nvvm.barrier0.popc
  1208. nvvm_bitcast_d2ll, // llvm.nvvm.bitcast.d2ll
  1209. nvvm_bitcast_f2i, // llvm.nvvm.bitcast.f2i
  1210. nvvm_bitcast_i2f, // llvm.nvvm.bitcast.i2f
  1211. nvvm_bitcast_ll2d, // llvm.nvvm.bitcast.ll2d
  1212. nvvm_brev32, // llvm.nvvm.brev32
  1213. nvvm_brev64, // llvm.nvvm.brev64
  1214. nvvm_ceil_d, // llvm.nvvm.ceil.d
  1215. nvvm_ceil_f, // llvm.nvvm.ceil.f
  1216. nvvm_ceil_ftz_f, // llvm.nvvm.ceil.ftz.f
  1217. nvvm_clz_i, // llvm.nvvm.clz.i
  1218. nvvm_clz_ll, // llvm.nvvm.clz.ll
  1219. nvvm_compiler_error, // llvm.nvvm.compiler.error
  1220. nvvm_compiler_warn, // llvm.nvvm.compiler.warn
  1221. nvvm_cos_approx_f, // llvm.nvvm.cos.approx.f
  1222. nvvm_cos_approx_ftz_f, // llvm.nvvm.cos.approx.ftz.f
  1223. nvvm_d2f_rm, // llvm.nvvm.d2f.rm
  1224. nvvm_d2f_rm_ftz, // llvm.nvvm.d2f.rm.ftz
  1225. nvvm_d2f_rn, // llvm.nvvm.d2f.rn
  1226. nvvm_d2f_rn_ftz, // llvm.nvvm.d2f.rn.ftz
  1227. nvvm_d2f_rp, // llvm.nvvm.d2f.rp
  1228. nvvm_d2f_rp_ftz, // llvm.nvvm.d2f.rp.ftz
  1229. nvvm_d2f_rz, // llvm.nvvm.d2f.rz
  1230. nvvm_d2f_rz_ftz, // llvm.nvvm.d2f.rz.ftz
  1231. nvvm_d2i_hi, // llvm.nvvm.d2i.hi
  1232. nvvm_d2i_lo, // llvm.nvvm.d2i.lo
  1233. nvvm_d2i_rm, // llvm.nvvm.d2i.rm
  1234. nvvm_d2i_rn, // llvm.nvvm.d2i.rn
  1235. nvvm_d2i_rp, // llvm.nvvm.d2i.rp
  1236. nvvm_d2i_rz, // llvm.nvvm.d2i.rz
  1237. nvvm_d2ll_rm, // llvm.nvvm.d2ll.rm
  1238. nvvm_d2ll_rn, // llvm.nvvm.d2ll.rn
  1239. nvvm_d2ll_rp, // llvm.nvvm.d2ll.rp
  1240. nvvm_d2ll_rz, // llvm.nvvm.d2ll.rz
  1241. nvvm_d2ui_rm, // llvm.nvvm.d2ui.rm
  1242. nvvm_d2ui_rn, // llvm.nvvm.d2ui.rn
  1243. nvvm_d2ui_rp, // llvm.nvvm.d2ui.rp
  1244. nvvm_d2ui_rz, // llvm.nvvm.d2ui.rz
  1245. nvvm_d2ull_rm, // llvm.nvvm.d2ull.rm
  1246. nvvm_d2ull_rn, // llvm.nvvm.d2ull.rn
  1247. nvvm_d2ull_rp, // llvm.nvvm.d2ull.rp
  1248. nvvm_d2ull_rz, // llvm.nvvm.d2ull.rz
  1249. nvvm_div_approx_f, // llvm.nvvm.div.approx.f
  1250. nvvm_div_approx_ftz_f, // llvm.nvvm.div.approx.ftz.f
  1251. nvvm_div_rm_d, // llvm.nvvm.div.rm.d
  1252. nvvm_div_rm_f, // llvm.nvvm.div.rm.f
  1253. nvvm_div_rm_ftz_f, // llvm.nvvm.div.rm.ftz.f
  1254. nvvm_div_rn_d, // llvm.nvvm.div.rn.d
  1255. nvvm_div_rn_f, // llvm.nvvm.div.rn.f
  1256. nvvm_div_rn_ftz_f, // llvm.nvvm.div.rn.ftz.f
  1257. nvvm_div_rp_d, // llvm.nvvm.div.rp.d
  1258. nvvm_div_rp_f, // llvm.nvvm.div.rp.f
  1259. nvvm_div_rp_ftz_f, // llvm.nvvm.div.rp.ftz.f
  1260. nvvm_div_rz_d, // llvm.nvvm.div.rz.d
  1261. nvvm_div_rz_f, // llvm.nvvm.div.rz.f
  1262. nvvm_div_rz_ftz_f, // llvm.nvvm.div.rz.ftz.f
  1263. nvvm_ex2_approx_d, // llvm.nvvm.ex2.approx.d
  1264. nvvm_ex2_approx_f, // llvm.nvvm.ex2.approx.f
  1265. nvvm_ex2_approx_ftz_f, // llvm.nvvm.ex2.approx.ftz.f
  1266. nvvm_f2h_rn, // llvm.nvvm.f2h.rn
  1267. nvvm_f2h_rn_ftz, // llvm.nvvm.f2h.rn.ftz
  1268. nvvm_f2i_rm, // llvm.nvvm.f2i.rm
  1269. nvvm_f2i_rm_ftz, // llvm.nvvm.f2i.rm.ftz
  1270. nvvm_f2i_rn, // llvm.nvvm.f2i.rn
  1271. nvvm_f2i_rn_ftz, // llvm.nvvm.f2i.rn.ftz
  1272. nvvm_f2i_rp, // llvm.nvvm.f2i.rp
  1273. nvvm_f2i_rp_ftz, // llvm.nvvm.f2i.rp.ftz
  1274. nvvm_f2i_rz, // llvm.nvvm.f2i.rz
  1275. nvvm_f2i_rz_ftz, // llvm.nvvm.f2i.rz.ftz
  1276. nvvm_f2ll_rm, // llvm.nvvm.f2ll.rm
  1277. nvvm_f2ll_rm_ftz, // llvm.nvvm.f2ll.rm.ftz
  1278. nvvm_f2ll_rn, // llvm.nvvm.f2ll.rn
  1279. nvvm_f2ll_rn_ftz, // llvm.nvvm.f2ll.rn.ftz
  1280. nvvm_f2ll_rp, // llvm.nvvm.f2ll.rp
  1281. nvvm_f2ll_rp_ftz, // llvm.nvvm.f2ll.rp.ftz
  1282. nvvm_f2ll_rz, // llvm.nvvm.f2ll.rz
  1283. nvvm_f2ll_rz_ftz, // llvm.nvvm.f2ll.rz.ftz
  1284. nvvm_f2ui_rm, // llvm.nvvm.f2ui.rm
  1285. nvvm_f2ui_rm_ftz, // llvm.nvvm.f2ui.rm.ftz
  1286. nvvm_f2ui_rn, // llvm.nvvm.f2ui.rn
  1287. nvvm_f2ui_rn_ftz, // llvm.nvvm.f2ui.rn.ftz
  1288. nvvm_f2ui_rp, // llvm.nvvm.f2ui.rp
  1289. nvvm_f2ui_rp_ftz, // llvm.nvvm.f2ui.rp.ftz
  1290. nvvm_f2ui_rz, // llvm.nvvm.f2ui.rz
  1291. nvvm_f2ui_rz_ftz, // llvm.nvvm.f2ui.rz.ftz
  1292. nvvm_f2ull_rm, // llvm.nvvm.f2ull.rm
  1293. nvvm_f2ull_rm_ftz, // llvm.nvvm.f2ull.rm.ftz
  1294. nvvm_f2ull_rn, // llvm.nvvm.f2ull.rn
  1295. nvvm_f2ull_rn_ftz, // llvm.nvvm.f2ull.rn.ftz
  1296. nvvm_f2ull_rp, // llvm.nvvm.f2ull.rp
  1297. nvvm_f2ull_rp_ftz, // llvm.nvvm.f2ull.rp.ftz
  1298. nvvm_f2ull_rz, // llvm.nvvm.f2ull.rz
  1299. nvvm_f2ull_rz_ftz, // llvm.nvvm.f2ull.rz.ftz
  1300. nvvm_fabs_d, // llvm.nvvm.fabs.d
  1301. nvvm_fabs_f, // llvm.nvvm.fabs.f
  1302. nvvm_fabs_ftz_f, // llvm.nvvm.fabs.ftz.f
  1303. nvvm_floor_d, // llvm.nvvm.floor.d
  1304. nvvm_floor_f, // llvm.nvvm.floor.f
  1305. nvvm_floor_ftz_f, // llvm.nvvm.floor.ftz.f
  1306. nvvm_fma_rm_d, // llvm.nvvm.fma.rm.d
  1307. nvvm_fma_rm_f, // llvm.nvvm.fma.rm.f
  1308. nvvm_fma_rm_ftz_f, // llvm.nvvm.fma.rm.ftz.f
  1309. nvvm_fma_rn_d, // llvm.nvvm.fma.rn.d
  1310. nvvm_fma_rn_f, // llvm.nvvm.fma.rn.f
  1311. nvvm_fma_rn_ftz_f, // llvm.nvvm.fma.rn.ftz.f
  1312. nvvm_fma_rp_d, // llvm.nvvm.fma.rp.d
  1313. nvvm_fma_rp_f, // llvm.nvvm.fma.rp.f
  1314. nvvm_fma_rp_ftz_f, // llvm.nvvm.fma.rp.ftz.f
  1315. nvvm_fma_rz_d, // llvm.nvvm.fma.rz.d
  1316. nvvm_fma_rz_f, // llvm.nvvm.fma.rz.f
  1317. nvvm_fma_rz_ftz_f, // llvm.nvvm.fma.rz.ftz.f
  1318. nvvm_fmax_d, // llvm.nvvm.fmax.d
  1319. nvvm_fmax_f, // llvm.nvvm.fmax.f
  1320. nvvm_fmax_ftz_f, // llvm.nvvm.fmax.ftz.f
  1321. nvvm_fmin_d, // llvm.nvvm.fmin.d
  1322. nvvm_fmin_f, // llvm.nvvm.fmin.f
  1323. nvvm_fmin_ftz_f, // llvm.nvvm.fmin.ftz.f
  1324. nvvm_h2f, // llvm.nvvm.h2f
  1325. nvvm_i2d_rm, // llvm.nvvm.i2d.rm
  1326. nvvm_i2d_rn, // llvm.nvvm.i2d.rn
  1327. nvvm_i2d_rp, // llvm.nvvm.i2d.rp
  1328. nvvm_i2d_rz, // llvm.nvvm.i2d.rz
  1329. nvvm_i2f_rm, // llvm.nvvm.i2f.rm
  1330. nvvm_i2f_rn, // llvm.nvvm.i2f.rn
  1331. nvvm_i2f_rp, // llvm.nvvm.i2f.rp
  1332. nvvm_i2f_rz, // llvm.nvvm.i2f.rz
  1333. nvvm_ldg_global_f, // llvm.nvvm.ldg.global.f
  1334. nvvm_ldg_global_i, // llvm.nvvm.ldg.global.i
  1335. nvvm_ldg_global_p, // llvm.nvvm.ldg.global.p
  1336. nvvm_ldu_global_f, // llvm.nvvm.ldu.global.f
  1337. nvvm_ldu_global_i, // llvm.nvvm.ldu.global.i
  1338. nvvm_ldu_global_p, // llvm.nvvm.ldu.global.p
  1339. nvvm_lg2_approx_d, // llvm.nvvm.lg2.approx.d
  1340. nvvm_lg2_approx_f, // llvm.nvvm.lg2.approx.f
  1341. nvvm_lg2_approx_ftz_f, // llvm.nvvm.lg2.approx.ftz.f
  1342. nvvm_ll2d_rm, // llvm.nvvm.ll2d.rm
  1343. nvvm_ll2d_rn, // llvm.nvvm.ll2d.rn
  1344. nvvm_ll2d_rp, // llvm.nvvm.ll2d.rp
  1345. nvvm_ll2d_rz, // llvm.nvvm.ll2d.rz
  1346. nvvm_ll2f_rm, // llvm.nvvm.ll2f.rm
  1347. nvvm_ll2f_rn, // llvm.nvvm.ll2f.rn
  1348. nvvm_ll2f_rp, // llvm.nvvm.ll2f.rp
  1349. nvvm_ll2f_rz, // llvm.nvvm.ll2f.rz
  1350. nvvm_lohi_i2d, // llvm.nvvm.lohi.i2d
  1351. nvvm_max_i, // llvm.nvvm.max.i
  1352. nvvm_max_ll, // llvm.nvvm.max.ll
  1353. nvvm_max_ui, // llvm.nvvm.max.ui
  1354. nvvm_max_ull, // llvm.nvvm.max.ull
  1355. nvvm_membar_cta, // llvm.nvvm.membar.cta
  1356. nvvm_membar_gl, // llvm.nvvm.membar.gl
  1357. nvvm_membar_sys, // llvm.nvvm.membar.sys
  1358. nvvm_min_i, // llvm.nvvm.min.i
  1359. nvvm_min_ll, // llvm.nvvm.min.ll
  1360. nvvm_min_ui, // llvm.nvvm.min.ui
  1361. nvvm_min_ull, // llvm.nvvm.min.ull
  1362. nvvm_move_double, // llvm.nvvm.move.double
  1363. nvvm_move_float, // llvm.nvvm.move.float
  1364. nvvm_move_i16, // llvm.nvvm.move.i16
  1365. nvvm_move_i32, // llvm.nvvm.move.i32
  1366. nvvm_move_i64, // llvm.nvvm.move.i64
  1367. nvvm_move_i8, // llvm.nvvm.move.i8
  1368. nvvm_move_ptr, // llvm.nvvm.move.ptr
  1369. nvvm_mul24_i, // llvm.nvvm.mul24.i
  1370. nvvm_mul24_ui, // llvm.nvvm.mul24.ui
  1371. nvvm_mul_rm_d, // llvm.nvvm.mul.rm.d
  1372. nvvm_mul_rm_f, // llvm.nvvm.mul.rm.f
  1373. nvvm_mul_rm_ftz_f, // llvm.nvvm.mul.rm.ftz.f
  1374. nvvm_mul_rn_d, // llvm.nvvm.mul.rn.d
  1375. nvvm_mul_rn_f, // llvm.nvvm.mul.rn.f
  1376. nvvm_mul_rn_ftz_f, // llvm.nvvm.mul.rn.ftz.f
  1377. nvvm_mul_rp_d, // llvm.nvvm.mul.rp.d
  1378. nvvm_mul_rp_f, // llvm.nvvm.mul.rp.f
  1379. nvvm_mul_rp_ftz_f, // llvm.nvvm.mul.rp.ftz.f
  1380. nvvm_mul_rz_d, // llvm.nvvm.mul.rz.d
  1381. nvvm_mul_rz_f, // llvm.nvvm.mul.rz.f
  1382. nvvm_mul_rz_ftz_f, // llvm.nvvm.mul.rz.ftz.f
  1383. nvvm_mulhi_i, // llvm.nvvm.mulhi.i
  1384. nvvm_mulhi_ll, // llvm.nvvm.mulhi.ll
  1385. nvvm_mulhi_ui, // llvm.nvvm.mulhi.ui
  1386. nvvm_mulhi_ull, // llvm.nvvm.mulhi.ull
  1387. nvvm_popc_i, // llvm.nvvm.popc.i
  1388. nvvm_popc_ll, // llvm.nvvm.popc.ll
  1389. nvvm_prmt, // llvm.nvvm.prmt
  1390. nvvm_ptr_constant_to_gen, // llvm.nvvm.ptr.constant.to.gen
  1391. nvvm_ptr_gen_to_constant, // llvm.nvvm.ptr.gen.to.constant
  1392. nvvm_ptr_gen_to_global, // llvm.nvvm.ptr.gen.to.global
  1393. nvvm_ptr_gen_to_local, // llvm.nvvm.ptr.gen.to.local
  1394. nvvm_ptr_gen_to_param, // llvm.nvvm.ptr.gen.to.param
  1395. nvvm_ptr_gen_to_shared, // llvm.nvvm.ptr.gen.to.shared
  1396. nvvm_ptr_global_to_gen, // llvm.nvvm.ptr.global.to.gen
  1397. nvvm_ptr_local_to_gen, // llvm.nvvm.ptr.local.to.gen
  1398. nvvm_ptr_shared_to_gen, // llvm.nvvm.ptr.shared.to.gen
  1399. nvvm_rcp_approx_ftz_d, // llvm.nvvm.rcp.approx.ftz.d
  1400. nvvm_rcp_rm_d, // llvm.nvvm.rcp.rm.d
  1401. nvvm_rcp_rm_f, // llvm.nvvm.rcp.rm.f
  1402. nvvm_rcp_rm_ftz_f, // llvm.nvvm.rcp.rm.ftz.f
  1403. nvvm_rcp_rn_d, // llvm.nvvm.rcp.rn.d
  1404. nvvm_rcp_rn_f, // llvm.nvvm.rcp.rn.f
  1405. nvvm_rcp_rn_ftz_f, // llvm.nvvm.rcp.rn.ftz.f
  1406. nvvm_rcp_rp_d, // llvm.nvvm.rcp.rp.d
  1407. nvvm_rcp_rp_f, // llvm.nvvm.rcp.rp.f
  1408. nvvm_rcp_rp_ftz_f, // llvm.nvvm.rcp.rp.ftz.f
  1409. nvvm_rcp_rz_d, // llvm.nvvm.rcp.rz.d
  1410. nvvm_rcp_rz_f, // llvm.nvvm.rcp.rz.f
  1411. nvvm_rcp_rz_ftz_f, // llvm.nvvm.rcp.rz.ftz.f
  1412. nvvm_read_ptx_sreg_ctaid_x, // llvm.nvvm.read.ptx.sreg.ctaid.x
  1413. nvvm_read_ptx_sreg_ctaid_y, // llvm.nvvm.read.ptx.sreg.ctaid.y
  1414. nvvm_read_ptx_sreg_ctaid_z, // llvm.nvvm.read.ptx.sreg.ctaid.z
  1415. nvvm_read_ptx_sreg_nctaid_x, // llvm.nvvm.read.ptx.sreg.nctaid.x
  1416. nvvm_read_ptx_sreg_nctaid_y, // llvm.nvvm.read.ptx.sreg.nctaid.y
  1417. nvvm_read_ptx_sreg_nctaid_z, // llvm.nvvm.read.ptx.sreg.nctaid.z
  1418. nvvm_read_ptx_sreg_ntid_x, // llvm.nvvm.read.ptx.sreg.ntid.x
  1419. nvvm_read_ptx_sreg_ntid_y, // llvm.nvvm.read.ptx.sreg.ntid.y
  1420. nvvm_read_ptx_sreg_ntid_z, // llvm.nvvm.read.ptx.sreg.ntid.z
  1421. nvvm_read_ptx_sreg_tid_x, // llvm.nvvm.read.ptx.sreg.tid.x
  1422. nvvm_read_ptx_sreg_tid_y, // llvm.nvvm.read.ptx.sreg.tid.y
  1423. nvvm_read_ptx_sreg_tid_z, // llvm.nvvm.read.ptx.sreg.tid.z
  1424. nvvm_read_ptx_sreg_warpsize, // llvm.nvvm.read.ptx.sreg.warpsize
  1425. nvvm_round_d, // llvm.nvvm.round.d
  1426. nvvm_round_f, // llvm.nvvm.round.f
  1427. nvvm_round_ftz_f, // llvm.nvvm.round.ftz.f
  1428. nvvm_rsqrt_approx_d, // llvm.nvvm.rsqrt.approx.d
  1429. nvvm_rsqrt_approx_f, // llvm.nvvm.rsqrt.approx.f
  1430. nvvm_rsqrt_approx_ftz_f, // llvm.nvvm.rsqrt.approx.ftz.f
  1431. nvvm_sad_i, // llvm.nvvm.sad.i
  1432. nvvm_sad_ui, // llvm.nvvm.sad.ui
  1433. nvvm_saturate_d, // llvm.nvvm.saturate.d
  1434. nvvm_saturate_f, // llvm.nvvm.saturate.f
  1435. nvvm_saturate_ftz_f, // llvm.nvvm.saturate.ftz.f
  1436. nvvm_sin_approx_f, // llvm.nvvm.sin.approx.f
  1437. nvvm_sin_approx_ftz_f, // llvm.nvvm.sin.approx.ftz.f
  1438. nvvm_sqrt_approx_f, // llvm.nvvm.sqrt.approx.f
  1439. nvvm_sqrt_approx_ftz_f, // llvm.nvvm.sqrt.approx.ftz.f
  1440. nvvm_sqrt_rm_d, // llvm.nvvm.sqrt.rm.d
  1441. nvvm_sqrt_rm_f, // llvm.nvvm.sqrt.rm.f
  1442. nvvm_sqrt_rm_ftz_f, // llvm.nvvm.sqrt.rm.ftz.f
  1443. nvvm_sqrt_rn_d, // llvm.nvvm.sqrt.rn.d
  1444. nvvm_sqrt_rn_f, // llvm.nvvm.sqrt.rn.f
  1445. nvvm_sqrt_rn_ftz_f, // llvm.nvvm.sqrt.rn.ftz.f
  1446. nvvm_sqrt_rp_d, // llvm.nvvm.sqrt.rp.d
  1447. nvvm_sqrt_rp_f, // llvm.nvvm.sqrt.rp.f
  1448. nvvm_sqrt_rp_ftz_f, // llvm.nvvm.sqrt.rp.ftz.f
  1449. nvvm_sqrt_rz_d, // llvm.nvvm.sqrt.rz.d
  1450. nvvm_sqrt_rz_f, // llvm.nvvm.sqrt.rz.f
  1451. nvvm_sqrt_rz_ftz_f, // llvm.nvvm.sqrt.rz.ftz.f
  1452. nvvm_trunc_d, // llvm.nvvm.trunc.d
  1453. nvvm_trunc_f, // llvm.nvvm.trunc.f
  1454. nvvm_trunc_ftz_f, // llvm.nvvm.trunc.ftz.f
  1455. nvvm_ui2d_rm, // llvm.nvvm.ui2d.rm
  1456. nvvm_ui2d_rn, // llvm.nvvm.ui2d.rn
  1457. nvvm_ui2d_rp, // llvm.nvvm.ui2d.rp
  1458. nvvm_ui2d_rz, // llvm.nvvm.ui2d.rz
  1459. nvvm_ui2f_rm, // llvm.nvvm.ui2f.rm
  1460. nvvm_ui2f_rn, // llvm.nvvm.ui2f.rn
  1461. nvvm_ui2f_rp, // llvm.nvvm.ui2f.rp
  1462. nvvm_ui2f_rz, // llvm.nvvm.ui2f.rz
  1463. nvvm_ull2d_rm, // llvm.nvvm.ull2d.rm
  1464. nvvm_ull2d_rn, // llvm.nvvm.ull2d.rn
  1465. nvvm_ull2d_rp, // llvm.nvvm.ull2d.rp
  1466. nvvm_ull2d_rz, // llvm.nvvm.ull2d.rz
  1467. nvvm_ull2f_rm, // llvm.nvvm.ull2f.rm
  1468. nvvm_ull2f_rn, // llvm.nvvm.ull2f.rn
  1469. nvvm_ull2f_rp, // llvm.nvvm.ull2f.rp
  1470. nvvm_ull2f_rz, // llvm.nvvm.ull2f.rz
  1471. objectsize, // llvm.objectsize
  1472. pcmarker, // llvm.pcmarker
  1473. pow, // llvm.pow
  1474. powi, // llvm.powi
  1475. ppc_altivec_dss, // llvm.ppc.altivec.dss
  1476. ppc_altivec_dssall, // llvm.ppc.altivec.dssall
  1477. ppc_altivec_dst, // llvm.ppc.altivec.dst
  1478. ppc_altivec_dstst, // llvm.ppc.altivec.dstst
  1479. ppc_altivec_dststt, // llvm.ppc.altivec.dststt
  1480. ppc_altivec_dstt, // llvm.ppc.altivec.dstt
  1481. ppc_altivec_lvebx, // llvm.ppc.altivec.lvebx
  1482. ppc_altivec_lvehx, // llvm.ppc.altivec.lvehx
  1483. ppc_altivec_lvewx, // llvm.ppc.altivec.lvewx
  1484. ppc_altivec_lvsl, // llvm.ppc.altivec.lvsl
  1485. ppc_altivec_lvsr, // llvm.ppc.altivec.lvsr
  1486. ppc_altivec_lvx, // llvm.ppc.altivec.lvx
  1487. ppc_altivec_lvxl, // llvm.ppc.altivec.lvxl
  1488. ppc_altivec_mfvscr, // llvm.ppc.altivec.mfvscr
  1489. ppc_altivec_mtvscr, // llvm.ppc.altivec.mtvscr
  1490. ppc_altivec_stvebx, // llvm.ppc.altivec.stvebx
  1491. ppc_altivec_stvehx, // llvm.ppc.altivec.stvehx
  1492. ppc_altivec_stvewx, // llvm.ppc.altivec.stvewx
  1493. ppc_altivec_stvx, // llvm.ppc.altivec.stvx
  1494. ppc_altivec_stvxl, // llvm.ppc.altivec.stvxl
  1495. ppc_altivec_vaddcuw, // llvm.ppc.altivec.vaddcuw
  1496. ppc_altivec_vaddsbs, // llvm.ppc.altivec.vaddsbs
  1497. ppc_altivec_vaddshs, // llvm.ppc.altivec.vaddshs
  1498. ppc_altivec_vaddsws, // llvm.ppc.altivec.vaddsws
  1499. ppc_altivec_vaddubs, // llvm.ppc.altivec.vaddubs
  1500. ppc_altivec_vadduhs, // llvm.ppc.altivec.vadduhs
  1501. ppc_altivec_vadduws, // llvm.ppc.altivec.vadduws
  1502. ppc_altivec_vavgsb, // llvm.ppc.altivec.vavgsb
  1503. ppc_altivec_vavgsh, // llvm.ppc.altivec.vavgsh
  1504. ppc_altivec_vavgsw, // llvm.ppc.altivec.vavgsw
  1505. ppc_altivec_vavgub, // llvm.ppc.altivec.vavgub
  1506. ppc_altivec_vavguh, // llvm.ppc.altivec.vavguh
  1507. ppc_altivec_vavguw, // llvm.ppc.altivec.vavguw
  1508. ppc_altivec_vcfsx, // llvm.ppc.altivec.vcfsx
  1509. ppc_altivec_vcfux, // llvm.ppc.altivec.vcfux
  1510. ppc_altivec_vcmpbfp, // llvm.ppc.altivec.vcmpbfp
  1511. ppc_altivec_vcmpbfp_p, // llvm.ppc.altivec.vcmpbfp.p
  1512. ppc_altivec_vcmpeqfp, // llvm.ppc.altivec.vcmpeqfp
  1513. ppc_altivec_vcmpeqfp_p, // llvm.ppc.altivec.vcmpeqfp.p
  1514. ppc_altivec_vcmpequb, // llvm.ppc.altivec.vcmpequb
  1515. ppc_altivec_vcmpequb_p, // llvm.ppc.altivec.vcmpequb.p
  1516. ppc_altivec_vcmpequh, // llvm.ppc.altivec.vcmpequh
  1517. ppc_altivec_vcmpequh_p, // llvm.ppc.altivec.vcmpequh.p
  1518. ppc_altivec_vcmpequw, // llvm.ppc.altivec.vcmpequw
  1519. ppc_altivec_vcmpequw_p, // llvm.ppc.altivec.vcmpequw.p
  1520. ppc_altivec_vcmpgefp, // llvm.ppc.altivec.vcmpgefp
  1521. ppc_altivec_vcmpgefp_p, // llvm.ppc.altivec.vcmpgefp.p
  1522. ppc_altivec_vcmpgtfp, // llvm.ppc.altivec.vcmpgtfp
  1523. ppc_altivec_vcmpgtfp_p, // llvm.ppc.altivec.vcmpgtfp.p
  1524. ppc_altivec_vcmpgtsb, // llvm.ppc.altivec.vcmpgtsb
  1525. ppc_altivec_vcmpgtsb_p, // llvm.ppc.altivec.vcmpgtsb.p
  1526. ppc_altivec_vcmpgtsh, // llvm.ppc.altivec.vcmpgtsh
  1527. ppc_altivec_vcmpgtsh_p, // llvm.ppc.altivec.vcmpgtsh.p
  1528. ppc_altivec_vcmpgtsw, // llvm.ppc.altivec.vcmpgtsw
  1529. ppc_altivec_vcmpgtsw_p, // llvm.ppc.altivec.vcmpgtsw.p
  1530. ppc_altivec_vcmpgtub, // llvm.ppc.altivec.vcmpgtub
  1531. ppc_altivec_vcmpgtub_p, // llvm.ppc.altivec.vcmpgtub.p
  1532. ppc_altivec_vcmpgtuh, // llvm.ppc.altivec.vcmpgtuh
  1533. ppc_altivec_vcmpgtuh_p, // llvm.ppc.altivec.vcmpgtuh.p
  1534. ppc_altivec_vcmpgtuw, // llvm.ppc.altivec.vcmpgtuw
  1535. ppc_altivec_vcmpgtuw_p, // llvm.ppc.altivec.vcmpgtuw.p
  1536. ppc_altivec_vctsxs, // llvm.ppc.altivec.vctsxs
  1537. ppc_altivec_vctuxs, // llvm.ppc.altivec.vctuxs
  1538. ppc_altivec_vexptefp, // llvm.ppc.altivec.vexptefp
  1539. ppc_altivec_vlogefp, // llvm.ppc.altivec.vlogefp
  1540. ppc_altivec_vmaddfp, // llvm.ppc.altivec.vmaddfp
  1541. ppc_altivec_vmaxfp, // llvm.ppc.altivec.vmaxfp
  1542. ppc_altivec_vmaxsb, // llvm.ppc.altivec.vmaxsb
  1543. ppc_altivec_vmaxsh, // llvm.ppc.altivec.vmaxsh
  1544. ppc_altivec_vmaxsw, // llvm.ppc.altivec.vmaxsw
  1545. ppc_altivec_vmaxub, // llvm.ppc.altivec.vmaxub
  1546. ppc_altivec_vmaxuh, // llvm.ppc.altivec.vmaxuh
  1547. ppc_altivec_vmaxuw, // llvm.ppc.altivec.vmaxuw
  1548. ppc_altivec_vmhaddshs, // llvm.ppc.altivec.vmhaddshs
  1549. ppc_altivec_vmhraddshs, // llvm.ppc.altivec.vmhraddshs
  1550. ppc_altivec_vminfp, // llvm.ppc.altivec.vminfp
  1551. ppc_altivec_vminsb, // llvm.ppc.altivec.vminsb
  1552. ppc_altivec_vminsh, // llvm.ppc.altivec.vminsh
  1553. ppc_altivec_vminsw, // llvm.ppc.altivec.vminsw
  1554. ppc_altivec_vminub, // llvm.ppc.altivec.vminub
  1555. ppc_altivec_vminuh, // llvm.ppc.altivec.vminuh
  1556. ppc_altivec_vminuw, // llvm.ppc.altivec.vminuw
  1557. ppc_altivec_vmladduhm, // llvm.ppc.altivec.vmladduhm
  1558. ppc_altivec_vmsummbm, // llvm.ppc.altivec.vmsummbm
  1559. ppc_altivec_vmsumshm, // llvm.ppc.altivec.vmsumshm
  1560. ppc_altivec_vmsumshs, // llvm.ppc.altivec.vmsumshs
  1561. ppc_altivec_vmsumubm, // llvm.ppc.altivec.vmsumubm
  1562. ppc_altivec_vmsumuhm, // llvm.ppc.altivec.vmsumuhm
  1563. ppc_altivec_vmsumuhs, // llvm.ppc.altivec.vmsumuhs
  1564. ppc_altivec_vmulesb, // llvm.ppc.altivec.vmulesb
  1565. ppc_altivec_vmulesh, // llvm.ppc.altivec.vmulesh
  1566. ppc_altivec_vmuleub, // llvm.ppc.altivec.vmuleub
  1567. ppc_altivec_vmuleuh, // llvm.ppc.altivec.vmuleuh
  1568. ppc_altivec_vmulosb, // llvm.ppc.altivec.vmulosb
  1569. ppc_altivec_vmulosh, // llvm.ppc.altivec.vmulosh
  1570. ppc_altivec_vmuloub, // llvm.ppc.altivec.vmuloub
  1571. ppc_altivec_vmulouh, // llvm.ppc.altivec.vmulouh
  1572. ppc_altivec_vnmsubfp, // llvm.ppc.altivec.vnmsubfp
  1573. ppc_altivec_vperm, // llvm.ppc.altivec.vperm
  1574. ppc_altivec_vpkpx, // llvm.ppc.altivec.vpkpx
  1575. ppc_altivec_vpkshss, // llvm.ppc.altivec.vpkshss
  1576. ppc_altivec_vpkshus, // llvm.ppc.altivec.vpkshus
  1577. ppc_altivec_vpkswss, // llvm.ppc.altivec.vpkswss
  1578. ppc_altivec_vpkswus, // llvm.ppc.altivec.vpkswus
  1579. ppc_altivec_vpkuhus, // llvm.ppc.altivec.vpkuhus
  1580. ppc_altivec_vpkuwus, // llvm.ppc.altivec.vpkuwus
  1581. ppc_altivec_vrefp, // llvm.ppc.altivec.vrefp
  1582. ppc_altivec_vrfim, // llvm.ppc.altivec.vrfim
  1583. ppc_altivec_vrfin, // llvm.ppc.altivec.vrfin
  1584. ppc_altivec_vrfip, // llvm.ppc.altivec.vrfip
  1585. ppc_altivec_vrfiz, // llvm.ppc.altivec.vrfiz
  1586. ppc_altivec_vrlb, // llvm.ppc.altivec.vrlb
  1587. ppc_altivec_vrlh, // llvm.ppc.altivec.vrlh
  1588. ppc_altivec_vrlw, // llvm.ppc.altivec.vrlw
  1589. ppc_altivec_vrsqrtefp, // llvm.ppc.altivec.vrsqrtefp
  1590. ppc_altivec_vsel, // llvm.ppc.altivec.vsel
  1591. ppc_altivec_vsl, // llvm.ppc.altivec.vsl
  1592. ppc_altivec_vslb, // llvm.ppc.altivec.vslb
  1593. ppc_altivec_vslh, // llvm.ppc.altivec.vslh
  1594. ppc_altivec_vslo, // llvm.ppc.altivec.vslo
  1595. ppc_altivec_vslw, // llvm.ppc.altivec.vslw
  1596. ppc_altivec_vsr, // llvm.ppc.altivec.vsr
  1597. ppc_altivec_vsrab, // llvm.ppc.altivec.vsrab
  1598. ppc_altivec_vsrah, // llvm.ppc.altivec.vsrah
  1599. ppc_altivec_vsraw, // llvm.ppc.altivec.vsraw
  1600. ppc_altivec_vsrb, // llvm.ppc.altivec.vsrb
  1601. ppc_altivec_vsrh, // llvm.ppc.altivec.vsrh
  1602. ppc_altivec_vsro, // llvm.ppc.altivec.vsro
  1603. ppc_altivec_vsrw, // llvm.ppc.altivec.vsrw
  1604. ppc_altivec_vsubcuw, // llvm.ppc.altivec.vsubcuw
  1605. ppc_altivec_vsubsbs, // llvm.ppc.altivec.vsubsbs
  1606. ppc_altivec_vsubshs, // llvm.ppc.altivec.vsubshs
  1607. ppc_altivec_vsubsws, // llvm.ppc.altivec.vsubsws
  1608. ppc_altivec_vsububs, // llvm.ppc.altivec.vsububs
  1609. ppc_altivec_vsubuhs, // llvm.ppc.altivec.vsubuhs
  1610. ppc_altivec_vsubuws, // llvm.ppc.altivec.vsubuws
  1611. ppc_altivec_vsum2sws, // llvm.ppc.altivec.vsum2sws
  1612. ppc_altivec_vsum4sbs, // llvm.ppc.altivec.vsum4sbs
  1613. ppc_altivec_vsum4shs, // llvm.ppc.altivec.vsum4shs
  1614. ppc_altivec_vsum4ubs, // llvm.ppc.altivec.vsum4ubs
  1615. ppc_altivec_vsumsws, // llvm.ppc.altivec.vsumsws
  1616. ppc_altivec_vupkhpx, // llvm.ppc.altivec.vupkhpx
  1617. ppc_altivec_vupkhsb, // llvm.ppc.altivec.vupkhsb
  1618. ppc_altivec_vupkhsh, // llvm.ppc.altivec.vupkhsh
  1619. ppc_altivec_vupklpx, // llvm.ppc.altivec.vupklpx
  1620. ppc_altivec_vupklsb, // llvm.ppc.altivec.vupklsb
  1621. ppc_altivec_vupklsh, // llvm.ppc.altivec.vupklsh
  1622. ppc_dcba, // llvm.ppc.dcba
  1623. ppc_dcbf, // llvm.ppc.dcbf
  1624. ppc_dcbi, // llvm.ppc.dcbi
  1625. ppc_dcbst, // llvm.ppc.dcbst
  1626. ppc_dcbt, // llvm.ppc.dcbt
  1627. ppc_dcbtst, // llvm.ppc.dcbtst
  1628. ppc_dcbz, // llvm.ppc.dcbz
  1629. ppc_dcbzl, // llvm.ppc.dcbzl
  1630. ppc_sync, // llvm.ppc.sync
  1631. prefetch, // llvm.prefetch
  1632. ptr_annotation, // llvm.ptr.annotation
  1633. ptx_bar_sync, // llvm.ptx.bar.sync
  1634. ptx_read_clock, // llvm.ptx.read.clock
  1635. ptx_read_clock64, // llvm.ptx.read.clock64
  1636. ptx_read_ctaid_w, // llvm.ptx.read.ctaid.w
  1637. ptx_read_ctaid_x, // llvm.ptx.read.ctaid.x
  1638. ptx_read_ctaid_y, // llvm.ptx.read.ctaid.y
  1639. ptx_read_ctaid_z, // llvm.ptx.read.ctaid.z
  1640. ptx_read_gridid, // llvm.ptx.read.gridid
  1641. ptx_read_laneid, // llvm.ptx.read.laneid
  1642. ptx_read_lanemask_eq, // llvm.ptx.read.lanemask.eq
  1643. ptx_read_lanemask_ge, // llvm.ptx.read.lanemask.ge
  1644. ptx_read_lanemask_gt, // llvm.ptx.read.lanemask.gt
  1645. ptx_read_lanemask_le, // llvm.ptx.read.lanemask.le
  1646. ptx_read_lanemask_lt, // llvm.ptx.read.lanemask.lt
  1647. ptx_read_nctaid_w, // llvm.ptx.read.nctaid.w
  1648. ptx_read_nctaid_x, // llvm.ptx.read.nctaid.x
  1649. ptx_read_nctaid_y, // llvm.ptx.read.nctaid.y
  1650. ptx_read_nctaid_z, // llvm.ptx.read.nctaid.z
  1651. ptx_read_nsmid, // llvm.ptx.read.nsmid
  1652. ptx_read_ntid_w, // llvm.ptx.read.ntid.w
  1653. ptx_read_ntid_x, // llvm.ptx.read.ntid.x
  1654. ptx_read_ntid_y, // llvm.ptx.read.ntid.y
  1655. ptx_read_ntid_z, // llvm.ptx.read.ntid.z
  1656. ptx_read_nwarpid, // llvm.ptx.read.nwarpid
  1657. ptx_read_pm0, // llvm.ptx.read.pm0
  1658. ptx_read_pm1, // llvm.ptx.read.pm1
  1659. ptx_read_pm2, // llvm.ptx.read.pm2
  1660. ptx_read_pm3, // llvm.ptx.read.pm3
  1661. ptx_read_smid, // llvm.ptx.read.smid
  1662. ptx_read_tid_w, // llvm.ptx.read.tid.w
  1663. ptx_read_tid_x, // llvm.ptx.read.tid.x
  1664. ptx_read_tid_y, // llvm.ptx.read.tid.y
  1665. ptx_read_tid_z, // llvm.ptx.read.tid.z
  1666. ptx_read_warpid, // llvm.ptx.read.warpid
  1667. r600_read_global_size_x, // llvm.r600.read.global.size.x
  1668. r600_read_global_size_y, // llvm.r600.read.global.size.y
  1669. r600_read_global_size_z, // llvm.r600.read.global.size.z
  1670. r600_read_local_size_x, // llvm.r600.read.local.size.x
  1671. r600_read_local_size_y, // llvm.r600.read.local.size.y
  1672. r600_read_local_size_z, // llvm.r600.read.local.size.z
  1673. r600_read_ngroups_x, // llvm.r600.read.ngroups.x
  1674. r600_read_ngroups_y, // llvm.r600.read.ngroups.y
  1675. r600_read_ngroups_z, // llvm.r600.read.ngroups.z
  1676. r600_read_tgid_x, // llvm.r600.read.tgid.x
  1677. r600_read_tgid_y, // llvm.r600.read.tgid.y
  1678. r600_read_tgid_z, // llvm.r600.read.tgid.z
  1679. r600_read_tidig_x, // llvm.r600.read.tidig.x
  1680. r600_read_tidig_y, // llvm.r600.read.tidig.y
  1681. r600_read_tidig_z, // llvm.r600.read.tidig.z
  1682. readcyclecounter, // llvm.readcyclecounter
  1683. returnaddress, // llvm.returnaddress
  1684. rint, // llvm.rint
  1685. sadd_with_overflow, // llvm.sadd.with.overflow
  1686. setjmp, // llvm.setjmp
  1687. siglongjmp, // llvm.siglongjmp
  1688. sigsetjmp, // llvm.sigsetjmp
  1689. sin, // llvm.sin
  1690. smul_with_overflow, // llvm.smul.with.overflow
  1691. sqrt, // llvm.sqrt
  1692. ssub_with_overflow, // llvm.ssub.with.overflow
  1693. stackprotector, // llvm.stackprotector
  1694. stackrestore, // llvm.stackrestore
  1695. stacksave, // llvm.stacksave
  1696. trap, // llvm.trap
  1697. trunc, // llvm.trunc
  1698. uadd_with_overflow, // llvm.uadd.with.overflow
  1699. umul_with_overflow, // llvm.umul.with.overflow
  1700. usub_with_overflow, // llvm.usub.with.overflow
  1701. vacopy, // llvm.va_copy
  1702. vaend, // llvm.va_end
  1703. var_annotation, // llvm.var.annotation
  1704. vastart, // llvm.va_start
  1705. x86_3dnow_pavgusb, // llvm.x86.3dnow.pavgusb
  1706. x86_3dnow_pf2id, // llvm.x86.3dnow.pf2id
  1707. x86_3dnow_pfacc, // llvm.x86.3dnow.pfacc
  1708. x86_3dnow_pfadd, // llvm.x86.3dnow.pfadd
  1709. x86_3dnow_pfcmpeq, // llvm.x86.3dnow.pfcmpeq
  1710. x86_3dnow_pfcmpge, // llvm.x86.3dnow.pfcmpge
  1711. x86_3dnow_pfcmpgt, // llvm.x86.3dnow.pfcmpgt
  1712. x86_3dnow_pfmax, // llvm.x86.3dnow.pfmax
  1713. x86_3dnow_pfmin, // llvm.x86.3dnow.pfmin
  1714. x86_3dnow_pfmul, // llvm.x86.3dnow.pfmul
  1715. x86_3dnow_pfrcp, // llvm.x86.3dnow.pfrcp
  1716. x86_3dnow_pfrcpit1, // llvm.x86.3dnow.pfrcpit1
  1717. x86_3dnow_pfrcpit2, // llvm.x86.3dnow.pfrcpit2
  1718. x86_3dnow_pfrsqit1, // llvm.x86.3dnow.pfrsqit1
  1719. x86_3dnow_pfrsqrt, // llvm.x86.3dnow.pfrsqrt
  1720. x86_3dnow_pfsub, // llvm.x86.3dnow.pfsub
  1721. x86_3dnow_pfsubr, // llvm.x86.3dnow.pfsubr
  1722. x86_3dnow_pi2fd, // llvm.x86.3dnow.pi2fd
  1723. x86_3dnow_pmulhrw, // llvm.x86.3dnow.pmulhrw
  1724. x86_3dnowa_pf2iw, // llvm.x86.3dnowa.pf2iw
  1725. x86_3dnowa_pfnacc, // llvm.x86.3dnowa.pfnacc
  1726. x86_3dnowa_pfpnacc, // llvm.x86.3dnowa.pfpnacc
  1727. x86_3dnowa_pi2fw, // llvm.x86.3dnowa.pi2fw
  1728. x86_3dnowa_pswapd, // llvm.x86.3dnowa.pswapd
  1729. x86_aesni_aesdec, // llvm.x86.aesni.aesdec
  1730. x86_aesni_aesdeclast, // llvm.x86.aesni.aesdeclast
  1731. x86_aesni_aesenc, // llvm.x86.aesni.aesenc
  1732. x86_aesni_aesenclast, // llvm.x86.aesni.aesenclast
  1733. x86_aesni_aesimc, // llvm.x86.aesni.aesimc
  1734. x86_aesni_aeskeygenassist, // llvm.x86.aesni.aeskeygenassist
  1735. x86_avx2_gather_d_d, // llvm.x86.avx2.gather.d.d
  1736. x86_avx2_gather_d_d_256, // llvm.x86.avx2.gather.d.d.256
  1737. x86_avx2_gather_d_pd, // llvm.x86.avx2.gather.d.pd
  1738. x86_avx2_gather_d_pd_256, // llvm.x86.avx2.gather.d.pd.256
  1739. x86_avx2_gather_d_ps, // llvm.x86.avx2.gather.d.ps
  1740. x86_avx2_gather_d_ps_256, // llvm.x86.avx2.gather.d.ps.256
  1741. x86_avx2_gather_d_q, // llvm.x86.avx2.gather.d.q
  1742. x86_avx2_gather_d_q_256, // llvm.x86.avx2.gather.d.q.256
  1743. x86_avx2_gather_q_d, // llvm.x86.avx2.gather.q.d
  1744. x86_avx2_gather_q_d_256, // llvm.x86.avx2.gather.q.d.256
  1745. x86_avx2_gather_q_pd, // llvm.x86.avx2.gather.q.pd
  1746. x86_avx2_gather_q_pd_256, // llvm.x86.avx2.gather.q.pd.256
  1747. x86_avx2_gather_q_ps, // llvm.x86.avx2.gather.q.ps
  1748. x86_avx2_gather_q_ps_256, // llvm.x86.avx2.gather.q.ps.256
  1749. x86_avx2_gather_q_q, // llvm.x86.avx2.gather.q.q
  1750. x86_avx2_gather_q_q_256, // llvm.x86.avx2.gather.q.q.256
  1751. x86_avx2_maskload_d, // llvm.x86.avx2.maskload.d
  1752. x86_avx2_maskload_d_256, // llvm.x86.avx2.maskload.d.256
  1753. x86_avx2_maskload_q, // llvm.x86.avx2.maskload.q
  1754. x86_avx2_maskload_q_256, // llvm.x86.avx2.maskload.q.256
  1755. x86_avx2_maskstore_d, // llvm.x86.avx2.maskstore.d
  1756. x86_avx2_maskstore_d_256, // llvm.x86.avx2.maskstore.d.256
  1757. x86_avx2_maskstore_q, // llvm.x86.avx2.maskstore.q
  1758. x86_avx2_maskstore_q_256, // llvm.x86.avx2.maskstore.q.256
  1759. x86_avx2_movntdqa, // llvm.x86.avx2.movntdqa
  1760. x86_avx2_mpsadbw, // llvm.x86.avx2.mpsadbw
  1761. x86_avx2_pabs_b, // llvm.x86.avx2.pabs.b
  1762. x86_avx2_pabs_d, // llvm.x86.avx2.pabs.d
  1763. x86_avx2_pabs_w, // llvm.x86.avx2.pabs.w
  1764. x86_avx2_packssdw, // llvm.x86.avx2.packssdw
  1765. x86_avx2_packsswb, // llvm.x86.avx2.packsswb
  1766. x86_avx2_packusdw, // llvm.x86.avx2.packusdw
  1767. x86_avx2_packuswb, // llvm.x86.avx2.packuswb
  1768. x86_avx2_padds_b, // llvm.x86.avx2.padds.b
  1769. x86_avx2_padds_w, // llvm.x86.avx2.padds.w
  1770. x86_avx2_paddus_b, // llvm.x86.avx2.paddus.b
  1771. x86_avx2_paddus_w, // llvm.x86.avx2.paddus.w
  1772. x86_avx2_pavg_b, // llvm.x86.avx2.pavg.b
  1773. x86_avx2_pavg_w, // llvm.x86.avx2.pavg.w
  1774. x86_avx2_pblendd_128, // llvm.x86.avx2.pblendd.128
  1775. x86_avx2_pblendd_256, // llvm.x86.avx2.pblendd.256
  1776. x86_avx2_pblendvb, // llvm.x86.avx2.pblendvb
  1777. x86_avx2_pblendw, // llvm.x86.avx2.pblendw
  1778. x86_avx2_pbroadcastb_128, // llvm.x86.avx2.pbroadcastb.128
  1779. x86_avx2_pbroadcastb_256, // llvm.x86.avx2.pbroadcastb.256
  1780. x86_avx2_pbroadcastd_128, // llvm.x86.avx2.pbroadcastd.128
  1781. x86_avx2_pbroadcastd_256, // llvm.x86.avx2.pbroadcastd.256
  1782. x86_avx2_pbroadcastq_128, // llvm.x86.avx2.pbroadcastq.128
  1783. x86_avx2_pbroadcastq_256, // llvm.x86.avx2.pbroadcastq.256
  1784. x86_avx2_pbroadcastw_128, // llvm.x86.avx2.pbroadcastw.128
  1785. x86_avx2_pbroadcastw_256, // llvm.x86.avx2.pbroadcastw.256
  1786. x86_avx2_permd, // llvm.x86.avx2.permd
  1787. x86_avx2_permps, // llvm.x86.avx2.permps
  1788. x86_avx2_phadd_d, // llvm.x86.avx2.phadd.d
  1789. x86_avx2_phadd_sw, // llvm.x86.avx2.phadd.sw
  1790. x86_avx2_phadd_w, // llvm.x86.avx2.phadd.w
  1791. x86_avx2_phsub_d, // llvm.x86.avx2.phsub.d
  1792. x86_avx2_phsub_sw, // llvm.x86.avx2.phsub.sw
  1793. x86_avx2_phsub_w, // llvm.x86.avx2.phsub.w
  1794. x86_avx2_pmadd_ub_sw, // llvm.x86.avx2.pmadd.ub.sw
  1795. x86_avx2_pmadd_wd, // llvm.x86.avx2.pmadd.wd
  1796. x86_avx2_pmaxs_b, // llvm.x86.avx2.pmaxs.b
  1797. x86_avx2_pmaxs_d, // llvm.x86.avx2.pmaxs.d
  1798. x86_avx2_pmaxs_w, // llvm.x86.avx2.pmaxs.w
  1799. x86_avx2_pmaxu_b, // llvm.x86.avx2.pmaxu.b
  1800. x86_avx2_pmaxu_d, // llvm.x86.avx2.pmaxu.d
  1801. x86_avx2_pmaxu_w, // llvm.x86.avx2.pmaxu.w
  1802. x86_avx2_pmins_b, // llvm.x86.avx2.pmins.b
  1803. x86_avx2_pmins_d, // llvm.x86.avx2.pmins.d
  1804. x86_avx2_pmins_w, // llvm.x86.avx2.pmins.w
  1805. x86_avx2_pminu_b, // llvm.x86.avx2.pminu.b
  1806. x86_avx2_pminu_d, // llvm.x86.avx2.pminu.d
  1807. x86_avx2_pminu_w, // llvm.x86.avx2.pminu.w
  1808. x86_avx2_pmovmskb, // llvm.x86.avx2.pmovmskb
  1809. x86_avx2_pmovsxbd, // llvm.x86.avx2.pmovsxbd
  1810. x86_avx2_pmovsxbq, // llvm.x86.avx2.pmovsxbq
  1811. x86_avx2_pmovsxbw, // llvm.x86.avx2.pmovsxbw
  1812. x86_avx2_pmovsxdq, // llvm.x86.avx2.pmovsxdq
  1813. x86_avx2_pmovsxwd, // llvm.x86.avx2.pmovsxwd
  1814. x86_avx2_pmovsxwq, // llvm.x86.avx2.pmovsxwq
  1815. x86_avx2_pmovzxbd, // llvm.x86.avx2.pmovzxbd
  1816. x86_avx2_pmovzxbq, // llvm.x86.avx2.pmovzxbq
  1817. x86_avx2_pmovzxbw, // llvm.x86.avx2.pmovzxbw
  1818. x86_avx2_pmovzxdq, // llvm.x86.avx2.pmovzxdq
  1819. x86_avx2_pmovzxwd, // llvm.x86.avx2.pmovzxwd
  1820. x86_avx2_pmovzxwq, // llvm.x86.avx2.pmovzxwq
  1821. x86_avx2_pmul_dq, // llvm.x86.avx2.pmul.dq
  1822. x86_avx2_pmul_hr_sw, // llvm.x86.avx2.pmul.hr.sw
  1823. x86_avx2_pmulh_w, // llvm.x86.avx2.pmulh.w
  1824. x86_avx2_pmulhu_w, // llvm.x86.avx2.pmulhu.w
  1825. x86_avx2_pmulu_dq, // llvm.x86.avx2.pmulu.dq
  1826. x86_avx2_psad_bw, // llvm.x86.avx2.psad.bw
  1827. x86_avx2_pshuf_b, // llvm.x86.avx2.pshuf.b
  1828. x86_avx2_psign_b, // llvm.x86.avx2.psign.b
  1829. x86_avx2_psign_d, // llvm.x86.avx2.psign.d
  1830. x86_avx2_psign_w, // llvm.x86.avx2.psign.w
  1831. x86_avx2_psll_d, // llvm.x86.avx2.psll.d
  1832. x86_avx2_psll_dq, // llvm.x86.avx2.psll.dq
  1833. x86_avx2_psll_dq_bs, // llvm.x86.avx2.psll.dq.bs
  1834. x86_avx2_psll_q, // llvm.x86.avx2.psll.q
  1835. x86_avx2_psll_w, // llvm.x86.avx2.psll.w
  1836. x86_avx2_pslli_d, // llvm.x86.avx2.pslli.d
  1837. x86_avx2_pslli_q, // llvm.x86.avx2.pslli.q
  1838. x86_avx2_pslli_w, // llvm.x86.avx2.pslli.w
  1839. x86_avx2_psllv_d, // llvm.x86.avx2.psllv.d
  1840. x86_avx2_psllv_d_256, // llvm.x86.avx2.psllv.d.256
  1841. x86_avx2_psllv_q, // llvm.x86.avx2.psllv.q
  1842. x86_avx2_psllv_q_256, // llvm.x86.avx2.psllv.q.256
  1843. x86_avx2_psra_d, // llvm.x86.avx2.psra.d
  1844. x86_avx2_psra_w, // llvm.x86.avx2.psra.w
  1845. x86_avx2_psrai_d, // llvm.x86.avx2.psrai.d
  1846. x86_avx2_psrai_w, // llvm.x86.avx2.psrai.w
  1847. x86_avx2_psrav_d, // llvm.x86.avx2.psrav.d
  1848. x86_avx2_psrav_d_256, // llvm.x86.avx2.psrav.d.256
  1849. x86_avx2_psrl_d, // llvm.x86.avx2.psrl.d
  1850. x86_avx2_psrl_dq, // llvm.x86.avx2.psrl.dq
  1851. x86_avx2_psrl_dq_bs, // llvm.x86.avx2.psrl.dq.bs
  1852. x86_avx2_psrl_q, // llvm.x86.avx2.psrl.q
  1853. x86_avx2_psrl_w, // llvm.x86.avx2.psrl.w
  1854. x86_avx2_psrli_d, // llvm.x86.avx2.psrli.d
  1855. x86_avx2_psrli_q, // llvm.x86.avx2.psrli.q
  1856. x86_avx2_psrli_w, // llvm.x86.avx2.psrli.w
  1857. x86_avx2_psrlv_d, // llvm.x86.avx2.psrlv.d
  1858. x86_avx2_psrlv_d_256, // llvm.x86.avx2.psrlv.d.256
  1859. x86_avx2_psrlv_q, // llvm.x86.avx2.psrlv.q
  1860. x86_avx2_psrlv_q_256, // llvm.x86.avx2.psrlv.q.256
  1861. x86_avx2_psubs_b, // llvm.x86.avx2.psubs.b
  1862. x86_avx2_psubs_w, // llvm.x86.avx2.psubs.w
  1863. x86_avx2_psubus_b, // llvm.x86.avx2.psubus.b
  1864. x86_avx2_psubus_w, // llvm.x86.avx2.psubus.w
  1865. x86_avx2_vbroadcast_sd_pd_256, // llvm.x86.avx2.vbroadcast.sd.pd.256
  1866. x86_avx2_vbroadcast_ss_ps, // llvm.x86.avx2.vbroadcast.ss.ps
  1867. x86_avx2_vbroadcast_ss_ps_256, // llvm.x86.avx2.vbroadcast.ss.ps.256
  1868. x86_avx2_vbroadcasti128, // llvm.x86.avx2.vbroadcasti128
  1869. x86_avx2_vextracti128, // llvm.x86.avx2.vextracti128
  1870. x86_avx2_vinserti128, // llvm.x86.avx2.vinserti128
  1871. x86_avx2_vperm2i128, // llvm.x86.avx2.vperm2i128
  1872. x86_avx_addsub_pd_256, // llvm.x86.avx.addsub.pd.256
  1873. x86_avx_addsub_ps_256, // llvm.x86.avx.addsub.ps.256
  1874. x86_avx_blend_pd_256, // llvm.x86.avx.blend.pd.256
  1875. x86_avx_blend_ps_256, // llvm.x86.avx.blend.ps.256
  1876. x86_avx_blendv_pd_256, // llvm.x86.avx.blendv.pd.256
  1877. x86_avx_blendv_ps_256, // llvm.x86.avx.blendv.ps.256
  1878. x86_avx_cmp_pd_256, // llvm.x86.avx.cmp.pd.256
  1879. x86_avx_cmp_ps_256, // llvm.x86.avx.cmp.ps.256
  1880. x86_avx_cvt_pd2_ps_256, // llvm.x86.avx.cvt.pd2.ps.256
  1881. x86_avx_cvt_pd2dq_256, // llvm.x86.avx.cvt.pd2dq.256
  1882. x86_avx_cvt_ps2_pd_256, // llvm.x86.avx.cvt.ps2.pd.256
  1883. x86_avx_cvt_ps2dq_256, // llvm.x86.avx.cvt.ps2dq.256
  1884. x86_avx_cvtdq2_pd_256, // llvm.x86.avx.cvtdq2.pd.256
  1885. x86_avx_cvtdq2_ps_256, // llvm.x86.avx.cvtdq2.ps.256
  1886. x86_avx_cvtt_pd2dq_256, // llvm.x86.avx.cvtt.pd2dq.256
  1887. x86_avx_cvtt_ps2dq_256, // llvm.x86.avx.cvtt.ps2dq.256
  1888. x86_avx_dp_ps_256, // llvm.x86.avx.dp.ps.256
  1889. x86_avx_hadd_pd_256, // llvm.x86.avx.hadd.pd.256
  1890. x86_avx_hadd_ps_256, // llvm.x86.avx.hadd.ps.256
  1891. x86_avx_hsub_pd_256, // llvm.x86.avx.hsub.pd.256
  1892. x86_avx_hsub_ps_256, // llvm.x86.avx.hsub.ps.256
  1893. x86_avx_ldu_dq_256, // llvm.x86.avx.ldu.dq.256
  1894. x86_avx_maskload_pd, // llvm.x86.avx.maskload.pd
  1895. x86_avx_maskload_pd_256, // llvm.x86.avx.maskload.pd.256
  1896. x86_avx_maskload_ps, // llvm.x86.avx.maskload.ps
  1897. x86_avx_maskload_ps_256, // llvm.x86.avx.maskload.ps.256
  1898. x86_avx_maskstore_pd, // llvm.x86.avx.maskstore.pd
  1899. x86_avx_maskstore_pd_256, // llvm.x86.avx.maskstore.pd.256
  1900. x86_avx_maskstore_ps, // llvm.x86.avx.maskstore.ps
  1901. x86_avx_maskstore_ps_256, // llvm.x86.avx.maskstore.ps.256
  1902. x86_avx_max_pd_256, // llvm.x86.avx.max.pd.256
  1903. x86_avx_max_ps_256, // llvm.x86.avx.max.ps.256
  1904. x86_avx_min_pd_256, // llvm.x86.avx.min.pd.256
  1905. x86_avx_min_ps_256, // llvm.x86.avx.min.ps.256
  1906. x86_avx_movmsk_pd_256, // llvm.x86.avx.movmsk.pd.256
  1907. x86_avx_movmsk_ps_256, // llvm.x86.avx.movmsk.ps.256
  1908. x86_avx_ptestc_256, // llvm.x86.avx.ptestc.256
  1909. x86_avx_ptestnzc_256, // llvm.x86.avx.ptestnzc.256
  1910. x86_avx_ptestz_256, // llvm.x86.avx.ptestz.256
  1911. x86_avx_rcp_ps_256, // llvm.x86.avx.rcp.ps.256
  1912. x86_avx_round_pd_256, // llvm.x86.avx.round.pd.256
  1913. x86_avx_round_ps_256, // llvm.x86.avx.round.ps.256
  1914. x86_avx_rsqrt_ps_256, // llvm.x86.avx.rsqrt.ps.256
  1915. x86_avx_sqrt_pd_256, // llvm.x86.avx.sqrt.pd.256
  1916. x86_avx_sqrt_ps_256, // llvm.x86.avx.sqrt.ps.256
  1917. x86_avx_storeu_dq_256, // llvm.x86.avx.storeu.dq.256
  1918. x86_avx_storeu_pd_256, // llvm.x86.avx.storeu.pd.256
  1919. x86_avx_storeu_ps_256, // llvm.x86.avx.storeu.ps.256
  1920. x86_avx_vbroadcast_sd_256, // llvm.x86.avx.vbroadcast.sd.256
  1921. x86_avx_vbroadcast_ss, // llvm.x86.avx.vbroadcast.ss
  1922. x86_avx_vbroadcast_ss_256, // llvm.x86.avx.vbroadcast.ss.256
  1923. x86_avx_vbroadcastf128_pd_256, // llvm.x86.avx.vbroadcastf128.pd.256
  1924. x86_avx_vbroadcastf128_ps_256, // llvm.x86.avx.vbroadcastf128.ps.256
  1925. x86_avx_vextractf128_pd_256, // llvm.x86.avx.vextractf128.pd.256
  1926. x86_avx_vextractf128_ps_256, // llvm.x86.avx.vextractf128.ps.256
  1927. x86_avx_vextractf128_si_256, // llvm.x86.avx.vextractf128.si.256
  1928. x86_avx_vinsertf128_pd_256, // llvm.x86.avx.vinsertf128.pd.256
  1929. x86_avx_vinsertf128_ps_256, // llvm.x86.avx.vinsertf128.ps.256
  1930. x86_avx_vinsertf128_si_256, // llvm.x86.avx.vinsertf128.si.256
  1931. x86_avx_vperm2f128_pd_256, // llvm.x86.avx.vperm2f128.pd.256
  1932. x86_avx_vperm2f128_ps_256, // llvm.x86.avx.vperm2f128.ps.256
  1933. x86_avx_vperm2f128_si_256, // llvm.x86.avx.vperm2f128.si.256
  1934. x86_avx_vpermilvar_pd, // llvm.x86.avx.vpermilvar.pd
  1935. x86_avx_vpermilvar_pd_256, // llvm.x86.avx.vpermilvar.pd.256
  1936. x86_avx_vpermilvar_ps, // llvm.x86.avx.vpermilvar.ps
  1937. x86_avx_vpermilvar_ps_256, // llvm.x86.avx.vpermilvar.ps.256
  1938. x86_avx_vtestc_pd, // llvm.x86.avx.vtestc.pd
  1939. x86_avx_vtestc_pd_256, // llvm.x86.avx.vtestc.pd.256
  1940. x86_avx_vtestc_ps, // llvm.x86.avx.vtestc.ps
  1941. x86_avx_vtestc_ps_256, // llvm.x86.avx.vtestc.ps.256
  1942. x86_avx_vtestnzc_pd, // llvm.x86.avx.vtestnzc.pd
  1943. x86_avx_vtestnzc_pd_256, // llvm.x86.avx.vtestnzc.pd.256
  1944. x86_avx_vtestnzc_ps, // llvm.x86.avx.vtestnzc.ps
  1945. x86_avx_vtestnzc_ps_256, // llvm.x86.avx.vtestnzc.ps.256
  1946. x86_avx_vtestz_pd, // llvm.x86.avx.vtestz.pd
  1947. x86_avx_vtestz_pd_256, // llvm.x86.avx.vtestz.pd.256
  1948. x86_avx_vtestz_ps, // llvm.x86.avx.vtestz.ps
  1949. x86_avx_vtestz_ps_256, // llvm.x86.avx.vtestz.ps.256
  1950. x86_avx_vzeroall, // llvm.x86.avx.vzeroall
  1951. x86_avx_vzeroupper, // llvm.x86.avx.vzeroupper
  1952. x86_bmi_bextr_32, // llvm.x86.bmi.bextr.32
  1953. x86_bmi_bextr_64, // llvm.x86.bmi.bextr.64
  1954. x86_bmi_bzhi_32, // llvm.x86.bmi.bzhi.32
  1955. x86_bmi_bzhi_64, // llvm.x86.bmi.bzhi.64
  1956. x86_bmi_pdep_32, // llvm.x86.bmi.pdep.32
  1957. x86_bmi_pdep_64, // llvm.x86.bmi.pdep.64
  1958. x86_bmi_pext_32, // llvm.x86.bmi.pext.32
  1959. x86_bmi_pext_64, // llvm.x86.bmi.pext.64
  1960. x86_fma_vfmadd_pd, // llvm.x86.fma.vfmadd.pd
  1961. x86_fma_vfmadd_pd_256, // llvm.x86.fma.vfmadd.pd.256
  1962. x86_fma_vfmadd_ps, // llvm.x86.fma.vfmadd.ps
  1963. x86_fma_vfmadd_ps_256, // llvm.x86.fma.vfmadd.ps.256
  1964. x86_fma_vfmadd_sd, // llvm.x86.fma.vfmadd.sd
  1965. x86_fma_vfmadd_ss, // llvm.x86.fma.vfmadd.ss
  1966. x86_fma_vfmaddsub_pd, // llvm.x86.fma.vfmaddsub.pd
  1967. x86_fma_vfmaddsub_pd_256, // llvm.x86.fma.vfmaddsub.pd.256
  1968. x86_fma_vfmaddsub_ps, // llvm.x86.fma.vfmaddsub.ps
  1969. x86_fma_vfmaddsub_ps_256, // llvm.x86.fma.vfmaddsub.ps.256
  1970. x86_fma_vfmsub_pd, // llvm.x86.fma.vfmsub.pd
  1971. x86_fma_vfmsub_pd_256, // llvm.x86.fma.vfmsub.pd.256
  1972. x86_fma_vfmsub_ps, // llvm.x86.fma.vfmsub.ps
  1973. x86_fma_vfmsub_ps_256, // llvm.x86.fma.vfmsub.ps.256
  1974. x86_fma_vfmsub_sd, // llvm.x86.fma.vfmsub.sd
  1975. x86_fma_vfmsub_ss, // llvm.x86.fma.vfmsub.ss
  1976. x86_fma_vfmsubadd_pd, // llvm.x86.fma.vfmsubadd.pd
  1977. x86_fma_vfmsubadd_pd_256, // llvm.x86.fma.vfmsubadd.pd.256
  1978. x86_fma_vfmsubadd_ps, // llvm.x86.fma.vfmsubadd.ps
  1979. x86_fma_vfmsubadd_ps_256, // llvm.x86.fma.vfmsubadd.ps.256
  1980. x86_fma_vfnmadd_pd, // llvm.x86.fma.vfnmadd.pd
  1981. x86_fma_vfnmadd_pd_256, // llvm.x86.fma.vfnmadd.pd.256
  1982. x86_fma_vfnmadd_ps, // llvm.x86.fma.vfnmadd.ps
  1983. x86_fma_vfnmadd_ps_256, // llvm.x86.fma.vfnmadd.ps.256
  1984. x86_fma_vfnmadd_sd, // llvm.x86.fma.vfnmadd.sd
  1985. x86_fma_vfnmadd_ss, // llvm.x86.fma.vfnmadd.ss
  1986. x86_fma_vfnmsub_pd, // llvm.x86.fma.vfnmsub.pd
  1987. x86_fma_vfnmsub_pd_256, // llvm.x86.fma.vfnmsub.pd.256
  1988. x86_fma_vfnmsub_ps, // llvm.x86.fma.vfnmsub.ps
  1989. x86_fma_vfnmsub_ps_256, // llvm.x86.fma.vfnmsub.ps.256
  1990. x86_fma_vfnmsub_sd, // llvm.x86.fma.vfnmsub.sd
  1991. x86_fma_vfnmsub_ss, // llvm.x86.fma.vfnmsub.ss
  1992. x86_int, // llvm.x86.int
  1993. x86_mmx_emms, // llvm.x86.mmx.emms
  1994. x86_mmx_femms, // llvm.x86.mmx.femms
  1995. x86_mmx_maskmovq, // llvm.x86.mmx.maskmovq
  1996. x86_mmx_movnt_dq, // llvm.x86.mmx.movnt.dq
  1997. x86_mmx_packssdw, // llvm.x86.mmx.packssdw
  1998. x86_mmx_packsswb, // llvm.x86.mmx.packsswb
  1999. x86_mmx_packuswb, // llvm.x86.mmx.packuswb
  2000. x86_mmx_padd_b, // llvm.x86.mmx.padd.b
  2001. x86_mmx_padd_d, // llvm.x86.mmx.padd.d
  2002. x86_mmx_padd_q, // llvm.x86.mmx.padd.q
  2003. x86_mmx_padd_w, // llvm.x86.mmx.padd.w
  2004. x86_mmx_padds_b, // llvm.x86.mmx.padds.b
  2005. x86_mmx_padds_w, // llvm.x86.mmx.padds.w
  2006. x86_mmx_paddus_b, // llvm.x86.mmx.paddus.b
  2007. x86_mmx_paddus_w, // llvm.x86.mmx.paddus.w
  2008. x86_mmx_palignr_b, // llvm.x86.mmx.palignr.b
  2009. x86_mmx_pand, // llvm.x86.mmx.pand
  2010. x86_mmx_pandn, // llvm.x86.mmx.pandn
  2011. x86_mmx_pavg_b, // llvm.x86.mmx.pavg.b
  2012. x86_mmx_pavg_w, // llvm.x86.mmx.pavg.w
  2013. x86_mmx_pcmpeq_b, // llvm.x86.mmx.pcmpeq.b
  2014. x86_mmx_pcmpeq_d, // llvm.x86.mmx.pcmpeq.d
  2015. x86_mmx_pcmpeq_w, // llvm.x86.mmx.pcmpeq.w
  2016. x86_mmx_pcmpgt_b, // llvm.x86.mmx.pcmpgt.b
  2017. x86_mmx_pcmpgt_d, // llvm.x86.mmx.pcmpgt.d
  2018. x86_mmx_pcmpgt_w, // llvm.x86.mmx.pcmpgt.w
  2019. x86_mmx_pextr_w, // llvm.x86.mmx.pextr.w
  2020. x86_mmx_pinsr_w, // llvm.x86.mmx.pinsr.w
  2021. x86_mmx_pmadd_wd, // llvm.x86.mmx.pmadd.wd
  2022. x86_mmx_pmaxs_w, // llvm.x86.mmx.pmaxs.w
  2023. x86_mmx_pmaxu_b, // llvm.x86.mmx.pmaxu.b
  2024. x86_mmx_pmins_w, // llvm.x86.mmx.pmins.w
  2025. x86_mmx_pminu_b, // llvm.x86.mmx.pminu.b
  2026. x86_mmx_pmovmskb, // llvm.x86.mmx.pmovmskb
  2027. x86_mmx_pmulh_w, // llvm.x86.mmx.pmulh.w
  2028. x86_mmx_pmulhu_w, // llvm.x86.mmx.pmulhu.w
  2029. x86_mmx_pmull_w, // llvm.x86.mmx.pmull.w
  2030. x86_mmx_pmulu_dq, // llvm.x86.mmx.pmulu.dq
  2031. x86_mmx_por, // llvm.x86.mmx.por
  2032. x86_mmx_psad_bw, // llvm.x86.mmx.psad.bw
  2033. x86_mmx_psll_d, // llvm.x86.mmx.psll.d
  2034. x86_mmx_psll_q, // llvm.x86.mmx.psll.q
  2035. x86_mmx_psll_w, // llvm.x86.mmx.psll.w
  2036. x86_mmx_pslli_d, // llvm.x86.mmx.pslli.d
  2037. x86_mmx_pslli_q, // llvm.x86.mmx.pslli.q
  2038. x86_mmx_pslli_w, // llvm.x86.mmx.pslli.w
  2039. x86_mmx_psra_d, // llvm.x86.mmx.psra.d
  2040. x86_mmx_psra_w, // llvm.x86.mmx.psra.w
  2041. x86_mmx_psrai_d, // llvm.x86.mmx.psrai.d
  2042. x86_mmx_psrai_w, // llvm.x86.mmx.psrai.w
  2043. x86_mmx_psrl_d, // llvm.x86.mmx.psrl.d
  2044. x86_mmx_psrl_q, // llvm.x86.mmx.psrl.q
  2045. x86_mmx_psrl_w, // llvm.x86.mmx.psrl.w
  2046. x86_mmx_psrli_d, // llvm.x86.mmx.psrli.d
  2047. x86_mmx_psrli_q, // llvm.x86.mmx.psrli.q
  2048. x86_mmx_psrli_w, // llvm.x86.mmx.psrli.w
  2049. x86_mmx_psub_b, // llvm.x86.mmx.psub.b
  2050. x86_mmx_psub_d, // llvm.x86.mmx.psub.d
  2051. x86_mmx_psub_q, // llvm.x86.mmx.psub.q
  2052. x86_mmx_psub_w, // llvm.x86.mmx.psub.w
  2053. x86_mmx_psubs_b, // llvm.x86.mmx.psubs.b
  2054. x86_mmx_psubs_w, // llvm.x86.mmx.psubs.w
  2055. x86_mmx_psubus_b, // llvm.x86.mmx.psubus.b
  2056. x86_mmx_psubus_w, // llvm.x86.mmx.psubus.w
  2057. x86_mmx_punpckhbw, // llvm.x86.mmx.punpckhbw
  2058. x86_mmx_punpckhdq, // llvm.x86.mmx.punpckhdq
  2059. x86_mmx_punpckhwd, // llvm.x86.mmx.punpckhwd
  2060. x86_mmx_punpcklbw, // llvm.x86.mmx.punpcklbw
  2061. x86_mmx_punpckldq, // llvm.x86.mmx.punpckldq
  2062. x86_mmx_punpcklwd, // llvm.x86.mmx.punpcklwd
  2063. x86_mmx_pxor, // llvm.x86.mmx.pxor
  2064. x86_pclmulqdq, // llvm.x86.pclmulqdq
  2065. x86_rdfsbase_32, // llvm.x86.rdfsbase.32
  2066. x86_rdfsbase_64, // llvm.x86.rdfsbase.64
  2067. x86_rdgsbase_32, // llvm.x86.rdgsbase.32
  2068. x86_rdgsbase_64, // llvm.x86.rdgsbase.64
  2069. x86_rdrand_16, // llvm.x86.rdrand.16
  2070. x86_rdrand_32, // llvm.x86.rdrand.32
  2071. x86_rdrand_64, // llvm.x86.rdrand.64
  2072. x86_rdseed_16, // llvm.x86.rdseed.16
  2073. x86_rdseed_32, // llvm.x86.rdseed.32
  2074. x86_rdseed_64, // llvm.x86.rdseed.64
  2075. x86_sse2_add_sd, // llvm.x86.sse2.add.sd
  2076. x86_sse2_clflush, // llvm.x86.sse2.clflush
  2077. x86_sse2_cmp_pd, // llvm.x86.sse2.cmp.pd
  2078. x86_sse2_cmp_sd, // llvm.x86.sse2.cmp.sd
  2079. x86_sse2_comieq_sd, // llvm.x86.sse2.comieq.sd
  2080. x86_sse2_comige_sd, // llvm.x86.sse2.comige.sd
  2081. x86_sse2_comigt_sd, // llvm.x86.sse2.comigt.sd
  2082. x86_sse2_comile_sd, // llvm.x86.sse2.comile.sd
  2083. x86_sse2_comilt_sd, // llvm.x86.sse2.comilt.sd
  2084. x86_sse2_comineq_sd, // llvm.x86.sse2.comineq.sd
  2085. x86_sse2_cvtdq2pd, // llvm.x86.sse2.cvtdq2pd
  2086. x86_sse2_cvtdq2ps, // llvm.x86.sse2.cvtdq2ps
  2087. x86_sse2_cvtpd2dq, // llvm.x86.sse2.cvtpd2dq
  2088. x86_sse2_cvtpd2ps, // llvm.x86.sse2.cvtpd2ps
  2089. x86_sse2_cvtps2dq, // llvm.x86.sse2.cvtps2dq
  2090. x86_sse2_cvtps2pd, // llvm.x86.sse2.cvtps2pd
  2091. x86_sse2_cvtsd2si, // llvm.x86.sse2.cvtsd2si
  2092. x86_sse2_cvtsd2si64, // llvm.x86.sse2.cvtsd2si64
  2093. x86_sse2_cvtsd2ss, // llvm.x86.sse2.cvtsd2ss
  2094. x86_sse2_cvtsi2sd, // llvm.x86.sse2.cvtsi2sd
  2095. x86_sse2_cvtsi642sd, // llvm.x86.sse2.cvtsi642sd
  2096. x86_sse2_cvtss2sd, // llvm.x86.sse2.cvtss2sd
  2097. x86_sse2_cvttpd2dq, // llvm.x86.sse2.cvttpd2dq
  2098. x86_sse2_cvttps2dq, // llvm.x86.sse2.cvttps2dq
  2099. x86_sse2_cvttsd2si, // llvm.x86.sse2.cvttsd2si
  2100. x86_sse2_cvttsd2si64, // llvm.x86.sse2.cvttsd2si64
  2101. x86_sse2_div_sd, // llvm.x86.sse2.div.sd
  2102. x86_sse2_lfence, // llvm.x86.sse2.lfence
  2103. x86_sse2_maskmov_dqu, // llvm.x86.sse2.maskmov.dqu
  2104. x86_sse2_max_pd, // llvm.x86.sse2.max.pd
  2105. x86_sse2_max_sd, // llvm.x86.sse2.max.sd
  2106. x86_sse2_mfence, // llvm.x86.sse2.mfence
  2107. x86_sse2_min_pd, // llvm.x86.sse2.min.pd
  2108. x86_sse2_min_sd, // llvm.x86.sse2.min.sd
  2109. x86_sse2_movmsk_pd, // llvm.x86.sse2.movmsk.pd
  2110. x86_sse2_mul_sd, // llvm.x86.sse2.mul.sd
  2111. x86_sse2_packssdw_128, // llvm.x86.sse2.packssdw.128
  2112. x86_sse2_packsswb_128, // llvm.x86.sse2.packsswb.128
  2113. x86_sse2_packuswb_128, // llvm.x86.sse2.packuswb.128
  2114. x86_sse2_padds_b, // llvm.x86.sse2.padds.b
  2115. x86_sse2_padds_w, // llvm.x86.sse2.padds.w
  2116. x86_sse2_paddus_b, // llvm.x86.sse2.paddus.b
  2117. x86_sse2_paddus_w, // llvm.x86.sse2.paddus.w
  2118. x86_sse2_pavg_b, // llvm.x86.sse2.pavg.b
  2119. x86_sse2_pavg_w, // llvm.x86.sse2.pavg.w
  2120. x86_sse2_pmadd_wd, // llvm.x86.sse2.pmadd.wd
  2121. x86_sse2_pmaxs_w, // llvm.x86.sse2.pmaxs.w
  2122. x86_sse2_pmaxu_b, // llvm.x86.sse2.pmaxu.b
  2123. x86_sse2_pmins_w, // llvm.x86.sse2.pmins.w
  2124. x86_sse2_pminu_b, // llvm.x86.sse2.pminu.b
  2125. x86_sse2_pmovmskb_128, // llvm.x86.sse2.pmovmskb.128
  2126. x86_sse2_pmulh_w, // llvm.x86.sse2.pmulh.w
  2127. x86_sse2_pmulhu_w, // llvm.x86.sse2.pmulhu.w
  2128. x86_sse2_pmulu_dq, // llvm.x86.sse2.pmulu.dq
  2129. x86_sse2_psad_bw, // llvm.x86.sse2.psad.bw
  2130. x86_sse2_psll_d, // llvm.x86.sse2.psll.d
  2131. x86_sse2_psll_dq, // llvm.x86.sse2.psll.dq
  2132. x86_sse2_psll_dq_bs, // llvm.x86.sse2.psll.dq.bs
  2133. x86_sse2_psll_q, // llvm.x86.sse2.psll.q
  2134. x86_sse2_psll_w, // llvm.x86.sse2.psll.w
  2135. x86_sse2_pslli_d, // llvm.x86.sse2.pslli.d
  2136. x86_sse2_pslli_q, // llvm.x86.sse2.pslli.q
  2137. x86_sse2_pslli_w, // llvm.x86.sse2.pslli.w
  2138. x86_sse2_psra_d, // llvm.x86.sse2.psra.d
  2139. x86_sse2_psra_w, // llvm.x86.sse2.psra.w
  2140. x86_sse2_psrai_d, // llvm.x86.sse2.psrai.d
  2141. x86_sse2_psrai_w, // llvm.x86.sse2.psrai.w
  2142. x86_sse2_psrl_d, // llvm.x86.sse2.psrl.d
  2143. x86_sse2_psrl_dq, // llvm.x86.sse2.psrl.dq
  2144. x86_sse2_psrl_dq_bs, // llvm.x86.sse2.psrl.dq.bs
  2145. x86_sse2_psrl_q, // llvm.x86.sse2.psrl.q
  2146. x86_sse2_psrl_w, // llvm.x86.sse2.psrl.w
  2147. x86_sse2_psrli_d, // llvm.x86.sse2.psrli.d
  2148. x86_sse2_psrli_q, // llvm.x86.sse2.psrli.q
  2149. x86_sse2_psrli_w, // llvm.x86.sse2.psrli.w
  2150. x86_sse2_psubs_b, // llvm.x86.sse2.psubs.b
  2151. x86_sse2_psubs_w, // llvm.x86.sse2.psubs.w
  2152. x86_sse2_psubus_b, // llvm.x86.sse2.psubus.b
  2153. x86_sse2_psubus_w, // llvm.x86.sse2.psubus.w
  2154. x86_sse2_sqrt_pd, // llvm.x86.sse2.sqrt.pd
  2155. x86_sse2_sqrt_sd, // llvm.x86.sse2.sqrt.sd
  2156. x86_sse2_storel_dq, // llvm.x86.sse2.storel.dq
  2157. x86_sse2_storeu_dq, // llvm.x86.sse2.storeu.dq
  2158. x86_sse2_storeu_pd, // llvm.x86.sse2.storeu.pd
  2159. x86_sse2_sub_sd, // llvm.x86.sse2.sub.sd
  2160. x86_sse2_ucomieq_sd, // llvm.x86.sse2.ucomieq.sd
  2161. x86_sse2_ucomige_sd, // llvm.x86.sse2.ucomige.sd
  2162. x86_sse2_ucomigt_sd, // llvm.x86.sse2.ucomigt.sd
  2163. x86_sse2_ucomile_sd, // llvm.x86.sse2.ucomile.sd
  2164. x86_sse2_ucomilt_sd, // llvm.x86.sse2.ucomilt.sd
  2165. x86_sse2_ucomineq_sd, // llvm.x86.sse2.ucomineq.sd
  2166. x86_sse3_addsub_pd, // llvm.x86.sse3.addsub.pd
  2167. x86_sse3_addsub_ps, // llvm.x86.sse3.addsub.ps
  2168. x86_sse3_hadd_pd, // llvm.x86.sse3.hadd.pd
  2169. x86_sse3_hadd_ps, // llvm.x86.sse3.hadd.ps
  2170. x86_sse3_hsub_pd, // llvm.x86.sse3.hsub.pd
  2171. x86_sse3_hsub_ps, // llvm.x86.sse3.hsub.ps
  2172. x86_sse3_ldu_dq, // llvm.x86.sse3.ldu.dq
  2173. x86_sse3_monitor, // llvm.x86.sse3.monitor
  2174. x86_sse3_mwait, // llvm.x86.sse3.mwait
  2175. x86_sse41_blendpd, // llvm.x86.sse41.blendpd
  2176. x86_sse41_blendps, // llvm.x86.sse41.blendps
  2177. x86_sse41_blendvpd, // llvm.x86.sse41.blendvpd
  2178. x86_sse41_blendvps, // llvm.x86.sse41.blendvps
  2179. x86_sse41_dppd, // llvm.x86.sse41.dppd
  2180. x86_sse41_dpps, // llvm.x86.sse41.dpps
  2181. x86_sse41_extractps, // llvm.x86.sse41.extractps
  2182. x86_sse41_insertps, // llvm.x86.sse41.insertps
  2183. x86_sse41_movntdqa, // llvm.x86.sse41.movntdqa
  2184. x86_sse41_mpsadbw, // llvm.x86.sse41.mpsadbw
  2185. x86_sse41_packusdw, // llvm.x86.sse41.packusdw
  2186. x86_sse41_pblendvb, // llvm.x86.sse41.pblendvb
  2187. x86_sse41_pblendw, // llvm.x86.sse41.pblendw
  2188. x86_sse41_pextrb, // llvm.x86.sse41.pextrb
  2189. x86_sse41_pextrd, // llvm.x86.sse41.pextrd
  2190. x86_sse41_pextrq, // llvm.x86.sse41.pextrq
  2191. x86_sse41_phminposuw, // llvm.x86.sse41.phminposuw
  2192. x86_sse41_pmaxsb, // llvm.x86.sse41.pmaxsb
  2193. x86_sse41_pmaxsd, // llvm.x86.sse41.pmaxsd
  2194. x86_sse41_pmaxud, // llvm.x86.sse41.pmaxud
  2195. x86_sse41_pmaxuw, // llvm.x86.sse41.pmaxuw
  2196. x86_sse41_pminsb, // llvm.x86.sse41.pminsb
  2197. x86_sse41_pminsd, // llvm.x86.sse41.pminsd
  2198. x86_sse41_pminud, // llvm.x86.sse41.pminud
  2199. x86_sse41_pminuw, // llvm.x86.sse41.pminuw
  2200. x86_sse41_pmovsxbd, // llvm.x86.sse41.pmovsxbd
  2201. x86_sse41_pmovsxbq, // llvm.x86.sse41.pmovsxbq
  2202. x86_sse41_pmovsxbw, // llvm.x86.sse41.pmovsxbw
  2203. x86_sse41_pmovsxdq, // llvm.x86.sse41.pmovsxdq
  2204. x86_sse41_pmovsxwd, // llvm.x86.sse41.pmovsxwd
  2205. x86_sse41_pmovsxwq, // llvm.x86.sse41.pmovsxwq
  2206. x86_sse41_pmovzxbd, // llvm.x86.sse41.pmovzxbd
  2207. x86_sse41_pmovzxbq, // llvm.x86.sse41.pmovzxbq
  2208. x86_sse41_pmovzxbw, // llvm.x86.sse41.pmovzxbw
  2209. x86_sse41_pmovzxdq, // llvm.x86.sse41.pmovzxdq
  2210. x86_sse41_pmovzxwd, // llvm.x86.sse41.pmovzxwd
  2211. x86_sse41_pmovzxwq, // llvm.x86.sse41.pmovzxwq
  2212. x86_sse41_pmuldq, // llvm.x86.sse41.pmuldq
  2213. x86_sse41_ptestc, // llvm.x86.sse41.ptestc
  2214. x86_sse41_ptestnzc, // llvm.x86.sse41.ptestnzc
  2215. x86_sse41_ptestz, // llvm.x86.sse41.ptestz
  2216. x86_sse41_round_pd, // llvm.x86.sse41.round.pd
  2217. x86_sse41_round_ps, // llvm.x86.sse41.round.ps
  2218. x86_sse41_round_sd, // llvm.x86.sse41.round.sd
  2219. x86_sse41_round_ss, // llvm.x86.sse41.round.ss
  2220. x86_sse42_crc32_32_16, // llvm.x86.sse42.crc32.32.16
  2221. x86_sse42_crc32_32_32, // llvm.x86.sse42.crc32.32.32
  2222. x86_sse42_crc32_32_8, // llvm.x86.sse42.crc32.32.8
  2223. x86_sse42_crc32_64_64, // llvm.x86.sse42.crc32.64.64
  2224. x86_sse42_crc32_64_8, // llvm.x86.sse42.crc32.64.8
  2225. x86_sse42_pcmpestri128, // llvm.x86.sse42.pcmpestri128
  2226. x86_sse42_pcmpestria128, // llvm.x86.sse42.pcmpestria128
  2227. x86_sse42_pcmpestric128, // llvm.x86.sse42.pcmpestric128
  2228. x86_sse42_pcmpestrio128, // llvm.x86.sse42.pcmpestrio128
  2229. x86_sse42_pcmpestris128, // llvm.x86.sse42.pcmpestris128
  2230. x86_sse42_pcmpestriz128, // llvm.x86.sse42.pcmpestriz128
  2231. x86_sse42_pcmpestrm128, // llvm.x86.sse42.pcmpestrm128
  2232. x86_sse42_pcmpistri128, // llvm.x86.sse42.pcmpistri128
  2233. x86_sse42_pcmpistria128, // llvm.x86.sse42.pcmpistria128
  2234. x86_sse42_pcmpistric128, // llvm.x86.sse42.pcmpistric128
  2235. x86_sse42_pcmpistrio128, // llvm.x86.sse42.pcmpistrio128
  2236. x86_sse42_pcmpistris128, // llvm.x86.sse42.pcmpistris128
  2237. x86_sse42_pcmpistriz128, // llvm.x86.sse42.pcmpistriz128
  2238. x86_sse42_pcmpistrm128, // llvm.x86.sse42.pcmpistrm128
  2239. x86_sse4a_extrq, // llvm.x86.sse4a.extrq
  2240. x86_sse4a_extrqi, // llvm.x86.sse4a.extrqi
  2241. x86_sse4a_insertq, // llvm.x86.sse4a.insertq
  2242. x86_sse4a_insertqi, // llvm.x86.sse4a.insertqi
  2243. x86_sse4a_movnt_sd, // llvm.x86.sse4a.movnt.sd
  2244. x86_sse4a_movnt_ss, // llvm.x86.sse4a.movnt.ss
  2245. x86_sse_add_ss, // llvm.x86.sse.add.ss
  2246. x86_sse_cmp_ps, // llvm.x86.sse.cmp.ps
  2247. x86_sse_cmp_ss, // llvm.x86.sse.cmp.ss
  2248. x86_sse_comieq_ss, // llvm.x86.sse.comieq.ss
  2249. x86_sse_comige_ss, // llvm.x86.sse.comige.ss
  2250. x86_sse_comigt_ss, // llvm.x86.sse.comigt.ss
  2251. x86_sse_comile_ss, // llvm.x86.sse.comile.ss
  2252. x86_sse_comilt_ss, // llvm.x86.sse.comilt.ss
  2253. x86_sse_comineq_ss, // llvm.x86.sse.comineq.ss
  2254. x86_sse_cvtpd2pi, // llvm.x86.sse.cvtpd2pi
  2255. x86_sse_cvtpi2pd, // llvm.x86.sse.cvtpi2pd
  2256. x86_sse_cvtpi2ps, // llvm.x86.sse.cvtpi2ps
  2257. x86_sse_cvtps2pi, // llvm.x86.sse.cvtps2pi
  2258. x86_sse_cvtsi2ss, // llvm.x86.sse.cvtsi2ss
  2259. x86_sse_cvtsi642ss, // llvm.x86.sse.cvtsi642ss
  2260. x86_sse_cvtss2si, // llvm.x86.sse.cvtss2si
  2261. x86_sse_cvtss2si64, // llvm.x86.sse.cvtss2si64
  2262. x86_sse_cvttpd2pi, // llvm.x86.sse.cvttpd2pi
  2263. x86_sse_cvttps2pi, // llvm.x86.sse.cvttps2pi
  2264. x86_sse_cvttss2si, // llvm.x86.sse.cvttss2si
  2265. x86_sse_cvttss2si64, // llvm.x86.sse.cvttss2si64
  2266. x86_sse_div_ss, // llvm.x86.sse.div.ss
  2267. x86_sse_ldmxcsr, // llvm.x86.sse.ldmxcsr
  2268. x86_sse_max_ps, // llvm.x86.sse.max.ps
  2269. x86_sse_max_ss, // llvm.x86.sse.max.ss
  2270. x86_sse_min_ps, // llvm.x86.sse.min.ps
  2271. x86_sse_min_ss, // llvm.x86.sse.min.ss
  2272. x86_sse_movmsk_ps, // llvm.x86.sse.movmsk.ps
  2273. x86_sse_mul_ss, // llvm.x86.sse.mul.ss
  2274. x86_sse_pshuf_w, // llvm.x86.sse.pshuf.w
  2275. x86_sse_rcp_ps, // llvm.x86.sse.rcp.ps
  2276. x86_sse_rcp_ss, // llvm.x86.sse.rcp.ss
  2277. x86_sse_rsqrt_ps, // llvm.x86.sse.rsqrt.ps
  2278. x86_sse_rsqrt_ss, // llvm.x86.sse.rsqrt.ss
  2279. x86_sse_sfence, // llvm.x86.sse.sfence
  2280. x86_sse_sqrt_ps, // llvm.x86.sse.sqrt.ps
  2281. x86_sse_sqrt_ss, // llvm.x86.sse.sqrt.ss
  2282. x86_sse_stmxcsr, // llvm.x86.sse.stmxcsr
  2283. x86_sse_storeu_ps, // llvm.x86.sse.storeu.ps
  2284. x86_sse_sub_ss, // llvm.x86.sse.sub.ss
  2285. x86_sse_ucomieq_ss, // llvm.x86.sse.ucomieq.ss
  2286. x86_sse_ucomige_ss, // llvm.x86.sse.ucomige.ss
  2287. x86_sse_ucomigt_ss, // llvm.x86.sse.ucomigt.ss
  2288. x86_sse_ucomile_ss, // llvm.x86.sse.ucomile.ss
  2289. x86_sse_ucomilt_ss, // llvm.x86.sse.ucomilt.ss
  2290. x86_sse_ucomineq_ss, // llvm.x86.sse.ucomineq.ss
  2291. x86_ssse3_pabs_b, // llvm.x86.ssse3.pabs.b
  2292. x86_ssse3_pabs_b_128, // llvm.x86.ssse3.pabs.b.128
  2293. x86_ssse3_pabs_d, // llvm.x86.ssse3.pabs.d
  2294. x86_ssse3_pabs_d_128, // llvm.x86.ssse3.pabs.d.128
  2295. x86_ssse3_pabs_w, // llvm.x86.ssse3.pabs.w
  2296. x86_ssse3_pabs_w_128, // llvm.x86.ssse3.pabs.w.128
  2297. x86_ssse3_phadd_d, // llvm.x86.ssse3.phadd.d
  2298. x86_ssse3_phadd_d_128, // llvm.x86.ssse3.phadd.d.128
  2299. x86_ssse3_phadd_sw, // llvm.x86.ssse3.phadd.sw
  2300. x86_ssse3_phadd_sw_128, // llvm.x86.ssse3.phadd.sw.128
  2301. x86_ssse3_phadd_w, // llvm.x86.ssse3.phadd.w
  2302. x86_ssse3_phadd_w_128, // llvm.x86.ssse3.phadd.w.128
  2303. x86_ssse3_phsub_d, // llvm.x86.ssse3.phsub.d
  2304. x86_ssse3_phsub_d_128, // llvm.x86.ssse3.phsub.d.128
  2305. x86_ssse3_phsub_sw, // llvm.x86.ssse3.phsub.sw
  2306. x86_ssse3_phsub_sw_128, // llvm.x86.ssse3.phsub.sw.128
  2307. x86_ssse3_phsub_w, // llvm.x86.ssse3.phsub.w
  2308. x86_ssse3_phsub_w_128, // llvm.x86.ssse3.phsub.w.128
  2309. x86_ssse3_pmadd_ub_sw, // llvm.x86.ssse3.pmadd.ub.sw
  2310. x86_ssse3_pmadd_ub_sw_128, // llvm.x86.ssse3.pmadd.ub.sw.128
  2311. x86_ssse3_pmul_hr_sw, // llvm.x86.ssse3.pmul.hr.sw
  2312. x86_ssse3_pmul_hr_sw_128, // llvm.x86.ssse3.pmul.hr.sw.128
  2313. x86_ssse3_pshuf_b, // llvm.x86.ssse3.pshuf.b
  2314. x86_ssse3_pshuf_b_128, // llvm.x86.ssse3.pshuf.b.128
  2315. x86_ssse3_psign_b, // llvm.x86.ssse3.psign.b
  2316. x86_ssse3_psign_b_128, // llvm.x86.ssse3.psign.b.128
  2317. x86_ssse3_psign_d, // llvm.x86.ssse3.psign.d
  2318. x86_ssse3_psign_d_128, // llvm.x86.ssse3.psign.d.128
  2319. x86_ssse3_psign_w, // llvm.x86.ssse3.psign.w
  2320. x86_ssse3_psign_w_128, // llvm.x86.ssse3.psign.w.128
  2321. x86_vcvtph2ps_128, // llvm.x86.vcvtph2ps.128
  2322. x86_vcvtph2ps_256, // llvm.x86.vcvtph2ps.256
  2323. x86_vcvtps2ph_128, // llvm.x86.vcvtps2ph.128
  2324. x86_vcvtps2ph_256, // llvm.x86.vcvtps2ph.256
  2325. x86_wrfsbase_32, // llvm.x86.wrfsbase.32
  2326. x86_wrfsbase_64, // llvm.x86.wrfsbase.64
  2327. x86_wrgsbase_32, // llvm.x86.wrgsbase.32
  2328. x86_wrgsbase_64, // llvm.x86.wrgsbase.64
  2329. x86_xabort, // llvm.x86.xabort
  2330. x86_xbegin, // llvm.x86.xbegin
  2331. x86_xend, // llvm.x86.xend
  2332. x86_xop_vfrcz_pd, // llvm.x86.xop.vfrcz.pd
  2333. x86_xop_vfrcz_pd_256, // llvm.x86.xop.vfrcz.pd.256
  2334. x86_xop_vfrcz_ps, // llvm.x86.xop.vfrcz.ps
  2335. x86_xop_vfrcz_ps_256, // llvm.x86.xop.vfrcz.ps.256
  2336. x86_xop_vfrcz_sd, // llvm.x86.xop.vfrcz.sd
  2337. x86_xop_vfrcz_ss, // llvm.x86.xop.vfrcz.ss
  2338. x86_xop_vpcmov, // llvm.x86.xop.vpcmov
  2339. x86_xop_vpcmov_256, // llvm.x86.xop.vpcmov.256
  2340. x86_xop_vpcomb, // llvm.x86.xop.vpcomb
  2341. x86_xop_vpcomd, // llvm.x86.xop.vpcomd
  2342. x86_xop_vpcomq, // llvm.x86.xop.vpcomq
  2343. x86_xop_vpcomub, // llvm.x86.xop.vpcomub
  2344. x86_xop_vpcomud, // llvm.x86.xop.vpcomud
  2345. x86_xop_vpcomuq, // llvm.x86.xop.vpcomuq
  2346. x86_xop_vpcomuw, // llvm.x86.xop.vpcomuw
  2347. x86_xop_vpcomw, // llvm.x86.xop.vpcomw
  2348. x86_xop_vpermil2pd, // llvm.x86.xop.vpermil2pd
  2349. x86_xop_vpermil2pd_256, // llvm.x86.xop.vpermil2pd.256
  2350. x86_xop_vpermil2ps, // llvm.x86.xop.vpermil2ps
  2351. x86_xop_vpermil2ps_256, // llvm.x86.xop.vpermil2ps.256
  2352. x86_xop_vphaddbd, // llvm.x86.xop.vphaddbd
  2353. x86_xop_vphaddbq, // llvm.x86.xop.vphaddbq
  2354. x86_xop_vphaddbw, // llvm.x86.xop.vphaddbw
  2355. x86_xop_vphadddq, // llvm.x86.xop.vphadddq
  2356. x86_xop_vphaddubd, // llvm.x86.xop.vphaddubd
  2357. x86_xop_vphaddubq, // llvm.x86.xop.vphaddubq
  2358. x86_xop_vphaddubw, // llvm.x86.xop.vphaddubw
  2359. x86_xop_vphaddudq, // llvm.x86.xop.vphaddudq
  2360. x86_xop_vphadduwd, // llvm.x86.xop.vphadduwd
  2361. x86_xop_vphadduwq, // llvm.x86.xop.vphadduwq
  2362. x86_xop_vphaddwd, // llvm.x86.xop.vphaddwd
  2363. x86_xop_vphaddwq, // llvm.x86.xop.vphaddwq
  2364. x86_xop_vphsubbw, // llvm.x86.xop.vphsubbw
  2365. x86_xop_vphsubdq, // llvm.x86.xop.vphsubdq
  2366. x86_xop_vphsubwd, // llvm.x86.xop.vphsubwd
  2367. x86_xop_vpmacsdd, // llvm.x86.xop.vpmacsdd
  2368. x86_xop_vpmacsdqh, // llvm.x86.xop.vpmacsdqh
  2369. x86_xop_vpmacsdql, // llvm.x86.xop.vpmacsdql
  2370. x86_xop_vpmacssdd, // llvm.x86.xop.vpmacssdd
  2371. x86_xop_vpmacssdqh, // llvm.x86.xop.vpmacssdqh
  2372. x86_xop_vpmacssdql, // llvm.x86.xop.vpmacssdql
  2373. x86_xop_vpmacsswd, // llvm.x86.xop.vpmacsswd
  2374. x86_xop_vpmacssww, // llvm.x86.xop.vpmacssww
  2375. x86_xop_vpmacswd, // llvm.x86.xop.vpmacswd
  2376. x86_xop_vpmacsww, // llvm.x86.xop.vpmacsww
  2377. x86_xop_vpmadcsswd, // llvm.x86.xop.vpmadcsswd
  2378. x86_xop_vpmadcswd, // llvm.x86.xop.vpmadcswd
  2379. x86_xop_vpperm, // llvm.x86.xop.vpperm
  2380. x86_xop_vprotb, // llvm.x86.xop.vprotb
  2381. x86_xop_vprotbi, // llvm.x86.xop.vprotbi
  2382. x86_xop_vprotd, // llvm.x86.xop.vprotd
  2383. x86_xop_vprotdi, // llvm.x86.xop.vprotdi
  2384. x86_xop_vprotq, // llvm.x86.xop.vprotq
  2385. x86_xop_vprotqi, // llvm.x86.xop.vprotqi
  2386. x86_xop_vprotw, // llvm.x86.xop.vprotw
  2387. x86_xop_vprotwi, // llvm.x86.xop.vprotwi
  2388. x86_xop_vpshab, // llvm.x86.xop.vpshab
  2389. x86_xop_vpshad, // llvm.x86.xop.vpshad
  2390. x86_xop_vpshaq, // llvm.x86.xop.vpshaq
  2391. x86_xop_vpshaw, // llvm.x86.xop.vpshaw
  2392. x86_xop_vpshlb, // llvm.x86.xop.vpshlb
  2393. x86_xop_vpshld, // llvm.x86.xop.vpshld
  2394. x86_xop_vpshlq, // llvm.x86.xop.vpshlq
  2395. x86_xop_vpshlw, // llvm.x86.xop.vpshlw
  2396. x86_xtest, // llvm.x86.xtest
  2397. xcore_bitrev, // llvm.xcore.bitrev
  2398. xcore_checkevent, // llvm.xcore.checkevent
  2399. xcore_chkct, // llvm.xcore.chkct
  2400. xcore_clre, // llvm.xcore.clre
  2401. xcore_clrsr, // llvm.xcore.clrsr
  2402. xcore_crc32, // llvm.xcore.crc32
  2403. xcore_crc8, // llvm.xcore.crc8
  2404. xcore_eeu, // llvm.xcore.eeu
  2405. xcore_endin, // llvm.xcore.endin
  2406. xcore_freer, // llvm.xcore.freer
  2407. xcore_geted, // llvm.xcore.geted
  2408. xcore_getet, // llvm.xcore.getet
  2409. xcore_getid, // llvm.xcore.getid
  2410. xcore_getps, // llvm.xcore.getps
  2411. xcore_getr, // llvm.xcore.getr
  2412. xcore_getst, // llvm.xcore.getst
  2413. xcore_getts, // llvm.xcore.getts
  2414. xcore_in, // llvm.xcore.in
  2415. xcore_inct, // llvm.xcore.inct
  2416. xcore_initcp, // llvm.xcore.initcp
  2417. xcore_initdp, // llvm.xcore.initdp
  2418. xcore_initlr, // llvm.xcore.initlr
  2419. xcore_initpc, // llvm.xcore.initpc
  2420. xcore_initsp, // llvm.xcore.initsp
  2421. xcore_inshr, // llvm.xcore.inshr
  2422. xcore_int, // llvm.xcore.int
  2423. xcore_mjoin, // llvm.xcore.mjoin
  2424. xcore_msync, // llvm.xcore.msync
  2425. xcore_out, // llvm.xcore.out
  2426. xcore_outct, // llvm.xcore.outct
  2427. xcore_outshr, // llvm.xcore.outshr
  2428. xcore_outt, // llvm.xcore.outt
  2429. xcore_peek, // llvm.xcore.peek
  2430. xcore_setc, // llvm.xcore.setc
  2431. xcore_setclk, // llvm.xcore.setclk
  2432. xcore_setd, // llvm.xcore.setd
  2433. xcore_setev, // llvm.xcore.setev
  2434. xcore_setps, // llvm.xcore.setps
  2435. xcore_setpsc, // llvm.xcore.setpsc
  2436. xcore_setpt, // llvm.xcore.setpt
  2437. xcore_setrdy, // llvm.xcore.setrdy
  2438. xcore_setsr, // llvm.xcore.setsr
  2439. xcore_settw, // llvm.xcore.settw
  2440. xcore_setv, // llvm.xcore.setv
  2441. xcore_sext, // llvm.xcore.sext
  2442. xcore_ssync, // llvm.xcore.ssync
  2443. xcore_syncr, // llvm.xcore.syncr
  2444. xcore_testct, // llvm.xcore.testct
  2445. xcore_testwct, // llvm.xcore.testwct
  2446. xcore_waitevent, // llvm.xcore.waitevent
  2447. xcore_zext // llvm.xcore.zext
  2448. #endif
  2449. // Intrinsic ID to name table
  2450. #ifdef GET_INTRINSIC_NAME_TABLE
  2451. // Note that entry #0 is the invalid intrinsic!
  2452. "llvm.adjust.trampoline",
  2453. "llvm.annotation",
  2454. "llvm.arm.cdp",
  2455. "llvm.arm.cdp2",
  2456. "llvm.arm.get.fpscr",
  2457. "llvm.arm.ldrexd",
  2458. "llvm.arm.mcr",
  2459. "llvm.arm.mcr2",
  2460. "llvm.arm.mcrr",
  2461. "llvm.arm.mcrr2",
  2462. "llvm.arm.mrc",
  2463. "llvm.arm.mrc2",
  2464. "llvm.arm.neon.vabds",
  2465. "llvm.arm.neon.vabdu",
  2466. "llvm.arm.neon.vabs",
  2467. "llvm.arm.neon.vacged",
  2468. "llvm.arm.neon.vacgeq",
  2469. "llvm.arm.neon.vacgtd",
  2470. "llvm.arm.neon.vacgtq",
  2471. "llvm.arm.neon.vaddhn",
  2472. "llvm.arm.neon.vbsl",
  2473. "llvm.arm.neon.vcls",
  2474. "llvm.arm.neon.vclz",
  2475. "llvm.arm.neon.vcnt",
  2476. "llvm.arm.neon.vcvtfp2fxs",
  2477. "llvm.arm.neon.vcvtfp2fxu",
  2478. "llvm.arm.neon.vcvtfp2hf",
  2479. "llvm.arm.neon.vcvtfxs2fp",
  2480. "llvm.arm.neon.vcvtfxu2fp",
  2481. "llvm.arm.neon.vcvthf2fp",
  2482. "llvm.arm.neon.vhadds",
  2483. "llvm.arm.neon.vhaddu",
  2484. "llvm.arm.neon.vhsubs",
  2485. "llvm.arm.neon.vhsubu",
  2486. "llvm.arm.neon.vld1",
  2487. "llvm.arm.neon.vld2",
  2488. "llvm.arm.neon.vld2lane",
  2489. "llvm.arm.neon.vld3",
  2490. "llvm.arm.neon.vld3lane",
  2491. "llvm.arm.neon.vld4",
  2492. "llvm.arm.neon.vld4lane",
  2493. "llvm.arm.neon.vmaxs",
  2494. "llvm.arm.neon.vmaxu",
  2495. "llvm.arm.neon.vmins",
  2496. "llvm.arm.neon.vminu",
  2497. "llvm.arm.neon.vmullp",
  2498. "llvm.arm.neon.vmulls",
  2499. "llvm.arm.neon.vmullu",
  2500. "llvm.arm.neon.vmulp",
  2501. "llvm.arm.neon.vpadals",
  2502. "llvm.arm.neon.vpadalu",
  2503. "llvm.arm.neon.vpadd",
  2504. "llvm.arm.neon.vpaddls",
  2505. "llvm.arm.neon.vpaddlu",
  2506. "llvm.arm.neon.vpmaxs",
  2507. "llvm.arm.neon.vpmaxu",
  2508. "llvm.arm.neon.vpmins",
  2509. "llvm.arm.neon.vpminu",
  2510. "llvm.arm.neon.vqabs",
  2511. "llvm.arm.neon.vqadds",
  2512. "llvm.arm.neon.vqaddu",
  2513. "llvm.arm.neon.vqdmlal",
  2514. "llvm.arm.neon.vqdmlsl",
  2515. "llvm.arm.neon.vqdmulh",
  2516. "llvm.arm.neon.vqdmull",
  2517. "llvm.arm.neon.vqmovns",
  2518. "llvm.arm.neon.vqmovnsu",
  2519. "llvm.arm.neon.vqmovnu",
  2520. "llvm.arm.neon.vqneg",
  2521. "llvm.arm.neon.vqrdmulh",
  2522. "llvm.arm.neon.vqrshiftns",
  2523. "llvm.arm.neon.vqrshiftnsu",
  2524. "llvm.arm.neon.vqrshiftnu",
  2525. "llvm.arm.neon.vqrshifts",
  2526. "llvm.arm.neon.vqrshiftu",
  2527. "llvm.arm.neon.vqshiftns",
  2528. "llvm.arm.neon.vqshiftnsu",
  2529. "llvm.arm.neon.vqshiftnu",
  2530. "llvm.arm.neon.vqshifts",
  2531. "llvm.arm.neon.vqshiftsu",
  2532. "llvm.arm.neon.vqshiftu",
  2533. "llvm.arm.neon.vqsubs",
  2534. "llvm.arm.neon.vqsubu",
  2535. "llvm.arm.neon.vraddhn",
  2536. "llvm.arm.neon.vrecpe",
  2537. "llvm.arm.neon.vrecps",
  2538. "llvm.arm.neon.vrhadds",
  2539. "llvm.arm.neon.vrhaddu",
  2540. "llvm.arm.neon.vrshiftn",
  2541. "llvm.arm.neon.vrshifts",
  2542. "llvm.arm.neon.vrshiftu",
  2543. "llvm.arm.neon.vrsqrte",
  2544. "llvm.arm.neon.vrsqrts",
  2545. "llvm.arm.neon.vrsubhn",
  2546. "llvm.arm.neon.vshiftins",
  2547. "llvm.arm.neon.vshiftls",
  2548. "llvm.arm.neon.vshiftlu",
  2549. "llvm.arm.neon.vshiftn",
  2550. "llvm.arm.neon.vshifts",
  2551. "llvm.arm.neon.vshiftu",
  2552. "llvm.arm.neon.vst1",
  2553. "llvm.arm.neon.vst2",
  2554. "llvm.arm.neon.vst2lane",
  2555. "llvm.arm.neon.vst3",
  2556. "llvm.arm.neon.vst3lane",
  2557. "llvm.arm.neon.vst4",
  2558. "llvm.arm.neon.vst4lane",
  2559. "llvm.arm.neon.vsubhn",
  2560. "llvm.arm.neon.vtbl1",
  2561. "llvm.arm.neon.vtbl2",
  2562. "llvm.arm.neon.vtbl3",
  2563. "llvm.arm.neon.vtbl4",
  2564. "llvm.arm.neon.vtbx1",
  2565. "llvm.arm.neon.vtbx2",
  2566. "llvm.arm.neon.vtbx3",
  2567. "llvm.arm.neon.vtbx4",
  2568. "llvm.arm.qadd",
  2569. "llvm.arm.qsub",
  2570. "llvm.arm.set.fpscr",
  2571. "llvm.arm.ssat",
  2572. "llvm.arm.strexd",
  2573. "llvm.arm.thread.pointer",
  2574. "llvm.arm.usat",
  2575. "llvm.arm.vcvtr",
  2576. "llvm.arm.vcvtru",
  2577. "llvm.bswap",
  2578. "llvm.ceil",
  2579. "llvm.convert.from.fp16",
  2580. "llvm.convert.to.fp16",
  2581. "llvm.convertff",
  2582. "llvm.convertfsi",
  2583. "llvm.convertfui",
  2584. "llvm.convertsif",
  2585. "llvm.convertss",
  2586. "llvm.convertsu",
  2587. "llvm.convertuif",
  2588. "llvm.convertus",
  2589. "llvm.convertuu",
  2590. "llvm.cos",
  2591. "llvm.ctlz",
  2592. "llvm.ctpop",
  2593. "llvm.cttz",
  2594. "llvm.cuda.syncthreads",
  2595. "llvm.dbg.declare",
  2596. "llvm.dbg.value",
  2597. "llvm.debugtrap",
  2598. "llvm.donothing",
  2599. "llvm.eh.dwarf.cfa",
  2600. "llvm.eh.return.i32",
  2601. "llvm.eh.return.i64",
  2602. "llvm.eh.sjlj.callsite",
  2603. "llvm.eh.sjlj.functioncontext",
  2604. "llvm.eh.sjlj.longjmp",
  2605. "llvm.eh.sjlj.lsda",
  2606. "llvm.eh.sjlj.setjmp",
  2607. "llvm.eh.typeid.for",
  2608. "llvm.eh.unwind.init",
  2609. "llvm.exp",
  2610. "llvm.exp2",
  2611. "llvm.expect",
  2612. "llvm.fabs",
  2613. "llvm.floor",
  2614. "llvm.flt.rounds",
  2615. "llvm.fma",
  2616. "llvm.fmuladd",
  2617. "llvm.frameaddress",
  2618. "llvm.gcread",
  2619. "llvm.gcroot",
  2620. "llvm.gcwrite",
  2621. "llvm.hexagon.A2.abs",
  2622. "llvm.hexagon.A2.absp",
  2623. "llvm.hexagon.A2.abssat",
  2624. "llvm.hexagon.A2.add",
  2625. "llvm.hexagon.A2.addh.h16.hh",
  2626. "llvm.hexagon.A2.addh.h16.hl",
  2627. "llvm.hexagon.A2.addh.h16.lh",
  2628. "llvm.hexagon.A2.addh.h16.ll",
  2629. "llvm.hexagon.A2.addh.h16.sat.hh",
  2630. "llvm.hexagon.A2.addh.h16.sat.hl",
  2631. "llvm.hexagon.A2.addh.h16.sat.lh",
  2632. "llvm.hexagon.A2.addh.h16.sat.ll",
  2633. "llvm.hexagon.A2.addh.l16.hl",
  2634. "llvm.hexagon.A2.addh.l16.ll",
  2635. "llvm.hexagon.A2.addh.l16.sat.hl",
  2636. "llvm.hexagon.A2.addh.l16.sat.ll",
  2637. "llvm.hexagon.A2.addi",
  2638. "llvm.hexagon.A2.addp",
  2639. "llvm.hexagon.A2.addpsat",
  2640. "llvm.hexagon.A2.addsat",
  2641. "llvm.hexagon.A2.addsp",
  2642. "llvm.hexagon.A2.and",
  2643. "llvm.hexagon.A2.andir",
  2644. "llvm.hexagon.A2.andp",
  2645. "llvm.hexagon.A2.aslh",
  2646. "llvm.hexagon.A2.asrh",
  2647. "llvm.hexagon.A2.combine.hh",
  2648. "llvm.hexagon.A2.combine.hl",
  2649. "llvm.hexagon.A2.combine.lh",
  2650. "llvm.hexagon.A2.combine.ll",
  2651. "llvm.hexagon.A2.combineii",
  2652. "llvm.hexagon.A2.combinew",
  2653. "llvm.hexagon.A2.max",
  2654. "llvm.hexagon.A2.maxp",
  2655. "llvm.hexagon.A2.maxu",
  2656. "llvm.hexagon.A2.maxup",
  2657. "llvm.hexagon.A2.min",
  2658. "llvm.hexagon.A2.minp",
  2659. "llvm.hexagon.A2.minu",
  2660. "llvm.hexagon.A2.minup",
  2661. "llvm.hexagon.A2.neg",
  2662. "llvm.hexagon.A2.negp",
  2663. "llvm.hexagon.A2.negsat",
  2664. "llvm.hexagon.A2.not",
  2665. "llvm.hexagon.A2.notp",
  2666. "llvm.hexagon.A2.or",
  2667. "llvm.hexagon.A2.orir",
  2668. "llvm.hexagon.A2.orp",
  2669. "llvm.hexagon.A2.roundsat",
  2670. "llvm.hexagon.A2.sat",
  2671. "llvm.hexagon.A2.satb",
  2672. "llvm.hexagon.A2.sath",
  2673. "llvm.hexagon.A2.satub",
  2674. "llvm.hexagon.A2.satuh",
  2675. "llvm.hexagon.A2.sub",
  2676. "llvm.hexagon.A2.subh.h16.hh",
  2677. "llvm.hexagon.A2.subh.h16.hl",
  2678. "llvm.hexagon.A2.subh.h16.lh",
  2679. "llvm.hexagon.A2.subh.h16.ll",
  2680. "llvm.hexagon.A2.subh.h16.sat.hh",
  2681. "llvm.hexagon.A2.subh.h16.sat.hl",
  2682. "llvm.hexagon.A2.subh.h16.sat.lh",
  2683. "llvm.hexagon.A2.subh.h16.sat.ll",
  2684. "llvm.hexagon.A2.subh.l16.hl",
  2685. "llvm.hexagon.A2.subh.l16.ll",
  2686. "llvm.hexagon.A2.subh.l16.sat.hl",
  2687. "llvm.hexagon.A2.subh.l16.sat.ll",
  2688. "llvm.hexagon.A2.subp",
  2689. "llvm.hexagon.A2.subri",
  2690. "llvm.hexagon.A2.subsat",
  2691. "llvm.hexagon.A2.svaddh",
  2692. "llvm.hexagon.A2.svaddhs",
  2693. "llvm.hexagon.A2.svadduhs",
  2694. "llvm.hexagon.A2.svavgh",
  2695. "llvm.hexagon.A2.svavghs",
  2696. "llvm.hexagon.A2.svnavgh",
  2697. "llvm.hexagon.A2.svsubh",
  2698. "llvm.hexagon.A2.svsubhs",
  2699. "llvm.hexagon.A2.svsubuhs",
  2700. "llvm.hexagon.A2.swiz",
  2701. "llvm.hexagon.A2.sxtb",
  2702. "llvm.hexagon.A2.sxth",
  2703. "llvm.hexagon.A2.sxtw",
  2704. "llvm.hexagon.A2.tfr",
  2705. "llvm.hexagon.A2.tfrih",
  2706. "llvm.hexagon.A2.tfril",
  2707. "llvm.hexagon.A2.tfrp",
  2708. "llvm.hexagon.A2.tfrpi",
  2709. "llvm.hexagon.A2.tfrsi",
  2710. "llvm.hexagon.A2.vabsh",
  2711. "llvm.hexagon.A2.vabshsat",
  2712. "llvm.hexagon.A2.vabsw",
  2713. "llvm.hexagon.A2.vabswsat",
  2714. "llvm.hexagon.A2.vaddb.map",
  2715. "llvm.hexagon.A2.vaddh",
  2716. "llvm.hexagon.A2.vaddhs",
  2717. "llvm.hexagon.A2.vaddub",
  2718. "llvm.hexagon.A2.vaddubs",
  2719. "llvm.hexagon.A2.vadduhs",
  2720. "llvm.hexagon.A2.vaddw",
  2721. "llvm.hexagon.A2.vaddws",
  2722. "llvm.hexagon.A2.vavgh",
  2723. "llvm.hexagon.A2.vavghcr",
  2724. "llvm.hexagon.A2.vavghr",
  2725. "llvm.hexagon.A2.vavgub",
  2726. "llvm.hexagon.A2.vavgubr",
  2727. "llvm.hexagon.A2.vavguh",
  2728. "llvm.hexagon.A2.vavguhr",
  2729. "llvm.hexagon.A2.vavguw",
  2730. "llvm.hexagon.A2.vavguwr",
  2731. "llvm.hexagon.A2.vavgw",
  2732. "llvm.hexagon.A2.vavgwcr",
  2733. "llvm.hexagon.A2.vavgwr",
  2734. "llvm.hexagon.A2.vcmpbeq",
  2735. "llvm.hexagon.A2.vcmpbgtu",
  2736. "llvm.hexagon.A2.vcmpheq",
  2737. "llvm.hexagon.A2.vcmphgt",
  2738. "llvm.hexagon.A2.vcmphgtu",
  2739. "llvm.hexagon.A2.vcmpweq",
  2740. "llvm.hexagon.A2.vcmpwgt",
  2741. "llvm.hexagon.A2.vcmpwgtu",
  2742. "llvm.hexagon.A2.vconj",
  2743. "llvm.hexagon.A2.vmaxb",
  2744. "llvm.hexagon.A2.vmaxh",
  2745. "llvm.hexagon.A2.vmaxub",
  2746. "llvm.hexagon.A2.vmaxuh",
  2747. "llvm.hexagon.A2.vmaxuw",
  2748. "llvm.hexagon.A2.vmaxw",
  2749. "llvm.hexagon.A2.vminb",
  2750. "llvm.hexagon.A2.vminh",
  2751. "llvm.hexagon.A2.vminub",
  2752. "llvm.hexagon.A2.vminuh",
  2753. "llvm.hexagon.A2.vminuw",
  2754. "llvm.hexagon.A2.vminw",
  2755. "llvm.hexagon.A2.vnavgh",
  2756. "llvm.hexagon.A2.vnavghcr",
  2757. "llvm.hexagon.A2.vnavghr",
  2758. "llvm.hexagon.A2.vnavgw",
  2759. "llvm.hexagon.A2.vnavgwcr",
  2760. "llvm.hexagon.A2.vnavgwr",
  2761. "llvm.hexagon.A2.vraddub",
  2762. "llvm.hexagon.A2.vraddub.acc",
  2763. "llvm.hexagon.A2.vrsadub",
  2764. "llvm.hexagon.A2.vrsadub.acc",
  2765. "llvm.hexagon.A2.vsubb.map",
  2766. "llvm.hexagon.A2.vsubh",
  2767. "llvm.hexagon.A2.vsubhs",
  2768. "llvm.hexagon.A2.vsubub",
  2769. "llvm.hexagon.A2.vsububs",
  2770. "llvm.hexagon.A2.vsubuhs",
  2771. "llvm.hexagon.A2.vsubw",
  2772. "llvm.hexagon.A2.vsubws",
  2773. "llvm.hexagon.A2.xor",
  2774. "llvm.hexagon.A2.xorp",
  2775. "llvm.hexagon.A2.zxtb",
  2776. "llvm.hexagon.A2.zxth",
  2777. "llvm.hexagon.A4.andn",
  2778. "llvm.hexagon.A4.andnp",
  2779. "llvm.hexagon.A4.bitsplit",
  2780. "llvm.hexagon.A4.bitspliti",
  2781. "llvm.hexagon.A4.boundscheck",
  2782. "llvm.hexagon.A4.cmpbeq",
  2783. "llvm.hexagon.A4.cmpbeqi",
  2784. "llvm.hexagon.A4.cmpbgt",
  2785. "llvm.hexagon.A4.cmpbgti",
  2786. "llvm.hexagon.A4.cmpbgtu",
  2787. "llvm.hexagon.A4.cmpbgtui",
  2788. "llvm.hexagon.A4.cmpheq",
  2789. "llvm.hexagon.A4.cmpheqi",
  2790. "llvm.hexagon.A4.cmphgt",
  2791. "llvm.hexagon.A4.cmphgti",
  2792. "llvm.hexagon.A4.cmphgtu",
  2793. "llvm.hexagon.A4.cmphgtui",
  2794. "llvm.hexagon.A4.combineir",
  2795. "llvm.hexagon.A4.combineri",
  2796. "llvm.hexagon.A4.cround.ri",
  2797. "llvm.hexagon.A4.cround.rr",
  2798. "llvm.hexagon.A4.modwrapu",
  2799. "llvm.hexagon.A4.orn",
  2800. "llvm.hexagon.A4.ornp",
  2801. "llvm.hexagon.A4.rcmpeq",
  2802. "llvm.hexagon.A4.rcmpeqi",
  2803. "llvm.hexagon.A4.rcmpneq",
  2804. "llvm.hexagon.A4.rcmpneqi",
  2805. "llvm.hexagon.A4.round.ri",
  2806. "llvm.hexagon.A4.round.ri.sat",
  2807. "llvm.hexagon.A4.round.rr",
  2808. "llvm.hexagon.A4.round.rr.sat",
  2809. "llvm.hexagon.A4.tlbmatch",
  2810. "llvm.hexagon.A4.vcmpbeq.any",
  2811. "llvm.hexagon.A4.vcmpbeqi",
  2812. "llvm.hexagon.A4.vcmpbgt",
  2813. "llvm.hexagon.A4.vcmpbgti",
  2814. "llvm.hexagon.A4.vcmpbgtui",
  2815. "llvm.hexagon.A4.vcmpheqi",
  2816. "llvm.hexagon.A4.vcmphgti",
  2817. "llvm.hexagon.A4.vcmphgtui",
  2818. "llvm.hexagon.A4.vcmpweqi",
  2819. "llvm.hexagon.A4.vcmpwgti",
  2820. "llvm.hexagon.A4.vcmpwgtui",
  2821. "llvm.hexagon.A4.vrmaxh",
  2822. "llvm.hexagon.A4.vrmaxuh",
  2823. "llvm.hexagon.A4.vrmaxuw",
  2824. "llvm.hexagon.A4.vrmaxw",
  2825. "llvm.hexagon.A4.vrminh",
  2826. "llvm.hexagon.A4.vrminuh",
  2827. "llvm.hexagon.A4.vrminuw",
  2828. "llvm.hexagon.A4.vrminw",
  2829. "llvm.hexagon.A5.vaddhubs",
  2830. "llvm.hexagon.C2.all8",
  2831. "llvm.hexagon.C2.and",
  2832. "llvm.hexagon.C2.andn",
  2833. "llvm.hexagon.C2.any8",
  2834. "llvm.hexagon.C2.bitsclr",
  2835. "llvm.hexagon.C2.bitsclri",
  2836. "llvm.hexagon.C2.bitsset",
  2837. "llvm.hexagon.C2.cmpeq",
  2838. "llvm.hexagon.C2.cmpeqi",
  2839. "llvm.hexagon.C2.cmpeqp",
  2840. "llvm.hexagon.C2.cmpgei",
  2841. "llvm.hexagon.C2.cmpgeui",
  2842. "llvm.hexagon.C2.cmpgt",
  2843. "llvm.hexagon.C2.cmpgti",
  2844. "llvm.hexagon.C2.cmpgtp",
  2845. "llvm.hexagon.C2.cmpgtu",
  2846. "llvm.hexagon.C2.cmpgtui",
  2847. "llvm.hexagon.C2.cmpgtup",
  2848. "llvm.hexagon.C2.cmplt",
  2849. "llvm.hexagon.C2.cmpltu",
  2850. "llvm.hexagon.C2.mask",
  2851. "llvm.hexagon.C2.mux",
  2852. "llvm.hexagon.C2.muxii",
  2853. "llvm.hexagon.C2.muxir",
  2854. "llvm.hexagon.C2.muxri",
  2855. "llvm.hexagon.C2.not",
  2856. "llvm.hexagon.C2.or",
  2857. "llvm.hexagon.C2.orn",
  2858. "llvm.hexagon.C2.pxfer.map",
  2859. "llvm.hexagon.C2.tfrpr",
  2860. "llvm.hexagon.C2.tfrrp",
  2861. "llvm.hexagon.C2.vitpack",
  2862. "llvm.hexagon.C2.vmux",
  2863. "llvm.hexagon.C2.xor",
  2864. "llvm.hexagon.C4.and.and",
  2865. "llvm.hexagon.C4.and.andn",
  2866. "llvm.hexagon.C4.and.or",
  2867. "llvm.hexagon.C4.and.orn",
  2868. "llvm.hexagon.C4.cmplte",
  2869. "llvm.hexagon.C4.cmpltei",
  2870. "llvm.hexagon.C4.cmplteu",
  2871. "llvm.hexagon.C4.cmplteui",
  2872. "llvm.hexagon.C4.cmpneq",
  2873. "llvm.hexagon.C4.cmpneqi",
  2874. "llvm.hexagon.C4.fastcorner9",
  2875. "llvm.hexagon.C4.fastcorner9.not",
  2876. "llvm.hexagon.C4.nbitsclr",
  2877. "llvm.hexagon.C4.nbitsclri",
  2878. "llvm.hexagon.C4.nbitsset",
  2879. "llvm.hexagon.C4.or.and",
  2880. "llvm.hexagon.C4.or.andn",
  2881. "llvm.hexagon.C4.or.or",
  2882. "llvm.hexagon.C4.or.orn",
  2883. "llvm.hexagon.F2.conv.d2df",
  2884. "llvm.hexagon.F2.conv.d2sf",
  2885. "llvm.hexagon.F2.conv.df2d",
  2886. "llvm.hexagon.F2.conv.df2d.chop",
  2887. "llvm.hexagon.F2.conv.df2sf",
  2888. "llvm.hexagon.F2.conv.df2ud",
  2889. "llvm.hexagon.F2.conv.df2ud.chop",
  2890. "llvm.hexagon.F2.conv.df2uw",
  2891. "llvm.hexagon.F2.conv.df2uw.chop",
  2892. "llvm.hexagon.F2.conv.df2w",
  2893. "llvm.hexagon.F2.conv.df2w.chop",
  2894. "llvm.hexagon.F2.conv.sf2d",
  2895. "llvm.hexagon.F2.conv.sf2d.chop",
  2896. "llvm.hexagon.F2.conv.sf2df",
  2897. "llvm.hexagon.F2.conv.sf2ud",
  2898. "llvm.hexagon.F2.conv.sf2ud.chop",
  2899. "llvm.hexagon.F2.conv.sf2uw",
  2900. "llvm.hexagon.F2.conv.sf2uw.chop",
  2901. "llvm.hexagon.F2.conv.sf2w",
  2902. "llvm.hexagon.F2.conv.sf2w.chop",
  2903. "llvm.hexagon.F2.conv.ud2df",
  2904. "llvm.hexagon.F2.conv.ud2sf",
  2905. "llvm.hexagon.F2.conv.uw2df",
  2906. "llvm.hexagon.F2.conv.uw2sf",
  2907. "llvm.hexagon.F2.conv.w2df",
  2908. "llvm.hexagon.F2.conv.w2sf",
  2909. "llvm.hexagon.F2.dfadd",
  2910. "llvm.hexagon.F2.dfclass",
  2911. "llvm.hexagon.F2.dfcmpeq",
  2912. "llvm.hexagon.F2.dfcmpge",
  2913. "llvm.hexagon.F2.dfcmpgt",
  2914. "llvm.hexagon.F2.dfcmpuo",
  2915. "llvm.hexagon.F2.dffixupd",
  2916. "llvm.hexagon.F2.dffixupn",
  2917. "llvm.hexagon.F2.dffixupr",
  2918. "llvm.hexagon.F2.dffma",
  2919. "llvm.hexagon.F2.dffma.lib",
  2920. "llvm.hexagon.F2.dffma.sc",
  2921. "llvm.hexagon.F2.dffms",
  2922. "llvm.hexagon.F2.dffms.lib",
  2923. "llvm.hexagon.F2.dfimm.n",
  2924. "llvm.hexagon.F2.dfimm.p",
  2925. "llvm.hexagon.F2.dfmax",
  2926. "llvm.hexagon.F2.dfmin",
  2927. "llvm.hexagon.F2.dfmpy",
  2928. "llvm.hexagon.F2.dfsub",
  2929. "llvm.hexagon.F2.sfadd",
  2930. "llvm.hexagon.F2.sfclass",
  2931. "llvm.hexagon.F2.sfcmpeq",
  2932. "llvm.hexagon.F2.sfcmpge",
  2933. "llvm.hexagon.F2.sfcmpgt",
  2934. "llvm.hexagon.F2.sfcmpuo",
  2935. "llvm.hexagon.F2.sffixupd",
  2936. "llvm.hexagon.F2.sffixupn",
  2937. "llvm.hexagon.F2.sffixupr",
  2938. "llvm.hexagon.F2.sffma",
  2939. "llvm.hexagon.F2.sffma.lib",
  2940. "llvm.hexagon.F2.sffma.sc",
  2941. "llvm.hexagon.F2.sffms",
  2942. "llvm.hexagon.F2.sffms.lib",
  2943. "llvm.hexagon.F2.sfimm.n",
  2944. "llvm.hexagon.F2.sfimm.p",
  2945. "llvm.hexagon.F2.sfmax",
  2946. "llvm.hexagon.F2.sfmin",
  2947. "llvm.hexagon.F2.sfmpy",
  2948. "llvm.hexagon.F2.sfsub",
  2949. "llvm.hexagon.M2.acci",
  2950. "llvm.hexagon.M2.accii",
  2951. "llvm.hexagon.M2.cmaci.s0",
  2952. "llvm.hexagon.M2.cmacr.s0",
  2953. "llvm.hexagon.M2.cmacs.s0",
  2954. "llvm.hexagon.M2.cmacs.s1",
  2955. "llvm.hexagon.M2.cmacsc.s0",
  2956. "llvm.hexagon.M2.cmacsc.s1",
  2957. "llvm.hexagon.M2.cmpyi.s0",
  2958. "llvm.hexagon.M2.cmpyr.s0",
  2959. "llvm.hexagon.M2.cmpyrs.s0",
  2960. "llvm.hexagon.M2.cmpyrs.s1",
  2961. "llvm.hexagon.M2.cmpyrsc.s0",
  2962. "llvm.hexagon.M2.cmpyrsc.s1",
  2963. "llvm.hexagon.M2.cmpys.s0",
  2964. "llvm.hexagon.M2.cmpys.s1",
  2965. "llvm.hexagon.M2.cmpysc.s0",
  2966. "llvm.hexagon.M2.cmpysc.s1",
  2967. "llvm.hexagon.M2.cnacs.s0",
  2968. "llvm.hexagon.M2.cnacs.s1",
  2969. "llvm.hexagon.M2.cnacsc.s0",
  2970. "llvm.hexagon.M2.cnacsc.s1",
  2971. "llvm.hexagon.M2.dpmpyss.acc.s0",
  2972. "llvm.hexagon.M2.dpmpyss.nac.s0",
  2973. "llvm.hexagon.M2.dpmpyss.rnd.s0",
  2974. "llvm.hexagon.M2.dpmpyss.s0",
  2975. "llvm.hexagon.M2.dpmpyuu.acc.s0",
  2976. "llvm.hexagon.M2.dpmpyuu.nac.s0",
  2977. "llvm.hexagon.M2.dpmpyuu.s0",
  2978. "llvm.hexagon.M2.hmmpyh.rs1",
  2979. "llvm.hexagon.M2.hmmpyh.s1",
  2980. "llvm.hexagon.M2.hmmpyl.rs1",
  2981. "llvm.hexagon.M2.hmmpyl.s1",
  2982. "llvm.hexagon.M2.maci",
  2983. "llvm.hexagon.M2.macsin",
  2984. "llvm.hexagon.M2.macsip",
  2985. "llvm.hexagon.M2.mmachs.rs0",
  2986. "llvm.hexagon.M2.mmachs.rs1",
  2987. "llvm.hexagon.M2.mmachs.s0",
  2988. "llvm.hexagon.M2.mmachs.s1",
  2989. "llvm.hexagon.M2.mmacls.rs0",
  2990. "llvm.hexagon.M2.mmacls.rs1",
  2991. "llvm.hexagon.M2.mmacls.s0",
  2992. "llvm.hexagon.M2.mmacls.s1",
  2993. "llvm.hexagon.M2.mmacuhs.rs0",
  2994. "llvm.hexagon.M2.mmacuhs.rs1",
  2995. "llvm.hexagon.M2.mmacuhs.s0",
  2996. "llvm.hexagon.M2.mmacuhs.s1",
  2997. "llvm.hexagon.M2.mmaculs.rs0",
  2998. "llvm.hexagon.M2.mmaculs.rs1",
  2999. "llvm.hexagon.M2.mmaculs.s0",
  3000. "llvm.hexagon.M2.mmaculs.s1",
  3001. "llvm.hexagon.M2.mmpyh.rs0",
  3002. "llvm.hexagon.M2.mmpyh.rs1",
  3003. "llvm.hexagon.M2.mmpyh.s0",
  3004. "llvm.hexagon.M2.mmpyh.s1",
  3005. "llvm.hexagon.M2.mmpyl.rs0",
  3006. "llvm.hexagon.M2.mmpyl.rs1",
  3007. "llvm.hexagon.M2.mmpyl.s0",
  3008. "llvm.hexagon.M2.mmpyl.s1",
  3009. "llvm.hexagon.M2.mmpyuh.rs0",
  3010. "llvm.hexagon.M2.mmpyuh.rs1",
  3011. "llvm.hexagon.M2.mmpyuh.s0",
  3012. "llvm.hexagon.M2.mmpyuh.s1",
  3013. "llvm.hexagon.M2.mmpyul.rs0",
  3014. "llvm.hexagon.M2.mmpyul.rs1",
  3015. "llvm.hexagon.M2.mmpyul.s0",
  3016. "llvm.hexagon.M2.mmpyul.s1",
  3017. "llvm.hexagon.M2.mpy.acc.hh.s0",
  3018. "llvm.hexagon.M2.mpy.acc.hh.s1",
  3019. "llvm.hexagon.M2.mpy.acc.hl.s0",
  3020. "llvm.hexagon.M2.mpy.acc.hl.s1",
  3021. "llvm.hexagon.M2.mpy.acc.lh.s0",
  3022. "llvm.hexagon.M2.mpy.acc.lh.s1",
  3023. "llvm.hexagon.M2.mpy.acc.ll.s0",
  3024. "llvm.hexagon.M2.mpy.acc.ll.s1",
  3025. "llvm.hexagon.M2.mpy.acc.sat.hh.s0",
  3026. "llvm.hexagon.M2.mpy.acc.sat.hh.s1",
  3027. "llvm.hexagon.M2.mpy.acc.sat.hl.s0",
  3028. "llvm.hexagon.M2.mpy.acc.sat.hl.s1",
  3029. "llvm.hexagon.M2.mpy.acc.sat.lh.s0",
  3030. "llvm.hexagon.M2.mpy.acc.sat.lh.s1",
  3031. "llvm.hexagon.M2.mpy.acc.sat.ll.s0",
  3032. "llvm.hexagon.M2.mpy.acc.sat.ll.s1",
  3033. "llvm.hexagon.M2.mpy.hh.s0",
  3034. "llvm.hexagon.M2.mpy.hh.s1",
  3035. "llvm.hexagon.M2.mpy.hl.s0",
  3036. "llvm.hexagon.M2.mpy.hl.s1",
  3037. "llvm.hexagon.M2.mpy.lh.s0",
  3038. "llvm.hexagon.M2.mpy.lh.s1",
  3039. "llvm.hexagon.M2.mpy.ll.s0",
  3040. "llvm.hexagon.M2.mpy.ll.s1",
  3041. "llvm.hexagon.M2.mpy.nac.hh.s0",
  3042. "llvm.hexagon.M2.mpy.nac.hh.s1",
  3043. "llvm.hexagon.M2.mpy.nac.hl.s0",
  3044. "llvm.hexagon.M2.mpy.nac.hl.s1",
  3045. "llvm.hexagon.M2.mpy.nac.lh.s0",
  3046. "llvm.hexagon.M2.mpy.nac.lh.s1",
  3047. "llvm.hexagon.M2.mpy.nac.ll.s0",
  3048. "llvm.hexagon.M2.mpy.nac.ll.s1",
  3049. "llvm.hexagon.M2.mpy.nac.sat.hh.s0",
  3050. "llvm.hexagon.M2.mpy.nac.sat.hh.s1",
  3051. "llvm.hexagon.M2.mpy.nac.sat.hl.s0",
  3052. "llvm.hexagon.M2.mpy.nac.sat.hl.s1",
  3053. "llvm.hexagon.M2.mpy.nac.sat.lh.s0",
  3054. "llvm.hexagon.M2.mpy.nac.sat.lh.s1",
  3055. "llvm.hexagon.M2.mpy.nac.sat.ll.s0",
  3056. "llvm.hexagon.M2.mpy.nac.sat.ll.s1",
  3057. "llvm.hexagon.M2.mpy.rnd.hh.s0",
  3058. "llvm.hexagon.M2.mpy.rnd.hh.s1",
  3059. "llvm.hexagon.M2.mpy.rnd.hl.s0",
  3060. "llvm.hexagon.M2.mpy.rnd.hl.s1",
  3061. "llvm.hexagon.M2.mpy.rnd.lh.s0",
  3062. "llvm.hexagon.M2.mpy.rnd.lh.s1",
  3063. "llvm.hexagon.M2.mpy.rnd.ll.s0",
  3064. "llvm.hexagon.M2.mpy.rnd.ll.s1",
  3065. "llvm.hexagon.M2.mpy.sat.hh.s0",
  3066. "llvm.hexagon.M2.mpy.sat.hh.s1",
  3067. "llvm.hexagon.M2.mpy.sat.hl.s0",
  3068. "llvm.hexagon.M2.mpy.sat.hl.s1",
  3069. "llvm.hexagon.M2.mpy.sat.lh.s0",
  3070. "llvm.hexagon.M2.mpy.sat.lh.s1",
  3071. "llvm.hexagon.M2.mpy.sat.ll.s0",
  3072. "llvm.hexagon.M2.mpy.sat.ll.s1",
  3073. "llvm.hexagon.M2.mpy.sat.rnd.hh.s0",
  3074. "llvm.hexagon.M2.mpy.sat.rnd.hh.s1",
  3075. "llvm.hexagon.M2.mpy.sat.rnd.hl.s0",
  3076. "llvm.hexagon.M2.mpy.sat.rnd.hl.s1",
  3077. "llvm.hexagon.M2.mpy.sat.rnd.lh.s0",
  3078. "llvm.hexagon.M2.mpy.sat.rnd.lh.s1",
  3079. "llvm.hexagon.M2.mpy.sat.rnd.ll.s0",
  3080. "llvm.hexagon.M2.mpy.sat.rnd.ll.s1",
  3081. "llvm.hexagon.M2.mpy.up",
  3082. "llvm.hexagon.M2.mpy.up.s1",
  3083. "llvm.hexagon.M2.mpy.up.s1.sat",
  3084. "llvm.hexagon.M2.mpyd.acc.hh.s0",
  3085. "llvm.hexagon.M2.mpyd.acc.hh.s1",
  3086. "llvm.hexagon.M2.mpyd.acc.hl.s0",
  3087. "llvm.hexagon.M2.mpyd.acc.hl.s1",
  3088. "llvm.hexagon.M2.mpyd.acc.lh.s0",
  3089. "llvm.hexagon.M2.mpyd.acc.lh.s1",
  3090. "llvm.hexagon.M2.mpyd.acc.ll.s0",
  3091. "llvm.hexagon.M2.mpyd.acc.ll.s1",
  3092. "llvm.hexagon.M2.mpyd.hh.s0",
  3093. "llvm.hexagon.M2.mpyd.hh.s1",
  3094. "llvm.hexagon.M2.mpyd.hl.s0",
  3095. "llvm.hexagon.M2.mpyd.hl.s1",
  3096. "llvm.hexagon.M2.mpyd.lh.s0",
  3097. "llvm.hexagon.M2.mpyd.lh.s1",
  3098. "llvm.hexagon.M2.mpyd.ll.s0",
  3099. "llvm.hexagon.M2.mpyd.ll.s1",
  3100. "llvm.hexagon.M2.mpyd.nac.hh.s0",
  3101. "llvm.hexagon.M2.mpyd.nac.hh.s1",
  3102. "llvm.hexagon.M2.mpyd.nac.hl.s0",
  3103. "llvm.hexagon.M2.mpyd.nac.hl.s1",
  3104. "llvm.hexagon.M2.mpyd.nac.lh.s0",
  3105. "llvm.hexagon.M2.mpyd.nac.lh.s1",
  3106. "llvm.hexagon.M2.mpyd.nac.ll.s0",
  3107. "llvm.hexagon.M2.mpyd.nac.ll.s1",
  3108. "llvm.hexagon.M2.mpyd.rnd.hh.s0",
  3109. "llvm.hexagon.M2.mpyd.rnd.hh.s1",
  3110. "llvm.hexagon.M2.mpyd.rnd.hl.s0",
  3111. "llvm.hexagon.M2.mpyd.rnd.hl.s1",
  3112. "llvm.hexagon.M2.mpyd.rnd.lh.s0",
  3113. "llvm.hexagon.M2.mpyd.rnd.lh.s1",
  3114. "llvm.hexagon.M2.mpyd.rnd.ll.s0",
  3115. "llvm.hexagon.M2.mpyd.rnd.ll.s1",
  3116. "llvm.hexagon.M2.mpyi",
  3117. "llvm.hexagon.M2.mpysmi",
  3118. "llvm.hexagon.M2.mpysu.up",
  3119. "llvm.hexagon.M2.mpyu.acc.hh.s0",
  3120. "llvm.hexagon.M2.mpyu.acc.hh.s1",
  3121. "llvm.hexagon.M2.mpyu.acc.hl.s0",
  3122. "llvm.hexagon.M2.mpyu.acc.hl.s1",
  3123. "llvm.hexagon.M2.mpyu.acc.lh.s0",
  3124. "llvm.hexagon.M2.mpyu.acc.lh.s1",
  3125. "llvm.hexagon.M2.mpyu.acc.ll.s0",
  3126. "llvm.hexagon.M2.mpyu.acc.ll.s1",
  3127. "llvm.hexagon.M2.mpyu.hh.s0",
  3128. "llvm.hexagon.M2.mpyu.hh.s1",
  3129. "llvm.hexagon.M2.mpyu.hl.s0",
  3130. "llvm.hexagon.M2.mpyu.hl.s1",
  3131. "llvm.hexagon.M2.mpyu.lh.s0",
  3132. "llvm.hexagon.M2.mpyu.lh.s1",
  3133. "llvm.hexagon.M2.mpyu.ll.s0",
  3134. "llvm.hexagon.M2.mpyu.ll.s1",
  3135. "llvm.hexagon.M2.mpyu.nac.hh.s0",
  3136. "llvm.hexagon.M2.mpyu.nac.hh.s1",
  3137. "llvm.hexagon.M2.mpyu.nac.hl.s0",
  3138. "llvm.hexagon.M2.mpyu.nac.hl.s1",
  3139. "llvm.hexagon.M2.mpyu.nac.lh.s0",
  3140. "llvm.hexagon.M2.mpyu.nac.lh.s1",
  3141. "llvm.hexagon.M2.mpyu.nac.ll.s0",
  3142. "llvm.hexagon.M2.mpyu.nac.ll.s1",
  3143. "llvm.hexagon.M2.mpyu.up",
  3144. "llvm.hexagon.M2.mpyud.acc.hh.s0",
  3145. "llvm.hexagon.M2.mpyud.acc.hh.s1",
  3146. "llvm.hexagon.M2.mpyud.acc.hl.s0",
  3147. "llvm.hexagon.M2.mpyud.acc.hl.s1",
  3148. "llvm.hexagon.M2.mpyud.acc.lh.s0",
  3149. "llvm.hexagon.M2.mpyud.acc.lh.s1",
  3150. "llvm.hexagon.M2.mpyud.acc.ll.s0",
  3151. "llvm.hexagon.M2.mpyud.acc.ll.s1",
  3152. "llvm.hexagon.M2.mpyud.hh.s0",
  3153. "llvm.hexagon.M2.mpyud.hh.s1",
  3154. "llvm.hexagon.M2.mpyud.hl.s0",
  3155. "llvm.hexagon.M2.mpyud.hl.s1",
  3156. "llvm.hexagon.M2.mpyud.lh.s0",
  3157. "llvm.hexagon.M2.mpyud.lh.s1",
  3158. "llvm.hexagon.M2.mpyud.ll.s0",
  3159. "llvm.hexagon.M2.mpyud.ll.s1",
  3160. "llvm.hexagon.M2.mpyud.nac.hh.s0",
  3161. "llvm.hexagon.M2.mpyud.nac.hh.s1",
  3162. "llvm.hexagon.M2.mpyud.nac.hl.s0",
  3163. "llvm.hexagon.M2.mpyud.nac.hl.s1",
  3164. "llvm.hexagon.M2.mpyud.nac.lh.s0",
  3165. "llvm.hexagon.M2.mpyud.nac.lh.s1",
  3166. "llvm.hexagon.M2.mpyud.nac.ll.s0",
  3167. "llvm.hexagon.M2.mpyud.nac.ll.s1",
  3168. "llvm.hexagon.M2.mpyui",
  3169. "llvm.hexagon.M2.nacci",
  3170. "llvm.hexagon.M2.naccii",
  3171. "llvm.hexagon.M2.subacc",
  3172. "llvm.hexagon.M2.vabsdiffh",
  3173. "llvm.hexagon.M2.vabsdiffw",
  3174. "llvm.hexagon.M2.vcmac.s0.sat.i",
  3175. "llvm.hexagon.M2.vcmac.s0.sat.r",
  3176. "llvm.hexagon.M2.vcmpy.s0.sat.i",
  3177. "llvm.hexagon.M2.vcmpy.s0.sat.r",
  3178. "llvm.hexagon.M2.vcmpy.s1.sat.i",
  3179. "llvm.hexagon.M2.vcmpy.s1.sat.r",
  3180. "llvm.hexagon.M2.vdmacs.s0",
  3181. "llvm.hexagon.M2.vdmacs.s1",
  3182. "llvm.hexagon.M2.vdmpyrs.s0",
  3183. "llvm.hexagon.M2.vdmpyrs.s1",
  3184. "llvm.hexagon.M2.vdmpys.s0",
  3185. "llvm.hexagon.M2.vdmpys.s1",
  3186. "llvm.hexagon.M2.vmac2",
  3187. "llvm.hexagon.M2.vmac2es",
  3188. "llvm.hexagon.M2.vmac2es.s0",
  3189. "llvm.hexagon.M2.vmac2es.s1",
  3190. "llvm.hexagon.M2.vmac2s.s0",
  3191. "llvm.hexagon.M2.vmac2s.s1",
  3192. "llvm.hexagon.M2.vmac2su.s0",
  3193. "llvm.hexagon.M2.vmac2su.s1",
  3194. "llvm.hexagon.M2.vmpy2es.s0",
  3195. "llvm.hexagon.M2.vmpy2es.s1",
  3196. "llvm.hexagon.M2.vmpy2s.s0",
  3197. "llvm.hexagon.M2.vmpy2s.s0pack",
  3198. "llvm.hexagon.M2.vmpy2s.s1",
  3199. "llvm.hexagon.M2.vmpy2s.s1pack",
  3200. "llvm.hexagon.M2.vmpy2su.s0",
  3201. "llvm.hexagon.M2.vmpy2su.s1",
  3202. "llvm.hexagon.M2.vraddh",
  3203. "llvm.hexagon.M2.vradduh",
  3204. "llvm.hexagon.M2.vrcmaci.s0",
  3205. "llvm.hexagon.M2.vrcmaci.s0c",
  3206. "llvm.hexagon.M2.vrcmacr.s0",
  3207. "llvm.hexagon.M2.vrcmacr.s0c",
  3208. "llvm.hexagon.M2.vrcmpyi.s0",
  3209. "llvm.hexagon.M2.vrcmpyi.s0c",
  3210. "llvm.hexagon.M2.vrcmpyr.s0",
  3211. "llvm.hexagon.M2.vrcmpyr.s0c",
  3212. "llvm.hexagon.M2.vrcmpys.acc.s1",
  3213. "llvm.hexagon.M2.vrcmpys.s1",
  3214. "llvm.hexagon.M2.vrcmpys.s1rp",
  3215. "llvm.hexagon.M2.vrmac.s0",
  3216. "llvm.hexagon.M2.vrmpy.s0",
  3217. "llvm.hexagon.M2.xor.xacc",
  3218. "llvm.hexagon.M4.and.and",
  3219. "llvm.hexagon.M4.and.andn",
  3220. "llvm.hexagon.M4.and.or",
  3221. "llvm.hexagon.M4.and.xor",
  3222. "llvm.hexagon.M4.cmpyi.wh",
  3223. "llvm.hexagon.M4.cmpyi.whc",
  3224. "llvm.hexagon.M4.cmpyr.wh",
  3225. "llvm.hexagon.M4.cmpyr.whc",
  3226. "llvm.hexagon.M4.mac.up.s1.sat",
  3227. "llvm.hexagon.M4.mpyri.addi",
  3228. "llvm.hexagon.M4.mpyri.addr",
  3229. "llvm.hexagon.M4.mpyri.addr.u2",
  3230. "llvm.hexagon.M4.mpyrr.addi",
  3231. "llvm.hexagon.M4.mpyrr.addr",
  3232. "llvm.hexagon.M4.nac.up.s1.sat",
  3233. "llvm.hexagon.M4.or.and",
  3234. "llvm.hexagon.M4.or.andn",
  3235. "llvm.hexagon.M4.or.or",
  3236. "llvm.hexagon.M4.or.xor",
  3237. "llvm.hexagon.M4.pmpyw",
  3238. "llvm.hexagon.M4.pmpyw.acc",
  3239. "llvm.hexagon.M4.vpmpyh",
  3240. "llvm.hexagon.M4.vpmpyh.acc",
  3241. "llvm.hexagon.M4.vrmpyeh.acc.s0",
  3242. "llvm.hexagon.M4.vrmpyeh.acc.s1",
  3243. "llvm.hexagon.M4.vrmpyeh.s0",
  3244. "llvm.hexagon.M4.vrmpyeh.s1",
  3245. "llvm.hexagon.M4.vrmpyoh.acc.s0",
  3246. "llvm.hexagon.M4.vrmpyoh.acc.s1",
  3247. "llvm.hexagon.M4.vrmpyoh.s0",
  3248. "llvm.hexagon.M4.vrmpyoh.s1",
  3249. "llvm.hexagon.M4.xor.and",
  3250. "llvm.hexagon.M4.xor.andn",
  3251. "llvm.hexagon.M4.xor.or",
  3252. "llvm.hexagon.M4.xor.xacc",
  3253. "llvm.hexagon.M5.vdmacbsu",
  3254. "llvm.hexagon.M5.vdmpybsu",
  3255. "llvm.hexagon.M5.vmacbsu",
  3256. "llvm.hexagon.M5.vmacbuu",
  3257. "llvm.hexagon.M5.vmpybsu",
  3258. "llvm.hexagon.M5.vmpybuu",
  3259. "llvm.hexagon.M5.vrmacbsu",
  3260. "llvm.hexagon.M5.vrmacbuu",
  3261. "llvm.hexagon.M5.vrmpybsu",
  3262. "llvm.hexagon.M5.vrmpybuu",
  3263. "llvm.hexagon.S2.addasl.rrri",
  3264. "llvm.hexagon.S2.asl.i.p",
  3265. "llvm.hexagon.S2.asl.i.p.acc",
  3266. "llvm.hexagon.S2.asl.i.p.and",
  3267. "llvm.hexagon.S2.asl.i.p.nac",
  3268. "llvm.hexagon.S2.asl.i.p.or",
  3269. "llvm.hexagon.S2.asl.i.p.xacc",
  3270. "llvm.hexagon.S2.asl.i.r",
  3271. "llvm.hexagon.S2.asl.i.r.acc",
  3272. "llvm.hexagon.S2.asl.i.r.and",
  3273. "llvm.hexagon.S2.asl.i.r.nac",
  3274. "llvm.hexagon.S2.asl.i.r.or",
  3275. "llvm.hexagon.S2.asl.i.r.sat",
  3276. "llvm.hexagon.S2.asl.i.r.xacc",
  3277. "llvm.hexagon.S2.asl.i.vh",
  3278. "llvm.hexagon.S2.asl.i.vw",
  3279. "llvm.hexagon.S2.asl.r.p",
  3280. "llvm.hexagon.S2.asl.r.p.acc",
  3281. "llvm.hexagon.S2.asl.r.p.and",
  3282. "llvm.hexagon.S2.asl.r.p.nac",
  3283. "llvm.hexagon.S2.asl.r.p.or",
  3284. "llvm.hexagon.S2.asl.r.p.xor",
  3285. "llvm.hexagon.S2.asl.r.r",
  3286. "llvm.hexagon.S2.asl.r.r.acc",
  3287. "llvm.hexagon.S2.asl.r.r.and",
  3288. "llvm.hexagon.S2.asl.r.r.nac",
  3289. "llvm.hexagon.S2.asl.r.r.or",
  3290. "llvm.hexagon.S2.asl.r.r.sat",
  3291. "llvm.hexagon.S2.asl.r.vh",
  3292. "llvm.hexagon.S2.asl.r.vw",
  3293. "llvm.hexagon.S2.asr.i.p",
  3294. "llvm.hexagon.S2.asr.i.p.acc",
  3295. "llvm.hexagon.S2.asr.i.p.and",
  3296. "llvm.hexagon.S2.asr.i.p.nac",
  3297. "llvm.hexagon.S2.asr.i.p.or",
  3298. "llvm.hexagon.S2.asr.i.p.rnd",
  3299. "llvm.hexagon.S2.asr.i.p.rnd.goodsyntax",
  3300. "llvm.hexagon.S2.asr.i.r",
  3301. "llvm.hexagon.S2.asr.i.r.acc",
  3302. "llvm.hexagon.S2.asr.i.r.and",
  3303. "llvm.hexagon.S2.asr.i.r.nac",
  3304. "llvm.hexagon.S2.asr.i.r.or",
  3305. "llvm.hexagon.S2.asr.i.r.rnd",
  3306. "llvm.hexagon.S2.asr.i.r.rnd.goodsyntax",
  3307. "llvm.hexagon.S2.asr.i.svw.trun",
  3308. "llvm.hexagon.S2.asr.i.vh",
  3309. "llvm.hexagon.S2.asr.i.vw",
  3310. "llvm.hexagon.S2.asr.r.p",
  3311. "llvm.hexagon.S2.asr.r.p.acc",
  3312. "llvm.hexagon.S2.asr.r.p.and",
  3313. "llvm.hexagon.S2.asr.r.p.nac",
  3314. "llvm.hexagon.S2.asr.r.p.or",
  3315. "llvm.hexagon.S2.asr.r.p.xor",
  3316. "llvm.hexagon.S2.asr.r.r",
  3317. "llvm.hexagon.S2.asr.r.r.acc",
  3318. "llvm.hexagon.S2.asr.r.r.and",
  3319. "llvm.hexagon.S2.asr.r.r.nac",
  3320. "llvm.hexagon.S2.asr.r.r.or",
  3321. "llvm.hexagon.S2.asr.r.r.sat",
  3322. "llvm.hexagon.S2.asr.r.svw.trun",
  3323. "llvm.hexagon.S2.asr.r.vh",
  3324. "llvm.hexagon.S2.asr.r.vw",
  3325. "llvm.hexagon.S2.brev",
  3326. "llvm.hexagon.S2.brevp",
  3327. "llvm.hexagon.S2.cl0",
  3328. "llvm.hexagon.S2.cl0p",
  3329. "llvm.hexagon.S2.cl1",
  3330. "llvm.hexagon.S2.cl1p",
  3331. "llvm.hexagon.S2.clb",
  3332. "llvm.hexagon.S2.clbnorm",
  3333. "llvm.hexagon.S2.clbp",
  3334. "llvm.hexagon.S2.clrbit.i",
  3335. "llvm.hexagon.S2.clrbit.r",
  3336. "llvm.hexagon.S2.ct0",
  3337. "llvm.hexagon.S2.ct0p",
  3338. "llvm.hexagon.S2.ct1",
  3339. "llvm.hexagon.S2.ct1p",
  3340. "llvm.hexagon.S2.deinterleave",
  3341. "llvm.hexagon.S2.extractu",
  3342. "llvm.hexagon.S2.extractu.rp",
  3343. "llvm.hexagon.S2.extractup",
  3344. "llvm.hexagon.S2.extractup.rp",
  3345. "llvm.hexagon.S2.insert",
  3346. "llvm.hexagon.S2.insert.rp",
  3347. "llvm.hexagon.S2.insertp",
  3348. "llvm.hexagon.S2.insertp.rp",
  3349. "llvm.hexagon.S2.interleave",
  3350. "llvm.hexagon.S2.lfsp",
  3351. "llvm.hexagon.S2.lsl.r.p",
  3352. "llvm.hexagon.S2.lsl.r.p.acc",
  3353. "llvm.hexagon.S2.lsl.r.p.and",
  3354. "llvm.hexagon.S2.lsl.r.p.nac",
  3355. "llvm.hexagon.S2.lsl.r.p.or",
  3356. "llvm.hexagon.S2.lsl.r.p.xor",
  3357. "llvm.hexagon.S2.lsl.r.r",
  3358. "llvm.hexagon.S2.lsl.r.r.acc",
  3359. "llvm.hexagon.S2.lsl.r.r.and",
  3360. "llvm.hexagon.S2.lsl.r.r.nac",
  3361. "llvm.hexagon.S2.lsl.r.r.or",
  3362. "llvm.hexagon.S2.lsl.r.vh",
  3363. "llvm.hexagon.S2.lsl.r.vw",
  3364. "llvm.hexagon.S2.lsr.i.p",
  3365. "llvm.hexagon.S2.lsr.i.p.acc",
  3366. "llvm.hexagon.S2.lsr.i.p.and",
  3367. "llvm.hexagon.S2.lsr.i.p.nac",
  3368. "llvm.hexagon.S2.lsr.i.p.or",
  3369. "llvm.hexagon.S2.lsr.i.p.xacc",
  3370. "llvm.hexagon.S2.lsr.i.r",
  3371. "llvm.hexagon.S2.lsr.i.r.acc",
  3372. "llvm.hexagon.S2.lsr.i.r.and",
  3373. "llvm.hexagon.S2.lsr.i.r.nac",
  3374. "llvm.hexagon.S2.lsr.i.r.or",
  3375. "llvm.hexagon.S2.lsr.i.r.xacc",
  3376. "llvm.hexagon.S2.lsr.i.vh",
  3377. "llvm.hexagon.S2.lsr.i.vw",
  3378. "llvm.hexagon.S2.lsr.r.p",
  3379. "llvm.hexagon.S2.lsr.r.p.acc",
  3380. "llvm.hexagon.S2.lsr.r.p.and",
  3381. "llvm.hexagon.S2.lsr.r.p.nac",
  3382. "llvm.hexagon.S2.lsr.r.p.or",
  3383. "llvm.hexagon.S2.lsr.r.p.xor",
  3384. "llvm.hexagon.S2.lsr.r.r",
  3385. "llvm.hexagon.S2.lsr.r.r.acc",
  3386. "llvm.hexagon.S2.lsr.r.r.and",
  3387. "llvm.hexagon.S2.lsr.r.r.nac",
  3388. "llvm.hexagon.S2.lsr.r.r.or",
  3389. "llvm.hexagon.S2.lsr.r.vh",
  3390. "llvm.hexagon.S2.lsr.r.vw",
  3391. "llvm.hexagon.S2.packhl",
  3392. "llvm.hexagon.S2.parityp",
  3393. "llvm.hexagon.S2.setbit.i",
  3394. "llvm.hexagon.S2.setbit.r",
  3395. "llvm.hexagon.S2.shuffeb",
  3396. "llvm.hexagon.S2.shuffeh",
  3397. "llvm.hexagon.S2.shuffob",
  3398. "llvm.hexagon.S2.shuffoh",
  3399. "llvm.hexagon.S2.svsathb",
  3400. "llvm.hexagon.S2.svsathub",
  3401. "llvm.hexagon.S2.tableidxb.goodsyntax",
  3402. "llvm.hexagon.S2.tableidxd.goodsyntax",
  3403. "llvm.hexagon.S2.tableidxh.goodsyntax",
  3404. "llvm.hexagon.S2.tableidxw.goodsyntax",
  3405. "llvm.hexagon.S2.togglebit.i",
  3406. "llvm.hexagon.S2.togglebit.r",
  3407. "llvm.hexagon.S2.tstbit.i",
  3408. "llvm.hexagon.S2.tstbit.r",
  3409. "llvm.hexagon.S2.valignib",
  3410. "llvm.hexagon.S2.valignrb",
  3411. "llvm.hexagon.S2.vcnegh",
  3412. "llvm.hexagon.S2.vcrotate",
  3413. "llvm.hexagon.S2.vrcnegh",
  3414. "llvm.hexagon.S2.vrndpackwh",
  3415. "llvm.hexagon.S2.vrndpackwhs",
  3416. "llvm.hexagon.S2.vsathb",
  3417. "llvm.hexagon.S2.vsathb.nopack",
  3418. "llvm.hexagon.S2.vsathub",
  3419. "llvm.hexagon.S2.vsathub.nopack",
  3420. "llvm.hexagon.S2.vsatwh",
  3421. "llvm.hexagon.S2.vsatwh.nopack",
  3422. "llvm.hexagon.S2.vsatwuh",
  3423. "llvm.hexagon.S2.vsatwuh.nopack",
  3424. "llvm.hexagon.S2.vsplatrb",
  3425. "llvm.hexagon.S2.vsplatrh",
  3426. "llvm.hexagon.S2.vspliceib",
  3427. "llvm.hexagon.S2.vsplicerb",
  3428. "llvm.hexagon.S2.vsxtbh",
  3429. "llvm.hexagon.S2.vsxthw",
  3430. "llvm.hexagon.S2.vtrunehb",
  3431. "llvm.hexagon.S2.vtrunewh",
  3432. "llvm.hexagon.S2.vtrunohb",
  3433. "llvm.hexagon.S2.vtrunowh",
  3434. "llvm.hexagon.S2.vzxtbh",
  3435. "llvm.hexagon.S2.vzxthw",
  3436. "llvm.hexagon.S4.addaddi",
  3437. "llvm.hexagon.S4.addi.asl.ri",
  3438. "llvm.hexagon.S4.addi.lsr.ri",
  3439. "llvm.hexagon.S4.andi.asl.ri",
  3440. "llvm.hexagon.S4.andi.lsr.ri",
  3441. "llvm.hexagon.S4.clbaddi",
  3442. "llvm.hexagon.S4.clbpaddi",
  3443. "llvm.hexagon.S4.clbpnorm",
  3444. "llvm.hexagon.S4.extract",
  3445. "llvm.hexagon.S4.extract.rp",
  3446. "llvm.hexagon.S4.extractp",
  3447. "llvm.hexagon.S4.extractp.rp",
  3448. "llvm.hexagon.S4.lsli",
  3449. "llvm.hexagon.S4.ntstbit.i",
  3450. "llvm.hexagon.S4.ntstbit.r",
  3451. "llvm.hexagon.S4.or.andi",
  3452. "llvm.hexagon.S4.or.andix",
  3453. "llvm.hexagon.S4.or.ori",
  3454. "llvm.hexagon.S4.ori.asl.ri",
  3455. "llvm.hexagon.S4.ori.lsr.ri",
  3456. "llvm.hexagon.S4.parity",
  3457. "llvm.hexagon.S4.subaddi",
  3458. "llvm.hexagon.S4.subi.asl.ri",
  3459. "llvm.hexagon.S4.subi.lsr.ri",
  3460. "llvm.hexagon.S4.vrcrotate",
  3461. "llvm.hexagon.S4.vrcrotate.acc",
  3462. "llvm.hexagon.S4.vxaddsubh",
  3463. "llvm.hexagon.S4.vxaddsubhr",
  3464. "llvm.hexagon.S4.vxaddsubw",
  3465. "llvm.hexagon.S4.vxsubaddh",
  3466. "llvm.hexagon.S4.vxsubaddhr",
  3467. "llvm.hexagon.S4.vxsubaddw",
  3468. "llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax",
  3469. "llvm.hexagon.S5.asrhub.sat",
  3470. "llvm.hexagon.S5.popcountp",
  3471. "llvm.hexagon.S5.vasrhrnd.goodsyntax",
  3472. "llvm.hexagon.SI.to.SXTHI.asrh",
  3473. "llvm.hexagon.circ.ldd",
  3474. "llvm.init.trampoline",
  3475. "llvm.invariant.end",
  3476. "llvm.invariant.start",
  3477. "llvm.lifetime.end",
  3478. "llvm.lifetime.start",
  3479. "llvm.log",
  3480. "llvm.log10",
  3481. "llvm.log2",
  3482. "llvm.longjmp",
  3483. "llvm.memcpy",
  3484. "llvm.memmove",
  3485. "llvm.memset",
  3486. "llvm.mips.absq.s.ph",
  3487. "llvm.mips.absq.s.qb",
  3488. "llvm.mips.absq.s.w",
  3489. "llvm.mips.addq.ph",
  3490. "llvm.mips.addq.s.ph",
  3491. "llvm.mips.addq.s.w",
  3492. "llvm.mips.addqh.ph",
  3493. "llvm.mips.addqh.r.ph",
  3494. "llvm.mips.addqh.r.w",
  3495. "llvm.mips.addqh.w",
  3496. "llvm.mips.addsc",
  3497. "llvm.mips.addu.ph",
  3498. "llvm.mips.addu.qb",
  3499. "llvm.mips.addu.s.ph",
  3500. "llvm.mips.addu.s.qb",
  3501. "llvm.mips.adduh.qb",
  3502. "llvm.mips.adduh.r.qb",
  3503. "llvm.mips.addwc",
  3504. "llvm.mips.append",
  3505. "llvm.mips.balign",
  3506. "llvm.mips.bitrev",
  3507. "llvm.mips.bposge32",
  3508. "llvm.mips.cmp.eq.ph",
  3509. "llvm.mips.cmp.le.ph",
  3510. "llvm.mips.cmp.lt.ph",
  3511. "llvm.mips.cmpgdu.eq.qb",
  3512. "llvm.mips.cmpgdu.le.qb",
  3513. "llvm.mips.cmpgdu.lt.qb",
  3514. "llvm.mips.cmpgu.eq.qb",
  3515. "llvm.mips.cmpgu.le.qb",
  3516. "llvm.mips.cmpgu.lt.qb",
  3517. "llvm.mips.cmpu.eq.qb",
  3518. "llvm.mips.cmpu.le.qb",
  3519. "llvm.mips.cmpu.lt.qb",
  3520. "llvm.mips.dpa.w.ph",
  3521. "llvm.mips.dpaq.s.w.ph",
  3522. "llvm.mips.dpaq.sa.l.w",
  3523. "llvm.mips.dpaqx.s.w.ph",
  3524. "llvm.mips.dpaqx.sa.w.ph",
  3525. "llvm.mips.dpau.h.qbl",
  3526. "llvm.mips.dpau.h.qbr",
  3527. "llvm.mips.dpax.w.ph",
  3528. "llvm.mips.dps.w.ph",
  3529. "llvm.mips.dpsq.s.w.ph",
  3530. "llvm.mips.dpsq.sa.l.w",
  3531. "llvm.mips.dpsqx.s.w.ph",
  3532. "llvm.mips.dpsqx.sa.w.ph",
  3533. "llvm.mips.dpsu.h.qbl",
  3534. "llvm.mips.dpsu.h.qbr",
  3535. "llvm.mips.dpsx.w.ph",
  3536. "llvm.mips.extp",
  3537. "llvm.mips.extpdp",
  3538. "llvm.mips.extr.r.w",
  3539. "llvm.mips.extr.rs.w",
  3540. "llvm.mips.extr.s.h",
  3541. "llvm.mips.extr.w",
  3542. "llvm.mips.insv",
  3543. "llvm.mips.lbux",
  3544. "llvm.mips.lhx",
  3545. "llvm.mips.lwx",
  3546. "llvm.mips.madd",
  3547. "llvm.mips.maddu",
  3548. "llvm.mips.maq.s.w.phl",
  3549. "llvm.mips.maq.s.w.phr",
  3550. "llvm.mips.maq.sa.w.phl",
  3551. "llvm.mips.maq.sa.w.phr",
  3552. "llvm.mips.modsub",
  3553. "llvm.mips.msub",
  3554. "llvm.mips.msubu",
  3555. "llvm.mips.mthlip",
  3556. "llvm.mips.mul.ph",
  3557. "llvm.mips.mul.s.ph",
  3558. "llvm.mips.muleq.s.w.phl",
  3559. "llvm.mips.muleq.s.w.phr",
  3560. "llvm.mips.muleu.s.ph.qbl",
  3561. "llvm.mips.muleu.s.ph.qbr",
  3562. "llvm.mips.mulq.rs.ph",
  3563. "llvm.mips.mulq.rs.w",
  3564. "llvm.mips.mulq.s.ph",
  3565. "llvm.mips.mulq.s.w",
  3566. "llvm.mips.mulsa.w.ph",
  3567. "llvm.mips.mulsaq.s.w.ph",
  3568. "llvm.mips.mult",
  3569. "llvm.mips.multu",
  3570. "llvm.mips.packrl.ph",
  3571. "llvm.mips.pick.ph",
  3572. "llvm.mips.pick.qb",
  3573. "llvm.mips.preceq.w.phl",
  3574. "llvm.mips.preceq.w.phr",
  3575. "llvm.mips.precequ.ph.qbl",
  3576. "llvm.mips.precequ.ph.qbla",
  3577. "llvm.mips.precequ.ph.qbr",
  3578. "llvm.mips.precequ.ph.qbra",
  3579. "llvm.mips.preceu.ph.qbl",
  3580. "llvm.mips.preceu.ph.qbla",
  3581. "llvm.mips.preceu.ph.qbr",
  3582. "llvm.mips.preceu.ph.qbra",
  3583. "llvm.mips.precr.qb.ph",
  3584. "llvm.mips.precr.sra.ph.w",
  3585. "llvm.mips.precr.sra.r.ph.w",
  3586. "llvm.mips.precrq.ph.w",
  3587. "llvm.mips.precrq.qb.ph",
  3588. "llvm.mips.precrq.rs.ph.w",
  3589. "llvm.mips.precrqu.s.qb.ph",
  3590. "llvm.mips.prepend",
  3591. "llvm.mips.raddu.w.qb",
  3592. "llvm.mips.rddsp",
  3593. "llvm.mips.repl.ph",
  3594. "llvm.mips.repl.qb",
  3595. "llvm.mips.shilo",
  3596. "llvm.mips.shll.ph",
  3597. "llvm.mips.shll.qb",
  3598. "llvm.mips.shll.s.ph",
  3599. "llvm.mips.shll.s.w",
  3600. "llvm.mips.shra.ph",
  3601. "llvm.mips.shra.qb",
  3602. "llvm.mips.shra.r.ph",
  3603. "llvm.mips.shra.r.qb",
  3604. "llvm.mips.shra.r.w",
  3605. "llvm.mips.shrl.ph",
  3606. "llvm.mips.shrl.qb",
  3607. "llvm.mips.subq.ph",
  3608. "llvm.mips.subq.s.ph",
  3609. "llvm.mips.subq.s.w",
  3610. "llvm.mips.subqh.ph",
  3611. "llvm.mips.subqh.r.ph",
  3612. "llvm.mips.subqh.r.w",
  3613. "llvm.mips.subqh.w",
  3614. "llvm.mips.subu.ph",
  3615. "llvm.mips.subu.qb",
  3616. "llvm.mips.subu.s.ph",
  3617. "llvm.mips.subu.s.qb",
  3618. "llvm.mips.subuh.qb",
  3619. "llvm.mips.subuh.r.qb",
  3620. "llvm.mips.wrdsp",
  3621. "llvm.nearbyint",
  3622. "llvm.nvvm.abs.i",
  3623. "llvm.nvvm.abs.ll",
  3624. "llvm.nvvm.add.rm.d",
  3625. "llvm.nvvm.add.rm.f",
  3626. "llvm.nvvm.add.rm.ftz.f",
  3627. "llvm.nvvm.add.rn.d",
  3628. "llvm.nvvm.add.rn.f",
  3629. "llvm.nvvm.add.rn.ftz.f",
  3630. "llvm.nvvm.add.rp.d",
  3631. "llvm.nvvm.add.rp.f",
  3632. "llvm.nvvm.add.rp.ftz.f",
  3633. "llvm.nvvm.add.rz.d",
  3634. "llvm.nvvm.add.rz.f",
  3635. "llvm.nvvm.add.rz.ftz.f",
  3636. "llvm.nvvm.atomic.load.add.f32",
  3637. "llvm.nvvm.atomic.load.dec.32",
  3638. "llvm.nvvm.atomic.load.inc.32",
  3639. "llvm.nvvm.barrier0",
  3640. "llvm.nvvm.barrier0.and",
  3641. "llvm.nvvm.barrier0.or",
  3642. "llvm.nvvm.barrier0.popc",
  3643. "llvm.nvvm.bitcast.d2ll",
  3644. "llvm.nvvm.bitcast.f2i",
  3645. "llvm.nvvm.bitcast.i2f",
  3646. "llvm.nvvm.bitcast.ll2d",
  3647. "llvm.nvvm.brev32",
  3648. "llvm.nvvm.brev64",
  3649. "llvm.nvvm.ceil.d",
  3650. "llvm.nvvm.ceil.f",
  3651. "llvm.nvvm.ceil.ftz.f",
  3652. "llvm.nvvm.clz.i",
  3653. "llvm.nvvm.clz.ll",
  3654. "llvm.nvvm.compiler.error",
  3655. "llvm.nvvm.compiler.warn",
  3656. "llvm.nvvm.cos.approx.f",
  3657. "llvm.nvvm.cos.approx.ftz.f",
  3658. "llvm.nvvm.d2f.rm",
  3659. "llvm.nvvm.d2f.rm.ftz",
  3660. "llvm.nvvm.d2f.rn",
  3661. "llvm.nvvm.d2f.rn.ftz",
  3662. "llvm.nvvm.d2f.rp",
  3663. "llvm.nvvm.d2f.rp.ftz",
  3664. "llvm.nvvm.d2f.rz",
  3665. "llvm.nvvm.d2f.rz.ftz",
  3666. "llvm.nvvm.d2i.hi",
  3667. "llvm.nvvm.d2i.lo",
  3668. "llvm.nvvm.d2i.rm",
  3669. "llvm.nvvm.d2i.rn",
  3670. "llvm.nvvm.d2i.rp",
  3671. "llvm.nvvm.d2i.rz",
  3672. "llvm.nvvm.d2ll.rm",
  3673. "llvm.nvvm.d2ll.rn",
  3674. "llvm.nvvm.d2ll.rp",
  3675. "llvm.nvvm.d2ll.rz",
  3676. "llvm.nvvm.d2ui.rm",
  3677. "llvm.nvvm.d2ui.rn",
  3678. "llvm.nvvm.d2ui.rp",
  3679. "llvm.nvvm.d2ui.rz",
  3680. "llvm.nvvm.d2ull.rm",
  3681. "llvm.nvvm.d2ull.rn",
  3682. "llvm.nvvm.d2ull.rp",
  3683. "llvm.nvvm.d2ull.rz",
  3684. "llvm.nvvm.div.approx.f",
  3685. "llvm.nvvm.div.approx.ftz.f",
  3686. "llvm.nvvm.div.rm.d",
  3687. "llvm.nvvm.div.rm.f",
  3688. "llvm.nvvm.div.rm.ftz.f",
  3689. "llvm.nvvm.div.rn.d",
  3690. "llvm.nvvm.div.rn.f",
  3691. "llvm.nvvm.div.rn.ftz.f",
  3692. "llvm.nvvm.div.rp.d",
  3693. "llvm.nvvm.div.rp.f",
  3694. "llvm.nvvm.div.rp.ftz.f",
  3695. "llvm.nvvm.div.rz.d",
  3696. "llvm.nvvm.div.rz.f",
  3697. "llvm.nvvm.div.rz.ftz.f",
  3698. "llvm.nvvm.ex2.approx.d",
  3699. "llvm.nvvm.ex2.approx.f",
  3700. "llvm.nvvm.ex2.approx.ftz.f",
  3701. "llvm.nvvm.f2h.rn",
  3702. "llvm.nvvm.f2h.rn.ftz",
  3703. "llvm.nvvm.f2i.rm",
  3704. "llvm.nvvm.f2i.rm.ftz",
  3705. "llvm.nvvm.f2i.rn",
  3706. "llvm.nvvm.f2i.rn.ftz",
  3707. "llvm.nvvm.f2i.rp",
  3708. "llvm.nvvm.f2i.rp.ftz",
  3709. "llvm.nvvm.f2i.rz",
  3710. "llvm.nvvm.f2i.rz.ftz",
  3711. "llvm.nvvm.f2ll.rm",
  3712. "llvm.nvvm.f2ll.rm.ftz",
  3713. "llvm.nvvm.f2ll.rn",
  3714. "llvm.nvvm.f2ll.rn.ftz",
  3715. "llvm.nvvm.f2ll.rp",
  3716. "llvm.nvvm.f2ll.rp.ftz",
  3717. "llvm.nvvm.f2ll.rz",
  3718. "llvm.nvvm.f2ll.rz.ftz",
  3719. "llvm.nvvm.f2ui.rm",
  3720. "llvm.nvvm.f2ui.rm.ftz",
  3721. "llvm.nvvm.f2ui.rn",
  3722. "llvm.nvvm.f2ui.rn.ftz",
  3723. "llvm.nvvm.f2ui.rp",
  3724. "llvm.nvvm.f2ui.rp.ftz",
  3725. "llvm.nvvm.f2ui.rz",
  3726. "llvm.nvvm.f2ui.rz.ftz",
  3727. "llvm.nvvm.f2ull.rm",
  3728. "llvm.nvvm.f2ull.rm.ftz",
  3729. "llvm.nvvm.f2ull.rn",
  3730. "llvm.nvvm.f2ull.rn.ftz",
  3731. "llvm.nvvm.f2ull.rp",
  3732. "llvm.nvvm.f2ull.rp.ftz",
  3733. "llvm.nvvm.f2ull.rz",
  3734. "llvm.nvvm.f2ull.rz.ftz",
  3735. "llvm.nvvm.fabs.d",
  3736. "llvm.nvvm.fabs.f",
  3737. "llvm.nvvm.fabs.ftz.f",
  3738. "llvm.nvvm.floor.d",
  3739. "llvm.nvvm.floor.f",
  3740. "llvm.nvvm.floor.ftz.f",
  3741. "llvm.nvvm.fma.rm.d",
  3742. "llvm.nvvm.fma.rm.f",
  3743. "llvm.nvvm.fma.rm.ftz.f",
  3744. "llvm.nvvm.fma.rn.d",
  3745. "llvm.nvvm.fma.rn.f",
  3746. "llvm.nvvm.fma.rn.ftz.f",
  3747. "llvm.nvvm.fma.rp.d",
  3748. "llvm.nvvm.fma.rp.f",
  3749. "llvm.nvvm.fma.rp.ftz.f",
  3750. "llvm.nvvm.fma.rz.d",
  3751. "llvm.nvvm.fma.rz.f",
  3752. "llvm.nvvm.fma.rz.ftz.f",
  3753. "llvm.nvvm.fmax.d",
  3754. "llvm.nvvm.fmax.f",
  3755. "llvm.nvvm.fmax.ftz.f",
  3756. "llvm.nvvm.fmin.d",
  3757. "llvm.nvvm.fmin.f",
  3758. "llvm.nvvm.fmin.ftz.f",
  3759. "llvm.nvvm.h2f",
  3760. "llvm.nvvm.i2d.rm",
  3761. "llvm.nvvm.i2d.rn",
  3762. "llvm.nvvm.i2d.rp",
  3763. "llvm.nvvm.i2d.rz",
  3764. "llvm.nvvm.i2f.rm",
  3765. "llvm.nvvm.i2f.rn",
  3766. "llvm.nvvm.i2f.rp",
  3767. "llvm.nvvm.i2f.rz",
  3768. "llvm.nvvm.ldg.global.f",
  3769. "llvm.nvvm.ldg.global.i",
  3770. "llvm.nvvm.ldg.global.p",
  3771. "llvm.nvvm.ldu.global.f",
  3772. "llvm.nvvm.ldu.global.i",
  3773. "llvm.nvvm.ldu.global.p",
  3774. "llvm.nvvm.lg2.approx.d",
  3775. "llvm.nvvm.lg2.approx.f",
  3776. "llvm.nvvm.lg2.approx.ftz.f",
  3777. "llvm.nvvm.ll2d.rm",
  3778. "llvm.nvvm.ll2d.rn",
  3779. "llvm.nvvm.ll2d.rp",
  3780. "llvm.nvvm.ll2d.rz",
  3781. "llvm.nvvm.ll2f.rm",
  3782. "llvm.nvvm.ll2f.rn",
  3783. "llvm.nvvm.ll2f.rp",
  3784. "llvm.nvvm.ll2f.rz",
  3785. "llvm.nvvm.lohi.i2d",
  3786. "llvm.nvvm.max.i",
  3787. "llvm.nvvm.max.ll",
  3788. "llvm.nvvm.max.ui",
  3789. "llvm.nvvm.max.ull",
  3790. "llvm.nvvm.membar.cta",
  3791. "llvm.nvvm.membar.gl",
  3792. "llvm.nvvm.membar.sys",
  3793. "llvm.nvvm.min.i",
  3794. "llvm.nvvm.min.ll",
  3795. "llvm.nvvm.min.ui",
  3796. "llvm.nvvm.min.ull",
  3797. "llvm.nvvm.move.double",
  3798. "llvm.nvvm.move.float",
  3799. "llvm.nvvm.move.i16",
  3800. "llvm.nvvm.move.i32",
  3801. "llvm.nvvm.move.i64",
  3802. "llvm.nvvm.move.i8",
  3803. "llvm.nvvm.move.ptr",
  3804. "llvm.nvvm.mul24.i",
  3805. "llvm.nvvm.mul24.ui",
  3806. "llvm.nvvm.mul.rm.d",
  3807. "llvm.nvvm.mul.rm.f",
  3808. "llvm.nvvm.mul.rm.ftz.f",
  3809. "llvm.nvvm.mul.rn.d",
  3810. "llvm.nvvm.mul.rn.f",
  3811. "llvm.nvvm.mul.rn.ftz.f",
  3812. "llvm.nvvm.mul.rp.d",
  3813. "llvm.nvvm.mul.rp.f",
  3814. "llvm.nvvm.mul.rp.ftz.f",
  3815. "llvm.nvvm.mul.rz.d",
  3816. "llvm.nvvm.mul.rz.f",
  3817. "llvm.nvvm.mul.rz.ftz.f",
  3818. "llvm.nvvm.mulhi.i",
  3819. "llvm.nvvm.mulhi.ll",
  3820. "llvm.nvvm.mulhi.ui",
  3821. "llvm.nvvm.mulhi.ull",
  3822. "llvm.nvvm.popc.i",
  3823. "llvm.nvvm.popc.ll",
  3824. "llvm.nvvm.prmt",
  3825. "llvm.nvvm.ptr.constant.to.gen",
  3826. "llvm.nvvm.ptr.gen.to.constant",
  3827. "llvm.nvvm.ptr.gen.to.global",
  3828. "llvm.nvvm.ptr.gen.to.local",
  3829. "llvm.nvvm.ptr.gen.to.param",
  3830. "llvm.nvvm.ptr.gen.to.shared",
  3831. "llvm.nvvm.ptr.global.to.gen",
  3832. "llvm.nvvm.ptr.local.to.gen",
  3833. "llvm.nvvm.ptr.shared.to.gen",
  3834. "llvm.nvvm.rcp.approx.ftz.d",
  3835. "llvm.nvvm.rcp.rm.d",
  3836. "llvm.nvvm.rcp.rm.f",
  3837. "llvm.nvvm.rcp.rm.ftz.f",
  3838. "llvm.nvvm.rcp.rn.d",
  3839. "llvm.nvvm.rcp.rn.f",
  3840. "llvm.nvvm.rcp.rn.ftz.f",
  3841. "llvm.nvvm.rcp.rp.d",
  3842. "llvm.nvvm.rcp.rp.f",
  3843. "llvm.nvvm.rcp.rp.ftz.f",
  3844. "llvm.nvvm.rcp.rz.d",
  3845. "llvm.nvvm.rcp.rz.f",
  3846. "llvm.nvvm.rcp.rz.ftz.f",
  3847. "llvm.nvvm.read.ptx.sreg.ctaid.x",
  3848. "llvm.nvvm.read.ptx.sreg.ctaid.y",
  3849. "llvm.nvvm.read.ptx.sreg.ctaid.z",
  3850. "llvm.nvvm.read.ptx.sreg.nctaid.x",
  3851. "llvm.nvvm.read.ptx.sreg.nctaid.y",
  3852. "llvm.nvvm.read.ptx.sreg.nctaid.z",
  3853. "llvm.nvvm.read.ptx.sreg.ntid.x",
  3854. "llvm.nvvm.read.ptx.sreg.ntid.y",
  3855. "llvm.nvvm.read.ptx.sreg.ntid.z",
  3856. "llvm.nvvm.read.ptx.sreg.tid.x",
  3857. "llvm.nvvm.read.ptx.sreg.tid.y",
  3858. "llvm.nvvm.read.ptx.sreg.tid.z",
  3859. "llvm.nvvm.read.ptx.sreg.warpsize",
  3860. "llvm.nvvm.round.d",
  3861. "llvm.nvvm.round.f",
  3862. "llvm.nvvm.round.ftz.f",
  3863. "llvm.nvvm.rsqrt.approx.d",
  3864. "llvm.nvvm.rsqrt.approx.f",
  3865. "llvm.nvvm.rsqrt.approx.ftz.f",
  3866. "llvm.nvvm.sad.i",
  3867. "llvm.nvvm.sad.ui",
  3868. "llvm.nvvm.saturate.d",
  3869. "llvm.nvvm.saturate.f",
  3870. "llvm.nvvm.saturate.ftz.f",
  3871. "llvm.nvvm.sin.approx.f",
  3872. "llvm.nvvm.sin.approx.ftz.f",
  3873. "llvm.nvvm.sqrt.approx.f",
  3874. "llvm.nvvm.sqrt.approx.ftz.f",
  3875. "llvm.nvvm.sqrt.rm.d",
  3876. "llvm.nvvm.sqrt.rm.f",
  3877. "llvm.nvvm.sqrt.rm.ftz.f",
  3878. "llvm.nvvm.sqrt.rn.d",
  3879. "llvm.nvvm.sqrt.rn.f",
  3880. "llvm.nvvm.sqrt.rn.ftz.f",
  3881. "llvm.nvvm.sqrt.rp.d",
  3882. "llvm.nvvm.sqrt.rp.f",
  3883. "llvm.nvvm.sqrt.rp.ftz.f",
  3884. "llvm.nvvm.sqrt.rz.d",
  3885. "llvm.nvvm.sqrt.rz.f",
  3886. "llvm.nvvm.sqrt.rz.ftz.f",
  3887. "llvm.nvvm.trunc.d",
  3888. "llvm.nvvm.trunc.f",
  3889. "llvm.nvvm.trunc.ftz.f",
  3890. "llvm.nvvm.ui2d.rm",
  3891. "llvm.nvvm.ui2d.rn",
  3892. "llvm.nvvm.ui2d.rp",
  3893. "llvm.nvvm.ui2d.rz",
  3894. "llvm.nvvm.ui2f.rm",
  3895. "llvm.nvvm.ui2f.rn",
  3896. "llvm.nvvm.ui2f.rp",
  3897. "llvm.nvvm.ui2f.rz",
  3898. "llvm.nvvm.ull2d.rm",
  3899. "llvm.nvvm.ull2d.rn",
  3900. "llvm.nvvm.ull2d.rp",
  3901. "llvm.nvvm.ull2d.rz",
  3902. "llvm.nvvm.ull2f.rm",
  3903. "llvm.nvvm.ull2f.rn",
  3904. "llvm.nvvm.ull2f.rp",
  3905. "llvm.nvvm.ull2f.rz",
  3906. "llvm.objectsize",
  3907. "llvm.pcmarker",
  3908. "llvm.pow",
  3909. "llvm.powi",
  3910. "llvm.ppc.altivec.dss",
  3911. "llvm.ppc.altivec.dssall",
  3912. "llvm.ppc.altivec.dst",
  3913. "llvm.ppc.altivec.dstst",
  3914. "llvm.ppc.altivec.dststt",
  3915. "llvm.ppc.altivec.dstt",
  3916. "llvm.ppc.altivec.lvebx",
  3917. "llvm.ppc.altivec.lvehx",
  3918. "llvm.ppc.altivec.lvewx",
  3919. "llvm.ppc.altivec.lvsl",
  3920. "llvm.ppc.altivec.lvsr",
  3921. "llvm.ppc.altivec.lvx",
  3922. "llvm.ppc.altivec.lvxl",
  3923. "llvm.ppc.altivec.mfvscr",
  3924. "llvm.ppc.altivec.mtvscr",
  3925. "llvm.ppc.altivec.stvebx",
  3926. "llvm.ppc.altivec.stvehx",
  3927. "llvm.ppc.altivec.stvewx",
  3928. "llvm.ppc.altivec.stvx",
  3929. "llvm.ppc.altivec.stvxl",
  3930. "llvm.ppc.altivec.vaddcuw",
  3931. "llvm.ppc.altivec.vaddsbs",
  3932. "llvm.ppc.altivec.vaddshs",
  3933. "llvm.ppc.altivec.vaddsws",
  3934. "llvm.ppc.altivec.vaddubs",
  3935. "llvm.ppc.altivec.vadduhs",
  3936. "llvm.ppc.altivec.vadduws",
  3937. "llvm.ppc.altivec.vavgsb",
  3938. "llvm.ppc.altivec.vavgsh",
  3939. "llvm.ppc.altivec.vavgsw",
  3940. "llvm.ppc.altivec.vavgub",
  3941. "llvm.ppc.altivec.vavguh",
  3942. "llvm.ppc.altivec.vavguw",
  3943. "llvm.ppc.altivec.vcfsx",
  3944. "llvm.ppc.altivec.vcfux",
  3945. "llvm.ppc.altivec.vcmpbfp",
  3946. "llvm.ppc.altivec.vcmpbfp.p",
  3947. "llvm.ppc.altivec.vcmpeqfp",
  3948. "llvm.ppc.altivec.vcmpeqfp.p",
  3949. "llvm.ppc.altivec.vcmpequb",
  3950. "llvm.ppc.altivec.vcmpequb.p",
  3951. "llvm.ppc.altivec.vcmpequh",
  3952. "llvm.ppc.altivec.vcmpequh.p",
  3953. "llvm.ppc.altivec.vcmpequw",
  3954. "llvm.ppc.altivec.vcmpequw.p",
  3955. "llvm.ppc.altivec.vcmpgefp",
  3956. "llvm.ppc.altivec.vcmpgefp.p",
  3957. "llvm.ppc.altivec.vcmpgtfp",
  3958. "llvm.ppc.altivec.vcmpgtfp.p",
  3959. "llvm.ppc.altivec.vcmpgtsb",
  3960. "llvm.ppc.altivec.vcmpgtsb.p",
  3961. "llvm.ppc.altivec.vcmpgtsh",
  3962. "llvm.ppc.altivec.vcmpgtsh.p",
  3963. "llvm.ppc.altivec.vcmpgtsw",
  3964. "llvm.ppc.altivec.vcmpgtsw.p",
  3965. "llvm.ppc.altivec.vcmpgtub",
  3966. "llvm.ppc.altivec.vcmpgtub.p",
  3967. "llvm.ppc.altivec.vcmpgtuh",
  3968. "llvm.ppc.altivec.vcmpgtuh.p",
  3969. "llvm.ppc.altivec.vcmpgtuw",
  3970. "llvm.ppc.altivec.vcmpgtuw.p",
  3971. "llvm.ppc.altivec.vctsxs",
  3972. "llvm.ppc.altivec.vctuxs",
  3973. "llvm.ppc.altivec.vexptefp",
  3974. "llvm.ppc.altivec.vlogefp",
  3975. "llvm.ppc.altivec.vmaddfp",
  3976. "llvm.ppc.altivec.vmaxfp",
  3977. "llvm.ppc.altivec.vmaxsb",
  3978. "llvm.ppc.altivec.vmaxsh",
  3979. "llvm.ppc.altivec.vmaxsw",
  3980. "llvm.ppc.altivec.vmaxub",
  3981. "llvm.ppc.altivec.vmaxuh",
  3982. "llvm.ppc.altivec.vmaxuw",
  3983. "llvm.ppc.altivec.vmhaddshs",
  3984. "llvm.ppc.altivec.vmhraddshs",
  3985. "llvm.ppc.altivec.vminfp",
  3986. "llvm.ppc.altivec.vminsb",
  3987. "llvm.ppc.altivec.vminsh",
  3988. "llvm.ppc.altivec.vminsw",
  3989. "llvm.ppc.altivec.vminub",
  3990. "llvm.ppc.altivec.vminuh",
  3991. "llvm.ppc.altivec.vminuw",
  3992. "llvm.ppc.altivec.vmladduhm",
  3993. "llvm.ppc.altivec.vmsummbm",
  3994. "llvm.ppc.altivec.vmsumshm",
  3995. "llvm.ppc.altivec.vmsumshs",
  3996. "llvm.ppc.altivec.vmsumubm",
  3997. "llvm.ppc.altivec.vmsumuhm",
  3998. "llvm.ppc.altivec.vmsumuhs",
  3999. "llvm.ppc.altivec.vmulesb",
  4000. "llvm.ppc.altivec.vmulesh",
  4001. "llvm.ppc.altivec.vmuleub",
  4002. "llvm.ppc.altivec.vmuleuh",
  4003. "llvm.ppc.altivec.vmulosb",
  4004. "llvm.ppc.altivec.vmulosh",
  4005. "llvm.ppc.altivec.vmuloub",
  4006. "llvm.ppc.altivec.vmulouh",
  4007. "llvm.ppc.altivec.vnmsubfp",
  4008. "llvm.ppc.altivec.vperm",
  4009. "llvm.ppc.altivec.vpkpx",
  4010. "llvm.ppc.altivec.vpkshss",
  4011. "llvm.ppc.altivec.vpkshus",
  4012. "llvm.ppc.altivec.vpkswss",
  4013. "llvm.ppc.altivec.vpkswus",
  4014. "llvm.ppc.altivec.vpkuhus",
  4015. "llvm.ppc.altivec.vpkuwus",
  4016. "llvm.ppc.altivec.vrefp",
  4017. "llvm.ppc.altivec.vrfim",
  4018. "llvm.ppc.altivec.vrfin",
  4019. "llvm.ppc.altivec.vrfip",
  4020. "llvm.ppc.altivec.vrfiz",
  4021. "llvm.ppc.altivec.vrlb",
  4022. "llvm.ppc.altivec.vrlh",
  4023. "llvm.ppc.altivec.vrlw",
  4024. "llvm.ppc.altivec.vrsqrtefp",
  4025. "llvm.ppc.altivec.vsel",
  4026. "llvm.ppc.altivec.vsl",
  4027. "llvm.ppc.altivec.vslb",
  4028. "llvm.ppc.altivec.vslh",
  4029. "llvm.ppc.altivec.vslo",
  4030. "llvm.ppc.altivec.vslw",
  4031. "llvm.ppc.altivec.vsr",
  4032. "llvm.ppc.altivec.vsrab",
  4033. "llvm.ppc.altivec.vsrah",
  4034. "llvm.ppc.altivec.vsraw",
  4035. "llvm.ppc.altivec.vsrb",
  4036. "llvm.ppc.altivec.vsrh",
  4037. "llvm.ppc.altivec.vsro",
  4038. "llvm.ppc.altivec.vsrw",
  4039. "llvm.ppc.altivec.vsubcuw",
  4040. "llvm.ppc.altivec.vsubsbs",
  4041. "llvm.ppc.altivec.vsubshs",
  4042. "llvm.ppc.altivec.vsubsws",
  4043. "llvm.ppc.altivec.vsububs",
  4044. "llvm.ppc.altivec.vsubuhs",
  4045. "llvm.ppc.altivec.vsubuws",
  4046. "llvm.ppc.altivec.vsum2sws",
  4047. "llvm.ppc.altivec.vsum4sbs",
  4048. "llvm.ppc.altivec.vsum4shs",
  4049. "llvm.ppc.altivec.vsum4ubs",
  4050. "llvm.ppc.altivec.vsumsws",
  4051. "llvm.ppc.altivec.vupkhpx",
  4052. "llvm.ppc.altivec.vupkhsb",
  4053. "llvm.ppc.altivec.vupkhsh",
  4054. "llvm.ppc.altivec.vupklpx",
  4055. "llvm.ppc.altivec.vupklsb",
  4056. "llvm.ppc.altivec.vupklsh",
  4057. "llvm.ppc.dcba",
  4058. "llvm.ppc.dcbf",
  4059. "llvm.ppc.dcbi",
  4060. "llvm.ppc.dcbst",
  4061. "llvm.ppc.dcbt",
  4062. "llvm.ppc.dcbtst",
  4063. "llvm.ppc.dcbz",
  4064. "llvm.ppc.dcbzl",
  4065. "llvm.ppc.sync",
  4066. "llvm.prefetch",
  4067. "llvm.ptr.annotation",
  4068. "llvm.ptx.bar.sync",
  4069. "llvm.ptx.read.clock",
  4070. "llvm.ptx.read.clock64",
  4071. "llvm.ptx.read.ctaid.w",
  4072. "llvm.ptx.read.ctaid.x",
  4073. "llvm.ptx.read.ctaid.y",
  4074. "llvm.ptx.read.ctaid.z",
  4075. "llvm.ptx.read.gridid",
  4076. "llvm.ptx.read.laneid",
  4077. "llvm.ptx.read.lanemask.eq",
  4078. "llvm.ptx.read.lanemask.ge",
  4079. "llvm.ptx.read.lanemask.gt",
  4080. "llvm.ptx.read.lanemask.le",
  4081. "llvm.ptx.read.lanemask.lt",
  4082. "llvm.ptx.read.nctaid.w",
  4083. "llvm.ptx.read.nctaid.x",
  4084. "llvm.ptx.read.nctaid.y",
  4085. "llvm.ptx.read.nctaid.z",
  4086. "llvm.ptx.read.nsmid",
  4087. "llvm.ptx.read.ntid.w",
  4088. "llvm.ptx.read.ntid.x",
  4089. "llvm.ptx.read.ntid.y",
  4090. "llvm.ptx.read.ntid.z",
  4091. "llvm.ptx.read.nwarpid",
  4092. "llvm.ptx.read.pm0",
  4093. "llvm.ptx.read.pm1",
  4094. "llvm.ptx.read.pm2",
  4095. "llvm.ptx.read.pm3",
  4096. "llvm.ptx.read.smid",
  4097. "llvm.ptx.read.tid.w",
  4098. "llvm.ptx.read.tid.x",
  4099. "llvm.ptx.read.tid.y",
  4100. "llvm.ptx.read.tid.z",
  4101. "llvm.ptx.read.warpid",
  4102. "llvm.r600.read.global.size.x",
  4103. "llvm.r600.read.global.size.y",
  4104. "llvm.r600.read.global.size.z",
  4105. "llvm.r600.read.local.size.x",
  4106. "llvm.r600.read.local.size.y",
  4107. "llvm.r600.read.local.size.z",
  4108. "llvm.r600.read.ngroups.x",
  4109. "llvm.r600.read.ngroups.y",
  4110. "llvm.r600.read.ngroups.z",
  4111. "llvm.r600.read.tgid.x",
  4112. "llvm.r600.read.tgid.y",
  4113. "llvm.r600.read.tgid.z",
  4114. "llvm.r600.read.tidig.x",
  4115. "llvm.r600.read.tidig.y",
  4116. "llvm.r600.read.tidig.z",
  4117. "llvm.readcyclecounter",
  4118. "llvm.returnaddress",
  4119. "llvm.rint",
  4120. "llvm.sadd.with.overflow",
  4121. "llvm.setjmp",
  4122. "llvm.siglongjmp",
  4123. "llvm.sigsetjmp",
  4124. "llvm.sin",
  4125. "llvm.smul.with.overflow",
  4126. "llvm.sqrt",
  4127. "llvm.ssub.with.overflow",
  4128. "llvm.stackprotector",
  4129. "llvm.stackrestore",
  4130. "llvm.stacksave",
  4131. "llvm.trap",
  4132. "llvm.trunc",
  4133. "llvm.uadd.with.overflow",
  4134. "llvm.umul.with.overflow",
  4135. "llvm.usub.with.overflow",
  4136. "llvm.va_copy",
  4137. "llvm.va_end",
  4138. "llvm.var.annotation",
  4139. "llvm.va_start",
  4140. "llvm.x86.3dnow.pavgusb",
  4141. "llvm.x86.3dnow.pf2id",
  4142. "llvm.x86.3dnow.pfacc",
  4143. "llvm.x86.3dnow.pfadd",
  4144. "llvm.x86.3dnow.pfcmpeq",
  4145. "llvm.x86.3dnow.pfcmpge",
  4146. "llvm.x86.3dnow.pfcmpgt",
  4147. "llvm.x86.3dnow.pfmax",
  4148. "llvm.x86.3dnow.pfmin",
  4149. "llvm.x86.3dnow.pfmul",
  4150. "llvm.x86.3dnow.pfrcp",
  4151. "llvm.x86.3dnow.pfrcpit1",
  4152. "llvm.x86.3dnow.pfrcpit2",
  4153. "llvm.x86.3dnow.pfrsqit1",
  4154. "llvm.x86.3dnow.pfrsqrt",
  4155. "llvm.x86.3dnow.pfsub",
  4156. "llvm.x86.3dnow.pfsubr",
  4157. "llvm.x86.3dnow.pi2fd",
  4158. "llvm.x86.3dnow.pmulhrw",
  4159. "llvm.x86.3dnowa.pf2iw",
  4160. "llvm.x86.3dnowa.pfnacc",
  4161. "llvm.x86.3dnowa.pfpnacc",
  4162. "llvm.x86.3dnowa.pi2fw",
  4163. "llvm.x86.3dnowa.pswapd",
  4164. "llvm.x86.aesni.aesdec",
  4165. "llvm.x86.aesni.aesdeclast",
  4166. "llvm.x86.aesni.aesenc",
  4167. "llvm.x86.aesni.aesenclast",
  4168. "llvm.x86.aesni.aesimc",
  4169. "llvm.x86.aesni.aeskeygenassist",
  4170. "llvm.x86.avx2.gather.d.d",
  4171. "llvm.x86.avx2.gather.d.d.256",
  4172. "llvm.x86.avx2.gather.d.pd",
  4173. "llvm.x86.avx2.gather.d.pd.256",
  4174. "llvm.x86.avx2.gather.d.ps",
  4175. "llvm.x86.avx2.gather.d.ps.256",
  4176. "llvm.x86.avx2.gather.d.q",
  4177. "llvm.x86.avx2.gather.d.q.256",
  4178. "llvm.x86.avx2.gather.q.d",
  4179. "llvm.x86.avx2.gather.q.d.256",
  4180. "llvm.x86.avx2.gather.q.pd",
  4181. "llvm.x86.avx2.gather.q.pd.256",
  4182. "llvm.x86.avx2.gather.q.ps",
  4183. "llvm.x86.avx2.gather.q.ps.256",
  4184. "llvm.x86.avx2.gather.q.q",
  4185. "llvm.x86.avx2.gather.q.q.256",
  4186. "llvm.x86.avx2.maskload.d",
  4187. "llvm.x86.avx2.maskload.d.256",
  4188. "llvm.x86.avx2.maskload.q",
  4189. "llvm.x86.avx2.maskload.q.256",
  4190. "llvm.x86.avx2.maskstore.d",
  4191. "llvm.x86.avx2.maskstore.d.256",
  4192. "llvm.x86.avx2.maskstore.q",
  4193. "llvm.x86.avx2.maskstore.q.256",
  4194. "llvm.x86.avx2.movntdqa",
  4195. "llvm.x86.avx2.mpsadbw",
  4196. "llvm.x86.avx2.pabs.b",
  4197. "llvm.x86.avx2.pabs.d",
  4198. "llvm.x86.avx2.pabs.w",
  4199. "llvm.x86.avx2.packssdw",
  4200. "llvm.x86.avx2.packsswb",
  4201. "llvm.x86.avx2.packusdw",
  4202. "llvm.x86.avx2.packuswb",
  4203. "llvm.x86.avx2.padds.b",
  4204. "llvm.x86.avx2.padds.w",
  4205. "llvm.x86.avx2.paddus.b",
  4206. "llvm.x86.avx2.paddus.w",
  4207. "llvm.x86.avx2.pavg.b",
  4208. "llvm.x86.avx2.pavg.w",
  4209. "llvm.x86.avx2.pblendd.128",
  4210. "llvm.x86.avx2.pblendd.256",
  4211. "llvm.x86.avx2.pblendvb",
  4212. "llvm.x86.avx2.pblendw",
  4213. "llvm.x86.avx2.pbroadcastb.128",
  4214. "llvm.x86.avx2.pbroadcastb.256",
  4215. "llvm.x86.avx2.pbroadcastd.128",
  4216. "llvm.x86.avx2.pbroadcastd.256",
  4217. "llvm.x86.avx2.pbroadcastq.128",
  4218. "llvm.x86.avx2.pbroadcastq.256",
  4219. "llvm.x86.avx2.pbroadcastw.128",
  4220. "llvm.x86.avx2.pbroadcastw.256",
  4221. "llvm.x86.avx2.permd",
  4222. "llvm.x86.avx2.permps",
  4223. "llvm.x86.avx2.phadd.d",
  4224. "llvm.x86.avx2.phadd.sw",
  4225. "llvm.x86.avx2.phadd.w",
  4226. "llvm.x86.avx2.phsub.d",
  4227. "llvm.x86.avx2.phsub.sw",
  4228. "llvm.x86.avx2.phsub.w",
  4229. "llvm.x86.avx2.pmadd.ub.sw",
  4230. "llvm.x86.avx2.pmadd.wd",
  4231. "llvm.x86.avx2.pmaxs.b",
  4232. "llvm.x86.avx2.pmaxs.d",
  4233. "llvm.x86.avx2.pmaxs.w",
  4234. "llvm.x86.avx2.pmaxu.b",
  4235. "llvm.x86.avx2.pmaxu.d",
  4236. "llvm.x86.avx2.pmaxu.w",
  4237. "llvm.x86.avx2.pmins.b",
  4238. "llvm.x86.avx2.pmins.d",
  4239. "llvm.x86.avx2.pmins.w",
  4240. "llvm.x86.avx2.pminu.b",
  4241. "llvm.x86.avx2.pminu.d",
  4242. "llvm.x86.avx2.pminu.w",
  4243. "llvm.x86.avx2.pmovmskb",
  4244. "llvm.x86.avx2.pmovsxbd",
  4245. "llvm.x86.avx2.pmovsxbq",
  4246. "llvm.x86.avx2.pmovsxbw",
  4247. "llvm.x86.avx2.pmovsxdq",
  4248. "llvm.x86.avx2.pmovsxwd",
  4249. "llvm.x86.avx2.pmovsxwq",
  4250. "llvm.x86.avx2.pmovzxbd",
  4251. "llvm.x86.avx2.pmovzxbq",
  4252. "llvm.x86.avx2.pmovzxbw",
  4253. "llvm.x86.avx2.pmovzxdq",
  4254. "llvm.x86.avx2.pmovzxwd",
  4255. "llvm.x86.avx2.pmovzxwq",
  4256. "llvm.x86.avx2.pmul.dq",
  4257. "llvm.x86.avx2.pmul.hr.sw",
  4258. "llvm.x86.avx2.pmulh.w",
  4259. "llvm.x86.avx2.pmulhu.w",
  4260. "llvm.x86.avx2.pmulu.dq",
  4261. "llvm.x86.avx2.psad.bw",
  4262. "llvm.x86.avx2.pshuf.b",
  4263. "llvm.x86.avx2.psign.b",
  4264. "llvm.x86.avx2.psign.d",
  4265. "llvm.x86.avx2.psign.w",
  4266. "llvm.x86.avx2.psll.d",
  4267. "llvm.x86.avx2.psll.dq",
  4268. "llvm.x86.avx2.psll.dq.bs",
  4269. "llvm.x86.avx2.psll.q",
  4270. "llvm.x86.avx2.psll.w",
  4271. "llvm.x86.avx2.pslli.d",
  4272. "llvm.x86.avx2.pslli.q",
  4273. "llvm.x86.avx2.pslli.w",
  4274. "llvm.x86.avx2.psllv.d",
  4275. "llvm.x86.avx2.psllv.d.256",
  4276. "llvm.x86.avx2.psllv.q",
  4277. "llvm.x86.avx2.psllv.q.256",
  4278. "llvm.x86.avx2.psra.d",
  4279. "llvm.x86.avx2.psra.w",
  4280. "llvm.x86.avx2.psrai.d",
  4281. "llvm.x86.avx2.psrai.w",
  4282. "llvm.x86.avx2.psrav.d",
  4283. "llvm.x86.avx2.psrav.d.256",
  4284. "llvm.x86.avx2.psrl.d",
  4285. "llvm.x86.avx2.psrl.dq",
  4286. "llvm.x86.avx2.psrl.dq.bs",
  4287. "llvm.x86.avx2.psrl.q",
  4288. "llvm.x86.avx2.psrl.w",
  4289. "llvm.x86.avx2.psrli.d",
  4290. "llvm.x86.avx2.psrli.q",
  4291. "llvm.x86.avx2.psrli.w",
  4292. "llvm.x86.avx2.psrlv.d",
  4293. "llvm.x86.avx2.psrlv.d.256",
  4294. "llvm.x86.avx2.psrlv.q",
  4295. "llvm.x86.avx2.psrlv.q.256",
  4296. "llvm.x86.avx2.psubs.b",
  4297. "llvm.x86.avx2.psubs.w",
  4298. "llvm.x86.avx2.psubus.b",
  4299. "llvm.x86.avx2.psubus.w",
  4300. "llvm.x86.avx2.vbroadcast.sd.pd.256",
  4301. "llvm.x86.avx2.vbroadcast.ss.ps",
  4302. "llvm.x86.avx2.vbroadcast.ss.ps.256",
  4303. "llvm.x86.avx2.vbroadcasti128",
  4304. "llvm.x86.avx2.vextracti128",
  4305. "llvm.x86.avx2.vinserti128",
  4306. "llvm.x86.avx2.vperm2i128",
  4307. "llvm.x86.avx.addsub.pd.256",
  4308. "llvm.x86.avx.addsub.ps.256",
  4309. "llvm.x86.avx.blend.pd.256",
  4310. "llvm.x86.avx.blend.ps.256",
  4311. "llvm.x86.avx.blendv.pd.256",
  4312. "llvm.x86.avx.blendv.ps.256",
  4313. "llvm.x86.avx.cmp.pd.256",
  4314. "llvm.x86.avx.cmp.ps.256",
  4315. "llvm.x86.avx.cvt.pd2.ps.256",
  4316. "llvm.x86.avx.cvt.pd2dq.256",
  4317. "llvm.x86.avx.cvt.ps2.pd.256",
  4318. "llvm.x86.avx.cvt.ps2dq.256",
  4319. "llvm.x86.avx.cvtdq2.pd.256",
  4320. "llvm.x86.avx.cvtdq2.ps.256",
  4321. "llvm.x86.avx.cvtt.pd2dq.256",
  4322. "llvm.x86.avx.cvtt.ps2dq.256",
  4323. "llvm.x86.avx.dp.ps.256",
  4324. "llvm.x86.avx.hadd.pd.256",
  4325. "llvm.x86.avx.hadd.ps.256",
  4326. "llvm.x86.avx.hsub.pd.256",
  4327. "llvm.x86.avx.hsub.ps.256",
  4328. "llvm.x86.avx.ldu.dq.256",
  4329. "llvm.x86.avx.maskload.pd",
  4330. "llvm.x86.avx.maskload.pd.256",
  4331. "llvm.x86.avx.maskload.ps",
  4332. "llvm.x86.avx.maskload.ps.256",
  4333. "llvm.x86.avx.maskstore.pd",
  4334. "llvm.x86.avx.maskstore.pd.256",
  4335. "llvm.x86.avx.maskstore.ps",
  4336. "llvm.x86.avx.maskstore.ps.256",
  4337. "llvm.x86.avx.max.pd.256",
  4338. "llvm.x86.avx.max.ps.256",
  4339. "llvm.x86.avx.min.pd.256",
  4340. "llvm.x86.avx.min.ps.256",
  4341. "llvm.x86.avx.movmsk.pd.256",
  4342. "llvm.x86.avx.movmsk.ps.256",
  4343. "llvm.x86.avx.ptestc.256",
  4344. "llvm.x86.avx.ptestnzc.256",
  4345. "llvm.x86.avx.ptestz.256",
  4346. "llvm.x86.avx.rcp.ps.256",
  4347. "llvm.x86.avx.round.pd.256",
  4348. "llvm.x86.avx.round.ps.256",
  4349. "llvm.x86.avx.rsqrt.ps.256",
  4350. "llvm.x86.avx.sqrt.pd.256",
  4351. "llvm.x86.avx.sqrt.ps.256",
  4352. "llvm.x86.avx.storeu.dq.256",
  4353. "llvm.x86.avx.storeu.pd.256",
  4354. "llvm.x86.avx.storeu.ps.256",
  4355. "llvm.x86.avx.vbroadcast.sd.256",
  4356. "llvm.x86.avx.vbroadcast.ss",
  4357. "llvm.x86.avx.vbroadcast.ss.256",
  4358. "llvm.x86.avx.vbroadcastf128.pd.256",
  4359. "llvm.x86.avx.vbroadcastf128.ps.256",
  4360. "llvm.x86.avx.vextractf128.pd.256",
  4361. "llvm.x86.avx.vextractf128.ps.256",
  4362. "llvm.x86.avx.vextractf128.si.256",
  4363. "llvm.x86.avx.vinsertf128.pd.256",
  4364. "llvm.x86.avx.vinsertf128.ps.256",
  4365. "llvm.x86.avx.vinsertf128.si.256",
  4366. "llvm.x86.avx.vperm2f128.pd.256",
  4367. "llvm.x86.avx.vperm2f128.ps.256",
  4368. "llvm.x86.avx.vperm2f128.si.256",
  4369. "llvm.x86.avx.vpermilvar.pd",
  4370. "llvm.x86.avx.vpermilvar.pd.256",
  4371. "llvm.x86.avx.vpermilvar.ps",
  4372. "llvm.x86.avx.vpermilvar.ps.256",
  4373. "llvm.x86.avx.vtestc.pd",
  4374. "llvm.x86.avx.vtestc.pd.256",
  4375. "llvm.x86.avx.vtestc.ps",
  4376. "llvm.x86.avx.vtestc.ps.256",
  4377. "llvm.x86.avx.vtestnzc.pd",
  4378. "llvm.x86.avx.vtestnzc.pd.256",
  4379. "llvm.x86.avx.vtestnzc.ps",
  4380. "llvm.x86.avx.vtestnzc.ps.256",
  4381. "llvm.x86.avx.vtestz.pd",
  4382. "llvm.x86.avx.vtestz.pd.256",
  4383. "llvm.x86.avx.vtestz.ps",
  4384. "llvm.x86.avx.vtestz.ps.256",
  4385. "llvm.x86.avx.vzeroall",
  4386. "llvm.x86.avx.vzeroupper",
  4387. "llvm.x86.bmi.bextr.32",
  4388. "llvm.x86.bmi.bextr.64",
  4389. "llvm.x86.bmi.bzhi.32",
  4390. "llvm.x86.bmi.bzhi.64",
  4391. "llvm.x86.bmi.pdep.32",
  4392. "llvm.x86.bmi.pdep.64",
  4393. "llvm.x86.bmi.pext.32",
  4394. "llvm.x86.bmi.pext.64",
  4395. "llvm.x86.fma.vfmadd.pd",
  4396. "llvm.x86.fma.vfmadd.pd.256",
  4397. "llvm.x86.fma.vfmadd.ps",
  4398. "llvm.x86.fma.vfmadd.ps.256",
  4399. "llvm.x86.fma.vfmadd.sd",
  4400. "llvm.x86.fma.vfmadd.ss",
  4401. "llvm.x86.fma.vfmaddsub.pd",
  4402. "llvm.x86.fma.vfmaddsub.pd.256",
  4403. "llvm.x86.fma.vfmaddsub.ps",
  4404. "llvm.x86.fma.vfmaddsub.ps.256",
  4405. "llvm.x86.fma.vfmsub.pd",
  4406. "llvm.x86.fma.vfmsub.pd.256",
  4407. "llvm.x86.fma.vfmsub.ps",
  4408. "llvm.x86.fma.vfmsub.ps.256",
  4409. "llvm.x86.fma.vfmsub.sd",
  4410. "llvm.x86.fma.vfmsub.ss",
  4411. "llvm.x86.fma.vfmsubadd.pd",
  4412. "llvm.x86.fma.vfmsubadd.pd.256",
  4413. "llvm.x86.fma.vfmsubadd.ps",
  4414. "llvm.x86.fma.vfmsubadd.ps.256",
  4415. "llvm.x86.fma.vfnmadd.pd",
  4416. "llvm.x86.fma.vfnmadd.pd.256",
  4417. "llvm.x86.fma.vfnmadd.ps",
  4418. "llvm.x86.fma.vfnmadd.ps.256",
  4419. "llvm.x86.fma.vfnmadd.sd",
  4420. "llvm.x86.fma.vfnmadd.ss",
  4421. "llvm.x86.fma.vfnmsub.pd",
  4422. "llvm.x86.fma.vfnmsub.pd.256",
  4423. "llvm.x86.fma.vfnmsub.ps",
  4424. "llvm.x86.fma.vfnmsub.ps.256",
  4425. "llvm.x86.fma.vfnmsub.sd",
  4426. "llvm.x86.fma.vfnmsub.ss",
  4427. "llvm.x86.int",
  4428. "llvm.x86.mmx.emms",
  4429. "llvm.x86.mmx.femms",
  4430. "llvm.x86.mmx.maskmovq",
  4431. "llvm.x86.mmx.movnt.dq",
  4432. "llvm.x86.mmx.packssdw",
  4433. "llvm.x86.mmx.packsswb",
  4434. "llvm.x86.mmx.packuswb",
  4435. "llvm.x86.mmx.padd.b",
  4436. "llvm.x86.mmx.padd.d",
  4437. "llvm.x86.mmx.padd.q",
  4438. "llvm.x86.mmx.padd.w",
  4439. "llvm.x86.mmx.padds.b",
  4440. "llvm.x86.mmx.padds.w",
  4441. "llvm.x86.mmx.paddus.b",
  4442. "llvm.x86.mmx.paddus.w",
  4443. "llvm.x86.mmx.palignr.b",
  4444. "llvm.x86.mmx.pand",
  4445. "llvm.x86.mmx.pandn",
  4446. "llvm.x86.mmx.pavg.b",
  4447. "llvm.x86.mmx.pavg.w",
  4448. "llvm.x86.mmx.pcmpeq.b",
  4449. "llvm.x86.mmx.pcmpeq.d",
  4450. "llvm.x86.mmx.pcmpeq.w",
  4451. "llvm.x86.mmx.pcmpgt.b",
  4452. "llvm.x86.mmx.pcmpgt.d",
  4453. "llvm.x86.mmx.pcmpgt.w",
  4454. "llvm.x86.mmx.pextr.w",
  4455. "llvm.x86.mmx.pinsr.w",
  4456. "llvm.x86.mmx.pmadd.wd",
  4457. "llvm.x86.mmx.pmaxs.w",
  4458. "llvm.x86.mmx.pmaxu.b",
  4459. "llvm.x86.mmx.pmins.w",
  4460. "llvm.x86.mmx.pminu.b",
  4461. "llvm.x86.mmx.pmovmskb",
  4462. "llvm.x86.mmx.pmulh.w",
  4463. "llvm.x86.mmx.pmulhu.w",
  4464. "llvm.x86.mmx.pmull.w",
  4465. "llvm.x86.mmx.pmulu.dq",
  4466. "llvm.x86.mmx.por",
  4467. "llvm.x86.mmx.psad.bw",
  4468. "llvm.x86.mmx.psll.d",
  4469. "llvm.x86.mmx.psll.q",
  4470. "llvm.x86.mmx.psll.w",
  4471. "llvm.x86.mmx.pslli.d",
  4472. "llvm.x86.mmx.pslli.q",
  4473. "llvm.x86.mmx.pslli.w",
  4474. "llvm.x86.mmx.psra.d",
  4475. "llvm.x86.mmx.psra.w",
  4476. "llvm.x86.mmx.psrai.d",
  4477. "llvm.x86.mmx.psrai.w",
  4478. "llvm.x86.mmx.psrl.d",
  4479. "llvm.x86.mmx.psrl.q",
  4480. "llvm.x86.mmx.psrl.w",
  4481. "llvm.x86.mmx.psrli.d",
  4482. "llvm.x86.mmx.psrli.q",
  4483. "llvm.x86.mmx.psrli.w",
  4484. "llvm.x86.mmx.psub.b",
  4485. "llvm.x86.mmx.psub.d",
  4486. "llvm.x86.mmx.psub.q",
  4487. "llvm.x86.mmx.psub.w",
  4488. "llvm.x86.mmx.psubs.b",
  4489. "llvm.x86.mmx.psubs.w",
  4490. "llvm.x86.mmx.psubus.b",
  4491. "llvm.x86.mmx.psubus.w",
  4492. "llvm.x86.mmx.punpckhbw",
  4493. "llvm.x86.mmx.punpckhdq",
  4494. "llvm.x86.mmx.punpckhwd",
  4495. "llvm.x86.mmx.punpcklbw",
  4496. "llvm.x86.mmx.punpckldq",
  4497. "llvm.x86.mmx.punpcklwd",
  4498. "llvm.x86.mmx.pxor",
  4499. "llvm.x86.pclmulqdq",
  4500. "llvm.x86.rdfsbase.32",
  4501. "llvm.x86.rdfsbase.64",
  4502. "llvm.x86.rdgsbase.32",
  4503. "llvm.x86.rdgsbase.64",
  4504. "llvm.x86.rdrand.16",
  4505. "llvm.x86.rdrand.32",
  4506. "llvm.x86.rdrand.64",
  4507. "llvm.x86.rdseed.16",
  4508. "llvm.x86.rdseed.32",
  4509. "llvm.x86.rdseed.64",
  4510. "llvm.x86.sse2.add.sd",
  4511. "llvm.x86.sse2.clflush",
  4512. "llvm.x86.sse2.cmp.pd",
  4513. "llvm.x86.sse2.cmp.sd",
  4514. "llvm.x86.sse2.comieq.sd",
  4515. "llvm.x86.sse2.comige.sd",
  4516. "llvm.x86.sse2.comigt.sd",
  4517. "llvm.x86.sse2.comile.sd",
  4518. "llvm.x86.sse2.comilt.sd",
  4519. "llvm.x86.sse2.comineq.sd",
  4520. "llvm.x86.sse2.cvtdq2pd",
  4521. "llvm.x86.sse2.cvtdq2ps",
  4522. "llvm.x86.sse2.cvtpd2dq",
  4523. "llvm.x86.sse2.cvtpd2ps",
  4524. "llvm.x86.sse2.cvtps2dq",
  4525. "llvm.x86.sse2.cvtps2pd",
  4526. "llvm.x86.sse2.cvtsd2si",
  4527. "llvm.x86.sse2.cvtsd2si64",
  4528. "llvm.x86.sse2.cvtsd2ss",
  4529. "llvm.x86.sse2.cvtsi2sd",
  4530. "llvm.x86.sse2.cvtsi642sd",
  4531. "llvm.x86.sse2.cvtss2sd",
  4532. "llvm.x86.sse2.cvttpd2dq",
  4533. "llvm.x86.sse2.cvttps2dq",
  4534. "llvm.x86.sse2.cvttsd2si",
  4535. "llvm.x86.sse2.cvttsd2si64",
  4536. "llvm.x86.sse2.div.sd",
  4537. "llvm.x86.sse2.lfence",
  4538. "llvm.x86.sse2.maskmov.dqu",
  4539. "llvm.x86.sse2.max.pd",
  4540. "llvm.x86.sse2.max.sd",
  4541. "llvm.x86.sse2.mfence",
  4542. "llvm.x86.sse2.min.pd",
  4543. "llvm.x86.sse2.min.sd",
  4544. "llvm.x86.sse2.movmsk.pd",
  4545. "llvm.x86.sse2.mul.sd",
  4546. "llvm.x86.sse2.packssdw.128",
  4547. "llvm.x86.sse2.packsswb.128",
  4548. "llvm.x86.sse2.packuswb.128",
  4549. "llvm.x86.sse2.padds.b",
  4550. "llvm.x86.sse2.padds.w",
  4551. "llvm.x86.sse2.paddus.b",
  4552. "llvm.x86.sse2.paddus.w",
  4553. "llvm.x86.sse2.pavg.b",
  4554. "llvm.x86.sse2.pavg.w",
  4555. "llvm.x86.sse2.pmadd.wd",
  4556. "llvm.x86.sse2.pmaxs.w",
  4557. "llvm.x86.sse2.pmaxu.b",
  4558. "llvm.x86.sse2.pmins.w",
  4559. "llvm.x86.sse2.pminu.b",
  4560. "llvm.x86.sse2.pmovmskb.128",
  4561. "llvm.x86.sse2.pmulh.w",
  4562. "llvm.x86.sse2.pmulhu.w",
  4563. "llvm.x86.sse2.pmulu.dq",
  4564. "llvm.x86.sse2.psad.bw",
  4565. "llvm.x86.sse2.psll.d",
  4566. "llvm.x86.sse2.psll.dq",
  4567. "llvm.x86.sse2.psll.dq.bs",
  4568. "llvm.x86.sse2.psll.q",
  4569. "llvm.x86.sse2.psll.w",
  4570. "llvm.x86.sse2.pslli.d",
  4571. "llvm.x86.sse2.pslli.q",
  4572. "llvm.x86.sse2.pslli.w",
  4573. "llvm.x86.sse2.psra.d",
  4574. "llvm.x86.sse2.psra.w",
  4575. "llvm.x86.sse2.psrai.d",
  4576. "llvm.x86.sse2.psrai.w",
  4577. "llvm.x86.sse2.psrl.d",
  4578. "llvm.x86.sse2.psrl.dq",
  4579. "llvm.x86.sse2.psrl.dq.bs",
  4580. "llvm.x86.sse2.psrl.q",
  4581. "llvm.x86.sse2.psrl.w",
  4582. "llvm.x86.sse2.psrli.d",
  4583. "llvm.x86.sse2.psrli.q",
  4584. "llvm.x86.sse2.psrli.w",
  4585. "llvm.x86.sse2.psubs.b",
  4586. "llvm.x86.sse2.psubs.w",
  4587. "llvm.x86.sse2.psubus.b",
  4588. "llvm.x86.sse2.psubus.w",
  4589. "llvm.x86.sse2.sqrt.pd",
  4590. "llvm.x86.sse2.sqrt.sd",
  4591. "llvm.x86.sse2.storel.dq",
  4592. "llvm.x86.sse2.storeu.dq",
  4593. "llvm.x86.sse2.storeu.pd",
  4594. "llvm.x86.sse2.sub.sd",
  4595. "llvm.x86.sse2.ucomieq.sd",
  4596. "llvm.x86.sse2.ucomige.sd",
  4597. "llvm.x86.sse2.ucomigt.sd",
  4598. "llvm.x86.sse2.ucomile.sd",
  4599. "llvm.x86.sse2.ucomilt.sd",
  4600. "llvm.x86.sse2.ucomineq.sd",
  4601. "llvm.x86.sse3.addsub.pd",
  4602. "llvm.x86.sse3.addsub.ps",
  4603. "llvm.x86.sse3.hadd.pd",
  4604. "llvm.x86.sse3.hadd.ps",
  4605. "llvm.x86.sse3.hsub.pd",
  4606. "llvm.x86.sse3.hsub.ps",
  4607. "llvm.x86.sse3.ldu.dq",
  4608. "llvm.x86.sse3.monitor",
  4609. "llvm.x86.sse3.mwait",
  4610. "llvm.x86.sse41.blendpd",
  4611. "llvm.x86.sse41.blendps",
  4612. "llvm.x86.sse41.blendvpd",
  4613. "llvm.x86.sse41.blendvps",
  4614. "llvm.x86.sse41.dppd",
  4615. "llvm.x86.sse41.dpps",
  4616. "llvm.x86.sse41.extractps",
  4617. "llvm.x86.sse41.insertps",
  4618. "llvm.x86.sse41.movntdqa",
  4619. "llvm.x86.sse41.mpsadbw",
  4620. "llvm.x86.sse41.packusdw",
  4621. "llvm.x86.sse41.pblendvb",
  4622. "llvm.x86.sse41.pblendw",
  4623. "llvm.x86.sse41.pextrb",
  4624. "llvm.x86.sse41.pextrd",
  4625. "llvm.x86.sse41.pextrq",
  4626. "llvm.x86.sse41.phminposuw",
  4627. "llvm.x86.sse41.pmaxsb",
  4628. "llvm.x86.sse41.pmaxsd",
  4629. "llvm.x86.sse41.pmaxud",
  4630. "llvm.x86.sse41.pmaxuw",
  4631. "llvm.x86.sse41.pminsb",
  4632. "llvm.x86.sse41.pminsd",
  4633. "llvm.x86.sse41.pminud",
  4634. "llvm.x86.sse41.pminuw",
  4635. "llvm.x86.sse41.pmovsxbd",
  4636. "llvm.x86.sse41.pmovsxbq",
  4637. "llvm.x86.sse41.pmovsxbw",
  4638. "llvm.x86.sse41.pmovsxdq",
  4639. "llvm.x86.sse41.pmovsxwd",
  4640. "llvm.x86.sse41.pmovsxwq",
  4641. "llvm.x86.sse41.pmovzxbd",
  4642. "llvm.x86.sse41.pmovzxbq",
  4643. "llvm.x86.sse41.pmovzxbw",
  4644. "llvm.x86.sse41.pmovzxdq",
  4645. "llvm.x86.sse41.pmovzxwd",
  4646. "llvm.x86.sse41.pmovzxwq",
  4647. "llvm.x86.sse41.pmuldq",
  4648. "llvm.x86.sse41.ptestc",
  4649. "llvm.x86.sse41.ptestnzc",
  4650. "llvm.x86.sse41.ptestz",
  4651. "llvm.x86.sse41.round.pd",
  4652. "llvm.x86.sse41.round.ps",
  4653. "llvm.x86.sse41.round.sd",
  4654. "llvm.x86.sse41.round.ss",
  4655. "llvm.x86.sse42.crc32.32.16",
  4656. "llvm.x86.sse42.crc32.32.32",
  4657. "llvm.x86.sse42.crc32.32.8",
  4658. "llvm.x86.sse42.crc32.64.64",
  4659. "llvm.x86.sse42.crc32.64.8",
  4660. "llvm.x86.sse42.pcmpestri128",
  4661. "llvm.x86.sse42.pcmpestria128",
  4662. "llvm.x86.sse42.pcmpestric128",
  4663. "llvm.x86.sse42.pcmpestrio128",
  4664. "llvm.x86.sse42.pcmpestris128",
  4665. "llvm.x86.sse42.pcmpestriz128",
  4666. "llvm.x86.sse42.pcmpestrm128",
  4667. "llvm.x86.sse42.pcmpistri128",
  4668. "llvm.x86.sse42.pcmpistria128",
  4669. "llvm.x86.sse42.pcmpistric128",
  4670. "llvm.x86.sse42.pcmpistrio128",
  4671. "llvm.x86.sse42.pcmpistris128",
  4672. "llvm.x86.sse42.pcmpistriz128",
  4673. "llvm.x86.sse42.pcmpistrm128",
  4674. "llvm.x86.sse4a.extrq",
  4675. "llvm.x86.sse4a.extrqi",
  4676. "llvm.x86.sse4a.insertq",
  4677. "llvm.x86.sse4a.insertqi",
  4678. "llvm.x86.sse4a.movnt.sd",
  4679. "llvm.x86.sse4a.movnt.ss",
  4680. "llvm.x86.sse.add.ss",
  4681. "llvm.x86.sse.cmp.ps",
  4682. "llvm.x86.sse.cmp.ss",
  4683. "llvm.x86.sse.comieq.ss",
  4684. "llvm.x86.sse.comige.ss",
  4685. "llvm.x86.sse.comigt.ss",
  4686. "llvm.x86.sse.comile.ss",
  4687. "llvm.x86.sse.comilt.ss",
  4688. "llvm.x86.sse.comineq.ss",
  4689. "llvm.x86.sse.cvtpd2pi",
  4690. "llvm.x86.sse.cvtpi2pd",
  4691. "llvm.x86.sse.cvtpi2ps",
  4692. "llvm.x86.sse.cvtps2pi",
  4693. "llvm.x86.sse.cvtsi2ss",
  4694. "llvm.x86.sse.cvtsi642ss",
  4695. "llvm.x86.sse.cvtss2si",
  4696. "llvm.x86.sse.cvtss2si64",
  4697. "llvm.x86.sse.cvttpd2pi",
  4698. "llvm.x86.sse.cvttps2pi",
  4699. "llvm.x86.sse.cvttss2si",
  4700. "llvm.x86.sse.cvttss2si64",
  4701. "llvm.x86.sse.div.ss",
  4702. "llvm.x86.sse.ldmxcsr",
  4703. "llvm.x86.sse.max.ps",
  4704. "llvm.x86.sse.max.ss",
  4705. "llvm.x86.sse.min.ps",
  4706. "llvm.x86.sse.min.ss",
  4707. "llvm.x86.sse.movmsk.ps",
  4708. "llvm.x86.sse.mul.ss",
  4709. "llvm.x86.sse.pshuf.w",
  4710. "llvm.x86.sse.rcp.ps",
  4711. "llvm.x86.sse.rcp.ss",
  4712. "llvm.x86.sse.rsqrt.ps",
  4713. "llvm.x86.sse.rsqrt.ss",
  4714. "llvm.x86.sse.sfence",
  4715. "llvm.x86.sse.sqrt.ps",
  4716. "llvm.x86.sse.sqrt.ss",
  4717. "llvm.x86.sse.stmxcsr",
  4718. "llvm.x86.sse.storeu.ps",
  4719. "llvm.x86.sse.sub.ss",
  4720. "llvm.x86.sse.ucomieq.ss",
  4721. "llvm.x86.sse.ucomige.ss",
  4722. "llvm.x86.sse.ucomigt.ss",
  4723. "llvm.x86.sse.ucomile.ss",
  4724. "llvm.x86.sse.ucomilt.ss",
  4725. "llvm.x86.sse.ucomineq.ss",
  4726. "llvm.x86.ssse3.pabs.b",
  4727. "llvm.x86.ssse3.pabs.b.128",
  4728. "llvm.x86.ssse3.pabs.d",
  4729. "llvm.x86.ssse3.pabs.d.128",
  4730. "llvm.x86.ssse3.pabs.w",
  4731. "llvm.x86.ssse3.pabs.w.128",
  4732. "llvm.x86.ssse3.phadd.d",
  4733. "llvm.x86.ssse3.phadd.d.128",
  4734. "llvm.x86.ssse3.phadd.sw",
  4735. "llvm.x86.ssse3.phadd.sw.128",
  4736. "llvm.x86.ssse3.phadd.w",
  4737. "llvm.x86.ssse3.phadd.w.128",
  4738. "llvm.x86.ssse3.phsub.d",
  4739. "llvm.x86.ssse3.phsub.d.128",
  4740. "llvm.x86.ssse3.phsub.sw",
  4741. "llvm.x86.ssse3.phsub.sw.128",
  4742. "llvm.x86.ssse3.phsub.w",
  4743. "llvm.x86.ssse3.phsub.w.128",
  4744. "llvm.x86.ssse3.pmadd.ub.sw",
  4745. "llvm.x86.ssse3.pmadd.ub.sw.128",
  4746. "llvm.x86.ssse3.pmul.hr.sw",
  4747. "llvm.x86.ssse3.pmul.hr.sw.128",
  4748. "llvm.x86.ssse3.pshuf.b",
  4749. "llvm.x86.ssse3.pshuf.b.128",
  4750. "llvm.x86.ssse3.psign.b",
  4751. "llvm.x86.ssse3.psign.b.128",
  4752. "llvm.x86.ssse3.psign.d",
  4753. "llvm.x86.ssse3.psign.d.128",
  4754. "llvm.x86.ssse3.psign.w",
  4755. "llvm.x86.ssse3.psign.w.128",
  4756. "llvm.x86.vcvtph2ps.128",
  4757. "llvm.x86.vcvtph2ps.256",
  4758. "llvm.x86.vcvtps2ph.128",
  4759. "llvm.x86.vcvtps2ph.256",
  4760. "llvm.x86.wrfsbase.32",
  4761. "llvm.x86.wrfsbase.64",
  4762. "llvm.x86.wrgsbase.32",
  4763. "llvm.x86.wrgsbase.64",
  4764. "llvm.x86.xabort",
  4765. "llvm.x86.xbegin",
  4766. "llvm.x86.xend",
  4767. "llvm.x86.xop.vfrcz.pd",
  4768. "llvm.x86.xop.vfrcz.pd.256",
  4769. "llvm.x86.xop.vfrcz.ps",
  4770. "llvm.x86.xop.vfrcz.ps.256",
  4771. "llvm.x86.xop.vfrcz.sd",
  4772. "llvm.x86.xop.vfrcz.ss",
  4773. "llvm.x86.xop.vpcmov",
  4774. "llvm.x86.xop.vpcmov.256",
  4775. "llvm.x86.xop.vpcomb",
  4776. "llvm.x86.xop.vpcomd",
  4777. "llvm.x86.xop.vpcomq",
  4778. "llvm.x86.xop.vpcomub",
  4779. "llvm.x86.xop.vpcomud",
  4780. "llvm.x86.xop.vpcomuq",
  4781. "llvm.x86.xop.vpcomuw",
  4782. "llvm.x86.xop.vpcomw",
  4783. "llvm.x86.xop.vpermil2pd",
  4784. "llvm.x86.xop.vpermil2pd.256",
  4785. "llvm.x86.xop.vpermil2ps",
  4786. "llvm.x86.xop.vpermil2ps.256",
  4787. "llvm.x86.xop.vphaddbd",
  4788. "llvm.x86.xop.vphaddbq",
  4789. "llvm.x86.xop.vphaddbw",
  4790. "llvm.x86.xop.vphadddq",
  4791. "llvm.x86.xop.vphaddubd",
  4792. "llvm.x86.xop.vphaddubq",
  4793. "llvm.x86.xop.vphaddubw",
  4794. "llvm.x86.xop.vphaddudq",
  4795. "llvm.x86.xop.vphadduwd",
  4796. "llvm.x86.xop.vphadduwq",
  4797. "llvm.x86.xop.vphaddwd",
  4798. "llvm.x86.xop.vphaddwq",
  4799. "llvm.x86.xop.vphsubbw",
  4800. "llvm.x86.xop.vphsubdq",
  4801. "llvm.x86.xop.vphsubwd",
  4802. "llvm.x86.xop.vpmacsdd",
  4803. "llvm.x86.xop.vpmacsdqh",
  4804. "llvm.x86.xop.vpmacsdql",
  4805. "llvm.x86.xop.vpmacssdd",
  4806. "llvm.x86.xop.vpmacssdqh",
  4807. "llvm.x86.xop.vpmacssdql",
  4808. "llvm.x86.xop.vpmacsswd",
  4809. "llvm.x86.xop.vpmacssww",
  4810. "llvm.x86.xop.vpmacswd",
  4811. "llvm.x86.xop.vpmacsww",
  4812. "llvm.x86.xop.vpmadcsswd",
  4813. "llvm.x86.xop.vpmadcswd",
  4814. "llvm.x86.xop.vpperm",
  4815. "llvm.x86.xop.vprotb",
  4816. "llvm.x86.xop.vprotbi",
  4817. "llvm.x86.xop.vprotd",
  4818. "llvm.x86.xop.vprotdi",
  4819. "llvm.x86.xop.vprotq",
  4820. "llvm.x86.xop.vprotqi",
  4821. "llvm.x86.xop.vprotw",
  4822. "llvm.x86.xop.vprotwi",
  4823. "llvm.x86.xop.vpshab",
  4824. "llvm.x86.xop.vpshad",
  4825. "llvm.x86.xop.vpshaq",
  4826. "llvm.x86.xop.vpshaw",
  4827. "llvm.x86.xop.vpshlb",
  4828. "llvm.x86.xop.vpshld",
  4829. "llvm.x86.xop.vpshlq",
  4830. "llvm.x86.xop.vpshlw",
  4831. "llvm.x86.xtest",
  4832. "llvm.xcore.bitrev",
  4833. "llvm.xcore.checkevent",
  4834. "llvm.xcore.chkct",
  4835. "llvm.xcore.clre",
  4836. "llvm.xcore.clrsr",
  4837. "llvm.xcore.crc32",
  4838. "llvm.xcore.crc8",
  4839. "llvm.xcore.eeu",
  4840. "llvm.xcore.endin",
  4841. "llvm.xcore.freer",
  4842. "llvm.xcore.geted",
  4843. "llvm.xcore.getet",
  4844. "llvm.xcore.getid",
  4845. "llvm.xcore.getps",
  4846. "llvm.xcore.getr",
  4847. "llvm.xcore.getst",
  4848. "llvm.xcore.getts",
  4849. "llvm.xcore.in",
  4850. "llvm.xcore.inct",
  4851. "llvm.xcore.initcp",
  4852. "llvm.xcore.initdp",
  4853. "llvm.xcore.initlr",
  4854. "llvm.xcore.initpc",
  4855. "llvm.xcore.initsp",
  4856. "llvm.xcore.inshr",
  4857. "llvm.xcore.int",
  4858. "llvm.xcore.mjoin",
  4859. "llvm.xcore.msync",
  4860. "llvm.xcore.out",
  4861. "llvm.xcore.outct",
  4862. "llvm.xcore.outshr",
  4863. "llvm.xcore.outt",
  4864. "llvm.xcore.peek",
  4865. "llvm.xcore.setc",
  4866. "llvm.xcore.setclk",
  4867. "llvm.xcore.setd",
  4868. "llvm.xcore.setev",
  4869. "llvm.xcore.setps",
  4870. "llvm.xcore.setpsc",
  4871. "llvm.xcore.setpt",
  4872. "llvm.xcore.setrdy",
  4873. "llvm.xcore.setsr",
  4874. "llvm.xcore.settw",
  4875. "llvm.xcore.setv",
  4876. "llvm.xcore.sext",
  4877. "llvm.xcore.ssync",
  4878. "llvm.xcore.syncr",
  4879. "llvm.xcore.testct",
  4880. "llvm.xcore.testwct",
  4881. "llvm.xcore.waitevent",
  4882. "llvm.xcore.zext",
  4883. #endif
  4884. // Intrinsic ID to overload bitset
  4885. #ifdef GET_INTRINSIC_OVERLOAD_TABLE
  4886. static const uint8_t OTable[] = {
  4887. 0 | (1<<2),
  4888. 0 | (1<<5) | (1<<6) | (1<<7),
  4889. 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4890. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5) | (1<<7),
  4891. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4892. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4893. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4894. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4895. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4896. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4897. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4898. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4899. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4900. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4),
  4901. 0,
  4902. 0 | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4903. 0 | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  4904. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
  4905. 0,
  4906. 0 | (1<<6) | (1<<7),
  4907. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<4) | (1<<5),
  4908. 0,
  4909. 0,
  4910. 0,
  4911. 0,
  4912. 0,
  4913. 0,
  4914. 0,
  4915. 0,
  4916. 0,
  4917. 0,
  4918. 0,
  4919. 0,
  4920. 0,
  4921. 0,
  4922. 0,
  4923. 0,
  4924. 0,
  4925. 0,
  4926. 0,
  4927. 0,
  4928. 0,
  4929. 0,
  4930. 0,
  4931. 0,
  4932. 0,
  4933. 0,
  4934. 0,
  4935. 0,
  4936. 0,
  4937. 0,
  4938. 0,
  4939. 0,
  4940. 0,
  4941. 0,
  4942. 0,
  4943. 0,
  4944. 0,
  4945. 0,
  4946. 0,
  4947. 0,
  4948. 0,
  4949. 0,
  4950. 0,
  4951. 0,
  4952. 0,
  4953. 0,
  4954. 0,
  4955. 0,
  4956. 0,
  4957. 0,
  4958. 0,
  4959. 0,
  4960. 0,
  4961. 0,
  4962. 0,
  4963. 0,
  4964. 0,
  4965. 0,
  4966. 0,
  4967. 0,
  4968. 0,
  4969. 0,
  4970. 0,
  4971. 0,
  4972. 0,
  4973. 0,
  4974. 0,
  4975. 0,
  4976. 0,
  4977. 0,
  4978. 0,
  4979. 0,
  4980. 0,
  4981. 0,
  4982. 0,
  4983. 0,
  4984. 0,
  4985. 0,
  4986. 0,
  4987. 0,
  4988. 0,
  4989. 0,
  4990. 0,
  4991. 0,
  4992. 0,
  4993. 0,
  4994. 0,
  4995. 0,
  4996. 0,
  4997. 0,
  4998. 0,
  4999. 0,
  5000. 0,
  5001. 0,
  5002. 0,
  5003. 0,
  5004. 0,
  5005. 0,
  5006. 0,
  5007. 0,
  5008. 0,
  5009. 0,
  5010. 0,
  5011. 0,
  5012. 0,
  5013. 0,
  5014. 0,
  5015. 0 | (1<<4) | (1<<5) | (1<<6),
  5016. 0 | (1<<0) | (1<<1) | (1<<2),
  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 | (1<<2),
  5034. 0,
  5035. 0 | (1<<1) | (1<<2) | (1<<3),
  5036. 0,
  5037. 0 | (1<<3) | (1<<4),
  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 | (1<<5) | (1<<6) | (1<<7),
  5052. 0 | (1<<0) | (1<<1) | (1<<2),
  5053. 0,
  5054. 0,
  5055. 0,
  5056. 0 | (1<<0),
  5057. 0,
  5058. 0 | (1<<6) | (1<<7),
  5059. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6),
  5060. 0,
  5061. 0,
  5062. 0,
  5063. 0,
  5064. 0,
  5065. 0,
  5066. 0,
  5067. 0,
  5068. 0 | (1<<7),
  5069. 0 | (1<<1) | (1<<2),
  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 | (1<<0),
  5090. 0,
  5091. 0,
  5092. 0,
  5093. 0,
  5094. 0,
  5095. 0 | (1<<4) | (1<<5),
  5096. 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4),
  5097. 0 | (1<<1) | (1<<2) | (1<<3) | (1<<4),
  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,
  5122. 0,
  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,
  5141. 0,
  5142. 0,
  5143. 0,
  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,
  5158. 0,
  5159. 0,
  5160. 0,
  5161. 0,
  5162. 0,
  5163. 0,
  5164. 0,
  5165. 0,
  5166. 0,
  5167. 0,
  5168. 0,
  5169. 0,
  5170. 0,
  5171. 0,
  5172. 0,
  5173. 0,
  5174. 0,
  5175. 0,
  5176. 0,
  5177. 0,
  5178. 0,
  5179. 0,
  5180. 0,
  5181. 0,
  5182. 0,
  5183. 0,
  5184. 0 | (1<<7),
  5185. 0 | (1<<4) | (1<<5) | (1<<6),
  5186. 0 | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5187. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5188. 0 | (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7),
  5189. 0 | (1<<0) | (1<<1) | (1<<3) | (1<<4) | (1<<5) | (1<<7),
  5190. 0 | (1<<0) | (1<<3) | (1<<4) | (1<<5)
  5191. };
  5192. return (OTable[id/8] & (1 << (id%8))) != 0;
  5193. #endif
  5194. // Function name -> enum value recognizer code.
  5195. #ifdef GET_FUNCTION_RECOGNIZER
  5196. StringRef NameR(Name+6, Len-6); // Skip over 'llvm.'
  5197. switch (Name[5]) { // Dispatch on first letter.
  5198. default: break;
  5199. case 'a':
  5200. if (NameR.startswith("nnotation.")) return Intrinsic::annotation;
  5201. if (NameR.startswith("rm.neon.vabds.")) return Intrinsic::arm_neon_vabds;
  5202. if (NameR.startswith("rm.neon.vabdu.")) return Intrinsic::arm_neon_vabdu;
  5203. if (NameR.startswith("rm.neon.vabs.")) return Intrinsic::arm_neon_vabs;
  5204. if (NameR.startswith("rm.neon.vaddhn.")) return Intrinsic::arm_neon_vaddhn;
  5205. if (NameR.startswith("rm.neon.vbsl.")) return Intrinsic::arm_neon_vbsl;
  5206. if (NameR.startswith("rm.neon.vcls.")) return Intrinsic::arm_neon_vcls;
  5207. if (NameR.startswith("rm.neon.vclz.")) return Intrinsic::arm_neon_vclz;
  5208. if (NameR.startswith("rm.neon.vcnt.")) return Intrinsic::arm_neon_vcnt;
  5209. if (NameR.startswith("rm.neon.vcvtfp2fxs.")) return Intrinsic::arm_neon_vcvtfp2fxs;
  5210. if (NameR.startswith("rm.neon.vcvtfp2fxu.")) return Intrinsic::arm_neon_vcvtfp2fxu;
  5211. if (NameR.startswith("rm.neon.vcvtfxs2fp.")) return Intrinsic::arm_neon_vcvtfxs2fp;
  5212. if (NameR.startswith("rm.neon.vcvtfxu2fp.")) return Intrinsic::arm_neon_vcvtfxu2fp;
  5213. if (NameR.startswith("rm.neon.vhadds.")) return Intrinsic::arm_neon_vhadds;
  5214. if (NameR.startswith("rm.neon.vhaddu.")) return Intrinsic::arm_neon_vhaddu;
  5215. if (NameR.startswith("rm.neon.vhsubs.")) return Intrinsic::arm_neon_vhsubs;
  5216. if (NameR.startswith("rm.neon.vhsubu.")) return Intrinsic::arm_neon_vhsubu;
  5217. if (NameR.startswith("rm.neon.vld1.")) return Intrinsic::arm_neon_vld1;
  5218. if (NameR.startswith("rm.neon.vld2.")) return Intrinsic::arm_neon_vld2;
  5219. if (NameR.startswith("rm.neon.vld2lane.")) return Intrinsic::arm_neon_vld2lane;
  5220. if (NameR.startswith("rm.neon.vld3.")) return Intrinsic::arm_neon_vld3;
  5221. if (NameR.startswith("rm.neon.vld3lane.")) return Intrinsic::arm_neon_vld3lane;
  5222. if (NameR.startswith("rm.neon.vld4.")) return Intrinsic::arm_neon_vld4;
  5223. if (NameR.startswith("rm.neon.vld4lane.")) return Intrinsic::arm_neon_vld4lane;
  5224. if (NameR.startswith("rm.neon.vmaxs.")) return Intrinsic::arm_neon_vmaxs;
  5225. if (NameR.startswith("rm.neon.vmaxu.")) return Intrinsic::arm_neon_vmaxu;
  5226. if (NameR.startswith("rm.neon.vmins.")) return Intrinsic::arm_neon_vmins;
  5227. if (NameR.startswith("rm.neon.vminu.")) return Intrinsic::arm_neon_vminu;
  5228. if (NameR.startswith("rm.neon.vmullp.")) return Intrinsic::arm_neon_vmullp;
  5229. if (NameR.startswith("rm.neon.vmulls.")) return Intrinsic::arm_neon_vmulls;
  5230. if (NameR.startswith("rm.neon.vmullu.")) return Intrinsic::arm_neon_vmullu;
  5231. if (NameR.startswith("rm.neon.vmulp.")) return Intrinsic::arm_neon_vmulp;
  5232. if (NameR.startswith("rm.neon.vpadals.")) return Intrinsic::arm_neon_vpadals;
  5233. if (NameR.startswith("rm.neon.vpadalu.")) return Intrinsic::arm_neon_vpadalu;
  5234. if (NameR.startswith("rm.neon.vpadd.")) return Intrinsic::arm_neon_vpadd;
  5235. if (NameR.startswith("rm.neon.vpaddls.")) return Intrinsic::arm_neon_vpaddls;
  5236. if (NameR.startswith("rm.neon.vpaddlu.")) return Intrinsic::arm_neon_vpaddlu;
  5237. if (NameR.startswith("rm.neon.vpmaxs.")) return Intrinsic::arm_neon_vpmaxs;
  5238. if (NameR.startswith("rm.neon.vpmaxu.")) return Intrinsic::arm_neon_vpmaxu;
  5239. if (NameR.startswith("rm.neon.vpmins.")) return Intrinsic::arm_neon_vpmins;
  5240. if (NameR.startswith("rm.neon.vpminu.")) return Intrinsic::arm_neon_vpminu;
  5241. if (NameR.startswith("rm.neon.vqabs.")) return Intrinsic::arm_neon_vqabs;
  5242. if (NameR.startswith("rm.neon.vqadds.")) return Intrinsic::arm_neon_vqadds;
  5243. if (NameR.startswith("rm.neon.vqaddu.")) return Intrinsic::arm_neon_vqaddu;
  5244. if (NameR.startswith("rm.neon.vqdmlal.")) return Intrinsic::arm_neon_vqdmlal;
  5245. if (NameR.startswith("rm.neon.vqdmlsl.")) return Intrinsic::arm_neon_vqdmlsl;
  5246. if (NameR.startswith("rm.neon.vqdmulh.")) return Intrinsic::arm_neon_vqdmulh;
  5247. if (NameR.startswith("rm.neon.vqdmull.")) return Intrinsic::arm_neon_vqdmull;
  5248. if (NameR.startswith("rm.neon.vqmovns.")) return Intrinsic::arm_neon_vqmovns;
  5249. if (NameR.startswith("rm.neon.vqmovnsu.")) return Intrinsic::arm_neon_vqmovnsu;
  5250. if (NameR.startswith("rm.neon.vqmovnu.")) return Intrinsic::arm_neon_vqmovnu;
  5251. if (NameR.startswith("rm.neon.vqneg.")) return Intrinsic::arm_neon_vqneg;
  5252. if (NameR.startswith("rm.neon.vqrdmulh.")) return Intrinsic::arm_neon_vqrdmulh;
  5253. if (NameR.startswith("rm.neon.vqrshiftns.")) return Intrinsic::arm_neon_vqrshiftns;
  5254. if (NameR.startswith("rm.neon.vqrshiftnsu.")) return Intrinsic::arm_neon_vqrshiftnsu;
  5255. if (NameR.startswith("rm.neon.vqrshiftnu.")) return Intrinsic::arm_neon_vqrshiftnu;
  5256. if (NameR.startswith("rm.neon.vqrshifts.")) return Intrinsic::arm_neon_vqrshifts;
  5257. if (NameR.startswith("rm.neon.vqrshiftu.")) return Intrinsic::arm_neon_vqrshiftu;
  5258. if (NameR.startswith("rm.neon.vqshiftns.")) return Intrinsic::arm_neon_vqshiftns;
  5259. if (NameR.startswith("rm.neon.vqshiftnsu.")) return Intrinsic::arm_neon_vqshiftnsu;
  5260. if (NameR.startswith("rm.neon.vqshiftnu.")) return Intrinsic::arm_neon_vqshiftnu;
  5261. if (NameR.startswith("rm.neon.vqshifts.")) return Intrinsic::arm_neon_vqshifts;
  5262. if (NameR.startswith("rm.neon.vqshiftsu.")) return Intrinsic::arm_neon_vqshiftsu;
  5263. if (NameR.startswith("rm.neon.vqshiftu.")) return Intrinsic::arm_neon_vqshiftu;
  5264. if (NameR.startswith("rm.neon.vqsubs.")) return Intrinsic::arm_neon_vqsubs;
  5265. if (NameR.startswith("rm.neon.vqsubu.")) return Intrinsic::arm_neon_vqsubu;
  5266. if (NameR.startswith("rm.neon.vraddhn.")) return Intrinsic::arm_neon_vraddhn;
  5267. if (NameR.startswith("rm.neon.vrecpe.")) return Intrinsic::arm_neon_vrecpe;
  5268. if (NameR.startswith("rm.neon.vrecps.")) return Intrinsic::arm_neon_vrecps;
  5269. if (NameR.startswith("rm.neon.vrhadds.")) return Intrinsic::arm_neon_vrhadds;
  5270. if (NameR.startswith("rm.neon.vrhaddu.")) return Intrinsic::arm_neon_vrhaddu;
  5271. if (NameR.startswith("rm.neon.vrshiftn.")) return Intrinsic::arm_neon_vrshiftn;
  5272. if (NameR.startswith("rm.neon.vrshifts.")) return Intrinsic::arm_neon_vrshifts;
  5273. if (NameR.startswith("rm.neon.vrshiftu.")) return Intrinsic::arm_neon_vrshiftu;
  5274. if (NameR.startswith("rm.neon.vrsqrte.")) return Intrinsic::arm_neon_vrsqrte;
  5275. if (NameR.startswith("rm.neon.vrsqrts.")) return Intrinsic::arm_neon_vrsqrts;
  5276. if (NameR.startswith("rm.neon.vrsubhn.")) return Intrinsic::arm_neon_vrsubhn;
  5277. if (NameR.startswith("rm.neon.vshiftins.")) return Intrinsic::arm_neon_vshiftins;
  5278. if (NameR.startswith("rm.neon.vshiftls.")) return Intrinsic::arm_neon_vshiftls;
  5279. if (NameR.startswith("rm.neon.vshiftlu.")) return Intrinsic::arm_neon_vshiftlu;
  5280. if (NameR.startswith("rm.neon.vshiftn.")) return Intrinsic::arm_neon_vshiftn;
  5281. if (NameR.startswith("rm.neon.vshifts.")) return Intrinsic::arm_neon_vshifts;
  5282. if (NameR.startswith("rm.neon.vshiftu.")) return Intrinsic::arm_neon_vshiftu;
  5283. if (NameR.startswith("rm.neon.vst1.")) return Intrinsic::arm_neon_vst1;
  5284. if (NameR.startswith("rm.neon.vst2.")) return Intrinsic::arm_neon_vst2;
  5285. if (NameR.startswith("rm.neon.vst2lane.")) return Intrinsic::arm_neon_vst2lane;
  5286. if (NameR.startswith("rm.neon.vst3.")) return Intrinsic::arm_neon_vst3;
  5287. if (NameR.startswith("rm.neon.vst3lane.")) return Intrinsic::arm_neon_vst3lane;
  5288. if (NameR.startswith("rm.neon.vst4.")) return Intrinsic::arm_neon_vst4;
  5289. if (NameR.startswith("rm.neon.vst4lane.")) return Intrinsic::arm_neon_vst4lane;
  5290. if (NameR.startswith("rm.neon.vsubhn.")) return Intrinsic::arm_neon_vsubhn;
  5291. if (NameR.startswith("rm.vcvtr.")) return Intrinsic::arm_vcvtr;
  5292. if (NameR.startswith("rm.vcvtru.")) return Intrinsic::arm_vcvtru;
  5293. switch (NameR.size()) {
  5294. default: break;
  5295. case 6: // 3 strings to match.
  5296. if (memcmp(NameR.data()+0, "rm.", 3))
  5297. break;
  5298. switch (NameR[3]) {
  5299. default: break;
  5300. case 'c': // 1 string to match.
  5301. if (memcmp(NameR.data()+4, "dp", 2))
  5302. break;
  5303. return Intrinsic::arm_cdp; // "rm.cdp"
  5304. case 'm': // 2 strings to match.
  5305. switch (NameR[4]) {
  5306. default: break;
  5307. case 'c': // 1 string to match.
  5308. if (NameR[5] != 'r')
  5309. break;
  5310. return Intrinsic::arm_mcr; // "rm.mcr"
  5311. case 'r': // 1 string to match.
  5312. if (NameR[5] != 'c')
  5313. break;
  5314. return Intrinsic::arm_mrc; // "rm.mrc"
  5315. }
  5316. break;
  5317. }
  5318. break;
  5319. case 7: // 8 strings to match.
  5320. if (memcmp(NameR.data()+0, "rm.", 3))
  5321. break;
  5322. switch (NameR[3]) {
  5323. default: break;
  5324. case 'c': // 1 string to match.
  5325. if (memcmp(NameR.data()+4, "dp2", 3))
  5326. break;
  5327. return Intrinsic::arm_cdp2; // "rm.cdp2"
  5328. case 'm': // 3 strings to match.
  5329. switch (NameR[4]) {
  5330. default: break;
  5331. case 'c': // 2 strings to match.
  5332. if (NameR[5] != 'r')
  5333. break;
  5334. switch (NameR[6]) {
  5335. default: break;
  5336. case '2': // 1 string to match.
  5337. return Intrinsic::arm_mcr2; // "rm.mcr2"
  5338. case 'r': // 1 string to match.
  5339. return Intrinsic::arm_mcrr; // "rm.mcrr"
  5340. }
  5341. break;
  5342. case 'r': // 1 string to match.
  5343. if (memcmp(NameR.data()+5, "c2", 2))
  5344. break;
  5345. return Intrinsic::arm_mrc2; // "rm.mrc2"
  5346. }
  5347. break;
  5348. case 'q': // 2 strings to match.
  5349. switch (NameR[4]) {
  5350. default: break;
  5351. case 'a': // 1 string to match.
  5352. if (memcmp(NameR.data()+5, "dd", 2))
  5353. break;
  5354. return Intrinsic::arm_qadd; // "rm.qadd"
  5355. case 's': // 1 string to match.
  5356. if (memcmp(NameR.data()+5, "ub", 2))
  5357. break;
  5358. return Intrinsic::arm_qsub; // "rm.qsub"
  5359. }
  5360. break;
  5361. case 's': // 1 string to match.
  5362. if (memcmp(NameR.data()+4, "sat", 3))
  5363. break;
  5364. return Intrinsic::arm_ssat; // "rm.ssat"
  5365. case 'u': // 1 string to match.
  5366. if (memcmp(NameR.data()+4, "sat", 3))
  5367. break;
  5368. return Intrinsic::arm_usat; // "rm.usat"
  5369. }
  5370. break;
  5371. case 8: // 1 string to match.
  5372. if (memcmp(NameR.data()+0, "rm.mcrr2", 8))
  5373. break;
  5374. return Intrinsic::arm_mcrr2; // "rm.mcrr2"
  5375. case 9: // 2 strings to match.
  5376. if (memcmp(NameR.data()+0, "rm.", 3))
  5377. break;
  5378. switch (NameR[3]) {
  5379. default: break;
  5380. case 'l': // 1 string to match.
  5381. if (memcmp(NameR.data()+4, "drexd", 5))
  5382. break;
  5383. return Intrinsic::arm_ldrexd; // "rm.ldrexd"
  5384. case 's': // 1 string to match.
  5385. if (memcmp(NameR.data()+4, "trexd", 5))
  5386. break;
  5387. return Intrinsic::arm_strexd; // "rm.strexd"
  5388. }
  5389. break;
  5390. case 12: // 2 strings to match.
  5391. if (memcmp(NameR.data()+0, "rm.", 3))
  5392. break;
  5393. switch (NameR[3]) {
  5394. default: break;
  5395. case 'g': // 1 string to match.
  5396. if (memcmp(NameR.data()+4, "et.fpscr", 8))
  5397. break;
  5398. return Intrinsic::arm_get_fpscr; // "rm.get.fpscr"
  5399. case 's': // 1 string to match.
  5400. if (memcmp(NameR.data()+4, "et.fpscr", 8))
  5401. break;
  5402. return Intrinsic::arm_set_fpscr; // "rm.set.fpscr"
  5403. }
  5404. break;
  5405. case 13: // 8 strings to match.
  5406. if (memcmp(NameR.data()+0, "rm.neon.vtb", 11))
  5407. break;
  5408. switch (NameR[11]) {
  5409. default: break;
  5410. case 'l': // 4 strings to match.
  5411. switch (NameR[12]) {
  5412. default: break;
  5413. case '1': // 1 string to match.
  5414. return Intrinsic::arm_neon_vtbl1; // "rm.neon.vtbl1"
  5415. case '2': // 1 string to match.
  5416. return Intrinsic::arm_neon_vtbl2; // "rm.neon.vtbl2"
  5417. case '3': // 1 string to match.
  5418. return Intrinsic::arm_neon_vtbl3; // "rm.neon.vtbl3"
  5419. case '4': // 1 string to match.
  5420. return Intrinsic::arm_neon_vtbl4; // "rm.neon.vtbl4"
  5421. }
  5422. break;
  5423. case 'x': // 4 strings to match.
  5424. switch (NameR[12]) {
  5425. default: break;
  5426. case '1': // 1 string to match.
  5427. return Intrinsic::arm_neon_vtbx1; // "rm.neon.vtbx1"
  5428. case '2': // 1 string to match.
  5429. return Intrinsic::arm_neon_vtbx2; // "rm.neon.vtbx2"
  5430. case '3': // 1 string to match.
  5431. return Intrinsic::arm_neon_vtbx3; // "rm.neon.vtbx3"
  5432. case '4': // 1 string to match.
  5433. return Intrinsic::arm_neon_vtbx4; // "rm.neon.vtbx4"
  5434. }
  5435. break;
  5436. }
  5437. break;
  5438. case 14: // 4 strings to match.
  5439. if (memcmp(NameR.data()+0, "rm.neon.vacg", 12))
  5440. break;
  5441. switch (NameR[12]) {
  5442. default: break;
  5443. case 'e': // 2 strings to match.
  5444. switch (NameR[13]) {
  5445. default: break;
  5446. case 'd': // 1 string to match.
  5447. return Intrinsic::arm_neon_vacged; // "rm.neon.vacged"
  5448. case 'q': // 1 string to match.
  5449. return Intrinsic::arm_neon_vacgeq; // "rm.neon.vacgeq"
  5450. }
  5451. break;
  5452. case 't': // 2 strings to match.
  5453. switch (NameR[13]) {
  5454. default: break;
  5455. case 'd': // 1 string to match.
  5456. return Intrinsic::arm_neon_vacgtd; // "rm.neon.vacgtd"
  5457. case 'q': // 1 string to match.
  5458. return Intrinsic::arm_neon_vacgtq; // "rm.neon.vacgtq"
  5459. }
  5460. break;
  5461. }
  5462. break;
  5463. case 16: // 1 string to match.
  5464. if (memcmp(NameR.data()+0, "djust.trampoline", 16))
  5465. break;
  5466. return Intrinsic::adjust_trampoline; // "djust.trampoline"
  5467. case 17: // 3 strings to match.
  5468. if (memcmp(NameR.data()+0, "rm.", 3))
  5469. break;
  5470. switch (NameR[3]) {
  5471. default: break;
  5472. case 'n': // 2 strings to match.
  5473. if (memcmp(NameR.data()+4, "eon.vcvt", 8))
  5474. break;
  5475. switch (NameR[12]) {
  5476. default: break;
  5477. case 'f': // 1 string to match.
  5478. if (memcmp(NameR.data()+13, "p2hf", 4))
  5479. break;
  5480. return Intrinsic::arm_neon_vcvtfp2hf; // "rm.neon.vcvtfp2hf"
  5481. case 'h': // 1 string to match.
  5482. if (memcmp(NameR.data()+13, "f2fp", 4))
  5483. break;
  5484. return Intrinsic::arm_neon_vcvthf2fp; // "rm.neon.vcvthf2fp"
  5485. }
  5486. break;
  5487. case 't': // 1 string to match.
  5488. if (memcmp(NameR.data()+4, "hread.pointer", 13))
  5489. break;
  5490. return Intrinsic::arm_thread_pointer; // "rm.thread.pointer"
  5491. }
  5492. break;
  5493. }
  5494. break; // end of 'a' case.
  5495. case 'b':
  5496. if (NameR.startswith("swap.")) return Intrinsic::bswap;
  5497. break; // end of 'b' case.
  5498. case 'c':
  5499. if (NameR.startswith("eil.")) return Intrinsic::ceil;
  5500. if (NameR.startswith("onvertff.")) return Intrinsic::convertff;
  5501. if (NameR.startswith("onvertfsi.")) return Intrinsic::convertfsi;
  5502. if (NameR.startswith("onvertfui.")) return Intrinsic::convertfui;
  5503. if (NameR.startswith("onvertsif.")) return Intrinsic::convertsif;
  5504. if (NameR.startswith("onvertss.")) return Intrinsic::convertss;
  5505. if (NameR.startswith("onvertsu.")) return Intrinsic::convertsu;
  5506. if (NameR.startswith("onvertuif.")) return Intrinsic::convertuif;
  5507. if (NameR.startswith("onvertus.")) return Intrinsic::convertus;
  5508. if (NameR.startswith("onvertuu.")) return Intrinsic::convertuu;
  5509. if (NameR.startswith("os.")) return Intrinsic::cos;
  5510. if (NameR.startswith("tlz.")) return Intrinsic::ctlz;
  5511. if (NameR.startswith("tpop.")) return Intrinsic::ctpop;
  5512. if (NameR.startswith("ttz.")) return Intrinsic::cttz;
  5513. switch (NameR.size()) {
  5514. default: break;
  5515. case 14: // 1 string to match.
  5516. if (memcmp(NameR.data()+0, "onvert.to.fp16", 14))
  5517. break;
  5518. return Intrinsic::convert_to_fp16; // "onvert.to.fp16"
  5519. case 15: // 1 string to match.
  5520. if (memcmp(NameR.data()+0, "uda.syncthreads", 15))
  5521. break;
  5522. return Intrinsic::cuda_syncthreads; // "uda.syncthreads"
  5523. case 16: // 1 string to match.
  5524. if (memcmp(NameR.data()+0, "onvert.from.fp16", 16))
  5525. break;
  5526. return Intrinsic::convert_from_fp16; // "onvert.from.fp16"
  5527. }
  5528. break; // end of 'c' case.
  5529. case 'd':
  5530. switch (NameR.size()) {
  5531. default: break;
  5532. case 8: // 3 strings to match.
  5533. switch (NameR[0]) {
  5534. default: break;
  5535. case 'b': // 1 string to match.
  5536. if (memcmp(NameR.data()+1, "g.value", 7))
  5537. break;
  5538. return Intrinsic::dbg_value; // "bg.value"
  5539. case 'e': // 1 string to match.
  5540. if (memcmp(NameR.data()+1, "bugtrap", 7))
  5541. break;
  5542. return Intrinsic::debugtrap; // "ebugtrap"
  5543. case 'o': // 1 string to match.
  5544. if (memcmp(NameR.data()+1, "nothing", 7))
  5545. break;
  5546. return Intrinsic::donothing; // "onothing"
  5547. }
  5548. break;
  5549. case 10: // 1 string to match.
  5550. if (memcmp(NameR.data()+0, "bg.declare", 10))
  5551. break;
  5552. return Intrinsic::dbg_declare; // "bg.declare"
  5553. }
  5554. break; // end of 'd' case.
  5555. case 'e':
  5556. if (NameR.startswith("xp.")) return Intrinsic::exp;
  5557. if (NameR.startswith("xp2.")) return Intrinsic::exp2;
  5558. if (NameR.startswith("xpect.")) return Intrinsic::expect;
  5559. switch (NameR.size()) {
  5560. default: break;
  5561. case 11: // 2 strings to match.
  5562. if (memcmp(NameR.data()+0, "h.", 2))
  5563. break;
  5564. switch (NameR[2]) {
  5565. default: break;
  5566. case 'd': // 1 string to match.
  5567. if (memcmp(NameR.data()+3, "warf.cfa", 8))
  5568. break;
  5569. return Intrinsic::eh_dwarf_cfa; // "h.dwarf.cfa"
  5570. case 's': // 1 string to match.
  5571. if (memcmp(NameR.data()+3, "jlj.lsda", 8))
  5572. break;
  5573. return Intrinsic::eh_sjlj_lsda; // "h.sjlj.lsda"
  5574. }
  5575. break;
  5576. case 12: // 3 strings to match.
  5577. if (memcmp(NameR.data()+0, "h.", 2))
  5578. break;
  5579. switch (NameR[2]) {
  5580. default: break;
  5581. case 'r': // 2 strings to match.
  5582. if (memcmp(NameR.data()+3, "eturn.i", 7))
  5583. break;
  5584. switch (NameR[10]) {
  5585. default: break;
  5586. case '3': // 1 string to match.
  5587. if (NameR[11] != '2')
  5588. break;
  5589. return Intrinsic::eh_return_i32; // "h.return.i32"
  5590. case '6': // 1 string to match.
  5591. if (NameR[11] != '4')
  5592. break;
  5593. return Intrinsic::eh_return_i64; // "h.return.i64"
  5594. }
  5595. break;
  5596. case 't': // 1 string to match.
  5597. if (memcmp(NameR.data()+3, "ypeid.for", 9))
  5598. break;
  5599. return Intrinsic::eh_typeid_for; // "h.typeid.for"
  5600. }
  5601. break;
  5602. case 13: // 2 strings to match.
  5603. if (memcmp(NameR.data()+0, "h.", 2))
  5604. break;
  5605. switch (NameR[2]) {
  5606. default: break;
  5607. case 's': // 1 string to match.
  5608. if (memcmp(NameR.data()+3, "jlj.setjmp", 10))
  5609. break;
  5610. return Intrinsic::eh_sjlj_setjmp; // "h.sjlj.setjmp"
  5611. case 'u': // 1 string to match.
  5612. if (memcmp(NameR.data()+3, "nwind.init", 10))
  5613. break;
  5614. return Intrinsic::eh_unwind_init; // "h.unwind.init"
  5615. }
  5616. break;
  5617. case 14: // 1 string to match.
  5618. if (memcmp(NameR.data()+0, "h.sjlj.longjmp", 14))
  5619. break;
  5620. return Intrinsic::eh_sjlj_longjmp; // "h.sjlj.longjmp"
  5621. case 15: // 1 string to match.
  5622. if (memcmp(NameR.data()+0, "h.sjlj.callsite", 15))
  5623. break;
  5624. return Intrinsic::eh_sjlj_callsite; // "h.sjlj.callsite"
  5625. case 22: // 1 string to match.
  5626. if (memcmp(NameR.data()+0, "h.sjlj.functioncontext", 22))
  5627. break;
  5628. return Intrinsic::eh_sjlj_functioncontext; // "h.sjlj.functioncontext"
  5629. }
  5630. break; // end of 'e' case.
  5631. case 'f':
  5632. if (NameR.startswith("abs.")) return Intrinsic::fabs;
  5633. if (NameR.startswith("loor.")) return Intrinsic::floor;
  5634. if (NameR.startswith("ma.")) return Intrinsic::fma;
  5635. if (NameR.startswith("muladd.")) return Intrinsic::fmuladd;
  5636. switch (NameR.size()) {
  5637. default: break;
  5638. case 9: // 1 string to match.
  5639. if (memcmp(NameR.data()+0, "lt.rounds", 9))
  5640. break;
  5641. return Intrinsic::flt_rounds; // "lt.rounds"
  5642. case 11: // 1 string to match.
  5643. if (memcmp(NameR.data()+0, "rameaddress", 11))
  5644. break;
  5645. return Intrinsic::frameaddress; // "rameaddress"
  5646. }
  5647. break; // end of 'f' case.
  5648. case 'g':
  5649. switch (NameR.size()) {
  5650. default: break;
  5651. case 5: // 2 strings to match.
  5652. if (memcmp(NameR.data()+0, "cr", 2))
  5653. break;
  5654. switch (NameR[2]) {
  5655. default: break;
  5656. case 'e': // 1 string to match.
  5657. if (memcmp(NameR.data()+3, "ad", 2))
  5658. break;
  5659. return Intrinsic::gcread; // "cread"
  5660. case 'o': // 1 string to match.
  5661. if (memcmp(NameR.data()+3, "ot", 2))
  5662. break;
  5663. return Intrinsic::gcroot; // "croot"
  5664. }
  5665. break;
  5666. case 6: // 1 string to match.
  5667. if (memcmp(NameR.data()+0, "cwrite", 6))
  5668. break;
  5669. return Intrinsic::gcwrite; // "cwrite"
  5670. }
  5671. break; // end of 'g' case.
  5672. case 'h':
  5673. switch (NameR.size()) {
  5674. default: break;
  5675. case 12: // 2 strings to match.
  5676. if (memcmp(NameR.data()+0, "exagon.", 7))
  5677. break;
  5678. switch (NameR[7]) {
  5679. default: break;
  5680. case 'A': // 1 string to match.
  5681. if (memcmp(NameR.data()+8, "2.or", 4))
  5682. break;
  5683. return Intrinsic::hexagon_A2_or; // "exagon.A2.or"
  5684. case 'C': // 1 string to match.
  5685. if (memcmp(NameR.data()+8, "2.or", 4))
  5686. break;
  5687. return Intrinsic::hexagon_C2_or; // "exagon.C2.or"
  5688. }
  5689. break;
  5690. case 13: // 23 strings to match.
  5691. if (memcmp(NameR.data()+0, "exagon.", 7))
  5692. break;
  5693. switch (NameR[7]) {
  5694. default: break;
  5695. case 'A': // 13 strings to match.
  5696. switch (NameR[8]) {
  5697. default: break;
  5698. case '2': // 12 strings to match.
  5699. if (NameR[9] != '.')
  5700. break;
  5701. switch (NameR[10]) {
  5702. default: break;
  5703. case 'a': // 3 strings to match.
  5704. switch (NameR[11]) {
  5705. default: break;
  5706. case 'b': // 1 string to match.
  5707. if (NameR[12] != 's')
  5708. break;
  5709. return Intrinsic::hexagon_A2_abs; // "exagon.A2.abs"
  5710. case 'd': // 1 string to match.
  5711. if (NameR[12] != 'd')
  5712. break;
  5713. return Intrinsic::hexagon_A2_add; // "exagon.A2.add"
  5714. case 'n': // 1 string to match.
  5715. if (NameR[12] != 'd')
  5716. break;
  5717. return Intrinsic::hexagon_A2_and; // "exagon.A2.and"
  5718. }
  5719. break;
  5720. case 'm': // 2 strings to match.
  5721. switch (NameR[11]) {
  5722. default: break;
  5723. case 'a': // 1 string to match.
  5724. if (NameR[12] != 'x')
  5725. break;
  5726. return Intrinsic::hexagon_A2_max; // "exagon.A2.max"
  5727. case 'i': // 1 string to match.
  5728. if (NameR[12] != 'n')
  5729. break;
  5730. return Intrinsic::hexagon_A2_min; // "exagon.A2.min"
  5731. }
  5732. break;
  5733. case 'n': // 2 strings to match.
  5734. switch (NameR[11]) {
  5735. default: break;
  5736. case 'e': // 1 string to match.
  5737. if (NameR[12] != 'g')
  5738. break;
  5739. return Intrinsic::hexagon_A2_neg; // "exagon.A2.neg"
  5740. case 'o': // 1 string to match.
  5741. if (NameR[12] != 't')
  5742. break;
  5743. return Intrinsic::hexagon_A2_not; // "exagon.A2.not"
  5744. }
  5745. break;
  5746. case 'o': // 1 string to match.
  5747. if (memcmp(NameR.data()+11, "rp", 2))
  5748. break;
  5749. return Intrinsic::hexagon_A2_orp; // "exagon.A2.orp"
  5750. case 's': // 2 strings to match.
  5751. switch (NameR[11]) {
  5752. default: break;
  5753. case 'a': // 1 string to match.
  5754. if (NameR[12] != 't')
  5755. break;
  5756. return Intrinsic::hexagon_A2_sat; // "exagon.A2.sat"
  5757. case 'u': // 1 string to match.
  5758. if (NameR[12] != 'b')
  5759. break;
  5760. return Intrinsic::hexagon_A2_sub; // "exagon.A2.sub"
  5761. }
  5762. break;
  5763. case 't': // 1 string to match.
  5764. if (memcmp(NameR.data()+11, "fr", 2))
  5765. break;
  5766. return Intrinsic::hexagon_A2_tfr; // "exagon.A2.tfr"
  5767. case 'x': // 1 string to match.
  5768. if (memcmp(NameR.data()+11, "or", 2))
  5769. break;
  5770. return Intrinsic::hexagon_A2_xor; // "exagon.A2.xor"
  5771. }
  5772. break;
  5773. case '4': // 1 string to match.
  5774. if (memcmp(NameR.data()+9, ".orn", 4))
  5775. break;
  5776. return Intrinsic::hexagon_A4_orn; // "exagon.A4.orn"
  5777. }
  5778. break;
  5779. case 'C': // 5 strings to match.
  5780. if (memcmp(NameR.data()+8, "2.", 2))
  5781. break;
  5782. switch (NameR[10]) {
  5783. default: break;
  5784. case 'a': // 1 string to match.
  5785. if (memcmp(NameR.data()+11, "nd", 2))
  5786. break;
  5787. return Intrinsic::hexagon_C2_and; // "exagon.C2.and"
  5788. case 'm': // 1 string to match.
  5789. if (memcmp(NameR.data()+11, "ux", 2))
  5790. break;
  5791. return Intrinsic::hexagon_C2_mux; // "exagon.C2.mux"
  5792. case 'n': // 1 string to match.
  5793. if (memcmp(NameR.data()+11, "ot", 2))
  5794. break;
  5795. return Intrinsic::hexagon_C2_not; // "exagon.C2.not"
  5796. case 'o': // 1 string to match.
  5797. if (memcmp(NameR.data()+11, "rn", 2))
  5798. break;
  5799. return Intrinsic::hexagon_C2_orn; // "exagon.C2.orn"
  5800. case 'x': // 1 string to match.
  5801. if (memcmp(NameR.data()+11, "or", 2))
  5802. break;
  5803. return Intrinsic::hexagon_C2_xor; // "exagon.C2.xor"
  5804. }
  5805. break;
  5806. case 'S': // 5 strings to match.
  5807. if (memcmp(NameR.data()+8, "2.c", 3))
  5808. break;
  5809. switch (NameR[11]) {
  5810. default: break;
  5811. case 'l': // 3 strings to match.
  5812. switch (NameR[12]) {
  5813. default: break;
  5814. case '0': // 1 string to match.
  5815. return Intrinsic::hexagon_S2_cl0; // "exagon.S2.cl0"
  5816. case '1': // 1 string to match.
  5817. return Intrinsic::hexagon_S2_cl1; // "exagon.S2.cl1"
  5818. case 'b': // 1 string to match.
  5819. return Intrinsic::hexagon_S2_clb; // "exagon.S2.clb"
  5820. }
  5821. break;
  5822. case 't': // 2 strings to match.
  5823. switch (NameR[12]) {
  5824. default: break;
  5825. case '0': // 1 string to match.
  5826. return Intrinsic::hexagon_S2_ct0; // "exagon.S2.ct0"
  5827. case '1': // 1 string to match.
  5828. return Intrinsic::hexagon_S2_ct1; // "exagon.S2.ct1"
  5829. }
  5830. break;
  5831. }
  5832. break;
  5833. }
  5834. break;
  5835. case 14: // 42 strings to match.
  5836. if (memcmp(NameR.data()+0, "exagon.", 7))
  5837. break;
  5838. switch (NameR[7]) {
  5839. default: break;
  5840. case 'A': // 26 strings to match.
  5841. switch (NameR[8]) {
  5842. default: break;
  5843. case '2': // 24 strings to match.
  5844. if (NameR[9] != '.')
  5845. break;
  5846. switch (NameR[10]) {
  5847. default: break;
  5848. case 'a': // 6 strings to match.
  5849. switch (NameR[11]) {
  5850. default: break;
  5851. case 'b': // 1 string to match.
  5852. if (memcmp(NameR.data()+12, "sp", 2))
  5853. break;
  5854. return Intrinsic::hexagon_A2_absp; // "exagon.A2.absp"
  5855. case 'd': // 2 strings to match.
  5856. if (NameR[12] != 'd')
  5857. break;
  5858. switch (NameR[13]) {
  5859. default: break;
  5860. case 'i': // 1 string to match.
  5861. return Intrinsic::hexagon_A2_addi; // "exagon.A2.addi"
  5862. case 'p': // 1 string to match.
  5863. return Intrinsic::hexagon_A2_addp; // "exagon.A2.addp"
  5864. }
  5865. break;
  5866. case 'n': // 1 string to match.
  5867. if (memcmp(NameR.data()+12, "dp", 2))
  5868. break;
  5869. return Intrinsic::hexagon_A2_andp; // "exagon.A2.andp"
  5870. case 's': // 2 strings to match.
  5871. switch (NameR[12]) {
  5872. default: break;
  5873. case 'l': // 1 string to match.
  5874. if (NameR[13] != 'h')
  5875. break;
  5876. return Intrinsic::hexagon_A2_aslh; // "exagon.A2.aslh"
  5877. case 'r': // 1 string to match.
  5878. if (NameR[13] != 'h')
  5879. break;
  5880. return Intrinsic::hexagon_A2_asrh; // "exagon.A2.asrh"
  5881. }
  5882. break;
  5883. }
  5884. break;
  5885. case 'm': // 4 strings to match.
  5886. switch (NameR[11]) {
  5887. default: break;
  5888. case 'a': // 2 strings to match.
  5889. if (NameR[12] != 'x')
  5890. break;
  5891. switch (NameR[13]) {
  5892. default: break;
  5893. case 'p': // 1 string to match.
  5894. return Intrinsic::hexagon_A2_maxp; // "exagon.A2.maxp"
  5895. case 'u': // 1 string to match.
  5896. return Intrinsic::hexagon_A2_maxu; // "exagon.A2.maxu"
  5897. }
  5898. break;
  5899. case 'i': // 2 strings to match.
  5900. if (NameR[12] != 'n')
  5901. break;
  5902. switch (NameR[13]) {
  5903. default: break;
  5904. case 'p': // 1 string to match.
  5905. return Intrinsic::hexagon_A2_minp; // "exagon.A2.minp"
  5906. case 'u': // 1 string to match.
  5907. return Intrinsic::hexagon_A2_minu; // "exagon.A2.minu"
  5908. }
  5909. break;
  5910. }
  5911. break;
  5912. case 'n': // 2 strings to match.
  5913. switch (NameR[11]) {
  5914. default: break;
  5915. case 'e': // 1 string to match.
  5916. if (memcmp(NameR.data()+12, "gp", 2))
  5917. break;
  5918. return Intrinsic::hexagon_A2_negp; // "exagon.A2.negp"
  5919. case 'o': // 1 string to match.
  5920. if (memcmp(NameR.data()+12, "tp", 2))
  5921. break;
  5922. return Intrinsic::hexagon_A2_notp; // "exagon.A2.notp"
  5923. }
  5924. break;
  5925. case 'o': // 1 string to match.
  5926. if (memcmp(NameR.data()+11, "rir", 3))
  5927. break;
  5928. return Intrinsic::hexagon_A2_orir; // "exagon.A2.orir"
  5929. case 's': // 7 strings to match.
  5930. switch (NameR[11]) {
  5931. default: break;
  5932. case 'a': // 2 strings to match.
  5933. if (NameR[12] != 't')
  5934. break;
  5935. switch (NameR[13]) {
  5936. default: break;
  5937. case 'b': // 1 string to match.
  5938. return Intrinsic::hexagon_A2_satb; // "exagon.A2.satb"
  5939. case 'h': // 1 string to match.
  5940. return Intrinsic::hexagon_A2_sath; // "exagon.A2.sath"
  5941. }
  5942. break;
  5943. case 'u': // 1 string to match.
  5944. if (memcmp(NameR.data()+12, "bp", 2))
  5945. break;
  5946. return Intrinsic::hexagon_A2_subp; // "exagon.A2.subp"
  5947. case 'w': // 1 string to match.
  5948. if (memcmp(NameR.data()+12, "iz", 2))
  5949. break;
  5950. return Intrinsic::hexagon_A2_swiz; // "exagon.A2.swiz"
  5951. case 'x': // 3 strings to match.
  5952. if (NameR[12] != 't')
  5953. break;
  5954. switch (NameR[13]) {
  5955. default: break;
  5956. case 'b': // 1 string to match.
  5957. return Intrinsic::hexagon_A2_sxtb; // "exagon.A2.sxtb"
  5958. case 'h': // 1 string to match.
  5959. return Intrinsic::hexagon_A2_sxth; // "exagon.A2.sxth"
  5960. case 'w': // 1 string to match.
  5961. return Intrinsic::hexagon_A2_sxtw; // "exagon.A2.sxtw"
  5962. }
  5963. break;
  5964. }
  5965. break;
  5966. case 't': // 1 string to match.
  5967. if (memcmp(NameR.data()+11, "frp", 3))
  5968. break;
  5969. return Intrinsic::hexagon_A2_tfrp; // "exagon.A2.tfrp"
  5970. case 'x': // 1 string to match.
  5971. if (memcmp(NameR.data()+11, "orp", 3))
  5972. break;
  5973. return Intrinsic::hexagon_A2_xorp; // "exagon.A2.xorp"
  5974. case 'z': // 2 strings to match.
  5975. if (memcmp(NameR.data()+11, "xt", 2))
  5976. break;
  5977. switch (NameR[13]) {
  5978. default: break;
  5979. case 'b': // 1 string to match.
  5980. return Intrinsic::hexagon_A2_zxtb; // "exagon.A2.zxtb"
  5981. case 'h': // 1 string to match.
  5982. return Intrinsic::hexagon_A2_zxth; // "exagon.A2.zxth"
  5983. }
  5984. break;
  5985. }
  5986. break;
  5987. case '4': // 2 strings to match.
  5988. if (NameR[9] != '.')
  5989. break;
  5990. switch (NameR[10]) {
  5991. default: break;
  5992. case 'a': // 1 string to match.
  5993. if (memcmp(NameR.data()+11, "ndn", 3))
  5994. break;
  5995. return Intrinsic::hexagon_A4_andn; // "exagon.A4.andn"
  5996. case 'o': // 1 string to match.
  5997. if (memcmp(NameR.data()+11, "rnp", 3))
  5998. break;
  5999. return Intrinsic::hexagon_A4_ornp; // "exagon.A4.ornp"
  6000. }
  6001. break;
  6002. }
  6003. break;
  6004. case 'C': // 5 strings to match.
  6005. if (memcmp(NameR.data()+8, "2.", 2))
  6006. break;
  6007. switch (NameR[10]) {
  6008. default: break;
  6009. case 'a': // 3 strings to match.
  6010. switch (NameR[11]) {
  6011. default: break;
  6012. case 'l': // 1 string to match.
  6013. if (memcmp(NameR.data()+12, "l8", 2))
  6014. break;
  6015. return Intrinsic::hexagon_C2_all8; // "exagon.C2.all8"
  6016. case 'n': // 2 strings to match.
  6017. switch (NameR[12]) {
  6018. default: break;
  6019. case 'd': // 1 string to match.
  6020. if (NameR[13] != 'n')
  6021. break;
  6022. return Intrinsic::hexagon_C2_andn; // "exagon.C2.andn"
  6023. case 'y': // 1 string to match.
  6024. if (NameR[13] != '8')
  6025. break;
  6026. return Intrinsic::hexagon_C2_any8; // "exagon.C2.any8"
  6027. }
  6028. break;
  6029. }
  6030. break;
  6031. case 'm': // 1 string to match.
  6032. if (memcmp(NameR.data()+11, "ask", 3))
  6033. break;
  6034. return Intrinsic::hexagon_C2_mask; // "exagon.C2.mask"
  6035. case 'v': // 1 string to match.
  6036. if (memcmp(NameR.data()+11, "mux", 3))
  6037. break;
  6038. return Intrinsic::hexagon_C2_vmux; // "exagon.C2.vmux"
  6039. }
  6040. break;
  6041. case 'M': // 3 strings to match.
  6042. if (memcmp(NameR.data()+8, "2.", 2))
  6043. break;
  6044. switch (NameR[10]) {
  6045. default: break;
  6046. case 'a': // 1 string to match.
  6047. if (memcmp(NameR.data()+11, "cci", 3))
  6048. break;
  6049. return Intrinsic::hexagon_M2_acci; // "exagon.M2.acci"
  6050. case 'm': // 2 strings to match.
  6051. switch (NameR[11]) {
  6052. default: break;
  6053. case 'a': // 1 string to match.
  6054. if (memcmp(NameR.data()+12, "ci", 2))
  6055. break;
  6056. return Intrinsic::hexagon_M2_maci; // "exagon.M2.maci"
  6057. case 'p': // 1 string to match.
  6058. if (memcmp(NameR.data()+12, "yi", 2))
  6059. break;
  6060. return Intrinsic::hexagon_M2_mpyi; // "exagon.M2.mpyi"
  6061. }
  6062. break;
  6063. }
  6064. break;
  6065. case 'S': // 8 strings to match.
  6066. switch (NameR[8]) {
  6067. default: break;
  6068. case '2': // 7 strings to match.
  6069. if (NameR[9] != '.')
  6070. break;
  6071. switch (NameR[10]) {
  6072. default: break;
  6073. case 'b': // 1 string to match.
  6074. if (memcmp(NameR.data()+11, "rev", 3))
  6075. break;
  6076. return Intrinsic::hexagon_S2_brev; // "exagon.S2.brev"
  6077. case 'c': // 5 strings to match.
  6078. switch (NameR[11]) {
  6079. default: break;
  6080. case 'l': // 3 strings to match.
  6081. switch (NameR[12]) {
  6082. default: break;
  6083. case '0': // 1 string to match.
  6084. if (NameR[13] != 'p')
  6085. break;
  6086. return Intrinsic::hexagon_S2_cl0p; // "exagon.S2.cl0p"
  6087. case '1': // 1 string to match.
  6088. if (NameR[13] != 'p')
  6089. break;
  6090. return Intrinsic::hexagon_S2_cl1p; // "exagon.S2.cl1p"
  6091. case 'b': // 1 string to match.
  6092. if (NameR[13] != 'p')
  6093. break;
  6094. return Intrinsic::hexagon_S2_clbp; // "exagon.S2.clbp"
  6095. }
  6096. break;
  6097. case 't': // 2 strings to match.
  6098. switch (NameR[12]) {
  6099. default: break;
  6100. case '0': // 1 string to match.
  6101. if (NameR[13] != 'p')
  6102. break;
  6103. return Intrinsic::hexagon_S2_ct0p; // "exagon.S2.ct0p"
  6104. case '1': // 1 string to match.
  6105. if (NameR[13] != 'p')
  6106. break;
  6107. return Intrinsic::hexagon_S2_ct1p; // "exagon.S2.ct1p"
  6108. }
  6109. break;
  6110. }
  6111. break;
  6112. case 'l': // 1 string to match.
  6113. if (memcmp(NameR.data()+11, "fsp", 3))
  6114. break;
  6115. return Intrinsic::hexagon_S2_lfsp; // "exagon.S2.lfsp"
  6116. }
  6117. break;
  6118. case '4': // 1 string to match.
  6119. if (memcmp(NameR.data()+9, ".lsli", 5))
  6120. break;
  6121. return Intrinsic::hexagon_S4_lsli; // "exagon.S4.lsli"
  6122. }
  6123. break;
  6124. }
  6125. break;
  6126. case 15: // 58 strings to match.
  6127. if (memcmp(NameR.data()+0, "exagon.", 7))
  6128. break;
  6129. switch (NameR[7]) {
  6130. default: break;
  6131. case 'A': // 27 strings to match.
  6132. switch (NameR[8]) {
  6133. default: break;
  6134. case '2': // 26 strings to match.
  6135. if (NameR[9] != '.')
  6136. break;
  6137. switch (NameR[10]) {
  6138. default: break;
  6139. case 'a': // 2 strings to match.
  6140. switch (NameR[11]) {
  6141. default: break;
  6142. case 'd': // 1 string to match.
  6143. if (memcmp(NameR.data()+12, "dsp", 3))
  6144. break;
  6145. return Intrinsic::hexagon_A2_addsp; // "exagon.A2.addsp"
  6146. case 'n': // 1 string to match.
  6147. if (memcmp(NameR.data()+12, "dir", 3))
  6148. break;
  6149. return Intrinsic::hexagon_A2_andir; // "exagon.A2.andir"
  6150. }
  6151. break;
  6152. case 'm': // 2 strings to match.
  6153. switch (NameR[11]) {
  6154. default: break;
  6155. case 'a': // 1 string to match.
  6156. if (memcmp(NameR.data()+12, "xup", 3))
  6157. break;
  6158. return Intrinsic::hexagon_A2_maxup; // "exagon.A2.maxup"
  6159. case 'i': // 1 string to match.
  6160. if (memcmp(NameR.data()+12, "nup", 3))
  6161. break;
  6162. return Intrinsic::hexagon_A2_minup; // "exagon.A2.minup"
  6163. }
  6164. break;
  6165. case 's': // 3 strings to match.
  6166. switch (NameR[11]) {
  6167. default: break;
  6168. case 'a': // 2 strings to match.
  6169. if (memcmp(NameR.data()+12, "tu", 2))
  6170. break;
  6171. switch (NameR[14]) {
  6172. default: break;
  6173. case 'b': // 1 string to match.
  6174. return Intrinsic::hexagon_A2_satub; // "exagon.A2.satub"
  6175. case 'h': // 1 string to match.
  6176. return Intrinsic::hexagon_A2_satuh; // "exagon.A2.satuh"
  6177. }
  6178. break;
  6179. case 'u': // 1 string to match.
  6180. if (memcmp(NameR.data()+12, "bri", 3))
  6181. break;
  6182. return Intrinsic::hexagon_A2_subri; // "exagon.A2.subri"
  6183. }
  6184. break;
  6185. case 't': // 4 strings to match.
  6186. if (memcmp(NameR.data()+11, "fr", 2))
  6187. break;
  6188. switch (NameR[13]) {
  6189. default: break;
  6190. case 'i': // 2 strings to match.
  6191. switch (NameR[14]) {
  6192. default: break;
  6193. case 'h': // 1 string to match.
  6194. return Intrinsic::hexagon_A2_tfrih; // "exagon.A2.tfrih"
  6195. case 'l': // 1 string to match.
  6196. return Intrinsic::hexagon_A2_tfril; // "exagon.A2.tfril"
  6197. }
  6198. break;
  6199. case 'p': // 1 string to match.
  6200. if (NameR[14] != 'i')
  6201. break;
  6202. return Intrinsic::hexagon_A2_tfrpi; // "exagon.A2.tfrpi"
  6203. case 's': // 1 string to match.
  6204. if (NameR[14] != 'i')
  6205. break;
  6206. return Intrinsic::hexagon_A2_tfrsi; // "exagon.A2.tfrsi"
  6207. }
  6208. break;
  6209. case 'v': // 15 strings to match.
  6210. switch (NameR[11]) {
  6211. default: break;
  6212. case 'a': // 6 strings to match.
  6213. switch (NameR[12]) {
  6214. default: break;
  6215. case 'b': // 2 strings to match.
  6216. if (NameR[13] != 's')
  6217. break;
  6218. switch (NameR[14]) {
  6219. default: break;
  6220. case 'h': // 1 string to match.
  6221. return Intrinsic::hexagon_A2_vabsh; // "exagon.A2.vabsh"
  6222. case 'w': // 1 string to match.
  6223. return Intrinsic::hexagon_A2_vabsw; // "exagon.A2.vabsw"
  6224. }
  6225. break;
  6226. case 'd': // 2 strings to match.
  6227. if (NameR[13] != 'd')
  6228. break;
  6229. switch (NameR[14]) {
  6230. default: break;
  6231. case 'h': // 1 string to match.
  6232. return Intrinsic::hexagon_A2_vaddh; // "exagon.A2.vaddh"
  6233. case 'w': // 1 string to match.
  6234. return Intrinsic::hexagon_A2_vaddw; // "exagon.A2.vaddw"
  6235. }
  6236. break;
  6237. case 'v': // 2 strings to match.
  6238. if (NameR[13] != 'g')
  6239. break;
  6240. switch (NameR[14]) {
  6241. default: break;
  6242. case 'h': // 1 string to match.
  6243. return Intrinsic::hexagon_A2_vavgh; // "exagon.A2.vavgh"
  6244. case 'w': // 1 string to match.
  6245. return Intrinsic::hexagon_A2_vavgw; // "exagon.A2.vavgw"
  6246. }
  6247. break;
  6248. }
  6249. break;
  6250. case 'c': // 1 string to match.
  6251. if (memcmp(NameR.data()+12, "onj", 3))
  6252. break;
  6253. return Intrinsic::hexagon_A2_vconj; // "exagon.A2.vconj"
  6254. case 'm': // 6 strings to match.
  6255. switch (NameR[12]) {
  6256. default: break;
  6257. case 'a': // 3 strings to match.
  6258. if (NameR[13] != 'x')
  6259. break;
  6260. switch (NameR[14]) {
  6261. default: break;
  6262. case 'b': // 1 string to match.
  6263. return Intrinsic::hexagon_A2_vmaxb; // "exagon.A2.vmaxb"
  6264. case 'h': // 1 string to match.
  6265. return Intrinsic::hexagon_A2_vmaxh; // "exagon.A2.vmaxh"
  6266. case 'w': // 1 string to match.
  6267. return Intrinsic::hexagon_A2_vmaxw; // "exagon.A2.vmaxw"
  6268. }
  6269. break;
  6270. case 'i': // 3 strings to match.
  6271. if (NameR[13] != 'n')
  6272. break;
  6273. switch (NameR[14]) {
  6274. default: break;
  6275. case 'b': // 1 string to match.
  6276. return Intrinsic::hexagon_A2_vminb; // "exagon.A2.vminb"
  6277. case 'h': // 1 string to match.
  6278. return Intrinsic::hexagon_A2_vminh; // "exagon.A2.vminh"
  6279. case 'w': // 1 string to match.
  6280. return Intrinsic::hexagon_A2_vminw; // "exagon.A2.vminw"
  6281. }
  6282. break;
  6283. }
  6284. break;
  6285. case 's': // 2 strings to match.
  6286. if (memcmp(NameR.data()+12, "ub", 2))
  6287. break;
  6288. switch (NameR[14]) {
  6289. default: break;
  6290. case 'h': // 1 string to match.
  6291. return Intrinsic::hexagon_A2_vsubh; // "exagon.A2.vsubh"
  6292. case 'w': // 1 string to match.
  6293. return Intrinsic::hexagon_A2_vsubw; // "exagon.A2.vsubw"
  6294. }
  6295. break;
  6296. }
  6297. break;
  6298. }
  6299. break;
  6300. case '4': // 1 string to match.
  6301. if (memcmp(NameR.data()+9, ".andnp", 6))
  6302. break;
  6303. return Intrinsic::hexagon_A4_andnp; // "exagon.A4.andnp"
  6304. }
  6305. break;
  6306. case 'C': // 9 strings to match.
  6307. switch (NameR[8]) {
  6308. default: break;
  6309. case '2': // 8 strings to match.
  6310. if (NameR[9] != '.')
  6311. break;
  6312. switch (NameR[10]) {
  6313. default: break;
  6314. case 'c': // 3 strings to match.
  6315. if (memcmp(NameR.data()+11, "mp", 2))
  6316. break;
  6317. switch (NameR[13]) {
  6318. default: break;
  6319. case 'e': // 1 string to match.
  6320. if (NameR[14] != 'q')
  6321. break;
  6322. return Intrinsic::hexagon_C2_cmpeq; // "exagon.C2.cmpeq"
  6323. case 'g': // 1 string to match.
  6324. if (NameR[14] != 't')
  6325. break;
  6326. return Intrinsic::hexagon_C2_cmpgt; // "exagon.C2.cmpgt"
  6327. case 'l': // 1 string to match.
  6328. if (NameR[14] != 't')
  6329. break;
  6330. return Intrinsic::hexagon_C2_cmplt; // "exagon.C2.cmplt"
  6331. }
  6332. break;
  6333. case 'm': // 3 strings to match.
  6334. if (memcmp(NameR.data()+11, "ux", 2))
  6335. break;
  6336. switch (NameR[13]) {
  6337. default: break;
  6338. case 'i': // 2 strings to match.
  6339. switch (NameR[14]) {
  6340. default: break;
  6341. case 'i': // 1 string to match.
  6342. return Intrinsic::hexagon_C2_muxii; // "exagon.C2.muxii"
  6343. case 'r': // 1 string to match.
  6344. return Intrinsic::hexagon_C2_muxir; // "exagon.C2.muxir"
  6345. }
  6346. break;
  6347. case 'r': // 1 string to match.
  6348. if (NameR[14] != 'i')
  6349. break;
  6350. return Intrinsic::hexagon_C2_muxri; // "exagon.C2.muxri"
  6351. }
  6352. break;
  6353. case 't': // 2 strings to match.
  6354. if (memcmp(NameR.data()+11, "fr", 2))
  6355. break;
  6356. switch (NameR[13]) {
  6357. default: break;
  6358. case 'p': // 1 string to match.
  6359. if (NameR[14] != 'r')
  6360. break;
  6361. return Intrinsic::hexagon_C2_tfrpr; // "exagon.C2.tfrpr"
  6362. case 'r': // 1 string to match.
  6363. if (NameR[14] != 'p')
  6364. break;
  6365. return Intrinsic::hexagon_C2_tfrrp; // "exagon.C2.tfrrp"
  6366. }
  6367. break;
  6368. }
  6369. break;
  6370. case '4': // 1 string to match.
  6371. if (memcmp(NameR.data()+9, ".or.or", 6))
  6372. break;
  6373. return Intrinsic::hexagon_C4_or_or; // "exagon.C4.or.or"
  6374. }
  6375. break;
  6376. case 'F': // 14 strings to match.
  6377. if (memcmp(NameR.data()+8, "2.", 2))
  6378. break;
  6379. switch (NameR[10]) {
  6380. default: break;
  6381. case 'd': // 7 strings to match.
  6382. if (NameR[11] != 'f')
  6383. break;
  6384. switch (NameR[12]) {
  6385. default: break;
  6386. case 'a': // 1 string to match.
  6387. if (memcmp(NameR.data()+13, "dd", 2))
  6388. break;
  6389. return Intrinsic::hexagon_F2_dfadd; // "exagon.F2.dfadd"
  6390. case 'f': // 2 strings to match.
  6391. if (NameR[13] != 'm')
  6392. break;
  6393. switch (NameR[14]) {
  6394. default: break;
  6395. case 'a': // 1 string to match.
  6396. return Intrinsic::hexagon_F2_dffma; // "exagon.F2.dffma"
  6397. case 's': // 1 string to match.
  6398. return Intrinsic::hexagon_F2_dffms; // "exagon.F2.dffms"
  6399. }
  6400. break;
  6401. case 'm': // 3 strings to match.
  6402. switch (NameR[13]) {
  6403. default: break;
  6404. case 'a': // 1 string to match.
  6405. if (NameR[14] != 'x')
  6406. break;
  6407. return Intrinsic::hexagon_F2_dfmax; // "exagon.F2.dfmax"
  6408. case 'i': // 1 string to match.
  6409. if (NameR[14] != 'n')
  6410. break;
  6411. return Intrinsic::hexagon_F2_dfmin; // "exagon.F2.dfmin"
  6412. case 'p': // 1 string to match.
  6413. if (NameR[14] != 'y')
  6414. break;
  6415. return Intrinsic::hexagon_F2_dfmpy; // "exagon.F2.dfmpy"
  6416. }
  6417. break;
  6418. case 's': // 1 string to match.
  6419. if (memcmp(NameR.data()+13, "ub", 2))
  6420. break;
  6421. return Intrinsic::hexagon_F2_dfsub; // "exagon.F2.dfsub"
  6422. }
  6423. break;
  6424. case 's': // 7 strings to match.
  6425. if (NameR[11] != 'f')
  6426. break;
  6427. switch (NameR[12]) {
  6428. default: break;
  6429. case 'a': // 1 string to match.
  6430. if (memcmp(NameR.data()+13, "dd", 2))
  6431. break;
  6432. return Intrinsic::hexagon_F2_sfadd; // "exagon.F2.sfadd"
  6433. case 'f': // 2 strings to match.
  6434. if (NameR[13] != 'm')
  6435. break;
  6436. switch (NameR[14]) {
  6437. default: break;
  6438. case 'a': // 1 string to match.
  6439. return Intrinsic::hexagon_F2_sffma; // "exagon.F2.sffma"
  6440. case 's': // 1 string to match.
  6441. return Intrinsic::hexagon_F2_sffms; // "exagon.F2.sffms"
  6442. }
  6443. break;
  6444. case 'm': // 3 strings to match.
  6445. switch (NameR[13]) {
  6446. default: break;
  6447. case 'a': // 1 string to match.
  6448. if (NameR[14] != 'x')
  6449. break;
  6450. return Intrinsic::hexagon_F2_sfmax; // "exagon.F2.sfmax"
  6451. case 'i': // 1 string to match.
  6452. if (NameR[14] != 'n')
  6453. break;
  6454. return Intrinsic::hexagon_F2_sfmin; // "exagon.F2.sfmin"
  6455. case 'p': // 1 string to match.
  6456. if (NameR[14] != 'y')
  6457. break;
  6458. return Intrinsic::hexagon_F2_sfmpy; // "exagon.F2.sfmpy"
  6459. }
  6460. break;
  6461. case 's': // 1 string to match.
  6462. if (memcmp(NameR.data()+13, "ub", 2))
  6463. break;
  6464. return Intrinsic::hexagon_F2_sfsub; // "exagon.F2.sfsub"
  6465. }
  6466. break;
  6467. }
  6468. break;
  6469. case 'M': // 6 strings to match.
  6470. switch (NameR[8]) {
  6471. default: break;
  6472. case '2': // 4 strings to match.
  6473. if (NameR[9] != '.')
  6474. break;
  6475. switch (NameR[10]) {
  6476. default: break;
  6477. case 'a': // 1 string to match.
  6478. if (memcmp(NameR.data()+11, "ccii", 4))
  6479. break;
  6480. return Intrinsic::hexagon_M2_accii; // "exagon.M2.accii"
  6481. case 'm': // 1 string to match.
  6482. if (memcmp(NameR.data()+11, "pyui", 4))
  6483. break;
  6484. return Intrinsic::hexagon_M2_mpyui; // "exagon.M2.mpyui"
  6485. case 'n': // 1 string to match.
  6486. if (memcmp(NameR.data()+11, "acci", 4))
  6487. break;
  6488. return Intrinsic::hexagon_M2_nacci; // "exagon.M2.nacci"
  6489. case 'v': // 1 string to match.
  6490. if (memcmp(NameR.data()+11, "mac2", 4))
  6491. break;
  6492. return Intrinsic::hexagon_M2_vmac2; // "exagon.M2.vmac2"
  6493. }
  6494. break;
  6495. case '4': // 2 strings to match.
  6496. if (NameR[9] != '.')
  6497. break;
  6498. switch (NameR[10]) {
  6499. default: break;
  6500. case 'o': // 1 string to match.
  6501. if (memcmp(NameR.data()+11, "r.or", 4))
  6502. break;
  6503. return Intrinsic::hexagon_M4_or_or; // "exagon.M4.or.or"
  6504. case 'p': // 1 string to match.
  6505. if (memcmp(NameR.data()+11, "mpyw", 4))
  6506. break;
  6507. return Intrinsic::hexagon_M4_pmpyw; // "exagon.M4.pmpyw"
  6508. }
  6509. break;
  6510. }
  6511. break;
  6512. case 'S': // 1 string to match.
  6513. if (memcmp(NameR.data()+8, "2.brevp", 7))
  6514. break;
  6515. return Intrinsic::hexagon_S2_brevp; // "exagon.S2.brevp"
  6516. case 'c': // 1 string to match.
  6517. if (memcmp(NameR.data()+8, "irc.ldd", 7))
  6518. break;
  6519. return Intrinsic::hexagon_circ_ldd; // "exagon.circ.ldd"
  6520. }
  6521. break;
  6522. case 16: // 70 strings to match.
  6523. if (memcmp(NameR.data()+0, "exagon.", 7))
  6524. break;
  6525. switch (NameR[7]) {
  6526. default: break;
  6527. case 'A': // 35 strings to match.
  6528. switch (NameR[8]) {
  6529. default: break;
  6530. case '2': // 26 strings to match.
  6531. if (NameR[9] != '.')
  6532. break;
  6533. switch (NameR[10]) {
  6534. default: break;
  6535. case 'a': // 2 strings to match.
  6536. switch (NameR[11]) {
  6537. default: break;
  6538. case 'b': // 1 string to match.
  6539. if (memcmp(NameR.data()+12, "ssat", 4))
  6540. break;
  6541. return Intrinsic::hexagon_A2_abssat; // "exagon.A2.abssat"
  6542. case 'd': // 1 string to match.
  6543. if (memcmp(NameR.data()+12, "dsat", 4))
  6544. break;
  6545. return Intrinsic::hexagon_A2_addsat; // "exagon.A2.addsat"
  6546. }
  6547. break;
  6548. case 'n': // 1 string to match.
  6549. if (memcmp(NameR.data()+11, "egsat", 5))
  6550. break;
  6551. return Intrinsic::hexagon_A2_negsat; // "exagon.A2.negsat"
  6552. case 's': // 4 strings to match.
  6553. switch (NameR[11]) {
  6554. default: break;
  6555. case 'u': // 1 string to match.
  6556. if (memcmp(NameR.data()+12, "bsat", 4))
  6557. break;
  6558. return Intrinsic::hexagon_A2_subsat; // "exagon.A2.subsat"
  6559. case 'v': // 3 strings to match.
  6560. switch (NameR[12]) {
  6561. default: break;
  6562. case 'a': // 2 strings to match.
  6563. switch (NameR[13]) {
  6564. default: break;
  6565. case 'd': // 1 string to match.
  6566. if (memcmp(NameR.data()+14, "dh", 2))
  6567. break;
  6568. return Intrinsic::hexagon_A2_svaddh; // "exagon.A2.svaddh"
  6569. case 'v': // 1 string to match.
  6570. if (memcmp(NameR.data()+14, "gh", 2))
  6571. break;
  6572. return Intrinsic::hexagon_A2_svavgh; // "exagon.A2.svavgh"
  6573. }
  6574. break;
  6575. case 's': // 1 string to match.
  6576. if (memcmp(NameR.data()+13, "ubh", 3))
  6577. break;
  6578. return Intrinsic::hexagon_A2_svsubh; // "exagon.A2.svsubh"
  6579. }
  6580. break;
  6581. }
  6582. break;
  6583. case 'v': // 19 strings to match.
  6584. switch (NameR[11]) {
  6585. default: break;
  6586. case 'a': // 8 strings to match.
  6587. switch (NameR[12]) {
  6588. default: break;
  6589. case 'd': // 3 strings to match.
  6590. if (NameR[13] != 'd')
  6591. break;
  6592. switch (NameR[14]) {
  6593. default: break;
  6594. case 'h': // 1 string to match.
  6595. if (NameR[15] != 's')
  6596. break;
  6597. return Intrinsic::hexagon_A2_vaddhs; // "exagon.A2.vaddhs"
  6598. case 'u': // 1 string to match.
  6599. if (NameR[15] != 'b')
  6600. break;
  6601. return Intrinsic::hexagon_A2_vaddub; // "exagon.A2.vaddub"
  6602. case 'w': // 1 string to match.
  6603. if (NameR[15] != 's')
  6604. break;
  6605. return Intrinsic::hexagon_A2_vaddws; // "exagon.A2.vaddws"
  6606. }
  6607. break;
  6608. case 'v': // 5 strings to match.
  6609. if (NameR[13] != 'g')
  6610. break;
  6611. switch (NameR[14]) {
  6612. default: break;
  6613. case 'h': // 1 string to match.
  6614. if (NameR[15] != 'r')
  6615. break;
  6616. return Intrinsic::hexagon_A2_vavghr; // "exagon.A2.vavghr"
  6617. case 'u': // 3 strings to match.
  6618. switch (NameR[15]) {
  6619. default: break;
  6620. case 'b': // 1 string to match.
  6621. return Intrinsic::hexagon_A2_vavgub; // "exagon.A2.vavgub"
  6622. case 'h': // 1 string to match.
  6623. return Intrinsic::hexagon_A2_vavguh; // "exagon.A2.vavguh"
  6624. case 'w': // 1 string to match.
  6625. return Intrinsic::hexagon_A2_vavguw; // "exagon.A2.vavguw"
  6626. }
  6627. break;
  6628. case 'w': // 1 string to match.
  6629. if (NameR[15] != 'r')
  6630. break;
  6631. return Intrinsic::hexagon_A2_vavgwr; // "exagon.A2.vavgwr"
  6632. }
  6633. break;
  6634. }
  6635. break;
  6636. case 'm': // 6 strings to match.
  6637. switch (NameR[12]) {
  6638. default: break;
  6639. case 'a': // 3 strings to match.
  6640. if (memcmp(NameR.data()+13, "xu", 2))
  6641. break;
  6642. switch (NameR[15]) {
  6643. default: break;
  6644. case 'b': // 1 string to match.
  6645. return Intrinsic::hexagon_A2_vmaxub; // "exagon.A2.vmaxub"
  6646. case 'h': // 1 string to match.
  6647. return Intrinsic::hexagon_A2_vmaxuh; // "exagon.A2.vmaxuh"
  6648. case 'w': // 1 string to match.
  6649. return Intrinsic::hexagon_A2_vmaxuw; // "exagon.A2.vmaxuw"
  6650. }
  6651. break;
  6652. case 'i': // 3 strings to match.
  6653. if (memcmp(NameR.data()+13, "nu", 2))
  6654. break;
  6655. switch (NameR[15]) {
  6656. default: break;
  6657. case 'b': // 1 string to match.
  6658. return Intrinsic::hexagon_A2_vminub; // "exagon.A2.vminub"
  6659. case 'h': // 1 string to match.
  6660. return Intrinsic::hexagon_A2_vminuh; // "exagon.A2.vminuh"
  6661. case 'w': // 1 string to match.
  6662. return Intrinsic::hexagon_A2_vminuw; // "exagon.A2.vminuw"
  6663. }
  6664. break;
  6665. }
  6666. break;
  6667. case 'n': // 2 strings to match.
  6668. if (memcmp(NameR.data()+12, "avg", 3))
  6669. break;
  6670. switch (NameR[15]) {
  6671. default: break;
  6672. case 'h': // 1 string to match.
  6673. return Intrinsic::hexagon_A2_vnavgh; // "exagon.A2.vnavgh"
  6674. case 'w': // 1 string to match.
  6675. return Intrinsic::hexagon_A2_vnavgw; // "exagon.A2.vnavgw"
  6676. }
  6677. break;
  6678. case 's': // 3 strings to match.
  6679. if (memcmp(NameR.data()+12, "ub", 2))
  6680. break;
  6681. switch (NameR[14]) {
  6682. default: break;
  6683. case 'h': // 1 string to match.
  6684. if (NameR[15] != 's')
  6685. break;
  6686. return Intrinsic::hexagon_A2_vsubhs; // "exagon.A2.vsubhs"
  6687. case 'u': // 1 string to match.
  6688. if (NameR[15] != 'b')
  6689. break;
  6690. return Intrinsic::hexagon_A2_vsubub; // "exagon.A2.vsubub"
  6691. case 'w': // 1 string to match.
  6692. if (NameR[15] != 's')
  6693. break;
  6694. return Intrinsic::hexagon_A2_vsubws; // "exagon.A2.vsubws"
  6695. }
  6696. break;
  6697. }
  6698. break;
  6699. }
  6700. break;
  6701. case '4': // 9 strings to match.
  6702. if (NameR[9] != '.')
  6703. break;
  6704. switch (NameR[10]) {
  6705. default: break;
  6706. case 'c': // 4 strings to match.
  6707. if (memcmp(NameR.data()+11, "mp", 2))
  6708. break;
  6709. switch (NameR[13]) {
  6710. default: break;
  6711. case 'b': // 2 strings to match.
  6712. switch (NameR[14]) {
  6713. default: break;
  6714. case 'e': // 1 string to match.
  6715. if (NameR[15] != 'q')
  6716. break;
  6717. return Intrinsic::hexagon_A4_cmpbeq; // "exagon.A4.cmpbeq"
  6718. case 'g': // 1 string to match.
  6719. if (NameR[15] != 't')
  6720. break;
  6721. return Intrinsic::hexagon_A4_cmpbgt; // "exagon.A4.cmpbgt"
  6722. }
  6723. break;
  6724. case 'h': // 2 strings to match.
  6725. switch (NameR[14]) {
  6726. default: break;
  6727. case 'e': // 1 string to match.
  6728. if (NameR[15] != 'q')
  6729. break;
  6730. return Intrinsic::hexagon_A4_cmpheq; // "exagon.A4.cmpheq"
  6731. case 'g': // 1 string to match.
  6732. if (NameR[15] != 't')
  6733. break;
  6734. return Intrinsic::hexagon_A4_cmphgt; // "exagon.A4.cmphgt"
  6735. }
  6736. break;
  6737. }
  6738. break;
  6739. case 'r': // 1 string to match.
  6740. if (memcmp(NameR.data()+11, "cmpeq", 5))
  6741. break;
  6742. return Intrinsic::hexagon_A4_rcmpeq; // "exagon.A4.rcmpeq"
  6743. case 'v': // 4 strings to match.
  6744. if (memcmp(NameR.data()+11, "rm", 2))
  6745. break;
  6746. switch (NameR[13]) {
  6747. default: break;
  6748. case 'a': // 2 strings to match.
  6749. if (NameR[14] != 'x')
  6750. break;
  6751. switch (NameR[15]) {
  6752. default: break;
  6753. case 'h': // 1 string to match.
  6754. return Intrinsic::hexagon_A4_vrmaxh; // "exagon.A4.vrmaxh"
  6755. case 'w': // 1 string to match.
  6756. return Intrinsic::hexagon_A4_vrmaxw; // "exagon.A4.vrmaxw"
  6757. }
  6758. break;
  6759. case 'i': // 2 strings to match.
  6760. if (NameR[14] != 'n')
  6761. break;
  6762. switch (NameR[15]) {
  6763. default: break;
  6764. case 'h': // 1 string to match.
  6765. return Intrinsic::hexagon_A4_vrminh; // "exagon.A4.vrminh"
  6766. case 'w': // 1 string to match.
  6767. return Intrinsic::hexagon_A4_vrminw; // "exagon.A4.vrminw"
  6768. }
  6769. break;
  6770. }
  6771. break;
  6772. }
  6773. break;
  6774. }
  6775. break;
  6776. case 'C': // 12 strings to match.
  6777. switch (NameR[8]) {
  6778. default: break;
  6779. case '2': // 7 strings to match.
  6780. if (memcmp(NameR.data()+9, ".cmp", 4))
  6781. break;
  6782. switch (NameR[13]) {
  6783. default: break;
  6784. case 'e': // 2 strings to match.
  6785. if (NameR[14] != 'q')
  6786. break;
  6787. switch (NameR[15]) {
  6788. default: break;
  6789. case 'i': // 1 string to match.
  6790. return Intrinsic::hexagon_C2_cmpeqi; // "exagon.C2.cmpeqi"
  6791. case 'p': // 1 string to match.
  6792. return Intrinsic::hexagon_C2_cmpeqp; // "exagon.C2.cmpeqp"
  6793. }
  6794. break;
  6795. case 'g': // 4 strings to match.
  6796. switch (NameR[14]) {
  6797. default: break;
  6798. case 'e': // 1 string to match.
  6799. if (NameR[15] != 'i')
  6800. break;
  6801. return Intrinsic::hexagon_C2_cmpgei; // "exagon.C2.cmpgei"
  6802. case 't': // 3 strings to match.
  6803. switch (NameR[15]) {
  6804. default: break;
  6805. case 'i': // 1 string to match.
  6806. return Intrinsic::hexagon_C2_cmpgti; // "exagon.C2.cmpgti"
  6807. case 'p': // 1 string to match.
  6808. return Intrinsic::hexagon_C2_cmpgtp; // "exagon.C2.cmpgtp"
  6809. case 'u': // 1 string to match.
  6810. return Intrinsic::hexagon_C2_cmpgtu; // "exagon.C2.cmpgtu"
  6811. }
  6812. break;
  6813. }
  6814. break;
  6815. case 'l': // 1 string to match.
  6816. if (memcmp(NameR.data()+14, "tu", 2))
  6817. break;
  6818. return Intrinsic::hexagon_C2_cmpltu; // "exagon.C2.cmpltu"
  6819. }
  6820. break;
  6821. case '4': // 5 strings to match.
  6822. if (NameR[9] != '.')
  6823. break;
  6824. switch (NameR[10]) {
  6825. default: break;
  6826. case 'a': // 1 string to match.
  6827. if (memcmp(NameR.data()+11, "nd.or", 5))
  6828. break;
  6829. return Intrinsic::hexagon_C4_and_or; // "exagon.C4.and.or"
  6830. case 'c': // 2 strings to match.
  6831. if (memcmp(NameR.data()+11, "mp", 2))
  6832. break;
  6833. switch (NameR[13]) {
  6834. default: break;
  6835. case 'l': // 1 string to match.
  6836. if (memcmp(NameR.data()+14, "te", 2))
  6837. break;
  6838. return Intrinsic::hexagon_C4_cmplte; // "exagon.C4.cmplte"
  6839. case 'n': // 1 string to match.
  6840. if (memcmp(NameR.data()+14, "eq", 2))
  6841. break;
  6842. return Intrinsic::hexagon_C4_cmpneq; // "exagon.C4.cmpneq"
  6843. }
  6844. break;
  6845. case 'o': // 2 strings to match.
  6846. if (memcmp(NameR.data()+11, "r.", 2))
  6847. break;
  6848. switch (NameR[13]) {
  6849. default: break;
  6850. case 'a': // 1 string to match.
  6851. if (memcmp(NameR.data()+14, "nd", 2))
  6852. break;
  6853. return Intrinsic::hexagon_C4_or_and; // "exagon.C4.or.and"
  6854. case 'o': // 1 string to match.
  6855. if (memcmp(NameR.data()+14, "rn", 2))
  6856. break;
  6857. return Intrinsic::hexagon_C4_or_orn; // "exagon.C4.or.orn"
  6858. }
  6859. break;
  6860. }
  6861. break;
  6862. }
  6863. break;
  6864. case 'M': // 12 strings to match.
  6865. switch (NameR[8]) {
  6866. default: break;
  6867. case '2': // 7 strings to match.
  6868. if (NameR[9] != '.')
  6869. break;
  6870. switch (NameR[10]) {
  6871. default: break;
  6872. case 'm': // 4 strings to match.
  6873. switch (NameR[11]) {
  6874. default: break;
  6875. case 'a': // 2 strings to match.
  6876. if (memcmp(NameR.data()+12, "csi", 3))
  6877. break;
  6878. switch (NameR[15]) {
  6879. default: break;
  6880. case 'n': // 1 string to match.
  6881. return Intrinsic::hexagon_M2_macsin; // "exagon.M2.macsin"
  6882. case 'p': // 1 string to match.
  6883. return Intrinsic::hexagon_M2_macsip; // "exagon.M2.macsip"
  6884. }
  6885. break;
  6886. case 'p': // 2 strings to match.
  6887. if (NameR[12] != 'y')
  6888. break;
  6889. switch (NameR[13]) {
  6890. default: break;
  6891. case '.': // 1 string to match.
  6892. if (memcmp(NameR.data()+14, "up", 2))
  6893. break;
  6894. return Intrinsic::hexagon_M2_mpy_up; // "exagon.M2.mpy.up"
  6895. case 's': // 1 string to match.
  6896. if (memcmp(NameR.data()+14, "mi", 2))
  6897. break;
  6898. return Intrinsic::hexagon_M2_mpysmi; // "exagon.M2.mpysmi"
  6899. }
  6900. break;
  6901. }
  6902. break;
  6903. case 'n': // 1 string to match.
  6904. if (memcmp(NameR.data()+11, "accii", 5))
  6905. break;
  6906. return Intrinsic::hexagon_M2_naccii; // "exagon.M2.naccii"
  6907. case 's': // 1 string to match.
  6908. if (memcmp(NameR.data()+11, "ubacc", 5))
  6909. break;
  6910. return Intrinsic::hexagon_M2_subacc; // "exagon.M2.subacc"
  6911. case 'v': // 1 string to match.
  6912. if (memcmp(NameR.data()+11, "raddh", 5))
  6913. break;
  6914. return Intrinsic::hexagon_M2_vraddh; // "exagon.M2.vraddh"
  6915. }
  6916. break;
  6917. case '4': // 5 strings to match.
  6918. if (NameR[9] != '.')
  6919. break;
  6920. switch (NameR[10]) {
  6921. default: break;
  6922. case 'a': // 1 string to match.
  6923. if (memcmp(NameR.data()+11, "nd.or", 5))
  6924. break;
  6925. return Intrinsic::hexagon_M4_and_or; // "exagon.M4.and.or"
  6926. case 'o': // 2 strings to match.
  6927. if (memcmp(NameR.data()+11, "r.", 2))
  6928. break;
  6929. switch (NameR[13]) {
  6930. default: break;
  6931. case 'a': // 1 string to match.
  6932. if (memcmp(NameR.data()+14, "nd", 2))
  6933. break;
  6934. return Intrinsic::hexagon_M4_or_and; // "exagon.M4.or.and"
  6935. case 'x': // 1 string to match.
  6936. if (memcmp(NameR.data()+14, "or", 2))
  6937. break;
  6938. return Intrinsic::hexagon_M4_or_xor; // "exagon.M4.or.xor"
  6939. }
  6940. break;
  6941. case 'v': // 1 string to match.
  6942. if (memcmp(NameR.data()+11, "pmpyh", 5))
  6943. break;
  6944. return Intrinsic::hexagon_M4_vpmpyh; // "exagon.M4.vpmpyh"
  6945. case 'x': // 1 string to match.
  6946. if (memcmp(NameR.data()+11, "or.or", 5))
  6947. break;
  6948. return Intrinsic::hexagon_M4_xor_or; // "exagon.M4.xor.or"
  6949. }
  6950. break;
  6951. }
  6952. break;
  6953. case 'S': // 11 strings to match.
  6954. switch (NameR[8]) {
  6955. default: break;
  6956. case '2': // 9 strings to match.
  6957. if (NameR[9] != '.')
  6958. break;
  6959. switch (NameR[10]) {
  6960. default: break;
  6961. case 'i': // 1 string to match.
  6962. if (memcmp(NameR.data()+11, "nsert", 5))
  6963. break;
  6964. return Intrinsic::hexagon_S2_insert; // "exagon.S2.insert"
  6965. case 'p': // 1 string to match.
  6966. if (memcmp(NameR.data()+11, "ackhl", 5))
  6967. break;
  6968. return Intrinsic::hexagon_S2_packhl; // "exagon.S2.packhl"
  6969. case 'v': // 7 strings to match.
  6970. switch (NameR[11]) {
  6971. default: break;
  6972. case 'c': // 1 string to match.
  6973. if (memcmp(NameR.data()+12, "negh", 4))
  6974. break;
  6975. return Intrinsic::hexagon_S2_vcnegh; // "exagon.S2.vcnegh"
  6976. case 's': // 4 strings to match.
  6977. switch (NameR[12]) {
  6978. default: break;
  6979. case 'a': // 2 strings to match.
  6980. if (NameR[13] != 't')
  6981. break;
  6982. switch (NameR[14]) {
  6983. default: break;
  6984. case 'h': // 1 string to match.
  6985. if (NameR[15] != 'b')
  6986. break;
  6987. return Intrinsic::hexagon_S2_vsathb; // "exagon.S2.vsathb"
  6988. case 'w': // 1 string to match.
  6989. if (NameR[15] != 'h')
  6990. break;
  6991. return Intrinsic::hexagon_S2_vsatwh; // "exagon.S2.vsatwh"
  6992. }
  6993. break;
  6994. case 'x': // 2 strings to match.
  6995. if (NameR[13] != 't')
  6996. break;
  6997. switch (NameR[14]) {
  6998. default: break;
  6999. case 'b': // 1 string to match.
  7000. if (NameR[15] != 'h')
  7001. break;
  7002. return Intrinsic::hexagon_S2_vsxtbh; // "exagon.S2.vsxtbh"
  7003. case 'h': // 1 string to match.
  7004. if (NameR[15] != 'w')
  7005. break;
  7006. return Intrinsic::hexagon_S2_vsxthw; // "exagon.S2.vsxthw"
  7007. }
  7008. break;
  7009. }
  7010. break;
  7011. case 'z': // 2 strings to match.
  7012. if (memcmp(NameR.data()+12, "xt", 2))
  7013. break;
  7014. switch (NameR[14]) {
  7015. default: break;
  7016. case 'b': // 1 string to match.
  7017. if (NameR[15] != 'h')
  7018. break;
  7019. return Intrinsic::hexagon_S2_vzxtbh; // "exagon.S2.vzxtbh"
  7020. case 'h': // 1 string to match.
  7021. if (NameR[15] != 'w')
  7022. break;
  7023. return Intrinsic::hexagon_S2_vzxthw; // "exagon.S2.vzxthw"
  7024. }
  7025. break;
  7026. }
  7027. break;
  7028. }
  7029. break;
  7030. case '4': // 2 strings to match.
  7031. if (NameR[9] != '.')
  7032. break;
  7033. switch (NameR[10]) {
  7034. default: break;
  7035. case 'o': // 1 string to match.
  7036. if (memcmp(NameR.data()+11, "r.ori", 5))
  7037. break;
  7038. return Intrinsic::hexagon_S4_or_ori; // "exagon.S4.or.ori"
  7039. case 'p': // 1 string to match.
  7040. if (memcmp(NameR.data()+11, "arity", 5))
  7041. break;
  7042. return Intrinsic::hexagon_S4_parity; // "exagon.S4.parity"
  7043. }
  7044. break;
  7045. }
  7046. break;
  7047. }
  7048. break;
  7049. case 17: // 103 strings to match.
  7050. if (memcmp(NameR.data()+0, "exagon.", 7))
  7051. break;
  7052. switch (NameR[7]) {
  7053. default: break;
  7054. case 'A': // 36 strings to match.
  7055. switch (NameR[8]) {
  7056. default: break;
  7057. case '2': // 23 strings to match.
  7058. if (NameR[9] != '.')
  7059. break;
  7060. switch (NameR[10]) {
  7061. default: break;
  7062. case 'a': // 1 string to match.
  7063. if (memcmp(NameR.data()+11, "ddpsat", 6))
  7064. break;
  7065. return Intrinsic::hexagon_A2_addpsat; // "exagon.A2.addpsat"
  7066. case 's': // 4 strings to match.
  7067. if (NameR[11] != 'v')
  7068. break;
  7069. switch (NameR[12]) {
  7070. default: break;
  7071. case 'a': // 2 strings to match.
  7072. switch (NameR[13]) {
  7073. default: break;
  7074. case 'd': // 1 string to match.
  7075. if (memcmp(NameR.data()+14, "dhs", 3))
  7076. break;
  7077. return Intrinsic::hexagon_A2_svaddhs; // "exagon.A2.svaddhs"
  7078. case 'v': // 1 string to match.
  7079. if (memcmp(NameR.data()+14, "ghs", 3))
  7080. break;
  7081. return Intrinsic::hexagon_A2_svavghs; // "exagon.A2.svavghs"
  7082. }
  7083. break;
  7084. case 'n': // 1 string to match.
  7085. if (memcmp(NameR.data()+13, "avgh", 4))
  7086. break;
  7087. return Intrinsic::hexagon_A2_svnavgh; // "exagon.A2.svnavgh"
  7088. case 's': // 1 string to match.
  7089. if (memcmp(NameR.data()+13, "ubhs", 4))
  7090. break;
  7091. return Intrinsic::hexagon_A2_svsubhs; // "exagon.A2.svsubhs"
  7092. }
  7093. break;
  7094. case 'v': // 18 strings to match.
  7095. switch (NameR[11]) {
  7096. default: break;
  7097. case 'a': // 7 strings to match.
  7098. switch (NameR[12]) {
  7099. default: break;
  7100. case 'd': // 2 strings to match.
  7101. if (memcmp(NameR.data()+13, "du", 2))
  7102. break;
  7103. switch (NameR[15]) {
  7104. default: break;
  7105. case 'b': // 1 string to match.
  7106. if (NameR[16] != 's')
  7107. break;
  7108. return Intrinsic::hexagon_A2_vaddubs; // "exagon.A2.vaddubs"
  7109. case 'h': // 1 string to match.
  7110. if (NameR[16] != 's')
  7111. break;
  7112. return Intrinsic::hexagon_A2_vadduhs; // "exagon.A2.vadduhs"
  7113. }
  7114. break;
  7115. case 'v': // 5 strings to match.
  7116. if (NameR[13] != 'g')
  7117. break;
  7118. switch (NameR[14]) {
  7119. default: break;
  7120. case 'h': // 1 string to match.
  7121. if (memcmp(NameR.data()+15, "cr", 2))
  7122. break;
  7123. return Intrinsic::hexagon_A2_vavghcr; // "exagon.A2.vavghcr"
  7124. case 'u': // 3 strings to match.
  7125. switch (NameR[15]) {
  7126. default: break;
  7127. case 'b': // 1 string to match.
  7128. if (NameR[16] != 'r')
  7129. break;
  7130. return Intrinsic::hexagon_A2_vavgubr; // "exagon.A2.vavgubr"
  7131. case 'h': // 1 string to match.
  7132. if (NameR[16] != 'r')
  7133. break;
  7134. return Intrinsic::hexagon_A2_vavguhr; // "exagon.A2.vavguhr"
  7135. case 'w': // 1 string to match.
  7136. if (NameR[16] != 'r')
  7137. break;
  7138. return Intrinsic::hexagon_A2_vavguwr; // "exagon.A2.vavguwr"
  7139. }
  7140. break;
  7141. case 'w': // 1 string to match.
  7142. if (memcmp(NameR.data()+15, "cr", 2))
  7143. break;
  7144. return Intrinsic::hexagon_A2_vavgwcr; // "exagon.A2.vavgwcr"
  7145. }
  7146. break;
  7147. }
  7148. break;
  7149. case 'c': // 5 strings to match.
  7150. if (memcmp(NameR.data()+12, "mp", 2))
  7151. break;
  7152. switch (NameR[14]) {
  7153. default: break;
  7154. case 'b': // 1 string to match.
  7155. if (memcmp(NameR.data()+15, "eq", 2))
  7156. break;
  7157. return Intrinsic::hexagon_A2_vcmpbeq; // "exagon.A2.vcmpbeq"
  7158. case 'h': // 2 strings to match.
  7159. switch (NameR[15]) {
  7160. default: break;
  7161. case 'e': // 1 string to match.
  7162. if (NameR[16] != 'q')
  7163. break;
  7164. return Intrinsic::hexagon_A2_vcmpheq; // "exagon.A2.vcmpheq"
  7165. case 'g': // 1 string to match.
  7166. if (NameR[16] != 't')
  7167. break;
  7168. return Intrinsic::hexagon_A2_vcmphgt; // "exagon.A2.vcmphgt"
  7169. }
  7170. break;
  7171. case 'w': // 2 strings to match.
  7172. switch (NameR[15]) {
  7173. default: break;
  7174. case 'e': // 1 string to match.
  7175. if (NameR[16] != 'q')
  7176. break;
  7177. return Intrinsic::hexagon_A2_vcmpweq; // "exagon.A2.vcmpweq"
  7178. case 'g': // 1 string to match.
  7179. if (NameR[16] != 't')
  7180. break;
  7181. return Intrinsic::hexagon_A2_vcmpwgt; // "exagon.A2.vcmpwgt"
  7182. }
  7183. break;
  7184. }
  7185. break;
  7186. case 'n': // 2 strings to match.
  7187. if (memcmp(NameR.data()+12, "avg", 3))
  7188. break;
  7189. switch (NameR[15]) {
  7190. default: break;
  7191. case 'h': // 1 string to match.
  7192. if (NameR[16] != 'r')
  7193. break;
  7194. return Intrinsic::hexagon_A2_vnavghr; // "exagon.A2.vnavghr"
  7195. case 'w': // 1 string to match.
  7196. if (NameR[16] != 'r')
  7197. break;
  7198. return Intrinsic::hexagon_A2_vnavgwr; // "exagon.A2.vnavgwr"
  7199. }
  7200. break;
  7201. case 'r': // 2 strings to match.
  7202. switch (NameR[12]) {
  7203. default: break;
  7204. case 'a': // 1 string to match.
  7205. if (memcmp(NameR.data()+13, "ddub", 4))
  7206. break;
  7207. return Intrinsic::hexagon_A2_vraddub; // "exagon.A2.vraddub"
  7208. case 's': // 1 string to match.
  7209. if (memcmp(NameR.data()+13, "adub", 4))
  7210. break;
  7211. return Intrinsic::hexagon_A2_vrsadub; // "exagon.A2.vrsadub"
  7212. }
  7213. break;
  7214. case 's': // 2 strings to match.
  7215. if (memcmp(NameR.data()+12, "ubu", 3))
  7216. break;
  7217. switch (NameR[15]) {
  7218. default: break;
  7219. case 'b': // 1 string to match.
  7220. if (NameR[16] != 's')
  7221. break;
  7222. return Intrinsic::hexagon_A2_vsububs; // "exagon.A2.vsububs"
  7223. case 'h': // 1 string to match.
  7224. if (NameR[16] != 's')
  7225. break;
  7226. return Intrinsic::hexagon_A2_vsubuhs; // "exagon.A2.vsubuhs"
  7227. }
  7228. break;
  7229. }
  7230. break;
  7231. }
  7232. break;
  7233. case '4': // 13 strings to match.
  7234. if (NameR[9] != '.')
  7235. break;
  7236. switch (NameR[10]) {
  7237. default: break;
  7238. case 'c': // 6 strings to match.
  7239. if (memcmp(NameR.data()+11, "mp", 2))
  7240. break;
  7241. switch (NameR[13]) {
  7242. default: break;
  7243. case 'b': // 3 strings to match.
  7244. switch (NameR[14]) {
  7245. default: break;
  7246. case 'e': // 1 string to match.
  7247. if (memcmp(NameR.data()+15, "qi", 2))
  7248. break;
  7249. return Intrinsic::hexagon_A4_cmpbeqi; // "exagon.A4.cmpbeqi"
  7250. case 'g': // 2 strings to match.
  7251. if (NameR[15] != 't')
  7252. break;
  7253. switch (NameR[16]) {
  7254. default: break;
  7255. case 'i': // 1 string to match.
  7256. return Intrinsic::hexagon_A4_cmpbgti; // "exagon.A4.cmpbgti"
  7257. case 'u': // 1 string to match.
  7258. return Intrinsic::hexagon_A4_cmpbgtu; // "exagon.A4.cmpbgtu"
  7259. }
  7260. break;
  7261. }
  7262. break;
  7263. case 'h': // 3 strings to match.
  7264. switch (NameR[14]) {
  7265. default: break;
  7266. case 'e': // 1 string to match.
  7267. if (memcmp(NameR.data()+15, "qi", 2))
  7268. break;
  7269. return Intrinsic::hexagon_A4_cmpheqi; // "exagon.A4.cmpheqi"
  7270. case 'g': // 2 strings to match.
  7271. if (NameR[15] != 't')
  7272. break;
  7273. switch (NameR[16]) {
  7274. default: break;
  7275. case 'i': // 1 string to match.
  7276. return Intrinsic::hexagon_A4_cmphgti; // "exagon.A4.cmphgti"
  7277. case 'u': // 1 string to match.
  7278. return Intrinsic::hexagon_A4_cmphgtu; // "exagon.A4.cmphgtu"
  7279. }
  7280. break;
  7281. }
  7282. break;
  7283. }
  7284. break;
  7285. case 'r': // 2 strings to match.
  7286. if (memcmp(NameR.data()+11, "cmp", 3))
  7287. break;
  7288. switch (NameR[14]) {
  7289. default: break;
  7290. case 'e': // 1 string to match.
  7291. if (memcmp(NameR.data()+15, "qi", 2))
  7292. break;
  7293. return Intrinsic::hexagon_A4_rcmpeqi; // "exagon.A4.rcmpeqi"
  7294. case 'n': // 1 string to match.
  7295. if (memcmp(NameR.data()+15, "eq", 2))
  7296. break;
  7297. return Intrinsic::hexagon_A4_rcmpneq; // "exagon.A4.rcmpneq"
  7298. }
  7299. break;
  7300. case 'v': // 5 strings to match.
  7301. switch (NameR[11]) {
  7302. default: break;
  7303. case 'c': // 1 string to match.
  7304. if (memcmp(NameR.data()+12, "mpbgt", 5))
  7305. break;
  7306. return Intrinsic::hexagon_A4_vcmpbgt; // "exagon.A4.vcmpbgt"
  7307. case 'r': // 4 strings to match.
  7308. if (NameR[12] != 'm')
  7309. break;
  7310. switch (NameR[13]) {
  7311. default: break;
  7312. case 'a': // 2 strings to match.
  7313. if (memcmp(NameR.data()+14, "xu", 2))
  7314. break;
  7315. switch (NameR[16]) {
  7316. default: break;
  7317. case 'h': // 1 string to match.
  7318. return Intrinsic::hexagon_A4_vrmaxuh; // "exagon.A4.vrmaxuh"
  7319. case 'w': // 1 string to match.
  7320. return Intrinsic::hexagon_A4_vrmaxuw; // "exagon.A4.vrmaxuw"
  7321. }
  7322. break;
  7323. case 'i': // 2 strings to match.
  7324. if (memcmp(NameR.data()+14, "nu", 2))
  7325. break;
  7326. switch (NameR[16]) {
  7327. default: break;
  7328. case 'h': // 1 string to match.
  7329. return Intrinsic::hexagon_A4_vrminuh; // "exagon.A4.vrminuh"
  7330. case 'w': // 1 string to match.
  7331. return Intrinsic::hexagon_A4_vrminuw; // "exagon.A4.vrminuw"
  7332. }
  7333. break;
  7334. }
  7335. break;
  7336. }
  7337. break;
  7338. }
  7339. break;
  7340. }
  7341. break;
  7342. case 'C': // 12 strings to match.
  7343. switch (NameR[8]) {
  7344. default: break;
  7345. case '2': // 6 strings to match.
  7346. if (NameR[9] != '.')
  7347. break;
  7348. switch (NameR[10]) {
  7349. default: break;
  7350. case 'b': // 2 strings to match.
  7351. if (memcmp(NameR.data()+11, "its", 3))
  7352. break;
  7353. switch (NameR[14]) {
  7354. default: break;
  7355. case 'c': // 1 string to match.
  7356. if (memcmp(NameR.data()+15, "lr", 2))
  7357. break;
  7358. return Intrinsic::hexagon_C2_bitsclr; // "exagon.C2.bitsclr"
  7359. case 's': // 1 string to match.
  7360. if (memcmp(NameR.data()+15, "et", 2))
  7361. break;
  7362. return Intrinsic::hexagon_C2_bitsset; // "exagon.C2.bitsset"
  7363. }
  7364. break;
  7365. case 'c': // 3 strings to match.
  7366. if (memcmp(NameR.data()+11, "mpg", 3))
  7367. break;
  7368. switch (NameR[14]) {
  7369. default: break;
  7370. case 'e': // 1 string to match.
  7371. if (memcmp(NameR.data()+15, "ui", 2))
  7372. break;
  7373. return Intrinsic::hexagon_C2_cmpgeui; // "exagon.C2.cmpgeui"
  7374. case 't': // 2 strings to match.
  7375. if (NameR[15] != 'u')
  7376. break;
  7377. switch (NameR[16]) {
  7378. default: break;
  7379. case 'i': // 1 string to match.
  7380. return Intrinsic::hexagon_C2_cmpgtui; // "exagon.C2.cmpgtui"
  7381. case 'p': // 1 string to match.
  7382. return Intrinsic::hexagon_C2_cmpgtup; // "exagon.C2.cmpgtup"
  7383. }
  7384. break;
  7385. }
  7386. break;
  7387. case 'v': // 1 string to match.
  7388. if (memcmp(NameR.data()+11, "itpack", 6))
  7389. break;
  7390. return Intrinsic::hexagon_C2_vitpack; // "exagon.C2.vitpack"
  7391. }
  7392. break;
  7393. case '4': // 6 strings to match.
  7394. if (NameR[9] != '.')
  7395. break;
  7396. switch (NameR[10]) {
  7397. default: break;
  7398. case 'a': // 2 strings to match.
  7399. if (memcmp(NameR.data()+11, "nd.", 3))
  7400. break;
  7401. switch (NameR[14]) {
  7402. default: break;
  7403. case 'a': // 1 string to match.
  7404. if (memcmp(NameR.data()+15, "nd", 2))
  7405. break;
  7406. return Intrinsic::hexagon_C4_and_and; // "exagon.C4.and.and"
  7407. case 'o': // 1 string to match.
  7408. if (memcmp(NameR.data()+15, "rn", 2))
  7409. break;
  7410. return Intrinsic::hexagon_C4_and_orn; // "exagon.C4.and.orn"
  7411. }
  7412. break;
  7413. case 'c': // 3 strings to match.
  7414. if (memcmp(NameR.data()+11, "mp", 2))
  7415. break;
  7416. switch (NameR[13]) {
  7417. default: break;
  7418. case 'l': // 2 strings to match.
  7419. if (memcmp(NameR.data()+14, "te", 2))
  7420. break;
  7421. switch (NameR[16]) {
  7422. default: break;
  7423. case 'i': // 1 string to match.
  7424. return Intrinsic::hexagon_C4_cmpltei; // "exagon.C4.cmpltei"
  7425. case 'u': // 1 string to match.
  7426. return Intrinsic::hexagon_C4_cmplteu; // "exagon.C4.cmplteu"
  7427. }
  7428. break;
  7429. case 'n': // 1 string to match.
  7430. if (memcmp(NameR.data()+14, "eqi", 3))
  7431. break;
  7432. return Intrinsic::hexagon_C4_cmpneqi; // "exagon.C4.cmpneqi"
  7433. }
  7434. break;
  7435. case 'o': // 1 string to match.
  7436. if (memcmp(NameR.data()+11, "r.andn", 6))
  7437. break;
  7438. return Intrinsic::hexagon_C4_or_andn; // "exagon.C4.or.andn"
  7439. }
  7440. break;
  7441. }
  7442. break;
  7443. case 'F': // 14 strings to match.
  7444. if (memcmp(NameR.data()+8, "2.", 2))
  7445. break;
  7446. switch (NameR[10]) {
  7447. default: break;
  7448. case 'd': // 7 strings to match.
  7449. if (NameR[11] != 'f')
  7450. break;
  7451. switch (NameR[12]) {
  7452. default: break;
  7453. case 'c': // 5 strings to match.
  7454. switch (NameR[13]) {
  7455. default: break;
  7456. case 'l': // 1 string to match.
  7457. if (memcmp(NameR.data()+14, "ass", 3))
  7458. break;
  7459. return Intrinsic::hexagon_F2_dfclass; // "exagon.F2.dfclass"
  7460. case 'm': // 4 strings to match.
  7461. if (NameR[14] != 'p')
  7462. break;
  7463. switch (NameR[15]) {
  7464. default: break;
  7465. case 'e': // 1 string to match.
  7466. if (NameR[16] != 'q')
  7467. break;
  7468. return Intrinsic::hexagon_F2_dfcmpeq; // "exagon.F2.dfcmpeq"
  7469. case 'g': // 2 strings to match.
  7470. switch (NameR[16]) {
  7471. default: break;
  7472. case 'e': // 1 string to match.
  7473. return Intrinsic::hexagon_F2_dfcmpge; // "exagon.F2.dfcmpge"
  7474. case 't': // 1 string to match.
  7475. return Intrinsic::hexagon_F2_dfcmpgt; // "exagon.F2.dfcmpgt"
  7476. }
  7477. break;
  7478. case 'u': // 1 string to match.
  7479. if (NameR[16] != 'o')
  7480. break;
  7481. return Intrinsic::hexagon_F2_dfcmpuo; // "exagon.F2.dfcmpuo"
  7482. }
  7483. break;
  7484. }
  7485. break;
  7486. case 'i': // 2 strings to match.
  7487. if (memcmp(NameR.data()+13, "mm.", 3))
  7488. break;
  7489. switch (NameR[16]) {
  7490. default: break;
  7491. case 'n': // 1 string to match.
  7492. return Intrinsic::hexagon_F2_dfimm_n; // "exagon.F2.dfimm.n"
  7493. case 'p': // 1 string to match.
  7494. return Intrinsic::hexagon_F2_dfimm_p; // "exagon.F2.dfimm.p"
  7495. }
  7496. break;
  7497. }
  7498. break;
  7499. case 's': // 7 strings to match.
  7500. if (NameR[11] != 'f')
  7501. break;
  7502. switch (NameR[12]) {
  7503. default: break;
  7504. case 'c': // 5 strings to match.
  7505. switch (NameR[13]) {
  7506. default: break;
  7507. case 'l': // 1 string to match.
  7508. if (memcmp(NameR.data()+14, "ass", 3))
  7509. break;
  7510. return Intrinsic::hexagon_F2_sfclass; // "exagon.F2.sfclass"
  7511. case 'm': // 4 strings to match.
  7512. if (NameR[14] != 'p')
  7513. break;
  7514. switch (NameR[15]) {
  7515. default: break;
  7516. case 'e': // 1 string to match.
  7517. if (NameR[16] != 'q')
  7518. break;
  7519. return Intrinsic::hexagon_F2_sfcmpeq; // "exagon.F2.sfcmpeq"
  7520. case 'g': // 2 strings to match.
  7521. switch (NameR[16]) {
  7522. default: break;
  7523. case 'e': // 1 string to match.
  7524. return Intrinsic::hexagon_F2_sfcmpge; // "exagon.F2.sfcmpge"
  7525. case 't': // 1 string to match.
  7526. return Intrinsic::hexagon_F2_sfcmpgt; // "exagon.F2.sfcmpgt"
  7527. }
  7528. break;
  7529. case 'u': // 1 string to match.
  7530. if (NameR[16] != 'o')
  7531. break;
  7532. return Intrinsic::hexagon_F2_sfcmpuo; // "exagon.F2.sfcmpuo"
  7533. }
  7534. break;
  7535. }
  7536. break;
  7537. case 'i': // 2 strings to match.
  7538. if (memcmp(NameR.data()+13, "mm.", 3))
  7539. break;
  7540. switch (NameR[16]) {
  7541. default: break;
  7542. case 'n': // 1 string to match.
  7543. return Intrinsic::hexagon_F2_sfimm_n; // "exagon.F2.sfimm.n"
  7544. case 'p': // 1 string to match.
  7545. return Intrinsic::hexagon_F2_sfimm_p; // "exagon.F2.sfimm.p"
  7546. }
  7547. break;
  7548. }
  7549. break;
  7550. }
  7551. break;
  7552. case 'M': // 11 strings to match.
  7553. switch (NameR[8]) {
  7554. default: break;
  7555. case '2': // 3 strings to match.
  7556. if (NameR[9] != '.')
  7557. break;
  7558. switch (NameR[10]) {
  7559. default: break;
  7560. case 'm': // 1 string to match.
  7561. if (memcmp(NameR.data()+11, "pyu.up", 6))
  7562. break;
  7563. return Intrinsic::hexagon_M2_mpyu_up; // "exagon.M2.mpyu.up"
  7564. case 'v': // 2 strings to match.
  7565. switch (NameR[11]) {
  7566. default: break;
  7567. case 'm': // 1 string to match.
  7568. if (memcmp(NameR.data()+12, "ac2es", 5))
  7569. break;
  7570. return Intrinsic::hexagon_M2_vmac2es; // "exagon.M2.vmac2es"
  7571. case 'r': // 1 string to match.
  7572. if (memcmp(NameR.data()+12, "adduh", 5))
  7573. break;
  7574. return Intrinsic::hexagon_M2_vradduh; // "exagon.M2.vradduh"
  7575. }
  7576. break;
  7577. }
  7578. break;
  7579. case '4': // 4 strings to match.
  7580. if (NameR[9] != '.')
  7581. break;
  7582. switch (NameR[10]) {
  7583. default: break;
  7584. case 'a': // 2 strings to match.
  7585. if (memcmp(NameR.data()+11, "nd.", 3))
  7586. break;
  7587. switch (NameR[14]) {
  7588. default: break;
  7589. case 'a': // 1 string to match.
  7590. if (memcmp(NameR.data()+15, "nd", 2))
  7591. break;
  7592. return Intrinsic::hexagon_M4_and_and; // "exagon.M4.and.and"
  7593. case 'x': // 1 string to match.
  7594. if (memcmp(NameR.data()+15, "or", 2))
  7595. break;
  7596. return Intrinsic::hexagon_M4_and_xor; // "exagon.M4.and.xor"
  7597. }
  7598. break;
  7599. case 'o': // 1 string to match.
  7600. if (memcmp(NameR.data()+11, "r.andn", 6))
  7601. break;
  7602. return Intrinsic::hexagon_M4_or_andn; // "exagon.M4.or.andn"
  7603. case 'x': // 1 string to match.
  7604. if (memcmp(NameR.data()+11, "or.and", 6))
  7605. break;
  7606. return Intrinsic::hexagon_M4_xor_and; // "exagon.M4.xor.and"
  7607. }
  7608. break;
  7609. case '5': // 4 strings to match.
  7610. if (memcmp(NameR.data()+9, ".vm", 3))
  7611. break;
  7612. switch (NameR[12]) {
  7613. default: break;
  7614. case 'a': // 2 strings to match.
  7615. if (memcmp(NameR.data()+13, "cb", 2))
  7616. break;
  7617. switch (NameR[15]) {
  7618. default: break;
  7619. case 's': // 1 string to match.
  7620. if (NameR[16] != 'u')
  7621. break;
  7622. return Intrinsic::hexagon_M5_vmacbsu; // "exagon.M5.vmacbsu"
  7623. case 'u': // 1 string to match.
  7624. if (NameR[16] != 'u')
  7625. break;
  7626. return Intrinsic::hexagon_M5_vmacbuu; // "exagon.M5.vmacbuu"
  7627. }
  7628. break;
  7629. case 'p': // 2 strings to match.
  7630. if (memcmp(NameR.data()+13, "yb", 2))
  7631. break;
  7632. switch (NameR[15]) {
  7633. default: break;
  7634. case 's': // 1 string to match.
  7635. if (NameR[16] != 'u')
  7636. break;
  7637. return Intrinsic::hexagon_M5_vmpybsu; // "exagon.M5.vmpybsu"
  7638. case 'u': // 1 string to match.
  7639. if (NameR[16] != 'u')
  7640. break;
  7641. return Intrinsic::hexagon_M5_vmpybuu; // "exagon.M5.vmpybuu"
  7642. }
  7643. break;
  7644. }
  7645. break;
  7646. }
  7647. break;
  7648. case 'S': // 30 strings to match.
  7649. switch (NameR[8]) {
  7650. default: break;
  7651. case '2': // 25 strings to match.
  7652. if (NameR[9] != '.')
  7653. break;
  7654. switch (NameR[10]) {
  7655. default: break;
  7656. case 'a': // 8 strings to match.
  7657. if (NameR[11] != 's')
  7658. break;
  7659. switch (NameR[12]) {
  7660. default: break;
  7661. case 'l': // 4 strings to match.
  7662. if (NameR[13] != '.')
  7663. break;
  7664. switch (NameR[14]) {
  7665. default: break;
  7666. case 'i': // 2 strings to match.
  7667. if (NameR[15] != '.')
  7668. break;
  7669. switch (NameR[16]) {
  7670. default: break;
  7671. case 'p': // 1 string to match.
  7672. return Intrinsic::hexagon_S2_asl_i_p; // "exagon.S2.asl.i.p"
  7673. case 'r': // 1 string to match.
  7674. return Intrinsic::hexagon_S2_asl_i_r; // "exagon.S2.asl.i.r"
  7675. }
  7676. break;
  7677. case 'r': // 2 strings to match.
  7678. if (NameR[15] != '.')
  7679. break;
  7680. switch (NameR[16]) {
  7681. default: break;
  7682. case 'p': // 1 string to match.
  7683. return Intrinsic::hexagon_S2_asl_r_p; // "exagon.S2.asl.r.p"
  7684. case 'r': // 1 string to match.
  7685. return Intrinsic::hexagon_S2_asl_r_r; // "exagon.S2.asl.r.r"
  7686. }
  7687. break;
  7688. }
  7689. break;
  7690. case 'r': // 4 strings to match.
  7691. if (NameR[13] != '.')
  7692. break;
  7693. switch (NameR[14]) {
  7694. default: break;
  7695. case 'i': // 2 strings to match.
  7696. if (NameR[15] != '.')
  7697. break;
  7698. switch (NameR[16]) {
  7699. default: break;
  7700. case 'p': // 1 string to match.
  7701. return Intrinsic::hexagon_S2_asr_i_p; // "exagon.S2.asr.i.p"
  7702. case 'r': // 1 string to match.
  7703. return Intrinsic::hexagon_S2_asr_i_r; // "exagon.S2.asr.i.r"
  7704. }
  7705. break;
  7706. case 'r': // 2 strings to match.
  7707. if (NameR[15] != '.')
  7708. break;
  7709. switch (NameR[16]) {
  7710. default: break;
  7711. case 'p': // 1 string to match.
  7712. return Intrinsic::hexagon_S2_asr_r_p; // "exagon.S2.asr.r.p"
  7713. case 'r': // 1 string to match.
  7714. return Intrinsic::hexagon_S2_asr_r_r; // "exagon.S2.asr.r.r"
  7715. }
  7716. break;
  7717. }
  7718. break;
  7719. }
  7720. break;
  7721. case 'c': // 1 string to match.
  7722. if (memcmp(NameR.data()+11, "lbnorm", 6))
  7723. break;
  7724. return Intrinsic::hexagon_S2_clbnorm; // "exagon.S2.clbnorm"
  7725. case 'i': // 1 string to match.
  7726. if (memcmp(NameR.data()+11, "nsertp", 6))
  7727. break;
  7728. return Intrinsic::hexagon_S2_insertp; // "exagon.S2.insertp"
  7729. case 'l': // 6 strings to match.
  7730. if (NameR[11] != 's')
  7731. break;
  7732. switch (NameR[12]) {
  7733. default: break;
  7734. case 'l': // 2 strings to match.
  7735. if (memcmp(NameR.data()+13, ".r.", 3))
  7736. break;
  7737. switch (NameR[16]) {
  7738. default: break;
  7739. case 'p': // 1 string to match.
  7740. return Intrinsic::hexagon_S2_lsl_r_p; // "exagon.S2.lsl.r.p"
  7741. case 'r': // 1 string to match.
  7742. return Intrinsic::hexagon_S2_lsl_r_r; // "exagon.S2.lsl.r.r"
  7743. }
  7744. break;
  7745. case 'r': // 4 strings to match.
  7746. if (NameR[13] != '.')
  7747. break;
  7748. switch (NameR[14]) {
  7749. default: break;
  7750. case 'i': // 2 strings to match.
  7751. if (NameR[15] != '.')
  7752. break;
  7753. switch (NameR[16]) {
  7754. default: break;
  7755. case 'p': // 1 string to match.
  7756. return Intrinsic::hexagon_S2_lsr_i_p; // "exagon.S2.lsr.i.p"
  7757. case 'r': // 1 string to match.
  7758. return Intrinsic::hexagon_S2_lsr_i_r; // "exagon.S2.lsr.i.r"
  7759. }
  7760. break;
  7761. case 'r': // 2 strings to match.
  7762. if (NameR[15] != '.')
  7763. break;
  7764. switch (NameR[16]) {
  7765. default: break;
  7766. case 'p': // 1 string to match.
  7767. return Intrinsic::hexagon_S2_lsr_r_p; // "exagon.S2.lsr.r.p"
  7768. case 'r': // 1 string to match.
  7769. return Intrinsic::hexagon_S2_lsr_r_r; // "exagon.S2.lsr.r.r"
  7770. }
  7771. break;
  7772. }
  7773. break;
  7774. }
  7775. break;
  7776. case 'p': // 1 string to match.
  7777. if (memcmp(NameR.data()+11, "arityp", 6))
  7778. break;
  7779. return Intrinsic::hexagon_S2_parityp; // "exagon.S2.parityp"
  7780. case 's': // 5 strings to match.
  7781. switch (NameR[11]) {
  7782. default: break;
  7783. case 'h': // 4 strings to match.
  7784. if (memcmp(NameR.data()+12, "uff", 3))
  7785. break;
  7786. switch (NameR[15]) {
  7787. default: break;
  7788. case 'e': // 2 strings to match.
  7789. switch (NameR[16]) {
  7790. default: break;
  7791. case 'b': // 1 string to match.
  7792. return Intrinsic::hexagon_S2_shuffeb; // "exagon.S2.shuffeb"
  7793. case 'h': // 1 string to match.
  7794. return Intrinsic::hexagon_S2_shuffeh; // "exagon.S2.shuffeh"
  7795. }
  7796. break;
  7797. case 'o': // 2 strings to match.
  7798. switch (NameR[16]) {
  7799. default: break;
  7800. case 'b': // 1 string to match.
  7801. return Intrinsic::hexagon_S2_shuffob; // "exagon.S2.shuffob"
  7802. case 'h': // 1 string to match.
  7803. return Intrinsic::hexagon_S2_shuffoh; // "exagon.S2.shuffoh"
  7804. }
  7805. break;
  7806. }
  7807. break;
  7808. case 'v': // 1 string to match.
  7809. if (memcmp(NameR.data()+12, "sathb", 5))
  7810. break;
  7811. return Intrinsic::hexagon_S2_svsathb; // "exagon.S2.svsathb"
  7812. }
  7813. break;
  7814. case 'v': // 3 strings to match.
  7815. switch (NameR[11]) {
  7816. default: break;
  7817. case 'r': // 1 string to match.
  7818. if (memcmp(NameR.data()+12, "cnegh", 5))
  7819. break;
  7820. return Intrinsic::hexagon_S2_vrcnegh; // "exagon.S2.vrcnegh"
  7821. case 's': // 2 strings to match.
  7822. if (memcmp(NameR.data()+12, "at", 2))
  7823. break;
  7824. switch (NameR[14]) {
  7825. default: break;
  7826. case 'h': // 1 string to match.
  7827. if (memcmp(NameR.data()+15, "ub", 2))
  7828. break;
  7829. return Intrinsic::hexagon_S2_vsathub; // "exagon.S2.vsathub"
  7830. case 'w': // 1 string to match.
  7831. if (memcmp(NameR.data()+15, "uh", 2))
  7832. break;
  7833. return Intrinsic::hexagon_S2_vsatwuh; // "exagon.S2.vsatwuh"
  7834. }
  7835. break;
  7836. }
  7837. break;
  7838. }
  7839. break;
  7840. case '4': // 5 strings to match.
  7841. if (NameR[9] != '.')
  7842. break;
  7843. switch (NameR[10]) {
  7844. default: break;
  7845. case 'a': // 1 string to match.
  7846. if (memcmp(NameR.data()+11, "ddaddi", 6))
  7847. break;
  7848. return Intrinsic::hexagon_S4_addaddi; // "exagon.S4.addaddi"
  7849. case 'c': // 1 string to match.
  7850. if (memcmp(NameR.data()+11, "lbaddi", 6))
  7851. break;
  7852. return Intrinsic::hexagon_S4_clbaddi; // "exagon.S4.clbaddi"
  7853. case 'e': // 1 string to match.
  7854. if (memcmp(NameR.data()+11, "xtract", 6))
  7855. break;
  7856. return Intrinsic::hexagon_S4_extract; // "exagon.S4.extract"
  7857. case 'o': // 1 string to match.
  7858. if (memcmp(NameR.data()+11, "r.andi", 6))
  7859. break;
  7860. return Intrinsic::hexagon_S4_or_andi; // "exagon.S4.or.andi"
  7861. case 's': // 1 string to match.
  7862. if (memcmp(NameR.data()+11, "ubaddi", 6))
  7863. break;
  7864. return Intrinsic::hexagon_S4_subaddi; // "exagon.S4.subaddi"
  7865. }
  7866. break;
  7867. }
  7868. break;
  7869. }
  7870. break;
  7871. case 18: // 103 strings to match.
  7872. if (memcmp(NameR.data()+0, "exagon.", 7))
  7873. break;
  7874. switch (NameR[7]) {
  7875. default: break;
  7876. case 'A': // 26 strings to match.
  7877. switch (NameR[8]) {
  7878. default: break;
  7879. case '2': // 11 strings to match.
  7880. if (NameR[9] != '.')
  7881. break;
  7882. switch (NameR[10]) {
  7883. default: break;
  7884. case 'c': // 1 string to match.
  7885. if (memcmp(NameR.data()+11, "ombinew", 7))
  7886. break;
  7887. return Intrinsic::hexagon_A2_combinew; // "exagon.A2.combinew"
  7888. case 'r': // 1 string to match.
  7889. if (memcmp(NameR.data()+11, "oundsat", 7))
  7890. break;
  7891. return Intrinsic::hexagon_A2_roundsat; // "exagon.A2.roundsat"
  7892. case 's': // 2 strings to match.
  7893. if (NameR[11] != 'v')
  7894. break;
  7895. switch (NameR[12]) {
  7896. default: break;
  7897. case 'a': // 1 string to match.
  7898. if (memcmp(NameR.data()+13, "dduhs", 5))
  7899. break;
  7900. return Intrinsic::hexagon_A2_svadduhs; // "exagon.A2.svadduhs"
  7901. case 's': // 1 string to match.
  7902. if (memcmp(NameR.data()+13, "ubuhs", 5))
  7903. break;
  7904. return Intrinsic::hexagon_A2_svsubuhs; // "exagon.A2.svsubuhs"
  7905. }
  7906. break;
  7907. case 'v': // 7 strings to match.
  7908. switch (NameR[11]) {
  7909. default: break;
  7910. case 'a': // 2 strings to match.
  7911. if (memcmp(NameR.data()+12, "bs", 2))
  7912. break;
  7913. switch (NameR[14]) {
  7914. default: break;
  7915. case 'h': // 1 string to match.
  7916. if (memcmp(NameR.data()+15, "sat", 3))
  7917. break;
  7918. return Intrinsic::hexagon_A2_vabshsat; // "exagon.A2.vabshsat"
  7919. case 'w': // 1 string to match.
  7920. if (memcmp(NameR.data()+15, "sat", 3))
  7921. break;
  7922. return Intrinsic::hexagon_A2_vabswsat; // "exagon.A2.vabswsat"
  7923. }
  7924. break;
  7925. case 'c': // 3 strings to match.
  7926. if (memcmp(NameR.data()+12, "mp", 2))
  7927. break;
  7928. switch (NameR[14]) {
  7929. default: break;
  7930. case 'b': // 1 string to match.
  7931. if (memcmp(NameR.data()+15, "gtu", 3))
  7932. break;
  7933. return Intrinsic::hexagon_A2_vcmpbgtu; // "exagon.A2.vcmpbgtu"
  7934. case 'h': // 1 string to match.
  7935. if (memcmp(NameR.data()+15, "gtu", 3))
  7936. break;
  7937. return Intrinsic::hexagon_A2_vcmphgtu; // "exagon.A2.vcmphgtu"
  7938. case 'w': // 1 string to match.
  7939. if (memcmp(NameR.data()+15, "gtu", 3))
  7940. break;
  7941. return Intrinsic::hexagon_A2_vcmpwgtu; // "exagon.A2.vcmpwgtu"
  7942. }
  7943. break;
  7944. case 'n': // 2 strings to match.
  7945. if (memcmp(NameR.data()+12, "avg", 3))
  7946. break;
  7947. switch (NameR[15]) {
  7948. default: break;
  7949. case 'h': // 1 string to match.
  7950. if (memcmp(NameR.data()+16, "cr", 2))
  7951. break;
  7952. return Intrinsic::hexagon_A2_vnavghcr; // "exagon.A2.vnavghcr"
  7953. case 'w': // 1 string to match.
  7954. if (memcmp(NameR.data()+16, "cr", 2))
  7955. break;
  7956. return Intrinsic::hexagon_A2_vnavgwcr; // "exagon.A2.vnavgwcr"
  7957. }
  7958. break;
  7959. }
  7960. break;
  7961. }
  7962. break;
  7963. case '4': // 14 strings to match.
  7964. if (NameR[9] != '.')
  7965. break;
  7966. switch (NameR[10]) {
  7967. default: break;
  7968. case 'b': // 1 string to match.
  7969. if (memcmp(NameR.data()+11, "itsplit", 7))
  7970. break;
  7971. return Intrinsic::hexagon_A4_bitsplit; // "exagon.A4.bitsplit"
  7972. case 'c': // 2 strings to match.
  7973. if (memcmp(NameR.data()+11, "mp", 2))
  7974. break;
  7975. switch (NameR[13]) {
  7976. default: break;
  7977. case 'b': // 1 string to match.
  7978. if (memcmp(NameR.data()+14, "gtui", 4))
  7979. break;
  7980. return Intrinsic::hexagon_A4_cmpbgtui; // "exagon.A4.cmpbgtui"
  7981. case 'h': // 1 string to match.
  7982. if (memcmp(NameR.data()+14, "gtui", 4))
  7983. break;
  7984. return Intrinsic::hexagon_A4_cmphgtui; // "exagon.A4.cmphgtui"
  7985. }
  7986. break;
  7987. case 'm': // 1 string to match.
  7988. if (memcmp(NameR.data()+11, "odwrapu", 7))
  7989. break;
  7990. return Intrinsic::hexagon_A4_modwrapu; // "exagon.A4.modwrapu"
  7991. case 'r': // 3 strings to match.
  7992. switch (NameR[11]) {
  7993. default: break;
  7994. case 'c': // 1 string to match.
  7995. if (memcmp(NameR.data()+12, "mpneqi", 6))
  7996. break;
  7997. return Intrinsic::hexagon_A4_rcmpneqi; // "exagon.A4.rcmpneqi"
  7998. case 'o': // 2 strings to match.
  7999. if (memcmp(NameR.data()+12, "und.r", 5))
  8000. break;
  8001. switch (NameR[17]) {
  8002. default: break;
  8003. case 'i': // 1 string to match.
  8004. return Intrinsic::hexagon_A4_round_ri; // "exagon.A4.round.ri"
  8005. case 'r': // 1 string to match.
  8006. return Intrinsic::hexagon_A4_round_rr; // "exagon.A4.round.rr"
  8007. }
  8008. break;
  8009. }
  8010. break;
  8011. case 't': // 1 string to match.
  8012. if (memcmp(NameR.data()+11, "lbmatch", 7))
  8013. break;
  8014. return Intrinsic::hexagon_A4_tlbmatch; // "exagon.A4.tlbmatch"
  8015. case 'v': // 6 strings to match.
  8016. if (memcmp(NameR.data()+11, "cmp", 3))
  8017. break;
  8018. switch (NameR[14]) {
  8019. default: break;
  8020. case 'b': // 2 strings to match.
  8021. switch (NameR[15]) {
  8022. default: break;
  8023. case 'e': // 1 string to match.
  8024. if (memcmp(NameR.data()+16, "qi", 2))
  8025. break;
  8026. return Intrinsic::hexagon_A4_vcmpbeqi; // "exagon.A4.vcmpbeqi"
  8027. case 'g': // 1 string to match.
  8028. if (memcmp(NameR.data()+16, "ti", 2))
  8029. break;
  8030. return Intrinsic::hexagon_A4_vcmpbgti; // "exagon.A4.vcmpbgti"
  8031. }
  8032. break;
  8033. case 'h': // 2 strings to match.
  8034. switch (NameR[15]) {
  8035. default: break;
  8036. case 'e': // 1 string to match.
  8037. if (memcmp(NameR.data()+16, "qi", 2))
  8038. break;
  8039. return Intrinsic::hexagon_A4_vcmpheqi; // "exagon.A4.vcmpheqi"
  8040. case 'g': // 1 string to match.
  8041. if (memcmp(NameR.data()+16, "ti", 2))
  8042. break;
  8043. return Intrinsic::hexagon_A4_vcmphgti; // "exagon.A4.vcmphgti"
  8044. }
  8045. break;
  8046. case 'w': // 2 strings to match.
  8047. switch (NameR[15]) {
  8048. default: break;
  8049. case 'e': // 1 string to match.
  8050. if (memcmp(NameR.data()+16, "qi", 2))
  8051. break;
  8052. return Intrinsic::hexagon_A4_vcmpweqi; // "exagon.A4.vcmpweqi"
  8053. case 'g': // 1 string to match.
  8054. if (memcmp(NameR.data()+16, "ti", 2))
  8055. break;
  8056. return Intrinsic::hexagon_A4_vcmpwgti; // "exagon.A4.vcmpwgti"
  8057. }
  8058. break;
  8059. }
  8060. break;
  8061. }
  8062. break;
  8063. case '5': // 1 string to match.
  8064. if (memcmp(NameR.data()+9, ".vaddhubs", 9))
  8065. break;
  8066. return Intrinsic::hexagon_A5_vaddhubs; // "exagon.A5.vaddhubs"
  8067. }
  8068. break;
  8069. case 'C': // 5 strings to match.
  8070. switch (NameR[8]) {
  8071. default: break;
  8072. case '2': // 1 string to match.
  8073. if (memcmp(NameR.data()+9, ".bitsclri", 9))
  8074. break;
  8075. return Intrinsic::hexagon_C2_bitsclri; // "exagon.C2.bitsclri"
  8076. case '4': // 4 strings to match.
  8077. if (NameR[9] != '.')
  8078. break;
  8079. switch (NameR[10]) {
  8080. default: break;
  8081. case 'a': // 1 string to match.
  8082. if (memcmp(NameR.data()+11, "nd.andn", 7))
  8083. break;
  8084. return Intrinsic::hexagon_C4_and_andn; // "exagon.C4.and.andn"
  8085. case 'c': // 1 string to match.
  8086. if (memcmp(NameR.data()+11, "mplteui", 7))
  8087. break;
  8088. return Intrinsic::hexagon_C4_cmplteui; // "exagon.C4.cmplteui"
  8089. case 'n': // 2 strings to match.
  8090. if (memcmp(NameR.data()+11, "bits", 4))
  8091. break;
  8092. switch (NameR[15]) {
  8093. default: break;
  8094. case 'c': // 1 string to match.
  8095. if (memcmp(NameR.data()+16, "lr", 2))
  8096. break;
  8097. return Intrinsic::hexagon_C4_nbitsclr; // "exagon.C4.nbitsclr"
  8098. case 's': // 1 string to match.
  8099. if (memcmp(NameR.data()+16, "et", 2))
  8100. break;
  8101. return Intrinsic::hexagon_C4_nbitsset; // "exagon.C4.nbitsset"
  8102. }
  8103. break;
  8104. }
  8105. break;
  8106. }
  8107. break;
  8108. case 'F': // 8 strings to match.
  8109. if (memcmp(NameR.data()+8, "2.", 2))
  8110. break;
  8111. switch (NameR[10]) {
  8112. default: break;
  8113. case 'd': // 4 strings to match.
  8114. if (memcmp(NameR.data()+11, "ff", 2))
  8115. break;
  8116. switch (NameR[13]) {
  8117. default: break;
  8118. case 'i': // 3 strings to match.
  8119. if (memcmp(NameR.data()+14, "xup", 3))
  8120. break;
  8121. switch (NameR[17]) {
  8122. default: break;
  8123. case 'd': // 1 string to match.
  8124. return Intrinsic::hexagon_F2_dffixupd; // "exagon.F2.dffixupd"
  8125. case 'n': // 1 string to match.
  8126. return Intrinsic::hexagon_F2_dffixupn; // "exagon.F2.dffixupn"
  8127. case 'r': // 1 string to match.
  8128. return Intrinsic::hexagon_F2_dffixupr; // "exagon.F2.dffixupr"
  8129. }
  8130. break;
  8131. case 'm': // 1 string to match.
  8132. if (memcmp(NameR.data()+14, "a.sc", 4))
  8133. break;
  8134. return Intrinsic::hexagon_F2_dffma_sc; // "exagon.F2.dffma.sc"
  8135. }
  8136. break;
  8137. case 's': // 4 strings to match.
  8138. if (memcmp(NameR.data()+11, "ff", 2))
  8139. break;
  8140. switch (NameR[13]) {
  8141. default: break;
  8142. case 'i': // 3 strings to match.
  8143. if (memcmp(NameR.data()+14, "xup", 3))
  8144. break;
  8145. switch (NameR[17]) {
  8146. default: break;
  8147. case 'd': // 1 string to match.
  8148. return Intrinsic::hexagon_F2_sffixupd; // "exagon.F2.sffixupd"
  8149. case 'n': // 1 string to match.
  8150. return Intrinsic::hexagon_F2_sffixupn; // "exagon.F2.sffixupn"
  8151. case 'r': // 1 string to match.
  8152. return Intrinsic::hexagon_F2_sffixupr; // "exagon.F2.sffixupr"
  8153. }
  8154. break;
  8155. case 'm': // 1 string to match.
  8156. if (memcmp(NameR.data()+14, "a.sc", 4))
  8157. break;
  8158. return Intrinsic::hexagon_F2_sffma_sc; // "exagon.F2.sffma.sc"
  8159. }
  8160. break;
  8161. }
  8162. break;
  8163. case 'M': // 29 strings to match.
  8164. switch (NameR[8]) {
  8165. default: break;
  8166. case '2': // 18 strings to match.
  8167. if (NameR[9] != '.')
  8168. break;
  8169. switch (NameR[10]) {
  8170. default: break;
  8171. case 'c': // 10 strings to match.
  8172. switch (NameR[11]) {
  8173. default: break;
  8174. case 'm': // 8 strings to match.
  8175. switch (NameR[12]) {
  8176. default: break;
  8177. case 'a': // 4 strings to match.
  8178. if (NameR[13] != 'c')
  8179. break;
  8180. switch (NameR[14]) {
  8181. default: break;
  8182. case 'i': // 1 string to match.
  8183. if (memcmp(NameR.data()+15, ".s0", 3))
  8184. break;
  8185. return Intrinsic::hexagon_M2_cmaci_s0; // "exagon.M2.cmaci.s0"
  8186. case 'r': // 1 string to match.
  8187. if (memcmp(NameR.data()+15, ".s0", 3))
  8188. break;
  8189. return Intrinsic::hexagon_M2_cmacr_s0; // "exagon.M2.cmacr.s0"
  8190. case 's': // 2 strings to match.
  8191. if (memcmp(NameR.data()+15, ".s", 2))
  8192. break;
  8193. switch (NameR[17]) {
  8194. default: break;
  8195. case '0': // 1 string to match.
  8196. return Intrinsic::hexagon_M2_cmacs_s0; // "exagon.M2.cmacs.s0"
  8197. case '1': // 1 string to match.
  8198. return Intrinsic::hexagon_M2_cmacs_s1; // "exagon.M2.cmacs.s1"
  8199. }
  8200. break;
  8201. }
  8202. break;
  8203. case 'p': // 4 strings to match.
  8204. if (NameR[13] != 'y')
  8205. break;
  8206. switch (NameR[14]) {
  8207. default: break;
  8208. case 'i': // 1 string to match.
  8209. if (memcmp(NameR.data()+15, ".s0", 3))
  8210. break;
  8211. return Intrinsic::hexagon_M2_cmpyi_s0; // "exagon.M2.cmpyi.s0"
  8212. case 'r': // 1 string to match.
  8213. if (memcmp(NameR.data()+15, ".s0", 3))
  8214. break;
  8215. return Intrinsic::hexagon_M2_cmpyr_s0; // "exagon.M2.cmpyr.s0"
  8216. case 's': // 2 strings to match.
  8217. if (memcmp(NameR.data()+15, ".s", 2))
  8218. break;
  8219. switch (NameR[17]) {
  8220. default: break;
  8221. case '0': // 1 string to match.
  8222. return Intrinsic::hexagon_M2_cmpys_s0; // "exagon.M2.cmpys.s0"
  8223. case '1': // 1 string to match.
  8224. return Intrinsic::hexagon_M2_cmpys_s1; // "exagon.M2.cmpys.s1"
  8225. }
  8226. break;
  8227. }
  8228. break;
  8229. }
  8230. break;
  8231. case 'n': // 2 strings to match.
  8232. if (memcmp(NameR.data()+12, "acs.s", 5))
  8233. break;
  8234. switch (NameR[17]) {
  8235. default: break;
  8236. case '0': // 1 string to match.
  8237. return Intrinsic::hexagon_M2_cnacs_s0; // "exagon.M2.cnacs.s0"
  8238. case '1': // 1 string to match.
  8239. return Intrinsic::hexagon_M2_cnacs_s1; // "exagon.M2.cnacs.s1"
  8240. }
  8241. break;
  8242. }
  8243. break;
  8244. case 'm': // 5 strings to match.
  8245. switch (NameR[11]) {
  8246. default: break;
  8247. case 'm': // 4 strings to match.
  8248. if (memcmp(NameR.data()+12, "py", 2))
  8249. break;
  8250. switch (NameR[14]) {
  8251. default: break;
  8252. case 'h': // 2 strings to match.
  8253. if (memcmp(NameR.data()+15, ".s", 2))
  8254. break;
  8255. switch (NameR[17]) {
  8256. default: break;
  8257. case '0': // 1 string to match.
  8258. return Intrinsic::hexagon_M2_mmpyh_s0; // "exagon.M2.mmpyh.s0"
  8259. case '1': // 1 string to match.
  8260. return Intrinsic::hexagon_M2_mmpyh_s1; // "exagon.M2.mmpyh.s1"
  8261. }
  8262. break;
  8263. case 'l': // 2 strings to match.
  8264. if (memcmp(NameR.data()+15, ".s", 2))
  8265. break;
  8266. switch (NameR[17]) {
  8267. default: break;
  8268. case '0': // 1 string to match.
  8269. return Intrinsic::hexagon_M2_mmpyl_s0; // "exagon.M2.mmpyl.s0"
  8270. case '1': // 1 string to match.
  8271. return Intrinsic::hexagon_M2_mmpyl_s1; // "exagon.M2.mmpyl.s1"
  8272. }
  8273. break;
  8274. }
  8275. break;
  8276. case 'p': // 1 string to match.
  8277. if (memcmp(NameR.data()+12, "ysu.up", 6))
  8278. break;
  8279. return Intrinsic::hexagon_M2_mpysu_up; // "exagon.M2.mpysu.up"
  8280. }
  8281. break;
  8282. case 'v': // 2 strings to match.
  8283. if (memcmp(NameR.data()+11, "rm", 2))
  8284. break;
  8285. switch (NameR[13]) {
  8286. default: break;
  8287. case 'a': // 1 string to match.
  8288. if (memcmp(NameR.data()+14, "c.s0", 4))
  8289. break;
  8290. return Intrinsic::hexagon_M2_vrmac_s0; // "exagon.M2.vrmac.s0"
  8291. case 'p': // 1 string to match.
  8292. if (memcmp(NameR.data()+14, "y.s0", 4))
  8293. break;
  8294. return Intrinsic::hexagon_M2_vrmpy_s0; // "exagon.M2.vrmpy.s0"
  8295. }
  8296. break;
  8297. case 'x': // 1 string to match.
  8298. if (memcmp(NameR.data()+11, "or.xacc", 7))
  8299. break;
  8300. return Intrinsic::hexagon_M2_xor_xacc; // "exagon.M2.xor.xacc"
  8301. }
  8302. break;
  8303. case '4': // 5 strings to match.
  8304. if (NameR[9] != '.')
  8305. break;
  8306. switch (NameR[10]) {
  8307. default: break;
  8308. case 'a': // 1 string to match.
  8309. if (memcmp(NameR.data()+11, "nd.andn", 7))
  8310. break;
  8311. return Intrinsic::hexagon_M4_and_andn; // "exagon.M4.and.andn"
  8312. case 'c': // 2 strings to match.
  8313. if (memcmp(NameR.data()+11, "mpy", 3))
  8314. break;
  8315. switch (NameR[14]) {
  8316. default: break;
  8317. case 'i': // 1 string to match.
  8318. if (memcmp(NameR.data()+15, ".wh", 3))
  8319. break;
  8320. return Intrinsic::hexagon_M4_cmpyi_wh; // "exagon.M4.cmpyi.wh"
  8321. case 'r': // 1 string to match.
  8322. if (memcmp(NameR.data()+15, ".wh", 3))
  8323. break;
  8324. return Intrinsic::hexagon_M4_cmpyr_wh; // "exagon.M4.cmpyr.wh"
  8325. }
  8326. break;
  8327. case 'x': // 2 strings to match.
  8328. if (memcmp(NameR.data()+11, "or.", 3))
  8329. break;
  8330. switch (NameR[14]) {
  8331. default: break;
  8332. case 'a': // 1 string to match.
  8333. if (memcmp(NameR.data()+15, "ndn", 3))
  8334. break;
  8335. return Intrinsic::hexagon_M4_xor_andn; // "exagon.M4.xor.andn"
  8336. case 'x': // 1 string to match.
  8337. if (memcmp(NameR.data()+15, "acc", 3))
  8338. break;
  8339. return Intrinsic::hexagon_M4_xor_xacc; // "exagon.M4.xor.xacc"
  8340. }
  8341. break;
  8342. }
  8343. break;
  8344. case '5': // 6 strings to match.
  8345. if (memcmp(NameR.data()+9, ".v", 2))
  8346. break;
  8347. switch (NameR[11]) {
  8348. default: break;
  8349. case 'd': // 2 strings to match.
  8350. if (NameR[12] != 'm')
  8351. break;
  8352. switch (NameR[13]) {
  8353. default: break;
  8354. case 'a': // 1 string to match.
  8355. if (memcmp(NameR.data()+14, "cbsu", 4))
  8356. break;
  8357. return Intrinsic::hexagon_M5_vdmacbsu; // "exagon.M5.vdmacbsu"
  8358. case 'p': // 1 string to match.
  8359. if (memcmp(NameR.data()+14, "ybsu", 4))
  8360. break;
  8361. return Intrinsic::hexagon_M5_vdmpybsu; // "exagon.M5.vdmpybsu"
  8362. }
  8363. break;
  8364. case 'r': // 4 strings to match.
  8365. if (NameR[12] != 'm')
  8366. break;
  8367. switch (NameR[13]) {
  8368. default: break;
  8369. case 'a': // 2 strings to match.
  8370. if (memcmp(NameR.data()+14, "cb", 2))
  8371. break;
  8372. switch (NameR[16]) {
  8373. default: break;
  8374. case 's': // 1 string to match.
  8375. if (NameR[17] != 'u')
  8376. break;
  8377. return Intrinsic::hexagon_M5_vrmacbsu; // "exagon.M5.vrmacbsu"
  8378. case 'u': // 1 string to match.
  8379. if (NameR[17] != 'u')
  8380. break;
  8381. return Intrinsic::hexagon_M5_vrmacbuu; // "exagon.M5.vrmacbuu"
  8382. }
  8383. break;
  8384. case 'p': // 2 strings to match.
  8385. if (memcmp(NameR.data()+14, "yb", 2))
  8386. break;
  8387. switch (NameR[16]) {
  8388. default: break;
  8389. case 's': // 1 string to match.
  8390. if (NameR[17] != 'u')
  8391. break;
  8392. return Intrinsic::hexagon_M5_vrmpybsu; // "exagon.M5.vrmpybsu"
  8393. case 'u': // 1 string to match.
  8394. if (NameR[17] != 'u')
  8395. break;
  8396. return Intrinsic::hexagon_M5_vrmpybuu; // "exagon.M5.vrmpybuu"
  8397. }
  8398. break;
  8399. }
  8400. break;
  8401. }
  8402. break;
  8403. }
  8404. break;
  8405. case 'S': // 35 strings to match.
  8406. switch (NameR[8]) {
  8407. default: break;
  8408. case '2': // 31 strings to match.
  8409. if (NameR[9] != '.')
  8410. break;
  8411. switch (NameR[10]) {
  8412. default: break;
  8413. case 'a': // 8 strings to match.
  8414. if (NameR[11] != 's')
  8415. break;
  8416. switch (NameR[12]) {
  8417. default: break;
  8418. case 'l': // 4 strings to match.
  8419. if (NameR[13] != '.')
  8420. break;
  8421. switch (NameR[14]) {
  8422. default: break;
  8423. case 'i': // 2 strings to match.
  8424. if (memcmp(NameR.data()+15, ".v", 2))
  8425. break;
  8426. switch (NameR[17]) {
  8427. default: break;
  8428. case 'h': // 1 string to match.
  8429. return Intrinsic::hexagon_S2_asl_i_vh; // "exagon.S2.asl.i.vh"
  8430. case 'w': // 1 string to match.
  8431. return Intrinsic::hexagon_S2_asl_i_vw; // "exagon.S2.asl.i.vw"
  8432. }
  8433. break;
  8434. case 'r': // 2 strings to match.
  8435. if (memcmp(NameR.data()+15, ".v", 2))
  8436. break;
  8437. switch (NameR[17]) {
  8438. default: break;
  8439. case 'h': // 1 string to match.
  8440. return Intrinsic::hexagon_S2_asl_r_vh; // "exagon.S2.asl.r.vh"
  8441. case 'w': // 1 string to match.
  8442. return Intrinsic::hexagon_S2_asl_r_vw; // "exagon.S2.asl.r.vw"
  8443. }
  8444. break;
  8445. }
  8446. break;
  8447. case 'r': // 4 strings to match.
  8448. if (NameR[13] != '.')
  8449. break;
  8450. switch (NameR[14]) {
  8451. default: break;
  8452. case 'i': // 2 strings to match.
  8453. if (memcmp(NameR.data()+15, ".v", 2))
  8454. break;
  8455. switch (NameR[17]) {
  8456. default: break;
  8457. case 'h': // 1 string to match.
  8458. return Intrinsic::hexagon_S2_asr_i_vh; // "exagon.S2.asr.i.vh"
  8459. case 'w': // 1 string to match.
  8460. return Intrinsic::hexagon_S2_asr_i_vw; // "exagon.S2.asr.i.vw"
  8461. }
  8462. break;
  8463. case 'r': // 2 strings to match.
  8464. if (memcmp(NameR.data()+15, ".v", 2))
  8465. break;
  8466. switch (NameR[17]) {
  8467. default: break;
  8468. case 'h': // 1 string to match.
  8469. return Intrinsic::hexagon_S2_asr_r_vh; // "exagon.S2.asr.r.vh"
  8470. case 'w': // 1 string to match.
  8471. return Intrinsic::hexagon_S2_asr_r_vw; // "exagon.S2.asr.r.vw"
  8472. }
  8473. break;
  8474. }
  8475. break;
  8476. }
  8477. break;
  8478. case 'c': // 2 strings to match.
  8479. if (memcmp(NameR.data()+11, "lrbit.", 6))
  8480. break;
  8481. switch (NameR[17]) {
  8482. default: break;
  8483. case 'i': // 1 string to match.
  8484. return Intrinsic::hexagon_S2_clrbit_i; // "exagon.S2.clrbit.i"
  8485. case 'r': // 1 string to match.
  8486. return Intrinsic::hexagon_S2_clrbit_r; // "exagon.S2.clrbit.r"
  8487. }
  8488. break;
  8489. case 'e': // 1 string to match.
  8490. if (memcmp(NameR.data()+11, "xtractu", 7))
  8491. break;
  8492. return Intrinsic::hexagon_S2_extractu; // "exagon.S2.extractu"
  8493. case 'l': // 6 strings to match.
  8494. if (NameR[11] != 's')
  8495. break;
  8496. switch (NameR[12]) {
  8497. default: break;
  8498. case 'l': // 2 strings to match.
  8499. if (memcmp(NameR.data()+13, ".r.v", 4))
  8500. break;
  8501. switch (NameR[17]) {
  8502. default: break;
  8503. case 'h': // 1 string to match.
  8504. return Intrinsic::hexagon_S2_lsl_r_vh; // "exagon.S2.lsl.r.vh"
  8505. case 'w': // 1 string to match.
  8506. return Intrinsic::hexagon_S2_lsl_r_vw; // "exagon.S2.lsl.r.vw"
  8507. }
  8508. break;
  8509. case 'r': // 4 strings to match.
  8510. if (NameR[13] != '.')
  8511. break;
  8512. switch (NameR[14]) {
  8513. default: break;
  8514. case 'i': // 2 strings to match.
  8515. if (memcmp(NameR.data()+15, ".v", 2))
  8516. break;
  8517. switch (NameR[17]) {
  8518. default: break;
  8519. case 'h': // 1 string to match.
  8520. return Intrinsic::hexagon_S2_lsr_i_vh; // "exagon.S2.lsr.i.vh"
  8521. case 'w': // 1 string to match.
  8522. return Intrinsic::hexagon_S2_lsr_i_vw; // "exagon.S2.lsr.i.vw"
  8523. }
  8524. break;
  8525. case 'r': // 2 strings to match.
  8526. if (memcmp(NameR.data()+15, ".v", 2))
  8527. break;
  8528. switch (NameR[17]) {
  8529. default: break;
  8530. case 'h': // 1 string to match.
  8531. return Intrinsic::hexagon_S2_lsr_r_vh; // "exagon.S2.lsr.r.vh"
  8532. case 'w': // 1 string to match.
  8533. return Intrinsic::hexagon_S2_lsr_r_vw; // "exagon.S2.lsr.r.vw"
  8534. }
  8535. break;
  8536. }
  8537. break;
  8538. }
  8539. break;
  8540. case 's': // 3 strings to match.
  8541. switch (NameR[11]) {
  8542. default: break;
  8543. case 'e': // 2 strings to match.
  8544. if (memcmp(NameR.data()+12, "tbit.", 5))
  8545. break;
  8546. switch (NameR[17]) {
  8547. default: break;
  8548. case 'i': // 1 string to match.
  8549. return Intrinsic::hexagon_S2_setbit_i; // "exagon.S2.setbit.i"
  8550. case 'r': // 1 string to match.
  8551. return Intrinsic::hexagon_S2_setbit_r; // "exagon.S2.setbit.r"
  8552. }
  8553. break;
  8554. case 'v': // 1 string to match.
  8555. if (memcmp(NameR.data()+12, "sathub", 6))
  8556. break;
  8557. return Intrinsic::hexagon_S2_svsathub; // "exagon.S2.svsathub"
  8558. }
  8559. break;
  8560. case 't': // 2 strings to match.
  8561. if (memcmp(NameR.data()+11, "stbit.", 6))
  8562. break;
  8563. switch (NameR[17]) {
  8564. default: break;
  8565. case 'i': // 1 string to match.
  8566. return Intrinsic::hexagon_S2_tstbit_i; // "exagon.S2.tstbit.i"
  8567. case 'r': // 1 string to match.
  8568. return Intrinsic::hexagon_S2_tstbit_r; // "exagon.S2.tstbit.r"
  8569. }
  8570. break;
  8571. case 'v': // 9 strings to match.
  8572. switch (NameR[11]) {
  8573. default: break;
  8574. case 'a': // 2 strings to match.
  8575. if (memcmp(NameR.data()+12, "lign", 4))
  8576. break;
  8577. switch (NameR[16]) {
  8578. default: break;
  8579. case 'i': // 1 string to match.
  8580. if (NameR[17] != 'b')
  8581. break;
  8582. return Intrinsic::hexagon_S2_valignib; // "exagon.S2.valignib"
  8583. case 'r': // 1 string to match.
  8584. if (NameR[17] != 'b')
  8585. break;
  8586. return Intrinsic::hexagon_S2_valignrb; // "exagon.S2.valignrb"
  8587. }
  8588. break;
  8589. case 'c': // 1 string to match.
  8590. if (memcmp(NameR.data()+12, "rotate", 6))
  8591. break;
  8592. return Intrinsic::hexagon_S2_vcrotate; // "exagon.S2.vcrotate"
  8593. case 's': // 2 strings to match.
  8594. if (memcmp(NameR.data()+12, "platr", 5))
  8595. break;
  8596. switch (NameR[17]) {
  8597. default: break;
  8598. case 'b': // 1 string to match.
  8599. return Intrinsic::hexagon_S2_vsplatrb; // "exagon.S2.vsplatrb"
  8600. case 'h': // 1 string to match.
  8601. return Intrinsic::hexagon_S2_vsplatrh; // "exagon.S2.vsplatrh"
  8602. }
  8603. break;
  8604. case 't': // 4 strings to match.
  8605. if (memcmp(NameR.data()+12, "run", 3))
  8606. break;
  8607. switch (NameR[15]) {
  8608. default: break;
  8609. case 'e': // 2 strings to match.
  8610. switch (NameR[16]) {
  8611. default: break;
  8612. case 'h': // 1 string to match.
  8613. if (NameR[17] != 'b')
  8614. break;
  8615. return Intrinsic::hexagon_S2_vtrunehb; // "exagon.S2.vtrunehb"
  8616. case 'w': // 1 string to match.
  8617. if (NameR[17] != 'h')
  8618. break;
  8619. return Intrinsic::hexagon_S2_vtrunewh; // "exagon.S2.vtrunewh"
  8620. }
  8621. break;
  8622. case 'o': // 2 strings to match.
  8623. switch (NameR[16]) {
  8624. default: break;
  8625. case 'h': // 1 string to match.
  8626. if (NameR[17] != 'b')
  8627. break;
  8628. return Intrinsic::hexagon_S2_vtrunohb; // "exagon.S2.vtrunohb"
  8629. case 'w': // 1 string to match.
  8630. if (NameR[17] != 'h')
  8631. break;
  8632. return Intrinsic::hexagon_S2_vtrunowh; // "exagon.S2.vtrunowh"
  8633. }
  8634. break;
  8635. }
  8636. break;
  8637. }
  8638. break;
  8639. }
  8640. break;
  8641. case '4': // 4 strings to match.
  8642. if (NameR[9] != '.')
  8643. break;
  8644. switch (NameR[10]) {
  8645. default: break;
  8646. case 'c': // 2 strings to match.
  8647. if (memcmp(NameR.data()+11, "lbp", 3))
  8648. break;
  8649. switch (NameR[14]) {
  8650. default: break;
  8651. case 'a': // 1 string to match.
  8652. if (memcmp(NameR.data()+15, "ddi", 3))
  8653. break;
  8654. return Intrinsic::hexagon_S4_clbpaddi; // "exagon.S4.clbpaddi"
  8655. case 'n': // 1 string to match.
  8656. if (memcmp(NameR.data()+15, "orm", 3))
  8657. break;
  8658. return Intrinsic::hexagon_S4_clbpnorm; // "exagon.S4.clbpnorm"
  8659. }
  8660. break;
  8661. case 'e': // 1 string to match.
  8662. if (memcmp(NameR.data()+11, "xtractp", 7))
  8663. break;
  8664. return Intrinsic::hexagon_S4_extractp; // "exagon.S4.extractp"
  8665. case 'o': // 1 string to match.
  8666. if (memcmp(NameR.data()+11, "r.andix", 7))
  8667. break;
  8668. return Intrinsic::hexagon_S4_or_andix; // "exagon.S4.or.andix"
  8669. }
  8670. break;
  8671. }
  8672. break;
  8673. }
  8674. break;
  8675. case 19: // 81 strings to match.
  8676. if (memcmp(NameR.data()+0, "exagon.", 7))
  8677. break;
  8678. switch (NameR[7]) {
  8679. default: break;
  8680. case 'A': // 11 strings to match.
  8681. switch (NameR[8]) {
  8682. default: break;
  8683. case '2': // 3 strings to match.
  8684. if (NameR[9] != '.')
  8685. break;
  8686. switch (NameR[10]) {
  8687. default: break;
  8688. case 'c': // 1 string to match.
  8689. if (memcmp(NameR.data()+11, "ombineii", 8))
  8690. break;
  8691. return Intrinsic::hexagon_A2_combineii; // "exagon.A2.combineii"
  8692. case 'v': // 2 strings to match.
  8693. switch (NameR[11]) {
  8694. default: break;
  8695. case 'a': // 1 string to match.
  8696. if (memcmp(NameR.data()+12, "ddb.map", 7))
  8697. break;
  8698. return Intrinsic::hexagon_A2_vaddb_map; // "exagon.A2.vaddb.map"
  8699. case 's': // 1 string to match.
  8700. if (memcmp(NameR.data()+12, "ubb.map", 7))
  8701. break;
  8702. return Intrinsic::hexagon_A2_vsubb_map; // "exagon.A2.vsubb.map"
  8703. }
  8704. break;
  8705. }
  8706. break;
  8707. case '4': // 8 strings to match.
  8708. if (NameR[9] != '.')
  8709. break;
  8710. switch (NameR[10]) {
  8711. default: break;
  8712. case 'b': // 1 string to match.
  8713. if (memcmp(NameR.data()+11, "itspliti", 8))
  8714. break;
  8715. return Intrinsic::hexagon_A4_bitspliti; // "exagon.A4.bitspliti"
  8716. case 'c': // 4 strings to match.
  8717. switch (NameR[11]) {
  8718. default: break;
  8719. case 'o': // 2 strings to match.
  8720. if (memcmp(NameR.data()+12, "mbine", 5))
  8721. break;
  8722. switch (NameR[17]) {
  8723. default: break;
  8724. case 'i': // 1 string to match.
  8725. if (NameR[18] != 'r')
  8726. break;
  8727. return Intrinsic::hexagon_A4_combineir; // "exagon.A4.combineir"
  8728. case 'r': // 1 string to match.
  8729. if (NameR[18] != 'i')
  8730. break;
  8731. return Intrinsic::hexagon_A4_combineri; // "exagon.A4.combineri"
  8732. }
  8733. break;
  8734. case 'r': // 2 strings to match.
  8735. if (memcmp(NameR.data()+12, "ound.r", 6))
  8736. break;
  8737. switch (NameR[18]) {
  8738. default: break;
  8739. case 'i': // 1 string to match.
  8740. return Intrinsic::hexagon_A4_cround_ri; // "exagon.A4.cround.ri"
  8741. case 'r': // 1 string to match.
  8742. return Intrinsic::hexagon_A4_cround_rr; // "exagon.A4.cround.rr"
  8743. }
  8744. break;
  8745. }
  8746. break;
  8747. case 'v': // 3 strings to match.
  8748. if (memcmp(NameR.data()+11, "cmp", 3))
  8749. break;
  8750. switch (NameR[14]) {
  8751. default: break;
  8752. case 'b': // 1 string to match.
  8753. if (memcmp(NameR.data()+15, "gtui", 4))
  8754. break;
  8755. return Intrinsic::hexagon_A4_vcmpbgtui; // "exagon.A4.vcmpbgtui"
  8756. case 'h': // 1 string to match.
  8757. if (memcmp(NameR.data()+15, "gtui", 4))
  8758. break;
  8759. return Intrinsic::hexagon_A4_vcmphgtui; // "exagon.A4.vcmphgtui"
  8760. case 'w': // 1 string to match.
  8761. if (memcmp(NameR.data()+15, "gtui", 4))
  8762. break;
  8763. return Intrinsic::hexagon_A4_vcmpwgtui; // "exagon.A4.vcmpwgtui"
  8764. }
  8765. break;
  8766. }
  8767. break;
  8768. }
  8769. break;
  8770. case 'C': // 2 strings to match.
  8771. switch (NameR[8]) {
  8772. default: break;
  8773. case '2': // 1 string to match.
  8774. if (memcmp(NameR.data()+9, ".pxfer.map", 10))
  8775. break;
  8776. return Intrinsic::hexagon_C2_pxfer_map; // "exagon.C2.pxfer.map"
  8777. case '4': // 1 string to match.
  8778. if (memcmp(NameR.data()+9, ".nbitsclri", 10))
  8779. break;
  8780. return Intrinsic::hexagon_C4_nbitsclri; // "exagon.C4.nbitsclri"
  8781. }
  8782. break;
  8783. case 'F': // 12 strings to match.
  8784. if (memcmp(NameR.data()+8, "2.", 2))
  8785. break;
  8786. switch (NameR[10]) {
  8787. default: break;
  8788. case 'c': // 8 strings to match.
  8789. if (memcmp(NameR.data()+11, "onv.", 4))
  8790. break;
  8791. switch (NameR[15]) {
  8792. default: break;
  8793. case 'd': // 4 strings to match.
  8794. switch (NameR[16]) {
  8795. default: break;
  8796. case '2': // 2 strings to match.
  8797. switch (NameR[17]) {
  8798. default: break;
  8799. case 'd': // 1 string to match.
  8800. if (NameR[18] != 'f')
  8801. break;
  8802. return Intrinsic::hexagon_F2_conv_d2df; // "exagon.F2.conv.d2df"
  8803. case 's': // 1 string to match.
  8804. if (NameR[18] != 'f')
  8805. break;
  8806. return Intrinsic::hexagon_F2_conv_d2sf; // "exagon.F2.conv.d2sf"
  8807. }
  8808. break;
  8809. case 'f': // 2 strings to match.
  8810. if (NameR[17] != '2')
  8811. break;
  8812. switch (NameR[18]) {
  8813. default: break;
  8814. case 'd': // 1 string to match.
  8815. return Intrinsic::hexagon_F2_conv_df2d; // "exagon.F2.conv.df2d"
  8816. case 'w': // 1 string to match.
  8817. return Intrinsic::hexagon_F2_conv_df2w; // "exagon.F2.conv.df2w"
  8818. }
  8819. break;
  8820. }
  8821. break;
  8822. case 's': // 2 strings to match.
  8823. if (memcmp(NameR.data()+16, "f2", 2))
  8824. break;
  8825. switch (NameR[18]) {
  8826. default: break;
  8827. case 'd': // 1 string to match.
  8828. return Intrinsic::hexagon_F2_conv_sf2d; // "exagon.F2.conv.sf2d"
  8829. case 'w': // 1 string to match.
  8830. return Intrinsic::hexagon_F2_conv_sf2w; // "exagon.F2.conv.sf2w"
  8831. }
  8832. break;
  8833. case 'w': // 2 strings to match.
  8834. if (NameR[16] != '2')
  8835. break;
  8836. switch (NameR[17]) {
  8837. default: break;
  8838. case 'd': // 1 string to match.
  8839. if (NameR[18] != 'f')
  8840. break;
  8841. return Intrinsic::hexagon_F2_conv_w2df; // "exagon.F2.conv.w2df"
  8842. case 's': // 1 string to match.
  8843. if (NameR[18] != 'f')
  8844. break;
  8845. return Intrinsic::hexagon_F2_conv_w2sf; // "exagon.F2.conv.w2sf"
  8846. }
  8847. break;
  8848. }
  8849. break;
  8850. case 'd': // 2 strings to match.
  8851. if (memcmp(NameR.data()+11, "ffm", 3))
  8852. break;
  8853. switch (NameR[14]) {
  8854. default: break;
  8855. case 'a': // 1 string to match.
  8856. if (memcmp(NameR.data()+15, ".lib", 4))
  8857. break;
  8858. return Intrinsic::hexagon_F2_dffma_lib; // "exagon.F2.dffma.lib"
  8859. case 's': // 1 string to match.
  8860. if (memcmp(NameR.data()+15, ".lib", 4))
  8861. break;
  8862. return Intrinsic::hexagon_F2_dffms_lib; // "exagon.F2.dffms.lib"
  8863. }
  8864. break;
  8865. case 's': // 2 strings to match.
  8866. if (memcmp(NameR.data()+11, "ffm", 3))
  8867. break;
  8868. switch (NameR[14]) {
  8869. default: break;
  8870. case 'a': // 1 string to match.
  8871. if (memcmp(NameR.data()+15, ".lib", 4))
  8872. break;
  8873. return Intrinsic::hexagon_F2_sffma_lib; // "exagon.F2.sffma.lib"
  8874. case 's': // 1 string to match.
  8875. if (memcmp(NameR.data()+15, ".lib", 4))
  8876. break;
  8877. return Intrinsic::hexagon_F2_sffms_lib; // "exagon.F2.sffms.lib"
  8878. }
  8879. break;
  8880. }
  8881. break;
  8882. case 'M': // 44 strings to match.
  8883. switch (NameR[8]) {
  8884. default: break;
  8885. case '2': // 41 strings to match.
  8886. if (NameR[9] != '.')
  8887. break;
  8888. switch (NameR[10]) {
  8889. default: break;
  8890. case 'c': // 8 strings to match.
  8891. switch (NameR[11]) {
  8892. default: break;
  8893. case 'm': // 6 strings to match.
  8894. switch (NameR[12]) {
  8895. default: break;
  8896. case 'a': // 2 strings to match.
  8897. if (memcmp(NameR.data()+13, "csc.s", 5))
  8898. break;
  8899. switch (NameR[18]) {
  8900. default: break;
  8901. case '0': // 1 string to match.
  8902. return Intrinsic::hexagon_M2_cmacsc_s0; // "exagon.M2.cmacsc.s0"
  8903. case '1': // 1 string to match.
  8904. return Intrinsic::hexagon_M2_cmacsc_s1; // "exagon.M2.cmacsc.s1"
  8905. }
  8906. break;
  8907. case 'p': // 4 strings to match.
  8908. if (NameR[13] != 'y')
  8909. break;
  8910. switch (NameR[14]) {
  8911. default: break;
  8912. case 'r': // 2 strings to match.
  8913. if (memcmp(NameR.data()+15, "s.s", 3))
  8914. break;
  8915. switch (NameR[18]) {
  8916. default: break;
  8917. case '0': // 1 string to match.
  8918. return Intrinsic::hexagon_M2_cmpyrs_s0; // "exagon.M2.cmpyrs.s0"
  8919. case '1': // 1 string to match.
  8920. return Intrinsic::hexagon_M2_cmpyrs_s1; // "exagon.M2.cmpyrs.s1"
  8921. }
  8922. break;
  8923. case 's': // 2 strings to match.
  8924. if (memcmp(NameR.data()+15, "c.s", 3))
  8925. break;
  8926. switch (NameR[18]) {
  8927. default: break;
  8928. case '0': // 1 string to match.
  8929. return Intrinsic::hexagon_M2_cmpysc_s0; // "exagon.M2.cmpysc.s0"
  8930. case '1': // 1 string to match.
  8931. return Intrinsic::hexagon_M2_cmpysc_s1; // "exagon.M2.cmpysc.s1"
  8932. }
  8933. break;
  8934. }
  8935. break;
  8936. }
  8937. break;
  8938. case 'n': // 2 strings to match.
  8939. if (memcmp(NameR.data()+12, "acsc.s", 6))
  8940. break;
  8941. switch (NameR[18]) {
  8942. default: break;
  8943. case '0': // 1 string to match.
  8944. return Intrinsic::hexagon_M2_cnacsc_s0; // "exagon.M2.cnacsc.s0"
  8945. case '1': // 1 string to match.
  8946. return Intrinsic::hexagon_M2_cnacsc_s1; // "exagon.M2.cnacsc.s1"
  8947. }
  8948. break;
  8949. }
  8950. break;
  8951. case 'h': // 2 strings to match.
  8952. if (memcmp(NameR.data()+11, "mmpy", 4))
  8953. break;
  8954. switch (NameR[15]) {
  8955. default: break;
  8956. case 'h': // 1 string to match.
  8957. if (memcmp(NameR.data()+16, ".s1", 3))
  8958. break;
  8959. return Intrinsic::hexagon_M2_hmmpyh_s1; // "exagon.M2.hmmpyh.s1"
  8960. case 'l': // 1 string to match.
  8961. if (memcmp(NameR.data()+16, ".s1", 3))
  8962. break;
  8963. return Intrinsic::hexagon_M2_hmmpyl_s1; // "exagon.M2.hmmpyl.s1"
  8964. }
  8965. break;
  8966. case 'm': // 21 strings to match.
  8967. switch (NameR[11]) {
  8968. default: break;
  8969. case 'm': // 12 strings to match.
  8970. switch (NameR[12]) {
  8971. default: break;
  8972. case 'a': // 4 strings to match.
  8973. if (NameR[13] != 'c')
  8974. break;
  8975. switch (NameR[14]) {
  8976. default: break;
  8977. case 'h': // 2 strings to match.
  8978. if (memcmp(NameR.data()+15, "s.s", 3))
  8979. break;
  8980. switch (NameR[18]) {
  8981. default: break;
  8982. case '0': // 1 string to match.
  8983. return Intrinsic::hexagon_M2_mmachs_s0; // "exagon.M2.mmachs.s0"
  8984. case '1': // 1 string to match.
  8985. return Intrinsic::hexagon_M2_mmachs_s1; // "exagon.M2.mmachs.s1"
  8986. }
  8987. break;
  8988. case 'l': // 2 strings to match.
  8989. if (memcmp(NameR.data()+15, "s.s", 3))
  8990. break;
  8991. switch (NameR[18]) {
  8992. default: break;
  8993. case '0': // 1 string to match.
  8994. return Intrinsic::hexagon_M2_mmacls_s0; // "exagon.M2.mmacls.s0"
  8995. case '1': // 1 string to match.
  8996. return Intrinsic::hexagon_M2_mmacls_s1; // "exagon.M2.mmacls.s1"
  8997. }
  8998. break;
  8999. }
  9000. break;
  9001. case 'p': // 8 strings to match.
  9002. if (NameR[13] != 'y')
  9003. break;
  9004. switch (NameR[14]) {
  9005. default: break;
  9006. case 'h': // 2 strings to match.
  9007. if (memcmp(NameR.data()+15, ".rs", 3))
  9008. break;
  9009. switch (NameR[18]) {
  9010. default: break;
  9011. case '0': // 1 string to match.
  9012. return Intrinsic::hexagon_M2_mmpyh_rs0; // "exagon.M2.mmpyh.rs0"
  9013. case '1': // 1 string to match.
  9014. return Intrinsic::hexagon_M2_mmpyh_rs1; // "exagon.M2.mmpyh.rs1"
  9015. }
  9016. break;
  9017. case 'l': // 2 strings to match.
  9018. if (memcmp(NameR.data()+15, ".rs", 3))
  9019. break;
  9020. switch (NameR[18]) {
  9021. default: break;
  9022. case '0': // 1 string to match.
  9023. return Intrinsic::hexagon_M2_mmpyl_rs0; // "exagon.M2.mmpyl.rs0"
  9024. case '1': // 1 string to match.
  9025. return Intrinsic::hexagon_M2_mmpyl_rs1; // "exagon.M2.mmpyl.rs1"
  9026. }
  9027. break;
  9028. case 'u': // 4 strings to match.
  9029. switch (NameR[15]) {
  9030. default: break;
  9031. case 'h': // 2 strings to match.
  9032. if (memcmp(NameR.data()+16, ".s", 2))
  9033. break;
  9034. switch (NameR[18]) {
  9035. default: break;
  9036. case '0': // 1 string to match.
  9037. return Intrinsic::hexagon_M2_mmpyuh_s0; // "exagon.M2.mmpyuh.s0"
  9038. case '1': // 1 string to match.
  9039. return Intrinsic::hexagon_M2_mmpyuh_s1; // "exagon.M2.mmpyuh.s1"
  9040. }
  9041. break;
  9042. case 'l': // 2 strings to match.
  9043. if (memcmp(NameR.data()+16, ".s", 2))
  9044. break;
  9045. switch (NameR[18]) {
  9046. default: break;
  9047. case '0': // 1 string to match.
  9048. return Intrinsic::hexagon_M2_mmpyul_s0; // "exagon.M2.mmpyul.s0"
  9049. case '1': // 1 string to match.
  9050. return Intrinsic::hexagon_M2_mmpyul_s1; // "exagon.M2.mmpyul.s1"
  9051. }
  9052. break;
  9053. }
  9054. break;
  9055. }
  9056. break;
  9057. }
  9058. break;
  9059. case 'p': // 9 strings to match.
  9060. if (memcmp(NameR.data()+12, "y.", 2))
  9061. break;
  9062. switch (NameR[14]) {
  9063. default: break;
  9064. case 'h': // 4 strings to match.
  9065. switch (NameR[15]) {
  9066. default: break;
  9067. case 'h': // 2 strings to match.
  9068. if (memcmp(NameR.data()+16, ".s", 2))
  9069. break;
  9070. switch (NameR[18]) {
  9071. default: break;
  9072. case '0': // 1 string to match.
  9073. return Intrinsic::hexagon_M2_mpy_hh_s0; // "exagon.M2.mpy.hh.s0"
  9074. case '1': // 1 string to match.
  9075. return Intrinsic::hexagon_M2_mpy_hh_s1; // "exagon.M2.mpy.hh.s1"
  9076. }
  9077. break;
  9078. case 'l': // 2 strings to match.
  9079. if (memcmp(NameR.data()+16, ".s", 2))
  9080. break;
  9081. switch (NameR[18]) {
  9082. default: break;
  9083. case '0': // 1 string to match.
  9084. return Intrinsic::hexagon_M2_mpy_hl_s0; // "exagon.M2.mpy.hl.s0"
  9085. case '1': // 1 string to match.
  9086. return Intrinsic::hexagon_M2_mpy_hl_s1; // "exagon.M2.mpy.hl.s1"
  9087. }
  9088. break;
  9089. }
  9090. break;
  9091. case 'l': // 4 strings to match.
  9092. switch (NameR[15]) {
  9093. default: break;
  9094. case 'h': // 2 strings to match.
  9095. if (memcmp(NameR.data()+16, ".s", 2))
  9096. break;
  9097. switch (NameR[18]) {
  9098. default: break;
  9099. case '0': // 1 string to match.
  9100. return Intrinsic::hexagon_M2_mpy_lh_s0; // "exagon.M2.mpy.lh.s0"
  9101. case '1': // 1 string to match.
  9102. return Intrinsic::hexagon_M2_mpy_lh_s1; // "exagon.M2.mpy.lh.s1"
  9103. }
  9104. break;
  9105. case 'l': // 2 strings to match.
  9106. if (memcmp(NameR.data()+16, ".s", 2))
  9107. break;
  9108. switch (NameR[18]) {
  9109. default: break;
  9110. case '0': // 1 string to match.
  9111. return Intrinsic::hexagon_M2_mpy_ll_s0; // "exagon.M2.mpy.ll.s0"
  9112. case '1': // 1 string to match.
  9113. return Intrinsic::hexagon_M2_mpy_ll_s1; // "exagon.M2.mpy.ll.s1"
  9114. }
  9115. break;
  9116. }
  9117. break;
  9118. case 'u': // 1 string to match.
  9119. if (memcmp(NameR.data()+15, "p.s1", 4))
  9120. break;
  9121. return Intrinsic::hexagon_M2_mpy_up_s1; // "exagon.M2.mpy.up.s1"
  9122. }
  9123. break;
  9124. }
  9125. break;
  9126. case 'v': // 10 strings to match.
  9127. switch (NameR[11]) {
  9128. default: break;
  9129. case 'a': // 2 strings to match.
  9130. if (memcmp(NameR.data()+12, "bsdiff", 6))
  9131. break;
  9132. switch (NameR[18]) {
  9133. default: break;
  9134. case 'h': // 1 string to match.
  9135. return Intrinsic::hexagon_M2_vabsdiffh; // "exagon.M2.vabsdiffh"
  9136. case 'w': // 1 string to match.
  9137. return Intrinsic::hexagon_M2_vabsdiffw; // "exagon.M2.vabsdiffw"
  9138. }
  9139. break;
  9140. case 'd': // 4 strings to match.
  9141. if (NameR[12] != 'm')
  9142. break;
  9143. switch (NameR[13]) {
  9144. default: break;
  9145. case 'a': // 2 strings to match.
  9146. if (memcmp(NameR.data()+14, "cs.s", 4))
  9147. break;
  9148. switch (NameR[18]) {
  9149. default: break;
  9150. case '0': // 1 string to match.
  9151. return Intrinsic::hexagon_M2_vdmacs_s0; // "exagon.M2.vdmacs.s0"
  9152. case '1': // 1 string to match.
  9153. return Intrinsic::hexagon_M2_vdmacs_s1; // "exagon.M2.vdmacs.s1"
  9154. }
  9155. break;
  9156. case 'p': // 2 strings to match.
  9157. if (memcmp(NameR.data()+14, "ys.s", 4))
  9158. break;
  9159. switch (NameR[18]) {
  9160. default: break;
  9161. case '0': // 1 string to match.
  9162. return Intrinsic::hexagon_M2_vdmpys_s0; // "exagon.M2.vdmpys.s0"
  9163. case '1': // 1 string to match.
  9164. return Intrinsic::hexagon_M2_vdmpys_s1; // "exagon.M2.vdmpys.s1"
  9165. }
  9166. break;
  9167. }
  9168. break;
  9169. case 'm': // 4 strings to match.
  9170. switch (NameR[12]) {
  9171. default: break;
  9172. case 'a': // 2 strings to match.
  9173. if (memcmp(NameR.data()+13, "c2s.s", 5))
  9174. break;
  9175. switch (NameR[18]) {
  9176. default: break;
  9177. case '0': // 1 string to match.
  9178. return Intrinsic::hexagon_M2_vmac2s_s0; // "exagon.M2.vmac2s.s0"
  9179. case '1': // 1 string to match.
  9180. return Intrinsic::hexagon_M2_vmac2s_s1; // "exagon.M2.vmac2s.s1"
  9181. }
  9182. break;
  9183. case 'p': // 2 strings to match.
  9184. if (memcmp(NameR.data()+13, "y2s.s", 5))
  9185. break;
  9186. switch (NameR[18]) {
  9187. default: break;
  9188. case '0': // 1 string to match.
  9189. return Intrinsic::hexagon_M2_vmpy2s_s0; // "exagon.M2.vmpy2s.s0"
  9190. case '1': // 1 string to match.
  9191. return Intrinsic::hexagon_M2_vmpy2s_s1; // "exagon.M2.vmpy2s.s1"
  9192. }
  9193. break;
  9194. }
  9195. break;
  9196. }
  9197. break;
  9198. }
  9199. break;
  9200. case '4': // 3 strings to match.
  9201. if (NameR[9] != '.')
  9202. break;
  9203. switch (NameR[10]) {
  9204. default: break;
  9205. case 'c': // 2 strings to match.
  9206. if (memcmp(NameR.data()+11, "mpy", 3))
  9207. break;
  9208. switch (NameR[14]) {
  9209. default: break;
  9210. case 'i': // 1 string to match.
  9211. if (memcmp(NameR.data()+15, ".whc", 4))
  9212. break;
  9213. return Intrinsic::hexagon_M4_cmpyi_whc; // "exagon.M4.cmpyi.whc"
  9214. case 'r': // 1 string to match.
  9215. if (memcmp(NameR.data()+15, ".whc", 4))
  9216. break;
  9217. return Intrinsic::hexagon_M4_cmpyr_whc; // "exagon.M4.cmpyr.whc"
  9218. }
  9219. break;
  9220. case 'p': // 1 string to match.
  9221. if (memcmp(NameR.data()+11, "mpyw.acc", 8))
  9222. break;
  9223. return Intrinsic::hexagon_M4_pmpyw_acc; // "exagon.M4.pmpyw.acc"
  9224. }
  9225. break;
  9226. }
  9227. break;
  9228. case 'S': // 12 strings to match.
  9229. switch (NameR[8]) {
  9230. default: break;
  9231. case '2': // 4 strings to match.
  9232. if (NameR[9] != '.')
  9233. break;
  9234. switch (NameR[10]) {
  9235. default: break;
  9236. case 'e': // 1 string to match.
  9237. if (memcmp(NameR.data()+11, "xtractup", 8))
  9238. break;
  9239. return Intrinsic::hexagon_S2_extractup; // "exagon.S2.extractup"
  9240. case 'i': // 1 string to match.
  9241. if (memcmp(NameR.data()+11, "nsert.rp", 8))
  9242. break;
  9243. return Intrinsic::hexagon_S2_insert_rp; // "exagon.S2.insert.rp"
  9244. case 'v': // 2 strings to match.
  9245. if (memcmp(NameR.data()+11, "splice", 6))
  9246. break;
  9247. switch (NameR[17]) {
  9248. default: break;
  9249. case 'i': // 1 string to match.
  9250. if (NameR[18] != 'b')
  9251. break;
  9252. return Intrinsic::hexagon_S2_vspliceib; // "exagon.S2.vspliceib"
  9253. case 'r': // 1 string to match.
  9254. if (NameR[18] != 'b')
  9255. break;
  9256. return Intrinsic::hexagon_S2_vsplicerb; // "exagon.S2.vsplicerb"
  9257. }
  9258. break;
  9259. }
  9260. break;
  9261. case '4': // 7 strings to match.
  9262. if (NameR[9] != '.')
  9263. break;
  9264. switch (NameR[10]) {
  9265. default: break;
  9266. case 'n': // 2 strings to match.
  9267. if (memcmp(NameR.data()+11, "tstbit.", 7))
  9268. break;
  9269. switch (NameR[18]) {
  9270. default: break;
  9271. case 'i': // 1 string to match.
  9272. return Intrinsic::hexagon_S4_ntstbit_i; // "exagon.S4.ntstbit.i"
  9273. case 'r': // 1 string to match.
  9274. return Intrinsic::hexagon_S4_ntstbit_r; // "exagon.S4.ntstbit.r"
  9275. }
  9276. break;
  9277. case 'v': // 5 strings to match.
  9278. switch (NameR[11]) {
  9279. default: break;
  9280. case 'r': // 1 string to match.
  9281. if (memcmp(NameR.data()+12, "crotate", 7))
  9282. break;
  9283. return Intrinsic::hexagon_S4_vrcrotate; // "exagon.S4.vrcrotate"
  9284. case 'x': // 4 strings to match.
  9285. switch (NameR[12]) {
  9286. default: break;
  9287. case 'a': // 2 strings to match.
  9288. if (memcmp(NameR.data()+13, "ddsub", 5))
  9289. break;
  9290. switch (NameR[18]) {
  9291. default: break;
  9292. case 'h': // 1 string to match.
  9293. return Intrinsic::hexagon_S4_vxaddsubh; // "exagon.S4.vxaddsubh"
  9294. case 'w': // 1 string to match.
  9295. return Intrinsic::hexagon_S4_vxaddsubw; // "exagon.S4.vxaddsubw"
  9296. }
  9297. break;
  9298. case 's': // 2 strings to match.
  9299. if (memcmp(NameR.data()+13, "ubadd", 5))
  9300. break;
  9301. switch (NameR[18]) {
  9302. default: break;
  9303. case 'h': // 1 string to match.
  9304. return Intrinsic::hexagon_S4_vxsubaddh; // "exagon.S4.vxsubaddh"
  9305. case 'w': // 1 string to match.
  9306. return Intrinsic::hexagon_S4_vxsubaddw; // "exagon.S4.vxsubaddw"
  9307. }
  9308. break;
  9309. }
  9310. break;
  9311. }
  9312. break;
  9313. }
  9314. break;
  9315. case '5': // 1 string to match.
  9316. if (memcmp(NameR.data()+9, ".popcountp", 10))
  9317. break;
  9318. return Intrinsic::hexagon_S5_popcountp; // "exagon.S5.popcountp"
  9319. }
  9320. break;
  9321. }
  9322. break;
  9323. case 20: // 95 strings to match.
  9324. if (memcmp(NameR.data()+0, "exagon.", 7))
  9325. break;
  9326. switch (NameR[7]) {
  9327. default: break;
  9328. case 'A': // 4 strings to match.
  9329. if (memcmp(NameR.data()+8, "2.combine.", 10))
  9330. break;
  9331. switch (NameR[18]) {
  9332. default: break;
  9333. case 'h': // 2 strings to match.
  9334. switch (NameR[19]) {
  9335. default: break;
  9336. case 'h': // 1 string to match.
  9337. return Intrinsic::hexagon_A2_combine_hh; // "exagon.A2.combine.hh"
  9338. case 'l': // 1 string to match.
  9339. return Intrinsic::hexagon_A2_combine_hl; // "exagon.A2.combine.hl"
  9340. }
  9341. break;
  9342. case 'l': // 2 strings to match.
  9343. switch (NameR[19]) {
  9344. default: break;
  9345. case 'h': // 1 string to match.
  9346. return Intrinsic::hexagon_A2_combine_lh; // "exagon.A2.combine.lh"
  9347. case 'l': // 1 string to match.
  9348. return Intrinsic::hexagon_A2_combine_ll; // "exagon.A2.combine.ll"
  9349. }
  9350. break;
  9351. }
  9352. break;
  9353. case 'F': // 10 strings to match.
  9354. if (memcmp(NameR.data()+8, "2.conv.", 7))
  9355. break;
  9356. switch (NameR[15]) {
  9357. default: break;
  9358. case 'd': // 3 strings to match.
  9359. if (memcmp(NameR.data()+16, "f2", 2))
  9360. break;
  9361. switch (NameR[18]) {
  9362. default: break;
  9363. case 's': // 1 string to match.
  9364. if (NameR[19] != 'f')
  9365. break;
  9366. return Intrinsic::hexagon_F2_conv_df2sf; // "exagon.F2.conv.df2sf"
  9367. case 'u': // 2 strings to match.
  9368. switch (NameR[19]) {
  9369. default: break;
  9370. case 'd': // 1 string to match.
  9371. return Intrinsic::hexagon_F2_conv_df2ud; // "exagon.F2.conv.df2ud"
  9372. case 'w': // 1 string to match.
  9373. return Intrinsic::hexagon_F2_conv_df2uw; // "exagon.F2.conv.df2uw"
  9374. }
  9375. break;
  9376. }
  9377. break;
  9378. case 's': // 3 strings to match.
  9379. if (memcmp(NameR.data()+16, "f2", 2))
  9380. break;
  9381. switch (NameR[18]) {
  9382. default: break;
  9383. case 'd': // 1 string to match.
  9384. if (NameR[19] != 'f')
  9385. break;
  9386. return Intrinsic::hexagon_F2_conv_sf2df; // "exagon.F2.conv.sf2df"
  9387. case 'u': // 2 strings to match.
  9388. switch (NameR[19]) {
  9389. default: break;
  9390. case 'd': // 1 string to match.
  9391. return Intrinsic::hexagon_F2_conv_sf2ud; // "exagon.F2.conv.sf2ud"
  9392. case 'w': // 1 string to match.
  9393. return Intrinsic::hexagon_F2_conv_sf2uw; // "exagon.F2.conv.sf2uw"
  9394. }
  9395. break;
  9396. }
  9397. break;
  9398. case 'u': // 4 strings to match.
  9399. switch (NameR[16]) {
  9400. default: break;
  9401. case 'd': // 2 strings to match.
  9402. if (NameR[17] != '2')
  9403. break;
  9404. switch (NameR[18]) {
  9405. default: break;
  9406. case 'd': // 1 string to match.
  9407. if (NameR[19] != 'f')
  9408. break;
  9409. return Intrinsic::hexagon_F2_conv_ud2df; // "exagon.F2.conv.ud2df"
  9410. case 's': // 1 string to match.
  9411. if (NameR[19] != 'f')
  9412. break;
  9413. return Intrinsic::hexagon_F2_conv_ud2sf; // "exagon.F2.conv.ud2sf"
  9414. }
  9415. break;
  9416. case 'w': // 2 strings to match.
  9417. if (NameR[17] != '2')
  9418. break;
  9419. switch (NameR[18]) {
  9420. default: break;
  9421. case 'd': // 1 string to match.
  9422. if (NameR[19] != 'f')
  9423. break;
  9424. return Intrinsic::hexagon_F2_conv_uw2df; // "exagon.F2.conv.uw2df"
  9425. case 's': // 1 string to match.
  9426. if (NameR[19] != 'f')
  9427. break;
  9428. return Intrinsic::hexagon_F2_conv_uw2sf; // "exagon.F2.conv.uw2sf"
  9429. }
  9430. break;
  9431. }
  9432. break;
  9433. }
  9434. break;
  9435. case 'M': // 58 strings to match.
  9436. switch (NameR[8]) {
  9437. default: break;
  9438. case '2': // 49 strings to match.
  9439. if (NameR[9] != '.')
  9440. break;
  9441. switch (NameR[10]) {
  9442. default: break;
  9443. case 'c': // 2 strings to match.
  9444. if (memcmp(NameR.data()+11, "mpyrsc.s", 8))
  9445. break;
  9446. switch (NameR[19]) {
  9447. default: break;
  9448. case '0': // 1 string to match.
  9449. return Intrinsic::hexagon_M2_cmpyrsc_s0; // "exagon.M2.cmpyrsc.s0"
  9450. case '1': // 1 string to match.
  9451. return Intrinsic::hexagon_M2_cmpyrsc_s1; // "exagon.M2.cmpyrsc.s1"
  9452. }
  9453. break;
  9454. case 'd': // 2 strings to match.
  9455. if (memcmp(NameR.data()+11, "pmpy", 4))
  9456. break;
  9457. switch (NameR[15]) {
  9458. default: break;
  9459. case 's': // 1 string to match.
  9460. if (memcmp(NameR.data()+16, "s.s0", 4))
  9461. break;
  9462. return Intrinsic::hexagon_M2_dpmpyss_s0; // "exagon.M2.dpmpyss.s0"
  9463. case 'u': // 1 string to match.
  9464. if (memcmp(NameR.data()+16, "u.s0", 4))
  9465. break;
  9466. return Intrinsic::hexagon_M2_dpmpyuu_s0; // "exagon.M2.dpmpyuu.s0"
  9467. }
  9468. break;
  9469. case 'h': // 2 strings to match.
  9470. if (memcmp(NameR.data()+11, "mmpy", 4))
  9471. break;
  9472. switch (NameR[15]) {
  9473. default: break;
  9474. case 'h': // 1 string to match.
  9475. if (memcmp(NameR.data()+16, ".rs1", 4))
  9476. break;
  9477. return Intrinsic::hexagon_M2_hmmpyh_rs1; // "exagon.M2.hmmpyh.rs1"
  9478. case 'l': // 1 string to match.
  9479. if (memcmp(NameR.data()+16, ".rs1", 4))
  9480. break;
  9481. return Intrinsic::hexagon_M2_hmmpyl_rs1; // "exagon.M2.hmmpyl.rs1"
  9482. }
  9483. break;
  9484. case 'm': // 28 strings to match.
  9485. switch (NameR[11]) {
  9486. default: break;
  9487. case 'm': // 12 strings to match.
  9488. switch (NameR[12]) {
  9489. default: break;
  9490. case 'a': // 8 strings to match.
  9491. if (NameR[13] != 'c')
  9492. break;
  9493. switch (NameR[14]) {
  9494. default: break;
  9495. case 'h': // 2 strings to match.
  9496. if (memcmp(NameR.data()+15, "s.rs", 4))
  9497. break;
  9498. switch (NameR[19]) {
  9499. default: break;
  9500. case '0': // 1 string to match.
  9501. return Intrinsic::hexagon_M2_mmachs_rs0; // "exagon.M2.mmachs.rs0"
  9502. case '1': // 1 string to match.
  9503. return Intrinsic::hexagon_M2_mmachs_rs1; // "exagon.M2.mmachs.rs1"
  9504. }
  9505. break;
  9506. case 'l': // 2 strings to match.
  9507. if (memcmp(NameR.data()+15, "s.rs", 4))
  9508. break;
  9509. switch (NameR[19]) {
  9510. default: break;
  9511. case '0': // 1 string to match.
  9512. return Intrinsic::hexagon_M2_mmacls_rs0; // "exagon.M2.mmacls.rs0"
  9513. case '1': // 1 string to match.
  9514. return Intrinsic::hexagon_M2_mmacls_rs1; // "exagon.M2.mmacls.rs1"
  9515. }
  9516. break;
  9517. case 'u': // 4 strings to match.
  9518. switch (NameR[15]) {
  9519. default: break;
  9520. case 'h': // 2 strings to match.
  9521. if (memcmp(NameR.data()+16, "s.s", 3))
  9522. break;
  9523. switch (NameR[19]) {
  9524. default: break;
  9525. case '0': // 1 string to match.
  9526. return Intrinsic::hexagon_M2_mmacuhs_s0; // "exagon.M2.mmacuhs.s0"
  9527. case '1': // 1 string to match.
  9528. return Intrinsic::hexagon_M2_mmacuhs_s1; // "exagon.M2.mmacuhs.s1"
  9529. }
  9530. break;
  9531. case 'l': // 2 strings to match.
  9532. if (memcmp(NameR.data()+16, "s.s", 3))
  9533. break;
  9534. switch (NameR[19]) {
  9535. default: break;
  9536. case '0': // 1 string to match.
  9537. return Intrinsic::hexagon_M2_mmaculs_s0; // "exagon.M2.mmaculs.s0"
  9538. case '1': // 1 string to match.
  9539. return Intrinsic::hexagon_M2_mmaculs_s1; // "exagon.M2.mmaculs.s1"
  9540. }
  9541. break;
  9542. }
  9543. break;
  9544. }
  9545. break;
  9546. case 'p': // 4 strings to match.
  9547. if (memcmp(NameR.data()+13, "yu", 2))
  9548. break;
  9549. switch (NameR[15]) {
  9550. default: break;
  9551. case 'h': // 2 strings to match.
  9552. if (memcmp(NameR.data()+16, ".rs", 3))
  9553. break;
  9554. switch (NameR[19]) {
  9555. default: break;
  9556. case '0': // 1 string to match.
  9557. return Intrinsic::hexagon_M2_mmpyuh_rs0; // "exagon.M2.mmpyuh.rs0"
  9558. case '1': // 1 string to match.
  9559. return Intrinsic::hexagon_M2_mmpyuh_rs1; // "exagon.M2.mmpyuh.rs1"
  9560. }
  9561. break;
  9562. case 'l': // 2 strings to match.
  9563. if (memcmp(NameR.data()+16, ".rs", 3))
  9564. break;
  9565. switch (NameR[19]) {
  9566. default: break;
  9567. case '0': // 1 string to match.
  9568. return Intrinsic::hexagon_M2_mmpyul_rs0; // "exagon.M2.mmpyul.rs0"
  9569. case '1': // 1 string to match.
  9570. return Intrinsic::hexagon_M2_mmpyul_rs1; // "exagon.M2.mmpyul.rs1"
  9571. }
  9572. break;
  9573. }
  9574. break;
  9575. }
  9576. break;
  9577. case 'p': // 16 strings to match.
  9578. if (NameR[12] != 'y')
  9579. break;
  9580. switch (NameR[13]) {
  9581. default: break;
  9582. case 'd': // 8 strings to match.
  9583. if (NameR[14] != '.')
  9584. break;
  9585. switch (NameR[15]) {
  9586. default: break;
  9587. case 'h': // 4 strings to match.
  9588. switch (NameR[16]) {
  9589. default: break;
  9590. case 'h': // 2 strings to match.
  9591. if (memcmp(NameR.data()+17, ".s", 2))
  9592. break;
  9593. switch (NameR[19]) {
  9594. default: break;
  9595. case '0': // 1 string to match.
  9596. return Intrinsic::hexagon_M2_mpyd_hh_s0; // "exagon.M2.mpyd.hh.s0"
  9597. case '1': // 1 string to match.
  9598. return Intrinsic::hexagon_M2_mpyd_hh_s1; // "exagon.M2.mpyd.hh.s1"
  9599. }
  9600. break;
  9601. case 'l': // 2 strings to match.
  9602. if (memcmp(NameR.data()+17, ".s", 2))
  9603. break;
  9604. switch (NameR[19]) {
  9605. default: break;
  9606. case '0': // 1 string to match.
  9607. return Intrinsic::hexagon_M2_mpyd_hl_s0; // "exagon.M2.mpyd.hl.s0"
  9608. case '1': // 1 string to match.
  9609. return Intrinsic::hexagon_M2_mpyd_hl_s1; // "exagon.M2.mpyd.hl.s1"
  9610. }
  9611. break;
  9612. }
  9613. break;
  9614. case 'l': // 4 strings to match.
  9615. switch (NameR[16]) {
  9616. default: break;
  9617. case 'h': // 2 strings to match.
  9618. if (memcmp(NameR.data()+17, ".s", 2))
  9619. break;
  9620. switch (NameR[19]) {
  9621. default: break;
  9622. case '0': // 1 string to match.
  9623. return Intrinsic::hexagon_M2_mpyd_lh_s0; // "exagon.M2.mpyd.lh.s0"
  9624. case '1': // 1 string to match.
  9625. return Intrinsic::hexagon_M2_mpyd_lh_s1; // "exagon.M2.mpyd.lh.s1"
  9626. }
  9627. break;
  9628. case 'l': // 2 strings to match.
  9629. if (memcmp(NameR.data()+17, ".s", 2))
  9630. break;
  9631. switch (NameR[19]) {
  9632. default: break;
  9633. case '0': // 1 string to match.
  9634. return Intrinsic::hexagon_M2_mpyd_ll_s0; // "exagon.M2.mpyd.ll.s0"
  9635. case '1': // 1 string to match.
  9636. return Intrinsic::hexagon_M2_mpyd_ll_s1; // "exagon.M2.mpyd.ll.s1"
  9637. }
  9638. break;
  9639. }
  9640. break;
  9641. }
  9642. break;
  9643. case 'u': // 8 strings to match.
  9644. if (NameR[14] != '.')
  9645. break;
  9646. switch (NameR[15]) {
  9647. default: break;
  9648. case 'h': // 4 strings to match.
  9649. switch (NameR[16]) {
  9650. default: break;
  9651. case 'h': // 2 strings to match.
  9652. if (memcmp(NameR.data()+17, ".s", 2))
  9653. break;
  9654. switch (NameR[19]) {
  9655. default: break;
  9656. case '0': // 1 string to match.
  9657. return Intrinsic::hexagon_M2_mpyu_hh_s0; // "exagon.M2.mpyu.hh.s0"
  9658. case '1': // 1 string to match.
  9659. return Intrinsic::hexagon_M2_mpyu_hh_s1; // "exagon.M2.mpyu.hh.s1"
  9660. }
  9661. break;
  9662. case 'l': // 2 strings to match.
  9663. if (memcmp(NameR.data()+17, ".s", 2))
  9664. break;
  9665. switch (NameR[19]) {
  9666. default: break;
  9667. case '0': // 1 string to match.
  9668. return Intrinsic::hexagon_M2_mpyu_hl_s0; // "exagon.M2.mpyu.hl.s0"
  9669. case '1': // 1 string to match.
  9670. return Intrinsic::hexagon_M2_mpyu_hl_s1; // "exagon.M2.mpyu.hl.s1"
  9671. }
  9672. break;
  9673. }
  9674. break;
  9675. case 'l': // 4 strings to match.
  9676. switch (NameR[16]) {
  9677. default: break;
  9678. case 'h': // 2 strings to match.
  9679. if (memcmp(NameR.data()+17, ".s", 2))
  9680. break;
  9681. switch (NameR[19]) {
  9682. default: break;
  9683. case '0': // 1 string to match.
  9684. return Intrinsic::hexagon_M2_mpyu_lh_s0; // "exagon.M2.mpyu.lh.s0"
  9685. case '1': // 1 string to match.
  9686. return Intrinsic::hexagon_M2_mpyu_lh_s1; // "exagon.M2.mpyu.lh.s1"
  9687. }
  9688. break;
  9689. case 'l': // 2 strings to match.
  9690. if (memcmp(NameR.data()+17, ".s", 2))
  9691. break;
  9692. switch (NameR[19]) {
  9693. default: break;
  9694. case '0': // 1 string to match.
  9695. return Intrinsic::hexagon_M2_mpyu_ll_s0; // "exagon.M2.mpyu.ll.s0"
  9696. case '1': // 1 string to match.
  9697. return Intrinsic::hexagon_M2_mpyu_ll_s1; // "exagon.M2.mpyu.ll.s1"
  9698. }
  9699. break;
  9700. }
  9701. break;
  9702. }
  9703. break;
  9704. }
  9705. break;
  9706. }
  9707. break;
  9708. case 'v': // 15 strings to match.
  9709. switch (NameR[11]) {
  9710. default: break;
  9711. case 'd': // 2 strings to match.
  9712. if (memcmp(NameR.data()+12, "mpyrs.s", 7))
  9713. break;
  9714. switch (NameR[19]) {
  9715. default: break;
  9716. case '0': // 1 string to match.
  9717. return Intrinsic::hexagon_M2_vdmpyrs_s0; // "exagon.M2.vdmpyrs.s0"
  9718. case '1': // 1 string to match.
  9719. return Intrinsic::hexagon_M2_vdmpyrs_s1; // "exagon.M2.vdmpyrs.s1"
  9720. }
  9721. break;
  9722. case 'm': // 8 strings to match.
  9723. switch (NameR[12]) {
  9724. default: break;
  9725. case 'a': // 4 strings to match.
  9726. if (memcmp(NameR.data()+13, "c2", 2))
  9727. break;
  9728. switch (NameR[15]) {
  9729. default: break;
  9730. case 'e': // 2 strings to match.
  9731. if (memcmp(NameR.data()+16, "s.s", 3))
  9732. break;
  9733. switch (NameR[19]) {
  9734. default: break;
  9735. case '0': // 1 string to match.
  9736. return Intrinsic::hexagon_M2_vmac2es_s0; // "exagon.M2.vmac2es.s0"
  9737. case '1': // 1 string to match.
  9738. return Intrinsic::hexagon_M2_vmac2es_s1; // "exagon.M2.vmac2es.s1"
  9739. }
  9740. break;
  9741. case 's': // 2 strings to match.
  9742. if (memcmp(NameR.data()+16, "u.s", 3))
  9743. break;
  9744. switch (NameR[19]) {
  9745. default: break;
  9746. case '0': // 1 string to match.
  9747. return Intrinsic::hexagon_M2_vmac2su_s0; // "exagon.M2.vmac2su.s0"
  9748. case '1': // 1 string to match.
  9749. return Intrinsic::hexagon_M2_vmac2su_s1; // "exagon.M2.vmac2su.s1"
  9750. }
  9751. break;
  9752. }
  9753. break;
  9754. case 'p': // 4 strings to match.
  9755. if (memcmp(NameR.data()+13, "y2", 2))
  9756. break;
  9757. switch (NameR[15]) {
  9758. default: break;
  9759. case 'e': // 2 strings to match.
  9760. if (memcmp(NameR.data()+16, "s.s", 3))
  9761. break;
  9762. switch (NameR[19]) {
  9763. default: break;
  9764. case '0': // 1 string to match.
  9765. return Intrinsic::hexagon_M2_vmpy2es_s0; // "exagon.M2.vmpy2es.s0"
  9766. case '1': // 1 string to match.
  9767. return Intrinsic::hexagon_M2_vmpy2es_s1; // "exagon.M2.vmpy2es.s1"
  9768. }
  9769. break;
  9770. case 's': // 2 strings to match.
  9771. if (memcmp(NameR.data()+16, "u.s", 3))
  9772. break;
  9773. switch (NameR[19]) {
  9774. default: break;
  9775. case '0': // 1 string to match.
  9776. return Intrinsic::hexagon_M2_vmpy2su_s0; // "exagon.M2.vmpy2su.s0"
  9777. case '1': // 1 string to match.
  9778. return Intrinsic::hexagon_M2_vmpy2su_s1; // "exagon.M2.vmpy2su.s1"
  9779. }
  9780. break;
  9781. }
  9782. break;
  9783. }
  9784. break;
  9785. case 'r': // 5 strings to match.
  9786. if (memcmp(NameR.data()+12, "cm", 2))
  9787. break;
  9788. switch (NameR[14]) {
  9789. default: break;
  9790. case 'a': // 2 strings to match.
  9791. if (NameR[15] != 'c')
  9792. break;
  9793. switch (NameR[16]) {
  9794. default: break;
  9795. case 'i': // 1 string to match.
  9796. if (memcmp(NameR.data()+17, ".s0", 3))
  9797. break;
  9798. return Intrinsic::hexagon_M2_vrcmaci_s0; // "exagon.M2.vrcmaci.s0"
  9799. case 'r': // 1 string to match.
  9800. if (memcmp(NameR.data()+17, ".s0", 3))
  9801. break;
  9802. return Intrinsic::hexagon_M2_vrcmacr_s0; // "exagon.M2.vrcmacr.s0"
  9803. }
  9804. break;
  9805. case 'p': // 3 strings to match.
  9806. if (NameR[15] != 'y')
  9807. break;
  9808. switch (NameR[16]) {
  9809. default: break;
  9810. case 'i': // 1 string to match.
  9811. if (memcmp(NameR.data()+17, ".s0", 3))
  9812. break;
  9813. return Intrinsic::hexagon_M2_vrcmpyi_s0; // "exagon.M2.vrcmpyi.s0"
  9814. case 'r': // 1 string to match.
  9815. if (memcmp(NameR.data()+17, ".s0", 3))
  9816. break;
  9817. return Intrinsic::hexagon_M2_vrcmpyr_s0; // "exagon.M2.vrcmpyr.s0"
  9818. case 's': // 1 string to match.
  9819. if (memcmp(NameR.data()+17, ".s1", 3))
  9820. break;
  9821. return Intrinsic::hexagon_M2_vrcmpys_s1; // "exagon.M2.vrcmpys.s1"
  9822. }
  9823. break;
  9824. }
  9825. break;
  9826. }
  9827. break;
  9828. }
  9829. break;
  9830. case '4': // 9 strings to match.
  9831. if (NameR[9] != '.')
  9832. break;
  9833. switch (NameR[10]) {
  9834. default: break;
  9835. case 'm': // 4 strings to match.
  9836. if (memcmp(NameR.data()+11, "pyr", 3))
  9837. break;
  9838. switch (NameR[14]) {
  9839. default: break;
  9840. case 'i': // 2 strings to match.
  9841. if (memcmp(NameR.data()+15, ".add", 4))
  9842. break;
  9843. switch (NameR[19]) {
  9844. default: break;
  9845. case 'i': // 1 string to match.
  9846. return Intrinsic::hexagon_M4_mpyri_addi; // "exagon.M4.mpyri.addi"
  9847. case 'r': // 1 string to match.
  9848. return Intrinsic::hexagon_M4_mpyri_addr; // "exagon.M4.mpyri.addr"
  9849. }
  9850. break;
  9851. case 'r': // 2 strings to match.
  9852. if (memcmp(NameR.data()+15, ".add", 4))
  9853. break;
  9854. switch (NameR[19]) {
  9855. default: break;
  9856. case 'i': // 1 string to match.
  9857. return Intrinsic::hexagon_M4_mpyrr_addi; // "exagon.M4.mpyrr.addi"
  9858. case 'r': // 1 string to match.
  9859. return Intrinsic::hexagon_M4_mpyrr_addr; // "exagon.M4.mpyrr.addr"
  9860. }
  9861. break;
  9862. }
  9863. break;
  9864. case 'v': // 5 strings to match.
  9865. switch (NameR[11]) {
  9866. default: break;
  9867. case 'p': // 1 string to match.
  9868. if (memcmp(NameR.data()+12, "mpyh.acc", 8))
  9869. break;
  9870. return Intrinsic::hexagon_M4_vpmpyh_acc; // "exagon.M4.vpmpyh.acc"
  9871. case 'r': // 4 strings to match.
  9872. if (memcmp(NameR.data()+12, "mpy", 3))
  9873. break;
  9874. switch (NameR[15]) {
  9875. default: break;
  9876. case 'e': // 2 strings to match.
  9877. if (memcmp(NameR.data()+16, "h.s", 3))
  9878. break;
  9879. switch (NameR[19]) {
  9880. default: break;
  9881. case '0': // 1 string to match.
  9882. return Intrinsic::hexagon_M4_vrmpyeh_s0; // "exagon.M4.vrmpyeh.s0"
  9883. case '1': // 1 string to match.
  9884. return Intrinsic::hexagon_M4_vrmpyeh_s1; // "exagon.M4.vrmpyeh.s1"
  9885. }
  9886. break;
  9887. case 'o': // 2 strings to match.
  9888. if (memcmp(NameR.data()+16, "h.s", 3))
  9889. break;
  9890. switch (NameR[19]) {
  9891. default: break;
  9892. case '0': // 1 string to match.
  9893. return Intrinsic::hexagon_M4_vrmpyoh_s0; // "exagon.M4.vrmpyoh.s0"
  9894. case '1': // 1 string to match.
  9895. return Intrinsic::hexagon_M4_vrmpyoh_s1; // "exagon.M4.vrmpyoh.s1"
  9896. }
  9897. break;
  9898. }
  9899. break;
  9900. }
  9901. break;
  9902. }
  9903. break;
  9904. }
  9905. break;
  9906. case 'S': // 23 strings to match.
  9907. switch (NameR[8]) {
  9908. default: break;
  9909. case '2': // 17 strings to match.
  9910. if (NameR[9] != '.')
  9911. break;
  9912. switch (NameR[10]) {
  9913. default: break;
  9914. case 'a': // 8 strings to match.
  9915. if (NameR[11] != 's')
  9916. break;
  9917. switch (NameR[12]) {
  9918. default: break;
  9919. case 'l': // 4 strings to match.
  9920. if (NameR[13] != '.')
  9921. break;
  9922. switch (NameR[14]) {
  9923. default: break;
  9924. case 'i': // 2 strings to match.
  9925. if (NameR[15] != '.')
  9926. break;
  9927. switch (NameR[16]) {
  9928. default: break;
  9929. case 'p': // 1 string to match.
  9930. if (memcmp(NameR.data()+17, ".or", 3))
  9931. break;
  9932. return Intrinsic::hexagon_S2_asl_i_p_or; // "exagon.S2.asl.i.p.or"
  9933. case 'r': // 1 string to match.
  9934. if (memcmp(NameR.data()+17, ".or", 3))
  9935. break;
  9936. return Intrinsic::hexagon_S2_asl_i_r_or; // "exagon.S2.asl.i.r.or"
  9937. }
  9938. break;
  9939. case 'r': // 2 strings to match.
  9940. if (NameR[15] != '.')
  9941. break;
  9942. switch (NameR[16]) {
  9943. default: break;
  9944. case 'p': // 1 string to match.
  9945. if (memcmp(NameR.data()+17, ".or", 3))
  9946. break;
  9947. return Intrinsic::hexagon_S2_asl_r_p_or; // "exagon.S2.asl.r.p.or"
  9948. case 'r': // 1 string to match.
  9949. if (memcmp(NameR.data()+17, ".or", 3))
  9950. break;
  9951. return Intrinsic::hexagon_S2_asl_r_r_or; // "exagon.S2.asl.r.r.or"
  9952. }
  9953. break;
  9954. }
  9955. break;
  9956. case 'r': // 4 strings to match.
  9957. if (NameR[13] != '.')
  9958. break;
  9959. switch (NameR[14]) {
  9960. default: break;
  9961. case 'i': // 2 strings to match.
  9962. if (NameR[15] != '.')
  9963. break;
  9964. switch (NameR[16]) {
  9965. default: break;
  9966. case 'p': // 1 string to match.
  9967. if (memcmp(NameR.data()+17, ".or", 3))
  9968. break;
  9969. return Intrinsic::hexagon_S2_asr_i_p_or; // "exagon.S2.asr.i.p.or"
  9970. case 'r': // 1 string to match.
  9971. if (memcmp(NameR.data()+17, ".or", 3))
  9972. break;
  9973. return Intrinsic::hexagon_S2_asr_i_r_or; // "exagon.S2.asr.i.r.or"
  9974. }
  9975. break;
  9976. case 'r': // 2 strings to match.
  9977. if (NameR[15] != '.')
  9978. break;
  9979. switch (NameR[16]) {
  9980. default: break;
  9981. case 'p': // 1 string to match.
  9982. if (memcmp(NameR.data()+17, ".or", 3))
  9983. break;
  9984. return Intrinsic::hexagon_S2_asr_r_p_or; // "exagon.S2.asr.r.p.or"
  9985. case 'r': // 1 string to match.
  9986. if (memcmp(NameR.data()+17, ".or", 3))
  9987. break;
  9988. return Intrinsic::hexagon_S2_asr_r_r_or; // "exagon.S2.asr.r.r.or"
  9989. }
  9990. break;
  9991. }
  9992. break;
  9993. }
  9994. break;
  9995. case 'i': // 2 strings to match.
  9996. if (NameR[11] != 'n')
  9997. break;
  9998. switch (NameR[12]) {
  9999. default: break;
  10000. case 's': // 1 string to match.
  10001. if (memcmp(NameR.data()+13, "ertp.rp", 7))
  10002. break;
  10003. return Intrinsic::hexagon_S2_insertp_rp; // "exagon.S2.insertp.rp"
  10004. case 't': // 1 string to match.
  10005. if (memcmp(NameR.data()+13, "erleave", 7))
  10006. break;
  10007. return Intrinsic::hexagon_S2_interleave; // "exagon.S2.interleave"
  10008. }
  10009. break;
  10010. case 'l': // 6 strings to match.
  10011. if (NameR[11] != 's')
  10012. break;
  10013. switch (NameR[12]) {
  10014. default: break;
  10015. case 'l': // 2 strings to match.
  10016. if (memcmp(NameR.data()+13, ".r.", 3))
  10017. break;
  10018. switch (NameR[16]) {
  10019. default: break;
  10020. case 'p': // 1 string to match.
  10021. if (memcmp(NameR.data()+17, ".or", 3))
  10022. break;
  10023. return Intrinsic::hexagon_S2_lsl_r_p_or; // "exagon.S2.lsl.r.p.or"
  10024. case 'r': // 1 string to match.
  10025. if (memcmp(NameR.data()+17, ".or", 3))
  10026. break;
  10027. return Intrinsic::hexagon_S2_lsl_r_r_or; // "exagon.S2.lsl.r.r.or"
  10028. }
  10029. break;
  10030. case 'r': // 4 strings to match.
  10031. if (NameR[13] != '.')
  10032. break;
  10033. switch (NameR[14]) {
  10034. default: break;
  10035. case 'i': // 2 strings to match.
  10036. if (NameR[15] != '.')
  10037. break;
  10038. switch (NameR[16]) {
  10039. default: break;
  10040. case 'p': // 1 string to match.
  10041. if (memcmp(NameR.data()+17, ".or", 3))
  10042. break;
  10043. return Intrinsic::hexagon_S2_lsr_i_p_or; // "exagon.S2.lsr.i.p.or"
  10044. case 'r': // 1 string to match.
  10045. if (memcmp(NameR.data()+17, ".or", 3))
  10046. break;
  10047. return Intrinsic::hexagon_S2_lsr_i_r_or; // "exagon.S2.lsr.i.r.or"
  10048. }
  10049. break;
  10050. case 'r': // 2 strings to match.
  10051. if (NameR[15] != '.')
  10052. break;
  10053. switch (NameR[16]) {
  10054. default: break;
  10055. case 'p': // 1 string to match.
  10056. if (memcmp(NameR.data()+17, ".or", 3))
  10057. break;
  10058. return Intrinsic::hexagon_S2_lsr_r_p_or; // "exagon.S2.lsr.r.p.or"
  10059. case 'r': // 1 string to match.
  10060. if (memcmp(NameR.data()+17, ".or", 3))
  10061. break;
  10062. return Intrinsic::hexagon_S2_lsr_r_r_or; // "exagon.S2.lsr.r.r.or"
  10063. }
  10064. break;
  10065. }
  10066. break;
  10067. }
  10068. break;
  10069. case 'v': // 1 string to match.
  10070. if (memcmp(NameR.data()+11, "rndpackwh", 9))
  10071. break;
  10072. return Intrinsic::hexagon_S2_vrndpackwh; // "exagon.S2.vrndpackwh"
  10073. }
  10074. break;
  10075. case '4': // 5 strings to match.
  10076. if (NameR[9] != '.')
  10077. break;
  10078. switch (NameR[10]) {
  10079. default: break;
  10080. case 'e': // 1 string to match.
  10081. if (memcmp(NameR.data()+11, "xtract.rp", 9))
  10082. break;
  10083. return Intrinsic::hexagon_S4_extract_rp; // "exagon.S4.extract.rp"
  10084. case 'o': // 2 strings to match.
  10085. if (memcmp(NameR.data()+11, "ri.", 3))
  10086. break;
  10087. switch (NameR[14]) {
  10088. default: break;
  10089. case 'a': // 1 string to match.
  10090. if (memcmp(NameR.data()+15, "sl.ri", 5))
  10091. break;
  10092. return Intrinsic::hexagon_S4_ori_asl_ri; // "exagon.S4.ori.asl.ri"
  10093. case 'l': // 1 string to match.
  10094. if (memcmp(NameR.data()+15, "sr.ri", 5))
  10095. break;
  10096. return Intrinsic::hexagon_S4_ori_lsr_ri; // "exagon.S4.ori.lsr.ri"
  10097. }
  10098. break;
  10099. case 'v': // 2 strings to match.
  10100. if (NameR[11] != 'x')
  10101. break;
  10102. switch (NameR[12]) {
  10103. default: break;
  10104. case 'a': // 1 string to match.
  10105. if (memcmp(NameR.data()+13, "ddsubhr", 7))
  10106. break;
  10107. return Intrinsic::hexagon_S4_vxaddsubhr; // "exagon.S4.vxaddsubhr"
  10108. case 's': // 1 string to match.
  10109. if (memcmp(NameR.data()+13, "ubaddhr", 7))
  10110. break;
  10111. return Intrinsic::hexagon_S4_vxsubaddhr; // "exagon.S4.vxsubaddhr"
  10112. }
  10113. break;
  10114. }
  10115. break;
  10116. case '5': // 1 string to match.
  10117. if (memcmp(NameR.data()+9, ".asrhub.sat", 11))
  10118. break;
  10119. return Intrinsic::hexagon_S5_asrhub_sat; // "exagon.S5.asrhub.sat"
  10120. }
  10121. break;
  10122. }
  10123. break;
  10124. case 21: // 96 strings to match.
  10125. if (memcmp(NameR.data()+0, "exagon.", 7))
  10126. break;
  10127. switch (NameR[7]) {
  10128. default: break;
  10129. case 'A': // 16 strings to match.
  10130. switch (NameR[8]) {
  10131. default: break;
  10132. case '2': // 14 strings to match.
  10133. if (NameR[9] != '.')
  10134. break;
  10135. switch (NameR[10]) {
  10136. default: break;
  10137. case 'a': // 6 strings to match.
  10138. if (memcmp(NameR.data()+11, "ddh.", 4))
  10139. break;
  10140. switch (NameR[15]) {
  10141. default: break;
  10142. case 'h': // 4 strings to match.
  10143. if (memcmp(NameR.data()+16, "16.", 3))
  10144. break;
  10145. switch (NameR[19]) {
  10146. default: break;
  10147. case 'h': // 2 strings to match.
  10148. switch (NameR[20]) {
  10149. default: break;
  10150. case 'h': // 1 string to match.
  10151. return Intrinsic::hexagon_A2_addh_h16_hh; // "exagon.A2.addh.h16.hh"
  10152. case 'l': // 1 string to match.
  10153. return Intrinsic::hexagon_A2_addh_h16_hl; // "exagon.A2.addh.h16.hl"
  10154. }
  10155. break;
  10156. case 'l': // 2 strings to match.
  10157. switch (NameR[20]) {
  10158. default: break;
  10159. case 'h': // 1 string to match.
  10160. return Intrinsic::hexagon_A2_addh_h16_lh; // "exagon.A2.addh.h16.lh"
  10161. case 'l': // 1 string to match.
  10162. return Intrinsic::hexagon_A2_addh_h16_ll; // "exagon.A2.addh.h16.ll"
  10163. }
  10164. break;
  10165. }
  10166. break;
  10167. case 'l': // 2 strings to match.
  10168. if (memcmp(NameR.data()+16, "16.", 3))
  10169. break;
  10170. switch (NameR[19]) {
  10171. default: break;
  10172. case 'h': // 1 string to match.
  10173. if (NameR[20] != 'l')
  10174. break;
  10175. return Intrinsic::hexagon_A2_addh_l16_hl; // "exagon.A2.addh.l16.hl"
  10176. case 'l': // 1 string to match.
  10177. if (NameR[20] != 'l')
  10178. break;
  10179. return Intrinsic::hexagon_A2_addh_l16_ll; // "exagon.A2.addh.l16.ll"
  10180. }
  10181. break;
  10182. }
  10183. break;
  10184. case 's': // 6 strings to match.
  10185. if (memcmp(NameR.data()+11, "ubh.", 4))
  10186. break;
  10187. switch (NameR[15]) {
  10188. default: break;
  10189. case 'h': // 4 strings to match.
  10190. if (memcmp(NameR.data()+16, "16.", 3))
  10191. break;
  10192. switch (NameR[19]) {
  10193. default: break;
  10194. case 'h': // 2 strings to match.
  10195. switch (NameR[20]) {
  10196. default: break;
  10197. case 'h': // 1 string to match.
  10198. return Intrinsic::hexagon_A2_subh_h16_hh; // "exagon.A2.subh.h16.hh"
  10199. case 'l': // 1 string to match.
  10200. return Intrinsic::hexagon_A2_subh_h16_hl; // "exagon.A2.subh.h16.hl"
  10201. }
  10202. break;
  10203. case 'l': // 2 strings to match.
  10204. switch (NameR[20]) {
  10205. default: break;
  10206. case 'h': // 1 string to match.
  10207. return Intrinsic::hexagon_A2_subh_h16_lh; // "exagon.A2.subh.h16.lh"
  10208. case 'l': // 1 string to match.
  10209. return Intrinsic::hexagon_A2_subh_h16_ll; // "exagon.A2.subh.h16.ll"
  10210. }
  10211. break;
  10212. }
  10213. break;
  10214. case 'l': // 2 strings to match.
  10215. if (memcmp(NameR.data()+16, "16.", 3))
  10216. break;
  10217. switch (NameR[19]) {
  10218. default: break;
  10219. case 'h': // 1 string to match.
  10220. if (NameR[20] != 'l')
  10221. break;
  10222. return Intrinsic::hexagon_A2_subh_l16_hl; // "exagon.A2.subh.l16.hl"
  10223. case 'l': // 1 string to match.
  10224. if (NameR[20] != 'l')
  10225. break;
  10226. return Intrinsic::hexagon_A2_subh_l16_ll; // "exagon.A2.subh.l16.ll"
  10227. }
  10228. break;
  10229. }
  10230. break;
  10231. case 'v': // 2 strings to match.
  10232. if (NameR[11] != 'r')
  10233. break;
  10234. switch (NameR[12]) {
  10235. default: break;
  10236. case 'a': // 1 string to match.
  10237. if (memcmp(NameR.data()+13, "ddub.acc", 8))
  10238. break;
  10239. return Intrinsic::hexagon_A2_vraddub_acc; // "exagon.A2.vraddub.acc"
  10240. case 's': // 1 string to match.
  10241. if (memcmp(NameR.data()+13, "adub.acc", 8))
  10242. break;
  10243. return Intrinsic::hexagon_A2_vrsadub_acc; // "exagon.A2.vrsadub.acc"
  10244. }
  10245. break;
  10246. }
  10247. break;
  10248. case '4': // 2 strings to match.
  10249. if (NameR[9] != '.')
  10250. break;
  10251. switch (NameR[10]) {
  10252. default: break;
  10253. case 'b': // 1 string to match.
  10254. if (memcmp(NameR.data()+11, "oundscheck", 10))
  10255. break;
  10256. return Intrinsic::hexagon_A4_boundscheck; // "exagon.A4.boundscheck"
  10257. case 'v': // 1 string to match.
  10258. if (memcmp(NameR.data()+11, "cmpbeq.any", 10))
  10259. break;
  10260. return Intrinsic::hexagon_A4_vcmpbeq_any; // "exagon.A4.vcmpbeq.any"
  10261. }
  10262. break;
  10263. }
  10264. break;
  10265. case 'C': // 1 string to match.
  10266. if (memcmp(NameR.data()+8, "4.fastcorner9", 13))
  10267. break;
  10268. return Intrinsic::hexagon_C4_fastcorner9; // "exagon.C4.fastcorner9"
  10269. case 'M': // 16 strings to match.
  10270. if (memcmp(NameR.data()+8, "2.", 2))
  10271. break;
  10272. switch (NameR[10]) {
  10273. default: break;
  10274. case 'm': // 12 strings to match.
  10275. switch (NameR[11]) {
  10276. default: break;
  10277. case 'm': // 4 strings to match.
  10278. if (memcmp(NameR.data()+12, "acu", 3))
  10279. break;
  10280. switch (NameR[15]) {
  10281. default: break;
  10282. case 'h': // 2 strings to match.
  10283. if (memcmp(NameR.data()+16, "s.rs", 4))
  10284. break;
  10285. switch (NameR[20]) {
  10286. default: break;
  10287. case '0': // 1 string to match.
  10288. return Intrinsic::hexagon_M2_mmacuhs_rs0; // "exagon.M2.mmacuhs.rs0"
  10289. case '1': // 1 string to match.
  10290. return Intrinsic::hexagon_M2_mmacuhs_rs1; // "exagon.M2.mmacuhs.rs1"
  10291. }
  10292. break;
  10293. case 'l': // 2 strings to match.
  10294. if (memcmp(NameR.data()+16, "s.rs", 4))
  10295. break;
  10296. switch (NameR[20]) {
  10297. default: break;
  10298. case '0': // 1 string to match.
  10299. return Intrinsic::hexagon_M2_mmaculs_rs0; // "exagon.M2.mmaculs.rs0"
  10300. case '1': // 1 string to match.
  10301. return Intrinsic::hexagon_M2_mmaculs_rs1; // "exagon.M2.mmaculs.rs1"
  10302. }
  10303. break;
  10304. }
  10305. break;
  10306. case 'p': // 8 strings to match.
  10307. if (memcmp(NameR.data()+12, "yud.", 4))
  10308. break;
  10309. switch (NameR[16]) {
  10310. default: break;
  10311. case 'h': // 4 strings to match.
  10312. switch (NameR[17]) {
  10313. default: break;
  10314. case 'h': // 2 strings to match.
  10315. if (memcmp(NameR.data()+18, ".s", 2))
  10316. break;
  10317. switch (NameR[20]) {
  10318. default: break;
  10319. case '0': // 1 string to match.
  10320. return Intrinsic::hexagon_M2_mpyud_hh_s0; // "exagon.M2.mpyud.hh.s0"
  10321. case '1': // 1 string to match.
  10322. return Intrinsic::hexagon_M2_mpyud_hh_s1; // "exagon.M2.mpyud.hh.s1"
  10323. }
  10324. break;
  10325. case 'l': // 2 strings to match.
  10326. if (memcmp(NameR.data()+18, ".s", 2))
  10327. break;
  10328. switch (NameR[20]) {
  10329. default: break;
  10330. case '0': // 1 string to match.
  10331. return Intrinsic::hexagon_M2_mpyud_hl_s0; // "exagon.M2.mpyud.hl.s0"
  10332. case '1': // 1 string to match.
  10333. return Intrinsic::hexagon_M2_mpyud_hl_s1; // "exagon.M2.mpyud.hl.s1"
  10334. }
  10335. break;
  10336. }
  10337. break;
  10338. case 'l': // 4 strings to match.
  10339. switch (NameR[17]) {
  10340. default: break;
  10341. case 'h': // 2 strings to match.
  10342. if (memcmp(NameR.data()+18, ".s", 2))
  10343. break;
  10344. switch (NameR[20]) {
  10345. default: break;
  10346. case '0': // 1 string to match.
  10347. return Intrinsic::hexagon_M2_mpyud_lh_s0; // "exagon.M2.mpyud.lh.s0"
  10348. case '1': // 1 string to match.
  10349. return Intrinsic::hexagon_M2_mpyud_lh_s1; // "exagon.M2.mpyud.lh.s1"
  10350. }
  10351. break;
  10352. case 'l': // 2 strings to match.
  10353. if (memcmp(NameR.data()+18, ".s", 2))
  10354. break;
  10355. switch (NameR[20]) {
  10356. default: break;
  10357. case '0': // 1 string to match.
  10358. return Intrinsic::hexagon_M2_mpyud_ll_s0; // "exagon.M2.mpyud.ll.s0"
  10359. case '1': // 1 string to match.
  10360. return Intrinsic::hexagon_M2_mpyud_ll_s1; // "exagon.M2.mpyud.ll.s1"
  10361. }
  10362. break;
  10363. }
  10364. break;
  10365. }
  10366. break;
  10367. }
  10368. break;
  10369. case 'v': // 4 strings to match.
  10370. if (memcmp(NameR.data()+11, "rcm", 3))
  10371. break;
  10372. switch (NameR[14]) {
  10373. default: break;
  10374. case 'a': // 2 strings to match.
  10375. if (NameR[15] != 'c')
  10376. break;
  10377. switch (NameR[16]) {
  10378. default: break;
  10379. case 'i': // 1 string to match.
  10380. if (memcmp(NameR.data()+17, ".s0c", 4))
  10381. break;
  10382. return Intrinsic::hexagon_M2_vrcmaci_s0c; // "exagon.M2.vrcmaci.s0c"
  10383. case 'r': // 1 string to match.
  10384. if (memcmp(NameR.data()+17, ".s0c", 4))
  10385. break;
  10386. return Intrinsic::hexagon_M2_vrcmacr_s0c; // "exagon.M2.vrcmacr.s0c"
  10387. }
  10388. break;
  10389. case 'p': // 2 strings to match.
  10390. if (NameR[15] != 'y')
  10391. break;
  10392. switch (NameR[16]) {
  10393. default: break;
  10394. case 'i': // 1 string to match.
  10395. if (memcmp(NameR.data()+17, ".s0c", 4))
  10396. break;
  10397. return Intrinsic::hexagon_M2_vrcmpyi_s0c; // "exagon.M2.vrcmpyi.s0c"
  10398. case 'r': // 1 string to match.
  10399. if (memcmp(NameR.data()+17, ".s0c", 4))
  10400. break;
  10401. return Intrinsic::hexagon_M2_vrcmpyr_s0c; // "exagon.M2.vrcmpyr.s0c"
  10402. }
  10403. break;
  10404. }
  10405. break;
  10406. }
  10407. break;
  10408. case 'S': // 63 strings to match.
  10409. switch (NameR[8]) {
  10410. default: break;
  10411. case '2': // 56 strings to match.
  10412. if (NameR[9] != '.')
  10413. break;
  10414. switch (NameR[10]) {
  10415. default: break;
  10416. case 'a': // 32 strings to match.
  10417. switch (NameR[11]) {
  10418. default: break;
  10419. case 'd': // 1 string to match.
  10420. if (memcmp(NameR.data()+12, "dasl.rrri", 9))
  10421. break;
  10422. return Intrinsic::hexagon_S2_addasl_rrri; // "exagon.S2.addasl.rrri"
  10423. case 's': // 31 strings to match.
  10424. switch (NameR[12]) {
  10425. default: break;
  10426. case 'l': // 15 strings to match.
  10427. if (NameR[13] != '.')
  10428. break;
  10429. switch (NameR[14]) {
  10430. default: break;
  10431. case 'i': // 7 strings to match.
  10432. if (NameR[15] != '.')
  10433. break;
  10434. switch (NameR[16]) {
  10435. default: break;
  10436. case 'p': // 3 strings to match.
  10437. if (NameR[17] != '.')
  10438. break;
  10439. switch (NameR[18]) {
  10440. default: break;
  10441. case 'a': // 2 strings to match.
  10442. switch (NameR[19]) {
  10443. default: break;
  10444. case 'c': // 1 string to match.
  10445. if (NameR[20] != 'c')
  10446. break;
  10447. return Intrinsic::hexagon_S2_asl_i_p_acc; // "exagon.S2.asl.i.p.acc"
  10448. case 'n': // 1 string to match.
  10449. if (NameR[20] != 'd')
  10450. break;
  10451. return Intrinsic::hexagon_S2_asl_i_p_and; // "exagon.S2.asl.i.p.and"
  10452. }
  10453. break;
  10454. case 'n': // 1 string to match.
  10455. if (memcmp(NameR.data()+19, "ac", 2))
  10456. break;
  10457. return Intrinsic::hexagon_S2_asl_i_p_nac; // "exagon.S2.asl.i.p.nac"
  10458. }
  10459. break;
  10460. case 'r': // 4 strings to match.
  10461. if (NameR[17] != '.')
  10462. break;
  10463. switch (NameR[18]) {
  10464. default: break;
  10465. case 'a': // 2 strings to match.
  10466. switch (NameR[19]) {
  10467. default: break;
  10468. case 'c': // 1 string to match.
  10469. if (NameR[20] != 'c')
  10470. break;
  10471. return Intrinsic::hexagon_S2_asl_i_r_acc; // "exagon.S2.asl.i.r.acc"
  10472. case 'n': // 1 string to match.
  10473. if (NameR[20] != 'd')
  10474. break;
  10475. return Intrinsic::hexagon_S2_asl_i_r_and; // "exagon.S2.asl.i.r.and"
  10476. }
  10477. break;
  10478. case 'n': // 1 string to match.
  10479. if (memcmp(NameR.data()+19, "ac", 2))
  10480. break;
  10481. return Intrinsic::hexagon_S2_asl_i_r_nac; // "exagon.S2.asl.i.r.nac"
  10482. case 's': // 1 string to match.
  10483. if (memcmp(NameR.data()+19, "at", 2))
  10484. break;
  10485. return Intrinsic::hexagon_S2_asl_i_r_sat; // "exagon.S2.asl.i.r.sat"
  10486. }
  10487. break;
  10488. }
  10489. break;
  10490. case 'r': // 8 strings to match.
  10491. if (NameR[15] != '.')
  10492. break;
  10493. switch (NameR[16]) {
  10494. default: break;
  10495. case 'p': // 4 strings to match.
  10496. if (NameR[17] != '.')
  10497. break;
  10498. switch (NameR[18]) {
  10499. default: break;
  10500. case 'a': // 2 strings to match.
  10501. switch (NameR[19]) {
  10502. default: break;
  10503. case 'c': // 1 string to match.
  10504. if (NameR[20] != 'c')
  10505. break;
  10506. return Intrinsic::hexagon_S2_asl_r_p_acc; // "exagon.S2.asl.r.p.acc"
  10507. case 'n': // 1 string to match.
  10508. if (NameR[20] != 'd')
  10509. break;
  10510. return Intrinsic::hexagon_S2_asl_r_p_and; // "exagon.S2.asl.r.p.and"
  10511. }
  10512. break;
  10513. case 'n': // 1 string to match.
  10514. if (memcmp(NameR.data()+19, "ac", 2))
  10515. break;
  10516. return Intrinsic::hexagon_S2_asl_r_p_nac; // "exagon.S2.asl.r.p.nac"
  10517. case 'x': // 1 string to match.
  10518. if (memcmp(NameR.data()+19, "or", 2))
  10519. break;
  10520. return Intrinsic::hexagon_S2_asl_r_p_xor; // "exagon.S2.asl.r.p.xor"
  10521. }
  10522. break;
  10523. case 'r': // 4 strings to match.
  10524. if (NameR[17] != '.')
  10525. break;
  10526. switch (NameR[18]) {
  10527. default: break;
  10528. case 'a': // 2 strings to match.
  10529. switch (NameR[19]) {
  10530. default: break;
  10531. case 'c': // 1 string to match.
  10532. if (NameR[20] != 'c')
  10533. break;
  10534. return Intrinsic::hexagon_S2_asl_r_r_acc; // "exagon.S2.asl.r.r.acc"
  10535. case 'n': // 1 string to match.
  10536. if (NameR[20] != 'd')
  10537. break;
  10538. return Intrinsic::hexagon_S2_asl_r_r_and; // "exagon.S2.asl.r.r.and"
  10539. }
  10540. break;
  10541. case 'n': // 1 string to match.
  10542. if (memcmp(NameR.data()+19, "ac", 2))
  10543. break;
  10544. return Intrinsic::hexagon_S2_asl_r_r_nac; // "exagon.S2.asl.r.r.nac"
  10545. case 's': // 1 string to match.
  10546. if (memcmp(NameR.data()+19, "at", 2))
  10547. break;
  10548. return Intrinsic::hexagon_S2_asl_r_r_sat; // "exagon.S2.asl.r.r.sat"
  10549. }
  10550. break;
  10551. }
  10552. break;
  10553. }
  10554. break;
  10555. case 'r': // 16 strings to match.
  10556. if (NameR[13] != '.')
  10557. break;
  10558. switch (NameR[14]) {
  10559. default: break;
  10560. case 'i': // 8 strings to match.
  10561. if (NameR[15] != '.')
  10562. break;
  10563. switch (NameR[16]) {
  10564. default: break;
  10565. case 'p': // 4 strings to match.
  10566. if (NameR[17] != '.')
  10567. break;
  10568. switch (NameR[18]) {
  10569. default: break;
  10570. case 'a': // 2 strings to match.
  10571. switch (NameR[19]) {
  10572. default: break;
  10573. case 'c': // 1 string to match.
  10574. if (NameR[20] != 'c')
  10575. break;
  10576. return Intrinsic::hexagon_S2_asr_i_p_acc; // "exagon.S2.asr.i.p.acc"
  10577. case 'n': // 1 string to match.
  10578. if (NameR[20] != 'd')
  10579. break;
  10580. return Intrinsic::hexagon_S2_asr_i_p_and; // "exagon.S2.asr.i.p.and"
  10581. }
  10582. break;
  10583. case 'n': // 1 string to match.
  10584. if (memcmp(NameR.data()+19, "ac", 2))
  10585. break;
  10586. return Intrinsic::hexagon_S2_asr_i_p_nac; // "exagon.S2.asr.i.p.nac"
  10587. case 'r': // 1 string to match.
  10588. if (memcmp(NameR.data()+19, "nd", 2))
  10589. break;
  10590. return Intrinsic::hexagon_S2_asr_i_p_rnd; // "exagon.S2.asr.i.p.rnd"
  10591. }
  10592. break;
  10593. case 'r': // 4 strings to match.
  10594. if (NameR[17] != '.')
  10595. break;
  10596. switch (NameR[18]) {
  10597. default: break;
  10598. case 'a': // 2 strings to match.
  10599. switch (NameR[19]) {
  10600. default: break;
  10601. case 'c': // 1 string to match.
  10602. if (NameR[20] != 'c')
  10603. break;
  10604. return Intrinsic::hexagon_S2_asr_i_r_acc; // "exagon.S2.asr.i.r.acc"
  10605. case 'n': // 1 string to match.
  10606. if (NameR[20] != 'd')
  10607. break;
  10608. return Intrinsic::hexagon_S2_asr_i_r_and; // "exagon.S2.asr.i.r.and"
  10609. }
  10610. break;
  10611. case 'n': // 1 string to match.
  10612. if (memcmp(NameR.data()+19, "ac", 2))
  10613. break;
  10614. return Intrinsic::hexagon_S2_asr_i_r_nac; // "exagon.S2.asr.i.r.nac"
  10615. case 'r': // 1 string to match.
  10616. if (memcmp(NameR.data()+19, "nd", 2))
  10617. break;
  10618. return Intrinsic::hexagon_S2_asr_i_r_rnd; // "exagon.S2.asr.i.r.rnd"
  10619. }
  10620. break;
  10621. }
  10622. break;
  10623. case 'r': // 8 strings to match.
  10624. if (NameR[15] != '.')
  10625. break;
  10626. switch (NameR[16]) {
  10627. default: break;
  10628. case 'p': // 4 strings to match.
  10629. if (NameR[17] != '.')
  10630. break;
  10631. switch (NameR[18]) {
  10632. default: break;
  10633. case 'a': // 2 strings to match.
  10634. switch (NameR[19]) {
  10635. default: break;
  10636. case 'c': // 1 string to match.
  10637. if (NameR[20] != 'c')
  10638. break;
  10639. return Intrinsic::hexagon_S2_asr_r_p_acc; // "exagon.S2.asr.r.p.acc"
  10640. case 'n': // 1 string to match.
  10641. if (NameR[20] != 'd')
  10642. break;
  10643. return Intrinsic::hexagon_S2_asr_r_p_and; // "exagon.S2.asr.r.p.and"
  10644. }
  10645. break;
  10646. case 'n': // 1 string to match.
  10647. if (memcmp(NameR.data()+19, "ac", 2))
  10648. break;
  10649. return Intrinsic::hexagon_S2_asr_r_p_nac; // "exagon.S2.asr.r.p.nac"
  10650. case 'x': // 1 string to match.
  10651. if (memcmp(NameR.data()+19, "or", 2))
  10652. break;
  10653. return Intrinsic::hexagon_S2_asr_r_p_xor; // "exagon.S2.asr.r.p.xor"
  10654. }
  10655. break;
  10656. case 'r': // 4 strings to match.
  10657. if (NameR[17] != '.')
  10658. break;
  10659. switch (NameR[18]) {
  10660. default: break;
  10661. case 'a': // 2 strings to match.
  10662. switch (NameR[19]) {
  10663. default: break;
  10664. case 'c': // 1 string to match.
  10665. if (NameR[20] != 'c')
  10666. break;
  10667. return Intrinsic::hexagon_S2_asr_r_r_acc; // "exagon.S2.asr.r.r.acc"
  10668. case 'n': // 1 string to match.
  10669. if (NameR[20] != 'd')
  10670. break;
  10671. return Intrinsic::hexagon_S2_asr_r_r_and; // "exagon.S2.asr.r.r.and"
  10672. }
  10673. break;
  10674. case 'n': // 1 string to match.
  10675. if (memcmp(NameR.data()+19, "ac", 2))
  10676. break;
  10677. return Intrinsic::hexagon_S2_asr_r_r_nac; // "exagon.S2.asr.r.r.nac"
  10678. case 's': // 1 string to match.
  10679. if (memcmp(NameR.data()+19, "at", 2))
  10680. break;
  10681. return Intrinsic::hexagon_S2_asr_r_r_sat; // "exagon.S2.asr.r.r.sat"
  10682. }
  10683. break;
  10684. }
  10685. break;
  10686. }
  10687. break;
  10688. }
  10689. break;
  10690. }
  10691. break;
  10692. case 'e': // 1 string to match.
  10693. if (memcmp(NameR.data()+11, "xtractu.rp", 10))
  10694. break;
  10695. return Intrinsic::hexagon_S2_extractu_rp; // "exagon.S2.extractu.rp"
  10696. case 'l': // 20 strings to match.
  10697. if (NameR[11] != 's')
  10698. break;
  10699. switch (NameR[12]) {
  10700. default: break;
  10701. case 'l': // 7 strings to match.
  10702. if (memcmp(NameR.data()+13, ".r.", 3))
  10703. break;
  10704. switch (NameR[16]) {
  10705. default: break;
  10706. case 'p': // 4 strings to match.
  10707. if (NameR[17] != '.')
  10708. break;
  10709. switch (NameR[18]) {
  10710. default: break;
  10711. case 'a': // 2 strings to match.
  10712. switch (NameR[19]) {
  10713. default: break;
  10714. case 'c': // 1 string to match.
  10715. if (NameR[20] != 'c')
  10716. break;
  10717. return Intrinsic::hexagon_S2_lsl_r_p_acc; // "exagon.S2.lsl.r.p.acc"
  10718. case 'n': // 1 string to match.
  10719. if (NameR[20] != 'd')
  10720. break;
  10721. return Intrinsic::hexagon_S2_lsl_r_p_and; // "exagon.S2.lsl.r.p.and"
  10722. }
  10723. break;
  10724. case 'n': // 1 string to match.
  10725. if (memcmp(NameR.data()+19, "ac", 2))
  10726. break;
  10727. return Intrinsic::hexagon_S2_lsl_r_p_nac; // "exagon.S2.lsl.r.p.nac"
  10728. case 'x': // 1 string to match.
  10729. if (memcmp(NameR.data()+19, "or", 2))
  10730. break;
  10731. return Intrinsic::hexagon_S2_lsl_r_p_xor; // "exagon.S2.lsl.r.p.xor"
  10732. }
  10733. break;
  10734. case 'r': // 3 strings to match.
  10735. if (NameR[17] != '.')
  10736. break;
  10737. switch (NameR[18]) {
  10738. default: break;
  10739. case 'a': // 2 strings to match.
  10740. switch (NameR[19]) {
  10741. default: break;
  10742. case 'c': // 1 string to match.
  10743. if (NameR[20] != 'c')
  10744. break;
  10745. return Intrinsic::hexagon_S2_lsl_r_r_acc; // "exagon.S2.lsl.r.r.acc"
  10746. case 'n': // 1 string to match.
  10747. if (NameR[20] != 'd')
  10748. break;
  10749. return Intrinsic::hexagon_S2_lsl_r_r_and; // "exagon.S2.lsl.r.r.and"
  10750. }
  10751. break;
  10752. case 'n': // 1 string to match.
  10753. if (memcmp(NameR.data()+19, "ac", 2))
  10754. break;
  10755. return Intrinsic::hexagon_S2_lsl_r_r_nac; // "exagon.S2.lsl.r.r.nac"
  10756. }
  10757. break;
  10758. }
  10759. break;
  10760. case 'r': // 13 strings to match.
  10761. if (NameR[13] != '.')
  10762. break;
  10763. switch (NameR[14]) {
  10764. default: break;
  10765. case 'i': // 6 strings to match.
  10766. if (NameR[15] != '.')
  10767. break;
  10768. switch (NameR[16]) {
  10769. default: break;
  10770. case 'p': // 3 strings to match.
  10771. if (NameR[17] != '.')
  10772. break;
  10773. switch (NameR[18]) {
  10774. default: break;
  10775. case 'a': // 2 strings to match.
  10776. switch (NameR[19]) {
  10777. default: break;
  10778. case 'c': // 1 string to match.
  10779. if (NameR[20] != 'c')
  10780. break;
  10781. return Intrinsic::hexagon_S2_lsr_i_p_acc; // "exagon.S2.lsr.i.p.acc"
  10782. case 'n': // 1 string to match.
  10783. if (NameR[20] != 'd')
  10784. break;
  10785. return Intrinsic::hexagon_S2_lsr_i_p_and; // "exagon.S2.lsr.i.p.and"
  10786. }
  10787. break;
  10788. case 'n': // 1 string to match.
  10789. if (memcmp(NameR.data()+19, "ac", 2))
  10790. break;
  10791. return Intrinsic::hexagon_S2_lsr_i_p_nac; // "exagon.S2.lsr.i.p.nac"
  10792. }
  10793. break;
  10794. case 'r': // 3 strings to match.
  10795. if (NameR[17] != '.')
  10796. break;
  10797. switch (NameR[18]) {
  10798. default: break;
  10799. case 'a': // 2 strings to match.
  10800. switch (NameR[19]) {
  10801. default: break;
  10802. case 'c': // 1 string to match.
  10803. if (NameR[20] != 'c')
  10804. break;
  10805. return Intrinsic::hexagon_S2_lsr_i_r_acc; // "exagon.S2.lsr.i.r.acc"
  10806. case 'n': // 1 string to match.
  10807. if (NameR[20] != 'd')
  10808. break;
  10809. return Intrinsic::hexagon_S2_lsr_i_r_and; // "exagon.S2.lsr.i.r.and"
  10810. }
  10811. break;
  10812. case 'n': // 1 string to match.
  10813. if (memcmp(NameR.data()+19, "ac", 2))
  10814. break;
  10815. return Intrinsic::hexagon_S2_lsr_i_r_nac; // "exagon.S2.lsr.i.r.nac"
  10816. }
  10817. break;
  10818. }
  10819. break;
  10820. case 'r': // 7 strings to match.
  10821. if (NameR[15] != '.')
  10822. break;
  10823. switch (NameR[16]) {
  10824. default: break;
  10825. case 'p': // 4 strings to match.
  10826. if (NameR[17] != '.')
  10827. break;
  10828. switch (NameR[18]) {
  10829. default: break;
  10830. case 'a': // 2 strings to match.
  10831. switch (NameR[19]) {
  10832. default: break;
  10833. case 'c': // 1 string to match.
  10834. if (NameR[20] != 'c')
  10835. break;
  10836. return Intrinsic::hexagon_S2_lsr_r_p_acc; // "exagon.S2.lsr.r.p.acc"
  10837. case 'n': // 1 string to match.
  10838. if (NameR[20] != 'd')
  10839. break;
  10840. return Intrinsic::hexagon_S2_lsr_r_p_and; // "exagon.S2.lsr.r.p.and"
  10841. }
  10842. break;
  10843. case 'n': // 1 string to match.
  10844. if (memcmp(NameR.data()+19, "ac", 2))
  10845. break;
  10846. return Intrinsic::hexagon_S2_lsr_r_p_nac; // "exagon.S2.lsr.r.p.nac"
  10847. case 'x': // 1 string to match.
  10848. if (memcmp(NameR.data()+19, "or", 2))
  10849. break;
  10850. return Intrinsic::hexagon_S2_lsr_r_p_xor; // "exagon.S2.lsr.r.p.xor"
  10851. }
  10852. break;
  10853. case 'r': // 3 strings to match.
  10854. if (NameR[17] != '.')
  10855. break;
  10856. switch (NameR[18]) {
  10857. default: break;
  10858. case 'a': // 2 strings to match.
  10859. switch (NameR[19]) {
  10860. default: break;
  10861. case 'c': // 1 string to match.
  10862. if (NameR[20] != 'c')
  10863. break;
  10864. return Intrinsic::hexagon_S2_lsr_r_r_acc; // "exagon.S2.lsr.r.r.acc"
  10865. case 'n': // 1 string to match.
  10866. if (NameR[20] != 'd')
  10867. break;
  10868. return Intrinsic::hexagon_S2_lsr_r_r_and; // "exagon.S2.lsr.r.r.and"
  10869. }
  10870. break;
  10871. case 'n': // 1 string to match.
  10872. if (memcmp(NameR.data()+19, "ac", 2))
  10873. break;
  10874. return Intrinsic::hexagon_S2_lsr_r_r_nac; // "exagon.S2.lsr.r.r.nac"
  10875. }
  10876. break;
  10877. }
  10878. break;
  10879. }
  10880. break;
  10881. }
  10882. break;
  10883. case 't': // 2 strings to match.
  10884. if (memcmp(NameR.data()+11, "ogglebit.", 9))
  10885. break;
  10886. switch (NameR[20]) {
  10887. default: break;
  10888. case 'i': // 1 string to match.
  10889. return Intrinsic::hexagon_S2_togglebit_i; // "exagon.S2.togglebit.i"
  10890. case 'r': // 1 string to match.
  10891. return Intrinsic::hexagon_S2_togglebit_r; // "exagon.S2.togglebit.r"
  10892. }
  10893. break;
  10894. case 'v': // 1 string to match.
  10895. if (memcmp(NameR.data()+11, "rndpackwhs", 10))
  10896. break;
  10897. return Intrinsic::hexagon_S2_vrndpackwhs; // "exagon.S2.vrndpackwhs"
  10898. }
  10899. break;
  10900. case '4': // 7 strings to match.
  10901. if (NameR[9] != '.')
  10902. break;
  10903. switch (NameR[10]) {
  10904. default: break;
  10905. case 'a': // 4 strings to match.
  10906. switch (NameR[11]) {
  10907. default: break;
  10908. case 'd': // 2 strings to match.
  10909. if (memcmp(NameR.data()+12, "di.", 3))
  10910. break;
  10911. switch (NameR[15]) {
  10912. default: break;
  10913. case 'a': // 1 string to match.
  10914. if (memcmp(NameR.data()+16, "sl.ri", 5))
  10915. break;
  10916. return Intrinsic::hexagon_S4_addi_asl_ri; // "exagon.S4.addi.asl.ri"
  10917. case 'l': // 1 string to match.
  10918. if (memcmp(NameR.data()+16, "sr.ri", 5))
  10919. break;
  10920. return Intrinsic::hexagon_S4_addi_lsr_ri; // "exagon.S4.addi.lsr.ri"
  10921. }
  10922. break;
  10923. case 'n': // 2 strings to match.
  10924. if (memcmp(NameR.data()+12, "di.", 3))
  10925. break;
  10926. switch (NameR[15]) {
  10927. default: break;
  10928. case 'a': // 1 string to match.
  10929. if (memcmp(NameR.data()+16, "sl.ri", 5))
  10930. break;
  10931. return Intrinsic::hexagon_S4_andi_asl_ri; // "exagon.S4.andi.asl.ri"
  10932. case 'l': // 1 string to match.
  10933. if (memcmp(NameR.data()+16, "sr.ri", 5))
  10934. break;
  10935. return Intrinsic::hexagon_S4_andi_lsr_ri; // "exagon.S4.andi.lsr.ri"
  10936. }
  10937. break;
  10938. }
  10939. break;
  10940. case 'e': // 1 string to match.
  10941. if (memcmp(NameR.data()+11, "xtractp.rp", 10))
  10942. break;
  10943. return Intrinsic::hexagon_S4_extractp_rp; // "exagon.S4.extractp.rp"
  10944. case 's': // 2 strings to match.
  10945. if (memcmp(NameR.data()+11, "ubi.", 4))
  10946. break;
  10947. switch (NameR[15]) {
  10948. default: break;
  10949. case 'a': // 1 string to match.
  10950. if (memcmp(NameR.data()+16, "sl.ri", 5))
  10951. break;
  10952. return Intrinsic::hexagon_S4_subi_asl_ri; // "exagon.S4.subi.asl.ri"
  10953. case 'l': // 1 string to match.
  10954. if (memcmp(NameR.data()+16, "sr.ri", 5))
  10955. break;
  10956. return Intrinsic::hexagon_S4_subi_lsr_ri; // "exagon.S4.subi.lsr.ri"
  10957. }
  10958. break;
  10959. }
  10960. break;
  10961. }
  10962. break;
  10963. }
  10964. break;
  10965. case 22: // 9 strings to match.
  10966. if (memcmp(NameR.data()+0, "exagon.", 7))
  10967. break;
  10968. switch (NameR[7]) {
  10969. default: break;
  10970. case 'A': // 2 strings to match.
  10971. if (memcmp(NameR.data()+8, "4.round.r", 9))
  10972. break;
  10973. switch (NameR[17]) {
  10974. default: break;
  10975. case 'i': // 1 string to match.
  10976. if (memcmp(NameR.data()+18, ".sat", 4))
  10977. break;
  10978. return Intrinsic::hexagon_A4_round_ri_sat; // "exagon.A4.round.ri.sat"
  10979. case 'r': // 1 string to match.
  10980. if (memcmp(NameR.data()+18, ".sat", 4))
  10981. break;
  10982. return Intrinsic::hexagon_A4_round_rr_sat; // "exagon.A4.round.rr.sat"
  10983. }
  10984. break;
  10985. case 'M': // 1 string to match.
  10986. if (memcmp(NameR.data()+8, "2.vrcmpys.s1rp", 14))
  10987. break;
  10988. return Intrinsic::hexagon_M2_vrcmpys_s1rp; // "exagon.M2.vrcmpys.s1rp"
  10989. case 'S': // 6 strings to match.
  10990. if (memcmp(NameR.data()+8, "2.", 2))
  10991. break;
  10992. switch (NameR[10]) {
  10993. default: break;
  10994. case 'a': // 2 strings to match.
  10995. if (memcmp(NameR.data()+11, "sl.i.", 5))
  10996. break;
  10997. switch (NameR[16]) {
  10998. default: break;
  10999. case 'p': // 1 string to match.
  11000. if (memcmp(NameR.data()+17, ".xacc", 5))
  11001. break;
  11002. return Intrinsic::hexagon_S2_asl_i_p_xacc; // "exagon.S2.asl.i.p.xacc"
  11003. case 'r': // 1 string to match.
  11004. if (memcmp(NameR.data()+17, ".xacc", 5))
  11005. break;
  11006. return Intrinsic::hexagon_S2_asl_i_r_xacc; // "exagon.S2.asl.i.r.xacc"
  11007. }
  11008. break;
  11009. case 'd': // 1 string to match.
  11010. if (memcmp(NameR.data()+11, "einterleave", 11))
  11011. break;
  11012. return Intrinsic::hexagon_S2_deinterleave; // "exagon.S2.deinterleave"
  11013. case 'e': // 1 string to match.
  11014. if (memcmp(NameR.data()+11, "xtractup.rp", 11))
  11015. break;
  11016. return Intrinsic::hexagon_S2_extractup_rp; // "exagon.S2.extractup.rp"
  11017. case 'l': // 2 strings to match.
  11018. if (memcmp(NameR.data()+11, "sr.i.", 5))
  11019. break;
  11020. switch (NameR[16]) {
  11021. default: break;
  11022. case 'p': // 1 string to match.
  11023. if (memcmp(NameR.data()+17, ".xacc", 5))
  11024. break;
  11025. return Intrinsic::hexagon_S2_lsr_i_p_xacc; // "exagon.S2.lsr.i.p.xacc"
  11026. case 'r': // 1 string to match.
  11027. if (memcmp(NameR.data()+17, ".xacc", 5))
  11028. break;
  11029. return Intrinsic::hexagon_S2_lsr_i_r_xacc; // "exagon.S2.lsr.i.r.xacc"
  11030. }
  11031. break;
  11032. }
  11033. break;
  11034. }
  11035. break;
  11036. case 23: // 42 strings to match.
  11037. if (memcmp(NameR.data()+0, "exagon.", 7))
  11038. break;
  11039. switch (NameR[7]) {
  11040. default: break;
  11041. case 'M': // 38 strings to match.
  11042. switch (NameR[8]) {
  11043. default: break;
  11044. case '2': // 35 strings to match.
  11045. if (NameR[9] != '.')
  11046. break;
  11047. switch (NameR[10]) {
  11048. default: break;
  11049. case 'm': // 33 strings to match.
  11050. if (memcmp(NameR.data()+11, "py.", 3))
  11051. break;
  11052. switch (NameR[14]) {
  11053. default: break;
  11054. case 'a': // 8 strings to match.
  11055. if (memcmp(NameR.data()+15, "cc.", 3))
  11056. break;
  11057. switch (NameR[18]) {
  11058. default: break;
  11059. case 'h': // 4 strings to match.
  11060. switch (NameR[19]) {
  11061. default: break;
  11062. case 'h': // 2 strings to match.
  11063. if (memcmp(NameR.data()+20, ".s", 2))
  11064. break;
  11065. switch (NameR[22]) {
  11066. default: break;
  11067. case '0': // 1 string to match.
  11068. return Intrinsic::hexagon_M2_mpy_acc_hh_s0; // "exagon.M2.mpy.acc.hh.s0"
  11069. case '1': // 1 string to match.
  11070. return Intrinsic::hexagon_M2_mpy_acc_hh_s1; // "exagon.M2.mpy.acc.hh.s1"
  11071. }
  11072. break;
  11073. case 'l': // 2 strings to match.
  11074. if (memcmp(NameR.data()+20, ".s", 2))
  11075. break;
  11076. switch (NameR[22]) {
  11077. default: break;
  11078. case '0': // 1 string to match.
  11079. return Intrinsic::hexagon_M2_mpy_acc_hl_s0; // "exagon.M2.mpy.acc.hl.s0"
  11080. case '1': // 1 string to match.
  11081. return Intrinsic::hexagon_M2_mpy_acc_hl_s1; // "exagon.M2.mpy.acc.hl.s1"
  11082. }
  11083. break;
  11084. }
  11085. break;
  11086. case 'l': // 4 strings to match.
  11087. switch (NameR[19]) {
  11088. default: break;
  11089. case 'h': // 2 strings to match.
  11090. if (memcmp(NameR.data()+20, ".s", 2))
  11091. break;
  11092. switch (NameR[22]) {
  11093. default: break;
  11094. case '0': // 1 string to match.
  11095. return Intrinsic::hexagon_M2_mpy_acc_lh_s0; // "exagon.M2.mpy.acc.lh.s0"
  11096. case '1': // 1 string to match.
  11097. return Intrinsic::hexagon_M2_mpy_acc_lh_s1; // "exagon.M2.mpy.acc.lh.s1"
  11098. }
  11099. break;
  11100. case 'l': // 2 strings to match.
  11101. if (memcmp(NameR.data()+20, ".s", 2))
  11102. break;
  11103. switch (NameR[22]) {
  11104. default: break;
  11105. case '0': // 1 string to match.
  11106. return Intrinsic::hexagon_M2_mpy_acc_ll_s0; // "exagon.M2.mpy.acc.ll.s0"
  11107. case '1': // 1 string to match.
  11108. return Intrinsic::hexagon_M2_mpy_acc_ll_s1; // "exagon.M2.mpy.acc.ll.s1"
  11109. }
  11110. break;
  11111. }
  11112. break;
  11113. }
  11114. break;
  11115. case 'n': // 8 strings to match.
  11116. if (memcmp(NameR.data()+15, "ac.", 3))
  11117. break;
  11118. switch (NameR[18]) {
  11119. default: break;
  11120. case 'h': // 4 strings to match.
  11121. switch (NameR[19]) {
  11122. default: break;
  11123. case 'h': // 2 strings to match.
  11124. if (memcmp(NameR.data()+20, ".s", 2))
  11125. break;
  11126. switch (NameR[22]) {
  11127. default: break;
  11128. case '0': // 1 string to match.
  11129. return Intrinsic::hexagon_M2_mpy_nac_hh_s0; // "exagon.M2.mpy.nac.hh.s0"
  11130. case '1': // 1 string to match.
  11131. return Intrinsic::hexagon_M2_mpy_nac_hh_s1; // "exagon.M2.mpy.nac.hh.s1"
  11132. }
  11133. break;
  11134. case 'l': // 2 strings to match.
  11135. if (memcmp(NameR.data()+20, ".s", 2))
  11136. break;
  11137. switch (NameR[22]) {
  11138. default: break;
  11139. case '0': // 1 string to match.
  11140. return Intrinsic::hexagon_M2_mpy_nac_hl_s0; // "exagon.M2.mpy.nac.hl.s0"
  11141. case '1': // 1 string to match.
  11142. return Intrinsic::hexagon_M2_mpy_nac_hl_s1; // "exagon.M2.mpy.nac.hl.s1"
  11143. }
  11144. break;
  11145. }
  11146. break;
  11147. case 'l': // 4 strings to match.
  11148. switch (NameR[19]) {
  11149. default: break;
  11150. case 'h': // 2 strings to match.
  11151. if (memcmp(NameR.data()+20, ".s", 2))
  11152. break;
  11153. switch (NameR[22]) {
  11154. default: break;
  11155. case '0': // 1 string to match.
  11156. return Intrinsic::hexagon_M2_mpy_nac_lh_s0; // "exagon.M2.mpy.nac.lh.s0"
  11157. case '1': // 1 string to match.
  11158. return Intrinsic::hexagon_M2_mpy_nac_lh_s1; // "exagon.M2.mpy.nac.lh.s1"
  11159. }
  11160. break;
  11161. case 'l': // 2 strings to match.
  11162. if (memcmp(NameR.data()+20, ".s", 2))
  11163. break;
  11164. switch (NameR[22]) {
  11165. default: break;
  11166. case '0': // 1 string to match.
  11167. return Intrinsic::hexagon_M2_mpy_nac_ll_s0; // "exagon.M2.mpy.nac.ll.s0"
  11168. case '1': // 1 string to match.
  11169. return Intrinsic::hexagon_M2_mpy_nac_ll_s1; // "exagon.M2.mpy.nac.ll.s1"
  11170. }
  11171. break;
  11172. }
  11173. break;
  11174. }
  11175. break;
  11176. case 'r': // 8 strings to match.
  11177. if (memcmp(NameR.data()+15, "nd.", 3))
  11178. break;
  11179. switch (NameR[18]) {
  11180. default: break;
  11181. case 'h': // 4 strings to match.
  11182. switch (NameR[19]) {
  11183. default: break;
  11184. case 'h': // 2 strings to match.
  11185. if (memcmp(NameR.data()+20, ".s", 2))
  11186. break;
  11187. switch (NameR[22]) {
  11188. default: break;
  11189. case '0': // 1 string to match.
  11190. return Intrinsic::hexagon_M2_mpy_rnd_hh_s0; // "exagon.M2.mpy.rnd.hh.s0"
  11191. case '1': // 1 string to match.
  11192. return Intrinsic::hexagon_M2_mpy_rnd_hh_s1; // "exagon.M2.mpy.rnd.hh.s1"
  11193. }
  11194. break;
  11195. case 'l': // 2 strings to match.
  11196. if (memcmp(NameR.data()+20, ".s", 2))
  11197. break;
  11198. switch (NameR[22]) {
  11199. default: break;
  11200. case '0': // 1 string to match.
  11201. return Intrinsic::hexagon_M2_mpy_rnd_hl_s0; // "exagon.M2.mpy.rnd.hl.s0"
  11202. case '1': // 1 string to match.
  11203. return Intrinsic::hexagon_M2_mpy_rnd_hl_s1; // "exagon.M2.mpy.rnd.hl.s1"
  11204. }
  11205. break;
  11206. }
  11207. break;
  11208. case 'l': // 4 strings to match.
  11209. switch (NameR[19]) {
  11210. default: break;
  11211. case 'h': // 2 strings to match.
  11212. if (memcmp(NameR.data()+20, ".s", 2))
  11213. break;
  11214. switch (NameR[22]) {
  11215. default: break;
  11216. case '0': // 1 string to match.
  11217. return Intrinsic::hexagon_M2_mpy_rnd_lh_s0; // "exagon.M2.mpy.rnd.lh.s0"
  11218. case '1': // 1 string to match.
  11219. return Intrinsic::hexagon_M2_mpy_rnd_lh_s1; // "exagon.M2.mpy.rnd.lh.s1"
  11220. }
  11221. break;
  11222. case 'l': // 2 strings to match.
  11223. if (memcmp(NameR.data()+20, ".s", 2))
  11224. break;
  11225. switch (NameR[22]) {
  11226. default: break;
  11227. case '0': // 1 string to match.
  11228. return Intrinsic::hexagon_M2_mpy_rnd_ll_s0; // "exagon.M2.mpy.rnd.ll.s0"
  11229. case '1': // 1 string to match.
  11230. return Intrinsic::hexagon_M2_mpy_rnd_ll_s1; // "exagon.M2.mpy.rnd.ll.s1"
  11231. }
  11232. break;
  11233. }
  11234. break;
  11235. }
  11236. break;
  11237. case 's': // 8 strings to match.
  11238. if (memcmp(NameR.data()+15, "at.", 3))
  11239. break;
  11240. switch (NameR[18]) {
  11241. default: break;
  11242. case 'h': // 4 strings to match.
  11243. switch (NameR[19]) {
  11244. default: break;
  11245. case 'h': // 2 strings to match.
  11246. if (memcmp(NameR.data()+20, ".s", 2))
  11247. break;
  11248. switch (NameR[22]) {
  11249. default: break;
  11250. case '0': // 1 string to match.
  11251. return Intrinsic::hexagon_M2_mpy_sat_hh_s0; // "exagon.M2.mpy.sat.hh.s0"
  11252. case '1': // 1 string to match.
  11253. return Intrinsic::hexagon_M2_mpy_sat_hh_s1; // "exagon.M2.mpy.sat.hh.s1"
  11254. }
  11255. break;
  11256. case 'l': // 2 strings to match.
  11257. if (memcmp(NameR.data()+20, ".s", 2))
  11258. break;
  11259. switch (NameR[22]) {
  11260. default: break;
  11261. case '0': // 1 string to match.
  11262. return Intrinsic::hexagon_M2_mpy_sat_hl_s0; // "exagon.M2.mpy.sat.hl.s0"
  11263. case '1': // 1 string to match.
  11264. return Intrinsic::hexagon_M2_mpy_sat_hl_s1; // "exagon.M2.mpy.sat.hl.s1"
  11265. }
  11266. break;
  11267. }
  11268. break;
  11269. case 'l': // 4 strings to match.
  11270. switch (NameR[19]) {
  11271. default: break;
  11272. case 'h': // 2 strings to match.
  11273. if (memcmp(NameR.data()+20, ".s", 2))
  11274. break;
  11275. switch (NameR[22]) {
  11276. default: break;
  11277. case '0': // 1 string to match.
  11278. return Intrinsic::hexagon_M2_mpy_sat_lh_s0; // "exagon.M2.mpy.sat.lh.s0"
  11279. case '1': // 1 string to match.
  11280. return Intrinsic::hexagon_M2_mpy_sat_lh_s1; // "exagon.M2.mpy.sat.lh.s1"
  11281. }
  11282. break;
  11283. case 'l': // 2 strings to match.
  11284. if (memcmp(NameR.data()+20, ".s", 2))
  11285. break;
  11286. switch (NameR[22]) {
  11287. default: break;
  11288. case '0': // 1 string to match.
  11289. return Intrinsic::hexagon_M2_mpy_sat_ll_s0; // "exagon.M2.mpy.sat.ll.s0"
  11290. case '1': // 1 string to match.
  11291. return Intrinsic::hexagon_M2_mpy_sat_ll_s1; // "exagon.M2.mpy.sat.ll.s1"
  11292. }
  11293. break;
  11294. }
  11295. break;
  11296. }
  11297. break;
  11298. case 'u': // 1 string to match.
  11299. if (memcmp(NameR.data()+15, "p.s1.sat", 8))
  11300. break;
  11301. return Intrinsic::hexagon_M2_mpy_up_s1_sat; // "exagon.M2.mpy.up.s1.sat"
  11302. }
  11303. break;
  11304. case 'v': // 2 strings to match.
  11305. if (memcmp(NameR.data()+11, "mpy2s.s", 7))
  11306. break;
  11307. switch (NameR[18]) {
  11308. default: break;
  11309. case '0': // 1 string to match.
  11310. if (memcmp(NameR.data()+19, "pack", 4))
  11311. break;
  11312. return Intrinsic::hexagon_M2_vmpy2s_s0pack; // "exagon.M2.vmpy2s.s0pack"
  11313. case '1': // 1 string to match.
  11314. if (memcmp(NameR.data()+19, "pack", 4))
  11315. break;
  11316. return Intrinsic::hexagon_M2_vmpy2s_s1pack; // "exagon.M2.vmpy2s.s1pack"
  11317. }
  11318. break;
  11319. }
  11320. break;
  11321. case '4': // 3 strings to match.
  11322. if (NameR[9] != '.')
  11323. break;
  11324. switch (NameR[10]) {
  11325. default: break;
  11326. case 'm': // 2 strings to match.
  11327. switch (NameR[11]) {
  11328. default: break;
  11329. case 'a': // 1 string to match.
  11330. if (memcmp(NameR.data()+12, "c.up.s1.sat", 11))
  11331. break;
  11332. return Intrinsic::hexagon_M4_mac_up_s1_sat; // "exagon.M4.mac.up.s1.sat"
  11333. case 'p': // 1 string to match.
  11334. if (memcmp(NameR.data()+12, "yri.addr.u2", 11))
  11335. break;
  11336. return Intrinsic::hexagon_M4_mpyri_addr_u2; // "exagon.M4.mpyri.addr.u2"
  11337. }
  11338. break;
  11339. case 'n': // 1 string to match.
  11340. if (memcmp(NameR.data()+11, "ac.up.s1.sat", 12))
  11341. break;
  11342. return Intrinsic::hexagon_M4_nac_up_s1_sat; // "exagon.M4.nac.up.s1.sat"
  11343. }
  11344. break;
  11345. }
  11346. break;
  11347. case 'S': // 4 strings to match.
  11348. switch (NameR[8]) {
  11349. default: break;
  11350. case '2': // 2 strings to match.
  11351. if (memcmp(NameR.data()+9, ".vsat", 5))
  11352. break;
  11353. switch (NameR[14]) {
  11354. default: break;
  11355. case 'h': // 1 string to match.
  11356. if (memcmp(NameR.data()+15, "b.nopack", 8))
  11357. break;
  11358. return Intrinsic::hexagon_S2_vsathb_nopack; // "exagon.S2.vsathb.nopack"
  11359. case 'w': // 1 string to match.
  11360. if (memcmp(NameR.data()+15, "h.nopack", 8))
  11361. break;
  11362. return Intrinsic::hexagon_S2_vsatwh_nopack; // "exagon.S2.vsatwh.nopack"
  11363. }
  11364. break;
  11365. case '4': // 1 string to match.
  11366. if (memcmp(NameR.data()+9, ".vrcrotate.acc", 14))
  11367. break;
  11368. return Intrinsic::hexagon_S4_vrcrotate_acc; // "exagon.S4.vrcrotate.acc"
  11369. case 'I': // 1 string to match.
  11370. if (memcmp(NameR.data()+9, ".to.SXTHI.asrh", 14))
  11371. break;
  11372. return Intrinsic::hexagon_SI_to_SXTHI_asrh; // "exagon.SI.to.SXTHI.asrh"
  11373. }
  11374. break;
  11375. }
  11376. break;
  11377. case 24: // 64 strings to match.
  11378. if (memcmp(NameR.data()+0, "exagon.", 7))
  11379. break;
  11380. switch (NameR[7]) {
  11381. default: break;
  11382. case 'F': // 4 strings to match.
  11383. if (memcmp(NameR.data()+8, "2.conv.", 7))
  11384. break;
  11385. switch (NameR[15]) {
  11386. default: break;
  11387. case 'd': // 2 strings to match.
  11388. if (memcmp(NameR.data()+16, "f2", 2))
  11389. break;
  11390. switch (NameR[18]) {
  11391. default: break;
  11392. case 'd': // 1 string to match.
  11393. if (memcmp(NameR.data()+19, ".chop", 5))
  11394. break;
  11395. return Intrinsic::hexagon_F2_conv_df2d_chop; // "exagon.F2.conv.df2d.chop"
  11396. case 'w': // 1 string to match.
  11397. if (memcmp(NameR.data()+19, ".chop", 5))
  11398. break;
  11399. return Intrinsic::hexagon_F2_conv_df2w_chop; // "exagon.F2.conv.df2w.chop"
  11400. }
  11401. break;
  11402. case 's': // 2 strings to match.
  11403. if (memcmp(NameR.data()+16, "f2", 2))
  11404. break;
  11405. switch (NameR[18]) {
  11406. default: break;
  11407. case 'd': // 1 string to match.
  11408. if (memcmp(NameR.data()+19, ".chop", 5))
  11409. break;
  11410. return Intrinsic::hexagon_F2_conv_sf2d_chop; // "exagon.F2.conv.sf2d.chop"
  11411. case 'w': // 1 string to match.
  11412. if (memcmp(NameR.data()+19, ".chop", 5))
  11413. break;
  11414. return Intrinsic::hexagon_F2_conv_sf2w_chop; // "exagon.F2.conv.sf2w.chop"
  11415. }
  11416. break;
  11417. }
  11418. break;
  11419. case 'M': // 56 strings to match.
  11420. switch (NameR[8]) {
  11421. default: break;
  11422. case '2': // 52 strings to match.
  11423. if (NameR[9] != '.')
  11424. break;
  11425. switch (NameR[10]) {
  11426. default: break;
  11427. case 'd': // 5 strings to match.
  11428. if (memcmp(NameR.data()+11, "pmpy", 4))
  11429. break;
  11430. switch (NameR[15]) {
  11431. default: break;
  11432. case 's': // 3 strings to match.
  11433. if (memcmp(NameR.data()+16, "s.", 2))
  11434. break;
  11435. switch (NameR[18]) {
  11436. default: break;
  11437. case 'a': // 1 string to match.
  11438. if (memcmp(NameR.data()+19, "cc.s0", 5))
  11439. break;
  11440. return Intrinsic::hexagon_M2_dpmpyss_acc_s0; // "exagon.M2.dpmpyss.acc.s0"
  11441. case 'n': // 1 string to match.
  11442. if (memcmp(NameR.data()+19, "ac.s0", 5))
  11443. break;
  11444. return Intrinsic::hexagon_M2_dpmpyss_nac_s0; // "exagon.M2.dpmpyss.nac.s0"
  11445. case 'r': // 1 string to match.
  11446. if (memcmp(NameR.data()+19, "nd.s0", 5))
  11447. break;
  11448. return Intrinsic::hexagon_M2_dpmpyss_rnd_s0; // "exagon.M2.dpmpyss.rnd.s0"
  11449. }
  11450. break;
  11451. case 'u': // 2 strings to match.
  11452. if (memcmp(NameR.data()+16, "u.", 2))
  11453. break;
  11454. switch (NameR[18]) {
  11455. default: break;
  11456. case 'a': // 1 string to match.
  11457. if (memcmp(NameR.data()+19, "cc.s0", 5))
  11458. break;
  11459. return Intrinsic::hexagon_M2_dpmpyuu_acc_s0; // "exagon.M2.dpmpyuu.acc.s0"
  11460. case 'n': // 1 string to match.
  11461. if (memcmp(NameR.data()+19, "ac.s0", 5))
  11462. break;
  11463. return Intrinsic::hexagon_M2_dpmpyuu_nac_s0; // "exagon.M2.dpmpyuu.nac.s0"
  11464. }
  11465. break;
  11466. }
  11467. break;
  11468. case 'm': // 40 strings to match.
  11469. if (memcmp(NameR.data()+11, "py", 2))
  11470. break;
  11471. switch (NameR[13]) {
  11472. default: break;
  11473. case 'd': // 24 strings to match.
  11474. if (NameR[14] != '.')
  11475. break;
  11476. switch (NameR[15]) {
  11477. default: break;
  11478. case 'a': // 8 strings to match.
  11479. if (memcmp(NameR.data()+16, "cc.", 3))
  11480. break;
  11481. switch (NameR[19]) {
  11482. default: break;
  11483. case 'h': // 4 strings to match.
  11484. switch (NameR[20]) {
  11485. default: break;
  11486. case 'h': // 2 strings to match.
  11487. if (memcmp(NameR.data()+21, ".s", 2))
  11488. break;
  11489. switch (NameR[23]) {
  11490. default: break;
  11491. case '0': // 1 string to match.
  11492. return Intrinsic::hexagon_M2_mpyd_acc_hh_s0; // "exagon.M2.mpyd.acc.hh.s0"
  11493. case '1': // 1 string to match.
  11494. return Intrinsic::hexagon_M2_mpyd_acc_hh_s1; // "exagon.M2.mpyd.acc.hh.s1"
  11495. }
  11496. break;
  11497. case 'l': // 2 strings to match.
  11498. if (memcmp(NameR.data()+21, ".s", 2))
  11499. break;
  11500. switch (NameR[23]) {
  11501. default: break;
  11502. case '0': // 1 string to match.
  11503. return Intrinsic::hexagon_M2_mpyd_acc_hl_s0; // "exagon.M2.mpyd.acc.hl.s0"
  11504. case '1': // 1 string to match.
  11505. return Intrinsic::hexagon_M2_mpyd_acc_hl_s1; // "exagon.M2.mpyd.acc.hl.s1"
  11506. }
  11507. break;
  11508. }
  11509. break;
  11510. case 'l': // 4 strings to match.
  11511. switch (NameR[20]) {
  11512. default: break;
  11513. case 'h': // 2 strings to match.
  11514. if (memcmp(NameR.data()+21, ".s", 2))
  11515. break;
  11516. switch (NameR[23]) {
  11517. default: break;
  11518. case '0': // 1 string to match.
  11519. return Intrinsic::hexagon_M2_mpyd_acc_lh_s0; // "exagon.M2.mpyd.acc.lh.s0"
  11520. case '1': // 1 string to match.
  11521. return Intrinsic::hexagon_M2_mpyd_acc_lh_s1; // "exagon.M2.mpyd.acc.lh.s1"
  11522. }
  11523. break;
  11524. case 'l': // 2 strings to match.
  11525. if (memcmp(NameR.data()+21, ".s", 2))
  11526. break;
  11527. switch (NameR[23]) {
  11528. default: break;
  11529. case '0': // 1 string to match.
  11530. return Intrinsic::hexagon_M2_mpyd_acc_ll_s0; // "exagon.M2.mpyd.acc.ll.s0"
  11531. case '1': // 1 string to match.
  11532. return Intrinsic::hexagon_M2_mpyd_acc_ll_s1; // "exagon.M2.mpyd.acc.ll.s1"
  11533. }
  11534. break;
  11535. }
  11536. break;
  11537. }
  11538. break;
  11539. case 'n': // 8 strings to match.
  11540. if (memcmp(NameR.data()+16, "ac.", 3))
  11541. break;
  11542. switch (NameR[19]) {
  11543. default: break;
  11544. case 'h': // 4 strings to match.
  11545. switch (NameR[20]) {
  11546. default: break;
  11547. case 'h': // 2 strings to match.
  11548. if (memcmp(NameR.data()+21, ".s", 2))
  11549. break;
  11550. switch (NameR[23]) {
  11551. default: break;
  11552. case '0': // 1 string to match.
  11553. return Intrinsic::hexagon_M2_mpyd_nac_hh_s0; // "exagon.M2.mpyd.nac.hh.s0"
  11554. case '1': // 1 string to match.
  11555. return Intrinsic::hexagon_M2_mpyd_nac_hh_s1; // "exagon.M2.mpyd.nac.hh.s1"
  11556. }
  11557. break;
  11558. case 'l': // 2 strings to match.
  11559. if (memcmp(NameR.data()+21, ".s", 2))
  11560. break;
  11561. switch (NameR[23]) {
  11562. default: break;
  11563. case '0': // 1 string to match.
  11564. return Intrinsic::hexagon_M2_mpyd_nac_hl_s0; // "exagon.M2.mpyd.nac.hl.s0"
  11565. case '1': // 1 string to match.
  11566. return Intrinsic::hexagon_M2_mpyd_nac_hl_s1; // "exagon.M2.mpyd.nac.hl.s1"
  11567. }
  11568. break;
  11569. }
  11570. break;
  11571. case 'l': // 4 strings to match.
  11572. switch (NameR[20]) {
  11573. default: break;
  11574. case 'h': // 2 strings to match.
  11575. if (memcmp(NameR.data()+21, ".s", 2))
  11576. break;
  11577. switch (NameR[23]) {
  11578. default: break;
  11579. case '0': // 1 string to match.
  11580. return Intrinsic::hexagon_M2_mpyd_nac_lh_s0; // "exagon.M2.mpyd.nac.lh.s0"
  11581. case '1': // 1 string to match.
  11582. return Intrinsic::hexagon_M2_mpyd_nac_lh_s1; // "exagon.M2.mpyd.nac.lh.s1"
  11583. }
  11584. break;
  11585. case 'l': // 2 strings to match.
  11586. if (memcmp(NameR.data()+21, ".s", 2))
  11587. break;
  11588. switch (NameR[23]) {
  11589. default: break;
  11590. case '0': // 1 string to match.
  11591. return Intrinsic::hexagon_M2_mpyd_nac_ll_s0; // "exagon.M2.mpyd.nac.ll.s0"
  11592. case '1': // 1 string to match.
  11593. return Intrinsic::hexagon_M2_mpyd_nac_ll_s1; // "exagon.M2.mpyd.nac.ll.s1"
  11594. }
  11595. break;
  11596. }
  11597. break;
  11598. }
  11599. break;
  11600. case 'r': // 8 strings to match.
  11601. if (memcmp(NameR.data()+16, "nd.", 3))
  11602. break;
  11603. switch (NameR[19]) {
  11604. default: break;
  11605. case 'h': // 4 strings to match.
  11606. switch (NameR[20]) {
  11607. default: break;
  11608. case 'h': // 2 strings to match.
  11609. if (memcmp(NameR.data()+21, ".s", 2))
  11610. break;
  11611. switch (NameR[23]) {
  11612. default: break;
  11613. case '0': // 1 string to match.
  11614. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s0; // "exagon.M2.mpyd.rnd.hh.s0"
  11615. case '1': // 1 string to match.
  11616. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s1; // "exagon.M2.mpyd.rnd.hh.s1"
  11617. }
  11618. break;
  11619. case 'l': // 2 strings to match.
  11620. if (memcmp(NameR.data()+21, ".s", 2))
  11621. break;
  11622. switch (NameR[23]) {
  11623. default: break;
  11624. case '0': // 1 string to match.
  11625. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s0; // "exagon.M2.mpyd.rnd.hl.s0"
  11626. case '1': // 1 string to match.
  11627. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s1; // "exagon.M2.mpyd.rnd.hl.s1"
  11628. }
  11629. break;
  11630. }
  11631. break;
  11632. case 'l': // 4 strings to match.
  11633. switch (NameR[20]) {
  11634. default: break;
  11635. case 'h': // 2 strings to match.
  11636. if (memcmp(NameR.data()+21, ".s", 2))
  11637. break;
  11638. switch (NameR[23]) {
  11639. default: break;
  11640. case '0': // 1 string to match.
  11641. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s0; // "exagon.M2.mpyd.rnd.lh.s0"
  11642. case '1': // 1 string to match.
  11643. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s1; // "exagon.M2.mpyd.rnd.lh.s1"
  11644. }
  11645. break;
  11646. case 'l': // 2 strings to match.
  11647. if (memcmp(NameR.data()+21, ".s", 2))
  11648. break;
  11649. switch (NameR[23]) {
  11650. default: break;
  11651. case '0': // 1 string to match.
  11652. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s0; // "exagon.M2.mpyd.rnd.ll.s0"
  11653. case '1': // 1 string to match.
  11654. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s1; // "exagon.M2.mpyd.rnd.ll.s1"
  11655. }
  11656. break;
  11657. }
  11658. break;
  11659. }
  11660. break;
  11661. }
  11662. break;
  11663. case 'u': // 16 strings to match.
  11664. if (NameR[14] != '.')
  11665. break;
  11666. switch (NameR[15]) {
  11667. default: break;
  11668. case 'a': // 8 strings to match.
  11669. if (memcmp(NameR.data()+16, "cc.", 3))
  11670. break;
  11671. switch (NameR[19]) {
  11672. default: break;
  11673. case 'h': // 4 strings to match.
  11674. switch (NameR[20]) {
  11675. default: break;
  11676. case 'h': // 2 strings to match.
  11677. if (memcmp(NameR.data()+21, ".s", 2))
  11678. break;
  11679. switch (NameR[23]) {
  11680. default: break;
  11681. case '0': // 1 string to match.
  11682. return Intrinsic::hexagon_M2_mpyu_acc_hh_s0; // "exagon.M2.mpyu.acc.hh.s0"
  11683. case '1': // 1 string to match.
  11684. return Intrinsic::hexagon_M2_mpyu_acc_hh_s1; // "exagon.M2.mpyu.acc.hh.s1"
  11685. }
  11686. break;
  11687. case 'l': // 2 strings to match.
  11688. if (memcmp(NameR.data()+21, ".s", 2))
  11689. break;
  11690. switch (NameR[23]) {
  11691. default: break;
  11692. case '0': // 1 string to match.
  11693. return Intrinsic::hexagon_M2_mpyu_acc_hl_s0; // "exagon.M2.mpyu.acc.hl.s0"
  11694. case '1': // 1 string to match.
  11695. return Intrinsic::hexagon_M2_mpyu_acc_hl_s1; // "exagon.M2.mpyu.acc.hl.s1"
  11696. }
  11697. break;
  11698. }
  11699. break;
  11700. case 'l': // 4 strings to match.
  11701. switch (NameR[20]) {
  11702. default: break;
  11703. case 'h': // 2 strings to match.
  11704. if (memcmp(NameR.data()+21, ".s", 2))
  11705. break;
  11706. switch (NameR[23]) {
  11707. default: break;
  11708. case '0': // 1 string to match.
  11709. return Intrinsic::hexagon_M2_mpyu_acc_lh_s0; // "exagon.M2.mpyu.acc.lh.s0"
  11710. case '1': // 1 string to match.
  11711. return Intrinsic::hexagon_M2_mpyu_acc_lh_s1; // "exagon.M2.mpyu.acc.lh.s1"
  11712. }
  11713. break;
  11714. case 'l': // 2 strings to match.
  11715. if (memcmp(NameR.data()+21, ".s", 2))
  11716. break;
  11717. switch (NameR[23]) {
  11718. default: break;
  11719. case '0': // 1 string to match.
  11720. return Intrinsic::hexagon_M2_mpyu_acc_ll_s0; // "exagon.M2.mpyu.acc.ll.s0"
  11721. case '1': // 1 string to match.
  11722. return Intrinsic::hexagon_M2_mpyu_acc_ll_s1; // "exagon.M2.mpyu.acc.ll.s1"
  11723. }
  11724. break;
  11725. }
  11726. break;
  11727. }
  11728. break;
  11729. case 'n': // 8 strings to match.
  11730. if (memcmp(NameR.data()+16, "ac.", 3))
  11731. break;
  11732. switch (NameR[19]) {
  11733. default: break;
  11734. case 'h': // 4 strings to match.
  11735. switch (NameR[20]) {
  11736. default: break;
  11737. case 'h': // 2 strings to match.
  11738. if (memcmp(NameR.data()+21, ".s", 2))
  11739. break;
  11740. switch (NameR[23]) {
  11741. default: break;
  11742. case '0': // 1 string to match.
  11743. return Intrinsic::hexagon_M2_mpyu_nac_hh_s0; // "exagon.M2.mpyu.nac.hh.s0"
  11744. case '1': // 1 string to match.
  11745. return Intrinsic::hexagon_M2_mpyu_nac_hh_s1; // "exagon.M2.mpyu.nac.hh.s1"
  11746. }
  11747. break;
  11748. case 'l': // 2 strings to match.
  11749. if (memcmp(NameR.data()+21, ".s", 2))
  11750. break;
  11751. switch (NameR[23]) {
  11752. default: break;
  11753. case '0': // 1 string to match.
  11754. return Intrinsic::hexagon_M2_mpyu_nac_hl_s0; // "exagon.M2.mpyu.nac.hl.s0"
  11755. case '1': // 1 string to match.
  11756. return Intrinsic::hexagon_M2_mpyu_nac_hl_s1; // "exagon.M2.mpyu.nac.hl.s1"
  11757. }
  11758. break;
  11759. }
  11760. break;
  11761. case 'l': // 4 strings to match.
  11762. switch (NameR[20]) {
  11763. default: break;
  11764. case 'h': // 2 strings to match.
  11765. if (memcmp(NameR.data()+21, ".s", 2))
  11766. break;
  11767. switch (NameR[23]) {
  11768. default: break;
  11769. case '0': // 1 string to match.
  11770. return Intrinsic::hexagon_M2_mpyu_nac_lh_s0; // "exagon.M2.mpyu.nac.lh.s0"
  11771. case '1': // 1 string to match.
  11772. return Intrinsic::hexagon_M2_mpyu_nac_lh_s1; // "exagon.M2.mpyu.nac.lh.s1"
  11773. }
  11774. break;
  11775. case 'l': // 2 strings to match.
  11776. if (memcmp(NameR.data()+21, ".s", 2))
  11777. break;
  11778. switch (NameR[23]) {
  11779. default: break;
  11780. case '0': // 1 string to match.
  11781. return Intrinsic::hexagon_M2_mpyu_nac_ll_s0; // "exagon.M2.mpyu.nac.ll.s0"
  11782. case '1': // 1 string to match.
  11783. return Intrinsic::hexagon_M2_mpyu_nac_ll_s1; // "exagon.M2.mpyu.nac.ll.s1"
  11784. }
  11785. break;
  11786. }
  11787. break;
  11788. }
  11789. break;
  11790. }
  11791. break;
  11792. }
  11793. break;
  11794. case 'v': // 7 strings to match.
  11795. switch (NameR[11]) {
  11796. default: break;
  11797. case 'c': // 6 strings to match.
  11798. if (NameR[12] != 'm')
  11799. break;
  11800. switch (NameR[13]) {
  11801. default: break;
  11802. case 'a': // 2 strings to match.
  11803. if (memcmp(NameR.data()+14, "c.s0.sat.", 9))
  11804. break;
  11805. switch (NameR[23]) {
  11806. default: break;
  11807. case 'i': // 1 string to match.
  11808. return Intrinsic::hexagon_M2_vcmac_s0_sat_i; // "exagon.M2.vcmac.s0.sat.i"
  11809. case 'r': // 1 string to match.
  11810. return Intrinsic::hexagon_M2_vcmac_s0_sat_r; // "exagon.M2.vcmac.s0.sat.r"
  11811. }
  11812. break;
  11813. case 'p': // 4 strings to match.
  11814. if (memcmp(NameR.data()+14, "y.s", 3))
  11815. break;
  11816. switch (NameR[17]) {
  11817. default: break;
  11818. case '0': // 2 strings to match.
  11819. if (memcmp(NameR.data()+18, ".sat.", 5))
  11820. break;
  11821. switch (NameR[23]) {
  11822. default: break;
  11823. case 'i': // 1 string to match.
  11824. return Intrinsic::hexagon_M2_vcmpy_s0_sat_i; // "exagon.M2.vcmpy.s0.sat.i"
  11825. case 'r': // 1 string to match.
  11826. return Intrinsic::hexagon_M2_vcmpy_s0_sat_r; // "exagon.M2.vcmpy.s0.sat.r"
  11827. }
  11828. break;
  11829. case '1': // 2 strings to match.
  11830. if (memcmp(NameR.data()+18, ".sat.", 5))
  11831. break;
  11832. switch (NameR[23]) {
  11833. default: break;
  11834. case 'i': // 1 string to match.
  11835. return Intrinsic::hexagon_M2_vcmpy_s1_sat_i; // "exagon.M2.vcmpy.s1.sat.i"
  11836. case 'r': // 1 string to match.
  11837. return Intrinsic::hexagon_M2_vcmpy_s1_sat_r; // "exagon.M2.vcmpy.s1.sat.r"
  11838. }
  11839. break;
  11840. }
  11841. break;
  11842. }
  11843. break;
  11844. case 'r': // 1 string to match.
  11845. if (memcmp(NameR.data()+12, "cmpys.acc.s1", 12))
  11846. break;
  11847. return Intrinsic::hexagon_M2_vrcmpys_acc_s1; // "exagon.M2.vrcmpys.acc.s1"
  11848. }
  11849. break;
  11850. }
  11851. break;
  11852. case '4': // 4 strings to match.
  11853. if (memcmp(NameR.data()+9, ".vrmpy", 6))
  11854. break;
  11855. switch (NameR[15]) {
  11856. default: break;
  11857. case 'e': // 2 strings to match.
  11858. if (memcmp(NameR.data()+16, "h.acc.s", 7))
  11859. break;
  11860. switch (NameR[23]) {
  11861. default: break;
  11862. case '0': // 1 string to match.
  11863. return Intrinsic::hexagon_M4_vrmpyeh_acc_s0; // "exagon.M4.vrmpyeh.acc.s0"
  11864. case '1': // 1 string to match.
  11865. return Intrinsic::hexagon_M4_vrmpyeh_acc_s1; // "exagon.M4.vrmpyeh.acc.s1"
  11866. }
  11867. break;
  11868. case 'o': // 2 strings to match.
  11869. if (memcmp(NameR.data()+16, "h.acc.s", 7))
  11870. break;
  11871. switch (NameR[23]) {
  11872. default: break;
  11873. case '0': // 1 string to match.
  11874. return Intrinsic::hexagon_M4_vrmpyoh_acc_s0; // "exagon.M4.vrmpyoh.acc.s0"
  11875. case '1': // 1 string to match.
  11876. return Intrinsic::hexagon_M4_vrmpyoh_acc_s1; // "exagon.M4.vrmpyoh.acc.s1"
  11877. }
  11878. break;
  11879. }
  11880. break;
  11881. }
  11882. break;
  11883. case 'S': // 4 strings to match.
  11884. if (memcmp(NameR.data()+8, "2.", 2))
  11885. break;
  11886. switch (NameR[10]) {
  11887. default: break;
  11888. case 'a': // 2 strings to match.
  11889. if (memcmp(NameR.data()+11, "sr.", 3))
  11890. break;
  11891. switch (NameR[14]) {
  11892. default: break;
  11893. case 'i': // 1 string to match.
  11894. if (memcmp(NameR.data()+15, ".svw.trun", 9))
  11895. break;
  11896. return Intrinsic::hexagon_S2_asr_i_svw_trun; // "exagon.S2.asr.i.svw.trun"
  11897. case 'r': // 1 string to match.
  11898. if (memcmp(NameR.data()+15, ".svw.trun", 9))
  11899. break;
  11900. return Intrinsic::hexagon_S2_asr_r_svw_trun; // "exagon.S2.asr.r.svw.trun"
  11901. }
  11902. break;
  11903. case 'v': // 2 strings to match.
  11904. if (memcmp(NameR.data()+11, "sat", 3))
  11905. break;
  11906. switch (NameR[14]) {
  11907. default: break;
  11908. case 'h': // 1 string to match.
  11909. if (memcmp(NameR.data()+15, "ub.nopack", 9))
  11910. break;
  11911. return Intrinsic::hexagon_S2_vsathub_nopack; // "exagon.S2.vsathub.nopack"
  11912. case 'w': // 1 string to match.
  11913. if (memcmp(NameR.data()+15, "uh.nopack", 9))
  11914. break;
  11915. return Intrinsic::hexagon_S2_vsatwuh_nopack; // "exagon.S2.vsatwuh.nopack"
  11916. }
  11917. break;
  11918. }
  11919. break;
  11920. }
  11921. break;
  11922. case 25: // 33 strings to match.
  11923. if (memcmp(NameR.data()+0, "exagon.", 7))
  11924. break;
  11925. switch (NameR[7]) {
  11926. default: break;
  11927. case 'A': // 12 strings to match.
  11928. if (memcmp(NameR.data()+8, "2.", 2))
  11929. break;
  11930. switch (NameR[10]) {
  11931. default: break;
  11932. case 'a': // 6 strings to match.
  11933. if (memcmp(NameR.data()+11, "ddh.", 4))
  11934. break;
  11935. switch (NameR[15]) {
  11936. default: break;
  11937. case 'h': // 4 strings to match.
  11938. if (memcmp(NameR.data()+16, "16.sat.", 7))
  11939. break;
  11940. switch (NameR[23]) {
  11941. default: break;
  11942. case 'h': // 2 strings to match.
  11943. switch (NameR[24]) {
  11944. default: break;
  11945. case 'h': // 1 string to match.
  11946. return Intrinsic::hexagon_A2_addh_h16_sat_hh; // "exagon.A2.addh.h16.sat.hh"
  11947. case 'l': // 1 string to match.
  11948. return Intrinsic::hexagon_A2_addh_h16_sat_hl; // "exagon.A2.addh.h16.sat.hl"
  11949. }
  11950. break;
  11951. case 'l': // 2 strings to match.
  11952. switch (NameR[24]) {
  11953. default: break;
  11954. case 'h': // 1 string to match.
  11955. return Intrinsic::hexagon_A2_addh_h16_sat_lh; // "exagon.A2.addh.h16.sat.lh"
  11956. case 'l': // 1 string to match.
  11957. return Intrinsic::hexagon_A2_addh_h16_sat_ll; // "exagon.A2.addh.h16.sat.ll"
  11958. }
  11959. break;
  11960. }
  11961. break;
  11962. case 'l': // 2 strings to match.
  11963. if (memcmp(NameR.data()+16, "16.sat.", 7))
  11964. break;
  11965. switch (NameR[23]) {
  11966. default: break;
  11967. case 'h': // 1 string to match.
  11968. if (NameR[24] != 'l')
  11969. break;
  11970. return Intrinsic::hexagon_A2_addh_l16_sat_hl; // "exagon.A2.addh.l16.sat.hl"
  11971. case 'l': // 1 string to match.
  11972. if (NameR[24] != 'l')
  11973. break;
  11974. return Intrinsic::hexagon_A2_addh_l16_sat_ll; // "exagon.A2.addh.l16.sat.ll"
  11975. }
  11976. break;
  11977. }
  11978. break;
  11979. case 's': // 6 strings to match.
  11980. if (memcmp(NameR.data()+11, "ubh.", 4))
  11981. break;
  11982. switch (NameR[15]) {
  11983. default: break;
  11984. case 'h': // 4 strings to match.
  11985. if (memcmp(NameR.data()+16, "16.sat.", 7))
  11986. break;
  11987. switch (NameR[23]) {
  11988. default: break;
  11989. case 'h': // 2 strings to match.
  11990. switch (NameR[24]) {
  11991. default: break;
  11992. case 'h': // 1 string to match.
  11993. return Intrinsic::hexagon_A2_subh_h16_sat_hh; // "exagon.A2.subh.h16.sat.hh"
  11994. case 'l': // 1 string to match.
  11995. return Intrinsic::hexagon_A2_subh_h16_sat_hl; // "exagon.A2.subh.h16.sat.hl"
  11996. }
  11997. break;
  11998. case 'l': // 2 strings to match.
  11999. switch (NameR[24]) {
  12000. default: break;
  12001. case 'h': // 1 string to match.
  12002. return Intrinsic::hexagon_A2_subh_h16_sat_lh; // "exagon.A2.subh.h16.sat.lh"
  12003. case 'l': // 1 string to match.
  12004. return Intrinsic::hexagon_A2_subh_h16_sat_ll; // "exagon.A2.subh.h16.sat.ll"
  12005. }
  12006. break;
  12007. }
  12008. break;
  12009. case 'l': // 2 strings to match.
  12010. if (memcmp(NameR.data()+16, "16.sat.", 7))
  12011. break;
  12012. switch (NameR[23]) {
  12013. default: break;
  12014. case 'h': // 1 string to match.
  12015. if (NameR[24] != 'l')
  12016. break;
  12017. return Intrinsic::hexagon_A2_subh_l16_sat_hl; // "exagon.A2.subh.l16.sat.hl"
  12018. case 'l': // 1 string to match.
  12019. if (NameR[24] != 'l')
  12020. break;
  12021. return Intrinsic::hexagon_A2_subh_l16_sat_ll; // "exagon.A2.subh.l16.sat.ll"
  12022. }
  12023. break;
  12024. }
  12025. break;
  12026. }
  12027. break;
  12028. case 'C': // 1 string to match.
  12029. if (memcmp(NameR.data()+8, "4.fastcorner9.not", 17))
  12030. break;
  12031. return Intrinsic::hexagon_C4_fastcorner9_not; // "exagon.C4.fastcorner9.not"
  12032. case 'F': // 4 strings to match.
  12033. if (memcmp(NameR.data()+8, "2.conv.", 7))
  12034. break;
  12035. switch (NameR[15]) {
  12036. default: break;
  12037. case 'd': // 2 strings to match.
  12038. if (memcmp(NameR.data()+16, "f2u", 3))
  12039. break;
  12040. switch (NameR[19]) {
  12041. default: break;
  12042. case 'd': // 1 string to match.
  12043. if (memcmp(NameR.data()+20, ".chop", 5))
  12044. break;
  12045. return Intrinsic::hexagon_F2_conv_df2ud_chop; // "exagon.F2.conv.df2ud.chop"
  12046. case 'w': // 1 string to match.
  12047. if (memcmp(NameR.data()+20, ".chop", 5))
  12048. break;
  12049. return Intrinsic::hexagon_F2_conv_df2uw_chop; // "exagon.F2.conv.df2uw.chop"
  12050. }
  12051. break;
  12052. case 's': // 2 strings to match.
  12053. if (memcmp(NameR.data()+16, "f2u", 3))
  12054. break;
  12055. switch (NameR[19]) {
  12056. default: break;
  12057. case 'd': // 1 string to match.
  12058. if (memcmp(NameR.data()+20, ".chop", 5))
  12059. break;
  12060. return Intrinsic::hexagon_F2_conv_sf2ud_chop; // "exagon.F2.conv.sf2ud.chop"
  12061. case 'w': // 1 string to match.
  12062. if (memcmp(NameR.data()+20, ".chop", 5))
  12063. break;
  12064. return Intrinsic::hexagon_F2_conv_sf2uw_chop; // "exagon.F2.conv.sf2uw.chop"
  12065. }
  12066. break;
  12067. }
  12068. break;
  12069. case 'M': // 16 strings to match.
  12070. if (memcmp(NameR.data()+8, "2.mpyud.", 8))
  12071. break;
  12072. switch (NameR[16]) {
  12073. default: break;
  12074. case 'a': // 8 strings to match.
  12075. if (memcmp(NameR.data()+17, "cc.", 3))
  12076. break;
  12077. switch (NameR[20]) {
  12078. default: break;
  12079. case 'h': // 4 strings to match.
  12080. switch (NameR[21]) {
  12081. default: break;
  12082. case 'h': // 2 strings to match.
  12083. if (memcmp(NameR.data()+22, ".s", 2))
  12084. break;
  12085. switch (NameR[24]) {
  12086. default: break;
  12087. case '0': // 1 string to match.
  12088. return Intrinsic::hexagon_M2_mpyud_acc_hh_s0; // "exagon.M2.mpyud.acc.hh.s0"
  12089. case '1': // 1 string to match.
  12090. return Intrinsic::hexagon_M2_mpyud_acc_hh_s1; // "exagon.M2.mpyud.acc.hh.s1"
  12091. }
  12092. break;
  12093. case 'l': // 2 strings to match.
  12094. if (memcmp(NameR.data()+22, ".s", 2))
  12095. break;
  12096. switch (NameR[24]) {
  12097. default: break;
  12098. case '0': // 1 string to match.
  12099. return Intrinsic::hexagon_M2_mpyud_acc_hl_s0; // "exagon.M2.mpyud.acc.hl.s0"
  12100. case '1': // 1 string to match.
  12101. return Intrinsic::hexagon_M2_mpyud_acc_hl_s1; // "exagon.M2.mpyud.acc.hl.s1"
  12102. }
  12103. break;
  12104. }
  12105. break;
  12106. case 'l': // 4 strings to match.
  12107. switch (NameR[21]) {
  12108. default: break;
  12109. case 'h': // 2 strings to match.
  12110. if (memcmp(NameR.data()+22, ".s", 2))
  12111. break;
  12112. switch (NameR[24]) {
  12113. default: break;
  12114. case '0': // 1 string to match.
  12115. return Intrinsic::hexagon_M2_mpyud_acc_lh_s0; // "exagon.M2.mpyud.acc.lh.s0"
  12116. case '1': // 1 string to match.
  12117. return Intrinsic::hexagon_M2_mpyud_acc_lh_s1; // "exagon.M2.mpyud.acc.lh.s1"
  12118. }
  12119. break;
  12120. case 'l': // 2 strings to match.
  12121. if (memcmp(NameR.data()+22, ".s", 2))
  12122. break;
  12123. switch (NameR[24]) {
  12124. default: break;
  12125. case '0': // 1 string to match.
  12126. return Intrinsic::hexagon_M2_mpyud_acc_ll_s0; // "exagon.M2.mpyud.acc.ll.s0"
  12127. case '1': // 1 string to match.
  12128. return Intrinsic::hexagon_M2_mpyud_acc_ll_s1; // "exagon.M2.mpyud.acc.ll.s1"
  12129. }
  12130. break;
  12131. }
  12132. break;
  12133. }
  12134. break;
  12135. case 'n': // 8 strings to match.
  12136. if (memcmp(NameR.data()+17, "ac.", 3))
  12137. break;
  12138. switch (NameR[20]) {
  12139. default: break;
  12140. case 'h': // 4 strings to match.
  12141. switch (NameR[21]) {
  12142. default: break;
  12143. case 'h': // 2 strings to match.
  12144. if (memcmp(NameR.data()+22, ".s", 2))
  12145. break;
  12146. switch (NameR[24]) {
  12147. default: break;
  12148. case '0': // 1 string to match.
  12149. return Intrinsic::hexagon_M2_mpyud_nac_hh_s0; // "exagon.M2.mpyud.nac.hh.s0"
  12150. case '1': // 1 string to match.
  12151. return Intrinsic::hexagon_M2_mpyud_nac_hh_s1; // "exagon.M2.mpyud.nac.hh.s1"
  12152. }
  12153. break;
  12154. case 'l': // 2 strings to match.
  12155. if (memcmp(NameR.data()+22, ".s", 2))
  12156. break;
  12157. switch (NameR[24]) {
  12158. default: break;
  12159. case '0': // 1 string to match.
  12160. return Intrinsic::hexagon_M2_mpyud_nac_hl_s0; // "exagon.M2.mpyud.nac.hl.s0"
  12161. case '1': // 1 string to match.
  12162. return Intrinsic::hexagon_M2_mpyud_nac_hl_s1; // "exagon.M2.mpyud.nac.hl.s1"
  12163. }
  12164. break;
  12165. }
  12166. break;
  12167. case 'l': // 4 strings to match.
  12168. switch (NameR[21]) {
  12169. default: break;
  12170. case 'h': // 2 strings to match.
  12171. if (memcmp(NameR.data()+22, ".s", 2))
  12172. break;
  12173. switch (NameR[24]) {
  12174. default: break;
  12175. case '0': // 1 string to match.
  12176. return Intrinsic::hexagon_M2_mpyud_nac_lh_s0; // "exagon.M2.mpyud.nac.lh.s0"
  12177. case '1': // 1 string to match.
  12178. return Intrinsic::hexagon_M2_mpyud_nac_lh_s1; // "exagon.M2.mpyud.nac.lh.s1"
  12179. }
  12180. break;
  12181. case 'l': // 2 strings to match.
  12182. if (memcmp(NameR.data()+22, ".s", 2))
  12183. break;
  12184. switch (NameR[24]) {
  12185. default: break;
  12186. case '0': // 1 string to match.
  12187. return Intrinsic::hexagon_M2_mpyud_nac_ll_s0; // "exagon.M2.mpyud.nac.ll.s0"
  12188. case '1': // 1 string to match.
  12189. return Intrinsic::hexagon_M2_mpyud_nac_ll_s1; // "exagon.M2.mpyud.nac.ll.s1"
  12190. }
  12191. break;
  12192. }
  12193. break;
  12194. }
  12195. break;
  12196. }
  12197. break;
  12198. }
  12199. break;
  12200. case 27: // 24 strings to match.
  12201. if (memcmp(NameR.data()+0, "exagon.M2.mpy.", 14))
  12202. break;
  12203. switch (NameR[14]) {
  12204. default: break;
  12205. case 'a': // 8 strings to match.
  12206. if (memcmp(NameR.data()+15, "cc.sat.", 7))
  12207. break;
  12208. switch (NameR[22]) {
  12209. default: break;
  12210. case 'h': // 4 strings to match.
  12211. switch (NameR[23]) {
  12212. default: break;
  12213. case 'h': // 2 strings to match.
  12214. if (memcmp(NameR.data()+24, ".s", 2))
  12215. break;
  12216. switch (NameR[26]) {
  12217. default: break;
  12218. case '0': // 1 string to match.
  12219. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0; // "exagon.M2.mpy.acc.sat.hh.s0"
  12220. case '1': // 1 string to match.
  12221. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1; // "exagon.M2.mpy.acc.sat.hh.s1"
  12222. }
  12223. break;
  12224. case 'l': // 2 strings to match.
  12225. if (memcmp(NameR.data()+24, ".s", 2))
  12226. break;
  12227. switch (NameR[26]) {
  12228. default: break;
  12229. case '0': // 1 string to match.
  12230. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0; // "exagon.M2.mpy.acc.sat.hl.s0"
  12231. case '1': // 1 string to match.
  12232. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1; // "exagon.M2.mpy.acc.sat.hl.s1"
  12233. }
  12234. break;
  12235. }
  12236. break;
  12237. case 'l': // 4 strings to match.
  12238. switch (NameR[23]) {
  12239. default: break;
  12240. case 'h': // 2 strings to match.
  12241. if (memcmp(NameR.data()+24, ".s", 2))
  12242. break;
  12243. switch (NameR[26]) {
  12244. default: break;
  12245. case '0': // 1 string to match.
  12246. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0; // "exagon.M2.mpy.acc.sat.lh.s0"
  12247. case '1': // 1 string to match.
  12248. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1; // "exagon.M2.mpy.acc.sat.lh.s1"
  12249. }
  12250. break;
  12251. case 'l': // 2 strings to match.
  12252. if (memcmp(NameR.data()+24, ".s", 2))
  12253. break;
  12254. switch (NameR[26]) {
  12255. default: break;
  12256. case '0': // 1 string to match.
  12257. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0; // "exagon.M2.mpy.acc.sat.ll.s0"
  12258. case '1': // 1 string to match.
  12259. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1; // "exagon.M2.mpy.acc.sat.ll.s1"
  12260. }
  12261. break;
  12262. }
  12263. break;
  12264. }
  12265. break;
  12266. case 'n': // 8 strings to match.
  12267. if (memcmp(NameR.data()+15, "ac.sat.", 7))
  12268. break;
  12269. switch (NameR[22]) {
  12270. default: break;
  12271. case 'h': // 4 strings to match.
  12272. switch (NameR[23]) {
  12273. default: break;
  12274. case 'h': // 2 strings to match.
  12275. if (memcmp(NameR.data()+24, ".s", 2))
  12276. break;
  12277. switch (NameR[26]) {
  12278. default: break;
  12279. case '0': // 1 string to match.
  12280. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0; // "exagon.M2.mpy.nac.sat.hh.s0"
  12281. case '1': // 1 string to match.
  12282. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1; // "exagon.M2.mpy.nac.sat.hh.s1"
  12283. }
  12284. break;
  12285. case 'l': // 2 strings to match.
  12286. if (memcmp(NameR.data()+24, ".s", 2))
  12287. break;
  12288. switch (NameR[26]) {
  12289. default: break;
  12290. case '0': // 1 string to match.
  12291. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0; // "exagon.M2.mpy.nac.sat.hl.s0"
  12292. case '1': // 1 string to match.
  12293. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1; // "exagon.M2.mpy.nac.sat.hl.s1"
  12294. }
  12295. break;
  12296. }
  12297. break;
  12298. case 'l': // 4 strings to match.
  12299. switch (NameR[23]) {
  12300. default: break;
  12301. case 'h': // 2 strings to match.
  12302. if (memcmp(NameR.data()+24, ".s", 2))
  12303. break;
  12304. switch (NameR[26]) {
  12305. default: break;
  12306. case '0': // 1 string to match.
  12307. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0; // "exagon.M2.mpy.nac.sat.lh.s0"
  12308. case '1': // 1 string to match.
  12309. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1; // "exagon.M2.mpy.nac.sat.lh.s1"
  12310. }
  12311. break;
  12312. case 'l': // 2 strings to match.
  12313. if (memcmp(NameR.data()+24, ".s", 2))
  12314. break;
  12315. switch (NameR[26]) {
  12316. default: break;
  12317. case '0': // 1 string to match.
  12318. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0; // "exagon.M2.mpy.nac.sat.ll.s0"
  12319. case '1': // 1 string to match.
  12320. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1; // "exagon.M2.mpy.nac.sat.ll.s1"
  12321. }
  12322. break;
  12323. }
  12324. break;
  12325. }
  12326. break;
  12327. case 's': // 8 strings to match.
  12328. if (memcmp(NameR.data()+15, "at.rnd.", 7))
  12329. break;
  12330. switch (NameR[22]) {
  12331. default: break;
  12332. case 'h': // 4 strings to match.
  12333. switch (NameR[23]) {
  12334. default: break;
  12335. case 'h': // 2 strings to match.
  12336. if (memcmp(NameR.data()+24, ".s", 2))
  12337. break;
  12338. switch (NameR[26]) {
  12339. default: break;
  12340. case '0': // 1 string to match.
  12341. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0; // "exagon.M2.mpy.sat.rnd.hh.s0"
  12342. case '1': // 1 string to match.
  12343. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1; // "exagon.M2.mpy.sat.rnd.hh.s1"
  12344. }
  12345. break;
  12346. case 'l': // 2 strings to match.
  12347. if (memcmp(NameR.data()+24, ".s", 2))
  12348. break;
  12349. switch (NameR[26]) {
  12350. default: break;
  12351. case '0': // 1 string to match.
  12352. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0; // "exagon.M2.mpy.sat.rnd.hl.s0"
  12353. case '1': // 1 string to match.
  12354. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1; // "exagon.M2.mpy.sat.rnd.hl.s1"
  12355. }
  12356. break;
  12357. }
  12358. break;
  12359. case 'l': // 4 strings to match.
  12360. switch (NameR[23]) {
  12361. default: break;
  12362. case 'h': // 2 strings to match.
  12363. if (memcmp(NameR.data()+24, ".s", 2))
  12364. break;
  12365. switch (NameR[26]) {
  12366. default: break;
  12367. case '0': // 1 string to match.
  12368. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0; // "exagon.M2.mpy.sat.rnd.lh.s0"
  12369. case '1': // 1 string to match.
  12370. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1; // "exagon.M2.mpy.sat.rnd.lh.s1"
  12371. }
  12372. break;
  12373. case 'l': // 2 strings to match.
  12374. if (memcmp(NameR.data()+24, ".s", 2))
  12375. break;
  12376. switch (NameR[26]) {
  12377. default: break;
  12378. case '0': // 1 string to match.
  12379. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0; // "exagon.M2.mpy.sat.rnd.ll.s0"
  12380. case '1': // 1 string to match.
  12381. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1; // "exagon.M2.mpy.sat.rnd.ll.s1"
  12382. }
  12383. break;
  12384. }
  12385. break;
  12386. }
  12387. break;
  12388. }
  12389. break;
  12390. case 29: // 1 string to match.
  12391. if (memcmp(NameR.data()+0, "exagon.S5.vasrhrnd.goodsyntax", 29))
  12392. break;
  12393. return Intrinsic::hexagon_S5_vasrhrnd_goodsyntax; // "exagon.S5.vasrhrnd.goodsyntax"
  12394. case 30: // 4 strings to match.
  12395. if (memcmp(NameR.data()+0, "exagon.S2.tableidx", 18))
  12396. break;
  12397. switch (NameR[18]) {
  12398. default: break;
  12399. case 'b': // 1 string to match.
  12400. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12401. break;
  12402. return Intrinsic::hexagon_S2_tableidxb_goodsyntax; // "exagon.S2.tableidxb.goodsyntax"
  12403. case 'd': // 1 string to match.
  12404. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12405. break;
  12406. return Intrinsic::hexagon_S2_tableidxd_goodsyntax; // "exagon.S2.tableidxd.goodsyntax"
  12407. case 'h': // 1 string to match.
  12408. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12409. break;
  12410. return Intrinsic::hexagon_S2_tableidxh_goodsyntax; // "exagon.S2.tableidxh.goodsyntax"
  12411. case 'w': // 1 string to match.
  12412. if (memcmp(NameR.data()+19, ".goodsyntax", 11))
  12413. break;
  12414. return Intrinsic::hexagon_S2_tableidxw_goodsyntax; // "exagon.S2.tableidxw.goodsyntax"
  12415. }
  12416. break;
  12417. case 32: // 2 strings to match.
  12418. if (memcmp(NameR.data()+0, "exagon.S2.asr.i.", 16))
  12419. break;
  12420. switch (NameR[16]) {
  12421. default: break;
  12422. case 'p': // 1 string to match.
  12423. if (memcmp(NameR.data()+17, ".rnd.goodsyntax", 15))
  12424. break;
  12425. return Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax; // "exagon.S2.asr.i.p.rnd.goodsyntax"
  12426. case 'r': // 1 string to match.
  12427. if (memcmp(NameR.data()+17, ".rnd.goodsyntax", 15))
  12428. break;
  12429. return Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax; // "exagon.S2.asr.i.r.rnd.goodsyntax"
  12430. }
  12431. break;
  12432. case 35: // 1 string to match.
  12433. if (memcmp(NameR.data()+0, "exagon.S5.asrhub.rnd.sat.goodsyntax", 35))
  12434. break;
  12435. return Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax; // "exagon.S5.asrhub.rnd.sat.goodsyntax"
  12436. }
  12437. break; // end of 'h' case.
  12438. case 'i':
  12439. switch (NameR.size()) {
  12440. default: break;
  12441. case 12: // 1 string to match.
  12442. if (memcmp(NameR.data()+0, "nvariant.end", 12))
  12443. break;
  12444. return Intrinsic::invariant_end; // "nvariant.end"
  12445. case 14: // 2 strings to match.
  12446. if (NameR[0] != 'n')
  12447. break;
  12448. switch (NameR[1]) {
  12449. default: break;
  12450. case 'i': // 1 string to match.
  12451. if (memcmp(NameR.data()+2, "t.trampoline", 12))
  12452. break;
  12453. return Intrinsic::init_trampoline; // "nit.trampoline"
  12454. case 'v': // 1 string to match.
  12455. if (memcmp(NameR.data()+2, "ariant.start", 12))
  12456. break;
  12457. return Intrinsic::invariant_start; // "nvariant.start"
  12458. }
  12459. break;
  12460. }
  12461. break; // end of 'i' case.
  12462. case 'l':
  12463. if (NameR.startswith("og.")) return Intrinsic::log;
  12464. if (NameR.startswith("og10.")) return Intrinsic::log10;
  12465. if (NameR.startswith("og2.")) return Intrinsic::log2;
  12466. switch (NameR.size()) {
  12467. default: break;
  12468. case 6: // 1 string to match.
  12469. if (memcmp(NameR.data()+0, "ongjmp", 6))
  12470. break;
  12471. return Intrinsic::longjmp; // "ongjmp"
  12472. case 11: // 1 string to match.
  12473. if (memcmp(NameR.data()+0, "ifetime.end", 11))
  12474. break;
  12475. return Intrinsic::lifetime_end; // "ifetime.end"
  12476. case 13: // 1 string to match.
  12477. if (memcmp(NameR.data()+0, "ifetime.start", 13))
  12478. break;
  12479. return Intrinsic::lifetime_start; // "ifetime.start"
  12480. }
  12481. break; // end of 'l' case.
  12482. case 'm':
  12483. if (NameR.startswith("emcpy.")) return Intrinsic::memcpy;
  12484. if (NameR.startswith("emmove.")) return Intrinsic::memmove;
  12485. if (NameR.startswith("emset.")) return Intrinsic::memset;
  12486. switch (NameR.size()) {
  12487. default: break;
  12488. case 7: // 2 strings to match.
  12489. if (memcmp(NameR.data()+0, "ips.l", 5))
  12490. break;
  12491. switch (NameR[5]) {
  12492. default: break;
  12493. case 'h': // 1 string to match.
  12494. if (NameR[6] != 'x')
  12495. break;
  12496. return Intrinsic::mips_lhx; // "ips.lhx"
  12497. case 'w': // 1 string to match.
  12498. if (NameR[6] != 'x')
  12499. break;
  12500. return Intrinsic::mips_lwx; // "ips.lwx"
  12501. }
  12502. break;
  12503. case 8: // 6 strings to match.
  12504. if (memcmp(NameR.data()+0, "ips.", 4))
  12505. break;
  12506. switch (NameR[4]) {
  12507. default: break;
  12508. case 'e': // 1 string to match.
  12509. if (memcmp(NameR.data()+5, "xtp", 3))
  12510. break;
  12511. return Intrinsic::mips_extp; // "ips.extp"
  12512. case 'i': // 1 string to match.
  12513. if (memcmp(NameR.data()+5, "nsv", 3))
  12514. break;
  12515. return Intrinsic::mips_insv; // "ips.insv"
  12516. case 'l': // 1 string to match.
  12517. if (memcmp(NameR.data()+5, "bux", 3))
  12518. break;
  12519. return Intrinsic::mips_lbux; // "ips.lbux"
  12520. case 'm': // 3 strings to match.
  12521. switch (NameR[5]) {
  12522. default: break;
  12523. case 'a': // 1 string to match.
  12524. if (memcmp(NameR.data()+6, "dd", 2))
  12525. break;
  12526. return Intrinsic::mips_madd; // "ips.madd"
  12527. case 's': // 1 string to match.
  12528. if (memcmp(NameR.data()+6, "ub", 2))
  12529. break;
  12530. return Intrinsic::mips_msub; // "ips.msub"
  12531. case 'u': // 1 string to match.
  12532. if (memcmp(NameR.data()+6, "lt", 2))
  12533. break;
  12534. return Intrinsic::mips_mult; // "ips.mult"
  12535. }
  12536. break;
  12537. }
  12538. break;
  12539. case 9: // 8 strings to match.
  12540. if (memcmp(NameR.data()+0, "ips.", 4))
  12541. break;
  12542. switch (NameR[4]) {
  12543. default: break;
  12544. case 'a': // 2 strings to match.
  12545. if (memcmp(NameR.data()+5, "dd", 2))
  12546. break;
  12547. switch (NameR[7]) {
  12548. default: break;
  12549. case 's': // 1 string to match.
  12550. if (NameR[8] != 'c')
  12551. break;
  12552. return Intrinsic::mips_addsc; // "ips.addsc"
  12553. case 'w': // 1 string to match.
  12554. if (NameR[8] != 'c')
  12555. break;
  12556. return Intrinsic::mips_addwc; // "ips.addwc"
  12557. }
  12558. break;
  12559. case 'm': // 3 strings to match.
  12560. switch (NameR[5]) {
  12561. default: break;
  12562. case 'a': // 1 string to match.
  12563. if (memcmp(NameR.data()+6, "ddu", 3))
  12564. break;
  12565. return Intrinsic::mips_maddu; // "ips.maddu"
  12566. case 's': // 1 string to match.
  12567. if (memcmp(NameR.data()+6, "ubu", 3))
  12568. break;
  12569. return Intrinsic::mips_msubu; // "ips.msubu"
  12570. case 'u': // 1 string to match.
  12571. if (memcmp(NameR.data()+6, "ltu", 3))
  12572. break;
  12573. return Intrinsic::mips_multu; // "ips.multu"
  12574. }
  12575. break;
  12576. case 'r': // 1 string to match.
  12577. if (memcmp(NameR.data()+5, "ddsp", 4))
  12578. break;
  12579. return Intrinsic::mips_rddsp; // "ips.rddsp"
  12580. case 's': // 1 string to match.
  12581. if (memcmp(NameR.data()+5, "hilo", 4))
  12582. break;
  12583. return Intrinsic::mips_shilo; // "ips.shilo"
  12584. case 'w': // 1 string to match.
  12585. if (memcmp(NameR.data()+5, "rdsp", 4))
  12586. break;
  12587. return Intrinsic::mips_wrdsp; // "ips.wrdsp"
  12588. }
  12589. break;
  12590. case 10: // 8 strings to match.
  12591. if (memcmp(NameR.data()+0, "ips.", 4))
  12592. break;
  12593. switch (NameR[4]) {
  12594. default: break;
  12595. case 'a': // 1 string to match.
  12596. if (memcmp(NameR.data()+5, "ppend", 5))
  12597. break;
  12598. return Intrinsic::mips_append; // "ips.append"
  12599. case 'b': // 2 strings to match.
  12600. switch (NameR[5]) {
  12601. default: break;
  12602. case 'a': // 1 string to match.
  12603. if (memcmp(NameR.data()+6, "lign", 4))
  12604. break;
  12605. return Intrinsic::mips_balign; // "ips.balign"
  12606. case 'i': // 1 string to match.
  12607. if (memcmp(NameR.data()+6, "trev", 4))
  12608. break;
  12609. return Intrinsic::mips_bitrev; // "ips.bitrev"
  12610. }
  12611. break;
  12612. case 'e': // 2 strings to match.
  12613. if (memcmp(NameR.data()+5, "xt", 2))
  12614. break;
  12615. switch (NameR[7]) {
  12616. default: break;
  12617. case 'p': // 1 string to match.
  12618. if (memcmp(NameR.data()+8, "dp", 2))
  12619. break;
  12620. return Intrinsic::mips_extpdp; // "ips.extpdp"
  12621. case 'r': // 1 string to match.
  12622. if (memcmp(NameR.data()+8, ".w", 2))
  12623. break;
  12624. return Intrinsic::mips_extr_w; // "ips.extr.w"
  12625. }
  12626. break;
  12627. case 'm': // 3 strings to match.
  12628. switch (NameR[5]) {
  12629. default: break;
  12630. case 'o': // 1 string to match.
  12631. if (memcmp(NameR.data()+6, "dsub", 4))
  12632. break;
  12633. return Intrinsic::mips_modsub; // "ips.modsub"
  12634. case 't': // 1 string to match.
  12635. if (memcmp(NameR.data()+6, "hlip", 4))
  12636. break;
  12637. return Intrinsic::mips_mthlip; // "ips.mthlip"
  12638. case 'u': // 1 string to match.
  12639. if (memcmp(NameR.data()+6, "l.ph", 4))
  12640. break;
  12641. return Intrinsic::mips_mul_ph; // "ips.mul.ph"
  12642. }
  12643. break;
  12644. }
  12645. break;
  12646. case 11: // 19 strings to match.
  12647. if (memcmp(NameR.data()+0, "ips.", 4))
  12648. break;
  12649. switch (NameR[4]) {
  12650. default: break;
  12651. case 'a': // 4 strings to match.
  12652. if (memcmp(NameR.data()+5, "dd", 2))
  12653. break;
  12654. switch (NameR[7]) {
  12655. default: break;
  12656. case 'q': // 2 strings to match.
  12657. switch (NameR[8]) {
  12658. default: break;
  12659. case '.': // 1 string to match.
  12660. if (memcmp(NameR.data()+9, "ph", 2))
  12661. break;
  12662. return Intrinsic::mips_addq_ph; // "ips.addq.ph"
  12663. case 'h': // 1 string to match.
  12664. if (memcmp(NameR.data()+9, ".w", 2))
  12665. break;
  12666. return Intrinsic::mips_addqh_w; // "ips.addqh.w"
  12667. }
  12668. break;
  12669. case 'u': // 2 strings to match.
  12670. if (NameR[8] != '.')
  12671. break;
  12672. switch (NameR[9]) {
  12673. default: break;
  12674. case 'p': // 1 string to match.
  12675. if (NameR[10] != 'h')
  12676. break;
  12677. return Intrinsic::mips_addu_ph; // "ips.addu.ph"
  12678. case 'q': // 1 string to match.
  12679. if (NameR[10] != 'b')
  12680. break;
  12681. return Intrinsic::mips_addu_qb; // "ips.addu.qb"
  12682. }
  12683. break;
  12684. }
  12685. break;
  12686. case 'p': // 3 strings to match.
  12687. switch (NameR[5]) {
  12688. default: break;
  12689. case 'i': // 2 strings to match.
  12690. if (memcmp(NameR.data()+6, "ck.", 3))
  12691. break;
  12692. switch (NameR[9]) {
  12693. default: break;
  12694. case 'p': // 1 string to match.
  12695. if (NameR[10] != 'h')
  12696. break;
  12697. return Intrinsic::mips_pick_ph; // "ips.pick.ph"
  12698. case 'q': // 1 string to match.
  12699. if (NameR[10] != 'b')
  12700. break;
  12701. return Intrinsic::mips_pick_qb; // "ips.pick.qb"
  12702. }
  12703. break;
  12704. case 'r': // 1 string to match.
  12705. if (memcmp(NameR.data()+6, "epend", 5))
  12706. break;
  12707. return Intrinsic::mips_prepend; // "ips.prepend"
  12708. }
  12709. break;
  12710. case 'r': // 2 strings to match.
  12711. if (memcmp(NameR.data()+5, "epl.", 4))
  12712. break;
  12713. switch (NameR[9]) {
  12714. default: break;
  12715. case 'p': // 1 string to match.
  12716. if (NameR[10] != 'h')
  12717. break;
  12718. return Intrinsic::mips_repl_ph; // "ips.repl.ph"
  12719. case 'q': // 1 string to match.
  12720. if (NameR[10] != 'b')
  12721. break;
  12722. return Intrinsic::mips_repl_qb; // "ips.repl.qb"
  12723. }
  12724. break;
  12725. case 's': // 10 strings to match.
  12726. switch (NameR[5]) {
  12727. default: break;
  12728. case 'h': // 6 strings to match.
  12729. switch (NameR[6]) {
  12730. default: break;
  12731. case 'l': // 2 strings to match.
  12732. if (memcmp(NameR.data()+7, "l.", 2))
  12733. break;
  12734. switch (NameR[9]) {
  12735. default: break;
  12736. case 'p': // 1 string to match.
  12737. if (NameR[10] != 'h')
  12738. break;
  12739. return Intrinsic::mips_shll_ph; // "ips.shll.ph"
  12740. case 'q': // 1 string to match.
  12741. if (NameR[10] != 'b')
  12742. break;
  12743. return Intrinsic::mips_shll_qb; // "ips.shll.qb"
  12744. }
  12745. break;
  12746. case 'r': // 4 strings to match.
  12747. switch (NameR[7]) {
  12748. default: break;
  12749. case 'a': // 2 strings to match.
  12750. if (NameR[8] != '.')
  12751. break;
  12752. switch (NameR[9]) {
  12753. default: break;
  12754. case 'p': // 1 string to match.
  12755. if (NameR[10] != 'h')
  12756. break;
  12757. return Intrinsic::mips_shra_ph; // "ips.shra.ph"
  12758. case 'q': // 1 string to match.
  12759. if (NameR[10] != 'b')
  12760. break;
  12761. return Intrinsic::mips_shra_qb; // "ips.shra.qb"
  12762. }
  12763. break;
  12764. case 'l': // 2 strings to match.
  12765. if (NameR[8] != '.')
  12766. break;
  12767. switch (NameR[9]) {
  12768. default: break;
  12769. case 'p': // 1 string to match.
  12770. if (NameR[10] != 'h')
  12771. break;
  12772. return Intrinsic::mips_shrl_ph; // "ips.shrl.ph"
  12773. case 'q': // 1 string to match.
  12774. if (NameR[10] != 'b')
  12775. break;
  12776. return Intrinsic::mips_shrl_qb; // "ips.shrl.qb"
  12777. }
  12778. break;
  12779. }
  12780. break;
  12781. }
  12782. break;
  12783. case 'u': // 4 strings to match.
  12784. if (NameR[6] != 'b')
  12785. break;
  12786. switch (NameR[7]) {
  12787. default: break;
  12788. case 'q': // 2 strings to match.
  12789. switch (NameR[8]) {
  12790. default: break;
  12791. case '.': // 1 string to match.
  12792. if (memcmp(NameR.data()+9, "ph", 2))
  12793. break;
  12794. return Intrinsic::mips_subq_ph; // "ips.subq.ph"
  12795. case 'h': // 1 string to match.
  12796. if (memcmp(NameR.data()+9, ".w", 2))
  12797. break;
  12798. return Intrinsic::mips_subqh_w; // "ips.subqh.w"
  12799. }
  12800. break;
  12801. case 'u': // 2 strings to match.
  12802. if (NameR[8] != '.')
  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_subu_ph; // "ips.subu.ph"
  12810. case 'q': // 1 string to match.
  12811. if (NameR[10] != 'b')
  12812. break;
  12813. return Intrinsic::mips_subu_qb; // "ips.subu.qb"
  12814. }
  12815. break;
  12816. }
  12817. break;
  12818. }
  12819. break;
  12820. }
  12821. break;
  12822. case 12: // 16 strings to match.
  12823. if (memcmp(NameR.data()+0, "ips.", 4))
  12824. break;
  12825. switch (NameR[4]) {
  12826. default: break;
  12827. case 'a': // 4 strings to match.
  12828. switch (NameR[5]) {
  12829. default: break;
  12830. case 'b': // 1 string to match.
  12831. if (memcmp(NameR.data()+6, "sq.s.w", 6))
  12832. break;
  12833. return Intrinsic::mips_absq_s_w; // "ips.absq.s.w"
  12834. case 'd': // 3 strings to match.
  12835. if (NameR[6] != 'd')
  12836. break;
  12837. switch (NameR[7]) {
  12838. default: break;
  12839. case 'q': // 2 strings to match.
  12840. switch (NameR[8]) {
  12841. default: break;
  12842. case '.': // 1 string to match.
  12843. if (memcmp(NameR.data()+9, "s.w", 3))
  12844. break;
  12845. return Intrinsic::mips_addq_s_w; // "ips.addq.s.w"
  12846. case 'h': // 1 string to match.
  12847. if (memcmp(NameR.data()+9, ".ph", 3))
  12848. break;
  12849. return Intrinsic::mips_addqh_ph; // "ips.addqh.ph"
  12850. }
  12851. break;
  12852. case 'u': // 1 string to match.
  12853. if (memcmp(NameR.data()+8, "h.qb", 4))
  12854. break;
  12855. return Intrinsic::mips_adduh_qb; // "ips.adduh.qb"
  12856. }
  12857. break;
  12858. }
  12859. break;
  12860. case 'b': // 1 string to match.
  12861. if (memcmp(NameR.data()+5, "posge32", 7))
  12862. break;
  12863. return Intrinsic::mips_bposge32; // "ips.bposge32"
  12864. case 'd': // 2 strings to match.
  12865. if (NameR[5] != 'p')
  12866. break;
  12867. switch (NameR[6]) {
  12868. default: break;
  12869. case 'a': // 1 string to match.
  12870. if (memcmp(NameR.data()+7, ".w.ph", 5))
  12871. break;
  12872. return Intrinsic::mips_dpa_w_ph; // "ips.dpa.w.ph"
  12873. case 's': // 1 string to match.
  12874. if (memcmp(NameR.data()+7, ".w.ph", 5))
  12875. break;
  12876. return Intrinsic::mips_dps_w_ph; // "ips.dps.w.ph"
  12877. }
  12878. break;
  12879. case 'e': // 2 strings to match.
  12880. if (memcmp(NameR.data()+5, "xtr.", 4))
  12881. break;
  12882. switch (NameR[9]) {
  12883. default: break;
  12884. case 'r': // 1 string to match.
  12885. if (memcmp(NameR.data()+10, ".w", 2))
  12886. break;
  12887. return Intrinsic::mips_extr_r_w; // "ips.extr.r.w"
  12888. case 's': // 1 string to match.
  12889. if (memcmp(NameR.data()+10, ".h", 2))
  12890. break;
  12891. return Intrinsic::mips_extr_s_h; // "ips.extr.s.h"
  12892. }
  12893. break;
  12894. case 'm': // 2 strings to match.
  12895. if (memcmp(NameR.data()+5, "ul", 2))
  12896. break;
  12897. switch (NameR[7]) {
  12898. default: break;
  12899. case '.': // 1 string to match.
  12900. if (memcmp(NameR.data()+8, "s.ph", 4))
  12901. break;
  12902. return Intrinsic::mips_mul_s_ph; // "ips.mul.s.ph"
  12903. case 'q': // 1 string to match.
  12904. if (memcmp(NameR.data()+8, ".s.w", 4))
  12905. break;
  12906. return Intrinsic::mips_mulq_s_w; // "ips.mulq.s.w"
  12907. }
  12908. break;
  12909. case 's': // 5 strings to match.
  12910. switch (NameR[5]) {
  12911. default: break;
  12912. case 'h': // 2 strings to match.
  12913. switch (NameR[6]) {
  12914. default: break;
  12915. case 'l': // 1 string to match.
  12916. if (memcmp(NameR.data()+7, "l.s.w", 5))
  12917. break;
  12918. return Intrinsic::mips_shll_s_w; // "ips.shll.s.w"
  12919. case 'r': // 1 string to match.
  12920. if (memcmp(NameR.data()+7, "a.r.w", 5))
  12921. break;
  12922. return Intrinsic::mips_shra_r_w; // "ips.shra.r.w"
  12923. }
  12924. break;
  12925. case 'u': // 3 strings to match.
  12926. if (NameR[6] != 'b')
  12927. break;
  12928. switch (NameR[7]) {
  12929. default: break;
  12930. case 'q': // 2 strings to match.
  12931. switch (NameR[8]) {
  12932. default: break;
  12933. case '.': // 1 string to match.
  12934. if (memcmp(NameR.data()+9, "s.w", 3))
  12935. break;
  12936. return Intrinsic::mips_subq_s_w; // "ips.subq.s.w"
  12937. case 'h': // 1 string to match.
  12938. if (memcmp(NameR.data()+9, ".ph", 3))
  12939. break;
  12940. return Intrinsic::mips_subqh_ph; // "ips.subqh.ph"
  12941. }
  12942. break;
  12943. case 'u': // 1 string to match.
  12944. if (memcmp(NameR.data()+8, "h.qb", 4))
  12945. break;
  12946. return Intrinsic::mips_subuh_qb; // "ips.subuh.qb"
  12947. }
  12948. break;
  12949. }
  12950. break;
  12951. }
  12952. break;
  12953. case 13: // 22 strings to match.
  12954. if (memcmp(NameR.data()+0, "ips.", 4))
  12955. break;
  12956. switch (NameR[4]) {
  12957. default: break;
  12958. case 'a': // 6 strings to match.
  12959. switch (NameR[5]) {
  12960. default: break;
  12961. case 'b': // 2 strings to match.
  12962. if (memcmp(NameR.data()+6, "sq.s.", 5))
  12963. break;
  12964. switch (NameR[11]) {
  12965. default: break;
  12966. case 'p': // 1 string to match.
  12967. if (NameR[12] != 'h')
  12968. break;
  12969. return Intrinsic::mips_absq_s_ph; // "ips.absq.s.ph"
  12970. case 'q': // 1 string to match.
  12971. if (NameR[12] != 'b')
  12972. break;
  12973. return Intrinsic::mips_absq_s_qb; // "ips.absq.s.qb"
  12974. }
  12975. break;
  12976. case 'd': // 4 strings to match.
  12977. if (NameR[6] != 'd')
  12978. break;
  12979. switch (NameR[7]) {
  12980. default: break;
  12981. case 'q': // 2 strings to match.
  12982. switch (NameR[8]) {
  12983. default: break;
  12984. case '.': // 1 string to match.
  12985. if (memcmp(NameR.data()+9, "s.ph", 4))
  12986. break;
  12987. return Intrinsic::mips_addq_s_ph; // "ips.addq.s.ph"
  12988. case 'h': // 1 string to match.
  12989. if (memcmp(NameR.data()+9, ".r.w", 4))
  12990. break;
  12991. return Intrinsic::mips_addqh_r_w; // "ips.addqh.r.w"
  12992. }
  12993. break;
  12994. case 'u': // 2 strings to match.
  12995. if (memcmp(NameR.data()+8, ".s.", 3))
  12996. break;
  12997. switch (NameR[11]) {
  12998. default: break;
  12999. case 'p': // 1 string to match.
  13000. if (NameR[12] != 'h')
  13001. break;
  13002. return Intrinsic::mips_addu_s_ph; // "ips.addu.s.ph"
  13003. case 'q': // 1 string to match.
  13004. if (NameR[12] != 'b')
  13005. break;
  13006. return Intrinsic::mips_addu_s_qb; // "ips.addu.s.qb"
  13007. }
  13008. break;
  13009. }
  13010. break;
  13011. }
  13012. break;
  13013. case 'c': // 3 strings to match.
  13014. if (memcmp(NameR.data()+5, "mp.", 3))
  13015. break;
  13016. switch (NameR[8]) {
  13017. default: break;
  13018. case 'e': // 1 string to match.
  13019. if (memcmp(NameR.data()+9, "q.ph", 4))
  13020. break;
  13021. return Intrinsic::mips_cmp_eq_ph; // "ips.cmp.eq.ph"
  13022. case 'l': // 2 strings to match.
  13023. switch (NameR[9]) {
  13024. default: break;
  13025. case 'e': // 1 string to match.
  13026. if (memcmp(NameR.data()+10, ".ph", 3))
  13027. break;
  13028. return Intrinsic::mips_cmp_le_ph; // "ips.cmp.le.ph"
  13029. case 't': // 1 string to match.
  13030. if (memcmp(NameR.data()+10, ".ph", 3))
  13031. break;
  13032. return Intrinsic::mips_cmp_lt_ph; // "ips.cmp.lt.ph"
  13033. }
  13034. break;
  13035. }
  13036. break;
  13037. case 'd': // 2 strings to match.
  13038. if (NameR[5] != 'p')
  13039. break;
  13040. switch (NameR[6]) {
  13041. default: break;
  13042. case 'a': // 1 string to match.
  13043. if (memcmp(NameR.data()+7, "x.w.ph", 6))
  13044. break;
  13045. return Intrinsic::mips_dpax_w_ph; // "ips.dpax.w.ph"
  13046. case 's': // 1 string to match.
  13047. if (memcmp(NameR.data()+7, "x.w.ph", 6))
  13048. break;
  13049. return Intrinsic::mips_dpsx_w_ph; // "ips.dpsx.w.ph"
  13050. }
  13051. break;
  13052. case 'e': // 1 string to match.
  13053. if (memcmp(NameR.data()+5, "xtr.rs.w", 8))
  13054. break;
  13055. return Intrinsic::mips_extr_rs_w; // "ips.extr.rs.w"
  13056. case 'm': // 2 strings to match.
  13057. if (memcmp(NameR.data()+5, "ulq.", 4))
  13058. break;
  13059. switch (NameR[9]) {
  13060. default: break;
  13061. case 'r': // 1 string to match.
  13062. if (memcmp(NameR.data()+10, "s.w", 3))
  13063. break;
  13064. return Intrinsic::mips_mulq_rs_w; // "ips.mulq.rs.w"
  13065. case 's': // 1 string to match.
  13066. if (memcmp(NameR.data()+10, ".ph", 3))
  13067. break;
  13068. return Intrinsic::mips_mulq_s_ph; // "ips.mulq.s.ph"
  13069. }
  13070. break;
  13071. case 'p': // 1 string to match.
  13072. if (memcmp(NameR.data()+5, "ackrl.ph", 8))
  13073. break;
  13074. return Intrinsic::mips_packrl_ph; // "ips.packrl.ph"
  13075. case 's': // 7 strings to match.
  13076. switch (NameR[5]) {
  13077. default: break;
  13078. case 'h': // 3 strings to match.
  13079. switch (NameR[6]) {
  13080. default: break;
  13081. case 'l': // 1 string to match.
  13082. if (memcmp(NameR.data()+7, "l.s.ph", 6))
  13083. break;
  13084. return Intrinsic::mips_shll_s_ph; // "ips.shll.s.ph"
  13085. case 'r': // 2 strings to match.
  13086. if (memcmp(NameR.data()+7, "a.r.", 4))
  13087. break;
  13088. switch (NameR[11]) {
  13089. default: break;
  13090. case 'p': // 1 string to match.
  13091. if (NameR[12] != 'h')
  13092. break;
  13093. return Intrinsic::mips_shra_r_ph; // "ips.shra.r.ph"
  13094. case 'q': // 1 string to match.
  13095. if (NameR[12] != 'b')
  13096. break;
  13097. return Intrinsic::mips_shra_r_qb; // "ips.shra.r.qb"
  13098. }
  13099. break;
  13100. }
  13101. break;
  13102. case 'u': // 4 strings to match.
  13103. if (NameR[6] != 'b')
  13104. break;
  13105. switch (NameR[7]) {
  13106. default: break;
  13107. case 'q': // 2 strings to match.
  13108. switch (NameR[8]) {
  13109. default: break;
  13110. case '.': // 1 string to match.
  13111. if (memcmp(NameR.data()+9, "s.ph", 4))
  13112. break;
  13113. return Intrinsic::mips_subq_s_ph; // "ips.subq.s.ph"
  13114. case 'h': // 1 string to match.
  13115. if (memcmp(NameR.data()+9, ".r.w", 4))
  13116. break;
  13117. return Intrinsic::mips_subqh_r_w; // "ips.subqh.r.w"
  13118. }
  13119. break;
  13120. case 'u': // 2 strings to match.
  13121. if (memcmp(NameR.data()+8, ".s.", 3))
  13122. break;
  13123. switch (NameR[11]) {
  13124. default: break;
  13125. case 'p': // 1 string to match.
  13126. if (NameR[12] != 'h')
  13127. break;
  13128. return Intrinsic::mips_subu_s_ph; // "ips.subu.s.ph"
  13129. case 'q': // 1 string to match.
  13130. if (NameR[12] != 'b')
  13131. break;
  13132. return Intrinsic::mips_subu_s_qb; // "ips.subu.s.qb"
  13133. }
  13134. break;
  13135. }
  13136. break;
  13137. }
  13138. break;
  13139. }
  13140. break;
  13141. case 14: // 14 strings to match.
  13142. if (memcmp(NameR.data()+0, "ips.", 4))
  13143. break;
  13144. switch (NameR[4]) {
  13145. default: break;
  13146. case 'a': // 2 strings to match.
  13147. if (memcmp(NameR.data()+5, "dd", 2))
  13148. break;
  13149. switch (NameR[7]) {
  13150. default: break;
  13151. case 'q': // 1 string to match.
  13152. if (memcmp(NameR.data()+8, "h.r.ph", 6))
  13153. break;
  13154. return Intrinsic::mips_addqh_r_ph; // "ips.addqh.r.ph"
  13155. case 'u': // 1 string to match.
  13156. if (memcmp(NameR.data()+8, "h.r.qb", 6))
  13157. break;
  13158. return Intrinsic::mips_adduh_r_qb; // "ips.adduh.r.qb"
  13159. }
  13160. break;
  13161. case 'c': // 3 strings to match.
  13162. if (memcmp(NameR.data()+5, "mpu.", 4))
  13163. break;
  13164. switch (NameR[9]) {
  13165. default: break;
  13166. case 'e': // 1 string to match.
  13167. if (memcmp(NameR.data()+10, "q.qb", 4))
  13168. break;
  13169. return Intrinsic::mips_cmpu_eq_qb; // "ips.cmpu.eq.qb"
  13170. case 'l': // 2 strings to match.
  13171. switch (NameR[10]) {
  13172. default: break;
  13173. case 'e': // 1 string to match.
  13174. if (memcmp(NameR.data()+11, ".qb", 3))
  13175. break;
  13176. return Intrinsic::mips_cmpu_le_qb; // "ips.cmpu.le.qb"
  13177. case 't': // 1 string to match.
  13178. if (memcmp(NameR.data()+11, ".qb", 3))
  13179. break;
  13180. return Intrinsic::mips_cmpu_lt_qb; // "ips.cmpu.lt.qb"
  13181. }
  13182. break;
  13183. }
  13184. break;
  13185. case 'd': // 4 strings to match.
  13186. if (NameR[5] != 'p')
  13187. break;
  13188. switch (NameR[6]) {
  13189. default: break;
  13190. case 'a': // 2 strings to match.
  13191. if (memcmp(NameR.data()+7, "u.h.qb", 6))
  13192. break;
  13193. switch (NameR[13]) {
  13194. default: break;
  13195. case 'l': // 1 string to match.
  13196. return Intrinsic::mips_dpau_h_qbl; // "ips.dpau.h.qbl"
  13197. case 'r': // 1 string to match.
  13198. return Intrinsic::mips_dpau_h_qbr; // "ips.dpau.h.qbr"
  13199. }
  13200. break;
  13201. case 's': // 2 strings to match.
  13202. if (memcmp(NameR.data()+7, "u.h.qb", 6))
  13203. break;
  13204. switch (NameR[13]) {
  13205. default: break;
  13206. case 'l': // 1 string to match.
  13207. return Intrinsic::mips_dpsu_h_qbl; // "ips.dpsu.h.qbl"
  13208. case 'r': // 1 string to match.
  13209. return Intrinsic::mips_dpsu_h_qbr; // "ips.dpsu.h.qbr"
  13210. }
  13211. break;
  13212. }
  13213. break;
  13214. case 'm': // 2 strings to match.
  13215. if (memcmp(NameR.data()+5, "ul", 2))
  13216. break;
  13217. switch (NameR[7]) {
  13218. default: break;
  13219. case 'q': // 1 string to match.
  13220. if (memcmp(NameR.data()+8, ".rs.ph", 6))
  13221. break;
  13222. return Intrinsic::mips_mulq_rs_ph; // "ips.mulq.rs.ph"
  13223. case 's': // 1 string to match.
  13224. if (memcmp(NameR.data()+8, "a.w.ph", 6))
  13225. break;
  13226. return Intrinsic::mips_mulsa_w_ph; // "ips.mulsa.w.ph"
  13227. }
  13228. break;
  13229. case 'r': // 1 string to match.
  13230. if (memcmp(NameR.data()+5, "addu.w.qb", 9))
  13231. break;
  13232. return Intrinsic::mips_raddu_w_qb; // "ips.raddu.w.qb"
  13233. case 's': // 2 strings to match.
  13234. if (memcmp(NameR.data()+5, "ub", 2))
  13235. break;
  13236. switch (NameR[7]) {
  13237. default: break;
  13238. case 'q': // 1 string to match.
  13239. if (memcmp(NameR.data()+8, "h.r.ph", 6))
  13240. break;
  13241. return Intrinsic::mips_subqh_r_ph; // "ips.subqh.r.ph"
  13242. case 'u': // 1 string to match.
  13243. if (memcmp(NameR.data()+8, "h.r.qb", 6))
  13244. break;
  13245. return Intrinsic::mips_subuh_r_qb; // "ips.subuh.r.qb"
  13246. }
  13247. break;
  13248. }
  13249. break;
  13250. case 15: // 11 strings to match.
  13251. if (memcmp(NameR.data()+0, "ips.", 4))
  13252. break;
  13253. switch (NameR[4]) {
  13254. default: break;
  13255. case 'c': // 3 strings to match.
  13256. if (memcmp(NameR.data()+5, "mpgu.", 5))
  13257. break;
  13258. switch (NameR[10]) {
  13259. default: break;
  13260. case 'e': // 1 string to match.
  13261. if (memcmp(NameR.data()+11, "q.qb", 4))
  13262. break;
  13263. return Intrinsic::mips_cmpgu_eq_qb; // "ips.cmpgu.eq.qb"
  13264. case 'l': // 2 strings to match.
  13265. switch (NameR[11]) {
  13266. default: break;
  13267. case 'e': // 1 string to match.
  13268. if (memcmp(NameR.data()+12, ".qb", 3))
  13269. break;
  13270. return Intrinsic::mips_cmpgu_le_qb; // "ips.cmpgu.le.qb"
  13271. case 't': // 1 string to match.
  13272. if (memcmp(NameR.data()+12, ".qb", 3))
  13273. break;
  13274. return Intrinsic::mips_cmpgu_lt_qb; // "ips.cmpgu.lt.qb"
  13275. }
  13276. break;
  13277. }
  13278. break;
  13279. case 'd': // 4 strings to match.
  13280. if (NameR[5] != 'p')
  13281. break;
  13282. switch (NameR[6]) {
  13283. default: break;
  13284. case 'a': // 2 strings to match.
  13285. if (memcmp(NameR.data()+7, "q.s", 3))
  13286. break;
  13287. switch (NameR[10]) {
  13288. default: break;
  13289. case '.': // 1 string to match.
  13290. if (memcmp(NameR.data()+11, "w.ph", 4))
  13291. break;
  13292. return Intrinsic::mips_dpaq_s_w_ph; // "ips.dpaq.s.w.ph"
  13293. case 'a': // 1 string to match.
  13294. if (memcmp(NameR.data()+11, ".l.w", 4))
  13295. break;
  13296. return Intrinsic::mips_dpaq_sa_l_w; // "ips.dpaq.sa.l.w"
  13297. }
  13298. break;
  13299. case 's': // 2 strings to match.
  13300. if (memcmp(NameR.data()+7, "q.s", 3))
  13301. break;
  13302. switch (NameR[10]) {
  13303. default: break;
  13304. case '.': // 1 string to match.
  13305. if (memcmp(NameR.data()+11, "w.ph", 4))
  13306. break;
  13307. return Intrinsic::mips_dpsq_s_w_ph; // "ips.dpsq.s.w.ph"
  13308. case 'a': // 1 string to match.
  13309. if (memcmp(NameR.data()+11, ".l.w", 4))
  13310. break;
  13311. return Intrinsic::mips_dpsq_sa_l_w; // "ips.dpsq.sa.l.w"
  13312. }
  13313. break;
  13314. }
  13315. break;
  13316. case 'm': // 2 strings to match.
  13317. if (memcmp(NameR.data()+5, "aq.s.w.ph", 9))
  13318. break;
  13319. switch (NameR[14]) {
  13320. default: break;
  13321. case 'l': // 1 string to match.
  13322. return Intrinsic::mips_maq_s_w_phl; // "ips.maq.s.w.phl"
  13323. case 'r': // 1 string to match.
  13324. return Intrinsic::mips_maq_s_w_phr; // "ips.maq.s.w.phr"
  13325. }
  13326. break;
  13327. case 'p': // 2 strings to match.
  13328. if (memcmp(NameR.data()+5, "recr", 4))
  13329. break;
  13330. switch (NameR[9]) {
  13331. default: break;
  13332. case '.': // 1 string to match.
  13333. if (memcmp(NameR.data()+10, "qb.ph", 5))
  13334. break;
  13335. return Intrinsic::mips_precr_qb_ph; // "ips.precr.qb.ph"
  13336. case 'q': // 1 string to match.
  13337. if (memcmp(NameR.data()+10, ".ph.w", 5))
  13338. break;
  13339. return Intrinsic::mips_precrq_ph_w; // "ips.precrq.ph.w"
  13340. }
  13341. break;
  13342. }
  13343. break;
  13344. case 16: // 10 strings to match.
  13345. if (memcmp(NameR.data()+0, "ips.", 4))
  13346. break;
  13347. switch (NameR[4]) {
  13348. default: break;
  13349. case 'c': // 3 strings to match.
  13350. if (memcmp(NameR.data()+5, "mpgdu.", 6))
  13351. break;
  13352. switch (NameR[11]) {
  13353. default: break;
  13354. case 'e': // 1 string to match.
  13355. if (memcmp(NameR.data()+12, "q.qb", 4))
  13356. break;
  13357. return Intrinsic::mips_cmpgdu_eq_qb; // "ips.cmpgdu.eq.qb"
  13358. case 'l': // 2 strings to match.
  13359. switch (NameR[12]) {
  13360. default: break;
  13361. case 'e': // 1 string to match.
  13362. if (memcmp(NameR.data()+13, ".qb", 3))
  13363. break;
  13364. return Intrinsic::mips_cmpgdu_le_qb; // "ips.cmpgdu.le.qb"
  13365. case 't': // 1 string to match.
  13366. if (memcmp(NameR.data()+13, ".qb", 3))
  13367. break;
  13368. return Intrinsic::mips_cmpgdu_lt_qb; // "ips.cmpgdu.lt.qb"
  13369. }
  13370. break;
  13371. }
  13372. break;
  13373. case 'd': // 2 strings to match.
  13374. if (NameR[5] != 'p')
  13375. break;
  13376. switch (NameR[6]) {
  13377. default: break;
  13378. case 'a': // 1 string to match.
  13379. if (memcmp(NameR.data()+7, "qx.s.w.ph", 9))
  13380. break;
  13381. return Intrinsic::mips_dpaqx_s_w_ph; // "ips.dpaqx.s.w.ph"
  13382. case 's': // 1 string to match.
  13383. if (memcmp(NameR.data()+7, "qx.s.w.ph", 9))
  13384. break;
  13385. return Intrinsic::mips_dpsqx_s_w_ph; // "ips.dpsqx.s.w.ph"
  13386. }
  13387. break;
  13388. case 'm': // 2 strings to match.
  13389. if (memcmp(NameR.data()+5, "aq.sa.w.ph", 10))
  13390. break;
  13391. switch (NameR[15]) {
  13392. default: break;
  13393. case 'l': // 1 string to match.
  13394. return Intrinsic::mips_maq_sa_w_phl; // "ips.maq.sa.w.phl"
  13395. case 'r': // 1 string to match.
  13396. return Intrinsic::mips_maq_sa_w_phr; // "ips.maq.sa.w.phr"
  13397. }
  13398. break;
  13399. case 'p': // 3 strings to match.
  13400. if (memcmp(NameR.data()+5, "rec", 3))
  13401. break;
  13402. switch (NameR[8]) {
  13403. default: break;
  13404. case 'e': // 2 strings to match.
  13405. if (memcmp(NameR.data()+9, "q.w.ph", 6))
  13406. break;
  13407. switch (NameR[15]) {
  13408. default: break;
  13409. case 'l': // 1 string to match.
  13410. return Intrinsic::mips_preceq_w_phl; // "ips.preceq.w.phl"
  13411. case 'r': // 1 string to match.
  13412. return Intrinsic::mips_preceq_w_phr; // "ips.preceq.w.phr"
  13413. }
  13414. break;
  13415. case 'r': // 1 string to match.
  13416. if (memcmp(NameR.data()+9, "q.qb.ph", 7))
  13417. break;
  13418. return Intrinsic::mips_precrq_qb_ph; // "ips.precrq.qb.ph"
  13419. }
  13420. break;
  13421. }
  13422. break;
  13423. case 17: // 7 strings to match.
  13424. if (memcmp(NameR.data()+0, "ips.", 4))
  13425. break;
  13426. switch (NameR[4]) {
  13427. default: break;
  13428. case 'd': // 2 strings to match.
  13429. if (NameR[5] != 'p')
  13430. break;
  13431. switch (NameR[6]) {
  13432. default: break;
  13433. case 'a': // 1 string to match.
  13434. if (memcmp(NameR.data()+7, "qx.sa.w.ph", 10))
  13435. break;
  13436. return Intrinsic::mips_dpaqx_sa_w_ph; // "ips.dpaqx.sa.w.ph"
  13437. case 's': // 1 string to match.
  13438. if (memcmp(NameR.data()+7, "qx.sa.w.ph", 10))
  13439. break;
  13440. return Intrinsic::mips_dpsqx_sa_w_ph; // "ips.dpsqx.sa.w.ph"
  13441. }
  13442. break;
  13443. case 'm': // 3 strings to match.
  13444. if (memcmp(NameR.data()+5, "ul", 2))
  13445. break;
  13446. switch (NameR[7]) {
  13447. default: break;
  13448. case 'e': // 2 strings to match.
  13449. if (memcmp(NameR.data()+8, "q.s.w.ph", 8))
  13450. break;
  13451. switch (NameR[16]) {
  13452. default: break;
  13453. case 'l': // 1 string to match.
  13454. return Intrinsic::mips_muleq_s_w_phl; // "ips.muleq.s.w.phl"
  13455. case 'r': // 1 string to match.
  13456. return Intrinsic::mips_muleq_s_w_phr; // "ips.muleq.s.w.phr"
  13457. }
  13458. break;
  13459. case 's': // 1 string to match.
  13460. if (memcmp(NameR.data()+8, "aq.s.w.ph", 9))
  13461. break;
  13462. return Intrinsic::mips_mulsaq_s_w_ph; // "ips.mulsaq.s.w.ph"
  13463. }
  13464. break;
  13465. case 'p': // 2 strings to match.
  13466. if (memcmp(NameR.data()+5, "receu.ph.qb", 11))
  13467. break;
  13468. switch (NameR[16]) {
  13469. default: break;
  13470. case 'l': // 1 string to match.
  13471. return Intrinsic::mips_preceu_ph_qbl; // "ips.preceu.ph.qbl"
  13472. case 'r': // 1 string to match.
  13473. return Intrinsic::mips_preceu_ph_qbr; // "ips.preceu.ph.qbr"
  13474. }
  13475. break;
  13476. }
  13477. break;
  13478. case 18: // 8 strings to match.
  13479. if (memcmp(NameR.data()+0, "ips.", 4))
  13480. break;
  13481. switch (NameR[4]) {
  13482. default: break;
  13483. case 'm': // 2 strings to match.
  13484. if (memcmp(NameR.data()+5, "uleu.s.ph.qb", 12))
  13485. break;
  13486. switch (NameR[17]) {
  13487. default: break;
  13488. case 'l': // 1 string to match.
  13489. return Intrinsic::mips_muleu_s_ph_qbl; // "ips.muleu.s.ph.qbl"
  13490. case 'r': // 1 string to match.
  13491. return Intrinsic::mips_muleu_s_ph_qbr; // "ips.muleu.s.ph.qbr"
  13492. }
  13493. break;
  13494. case 'p': // 6 strings to match.
  13495. if (memcmp(NameR.data()+5, "rec", 3))
  13496. break;
  13497. switch (NameR[8]) {
  13498. default: break;
  13499. case 'e': // 4 strings to match.
  13500. switch (NameR[9]) {
  13501. default: break;
  13502. case 'q': // 2 strings to match.
  13503. if (memcmp(NameR.data()+10, "u.ph.qb", 7))
  13504. break;
  13505. switch (NameR[17]) {
  13506. default: break;
  13507. case 'l': // 1 string to match.
  13508. return Intrinsic::mips_precequ_ph_qbl; // "ips.precequ.ph.qbl"
  13509. case 'r': // 1 string to match.
  13510. return Intrinsic::mips_precequ_ph_qbr; // "ips.precequ.ph.qbr"
  13511. }
  13512. break;
  13513. case 'u': // 2 strings to match.
  13514. if (memcmp(NameR.data()+10, ".ph.qb", 6))
  13515. break;
  13516. switch (NameR[16]) {
  13517. default: break;
  13518. case 'l': // 1 string to match.
  13519. if (NameR[17] != 'a')
  13520. break;
  13521. return Intrinsic::mips_preceu_ph_qbla; // "ips.preceu.ph.qbla"
  13522. case 'r': // 1 string to match.
  13523. if (NameR[17] != 'a')
  13524. break;
  13525. return Intrinsic::mips_preceu_ph_qbra; // "ips.preceu.ph.qbra"
  13526. }
  13527. break;
  13528. }
  13529. break;
  13530. case 'r': // 2 strings to match.
  13531. switch (NameR[9]) {
  13532. default: break;
  13533. case '.': // 1 string to match.
  13534. if (memcmp(NameR.data()+10, "sra.ph.w", 8))
  13535. break;
  13536. return Intrinsic::mips_precr_sra_ph_w; // "ips.precr.sra.ph.w"
  13537. case 'q': // 1 string to match.
  13538. if (memcmp(NameR.data()+10, ".rs.ph.w", 8))
  13539. break;
  13540. return Intrinsic::mips_precrq_rs_ph_w; // "ips.precrq.rs.ph.w"
  13541. }
  13542. break;
  13543. }
  13544. break;
  13545. }
  13546. break;
  13547. case 19: // 3 strings to match.
  13548. if (memcmp(NameR.data()+0, "ips.prec", 8))
  13549. break;
  13550. switch (NameR[8]) {
  13551. default: break;
  13552. case 'e': // 2 strings to match.
  13553. if (memcmp(NameR.data()+9, "qu.ph.qb", 8))
  13554. break;
  13555. switch (NameR[17]) {
  13556. default: break;
  13557. case 'l': // 1 string to match.
  13558. if (NameR[18] != 'a')
  13559. break;
  13560. return Intrinsic::mips_precequ_ph_qbla; // "ips.precequ.ph.qbla"
  13561. case 'r': // 1 string to match.
  13562. if (NameR[18] != 'a')
  13563. break;
  13564. return Intrinsic::mips_precequ_ph_qbra; // "ips.precequ.ph.qbra"
  13565. }
  13566. break;
  13567. case 'r': // 1 string to match.
  13568. if (memcmp(NameR.data()+9, "qu.s.qb.ph", 10))
  13569. break;
  13570. return Intrinsic::mips_precrqu_s_qb_ph; // "ips.precrqu.s.qb.ph"
  13571. }
  13572. break;
  13573. case 20: // 1 string to match.
  13574. if (memcmp(NameR.data()+0, "ips.precr.sra.r.ph.w", 20))
  13575. break;
  13576. return Intrinsic::mips_precr_sra_r_ph_w; // "ips.precr.sra.r.ph.w"
  13577. }
  13578. break; // end of 'm' case.
  13579. case 'n':
  13580. if (NameR.startswith("earbyint.")) return Intrinsic::nearbyint;
  13581. if (NameR.startswith("vvm.atomic.load.add.f32.")) return Intrinsic::nvvm_atomic_load_add_f32;
  13582. if (NameR.startswith("vvm.atomic.load.dec.32.")) return Intrinsic::nvvm_atomic_load_dec_32;
  13583. if (NameR.startswith("vvm.atomic.load.inc.32.")) return Intrinsic::nvvm_atomic_load_inc_32;
  13584. if (NameR.startswith("vvm.compiler.error.")) return Intrinsic::nvvm_compiler_error;
  13585. if (NameR.startswith("vvm.compiler.warn.")) return Intrinsic::nvvm_compiler_warn;
  13586. if (NameR.startswith("vvm.ldg.global.f.")) return Intrinsic::nvvm_ldg_global_f;
  13587. if (NameR.startswith("vvm.ldg.global.i.")) return Intrinsic::nvvm_ldg_global_i;
  13588. if (NameR.startswith("vvm.ldg.global.p.")) return Intrinsic::nvvm_ldg_global_p;
  13589. if (NameR.startswith("vvm.ldu.global.f.")) return Intrinsic::nvvm_ldu_global_f;
  13590. if (NameR.startswith("vvm.ldu.global.i.")) return Intrinsic::nvvm_ldu_global_i;
  13591. if (NameR.startswith("vvm.ldu.global.p.")) return Intrinsic::nvvm_ldu_global_p;
  13592. if (NameR.startswith("vvm.move.ptr.")) return Intrinsic::nvvm_move_ptr;
  13593. if (NameR.startswith("vvm.ptr.constant.to.gen.")) return Intrinsic::nvvm_ptr_constant_to_gen;
  13594. if (NameR.startswith("vvm.ptr.gen.to.constant.")) return Intrinsic::nvvm_ptr_gen_to_constant;
  13595. if (NameR.startswith("vvm.ptr.gen.to.global.")) return Intrinsic::nvvm_ptr_gen_to_global;
  13596. if (NameR.startswith("vvm.ptr.gen.to.local.")) return Intrinsic::nvvm_ptr_gen_to_local;
  13597. if (NameR.startswith("vvm.ptr.gen.to.param.")) return Intrinsic::nvvm_ptr_gen_to_param;
  13598. if (NameR.startswith("vvm.ptr.gen.to.shared.")) return Intrinsic::nvvm_ptr_gen_to_shared;
  13599. if (NameR.startswith("vvm.ptr.global.to.gen.")) return Intrinsic::nvvm_ptr_global_to_gen;
  13600. if (NameR.startswith("vvm.ptr.local.to.gen.")) return Intrinsic::nvvm_ptr_local_to_gen;
  13601. if (NameR.startswith("vvm.ptr.shared.to.gen.")) return Intrinsic::nvvm_ptr_shared_to_gen;
  13602. switch (NameR.size()) {
  13603. default: break;
  13604. case 7: // 1 string to match.
  13605. if (memcmp(NameR.data()+0, "vvm.h2f", 7))
  13606. break;
  13607. return Intrinsic::nvvm_h2f; // "vvm.h2f"
  13608. case 8: // 1 string to match.
  13609. if (memcmp(NameR.data()+0, "vvm.prmt", 8))
  13610. break;
  13611. return Intrinsic::nvvm_prmt; // "vvm.prmt"
  13612. case 9: // 5 strings to match.
  13613. if (memcmp(NameR.data()+0, "vvm.", 4))
  13614. break;
  13615. switch (NameR[4]) {
  13616. default: break;
  13617. case 'a': // 1 string to match.
  13618. if (memcmp(NameR.data()+5, "bs.i", 4))
  13619. break;
  13620. return Intrinsic::nvvm_abs_i; // "vvm.abs.i"
  13621. case 'c': // 1 string to match.
  13622. if (memcmp(NameR.data()+5, "lz.i", 4))
  13623. break;
  13624. return Intrinsic::nvvm_clz_i; // "vvm.clz.i"
  13625. case 'm': // 2 strings to match.
  13626. switch (NameR[5]) {
  13627. default: break;
  13628. case 'a': // 1 string to match.
  13629. if (memcmp(NameR.data()+6, "x.i", 3))
  13630. break;
  13631. return Intrinsic::nvvm_max_i; // "vvm.max.i"
  13632. case 'i': // 1 string to match.
  13633. if (memcmp(NameR.data()+6, "n.i", 3))
  13634. break;
  13635. return Intrinsic::nvvm_min_i; // "vvm.min.i"
  13636. }
  13637. break;
  13638. case 's': // 1 string to match.
  13639. if (memcmp(NameR.data()+5, "ad.i", 4))
  13640. break;
  13641. return Intrinsic::nvvm_sad_i; // "vvm.sad.i"
  13642. }
  13643. break;
  13644. case 10: // 41 strings to match.
  13645. if (memcmp(NameR.data()+0, "vvm.", 4))
  13646. break;
  13647. switch (NameR[4]) {
  13648. default: break;
  13649. case 'a': // 1 string to match.
  13650. if (memcmp(NameR.data()+5, "bs.ll", 5))
  13651. break;
  13652. return Intrinsic::nvvm_abs_ll; // "vvm.abs.ll"
  13653. case 'b': // 2 strings to match.
  13654. if (memcmp(NameR.data()+5, "rev", 3))
  13655. break;
  13656. switch (NameR[8]) {
  13657. default: break;
  13658. case '3': // 1 string to match.
  13659. if (NameR[9] != '2')
  13660. break;
  13661. return Intrinsic::nvvm_brev32; // "vvm.brev32"
  13662. case '6': // 1 string to match.
  13663. if (NameR[9] != '4')
  13664. break;
  13665. return Intrinsic::nvvm_brev64; // "vvm.brev64"
  13666. }
  13667. break;
  13668. case 'c': // 3 strings to match.
  13669. switch (NameR[5]) {
  13670. default: break;
  13671. case 'e': // 2 strings to match.
  13672. if (memcmp(NameR.data()+6, "il.", 3))
  13673. break;
  13674. switch (NameR[9]) {
  13675. default: break;
  13676. case 'd': // 1 string to match.
  13677. return Intrinsic::nvvm_ceil_d; // "vvm.ceil.d"
  13678. case 'f': // 1 string to match.
  13679. return Intrinsic::nvvm_ceil_f; // "vvm.ceil.f"
  13680. }
  13681. break;
  13682. case 'l': // 1 string to match.
  13683. if (memcmp(NameR.data()+6, "z.ll", 4))
  13684. break;
  13685. return Intrinsic::nvvm_clz_ll; // "vvm.clz.ll"
  13686. }
  13687. break;
  13688. case 'd': // 10 strings to match.
  13689. if (NameR[5] != '2')
  13690. break;
  13691. switch (NameR[6]) {
  13692. default: break;
  13693. case 'f': // 4 strings to match.
  13694. if (memcmp(NameR.data()+7, ".r", 2))
  13695. break;
  13696. switch (NameR[9]) {
  13697. default: break;
  13698. case 'm': // 1 string to match.
  13699. return Intrinsic::nvvm_d2f_rm; // "vvm.d2f.rm"
  13700. case 'n': // 1 string to match.
  13701. return Intrinsic::nvvm_d2f_rn; // "vvm.d2f.rn"
  13702. case 'p': // 1 string to match.
  13703. return Intrinsic::nvvm_d2f_rp; // "vvm.d2f.rp"
  13704. case 'z': // 1 string to match.
  13705. return Intrinsic::nvvm_d2f_rz; // "vvm.d2f.rz"
  13706. }
  13707. break;
  13708. case 'i': // 6 strings to match.
  13709. if (NameR[7] != '.')
  13710. break;
  13711. switch (NameR[8]) {
  13712. default: break;
  13713. case 'h': // 1 string to match.
  13714. if (NameR[9] != 'i')
  13715. break;
  13716. return Intrinsic::nvvm_d2i_hi; // "vvm.d2i.hi"
  13717. case 'l': // 1 string to match.
  13718. if (NameR[9] != 'o')
  13719. break;
  13720. return Intrinsic::nvvm_d2i_lo; // "vvm.d2i.lo"
  13721. case 'r': // 4 strings to match.
  13722. switch (NameR[9]) {
  13723. default: break;
  13724. case 'm': // 1 string to match.
  13725. return Intrinsic::nvvm_d2i_rm; // "vvm.d2i.rm"
  13726. case 'n': // 1 string to match.
  13727. return Intrinsic::nvvm_d2i_rn; // "vvm.d2i.rn"
  13728. case 'p': // 1 string to match.
  13729. return Intrinsic::nvvm_d2i_rp; // "vvm.d2i.rp"
  13730. case 'z': // 1 string to match.
  13731. return Intrinsic::nvvm_d2i_rz; // "vvm.d2i.rz"
  13732. }
  13733. break;
  13734. }
  13735. break;
  13736. }
  13737. break;
  13738. case 'f': // 11 strings to match.
  13739. switch (NameR[5]) {
  13740. default: break;
  13741. case '2': // 5 strings to match.
  13742. switch (NameR[6]) {
  13743. default: break;
  13744. case 'h': // 1 string to match.
  13745. if (memcmp(NameR.data()+7, ".rn", 3))
  13746. break;
  13747. return Intrinsic::nvvm_f2h_rn; // "vvm.f2h.rn"
  13748. case 'i': // 4 strings to match.
  13749. if (memcmp(NameR.data()+7, ".r", 2))
  13750. break;
  13751. switch (NameR[9]) {
  13752. default: break;
  13753. case 'm': // 1 string to match.
  13754. return Intrinsic::nvvm_f2i_rm; // "vvm.f2i.rm"
  13755. case 'n': // 1 string to match.
  13756. return Intrinsic::nvvm_f2i_rn; // "vvm.f2i.rn"
  13757. case 'p': // 1 string to match.
  13758. return Intrinsic::nvvm_f2i_rp; // "vvm.f2i.rp"
  13759. case 'z': // 1 string to match.
  13760. return Intrinsic::nvvm_f2i_rz; // "vvm.f2i.rz"
  13761. }
  13762. break;
  13763. }
  13764. break;
  13765. case 'a': // 2 strings to match.
  13766. if (memcmp(NameR.data()+6, "bs.", 3))
  13767. break;
  13768. switch (NameR[9]) {
  13769. default: break;
  13770. case 'd': // 1 string to match.
  13771. return Intrinsic::nvvm_fabs_d; // "vvm.fabs.d"
  13772. case 'f': // 1 string to match.
  13773. return Intrinsic::nvvm_fabs_f; // "vvm.fabs.f"
  13774. }
  13775. break;
  13776. case 'm': // 4 strings to match.
  13777. switch (NameR[6]) {
  13778. default: break;
  13779. case 'a': // 2 strings to match.
  13780. if (memcmp(NameR.data()+7, "x.", 2))
  13781. break;
  13782. switch (NameR[9]) {
  13783. default: break;
  13784. case 'd': // 1 string to match.
  13785. return Intrinsic::nvvm_fmax_d; // "vvm.fmax.d"
  13786. case 'f': // 1 string to match.
  13787. return Intrinsic::nvvm_fmax_f; // "vvm.fmax.f"
  13788. }
  13789. break;
  13790. case 'i': // 2 strings to match.
  13791. if (memcmp(NameR.data()+7, "n.", 2))
  13792. break;
  13793. switch (NameR[9]) {
  13794. default: break;
  13795. case 'd': // 1 string to match.
  13796. return Intrinsic::nvvm_fmin_d; // "vvm.fmin.d"
  13797. case 'f': // 1 string to match.
  13798. return Intrinsic::nvvm_fmin_f; // "vvm.fmin.f"
  13799. }
  13800. break;
  13801. }
  13802. break;
  13803. }
  13804. break;
  13805. case 'i': // 8 strings to match.
  13806. if (NameR[5] != '2')
  13807. break;
  13808. switch (NameR[6]) {
  13809. default: break;
  13810. case 'd': // 4 strings to match.
  13811. if (memcmp(NameR.data()+7, ".r", 2))
  13812. break;
  13813. switch (NameR[9]) {
  13814. default: break;
  13815. case 'm': // 1 string to match.
  13816. return Intrinsic::nvvm_i2d_rm; // "vvm.i2d.rm"
  13817. case 'n': // 1 string to match.
  13818. return Intrinsic::nvvm_i2d_rn; // "vvm.i2d.rn"
  13819. case 'p': // 1 string to match.
  13820. return Intrinsic::nvvm_i2d_rp; // "vvm.i2d.rp"
  13821. case 'z': // 1 string to match.
  13822. return Intrinsic::nvvm_i2d_rz; // "vvm.i2d.rz"
  13823. }
  13824. break;
  13825. case 'f': // 4 strings to match.
  13826. if (memcmp(NameR.data()+7, ".r", 2))
  13827. break;
  13828. switch (NameR[9]) {
  13829. default: break;
  13830. case 'm': // 1 string to match.
  13831. return Intrinsic::nvvm_i2f_rm; // "vvm.i2f.rm"
  13832. case 'n': // 1 string to match.
  13833. return Intrinsic::nvvm_i2f_rn; // "vvm.i2f.rn"
  13834. case 'p': // 1 string to match.
  13835. return Intrinsic::nvvm_i2f_rp; // "vvm.i2f.rp"
  13836. case 'z': // 1 string to match.
  13837. return Intrinsic::nvvm_i2f_rz; // "vvm.i2f.rz"
  13838. }
  13839. break;
  13840. }
  13841. break;
  13842. case 'm': // 4 strings to match.
  13843. switch (NameR[5]) {
  13844. default: break;
  13845. case 'a': // 2 strings to match.
  13846. if (memcmp(NameR.data()+6, "x.", 2))
  13847. break;
  13848. switch (NameR[8]) {
  13849. default: break;
  13850. case 'l': // 1 string to match.
  13851. if (NameR[9] != 'l')
  13852. break;
  13853. return Intrinsic::nvvm_max_ll; // "vvm.max.ll"
  13854. case 'u': // 1 string to match.
  13855. if (NameR[9] != 'i')
  13856. break;
  13857. return Intrinsic::nvvm_max_ui; // "vvm.max.ui"
  13858. }
  13859. break;
  13860. case 'i': // 2 strings to match.
  13861. if (memcmp(NameR.data()+6, "n.", 2))
  13862. break;
  13863. switch (NameR[8]) {
  13864. default: break;
  13865. case 'l': // 1 string to match.
  13866. if (NameR[9] != 'l')
  13867. break;
  13868. return Intrinsic::nvvm_min_ll; // "vvm.min.ll"
  13869. case 'u': // 1 string to match.
  13870. if (NameR[9] != 'i')
  13871. break;
  13872. return Intrinsic::nvvm_min_ui; // "vvm.min.ui"
  13873. }
  13874. break;
  13875. }
  13876. break;
  13877. case 'p': // 1 string to match.
  13878. if (memcmp(NameR.data()+5, "opc.i", 5))
  13879. break;
  13880. return Intrinsic::nvvm_popc_i; // "vvm.popc.i"
  13881. case 's': // 1 string to match.
  13882. if (memcmp(NameR.data()+5, "ad.ui", 5))
  13883. break;
  13884. return Intrinsic::nvvm_sad_ui; // "vvm.sad.ui"
  13885. }
  13886. break;
  13887. case 11: // 44 strings to match.
  13888. if (memcmp(NameR.data()+0, "vvm.", 4))
  13889. break;
  13890. switch (NameR[4]) {
  13891. default: break;
  13892. case 'd': // 8 strings to match.
  13893. if (NameR[5] != '2')
  13894. break;
  13895. switch (NameR[6]) {
  13896. default: break;
  13897. case 'l': // 4 strings to match.
  13898. if (memcmp(NameR.data()+7, "l.r", 3))
  13899. break;
  13900. switch (NameR[10]) {
  13901. default: break;
  13902. case 'm': // 1 string to match.
  13903. return Intrinsic::nvvm_d2ll_rm; // "vvm.d2ll.rm"
  13904. case 'n': // 1 string to match.
  13905. return Intrinsic::nvvm_d2ll_rn; // "vvm.d2ll.rn"
  13906. case 'p': // 1 string to match.
  13907. return Intrinsic::nvvm_d2ll_rp; // "vvm.d2ll.rp"
  13908. case 'z': // 1 string to match.
  13909. return Intrinsic::nvvm_d2ll_rz; // "vvm.d2ll.rz"
  13910. }
  13911. break;
  13912. case 'u': // 4 strings to match.
  13913. if (memcmp(NameR.data()+7, "i.r", 3))
  13914. break;
  13915. switch (NameR[10]) {
  13916. default: break;
  13917. case 'm': // 1 string to match.
  13918. return Intrinsic::nvvm_d2ui_rm; // "vvm.d2ui.rm"
  13919. case 'n': // 1 string to match.
  13920. return Intrinsic::nvvm_d2ui_rn; // "vvm.d2ui.rn"
  13921. case 'p': // 1 string to match.
  13922. return Intrinsic::nvvm_d2ui_rp; // "vvm.d2ui.rp"
  13923. case 'z': // 1 string to match.
  13924. return Intrinsic::nvvm_d2ui_rz; // "vvm.d2ui.rz"
  13925. }
  13926. break;
  13927. }
  13928. break;
  13929. case 'f': // 10 strings to match.
  13930. switch (NameR[5]) {
  13931. default: break;
  13932. case '2': // 8 strings to match.
  13933. switch (NameR[6]) {
  13934. default: break;
  13935. case 'l': // 4 strings to match.
  13936. if (memcmp(NameR.data()+7, "l.r", 3))
  13937. break;
  13938. switch (NameR[10]) {
  13939. default: break;
  13940. case 'm': // 1 string to match.
  13941. return Intrinsic::nvvm_f2ll_rm; // "vvm.f2ll.rm"
  13942. case 'n': // 1 string to match.
  13943. return Intrinsic::nvvm_f2ll_rn; // "vvm.f2ll.rn"
  13944. case 'p': // 1 string to match.
  13945. return Intrinsic::nvvm_f2ll_rp; // "vvm.f2ll.rp"
  13946. case 'z': // 1 string to match.
  13947. return Intrinsic::nvvm_f2ll_rz; // "vvm.f2ll.rz"
  13948. }
  13949. break;
  13950. case 'u': // 4 strings to match.
  13951. if (memcmp(NameR.data()+7, "i.r", 3))
  13952. break;
  13953. switch (NameR[10]) {
  13954. default: break;
  13955. case 'm': // 1 string to match.
  13956. return Intrinsic::nvvm_f2ui_rm; // "vvm.f2ui.rm"
  13957. case 'n': // 1 string to match.
  13958. return Intrinsic::nvvm_f2ui_rn; // "vvm.f2ui.rn"
  13959. case 'p': // 1 string to match.
  13960. return Intrinsic::nvvm_f2ui_rp; // "vvm.f2ui.rp"
  13961. case 'z': // 1 string to match.
  13962. return Intrinsic::nvvm_f2ui_rz; // "vvm.f2ui.rz"
  13963. }
  13964. break;
  13965. }
  13966. break;
  13967. case 'l': // 2 strings to match.
  13968. if (memcmp(NameR.data()+6, "oor.", 4))
  13969. break;
  13970. switch (NameR[10]) {
  13971. default: break;
  13972. case 'd': // 1 string to match.
  13973. return Intrinsic::nvvm_floor_d; // "vvm.floor.d"
  13974. case 'f': // 1 string to match.
  13975. return Intrinsic::nvvm_floor_f; // "vvm.floor.f"
  13976. }
  13977. break;
  13978. }
  13979. break;
  13980. case 'l': // 8 strings to match.
  13981. if (memcmp(NameR.data()+5, "l2", 2))
  13982. break;
  13983. switch (NameR[7]) {
  13984. default: break;
  13985. case 'd': // 4 strings to match.
  13986. if (memcmp(NameR.data()+8, ".r", 2))
  13987. break;
  13988. switch (NameR[10]) {
  13989. default: break;
  13990. case 'm': // 1 string to match.
  13991. return Intrinsic::nvvm_ll2d_rm; // "vvm.ll2d.rm"
  13992. case 'n': // 1 string to match.
  13993. return Intrinsic::nvvm_ll2d_rn; // "vvm.ll2d.rn"
  13994. case 'p': // 1 string to match.
  13995. return Intrinsic::nvvm_ll2d_rp; // "vvm.ll2d.rp"
  13996. case 'z': // 1 string to match.
  13997. return Intrinsic::nvvm_ll2d_rz; // "vvm.ll2d.rz"
  13998. }
  13999. break;
  14000. case 'f': // 4 strings to match.
  14001. if (memcmp(NameR.data()+8, ".r", 2))
  14002. break;
  14003. switch (NameR[10]) {
  14004. default: break;
  14005. case 'm': // 1 string to match.
  14006. return Intrinsic::nvvm_ll2f_rm; // "vvm.ll2f.rm"
  14007. case 'n': // 1 string to match.
  14008. return Intrinsic::nvvm_ll2f_rn; // "vvm.ll2f.rn"
  14009. case 'p': // 1 string to match.
  14010. return Intrinsic::nvvm_ll2f_rp; // "vvm.ll2f.rp"
  14011. case 'z': // 1 string to match.
  14012. return Intrinsic::nvvm_ll2f_rz; // "vvm.ll2f.rz"
  14013. }
  14014. break;
  14015. }
  14016. break;
  14017. case 'm': // 5 strings to match.
  14018. switch (NameR[5]) {
  14019. default: break;
  14020. case 'a': // 1 string to match.
  14021. if (memcmp(NameR.data()+6, "x.ull", 5))
  14022. break;
  14023. return Intrinsic::nvvm_max_ull; // "vvm.max.ull"
  14024. case 'i': // 1 string to match.
  14025. if (memcmp(NameR.data()+6, "n.ull", 5))
  14026. break;
  14027. return Intrinsic::nvvm_min_ull; // "vvm.min.ull"
  14028. case 'o': // 1 string to match.
  14029. if (memcmp(NameR.data()+6, "ve.i8", 5))
  14030. break;
  14031. return Intrinsic::nvvm_move_i8; // "vvm.move.i8"
  14032. case 'u': // 2 strings to match.
  14033. if (NameR[6] != 'l')
  14034. break;
  14035. switch (NameR[7]) {
  14036. default: break;
  14037. case '2': // 1 string to match.
  14038. if (memcmp(NameR.data()+8, "4.i", 3))
  14039. break;
  14040. return Intrinsic::nvvm_mul24_i; // "vvm.mul24.i"
  14041. case 'h': // 1 string to match.
  14042. if (memcmp(NameR.data()+8, "i.i", 3))
  14043. break;
  14044. return Intrinsic::nvvm_mulhi_i; // "vvm.mulhi.i"
  14045. }
  14046. break;
  14047. }
  14048. break;
  14049. case 'p': // 1 string to match.
  14050. if (memcmp(NameR.data()+5, "opc.ll", 6))
  14051. break;
  14052. return Intrinsic::nvvm_popc_ll; // "vvm.popc.ll"
  14053. case 'r': // 2 strings to match.
  14054. if (memcmp(NameR.data()+5, "ound.", 5))
  14055. break;
  14056. switch (NameR[10]) {
  14057. default: break;
  14058. case 'd': // 1 string to match.
  14059. return Intrinsic::nvvm_round_d; // "vvm.round.d"
  14060. case 'f': // 1 string to match.
  14061. return Intrinsic::nvvm_round_f; // "vvm.round.f"
  14062. }
  14063. break;
  14064. case 't': // 2 strings to match.
  14065. if (memcmp(NameR.data()+5, "runc.", 5))
  14066. break;
  14067. switch (NameR[10]) {
  14068. default: break;
  14069. case 'd': // 1 string to match.
  14070. return Intrinsic::nvvm_trunc_d; // "vvm.trunc.d"
  14071. case 'f': // 1 string to match.
  14072. return Intrinsic::nvvm_trunc_f; // "vvm.trunc.f"
  14073. }
  14074. break;
  14075. case 'u': // 8 strings to match.
  14076. if (memcmp(NameR.data()+5, "i2", 2))
  14077. break;
  14078. switch (NameR[7]) {
  14079. default: break;
  14080. case 'd': // 4 strings to match.
  14081. if (memcmp(NameR.data()+8, ".r", 2))
  14082. break;
  14083. switch (NameR[10]) {
  14084. default: break;
  14085. case 'm': // 1 string to match.
  14086. return Intrinsic::nvvm_ui2d_rm; // "vvm.ui2d.rm"
  14087. case 'n': // 1 string to match.
  14088. return Intrinsic::nvvm_ui2d_rn; // "vvm.ui2d.rn"
  14089. case 'p': // 1 string to match.
  14090. return Intrinsic::nvvm_ui2d_rp; // "vvm.ui2d.rp"
  14091. case 'z': // 1 string to match.
  14092. return Intrinsic::nvvm_ui2d_rz; // "vvm.ui2d.rz"
  14093. }
  14094. break;
  14095. case 'f': // 4 strings to match.
  14096. if (memcmp(NameR.data()+8, ".r", 2))
  14097. break;
  14098. switch (NameR[10]) {
  14099. default: break;
  14100. case 'm': // 1 string to match.
  14101. return Intrinsic::nvvm_ui2f_rm; // "vvm.ui2f.rm"
  14102. case 'n': // 1 string to match.
  14103. return Intrinsic::nvvm_ui2f_rn; // "vvm.ui2f.rn"
  14104. case 'p': // 1 string to match.
  14105. return Intrinsic::nvvm_ui2f_rp; // "vvm.ui2f.rp"
  14106. case 'z': // 1 string to match.
  14107. return Intrinsic::nvvm_ui2f_rz; // "vvm.ui2f.rz"
  14108. }
  14109. break;
  14110. }
  14111. break;
  14112. }
  14113. break;
  14114. case 12: // 64 strings to match.
  14115. if (memcmp(NameR.data()+0, "vvm.", 4))
  14116. break;
  14117. switch (NameR[4]) {
  14118. default: break;
  14119. case 'a': // 8 strings to match.
  14120. if (memcmp(NameR.data()+5, "dd.r", 4))
  14121. break;
  14122. switch (NameR[9]) {
  14123. default: break;
  14124. case 'm': // 2 strings to match.
  14125. if (NameR[10] != '.')
  14126. break;
  14127. switch (NameR[11]) {
  14128. default: break;
  14129. case 'd': // 1 string to match.
  14130. return Intrinsic::nvvm_add_rm_d; // "vvm.add.rm.d"
  14131. case 'f': // 1 string to match.
  14132. return Intrinsic::nvvm_add_rm_f; // "vvm.add.rm.f"
  14133. }
  14134. break;
  14135. case 'n': // 2 strings to match.
  14136. if (NameR[10] != '.')
  14137. break;
  14138. switch (NameR[11]) {
  14139. default: break;
  14140. case 'd': // 1 string to match.
  14141. return Intrinsic::nvvm_add_rn_d; // "vvm.add.rn.d"
  14142. case 'f': // 1 string to match.
  14143. return Intrinsic::nvvm_add_rn_f; // "vvm.add.rn.f"
  14144. }
  14145. break;
  14146. case 'p': // 2 strings to match.
  14147. if (NameR[10] != '.')
  14148. break;
  14149. switch (NameR[11]) {
  14150. default: break;
  14151. case 'd': // 1 string to match.
  14152. return Intrinsic::nvvm_add_rp_d; // "vvm.add.rp.d"
  14153. case 'f': // 1 string to match.
  14154. return Intrinsic::nvvm_add_rp_f; // "vvm.add.rp.f"
  14155. }
  14156. break;
  14157. case 'z': // 2 strings to match.
  14158. if (NameR[10] != '.')
  14159. break;
  14160. switch (NameR[11]) {
  14161. default: break;
  14162. case 'd': // 1 string to match.
  14163. return Intrinsic::nvvm_add_rz_d; // "vvm.add.rz.d"
  14164. case 'f': // 1 string to match.
  14165. return Intrinsic::nvvm_add_rz_f; // "vvm.add.rz.f"
  14166. }
  14167. break;
  14168. }
  14169. break;
  14170. case 'b': // 1 string to match.
  14171. if (memcmp(NameR.data()+5, "arrier0", 7))
  14172. break;
  14173. return Intrinsic::nvvm_barrier0; // "vvm.barrier0"
  14174. case 'd': // 12 strings to match.
  14175. switch (NameR[5]) {
  14176. default: break;
  14177. case '2': // 4 strings to match.
  14178. if (memcmp(NameR.data()+6, "ull.r", 5))
  14179. break;
  14180. switch (NameR[11]) {
  14181. default: break;
  14182. case 'm': // 1 string to match.
  14183. return Intrinsic::nvvm_d2ull_rm; // "vvm.d2ull.rm"
  14184. case 'n': // 1 string to match.
  14185. return Intrinsic::nvvm_d2ull_rn; // "vvm.d2ull.rn"
  14186. case 'p': // 1 string to match.
  14187. return Intrinsic::nvvm_d2ull_rp; // "vvm.d2ull.rp"
  14188. case 'z': // 1 string to match.
  14189. return Intrinsic::nvvm_d2ull_rz; // "vvm.d2ull.rz"
  14190. }
  14191. break;
  14192. case 'i': // 8 strings to match.
  14193. if (memcmp(NameR.data()+6, "v.r", 3))
  14194. break;
  14195. switch (NameR[9]) {
  14196. default: break;
  14197. case 'm': // 2 strings to match.
  14198. if (NameR[10] != '.')
  14199. break;
  14200. switch (NameR[11]) {
  14201. default: break;
  14202. case 'd': // 1 string to match.
  14203. return Intrinsic::nvvm_div_rm_d; // "vvm.div.rm.d"
  14204. case 'f': // 1 string to match.
  14205. return Intrinsic::nvvm_div_rm_f; // "vvm.div.rm.f"
  14206. }
  14207. break;
  14208. case 'n': // 2 strings to match.
  14209. if (NameR[10] != '.')
  14210. break;
  14211. switch (NameR[11]) {
  14212. default: break;
  14213. case 'd': // 1 string to match.
  14214. return Intrinsic::nvvm_div_rn_d; // "vvm.div.rn.d"
  14215. case 'f': // 1 string to match.
  14216. return Intrinsic::nvvm_div_rn_f; // "vvm.div.rn.f"
  14217. }
  14218. break;
  14219. case 'p': // 2 strings to match.
  14220. if (NameR[10] != '.')
  14221. break;
  14222. switch (NameR[11]) {
  14223. default: break;
  14224. case 'd': // 1 string to match.
  14225. return Intrinsic::nvvm_div_rp_d; // "vvm.div.rp.d"
  14226. case 'f': // 1 string to match.
  14227. return Intrinsic::nvvm_div_rp_f; // "vvm.div.rp.f"
  14228. }
  14229. break;
  14230. case 'z': // 2 strings to match.
  14231. if (NameR[10] != '.')
  14232. break;
  14233. switch (NameR[11]) {
  14234. default: break;
  14235. case 'd': // 1 string to match.
  14236. return Intrinsic::nvvm_div_rz_d; // "vvm.div.rz.d"
  14237. case 'f': // 1 string to match.
  14238. return Intrinsic::nvvm_div_rz_f; // "vvm.div.rz.f"
  14239. }
  14240. break;
  14241. }
  14242. break;
  14243. }
  14244. break;
  14245. case 'f': // 12 strings to match.
  14246. switch (NameR[5]) {
  14247. default: break;
  14248. case '2': // 4 strings to match.
  14249. if (memcmp(NameR.data()+6, "ull.r", 5))
  14250. break;
  14251. switch (NameR[11]) {
  14252. default: break;
  14253. case 'm': // 1 string to match.
  14254. return Intrinsic::nvvm_f2ull_rm; // "vvm.f2ull.rm"
  14255. case 'n': // 1 string to match.
  14256. return Intrinsic::nvvm_f2ull_rn; // "vvm.f2ull.rn"
  14257. case 'p': // 1 string to match.
  14258. return Intrinsic::nvvm_f2ull_rp; // "vvm.f2ull.rp"
  14259. case 'z': // 1 string to match.
  14260. return Intrinsic::nvvm_f2ull_rz; // "vvm.f2ull.rz"
  14261. }
  14262. break;
  14263. case 'm': // 8 strings to match.
  14264. if (memcmp(NameR.data()+6, "a.r", 3))
  14265. break;
  14266. switch (NameR[9]) {
  14267. default: break;
  14268. case 'm': // 2 strings to match.
  14269. if (NameR[10] != '.')
  14270. break;
  14271. switch (NameR[11]) {
  14272. default: break;
  14273. case 'd': // 1 string to match.
  14274. return Intrinsic::nvvm_fma_rm_d; // "vvm.fma.rm.d"
  14275. case 'f': // 1 string to match.
  14276. return Intrinsic::nvvm_fma_rm_f; // "vvm.fma.rm.f"
  14277. }
  14278. break;
  14279. case 'n': // 2 strings to match.
  14280. if (NameR[10] != '.')
  14281. break;
  14282. switch (NameR[11]) {
  14283. default: break;
  14284. case 'd': // 1 string to match.
  14285. return Intrinsic::nvvm_fma_rn_d; // "vvm.fma.rn.d"
  14286. case 'f': // 1 string to match.
  14287. return Intrinsic::nvvm_fma_rn_f; // "vvm.fma.rn.f"
  14288. }
  14289. break;
  14290. case 'p': // 2 strings to match.
  14291. if (NameR[10] != '.')
  14292. break;
  14293. switch (NameR[11]) {
  14294. default: break;
  14295. case 'd': // 1 string to match.
  14296. return Intrinsic::nvvm_fma_rp_d; // "vvm.fma.rp.d"
  14297. case 'f': // 1 string to match.
  14298. return Intrinsic::nvvm_fma_rp_f; // "vvm.fma.rp.f"
  14299. }
  14300. break;
  14301. case 'z': // 2 strings to match.
  14302. if (NameR[10] != '.')
  14303. break;
  14304. switch (NameR[11]) {
  14305. default: break;
  14306. case 'd': // 1 string to match.
  14307. return Intrinsic::nvvm_fma_rz_d; // "vvm.fma.rz.d"
  14308. case 'f': // 1 string to match.
  14309. return Intrinsic::nvvm_fma_rz_f; // "vvm.fma.rz.f"
  14310. }
  14311. break;
  14312. }
  14313. break;
  14314. }
  14315. break;
  14316. case 'l': // 1 string to match.
  14317. if (memcmp(NameR.data()+5, "ohi.i2d", 7))
  14318. break;
  14319. return Intrinsic::nvvm_lohi_i2d; // "vvm.lohi.i2d"
  14320. case 'm': // 14 strings to match.
  14321. switch (NameR[5]) {
  14322. default: break;
  14323. case 'o': // 3 strings to match.
  14324. if (memcmp(NameR.data()+6, "ve.i", 4))
  14325. break;
  14326. switch (NameR[10]) {
  14327. default: break;
  14328. case '1': // 1 string to match.
  14329. if (NameR[11] != '6')
  14330. break;
  14331. return Intrinsic::nvvm_move_i16; // "vvm.move.i16"
  14332. case '3': // 1 string to match.
  14333. if (NameR[11] != '2')
  14334. break;
  14335. return Intrinsic::nvvm_move_i32; // "vvm.move.i32"
  14336. case '6': // 1 string to match.
  14337. if (NameR[11] != '4')
  14338. break;
  14339. return Intrinsic::nvvm_move_i64; // "vvm.move.i64"
  14340. }
  14341. break;
  14342. case 'u': // 11 strings to match.
  14343. if (NameR[6] != 'l')
  14344. break;
  14345. switch (NameR[7]) {
  14346. default: break;
  14347. case '.': // 8 strings to match.
  14348. if (NameR[8] != 'r')
  14349. break;
  14350. switch (NameR[9]) {
  14351. default: break;
  14352. case 'm': // 2 strings to match.
  14353. if (NameR[10] != '.')
  14354. break;
  14355. switch (NameR[11]) {
  14356. default: break;
  14357. case 'd': // 1 string to match.
  14358. return Intrinsic::nvvm_mul_rm_d; // "vvm.mul.rm.d"
  14359. case 'f': // 1 string to match.
  14360. return Intrinsic::nvvm_mul_rm_f; // "vvm.mul.rm.f"
  14361. }
  14362. break;
  14363. case 'n': // 2 strings to match.
  14364. if (NameR[10] != '.')
  14365. break;
  14366. switch (NameR[11]) {
  14367. default: break;
  14368. case 'd': // 1 string to match.
  14369. return Intrinsic::nvvm_mul_rn_d; // "vvm.mul.rn.d"
  14370. case 'f': // 1 string to match.
  14371. return Intrinsic::nvvm_mul_rn_f; // "vvm.mul.rn.f"
  14372. }
  14373. break;
  14374. case 'p': // 2 strings to match.
  14375. if (NameR[10] != '.')
  14376. break;
  14377. switch (NameR[11]) {
  14378. default: break;
  14379. case 'd': // 1 string to match.
  14380. return Intrinsic::nvvm_mul_rp_d; // "vvm.mul.rp.d"
  14381. case 'f': // 1 string to match.
  14382. return Intrinsic::nvvm_mul_rp_f; // "vvm.mul.rp.f"
  14383. }
  14384. break;
  14385. case 'z': // 2 strings to match.
  14386. if (NameR[10] != '.')
  14387. break;
  14388. switch (NameR[11]) {
  14389. default: break;
  14390. case 'd': // 1 string to match.
  14391. return Intrinsic::nvvm_mul_rz_d; // "vvm.mul.rz.d"
  14392. case 'f': // 1 string to match.
  14393. return Intrinsic::nvvm_mul_rz_f; // "vvm.mul.rz.f"
  14394. }
  14395. break;
  14396. }
  14397. break;
  14398. case '2': // 1 string to match.
  14399. if (memcmp(NameR.data()+8, "4.ui", 4))
  14400. break;
  14401. return Intrinsic::nvvm_mul24_ui; // "vvm.mul24.ui"
  14402. case 'h': // 2 strings to match.
  14403. if (memcmp(NameR.data()+8, "i.", 2))
  14404. break;
  14405. switch (NameR[10]) {
  14406. default: break;
  14407. case 'l': // 1 string to match.
  14408. if (NameR[11] != 'l')
  14409. break;
  14410. return Intrinsic::nvvm_mulhi_ll; // "vvm.mulhi.ll"
  14411. case 'u': // 1 string to match.
  14412. if (NameR[11] != 'i')
  14413. break;
  14414. return Intrinsic::nvvm_mulhi_ui; // "vvm.mulhi.ui"
  14415. }
  14416. break;
  14417. }
  14418. break;
  14419. }
  14420. break;
  14421. case 'r': // 8 strings to match.
  14422. if (memcmp(NameR.data()+5, "cp.r", 4))
  14423. break;
  14424. switch (NameR[9]) {
  14425. default: break;
  14426. case 'm': // 2 strings to match.
  14427. if (NameR[10] != '.')
  14428. break;
  14429. switch (NameR[11]) {
  14430. default: break;
  14431. case 'd': // 1 string to match.
  14432. return Intrinsic::nvvm_rcp_rm_d; // "vvm.rcp.rm.d"
  14433. case 'f': // 1 string to match.
  14434. return Intrinsic::nvvm_rcp_rm_f; // "vvm.rcp.rm.f"
  14435. }
  14436. break;
  14437. case 'n': // 2 strings to match.
  14438. if (NameR[10] != '.')
  14439. break;
  14440. switch (NameR[11]) {
  14441. default: break;
  14442. case 'd': // 1 string to match.
  14443. return Intrinsic::nvvm_rcp_rn_d; // "vvm.rcp.rn.d"
  14444. case 'f': // 1 string to match.
  14445. return Intrinsic::nvvm_rcp_rn_f; // "vvm.rcp.rn.f"
  14446. }
  14447. break;
  14448. case 'p': // 2 strings to match.
  14449. if (NameR[10] != '.')
  14450. break;
  14451. switch (NameR[11]) {
  14452. default: break;
  14453. case 'd': // 1 string to match.
  14454. return Intrinsic::nvvm_rcp_rp_d; // "vvm.rcp.rp.d"
  14455. case 'f': // 1 string to match.
  14456. return Intrinsic::nvvm_rcp_rp_f; // "vvm.rcp.rp.f"
  14457. }
  14458. break;
  14459. case 'z': // 2 strings to match.
  14460. if (NameR[10] != '.')
  14461. break;
  14462. switch (NameR[11]) {
  14463. default: break;
  14464. case 'd': // 1 string to match.
  14465. return Intrinsic::nvvm_rcp_rz_d; // "vvm.rcp.rz.d"
  14466. case 'f': // 1 string to match.
  14467. return Intrinsic::nvvm_rcp_rz_f; // "vvm.rcp.rz.f"
  14468. }
  14469. break;
  14470. }
  14471. break;
  14472. case 'u': // 8 strings to match.
  14473. if (memcmp(NameR.data()+5, "ll2", 3))
  14474. break;
  14475. switch (NameR[8]) {
  14476. default: break;
  14477. case 'd': // 4 strings to match.
  14478. if (memcmp(NameR.data()+9, ".r", 2))
  14479. break;
  14480. switch (NameR[11]) {
  14481. default: break;
  14482. case 'm': // 1 string to match.
  14483. return Intrinsic::nvvm_ull2d_rm; // "vvm.ull2d.rm"
  14484. case 'n': // 1 string to match.
  14485. return Intrinsic::nvvm_ull2d_rn; // "vvm.ull2d.rn"
  14486. case 'p': // 1 string to match.
  14487. return Intrinsic::nvvm_ull2d_rp; // "vvm.ull2d.rp"
  14488. case 'z': // 1 string to match.
  14489. return Intrinsic::nvvm_ull2d_rz; // "vvm.ull2d.rz"
  14490. }
  14491. break;
  14492. case 'f': // 4 strings to match.
  14493. if (memcmp(NameR.data()+9, ".r", 2))
  14494. break;
  14495. switch (NameR[11]) {
  14496. default: break;
  14497. case 'm': // 1 string to match.
  14498. return Intrinsic::nvvm_ull2f_rm; // "vvm.ull2f.rm"
  14499. case 'n': // 1 string to match.
  14500. return Intrinsic::nvvm_ull2f_rn; // "vvm.ull2f.rn"
  14501. case 'p': // 1 string to match.
  14502. return Intrinsic::nvvm_ull2f_rp; // "vvm.ull2f.rp"
  14503. case 'z': // 1 string to match.
  14504. return Intrinsic::nvvm_ull2f_rz; // "vvm.ull2f.rz"
  14505. }
  14506. break;
  14507. }
  14508. break;
  14509. }
  14510. break;
  14511. case 13: // 10 strings to match.
  14512. if (memcmp(NameR.data()+0, "vvm.", 4))
  14513. break;
  14514. switch (NameR[4]) {
  14515. default: break;
  14516. case 'm': // 2 strings to match.
  14517. switch (NameR[5]) {
  14518. default: break;
  14519. case 'e': // 1 string to match.
  14520. if (memcmp(NameR.data()+6, "mbar.gl", 7))
  14521. break;
  14522. return Intrinsic::nvvm_membar_gl; // "vvm.membar.gl"
  14523. case 'u': // 1 string to match.
  14524. if (memcmp(NameR.data()+6, "lhi.ull", 7))
  14525. break;
  14526. return Intrinsic::nvvm_mulhi_ull; // "vvm.mulhi.ull"
  14527. }
  14528. break;
  14529. case 's': // 8 strings to match.
  14530. if (memcmp(NameR.data()+5, "qrt.r", 5))
  14531. break;
  14532. switch (NameR[10]) {
  14533. default: break;
  14534. case 'm': // 2 strings to match.
  14535. if (NameR[11] != '.')
  14536. break;
  14537. switch (NameR[12]) {
  14538. default: break;
  14539. case 'd': // 1 string to match.
  14540. return Intrinsic::nvvm_sqrt_rm_d; // "vvm.sqrt.rm.d"
  14541. case 'f': // 1 string to match.
  14542. return Intrinsic::nvvm_sqrt_rm_f; // "vvm.sqrt.rm.f"
  14543. }
  14544. break;
  14545. case 'n': // 2 strings to match.
  14546. if (NameR[11] != '.')
  14547. break;
  14548. switch (NameR[12]) {
  14549. default: break;
  14550. case 'd': // 1 string to match.
  14551. return Intrinsic::nvvm_sqrt_rn_d; // "vvm.sqrt.rn.d"
  14552. case 'f': // 1 string to match.
  14553. return Intrinsic::nvvm_sqrt_rn_f; // "vvm.sqrt.rn.f"
  14554. }
  14555. break;
  14556. case 'p': // 2 strings to match.
  14557. if (NameR[11] != '.')
  14558. break;
  14559. switch (NameR[12]) {
  14560. default: break;
  14561. case 'd': // 1 string to match.
  14562. return Intrinsic::nvvm_sqrt_rp_d; // "vvm.sqrt.rp.d"
  14563. case 'f': // 1 string to match.
  14564. return Intrinsic::nvvm_sqrt_rp_f; // "vvm.sqrt.rp.f"
  14565. }
  14566. break;
  14567. case 'z': // 2 strings to match.
  14568. if (NameR[11] != '.')
  14569. break;
  14570. switch (NameR[12]) {
  14571. default: break;
  14572. case 'd': // 1 string to match.
  14573. return Intrinsic::nvvm_sqrt_rz_d; // "vvm.sqrt.rz.d"
  14574. case 'f': // 1 string to match.
  14575. return Intrinsic::nvvm_sqrt_rz_f; // "vvm.sqrt.rz.f"
  14576. }
  14577. break;
  14578. }
  14579. break;
  14580. }
  14581. break;
  14582. case 14: // 18 strings to match.
  14583. if (memcmp(NameR.data()+0, "vvm.", 4))
  14584. break;
  14585. switch (NameR[4]) {
  14586. default: break;
  14587. case 'c': // 1 string to match.
  14588. if (memcmp(NameR.data()+5, "eil.ftz.f", 9))
  14589. break;
  14590. return Intrinsic::nvvm_ceil_ftz_f; // "vvm.ceil.ftz.f"
  14591. case 'd': // 4 strings to match.
  14592. if (memcmp(NameR.data()+5, "2f.r", 4))
  14593. break;
  14594. switch (NameR[9]) {
  14595. default: break;
  14596. case 'm': // 1 string to match.
  14597. if (memcmp(NameR.data()+10, ".ftz", 4))
  14598. break;
  14599. return Intrinsic::nvvm_d2f_rm_ftz; // "vvm.d2f.rm.ftz"
  14600. case 'n': // 1 string to match.
  14601. if (memcmp(NameR.data()+10, ".ftz", 4))
  14602. break;
  14603. return Intrinsic::nvvm_d2f_rn_ftz; // "vvm.d2f.rn.ftz"
  14604. case 'p': // 1 string to match.
  14605. if (memcmp(NameR.data()+10, ".ftz", 4))
  14606. break;
  14607. return Intrinsic::nvvm_d2f_rp_ftz; // "vvm.d2f.rp.ftz"
  14608. case 'z': // 1 string to match.
  14609. if (memcmp(NameR.data()+10, ".ftz", 4))
  14610. break;
  14611. return Intrinsic::nvvm_d2f_rz_ftz; // "vvm.d2f.rz.ftz"
  14612. }
  14613. break;
  14614. case 'f': // 8 strings to match.
  14615. switch (NameR[5]) {
  14616. default: break;
  14617. case '2': // 5 strings to match.
  14618. switch (NameR[6]) {
  14619. default: break;
  14620. case 'h': // 1 string to match.
  14621. if (memcmp(NameR.data()+7, ".rn.ftz", 7))
  14622. break;
  14623. return Intrinsic::nvvm_f2h_rn_ftz; // "vvm.f2h.rn.ftz"
  14624. case 'i': // 4 strings to match.
  14625. if (memcmp(NameR.data()+7, ".r", 2))
  14626. break;
  14627. switch (NameR[9]) {
  14628. default: break;
  14629. case 'm': // 1 string to match.
  14630. if (memcmp(NameR.data()+10, ".ftz", 4))
  14631. break;
  14632. return Intrinsic::nvvm_f2i_rm_ftz; // "vvm.f2i.rm.ftz"
  14633. case 'n': // 1 string to match.
  14634. if (memcmp(NameR.data()+10, ".ftz", 4))
  14635. break;
  14636. return Intrinsic::nvvm_f2i_rn_ftz; // "vvm.f2i.rn.ftz"
  14637. case 'p': // 1 string to match.
  14638. if (memcmp(NameR.data()+10, ".ftz", 4))
  14639. break;
  14640. return Intrinsic::nvvm_f2i_rp_ftz; // "vvm.f2i.rp.ftz"
  14641. case 'z': // 1 string to match.
  14642. if (memcmp(NameR.data()+10, ".ftz", 4))
  14643. break;
  14644. return Intrinsic::nvvm_f2i_rz_ftz; // "vvm.f2i.rz.ftz"
  14645. }
  14646. break;
  14647. }
  14648. break;
  14649. case 'a': // 1 string to match.
  14650. if (memcmp(NameR.data()+6, "bs.ftz.f", 8))
  14651. break;
  14652. return Intrinsic::nvvm_fabs_ftz_f; // "vvm.fabs.ftz.f"
  14653. case 'm': // 2 strings to match.
  14654. switch (NameR[6]) {
  14655. default: break;
  14656. case 'a': // 1 string to match.
  14657. if (memcmp(NameR.data()+7, "x.ftz.f", 7))
  14658. break;
  14659. return Intrinsic::nvvm_fmax_ftz_f; // "vvm.fmax.ftz.f"
  14660. case 'i': // 1 string to match.
  14661. if (memcmp(NameR.data()+7, "n.ftz.f", 7))
  14662. break;
  14663. return Intrinsic::nvvm_fmin_ftz_f; // "vvm.fmin.ftz.f"
  14664. }
  14665. break;
  14666. }
  14667. break;
  14668. case 'm': // 3 strings to match.
  14669. switch (NameR[5]) {
  14670. default: break;
  14671. case 'e': // 2 strings to match.
  14672. if (memcmp(NameR.data()+6, "mbar.", 5))
  14673. break;
  14674. switch (NameR[11]) {
  14675. default: break;
  14676. case 'c': // 1 string to match.
  14677. if (memcmp(NameR.data()+12, "ta", 2))
  14678. break;
  14679. return Intrinsic::nvvm_membar_cta; // "vvm.membar.cta"
  14680. case 's': // 1 string to match.
  14681. if (memcmp(NameR.data()+12, "ys", 2))
  14682. break;
  14683. return Intrinsic::nvvm_membar_sys; // "vvm.membar.sys"
  14684. }
  14685. break;
  14686. case 'o': // 1 string to match.
  14687. if (memcmp(NameR.data()+6, "ve.float", 8))
  14688. break;
  14689. return Intrinsic::nvvm_move_float; // "vvm.move.float"
  14690. }
  14691. break;
  14692. case 's': // 2 strings to match.
  14693. if (memcmp(NameR.data()+5, "aturate.", 8))
  14694. break;
  14695. switch (NameR[13]) {
  14696. default: break;
  14697. case 'd': // 1 string to match.
  14698. return Intrinsic::nvvm_saturate_d; // "vvm.saturate.d"
  14699. case 'f': // 1 string to match.
  14700. return Intrinsic::nvvm_saturate_f; // "vvm.saturate.f"
  14701. }
  14702. break;
  14703. }
  14704. break;
  14705. case 15: // 15 strings to match.
  14706. if (memcmp(NameR.data()+0, "vvm.", 4))
  14707. break;
  14708. switch (NameR[4]) {
  14709. default: break;
  14710. case 'b': // 3 strings to match.
  14711. switch (NameR[5]) {
  14712. default: break;
  14713. case 'a': // 1 string to match.
  14714. if (memcmp(NameR.data()+6, "rrier0.or", 9))
  14715. break;
  14716. return Intrinsic::nvvm_barrier0_or; // "vvm.barrier0.or"
  14717. case 'i': // 2 strings to match.
  14718. if (memcmp(NameR.data()+6, "tcast.", 6))
  14719. break;
  14720. switch (NameR[12]) {
  14721. default: break;
  14722. case 'f': // 1 string to match.
  14723. if (memcmp(NameR.data()+13, "2i", 2))
  14724. break;
  14725. return Intrinsic::nvvm_bitcast_f2i; // "vvm.bitcast.f2i"
  14726. case 'i': // 1 string to match.
  14727. if (memcmp(NameR.data()+13, "2f", 2))
  14728. break;
  14729. return Intrinsic::nvvm_bitcast_i2f; // "vvm.bitcast.i2f"
  14730. }
  14731. break;
  14732. }
  14733. break;
  14734. case 'f': // 9 strings to match.
  14735. switch (NameR[5]) {
  14736. default: break;
  14737. case '2': // 8 strings to match.
  14738. switch (NameR[6]) {
  14739. default: break;
  14740. case 'l': // 4 strings to match.
  14741. if (memcmp(NameR.data()+7, "l.r", 3))
  14742. break;
  14743. switch (NameR[10]) {
  14744. default: break;
  14745. case 'm': // 1 string to match.
  14746. if (memcmp(NameR.data()+11, ".ftz", 4))
  14747. break;
  14748. return Intrinsic::nvvm_f2ll_rm_ftz; // "vvm.f2ll.rm.ftz"
  14749. case 'n': // 1 string to match.
  14750. if (memcmp(NameR.data()+11, ".ftz", 4))
  14751. break;
  14752. return Intrinsic::nvvm_f2ll_rn_ftz; // "vvm.f2ll.rn.ftz"
  14753. case 'p': // 1 string to match.
  14754. if (memcmp(NameR.data()+11, ".ftz", 4))
  14755. break;
  14756. return Intrinsic::nvvm_f2ll_rp_ftz; // "vvm.f2ll.rp.ftz"
  14757. case 'z': // 1 string to match.
  14758. if (memcmp(NameR.data()+11, ".ftz", 4))
  14759. break;
  14760. return Intrinsic::nvvm_f2ll_rz_ftz; // "vvm.f2ll.rz.ftz"
  14761. }
  14762. break;
  14763. case 'u': // 4 strings to match.
  14764. if (memcmp(NameR.data()+7, "i.r", 3))
  14765. break;
  14766. switch (NameR[10]) {
  14767. default: break;
  14768. case 'm': // 1 string to match.
  14769. if (memcmp(NameR.data()+11, ".ftz", 4))
  14770. break;
  14771. return Intrinsic::nvvm_f2ui_rm_ftz; // "vvm.f2ui.rm.ftz"
  14772. case 'n': // 1 string to match.
  14773. if (memcmp(NameR.data()+11, ".ftz", 4))
  14774. break;
  14775. return Intrinsic::nvvm_f2ui_rn_ftz; // "vvm.f2ui.rn.ftz"
  14776. case 'p': // 1 string to match.
  14777. if (memcmp(NameR.data()+11, ".ftz", 4))
  14778. break;
  14779. return Intrinsic::nvvm_f2ui_rp_ftz; // "vvm.f2ui.rp.ftz"
  14780. case 'z': // 1 string to match.
  14781. if (memcmp(NameR.data()+11, ".ftz", 4))
  14782. break;
  14783. return Intrinsic::nvvm_f2ui_rz_ftz; // "vvm.f2ui.rz.ftz"
  14784. }
  14785. break;
  14786. }
  14787. break;
  14788. case 'l': // 1 string to match.
  14789. if (memcmp(NameR.data()+6, "oor.ftz.f", 9))
  14790. break;
  14791. return Intrinsic::nvvm_floor_ftz_f; // "vvm.floor.ftz.f"
  14792. }
  14793. break;
  14794. case 'm': // 1 string to match.
  14795. if (memcmp(NameR.data()+5, "ove.double", 10))
  14796. break;
  14797. return Intrinsic::nvvm_move_double; // "vvm.move.double"
  14798. case 'r': // 1 string to match.
  14799. if (memcmp(NameR.data()+5, "ound.ftz.f", 10))
  14800. break;
  14801. return Intrinsic::nvvm_round_ftz_f; // "vvm.round.ftz.f"
  14802. case 't': // 1 string to match.
  14803. if (memcmp(NameR.data()+5, "runc.ftz.f", 10))
  14804. break;
  14805. return Intrinsic::nvvm_trunc_ftz_f; // "vvm.trunc.ftz.f"
  14806. }
  14807. break;
  14808. case 16: // 34 strings to match.
  14809. if (memcmp(NameR.data()+0, "vvm.", 4))
  14810. break;
  14811. switch (NameR[4]) {
  14812. default: break;
  14813. case 'a': // 4 strings to match.
  14814. if (memcmp(NameR.data()+5, "dd.r", 4))
  14815. break;
  14816. switch (NameR[9]) {
  14817. default: break;
  14818. case 'm': // 1 string to match.
  14819. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14820. break;
  14821. return Intrinsic::nvvm_add_rm_ftz_f; // "vvm.add.rm.ftz.f"
  14822. case 'n': // 1 string to match.
  14823. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14824. break;
  14825. return Intrinsic::nvvm_add_rn_ftz_f; // "vvm.add.rn.ftz.f"
  14826. case 'p': // 1 string to match.
  14827. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14828. break;
  14829. return Intrinsic::nvvm_add_rp_ftz_f; // "vvm.add.rp.ftz.f"
  14830. case 'z': // 1 string to match.
  14831. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14832. break;
  14833. return Intrinsic::nvvm_add_rz_ftz_f; // "vvm.add.rz.ftz.f"
  14834. }
  14835. break;
  14836. case 'b': // 3 strings to match.
  14837. switch (NameR[5]) {
  14838. default: break;
  14839. case 'a': // 1 string to match.
  14840. if (memcmp(NameR.data()+6, "rrier0.and", 10))
  14841. break;
  14842. return Intrinsic::nvvm_barrier0_and; // "vvm.barrier0.and"
  14843. case 'i': // 2 strings to match.
  14844. if (memcmp(NameR.data()+6, "tcast.", 6))
  14845. break;
  14846. switch (NameR[12]) {
  14847. default: break;
  14848. case 'd': // 1 string to match.
  14849. if (memcmp(NameR.data()+13, "2ll", 3))
  14850. break;
  14851. return Intrinsic::nvvm_bitcast_d2ll; // "vvm.bitcast.d2ll"
  14852. case 'l': // 1 string to match.
  14853. if (memcmp(NameR.data()+13, "l2d", 3))
  14854. break;
  14855. return Intrinsic::nvvm_bitcast_ll2d; // "vvm.bitcast.ll2d"
  14856. }
  14857. break;
  14858. }
  14859. break;
  14860. case 'c': // 1 string to match.
  14861. if (memcmp(NameR.data()+5, "os.approx.f", 11))
  14862. break;
  14863. return Intrinsic::nvvm_cos_approx_f; // "vvm.cos.approx.f"
  14864. case 'd': // 5 strings to match.
  14865. if (memcmp(NameR.data()+5, "iv.", 3))
  14866. break;
  14867. switch (NameR[8]) {
  14868. default: break;
  14869. case 'a': // 1 string to match.
  14870. if (memcmp(NameR.data()+9, "pprox.f", 7))
  14871. break;
  14872. return Intrinsic::nvvm_div_approx_f; // "vvm.div.approx.f"
  14873. case 'r': // 4 strings to match.
  14874. switch (NameR[9]) {
  14875. default: break;
  14876. case 'm': // 1 string to match.
  14877. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14878. break;
  14879. return Intrinsic::nvvm_div_rm_ftz_f; // "vvm.div.rm.ftz.f"
  14880. case 'n': // 1 string to match.
  14881. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14882. break;
  14883. return Intrinsic::nvvm_div_rn_ftz_f; // "vvm.div.rn.ftz.f"
  14884. case 'p': // 1 string to match.
  14885. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14886. break;
  14887. return Intrinsic::nvvm_div_rp_ftz_f; // "vvm.div.rp.ftz.f"
  14888. case 'z': // 1 string to match.
  14889. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14890. break;
  14891. return Intrinsic::nvvm_div_rz_ftz_f; // "vvm.div.rz.ftz.f"
  14892. }
  14893. break;
  14894. }
  14895. break;
  14896. case 'e': // 2 strings to match.
  14897. if (memcmp(NameR.data()+5, "x2.approx.", 10))
  14898. break;
  14899. switch (NameR[15]) {
  14900. default: break;
  14901. case 'd': // 1 string to match.
  14902. return Intrinsic::nvvm_ex2_approx_d; // "vvm.ex2.approx.d"
  14903. case 'f': // 1 string to match.
  14904. return Intrinsic::nvvm_ex2_approx_f; // "vvm.ex2.approx.f"
  14905. }
  14906. break;
  14907. case 'f': // 8 strings to match.
  14908. switch (NameR[5]) {
  14909. default: break;
  14910. case '2': // 4 strings to match.
  14911. if (memcmp(NameR.data()+6, "ull.r", 5))
  14912. break;
  14913. switch (NameR[11]) {
  14914. default: break;
  14915. case 'm': // 1 string to match.
  14916. if (memcmp(NameR.data()+12, ".ftz", 4))
  14917. break;
  14918. return Intrinsic::nvvm_f2ull_rm_ftz; // "vvm.f2ull.rm.ftz"
  14919. case 'n': // 1 string to match.
  14920. if (memcmp(NameR.data()+12, ".ftz", 4))
  14921. break;
  14922. return Intrinsic::nvvm_f2ull_rn_ftz; // "vvm.f2ull.rn.ftz"
  14923. case 'p': // 1 string to match.
  14924. if (memcmp(NameR.data()+12, ".ftz", 4))
  14925. break;
  14926. return Intrinsic::nvvm_f2ull_rp_ftz; // "vvm.f2ull.rp.ftz"
  14927. case 'z': // 1 string to match.
  14928. if (memcmp(NameR.data()+12, ".ftz", 4))
  14929. break;
  14930. return Intrinsic::nvvm_f2ull_rz_ftz; // "vvm.f2ull.rz.ftz"
  14931. }
  14932. break;
  14933. case 'm': // 4 strings to match.
  14934. if (memcmp(NameR.data()+6, "a.r", 3))
  14935. break;
  14936. switch (NameR[9]) {
  14937. default: break;
  14938. case 'm': // 1 string to match.
  14939. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14940. break;
  14941. return Intrinsic::nvvm_fma_rm_ftz_f; // "vvm.fma.rm.ftz.f"
  14942. case 'n': // 1 string to match.
  14943. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14944. break;
  14945. return Intrinsic::nvvm_fma_rn_ftz_f; // "vvm.fma.rn.ftz.f"
  14946. case 'p': // 1 string to match.
  14947. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14948. break;
  14949. return Intrinsic::nvvm_fma_rp_ftz_f; // "vvm.fma.rp.ftz.f"
  14950. case 'z': // 1 string to match.
  14951. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14952. break;
  14953. return Intrinsic::nvvm_fma_rz_ftz_f; // "vvm.fma.rz.ftz.f"
  14954. }
  14955. break;
  14956. }
  14957. break;
  14958. case 'l': // 2 strings to match.
  14959. if (memcmp(NameR.data()+5, "g2.approx.", 10))
  14960. break;
  14961. switch (NameR[15]) {
  14962. default: break;
  14963. case 'd': // 1 string to match.
  14964. return Intrinsic::nvvm_lg2_approx_d; // "vvm.lg2.approx.d"
  14965. case 'f': // 1 string to match.
  14966. return Intrinsic::nvvm_lg2_approx_f; // "vvm.lg2.approx.f"
  14967. }
  14968. break;
  14969. case 'm': // 4 strings to match.
  14970. if (memcmp(NameR.data()+5, "ul.r", 4))
  14971. break;
  14972. switch (NameR[9]) {
  14973. default: break;
  14974. case 'm': // 1 string to match.
  14975. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14976. break;
  14977. return Intrinsic::nvvm_mul_rm_ftz_f; // "vvm.mul.rm.ftz.f"
  14978. case 'n': // 1 string to match.
  14979. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14980. break;
  14981. return Intrinsic::nvvm_mul_rn_ftz_f; // "vvm.mul.rn.ftz.f"
  14982. case 'p': // 1 string to match.
  14983. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14984. break;
  14985. return Intrinsic::nvvm_mul_rp_ftz_f; // "vvm.mul.rp.ftz.f"
  14986. case 'z': // 1 string to match.
  14987. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14988. break;
  14989. return Intrinsic::nvvm_mul_rz_ftz_f; // "vvm.mul.rz.ftz.f"
  14990. }
  14991. break;
  14992. case 'r': // 4 strings to match.
  14993. if (memcmp(NameR.data()+5, "cp.r", 4))
  14994. break;
  14995. switch (NameR[9]) {
  14996. default: break;
  14997. case 'm': // 1 string to match.
  14998. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  14999. break;
  15000. return Intrinsic::nvvm_rcp_rm_ftz_f; // "vvm.rcp.rm.ftz.f"
  15001. case 'n': // 1 string to match.
  15002. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15003. break;
  15004. return Intrinsic::nvvm_rcp_rn_ftz_f; // "vvm.rcp.rn.ftz.f"
  15005. case 'p': // 1 string to match.
  15006. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15007. break;
  15008. return Intrinsic::nvvm_rcp_rp_ftz_f; // "vvm.rcp.rp.ftz.f"
  15009. case 'z': // 1 string to match.
  15010. if (memcmp(NameR.data()+10, ".ftz.f", 6))
  15011. break;
  15012. return Intrinsic::nvvm_rcp_rz_ftz_f; // "vvm.rcp.rz.ftz.f"
  15013. }
  15014. break;
  15015. case 's': // 1 string to match.
  15016. if (memcmp(NameR.data()+5, "in.approx.f", 11))
  15017. break;
  15018. return Intrinsic::nvvm_sin_approx_f; // "vvm.sin.approx.f"
  15019. }
  15020. break;
  15021. case 17: // 6 strings to match.
  15022. if (memcmp(NameR.data()+0, "vvm.", 4))
  15023. break;
  15024. switch (NameR[4]) {
  15025. default: break;
  15026. case 'b': // 1 string to match.
  15027. if (memcmp(NameR.data()+5, "arrier0.popc", 12))
  15028. break;
  15029. return Intrinsic::nvvm_barrier0_popc; // "vvm.barrier0.popc"
  15030. case 's': // 5 strings to match.
  15031. if (memcmp(NameR.data()+5, "qrt.", 4))
  15032. break;
  15033. switch (NameR[9]) {
  15034. default: break;
  15035. case 'a': // 1 string to match.
  15036. if (memcmp(NameR.data()+10, "pprox.f", 7))
  15037. break;
  15038. return Intrinsic::nvvm_sqrt_approx_f; // "vvm.sqrt.approx.f"
  15039. case 'r': // 4 strings to match.
  15040. switch (NameR[10]) {
  15041. default: break;
  15042. case 'm': // 1 string to match.
  15043. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15044. break;
  15045. return Intrinsic::nvvm_sqrt_rm_ftz_f; // "vvm.sqrt.rm.ftz.f"
  15046. case 'n': // 1 string to match.
  15047. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15048. break;
  15049. return Intrinsic::nvvm_sqrt_rn_ftz_f; // "vvm.sqrt.rn.ftz.f"
  15050. case 'p': // 1 string to match.
  15051. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15052. break;
  15053. return Intrinsic::nvvm_sqrt_rp_ftz_f; // "vvm.sqrt.rp.ftz.f"
  15054. case 'z': // 1 string to match.
  15055. if (memcmp(NameR.data()+11, ".ftz.f", 6))
  15056. break;
  15057. return Intrinsic::nvvm_sqrt_rz_ftz_f; // "vvm.sqrt.rz.ftz.f"
  15058. }
  15059. break;
  15060. }
  15061. break;
  15062. }
  15063. break;
  15064. case 18: // 3 strings to match.
  15065. if (memcmp(NameR.data()+0, "vvm.", 4))
  15066. break;
  15067. switch (NameR[4]) {
  15068. default: break;
  15069. case 'r': // 2 strings to match.
  15070. if (memcmp(NameR.data()+5, "sqrt.approx.", 12))
  15071. break;
  15072. switch (NameR[17]) {
  15073. default: break;
  15074. case 'd': // 1 string to match.
  15075. return Intrinsic::nvvm_rsqrt_approx_d; // "vvm.rsqrt.approx.d"
  15076. case 'f': // 1 string to match.
  15077. return Intrinsic::nvvm_rsqrt_approx_f; // "vvm.rsqrt.approx.f"
  15078. }
  15079. break;
  15080. case 's': // 1 string to match.
  15081. if (memcmp(NameR.data()+5, "aturate.ftz.f", 13))
  15082. break;
  15083. return Intrinsic::nvvm_saturate_ftz_f; // "vvm.saturate.ftz.f"
  15084. }
  15085. break;
  15086. case 20: // 6 strings to match.
  15087. if (memcmp(NameR.data()+0, "vvm.", 4))
  15088. break;
  15089. switch (NameR[4]) {
  15090. default: break;
  15091. case 'c': // 1 string to match.
  15092. if (memcmp(NameR.data()+5, "os.approx.ftz.f", 15))
  15093. break;
  15094. return Intrinsic::nvvm_cos_approx_ftz_f; // "vvm.cos.approx.ftz.f"
  15095. case 'd': // 1 string to match.
  15096. if (memcmp(NameR.data()+5, "iv.approx.ftz.f", 15))
  15097. break;
  15098. return Intrinsic::nvvm_div_approx_ftz_f; // "vvm.div.approx.ftz.f"
  15099. case 'e': // 1 string to match.
  15100. if (memcmp(NameR.data()+5, "x2.approx.ftz.f", 15))
  15101. break;
  15102. return Intrinsic::nvvm_ex2_approx_ftz_f; // "vvm.ex2.approx.ftz.f"
  15103. case 'l': // 1 string to match.
  15104. if (memcmp(NameR.data()+5, "g2.approx.ftz.f", 15))
  15105. break;
  15106. return Intrinsic::nvvm_lg2_approx_ftz_f; // "vvm.lg2.approx.ftz.f"
  15107. case 'r': // 1 string to match.
  15108. if (memcmp(NameR.data()+5, "cp.approx.ftz.d", 15))
  15109. break;
  15110. return Intrinsic::nvvm_rcp_approx_ftz_d; // "vvm.rcp.approx.ftz.d"
  15111. case 's': // 1 string to match.
  15112. if (memcmp(NameR.data()+5, "in.approx.ftz.f", 15))
  15113. break;
  15114. return Intrinsic::nvvm_sin_approx_ftz_f; // "vvm.sin.approx.ftz.f"
  15115. }
  15116. break;
  15117. case 21: // 1 string to match.
  15118. if (memcmp(NameR.data()+0, "vvm.sqrt.approx.ftz.f", 21))
  15119. break;
  15120. return Intrinsic::nvvm_sqrt_approx_ftz_f; // "vvm.sqrt.approx.ftz.f"
  15121. case 22: // 1 string to match.
  15122. if (memcmp(NameR.data()+0, "vvm.rsqrt.approx.ftz.f", 22))
  15123. break;
  15124. return Intrinsic::nvvm_rsqrt_approx_ftz_f; // "vvm.rsqrt.approx.ftz.f"
  15125. case 23: // 3 strings to match.
  15126. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.tid.", 22))
  15127. break;
  15128. switch (NameR[22]) {
  15129. default: break;
  15130. case 'x': // 1 string to match.
  15131. return Intrinsic::nvvm_read_ptx_sreg_tid_x; // "vvm.read.ptx.sreg.tid.x"
  15132. case 'y': // 1 string to match.
  15133. return Intrinsic::nvvm_read_ptx_sreg_tid_y; // "vvm.read.ptx.sreg.tid.y"
  15134. case 'z': // 1 string to match.
  15135. return Intrinsic::nvvm_read_ptx_sreg_tid_z; // "vvm.read.ptx.sreg.tid.z"
  15136. }
  15137. break;
  15138. case 24: // 3 strings to match.
  15139. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.ntid.", 23))
  15140. break;
  15141. switch (NameR[23]) {
  15142. default: break;
  15143. case 'x': // 1 string to match.
  15144. return Intrinsic::nvvm_read_ptx_sreg_ntid_x; // "vvm.read.ptx.sreg.ntid.x"
  15145. case 'y': // 1 string to match.
  15146. return Intrinsic::nvvm_read_ptx_sreg_ntid_y; // "vvm.read.ptx.sreg.ntid.y"
  15147. case 'z': // 1 string to match.
  15148. return Intrinsic::nvvm_read_ptx_sreg_ntid_z; // "vvm.read.ptx.sreg.ntid.z"
  15149. }
  15150. break;
  15151. case 25: // 3 strings to match.
  15152. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.ctaid.", 24))
  15153. break;
  15154. switch (NameR[24]) {
  15155. default: break;
  15156. case 'x': // 1 string to match.
  15157. return Intrinsic::nvvm_read_ptx_sreg_ctaid_x; // "vvm.read.ptx.sreg.ctaid.x"
  15158. case 'y': // 1 string to match.
  15159. return Intrinsic::nvvm_read_ptx_sreg_ctaid_y; // "vvm.read.ptx.sreg.ctaid.y"
  15160. case 'z': // 1 string to match.
  15161. return Intrinsic::nvvm_read_ptx_sreg_ctaid_z; // "vvm.read.ptx.sreg.ctaid.z"
  15162. }
  15163. break;
  15164. case 26: // 4 strings to match.
  15165. if (memcmp(NameR.data()+0, "vvm.read.ptx.sreg.", 18))
  15166. break;
  15167. switch (NameR[18]) {
  15168. default: break;
  15169. case 'n': // 3 strings to match.
  15170. if (memcmp(NameR.data()+19, "ctaid.", 6))
  15171. break;
  15172. switch (NameR[25]) {
  15173. default: break;
  15174. case 'x': // 1 string to match.
  15175. return Intrinsic::nvvm_read_ptx_sreg_nctaid_x; // "vvm.read.ptx.sreg.nctaid.x"
  15176. case 'y': // 1 string to match.
  15177. return Intrinsic::nvvm_read_ptx_sreg_nctaid_y; // "vvm.read.ptx.sreg.nctaid.y"
  15178. case 'z': // 1 string to match.
  15179. return Intrinsic::nvvm_read_ptx_sreg_nctaid_z; // "vvm.read.ptx.sreg.nctaid.z"
  15180. }
  15181. break;
  15182. case 'w': // 1 string to match.
  15183. if (memcmp(NameR.data()+19, "arpsize", 7))
  15184. break;
  15185. return Intrinsic::nvvm_read_ptx_sreg_warpsize; // "vvm.read.ptx.sreg.warpsize"
  15186. }
  15187. break;
  15188. }
  15189. break; // end of 'n' case.
  15190. case 'o':
  15191. if (NameR.startswith("bjectsize.")) return Intrinsic::objectsize;
  15192. break; // end of 'o' case.
  15193. case 'p':
  15194. if (NameR.startswith("ow.")) return Intrinsic::pow;
  15195. if (NameR.startswith("owi.")) return Intrinsic::powi;
  15196. if (NameR.startswith("tr.annotation.")) return Intrinsic::ptr_annotation;
  15197. switch (NameR.size()) {
  15198. default: break;
  15199. case 7: // 8 strings to match.
  15200. switch (NameR[0]) {
  15201. default: break;
  15202. case 'c': // 1 string to match.
  15203. if (memcmp(NameR.data()+1, "marker", 6))
  15204. break;
  15205. return Intrinsic::pcmarker; // "cmarker"
  15206. case 'p': // 6 strings to match.
  15207. if (memcmp(NameR.data()+1, "c.", 2))
  15208. break;
  15209. switch (NameR[3]) {
  15210. default: break;
  15211. case 'd': // 5 strings to match.
  15212. if (memcmp(NameR.data()+4, "cb", 2))
  15213. break;
  15214. switch (NameR[6]) {
  15215. default: break;
  15216. case 'a': // 1 string to match.
  15217. return Intrinsic::ppc_dcba; // "pc.dcba"
  15218. case 'f': // 1 string to match.
  15219. return Intrinsic::ppc_dcbf; // "pc.dcbf"
  15220. case 'i': // 1 string to match.
  15221. return Intrinsic::ppc_dcbi; // "pc.dcbi"
  15222. case 't': // 1 string to match.
  15223. return Intrinsic::ppc_dcbt; // "pc.dcbt"
  15224. case 'z': // 1 string to match.
  15225. return Intrinsic::ppc_dcbz; // "pc.dcbz"
  15226. }
  15227. break;
  15228. case 's': // 1 string to match.
  15229. if (memcmp(NameR.data()+4, "ync", 3))
  15230. break;
  15231. return Intrinsic::ppc_sync; // "pc.sync"
  15232. }
  15233. break;
  15234. case 'r': // 1 string to match.
  15235. if (memcmp(NameR.data()+1, "efetch", 6))
  15236. break;
  15237. return Intrinsic::prefetch; // "refetch"
  15238. }
  15239. break;
  15240. case 8: // 2 strings to match.
  15241. if (memcmp(NameR.data()+0, "pc.dcb", 6))
  15242. break;
  15243. switch (NameR[6]) {
  15244. default: break;
  15245. case 's': // 1 string to match.
  15246. if (NameR[7] != 't')
  15247. break;
  15248. return Intrinsic::ppc_dcbst; // "pc.dcbst"
  15249. case 'z': // 1 string to match.
  15250. if (NameR[7] != 'l')
  15251. break;
  15252. return Intrinsic::ppc_dcbzl; // "pc.dcbzl"
  15253. }
  15254. break;
  15255. case 9: // 1 string to match.
  15256. if (memcmp(NameR.data()+0, "pc.dcbtst", 9))
  15257. break;
  15258. return Intrinsic::ppc_dcbtst; // "pc.dcbtst"
  15259. case 11: // 5 strings to match.
  15260. if (memcmp(NameR.data()+0, "tx.", 3))
  15261. break;
  15262. switch (NameR[3]) {
  15263. default: break;
  15264. case 'b': // 1 string to match.
  15265. if (memcmp(NameR.data()+4, "ar.sync", 7))
  15266. break;
  15267. return Intrinsic::ptx_bar_sync; // "tx.bar.sync"
  15268. case 'r': // 4 strings to match.
  15269. if (memcmp(NameR.data()+4, "ead.pm", 6))
  15270. break;
  15271. switch (NameR[10]) {
  15272. default: break;
  15273. case '0': // 1 string to match.
  15274. return Intrinsic::ptx_read_pm0; // "tx.read.pm0"
  15275. case '1': // 1 string to match.
  15276. return Intrinsic::ptx_read_pm1; // "tx.read.pm1"
  15277. case '2': // 1 string to match.
  15278. return Intrinsic::ptx_read_pm2; // "tx.read.pm2"
  15279. case '3': // 1 string to match.
  15280. return Intrinsic::ptx_read_pm3; // "tx.read.pm3"
  15281. }
  15282. break;
  15283. }
  15284. break;
  15285. case 12: // 1 string to match.
  15286. if (memcmp(NameR.data()+0, "tx.read.smid", 12))
  15287. break;
  15288. return Intrinsic::ptx_read_smid; // "tx.read.smid"
  15289. case 13: // 6 strings to match.
  15290. if (memcmp(NameR.data()+0, "tx.read.", 8))
  15291. break;
  15292. switch (NameR[8]) {
  15293. default: break;
  15294. case 'c': // 1 string to match.
  15295. if (memcmp(NameR.data()+9, "lock", 4))
  15296. break;
  15297. return Intrinsic::ptx_read_clock; // "tx.read.clock"
  15298. case 'n': // 1 string to match.
  15299. if (memcmp(NameR.data()+9, "smid", 4))
  15300. break;
  15301. return Intrinsic::ptx_read_nsmid; // "tx.read.nsmid"
  15302. case 't': // 4 strings to match.
  15303. if (memcmp(NameR.data()+9, "id.", 3))
  15304. break;
  15305. switch (NameR[12]) {
  15306. default: break;
  15307. case 'w': // 1 string to match.
  15308. return Intrinsic::ptx_read_tid_w; // "tx.read.tid.w"
  15309. case 'x': // 1 string to match.
  15310. return Intrinsic::ptx_read_tid_x; // "tx.read.tid.x"
  15311. case 'y': // 1 string to match.
  15312. return Intrinsic::ptx_read_tid_y; // "tx.read.tid.y"
  15313. case 'z': // 1 string to match.
  15314. return Intrinsic::ptx_read_tid_z; // "tx.read.tid.z"
  15315. }
  15316. break;
  15317. }
  15318. break;
  15319. case 14: // 12 strings to match.
  15320. switch (NameR[0]) {
  15321. default: break;
  15322. case 'p': // 5 strings to match.
  15323. if (memcmp(NameR.data()+1, "c.altivec.", 10))
  15324. break;
  15325. switch (NameR[11]) {
  15326. default: break;
  15327. case 'd': // 2 strings to match.
  15328. if (NameR[12] != 's')
  15329. break;
  15330. switch (NameR[13]) {
  15331. default: break;
  15332. case 's': // 1 string to match.
  15333. return Intrinsic::ppc_altivec_dss; // "pc.altivec.dss"
  15334. case 't': // 1 string to match.
  15335. return Intrinsic::ppc_altivec_dst; // "pc.altivec.dst"
  15336. }
  15337. break;
  15338. case 'l': // 1 string to match.
  15339. if (memcmp(NameR.data()+12, "vx", 2))
  15340. break;
  15341. return Intrinsic::ppc_altivec_lvx; // "pc.altivec.lvx"
  15342. case 'v': // 2 strings to match.
  15343. if (NameR[12] != 's')
  15344. break;
  15345. switch (NameR[13]) {
  15346. default: break;
  15347. case 'l': // 1 string to match.
  15348. return Intrinsic::ppc_altivec_vsl; // "pc.altivec.vsl"
  15349. case 'r': // 1 string to match.
  15350. return Intrinsic::ppc_altivec_vsr; // "pc.altivec.vsr"
  15351. }
  15352. break;
  15353. }
  15354. break;
  15355. case 't': // 7 strings to match.
  15356. if (memcmp(NameR.data()+1, "x.read.", 7))
  15357. break;
  15358. switch (NameR[8]) {
  15359. default: break;
  15360. case 'g': // 1 string to match.
  15361. if (memcmp(NameR.data()+9, "ridid", 5))
  15362. break;
  15363. return Intrinsic::ptx_read_gridid; // "tx.read.gridid"
  15364. case 'l': // 1 string to match.
  15365. if (memcmp(NameR.data()+9, "aneid", 5))
  15366. break;
  15367. return Intrinsic::ptx_read_laneid; // "tx.read.laneid"
  15368. case 'n': // 4 strings to match.
  15369. if (memcmp(NameR.data()+9, "tid.", 4))
  15370. break;
  15371. switch (NameR[13]) {
  15372. default: break;
  15373. case 'w': // 1 string to match.
  15374. return Intrinsic::ptx_read_ntid_w; // "tx.read.ntid.w"
  15375. case 'x': // 1 string to match.
  15376. return Intrinsic::ptx_read_ntid_x; // "tx.read.ntid.x"
  15377. case 'y': // 1 string to match.
  15378. return Intrinsic::ptx_read_ntid_y; // "tx.read.ntid.y"
  15379. case 'z': // 1 string to match.
  15380. return Intrinsic::ptx_read_ntid_z; // "tx.read.ntid.z"
  15381. }
  15382. break;
  15383. case 'w': // 1 string to match.
  15384. if (memcmp(NameR.data()+9, "arpid", 5))
  15385. break;
  15386. return Intrinsic::ptx_read_warpid; // "tx.read.warpid"
  15387. }
  15388. break;
  15389. }
  15390. break;
  15391. case 15: // 23 strings to match.
  15392. switch (NameR[0]) {
  15393. default: break;
  15394. case 'p': // 17 strings to match.
  15395. if (memcmp(NameR.data()+1, "c.altivec.", 10))
  15396. break;
  15397. switch (NameR[11]) {
  15398. default: break;
  15399. case 'd': // 1 string to match.
  15400. if (memcmp(NameR.data()+12, "stt", 3))
  15401. break;
  15402. return Intrinsic::ppc_altivec_dstt; // "pc.altivec.dstt"
  15403. case 'l': // 3 strings to match.
  15404. if (NameR[12] != 'v')
  15405. break;
  15406. switch (NameR[13]) {
  15407. default: break;
  15408. case 's': // 2 strings to match.
  15409. switch (NameR[14]) {
  15410. default: break;
  15411. case 'l': // 1 string to match.
  15412. return Intrinsic::ppc_altivec_lvsl; // "pc.altivec.lvsl"
  15413. case 'r': // 1 string to match.
  15414. return Intrinsic::ppc_altivec_lvsr; // "pc.altivec.lvsr"
  15415. }
  15416. break;
  15417. case 'x': // 1 string to match.
  15418. if (NameR[14] != 'l')
  15419. break;
  15420. return Intrinsic::ppc_altivec_lvxl; // "pc.altivec.lvxl"
  15421. }
  15422. break;
  15423. case 's': // 1 string to match.
  15424. if (memcmp(NameR.data()+12, "tvx", 3))
  15425. break;
  15426. return Intrinsic::ppc_altivec_stvx; // "pc.altivec.stvx"
  15427. case 'v': // 12 strings to match.
  15428. switch (NameR[12]) {
  15429. default: break;
  15430. case 'r': // 3 strings to match.
  15431. if (NameR[13] != 'l')
  15432. break;
  15433. switch (NameR[14]) {
  15434. default: break;
  15435. case 'b': // 1 string to match.
  15436. return Intrinsic::ppc_altivec_vrlb; // "pc.altivec.vrlb"
  15437. case 'h': // 1 string to match.
  15438. return Intrinsic::ppc_altivec_vrlh; // "pc.altivec.vrlh"
  15439. case 'w': // 1 string to match.
  15440. return Intrinsic::ppc_altivec_vrlw; // "pc.altivec.vrlw"
  15441. }
  15442. break;
  15443. case 's': // 9 strings to match.
  15444. switch (NameR[13]) {
  15445. default: break;
  15446. case 'e': // 1 string to match.
  15447. if (NameR[14] != 'l')
  15448. break;
  15449. return Intrinsic::ppc_altivec_vsel; // "pc.altivec.vsel"
  15450. case 'l': // 4 strings to match.
  15451. switch (NameR[14]) {
  15452. default: break;
  15453. case 'b': // 1 string to match.
  15454. return Intrinsic::ppc_altivec_vslb; // "pc.altivec.vslb"
  15455. case 'h': // 1 string to match.
  15456. return Intrinsic::ppc_altivec_vslh; // "pc.altivec.vslh"
  15457. case 'o': // 1 string to match.
  15458. return Intrinsic::ppc_altivec_vslo; // "pc.altivec.vslo"
  15459. case 'w': // 1 string to match.
  15460. return Intrinsic::ppc_altivec_vslw; // "pc.altivec.vslw"
  15461. }
  15462. break;
  15463. case 'r': // 4 strings to match.
  15464. switch (NameR[14]) {
  15465. default: break;
  15466. case 'b': // 1 string to match.
  15467. return Intrinsic::ppc_altivec_vsrb; // "pc.altivec.vsrb"
  15468. case 'h': // 1 string to match.
  15469. return Intrinsic::ppc_altivec_vsrh; // "pc.altivec.vsrh"
  15470. case 'o': // 1 string to match.
  15471. return Intrinsic::ppc_altivec_vsro; // "pc.altivec.vsro"
  15472. case 'w': // 1 string to match.
  15473. return Intrinsic::ppc_altivec_vsrw; // "pc.altivec.vsrw"
  15474. }
  15475. break;
  15476. }
  15477. break;
  15478. }
  15479. break;
  15480. }
  15481. break;
  15482. case 't': // 6 strings to match.
  15483. if (memcmp(NameR.data()+1, "x.read.", 7))
  15484. break;
  15485. switch (NameR[8]) {
  15486. default: break;
  15487. case 'c': // 5 strings to match.
  15488. switch (NameR[9]) {
  15489. default: break;
  15490. case 'l': // 1 string to match.
  15491. if (memcmp(NameR.data()+10, "ock64", 5))
  15492. break;
  15493. return Intrinsic::ptx_read_clock64; // "tx.read.clock64"
  15494. case 't': // 4 strings to match.
  15495. if (memcmp(NameR.data()+10, "aid.", 4))
  15496. break;
  15497. switch (NameR[14]) {
  15498. default: break;
  15499. case 'w': // 1 string to match.
  15500. return Intrinsic::ptx_read_ctaid_w; // "tx.read.ctaid.w"
  15501. case 'x': // 1 string to match.
  15502. return Intrinsic::ptx_read_ctaid_x; // "tx.read.ctaid.x"
  15503. case 'y': // 1 string to match.
  15504. return Intrinsic::ptx_read_ctaid_y; // "tx.read.ctaid.y"
  15505. case 'z': // 1 string to match.
  15506. return Intrinsic::ptx_read_ctaid_z; // "tx.read.ctaid.z"
  15507. }
  15508. break;
  15509. }
  15510. break;
  15511. case 'n': // 1 string to match.
  15512. if (memcmp(NameR.data()+9, "warpid", 6))
  15513. break;
  15514. return Intrinsic::ptx_read_nwarpid; // "tx.read.nwarpid"
  15515. }
  15516. break;
  15517. }
  15518. break;
  15519. case 16: // 21 strings to match.
  15520. switch (NameR[0]) {
  15521. default: break;
  15522. case 'p': // 17 strings to match.
  15523. if (memcmp(NameR.data()+1, "c.altivec.", 10))
  15524. break;
  15525. switch (NameR[11]) {
  15526. default: break;
  15527. case 'd': // 1 string to match.
  15528. if (memcmp(NameR.data()+12, "stst", 4))
  15529. break;
  15530. return Intrinsic::ppc_altivec_dstst; // "pc.altivec.dstst"
  15531. case 'l': // 3 strings to match.
  15532. if (memcmp(NameR.data()+12, "ve", 2))
  15533. break;
  15534. switch (NameR[14]) {
  15535. default: break;
  15536. case 'b': // 1 string to match.
  15537. if (NameR[15] != 'x')
  15538. break;
  15539. return Intrinsic::ppc_altivec_lvebx; // "pc.altivec.lvebx"
  15540. case 'h': // 1 string to match.
  15541. if (NameR[15] != 'x')
  15542. break;
  15543. return Intrinsic::ppc_altivec_lvehx; // "pc.altivec.lvehx"
  15544. case 'w': // 1 string to match.
  15545. if (NameR[15] != 'x')
  15546. break;
  15547. return Intrinsic::ppc_altivec_lvewx; // "pc.altivec.lvewx"
  15548. }
  15549. break;
  15550. case 's': // 1 string to match.
  15551. if (memcmp(NameR.data()+12, "tvxl", 4))
  15552. break;
  15553. return Intrinsic::ppc_altivec_stvxl; // "pc.altivec.stvxl"
  15554. case 'v': // 12 strings to match.
  15555. switch (NameR[12]) {
  15556. default: break;
  15557. case 'c': // 2 strings to match.
  15558. if (NameR[13] != 'f')
  15559. break;
  15560. switch (NameR[14]) {
  15561. default: break;
  15562. case 's': // 1 string to match.
  15563. if (NameR[15] != 'x')
  15564. break;
  15565. return Intrinsic::ppc_altivec_vcfsx; // "pc.altivec.vcfsx"
  15566. case 'u': // 1 string to match.
  15567. if (NameR[15] != 'x')
  15568. break;
  15569. return Intrinsic::ppc_altivec_vcfux; // "pc.altivec.vcfux"
  15570. }
  15571. break;
  15572. case 'p': // 2 strings to match.
  15573. switch (NameR[13]) {
  15574. default: break;
  15575. case 'e': // 1 string to match.
  15576. if (memcmp(NameR.data()+14, "rm", 2))
  15577. break;
  15578. return Intrinsic::ppc_altivec_vperm; // "pc.altivec.vperm"
  15579. case 'k': // 1 string to match.
  15580. if (memcmp(NameR.data()+14, "px", 2))
  15581. break;
  15582. return Intrinsic::ppc_altivec_vpkpx; // "pc.altivec.vpkpx"
  15583. }
  15584. break;
  15585. case 'r': // 5 strings to match.
  15586. switch (NameR[13]) {
  15587. default: break;
  15588. case 'e': // 1 string to match.
  15589. if (memcmp(NameR.data()+14, "fp", 2))
  15590. break;
  15591. return Intrinsic::ppc_altivec_vrefp; // "pc.altivec.vrefp"
  15592. case 'f': // 4 strings to match.
  15593. if (NameR[14] != 'i')
  15594. break;
  15595. switch (NameR[15]) {
  15596. default: break;
  15597. case 'm': // 1 string to match.
  15598. return Intrinsic::ppc_altivec_vrfim; // "pc.altivec.vrfim"
  15599. case 'n': // 1 string to match.
  15600. return Intrinsic::ppc_altivec_vrfin; // "pc.altivec.vrfin"
  15601. case 'p': // 1 string to match.
  15602. return Intrinsic::ppc_altivec_vrfip; // "pc.altivec.vrfip"
  15603. case 'z': // 1 string to match.
  15604. return Intrinsic::ppc_altivec_vrfiz; // "pc.altivec.vrfiz"
  15605. }
  15606. break;
  15607. }
  15608. break;
  15609. case 's': // 3 strings to match.
  15610. if (memcmp(NameR.data()+13, "ra", 2))
  15611. break;
  15612. switch (NameR[15]) {
  15613. default: break;
  15614. case 'b': // 1 string to match.
  15615. return Intrinsic::ppc_altivec_vsrab; // "pc.altivec.vsrab"
  15616. case 'h': // 1 string to match.
  15617. return Intrinsic::ppc_altivec_vsrah; // "pc.altivec.vsrah"
  15618. case 'w': // 1 string to match.
  15619. return Intrinsic::ppc_altivec_vsraw; // "pc.altivec.vsraw"
  15620. }
  15621. break;
  15622. }
  15623. break;
  15624. }
  15625. break;
  15626. case 't': // 4 strings to match.
  15627. if (memcmp(NameR.data()+1, "x.read.nctaid.", 14))
  15628. break;
  15629. switch (NameR[15]) {
  15630. default: break;
  15631. case 'w': // 1 string to match.
  15632. return Intrinsic::ptx_read_nctaid_w; // "tx.read.nctaid.w"
  15633. case 'x': // 1 string to match.
  15634. return Intrinsic::ptx_read_nctaid_x; // "tx.read.nctaid.x"
  15635. case 'y': // 1 string to match.
  15636. return Intrinsic::ptx_read_nctaid_y; // "tx.read.nctaid.y"
  15637. case 'z': // 1 string to match.
  15638. return Intrinsic::ptx_read_nctaid_z; // "tx.read.nctaid.z"
  15639. }
  15640. break;
  15641. }
  15642. break;
  15643. case 17: // 29 strings to match.
  15644. if (memcmp(NameR.data()+0, "pc.altivec.", 11))
  15645. break;
  15646. switch (NameR[11]) {
  15647. default: break;
  15648. case 'd': // 2 strings to match.
  15649. if (NameR[12] != 's')
  15650. break;
  15651. switch (NameR[13]) {
  15652. default: break;
  15653. case 's': // 1 string to match.
  15654. if (memcmp(NameR.data()+14, "all", 3))
  15655. break;
  15656. return Intrinsic::ppc_altivec_dssall; // "pc.altivec.dssall"
  15657. case 't': // 1 string to match.
  15658. if (memcmp(NameR.data()+14, "stt", 3))
  15659. break;
  15660. return Intrinsic::ppc_altivec_dststt; // "pc.altivec.dststt"
  15661. }
  15662. break;
  15663. case 'm': // 2 strings to match.
  15664. switch (NameR[12]) {
  15665. default: break;
  15666. case 'f': // 1 string to match.
  15667. if (memcmp(NameR.data()+13, "vscr", 4))
  15668. break;
  15669. return Intrinsic::ppc_altivec_mfvscr; // "pc.altivec.mfvscr"
  15670. case 't': // 1 string to match.
  15671. if (memcmp(NameR.data()+13, "vscr", 4))
  15672. break;
  15673. return Intrinsic::ppc_altivec_mtvscr; // "pc.altivec.mtvscr"
  15674. }
  15675. break;
  15676. case 's': // 3 strings to match.
  15677. if (memcmp(NameR.data()+12, "tve", 3))
  15678. break;
  15679. switch (NameR[15]) {
  15680. default: break;
  15681. case 'b': // 1 string to match.
  15682. if (NameR[16] != 'x')
  15683. break;
  15684. return Intrinsic::ppc_altivec_stvebx; // "pc.altivec.stvebx"
  15685. case 'h': // 1 string to match.
  15686. if (NameR[16] != 'x')
  15687. break;
  15688. return Intrinsic::ppc_altivec_stvehx; // "pc.altivec.stvehx"
  15689. case 'w': // 1 string to match.
  15690. if (NameR[16] != 'x')
  15691. break;
  15692. return Intrinsic::ppc_altivec_stvewx; // "pc.altivec.stvewx"
  15693. }
  15694. break;
  15695. case 'v': // 22 strings to match.
  15696. switch (NameR[12]) {
  15697. default: break;
  15698. case 'a': // 6 strings to match.
  15699. if (memcmp(NameR.data()+13, "vg", 2))
  15700. break;
  15701. switch (NameR[15]) {
  15702. default: break;
  15703. case 's': // 3 strings to match.
  15704. switch (NameR[16]) {
  15705. default: break;
  15706. case 'b': // 1 string to match.
  15707. return Intrinsic::ppc_altivec_vavgsb; // "pc.altivec.vavgsb"
  15708. case 'h': // 1 string to match.
  15709. return Intrinsic::ppc_altivec_vavgsh; // "pc.altivec.vavgsh"
  15710. case 'w': // 1 string to match.
  15711. return Intrinsic::ppc_altivec_vavgsw; // "pc.altivec.vavgsw"
  15712. }
  15713. break;
  15714. case 'u': // 3 strings to match.
  15715. switch (NameR[16]) {
  15716. default: break;
  15717. case 'b': // 1 string to match.
  15718. return Intrinsic::ppc_altivec_vavgub; // "pc.altivec.vavgub"
  15719. case 'h': // 1 string to match.
  15720. return Intrinsic::ppc_altivec_vavguh; // "pc.altivec.vavguh"
  15721. case 'w': // 1 string to match.
  15722. return Intrinsic::ppc_altivec_vavguw; // "pc.altivec.vavguw"
  15723. }
  15724. break;
  15725. }
  15726. break;
  15727. case 'c': // 2 strings to match.
  15728. if (NameR[13] != 't')
  15729. break;
  15730. switch (NameR[14]) {
  15731. default: break;
  15732. case 's': // 1 string to match.
  15733. if (memcmp(NameR.data()+15, "xs", 2))
  15734. break;
  15735. return Intrinsic::ppc_altivec_vctsxs; // "pc.altivec.vctsxs"
  15736. case 'u': // 1 string to match.
  15737. if (memcmp(NameR.data()+15, "xs", 2))
  15738. break;
  15739. return Intrinsic::ppc_altivec_vctuxs; // "pc.altivec.vctuxs"
  15740. }
  15741. break;
  15742. case 'm': // 14 strings to match.
  15743. switch (NameR[13]) {
  15744. default: break;
  15745. case 'a': // 7 strings to match.
  15746. if (NameR[14] != 'x')
  15747. break;
  15748. switch (NameR[15]) {
  15749. default: break;
  15750. case 'f': // 1 string to match.
  15751. if (NameR[16] != 'p')
  15752. break;
  15753. return Intrinsic::ppc_altivec_vmaxfp; // "pc.altivec.vmaxfp"
  15754. case 's': // 3 strings to match.
  15755. switch (NameR[16]) {
  15756. default: break;
  15757. case 'b': // 1 string to match.
  15758. return Intrinsic::ppc_altivec_vmaxsb; // "pc.altivec.vmaxsb"
  15759. case 'h': // 1 string to match.
  15760. return Intrinsic::ppc_altivec_vmaxsh; // "pc.altivec.vmaxsh"
  15761. case 'w': // 1 string to match.
  15762. return Intrinsic::ppc_altivec_vmaxsw; // "pc.altivec.vmaxsw"
  15763. }
  15764. break;
  15765. case 'u': // 3 strings to match.
  15766. switch (NameR[16]) {
  15767. default: break;
  15768. case 'b': // 1 string to match.
  15769. return Intrinsic::ppc_altivec_vmaxub; // "pc.altivec.vmaxub"
  15770. case 'h': // 1 string to match.
  15771. return Intrinsic::ppc_altivec_vmaxuh; // "pc.altivec.vmaxuh"
  15772. case 'w': // 1 string to match.
  15773. return Intrinsic::ppc_altivec_vmaxuw; // "pc.altivec.vmaxuw"
  15774. }
  15775. break;
  15776. }
  15777. break;
  15778. case 'i': // 7 strings to match.
  15779. if (NameR[14] != 'n')
  15780. break;
  15781. switch (NameR[15]) {
  15782. default: break;
  15783. case 'f': // 1 string to match.
  15784. if (NameR[16] != 'p')
  15785. break;
  15786. return Intrinsic::ppc_altivec_vminfp; // "pc.altivec.vminfp"
  15787. case 's': // 3 strings to match.
  15788. switch (NameR[16]) {
  15789. default: break;
  15790. case 'b': // 1 string to match.
  15791. return Intrinsic::ppc_altivec_vminsb; // "pc.altivec.vminsb"
  15792. case 'h': // 1 string to match.
  15793. return Intrinsic::ppc_altivec_vminsh; // "pc.altivec.vminsh"
  15794. case 'w': // 1 string to match.
  15795. return Intrinsic::ppc_altivec_vminsw; // "pc.altivec.vminsw"
  15796. }
  15797. break;
  15798. case 'u': // 3 strings to match.
  15799. switch (NameR[16]) {
  15800. default: break;
  15801. case 'b': // 1 string to match.
  15802. return Intrinsic::ppc_altivec_vminub; // "pc.altivec.vminub"
  15803. case 'h': // 1 string to match.
  15804. return Intrinsic::ppc_altivec_vminuh; // "pc.altivec.vminuh"
  15805. case 'w': // 1 string to match.
  15806. return Intrinsic::ppc_altivec_vminuw; // "pc.altivec.vminuw"
  15807. }
  15808. break;
  15809. }
  15810. break;
  15811. }
  15812. break;
  15813. }
  15814. break;
  15815. }
  15816. break;
  15817. case 18: // 38 strings to match.
  15818. if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
  15819. break;
  15820. switch (NameR[12]) {
  15821. default: break;
  15822. case 'a': // 7 strings to match.
  15823. if (memcmp(NameR.data()+13, "dd", 2))
  15824. break;
  15825. switch (NameR[15]) {
  15826. default: break;
  15827. case 'c': // 1 string to match.
  15828. if (memcmp(NameR.data()+16, "uw", 2))
  15829. break;
  15830. return Intrinsic::ppc_altivec_vaddcuw; // "pc.altivec.vaddcuw"
  15831. case 's': // 3 strings to match.
  15832. switch (NameR[16]) {
  15833. default: break;
  15834. case 'b': // 1 string to match.
  15835. if (NameR[17] != 's')
  15836. break;
  15837. return Intrinsic::ppc_altivec_vaddsbs; // "pc.altivec.vaddsbs"
  15838. case 'h': // 1 string to match.
  15839. if (NameR[17] != 's')
  15840. break;
  15841. return Intrinsic::ppc_altivec_vaddshs; // "pc.altivec.vaddshs"
  15842. case 'w': // 1 string to match.
  15843. if (NameR[17] != 's')
  15844. break;
  15845. return Intrinsic::ppc_altivec_vaddsws; // "pc.altivec.vaddsws"
  15846. }
  15847. break;
  15848. case 'u': // 3 strings to match.
  15849. switch (NameR[16]) {
  15850. default: break;
  15851. case 'b': // 1 string to match.
  15852. if (NameR[17] != 's')
  15853. break;
  15854. return Intrinsic::ppc_altivec_vaddubs; // "pc.altivec.vaddubs"
  15855. case 'h': // 1 string to match.
  15856. if (NameR[17] != 's')
  15857. break;
  15858. return Intrinsic::ppc_altivec_vadduhs; // "pc.altivec.vadduhs"
  15859. case 'w': // 1 string to match.
  15860. if (NameR[17] != 's')
  15861. break;
  15862. return Intrinsic::ppc_altivec_vadduws; // "pc.altivec.vadduws"
  15863. }
  15864. break;
  15865. }
  15866. break;
  15867. case 'c': // 1 string to match.
  15868. if (memcmp(NameR.data()+13, "mpbfp", 5))
  15869. break;
  15870. return Intrinsic::ppc_altivec_vcmpbfp; // "pc.altivec.vcmpbfp"
  15871. case 'l': // 1 string to match.
  15872. if (memcmp(NameR.data()+13, "ogefp", 5))
  15873. break;
  15874. return Intrinsic::ppc_altivec_vlogefp; // "pc.altivec.vlogefp"
  15875. case 'm': // 9 strings to match.
  15876. switch (NameR[13]) {
  15877. default: break;
  15878. case 'a': // 1 string to match.
  15879. if (memcmp(NameR.data()+14, "ddfp", 4))
  15880. break;
  15881. return Intrinsic::ppc_altivec_vmaddfp; // "pc.altivec.vmaddfp"
  15882. case 'u': // 8 strings to match.
  15883. if (NameR[14] != 'l')
  15884. break;
  15885. switch (NameR[15]) {
  15886. default: break;
  15887. case 'e': // 4 strings to match.
  15888. switch (NameR[16]) {
  15889. default: break;
  15890. case 's': // 2 strings to match.
  15891. switch (NameR[17]) {
  15892. default: break;
  15893. case 'b': // 1 string to match.
  15894. return Intrinsic::ppc_altivec_vmulesb; // "pc.altivec.vmulesb"
  15895. case 'h': // 1 string to match.
  15896. return Intrinsic::ppc_altivec_vmulesh; // "pc.altivec.vmulesh"
  15897. }
  15898. break;
  15899. case 'u': // 2 strings to match.
  15900. switch (NameR[17]) {
  15901. default: break;
  15902. case 'b': // 1 string to match.
  15903. return Intrinsic::ppc_altivec_vmuleub; // "pc.altivec.vmuleub"
  15904. case 'h': // 1 string to match.
  15905. return Intrinsic::ppc_altivec_vmuleuh; // "pc.altivec.vmuleuh"
  15906. }
  15907. break;
  15908. }
  15909. break;
  15910. case 'o': // 4 strings to match.
  15911. switch (NameR[16]) {
  15912. default: break;
  15913. case 's': // 2 strings to match.
  15914. switch (NameR[17]) {
  15915. default: break;
  15916. case 'b': // 1 string to match.
  15917. return Intrinsic::ppc_altivec_vmulosb; // "pc.altivec.vmulosb"
  15918. case 'h': // 1 string to match.
  15919. return Intrinsic::ppc_altivec_vmulosh; // "pc.altivec.vmulosh"
  15920. }
  15921. break;
  15922. case 'u': // 2 strings to match.
  15923. switch (NameR[17]) {
  15924. default: break;
  15925. case 'b': // 1 string to match.
  15926. return Intrinsic::ppc_altivec_vmuloub; // "pc.altivec.vmuloub"
  15927. case 'h': // 1 string to match.
  15928. return Intrinsic::ppc_altivec_vmulouh; // "pc.altivec.vmulouh"
  15929. }
  15930. break;
  15931. }
  15932. break;
  15933. }
  15934. break;
  15935. }
  15936. break;
  15937. case 'p': // 6 strings to match.
  15938. if (NameR[13] != 'k')
  15939. break;
  15940. switch (NameR[14]) {
  15941. default: break;
  15942. case 's': // 4 strings to match.
  15943. switch (NameR[15]) {
  15944. default: break;
  15945. case 'h': // 2 strings to match.
  15946. switch (NameR[16]) {
  15947. default: break;
  15948. case 's': // 1 string to match.
  15949. if (NameR[17] != 's')
  15950. break;
  15951. return Intrinsic::ppc_altivec_vpkshss; // "pc.altivec.vpkshss"
  15952. case 'u': // 1 string to match.
  15953. if (NameR[17] != 's')
  15954. break;
  15955. return Intrinsic::ppc_altivec_vpkshus; // "pc.altivec.vpkshus"
  15956. }
  15957. break;
  15958. case 'w': // 2 strings to match.
  15959. switch (NameR[16]) {
  15960. default: break;
  15961. case 's': // 1 string to match.
  15962. if (NameR[17] != 's')
  15963. break;
  15964. return Intrinsic::ppc_altivec_vpkswss; // "pc.altivec.vpkswss"
  15965. case 'u': // 1 string to match.
  15966. if (NameR[17] != 's')
  15967. break;
  15968. return Intrinsic::ppc_altivec_vpkswus; // "pc.altivec.vpkswus"
  15969. }
  15970. break;
  15971. }
  15972. break;
  15973. case 'u': // 2 strings to match.
  15974. switch (NameR[15]) {
  15975. default: break;
  15976. case 'h': // 1 string to match.
  15977. if (memcmp(NameR.data()+16, "us", 2))
  15978. break;
  15979. return Intrinsic::ppc_altivec_vpkuhus; // "pc.altivec.vpkuhus"
  15980. case 'w': // 1 string to match.
  15981. if (memcmp(NameR.data()+16, "us", 2))
  15982. break;
  15983. return Intrinsic::ppc_altivec_vpkuwus; // "pc.altivec.vpkuwus"
  15984. }
  15985. break;
  15986. }
  15987. break;
  15988. case 's': // 8 strings to match.
  15989. if (NameR[13] != 'u')
  15990. break;
  15991. switch (NameR[14]) {
  15992. default: break;
  15993. case 'b': // 7 strings to match.
  15994. switch (NameR[15]) {
  15995. default: break;
  15996. case 'c': // 1 string to match.
  15997. if (memcmp(NameR.data()+16, "uw", 2))
  15998. break;
  15999. return Intrinsic::ppc_altivec_vsubcuw; // "pc.altivec.vsubcuw"
  16000. case 's': // 3 strings to match.
  16001. switch (NameR[16]) {
  16002. default: break;
  16003. case 'b': // 1 string to match.
  16004. if (NameR[17] != 's')
  16005. break;
  16006. return Intrinsic::ppc_altivec_vsubsbs; // "pc.altivec.vsubsbs"
  16007. case 'h': // 1 string to match.
  16008. if (NameR[17] != 's')
  16009. break;
  16010. return Intrinsic::ppc_altivec_vsubshs; // "pc.altivec.vsubshs"
  16011. case 'w': // 1 string to match.
  16012. if (NameR[17] != 's')
  16013. break;
  16014. return Intrinsic::ppc_altivec_vsubsws; // "pc.altivec.vsubsws"
  16015. }
  16016. break;
  16017. case 'u': // 3 strings to match.
  16018. switch (NameR[16]) {
  16019. default: break;
  16020. case 'b': // 1 string to match.
  16021. if (NameR[17] != 's')
  16022. break;
  16023. return Intrinsic::ppc_altivec_vsububs; // "pc.altivec.vsububs"
  16024. case 'h': // 1 string to match.
  16025. if (NameR[17] != 's')
  16026. break;
  16027. return Intrinsic::ppc_altivec_vsubuhs; // "pc.altivec.vsubuhs"
  16028. case 'w': // 1 string to match.
  16029. if (NameR[17] != 's')
  16030. break;
  16031. return Intrinsic::ppc_altivec_vsubuws; // "pc.altivec.vsubuws"
  16032. }
  16033. break;
  16034. }
  16035. break;
  16036. case 'm': // 1 string to match.
  16037. if (memcmp(NameR.data()+15, "sws", 3))
  16038. break;
  16039. return Intrinsic::ppc_altivec_vsumsws; // "pc.altivec.vsumsws"
  16040. }
  16041. break;
  16042. case 'u': // 6 strings to match.
  16043. if (memcmp(NameR.data()+13, "pk", 2))
  16044. break;
  16045. switch (NameR[15]) {
  16046. default: break;
  16047. case 'h': // 3 strings to match.
  16048. switch (NameR[16]) {
  16049. default: break;
  16050. case 'p': // 1 string to match.
  16051. if (NameR[17] != 'x')
  16052. break;
  16053. return Intrinsic::ppc_altivec_vupkhpx; // "pc.altivec.vupkhpx"
  16054. case 's': // 2 strings to match.
  16055. switch (NameR[17]) {
  16056. default: break;
  16057. case 'b': // 1 string to match.
  16058. return Intrinsic::ppc_altivec_vupkhsb; // "pc.altivec.vupkhsb"
  16059. case 'h': // 1 string to match.
  16060. return Intrinsic::ppc_altivec_vupkhsh; // "pc.altivec.vupkhsh"
  16061. }
  16062. break;
  16063. }
  16064. break;
  16065. case 'l': // 3 strings to match.
  16066. switch (NameR[16]) {
  16067. default: break;
  16068. case 'p': // 1 string to match.
  16069. if (NameR[17] != 'x')
  16070. break;
  16071. return Intrinsic::ppc_altivec_vupklpx; // "pc.altivec.vupklpx"
  16072. case 's': // 2 strings to match.
  16073. switch (NameR[17]) {
  16074. default: break;
  16075. case 'b': // 1 string to match.
  16076. return Intrinsic::ppc_altivec_vupklsb; // "pc.altivec.vupklsb"
  16077. case 'h': // 1 string to match.
  16078. return Intrinsic::ppc_altivec_vupklsh; // "pc.altivec.vupklsh"
  16079. }
  16080. break;
  16081. }
  16082. break;
  16083. }
  16084. break;
  16085. }
  16086. break;
  16087. case 19: // 29 strings to match.
  16088. switch (NameR[0]) {
  16089. default: break;
  16090. case 'p': // 24 strings to match.
  16091. if (memcmp(NameR.data()+1, "c.altivec.v", 11))
  16092. break;
  16093. switch (NameR[12]) {
  16094. default: break;
  16095. case 'c': // 12 strings to match.
  16096. if (memcmp(NameR.data()+13, "mp", 2))
  16097. break;
  16098. switch (NameR[15]) {
  16099. default: break;
  16100. case 'e': // 4 strings to match.
  16101. if (NameR[16] != 'q')
  16102. break;
  16103. switch (NameR[17]) {
  16104. default: break;
  16105. case 'f': // 1 string to match.
  16106. if (NameR[18] != 'p')
  16107. break;
  16108. return Intrinsic::ppc_altivec_vcmpeqfp; // "pc.altivec.vcmpeqfp"
  16109. case 'u': // 3 strings to match.
  16110. switch (NameR[18]) {
  16111. default: break;
  16112. case 'b': // 1 string to match.
  16113. return Intrinsic::ppc_altivec_vcmpequb; // "pc.altivec.vcmpequb"
  16114. case 'h': // 1 string to match.
  16115. return Intrinsic::ppc_altivec_vcmpequh; // "pc.altivec.vcmpequh"
  16116. case 'w': // 1 string to match.
  16117. return Intrinsic::ppc_altivec_vcmpequw; // "pc.altivec.vcmpequw"
  16118. }
  16119. break;
  16120. }
  16121. break;
  16122. case 'g': // 8 strings to match.
  16123. switch (NameR[16]) {
  16124. default: break;
  16125. case 'e': // 1 string to match.
  16126. if (memcmp(NameR.data()+17, "fp", 2))
  16127. break;
  16128. return Intrinsic::ppc_altivec_vcmpgefp; // "pc.altivec.vcmpgefp"
  16129. case 't': // 7 strings to match.
  16130. switch (NameR[17]) {
  16131. default: break;
  16132. case 'f': // 1 string to match.
  16133. if (NameR[18] != 'p')
  16134. break;
  16135. return Intrinsic::ppc_altivec_vcmpgtfp; // "pc.altivec.vcmpgtfp"
  16136. case 's': // 3 strings to match.
  16137. switch (NameR[18]) {
  16138. default: break;
  16139. case 'b': // 1 string to match.
  16140. return Intrinsic::ppc_altivec_vcmpgtsb; // "pc.altivec.vcmpgtsb"
  16141. case 'h': // 1 string to match.
  16142. return Intrinsic::ppc_altivec_vcmpgtsh; // "pc.altivec.vcmpgtsh"
  16143. case 'w': // 1 string to match.
  16144. return Intrinsic::ppc_altivec_vcmpgtsw; // "pc.altivec.vcmpgtsw"
  16145. }
  16146. break;
  16147. case 'u': // 3 strings to match.
  16148. switch (NameR[18]) {
  16149. default: break;
  16150. case 'b': // 1 string to match.
  16151. return Intrinsic::ppc_altivec_vcmpgtub; // "pc.altivec.vcmpgtub"
  16152. case 'h': // 1 string to match.
  16153. return Intrinsic::ppc_altivec_vcmpgtuh; // "pc.altivec.vcmpgtuh"
  16154. case 'w': // 1 string to match.
  16155. return Intrinsic::ppc_altivec_vcmpgtuw; // "pc.altivec.vcmpgtuw"
  16156. }
  16157. break;
  16158. }
  16159. break;
  16160. }
  16161. break;
  16162. }
  16163. break;
  16164. case 'e': // 1 string to match.
  16165. if (memcmp(NameR.data()+13, "xptefp", 6))
  16166. break;
  16167. return Intrinsic::ppc_altivec_vexptefp; // "pc.altivec.vexptefp"
  16168. case 'm': // 6 strings to match.
  16169. if (memcmp(NameR.data()+13, "sum", 3))
  16170. break;
  16171. switch (NameR[16]) {
  16172. default: break;
  16173. case 'm': // 1 string to match.
  16174. if (memcmp(NameR.data()+17, "bm", 2))
  16175. break;
  16176. return Intrinsic::ppc_altivec_vmsummbm; // "pc.altivec.vmsummbm"
  16177. case 's': // 2 strings to match.
  16178. if (NameR[17] != 'h')
  16179. break;
  16180. switch (NameR[18]) {
  16181. default: break;
  16182. case 'm': // 1 string to match.
  16183. return Intrinsic::ppc_altivec_vmsumshm; // "pc.altivec.vmsumshm"
  16184. case 's': // 1 string to match.
  16185. return Intrinsic::ppc_altivec_vmsumshs; // "pc.altivec.vmsumshs"
  16186. }
  16187. break;
  16188. case 'u': // 3 strings to match.
  16189. switch (NameR[17]) {
  16190. default: break;
  16191. case 'b': // 1 string to match.
  16192. if (NameR[18] != 'm')
  16193. break;
  16194. return Intrinsic::ppc_altivec_vmsumubm; // "pc.altivec.vmsumubm"
  16195. case 'h': // 2 strings to match.
  16196. switch (NameR[18]) {
  16197. default: break;
  16198. case 'm': // 1 string to match.
  16199. return Intrinsic::ppc_altivec_vmsumuhm; // "pc.altivec.vmsumuhm"
  16200. case 's': // 1 string to match.
  16201. return Intrinsic::ppc_altivec_vmsumuhs; // "pc.altivec.vmsumuhs"
  16202. }
  16203. break;
  16204. }
  16205. break;
  16206. }
  16207. break;
  16208. case 'n': // 1 string to match.
  16209. if (memcmp(NameR.data()+13, "msubfp", 6))
  16210. break;
  16211. return Intrinsic::ppc_altivec_vnmsubfp; // "pc.altivec.vnmsubfp"
  16212. case 's': // 4 strings to match.
  16213. if (memcmp(NameR.data()+13, "um", 2))
  16214. break;
  16215. switch (NameR[15]) {
  16216. default: break;
  16217. case '2': // 1 string to match.
  16218. if (memcmp(NameR.data()+16, "sws", 3))
  16219. break;
  16220. return Intrinsic::ppc_altivec_vsum2sws; // "pc.altivec.vsum2sws"
  16221. case '4': // 3 strings to match.
  16222. switch (NameR[16]) {
  16223. default: break;
  16224. case 's': // 2 strings to match.
  16225. switch (NameR[17]) {
  16226. default: break;
  16227. case 'b': // 1 string to match.
  16228. if (NameR[18] != 's')
  16229. break;
  16230. return Intrinsic::ppc_altivec_vsum4sbs; // "pc.altivec.vsum4sbs"
  16231. case 'h': // 1 string to match.
  16232. if (NameR[18] != 's')
  16233. break;
  16234. return Intrinsic::ppc_altivec_vsum4shs; // "pc.altivec.vsum4shs"
  16235. }
  16236. break;
  16237. case 'u': // 1 string to match.
  16238. if (memcmp(NameR.data()+17, "bs", 2))
  16239. break;
  16240. return Intrinsic::ppc_altivec_vsum4ubs; // "pc.altivec.vsum4ubs"
  16241. }
  16242. break;
  16243. }
  16244. break;
  16245. }
  16246. break;
  16247. case 't': // 5 strings to match.
  16248. if (memcmp(NameR.data()+1, "x.read.lanemask.", 16))
  16249. break;
  16250. switch (NameR[17]) {
  16251. default: break;
  16252. case 'e': // 1 string to match.
  16253. if (NameR[18] != 'q')
  16254. break;
  16255. return Intrinsic::ptx_read_lanemask_eq; // "tx.read.lanemask.eq"
  16256. case 'g': // 2 strings to match.
  16257. switch (NameR[18]) {
  16258. default: break;
  16259. case 'e': // 1 string to match.
  16260. return Intrinsic::ptx_read_lanemask_ge; // "tx.read.lanemask.ge"
  16261. case 't': // 1 string to match.
  16262. return Intrinsic::ptx_read_lanemask_gt; // "tx.read.lanemask.gt"
  16263. }
  16264. break;
  16265. case 'l': // 2 strings to match.
  16266. switch (NameR[18]) {
  16267. default: break;
  16268. case 'e': // 1 string to match.
  16269. return Intrinsic::ptx_read_lanemask_le; // "tx.read.lanemask.le"
  16270. case 't': // 1 string to match.
  16271. return Intrinsic::ptx_read_lanemask_lt; // "tx.read.lanemask.lt"
  16272. }
  16273. break;
  16274. }
  16275. break;
  16276. }
  16277. break;
  16278. case 20: // 4 strings to match.
  16279. if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
  16280. break;
  16281. switch (NameR[12]) {
  16282. default: break;
  16283. case 'c': // 1 string to match.
  16284. if (memcmp(NameR.data()+13, "mpbfp.p", 7))
  16285. break;
  16286. return Intrinsic::ppc_altivec_vcmpbfp_p; // "pc.altivec.vcmpbfp.p"
  16287. case 'm': // 2 strings to match.
  16288. switch (NameR[13]) {
  16289. default: break;
  16290. case 'h': // 1 string to match.
  16291. if (memcmp(NameR.data()+14, "addshs", 6))
  16292. break;
  16293. return Intrinsic::ppc_altivec_vmhaddshs; // "pc.altivec.vmhaddshs"
  16294. case 'l': // 1 string to match.
  16295. if (memcmp(NameR.data()+14, "adduhm", 6))
  16296. break;
  16297. return Intrinsic::ppc_altivec_vmladduhm; // "pc.altivec.vmladduhm"
  16298. }
  16299. break;
  16300. case 'r': // 1 string to match.
  16301. if (memcmp(NameR.data()+13, "sqrtefp", 7))
  16302. break;
  16303. return Intrinsic::ppc_altivec_vrsqrtefp; // "pc.altivec.vrsqrtefp"
  16304. }
  16305. break;
  16306. case 21: // 13 strings to match.
  16307. if (memcmp(NameR.data()+0, "pc.altivec.v", 12))
  16308. break;
  16309. switch (NameR[12]) {
  16310. default: break;
  16311. case 'c': // 12 strings to match.
  16312. if (memcmp(NameR.data()+13, "mp", 2))
  16313. break;
  16314. switch (NameR[15]) {
  16315. default: break;
  16316. case 'e': // 4 strings to match.
  16317. if (NameR[16] != 'q')
  16318. break;
  16319. switch (NameR[17]) {
  16320. default: break;
  16321. case 'f': // 1 string to match.
  16322. if (memcmp(NameR.data()+18, "p.p", 3))
  16323. break;
  16324. return Intrinsic::ppc_altivec_vcmpeqfp_p; // "pc.altivec.vcmpeqfp.p"
  16325. case 'u': // 3 strings to match.
  16326. switch (NameR[18]) {
  16327. default: break;
  16328. case 'b': // 1 string to match.
  16329. if (memcmp(NameR.data()+19, ".p", 2))
  16330. break;
  16331. return Intrinsic::ppc_altivec_vcmpequb_p; // "pc.altivec.vcmpequb.p"
  16332. case 'h': // 1 string to match.
  16333. if (memcmp(NameR.data()+19, ".p", 2))
  16334. break;
  16335. return Intrinsic::ppc_altivec_vcmpequh_p; // "pc.altivec.vcmpequh.p"
  16336. case 'w': // 1 string to match.
  16337. if (memcmp(NameR.data()+19, ".p", 2))
  16338. break;
  16339. return Intrinsic::ppc_altivec_vcmpequw_p; // "pc.altivec.vcmpequw.p"
  16340. }
  16341. break;
  16342. }
  16343. break;
  16344. case 'g': // 8 strings to match.
  16345. switch (NameR[16]) {
  16346. default: break;
  16347. case 'e': // 1 string to match.
  16348. if (memcmp(NameR.data()+17, "fp.p", 4))
  16349. break;
  16350. return Intrinsic::ppc_altivec_vcmpgefp_p; // "pc.altivec.vcmpgefp.p"
  16351. case 't': // 7 strings to match.
  16352. switch (NameR[17]) {
  16353. default: break;
  16354. case 'f': // 1 string to match.
  16355. if (memcmp(NameR.data()+18, "p.p", 3))
  16356. break;
  16357. return Intrinsic::ppc_altivec_vcmpgtfp_p; // "pc.altivec.vcmpgtfp.p"
  16358. case 's': // 3 strings to match.
  16359. switch (NameR[18]) {
  16360. default: break;
  16361. case 'b': // 1 string to match.
  16362. if (memcmp(NameR.data()+19, ".p", 2))
  16363. break;
  16364. return Intrinsic::ppc_altivec_vcmpgtsb_p; // "pc.altivec.vcmpgtsb.p"
  16365. case 'h': // 1 string to match.
  16366. if (memcmp(NameR.data()+19, ".p", 2))
  16367. break;
  16368. return Intrinsic::ppc_altivec_vcmpgtsh_p; // "pc.altivec.vcmpgtsh.p"
  16369. case 'w': // 1 string to match.
  16370. if (memcmp(NameR.data()+19, ".p", 2))
  16371. break;
  16372. return Intrinsic::ppc_altivec_vcmpgtsw_p; // "pc.altivec.vcmpgtsw.p"
  16373. }
  16374. break;
  16375. case 'u': // 3 strings to match.
  16376. switch (NameR[18]) {
  16377. default: break;
  16378. case 'b': // 1 string to match.
  16379. if (memcmp(NameR.data()+19, ".p", 2))
  16380. break;
  16381. return Intrinsic::ppc_altivec_vcmpgtub_p; // "pc.altivec.vcmpgtub.p"
  16382. case 'h': // 1 string to match.
  16383. if (memcmp(NameR.data()+19, ".p", 2))
  16384. break;
  16385. return Intrinsic::ppc_altivec_vcmpgtuh_p; // "pc.altivec.vcmpgtuh.p"
  16386. case 'w': // 1 string to match.
  16387. if (memcmp(NameR.data()+19, ".p", 2))
  16388. break;
  16389. return Intrinsic::ppc_altivec_vcmpgtuw_p; // "pc.altivec.vcmpgtuw.p"
  16390. }
  16391. break;
  16392. }
  16393. break;
  16394. }
  16395. break;
  16396. }
  16397. break;
  16398. case 'm': // 1 string to match.
  16399. if (memcmp(NameR.data()+13, "hraddshs", 8))
  16400. break;
  16401. return Intrinsic::ppc_altivec_vmhraddshs; // "pc.altivec.vmhraddshs"
  16402. }
  16403. break;
  16404. }
  16405. break; // end of 'p' case.
  16406. case 'r':
  16407. if (NameR.startswith("int.")) return Intrinsic::rint;
  16408. switch (NameR.size()) {
  16409. default: break;
  16410. case 12: // 1 string to match.
  16411. if (memcmp(NameR.data()+0, "eturnaddress", 12))
  16412. break;
  16413. return Intrinsic::returnaddress; // "eturnaddress"
  16414. case 15: // 4 strings to match.
  16415. switch (NameR[0]) {
  16416. default: break;
  16417. case '6': // 3 strings to match.
  16418. if (memcmp(NameR.data()+1, "00.read.tgid.", 13))
  16419. break;
  16420. switch (NameR[14]) {
  16421. default: break;
  16422. case 'x': // 1 string to match.
  16423. return Intrinsic::r600_read_tgid_x; // "600.read.tgid.x"
  16424. case 'y': // 1 string to match.
  16425. return Intrinsic::r600_read_tgid_y; // "600.read.tgid.y"
  16426. case 'z': // 1 string to match.
  16427. return Intrinsic::r600_read_tgid_z; // "600.read.tgid.z"
  16428. }
  16429. break;
  16430. case 'e': // 1 string to match.
  16431. if (memcmp(NameR.data()+1, "adcyclecounter", 14))
  16432. break;
  16433. return Intrinsic::readcyclecounter; // "eadcyclecounter"
  16434. }
  16435. break;
  16436. case 16: // 3 strings to match.
  16437. if (memcmp(NameR.data()+0, "600.read.tidig.", 15))
  16438. break;
  16439. switch (NameR[15]) {
  16440. default: break;
  16441. case 'x': // 1 string to match.
  16442. return Intrinsic::r600_read_tidig_x; // "600.read.tidig.x"
  16443. case 'y': // 1 string to match.
  16444. return Intrinsic::r600_read_tidig_y; // "600.read.tidig.y"
  16445. case 'z': // 1 string to match.
  16446. return Intrinsic::r600_read_tidig_z; // "600.read.tidig.z"
  16447. }
  16448. break;
  16449. case 18: // 3 strings to match.
  16450. if (memcmp(NameR.data()+0, "600.read.ngroups.", 17))
  16451. break;
  16452. switch (NameR[17]) {
  16453. default: break;
  16454. case 'x': // 1 string to match.
  16455. return Intrinsic::r600_read_ngroups_x; // "600.read.ngroups.x"
  16456. case 'y': // 1 string to match.
  16457. return Intrinsic::r600_read_ngroups_y; // "600.read.ngroups.y"
  16458. case 'z': // 1 string to match.
  16459. return Intrinsic::r600_read_ngroups_z; // "600.read.ngroups.z"
  16460. }
  16461. break;
  16462. case 21: // 3 strings to match.
  16463. if (memcmp(NameR.data()+0, "600.read.local.size.", 20))
  16464. break;
  16465. switch (NameR[20]) {
  16466. default: break;
  16467. case 'x': // 1 string to match.
  16468. return Intrinsic::r600_read_local_size_x; // "600.read.local.size.x"
  16469. case 'y': // 1 string to match.
  16470. return Intrinsic::r600_read_local_size_y; // "600.read.local.size.y"
  16471. case 'z': // 1 string to match.
  16472. return Intrinsic::r600_read_local_size_z; // "600.read.local.size.z"
  16473. }
  16474. break;
  16475. case 22: // 3 strings to match.
  16476. if (memcmp(NameR.data()+0, "600.read.global.size.", 21))
  16477. break;
  16478. switch (NameR[21]) {
  16479. default: break;
  16480. case 'x': // 1 string to match.
  16481. return Intrinsic::r600_read_global_size_x; // "600.read.global.size.x"
  16482. case 'y': // 1 string to match.
  16483. return Intrinsic::r600_read_global_size_y; // "600.read.global.size.y"
  16484. case 'z': // 1 string to match.
  16485. return Intrinsic::r600_read_global_size_z; // "600.read.global.size.z"
  16486. }
  16487. break;
  16488. }
  16489. break; // end of 'r' case.
  16490. case 's':
  16491. if (NameR.startswith("add.with.overflow.")) return Intrinsic::sadd_with_overflow;
  16492. if (NameR.startswith("in.")) return Intrinsic::sin;
  16493. if (NameR.startswith("mul.with.overflow.")) return Intrinsic::smul_with_overflow;
  16494. if (NameR.startswith("qrt.")) return Intrinsic::sqrt;
  16495. if (NameR.startswith("sub.with.overflow.")) return Intrinsic::ssub_with_overflow;
  16496. switch (NameR.size()) {
  16497. default: break;
  16498. case 5: // 1 string to match.
  16499. if (memcmp(NameR.data()+0, "etjmp", 5))
  16500. break;
  16501. return Intrinsic::setjmp; // "etjmp"
  16502. case 8: // 2 strings to match.
  16503. switch (NameR[0]) {
  16504. default: break;
  16505. case 'i': // 1 string to match.
  16506. if (memcmp(NameR.data()+1, "gsetjmp", 7))
  16507. break;
  16508. return Intrinsic::sigsetjmp; // "igsetjmp"
  16509. case 't': // 1 string to match.
  16510. if (memcmp(NameR.data()+1, "acksave", 7))
  16511. break;
  16512. return Intrinsic::stacksave; // "tacksave"
  16513. }
  16514. break;
  16515. case 9: // 1 string to match.
  16516. if (memcmp(NameR.data()+0, "iglongjmp", 9))
  16517. break;
  16518. return Intrinsic::siglongjmp; // "iglongjmp"
  16519. case 11: // 1 string to match.
  16520. if (memcmp(NameR.data()+0, "tackrestore", 11))
  16521. break;
  16522. return Intrinsic::stackrestore; // "tackrestore"
  16523. case 13: // 1 string to match.
  16524. if (memcmp(NameR.data()+0, "tackprotector", 13))
  16525. break;
  16526. return Intrinsic::stackprotector; // "tackprotector"
  16527. }
  16528. break; // end of 's' case.
  16529. case 't':
  16530. if (NameR.startswith("runc.")) return Intrinsic::trunc;
  16531. switch (NameR.size()) {
  16532. default: break;
  16533. case 3: // 1 string to match.
  16534. if (memcmp(NameR.data()+0, "rap", 3))
  16535. break;
  16536. return Intrinsic::trap; // "rap"
  16537. }
  16538. break; // end of 't' case.
  16539. case 'u':
  16540. if (NameR.startswith("add.with.overflow.")) return Intrinsic::uadd_with_overflow;
  16541. if (NameR.startswith("mul.with.overflow.")) return Intrinsic::umul_with_overflow;
  16542. if (NameR.startswith("sub.with.overflow.")) return Intrinsic::usub_with_overflow;
  16543. break; // end of 'u' case.
  16544. case 'v':
  16545. switch (NameR.size()) {
  16546. default: break;
  16547. case 5: // 1 string to match.
  16548. if (memcmp(NameR.data()+0, "a_end", 5))
  16549. break;
  16550. return Intrinsic::vaend; // "a_end"
  16551. case 6: // 1 string to match.
  16552. if (memcmp(NameR.data()+0, "a_copy", 6))
  16553. break;
  16554. return Intrinsic::vacopy; // "a_copy"
  16555. case 7: // 1 string to match.
  16556. if (memcmp(NameR.data()+0, "a_start", 7))
  16557. break;
  16558. return Intrinsic::vastart; // "a_start"
  16559. case 13: // 1 string to match.
  16560. if (memcmp(NameR.data()+0, "ar.annotation", 13))
  16561. break;
  16562. return Intrinsic::var_annotation; // "ar.annotation"
  16563. }
  16564. break; // end of 'v' case.
  16565. case 'x':
  16566. if (NameR.startswith("core.chkct.")) return Intrinsic::xcore_chkct;
  16567. if (NameR.startswith("core.eeu.")) return Intrinsic::xcore_eeu;
  16568. if (NameR.startswith("core.endin.")) return Intrinsic::xcore_endin;
  16569. if (NameR.startswith("core.freer.")) return Intrinsic::xcore_freer;
  16570. if (NameR.startswith("core.getr.")) return Intrinsic::xcore_getr;
  16571. if (NameR.startswith("core.getst.")) return Intrinsic::xcore_getst;
  16572. if (NameR.startswith("core.getts.")) return Intrinsic::xcore_getts;
  16573. if (NameR.startswith("core.in.")) return Intrinsic::xcore_in;
  16574. if (NameR.startswith("core.inct.")) return Intrinsic::xcore_inct;
  16575. if (NameR.startswith("core.initcp.")) return Intrinsic::xcore_initcp;
  16576. if (NameR.startswith("core.initdp.")) return Intrinsic::xcore_initdp;
  16577. if (NameR.startswith("core.initlr.")) return Intrinsic::xcore_initlr;
  16578. if (NameR.startswith("core.initpc.")) return Intrinsic::xcore_initpc;
  16579. if (NameR.startswith("core.initsp.")) return Intrinsic::xcore_initsp;
  16580. if (NameR.startswith("core.inshr.")) return Intrinsic::xcore_inshr;
  16581. if (NameR.startswith("core.int.")) return Intrinsic::xcore_int;
  16582. if (NameR.startswith("core.mjoin.")) return Intrinsic::xcore_mjoin;
  16583. if (NameR.startswith("core.msync.")) return Intrinsic::xcore_msync;
  16584. if (NameR.startswith("core.out.")) return Intrinsic::xcore_out;
  16585. if (NameR.startswith("core.outct.")) return Intrinsic::xcore_outct;
  16586. if (NameR.startswith("core.outshr.")) return Intrinsic::xcore_outshr;
  16587. if (NameR.startswith("core.outt.")) return Intrinsic::xcore_outt;
  16588. if (NameR.startswith("core.peek.")) return Intrinsic::xcore_peek;
  16589. if (NameR.startswith("core.setc.")) return Intrinsic::xcore_setc;
  16590. if (NameR.startswith("core.setclk.")) return Intrinsic::xcore_setclk;
  16591. if (NameR.startswith("core.setd.")) return Intrinsic::xcore_setd;
  16592. if (NameR.startswith("core.setev.")) return Intrinsic::xcore_setev;
  16593. if (NameR.startswith("core.setpsc.")) return Intrinsic::xcore_setpsc;
  16594. if (NameR.startswith("core.setpt.")) return Intrinsic::xcore_setpt;
  16595. if (NameR.startswith("core.setrdy.")) return Intrinsic::xcore_setrdy;
  16596. if (NameR.startswith("core.settw.")) return Intrinsic::xcore_settw;
  16597. if (NameR.startswith("core.setv.")) return Intrinsic::xcore_setv;
  16598. if (NameR.startswith("core.syncr.")) return Intrinsic::xcore_syncr;
  16599. if (NameR.startswith("core.testct.")) return Intrinsic::xcore_testct;
  16600. if (NameR.startswith("core.testwct.")) return Intrinsic::xcore_testwct;
  16601. switch (NameR.size()) {
  16602. default: break;
  16603. case 6: // 1 string to match.
  16604. if (memcmp(NameR.data()+0, "86.int", 6))
  16605. break;
  16606. return Intrinsic::x86_int; // "86.int"
  16607. case 7: // 1 string to match.
  16608. if (memcmp(NameR.data()+0, "86.xend", 7))
  16609. break;
  16610. return Intrinsic::x86_xend; // "86.xend"
  16611. case 8: // 1 string to match.
  16612. if (memcmp(NameR.data()+0, "86.xtest", 8))
  16613. break;
  16614. return Intrinsic::x86_xtest; // "86.xtest"
  16615. case 9: // 6 strings to match.
  16616. switch (NameR[0]) {
  16617. default: break;
  16618. case '8': // 2 strings to match.
  16619. if (memcmp(NameR.data()+1, "6.x", 3))
  16620. break;
  16621. switch (NameR[4]) {
  16622. default: break;
  16623. case 'a': // 1 string to match.
  16624. if (memcmp(NameR.data()+5, "bort", 4))
  16625. break;
  16626. return Intrinsic::x86_xabort; // "86.xabort"
  16627. case 'b': // 1 string to match.
  16628. if (memcmp(NameR.data()+5, "egin", 4))
  16629. break;
  16630. return Intrinsic::x86_xbegin; // "86.xbegin"
  16631. }
  16632. break;
  16633. case 'c': // 4 strings to match.
  16634. if (memcmp(NameR.data()+1, "ore.", 4))
  16635. break;
  16636. switch (NameR[5]) {
  16637. default: break;
  16638. case 'c': // 2 strings to match.
  16639. switch (NameR[6]) {
  16640. default: break;
  16641. case 'l': // 1 string to match.
  16642. if (memcmp(NameR.data()+7, "re", 2))
  16643. break;
  16644. return Intrinsic::xcore_clre; // "core.clre"
  16645. case 'r': // 1 string to match.
  16646. if (memcmp(NameR.data()+7, "c8", 2))
  16647. break;
  16648. return Intrinsic::xcore_crc8; // "core.crc8"
  16649. }
  16650. break;
  16651. case 's': // 1 string to match.
  16652. if (memcmp(NameR.data()+6, "ext", 3))
  16653. break;
  16654. return Intrinsic::xcore_sext; // "core.sext"
  16655. case 'z': // 1 string to match.
  16656. if (memcmp(NameR.data()+6, "ext", 3))
  16657. break;
  16658. return Intrinsic::xcore_zext; // "core.zext"
  16659. }
  16660. break;
  16661. }
  16662. break;
  16663. case 10: // 10 strings to match.
  16664. switch (NameR[0]) {
  16665. default: break;
  16666. case '8': // 1 string to match.
  16667. if (memcmp(NameR.data()+1, "6.mmx.por", 9))
  16668. break;
  16669. return Intrinsic::x86_mmx_por; // "86.mmx.por"
  16670. case 'c': // 9 strings to match.
  16671. if (memcmp(NameR.data()+1, "ore.", 4))
  16672. break;
  16673. switch (NameR[5]) {
  16674. default: break;
  16675. case 'c': // 2 strings to match.
  16676. switch (NameR[6]) {
  16677. default: break;
  16678. case 'l': // 1 string to match.
  16679. if (memcmp(NameR.data()+7, "rsr", 3))
  16680. break;
  16681. return Intrinsic::xcore_clrsr; // "core.clrsr"
  16682. case 'r': // 1 string to match.
  16683. if (memcmp(NameR.data()+7, "c32", 3))
  16684. break;
  16685. return Intrinsic::xcore_crc32; // "core.crc32"
  16686. }
  16687. break;
  16688. case 'g': // 4 strings to match.
  16689. if (memcmp(NameR.data()+6, "et", 2))
  16690. break;
  16691. switch (NameR[8]) {
  16692. default: break;
  16693. case 'e': // 2 strings to match.
  16694. switch (NameR[9]) {
  16695. default: break;
  16696. case 'd': // 1 string to match.
  16697. return Intrinsic::xcore_geted; // "core.geted"
  16698. case 't': // 1 string to match.
  16699. return Intrinsic::xcore_getet; // "core.getet"
  16700. }
  16701. break;
  16702. case 'i': // 1 string to match.
  16703. if (NameR[9] != 'd')
  16704. break;
  16705. return Intrinsic::xcore_getid; // "core.getid"
  16706. case 'p': // 1 string to match.
  16707. if (NameR[9] != 's')
  16708. break;
  16709. return Intrinsic::xcore_getps; // "core.getps"
  16710. }
  16711. break;
  16712. case 's': // 3 strings to match.
  16713. switch (NameR[6]) {
  16714. default: break;
  16715. case 'e': // 2 strings to match.
  16716. if (NameR[7] != 't')
  16717. break;
  16718. switch (NameR[8]) {
  16719. default: break;
  16720. case 'p': // 1 string to match.
  16721. if (NameR[9] != 's')
  16722. break;
  16723. return Intrinsic::xcore_setps; // "core.setps"
  16724. case 's': // 1 string to match.
  16725. if (NameR[9] != 'r')
  16726. break;
  16727. return Intrinsic::xcore_setsr; // "core.setsr"
  16728. }
  16729. break;
  16730. case 's': // 1 string to match.
  16731. if (memcmp(NameR.data()+7, "ync", 3))
  16732. break;
  16733. return Intrinsic::xcore_ssync; // "core.ssync"
  16734. }
  16735. break;
  16736. }
  16737. break;
  16738. }
  16739. break;
  16740. case 11: // 4 strings to match.
  16741. switch (NameR[0]) {
  16742. default: break;
  16743. case '8': // 3 strings to match.
  16744. if (memcmp(NameR.data()+1, "6.mmx.", 6))
  16745. break;
  16746. switch (NameR[7]) {
  16747. default: break;
  16748. case 'e': // 1 string to match.
  16749. if (memcmp(NameR.data()+8, "mms", 3))
  16750. break;
  16751. return Intrinsic::x86_mmx_emms; // "86.mmx.emms"
  16752. case 'p': // 2 strings to match.
  16753. switch (NameR[8]) {
  16754. default: break;
  16755. case 'a': // 1 string to match.
  16756. if (memcmp(NameR.data()+9, "nd", 2))
  16757. break;
  16758. return Intrinsic::x86_mmx_pand; // "86.mmx.pand"
  16759. case 'x': // 1 string to match.
  16760. if (memcmp(NameR.data()+9, "or", 2))
  16761. break;
  16762. return Intrinsic::x86_mmx_pxor; // "86.mmx.pxor"
  16763. }
  16764. break;
  16765. }
  16766. break;
  16767. case 'c': // 1 string to match.
  16768. if (memcmp(NameR.data()+1, "ore.bitrev", 10))
  16769. break;
  16770. return Intrinsic::xcore_bitrev; // "core.bitrev"
  16771. }
  16772. break;
  16773. case 12: // 9 strings to match.
  16774. if (memcmp(NameR.data()+0, "86.", 3))
  16775. break;
  16776. switch (NameR[3]) {
  16777. default: break;
  16778. case 'm': // 2 strings to match.
  16779. if (memcmp(NameR.data()+4, "mx.", 3))
  16780. break;
  16781. switch (NameR[7]) {
  16782. default: break;
  16783. case 'f': // 1 string to match.
  16784. if (memcmp(NameR.data()+8, "emms", 4))
  16785. break;
  16786. return Intrinsic::x86_mmx_femms; // "86.mmx.femms"
  16787. case 'p': // 1 string to match.
  16788. if (memcmp(NameR.data()+8, "andn", 4))
  16789. break;
  16790. return Intrinsic::x86_mmx_pandn; // "86.mmx.pandn"
  16791. }
  16792. break;
  16793. case 'p': // 1 string to match.
  16794. if (memcmp(NameR.data()+4, "clmulqdq", 8))
  16795. break;
  16796. return Intrinsic::x86_pclmulqdq; // "86.pclmulqdq"
  16797. case 'r': // 6 strings to match.
  16798. if (NameR[4] != 'd')
  16799. break;
  16800. switch (NameR[5]) {
  16801. default: break;
  16802. case 'r': // 3 strings to match.
  16803. if (memcmp(NameR.data()+6, "and.", 4))
  16804. break;
  16805. switch (NameR[10]) {
  16806. default: break;
  16807. case '1': // 1 string to match.
  16808. if (NameR[11] != '6')
  16809. break;
  16810. return Intrinsic::x86_rdrand_16; // "86.rdrand.16"
  16811. case '3': // 1 string to match.
  16812. if (NameR[11] != '2')
  16813. break;
  16814. return Intrinsic::x86_rdrand_32; // "86.rdrand.32"
  16815. case '6': // 1 string to match.
  16816. if (NameR[11] != '4')
  16817. break;
  16818. return Intrinsic::x86_rdrand_64; // "86.rdrand.64"
  16819. }
  16820. break;
  16821. case 's': // 3 strings to match.
  16822. if (memcmp(NameR.data()+6, "eed.", 4))
  16823. break;
  16824. switch (NameR[10]) {
  16825. default: break;
  16826. case '1': // 1 string to match.
  16827. if (NameR[11] != '6')
  16828. break;
  16829. return Intrinsic::x86_rdseed_16; // "86.rdseed.16"
  16830. case '3': // 1 string to match.
  16831. if (NameR[11] != '2')
  16832. break;
  16833. return Intrinsic::x86_rdseed_32; // "86.rdseed.32"
  16834. case '6': // 1 string to match.
  16835. if (NameR[11] != '4')
  16836. break;
  16837. return Intrinsic::x86_rdseed_64; // "86.rdseed.64"
  16838. }
  16839. break;
  16840. }
  16841. break;
  16842. }
  16843. break;
  16844. case 13: // 53 strings to match.
  16845. if (memcmp(NameR.data()+0, "86.", 3))
  16846. break;
  16847. switch (NameR[3]) {
  16848. default: break;
  16849. case 'a': // 1 string to match.
  16850. if (memcmp(NameR.data()+4, "vx2.permd", 9))
  16851. break;
  16852. return Intrinsic::x86_avx2_permd; // "86.avx2.permd"
  16853. case 'm': // 18 strings to match.
  16854. if (memcmp(NameR.data()+4, "mx.p", 4))
  16855. break;
  16856. switch (NameR[8]) {
  16857. default: break;
  16858. case 'a': // 6 strings to match.
  16859. switch (NameR[9]) {
  16860. default: break;
  16861. case 'd': // 4 strings to match.
  16862. if (memcmp(NameR.data()+10, "d.", 2))
  16863. break;
  16864. switch (NameR[12]) {
  16865. default: break;
  16866. case 'b': // 1 string to match.
  16867. return Intrinsic::x86_mmx_padd_b; // "86.mmx.padd.b"
  16868. case 'd': // 1 string to match.
  16869. return Intrinsic::x86_mmx_padd_d; // "86.mmx.padd.d"
  16870. case 'q': // 1 string to match.
  16871. return Intrinsic::x86_mmx_padd_q; // "86.mmx.padd.q"
  16872. case 'w': // 1 string to match.
  16873. return Intrinsic::x86_mmx_padd_w; // "86.mmx.padd.w"
  16874. }
  16875. break;
  16876. case 'v': // 2 strings to match.
  16877. if (memcmp(NameR.data()+10, "g.", 2))
  16878. break;
  16879. switch (NameR[12]) {
  16880. default: break;
  16881. case 'b': // 1 string to match.
  16882. return Intrinsic::x86_mmx_pavg_b; // "86.mmx.pavg.b"
  16883. case 'w': // 1 string to match.
  16884. return Intrinsic::x86_mmx_pavg_w; // "86.mmx.pavg.w"
  16885. }
  16886. break;
  16887. }
  16888. break;
  16889. case 's': // 12 strings to match.
  16890. switch (NameR[9]) {
  16891. default: break;
  16892. case 'l': // 3 strings to match.
  16893. if (memcmp(NameR.data()+10, "l.", 2))
  16894. break;
  16895. switch (NameR[12]) {
  16896. default: break;
  16897. case 'd': // 1 string to match.
  16898. return Intrinsic::x86_mmx_psll_d; // "86.mmx.psll.d"
  16899. case 'q': // 1 string to match.
  16900. return Intrinsic::x86_mmx_psll_q; // "86.mmx.psll.q"
  16901. case 'w': // 1 string to match.
  16902. return Intrinsic::x86_mmx_psll_w; // "86.mmx.psll.w"
  16903. }
  16904. break;
  16905. case 'r': // 5 strings to match.
  16906. switch (NameR[10]) {
  16907. default: break;
  16908. case 'a': // 2 strings to match.
  16909. if (NameR[11] != '.')
  16910. break;
  16911. switch (NameR[12]) {
  16912. default: break;
  16913. case 'd': // 1 string to match.
  16914. return Intrinsic::x86_mmx_psra_d; // "86.mmx.psra.d"
  16915. case 'w': // 1 string to match.
  16916. return Intrinsic::x86_mmx_psra_w; // "86.mmx.psra.w"
  16917. }
  16918. break;
  16919. case 'l': // 3 strings to match.
  16920. if (NameR[11] != '.')
  16921. break;
  16922. switch (NameR[12]) {
  16923. default: break;
  16924. case 'd': // 1 string to match.
  16925. return Intrinsic::x86_mmx_psrl_d; // "86.mmx.psrl.d"
  16926. case 'q': // 1 string to match.
  16927. return Intrinsic::x86_mmx_psrl_q; // "86.mmx.psrl.q"
  16928. case 'w': // 1 string to match.
  16929. return Intrinsic::x86_mmx_psrl_w; // "86.mmx.psrl.w"
  16930. }
  16931. break;
  16932. }
  16933. break;
  16934. case 'u': // 4 strings to match.
  16935. if (memcmp(NameR.data()+10, "b.", 2))
  16936. break;
  16937. switch (NameR[12]) {
  16938. default: break;
  16939. case 'b': // 1 string to match.
  16940. return Intrinsic::x86_mmx_psub_b; // "86.mmx.psub.b"
  16941. case 'd': // 1 string to match.
  16942. return Intrinsic::x86_mmx_psub_d; // "86.mmx.psub.d"
  16943. case 'q': // 1 string to match.
  16944. return Intrinsic::x86_mmx_psub_q; // "86.mmx.psub.q"
  16945. case 'w': // 1 string to match.
  16946. return Intrinsic::x86_mmx_psub_w; // "86.mmx.psub.w"
  16947. }
  16948. break;
  16949. }
  16950. break;
  16951. }
  16952. break;
  16953. case 's': // 16 strings to match.
  16954. if (memcmp(NameR.data()+4, "se", 2))
  16955. break;
  16956. switch (NameR[6]) {
  16957. default: break;
  16958. case '.': // 13 strings to match.
  16959. switch (NameR[7]) {
  16960. default: break;
  16961. case 'a': // 1 string to match.
  16962. if (memcmp(NameR.data()+8, "dd.ss", 5))
  16963. break;
  16964. return Intrinsic::x86_sse_add_ss; // "86.sse.add.ss"
  16965. case 'c': // 2 strings to match.
  16966. if (memcmp(NameR.data()+8, "mp.", 3))
  16967. break;
  16968. switch (NameR[11]) {
  16969. default: break;
  16970. case 'p': // 1 string to match.
  16971. if (NameR[12] != 's')
  16972. break;
  16973. return Intrinsic::x86_sse_cmp_ps; // "86.sse.cmp.ps"
  16974. case 's': // 1 string to match.
  16975. if (NameR[12] != 's')
  16976. break;
  16977. return Intrinsic::x86_sse_cmp_ss; // "86.sse.cmp.ss"
  16978. }
  16979. break;
  16980. case 'd': // 1 string to match.
  16981. if (memcmp(NameR.data()+8, "iv.ss", 5))
  16982. break;
  16983. return Intrinsic::x86_sse_div_ss; // "86.sse.div.ss"
  16984. case 'm': // 5 strings to match.
  16985. switch (NameR[8]) {
  16986. default: break;
  16987. case 'a': // 2 strings to match.
  16988. if (memcmp(NameR.data()+9, "x.", 2))
  16989. break;
  16990. switch (NameR[11]) {
  16991. default: break;
  16992. case 'p': // 1 string to match.
  16993. if (NameR[12] != 's')
  16994. break;
  16995. return Intrinsic::x86_sse_max_ps; // "86.sse.max.ps"
  16996. case 's': // 1 string to match.
  16997. if (NameR[12] != 's')
  16998. break;
  16999. return Intrinsic::x86_sse_max_ss; // "86.sse.max.ss"
  17000. }
  17001. break;
  17002. case 'i': // 2 strings to match.
  17003. if (memcmp(NameR.data()+9, "n.", 2))
  17004. break;
  17005. switch (NameR[11]) {
  17006. default: break;
  17007. case 'p': // 1 string to match.
  17008. if (NameR[12] != 's')
  17009. break;
  17010. return Intrinsic::x86_sse_min_ps; // "86.sse.min.ps"
  17011. case 's': // 1 string to match.
  17012. if (NameR[12] != 's')
  17013. break;
  17014. return Intrinsic::x86_sse_min_ss; // "86.sse.min.ss"
  17015. }
  17016. break;
  17017. case 'u': // 1 string to match.
  17018. if (memcmp(NameR.data()+9, "l.ss", 4))
  17019. break;
  17020. return Intrinsic::x86_sse_mul_ss; // "86.sse.mul.ss"
  17021. }
  17022. break;
  17023. case 'r': // 2 strings to match.
  17024. if (memcmp(NameR.data()+8, "cp.", 3))
  17025. break;
  17026. switch (NameR[11]) {
  17027. default: break;
  17028. case 'p': // 1 string to match.
  17029. if (NameR[12] != 's')
  17030. break;
  17031. return Intrinsic::x86_sse_rcp_ps; // "86.sse.rcp.ps"
  17032. case 's': // 1 string to match.
  17033. if (NameR[12] != 's')
  17034. break;
  17035. return Intrinsic::x86_sse_rcp_ss; // "86.sse.rcp.ss"
  17036. }
  17037. break;
  17038. case 's': // 2 strings to match.
  17039. switch (NameR[8]) {
  17040. default: break;
  17041. case 'f': // 1 string to match.
  17042. if (memcmp(NameR.data()+9, "ence", 4))
  17043. break;
  17044. return Intrinsic::x86_sse_sfence; // "86.sse.sfence"
  17045. case 'u': // 1 string to match.
  17046. if (memcmp(NameR.data()+9, "b.ss", 4))
  17047. break;
  17048. return Intrinsic::x86_sse_sub_ss; // "86.sse.sub.ss"
  17049. }
  17050. break;
  17051. }
  17052. break;
  17053. case '3': // 1 string to match.
  17054. if (memcmp(NameR.data()+7, ".mwait", 6))
  17055. break;
  17056. return Intrinsic::x86_sse3_mwait; // "86.sse3.mwait"
  17057. case '4': // 2 strings to match.
  17058. if (memcmp(NameR.data()+7, "1.dpp", 5))
  17059. break;
  17060. switch (NameR[12]) {
  17061. default: break;
  17062. case 'd': // 1 string to match.
  17063. return Intrinsic::x86_sse41_dppd; // "86.sse41.dppd"
  17064. case 's': // 1 string to match.
  17065. return Intrinsic::x86_sse41_dpps; // "86.sse41.dpps"
  17066. }
  17067. break;
  17068. }
  17069. break;
  17070. case 'x': // 18 strings to match.
  17071. if (memcmp(NameR.data()+4, "op.vp", 5))
  17072. break;
  17073. switch (NameR[9]) {
  17074. default: break;
  17075. case 'c': // 5 strings to match.
  17076. switch (NameR[10]) {
  17077. default: break;
  17078. case 'm': // 1 string to match.
  17079. if (memcmp(NameR.data()+11, "ov", 2))
  17080. break;
  17081. return Intrinsic::x86_xop_vpcmov; // "86.xop.vpcmov"
  17082. case 'o': // 4 strings to match.
  17083. if (NameR[11] != 'm')
  17084. break;
  17085. switch (NameR[12]) {
  17086. default: break;
  17087. case 'b': // 1 string to match.
  17088. return Intrinsic::x86_xop_vpcomb; // "86.xop.vpcomb"
  17089. case 'd': // 1 string to match.
  17090. return Intrinsic::x86_xop_vpcomd; // "86.xop.vpcomd"
  17091. case 'q': // 1 string to match.
  17092. return Intrinsic::x86_xop_vpcomq; // "86.xop.vpcomq"
  17093. case 'w': // 1 string to match.
  17094. return Intrinsic::x86_xop_vpcomw; // "86.xop.vpcomw"
  17095. }
  17096. break;
  17097. }
  17098. break;
  17099. case 'p': // 1 string to match.
  17100. if (memcmp(NameR.data()+10, "erm", 3))
  17101. break;
  17102. return Intrinsic::x86_xop_vpperm; // "86.xop.vpperm"
  17103. case 'r': // 4 strings to match.
  17104. if (memcmp(NameR.data()+10, "ot", 2))
  17105. break;
  17106. switch (NameR[12]) {
  17107. default: break;
  17108. case 'b': // 1 string to match.
  17109. return Intrinsic::x86_xop_vprotb; // "86.xop.vprotb"
  17110. case 'd': // 1 string to match.
  17111. return Intrinsic::x86_xop_vprotd; // "86.xop.vprotd"
  17112. case 'q': // 1 string to match.
  17113. return Intrinsic::x86_xop_vprotq; // "86.xop.vprotq"
  17114. case 'w': // 1 string to match.
  17115. return Intrinsic::x86_xop_vprotw; // "86.xop.vprotw"
  17116. }
  17117. break;
  17118. case 's': // 8 strings to match.
  17119. if (NameR[10] != 'h')
  17120. break;
  17121. switch (NameR[11]) {
  17122. default: break;
  17123. case 'a': // 4 strings to match.
  17124. switch (NameR[12]) {
  17125. default: break;
  17126. case 'b': // 1 string to match.
  17127. return Intrinsic::x86_xop_vpshab; // "86.xop.vpshab"
  17128. case 'd': // 1 string to match.
  17129. return Intrinsic::x86_xop_vpshad; // "86.xop.vpshad"
  17130. case 'q': // 1 string to match.
  17131. return Intrinsic::x86_xop_vpshaq; // "86.xop.vpshaq"
  17132. case 'w': // 1 string to match.
  17133. return Intrinsic::x86_xop_vpshaw; // "86.xop.vpshaw"
  17134. }
  17135. break;
  17136. case 'l': // 4 strings to match.
  17137. switch (NameR[12]) {
  17138. default: break;
  17139. case 'b': // 1 string to match.
  17140. return Intrinsic::x86_xop_vpshlb; // "86.xop.vpshlb"
  17141. case 'd': // 1 string to match.
  17142. return Intrinsic::x86_xop_vpshld; // "86.xop.vpshld"
  17143. case 'q': // 1 string to match.
  17144. return Intrinsic::x86_xop_vpshlq; // "86.xop.vpshlq"
  17145. case 'w': // 1 string to match.
  17146. return Intrinsic::x86_xop_vpshlw; // "86.xop.vpshlw"
  17147. }
  17148. break;
  17149. }
  17150. break;
  17151. }
  17152. break;
  17153. }
  17154. break;
  17155. case 14: // 96 strings to match.
  17156. switch (NameR[0]) {
  17157. default: break;
  17158. case '8': // 95 strings to match.
  17159. if (memcmp(NameR.data()+1, "6.", 2))
  17160. break;
  17161. switch (NameR[3]) {
  17162. default: break;
  17163. case '3': // 9 strings to match.
  17164. if (memcmp(NameR.data()+4, "dnow.p", 6))
  17165. break;
  17166. switch (NameR[10]) {
  17167. default: break;
  17168. case 'f': // 8 strings to match.
  17169. switch (NameR[11]) {
  17170. default: break;
  17171. case '2': // 1 string to match.
  17172. if (memcmp(NameR.data()+12, "id", 2))
  17173. break;
  17174. return Intrinsic::x86_3dnow_pf2id; // "86.3dnow.pf2id"
  17175. case 'a': // 2 strings to match.
  17176. switch (NameR[12]) {
  17177. default: break;
  17178. case 'c': // 1 string to match.
  17179. if (NameR[13] != 'c')
  17180. break;
  17181. return Intrinsic::x86_3dnow_pfacc; // "86.3dnow.pfacc"
  17182. case 'd': // 1 string to match.
  17183. if (NameR[13] != 'd')
  17184. break;
  17185. return Intrinsic::x86_3dnow_pfadd; // "86.3dnow.pfadd"
  17186. }
  17187. break;
  17188. case 'm': // 3 strings to match.
  17189. switch (NameR[12]) {
  17190. default: break;
  17191. case 'a': // 1 string to match.
  17192. if (NameR[13] != 'x')
  17193. break;
  17194. return Intrinsic::x86_3dnow_pfmax; // "86.3dnow.pfmax"
  17195. case 'i': // 1 string to match.
  17196. if (NameR[13] != 'n')
  17197. break;
  17198. return Intrinsic::x86_3dnow_pfmin; // "86.3dnow.pfmin"
  17199. case 'u': // 1 string to match.
  17200. if (NameR[13] != 'l')
  17201. break;
  17202. return Intrinsic::x86_3dnow_pfmul; // "86.3dnow.pfmul"
  17203. }
  17204. break;
  17205. case 'r': // 1 string to match.
  17206. if (memcmp(NameR.data()+12, "cp", 2))
  17207. break;
  17208. return Intrinsic::x86_3dnow_pfrcp; // "86.3dnow.pfrcp"
  17209. case 's': // 1 string to match.
  17210. if (memcmp(NameR.data()+12, "ub", 2))
  17211. break;
  17212. return Intrinsic::x86_3dnow_pfsub; // "86.3dnow.pfsub"
  17213. }
  17214. break;
  17215. case 'i': // 1 string to match.
  17216. if (memcmp(NameR.data()+11, "2fd", 3))
  17217. break;
  17218. return Intrinsic::x86_3dnow_pi2fd; // "86.3dnow.pi2fd"
  17219. }
  17220. break;
  17221. case 'a': // 14 strings to match.
  17222. if (memcmp(NameR.data()+4, "vx2.p", 5))
  17223. break;
  17224. switch (NameR[9]) {
  17225. default: break;
  17226. case 'a': // 5 strings to match.
  17227. switch (NameR[10]) {
  17228. default: break;
  17229. case 'b': // 3 strings to match.
  17230. if (memcmp(NameR.data()+11, "s.", 2))
  17231. break;
  17232. switch (NameR[13]) {
  17233. default: break;
  17234. case 'b': // 1 string to match.
  17235. return Intrinsic::x86_avx2_pabs_b; // "86.avx2.pabs.b"
  17236. case 'd': // 1 string to match.
  17237. return Intrinsic::x86_avx2_pabs_d; // "86.avx2.pabs.d"
  17238. case 'w': // 1 string to match.
  17239. return Intrinsic::x86_avx2_pabs_w; // "86.avx2.pabs.w"
  17240. }
  17241. break;
  17242. case 'v': // 2 strings to match.
  17243. if (memcmp(NameR.data()+11, "g.", 2))
  17244. break;
  17245. switch (NameR[13]) {
  17246. default: break;
  17247. case 'b': // 1 string to match.
  17248. return Intrinsic::x86_avx2_pavg_b; // "86.avx2.pavg.b"
  17249. case 'w': // 1 string to match.
  17250. return Intrinsic::x86_avx2_pavg_w; // "86.avx2.pavg.w"
  17251. }
  17252. break;
  17253. }
  17254. break;
  17255. case 'e': // 1 string to match.
  17256. if (memcmp(NameR.data()+10, "rmps", 4))
  17257. break;
  17258. return Intrinsic::x86_avx2_permps; // "86.avx2.permps"
  17259. case 's': // 8 strings to match.
  17260. switch (NameR[10]) {
  17261. default: break;
  17262. case 'l': // 3 strings to match.
  17263. if (memcmp(NameR.data()+11, "l.", 2))
  17264. break;
  17265. switch (NameR[13]) {
  17266. default: break;
  17267. case 'd': // 1 string to match.
  17268. return Intrinsic::x86_avx2_psll_d; // "86.avx2.psll.d"
  17269. case 'q': // 1 string to match.
  17270. return Intrinsic::x86_avx2_psll_q; // "86.avx2.psll.q"
  17271. case 'w': // 1 string to match.
  17272. return Intrinsic::x86_avx2_psll_w; // "86.avx2.psll.w"
  17273. }
  17274. break;
  17275. case 'r': // 5 strings to match.
  17276. switch (NameR[11]) {
  17277. default: break;
  17278. case 'a': // 2 strings to match.
  17279. if (NameR[12] != '.')
  17280. break;
  17281. switch (NameR[13]) {
  17282. default: break;
  17283. case 'd': // 1 string to match.
  17284. return Intrinsic::x86_avx2_psra_d; // "86.avx2.psra.d"
  17285. case 'w': // 1 string to match.
  17286. return Intrinsic::x86_avx2_psra_w; // "86.avx2.psra.w"
  17287. }
  17288. break;
  17289. case 'l': // 3 strings to match.
  17290. if (NameR[12] != '.')
  17291. break;
  17292. switch (NameR[13]) {
  17293. default: break;
  17294. case 'd': // 1 string to match.
  17295. return Intrinsic::x86_avx2_psrl_d; // "86.avx2.psrl.d"
  17296. case 'q': // 1 string to match.
  17297. return Intrinsic::x86_avx2_psrl_q; // "86.avx2.psrl.q"
  17298. case 'w': // 1 string to match.
  17299. return Intrinsic::x86_avx2_psrl_w; // "86.avx2.psrl.w"
  17300. }
  17301. break;
  17302. }
  17303. break;
  17304. }
  17305. break;
  17306. }
  17307. break;
  17308. case 'b': // 6 strings to match.
  17309. if (memcmp(NameR.data()+4, "mi.", 3))
  17310. break;
  17311. switch (NameR[7]) {
  17312. default: break;
  17313. case 'b': // 2 strings to match.
  17314. if (memcmp(NameR.data()+8, "zhi.", 4))
  17315. break;
  17316. switch (NameR[12]) {
  17317. default: break;
  17318. case '3': // 1 string to match.
  17319. if (NameR[13] != '2')
  17320. break;
  17321. return Intrinsic::x86_bmi_bzhi_32; // "86.bmi.bzhi.32"
  17322. case '6': // 1 string to match.
  17323. if (NameR[13] != '4')
  17324. break;
  17325. return Intrinsic::x86_bmi_bzhi_64; // "86.bmi.bzhi.64"
  17326. }
  17327. break;
  17328. case 'p': // 4 strings to match.
  17329. switch (NameR[8]) {
  17330. default: break;
  17331. case 'd': // 2 strings to match.
  17332. if (memcmp(NameR.data()+9, "ep.", 3))
  17333. break;
  17334. switch (NameR[12]) {
  17335. default: break;
  17336. case '3': // 1 string to match.
  17337. if (NameR[13] != '2')
  17338. break;
  17339. return Intrinsic::x86_bmi_pdep_32; // "86.bmi.pdep.32"
  17340. case '6': // 1 string to match.
  17341. if (NameR[13] != '4')
  17342. break;
  17343. return Intrinsic::x86_bmi_pdep_64; // "86.bmi.pdep.64"
  17344. }
  17345. break;
  17346. case 'e': // 2 strings to match.
  17347. if (memcmp(NameR.data()+9, "xt.", 3))
  17348. break;
  17349. switch (NameR[12]) {
  17350. default: break;
  17351. case '3': // 1 string to match.
  17352. if (NameR[13] != '2')
  17353. break;
  17354. return Intrinsic::x86_bmi_pext_32; // "86.bmi.pext.32"
  17355. case '6': // 1 string to match.
  17356. if (NameR[13] != '4')
  17357. break;
  17358. return Intrinsic::x86_bmi_pext_64; // "86.bmi.pext.64"
  17359. }
  17360. break;
  17361. }
  17362. break;
  17363. }
  17364. break;
  17365. case 'm': // 21 strings to match.
  17366. if (memcmp(NameR.data()+4, "mx.p", 4))
  17367. break;
  17368. switch (NameR[8]) {
  17369. default: break;
  17370. case 'a': // 2 strings to match.
  17371. if (memcmp(NameR.data()+9, "dds.", 4))
  17372. break;
  17373. switch (NameR[13]) {
  17374. default: break;
  17375. case 'b': // 1 string to match.
  17376. return Intrinsic::x86_mmx_padds_b; // "86.mmx.padds.b"
  17377. case 'w': // 1 string to match.
  17378. return Intrinsic::x86_mmx_padds_w; // "86.mmx.padds.w"
  17379. }
  17380. break;
  17381. case 'e': // 1 string to match.
  17382. if (memcmp(NameR.data()+9, "xtr.w", 5))
  17383. break;
  17384. return Intrinsic::x86_mmx_pextr_w; // "86.mmx.pextr.w"
  17385. case 'i': // 1 string to match.
  17386. if (memcmp(NameR.data()+9, "nsr.w", 5))
  17387. break;
  17388. return Intrinsic::x86_mmx_pinsr_w; // "86.mmx.pinsr.w"
  17389. case 'm': // 6 strings to match.
  17390. switch (NameR[9]) {
  17391. default: break;
  17392. case 'a': // 2 strings to match.
  17393. if (NameR[10] != 'x')
  17394. break;
  17395. switch (NameR[11]) {
  17396. default: break;
  17397. case 's': // 1 string to match.
  17398. if (memcmp(NameR.data()+12, ".w", 2))
  17399. break;
  17400. return Intrinsic::x86_mmx_pmaxs_w; // "86.mmx.pmaxs.w"
  17401. case 'u': // 1 string to match.
  17402. if (memcmp(NameR.data()+12, ".b", 2))
  17403. break;
  17404. return Intrinsic::x86_mmx_pmaxu_b; // "86.mmx.pmaxu.b"
  17405. }
  17406. break;
  17407. case 'i': // 2 strings to match.
  17408. if (NameR[10] != 'n')
  17409. break;
  17410. switch (NameR[11]) {
  17411. default: break;
  17412. case 's': // 1 string to match.
  17413. if (memcmp(NameR.data()+12, ".w", 2))
  17414. break;
  17415. return Intrinsic::x86_mmx_pmins_w; // "86.mmx.pmins.w"
  17416. case 'u': // 1 string to match.
  17417. if (memcmp(NameR.data()+12, ".b", 2))
  17418. break;
  17419. return Intrinsic::x86_mmx_pminu_b; // "86.mmx.pminu.b"
  17420. }
  17421. break;
  17422. case 'u': // 2 strings to match.
  17423. if (NameR[10] != 'l')
  17424. break;
  17425. switch (NameR[11]) {
  17426. default: break;
  17427. case 'h': // 1 string to match.
  17428. if (memcmp(NameR.data()+12, ".w", 2))
  17429. break;
  17430. return Intrinsic::x86_mmx_pmulh_w; // "86.mmx.pmulh.w"
  17431. case 'l': // 1 string to match.
  17432. if (memcmp(NameR.data()+12, ".w", 2))
  17433. break;
  17434. return Intrinsic::x86_mmx_pmull_w; // "86.mmx.pmull.w"
  17435. }
  17436. break;
  17437. }
  17438. break;
  17439. case 's': // 11 strings to match.
  17440. switch (NameR[9]) {
  17441. default: break;
  17442. case 'a': // 1 string to match.
  17443. if (memcmp(NameR.data()+10, "d.bw", 4))
  17444. break;
  17445. return Intrinsic::x86_mmx_psad_bw; // "86.mmx.psad.bw"
  17446. case 'l': // 3 strings to match.
  17447. if (memcmp(NameR.data()+10, "li.", 3))
  17448. break;
  17449. switch (NameR[13]) {
  17450. default: break;
  17451. case 'd': // 1 string to match.
  17452. return Intrinsic::x86_mmx_pslli_d; // "86.mmx.pslli.d"
  17453. case 'q': // 1 string to match.
  17454. return Intrinsic::x86_mmx_pslli_q; // "86.mmx.pslli.q"
  17455. case 'w': // 1 string to match.
  17456. return Intrinsic::x86_mmx_pslli_w; // "86.mmx.pslli.w"
  17457. }
  17458. break;
  17459. case 'r': // 5 strings to match.
  17460. switch (NameR[10]) {
  17461. default: break;
  17462. case 'a': // 2 strings to match.
  17463. if (memcmp(NameR.data()+11, "i.", 2))
  17464. break;
  17465. switch (NameR[13]) {
  17466. default: break;
  17467. case 'd': // 1 string to match.
  17468. return Intrinsic::x86_mmx_psrai_d; // "86.mmx.psrai.d"
  17469. case 'w': // 1 string to match.
  17470. return Intrinsic::x86_mmx_psrai_w; // "86.mmx.psrai.w"
  17471. }
  17472. break;
  17473. case 'l': // 3 strings to match.
  17474. if (memcmp(NameR.data()+11, "i.", 2))
  17475. break;
  17476. switch (NameR[13]) {
  17477. default: break;
  17478. case 'd': // 1 string to match.
  17479. return Intrinsic::x86_mmx_psrli_d; // "86.mmx.psrli.d"
  17480. case 'q': // 1 string to match.
  17481. return Intrinsic::x86_mmx_psrli_q; // "86.mmx.psrli.q"
  17482. case 'w': // 1 string to match.
  17483. return Intrinsic::x86_mmx_psrli_w; // "86.mmx.psrli.w"
  17484. }
  17485. break;
  17486. }
  17487. break;
  17488. case 'u': // 2 strings to match.
  17489. if (memcmp(NameR.data()+10, "bs.", 3))
  17490. break;
  17491. switch (NameR[13]) {
  17492. default: break;
  17493. case 'b': // 1 string to match.
  17494. return Intrinsic::x86_mmx_psubs_b; // "86.mmx.psubs.b"
  17495. case 'w': // 1 string to match.
  17496. return Intrinsic::x86_mmx_psubs_w; // "86.mmx.psubs.w"
  17497. }
  17498. break;
  17499. }
  17500. break;
  17501. }
  17502. break;
  17503. case 'r': // 4 strings to match.
  17504. if (NameR[4] != 'd')
  17505. break;
  17506. switch (NameR[5]) {
  17507. default: break;
  17508. case 'f': // 2 strings to match.
  17509. if (memcmp(NameR.data()+6, "sbase.", 6))
  17510. break;
  17511. switch (NameR[12]) {
  17512. default: break;
  17513. case '3': // 1 string to match.
  17514. if (NameR[13] != '2')
  17515. break;
  17516. return Intrinsic::x86_rdfsbase_32; // "86.rdfsbase.32"
  17517. case '6': // 1 string to match.
  17518. if (NameR[13] != '4')
  17519. break;
  17520. return Intrinsic::x86_rdfsbase_64; // "86.rdfsbase.64"
  17521. }
  17522. break;
  17523. case 'g': // 2 strings to match.
  17524. if (memcmp(NameR.data()+6, "sbase.", 6))
  17525. break;
  17526. switch (NameR[12]) {
  17527. default: break;
  17528. case '3': // 1 string to match.
  17529. if (NameR[13] != '2')
  17530. break;
  17531. return Intrinsic::x86_rdgsbase_32; // "86.rdgsbase.32"
  17532. case '6': // 1 string to match.
  17533. if (NameR[13] != '4')
  17534. break;
  17535. return Intrinsic::x86_rdgsbase_64; // "86.rdgsbase.64"
  17536. }
  17537. break;
  17538. }
  17539. break;
  17540. case 's': // 29 strings to match.
  17541. if (memcmp(NameR.data()+4, "se", 2))
  17542. break;
  17543. switch (NameR[6]) {
  17544. default: break;
  17545. case '.': // 5 strings to match.
  17546. switch (NameR[7]) {
  17547. default: break;
  17548. case 'l': // 1 string to match.
  17549. if (memcmp(NameR.data()+8, "dmxcsr", 6))
  17550. break;
  17551. return Intrinsic::x86_sse_ldmxcsr; // "86.sse.ldmxcsr"
  17552. case 'p': // 1 string to match.
  17553. if (memcmp(NameR.data()+8, "shuf.w", 6))
  17554. break;
  17555. return Intrinsic::x86_sse_pshuf_w; // "86.sse.pshuf.w"
  17556. case 's': // 3 strings to match.
  17557. switch (NameR[8]) {
  17558. default: break;
  17559. case 'q': // 2 strings to match.
  17560. if (memcmp(NameR.data()+9, "rt.", 3))
  17561. break;
  17562. switch (NameR[12]) {
  17563. default: break;
  17564. case 'p': // 1 string to match.
  17565. if (NameR[13] != 's')
  17566. break;
  17567. return Intrinsic::x86_sse_sqrt_ps; // "86.sse.sqrt.ps"
  17568. case 's': // 1 string to match.
  17569. if (NameR[13] != 's')
  17570. break;
  17571. return Intrinsic::x86_sse_sqrt_ss; // "86.sse.sqrt.ss"
  17572. }
  17573. break;
  17574. case 't': // 1 string to match.
  17575. if (memcmp(NameR.data()+9, "mxcsr", 5))
  17576. break;
  17577. return Intrinsic::x86_sse_stmxcsr; // "86.sse.stmxcsr"
  17578. }
  17579. break;
  17580. }
  17581. break;
  17582. case '2': // 22 strings to match.
  17583. if (NameR[7] != '.')
  17584. break;
  17585. switch (NameR[8]) {
  17586. default: break;
  17587. case 'a': // 1 string to match.
  17588. if (memcmp(NameR.data()+9, "dd.sd", 5))
  17589. break;
  17590. return Intrinsic::x86_sse2_add_sd; // "86.sse2.add.sd"
  17591. case 'c': // 2 strings to match.
  17592. if (memcmp(NameR.data()+9, "mp.", 3))
  17593. break;
  17594. switch (NameR[12]) {
  17595. default: break;
  17596. case 'p': // 1 string to match.
  17597. if (NameR[13] != 'd')
  17598. break;
  17599. return Intrinsic::x86_sse2_cmp_pd; // "86.sse2.cmp.pd"
  17600. case 's': // 1 string to match.
  17601. if (NameR[13] != 'd')
  17602. break;
  17603. return Intrinsic::x86_sse2_cmp_sd; // "86.sse2.cmp.sd"
  17604. }
  17605. break;
  17606. case 'd': // 1 string to match.
  17607. if (memcmp(NameR.data()+9, "iv.sd", 5))
  17608. break;
  17609. return Intrinsic::x86_sse2_div_sd; // "86.sse2.div.sd"
  17610. case 'l': // 1 string to match.
  17611. if (memcmp(NameR.data()+9, "fence", 5))
  17612. break;
  17613. return Intrinsic::x86_sse2_lfence; // "86.sse2.lfence"
  17614. case 'm': // 6 strings to match.
  17615. switch (NameR[9]) {
  17616. default: break;
  17617. case 'a': // 2 strings to match.
  17618. if (memcmp(NameR.data()+10, "x.", 2))
  17619. break;
  17620. switch (NameR[12]) {
  17621. default: break;
  17622. case 'p': // 1 string to match.
  17623. if (NameR[13] != 'd')
  17624. break;
  17625. return Intrinsic::x86_sse2_max_pd; // "86.sse2.max.pd"
  17626. case 's': // 1 string to match.
  17627. if (NameR[13] != 'd')
  17628. break;
  17629. return Intrinsic::x86_sse2_max_sd; // "86.sse2.max.sd"
  17630. }
  17631. break;
  17632. case 'f': // 1 string to match.
  17633. if (memcmp(NameR.data()+10, "ence", 4))
  17634. break;
  17635. return Intrinsic::x86_sse2_mfence; // "86.sse2.mfence"
  17636. case 'i': // 2 strings to match.
  17637. if (memcmp(NameR.data()+10, "n.", 2))
  17638. break;
  17639. switch (NameR[12]) {
  17640. default: break;
  17641. case 'p': // 1 string to match.
  17642. if (NameR[13] != 'd')
  17643. break;
  17644. return Intrinsic::x86_sse2_min_pd; // "86.sse2.min.pd"
  17645. case 's': // 1 string to match.
  17646. if (NameR[13] != 'd')
  17647. break;
  17648. return Intrinsic::x86_sse2_min_sd; // "86.sse2.min.sd"
  17649. }
  17650. break;
  17651. case 'u': // 1 string to match.
  17652. if (memcmp(NameR.data()+10, "l.sd", 4))
  17653. break;
  17654. return Intrinsic::x86_sse2_mul_sd; // "86.sse2.mul.sd"
  17655. }
  17656. break;
  17657. case 'p': // 10 strings to match.
  17658. switch (NameR[9]) {
  17659. default: break;
  17660. case 'a': // 2 strings to match.
  17661. if (memcmp(NameR.data()+10, "vg.", 3))
  17662. break;
  17663. switch (NameR[13]) {
  17664. default: break;
  17665. case 'b': // 1 string to match.
  17666. return Intrinsic::x86_sse2_pavg_b; // "86.sse2.pavg.b"
  17667. case 'w': // 1 string to match.
  17668. return Intrinsic::x86_sse2_pavg_w; // "86.sse2.pavg.w"
  17669. }
  17670. break;
  17671. case 's': // 8 strings to match.
  17672. switch (NameR[10]) {
  17673. default: break;
  17674. case 'l': // 3 strings to match.
  17675. if (memcmp(NameR.data()+11, "l.", 2))
  17676. break;
  17677. switch (NameR[13]) {
  17678. default: break;
  17679. case 'd': // 1 string to match.
  17680. return Intrinsic::x86_sse2_psll_d; // "86.sse2.psll.d"
  17681. case 'q': // 1 string to match.
  17682. return Intrinsic::x86_sse2_psll_q; // "86.sse2.psll.q"
  17683. case 'w': // 1 string to match.
  17684. return Intrinsic::x86_sse2_psll_w; // "86.sse2.psll.w"
  17685. }
  17686. break;
  17687. case 'r': // 5 strings to match.
  17688. switch (NameR[11]) {
  17689. default: break;
  17690. case 'a': // 2 strings to match.
  17691. if (NameR[12] != '.')
  17692. break;
  17693. switch (NameR[13]) {
  17694. default: break;
  17695. case 'd': // 1 string to match.
  17696. return Intrinsic::x86_sse2_psra_d; // "86.sse2.psra.d"
  17697. case 'w': // 1 string to match.
  17698. return Intrinsic::x86_sse2_psra_w; // "86.sse2.psra.w"
  17699. }
  17700. break;
  17701. case 'l': // 3 strings to match.
  17702. if (NameR[12] != '.')
  17703. break;
  17704. switch (NameR[13]) {
  17705. default: break;
  17706. case 'd': // 1 string to match.
  17707. return Intrinsic::x86_sse2_psrl_d; // "86.sse2.psrl.d"
  17708. case 'q': // 1 string to match.
  17709. return Intrinsic::x86_sse2_psrl_q; // "86.sse2.psrl.q"
  17710. case 'w': // 1 string to match.
  17711. return Intrinsic::x86_sse2_psrl_w; // "86.sse2.psrl.w"
  17712. }
  17713. break;
  17714. }
  17715. break;
  17716. }
  17717. break;
  17718. }
  17719. break;
  17720. case 's': // 1 string to match.
  17721. if (memcmp(NameR.data()+9, "ub.sd", 5))
  17722. break;
  17723. return Intrinsic::x86_sse2_sub_sd; // "86.sse2.sub.sd"
  17724. }
  17725. break;
  17726. case '3': // 1 string to match.
  17727. if (memcmp(NameR.data()+7, ".ldu.dq", 7))
  17728. break;
  17729. return Intrinsic::x86_sse3_ldu_dq; // "86.sse3.ldu.dq"
  17730. case '4': // 1 string to match.
  17731. if (memcmp(NameR.data()+7, "a.extrq", 7))
  17732. break;
  17733. return Intrinsic::x86_sse4a_extrq; // "86.sse4a.extrq"
  17734. }
  17735. break;
  17736. case 'w': // 4 strings to match.
  17737. if (NameR[4] != 'r')
  17738. break;
  17739. switch (NameR[5]) {
  17740. default: break;
  17741. case 'f': // 2 strings to match.
  17742. if (memcmp(NameR.data()+6, "sbase.", 6))
  17743. break;
  17744. switch (NameR[12]) {
  17745. default: break;
  17746. case '3': // 1 string to match.
  17747. if (NameR[13] != '2')
  17748. break;
  17749. return Intrinsic::x86_wrfsbase_32; // "86.wrfsbase.32"
  17750. case '6': // 1 string to match.
  17751. if (NameR[13] != '4')
  17752. break;
  17753. return Intrinsic::x86_wrfsbase_64; // "86.wrfsbase.64"
  17754. }
  17755. break;
  17756. case 'g': // 2 strings to match.
  17757. if (memcmp(NameR.data()+6, "sbase.", 6))
  17758. break;
  17759. switch (NameR[12]) {
  17760. default: break;
  17761. case '3': // 1 string to match.
  17762. if (NameR[13] != '2')
  17763. break;
  17764. return Intrinsic::x86_wrgsbase_32; // "86.wrgsbase.32"
  17765. case '6': // 1 string to match.
  17766. if (NameR[13] != '4')
  17767. break;
  17768. return Intrinsic::x86_wrgsbase_64; // "86.wrgsbase.64"
  17769. }
  17770. break;
  17771. }
  17772. break;
  17773. case 'x': // 8 strings to match.
  17774. if (memcmp(NameR.data()+4, "op.vp", 5))
  17775. break;
  17776. switch (NameR[9]) {
  17777. default: break;
  17778. case 'c': // 4 strings to match.
  17779. if (memcmp(NameR.data()+10, "omu", 3))
  17780. break;
  17781. switch (NameR[13]) {
  17782. default: break;
  17783. case 'b': // 1 string to match.
  17784. return Intrinsic::x86_xop_vpcomub; // "86.xop.vpcomub"
  17785. case 'd': // 1 string to match.
  17786. return Intrinsic::x86_xop_vpcomud; // "86.xop.vpcomud"
  17787. case 'q': // 1 string to match.
  17788. return Intrinsic::x86_xop_vpcomuq; // "86.xop.vpcomuq"
  17789. case 'w': // 1 string to match.
  17790. return Intrinsic::x86_xop_vpcomuw; // "86.xop.vpcomuw"
  17791. }
  17792. break;
  17793. case 'r': // 4 strings to match.
  17794. if (memcmp(NameR.data()+10, "ot", 2))
  17795. break;
  17796. switch (NameR[12]) {
  17797. default: break;
  17798. case 'b': // 1 string to match.
  17799. if (NameR[13] != 'i')
  17800. break;
  17801. return Intrinsic::x86_xop_vprotbi; // "86.xop.vprotbi"
  17802. case 'd': // 1 string to match.
  17803. if (NameR[13] != 'i')
  17804. break;
  17805. return Intrinsic::x86_xop_vprotdi; // "86.xop.vprotdi"
  17806. case 'q': // 1 string to match.
  17807. if (NameR[13] != 'i')
  17808. break;
  17809. return Intrinsic::x86_xop_vprotqi; // "86.xop.vprotqi"
  17810. case 'w': // 1 string to match.
  17811. if (NameR[13] != 'i')
  17812. break;
  17813. return Intrinsic::x86_xop_vprotwi; // "86.xop.vprotwi"
  17814. }
  17815. break;
  17816. }
  17817. break;
  17818. }
  17819. break;
  17820. case 'c': // 1 string to match.
  17821. if (memcmp(NameR.data()+1, "ore.waitevent", 13))
  17822. break;
  17823. return Intrinsic::xcore_waitevent; // "core.waitevent"
  17824. }
  17825. break;
  17826. case 15: // 143 strings to match.
  17827. switch (NameR[0]) {
  17828. default: break;
  17829. case '8': // 142 strings to match.
  17830. if (memcmp(NameR.data()+1, "6.", 2))
  17831. break;
  17832. switch (NameR[3]) {
  17833. default: break;
  17834. case '3': // 3 strings to match.
  17835. if (memcmp(NameR.data()+4, "dnow", 4))
  17836. break;
  17837. switch (NameR[8]) {
  17838. default: break;
  17839. case '.': // 1 string to match.
  17840. if (memcmp(NameR.data()+9, "pfsubr", 6))
  17841. break;
  17842. return Intrinsic::x86_3dnow_pfsubr; // "86.3dnow.pfsubr"
  17843. case 'a': // 2 strings to match.
  17844. if (memcmp(NameR.data()+9, ".p", 2))
  17845. break;
  17846. switch (NameR[11]) {
  17847. default: break;
  17848. case 'f': // 1 string to match.
  17849. if (memcmp(NameR.data()+12, "2iw", 3))
  17850. break;
  17851. return Intrinsic::x86_3dnowa_pf2iw; // "86.3dnowa.pf2iw"
  17852. case 'i': // 1 string to match.
  17853. if (memcmp(NameR.data()+12, "2fw", 3))
  17854. break;
  17855. return Intrinsic::x86_3dnowa_pi2fw; // "86.3dnowa.pi2fw"
  17856. }
  17857. break;
  17858. }
  17859. break;
  17860. case 'a': // 48 strings to match.
  17861. switch (NameR[4]) {
  17862. default: break;
  17863. case 'e': // 3 strings to match.
  17864. if (memcmp(NameR.data()+5, "sni.aes", 7))
  17865. break;
  17866. switch (NameR[12]) {
  17867. default: break;
  17868. case 'd': // 1 string to match.
  17869. if (memcmp(NameR.data()+13, "ec", 2))
  17870. break;
  17871. return Intrinsic::x86_aesni_aesdec; // "86.aesni.aesdec"
  17872. case 'e': // 1 string to match.
  17873. if (memcmp(NameR.data()+13, "nc", 2))
  17874. break;
  17875. return Intrinsic::x86_aesni_aesenc; // "86.aesni.aesenc"
  17876. case 'i': // 1 string to match.
  17877. if (memcmp(NameR.data()+13, "mc", 2))
  17878. break;
  17879. return Intrinsic::x86_aesni_aesimc; // "86.aesni.aesimc"
  17880. }
  17881. break;
  17882. case 'v': // 45 strings to match.
  17883. if (NameR[5] != 'x')
  17884. break;
  17885. switch (NameR[6]) {
  17886. default: break;
  17887. case '.': // 1 string to match.
  17888. if (memcmp(NameR.data()+7, "vzeroall", 8))
  17889. break;
  17890. return Intrinsic::x86_avx_vzeroall; // "86.avx.vzeroall"
  17891. case '2': // 44 strings to match.
  17892. if (NameR[7] != '.')
  17893. break;
  17894. switch (NameR[8]) {
  17895. default: break;
  17896. case 'm': // 1 string to match.
  17897. if (memcmp(NameR.data()+9, "psadbw", 6))
  17898. break;
  17899. return Intrinsic::x86_avx2_mpsadbw; // "86.avx2.mpsadbw"
  17900. case 'p': // 43 strings to match.
  17901. switch (NameR[9]) {
  17902. default: break;
  17903. case 'a': // 2 strings to match.
  17904. if (memcmp(NameR.data()+10, "dds.", 4))
  17905. break;
  17906. switch (NameR[14]) {
  17907. default: break;
  17908. case 'b': // 1 string to match.
  17909. return Intrinsic::x86_avx2_padds_b; // "86.avx2.padds.b"
  17910. case 'w': // 1 string to match.
  17911. return Intrinsic::x86_avx2_padds_w; // "86.avx2.padds.w"
  17912. }
  17913. break;
  17914. case 'b': // 1 string to match.
  17915. if (memcmp(NameR.data()+10, "lendw", 5))
  17916. break;
  17917. return Intrinsic::x86_avx2_pblendw; // "86.avx2.pblendw"
  17918. case 'h': // 4 strings to match.
  17919. switch (NameR[10]) {
  17920. default: break;
  17921. case 'a': // 2 strings to match.
  17922. if (memcmp(NameR.data()+11, "dd.", 3))
  17923. break;
  17924. switch (NameR[14]) {
  17925. default: break;
  17926. case 'd': // 1 string to match.
  17927. return Intrinsic::x86_avx2_phadd_d; // "86.avx2.phadd.d"
  17928. case 'w': // 1 string to match.
  17929. return Intrinsic::x86_avx2_phadd_w; // "86.avx2.phadd.w"
  17930. }
  17931. break;
  17932. case 's': // 2 strings to match.
  17933. if (memcmp(NameR.data()+11, "ub.", 3))
  17934. break;
  17935. switch (NameR[14]) {
  17936. default: break;
  17937. case 'd': // 1 string to match.
  17938. return Intrinsic::x86_avx2_phsub_d; // "86.avx2.phsub.d"
  17939. case 'w': // 1 string to match.
  17940. return Intrinsic::x86_avx2_phsub_w; // "86.avx2.phsub.w"
  17941. }
  17942. break;
  17943. }
  17944. break;
  17945. case 'm': // 14 strings to match.
  17946. switch (NameR[10]) {
  17947. default: break;
  17948. case 'a': // 6 strings to match.
  17949. if (NameR[11] != 'x')
  17950. break;
  17951. switch (NameR[12]) {
  17952. default: break;
  17953. case 's': // 3 strings to match.
  17954. if (NameR[13] != '.')
  17955. break;
  17956. switch (NameR[14]) {
  17957. default: break;
  17958. case 'b': // 1 string to match.
  17959. return Intrinsic::x86_avx2_pmaxs_b; // "86.avx2.pmaxs.b"
  17960. case 'd': // 1 string to match.
  17961. return Intrinsic::x86_avx2_pmaxs_d; // "86.avx2.pmaxs.d"
  17962. case 'w': // 1 string to match.
  17963. return Intrinsic::x86_avx2_pmaxs_w; // "86.avx2.pmaxs.w"
  17964. }
  17965. break;
  17966. case 'u': // 3 strings to match.
  17967. if (NameR[13] != '.')
  17968. break;
  17969. switch (NameR[14]) {
  17970. default: break;
  17971. case 'b': // 1 string to match.
  17972. return Intrinsic::x86_avx2_pmaxu_b; // "86.avx2.pmaxu.b"
  17973. case 'd': // 1 string to match.
  17974. return Intrinsic::x86_avx2_pmaxu_d; // "86.avx2.pmaxu.d"
  17975. case 'w': // 1 string to match.
  17976. return Intrinsic::x86_avx2_pmaxu_w; // "86.avx2.pmaxu.w"
  17977. }
  17978. break;
  17979. }
  17980. break;
  17981. case 'i': // 6 strings to match.
  17982. if (NameR[11] != 'n')
  17983. break;
  17984. switch (NameR[12]) {
  17985. default: break;
  17986. case 's': // 3 strings to match.
  17987. if (NameR[13] != '.')
  17988. break;
  17989. switch (NameR[14]) {
  17990. default: break;
  17991. case 'b': // 1 string to match.
  17992. return Intrinsic::x86_avx2_pmins_b; // "86.avx2.pmins.b"
  17993. case 'd': // 1 string to match.
  17994. return Intrinsic::x86_avx2_pmins_d; // "86.avx2.pmins.d"
  17995. case 'w': // 1 string to match.
  17996. return Intrinsic::x86_avx2_pmins_w; // "86.avx2.pmins.w"
  17997. }
  17998. break;
  17999. case 'u': // 3 strings to match.
  18000. if (NameR[13] != '.')
  18001. break;
  18002. switch (NameR[14]) {
  18003. default: break;
  18004. case 'b': // 1 string to match.
  18005. return Intrinsic::x86_avx2_pminu_b; // "86.avx2.pminu.b"
  18006. case 'd': // 1 string to match.
  18007. return Intrinsic::x86_avx2_pminu_d; // "86.avx2.pminu.d"
  18008. case 'w': // 1 string to match.
  18009. return Intrinsic::x86_avx2_pminu_w; // "86.avx2.pminu.w"
  18010. }
  18011. break;
  18012. }
  18013. break;
  18014. case 'u': // 2 strings to match.
  18015. if (NameR[11] != 'l')
  18016. break;
  18017. switch (NameR[12]) {
  18018. default: break;
  18019. case '.': // 1 string to match.
  18020. if (memcmp(NameR.data()+13, "dq", 2))
  18021. break;
  18022. return Intrinsic::x86_avx2_pmul_dq; // "86.avx2.pmul.dq"
  18023. case 'h': // 1 string to match.
  18024. if (memcmp(NameR.data()+13, ".w", 2))
  18025. break;
  18026. return Intrinsic::x86_avx2_pmulh_w; // "86.avx2.pmulh.w"
  18027. }
  18028. break;
  18029. }
  18030. break;
  18031. case 's': // 22 strings to match.
  18032. switch (NameR[10]) {
  18033. default: break;
  18034. case 'a': // 1 string to match.
  18035. if (memcmp(NameR.data()+11, "d.bw", 4))
  18036. break;
  18037. return Intrinsic::x86_avx2_psad_bw; // "86.avx2.psad.bw"
  18038. case 'h': // 1 string to match.
  18039. if (memcmp(NameR.data()+11, "uf.b", 4))
  18040. break;
  18041. return Intrinsic::x86_avx2_pshuf_b; // "86.avx2.pshuf.b"
  18042. case 'i': // 3 strings to match.
  18043. if (memcmp(NameR.data()+11, "gn.", 3))
  18044. break;
  18045. switch (NameR[14]) {
  18046. default: break;
  18047. case 'b': // 1 string to match.
  18048. return Intrinsic::x86_avx2_psign_b; // "86.avx2.psign.b"
  18049. case 'd': // 1 string to match.
  18050. return Intrinsic::x86_avx2_psign_d; // "86.avx2.psign.d"
  18051. case 'w': // 1 string to match.
  18052. return Intrinsic::x86_avx2_psign_w; // "86.avx2.psign.w"
  18053. }
  18054. break;
  18055. case 'l': // 6 strings to match.
  18056. if (NameR[11] != 'l')
  18057. break;
  18058. switch (NameR[12]) {
  18059. default: break;
  18060. case '.': // 1 string to match.
  18061. if (memcmp(NameR.data()+13, "dq", 2))
  18062. break;
  18063. return Intrinsic::x86_avx2_psll_dq; // "86.avx2.psll.dq"
  18064. case 'i': // 3 strings to match.
  18065. if (NameR[13] != '.')
  18066. break;
  18067. switch (NameR[14]) {
  18068. default: break;
  18069. case 'd': // 1 string to match.
  18070. return Intrinsic::x86_avx2_pslli_d; // "86.avx2.pslli.d"
  18071. case 'q': // 1 string to match.
  18072. return Intrinsic::x86_avx2_pslli_q; // "86.avx2.pslli.q"
  18073. case 'w': // 1 string to match.
  18074. return Intrinsic::x86_avx2_pslli_w; // "86.avx2.pslli.w"
  18075. }
  18076. break;
  18077. case 'v': // 2 strings to match.
  18078. if (NameR[13] != '.')
  18079. break;
  18080. switch (NameR[14]) {
  18081. default: break;
  18082. case 'd': // 1 string to match.
  18083. return Intrinsic::x86_avx2_psllv_d; // "86.avx2.psllv.d"
  18084. case 'q': // 1 string to match.
  18085. return Intrinsic::x86_avx2_psllv_q; // "86.avx2.psllv.q"
  18086. }
  18087. break;
  18088. }
  18089. break;
  18090. case 'r': // 9 strings to match.
  18091. switch (NameR[11]) {
  18092. default: break;
  18093. case 'a': // 3 strings to match.
  18094. switch (NameR[12]) {
  18095. default: break;
  18096. case 'i': // 2 strings to match.
  18097. if (NameR[13] != '.')
  18098. break;
  18099. switch (NameR[14]) {
  18100. default: break;
  18101. case 'd': // 1 string to match.
  18102. return Intrinsic::x86_avx2_psrai_d; // "86.avx2.psrai.d"
  18103. case 'w': // 1 string to match.
  18104. return Intrinsic::x86_avx2_psrai_w; // "86.avx2.psrai.w"
  18105. }
  18106. break;
  18107. case 'v': // 1 string to match.
  18108. if (memcmp(NameR.data()+13, ".d", 2))
  18109. break;
  18110. return Intrinsic::x86_avx2_psrav_d; // "86.avx2.psrav.d"
  18111. }
  18112. break;
  18113. case 'l': // 6 strings to match.
  18114. switch (NameR[12]) {
  18115. default: break;
  18116. case '.': // 1 string to match.
  18117. if (memcmp(NameR.data()+13, "dq", 2))
  18118. break;
  18119. return Intrinsic::x86_avx2_psrl_dq; // "86.avx2.psrl.dq"
  18120. case 'i': // 3 strings to match.
  18121. if (NameR[13] != '.')
  18122. break;
  18123. switch (NameR[14]) {
  18124. default: break;
  18125. case 'd': // 1 string to match.
  18126. return Intrinsic::x86_avx2_psrli_d; // "86.avx2.psrli.d"
  18127. case 'q': // 1 string to match.
  18128. return Intrinsic::x86_avx2_psrli_q; // "86.avx2.psrli.q"
  18129. case 'w': // 1 string to match.
  18130. return Intrinsic::x86_avx2_psrli_w; // "86.avx2.psrli.w"
  18131. }
  18132. break;
  18133. case 'v': // 2 strings to match.
  18134. if (NameR[13] != '.')
  18135. break;
  18136. switch (NameR[14]) {
  18137. default: break;
  18138. case 'd': // 1 string to match.
  18139. return Intrinsic::x86_avx2_psrlv_d; // "86.avx2.psrlv.d"
  18140. case 'q': // 1 string to match.
  18141. return Intrinsic::x86_avx2_psrlv_q; // "86.avx2.psrlv.q"
  18142. }
  18143. break;
  18144. }
  18145. break;
  18146. }
  18147. break;
  18148. case 'u': // 2 strings to match.
  18149. if (memcmp(NameR.data()+11, "bs.", 3))
  18150. break;
  18151. switch (NameR[14]) {
  18152. default: break;
  18153. case 'b': // 1 string to match.
  18154. return Intrinsic::x86_avx2_psubs_b; // "86.avx2.psubs.b"
  18155. case 'w': // 1 string to match.
  18156. return Intrinsic::x86_avx2_psubs_w; // "86.avx2.psubs.w"
  18157. }
  18158. break;
  18159. }
  18160. break;
  18161. }
  18162. break;
  18163. }
  18164. break;
  18165. }
  18166. break;
  18167. }
  18168. break;
  18169. case 'b': // 2 strings to match.
  18170. if (memcmp(NameR.data()+4, "mi.bextr.", 9))
  18171. break;
  18172. switch (NameR[13]) {
  18173. default: break;
  18174. case '3': // 1 string to match.
  18175. if (NameR[14] != '2')
  18176. break;
  18177. return Intrinsic::x86_bmi_bextr_32; // "86.bmi.bextr.32"
  18178. case '6': // 1 string to match.
  18179. if (NameR[14] != '4')
  18180. break;
  18181. return Intrinsic::x86_bmi_bextr_64; // "86.bmi.bextr.64"
  18182. }
  18183. break;
  18184. case 'm': // 19 strings to match.
  18185. if (memcmp(NameR.data()+4, "mx.", 3))
  18186. break;
  18187. switch (NameR[7]) {
  18188. default: break;
  18189. case 'm': // 2 strings to match.
  18190. switch (NameR[8]) {
  18191. default: break;
  18192. case 'a': // 1 string to match.
  18193. if (memcmp(NameR.data()+9, "skmovq", 6))
  18194. break;
  18195. return Intrinsic::x86_mmx_maskmovq; // "86.mmx.maskmovq"
  18196. case 'o': // 1 string to match.
  18197. if (memcmp(NameR.data()+9, "vnt.dq", 6))
  18198. break;
  18199. return Intrinsic::x86_mmx_movnt_dq; // "86.mmx.movnt.dq"
  18200. }
  18201. break;
  18202. case 'p': // 17 strings to match.
  18203. switch (NameR[8]) {
  18204. default: break;
  18205. case 'a': // 5 strings to match.
  18206. switch (NameR[9]) {
  18207. default: break;
  18208. case 'c': // 3 strings to match.
  18209. if (NameR[10] != 'k')
  18210. break;
  18211. switch (NameR[11]) {
  18212. default: break;
  18213. case 's': // 2 strings to match.
  18214. if (NameR[12] != 's')
  18215. break;
  18216. switch (NameR[13]) {
  18217. default: break;
  18218. case 'd': // 1 string to match.
  18219. if (NameR[14] != 'w')
  18220. break;
  18221. return Intrinsic::x86_mmx_packssdw; // "86.mmx.packssdw"
  18222. case 'w': // 1 string to match.
  18223. if (NameR[14] != 'b')
  18224. break;
  18225. return Intrinsic::x86_mmx_packsswb; // "86.mmx.packsswb"
  18226. }
  18227. break;
  18228. case 'u': // 1 string to match.
  18229. if (memcmp(NameR.data()+12, "swb", 3))
  18230. break;
  18231. return Intrinsic::x86_mmx_packuswb; // "86.mmx.packuswb"
  18232. }
  18233. break;
  18234. case 'd': // 2 strings to match.
  18235. if (memcmp(NameR.data()+10, "dus.", 4))
  18236. break;
  18237. switch (NameR[14]) {
  18238. default: break;
  18239. case 'b': // 1 string to match.
  18240. return Intrinsic::x86_mmx_paddus_b; // "86.mmx.paddus.b"
  18241. case 'w': // 1 string to match.
  18242. return Intrinsic::x86_mmx_paddus_w; // "86.mmx.paddus.w"
  18243. }
  18244. break;
  18245. }
  18246. break;
  18247. case 'c': // 6 strings to match.
  18248. if (memcmp(NameR.data()+9, "mp", 2))
  18249. break;
  18250. switch (NameR[11]) {
  18251. default: break;
  18252. case 'e': // 3 strings to match.
  18253. if (memcmp(NameR.data()+12, "q.", 2))
  18254. break;
  18255. switch (NameR[14]) {
  18256. default: break;
  18257. case 'b': // 1 string to match.
  18258. return Intrinsic::x86_mmx_pcmpeq_b; // "86.mmx.pcmpeq.b"
  18259. case 'd': // 1 string to match.
  18260. return Intrinsic::x86_mmx_pcmpeq_d; // "86.mmx.pcmpeq.d"
  18261. case 'w': // 1 string to match.
  18262. return Intrinsic::x86_mmx_pcmpeq_w; // "86.mmx.pcmpeq.w"
  18263. }
  18264. break;
  18265. case 'g': // 3 strings to match.
  18266. if (memcmp(NameR.data()+12, "t.", 2))
  18267. break;
  18268. switch (NameR[14]) {
  18269. default: break;
  18270. case 'b': // 1 string to match.
  18271. return Intrinsic::x86_mmx_pcmpgt_b; // "86.mmx.pcmpgt.b"
  18272. case 'd': // 1 string to match.
  18273. return Intrinsic::x86_mmx_pcmpgt_d; // "86.mmx.pcmpgt.d"
  18274. case 'w': // 1 string to match.
  18275. return Intrinsic::x86_mmx_pcmpgt_w; // "86.mmx.pcmpgt.w"
  18276. }
  18277. break;
  18278. }
  18279. break;
  18280. case 'm': // 4 strings to match.
  18281. switch (NameR[9]) {
  18282. default: break;
  18283. case 'a': // 1 string to match.
  18284. if (memcmp(NameR.data()+10, "dd.wd", 5))
  18285. break;
  18286. return Intrinsic::x86_mmx_pmadd_wd; // "86.mmx.pmadd.wd"
  18287. case 'o': // 1 string to match.
  18288. if (memcmp(NameR.data()+10, "vmskb", 5))
  18289. break;
  18290. return Intrinsic::x86_mmx_pmovmskb; // "86.mmx.pmovmskb"
  18291. case 'u': // 2 strings to match.
  18292. if (NameR[10] != 'l')
  18293. break;
  18294. switch (NameR[11]) {
  18295. default: break;
  18296. case 'h': // 1 string to match.
  18297. if (memcmp(NameR.data()+12, "u.w", 3))
  18298. break;
  18299. return Intrinsic::x86_mmx_pmulhu_w; // "86.mmx.pmulhu.w"
  18300. case 'u': // 1 string to match.
  18301. if (memcmp(NameR.data()+12, ".dq", 3))
  18302. break;
  18303. return Intrinsic::x86_mmx_pmulu_dq; // "86.mmx.pmulu.dq"
  18304. }
  18305. break;
  18306. }
  18307. break;
  18308. case 's': // 2 strings to match.
  18309. if (memcmp(NameR.data()+9, "ubus.", 5))
  18310. break;
  18311. switch (NameR[14]) {
  18312. default: break;
  18313. case 'b': // 1 string to match.
  18314. return Intrinsic::x86_mmx_psubus_b; // "86.mmx.psubus.b"
  18315. case 'w': // 1 string to match.
  18316. return Intrinsic::x86_mmx_psubus_w; // "86.mmx.psubus.w"
  18317. }
  18318. break;
  18319. }
  18320. break;
  18321. }
  18322. break;
  18323. case 's': // 54 strings to match.
  18324. if (NameR[4] != 's')
  18325. break;
  18326. switch (NameR[5]) {
  18327. default: break;
  18328. case 'e': // 51 strings to match.
  18329. switch (NameR[6]) {
  18330. default: break;
  18331. case '.': // 8 strings to match.
  18332. switch (NameR[7]) {
  18333. default: break;
  18334. case 'c': // 6 strings to match.
  18335. if (memcmp(NameR.data()+8, "vt", 2))
  18336. break;
  18337. switch (NameR[10]) {
  18338. default: break;
  18339. case 'p': // 4 strings to match.
  18340. switch (NameR[11]) {
  18341. default: break;
  18342. case 'd': // 1 string to match.
  18343. if (memcmp(NameR.data()+12, "2pi", 3))
  18344. break;
  18345. return Intrinsic::x86_sse_cvtpd2pi; // "86.sse.cvtpd2pi"
  18346. case 'i': // 2 strings to match.
  18347. if (memcmp(NameR.data()+12, "2p", 2))
  18348. break;
  18349. switch (NameR[14]) {
  18350. default: break;
  18351. case 'd': // 1 string to match.
  18352. return Intrinsic::x86_sse_cvtpi2pd; // "86.sse.cvtpi2pd"
  18353. case 's': // 1 string to match.
  18354. return Intrinsic::x86_sse_cvtpi2ps; // "86.sse.cvtpi2ps"
  18355. }
  18356. break;
  18357. case 's': // 1 string to match.
  18358. if (memcmp(NameR.data()+12, "2pi", 3))
  18359. break;
  18360. return Intrinsic::x86_sse_cvtps2pi; // "86.sse.cvtps2pi"
  18361. }
  18362. break;
  18363. case 's': // 2 strings to match.
  18364. switch (NameR[11]) {
  18365. default: break;
  18366. case 'i': // 1 string to match.
  18367. if (memcmp(NameR.data()+12, "2ss", 3))
  18368. break;
  18369. return Intrinsic::x86_sse_cvtsi2ss; // "86.sse.cvtsi2ss"
  18370. case 's': // 1 string to match.
  18371. if (memcmp(NameR.data()+12, "2si", 3))
  18372. break;
  18373. return Intrinsic::x86_sse_cvtss2si; // "86.sse.cvtss2si"
  18374. }
  18375. break;
  18376. }
  18377. break;
  18378. case 'r': // 2 strings to match.
  18379. if (memcmp(NameR.data()+8, "sqrt.", 5))
  18380. break;
  18381. switch (NameR[13]) {
  18382. default: break;
  18383. case 'p': // 1 string to match.
  18384. if (NameR[14] != 's')
  18385. break;
  18386. return Intrinsic::x86_sse_rsqrt_ps; // "86.sse.rsqrt.ps"
  18387. case 's': // 1 string to match.
  18388. if (NameR[14] != 's')
  18389. break;
  18390. return Intrinsic::x86_sse_rsqrt_ss; // "86.sse.rsqrt.ss"
  18391. }
  18392. break;
  18393. }
  18394. break;
  18395. case '2': // 23 strings to match.
  18396. if (NameR[7] != '.')
  18397. break;
  18398. switch (NameR[8]) {
  18399. default: break;
  18400. case 'c': // 1 string to match.
  18401. if (memcmp(NameR.data()+9, "lflush", 6))
  18402. break;
  18403. return Intrinsic::x86_sse2_clflush; // "86.sse2.clflush"
  18404. case 'p': // 20 strings to match.
  18405. switch (NameR[9]) {
  18406. default: break;
  18407. case 'a': // 2 strings to match.
  18408. if (memcmp(NameR.data()+10, "dds.", 4))
  18409. break;
  18410. switch (NameR[14]) {
  18411. default: break;
  18412. case 'b': // 1 string to match.
  18413. return Intrinsic::x86_sse2_padds_b; // "86.sse2.padds.b"
  18414. case 'w': // 1 string to match.
  18415. return Intrinsic::x86_sse2_padds_w; // "86.sse2.padds.w"
  18416. }
  18417. break;
  18418. case 'm': // 5 strings to match.
  18419. switch (NameR[10]) {
  18420. default: break;
  18421. case 'a': // 2 strings to match.
  18422. if (NameR[11] != 'x')
  18423. break;
  18424. switch (NameR[12]) {
  18425. default: break;
  18426. case 's': // 1 string to match.
  18427. if (memcmp(NameR.data()+13, ".w", 2))
  18428. break;
  18429. return Intrinsic::x86_sse2_pmaxs_w; // "86.sse2.pmaxs.w"
  18430. case 'u': // 1 string to match.
  18431. if (memcmp(NameR.data()+13, ".b", 2))
  18432. break;
  18433. return Intrinsic::x86_sse2_pmaxu_b; // "86.sse2.pmaxu.b"
  18434. }
  18435. break;
  18436. case 'i': // 2 strings to match.
  18437. if (NameR[11] != 'n')
  18438. break;
  18439. switch (NameR[12]) {
  18440. default: break;
  18441. case 's': // 1 string to match.
  18442. if (memcmp(NameR.data()+13, ".w", 2))
  18443. break;
  18444. return Intrinsic::x86_sse2_pmins_w; // "86.sse2.pmins.w"
  18445. case 'u': // 1 string to match.
  18446. if (memcmp(NameR.data()+13, ".b", 2))
  18447. break;
  18448. return Intrinsic::x86_sse2_pminu_b; // "86.sse2.pminu.b"
  18449. }
  18450. break;
  18451. case 'u': // 1 string to match.
  18452. if (memcmp(NameR.data()+11, "lh.w", 4))
  18453. break;
  18454. return Intrinsic::x86_sse2_pmulh_w; // "86.sse2.pmulh.w"
  18455. }
  18456. break;
  18457. case 's': // 13 strings to match.
  18458. switch (NameR[10]) {
  18459. default: break;
  18460. case 'a': // 1 string to match.
  18461. if (memcmp(NameR.data()+11, "d.bw", 4))
  18462. break;
  18463. return Intrinsic::x86_sse2_psad_bw; // "86.sse2.psad.bw"
  18464. case 'l': // 4 strings to match.
  18465. if (NameR[11] != 'l')
  18466. break;
  18467. switch (NameR[12]) {
  18468. default: break;
  18469. case '.': // 1 string to match.
  18470. if (memcmp(NameR.data()+13, "dq", 2))
  18471. break;
  18472. return Intrinsic::x86_sse2_psll_dq; // "86.sse2.psll.dq"
  18473. case 'i': // 3 strings to match.
  18474. if (NameR[13] != '.')
  18475. break;
  18476. switch (NameR[14]) {
  18477. default: break;
  18478. case 'd': // 1 string to match.
  18479. return Intrinsic::x86_sse2_pslli_d; // "86.sse2.pslli.d"
  18480. case 'q': // 1 string to match.
  18481. return Intrinsic::x86_sse2_pslli_q; // "86.sse2.pslli.q"
  18482. case 'w': // 1 string to match.
  18483. return Intrinsic::x86_sse2_pslli_w; // "86.sse2.pslli.w"
  18484. }
  18485. break;
  18486. }
  18487. break;
  18488. case 'r': // 6 strings to match.
  18489. switch (NameR[11]) {
  18490. default: break;
  18491. case 'a': // 2 strings to match.
  18492. if (memcmp(NameR.data()+12, "i.", 2))
  18493. break;
  18494. switch (NameR[14]) {
  18495. default: break;
  18496. case 'd': // 1 string to match.
  18497. return Intrinsic::x86_sse2_psrai_d; // "86.sse2.psrai.d"
  18498. case 'w': // 1 string to match.
  18499. return Intrinsic::x86_sse2_psrai_w; // "86.sse2.psrai.w"
  18500. }
  18501. break;
  18502. case 'l': // 4 strings to match.
  18503. switch (NameR[12]) {
  18504. default: break;
  18505. case '.': // 1 string to match.
  18506. if (memcmp(NameR.data()+13, "dq", 2))
  18507. break;
  18508. return Intrinsic::x86_sse2_psrl_dq; // "86.sse2.psrl.dq"
  18509. case 'i': // 3 strings to match.
  18510. if (NameR[13] != '.')
  18511. break;
  18512. switch (NameR[14]) {
  18513. default: break;
  18514. case 'd': // 1 string to match.
  18515. return Intrinsic::x86_sse2_psrli_d; // "86.sse2.psrli.d"
  18516. case 'q': // 1 string to match.
  18517. return Intrinsic::x86_sse2_psrli_q; // "86.sse2.psrli.q"
  18518. case 'w': // 1 string to match.
  18519. return Intrinsic::x86_sse2_psrli_w; // "86.sse2.psrli.w"
  18520. }
  18521. break;
  18522. }
  18523. break;
  18524. }
  18525. break;
  18526. case 'u': // 2 strings to match.
  18527. if (memcmp(NameR.data()+11, "bs.", 3))
  18528. break;
  18529. switch (NameR[14]) {
  18530. default: break;
  18531. case 'b': // 1 string to match.
  18532. return Intrinsic::x86_sse2_psubs_b; // "86.sse2.psubs.b"
  18533. case 'w': // 1 string to match.
  18534. return Intrinsic::x86_sse2_psubs_w; // "86.sse2.psubs.w"
  18535. }
  18536. break;
  18537. }
  18538. break;
  18539. }
  18540. break;
  18541. case 's': // 2 strings to match.
  18542. if (memcmp(NameR.data()+9, "qrt.", 4))
  18543. break;
  18544. switch (NameR[13]) {
  18545. default: break;
  18546. case 'p': // 1 string to match.
  18547. if (NameR[14] != 'd')
  18548. break;
  18549. return Intrinsic::x86_sse2_sqrt_pd; // "86.sse2.sqrt.pd"
  18550. case 's': // 1 string to match.
  18551. if (NameR[14] != 'd')
  18552. break;
  18553. return Intrinsic::x86_sse2_sqrt_sd; // "86.sse2.sqrt.sd"
  18554. }
  18555. break;
  18556. }
  18557. break;
  18558. case '3': // 5 strings to match.
  18559. if (NameR[7] != '.')
  18560. break;
  18561. switch (NameR[8]) {
  18562. default: break;
  18563. case 'h': // 4 strings to match.
  18564. switch (NameR[9]) {
  18565. default: break;
  18566. case 'a': // 2 strings to match.
  18567. if (memcmp(NameR.data()+10, "dd.p", 4))
  18568. break;
  18569. switch (NameR[14]) {
  18570. default: break;
  18571. case 'd': // 1 string to match.
  18572. return Intrinsic::x86_sse3_hadd_pd; // "86.sse3.hadd.pd"
  18573. case 's': // 1 string to match.
  18574. return Intrinsic::x86_sse3_hadd_ps; // "86.sse3.hadd.ps"
  18575. }
  18576. break;
  18577. case 's': // 2 strings to match.
  18578. if (memcmp(NameR.data()+10, "ub.p", 4))
  18579. break;
  18580. switch (NameR[14]) {
  18581. default: break;
  18582. case 'd': // 1 string to match.
  18583. return Intrinsic::x86_sse3_hsub_pd; // "86.sse3.hsub.pd"
  18584. case 's': // 1 string to match.
  18585. return Intrinsic::x86_sse3_hsub_ps; // "86.sse3.hsub.ps"
  18586. }
  18587. break;
  18588. }
  18589. break;
  18590. case 'm': // 1 string to match.
  18591. if (memcmp(NameR.data()+9, "onitor", 6))
  18592. break;
  18593. return Intrinsic::x86_sse3_monitor; // "86.sse3.monitor"
  18594. }
  18595. break;
  18596. case '4': // 15 strings to match.
  18597. switch (NameR[7]) {
  18598. default: break;
  18599. case '1': // 14 strings to match.
  18600. if (memcmp(NameR.data()+8, ".p", 2))
  18601. break;
  18602. switch (NameR[10]) {
  18603. default: break;
  18604. case 'e': // 3 strings to match.
  18605. if (memcmp(NameR.data()+11, "xtr", 3))
  18606. break;
  18607. switch (NameR[14]) {
  18608. default: break;
  18609. case 'b': // 1 string to match.
  18610. return Intrinsic::x86_sse41_pextrb; // "86.sse41.pextrb"
  18611. case 'd': // 1 string to match.
  18612. return Intrinsic::x86_sse41_pextrd; // "86.sse41.pextrd"
  18613. case 'q': // 1 string to match.
  18614. return Intrinsic::x86_sse41_pextrq; // "86.sse41.pextrq"
  18615. }
  18616. break;
  18617. case 'm': // 9 strings to match.
  18618. switch (NameR[11]) {
  18619. default: break;
  18620. case 'a': // 4 strings to match.
  18621. if (NameR[12] != 'x')
  18622. break;
  18623. switch (NameR[13]) {
  18624. default: break;
  18625. case 's': // 2 strings to match.
  18626. switch (NameR[14]) {
  18627. default: break;
  18628. case 'b': // 1 string to match.
  18629. return Intrinsic::x86_sse41_pmaxsb; // "86.sse41.pmaxsb"
  18630. case 'd': // 1 string to match.
  18631. return Intrinsic::x86_sse41_pmaxsd; // "86.sse41.pmaxsd"
  18632. }
  18633. break;
  18634. case 'u': // 2 strings to match.
  18635. switch (NameR[14]) {
  18636. default: break;
  18637. case 'd': // 1 string to match.
  18638. return Intrinsic::x86_sse41_pmaxud; // "86.sse41.pmaxud"
  18639. case 'w': // 1 string to match.
  18640. return Intrinsic::x86_sse41_pmaxuw; // "86.sse41.pmaxuw"
  18641. }
  18642. break;
  18643. }
  18644. break;
  18645. case 'i': // 4 strings to match.
  18646. if (NameR[12] != 'n')
  18647. break;
  18648. switch (NameR[13]) {
  18649. default: break;
  18650. case 's': // 2 strings to match.
  18651. switch (NameR[14]) {
  18652. default: break;
  18653. case 'b': // 1 string to match.
  18654. return Intrinsic::x86_sse41_pminsb; // "86.sse41.pminsb"
  18655. case 'd': // 1 string to match.
  18656. return Intrinsic::x86_sse41_pminsd; // "86.sse41.pminsd"
  18657. }
  18658. break;
  18659. case 'u': // 2 strings to match.
  18660. switch (NameR[14]) {
  18661. default: break;
  18662. case 'd': // 1 string to match.
  18663. return Intrinsic::x86_sse41_pminud; // "86.sse41.pminud"
  18664. case 'w': // 1 string to match.
  18665. return Intrinsic::x86_sse41_pminuw; // "86.sse41.pminuw"
  18666. }
  18667. break;
  18668. }
  18669. break;
  18670. case 'u': // 1 string to match.
  18671. if (memcmp(NameR.data()+12, "ldq", 3))
  18672. break;
  18673. return Intrinsic::x86_sse41_pmuldq; // "86.sse41.pmuldq"
  18674. }
  18675. break;
  18676. case 't': // 2 strings to match.
  18677. if (memcmp(NameR.data()+11, "est", 3))
  18678. break;
  18679. switch (NameR[14]) {
  18680. default: break;
  18681. case 'c': // 1 string to match.
  18682. return Intrinsic::x86_sse41_ptestc; // "86.sse41.ptestc"
  18683. case 'z': // 1 string to match.
  18684. return Intrinsic::x86_sse41_ptestz; // "86.sse41.ptestz"
  18685. }
  18686. break;
  18687. }
  18688. break;
  18689. case 'a': // 1 string to match.
  18690. if (memcmp(NameR.data()+8, ".extrqi", 7))
  18691. break;
  18692. return Intrinsic::x86_sse4a_extrqi; // "86.sse4a.extrqi"
  18693. }
  18694. break;
  18695. }
  18696. break;
  18697. case 's': // 3 strings to match.
  18698. if (memcmp(NameR.data()+6, "e3.pabs.", 8))
  18699. break;
  18700. switch (NameR[14]) {
  18701. default: break;
  18702. case 'b': // 1 string to match.
  18703. return Intrinsic::x86_ssse3_pabs_b; // "86.ssse3.pabs.b"
  18704. case 'd': // 1 string to match.
  18705. return Intrinsic::x86_ssse3_pabs_d; // "86.ssse3.pabs.d"
  18706. case 'w': // 1 string to match.
  18707. return Intrinsic::x86_ssse3_pabs_w; // "86.ssse3.pabs.w"
  18708. }
  18709. break;
  18710. }
  18711. break;
  18712. case 'x': // 16 strings to match.
  18713. if (memcmp(NameR.data()+4, "op.v", 4))
  18714. break;
  18715. switch (NameR[8]) {
  18716. default: break;
  18717. case 'f': // 4 strings to match.
  18718. if (memcmp(NameR.data()+9, "rcz.", 4))
  18719. break;
  18720. switch (NameR[13]) {
  18721. default: break;
  18722. case 'p': // 2 strings to match.
  18723. switch (NameR[14]) {
  18724. default: break;
  18725. case 'd': // 1 string to match.
  18726. return Intrinsic::x86_xop_vfrcz_pd; // "86.xop.vfrcz.pd"
  18727. case 's': // 1 string to match.
  18728. return Intrinsic::x86_xop_vfrcz_ps; // "86.xop.vfrcz.ps"
  18729. }
  18730. break;
  18731. case 's': // 2 strings to match.
  18732. switch (NameR[14]) {
  18733. default: break;
  18734. case 'd': // 1 string to match.
  18735. return Intrinsic::x86_xop_vfrcz_sd; // "86.xop.vfrcz.sd"
  18736. case 's': // 1 string to match.
  18737. return Intrinsic::x86_xop_vfrcz_ss; // "86.xop.vfrcz.ss"
  18738. }
  18739. break;
  18740. }
  18741. break;
  18742. case 'p': // 12 strings to match.
  18743. switch (NameR[9]) {
  18744. default: break;
  18745. case 'h': // 9 strings to match.
  18746. switch (NameR[10]) {
  18747. default: break;
  18748. case 'a': // 6 strings to match.
  18749. if (memcmp(NameR.data()+11, "dd", 2))
  18750. break;
  18751. switch (NameR[13]) {
  18752. default: break;
  18753. case 'b': // 3 strings to match.
  18754. switch (NameR[14]) {
  18755. default: break;
  18756. case 'd': // 1 string to match.
  18757. return Intrinsic::x86_xop_vphaddbd; // "86.xop.vphaddbd"
  18758. case 'q': // 1 string to match.
  18759. return Intrinsic::x86_xop_vphaddbq; // "86.xop.vphaddbq"
  18760. case 'w': // 1 string to match.
  18761. return Intrinsic::x86_xop_vphaddbw; // "86.xop.vphaddbw"
  18762. }
  18763. break;
  18764. case 'd': // 1 string to match.
  18765. if (NameR[14] != 'q')
  18766. break;
  18767. return Intrinsic::x86_xop_vphadddq; // "86.xop.vphadddq"
  18768. case 'w': // 2 strings to match.
  18769. switch (NameR[14]) {
  18770. default: break;
  18771. case 'd': // 1 string to match.
  18772. return Intrinsic::x86_xop_vphaddwd; // "86.xop.vphaddwd"
  18773. case 'q': // 1 string to match.
  18774. return Intrinsic::x86_xop_vphaddwq; // "86.xop.vphaddwq"
  18775. }
  18776. break;
  18777. }
  18778. break;
  18779. case 's': // 3 strings to match.
  18780. if (memcmp(NameR.data()+11, "ub", 2))
  18781. break;
  18782. switch (NameR[13]) {
  18783. default: break;
  18784. case 'b': // 1 string to match.
  18785. if (NameR[14] != 'w')
  18786. break;
  18787. return Intrinsic::x86_xop_vphsubbw; // "86.xop.vphsubbw"
  18788. case 'd': // 1 string to match.
  18789. if (NameR[14] != 'q')
  18790. break;
  18791. return Intrinsic::x86_xop_vphsubdq; // "86.xop.vphsubdq"
  18792. case 'w': // 1 string to match.
  18793. if (NameR[14] != 'd')
  18794. break;
  18795. return Intrinsic::x86_xop_vphsubwd; // "86.xop.vphsubwd"
  18796. }
  18797. break;
  18798. }
  18799. break;
  18800. case 'm': // 3 strings to match.
  18801. if (memcmp(NameR.data()+10, "acs", 3))
  18802. break;
  18803. switch (NameR[13]) {
  18804. default: break;
  18805. case 'd': // 1 string to match.
  18806. if (NameR[14] != 'd')
  18807. break;
  18808. return Intrinsic::x86_xop_vpmacsdd; // "86.xop.vpmacsdd"
  18809. case 'w': // 2 strings to match.
  18810. switch (NameR[14]) {
  18811. default: break;
  18812. case 'd': // 1 string to match.
  18813. return Intrinsic::x86_xop_vpmacswd; // "86.xop.vpmacswd"
  18814. case 'w': // 1 string to match.
  18815. return Intrinsic::x86_xop_vpmacsww; // "86.xop.vpmacsww"
  18816. }
  18817. break;
  18818. }
  18819. break;
  18820. }
  18821. break;
  18822. }
  18823. break;
  18824. }
  18825. break;
  18826. case 'c': // 1 string to match.
  18827. if (memcmp(NameR.data()+1, "ore.checkevent", 14))
  18828. break;
  18829. return Intrinsic::xcore_checkevent; // "core.checkevent"
  18830. }
  18831. break;
  18832. case 16: // 112 strings to match.
  18833. if (memcmp(NameR.data()+0, "86.", 3))
  18834. break;
  18835. switch (NameR[3]) {
  18836. default: break;
  18837. case '3': // 8 strings to match.
  18838. if (memcmp(NameR.data()+4, "dnow", 4))
  18839. break;
  18840. switch (NameR[8]) {
  18841. default: break;
  18842. case '.': // 6 strings to match.
  18843. if (NameR[9] != 'p')
  18844. break;
  18845. switch (NameR[10]) {
  18846. default: break;
  18847. case 'a': // 1 string to match.
  18848. if (memcmp(NameR.data()+11, "vgusb", 5))
  18849. break;
  18850. return Intrinsic::x86_3dnow_pavgusb; // "86.3dnow.pavgusb"
  18851. case 'f': // 4 strings to match.
  18852. switch (NameR[11]) {
  18853. default: break;
  18854. case 'c': // 3 strings to match.
  18855. if (memcmp(NameR.data()+12, "mp", 2))
  18856. break;
  18857. switch (NameR[14]) {
  18858. default: break;
  18859. case 'e': // 1 string to match.
  18860. if (NameR[15] != 'q')
  18861. break;
  18862. return Intrinsic::x86_3dnow_pfcmpeq; // "86.3dnow.pfcmpeq"
  18863. case 'g': // 2 strings to match.
  18864. switch (NameR[15]) {
  18865. default: break;
  18866. case 'e': // 1 string to match.
  18867. return Intrinsic::x86_3dnow_pfcmpge; // "86.3dnow.pfcmpge"
  18868. case 't': // 1 string to match.
  18869. return Intrinsic::x86_3dnow_pfcmpgt; // "86.3dnow.pfcmpgt"
  18870. }
  18871. break;
  18872. }
  18873. break;
  18874. case 'r': // 1 string to match.
  18875. if (memcmp(NameR.data()+12, "sqrt", 4))
  18876. break;
  18877. return Intrinsic::x86_3dnow_pfrsqrt; // "86.3dnow.pfrsqrt"
  18878. }
  18879. break;
  18880. case 'm': // 1 string to match.
  18881. if (memcmp(NameR.data()+11, "ulhrw", 5))
  18882. break;
  18883. return Intrinsic::x86_3dnow_pmulhrw; // "86.3dnow.pmulhrw"
  18884. }
  18885. break;
  18886. case 'a': // 2 strings to match.
  18887. if (memcmp(NameR.data()+9, ".p", 2))
  18888. break;
  18889. switch (NameR[11]) {
  18890. default: break;
  18891. case 'f': // 1 string to match.
  18892. if (memcmp(NameR.data()+12, "nacc", 4))
  18893. break;
  18894. return Intrinsic::x86_3dnowa_pfnacc; // "86.3dnowa.pfnacc"
  18895. case 's': // 1 string to match.
  18896. if (memcmp(NameR.data()+12, "wapd", 4))
  18897. break;
  18898. return Intrinsic::x86_3dnowa_pswapd; // "86.3dnowa.pswapd"
  18899. }
  18900. break;
  18901. }
  18902. break;
  18903. case 'a': // 33 strings to match.
  18904. if (memcmp(NameR.data()+4, "vx", 2))
  18905. break;
  18906. switch (NameR[6]) {
  18907. default: break;
  18908. case '.': // 5 strings to match.
  18909. switch (NameR[7]) {
  18910. default: break;
  18911. case 'd': // 1 string to match.
  18912. if (memcmp(NameR.data()+8, "p.ps.256", 8))
  18913. break;
  18914. return Intrinsic::x86_avx_dp_ps_256; // "86.avx.dp.ps.256"
  18915. case 'v': // 4 strings to match.
  18916. if (memcmp(NameR.data()+8, "test", 4))
  18917. break;
  18918. switch (NameR[12]) {
  18919. default: break;
  18920. case 'c': // 2 strings to match.
  18921. if (memcmp(NameR.data()+13, ".p", 2))
  18922. break;
  18923. switch (NameR[15]) {
  18924. default: break;
  18925. case 'd': // 1 string to match.
  18926. return Intrinsic::x86_avx_vtestc_pd; // "86.avx.vtestc.pd"
  18927. case 's': // 1 string to match.
  18928. return Intrinsic::x86_avx_vtestc_ps; // "86.avx.vtestc.ps"
  18929. }
  18930. break;
  18931. case 'z': // 2 strings to match.
  18932. if (memcmp(NameR.data()+13, ".p", 2))
  18933. break;
  18934. switch (NameR[15]) {
  18935. default: break;
  18936. case 'd': // 1 string to match.
  18937. return Intrinsic::x86_avx_vtestz_pd; // "86.avx.vtestz.pd"
  18938. case 's': // 1 string to match.
  18939. return Intrinsic::x86_avx_vtestz_ps; // "86.avx.vtestz.ps"
  18940. }
  18941. break;
  18942. }
  18943. break;
  18944. }
  18945. break;
  18946. case '2': // 28 strings to match.
  18947. if (NameR[7] != '.')
  18948. break;
  18949. switch (NameR[8]) {
  18950. default: break;
  18951. case 'm': // 1 string to match.
  18952. if (memcmp(NameR.data()+9, "ovntdqa", 7))
  18953. break;
  18954. return Intrinsic::x86_avx2_movntdqa; // "86.avx2.movntdqa"
  18955. case 'p': // 27 strings to match.
  18956. switch (NameR[9]) {
  18957. default: break;
  18958. case 'a': // 6 strings to match.
  18959. switch (NameR[10]) {
  18960. default: break;
  18961. case 'c': // 4 strings to match.
  18962. if (NameR[11] != 'k')
  18963. break;
  18964. switch (NameR[12]) {
  18965. default: break;
  18966. case 's': // 2 strings to match.
  18967. if (NameR[13] != 's')
  18968. break;
  18969. switch (NameR[14]) {
  18970. default: break;
  18971. case 'd': // 1 string to match.
  18972. if (NameR[15] != 'w')
  18973. break;
  18974. return Intrinsic::x86_avx2_packssdw; // "86.avx2.packssdw"
  18975. case 'w': // 1 string to match.
  18976. if (NameR[15] != 'b')
  18977. break;
  18978. return Intrinsic::x86_avx2_packsswb; // "86.avx2.packsswb"
  18979. }
  18980. break;
  18981. case 'u': // 2 strings to match.
  18982. if (NameR[13] != 's')
  18983. break;
  18984. switch (NameR[14]) {
  18985. default: break;
  18986. case 'd': // 1 string to match.
  18987. if (NameR[15] != 'w')
  18988. break;
  18989. return Intrinsic::x86_avx2_packusdw; // "86.avx2.packusdw"
  18990. case 'w': // 1 string to match.
  18991. if (NameR[15] != 'b')
  18992. break;
  18993. return Intrinsic::x86_avx2_packuswb; // "86.avx2.packuswb"
  18994. }
  18995. break;
  18996. }
  18997. break;
  18998. case 'd': // 2 strings to match.
  18999. if (memcmp(NameR.data()+11, "dus.", 4))
  19000. break;
  19001. switch (NameR[15]) {
  19002. default: break;
  19003. case 'b': // 1 string to match.
  19004. return Intrinsic::x86_avx2_paddus_b; // "86.avx2.paddus.b"
  19005. case 'w': // 1 string to match.
  19006. return Intrinsic::x86_avx2_paddus_w; // "86.avx2.paddus.w"
  19007. }
  19008. break;
  19009. }
  19010. break;
  19011. case 'b': // 1 string to match.
  19012. if (memcmp(NameR.data()+10, "lendvb", 6))
  19013. break;
  19014. return Intrinsic::x86_avx2_pblendvb; // "86.avx2.pblendvb"
  19015. case 'h': // 2 strings to match.
  19016. switch (NameR[10]) {
  19017. default: break;
  19018. case 'a': // 1 string to match.
  19019. if (memcmp(NameR.data()+11, "dd.sw", 5))
  19020. break;
  19021. return Intrinsic::x86_avx2_phadd_sw; // "86.avx2.phadd.sw"
  19022. case 's': // 1 string to match.
  19023. if (memcmp(NameR.data()+11, "ub.sw", 5))
  19024. break;
  19025. return Intrinsic::x86_avx2_phsub_sw; // "86.avx2.phsub.sw"
  19026. }
  19027. break;
  19028. case 'm': // 16 strings to match.
  19029. switch (NameR[10]) {
  19030. default: break;
  19031. case 'a': // 1 string to match.
  19032. if (memcmp(NameR.data()+11, "dd.wd", 5))
  19033. break;
  19034. return Intrinsic::x86_avx2_pmadd_wd; // "86.avx2.pmadd.wd"
  19035. case 'o': // 13 strings to match.
  19036. if (NameR[11] != 'v')
  19037. break;
  19038. switch (NameR[12]) {
  19039. default: break;
  19040. case 'm': // 1 string to match.
  19041. if (memcmp(NameR.data()+13, "skb", 3))
  19042. break;
  19043. return Intrinsic::x86_avx2_pmovmskb; // "86.avx2.pmovmskb"
  19044. case 's': // 6 strings to match.
  19045. if (NameR[13] != 'x')
  19046. break;
  19047. switch (NameR[14]) {
  19048. default: break;
  19049. case 'b': // 3 strings to match.
  19050. switch (NameR[15]) {
  19051. default: break;
  19052. case 'd': // 1 string to match.
  19053. return Intrinsic::x86_avx2_pmovsxbd; // "86.avx2.pmovsxbd"
  19054. case 'q': // 1 string to match.
  19055. return Intrinsic::x86_avx2_pmovsxbq; // "86.avx2.pmovsxbq"
  19056. case 'w': // 1 string to match.
  19057. return Intrinsic::x86_avx2_pmovsxbw; // "86.avx2.pmovsxbw"
  19058. }
  19059. break;
  19060. case 'd': // 1 string to match.
  19061. if (NameR[15] != 'q')
  19062. break;
  19063. return Intrinsic::x86_avx2_pmovsxdq; // "86.avx2.pmovsxdq"
  19064. case 'w': // 2 strings to match.
  19065. switch (NameR[15]) {
  19066. default: break;
  19067. case 'd': // 1 string to match.
  19068. return Intrinsic::x86_avx2_pmovsxwd; // "86.avx2.pmovsxwd"
  19069. case 'q': // 1 string to match.
  19070. return Intrinsic::x86_avx2_pmovsxwq; // "86.avx2.pmovsxwq"
  19071. }
  19072. break;
  19073. }
  19074. break;
  19075. case 'z': // 6 strings to match.
  19076. if (NameR[13] != 'x')
  19077. break;
  19078. switch (NameR[14]) {
  19079. default: break;
  19080. case 'b': // 3 strings to match.
  19081. switch (NameR[15]) {
  19082. default: break;
  19083. case 'd': // 1 string to match.
  19084. return Intrinsic::x86_avx2_pmovzxbd; // "86.avx2.pmovzxbd"
  19085. case 'q': // 1 string to match.
  19086. return Intrinsic::x86_avx2_pmovzxbq; // "86.avx2.pmovzxbq"
  19087. case 'w': // 1 string to match.
  19088. return Intrinsic::x86_avx2_pmovzxbw; // "86.avx2.pmovzxbw"
  19089. }
  19090. break;
  19091. case 'd': // 1 string to match.
  19092. if (NameR[15] != 'q')
  19093. break;
  19094. return Intrinsic::x86_avx2_pmovzxdq; // "86.avx2.pmovzxdq"
  19095. case 'w': // 2 strings to match.
  19096. switch (NameR[15]) {
  19097. default: break;
  19098. case 'd': // 1 string to match.
  19099. return Intrinsic::x86_avx2_pmovzxwd; // "86.avx2.pmovzxwd"
  19100. case 'q': // 1 string to match.
  19101. return Intrinsic::x86_avx2_pmovzxwq; // "86.avx2.pmovzxwq"
  19102. }
  19103. break;
  19104. }
  19105. break;
  19106. }
  19107. break;
  19108. case 'u': // 2 strings to match.
  19109. if (NameR[11] != 'l')
  19110. break;
  19111. switch (NameR[12]) {
  19112. default: break;
  19113. case 'h': // 1 string to match.
  19114. if (memcmp(NameR.data()+13, "u.w", 3))
  19115. break;
  19116. return Intrinsic::x86_avx2_pmulhu_w; // "86.avx2.pmulhu.w"
  19117. case 'u': // 1 string to match.
  19118. if (memcmp(NameR.data()+13, ".dq", 3))
  19119. break;
  19120. return Intrinsic::x86_avx2_pmulu_dq; // "86.avx2.pmulu.dq"
  19121. }
  19122. break;
  19123. }
  19124. break;
  19125. case 's': // 2 strings to match.
  19126. if (memcmp(NameR.data()+10, "ubus.", 5))
  19127. break;
  19128. switch (NameR[15]) {
  19129. default: break;
  19130. case 'b': // 1 string to match.
  19131. return Intrinsic::x86_avx2_psubus_b; // "86.avx2.psubus.b"
  19132. case 'w': // 1 string to match.
  19133. return Intrinsic::x86_avx2_psubus_w; // "86.avx2.psubus.w"
  19134. }
  19135. break;
  19136. }
  19137. break;
  19138. }
  19139. break;
  19140. }
  19141. break;
  19142. case 'f': // 8 strings to match.
  19143. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  19144. break;
  19145. switch (NameR[10]) {
  19146. default: break;
  19147. case 'a': // 4 strings to match.
  19148. if (memcmp(NameR.data()+11, "dd.", 3))
  19149. break;
  19150. switch (NameR[14]) {
  19151. default: break;
  19152. case 'p': // 2 strings to match.
  19153. switch (NameR[15]) {
  19154. default: break;
  19155. case 'd': // 1 string to match.
  19156. return Intrinsic::x86_fma_vfmadd_pd; // "86.fma.vfmadd.pd"
  19157. case 's': // 1 string to match.
  19158. return Intrinsic::x86_fma_vfmadd_ps; // "86.fma.vfmadd.ps"
  19159. }
  19160. break;
  19161. case 's': // 2 strings to match.
  19162. switch (NameR[15]) {
  19163. default: break;
  19164. case 'd': // 1 string to match.
  19165. return Intrinsic::x86_fma_vfmadd_sd; // "86.fma.vfmadd.sd"
  19166. case 's': // 1 string to match.
  19167. return Intrinsic::x86_fma_vfmadd_ss; // "86.fma.vfmadd.ss"
  19168. }
  19169. break;
  19170. }
  19171. break;
  19172. case 's': // 4 strings to match.
  19173. if (memcmp(NameR.data()+11, "ub.", 3))
  19174. break;
  19175. switch (NameR[14]) {
  19176. default: break;
  19177. case 'p': // 2 strings to match.
  19178. switch (NameR[15]) {
  19179. default: break;
  19180. case 'd': // 1 string to match.
  19181. return Intrinsic::x86_fma_vfmsub_pd; // "86.fma.vfmsub.pd"
  19182. case 's': // 1 string to match.
  19183. return Intrinsic::x86_fma_vfmsub_ps; // "86.fma.vfmsub.ps"
  19184. }
  19185. break;
  19186. case 's': // 2 strings to match.
  19187. switch (NameR[15]) {
  19188. default: break;
  19189. case 'd': // 1 string to match.
  19190. return Intrinsic::x86_fma_vfmsub_sd; // "86.fma.vfmsub.sd"
  19191. case 's': // 1 string to match.
  19192. return Intrinsic::x86_fma_vfmsub_ss; // "86.fma.vfmsub.ss"
  19193. }
  19194. break;
  19195. }
  19196. break;
  19197. }
  19198. break;
  19199. case 'm': // 7 strings to match.
  19200. if (memcmp(NameR.data()+4, "mx.p", 4))
  19201. break;
  19202. switch (NameR[8]) {
  19203. default: break;
  19204. case 'a': // 1 string to match.
  19205. if (memcmp(NameR.data()+9, "lignr.b", 7))
  19206. break;
  19207. return Intrinsic::x86_mmx_palignr_b; // "86.mmx.palignr.b"
  19208. case 'u': // 6 strings to match.
  19209. if (memcmp(NameR.data()+9, "npck", 4))
  19210. break;
  19211. switch (NameR[13]) {
  19212. default: break;
  19213. case 'h': // 3 strings to match.
  19214. switch (NameR[14]) {
  19215. default: break;
  19216. case 'b': // 1 string to match.
  19217. if (NameR[15] != 'w')
  19218. break;
  19219. return Intrinsic::x86_mmx_punpckhbw; // "86.mmx.punpckhbw"
  19220. case 'd': // 1 string to match.
  19221. if (NameR[15] != 'q')
  19222. break;
  19223. return Intrinsic::x86_mmx_punpckhdq; // "86.mmx.punpckhdq"
  19224. case 'w': // 1 string to match.
  19225. if (NameR[15] != 'd')
  19226. break;
  19227. return Intrinsic::x86_mmx_punpckhwd; // "86.mmx.punpckhwd"
  19228. }
  19229. break;
  19230. case 'l': // 3 strings to match.
  19231. switch (NameR[14]) {
  19232. default: break;
  19233. case 'b': // 1 string to match.
  19234. if (NameR[15] != 'w')
  19235. break;
  19236. return Intrinsic::x86_mmx_punpcklbw; // "86.mmx.punpcklbw"
  19237. case 'd': // 1 string to match.
  19238. if (NameR[15] != 'q')
  19239. break;
  19240. return Intrinsic::x86_mmx_punpckldq; // "86.mmx.punpckldq"
  19241. case 'w': // 1 string to match.
  19242. if (NameR[15] != 'd')
  19243. break;
  19244. return Intrinsic::x86_mmx_punpcklwd; // "86.mmx.punpcklwd"
  19245. }
  19246. break;
  19247. }
  19248. break;
  19249. }
  19250. break;
  19251. case 's': // 40 strings to match.
  19252. if (NameR[4] != 's')
  19253. break;
  19254. switch (NameR[5]) {
  19255. default: break;
  19256. case 'e': // 32 strings to match.
  19257. switch (NameR[6]) {
  19258. default: break;
  19259. case '.': // 10 strings to match.
  19260. switch (NameR[7]) {
  19261. default: break;
  19262. case 'c': // 8 strings to match.
  19263. switch (NameR[8]) {
  19264. default: break;
  19265. case 'o': // 5 strings to match.
  19266. if (memcmp(NameR.data()+9, "mi", 2))
  19267. break;
  19268. switch (NameR[11]) {
  19269. default: break;
  19270. case 'e': // 1 string to match.
  19271. if (memcmp(NameR.data()+12, "q.ss", 4))
  19272. break;
  19273. return Intrinsic::x86_sse_comieq_ss; // "86.sse.comieq.ss"
  19274. case 'g': // 2 strings to match.
  19275. switch (NameR[12]) {
  19276. default: break;
  19277. case 'e': // 1 string to match.
  19278. if (memcmp(NameR.data()+13, ".ss", 3))
  19279. break;
  19280. return Intrinsic::x86_sse_comige_ss; // "86.sse.comige.ss"
  19281. case 't': // 1 string to match.
  19282. if (memcmp(NameR.data()+13, ".ss", 3))
  19283. break;
  19284. return Intrinsic::x86_sse_comigt_ss; // "86.sse.comigt.ss"
  19285. }
  19286. break;
  19287. case 'l': // 2 strings to match.
  19288. switch (NameR[12]) {
  19289. default: break;
  19290. case 'e': // 1 string to match.
  19291. if (memcmp(NameR.data()+13, ".ss", 3))
  19292. break;
  19293. return Intrinsic::x86_sse_comile_ss; // "86.sse.comile.ss"
  19294. case 't': // 1 string to match.
  19295. if (memcmp(NameR.data()+13, ".ss", 3))
  19296. break;
  19297. return Intrinsic::x86_sse_comilt_ss; // "86.sse.comilt.ss"
  19298. }
  19299. break;
  19300. }
  19301. break;
  19302. case 'v': // 3 strings to match.
  19303. if (memcmp(NameR.data()+9, "tt", 2))
  19304. break;
  19305. switch (NameR[11]) {
  19306. default: break;
  19307. case 'p': // 2 strings to match.
  19308. switch (NameR[12]) {
  19309. default: break;
  19310. case 'd': // 1 string to match.
  19311. if (memcmp(NameR.data()+13, "2pi", 3))
  19312. break;
  19313. return Intrinsic::x86_sse_cvttpd2pi; // "86.sse.cvttpd2pi"
  19314. case 's': // 1 string to match.
  19315. if (memcmp(NameR.data()+13, "2pi", 3))
  19316. break;
  19317. return Intrinsic::x86_sse_cvttps2pi; // "86.sse.cvttps2pi"
  19318. }
  19319. break;
  19320. case 's': // 1 string to match.
  19321. if (memcmp(NameR.data()+12, "s2si", 4))
  19322. break;
  19323. return Intrinsic::x86_sse_cvttss2si; // "86.sse.cvttss2si"
  19324. }
  19325. break;
  19326. }
  19327. break;
  19328. case 'm': // 1 string to match.
  19329. if (memcmp(NameR.data()+8, "ovmsk.ps", 8))
  19330. break;
  19331. return Intrinsic::x86_sse_movmsk_ps; // "86.sse.movmsk.ps"
  19332. case 's': // 1 string to match.
  19333. if (memcmp(NameR.data()+8, "toreu.ps", 8))
  19334. break;
  19335. return Intrinsic::x86_sse_storeu_ps; // "86.sse.storeu.ps"
  19336. }
  19337. break;
  19338. case '2': // 17 strings to match.
  19339. if (NameR[7] != '.')
  19340. break;
  19341. switch (NameR[8]) {
  19342. default: break;
  19343. case 'c': // 10 strings to match.
  19344. if (memcmp(NameR.data()+9, "vt", 2))
  19345. break;
  19346. switch (NameR[11]) {
  19347. default: break;
  19348. case 'd': // 2 strings to match.
  19349. if (memcmp(NameR.data()+12, "q2p", 3))
  19350. break;
  19351. switch (NameR[15]) {
  19352. default: break;
  19353. case 'd': // 1 string to match.
  19354. return Intrinsic::x86_sse2_cvtdq2pd; // "86.sse2.cvtdq2pd"
  19355. case 's': // 1 string to match.
  19356. return Intrinsic::x86_sse2_cvtdq2ps; // "86.sse2.cvtdq2ps"
  19357. }
  19358. break;
  19359. case 'p': // 4 strings to match.
  19360. switch (NameR[12]) {
  19361. default: break;
  19362. case 'd': // 2 strings to match.
  19363. if (NameR[13] != '2')
  19364. break;
  19365. switch (NameR[14]) {
  19366. default: break;
  19367. case 'd': // 1 string to match.
  19368. if (NameR[15] != 'q')
  19369. break;
  19370. return Intrinsic::x86_sse2_cvtpd2dq; // "86.sse2.cvtpd2dq"
  19371. case 'p': // 1 string to match.
  19372. if (NameR[15] != 's')
  19373. break;
  19374. return Intrinsic::x86_sse2_cvtpd2ps; // "86.sse2.cvtpd2ps"
  19375. }
  19376. break;
  19377. case 's': // 2 strings to match.
  19378. if (NameR[13] != '2')
  19379. break;
  19380. switch (NameR[14]) {
  19381. default: break;
  19382. case 'd': // 1 string to match.
  19383. if (NameR[15] != 'q')
  19384. break;
  19385. return Intrinsic::x86_sse2_cvtps2dq; // "86.sse2.cvtps2dq"
  19386. case 'p': // 1 string to match.
  19387. if (NameR[15] != 'd')
  19388. break;
  19389. return Intrinsic::x86_sse2_cvtps2pd; // "86.sse2.cvtps2pd"
  19390. }
  19391. break;
  19392. }
  19393. break;
  19394. case 's': // 4 strings to match.
  19395. switch (NameR[12]) {
  19396. default: break;
  19397. case 'd': // 2 strings to match.
  19398. if (memcmp(NameR.data()+13, "2s", 2))
  19399. break;
  19400. switch (NameR[15]) {
  19401. default: break;
  19402. case 'i': // 1 string to match.
  19403. return Intrinsic::x86_sse2_cvtsd2si; // "86.sse2.cvtsd2si"
  19404. case 's': // 1 string to match.
  19405. return Intrinsic::x86_sse2_cvtsd2ss; // "86.sse2.cvtsd2ss"
  19406. }
  19407. break;
  19408. case 'i': // 1 string to match.
  19409. if (memcmp(NameR.data()+13, "2sd", 3))
  19410. break;
  19411. return Intrinsic::x86_sse2_cvtsi2sd; // "86.sse2.cvtsi2sd"
  19412. case 's': // 1 string to match.
  19413. if (memcmp(NameR.data()+13, "2sd", 3))
  19414. break;
  19415. return Intrinsic::x86_sse2_cvtss2sd; // "86.sse2.cvtss2sd"
  19416. }
  19417. break;
  19418. }
  19419. break;
  19420. case 'p': // 7 strings to match.
  19421. switch (NameR[9]) {
  19422. default: break;
  19423. case 'a': // 2 strings to match.
  19424. if (memcmp(NameR.data()+10, "ddus.", 5))
  19425. break;
  19426. switch (NameR[15]) {
  19427. default: break;
  19428. case 'b': // 1 string to match.
  19429. return Intrinsic::x86_sse2_paddus_b; // "86.sse2.paddus.b"
  19430. case 'w': // 1 string to match.
  19431. return Intrinsic::x86_sse2_paddus_w; // "86.sse2.paddus.w"
  19432. }
  19433. break;
  19434. case 'm': // 3 strings to match.
  19435. switch (NameR[10]) {
  19436. default: break;
  19437. case 'a': // 1 string to match.
  19438. if (memcmp(NameR.data()+11, "dd.wd", 5))
  19439. break;
  19440. return Intrinsic::x86_sse2_pmadd_wd; // "86.sse2.pmadd.wd"
  19441. case 'u': // 2 strings to match.
  19442. if (NameR[11] != 'l')
  19443. break;
  19444. switch (NameR[12]) {
  19445. default: break;
  19446. case 'h': // 1 string to match.
  19447. if (memcmp(NameR.data()+13, "u.w", 3))
  19448. break;
  19449. return Intrinsic::x86_sse2_pmulhu_w; // "86.sse2.pmulhu.w"
  19450. case 'u': // 1 string to match.
  19451. if (memcmp(NameR.data()+13, ".dq", 3))
  19452. break;
  19453. return Intrinsic::x86_sse2_pmulu_dq; // "86.sse2.pmulu.dq"
  19454. }
  19455. break;
  19456. }
  19457. break;
  19458. case 's': // 2 strings to match.
  19459. if (memcmp(NameR.data()+10, "ubus.", 5))
  19460. break;
  19461. switch (NameR[15]) {
  19462. default: break;
  19463. case 'b': // 1 string to match.
  19464. return Intrinsic::x86_sse2_psubus_b; // "86.sse2.psubus.b"
  19465. case 'w': // 1 string to match.
  19466. return Intrinsic::x86_sse2_psubus_w; // "86.sse2.psubus.w"
  19467. }
  19468. break;
  19469. }
  19470. break;
  19471. }
  19472. break;
  19473. case '4': // 5 strings to match.
  19474. switch (NameR[7]) {
  19475. default: break;
  19476. case '1': // 4 strings to match.
  19477. if (NameR[8] != '.')
  19478. break;
  19479. switch (NameR[9]) {
  19480. default: break;
  19481. case 'b': // 2 strings to match.
  19482. if (memcmp(NameR.data()+10, "lendp", 5))
  19483. break;
  19484. switch (NameR[15]) {
  19485. default: break;
  19486. case 'd': // 1 string to match.
  19487. return Intrinsic::x86_sse41_blendpd; // "86.sse41.blendpd"
  19488. case 's': // 1 string to match.
  19489. return Intrinsic::x86_sse41_blendps; // "86.sse41.blendps"
  19490. }
  19491. break;
  19492. case 'm': // 1 string to match.
  19493. if (memcmp(NameR.data()+10, "psadbw", 6))
  19494. break;
  19495. return Intrinsic::x86_sse41_mpsadbw; // "86.sse41.mpsadbw"
  19496. case 'p': // 1 string to match.
  19497. if (memcmp(NameR.data()+10, "blendw", 6))
  19498. break;
  19499. return Intrinsic::x86_sse41_pblendw; // "86.sse41.pblendw"
  19500. }
  19501. break;
  19502. case 'a': // 1 string to match.
  19503. if (memcmp(NameR.data()+8, ".insertq", 8))
  19504. break;
  19505. return Intrinsic::x86_sse4a_insertq; // "86.sse4a.insertq"
  19506. }
  19507. break;
  19508. }
  19509. break;
  19510. case 's': // 8 strings to match.
  19511. if (memcmp(NameR.data()+6, "e3.p", 4))
  19512. break;
  19513. switch (NameR[10]) {
  19514. default: break;
  19515. case 'h': // 4 strings to match.
  19516. switch (NameR[11]) {
  19517. default: break;
  19518. case 'a': // 2 strings to match.
  19519. if (memcmp(NameR.data()+12, "dd.", 3))
  19520. break;
  19521. switch (NameR[15]) {
  19522. default: break;
  19523. case 'd': // 1 string to match.
  19524. return Intrinsic::x86_ssse3_phadd_d; // "86.ssse3.phadd.d"
  19525. case 'w': // 1 string to match.
  19526. return Intrinsic::x86_ssse3_phadd_w; // "86.ssse3.phadd.w"
  19527. }
  19528. break;
  19529. case 's': // 2 strings to match.
  19530. if (memcmp(NameR.data()+12, "ub.", 3))
  19531. break;
  19532. switch (NameR[15]) {
  19533. default: break;
  19534. case 'd': // 1 string to match.
  19535. return Intrinsic::x86_ssse3_phsub_d; // "86.ssse3.phsub.d"
  19536. case 'w': // 1 string to match.
  19537. return Intrinsic::x86_ssse3_phsub_w; // "86.ssse3.phsub.w"
  19538. }
  19539. break;
  19540. }
  19541. break;
  19542. case 's': // 4 strings to match.
  19543. switch (NameR[11]) {
  19544. default: break;
  19545. case 'h': // 1 string to match.
  19546. if (memcmp(NameR.data()+12, "uf.b", 4))
  19547. break;
  19548. return Intrinsic::x86_ssse3_pshuf_b; // "86.ssse3.pshuf.b"
  19549. case 'i': // 3 strings to match.
  19550. if (memcmp(NameR.data()+12, "gn.", 3))
  19551. break;
  19552. switch (NameR[15]) {
  19553. default: break;
  19554. case 'b': // 1 string to match.
  19555. return Intrinsic::x86_ssse3_psign_b; // "86.ssse3.psign.b"
  19556. case 'd': // 1 string to match.
  19557. return Intrinsic::x86_ssse3_psign_d; // "86.ssse3.psign.d"
  19558. case 'w': // 1 string to match.
  19559. return Intrinsic::x86_ssse3_psign_w; // "86.ssse3.psign.w"
  19560. }
  19561. break;
  19562. }
  19563. break;
  19564. }
  19565. break;
  19566. }
  19567. break;
  19568. case 'v': // 4 strings to match.
  19569. if (memcmp(NameR.data()+4, "cvtp", 4))
  19570. break;
  19571. switch (NameR[8]) {
  19572. default: break;
  19573. case 'h': // 2 strings to match.
  19574. if (memcmp(NameR.data()+9, "2ps.", 4))
  19575. break;
  19576. switch (NameR[13]) {
  19577. default: break;
  19578. case '1': // 1 string to match.
  19579. if (memcmp(NameR.data()+14, "28", 2))
  19580. break;
  19581. return Intrinsic::x86_vcvtph2ps_128; // "86.vcvtph2ps.128"
  19582. case '2': // 1 string to match.
  19583. if (memcmp(NameR.data()+14, "56", 2))
  19584. break;
  19585. return Intrinsic::x86_vcvtph2ps_256; // "86.vcvtph2ps.256"
  19586. }
  19587. break;
  19588. case 's': // 2 strings to match.
  19589. if (memcmp(NameR.data()+9, "2ph.", 4))
  19590. break;
  19591. switch (NameR[13]) {
  19592. default: break;
  19593. case '1': // 1 string to match.
  19594. if (memcmp(NameR.data()+14, "28", 2))
  19595. break;
  19596. return Intrinsic::x86_vcvtps2ph_128; // "86.vcvtps2ph.128"
  19597. case '2': // 1 string to match.
  19598. if (memcmp(NameR.data()+14, "56", 2))
  19599. break;
  19600. return Intrinsic::x86_vcvtps2ph_256; // "86.vcvtps2ph.256"
  19601. }
  19602. break;
  19603. }
  19604. break;
  19605. case 'x': // 12 strings to match.
  19606. if (memcmp(NameR.data()+4, "op.vp", 5))
  19607. break;
  19608. switch (NameR[9]) {
  19609. default: break;
  19610. case 'h': // 6 strings to match.
  19611. if (memcmp(NameR.data()+10, "addu", 4))
  19612. break;
  19613. switch (NameR[14]) {
  19614. default: break;
  19615. case 'b': // 3 strings to match.
  19616. switch (NameR[15]) {
  19617. default: break;
  19618. case 'd': // 1 string to match.
  19619. return Intrinsic::x86_xop_vphaddubd; // "86.xop.vphaddubd"
  19620. case 'q': // 1 string to match.
  19621. return Intrinsic::x86_xop_vphaddubq; // "86.xop.vphaddubq"
  19622. case 'w': // 1 string to match.
  19623. return Intrinsic::x86_xop_vphaddubw; // "86.xop.vphaddubw"
  19624. }
  19625. break;
  19626. case 'd': // 1 string to match.
  19627. if (NameR[15] != 'q')
  19628. break;
  19629. return Intrinsic::x86_xop_vphaddudq; // "86.xop.vphaddudq"
  19630. case 'w': // 2 strings to match.
  19631. switch (NameR[15]) {
  19632. default: break;
  19633. case 'd': // 1 string to match.
  19634. return Intrinsic::x86_xop_vphadduwd; // "86.xop.vphadduwd"
  19635. case 'q': // 1 string to match.
  19636. return Intrinsic::x86_xop_vphadduwq; // "86.xop.vphadduwq"
  19637. }
  19638. break;
  19639. }
  19640. break;
  19641. case 'm': // 6 strings to match.
  19642. if (NameR[10] != 'a')
  19643. break;
  19644. switch (NameR[11]) {
  19645. default: break;
  19646. case 'c': // 5 strings to match.
  19647. if (NameR[12] != 's')
  19648. break;
  19649. switch (NameR[13]) {
  19650. default: break;
  19651. case 'd': // 2 strings to match.
  19652. if (NameR[14] != 'q')
  19653. break;
  19654. switch (NameR[15]) {
  19655. default: break;
  19656. case 'h': // 1 string to match.
  19657. return Intrinsic::x86_xop_vpmacsdqh; // "86.xop.vpmacsdqh"
  19658. case 'l': // 1 string to match.
  19659. return Intrinsic::x86_xop_vpmacsdql; // "86.xop.vpmacsdql"
  19660. }
  19661. break;
  19662. case 's': // 3 strings to match.
  19663. switch (NameR[14]) {
  19664. default: break;
  19665. case 'd': // 1 string to match.
  19666. if (NameR[15] != 'd')
  19667. break;
  19668. return Intrinsic::x86_xop_vpmacssdd; // "86.xop.vpmacssdd"
  19669. case 'w': // 2 strings to match.
  19670. switch (NameR[15]) {
  19671. default: break;
  19672. case 'd': // 1 string to match.
  19673. return Intrinsic::x86_xop_vpmacsswd; // "86.xop.vpmacsswd"
  19674. case 'w': // 1 string to match.
  19675. return Intrinsic::x86_xop_vpmacssww; // "86.xop.vpmacssww"
  19676. }
  19677. break;
  19678. }
  19679. break;
  19680. }
  19681. break;
  19682. case 'd': // 1 string to match.
  19683. if (memcmp(NameR.data()+12, "cswd", 4))
  19684. break;
  19685. return Intrinsic::x86_xop_vpmadcswd; // "86.xop.vpmadcswd"
  19686. }
  19687. break;
  19688. }
  19689. break;
  19690. }
  19691. break;
  19692. case 17: // 79 strings to match.
  19693. if (memcmp(NameR.data()+0, "86.", 3))
  19694. break;
  19695. switch (NameR[3]) {
  19696. default: break;
  19697. case '3': // 4 strings to match.
  19698. if (memcmp(NameR.data()+4, "dnow", 4))
  19699. break;
  19700. switch (NameR[8]) {
  19701. default: break;
  19702. case '.': // 3 strings to match.
  19703. if (memcmp(NameR.data()+9, "pfr", 3))
  19704. break;
  19705. switch (NameR[12]) {
  19706. default: break;
  19707. case 'c': // 2 strings to match.
  19708. if (memcmp(NameR.data()+13, "pit", 3))
  19709. break;
  19710. switch (NameR[16]) {
  19711. default: break;
  19712. case '1': // 1 string to match.
  19713. return Intrinsic::x86_3dnow_pfrcpit1; // "86.3dnow.pfrcpit1"
  19714. case '2': // 1 string to match.
  19715. return Intrinsic::x86_3dnow_pfrcpit2; // "86.3dnow.pfrcpit2"
  19716. }
  19717. break;
  19718. case 's': // 1 string to match.
  19719. if (memcmp(NameR.data()+13, "qit1", 4))
  19720. break;
  19721. return Intrinsic::x86_3dnow_pfrsqit1; // "86.3dnow.pfrsqit1"
  19722. }
  19723. break;
  19724. case 'a': // 1 string to match.
  19725. if (memcmp(NameR.data()+9, ".pfpnacc", 8))
  19726. break;
  19727. return Intrinsic::x86_3dnowa_pfpnacc; // "86.3dnowa.pfpnacc"
  19728. }
  19729. break;
  19730. case 'a': // 11 strings to match.
  19731. if (memcmp(NameR.data()+4, "vx.", 3))
  19732. break;
  19733. switch (NameR[7]) {
  19734. default: break;
  19735. case 'c': // 2 strings to match.
  19736. if (memcmp(NameR.data()+8, "mp.p", 4))
  19737. break;
  19738. switch (NameR[12]) {
  19739. default: break;
  19740. case 'd': // 1 string to match.
  19741. if (memcmp(NameR.data()+13, ".256", 4))
  19742. break;
  19743. return Intrinsic::x86_avx_cmp_pd_256; // "86.avx.cmp.pd.256"
  19744. case 's': // 1 string to match.
  19745. if (memcmp(NameR.data()+13, ".256", 4))
  19746. break;
  19747. return Intrinsic::x86_avx_cmp_ps_256; // "86.avx.cmp.ps.256"
  19748. }
  19749. break;
  19750. case 'l': // 1 string to match.
  19751. if (memcmp(NameR.data()+8, "du.dq.256", 9))
  19752. break;
  19753. return Intrinsic::x86_avx_ldu_dq_256; // "86.avx.ldu.dq.256"
  19754. case 'm': // 4 strings to match.
  19755. switch (NameR[8]) {
  19756. default: break;
  19757. case 'a': // 2 strings to match.
  19758. if (memcmp(NameR.data()+9, "x.p", 3))
  19759. break;
  19760. switch (NameR[12]) {
  19761. default: break;
  19762. case 'd': // 1 string to match.
  19763. if (memcmp(NameR.data()+13, ".256", 4))
  19764. break;
  19765. return Intrinsic::x86_avx_max_pd_256; // "86.avx.max.pd.256"
  19766. case 's': // 1 string to match.
  19767. if (memcmp(NameR.data()+13, ".256", 4))
  19768. break;
  19769. return Intrinsic::x86_avx_max_ps_256; // "86.avx.max.ps.256"
  19770. }
  19771. break;
  19772. case 'i': // 2 strings to match.
  19773. if (memcmp(NameR.data()+9, "n.p", 3))
  19774. break;
  19775. switch (NameR[12]) {
  19776. default: break;
  19777. case 'd': // 1 string to match.
  19778. if (memcmp(NameR.data()+13, ".256", 4))
  19779. break;
  19780. return Intrinsic::x86_avx_min_pd_256; // "86.avx.min.pd.256"
  19781. case 's': // 1 string to match.
  19782. if (memcmp(NameR.data()+13, ".256", 4))
  19783. break;
  19784. return Intrinsic::x86_avx_min_ps_256; // "86.avx.min.ps.256"
  19785. }
  19786. break;
  19787. }
  19788. break;
  19789. case 'p': // 2 strings to match.
  19790. if (memcmp(NameR.data()+8, "test", 4))
  19791. break;
  19792. switch (NameR[12]) {
  19793. default: break;
  19794. case 'c': // 1 string to match.
  19795. if (memcmp(NameR.data()+13, ".256", 4))
  19796. break;
  19797. return Intrinsic::x86_avx_ptestc_256; // "86.avx.ptestc.256"
  19798. case 'z': // 1 string to match.
  19799. if (memcmp(NameR.data()+13, ".256", 4))
  19800. break;
  19801. return Intrinsic::x86_avx_ptestz_256; // "86.avx.ptestz.256"
  19802. }
  19803. break;
  19804. case 'r': // 1 string to match.
  19805. if (memcmp(NameR.data()+8, "cp.ps.256", 9))
  19806. break;
  19807. return Intrinsic::x86_avx_rcp_ps_256; // "86.avx.rcp.ps.256"
  19808. case 'v': // 1 string to match.
  19809. if (memcmp(NameR.data()+8, "zeroupper", 9))
  19810. break;
  19811. return Intrinsic::x86_avx_vzeroupper; // "86.avx.vzeroupper"
  19812. }
  19813. break;
  19814. case 'f': // 8 strings to match.
  19815. if (memcmp(NameR.data()+4, "ma.vfnm", 7))
  19816. break;
  19817. switch (NameR[11]) {
  19818. default: break;
  19819. case 'a': // 4 strings to match.
  19820. if (memcmp(NameR.data()+12, "dd.", 3))
  19821. break;
  19822. switch (NameR[15]) {
  19823. default: break;
  19824. case 'p': // 2 strings to match.
  19825. switch (NameR[16]) {
  19826. default: break;
  19827. case 'd': // 1 string to match.
  19828. return Intrinsic::x86_fma_vfnmadd_pd; // "86.fma.vfnmadd.pd"
  19829. case 's': // 1 string to match.
  19830. return Intrinsic::x86_fma_vfnmadd_ps; // "86.fma.vfnmadd.ps"
  19831. }
  19832. break;
  19833. case 's': // 2 strings to match.
  19834. switch (NameR[16]) {
  19835. default: break;
  19836. case 'd': // 1 string to match.
  19837. return Intrinsic::x86_fma_vfnmadd_sd; // "86.fma.vfnmadd.sd"
  19838. case 's': // 1 string to match.
  19839. return Intrinsic::x86_fma_vfnmadd_ss; // "86.fma.vfnmadd.ss"
  19840. }
  19841. break;
  19842. }
  19843. break;
  19844. case 's': // 4 strings to match.
  19845. if (memcmp(NameR.data()+12, "ub.", 3))
  19846. break;
  19847. switch (NameR[15]) {
  19848. default: break;
  19849. case 'p': // 2 strings to match.
  19850. switch (NameR[16]) {
  19851. default: break;
  19852. case 'd': // 1 string to match.
  19853. return Intrinsic::x86_fma_vfnmsub_pd; // "86.fma.vfnmsub.pd"
  19854. case 's': // 1 string to match.
  19855. return Intrinsic::x86_fma_vfnmsub_ps; // "86.fma.vfnmsub.ps"
  19856. }
  19857. break;
  19858. case 's': // 2 strings to match.
  19859. switch (NameR[16]) {
  19860. default: break;
  19861. case 'd': // 1 string to match.
  19862. return Intrinsic::x86_fma_vfnmsub_sd; // "86.fma.vfnmsub.sd"
  19863. case 's': // 1 string to match.
  19864. return Intrinsic::x86_fma_vfnmsub_ss; // "86.fma.vfnmsub.ss"
  19865. }
  19866. break;
  19867. }
  19868. break;
  19869. }
  19870. break;
  19871. case 's': // 50 strings to match.
  19872. if (NameR[4] != 's')
  19873. break;
  19874. switch (NameR[5]) {
  19875. default: break;
  19876. case 'e': // 48 strings to match.
  19877. switch (NameR[6]) {
  19878. default: break;
  19879. case '.': // 8 strings to match.
  19880. switch (NameR[7]) {
  19881. default: break;
  19882. case 'c': // 3 strings to match.
  19883. switch (NameR[8]) {
  19884. default: break;
  19885. case 'o': // 1 string to match.
  19886. if (memcmp(NameR.data()+9, "mineq.ss", 8))
  19887. break;
  19888. return Intrinsic::x86_sse_comineq_ss; // "86.sse.comineq.ss"
  19889. case 'v': // 2 strings to match.
  19890. if (memcmp(NameR.data()+9, "ts", 2))
  19891. break;
  19892. switch (NameR[11]) {
  19893. default: break;
  19894. case 'i': // 1 string to match.
  19895. if (memcmp(NameR.data()+12, "642ss", 5))
  19896. break;
  19897. return Intrinsic::x86_sse_cvtsi642ss; // "86.sse.cvtsi642ss"
  19898. case 's': // 1 string to match.
  19899. if (memcmp(NameR.data()+12, "2si64", 5))
  19900. break;
  19901. return Intrinsic::x86_sse_cvtss2si64; // "86.sse.cvtss2si64"
  19902. }
  19903. break;
  19904. }
  19905. break;
  19906. case 'u': // 5 strings to match.
  19907. if (memcmp(NameR.data()+8, "comi", 4))
  19908. break;
  19909. switch (NameR[12]) {
  19910. default: break;
  19911. case 'e': // 1 string to match.
  19912. if (memcmp(NameR.data()+13, "q.ss", 4))
  19913. break;
  19914. return Intrinsic::x86_sse_ucomieq_ss; // "86.sse.ucomieq.ss"
  19915. case 'g': // 2 strings to match.
  19916. switch (NameR[13]) {
  19917. default: break;
  19918. case 'e': // 1 string to match.
  19919. if (memcmp(NameR.data()+14, ".ss", 3))
  19920. break;
  19921. return Intrinsic::x86_sse_ucomige_ss; // "86.sse.ucomige.ss"
  19922. case 't': // 1 string to match.
  19923. if (memcmp(NameR.data()+14, ".ss", 3))
  19924. break;
  19925. return Intrinsic::x86_sse_ucomigt_ss; // "86.sse.ucomigt.ss"
  19926. }
  19927. break;
  19928. case 'l': // 2 strings to match.
  19929. switch (NameR[13]) {
  19930. default: break;
  19931. case 'e': // 1 string to match.
  19932. if (memcmp(NameR.data()+14, ".ss", 3))
  19933. break;
  19934. return Intrinsic::x86_sse_ucomile_ss; // "86.sse.ucomile.ss"
  19935. case 't': // 1 string to match.
  19936. if (memcmp(NameR.data()+14, ".ss", 3))
  19937. break;
  19938. return Intrinsic::x86_sse_ucomilt_ss; // "86.sse.ucomilt.ss"
  19939. }
  19940. break;
  19941. }
  19942. break;
  19943. }
  19944. break;
  19945. case '2': // 12 strings to match.
  19946. if (NameR[7] != '.')
  19947. break;
  19948. switch (NameR[8]) {
  19949. default: break;
  19950. case 'c': // 8 strings to match.
  19951. switch (NameR[9]) {
  19952. default: break;
  19953. case 'o': // 5 strings to match.
  19954. if (memcmp(NameR.data()+10, "mi", 2))
  19955. break;
  19956. switch (NameR[12]) {
  19957. default: break;
  19958. case 'e': // 1 string to match.
  19959. if (memcmp(NameR.data()+13, "q.sd", 4))
  19960. break;
  19961. return Intrinsic::x86_sse2_comieq_sd; // "86.sse2.comieq.sd"
  19962. case 'g': // 2 strings to match.
  19963. switch (NameR[13]) {
  19964. default: break;
  19965. case 'e': // 1 string to match.
  19966. if (memcmp(NameR.data()+14, ".sd", 3))
  19967. break;
  19968. return Intrinsic::x86_sse2_comige_sd; // "86.sse2.comige.sd"
  19969. case 't': // 1 string to match.
  19970. if (memcmp(NameR.data()+14, ".sd", 3))
  19971. break;
  19972. return Intrinsic::x86_sse2_comigt_sd; // "86.sse2.comigt.sd"
  19973. }
  19974. break;
  19975. case 'l': // 2 strings to match.
  19976. switch (NameR[13]) {
  19977. default: break;
  19978. case 'e': // 1 string to match.
  19979. if (memcmp(NameR.data()+14, ".sd", 3))
  19980. break;
  19981. return Intrinsic::x86_sse2_comile_sd; // "86.sse2.comile.sd"
  19982. case 't': // 1 string to match.
  19983. if (memcmp(NameR.data()+14, ".sd", 3))
  19984. break;
  19985. return Intrinsic::x86_sse2_comilt_sd; // "86.sse2.comilt.sd"
  19986. }
  19987. break;
  19988. }
  19989. break;
  19990. case 'v': // 3 strings to match.
  19991. if (memcmp(NameR.data()+10, "tt", 2))
  19992. break;
  19993. switch (NameR[12]) {
  19994. default: break;
  19995. case 'p': // 2 strings to match.
  19996. switch (NameR[13]) {
  19997. default: break;
  19998. case 'd': // 1 string to match.
  19999. if (memcmp(NameR.data()+14, "2dq", 3))
  20000. break;
  20001. return Intrinsic::x86_sse2_cvttpd2dq; // "86.sse2.cvttpd2dq"
  20002. case 's': // 1 string to match.
  20003. if (memcmp(NameR.data()+14, "2dq", 3))
  20004. break;
  20005. return Intrinsic::x86_sse2_cvttps2dq; // "86.sse2.cvttps2dq"
  20006. }
  20007. break;
  20008. case 's': // 1 string to match.
  20009. if (memcmp(NameR.data()+13, "d2si", 4))
  20010. break;
  20011. return Intrinsic::x86_sse2_cvttsd2si; // "86.sse2.cvttsd2si"
  20012. }
  20013. break;
  20014. }
  20015. break;
  20016. case 'm': // 1 string to match.
  20017. if (memcmp(NameR.data()+9, "ovmsk.pd", 8))
  20018. break;
  20019. return Intrinsic::x86_sse2_movmsk_pd; // "86.sse2.movmsk.pd"
  20020. case 's': // 3 strings to match.
  20021. if (memcmp(NameR.data()+9, "tore", 4))
  20022. break;
  20023. switch (NameR[13]) {
  20024. default: break;
  20025. case 'l': // 1 string to match.
  20026. if (memcmp(NameR.data()+14, ".dq", 3))
  20027. break;
  20028. return Intrinsic::x86_sse2_storel_dq; // "86.sse2.storel.dq"
  20029. case 'u': // 2 strings to match.
  20030. if (NameR[14] != '.')
  20031. break;
  20032. switch (NameR[15]) {
  20033. default: break;
  20034. case 'd': // 1 string to match.
  20035. if (NameR[16] != 'q')
  20036. break;
  20037. return Intrinsic::x86_sse2_storeu_dq; // "86.sse2.storeu.dq"
  20038. case 'p': // 1 string to match.
  20039. if (NameR[16] != 'd')
  20040. break;
  20041. return Intrinsic::x86_sse2_storeu_pd; // "86.sse2.storeu.pd"
  20042. }
  20043. break;
  20044. }
  20045. break;
  20046. }
  20047. break;
  20048. case '3': // 2 strings to match.
  20049. if (memcmp(NameR.data()+7, ".addsub.p", 9))
  20050. break;
  20051. switch (NameR[16]) {
  20052. default: break;
  20053. case 'd': // 1 string to match.
  20054. return Intrinsic::x86_sse3_addsub_pd; // "86.sse3.addsub.pd"
  20055. case 's': // 1 string to match.
  20056. return Intrinsic::x86_sse3_addsub_ps; // "86.sse3.addsub.ps"
  20057. }
  20058. break;
  20059. case '4': // 26 strings to match.
  20060. switch (NameR[7]) {
  20061. default: break;
  20062. case '1': // 23 strings to match.
  20063. if (NameR[8] != '.')
  20064. break;
  20065. switch (NameR[9]) {
  20066. default: break;
  20067. case 'b': // 2 strings to match.
  20068. if (memcmp(NameR.data()+10, "lendvp", 6))
  20069. break;
  20070. switch (NameR[16]) {
  20071. default: break;
  20072. case 'd': // 1 string to match.
  20073. return Intrinsic::x86_sse41_blendvpd; // "86.sse41.blendvpd"
  20074. case 's': // 1 string to match.
  20075. return Intrinsic::x86_sse41_blendvps; // "86.sse41.blendvps"
  20076. }
  20077. break;
  20078. case 'i': // 1 string to match.
  20079. if (memcmp(NameR.data()+10, "nsertps", 7))
  20080. break;
  20081. return Intrinsic::x86_sse41_insertps; // "86.sse41.insertps"
  20082. case 'm': // 1 string to match.
  20083. if (memcmp(NameR.data()+10, "ovntdqa", 7))
  20084. break;
  20085. return Intrinsic::x86_sse41_movntdqa; // "86.sse41.movntdqa"
  20086. case 'p': // 15 strings to match.
  20087. switch (NameR[10]) {
  20088. default: break;
  20089. case 'a': // 1 string to match.
  20090. if (memcmp(NameR.data()+11, "ckusdw", 6))
  20091. break;
  20092. return Intrinsic::x86_sse41_packusdw; // "86.sse41.packusdw"
  20093. case 'b': // 1 string to match.
  20094. if (memcmp(NameR.data()+11, "lendvb", 6))
  20095. break;
  20096. return Intrinsic::x86_sse41_pblendvb; // "86.sse41.pblendvb"
  20097. case 'm': // 12 strings to match.
  20098. if (memcmp(NameR.data()+11, "ov", 2))
  20099. break;
  20100. switch (NameR[13]) {
  20101. default: break;
  20102. case 's': // 6 strings to match.
  20103. if (NameR[14] != 'x')
  20104. break;
  20105. switch (NameR[15]) {
  20106. default: break;
  20107. case 'b': // 3 strings to match.
  20108. switch (NameR[16]) {
  20109. default: break;
  20110. case 'd': // 1 string to match.
  20111. return Intrinsic::x86_sse41_pmovsxbd; // "86.sse41.pmovsxbd"
  20112. case 'q': // 1 string to match.
  20113. return Intrinsic::x86_sse41_pmovsxbq; // "86.sse41.pmovsxbq"
  20114. case 'w': // 1 string to match.
  20115. return Intrinsic::x86_sse41_pmovsxbw; // "86.sse41.pmovsxbw"
  20116. }
  20117. break;
  20118. case 'd': // 1 string to match.
  20119. if (NameR[16] != 'q')
  20120. break;
  20121. return Intrinsic::x86_sse41_pmovsxdq; // "86.sse41.pmovsxdq"
  20122. case 'w': // 2 strings to match.
  20123. switch (NameR[16]) {
  20124. default: break;
  20125. case 'd': // 1 string to match.
  20126. return Intrinsic::x86_sse41_pmovsxwd; // "86.sse41.pmovsxwd"
  20127. case 'q': // 1 string to match.
  20128. return Intrinsic::x86_sse41_pmovsxwq; // "86.sse41.pmovsxwq"
  20129. }
  20130. break;
  20131. }
  20132. break;
  20133. case 'z': // 6 strings to match.
  20134. if (NameR[14] != 'x')
  20135. break;
  20136. switch (NameR[15]) {
  20137. default: break;
  20138. case 'b': // 3 strings to match.
  20139. switch (NameR[16]) {
  20140. default: break;
  20141. case 'd': // 1 string to match.
  20142. return Intrinsic::x86_sse41_pmovzxbd; // "86.sse41.pmovzxbd"
  20143. case 'q': // 1 string to match.
  20144. return Intrinsic::x86_sse41_pmovzxbq; // "86.sse41.pmovzxbq"
  20145. case 'w': // 1 string to match.
  20146. return Intrinsic::x86_sse41_pmovzxbw; // "86.sse41.pmovzxbw"
  20147. }
  20148. break;
  20149. case 'd': // 1 string to match.
  20150. if (NameR[16] != 'q')
  20151. break;
  20152. return Intrinsic::x86_sse41_pmovzxdq; // "86.sse41.pmovzxdq"
  20153. case 'w': // 2 strings to match.
  20154. switch (NameR[16]) {
  20155. default: break;
  20156. case 'd': // 1 string to match.
  20157. return Intrinsic::x86_sse41_pmovzxwd; // "86.sse41.pmovzxwd"
  20158. case 'q': // 1 string to match.
  20159. return Intrinsic::x86_sse41_pmovzxwq; // "86.sse41.pmovzxwq"
  20160. }
  20161. break;
  20162. }
  20163. break;
  20164. }
  20165. break;
  20166. case 't': // 1 string to match.
  20167. if (memcmp(NameR.data()+11, "estnzc", 6))
  20168. break;
  20169. return Intrinsic::x86_sse41_ptestnzc; // "86.sse41.ptestnzc"
  20170. }
  20171. break;
  20172. case 'r': // 4 strings to match.
  20173. if (memcmp(NameR.data()+10, "ound.", 5))
  20174. break;
  20175. switch (NameR[15]) {
  20176. default: break;
  20177. case 'p': // 2 strings to match.
  20178. switch (NameR[16]) {
  20179. default: break;
  20180. case 'd': // 1 string to match.
  20181. return Intrinsic::x86_sse41_round_pd; // "86.sse41.round.pd"
  20182. case 's': // 1 string to match.
  20183. return Intrinsic::x86_sse41_round_ps; // "86.sse41.round.ps"
  20184. }
  20185. break;
  20186. case 's': // 2 strings to match.
  20187. switch (NameR[16]) {
  20188. default: break;
  20189. case 'd': // 1 string to match.
  20190. return Intrinsic::x86_sse41_round_sd; // "86.sse41.round.sd"
  20191. case 's': // 1 string to match.
  20192. return Intrinsic::x86_sse41_round_ss; // "86.sse41.round.ss"
  20193. }
  20194. break;
  20195. }
  20196. break;
  20197. }
  20198. break;
  20199. case 'a': // 3 strings to match.
  20200. if (NameR[8] != '.')
  20201. break;
  20202. switch (NameR[9]) {
  20203. default: break;
  20204. case 'i': // 1 string to match.
  20205. if (memcmp(NameR.data()+10, "nsertqi", 7))
  20206. break;
  20207. return Intrinsic::x86_sse4a_insertqi; // "86.sse4a.insertqi"
  20208. case 'm': // 2 strings to match.
  20209. if (memcmp(NameR.data()+10, "ovnt.s", 6))
  20210. break;
  20211. switch (NameR[16]) {
  20212. default: break;
  20213. case 'd': // 1 string to match.
  20214. return Intrinsic::x86_sse4a_movnt_sd; // "86.sse4a.movnt.sd"
  20215. case 's': // 1 string to match.
  20216. return Intrinsic::x86_sse4a_movnt_ss; // "86.sse4a.movnt.ss"
  20217. }
  20218. break;
  20219. }
  20220. break;
  20221. }
  20222. break;
  20223. }
  20224. break;
  20225. case 's': // 2 strings to match.
  20226. if (memcmp(NameR.data()+6, "e3.ph", 5))
  20227. break;
  20228. switch (NameR[11]) {
  20229. default: break;
  20230. case 'a': // 1 string to match.
  20231. if (memcmp(NameR.data()+12, "dd.sw", 5))
  20232. break;
  20233. return Intrinsic::x86_ssse3_phadd_sw; // "86.ssse3.phadd.sw"
  20234. case 's': // 1 string to match.
  20235. if (memcmp(NameR.data()+12, "ub.sw", 5))
  20236. break;
  20237. return Intrinsic::x86_ssse3_phsub_sw; // "86.ssse3.phsub.sw"
  20238. }
  20239. break;
  20240. }
  20241. break;
  20242. case 'x': // 6 strings to match.
  20243. if (memcmp(NameR.data()+4, "op.vp", 5))
  20244. break;
  20245. switch (NameR[9]) {
  20246. default: break;
  20247. case 'c': // 1 string to match.
  20248. if (memcmp(NameR.data()+10, "mov.256", 7))
  20249. break;
  20250. return Intrinsic::x86_xop_vpcmov_256; // "86.xop.vpcmov.256"
  20251. case 'e': // 2 strings to match.
  20252. if (memcmp(NameR.data()+10, "rmil2p", 6))
  20253. break;
  20254. switch (NameR[16]) {
  20255. default: break;
  20256. case 'd': // 1 string to match.
  20257. return Intrinsic::x86_xop_vpermil2pd; // "86.xop.vpermil2pd"
  20258. case 's': // 1 string to match.
  20259. return Intrinsic::x86_xop_vpermil2ps; // "86.xop.vpermil2ps"
  20260. }
  20261. break;
  20262. case 'm': // 3 strings to match.
  20263. if (NameR[10] != 'a')
  20264. break;
  20265. switch (NameR[11]) {
  20266. default: break;
  20267. case 'c': // 2 strings to match.
  20268. if (memcmp(NameR.data()+12, "ssdq", 4))
  20269. break;
  20270. switch (NameR[16]) {
  20271. default: break;
  20272. case 'h': // 1 string to match.
  20273. return Intrinsic::x86_xop_vpmacssdqh; // "86.xop.vpmacssdqh"
  20274. case 'l': // 1 string to match.
  20275. return Intrinsic::x86_xop_vpmacssdql; // "86.xop.vpmacssdql"
  20276. }
  20277. break;
  20278. case 'd': // 1 string to match.
  20279. if (memcmp(NameR.data()+12, "csswd", 5))
  20280. break;
  20281. return Intrinsic::x86_xop_vpmadcsswd; // "86.xop.vpmadcsswd"
  20282. }
  20283. break;
  20284. }
  20285. break;
  20286. }
  20287. break;
  20288. case 18: // 33 strings to match.
  20289. if (memcmp(NameR.data()+0, "86.", 3))
  20290. break;
  20291. switch (NameR[3]) {
  20292. default: break;
  20293. case 'a': // 20 strings to match.
  20294. if (memcmp(NameR.data()+4, "vx", 2))
  20295. break;
  20296. switch (NameR[6]) {
  20297. default: break;
  20298. case '.': // 10 strings to match.
  20299. switch (NameR[7]) {
  20300. default: break;
  20301. case 'h': // 4 strings to match.
  20302. switch (NameR[8]) {
  20303. default: break;
  20304. case 'a': // 2 strings to match.
  20305. if (memcmp(NameR.data()+9, "dd.p", 4))
  20306. break;
  20307. switch (NameR[13]) {
  20308. default: break;
  20309. case 'd': // 1 string to match.
  20310. if (memcmp(NameR.data()+14, ".256", 4))
  20311. break;
  20312. return Intrinsic::x86_avx_hadd_pd_256; // "86.avx.hadd.pd.256"
  20313. case 's': // 1 string to match.
  20314. if (memcmp(NameR.data()+14, ".256", 4))
  20315. break;
  20316. return Intrinsic::x86_avx_hadd_ps_256; // "86.avx.hadd.ps.256"
  20317. }
  20318. break;
  20319. case 's': // 2 strings to match.
  20320. if (memcmp(NameR.data()+9, "ub.p", 4))
  20321. break;
  20322. switch (NameR[13]) {
  20323. default: break;
  20324. case 'd': // 1 string to match.
  20325. if (memcmp(NameR.data()+14, ".256", 4))
  20326. break;
  20327. return Intrinsic::x86_avx_hsub_pd_256; // "86.avx.hsub.pd.256"
  20328. case 's': // 1 string to match.
  20329. if (memcmp(NameR.data()+14, ".256", 4))
  20330. break;
  20331. return Intrinsic::x86_avx_hsub_ps_256; // "86.avx.hsub.ps.256"
  20332. }
  20333. break;
  20334. }
  20335. break;
  20336. case 'm': // 2 strings to match.
  20337. if (memcmp(NameR.data()+8, "askload.p", 9))
  20338. break;
  20339. switch (NameR[17]) {
  20340. default: break;
  20341. case 'd': // 1 string to match.
  20342. return Intrinsic::x86_avx_maskload_pd; // "86.avx.maskload.pd"
  20343. case 's': // 1 string to match.
  20344. return Intrinsic::x86_avx_maskload_ps; // "86.avx.maskload.ps"
  20345. }
  20346. break;
  20347. case 's': // 2 strings to match.
  20348. if (memcmp(NameR.data()+8, "qrt.p", 5))
  20349. break;
  20350. switch (NameR[13]) {
  20351. default: break;
  20352. case 'd': // 1 string to match.
  20353. if (memcmp(NameR.data()+14, ".256", 4))
  20354. break;
  20355. return Intrinsic::x86_avx_sqrt_pd_256; // "86.avx.sqrt.pd.256"
  20356. case 's': // 1 string to match.
  20357. if (memcmp(NameR.data()+14, ".256", 4))
  20358. break;
  20359. return Intrinsic::x86_avx_sqrt_ps_256; // "86.avx.sqrt.ps.256"
  20360. }
  20361. break;
  20362. case 'v': // 2 strings to match.
  20363. if (memcmp(NameR.data()+8, "testnzc.p", 9))
  20364. break;
  20365. switch (NameR[17]) {
  20366. default: break;
  20367. case 'd': // 1 string to match.
  20368. return Intrinsic::x86_avx_vtestnzc_pd; // "86.avx.vtestnzc.pd"
  20369. case 's': // 1 string to match.
  20370. return Intrinsic::x86_avx_vtestnzc_ps; // "86.avx.vtestnzc.ps"
  20371. }
  20372. break;
  20373. }
  20374. break;
  20375. case '2': // 10 strings to match.
  20376. if (NameR[7] != '.')
  20377. break;
  20378. switch (NameR[8]) {
  20379. default: break;
  20380. case 'g': // 4 strings to match.
  20381. if (memcmp(NameR.data()+9, "ather.", 6))
  20382. break;
  20383. switch (NameR[15]) {
  20384. default: break;
  20385. case 'd': // 2 strings to match.
  20386. if (NameR[16] != '.')
  20387. break;
  20388. switch (NameR[17]) {
  20389. default: break;
  20390. case 'd': // 1 string to match.
  20391. return Intrinsic::x86_avx2_gather_d_d; // "86.avx2.gather.d.d"
  20392. case 'q': // 1 string to match.
  20393. return Intrinsic::x86_avx2_gather_d_q; // "86.avx2.gather.d.q"
  20394. }
  20395. break;
  20396. case 'q': // 2 strings to match.
  20397. if (NameR[16] != '.')
  20398. break;
  20399. switch (NameR[17]) {
  20400. default: break;
  20401. case 'd': // 1 string to match.
  20402. return Intrinsic::x86_avx2_gather_q_d; // "86.avx2.gather.q.d"
  20403. case 'q': // 1 string to match.
  20404. return Intrinsic::x86_avx2_gather_q_q; // "86.avx2.gather.q.q"
  20405. }
  20406. break;
  20407. }
  20408. break;
  20409. case 'm': // 2 strings to match.
  20410. if (memcmp(NameR.data()+9, "askload.", 8))
  20411. break;
  20412. switch (NameR[17]) {
  20413. default: break;
  20414. case 'd': // 1 string to match.
  20415. return Intrinsic::x86_avx2_maskload_d; // "86.avx2.maskload.d"
  20416. case 'q': // 1 string to match.
  20417. return Intrinsic::x86_avx2_maskload_q; // "86.avx2.maskload.q"
  20418. }
  20419. break;
  20420. case 'p': // 3 strings to match.
  20421. switch (NameR[9]) {
  20422. default: break;
  20423. case 'm': // 1 string to match.
  20424. if (memcmp(NameR.data()+10, "ul.hr.sw", 8))
  20425. break;
  20426. return Intrinsic::x86_avx2_pmul_hr_sw; // "86.avx2.pmul.hr.sw"
  20427. case 's': // 2 strings to match.
  20428. switch (NameR[10]) {
  20429. default: break;
  20430. case 'l': // 1 string to match.
  20431. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  20432. break;
  20433. return Intrinsic::x86_avx2_psll_dq_bs; // "86.avx2.psll.dq.bs"
  20434. case 'r': // 1 string to match.
  20435. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  20436. break;
  20437. return Intrinsic::x86_avx2_psrl_dq_bs; // "86.avx2.psrl.dq.bs"
  20438. }
  20439. break;
  20440. }
  20441. break;
  20442. case 'v': // 1 string to match.
  20443. if (memcmp(NameR.data()+9, "perm2i128", 9))
  20444. break;
  20445. return Intrinsic::x86_avx2_vperm2i128; // "86.avx2.vperm2i128"
  20446. }
  20447. break;
  20448. }
  20449. break;
  20450. case 's': // 13 strings to match.
  20451. if (memcmp(NameR.data()+4, "se", 2))
  20452. break;
  20453. switch (NameR[6]) {
  20454. default: break;
  20455. case '.': // 2 strings to match.
  20456. switch (NameR[7]) {
  20457. default: break;
  20458. case 'c': // 1 string to match.
  20459. if (memcmp(NameR.data()+8, "vttss2si64", 10))
  20460. break;
  20461. return Intrinsic::x86_sse_cvttss2si64; // "86.sse.cvttss2si64"
  20462. case 'u': // 1 string to match.
  20463. if (memcmp(NameR.data()+8, "comineq.ss", 10))
  20464. break;
  20465. return Intrinsic::x86_sse_ucomineq_ss; // "86.sse.ucomineq.ss"
  20466. }
  20467. break;
  20468. case '2': // 10 strings to match.
  20469. if (NameR[7] != '.')
  20470. break;
  20471. switch (NameR[8]) {
  20472. default: break;
  20473. case 'c': // 3 strings to match.
  20474. switch (NameR[9]) {
  20475. default: break;
  20476. case 'o': // 1 string to match.
  20477. if (memcmp(NameR.data()+10, "mineq.sd", 8))
  20478. break;
  20479. return Intrinsic::x86_sse2_comineq_sd; // "86.sse2.comineq.sd"
  20480. case 'v': // 2 strings to match.
  20481. if (memcmp(NameR.data()+10, "ts", 2))
  20482. break;
  20483. switch (NameR[12]) {
  20484. default: break;
  20485. case 'd': // 1 string to match.
  20486. if (memcmp(NameR.data()+13, "2si64", 5))
  20487. break;
  20488. return Intrinsic::x86_sse2_cvtsd2si64; // "86.sse2.cvtsd2si64"
  20489. case 'i': // 1 string to match.
  20490. if (memcmp(NameR.data()+13, "642sd", 5))
  20491. break;
  20492. return Intrinsic::x86_sse2_cvtsi642sd; // "86.sse2.cvtsi642sd"
  20493. }
  20494. break;
  20495. }
  20496. break;
  20497. case 'p': // 2 strings to match.
  20498. if (NameR[9] != 's')
  20499. break;
  20500. switch (NameR[10]) {
  20501. default: break;
  20502. case 'l': // 1 string to match.
  20503. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  20504. break;
  20505. return Intrinsic::x86_sse2_psll_dq_bs; // "86.sse2.psll.dq.bs"
  20506. case 'r': // 1 string to match.
  20507. if (memcmp(NameR.data()+11, "l.dq.bs", 7))
  20508. break;
  20509. return Intrinsic::x86_sse2_psrl_dq_bs; // "86.sse2.psrl.dq.bs"
  20510. }
  20511. break;
  20512. case 'u': // 5 strings to match.
  20513. if (memcmp(NameR.data()+9, "comi", 4))
  20514. break;
  20515. switch (NameR[13]) {
  20516. default: break;
  20517. case 'e': // 1 string to match.
  20518. if (memcmp(NameR.data()+14, "q.sd", 4))
  20519. break;
  20520. return Intrinsic::x86_sse2_ucomieq_sd; // "86.sse2.ucomieq.sd"
  20521. case 'g': // 2 strings to match.
  20522. switch (NameR[14]) {
  20523. default: break;
  20524. case 'e': // 1 string to match.
  20525. if (memcmp(NameR.data()+15, ".sd", 3))
  20526. break;
  20527. return Intrinsic::x86_sse2_ucomige_sd; // "86.sse2.ucomige.sd"
  20528. case 't': // 1 string to match.
  20529. if (memcmp(NameR.data()+15, ".sd", 3))
  20530. break;
  20531. return Intrinsic::x86_sse2_ucomigt_sd; // "86.sse2.ucomigt.sd"
  20532. }
  20533. break;
  20534. case 'l': // 2 strings to match.
  20535. switch (NameR[14]) {
  20536. default: break;
  20537. case 'e': // 1 string to match.
  20538. if (memcmp(NameR.data()+15, ".sd", 3))
  20539. break;
  20540. return Intrinsic::x86_sse2_ucomile_sd; // "86.sse2.ucomile.sd"
  20541. case 't': // 1 string to match.
  20542. if (memcmp(NameR.data()+15, ".sd", 3))
  20543. break;
  20544. return Intrinsic::x86_sse2_ucomilt_sd; // "86.sse2.ucomilt.sd"
  20545. }
  20546. break;
  20547. }
  20548. break;
  20549. }
  20550. break;
  20551. case '4': // 1 string to match.
  20552. if (memcmp(NameR.data()+7, "1.extractps", 11))
  20553. break;
  20554. return Intrinsic::x86_sse41_extractps; // "86.sse41.extractps"
  20555. }
  20556. break;
  20557. }
  20558. break;
  20559. case 19: // 41 strings to match.
  20560. if (memcmp(NameR.data()+0, "86.", 3))
  20561. break;
  20562. switch (NameR[3]) {
  20563. default: break;
  20564. case 'a': // 25 strings to match.
  20565. switch (NameR[4]) {
  20566. default: break;
  20567. case 'e': // 2 strings to match.
  20568. if (memcmp(NameR.data()+5, "sni.aes", 7))
  20569. break;
  20570. switch (NameR[12]) {
  20571. default: break;
  20572. case 'd': // 1 string to match.
  20573. if (memcmp(NameR.data()+13, "eclast", 6))
  20574. break;
  20575. return Intrinsic::x86_aesni_aesdeclast; // "86.aesni.aesdeclast"
  20576. case 'e': // 1 string to match.
  20577. if (memcmp(NameR.data()+13, "nclast", 6))
  20578. break;
  20579. return Intrinsic::x86_aesni_aesenclast; // "86.aesni.aesenclast"
  20580. }
  20581. break;
  20582. case 'v': // 23 strings to match.
  20583. if (NameR[5] != 'x')
  20584. break;
  20585. switch (NameR[6]) {
  20586. default: break;
  20587. case '.': // 8 strings to match.
  20588. switch (NameR[7]) {
  20589. default: break;
  20590. case 'b': // 2 strings to match.
  20591. if (memcmp(NameR.data()+8, "lend.p", 6))
  20592. break;
  20593. switch (NameR[14]) {
  20594. default: break;
  20595. case 'd': // 1 string to match.
  20596. if (memcmp(NameR.data()+15, ".256", 4))
  20597. break;
  20598. return Intrinsic::x86_avx_blend_pd_256; // "86.avx.blend.pd.256"
  20599. case 's': // 1 string to match.
  20600. if (memcmp(NameR.data()+15, ".256", 4))
  20601. break;
  20602. return Intrinsic::x86_avx_blend_ps_256; // "86.avx.blend.ps.256"
  20603. }
  20604. break;
  20605. case 'm': // 2 strings to match.
  20606. if (memcmp(NameR.data()+8, "askstore.p", 10))
  20607. break;
  20608. switch (NameR[18]) {
  20609. default: break;
  20610. case 'd': // 1 string to match.
  20611. return Intrinsic::x86_avx_maskstore_pd; // "86.avx.maskstore.pd"
  20612. case 's': // 1 string to match.
  20613. return Intrinsic::x86_avx_maskstore_ps; // "86.avx.maskstore.ps"
  20614. }
  20615. break;
  20616. case 'p': // 1 string to match.
  20617. if (memcmp(NameR.data()+8, "testnzc.256", 11))
  20618. break;
  20619. return Intrinsic::x86_avx_ptestnzc_256; // "86.avx.ptestnzc.256"
  20620. case 'r': // 3 strings to match.
  20621. switch (NameR[8]) {
  20622. default: break;
  20623. case 'o': // 2 strings to match.
  20624. if (memcmp(NameR.data()+9, "und.p", 5))
  20625. break;
  20626. switch (NameR[14]) {
  20627. default: break;
  20628. case 'd': // 1 string to match.
  20629. if (memcmp(NameR.data()+15, ".256", 4))
  20630. break;
  20631. return Intrinsic::x86_avx_round_pd_256; // "86.avx.round.pd.256"
  20632. case 's': // 1 string to match.
  20633. if (memcmp(NameR.data()+15, ".256", 4))
  20634. break;
  20635. return Intrinsic::x86_avx_round_ps_256; // "86.avx.round.ps.256"
  20636. }
  20637. break;
  20638. case 's': // 1 string to match.
  20639. if (memcmp(NameR.data()+9, "qrt.ps.256", 10))
  20640. break;
  20641. return Intrinsic::x86_avx_rsqrt_ps_256; // "86.avx.rsqrt.ps.256"
  20642. }
  20643. break;
  20644. }
  20645. break;
  20646. case '2': // 15 strings to match.
  20647. if (NameR[7] != '.')
  20648. break;
  20649. switch (NameR[8]) {
  20650. default: break;
  20651. case 'g': // 4 strings to match.
  20652. if (memcmp(NameR.data()+9, "ather.", 6))
  20653. break;
  20654. switch (NameR[15]) {
  20655. default: break;
  20656. case 'd': // 2 strings to match.
  20657. if (memcmp(NameR.data()+16, ".p", 2))
  20658. break;
  20659. switch (NameR[18]) {
  20660. default: break;
  20661. case 'd': // 1 string to match.
  20662. return Intrinsic::x86_avx2_gather_d_pd; // "86.avx2.gather.d.pd"
  20663. case 's': // 1 string to match.
  20664. return Intrinsic::x86_avx2_gather_d_ps; // "86.avx2.gather.d.ps"
  20665. }
  20666. break;
  20667. case 'q': // 2 strings to match.
  20668. if (memcmp(NameR.data()+16, ".p", 2))
  20669. break;
  20670. switch (NameR[18]) {
  20671. default: break;
  20672. case 'd': // 1 string to match.
  20673. return Intrinsic::x86_avx2_gather_q_pd; // "86.avx2.gather.q.pd"
  20674. case 's': // 1 string to match.
  20675. return Intrinsic::x86_avx2_gather_q_ps; // "86.avx2.gather.q.ps"
  20676. }
  20677. break;
  20678. }
  20679. break;
  20680. case 'm': // 2 strings to match.
  20681. if (memcmp(NameR.data()+9, "askstore.", 9))
  20682. break;
  20683. switch (NameR[18]) {
  20684. default: break;
  20685. case 'd': // 1 string to match.
  20686. return Intrinsic::x86_avx2_maskstore_d; // "86.avx2.maskstore.d"
  20687. case 'q': // 1 string to match.
  20688. return Intrinsic::x86_avx2_maskstore_q; // "86.avx2.maskstore.q"
  20689. }
  20690. break;
  20691. case 'p': // 8 strings to match.
  20692. switch (NameR[9]) {
  20693. default: break;
  20694. case 'b': // 2 strings to match.
  20695. if (memcmp(NameR.data()+10, "lendd.", 6))
  20696. break;
  20697. switch (NameR[16]) {
  20698. default: break;
  20699. case '1': // 1 string to match.
  20700. if (memcmp(NameR.data()+17, "28", 2))
  20701. break;
  20702. return Intrinsic::x86_avx2_pblendd_128; // "86.avx2.pblendd.128"
  20703. case '2': // 1 string to match.
  20704. if (memcmp(NameR.data()+17, "56", 2))
  20705. break;
  20706. return Intrinsic::x86_avx2_pblendd_256; // "86.avx2.pblendd.256"
  20707. }
  20708. break;
  20709. case 'm': // 1 string to match.
  20710. if (memcmp(NameR.data()+10, "add.ub.sw", 9))
  20711. break;
  20712. return Intrinsic::x86_avx2_pmadd_ub_sw; // "86.avx2.pmadd.ub.sw"
  20713. case 's': // 5 strings to match.
  20714. switch (NameR[10]) {
  20715. default: break;
  20716. case 'l': // 2 strings to match.
  20717. if (memcmp(NameR.data()+11, "lv.", 3))
  20718. break;
  20719. switch (NameR[14]) {
  20720. default: break;
  20721. case 'd': // 1 string to match.
  20722. if (memcmp(NameR.data()+15, ".256", 4))
  20723. break;
  20724. return Intrinsic::x86_avx2_psllv_d_256; // "86.avx2.psllv.d.256"
  20725. case 'q': // 1 string to match.
  20726. if (memcmp(NameR.data()+15, ".256", 4))
  20727. break;
  20728. return Intrinsic::x86_avx2_psllv_q_256; // "86.avx2.psllv.q.256"
  20729. }
  20730. break;
  20731. case 'r': // 3 strings to match.
  20732. switch (NameR[11]) {
  20733. default: break;
  20734. case 'a': // 1 string to match.
  20735. if (memcmp(NameR.data()+12, "v.d.256", 7))
  20736. break;
  20737. return Intrinsic::x86_avx2_psrav_d_256; // "86.avx2.psrav.d.256"
  20738. case 'l': // 2 strings to match.
  20739. if (memcmp(NameR.data()+12, "v.", 2))
  20740. break;
  20741. switch (NameR[14]) {
  20742. default: break;
  20743. case 'd': // 1 string to match.
  20744. if (memcmp(NameR.data()+15, ".256", 4))
  20745. break;
  20746. return Intrinsic::x86_avx2_psrlv_d_256; // "86.avx2.psrlv.d.256"
  20747. case 'q': // 1 string to match.
  20748. if (memcmp(NameR.data()+15, ".256", 4))
  20749. break;
  20750. return Intrinsic::x86_avx2_psrlv_q_256; // "86.avx2.psrlv.q.256"
  20751. }
  20752. break;
  20753. }
  20754. break;
  20755. }
  20756. break;
  20757. }
  20758. break;
  20759. case 'v': // 1 string to match.
  20760. if (memcmp(NameR.data()+9, "inserti128", 10))
  20761. break;
  20762. return Intrinsic::x86_avx2_vinserti128; // "86.avx2.vinserti128"
  20763. }
  20764. break;
  20765. }
  20766. break;
  20767. }
  20768. break;
  20769. case 'f': // 4 strings to match.
  20770. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  20771. break;
  20772. switch (NameR[10]) {
  20773. default: break;
  20774. case 'a': // 2 strings to match.
  20775. if (memcmp(NameR.data()+11, "ddsub.p", 7))
  20776. break;
  20777. switch (NameR[18]) {
  20778. default: break;
  20779. case 'd': // 1 string to match.
  20780. return Intrinsic::x86_fma_vfmaddsub_pd; // "86.fma.vfmaddsub.pd"
  20781. case 's': // 1 string to match.
  20782. return Intrinsic::x86_fma_vfmaddsub_ps; // "86.fma.vfmaddsub.ps"
  20783. }
  20784. break;
  20785. case 's': // 2 strings to match.
  20786. if (memcmp(NameR.data()+11, "ubadd.p", 7))
  20787. break;
  20788. switch (NameR[18]) {
  20789. default: break;
  20790. case 'd': // 1 string to match.
  20791. return Intrinsic::x86_fma_vfmsubadd_pd; // "86.fma.vfmsubadd.pd"
  20792. case 's': // 1 string to match.
  20793. return Intrinsic::x86_fma_vfmsubadd_ps; // "86.fma.vfmsubadd.ps"
  20794. }
  20795. break;
  20796. }
  20797. break;
  20798. case 's': // 10 strings to match.
  20799. if (NameR[4] != 's')
  20800. break;
  20801. switch (NameR[5]) {
  20802. default: break;
  20803. case 'e': // 6 strings to match.
  20804. switch (NameR[6]) {
  20805. default: break;
  20806. case '2': // 3 strings to match.
  20807. if (NameR[7] != '.')
  20808. break;
  20809. switch (NameR[8]) {
  20810. default: break;
  20811. case 'c': // 1 string to match.
  20812. if (memcmp(NameR.data()+9, "vttsd2si64", 10))
  20813. break;
  20814. return Intrinsic::x86_sse2_cvttsd2si64; // "86.sse2.cvttsd2si64"
  20815. case 'm': // 1 string to match.
  20816. if (memcmp(NameR.data()+9, "askmov.dqu", 10))
  20817. break;
  20818. return Intrinsic::x86_sse2_maskmov_dqu; // "86.sse2.maskmov.dqu"
  20819. case 'u': // 1 string to match.
  20820. if (memcmp(NameR.data()+9, "comineq.sd", 10))
  20821. break;
  20822. return Intrinsic::x86_sse2_ucomineq_sd; // "86.sse2.ucomineq.sd"
  20823. }
  20824. break;
  20825. case '4': // 3 strings to match.
  20826. switch (NameR[7]) {
  20827. default: break;
  20828. case '1': // 1 string to match.
  20829. if (memcmp(NameR.data()+8, ".phminposuw", 11))
  20830. break;
  20831. return Intrinsic::x86_sse41_phminposuw; // "86.sse41.phminposuw"
  20832. case '2': // 2 strings to match.
  20833. if (memcmp(NameR.data()+8, ".crc32.", 7))
  20834. break;
  20835. switch (NameR[15]) {
  20836. default: break;
  20837. case '3': // 1 string to match.
  20838. if (memcmp(NameR.data()+16, "2.8", 3))
  20839. break;
  20840. return Intrinsic::x86_sse42_crc32_32_8; // "86.sse42.crc32.32.8"
  20841. case '6': // 1 string to match.
  20842. if (memcmp(NameR.data()+16, "4.8", 3))
  20843. break;
  20844. return Intrinsic::x86_sse42_crc32_64_8; // "86.sse42.crc32.64.8"
  20845. }
  20846. break;
  20847. }
  20848. break;
  20849. }
  20850. break;
  20851. case 's': // 4 strings to match.
  20852. if (memcmp(NameR.data()+6, "e3.p", 4))
  20853. break;
  20854. switch (NameR[10]) {
  20855. default: break;
  20856. case 'a': // 3 strings to match.
  20857. if (memcmp(NameR.data()+11, "bs.", 3))
  20858. break;
  20859. switch (NameR[14]) {
  20860. default: break;
  20861. case 'b': // 1 string to match.
  20862. if (memcmp(NameR.data()+15, ".128", 4))
  20863. break;
  20864. return Intrinsic::x86_ssse3_pabs_b_128; // "86.ssse3.pabs.b.128"
  20865. case 'd': // 1 string to match.
  20866. if (memcmp(NameR.data()+15, ".128", 4))
  20867. break;
  20868. return Intrinsic::x86_ssse3_pabs_d_128; // "86.ssse3.pabs.d.128"
  20869. case 'w': // 1 string to match.
  20870. if (memcmp(NameR.data()+15, ".128", 4))
  20871. break;
  20872. return Intrinsic::x86_ssse3_pabs_w_128; // "86.ssse3.pabs.w.128"
  20873. }
  20874. break;
  20875. case 'm': // 1 string to match.
  20876. if (memcmp(NameR.data()+11, "ul.hr.sw", 8))
  20877. break;
  20878. return Intrinsic::x86_ssse3_pmul_hr_sw; // "86.ssse3.pmul.hr.sw"
  20879. }
  20880. break;
  20881. }
  20882. break;
  20883. case 'x': // 2 strings to match.
  20884. if (memcmp(NameR.data()+4, "op.vfrcz.p", 10))
  20885. break;
  20886. switch (NameR[14]) {
  20887. default: break;
  20888. case 'd': // 1 string to match.
  20889. if (memcmp(NameR.data()+15, ".256", 4))
  20890. break;
  20891. return Intrinsic::x86_xop_vfrcz_pd_256; // "86.xop.vfrcz.pd.256"
  20892. case 's': // 1 string to match.
  20893. if (memcmp(NameR.data()+15, ".256", 4))
  20894. break;
  20895. return Intrinsic::x86_xop_vfrcz_ps_256; // "86.xop.vfrcz.ps.256"
  20896. }
  20897. break;
  20898. }
  20899. break;
  20900. case 20: // 41 strings to match.
  20901. if (memcmp(NameR.data()+0, "86.", 3))
  20902. break;
  20903. switch (NameR[3]) {
  20904. default: break;
  20905. case 'a': // 21 strings to match.
  20906. if (memcmp(NameR.data()+4, "vx", 2))
  20907. break;
  20908. switch (NameR[6]) {
  20909. default: break;
  20910. case '.': // 20 strings to match.
  20911. switch (NameR[7]) {
  20912. default: break;
  20913. case 'a': // 2 strings to match.
  20914. if (memcmp(NameR.data()+8, "ddsub.p", 7))
  20915. break;
  20916. switch (NameR[15]) {
  20917. default: break;
  20918. case 'd': // 1 string to match.
  20919. if (memcmp(NameR.data()+16, ".256", 4))
  20920. break;
  20921. return Intrinsic::x86_avx_addsub_pd_256; // "86.avx.addsub.pd.256"
  20922. case 's': // 1 string to match.
  20923. if (memcmp(NameR.data()+16, ".256", 4))
  20924. break;
  20925. return Intrinsic::x86_avx_addsub_ps_256; // "86.avx.addsub.ps.256"
  20926. }
  20927. break;
  20928. case 'b': // 2 strings to match.
  20929. if (memcmp(NameR.data()+8, "lendv.p", 7))
  20930. break;
  20931. switch (NameR[15]) {
  20932. default: break;
  20933. case 'd': // 1 string to match.
  20934. if (memcmp(NameR.data()+16, ".256", 4))
  20935. break;
  20936. return Intrinsic::x86_avx_blendv_pd_256; // "86.avx.blendv.pd.256"
  20937. case 's': // 1 string to match.
  20938. if (memcmp(NameR.data()+16, ".256", 4))
  20939. break;
  20940. return Intrinsic::x86_avx_blendv_ps_256; // "86.avx.blendv.ps.256"
  20941. }
  20942. break;
  20943. case 'c': // 4 strings to match.
  20944. if (memcmp(NameR.data()+8, "vt", 2))
  20945. break;
  20946. switch (NameR[10]) {
  20947. default: break;
  20948. case '.': // 2 strings to match.
  20949. if (NameR[11] != 'p')
  20950. break;
  20951. switch (NameR[12]) {
  20952. default: break;
  20953. case 'd': // 1 string to match.
  20954. if (memcmp(NameR.data()+13, "2dq.256", 7))
  20955. break;
  20956. return Intrinsic::x86_avx_cvt_pd2dq_256; // "86.avx.cvt.pd2dq.256"
  20957. case 's': // 1 string to match.
  20958. if (memcmp(NameR.data()+13, "2dq.256", 7))
  20959. break;
  20960. return Intrinsic::x86_avx_cvt_ps2dq_256; // "86.avx.cvt.ps2dq.256"
  20961. }
  20962. break;
  20963. case 'd': // 2 strings to match.
  20964. if (memcmp(NameR.data()+11, "q2.p", 4))
  20965. break;
  20966. switch (NameR[15]) {
  20967. default: break;
  20968. case 'd': // 1 string to match.
  20969. if (memcmp(NameR.data()+16, ".256", 4))
  20970. break;
  20971. return Intrinsic::x86_avx_cvtdq2_pd_256; // "86.avx.cvtdq2.pd.256"
  20972. case 's': // 1 string to match.
  20973. if (memcmp(NameR.data()+16, ".256", 4))
  20974. break;
  20975. return Intrinsic::x86_avx_cvtdq2_ps_256; // "86.avx.cvtdq2.ps.256"
  20976. }
  20977. break;
  20978. }
  20979. break;
  20980. case 'm': // 2 strings to match.
  20981. if (memcmp(NameR.data()+8, "ovmsk.p", 7))
  20982. break;
  20983. switch (NameR[15]) {
  20984. default: break;
  20985. case 'd': // 1 string to match.
  20986. if (memcmp(NameR.data()+16, ".256", 4))
  20987. break;
  20988. return Intrinsic::x86_avx_movmsk_pd_256; // "86.avx.movmsk.pd.256"
  20989. case 's': // 1 string to match.
  20990. if (memcmp(NameR.data()+16, ".256", 4))
  20991. break;
  20992. return Intrinsic::x86_avx_movmsk_ps_256; // "86.avx.movmsk.ps.256"
  20993. }
  20994. break;
  20995. case 's': // 3 strings to match.
  20996. if (memcmp(NameR.data()+8, "toreu.", 6))
  20997. break;
  20998. switch (NameR[14]) {
  20999. default: break;
  21000. case 'd': // 1 string to match.
  21001. if (memcmp(NameR.data()+15, "q.256", 5))
  21002. break;
  21003. return Intrinsic::x86_avx_storeu_dq_256; // "86.avx.storeu.dq.256"
  21004. case 'p': // 2 strings to match.
  21005. switch (NameR[15]) {
  21006. default: break;
  21007. case 'd': // 1 string to match.
  21008. if (memcmp(NameR.data()+16, ".256", 4))
  21009. break;
  21010. return Intrinsic::x86_avx_storeu_pd_256; // "86.avx.storeu.pd.256"
  21011. case 's': // 1 string to match.
  21012. if (memcmp(NameR.data()+16, ".256", 4))
  21013. break;
  21014. return Intrinsic::x86_avx_storeu_ps_256; // "86.avx.storeu.ps.256"
  21015. }
  21016. break;
  21017. }
  21018. break;
  21019. case 'v': // 7 strings to match.
  21020. switch (NameR[8]) {
  21021. default: break;
  21022. case 'b': // 1 string to match.
  21023. if (memcmp(NameR.data()+9, "roadcast.ss", 11))
  21024. break;
  21025. return Intrinsic::x86_avx_vbroadcast_ss; // "86.avx.vbroadcast.ss"
  21026. case 'p': // 2 strings to match.
  21027. if (memcmp(NameR.data()+9, "ermilvar.p", 10))
  21028. break;
  21029. switch (NameR[19]) {
  21030. default: break;
  21031. case 'd': // 1 string to match.
  21032. return Intrinsic::x86_avx_vpermilvar_pd; // "86.avx.vpermilvar.pd"
  21033. case 's': // 1 string to match.
  21034. return Intrinsic::x86_avx_vpermilvar_ps; // "86.avx.vpermilvar.ps"
  21035. }
  21036. break;
  21037. case 't': // 4 strings to match.
  21038. if (memcmp(NameR.data()+9, "est", 3))
  21039. break;
  21040. switch (NameR[12]) {
  21041. default: break;
  21042. case 'c': // 2 strings to match.
  21043. if (memcmp(NameR.data()+13, ".p", 2))
  21044. break;
  21045. switch (NameR[15]) {
  21046. default: break;
  21047. case 'd': // 1 string to match.
  21048. if (memcmp(NameR.data()+16, ".256", 4))
  21049. break;
  21050. return Intrinsic::x86_avx_vtestc_pd_256; // "86.avx.vtestc.pd.256"
  21051. case 's': // 1 string to match.
  21052. if (memcmp(NameR.data()+16, ".256", 4))
  21053. break;
  21054. return Intrinsic::x86_avx_vtestc_ps_256; // "86.avx.vtestc.ps.256"
  21055. }
  21056. break;
  21057. case 'z': // 2 strings to match.
  21058. if (memcmp(NameR.data()+13, ".p", 2))
  21059. break;
  21060. switch (NameR[15]) {
  21061. default: break;
  21062. case 'd': // 1 string to match.
  21063. if (memcmp(NameR.data()+16, ".256", 4))
  21064. break;
  21065. return Intrinsic::x86_avx_vtestz_pd_256; // "86.avx.vtestz.pd.256"
  21066. case 's': // 1 string to match.
  21067. if (memcmp(NameR.data()+16, ".256", 4))
  21068. break;
  21069. return Intrinsic::x86_avx_vtestz_ps_256; // "86.avx.vtestz.ps.256"
  21070. }
  21071. break;
  21072. }
  21073. break;
  21074. }
  21075. break;
  21076. }
  21077. break;
  21078. case '2': // 1 string to match.
  21079. if (memcmp(NameR.data()+7, ".vextracti128", 13))
  21080. break;
  21081. return Intrinsic::x86_avx2_vextracti128; // "86.avx2.vextracti128"
  21082. }
  21083. break;
  21084. case 'f': // 4 strings to match.
  21085. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  21086. break;
  21087. switch (NameR[10]) {
  21088. default: break;
  21089. case 'a': // 2 strings to match.
  21090. if (memcmp(NameR.data()+11, "dd.p", 4))
  21091. break;
  21092. switch (NameR[15]) {
  21093. default: break;
  21094. case 'd': // 1 string to match.
  21095. if (memcmp(NameR.data()+16, ".256", 4))
  21096. break;
  21097. return Intrinsic::x86_fma_vfmadd_pd_256; // "86.fma.vfmadd.pd.256"
  21098. case 's': // 1 string to match.
  21099. if (memcmp(NameR.data()+16, ".256", 4))
  21100. break;
  21101. return Intrinsic::x86_fma_vfmadd_ps_256; // "86.fma.vfmadd.ps.256"
  21102. }
  21103. break;
  21104. case 's': // 2 strings to match.
  21105. if (memcmp(NameR.data()+11, "ub.p", 4))
  21106. break;
  21107. switch (NameR[15]) {
  21108. default: break;
  21109. case 'd': // 1 string to match.
  21110. if (memcmp(NameR.data()+16, ".256", 4))
  21111. break;
  21112. return Intrinsic::x86_fma_vfmsub_pd_256; // "86.fma.vfmsub.pd.256"
  21113. case 's': // 1 string to match.
  21114. if (memcmp(NameR.data()+16, ".256", 4))
  21115. break;
  21116. return Intrinsic::x86_fma_vfmsub_ps_256; // "86.fma.vfmsub.ps.256"
  21117. }
  21118. break;
  21119. }
  21120. break;
  21121. case 's': // 16 strings to match.
  21122. if (NameR[4] != 's')
  21123. break;
  21124. switch (NameR[5]) {
  21125. default: break;
  21126. case 'e': // 7 strings to match.
  21127. switch (NameR[6]) {
  21128. default: break;
  21129. case '2': // 4 strings to match.
  21130. if (memcmp(NameR.data()+7, ".p", 2))
  21131. break;
  21132. switch (NameR[9]) {
  21133. default: break;
  21134. case 'a': // 3 strings to match.
  21135. if (memcmp(NameR.data()+10, "ck", 2))
  21136. break;
  21137. switch (NameR[12]) {
  21138. default: break;
  21139. case 's': // 2 strings to match.
  21140. if (NameR[13] != 's')
  21141. break;
  21142. switch (NameR[14]) {
  21143. default: break;
  21144. case 'd': // 1 string to match.
  21145. if (memcmp(NameR.data()+15, "w.128", 5))
  21146. break;
  21147. return Intrinsic::x86_sse2_packssdw_128; // "86.sse2.packssdw.128"
  21148. case 'w': // 1 string to match.
  21149. if (memcmp(NameR.data()+15, "b.128", 5))
  21150. break;
  21151. return Intrinsic::x86_sse2_packsswb_128; // "86.sse2.packsswb.128"
  21152. }
  21153. break;
  21154. case 'u': // 1 string to match.
  21155. if (memcmp(NameR.data()+13, "swb.128", 7))
  21156. break;
  21157. return Intrinsic::x86_sse2_packuswb_128; // "86.sse2.packuswb.128"
  21158. }
  21159. break;
  21160. case 'm': // 1 string to match.
  21161. if (memcmp(NameR.data()+10, "ovmskb.128", 10))
  21162. break;
  21163. return Intrinsic::x86_sse2_pmovmskb_128; // "86.sse2.pmovmskb.128"
  21164. }
  21165. break;
  21166. case '4': // 3 strings to match.
  21167. if (memcmp(NameR.data()+7, "2.crc32.", 8))
  21168. break;
  21169. switch (NameR[15]) {
  21170. default: break;
  21171. case '3': // 2 strings to match.
  21172. if (memcmp(NameR.data()+16, "2.", 2))
  21173. break;
  21174. switch (NameR[18]) {
  21175. default: break;
  21176. case '1': // 1 string to match.
  21177. if (NameR[19] != '6')
  21178. break;
  21179. return Intrinsic::x86_sse42_crc32_32_16; // "86.sse42.crc32.32.16"
  21180. case '3': // 1 string to match.
  21181. if (NameR[19] != '2')
  21182. break;
  21183. return Intrinsic::x86_sse42_crc32_32_32; // "86.sse42.crc32.32.32"
  21184. }
  21185. break;
  21186. case '6': // 1 string to match.
  21187. if (memcmp(NameR.data()+16, "4.64", 4))
  21188. break;
  21189. return Intrinsic::x86_sse42_crc32_64_64; // "86.sse42.crc32.64.64"
  21190. }
  21191. break;
  21192. }
  21193. break;
  21194. case 's': // 9 strings to match.
  21195. if (memcmp(NameR.data()+6, "e3.p", 4))
  21196. break;
  21197. switch (NameR[10]) {
  21198. default: break;
  21199. case 'h': // 4 strings to match.
  21200. switch (NameR[11]) {
  21201. default: break;
  21202. case 'a': // 2 strings to match.
  21203. if (memcmp(NameR.data()+12, "dd.", 3))
  21204. break;
  21205. switch (NameR[15]) {
  21206. default: break;
  21207. case 'd': // 1 string to match.
  21208. if (memcmp(NameR.data()+16, ".128", 4))
  21209. break;
  21210. return Intrinsic::x86_ssse3_phadd_d_128; // "86.ssse3.phadd.d.128"
  21211. case 'w': // 1 string to match.
  21212. if (memcmp(NameR.data()+16, ".128", 4))
  21213. break;
  21214. return Intrinsic::x86_ssse3_phadd_w_128; // "86.ssse3.phadd.w.128"
  21215. }
  21216. break;
  21217. case 's': // 2 strings to match.
  21218. if (memcmp(NameR.data()+12, "ub.", 3))
  21219. break;
  21220. switch (NameR[15]) {
  21221. default: break;
  21222. case 'd': // 1 string to match.
  21223. if (memcmp(NameR.data()+16, ".128", 4))
  21224. break;
  21225. return Intrinsic::x86_ssse3_phsub_d_128; // "86.ssse3.phsub.d.128"
  21226. case 'w': // 1 string to match.
  21227. if (memcmp(NameR.data()+16, ".128", 4))
  21228. break;
  21229. return Intrinsic::x86_ssse3_phsub_w_128; // "86.ssse3.phsub.w.128"
  21230. }
  21231. break;
  21232. }
  21233. break;
  21234. case 'm': // 1 string to match.
  21235. if (memcmp(NameR.data()+11, "add.ub.sw", 9))
  21236. break;
  21237. return Intrinsic::x86_ssse3_pmadd_ub_sw; // "86.ssse3.pmadd.ub.sw"
  21238. case 's': // 4 strings to match.
  21239. switch (NameR[11]) {
  21240. default: break;
  21241. case 'h': // 1 string to match.
  21242. if (memcmp(NameR.data()+12, "uf.b.128", 8))
  21243. break;
  21244. return Intrinsic::x86_ssse3_pshuf_b_128; // "86.ssse3.pshuf.b.128"
  21245. case 'i': // 3 strings to match.
  21246. if (memcmp(NameR.data()+12, "gn.", 3))
  21247. break;
  21248. switch (NameR[15]) {
  21249. default: break;
  21250. case 'b': // 1 string to match.
  21251. if (memcmp(NameR.data()+16, ".128", 4))
  21252. break;
  21253. return Intrinsic::x86_ssse3_psign_b_128; // "86.ssse3.psign.b.128"
  21254. case 'd': // 1 string to match.
  21255. if (memcmp(NameR.data()+16, ".128", 4))
  21256. break;
  21257. return Intrinsic::x86_ssse3_psign_d_128; // "86.ssse3.psign.d.128"
  21258. case 'w': // 1 string to match.
  21259. if (memcmp(NameR.data()+16, ".128", 4))
  21260. break;
  21261. return Intrinsic::x86_ssse3_psign_w_128; // "86.ssse3.psign.w.128"
  21262. }
  21263. break;
  21264. }
  21265. break;
  21266. }
  21267. break;
  21268. }
  21269. break;
  21270. }
  21271. break;
  21272. case 21: // 16 strings to match.
  21273. if (memcmp(NameR.data()+0, "86.", 3))
  21274. break;
  21275. switch (NameR[3]) {
  21276. default: break;
  21277. case 'a': // 4 strings to match.
  21278. if (memcmp(NameR.data()+4, "vx.cvt", 6))
  21279. break;
  21280. switch (NameR[10]) {
  21281. default: break;
  21282. case '.': // 2 strings to match.
  21283. if (NameR[11] != 'p')
  21284. break;
  21285. switch (NameR[12]) {
  21286. default: break;
  21287. case 'd': // 1 string to match.
  21288. if (memcmp(NameR.data()+13, "2.ps.256", 8))
  21289. break;
  21290. return Intrinsic::x86_avx_cvt_pd2_ps_256; // "86.avx.cvt.pd2.ps.256"
  21291. case 's': // 1 string to match.
  21292. if (memcmp(NameR.data()+13, "2.pd.256", 8))
  21293. break;
  21294. return Intrinsic::x86_avx_cvt_ps2_pd_256; // "86.avx.cvt.ps2.pd.256"
  21295. }
  21296. break;
  21297. case 't': // 2 strings to match.
  21298. if (memcmp(NameR.data()+11, ".p", 2))
  21299. break;
  21300. switch (NameR[13]) {
  21301. default: break;
  21302. case 'd': // 1 string to match.
  21303. if (memcmp(NameR.data()+14, "2dq.256", 7))
  21304. break;
  21305. return Intrinsic::x86_avx_cvtt_pd2dq_256; // "86.avx.cvtt.pd2dq.256"
  21306. case 's': // 1 string to match.
  21307. if (memcmp(NameR.data()+14, "2dq.256", 7))
  21308. break;
  21309. return Intrinsic::x86_avx_cvtt_ps2dq_256; // "86.avx.cvtt.ps2dq.256"
  21310. }
  21311. break;
  21312. }
  21313. break;
  21314. case 'f': // 4 strings to match.
  21315. if (memcmp(NameR.data()+4, "ma.vfnm", 7))
  21316. break;
  21317. switch (NameR[11]) {
  21318. default: break;
  21319. case 'a': // 2 strings to match.
  21320. if (memcmp(NameR.data()+12, "dd.p", 4))
  21321. break;
  21322. switch (NameR[16]) {
  21323. default: break;
  21324. case 'd': // 1 string to match.
  21325. if (memcmp(NameR.data()+17, ".256", 4))
  21326. break;
  21327. return Intrinsic::x86_fma_vfnmadd_pd_256; // "86.fma.vfnmadd.pd.256"
  21328. case 's': // 1 string to match.
  21329. if (memcmp(NameR.data()+17, ".256", 4))
  21330. break;
  21331. return Intrinsic::x86_fma_vfnmadd_ps_256; // "86.fma.vfnmadd.ps.256"
  21332. }
  21333. break;
  21334. case 's': // 2 strings to match.
  21335. if (memcmp(NameR.data()+12, "ub.p", 4))
  21336. break;
  21337. switch (NameR[16]) {
  21338. default: break;
  21339. case 'd': // 1 string to match.
  21340. if (memcmp(NameR.data()+17, ".256", 4))
  21341. break;
  21342. return Intrinsic::x86_fma_vfnmsub_pd_256; // "86.fma.vfnmsub.pd.256"
  21343. case 's': // 1 string to match.
  21344. if (memcmp(NameR.data()+17, ".256", 4))
  21345. break;
  21346. return Intrinsic::x86_fma_vfnmsub_ps_256; // "86.fma.vfnmsub.ps.256"
  21347. }
  21348. break;
  21349. }
  21350. break;
  21351. case 's': // 6 strings to match.
  21352. if (NameR[4] != 's')
  21353. break;
  21354. switch (NameR[5]) {
  21355. default: break;
  21356. case 'e': // 4 strings to match.
  21357. if (memcmp(NameR.data()+6, "42.pcmp", 7))
  21358. break;
  21359. switch (NameR[13]) {
  21360. default: break;
  21361. case 'e': // 2 strings to match.
  21362. if (memcmp(NameR.data()+14, "str", 3))
  21363. break;
  21364. switch (NameR[17]) {
  21365. default: break;
  21366. case 'i': // 1 string to match.
  21367. if (memcmp(NameR.data()+18, "128", 3))
  21368. break;
  21369. return Intrinsic::x86_sse42_pcmpestri128; // "86.sse42.pcmpestri128"
  21370. case 'm': // 1 string to match.
  21371. if (memcmp(NameR.data()+18, "128", 3))
  21372. break;
  21373. return Intrinsic::x86_sse42_pcmpestrm128; // "86.sse42.pcmpestrm128"
  21374. }
  21375. break;
  21376. case 'i': // 2 strings to match.
  21377. if (memcmp(NameR.data()+14, "str", 3))
  21378. break;
  21379. switch (NameR[17]) {
  21380. default: break;
  21381. case 'i': // 1 string to match.
  21382. if (memcmp(NameR.data()+18, "128", 3))
  21383. break;
  21384. return Intrinsic::x86_sse42_pcmpistri128; // "86.sse42.pcmpistri128"
  21385. case 'm': // 1 string to match.
  21386. if (memcmp(NameR.data()+18, "128", 3))
  21387. break;
  21388. return Intrinsic::x86_sse42_pcmpistrm128; // "86.sse42.pcmpistrm128"
  21389. }
  21390. break;
  21391. }
  21392. break;
  21393. case 's': // 2 strings to match.
  21394. if (memcmp(NameR.data()+6, "e3.ph", 5))
  21395. break;
  21396. switch (NameR[11]) {
  21397. default: break;
  21398. case 'a': // 1 string to match.
  21399. if (memcmp(NameR.data()+12, "dd.sw.128", 9))
  21400. break;
  21401. return Intrinsic::x86_ssse3_phadd_sw_128; // "86.ssse3.phadd.sw.128"
  21402. case 's': // 1 string to match.
  21403. if (memcmp(NameR.data()+12, "ub.sw.128", 9))
  21404. break;
  21405. return Intrinsic::x86_ssse3_phsub_sw_128; // "86.ssse3.phsub.sw.128"
  21406. }
  21407. break;
  21408. }
  21409. break;
  21410. case 'x': // 2 strings to match.
  21411. if (memcmp(NameR.data()+4, "op.vpermil2p", 12))
  21412. break;
  21413. switch (NameR[16]) {
  21414. default: break;
  21415. case 'd': // 1 string to match.
  21416. if (memcmp(NameR.data()+17, ".256", 4))
  21417. break;
  21418. return Intrinsic::x86_xop_vpermil2pd_256; // "86.xop.vpermil2pd.256"
  21419. case 's': // 1 string to match.
  21420. if (memcmp(NameR.data()+17, ".256", 4))
  21421. break;
  21422. return Intrinsic::x86_xop_vpermil2ps_256; // "86.xop.vpermil2ps.256"
  21423. }
  21424. break;
  21425. }
  21426. break;
  21427. case 22: // 21 strings to match.
  21428. if (memcmp(NameR.data()+0, "86.", 3))
  21429. break;
  21430. switch (NameR[3]) {
  21431. default: break;
  21432. case 'a': // 11 strings to match.
  21433. if (memcmp(NameR.data()+4, "vx", 2))
  21434. break;
  21435. switch (NameR[6]) {
  21436. default: break;
  21437. case '.': // 4 strings to match.
  21438. switch (NameR[7]) {
  21439. default: break;
  21440. case 'm': // 2 strings to match.
  21441. if (memcmp(NameR.data()+8, "askload.p", 9))
  21442. break;
  21443. switch (NameR[17]) {
  21444. default: break;
  21445. case 'd': // 1 string to match.
  21446. if (memcmp(NameR.data()+18, ".256", 4))
  21447. break;
  21448. return Intrinsic::x86_avx_maskload_pd_256; // "86.avx.maskload.pd.256"
  21449. case 's': // 1 string to match.
  21450. if (memcmp(NameR.data()+18, ".256", 4))
  21451. break;
  21452. return Intrinsic::x86_avx_maskload_ps_256; // "86.avx.maskload.ps.256"
  21453. }
  21454. break;
  21455. case 'v': // 2 strings to match.
  21456. if (memcmp(NameR.data()+8, "testnzc.p", 9))
  21457. break;
  21458. switch (NameR[17]) {
  21459. default: break;
  21460. case 'd': // 1 string to match.
  21461. if (memcmp(NameR.data()+18, ".256", 4))
  21462. break;
  21463. return Intrinsic::x86_avx_vtestnzc_pd_256; // "86.avx.vtestnzc.pd.256"
  21464. case 's': // 1 string to match.
  21465. if (memcmp(NameR.data()+18, ".256", 4))
  21466. break;
  21467. return Intrinsic::x86_avx_vtestnzc_ps_256; // "86.avx.vtestnzc.ps.256"
  21468. }
  21469. break;
  21470. }
  21471. break;
  21472. case '2': // 7 strings to match.
  21473. if (NameR[7] != '.')
  21474. break;
  21475. switch (NameR[8]) {
  21476. default: break;
  21477. case 'g': // 4 strings to match.
  21478. if (memcmp(NameR.data()+9, "ather.", 6))
  21479. break;
  21480. switch (NameR[15]) {
  21481. default: break;
  21482. case 'd': // 2 strings to match.
  21483. if (NameR[16] != '.')
  21484. break;
  21485. switch (NameR[17]) {
  21486. default: break;
  21487. case 'd': // 1 string to match.
  21488. if (memcmp(NameR.data()+18, ".256", 4))
  21489. break;
  21490. return Intrinsic::x86_avx2_gather_d_d_256; // "86.avx2.gather.d.d.256"
  21491. case 'q': // 1 string to match.
  21492. if (memcmp(NameR.data()+18, ".256", 4))
  21493. break;
  21494. return Intrinsic::x86_avx2_gather_d_q_256; // "86.avx2.gather.d.q.256"
  21495. }
  21496. break;
  21497. case 'q': // 2 strings to match.
  21498. if (NameR[16] != '.')
  21499. break;
  21500. switch (NameR[17]) {
  21501. default: break;
  21502. case 'd': // 1 string to match.
  21503. if (memcmp(NameR.data()+18, ".256", 4))
  21504. break;
  21505. return Intrinsic::x86_avx2_gather_q_d_256; // "86.avx2.gather.q.d.256"
  21506. case 'q': // 1 string to match.
  21507. if (memcmp(NameR.data()+18, ".256", 4))
  21508. break;
  21509. return Intrinsic::x86_avx2_gather_q_q_256; // "86.avx2.gather.q.q.256"
  21510. }
  21511. break;
  21512. }
  21513. break;
  21514. case 'm': // 2 strings to match.
  21515. if (memcmp(NameR.data()+9, "askload.", 8))
  21516. break;
  21517. switch (NameR[17]) {
  21518. default: break;
  21519. case 'd': // 1 string to match.
  21520. if (memcmp(NameR.data()+18, ".256", 4))
  21521. break;
  21522. return Intrinsic::x86_avx2_maskload_d_256; // "86.avx2.maskload.d.256"
  21523. case 'q': // 1 string to match.
  21524. if (memcmp(NameR.data()+18, ".256", 4))
  21525. break;
  21526. return Intrinsic::x86_avx2_maskload_q_256; // "86.avx2.maskload.q.256"
  21527. }
  21528. break;
  21529. case 'v': // 1 string to match.
  21530. if (memcmp(NameR.data()+9, "broadcasti128", 13))
  21531. break;
  21532. return Intrinsic::x86_avx2_vbroadcasti128; // "86.avx2.vbroadcasti128"
  21533. }
  21534. break;
  21535. }
  21536. break;
  21537. case 's': // 10 strings to match.
  21538. if (memcmp(NameR.data()+4, "se42.pcmp", 9))
  21539. break;
  21540. switch (NameR[13]) {
  21541. default: break;
  21542. case 'e': // 5 strings to match.
  21543. if (memcmp(NameR.data()+14, "stri", 4))
  21544. break;
  21545. switch (NameR[18]) {
  21546. default: break;
  21547. case 'a': // 1 string to match.
  21548. if (memcmp(NameR.data()+19, "128", 3))
  21549. break;
  21550. return Intrinsic::x86_sse42_pcmpestria128; // "86.sse42.pcmpestria128"
  21551. case 'c': // 1 string to match.
  21552. if (memcmp(NameR.data()+19, "128", 3))
  21553. break;
  21554. return Intrinsic::x86_sse42_pcmpestric128; // "86.sse42.pcmpestric128"
  21555. case 'o': // 1 string to match.
  21556. if (memcmp(NameR.data()+19, "128", 3))
  21557. break;
  21558. return Intrinsic::x86_sse42_pcmpestrio128; // "86.sse42.pcmpestrio128"
  21559. case 's': // 1 string to match.
  21560. if (memcmp(NameR.data()+19, "128", 3))
  21561. break;
  21562. return Intrinsic::x86_sse42_pcmpestris128; // "86.sse42.pcmpestris128"
  21563. case 'z': // 1 string to match.
  21564. if (memcmp(NameR.data()+19, "128", 3))
  21565. break;
  21566. return Intrinsic::x86_sse42_pcmpestriz128; // "86.sse42.pcmpestriz128"
  21567. }
  21568. break;
  21569. case 'i': // 5 strings to match.
  21570. if (memcmp(NameR.data()+14, "stri", 4))
  21571. break;
  21572. switch (NameR[18]) {
  21573. default: break;
  21574. case 'a': // 1 string to match.
  21575. if (memcmp(NameR.data()+19, "128", 3))
  21576. break;
  21577. return Intrinsic::x86_sse42_pcmpistria128; // "86.sse42.pcmpistria128"
  21578. case 'c': // 1 string to match.
  21579. if (memcmp(NameR.data()+19, "128", 3))
  21580. break;
  21581. return Intrinsic::x86_sse42_pcmpistric128; // "86.sse42.pcmpistric128"
  21582. case 'o': // 1 string to match.
  21583. if (memcmp(NameR.data()+19, "128", 3))
  21584. break;
  21585. return Intrinsic::x86_sse42_pcmpistrio128; // "86.sse42.pcmpistrio128"
  21586. case 's': // 1 string to match.
  21587. if (memcmp(NameR.data()+19, "128", 3))
  21588. break;
  21589. return Intrinsic::x86_sse42_pcmpistris128; // "86.sse42.pcmpistris128"
  21590. case 'z': // 1 string to match.
  21591. if (memcmp(NameR.data()+19, "128", 3))
  21592. break;
  21593. return Intrinsic::x86_sse42_pcmpistriz128; // "86.sse42.pcmpistriz128"
  21594. }
  21595. break;
  21596. }
  21597. break;
  21598. }
  21599. break;
  21600. case 23: // 21 strings to match.
  21601. if (memcmp(NameR.data()+0, "86.", 3))
  21602. break;
  21603. switch (NameR[3]) {
  21604. default: break;
  21605. case 'a': // 16 strings to match.
  21606. if (memcmp(NameR.data()+4, "vx", 2))
  21607. break;
  21608. switch (NameR[6]) {
  21609. default: break;
  21610. case '.': // 2 strings to match.
  21611. if (memcmp(NameR.data()+7, "maskstore.p", 11))
  21612. break;
  21613. switch (NameR[18]) {
  21614. default: break;
  21615. case 'd': // 1 string to match.
  21616. if (memcmp(NameR.data()+19, ".256", 4))
  21617. break;
  21618. return Intrinsic::x86_avx_maskstore_pd_256; // "86.avx.maskstore.pd.256"
  21619. case 's': // 1 string to match.
  21620. if (memcmp(NameR.data()+19, ".256", 4))
  21621. break;
  21622. return Intrinsic::x86_avx_maskstore_ps_256; // "86.avx.maskstore.ps.256"
  21623. }
  21624. break;
  21625. case '2': // 14 strings to match.
  21626. if (NameR[7] != '.')
  21627. break;
  21628. switch (NameR[8]) {
  21629. default: break;
  21630. case 'g': // 4 strings to match.
  21631. if (memcmp(NameR.data()+9, "ather.", 6))
  21632. break;
  21633. switch (NameR[15]) {
  21634. default: break;
  21635. case 'd': // 2 strings to match.
  21636. if (memcmp(NameR.data()+16, ".p", 2))
  21637. break;
  21638. switch (NameR[18]) {
  21639. default: break;
  21640. case 'd': // 1 string to match.
  21641. if (memcmp(NameR.data()+19, ".256", 4))
  21642. break;
  21643. return Intrinsic::x86_avx2_gather_d_pd_256; // "86.avx2.gather.d.pd.256"
  21644. case 's': // 1 string to match.
  21645. if (memcmp(NameR.data()+19, ".256", 4))
  21646. break;
  21647. return Intrinsic::x86_avx2_gather_d_ps_256; // "86.avx2.gather.d.ps.256"
  21648. }
  21649. break;
  21650. case 'q': // 2 strings to match.
  21651. if (memcmp(NameR.data()+16, ".p", 2))
  21652. break;
  21653. switch (NameR[18]) {
  21654. default: break;
  21655. case 'd': // 1 string to match.
  21656. if (memcmp(NameR.data()+19, ".256", 4))
  21657. break;
  21658. return Intrinsic::x86_avx2_gather_q_pd_256; // "86.avx2.gather.q.pd.256"
  21659. case 's': // 1 string to match.
  21660. if (memcmp(NameR.data()+19, ".256", 4))
  21661. break;
  21662. return Intrinsic::x86_avx2_gather_q_ps_256; // "86.avx2.gather.q.ps.256"
  21663. }
  21664. break;
  21665. }
  21666. break;
  21667. case 'm': // 2 strings to match.
  21668. if (memcmp(NameR.data()+9, "askstore.", 9))
  21669. break;
  21670. switch (NameR[18]) {
  21671. default: break;
  21672. case 'd': // 1 string to match.
  21673. if (memcmp(NameR.data()+19, ".256", 4))
  21674. break;
  21675. return Intrinsic::x86_avx2_maskstore_d_256; // "86.avx2.maskstore.d.256"
  21676. case 'q': // 1 string to match.
  21677. if (memcmp(NameR.data()+19, ".256", 4))
  21678. break;
  21679. return Intrinsic::x86_avx2_maskstore_q_256; // "86.avx2.maskstore.q.256"
  21680. }
  21681. break;
  21682. case 'p': // 8 strings to match.
  21683. if (memcmp(NameR.data()+9, "broadcast", 9))
  21684. break;
  21685. switch (NameR[18]) {
  21686. default: break;
  21687. case 'b': // 2 strings to match.
  21688. if (NameR[19] != '.')
  21689. break;
  21690. switch (NameR[20]) {
  21691. default: break;
  21692. case '1': // 1 string to match.
  21693. if (memcmp(NameR.data()+21, "28", 2))
  21694. break;
  21695. return Intrinsic::x86_avx2_pbroadcastb_128; // "86.avx2.pbroadcastb.128"
  21696. case '2': // 1 string to match.
  21697. if (memcmp(NameR.data()+21, "56", 2))
  21698. break;
  21699. return Intrinsic::x86_avx2_pbroadcastb_256; // "86.avx2.pbroadcastb.256"
  21700. }
  21701. break;
  21702. case 'd': // 2 strings to match.
  21703. if (NameR[19] != '.')
  21704. break;
  21705. switch (NameR[20]) {
  21706. default: break;
  21707. case '1': // 1 string to match.
  21708. if (memcmp(NameR.data()+21, "28", 2))
  21709. break;
  21710. return Intrinsic::x86_avx2_pbroadcastd_128; // "86.avx2.pbroadcastd.128"
  21711. case '2': // 1 string to match.
  21712. if (memcmp(NameR.data()+21, "56", 2))
  21713. break;
  21714. return Intrinsic::x86_avx2_pbroadcastd_256; // "86.avx2.pbroadcastd.256"
  21715. }
  21716. break;
  21717. case 'q': // 2 strings to match.
  21718. if (NameR[19] != '.')
  21719. break;
  21720. switch (NameR[20]) {
  21721. default: break;
  21722. case '1': // 1 string to match.
  21723. if (memcmp(NameR.data()+21, "28", 2))
  21724. break;
  21725. return Intrinsic::x86_avx2_pbroadcastq_128; // "86.avx2.pbroadcastq.128"
  21726. case '2': // 1 string to match.
  21727. if (memcmp(NameR.data()+21, "56", 2))
  21728. break;
  21729. return Intrinsic::x86_avx2_pbroadcastq_256; // "86.avx2.pbroadcastq.256"
  21730. }
  21731. break;
  21732. case 'w': // 2 strings to match.
  21733. if (NameR[19] != '.')
  21734. break;
  21735. switch (NameR[20]) {
  21736. default: break;
  21737. case '1': // 1 string to match.
  21738. if (memcmp(NameR.data()+21, "28", 2))
  21739. break;
  21740. return Intrinsic::x86_avx2_pbroadcastw_128; // "86.avx2.pbroadcastw.128"
  21741. case '2': // 1 string to match.
  21742. if (memcmp(NameR.data()+21, "56", 2))
  21743. break;
  21744. return Intrinsic::x86_avx2_pbroadcastw_256; // "86.avx2.pbroadcastw.256"
  21745. }
  21746. break;
  21747. }
  21748. break;
  21749. }
  21750. break;
  21751. }
  21752. break;
  21753. case 'f': // 4 strings to match.
  21754. if (memcmp(NameR.data()+4, "ma.vfm", 6))
  21755. break;
  21756. switch (NameR[10]) {
  21757. default: break;
  21758. case 'a': // 2 strings to match.
  21759. if (memcmp(NameR.data()+11, "ddsub.p", 7))
  21760. break;
  21761. switch (NameR[18]) {
  21762. default: break;
  21763. case 'd': // 1 string to match.
  21764. if (memcmp(NameR.data()+19, ".256", 4))
  21765. break;
  21766. return Intrinsic::x86_fma_vfmaddsub_pd_256; // "86.fma.vfmaddsub.pd.256"
  21767. case 's': // 1 string to match.
  21768. if (memcmp(NameR.data()+19, ".256", 4))
  21769. break;
  21770. return Intrinsic::x86_fma_vfmaddsub_ps_256; // "86.fma.vfmaddsub.ps.256"
  21771. }
  21772. break;
  21773. case 's': // 2 strings to match.
  21774. if (memcmp(NameR.data()+11, "ubadd.p", 7))
  21775. break;
  21776. switch (NameR[18]) {
  21777. default: break;
  21778. case 'd': // 1 string to match.
  21779. if (memcmp(NameR.data()+19, ".256", 4))
  21780. break;
  21781. return Intrinsic::x86_fma_vfmsubadd_pd_256; // "86.fma.vfmsubadd.pd.256"
  21782. case 's': // 1 string to match.
  21783. if (memcmp(NameR.data()+19, ".256", 4))
  21784. break;
  21785. return Intrinsic::x86_fma_vfmsubadd_ps_256; // "86.fma.vfmsubadd.ps.256"
  21786. }
  21787. break;
  21788. }
  21789. break;
  21790. case 's': // 1 string to match.
  21791. if (memcmp(NameR.data()+4, "sse3.pmul.hr.sw.128", 19))
  21792. break;
  21793. return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "86.ssse3.pmul.hr.sw.128"
  21794. }
  21795. break;
  21796. case 24: // 10 strings to match.
  21797. if (memcmp(NameR.data()+0, "86.", 3))
  21798. break;
  21799. switch (NameR[3]) {
  21800. default: break;
  21801. case 'a': // 9 strings to match.
  21802. switch (NameR[4]) {
  21803. default: break;
  21804. case 'e': // 1 string to match.
  21805. if (memcmp(NameR.data()+5, "sni.aeskeygenassist", 19))
  21806. break;
  21807. return Intrinsic::x86_aesni_aeskeygenassist; // "86.aesni.aeskeygenassist"
  21808. case 'v': // 8 strings to match.
  21809. if (NameR[5] != 'x')
  21810. break;
  21811. switch (NameR[6]) {
  21812. default: break;
  21813. case '.': // 7 strings to match.
  21814. if (NameR[7] != 'v')
  21815. break;
  21816. switch (NameR[8]) {
  21817. default: break;
  21818. case 'b': // 2 strings to match.
  21819. if (memcmp(NameR.data()+9, "roadcast.s", 10))
  21820. break;
  21821. switch (NameR[19]) {
  21822. default: break;
  21823. case 'd': // 1 string to match.
  21824. if (memcmp(NameR.data()+20, ".256", 4))
  21825. break;
  21826. return Intrinsic::x86_avx_vbroadcast_sd_256; // "86.avx.vbroadcast.sd.256"
  21827. case 's': // 1 string to match.
  21828. if (memcmp(NameR.data()+20, ".256", 4))
  21829. break;
  21830. return Intrinsic::x86_avx_vbroadcast_ss_256; // "86.avx.vbroadcast.ss.256"
  21831. }
  21832. break;
  21833. case 'p': // 5 strings to match.
  21834. if (memcmp(NameR.data()+9, "erm", 3))
  21835. break;
  21836. switch (NameR[12]) {
  21837. default: break;
  21838. case '2': // 3 strings to match.
  21839. if (memcmp(NameR.data()+13, "f128.", 5))
  21840. break;
  21841. switch (NameR[18]) {
  21842. default: break;
  21843. case 'p': // 2 strings to match.
  21844. switch (NameR[19]) {
  21845. default: break;
  21846. case 'd': // 1 string to match.
  21847. if (memcmp(NameR.data()+20, ".256", 4))
  21848. break;
  21849. return Intrinsic::x86_avx_vperm2f128_pd_256; // "86.avx.vperm2f128.pd.256"
  21850. case 's': // 1 string to match.
  21851. if (memcmp(NameR.data()+20, ".256", 4))
  21852. break;
  21853. return Intrinsic::x86_avx_vperm2f128_ps_256; // "86.avx.vperm2f128.ps.256"
  21854. }
  21855. break;
  21856. case 's': // 1 string to match.
  21857. if (memcmp(NameR.data()+19, "i.256", 5))
  21858. break;
  21859. return Intrinsic::x86_avx_vperm2f128_si_256; // "86.avx.vperm2f128.si.256"
  21860. }
  21861. break;
  21862. case 'i': // 2 strings to match.
  21863. if (memcmp(NameR.data()+13, "lvar.p", 6))
  21864. break;
  21865. switch (NameR[19]) {
  21866. default: break;
  21867. case 'd': // 1 string to match.
  21868. if (memcmp(NameR.data()+20, ".256", 4))
  21869. break;
  21870. return Intrinsic::x86_avx_vpermilvar_pd_256; // "86.avx.vpermilvar.pd.256"
  21871. case 's': // 1 string to match.
  21872. if (memcmp(NameR.data()+20, ".256", 4))
  21873. break;
  21874. return Intrinsic::x86_avx_vpermilvar_ps_256; // "86.avx.vpermilvar.ps.256"
  21875. }
  21876. break;
  21877. }
  21878. break;
  21879. }
  21880. break;
  21881. case '2': // 1 string to match.
  21882. if (memcmp(NameR.data()+7, ".vbroadcast.ss.ps", 17))
  21883. break;
  21884. return Intrinsic::x86_avx2_vbroadcast_ss_ps; // "86.avx2.vbroadcast.ss.ps"
  21885. }
  21886. break;
  21887. }
  21888. break;
  21889. case 's': // 1 string to match.
  21890. if (memcmp(NameR.data()+4, "sse3.pmadd.ub.sw.128", 20))
  21891. break;
  21892. return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "86.ssse3.pmadd.ub.sw.128"
  21893. }
  21894. break;
  21895. case 25: // 3 strings to match.
  21896. if (memcmp(NameR.data()+0, "86.avx.vinsertf128.", 19))
  21897. break;
  21898. switch (NameR[19]) {
  21899. default: break;
  21900. case 'p': // 2 strings to match.
  21901. switch (NameR[20]) {
  21902. default: break;
  21903. case 'd': // 1 string to match.
  21904. if (memcmp(NameR.data()+21, ".256", 4))
  21905. break;
  21906. return Intrinsic::x86_avx_vinsertf128_pd_256; // "86.avx.vinsertf128.pd.256"
  21907. case 's': // 1 string to match.
  21908. if (memcmp(NameR.data()+21, ".256", 4))
  21909. break;
  21910. return Intrinsic::x86_avx_vinsertf128_ps_256; // "86.avx.vinsertf128.ps.256"
  21911. }
  21912. break;
  21913. case 's': // 1 string to match.
  21914. if (memcmp(NameR.data()+20, "i.256", 5))
  21915. break;
  21916. return Intrinsic::x86_avx_vinsertf128_si_256; // "86.avx.vinsertf128.si.256"
  21917. }
  21918. break;
  21919. case 26: // 3 strings to match.
  21920. if (memcmp(NameR.data()+0, "86.avx.vextractf128.", 20))
  21921. break;
  21922. switch (NameR[20]) {
  21923. default: break;
  21924. case 'p': // 2 strings to match.
  21925. switch (NameR[21]) {
  21926. default: break;
  21927. case 'd': // 1 string to match.
  21928. if (memcmp(NameR.data()+22, ".256", 4))
  21929. break;
  21930. return Intrinsic::x86_avx_vextractf128_pd_256; // "86.avx.vextractf128.pd.256"
  21931. case 's': // 1 string to match.
  21932. if (memcmp(NameR.data()+22, ".256", 4))
  21933. break;
  21934. return Intrinsic::x86_avx_vextractf128_ps_256; // "86.avx.vextractf128.ps.256"
  21935. }
  21936. break;
  21937. case 's': // 1 string to match.
  21938. if (memcmp(NameR.data()+21, "i.256", 5))
  21939. break;
  21940. return Intrinsic::x86_avx_vextractf128_si_256; // "86.avx.vextractf128.si.256"
  21941. }
  21942. break;
  21943. case 28: // 4 strings to match.
  21944. if (memcmp(NameR.data()+0, "86.avx", 6))
  21945. break;
  21946. switch (NameR[6]) {
  21947. default: break;
  21948. case '.': // 2 strings to match.
  21949. if (memcmp(NameR.data()+7, "vbroadcastf128.p", 16))
  21950. break;
  21951. switch (NameR[23]) {
  21952. default: break;
  21953. case 'd': // 1 string to match.
  21954. if (memcmp(NameR.data()+24, ".256", 4))
  21955. break;
  21956. return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "86.avx.vbroadcastf128.pd.256"
  21957. case 's': // 1 string to match.
  21958. if (memcmp(NameR.data()+24, ".256", 4))
  21959. break;
  21960. return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "86.avx.vbroadcastf128.ps.256"
  21961. }
  21962. break;
  21963. case '2': // 2 strings to match.
  21964. if (memcmp(NameR.data()+7, ".vbroadcast.s", 13))
  21965. break;
  21966. switch (NameR[20]) {
  21967. default: break;
  21968. case 'd': // 1 string to match.
  21969. if (memcmp(NameR.data()+21, ".pd.256", 7))
  21970. break;
  21971. return Intrinsic::x86_avx2_vbroadcast_sd_pd_256; // "86.avx2.vbroadcast.sd.pd.256"
  21972. case 's': // 1 string to match.
  21973. if (memcmp(NameR.data()+21, ".ps.256", 7))
  21974. break;
  21975. return Intrinsic::x86_avx2_vbroadcast_ss_ps_256; // "86.avx2.vbroadcast.ss.ps.256"
  21976. }
  21977. break;
  21978. }
  21979. break;
  21980. }
  21981. break; // end of 'x' case.
  21982. }
  21983. #endif
  21984. // Global intrinsic function declaration type table.
  21985. #ifdef GET_INTRINSIC_GENERATOR_GLOBAL
  21986. static const unsigned IIT_Table[] = {
  21987. 0x2E2E, (1U<<31) | 321, 0x4444440, 0x4444440, 0x4, (1U<<31) | 276, 0x4444440,
  21988. 0x4444440, 0x444440, 0x444440, 0x444444, 0x444444, 0x2F2F2F, 0x2F2F2F, 0x2F2F,
  21989. 0x797949, 0x7A7A4A, 0x797949, 0x7A7A4A, (1U<<31) | 305, 0x2F2F2F2F, 0x2F2F, 0x2F2F,
  21990. 0x2F2F, 0x45F0F, 0x45F0F, 0x7A3A, 0x44F1F, 0x44F1F, 0x3A7A, 0x2F2F2F,
  21991. 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x42E2F, (1U<<31) | 365, (1U<<31) | 412, (1U<<31) | 354, (1U<<31) | 438,
  21992. (1U<<31) | 341, (1U<<31) | 470, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 314, (1U<<31) | 314,
  21993. (1U<<31) | 314, 0x2F2F2F, 0x6F2F2F, 0x6F2F2F, 0x2F2F2F, 0x6F2F, 0x6F2F, 0x2F2F2F,
  21994. 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 312, (1U<<31) | 312,
  21995. 0x2F2F2F, (1U<<31) | 314, (1U<<31) | 300, (1U<<31) | 300, (1U<<31) | 300, 0x2F2F, 0x2F2F2F, (1U<<31) | 305,
  21996. (1U<<31) | 305, (1U<<31) | 305, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 305, (1U<<31) | 305, (1U<<31) | 305, 0x2F2F2F,
  21997. 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, 0x2F2F2F, (1U<<31) | 305, 0x2F2F, 0x2F2F2F, 0x2F2F2F,
  21998. 0x2F2F2F, (1U<<31) | 305, 0x2F2F2F, 0x2F2F2F, 0x2F2F, 0x2F2F2F, (1U<<31) | 305, 0x2F2F2F2F,
  21999. (1U<<31) | 314, (1U<<31) | 314, (1U<<31) | 305, 0x2F2F2F, 0x2F2F2F, 0x42F2E0, 0x42F2F2E0, (1U<<31) | 402,
  22000. (1U<<31) | 374, (1U<<31) | 426, (1U<<31) | 385, (1U<<31) | 456, (1U<<31) | 305, 0x2B2B2B, 0x2B2B2B2B, (1U<<31) | 265,
  22001. (1U<<31) | 263, 0x2B2B2B2B, (1U<<31) | 265, (1U<<31) | 263, (1U<<31) | 261, 0x444, 0x444, 0x40,
  22002. 0x444, 0x2E444, 0x2E, 0x444, 0x1F7, 0x1F7, 0xF0F, 0x1F1F,
  22003. 0x37, 0x73, 0x445F1F, 0x444F1F, 0x444F1F, 0x445F0F, 0x444F0F, 0x444F0F,
  22004. 0x445F0F, 0x444F0F, 0x444F0F, 0x1F1F, 0x10F0F, 0xF0F, 0x10F0F, 0x0,
  22005. (1U<<31) | 573, (1U<<31) | 568, 0x0, 0x0, 0x42E, 0x2E40, 0x2E50, 0x40,
  22006. 0x2E0, 0x2E0, 0x2E, 0x2E4, 0x2E4, 0x0, 0x1F1F, 0x1F1F,
  22007. 0xF0F0F, 0x1F1F, 0x1F1F, 0x4, 0x1F1F1F1F, 0x1F1F1F1F, 0x42E, 0x2EE2E2E,
  22008. 0x2E2EE0, 0x2EE2E2E0, 0x44, 0x55, 0x44, 0x444, 0x444, 0x444,
  22009. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22010. 0x444, 0x444, 0x444, 0x555, 0x555, 0x444, 0x545, 0x444,
  22011. 0x444, 0x555, 0x44, 0x44, 0x444, 0x444, 0x444, 0x444,
  22012. 0x445, 0x445, 0x444, 0x555, 0x444, 0x555, 0x444, 0x555,
  22013. 0x444, 0x555, 0x44, 0x55, 0x44, 0x44, 0x55, 0x444,
  22014. 0x444, 0x555, 0x54, 0x54, 0x44, 0x44, 0x44, 0x44,
  22015. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22016. 0x444, 0x444, 0x444, 0x444, 0x444, 0x555, 0x444, 0x444,
  22017. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22018. 0x444, 0x44, 0x44, 0x44, 0x45, 0x44, 0x444, 0x444,
  22019. 0x55, 0x45, 0x44, 0x55, 0x55, 0x55, 0x55, 0x555,
  22020. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22021. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22022. 0x555, 0x555, 0x555, 0x551, 0x551, 0x551, 0x551, 0x551,
  22023. 0x551, 0x551, 0x551, 0x55, 0x555, 0x555, 0x555, 0x555,
  22024. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22025. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x5555,
  22026. 0x555, 0x5555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22027. 0x555, 0x555, 0x444, 0x555, 0x44, 0x44, 0x444, 0x555,
  22028. 0x445, 0x445, 0x541, 0x441, 0x441, 0x441, 0x441, 0x441,
  22029. 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x445,
  22030. 0x445, 0x444, 0x444, 0x444, 0x444, 0x555, 0x444, 0x444,
  22031. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x451, 0x551,
  22032. 0x451, 0x551, 0x451, 0x451, 0x451, 0x451, 0x451, 0x451,
  22033. 0x451, 0x451, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555,
  22034. 0x4555, 0x4555, 0x554, 0x41, 0x441, 0x441, 0x41, 0x441,
  22035. 0x441, 0x441, 0x441, 0x441, 0x551, 0x441, 0x441, 0x441,
  22036. 0x441, 0x551, 0x441, 0x441, 0x551, 0x441, 0x441, 0x45,
  22037. 0x4444, 0x4444, 0x4444, 0x4444, 0x41, 0x441, 0x441, 0x41,
  22038. 0x44, 0x41, 0x444, 0x5545, 0x441, 0x4441, 0x4441, 0x4441,
  22039. 0x4441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441, 0x441,
  22040. 0x441, 0x441, 0x441, 0x441, 0x4441, 0x4441, 0x4441, 0x4441,
  22041. 0x58, 0x57, 0x85, 0x85, 0x87, 0x85, 0x85, 0x84,
  22042. 0x84, 0x84, 0x84, 0x75, 0x75, 0x78, 0x75, 0x75,
  22043. 0x74, 0x74, 0x74, 0x74, 0x58, 0x57, 0x48, 0x47,
  22044. 0x48, 0x47, 0x888, 0x481, 0x881, 0x881, 0x881, 0x881,
  22045. 0x888, 0x888, 0x88, 0x8888, 0x8888, 0x48888, 0x8888, 0x8888,
  22046. 0x48, 0x48, 0x888, 0x888, 0x888, 0x888, 0x777, 0x471,
  22047. 0x771, 0x771, 0x771, 0x771, 0x777, 0x777, 0x77, 0x7777,
  22048. 0x7777, 0x47777, 0x7777, 0x7777, 0x47, 0x47, 0x777, 0x777,
  22049. 0x777, 0x777, 0x4444, 0x4444, 0x4455, 0x4455, 0x4455, 0x4455,
  22050. 0x4455, 0x4455, 0x445, 0x445, 0x444, 0x444, 0x444, 0x444,
  22051. 0x445, 0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455, 0x4455,
  22052. 0x4455, 0x4455, 0x444, 0x445, 0x4455, 0x4455, 0x445, 0x444,
  22053. 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555,
  22054. 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555,
  22055. 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x555, 0x555,
  22056. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22057. 0x555, 0x555, 0x555, 0x555, 0x555, 0x555, 0x4444, 0x4444,
  22058. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22059. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444,
  22060. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444,
  22061. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22062. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444,
  22063. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22064. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22065. 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444, 0x444,
  22066. 0x444, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
  22067. 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445,
  22068. 0x445, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x4455,
  22069. 0x4455, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445, 0x445,
  22070. 0x445, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x4444,
  22071. 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444, 0x444, 0x444,
  22072. 0x444, 0x444, 0x444, 0x444, 0x4444, 0x4444, 0x4444, 0x4444,
  22073. 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4455, 0x4455, 0x4455,
  22074. 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x445, 0x445, 0x445,
  22075. 0x445, 0x445, 0x445, 0x445, 0x445, 0x4455, 0x4455, 0x4455,
  22076. 0x4455, 0x4455, 0x4455, 0x4455, 0x4455, 0x444, 0x4444, 0x4444,
  22077. 0x4444, 0x555, 0x555, 0x5555, 0x5555, 0x555, 0x555, 0x555,
  22078. 0x555, 0x5555, 0x5555, 0x554, 0x554, 0x555, 0x555, 0x4455,
  22079. 0x5555, 0x5555, 0x5555, 0x4455, 0x4455, 0x4455, 0x4455, 0x555,
  22080. 0x555, 0x445, 0x444, 0x445, 0x444, 0x445, 0x445, 0x554,
  22081. 0x554, 0x5555, 0x5555, 0x5555, 0x5555, 0x555, 0x555, 0x555,
  22082. 0x555, 0x4555, 0x455, 0x454, 0x5555, 0x555, 0x4444, 0x4444,
  22083. 0x4444, 0x4444, 0x4444, 0x454, 0x454, 0x454, 0x454, 0x4444,
  22084. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444,
  22085. 0x4444, 0x4444, 0x445, 0x4455, 0x445, 0x4455, 0x5555, 0x5555,
  22086. 0x555, 0x555, 0x5555, 0x5555, 0x555, 0x555, 0x4444, 0x4444,
  22087. 0x4444, 0x5555, 0x5555, 0x555, 0x4455, 0x4455, 0x445, 0x445,
  22088. 0x5555, 0x5555, 0x555, 0x555, 0x4444, 0x455, 0x4555, 0x4555,
  22089. 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444,
  22090. 0x444, 0x4444, 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555,
  22091. 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444,
  22092. 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x455,
  22093. 0x455, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x444,
  22094. 0x454, 0x455, 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555,
  22095. 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x454,
  22096. 0x455, 0x455, 0x44, 0x55, 0x44, 0x54, 0x44, 0x54,
  22097. 0x44, 0x44, 0x54, 0x444, 0x444, 0x44, 0x54, 0x44,
  22098. 0x54, 0x55, 0x4444, 0x544, 0x4455, 0x555, 0x44444, 0x5444,
  22099. 0x44555, 0x5555, 0x55, 0x555, 0x455, 0x4555, 0x4555, 0x4555,
  22100. 0x4555, 0x4555, 0x444, 0x4444, 0x4444, 0x4444, 0x4444, 0x455,
  22101. 0x455, 0x455, 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444,
  22102. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x455, 0x455, 0x455,
  22103. 0x4555, 0x4555, 0x4555, 0x4555, 0x4555, 0x444, 0x4444, 0x4444,
  22104. 0x4444, 0x4444, 0x455, 0x455, 0x445, 0x554, 0x444, 0x444,
  22105. 0x555, 0x555, 0x555, 0x555, 0x44, 0x44, 0x44444, 0x44444,
  22106. 0x44444, 0x44444, 0x444, 0x444, 0x441, 0x441, 0x4555, 0x4555,
  22107. 0x455, 0x455, 0x4555, 0x54, 0x54, 0x54, 0x55, 0x54,
  22108. 0x55, 0x54, 0x55, 0x54, 0x55, 0x44, 0x45, 0x4555,
  22109. 0x4555, 0x45, 0x45, 0x54, 0x555, 0x54, 0x555, 0x45,
  22110. 0x45, 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x454,
  22111. 0x54, 0x4444, 0x544, 0x4455, 0x555, 0x444, 0x441, 0x441,
  22112. 0x4444, 0x4444, 0x4444, 0x4444, 0x4444, 0x444, 0x4444, 0x4444,
  22113. 0x4444, 0x4455, 0x44555, 0x555, 0x555, 0x555, 0x555, 0x555,
  22114. 0x555, 0x454, 0x454, 0x54, 0x455, 0x44, 0x442E2E2E, 0x2E2E2E0,
  22115. (1U<<31) | 282, (1U<<31) | 283, 0x2E50, 0x2E50, 0x1F1F, 0x1F1F, 0x1F1F, 0x42E0,
  22116. (1U<<31) | 9, (1U<<31) | 9, 0x144F23F0, 0x3939, 0x2A2A, 0x44, 0x393939, 0x393939,
  22117. 0x444, 0x393939, 0x393939, 0x444, 0x444, 0x444, 0x393939, 0x2A2A2A,
  22118. 0x393939, 0x2A2A2A, 0x2A2A2A, 0x2A2A2A, 0x444, 0x4444, 0x4444, 0x44,
  22119. 0x4, 0x39390, 0x39390, 0x39390, 0x2A2A4, 0x2A2A4, 0x2A2A4, 0x2A2A4,
  22120. 0x2A2A4, 0x2A2A4, 0x2A2A0, 0x2A2A0, 0x2A2A0, 0x393955, 0x393955, 0x4455,
  22121. 0x393955, 0x393955, 0x2A2A55, 0x2A2A55, 0x393955, 0x393955, 0x393955, 0x4455,
  22122. 0x393955, 0x393955, 0x2A2A55, 0x2A2A55, 0x393955, 0x454, 0x454, 0x454,
  22123. 0x454, 0x454, 0x454, 0x444, 0x42E4, 0x42E4, 0x42E4, 0x4455,
  22124. 0x4455, 0x393955, 0x393955, 0x393955, 0x393955, 0x444, 0x4455, 0x4455,
  22125. 0x455, 0x393939, 0x393939, 0x39394, 0x39394, 0x392A39, 0x392A39, 0x393939,
  22126. 0x444, 0x393939, 0x444, 0x393955, 0x393955, 0x445, 0x445, 0x393939,
  22127. 0x393939, 0x2A2A2A, 0x394, 0x394, 0x2A39, 0x2A39, 0x2A39, 0x2A39,
  22128. 0x2A39, 0x2A39, 0x2A39, 0x2A39, 0x39392A, 0x44439, 0x44439, 0x4439,
  22129. 0x39392A, 0x4439, 0x39392A, 0x4444, 0x2A4, 0x44, 0x439, 0x42A,
  22130. 0x455, 0x43939, 0x42A2A, 0x43939, 0x444, 0x43939, 0x42A2A, 0x43939,
  22131. 0x42A2A, 0x444, 0x43939, 0x42A2A, 0x393939, 0x393939, 0x444, 0x393939,
  22132. 0x393939, 0x444, 0x444, 0x393939, 0x2A2A2A, 0x393939, 0x2A2A2A, 0x2A2A2A,
  22133. 0x2A2A2A, 0x440, 0x1F1F, 0x44, 0x55, 0x888, 0x777, 0x777,
  22134. 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888, 0x777,
  22135. 0x777, 0x73F7, 0x43F4, 0x43F4, 0x0, 0x44, 0x44, 0x44,
  22136. 0x85, 0x74, 0x47, 0x58, 0x44, 0x55, 0x88, 0x77,
  22137. 0x77, 0x44, 0x54, 0x3F0, 0x3F0, 0x77, 0x77, 0x87,
  22138. 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x84,
  22139. 0x84, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
  22140. 0x85, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
  22141. 0x85, 0x777, 0x777, 0x888, 0x777, 0x777, 0x888, 0x777,
  22142. 0x777, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x88,
  22143. 0x77, 0x77, 0x73, 0x73, 0x74, 0x74, 0x74, 0x74,
  22144. 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75,
  22145. 0x75, 0x75, 0x75, 0x75, 0x74, 0x74, 0x74, 0x74,
  22146. 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75,
  22147. 0x75, 0x75, 0x75, 0x75, 0x88, 0x77, 0x77, 0x88,
  22148. 0x77, 0x77, 0x8888, 0x7777, 0x7777, 0x8888, 0x7777, 0x7777,
  22149. 0x8888, 0x7777, 0x7777, 0x8888, 0x7777, 0x7777, 0x888, 0x777,
  22150. 0x777, 0x888, 0x777, 0x777, 0x37, 0x48, 0x48, 0x48,
  22151. 0x48, 0x47, 0x47, 0x47, 0x47, 0x1FE1F, 0xFE0F, 0x3FE3F,
  22152. 0x1FE1F, 0xFE0F, 0x3FE3F, 0x88, 0x77, 0x77, 0x58, 0x58,
  22153. 0x58, 0x58, 0x57, 0x57, 0x57, 0x57, 0x448, 0x444,
  22154. 0x555, 0x444, 0x555, 0x0, 0x0, 0x0, 0x444, 0x555,
  22155. 0x444, 0x555, 0x88, 0x77, 0x33, 0x44, 0x55, 0x22,
  22156. 0x7F3F, 0x444, 0x444, 0x888, 0x777, 0x777, 0x888, 0x777,
  22157. 0x777, 0x888, 0x777, 0x777, 0x888, 0x777, 0x777, 0x444,
  22158. 0x555, 0x444, 0x555, 0x44, 0x54, 0x4444, 0x7F3F, 0x7F3F,
  22159. 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x7F3F, 0x88,
  22160. 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x88, 0x77,
  22161. 0x77, 0x88, 0x77, 0x77, 0x4, 0x4, 0x4, 0x4,
  22162. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22163. 0x4, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x4444,
  22164. 0x4444, 0x88, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
  22165. 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x88, 0x77,
  22166. 0x77, 0x88, 0x77, 0x77, 0x88, 0x77, 0x77, 0x48,
  22167. 0x48, 0x48, 0x48, 0x47, 0x47, 0x47, 0x47, 0x58,
  22168. 0x58, 0x58, 0x58, 0x57, 0x57, 0x57, 0x57, 0x12E0F,
  22169. 0x40, 0x1F1F1F, 0x41F1F, 0x40, 0x0, 0x442E0, 0x442E0, 0x442E0,
  22170. 0x442E0, 0x2E2C, 0x2E3B, 0x2E4A, 0x2E2C, 0x2E2C, 0x2E4A, 0x2E4A,
  22171. 0x3B, 0x4A0, 0x2E2C0, 0x2E3B0, 0x2E4A0, 0x2E4A0, 0x2E4A0, 0x4A4A4A,
  22172. 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B,
  22173. 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x44A7A, 0x44A7A, 0x7A7A4A, 0x7A7A44,
  22174. 0x7A7A4A, 0x7A7A44, 0x2C2C2C, 0x2C2C44, 0x3B3B3B, 0x3B3B44, 0x4A4A4A, 0x4A4A44,
  22175. 0x7A7A4A, 0x7A7A44, 0x7A7A4A, 0x7A7A44, 0x2C2C2C, 0x2C2C44, 0x3B3B3B, 0x3B3B44,
  22176. 0x4A4A4A, 0x4A4A44, 0x2C2C2C, 0x2C2C44, 0x3B3B3B, 0x3B3B44, 0x4A4A4A, 0x4A4A44,
  22177. 0x47A4A, 0x47A4A, 0x7A7A, 0x7A7A, 0x7A7A7A7A, 0x7A7A7A, 0x2C2C2C, 0x3B3B3B,
  22178. 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x3B3B3B3B, 0x3B3B3B3B, 0x7A7A7A, 0x2C2C2C,
  22179. 0x3B3B3B, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x3B3B3B3B, 0x4A2C2C4A, 0x4A3B3B4A,
  22180. 0x4A3B3B4A, 0x4A2C2C4A, 0x4A3B3B4A, 0x4A3B3B4A, 0x2C2C3B, 0x3B3B4A, 0x2C2C3B, 0x3B3B4A,
  22181. 0x2C2C3B, 0x3B3B4A, 0x2C2C3B, 0x3B3B4A, 0x7A7A7A7A, 0x2C4A4A4A, 0x4A4A3B, 0x3B3B2C,
  22182. 0x3B3B2C, 0x4A4A2C, 0x4A4A3B, 0x3B3B2C, 0x4A4A3B, 0x7A7A, 0x7A7A, 0x7A7A,
  22183. 0x7A7A, 0x7A7A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x7A7A, 0x4A4A4A4A, 0x4A4A4A,
  22184. 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x4A4A4A, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A,
  22185. 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x4A4A4A, 0x4A4A4A, 0x2C2C2C, 0x3B3B3B, 0x4A4A4A,
  22186. 0x2C2C2C, 0x3B3B3B, 0x4A4A4A, 0x4A4A4A, 0x4A2C4A, 0x4A3B4A, 0x4A2C4A, 0x4A4A4A,
  22187. 0x3B4A, 0x2C3B, 0x3B4A, 0x3B4A, 0x2C3B, 0x3B4A, 0x2E0, 0x2E0,
  22188. 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x2E0, 0x0, 0x4442E0,
  22189. (1U<<31) | 331, 0x40, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4,
  22190. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22191. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22192. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22193. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22194. 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
  22195. 0x4, 0x4, 0x5, 0x42E, 0x1F1F, (1U<<31) | 0, 0x2E4, 0x42E0,
  22196. 0x42E4, 0x1F1F, (1U<<31) | 0, 0x1F1F, (1U<<31) | 0, 0x2EE2E0, 0x2E0, 0x2E,
  22197. 0x0, 0x1F1F, (1U<<31) | 0, (1U<<31) | 0, (1U<<31) | 0, 0x2E2E0, 0x2E0, 0x42E2E2E0,
  22198. 0x2E0, (1U<<31) | 564, (1U<<31) | 561, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22199. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 561, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 561,
  22200. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 561, (1U<<31) | 564, (1U<<31) | 561, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 561,
  22201. (1U<<31) | 561, 0x595959, 0x595959, 0x595959, 0x595959, 0x5959, 0x25959, (1U<<31) | 29,
  22202. (1U<<31) | 65, (1U<<31) | 193, (1U<<31) | 227, (1U<<31) | 125, (1U<<31) | 171, (1U<<31) | 77, (1U<<31) | 101, (1U<<31) | 41,
  22203. (1U<<31) | 53, (1U<<31) | 205, (1U<<31) | 239, (1U<<31) | 137, (1U<<31) | 149, (1U<<31) | 89, (1U<<31) | 113, 0x4A2E4A,
  22204. 0x4B2E4B, 0x592E59, 0x5A2E5A, 0x4A4A2E0, 0x4B4B2E0, 0x59592E0, 0x5A5A2E0, 0x2E5A,
  22205. 0x42D2D3C, 0x2D2D, 0x4B4B, 0x3C3C, 0x4B4B3C, 0x3C3C2D, 0x4B4B3C, 0x3C3C2D,
  22206. 0x2D2D2D, 0x3C3C3C, 0x2D2D2D, 0x3C3C3C, 0x2D2D2D, 0x3C3C3C, 0x44A4A4A, 0x44B4B4B,
  22207. 0x2D2D2D2D, 0x43C3C3C, 0x2C2C, 0x2C2D, 0x4A4A, 0x4A4B, 0x5959, 0x595A,
  22208. 0x3B3B, 0x3B3C, 0x4B4B4B, 0x7B7B7B, 0x4B4B4B, 0x3C3C3C, 0x3C3C3C, 0x4B4B4B,
  22209. 0x3C3C3C, 0x3C3C3C, 0x2D2D3C, 0x3C3C4B, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x2D2D2D,
  22210. 0x4B4B4B, 0x3C3C3C, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C,
  22211. 0x2D4, 0x2C4B, 0x2C5A, 0x2C3C, 0x4A5A, 0x3B4B, 0x3B5A, 0x2C4B,
  22212. 0x2C5A, 0x2C3C, 0x4A5A, 0x3B4B, 0x3B5A, 0x4B4B5A, 0x3C3C3C, 0x3C3C3C,
  22213. 0x3C3C3C, 0x4B4B5A, 0x2D2D5A, 0x2D2D2D, 0x2D2D2D, 0x4B4B4B, 0x3C3C3C, 0x4A4B4B,
  22214. 0x45A5A, 0x45A5A, 0x595A5A, 0x3B3C3C, 0x44B4B, 0x45A5A, 0x43C3C, 0x4A4A4A,
  22215. 0x4B4B4B, 0x595959, 0x5A5A5A, 0x4A4B4B, 0x3B3C3C, 0x44B4B, 0x43C3C, 0x4A4A4A,
  22216. 0x4B4B4B, 0x4A4B4B, 0x45A5A, 0x45A5A, 0x595A5A, 0x3B3C3C, 0x44B4B, 0x45A5A,
  22217. 0x43C3C, 0x4A4A4A, 0x4B4B4B, 0x595959, 0x5A5A5A, 0x2D2D2D, 0x3C3C3C, 0x2D2D2D,
  22218. 0x3C3C3C, 0x898A, 0x7A7A, 0x7A7B, 0x2E5A, 0x25A59, 0x2595A5A, 0x25A5A5A,
  22219. 0x8A8A8A, 0x7B7B7B, 0x48A8A8A, 0x47B7B7B, (1U<<31) | 537, 0x7B7B7B7B, 0x28A8A8A, 0x27B7B7B,
  22220. 0x8A7A, 0x8A4A, 0x7A8A, 0x7B4B, 0x4A8A, 0x4B7B, 0x8A4A, 0x7B4B,
  22221. 0x47B7B7B, 0x8A8A8A, 0x7B7B7B, 0x8A8A8A, 0x7B7B7B, 0x2E2D, 0x892E89, 0x8A2E8A,
  22222. 0x7A2E7A, 0x7B2E7B, 0x89892E0, 0x8A8A2E0, 0x7A7A2E0, 0x7B7B2E0, 0x8A8A8A, 0x7B7B7B,
  22223. 0x8A8A8A, 0x7B7B7B, 0x8A4, 0x7B4, 0x5A5A4, 0x5A5A4, 0x5A5A4, 0x7B7B,
  22224. 0x48A8A, 0x47B7B, 0x7B7B, 0x8A8A, 0x7B7B, 0x2D2E0, 0x8A2E0, 0x7B2E0,
  22225. 0x2E8A, 0x2E7A, 0x2E7B, 0x2E8A, 0x2E7B, 0x28A89, 0x27B7A, 0x24B4A,
  22226. 0x2898A8A, 0x27A7B7B, 0x24A4B4B, 0x28A8A8A, 0x27B7B7B, 0x24B4B4B, 0x598989, 0x5A8A8A,
  22227. 0x4A7A7A, 0x4B7B7B, 0x89894, 0x8A8A4, 0x7A7A4, 0x7B7B4, 0x89894, 0x8A8A4,
  22228. 0x7A7A4, 0x7B7B4, 0x89894, 0x8A8A4, 0x7A7A4, 0x7B7B4, 0x0, 0x0,
  22229. 0x444, 0x555, 0x444, 0x555, 0x444, 0x555, 0x444, 0x555,
  22230. (1U<<31) | 524, (1U<<31) | 537, 0x7A7A7A7A, 0x7B7B7B7B, (1U<<31) | 524, 0x7A7A7A7A, (1U<<31) | 524, (1U<<31) | 537,
  22231. 0x7A7A7A7A, 0x7B7B7B7B, (1U<<31) | 524, (1U<<31) | 537, 0x7A7A7A7A, 0x7B7B7B7B, (1U<<31) | 524, 0x7A7A7A7A,
  22232. (1U<<31) | 524, (1U<<31) | 537, 0x7A7A7A7A, 0x7B7B7B7B, (1U<<31) | 524, (1U<<31) | 537, 0x7A7A7A7A, 0x7B7B7B7B,
  22233. (1U<<31) | 524, 0x7A7A7A7A, (1U<<31) | 524, (1U<<31) | 537, 0x7A7A7A7A, 0x7B7B7B7B, (1U<<31) | 524, 0x7A7A7A7A,
  22234. 0x20, 0x0, 0x0, (1U<<31) | 289, (1U<<31) | 559, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22235. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22236. (1U<<31) | 295, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22237. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 512, (1U<<31) | 499, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22238. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 546, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22239. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 516, (1U<<31) | 516, (1U<<31) | 516, (1U<<31) | 564,
  22240. (1U<<31) | 564, (1U<<31) | 516, (1U<<31) | 516, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 516, (1U<<31) | 516,
  22241. (1U<<31) | 516, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22242. (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564, (1U<<31) | 564,
  22243. 0x2595959, 0x4, 0x5, 0x4, 0x5, (1U<<31) | 398, (1U<<31) | 504, (1U<<31) | 508,
  22244. (1U<<31) | 398, (1U<<31) | 504, (1U<<31) | 508, 0x898989, 0x2E0, 0x2898989, 0x2898989, 0x89894,
  22245. 0x89894, 0x89894, 0x89894, 0x89894, 0x89894, 0x4A89, 0x4A7A, 0x894A,
  22246. 0x897A, 0x7A4A, 0x7A89, 0x894, 0x895, 0x897A7A, 0x48989, 0x58989,
  22247. 0x7A8989, 0x894A, 0x7A4A, 0x894, 0x895, 0x898989, 0x0, 0x2E2C2C0,
  22248. 0x898989, 0x898989, 0x0, 0x898989, 0x898989, 0x894, 0x898989, 0x4A4A3B,
  22249. 0x3B3B2C, 0x3B3B2C, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B,
  22250. 0x3B3B4A, 0x3B3B3B, 0x2C2C2C, 0x3B3B3B, 0x2C2C2C, 0x2C4, 0x3B3B3B, 0x3B3B3B,
  22251. 0x4A4A59, 0x2C2C59, 0x4A4A4A, 0x45959, 0x45959, 0x595959, 0x3B3B3B, 0x44A4A,
  22252. 0x45959, 0x43B3B, 0x4A4A4A, 0x3B3B3B, 0x44A4A, 0x43B3B, 0x4A4A4A, 0x45959,
  22253. 0x45959, 0x595959, 0x3B3B3B, 0x44A4A, 0x45959, 0x43B3B, 0x2C2C2C, 0x3B3B3B,
  22254. 0x2C2C2C, 0x3B3B3B, 0x8989, 0x8989, 0x4A2E0, 0x2C2E0, 0x892E0, 0x898989,
  22255. 0x89894, 0x89894, 0x89894, 0x89894, 0x89894, 0x89894, 0x898989, 0x7A7A7A,
  22256. 0x898989, 0x7A7A7A, 0x898989, 0x7A7A7A, 0x2E2C, 0x442E0, 0x440, 0x4898989,
  22257. 0x47A7A7A, (1U<<31) | 524, 0x7A7A7A7A, 0x4898989, 0x47A7A7A, 0x47A4, 0x47A7A7A, 0x2E59,
  22258. 0x42C2C3B, 0x4A4A3B, 0x2C2C2C2C, 0x43B3B3B, 0x42C4, 0x44A4, 0x4595, 0x3B3B,
  22259. 0x2C2C2C, 0x4A4A4A, 0x4A4A4A, 0x3B3B3B, 0x2C2C2C, 0x4A4A4A, 0x4A4A4A, 0x3B3B3B,
  22260. 0x2C4A, 0x2C59, 0x2C3B, 0x4A59, 0x3B4A, 0x3B59, 0x2C4A, 0x2C59,
  22261. 0x2C3B, 0x4A59, 0x3B4A, 0x3B59, 0x4A4A59, 0x59594, 0x59594, 0x59594,
  22262. 0x48989, 0x47A7A, 0x4898989, 0x47A7A7A, 0x344, 0x444, 0x244, 0x555,
  22263. 0x255, 0x242C42C4, 0x242C42C4, 0x242C42C4, 0x242C42C4, 0x242C42C4, 0x242C42C4, (1U<<31) | 19,
  22264. 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C4, 0x22C2C2C, 0x2C5959,
  22265. 0x225959, 0x595959, 0x22595959, 0x892E0, 0x7A2E0, 0x7A7A7A, 0x27A7A7A, 0x27A7A7A,
  22266. 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, 0x7A7A4, (1U<<31) | 533, (1U<<31) | 555,
  22267. (1U<<31) | 549, (1U<<31) | 520, 0x47A7A, 0x57A7A, 0x7A4, 0x7A5, (1U<<31) | 533, (1U<<31) | 520,
  22268. 0x7A4, 0x7A5, 0x7A7A7A, 0x2E0, 0x7A7A7A, 0x7A7A7A, 0x7A7A7A, 0x7A7A7A,
  22269. 0x7A4, 0x7A7A7A, (1U<<31) | 296, 0x7A7A, 0x7A7A, 0x7A7A, 0x7A7A, 0x0,
  22270. 0x7A7A, 0x7A7A, 0x2E0, 0x7A2E0, 0x7A7A7A, 0x7A7A4, 0x7A7A4, 0x7A7A4,
  22271. 0x7A7A4, 0x7A7A4, 0x7A7A4, (1U<<31) | 561, 0x2C2C, (1U<<31) | 561, 0x4A4A, (1U<<31) | 561,
  22272. 0x3B3B, (1U<<31) | 564, 0x4A4A4A, (1U<<31) | 564, 0x3B3B3B, (1U<<31) | 564, 0x3B3B3B, (1U<<31) | 564,
  22273. 0x4A4A4A, (1U<<31) | 564, 0x3B3B3B, (1U<<31) | 564, 0x3B3B3B, (1U<<31) | 564, 0x2C2C3B, (1U<<31) | 564,
  22274. 0x3B3B3B, (1U<<31) | 564, 0x2C2C2C, (1U<<31) | 564, 0x2C2C2C, (1U<<31) | 564, 0x4A4A4A, (1U<<31) | 564,
  22275. 0x3B3B3B, 0x3B7A, 0x3B7B, 0x47A3B, 0x47B3B, 0x40, 0x50, 0x40,
  22276. 0x50, 0x20, 0x4, 0x0, 0x8989, 0x8A8A, 0x7A7A, 0x7B7B,
  22277. 0x8989, 0x7A7A, 0x59595959, 0x5A5A5A5A, 0x22C2C2C, 0x24A4A4A, 0x2595959, 0x22C2C2C,
  22278. 0x24A4A4A, 0x2595959, 0x23B3B3B, 0x23B3B3B, (1U<<31) | 217, (1U<<31) | 251, (1U<<31) | 161, (1U<<31) | 183,
  22279. 0x2C4A, 0x2C59, 0x2C3B, 0x4A59, 0x2C4A, 0x2C59, 0x2C3B, 0x4A59,
  22280. 0x3B4A, 0x3B59, 0x3B4A, 0x3B59, 0x2C3B, 0x4A59, 0x3B4A, 0x4A4A4A4A,
  22281. 0x594A4A59, 0x594A4A59, 0x4A4A4A4A, 0x594A4A59, 0x594A4A59, 0x4A3B3B4A, 0x3B3B3B3B, 0x4A3B3B4A,
  22282. 0x3B3B3B3B, 0x4A3B3B4A, 0x4A3B3B4A, 0x2C2C2C2C, 0x2C2C2C, 0x22C2C, 0x4A4A4A, 0x24A4A,
  22283. 0x595959, 0x25959, 0x3B3B3B, 0x23B3B, 0x2C2C2C, 0x4A4A4A, 0x595959, 0x3B3B3B,
  22284. 0x2C2C2C, 0x4A4A4A, 0x595959, 0x3B3B3B, 0x4, 0x44, 0x2E2E, 0x43F0,
  22285. 0x0, 0x40, 0x4444, (1U<<31) | 492, 0x3F0, 0x3F4, 0x3F0, 0x4,
  22286. 0x4, 0x4, 0x44, 0x43F, 0x7F3F, 0x3F4, 0x3F4, 0x3F4,
  22287. 0x2E3F0, 0x2E3F0, 0x2E3F0, 0x2E3F0, 0x2E3F0, 0x43F4, 0x3F4, 0x3F0,
  22288. 0x3F0, 0x43F0, 0x43F0, 0x43F4, 0x43F0, 0x3F4, 0x43F0, 0x7F3F0,
  22289. 0x43F0, 0x2E3F0, 0x440, 0x43F0, 0x43F0, 0x7F3F0, 0x40, 0x43F0,
  22290. 0x2E3F0, 0x444, 0x0, 0x3F0, 0x3F4, 0x3F4, 0x2E, 0x444, 0
  22291. };
  22292. static const unsigned char IIT_LongEncodingTable[] = {
  22293. /* 0 */ 19, 15, 0, 1, 15, 0, 15, 0, 0,
  22294. /* 9 */ 0, 15, 3, 15, 7, 15, 8, 4, 1, 0,
  22295. /* 19 */ 12, 2, 12, 2, 4, 12, 2, 4, 2, 0,
  22296. /* 29 */ 10, 4, 10, 4, 14, 2, 10, 4, 10, 4, 2, 0,
  22297. /* 41 */ 10, 4, 10, 4, 14, 2, 9, 5, 10, 4, 2, 0,
  22298. /* 53 */ 10, 4, 10, 4, 14, 2, 10, 5, 10, 4, 2, 0,
  22299. /* 65 */ 11, 4, 11, 4, 14, 2, 11, 4, 11, 4, 2, 0,
  22300. /* 77 */ 9, 5, 9, 5, 14, 2, 10, 4, 9, 5, 2, 0,
  22301. /* 89 */ 9, 5, 9, 5, 14, 2, 9, 5, 9, 5, 2, 0,
  22302. /* 101 */ 10, 5, 10, 5, 14, 2, 10, 4, 10, 5, 2, 0,
  22303. /* 113 */ 10, 5, 10, 5, 14, 2, 10, 5, 10, 5, 2, 0,
  22304. /* 125 */ 10, 7, 10, 7, 14, 2, 10, 4, 10, 7, 2, 0,
  22305. /* 137 */ 10, 7, 10, 7, 14, 2, 9, 5, 10, 7, 2, 0,
  22306. /* 149 */ 10, 7, 10, 7, 14, 2, 10, 5, 10, 7, 2, 0,
  22307. /* 161 */ 10, 7, 10, 7, 10, 7, 10, 7, 2, 0,
  22308. /* 171 */ 11, 7, 11, 7, 14, 2, 11, 4, 11, 7, 2, 0,
  22309. /* 183 */ 11, 7, 11, 7, 11, 7, 11, 7, 2, 0,
  22310. /* 193 */ 9, 8, 9, 8, 14, 2, 10, 4, 9, 8, 2, 0,
  22311. /* 205 */ 9, 8, 9, 8, 14, 2, 9, 5, 9, 8, 2, 0,
  22312. /* 217 */ 9, 8, 9, 8, 9, 8, 9, 8, 2, 0,
  22313. /* 227 */ 10, 8, 10, 8, 14, 2, 10, 4, 10, 8, 2, 0,
  22314. /* 239 */ 10, 8, 10, 8, 14, 2, 10, 5, 10, 8, 2, 0,
  22315. /* 251 */ 10, 8, 10, 8, 10, 8, 10, 8, 2, 0,
  22316. /* 261 */ 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 11, 2, 0,
  22317. /* 276 */ 19, 4, 4, 14, 2, 0,
  22318. /* 282 */ 0, 14, 18, 5, 14, 2, 0,
  22319. /* 289 */ 0, 16, 16, 14, 2, 0,
  22320. /* 295 */ 16, 16, 16, 2, 0,
  22321. /* 300 */ 15, 2, 23, 2, 0,
  22322. /* 305 */ 15, 2, 23, 2, 23, 2, 0,
  22323. /* 312 */ 15, 2, 15, 2, 24, 2, 24, 2, 0,
  22324. /* 321 */ 15, 0, 15, 0, 14, 2, 14, 2, 4, 0,
  22325. /* 331 */ 15, 3, 15, 3, 14, 2, 14, 2, 4, 0,
  22326. /* 341 */ 21, 15, 2, 15, 2, 15, 2, 15, 2, 14, 2, 4, 0,
  22327. /* 354 */ 20, 15, 2, 15, 2, 15, 2, 14, 2, 4, 0,
  22328. /* 365 */ 19, 15, 2, 15, 2, 14, 2, 4, 0,
  22329. /* 374 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 4, 0,
  22330. /* 385 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 0,
  22331. /* 398 */ 19, 3, 4, 0,
  22332. /* 402 */ 0, 14, 2, 15, 2, 15, 2, 4, 4, 0,
  22333. /* 412 */ 19, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 4, 4, 0,
  22334. /* 426 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22335. /* 438 */ 20, 15, 2, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22336. /* 456 */ 0, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22337. /* 470 */ 21, 15, 2, 15, 2, 15, 2, 15, 2, 14, 2, 15, 2, 15, 2, 15, 2, 15, 2, 4, 4, 0,
  22338. /* 492 */ 19, 4, 4, 4, 4, 4, 0,
  22339. /* 499 */ 16, 16, 4, 4, 0,
  22340. /* 504 */ 19, 4, 4, 0,
  22341. /* 508 */ 19, 5, 4, 0,
  22342. /* 512 */ 4, 16, 4, 0,
  22343. /* 516 */ 16, 16, 4, 0,
  22344. /* 520 */ 16, 10, 7, 0,
  22345. /* 524 */ 9, 8, 9, 8, 9, 8, 9, 8, 0,
  22346. /* 533 */ 16, 9, 8, 0,
  22347. /* 537 */ 10, 8, 10, 8, 10, 8, 10, 8, 0,
  22348. /* 546 */ 4, 16, 0,
  22349. /* 549 */ 10, 7, 10, 7, 16, 0,
  22350. /* 555 */ 9, 8, 16, 0,
  22351. /* 559 */ 0, 14, 16, 16, 0,
  22352. /* 564 */ 16, 16, 16, 0,
  22353. /* 568 */ 0, 17, 5, 17, 0,
  22354. /* 573 */ 0, 17, 17, 0,
  22355. 255
  22356. };
  22357. #endif
  22358. // Add parameter attributes that are not common to all intrinsics.
  22359. #ifdef GET_INTRINSIC_ATTRIBUTES
  22360. AttributeSet Intrinsic::getAttributes(LLVMContext &C, ID id) {
  22361. static const uint8_t IntrinsicsToAttributesMap[] = {
  22362. 1, // llvm.adjust.trampoline
  22363. 2, // llvm.annotation
  22364. 2, // llvm.arm.cdp
  22365. 2, // llvm.arm.cdp2
  22366. 3, // llvm.arm.get.fpscr
  22367. 1, // llvm.arm.ldrexd
  22368. 2, // llvm.arm.mcr
  22369. 2, // llvm.arm.mcr2
  22370. 2, // llvm.arm.mcrr
  22371. 2, // llvm.arm.mcrr2
  22372. 2, // llvm.arm.mrc
  22373. 2, // llvm.arm.mrc2
  22374. 3, // llvm.arm.neon.vabds
  22375. 3, // llvm.arm.neon.vabdu
  22376. 3, // llvm.arm.neon.vabs
  22377. 3, // llvm.arm.neon.vacged
  22378. 3, // llvm.arm.neon.vacgeq
  22379. 3, // llvm.arm.neon.vacgtd
  22380. 3, // llvm.arm.neon.vacgtq
  22381. 3, // llvm.arm.neon.vaddhn
  22382. 3, // llvm.arm.neon.vbsl
  22383. 3, // llvm.arm.neon.vcls
  22384. 3, // llvm.arm.neon.vclz
  22385. 3, // llvm.arm.neon.vcnt
  22386. 3, // llvm.arm.neon.vcvtfp2fxs
  22387. 3, // llvm.arm.neon.vcvtfp2fxu
  22388. 3, // llvm.arm.neon.vcvtfp2hf
  22389. 3, // llvm.arm.neon.vcvtfxs2fp
  22390. 3, // llvm.arm.neon.vcvtfxu2fp
  22391. 3, // llvm.arm.neon.vcvthf2fp
  22392. 3, // llvm.arm.neon.vhadds
  22393. 3, // llvm.arm.neon.vhaddu
  22394. 3, // llvm.arm.neon.vhsubs
  22395. 3, // llvm.arm.neon.vhsubu
  22396. 1, // llvm.arm.neon.vld1
  22397. 1, // llvm.arm.neon.vld2
  22398. 1, // llvm.arm.neon.vld2lane
  22399. 1, // llvm.arm.neon.vld3
  22400. 1, // llvm.arm.neon.vld3lane
  22401. 1, // llvm.arm.neon.vld4
  22402. 1, // llvm.arm.neon.vld4lane
  22403. 3, // llvm.arm.neon.vmaxs
  22404. 3, // llvm.arm.neon.vmaxu
  22405. 3, // llvm.arm.neon.vmins
  22406. 3, // llvm.arm.neon.vminu
  22407. 3, // llvm.arm.neon.vmullp
  22408. 3, // llvm.arm.neon.vmulls
  22409. 3, // llvm.arm.neon.vmullu
  22410. 3, // llvm.arm.neon.vmulp
  22411. 3, // llvm.arm.neon.vpadals
  22412. 3, // llvm.arm.neon.vpadalu
  22413. 3, // llvm.arm.neon.vpadd
  22414. 3, // llvm.arm.neon.vpaddls
  22415. 3, // llvm.arm.neon.vpaddlu
  22416. 3, // llvm.arm.neon.vpmaxs
  22417. 3, // llvm.arm.neon.vpmaxu
  22418. 3, // llvm.arm.neon.vpmins
  22419. 3, // llvm.arm.neon.vpminu
  22420. 3, // llvm.arm.neon.vqabs
  22421. 3, // llvm.arm.neon.vqadds
  22422. 3, // llvm.arm.neon.vqaddu
  22423. 3, // llvm.arm.neon.vqdmlal
  22424. 3, // llvm.arm.neon.vqdmlsl
  22425. 3, // llvm.arm.neon.vqdmulh
  22426. 3, // llvm.arm.neon.vqdmull
  22427. 3, // llvm.arm.neon.vqmovns
  22428. 3, // llvm.arm.neon.vqmovnsu
  22429. 3, // llvm.arm.neon.vqmovnu
  22430. 3, // llvm.arm.neon.vqneg
  22431. 3, // llvm.arm.neon.vqrdmulh
  22432. 3, // llvm.arm.neon.vqrshiftns
  22433. 3, // llvm.arm.neon.vqrshiftnsu
  22434. 3, // llvm.arm.neon.vqrshiftnu
  22435. 3, // llvm.arm.neon.vqrshifts
  22436. 3, // llvm.arm.neon.vqrshiftu
  22437. 3, // llvm.arm.neon.vqshiftns
  22438. 3, // llvm.arm.neon.vqshiftnsu
  22439. 3, // llvm.arm.neon.vqshiftnu
  22440. 3, // llvm.arm.neon.vqshifts
  22441. 3, // llvm.arm.neon.vqshiftsu
  22442. 3, // llvm.arm.neon.vqshiftu
  22443. 3, // llvm.arm.neon.vqsubs
  22444. 3, // llvm.arm.neon.vqsubu
  22445. 3, // llvm.arm.neon.vraddhn
  22446. 3, // llvm.arm.neon.vrecpe
  22447. 3, // llvm.arm.neon.vrecps
  22448. 3, // llvm.arm.neon.vrhadds
  22449. 3, // llvm.arm.neon.vrhaddu
  22450. 3, // llvm.arm.neon.vrshiftn
  22451. 3, // llvm.arm.neon.vrshifts
  22452. 3, // llvm.arm.neon.vrshiftu
  22453. 3, // llvm.arm.neon.vrsqrte
  22454. 3, // llvm.arm.neon.vrsqrts
  22455. 3, // llvm.arm.neon.vrsubhn
  22456. 3, // llvm.arm.neon.vshiftins
  22457. 3, // llvm.arm.neon.vshiftls
  22458. 3, // llvm.arm.neon.vshiftlu
  22459. 3, // llvm.arm.neon.vshiftn
  22460. 3, // llvm.arm.neon.vshifts
  22461. 3, // llvm.arm.neon.vshiftu
  22462. 2, // llvm.arm.neon.vst1
  22463. 2, // llvm.arm.neon.vst2
  22464. 2, // llvm.arm.neon.vst2lane
  22465. 2, // llvm.arm.neon.vst3
  22466. 2, // llvm.arm.neon.vst3lane
  22467. 2, // llvm.arm.neon.vst4
  22468. 2, // llvm.arm.neon.vst4lane
  22469. 3, // llvm.arm.neon.vsubhn
  22470. 3, // llvm.arm.neon.vtbl1
  22471. 3, // llvm.arm.neon.vtbl2
  22472. 3, // llvm.arm.neon.vtbl3
  22473. 3, // llvm.arm.neon.vtbl4
  22474. 3, // llvm.arm.neon.vtbx1
  22475. 3, // llvm.arm.neon.vtbx2
  22476. 3, // llvm.arm.neon.vtbx3
  22477. 3, // llvm.arm.neon.vtbx4
  22478. 3, // llvm.arm.qadd
  22479. 3, // llvm.arm.qsub
  22480. 2, // llvm.arm.set.fpscr
  22481. 3, // llvm.arm.ssat
  22482. 2, // llvm.arm.strexd
  22483. 3, // llvm.arm.thread.pointer
  22484. 3, // llvm.arm.usat
  22485. 3, // llvm.arm.vcvtr
  22486. 3, // llvm.arm.vcvtru
  22487. 3, // llvm.bswap
  22488. 1, // llvm.ceil
  22489. 3, // llvm.convert.from.fp16
  22490. 3, // llvm.convert.to.fp16
  22491. 2, // llvm.convertff
  22492. 2, // llvm.convertfsi
  22493. 2, // llvm.convertfui
  22494. 2, // llvm.convertsif
  22495. 2, // llvm.convertss
  22496. 2, // llvm.convertsu
  22497. 2, // llvm.convertuif
  22498. 2, // llvm.convertus
  22499. 2, // llvm.convertuu
  22500. 1, // llvm.cos
  22501. 3, // llvm.ctlz
  22502. 3, // llvm.ctpop
  22503. 3, // llvm.cttz
  22504. 2, // llvm.cuda.syncthreads
  22505. 3, // llvm.dbg.declare
  22506. 3, // llvm.dbg.value
  22507. 2, // llvm.debugtrap
  22508. 3, // llvm.donothing
  22509. 2, // llvm.eh.dwarf.cfa
  22510. 2, // llvm.eh.return.i32
  22511. 2, // llvm.eh.return.i64
  22512. 3, // llvm.eh.sjlj.callsite
  22513. 2, // llvm.eh.sjlj.functioncontext
  22514. 4, // llvm.eh.sjlj.longjmp
  22515. 3, // llvm.eh.sjlj.lsda
  22516. 2, // llvm.eh.sjlj.setjmp
  22517. 3, // llvm.eh.typeid.for
  22518. 2, // llvm.eh.unwind.init
  22519. 1, // llvm.exp
  22520. 1, // llvm.exp2
  22521. 3, // llvm.expect
  22522. 1, // llvm.fabs
  22523. 1, // llvm.floor
  22524. 2, // llvm.flt.rounds
  22525. 3, // llvm.fma
  22526. 3, // llvm.fmuladd
  22527. 3, // llvm.frameaddress
  22528. 1, // llvm.gcread
  22529. 2, // llvm.gcroot
  22530. 5, // llvm.gcwrite
  22531. 3, // llvm.hexagon.A2.abs
  22532. 3, // llvm.hexagon.A2.absp
  22533. 3, // llvm.hexagon.A2.abssat
  22534. 3, // llvm.hexagon.A2.add
  22535. 3, // llvm.hexagon.A2.addh.h16.hh
  22536. 3, // llvm.hexagon.A2.addh.h16.hl
  22537. 3, // llvm.hexagon.A2.addh.h16.lh
  22538. 3, // llvm.hexagon.A2.addh.h16.ll
  22539. 3, // llvm.hexagon.A2.addh.h16.sat.hh
  22540. 3, // llvm.hexagon.A2.addh.h16.sat.hl
  22541. 3, // llvm.hexagon.A2.addh.h16.sat.lh
  22542. 3, // llvm.hexagon.A2.addh.h16.sat.ll
  22543. 3, // llvm.hexagon.A2.addh.l16.hl
  22544. 3, // llvm.hexagon.A2.addh.l16.ll
  22545. 3, // llvm.hexagon.A2.addh.l16.sat.hl
  22546. 3, // llvm.hexagon.A2.addh.l16.sat.ll
  22547. 3, // llvm.hexagon.A2.addi
  22548. 3, // llvm.hexagon.A2.addp
  22549. 3, // llvm.hexagon.A2.addpsat
  22550. 3, // llvm.hexagon.A2.addsat
  22551. 3, // llvm.hexagon.A2.addsp
  22552. 3, // llvm.hexagon.A2.and
  22553. 3, // llvm.hexagon.A2.andir
  22554. 3, // llvm.hexagon.A2.andp
  22555. 3, // llvm.hexagon.A2.aslh
  22556. 3, // llvm.hexagon.A2.asrh
  22557. 3, // llvm.hexagon.A2.combine.hh
  22558. 3, // llvm.hexagon.A2.combine.hl
  22559. 3, // llvm.hexagon.A2.combine.lh
  22560. 3, // llvm.hexagon.A2.combine.ll
  22561. 3, // llvm.hexagon.A2.combineii
  22562. 3, // llvm.hexagon.A2.combinew
  22563. 3, // llvm.hexagon.A2.max
  22564. 3, // llvm.hexagon.A2.maxp
  22565. 3, // llvm.hexagon.A2.maxu
  22566. 3, // llvm.hexagon.A2.maxup
  22567. 3, // llvm.hexagon.A2.min
  22568. 3, // llvm.hexagon.A2.minp
  22569. 3, // llvm.hexagon.A2.minu
  22570. 3, // llvm.hexagon.A2.minup
  22571. 3, // llvm.hexagon.A2.neg
  22572. 3, // llvm.hexagon.A2.negp
  22573. 3, // llvm.hexagon.A2.negsat
  22574. 3, // llvm.hexagon.A2.not
  22575. 3, // llvm.hexagon.A2.notp
  22576. 3, // llvm.hexagon.A2.or
  22577. 3, // llvm.hexagon.A2.orir
  22578. 3, // llvm.hexagon.A2.orp
  22579. 3, // llvm.hexagon.A2.roundsat
  22580. 3, // llvm.hexagon.A2.sat
  22581. 3, // llvm.hexagon.A2.satb
  22582. 3, // llvm.hexagon.A2.sath
  22583. 3, // llvm.hexagon.A2.satub
  22584. 3, // llvm.hexagon.A2.satuh
  22585. 3, // llvm.hexagon.A2.sub
  22586. 3, // llvm.hexagon.A2.subh.h16.hh
  22587. 3, // llvm.hexagon.A2.subh.h16.hl
  22588. 3, // llvm.hexagon.A2.subh.h16.lh
  22589. 3, // llvm.hexagon.A2.subh.h16.ll
  22590. 3, // llvm.hexagon.A2.subh.h16.sat.hh
  22591. 3, // llvm.hexagon.A2.subh.h16.sat.hl
  22592. 3, // llvm.hexagon.A2.subh.h16.sat.lh
  22593. 3, // llvm.hexagon.A2.subh.h16.sat.ll
  22594. 3, // llvm.hexagon.A2.subh.l16.hl
  22595. 3, // llvm.hexagon.A2.subh.l16.ll
  22596. 3, // llvm.hexagon.A2.subh.l16.sat.hl
  22597. 3, // llvm.hexagon.A2.subh.l16.sat.ll
  22598. 3, // llvm.hexagon.A2.subp
  22599. 3, // llvm.hexagon.A2.subri
  22600. 3, // llvm.hexagon.A2.subsat
  22601. 3, // llvm.hexagon.A2.svaddh
  22602. 3, // llvm.hexagon.A2.svaddhs
  22603. 3, // llvm.hexagon.A2.svadduhs
  22604. 3, // llvm.hexagon.A2.svavgh
  22605. 3, // llvm.hexagon.A2.svavghs
  22606. 3, // llvm.hexagon.A2.svnavgh
  22607. 3, // llvm.hexagon.A2.svsubh
  22608. 3, // llvm.hexagon.A2.svsubhs
  22609. 3, // llvm.hexagon.A2.svsubuhs
  22610. 3, // llvm.hexagon.A2.swiz
  22611. 3, // llvm.hexagon.A2.sxtb
  22612. 3, // llvm.hexagon.A2.sxth
  22613. 3, // llvm.hexagon.A2.sxtw
  22614. 3, // llvm.hexagon.A2.tfr
  22615. 3, // llvm.hexagon.A2.tfrih
  22616. 3, // llvm.hexagon.A2.tfril
  22617. 3, // llvm.hexagon.A2.tfrp
  22618. 3, // llvm.hexagon.A2.tfrpi
  22619. 3, // llvm.hexagon.A2.tfrsi
  22620. 3, // llvm.hexagon.A2.vabsh
  22621. 3, // llvm.hexagon.A2.vabshsat
  22622. 3, // llvm.hexagon.A2.vabsw
  22623. 3, // llvm.hexagon.A2.vabswsat
  22624. 3, // llvm.hexagon.A2.vaddb.map
  22625. 3, // llvm.hexagon.A2.vaddh
  22626. 3, // llvm.hexagon.A2.vaddhs
  22627. 3, // llvm.hexagon.A2.vaddub
  22628. 3, // llvm.hexagon.A2.vaddubs
  22629. 3, // llvm.hexagon.A2.vadduhs
  22630. 3, // llvm.hexagon.A2.vaddw
  22631. 3, // llvm.hexagon.A2.vaddws
  22632. 3, // llvm.hexagon.A2.vavgh
  22633. 3, // llvm.hexagon.A2.vavghcr
  22634. 3, // llvm.hexagon.A2.vavghr
  22635. 3, // llvm.hexagon.A2.vavgub
  22636. 3, // llvm.hexagon.A2.vavgubr
  22637. 3, // llvm.hexagon.A2.vavguh
  22638. 3, // llvm.hexagon.A2.vavguhr
  22639. 3, // llvm.hexagon.A2.vavguw
  22640. 3, // llvm.hexagon.A2.vavguwr
  22641. 3, // llvm.hexagon.A2.vavgw
  22642. 3, // llvm.hexagon.A2.vavgwcr
  22643. 3, // llvm.hexagon.A2.vavgwr
  22644. 3, // llvm.hexagon.A2.vcmpbeq
  22645. 3, // llvm.hexagon.A2.vcmpbgtu
  22646. 3, // llvm.hexagon.A2.vcmpheq
  22647. 3, // llvm.hexagon.A2.vcmphgt
  22648. 3, // llvm.hexagon.A2.vcmphgtu
  22649. 3, // llvm.hexagon.A2.vcmpweq
  22650. 3, // llvm.hexagon.A2.vcmpwgt
  22651. 3, // llvm.hexagon.A2.vcmpwgtu
  22652. 3, // llvm.hexagon.A2.vconj
  22653. 3, // llvm.hexagon.A2.vmaxb
  22654. 3, // llvm.hexagon.A2.vmaxh
  22655. 3, // llvm.hexagon.A2.vmaxub
  22656. 3, // llvm.hexagon.A2.vmaxuh
  22657. 3, // llvm.hexagon.A2.vmaxuw
  22658. 3, // llvm.hexagon.A2.vmaxw
  22659. 3, // llvm.hexagon.A2.vminb
  22660. 3, // llvm.hexagon.A2.vminh
  22661. 3, // llvm.hexagon.A2.vminub
  22662. 3, // llvm.hexagon.A2.vminuh
  22663. 3, // llvm.hexagon.A2.vminuw
  22664. 3, // llvm.hexagon.A2.vminw
  22665. 3, // llvm.hexagon.A2.vnavgh
  22666. 3, // llvm.hexagon.A2.vnavghcr
  22667. 3, // llvm.hexagon.A2.vnavghr
  22668. 3, // llvm.hexagon.A2.vnavgw
  22669. 3, // llvm.hexagon.A2.vnavgwcr
  22670. 3, // llvm.hexagon.A2.vnavgwr
  22671. 3, // llvm.hexagon.A2.vraddub
  22672. 3, // llvm.hexagon.A2.vraddub.acc
  22673. 3, // llvm.hexagon.A2.vrsadub
  22674. 3, // llvm.hexagon.A2.vrsadub.acc
  22675. 3, // llvm.hexagon.A2.vsubb.map
  22676. 3, // llvm.hexagon.A2.vsubh
  22677. 3, // llvm.hexagon.A2.vsubhs
  22678. 3, // llvm.hexagon.A2.vsubub
  22679. 3, // llvm.hexagon.A2.vsububs
  22680. 3, // llvm.hexagon.A2.vsubuhs
  22681. 3, // llvm.hexagon.A2.vsubw
  22682. 3, // llvm.hexagon.A2.vsubws
  22683. 3, // llvm.hexagon.A2.xor
  22684. 3, // llvm.hexagon.A2.xorp
  22685. 3, // llvm.hexagon.A2.zxtb
  22686. 3, // llvm.hexagon.A2.zxth
  22687. 3, // llvm.hexagon.A4.andn
  22688. 3, // llvm.hexagon.A4.andnp
  22689. 3, // llvm.hexagon.A4.bitsplit
  22690. 3, // llvm.hexagon.A4.bitspliti
  22691. 3, // llvm.hexagon.A4.boundscheck
  22692. 3, // llvm.hexagon.A4.cmpbeq
  22693. 3, // llvm.hexagon.A4.cmpbeqi
  22694. 3, // llvm.hexagon.A4.cmpbgt
  22695. 3, // llvm.hexagon.A4.cmpbgti
  22696. 3, // llvm.hexagon.A4.cmpbgtu
  22697. 3, // llvm.hexagon.A4.cmpbgtui
  22698. 3, // llvm.hexagon.A4.cmpheq
  22699. 3, // llvm.hexagon.A4.cmpheqi
  22700. 3, // llvm.hexagon.A4.cmphgt
  22701. 3, // llvm.hexagon.A4.cmphgti
  22702. 3, // llvm.hexagon.A4.cmphgtu
  22703. 3, // llvm.hexagon.A4.cmphgtui
  22704. 3, // llvm.hexagon.A4.combineir
  22705. 3, // llvm.hexagon.A4.combineri
  22706. 3, // llvm.hexagon.A4.cround.ri
  22707. 3, // llvm.hexagon.A4.cround.rr
  22708. 3, // llvm.hexagon.A4.modwrapu
  22709. 3, // llvm.hexagon.A4.orn
  22710. 3, // llvm.hexagon.A4.ornp
  22711. 3, // llvm.hexagon.A4.rcmpeq
  22712. 3, // llvm.hexagon.A4.rcmpeqi
  22713. 3, // llvm.hexagon.A4.rcmpneq
  22714. 3, // llvm.hexagon.A4.rcmpneqi
  22715. 3, // llvm.hexagon.A4.round.ri
  22716. 3, // llvm.hexagon.A4.round.ri.sat
  22717. 3, // llvm.hexagon.A4.round.rr
  22718. 3, // llvm.hexagon.A4.round.rr.sat
  22719. 3, // llvm.hexagon.A4.tlbmatch
  22720. 3, // llvm.hexagon.A4.vcmpbeq.any
  22721. 3, // llvm.hexagon.A4.vcmpbeqi
  22722. 3, // llvm.hexagon.A4.vcmpbgt
  22723. 3, // llvm.hexagon.A4.vcmpbgti
  22724. 3, // llvm.hexagon.A4.vcmpbgtui
  22725. 3, // llvm.hexagon.A4.vcmpheqi
  22726. 3, // llvm.hexagon.A4.vcmphgti
  22727. 3, // llvm.hexagon.A4.vcmphgtui
  22728. 3, // llvm.hexagon.A4.vcmpweqi
  22729. 3, // llvm.hexagon.A4.vcmpwgti
  22730. 3, // llvm.hexagon.A4.vcmpwgtui
  22731. 3, // llvm.hexagon.A4.vrmaxh
  22732. 3, // llvm.hexagon.A4.vrmaxuh
  22733. 3, // llvm.hexagon.A4.vrmaxuw
  22734. 3, // llvm.hexagon.A4.vrmaxw
  22735. 3, // llvm.hexagon.A4.vrminh
  22736. 3, // llvm.hexagon.A4.vrminuh
  22737. 3, // llvm.hexagon.A4.vrminuw
  22738. 3, // llvm.hexagon.A4.vrminw
  22739. 3, // llvm.hexagon.A5.vaddhubs
  22740. 3, // llvm.hexagon.C2.all8
  22741. 3, // llvm.hexagon.C2.and
  22742. 3, // llvm.hexagon.C2.andn
  22743. 3, // llvm.hexagon.C2.any8
  22744. 3, // llvm.hexagon.C2.bitsclr
  22745. 3, // llvm.hexagon.C2.bitsclri
  22746. 3, // llvm.hexagon.C2.bitsset
  22747. 3, // llvm.hexagon.C2.cmpeq
  22748. 3, // llvm.hexagon.C2.cmpeqi
  22749. 3, // llvm.hexagon.C2.cmpeqp
  22750. 3, // llvm.hexagon.C2.cmpgei
  22751. 3, // llvm.hexagon.C2.cmpgeui
  22752. 3, // llvm.hexagon.C2.cmpgt
  22753. 3, // llvm.hexagon.C2.cmpgti
  22754. 3, // llvm.hexagon.C2.cmpgtp
  22755. 3, // llvm.hexagon.C2.cmpgtu
  22756. 3, // llvm.hexagon.C2.cmpgtui
  22757. 3, // llvm.hexagon.C2.cmpgtup
  22758. 3, // llvm.hexagon.C2.cmplt
  22759. 3, // llvm.hexagon.C2.cmpltu
  22760. 3, // llvm.hexagon.C2.mask
  22761. 3, // llvm.hexagon.C2.mux
  22762. 3, // llvm.hexagon.C2.muxii
  22763. 3, // llvm.hexagon.C2.muxir
  22764. 3, // llvm.hexagon.C2.muxri
  22765. 3, // llvm.hexagon.C2.not
  22766. 3, // llvm.hexagon.C2.or
  22767. 3, // llvm.hexagon.C2.orn
  22768. 3, // llvm.hexagon.C2.pxfer.map
  22769. 3, // llvm.hexagon.C2.tfrpr
  22770. 3, // llvm.hexagon.C2.tfrrp
  22771. 3, // llvm.hexagon.C2.vitpack
  22772. 3, // llvm.hexagon.C2.vmux
  22773. 3, // llvm.hexagon.C2.xor
  22774. 3, // llvm.hexagon.C4.and.and
  22775. 3, // llvm.hexagon.C4.and.andn
  22776. 3, // llvm.hexagon.C4.and.or
  22777. 3, // llvm.hexagon.C4.and.orn
  22778. 3, // llvm.hexagon.C4.cmplte
  22779. 3, // llvm.hexagon.C4.cmpltei
  22780. 3, // llvm.hexagon.C4.cmplteu
  22781. 3, // llvm.hexagon.C4.cmplteui
  22782. 3, // llvm.hexagon.C4.cmpneq
  22783. 3, // llvm.hexagon.C4.cmpneqi
  22784. 3, // llvm.hexagon.C4.fastcorner9
  22785. 3, // llvm.hexagon.C4.fastcorner9.not
  22786. 3, // llvm.hexagon.C4.nbitsclr
  22787. 3, // llvm.hexagon.C4.nbitsclri
  22788. 3, // llvm.hexagon.C4.nbitsset
  22789. 3, // llvm.hexagon.C4.or.and
  22790. 3, // llvm.hexagon.C4.or.andn
  22791. 3, // llvm.hexagon.C4.or.or
  22792. 3, // llvm.hexagon.C4.or.orn
  22793. 3, // llvm.hexagon.F2.conv.d2df
  22794. 3, // llvm.hexagon.F2.conv.d2sf
  22795. 3, // llvm.hexagon.F2.conv.df2d
  22796. 3, // llvm.hexagon.F2.conv.df2d.chop
  22797. 3, // llvm.hexagon.F2.conv.df2sf
  22798. 3, // llvm.hexagon.F2.conv.df2ud
  22799. 3, // llvm.hexagon.F2.conv.df2ud.chop
  22800. 3, // llvm.hexagon.F2.conv.df2uw
  22801. 3, // llvm.hexagon.F2.conv.df2uw.chop
  22802. 3, // llvm.hexagon.F2.conv.df2w
  22803. 3, // llvm.hexagon.F2.conv.df2w.chop
  22804. 3, // llvm.hexagon.F2.conv.sf2d
  22805. 3, // llvm.hexagon.F2.conv.sf2d.chop
  22806. 3, // llvm.hexagon.F2.conv.sf2df
  22807. 3, // llvm.hexagon.F2.conv.sf2ud
  22808. 3, // llvm.hexagon.F2.conv.sf2ud.chop
  22809. 3, // llvm.hexagon.F2.conv.sf2uw
  22810. 3, // llvm.hexagon.F2.conv.sf2uw.chop
  22811. 3, // llvm.hexagon.F2.conv.sf2w
  22812. 3, // llvm.hexagon.F2.conv.sf2w.chop
  22813. 3, // llvm.hexagon.F2.conv.ud2df
  22814. 3, // llvm.hexagon.F2.conv.ud2sf
  22815. 3, // llvm.hexagon.F2.conv.uw2df
  22816. 3, // llvm.hexagon.F2.conv.uw2sf
  22817. 3, // llvm.hexagon.F2.conv.w2df
  22818. 3, // llvm.hexagon.F2.conv.w2sf
  22819. 3, // llvm.hexagon.F2.dfadd
  22820. 3, // llvm.hexagon.F2.dfclass
  22821. 3, // llvm.hexagon.F2.dfcmpeq
  22822. 3, // llvm.hexagon.F2.dfcmpge
  22823. 3, // llvm.hexagon.F2.dfcmpgt
  22824. 3, // llvm.hexagon.F2.dfcmpuo
  22825. 3, // llvm.hexagon.F2.dffixupd
  22826. 3, // llvm.hexagon.F2.dffixupn
  22827. 3, // llvm.hexagon.F2.dffixupr
  22828. 3, // llvm.hexagon.F2.dffma
  22829. 3, // llvm.hexagon.F2.dffma.lib
  22830. 3, // llvm.hexagon.F2.dffma.sc
  22831. 3, // llvm.hexagon.F2.dffms
  22832. 3, // llvm.hexagon.F2.dffms.lib
  22833. 3, // llvm.hexagon.F2.dfimm.n
  22834. 3, // llvm.hexagon.F2.dfimm.p
  22835. 3, // llvm.hexagon.F2.dfmax
  22836. 3, // llvm.hexagon.F2.dfmin
  22837. 3, // llvm.hexagon.F2.dfmpy
  22838. 3, // llvm.hexagon.F2.dfsub
  22839. 3, // llvm.hexagon.F2.sfadd
  22840. 3, // llvm.hexagon.F2.sfclass
  22841. 3, // llvm.hexagon.F2.sfcmpeq
  22842. 3, // llvm.hexagon.F2.sfcmpge
  22843. 3, // llvm.hexagon.F2.sfcmpgt
  22844. 3, // llvm.hexagon.F2.sfcmpuo
  22845. 3, // llvm.hexagon.F2.sffixupd
  22846. 3, // llvm.hexagon.F2.sffixupn
  22847. 3, // llvm.hexagon.F2.sffixupr
  22848. 3, // llvm.hexagon.F2.sffma
  22849. 3, // llvm.hexagon.F2.sffma.lib
  22850. 3, // llvm.hexagon.F2.sffma.sc
  22851. 3, // llvm.hexagon.F2.sffms
  22852. 3, // llvm.hexagon.F2.sffms.lib
  22853. 3, // llvm.hexagon.F2.sfimm.n
  22854. 3, // llvm.hexagon.F2.sfimm.p
  22855. 3, // llvm.hexagon.F2.sfmax
  22856. 3, // llvm.hexagon.F2.sfmin
  22857. 3, // llvm.hexagon.F2.sfmpy
  22858. 3, // llvm.hexagon.F2.sfsub
  22859. 3, // llvm.hexagon.M2.acci
  22860. 3, // llvm.hexagon.M2.accii
  22861. 3, // llvm.hexagon.M2.cmaci.s0
  22862. 3, // llvm.hexagon.M2.cmacr.s0
  22863. 3, // llvm.hexagon.M2.cmacs.s0
  22864. 3, // llvm.hexagon.M2.cmacs.s1
  22865. 3, // llvm.hexagon.M2.cmacsc.s0
  22866. 3, // llvm.hexagon.M2.cmacsc.s1
  22867. 3, // llvm.hexagon.M2.cmpyi.s0
  22868. 3, // llvm.hexagon.M2.cmpyr.s0
  22869. 3, // llvm.hexagon.M2.cmpyrs.s0
  22870. 3, // llvm.hexagon.M2.cmpyrs.s1
  22871. 3, // llvm.hexagon.M2.cmpyrsc.s0
  22872. 3, // llvm.hexagon.M2.cmpyrsc.s1
  22873. 3, // llvm.hexagon.M2.cmpys.s0
  22874. 3, // llvm.hexagon.M2.cmpys.s1
  22875. 3, // llvm.hexagon.M2.cmpysc.s0
  22876. 3, // llvm.hexagon.M2.cmpysc.s1
  22877. 3, // llvm.hexagon.M2.cnacs.s0
  22878. 3, // llvm.hexagon.M2.cnacs.s1
  22879. 3, // llvm.hexagon.M2.cnacsc.s0
  22880. 3, // llvm.hexagon.M2.cnacsc.s1
  22881. 3, // llvm.hexagon.M2.dpmpyss.acc.s0
  22882. 3, // llvm.hexagon.M2.dpmpyss.nac.s0
  22883. 3, // llvm.hexagon.M2.dpmpyss.rnd.s0
  22884. 3, // llvm.hexagon.M2.dpmpyss.s0
  22885. 3, // llvm.hexagon.M2.dpmpyuu.acc.s0
  22886. 3, // llvm.hexagon.M2.dpmpyuu.nac.s0
  22887. 3, // llvm.hexagon.M2.dpmpyuu.s0
  22888. 3, // llvm.hexagon.M2.hmmpyh.rs1
  22889. 3, // llvm.hexagon.M2.hmmpyh.s1
  22890. 3, // llvm.hexagon.M2.hmmpyl.rs1
  22891. 3, // llvm.hexagon.M2.hmmpyl.s1
  22892. 3, // llvm.hexagon.M2.maci
  22893. 3, // llvm.hexagon.M2.macsin
  22894. 3, // llvm.hexagon.M2.macsip
  22895. 3, // llvm.hexagon.M2.mmachs.rs0
  22896. 3, // llvm.hexagon.M2.mmachs.rs1
  22897. 3, // llvm.hexagon.M2.mmachs.s0
  22898. 3, // llvm.hexagon.M2.mmachs.s1
  22899. 3, // llvm.hexagon.M2.mmacls.rs0
  22900. 3, // llvm.hexagon.M2.mmacls.rs1
  22901. 3, // llvm.hexagon.M2.mmacls.s0
  22902. 3, // llvm.hexagon.M2.mmacls.s1
  22903. 3, // llvm.hexagon.M2.mmacuhs.rs0
  22904. 3, // llvm.hexagon.M2.mmacuhs.rs1
  22905. 3, // llvm.hexagon.M2.mmacuhs.s0
  22906. 3, // llvm.hexagon.M2.mmacuhs.s1
  22907. 3, // llvm.hexagon.M2.mmaculs.rs0
  22908. 3, // llvm.hexagon.M2.mmaculs.rs1
  22909. 3, // llvm.hexagon.M2.mmaculs.s0
  22910. 3, // llvm.hexagon.M2.mmaculs.s1
  22911. 3, // llvm.hexagon.M2.mmpyh.rs0
  22912. 3, // llvm.hexagon.M2.mmpyh.rs1
  22913. 3, // llvm.hexagon.M2.mmpyh.s0
  22914. 3, // llvm.hexagon.M2.mmpyh.s1
  22915. 3, // llvm.hexagon.M2.mmpyl.rs0
  22916. 3, // llvm.hexagon.M2.mmpyl.rs1
  22917. 3, // llvm.hexagon.M2.mmpyl.s0
  22918. 3, // llvm.hexagon.M2.mmpyl.s1
  22919. 3, // llvm.hexagon.M2.mmpyuh.rs0
  22920. 3, // llvm.hexagon.M2.mmpyuh.rs1
  22921. 3, // llvm.hexagon.M2.mmpyuh.s0
  22922. 3, // llvm.hexagon.M2.mmpyuh.s1
  22923. 3, // llvm.hexagon.M2.mmpyul.rs0
  22924. 3, // llvm.hexagon.M2.mmpyul.rs1
  22925. 3, // llvm.hexagon.M2.mmpyul.s0
  22926. 3, // llvm.hexagon.M2.mmpyul.s1
  22927. 3, // llvm.hexagon.M2.mpy.acc.hh.s0
  22928. 3, // llvm.hexagon.M2.mpy.acc.hh.s1
  22929. 3, // llvm.hexagon.M2.mpy.acc.hl.s0
  22930. 3, // llvm.hexagon.M2.mpy.acc.hl.s1
  22931. 3, // llvm.hexagon.M2.mpy.acc.lh.s0
  22932. 3, // llvm.hexagon.M2.mpy.acc.lh.s1
  22933. 3, // llvm.hexagon.M2.mpy.acc.ll.s0
  22934. 3, // llvm.hexagon.M2.mpy.acc.ll.s1
  22935. 3, // llvm.hexagon.M2.mpy.acc.sat.hh.s0
  22936. 3, // llvm.hexagon.M2.mpy.acc.sat.hh.s1
  22937. 3, // llvm.hexagon.M2.mpy.acc.sat.hl.s0
  22938. 3, // llvm.hexagon.M2.mpy.acc.sat.hl.s1
  22939. 3, // llvm.hexagon.M2.mpy.acc.sat.lh.s0
  22940. 3, // llvm.hexagon.M2.mpy.acc.sat.lh.s1
  22941. 3, // llvm.hexagon.M2.mpy.acc.sat.ll.s0
  22942. 3, // llvm.hexagon.M2.mpy.acc.sat.ll.s1
  22943. 3, // llvm.hexagon.M2.mpy.hh.s0
  22944. 3, // llvm.hexagon.M2.mpy.hh.s1
  22945. 3, // llvm.hexagon.M2.mpy.hl.s0
  22946. 3, // llvm.hexagon.M2.mpy.hl.s1
  22947. 3, // llvm.hexagon.M2.mpy.lh.s0
  22948. 3, // llvm.hexagon.M2.mpy.lh.s1
  22949. 3, // llvm.hexagon.M2.mpy.ll.s0
  22950. 3, // llvm.hexagon.M2.mpy.ll.s1
  22951. 3, // llvm.hexagon.M2.mpy.nac.hh.s0
  22952. 3, // llvm.hexagon.M2.mpy.nac.hh.s1
  22953. 3, // llvm.hexagon.M2.mpy.nac.hl.s0
  22954. 3, // llvm.hexagon.M2.mpy.nac.hl.s1
  22955. 3, // llvm.hexagon.M2.mpy.nac.lh.s0
  22956. 3, // llvm.hexagon.M2.mpy.nac.lh.s1
  22957. 3, // llvm.hexagon.M2.mpy.nac.ll.s0
  22958. 3, // llvm.hexagon.M2.mpy.nac.ll.s1
  22959. 3, // llvm.hexagon.M2.mpy.nac.sat.hh.s0
  22960. 3, // llvm.hexagon.M2.mpy.nac.sat.hh.s1
  22961. 3, // llvm.hexagon.M2.mpy.nac.sat.hl.s0
  22962. 3, // llvm.hexagon.M2.mpy.nac.sat.hl.s1
  22963. 3, // llvm.hexagon.M2.mpy.nac.sat.lh.s0
  22964. 3, // llvm.hexagon.M2.mpy.nac.sat.lh.s1
  22965. 3, // llvm.hexagon.M2.mpy.nac.sat.ll.s0
  22966. 3, // llvm.hexagon.M2.mpy.nac.sat.ll.s1
  22967. 3, // llvm.hexagon.M2.mpy.rnd.hh.s0
  22968. 3, // llvm.hexagon.M2.mpy.rnd.hh.s1
  22969. 3, // llvm.hexagon.M2.mpy.rnd.hl.s0
  22970. 3, // llvm.hexagon.M2.mpy.rnd.hl.s1
  22971. 3, // llvm.hexagon.M2.mpy.rnd.lh.s0
  22972. 3, // llvm.hexagon.M2.mpy.rnd.lh.s1
  22973. 3, // llvm.hexagon.M2.mpy.rnd.ll.s0
  22974. 3, // llvm.hexagon.M2.mpy.rnd.ll.s1
  22975. 3, // llvm.hexagon.M2.mpy.sat.hh.s0
  22976. 3, // llvm.hexagon.M2.mpy.sat.hh.s1
  22977. 3, // llvm.hexagon.M2.mpy.sat.hl.s0
  22978. 3, // llvm.hexagon.M2.mpy.sat.hl.s1
  22979. 3, // llvm.hexagon.M2.mpy.sat.lh.s0
  22980. 3, // llvm.hexagon.M2.mpy.sat.lh.s1
  22981. 3, // llvm.hexagon.M2.mpy.sat.ll.s0
  22982. 3, // llvm.hexagon.M2.mpy.sat.ll.s1
  22983. 3, // llvm.hexagon.M2.mpy.sat.rnd.hh.s0
  22984. 3, // llvm.hexagon.M2.mpy.sat.rnd.hh.s1
  22985. 3, // llvm.hexagon.M2.mpy.sat.rnd.hl.s0
  22986. 3, // llvm.hexagon.M2.mpy.sat.rnd.hl.s1
  22987. 3, // llvm.hexagon.M2.mpy.sat.rnd.lh.s0
  22988. 3, // llvm.hexagon.M2.mpy.sat.rnd.lh.s1
  22989. 3, // llvm.hexagon.M2.mpy.sat.rnd.ll.s0
  22990. 3, // llvm.hexagon.M2.mpy.sat.rnd.ll.s1
  22991. 3, // llvm.hexagon.M2.mpy.up
  22992. 3, // llvm.hexagon.M2.mpy.up.s1
  22993. 3, // llvm.hexagon.M2.mpy.up.s1.sat
  22994. 3, // llvm.hexagon.M2.mpyd.acc.hh.s0
  22995. 3, // llvm.hexagon.M2.mpyd.acc.hh.s1
  22996. 3, // llvm.hexagon.M2.mpyd.acc.hl.s0
  22997. 3, // llvm.hexagon.M2.mpyd.acc.hl.s1
  22998. 3, // llvm.hexagon.M2.mpyd.acc.lh.s0
  22999. 3, // llvm.hexagon.M2.mpyd.acc.lh.s1
  23000. 3, // llvm.hexagon.M2.mpyd.acc.ll.s0
  23001. 3, // llvm.hexagon.M2.mpyd.acc.ll.s1
  23002. 3, // llvm.hexagon.M2.mpyd.hh.s0
  23003. 3, // llvm.hexagon.M2.mpyd.hh.s1
  23004. 3, // llvm.hexagon.M2.mpyd.hl.s0
  23005. 3, // llvm.hexagon.M2.mpyd.hl.s1
  23006. 3, // llvm.hexagon.M2.mpyd.lh.s0
  23007. 3, // llvm.hexagon.M2.mpyd.lh.s1
  23008. 3, // llvm.hexagon.M2.mpyd.ll.s0
  23009. 3, // llvm.hexagon.M2.mpyd.ll.s1
  23010. 3, // llvm.hexagon.M2.mpyd.nac.hh.s0
  23011. 3, // llvm.hexagon.M2.mpyd.nac.hh.s1
  23012. 3, // llvm.hexagon.M2.mpyd.nac.hl.s0
  23013. 3, // llvm.hexagon.M2.mpyd.nac.hl.s1
  23014. 3, // llvm.hexagon.M2.mpyd.nac.lh.s0
  23015. 3, // llvm.hexagon.M2.mpyd.nac.lh.s1
  23016. 3, // llvm.hexagon.M2.mpyd.nac.ll.s0
  23017. 3, // llvm.hexagon.M2.mpyd.nac.ll.s1
  23018. 3, // llvm.hexagon.M2.mpyd.rnd.hh.s0
  23019. 3, // llvm.hexagon.M2.mpyd.rnd.hh.s1
  23020. 3, // llvm.hexagon.M2.mpyd.rnd.hl.s0
  23021. 3, // llvm.hexagon.M2.mpyd.rnd.hl.s1
  23022. 3, // llvm.hexagon.M2.mpyd.rnd.lh.s0
  23023. 3, // llvm.hexagon.M2.mpyd.rnd.lh.s1
  23024. 3, // llvm.hexagon.M2.mpyd.rnd.ll.s0
  23025. 3, // llvm.hexagon.M2.mpyd.rnd.ll.s1
  23026. 3, // llvm.hexagon.M2.mpyi
  23027. 3, // llvm.hexagon.M2.mpysmi
  23028. 3, // llvm.hexagon.M2.mpysu.up
  23029. 3, // llvm.hexagon.M2.mpyu.acc.hh.s0
  23030. 3, // llvm.hexagon.M2.mpyu.acc.hh.s1
  23031. 3, // llvm.hexagon.M2.mpyu.acc.hl.s0
  23032. 3, // llvm.hexagon.M2.mpyu.acc.hl.s1
  23033. 3, // llvm.hexagon.M2.mpyu.acc.lh.s0
  23034. 3, // llvm.hexagon.M2.mpyu.acc.lh.s1
  23035. 3, // llvm.hexagon.M2.mpyu.acc.ll.s0
  23036. 3, // llvm.hexagon.M2.mpyu.acc.ll.s1
  23037. 3, // llvm.hexagon.M2.mpyu.hh.s0
  23038. 3, // llvm.hexagon.M2.mpyu.hh.s1
  23039. 3, // llvm.hexagon.M2.mpyu.hl.s0
  23040. 3, // llvm.hexagon.M2.mpyu.hl.s1
  23041. 3, // llvm.hexagon.M2.mpyu.lh.s0
  23042. 3, // llvm.hexagon.M2.mpyu.lh.s1
  23043. 3, // llvm.hexagon.M2.mpyu.ll.s0
  23044. 3, // llvm.hexagon.M2.mpyu.ll.s1
  23045. 3, // llvm.hexagon.M2.mpyu.nac.hh.s0
  23046. 3, // llvm.hexagon.M2.mpyu.nac.hh.s1
  23047. 3, // llvm.hexagon.M2.mpyu.nac.hl.s0
  23048. 3, // llvm.hexagon.M2.mpyu.nac.hl.s1
  23049. 3, // llvm.hexagon.M2.mpyu.nac.lh.s0
  23050. 3, // llvm.hexagon.M2.mpyu.nac.lh.s1
  23051. 3, // llvm.hexagon.M2.mpyu.nac.ll.s0
  23052. 3, // llvm.hexagon.M2.mpyu.nac.ll.s1
  23053. 3, // llvm.hexagon.M2.mpyu.up
  23054. 3, // llvm.hexagon.M2.mpyud.acc.hh.s0
  23055. 3, // llvm.hexagon.M2.mpyud.acc.hh.s1
  23056. 3, // llvm.hexagon.M2.mpyud.acc.hl.s0
  23057. 3, // llvm.hexagon.M2.mpyud.acc.hl.s1
  23058. 3, // llvm.hexagon.M2.mpyud.acc.lh.s0
  23059. 3, // llvm.hexagon.M2.mpyud.acc.lh.s1
  23060. 3, // llvm.hexagon.M2.mpyud.acc.ll.s0
  23061. 3, // llvm.hexagon.M2.mpyud.acc.ll.s1
  23062. 3, // llvm.hexagon.M2.mpyud.hh.s0
  23063. 3, // llvm.hexagon.M2.mpyud.hh.s1
  23064. 3, // llvm.hexagon.M2.mpyud.hl.s0
  23065. 3, // llvm.hexagon.M2.mpyud.hl.s1
  23066. 3, // llvm.hexagon.M2.mpyud.lh.s0
  23067. 3, // llvm.hexagon.M2.mpyud.lh.s1
  23068. 3, // llvm.hexagon.M2.mpyud.ll.s0
  23069. 3, // llvm.hexagon.M2.mpyud.ll.s1
  23070. 3, // llvm.hexagon.M2.mpyud.nac.hh.s0
  23071. 3, // llvm.hexagon.M2.mpyud.nac.hh.s1
  23072. 3, // llvm.hexagon.M2.mpyud.nac.hl.s0
  23073. 3, // llvm.hexagon.M2.mpyud.nac.hl.s1
  23074. 3, // llvm.hexagon.M2.mpyud.nac.lh.s0
  23075. 3, // llvm.hexagon.M2.mpyud.nac.lh.s1
  23076. 3, // llvm.hexagon.M2.mpyud.nac.ll.s0
  23077. 3, // llvm.hexagon.M2.mpyud.nac.ll.s1
  23078. 3, // llvm.hexagon.M2.mpyui
  23079. 3, // llvm.hexagon.M2.nacci
  23080. 3, // llvm.hexagon.M2.naccii
  23081. 3, // llvm.hexagon.M2.subacc
  23082. 3, // llvm.hexagon.M2.vabsdiffh
  23083. 3, // llvm.hexagon.M2.vabsdiffw
  23084. 3, // llvm.hexagon.M2.vcmac.s0.sat.i
  23085. 3, // llvm.hexagon.M2.vcmac.s0.sat.r
  23086. 3, // llvm.hexagon.M2.vcmpy.s0.sat.i
  23087. 3, // llvm.hexagon.M2.vcmpy.s0.sat.r
  23088. 3, // llvm.hexagon.M2.vcmpy.s1.sat.i
  23089. 3, // llvm.hexagon.M2.vcmpy.s1.sat.r
  23090. 3, // llvm.hexagon.M2.vdmacs.s0
  23091. 3, // llvm.hexagon.M2.vdmacs.s1
  23092. 3, // llvm.hexagon.M2.vdmpyrs.s0
  23093. 3, // llvm.hexagon.M2.vdmpyrs.s1
  23094. 3, // llvm.hexagon.M2.vdmpys.s0
  23095. 3, // llvm.hexagon.M2.vdmpys.s1
  23096. 3, // llvm.hexagon.M2.vmac2
  23097. 3, // llvm.hexagon.M2.vmac2es
  23098. 3, // llvm.hexagon.M2.vmac2es.s0
  23099. 3, // llvm.hexagon.M2.vmac2es.s1
  23100. 3, // llvm.hexagon.M2.vmac2s.s0
  23101. 3, // llvm.hexagon.M2.vmac2s.s1
  23102. 3, // llvm.hexagon.M2.vmac2su.s0
  23103. 3, // llvm.hexagon.M2.vmac2su.s1
  23104. 3, // llvm.hexagon.M2.vmpy2es.s0
  23105. 3, // llvm.hexagon.M2.vmpy2es.s1
  23106. 3, // llvm.hexagon.M2.vmpy2s.s0
  23107. 3, // llvm.hexagon.M2.vmpy2s.s0pack
  23108. 3, // llvm.hexagon.M2.vmpy2s.s1
  23109. 3, // llvm.hexagon.M2.vmpy2s.s1pack
  23110. 3, // llvm.hexagon.M2.vmpy2su.s0
  23111. 3, // llvm.hexagon.M2.vmpy2su.s1
  23112. 3, // llvm.hexagon.M2.vraddh
  23113. 3, // llvm.hexagon.M2.vradduh
  23114. 3, // llvm.hexagon.M2.vrcmaci.s0
  23115. 3, // llvm.hexagon.M2.vrcmaci.s0c
  23116. 3, // llvm.hexagon.M2.vrcmacr.s0
  23117. 3, // llvm.hexagon.M2.vrcmacr.s0c
  23118. 3, // llvm.hexagon.M2.vrcmpyi.s0
  23119. 3, // llvm.hexagon.M2.vrcmpyi.s0c
  23120. 3, // llvm.hexagon.M2.vrcmpyr.s0
  23121. 3, // llvm.hexagon.M2.vrcmpyr.s0c
  23122. 3, // llvm.hexagon.M2.vrcmpys.acc.s1
  23123. 3, // llvm.hexagon.M2.vrcmpys.s1
  23124. 3, // llvm.hexagon.M2.vrcmpys.s1rp
  23125. 3, // llvm.hexagon.M2.vrmac.s0
  23126. 3, // llvm.hexagon.M2.vrmpy.s0
  23127. 3, // llvm.hexagon.M2.xor.xacc
  23128. 3, // llvm.hexagon.M4.and.and
  23129. 3, // llvm.hexagon.M4.and.andn
  23130. 3, // llvm.hexagon.M4.and.or
  23131. 3, // llvm.hexagon.M4.and.xor
  23132. 3, // llvm.hexagon.M4.cmpyi.wh
  23133. 3, // llvm.hexagon.M4.cmpyi.whc
  23134. 3, // llvm.hexagon.M4.cmpyr.wh
  23135. 3, // llvm.hexagon.M4.cmpyr.whc
  23136. 3, // llvm.hexagon.M4.mac.up.s1.sat
  23137. 3, // llvm.hexagon.M4.mpyri.addi
  23138. 3, // llvm.hexagon.M4.mpyri.addr
  23139. 3, // llvm.hexagon.M4.mpyri.addr.u2
  23140. 3, // llvm.hexagon.M4.mpyrr.addi
  23141. 3, // llvm.hexagon.M4.mpyrr.addr
  23142. 3, // llvm.hexagon.M4.nac.up.s1.sat
  23143. 3, // llvm.hexagon.M4.or.and
  23144. 3, // llvm.hexagon.M4.or.andn
  23145. 3, // llvm.hexagon.M4.or.or
  23146. 3, // llvm.hexagon.M4.or.xor
  23147. 3, // llvm.hexagon.M4.pmpyw
  23148. 3, // llvm.hexagon.M4.pmpyw.acc
  23149. 3, // llvm.hexagon.M4.vpmpyh
  23150. 3, // llvm.hexagon.M4.vpmpyh.acc
  23151. 3, // llvm.hexagon.M4.vrmpyeh.acc.s0
  23152. 3, // llvm.hexagon.M4.vrmpyeh.acc.s1
  23153. 3, // llvm.hexagon.M4.vrmpyeh.s0
  23154. 3, // llvm.hexagon.M4.vrmpyeh.s1
  23155. 3, // llvm.hexagon.M4.vrmpyoh.acc.s0
  23156. 3, // llvm.hexagon.M4.vrmpyoh.acc.s1
  23157. 3, // llvm.hexagon.M4.vrmpyoh.s0
  23158. 3, // llvm.hexagon.M4.vrmpyoh.s1
  23159. 3, // llvm.hexagon.M4.xor.and
  23160. 3, // llvm.hexagon.M4.xor.andn
  23161. 3, // llvm.hexagon.M4.xor.or
  23162. 3, // llvm.hexagon.M4.xor.xacc
  23163. 3, // llvm.hexagon.M5.vdmacbsu
  23164. 3, // llvm.hexagon.M5.vdmpybsu
  23165. 3, // llvm.hexagon.M5.vmacbsu
  23166. 3, // llvm.hexagon.M5.vmacbuu
  23167. 3, // llvm.hexagon.M5.vmpybsu
  23168. 3, // llvm.hexagon.M5.vmpybuu
  23169. 3, // llvm.hexagon.M5.vrmacbsu
  23170. 3, // llvm.hexagon.M5.vrmacbuu
  23171. 3, // llvm.hexagon.M5.vrmpybsu
  23172. 3, // llvm.hexagon.M5.vrmpybuu
  23173. 3, // llvm.hexagon.S2.addasl.rrri
  23174. 3, // llvm.hexagon.S2.asl.i.p
  23175. 3, // llvm.hexagon.S2.asl.i.p.acc
  23176. 3, // llvm.hexagon.S2.asl.i.p.and
  23177. 3, // llvm.hexagon.S2.asl.i.p.nac
  23178. 3, // llvm.hexagon.S2.asl.i.p.or
  23179. 3, // llvm.hexagon.S2.asl.i.p.xacc
  23180. 3, // llvm.hexagon.S2.asl.i.r
  23181. 3, // llvm.hexagon.S2.asl.i.r.acc
  23182. 3, // llvm.hexagon.S2.asl.i.r.and
  23183. 3, // llvm.hexagon.S2.asl.i.r.nac
  23184. 3, // llvm.hexagon.S2.asl.i.r.or
  23185. 3, // llvm.hexagon.S2.asl.i.r.sat
  23186. 3, // llvm.hexagon.S2.asl.i.r.xacc
  23187. 3, // llvm.hexagon.S2.asl.i.vh
  23188. 3, // llvm.hexagon.S2.asl.i.vw
  23189. 3, // llvm.hexagon.S2.asl.r.p
  23190. 3, // llvm.hexagon.S2.asl.r.p.acc
  23191. 3, // llvm.hexagon.S2.asl.r.p.and
  23192. 3, // llvm.hexagon.S2.asl.r.p.nac
  23193. 3, // llvm.hexagon.S2.asl.r.p.or
  23194. 3, // llvm.hexagon.S2.asl.r.p.xor
  23195. 3, // llvm.hexagon.S2.asl.r.r
  23196. 3, // llvm.hexagon.S2.asl.r.r.acc
  23197. 3, // llvm.hexagon.S2.asl.r.r.and
  23198. 3, // llvm.hexagon.S2.asl.r.r.nac
  23199. 3, // llvm.hexagon.S2.asl.r.r.or
  23200. 3, // llvm.hexagon.S2.asl.r.r.sat
  23201. 3, // llvm.hexagon.S2.asl.r.vh
  23202. 3, // llvm.hexagon.S2.asl.r.vw
  23203. 3, // llvm.hexagon.S2.asr.i.p
  23204. 3, // llvm.hexagon.S2.asr.i.p.acc
  23205. 3, // llvm.hexagon.S2.asr.i.p.and
  23206. 3, // llvm.hexagon.S2.asr.i.p.nac
  23207. 3, // llvm.hexagon.S2.asr.i.p.or
  23208. 3, // llvm.hexagon.S2.asr.i.p.rnd
  23209. 3, // llvm.hexagon.S2.asr.i.p.rnd.goodsyntax
  23210. 3, // llvm.hexagon.S2.asr.i.r
  23211. 3, // llvm.hexagon.S2.asr.i.r.acc
  23212. 3, // llvm.hexagon.S2.asr.i.r.and
  23213. 3, // llvm.hexagon.S2.asr.i.r.nac
  23214. 3, // llvm.hexagon.S2.asr.i.r.or
  23215. 3, // llvm.hexagon.S2.asr.i.r.rnd
  23216. 3, // llvm.hexagon.S2.asr.i.r.rnd.goodsyntax
  23217. 3, // llvm.hexagon.S2.asr.i.svw.trun
  23218. 3, // llvm.hexagon.S2.asr.i.vh
  23219. 3, // llvm.hexagon.S2.asr.i.vw
  23220. 3, // llvm.hexagon.S2.asr.r.p
  23221. 3, // llvm.hexagon.S2.asr.r.p.acc
  23222. 3, // llvm.hexagon.S2.asr.r.p.and
  23223. 3, // llvm.hexagon.S2.asr.r.p.nac
  23224. 3, // llvm.hexagon.S2.asr.r.p.or
  23225. 3, // llvm.hexagon.S2.asr.r.p.xor
  23226. 3, // llvm.hexagon.S2.asr.r.r
  23227. 3, // llvm.hexagon.S2.asr.r.r.acc
  23228. 3, // llvm.hexagon.S2.asr.r.r.and
  23229. 3, // llvm.hexagon.S2.asr.r.r.nac
  23230. 3, // llvm.hexagon.S2.asr.r.r.or
  23231. 3, // llvm.hexagon.S2.asr.r.r.sat
  23232. 3, // llvm.hexagon.S2.asr.r.svw.trun
  23233. 3, // llvm.hexagon.S2.asr.r.vh
  23234. 3, // llvm.hexagon.S2.asr.r.vw
  23235. 3, // llvm.hexagon.S2.brev
  23236. 3, // llvm.hexagon.S2.brevp
  23237. 3, // llvm.hexagon.S2.cl0
  23238. 3, // llvm.hexagon.S2.cl0p
  23239. 3, // llvm.hexagon.S2.cl1
  23240. 3, // llvm.hexagon.S2.cl1p
  23241. 3, // llvm.hexagon.S2.clb
  23242. 3, // llvm.hexagon.S2.clbnorm
  23243. 3, // llvm.hexagon.S2.clbp
  23244. 3, // llvm.hexagon.S2.clrbit.i
  23245. 3, // llvm.hexagon.S2.clrbit.r
  23246. 3, // llvm.hexagon.S2.ct0
  23247. 3, // llvm.hexagon.S2.ct0p
  23248. 3, // llvm.hexagon.S2.ct1
  23249. 3, // llvm.hexagon.S2.ct1p
  23250. 3, // llvm.hexagon.S2.deinterleave
  23251. 3, // llvm.hexagon.S2.extractu
  23252. 3, // llvm.hexagon.S2.extractu.rp
  23253. 3, // llvm.hexagon.S2.extractup
  23254. 3, // llvm.hexagon.S2.extractup.rp
  23255. 3, // llvm.hexagon.S2.insert
  23256. 3, // llvm.hexagon.S2.insert.rp
  23257. 3, // llvm.hexagon.S2.insertp
  23258. 3, // llvm.hexagon.S2.insertp.rp
  23259. 3, // llvm.hexagon.S2.interleave
  23260. 3, // llvm.hexagon.S2.lfsp
  23261. 3, // llvm.hexagon.S2.lsl.r.p
  23262. 3, // llvm.hexagon.S2.lsl.r.p.acc
  23263. 3, // llvm.hexagon.S2.lsl.r.p.and
  23264. 3, // llvm.hexagon.S2.lsl.r.p.nac
  23265. 3, // llvm.hexagon.S2.lsl.r.p.or
  23266. 3, // llvm.hexagon.S2.lsl.r.p.xor
  23267. 3, // llvm.hexagon.S2.lsl.r.r
  23268. 3, // llvm.hexagon.S2.lsl.r.r.acc
  23269. 3, // llvm.hexagon.S2.lsl.r.r.and
  23270. 3, // llvm.hexagon.S2.lsl.r.r.nac
  23271. 3, // llvm.hexagon.S2.lsl.r.r.or
  23272. 3, // llvm.hexagon.S2.lsl.r.vh
  23273. 3, // llvm.hexagon.S2.lsl.r.vw
  23274. 3, // llvm.hexagon.S2.lsr.i.p
  23275. 3, // llvm.hexagon.S2.lsr.i.p.acc
  23276. 3, // llvm.hexagon.S2.lsr.i.p.and
  23277. 3, // llvm.hexagon.S2.lsr.i.p.nac
  23278. 3, // llvm.hexagon.S2.lsr.i.p.or
  23279. 3, // llvm.hexagon.S2.lsr.i.p.xacc
  23280. 3, // llvm.hexagon.S2.lsr.i.r
  23281. 3, // llvm.hexagon.S2.lsr.i.r.acc
  23282. 3, // llvm.hexagon.S2.lsr.i.r.and
  23283. 3, // llvm.hexagon.S2.lsr.i.r.nac
  23284. 3, // llvm.hexagon.S2.lsr.i.r.or
  23285. 3, // llvm.hexagon.S2.lsr.i.r.xacc
  23286. 3, // llvm.hexagon.S2.lsr.i.vh
  23287. 3, // llvm.hexagon.S2.lsr.i.vw
  23288. 3, // llvm.hexagon.S2.lsr.r.p
  23289. 3, // llvm.hexagon.S2.lsr.r.p.acc
  23290. 3, // llvm.hexagon.S2.lsr.r.p.and
  23291. 3, // llvm.hexagon.S2.lsr.r.p.nac
  23292. 3, // llvm.hexagon.S2.lsr.r.p.or
  23293. 3, // llvm.hexagon.S2.lsr.r.p.xor
  23294. 3, // llvm.hexagon.S2.lsr.r.r
  23295. 3, // llvm.hexagon.S2.lsr.r.r.acc
  23296. 3, // llvm.hexagon.S2.lsr.r.r.and
  23297. 3, // llvm.hexagon.S2.lsr.r.r.nac
  23298. 3, // llvm.hexagon.S2.lsr.r.r.or
  23299. 3, // llvm.hexagon.S2.lsr.r.vh
  23300. 3, // llvm.hexagon.S2.lsr.r.vw
  23301. 3, // llvm.hexagon.S2.packhl
  23302. 3, // llvm.hexagon.S2.parityp
  23303. 3, // llvm.hexagon.S2.setbit.i
  23304. 3, // llvm.hexagon.S2.setbit.r
  23305. 3, // llvm.hexagon.S2.shuffeb
  23306. 3, // llvm.hexagon.S2.shuffeh
  23307. 3, // llvm.hexagon.S2.shuffob
  23308. 3, // llvm.hexagon.S2.shuffoh
  23309. 3, // llvm.hexagon.S2.svsathb
  23310. 3, // llvm.hexagon.S2.svsathub
  23311. 3, // llvm.hexagon.S2.tableidxb.goodsyntax
  23312. 3, // llvm.hexagon.S2.tableidxd.goodsyntax
  23313. 3, // llvm.hexagon.S2.tableidxh.goodsyntax
  23314. 3, // llvm.hexagon.S2.tableidxw.goodsyntax
  23315. 3, // llvm.hexagon.S2.togglebit.i
  23316. 3, // llvm.hexagon.S2.togglebit.r
  23317. 3, // llvm.hexagon.S2.tstbit.i
  23318. 3, // llvm.hexagon.S2.tstbit.r
  23319. 3, // llvm.hexagon.S2.valignib
  23320. 3, // llvm.hexagon.S2.valignrb
  23321. 3, // llvm.hexagon.S2.vcnegh
  23322. 3, // llvm.hexagon.S2.vcrotate
  23323. 3, // llvm.hexagon.S2.vrcnegh
  23324. 3, // llvm.hexagon.S2.vrndpackwh
  23325. 3, // llvm.hexagon.S2.vrndpackwhs
  23326. 3, // llvm.hexagon.S2.vsathb
  23327. 3, // llvm.hexagon.S2.vsathb.nopack
  23328. 3, // llvm.hexagon.S2.vsathub
  23329. 3, // llvm.hexagon.S2.vsathub.nopack
  23330. 3, // llvm.hexagon.S2.vsatwh
  23331. 3, // llvm.hexagon.S2.vsatwh.nopack
  23332. 3, // llvm.hexagon.S2.vsatwuh
  23333. 3, // llvm.hexagon.S2.vsatwuh.nopack
  23334. 3, // llvm.hexagon.S2.vsplatrb
  23335. 3, // llvm.hexagon.S2.vsplatrh
  23336. 3, // llvm.hexagon.S2.vspliceib
  23337. 3, // llvm.hexagon.S2.vsplicerb
  23338. 3, // llvm.hexagon.S2.vsxtbh
  23339. 3, // llvm.hexagon.S2.vsxthw
  23340. 3, // llvm.hexagon.S2.vtrunehb
  23341. 3, // llvm.hexagon.S2.vtrunewh
  23342. 3, // llvm.hexagon.S2.vtrunohb
  23343. 3, // llvm.hexagon.S2.vtrunowh
  23344. 3, // llvm.hexagon.S2.vzxtbh
  23345. 3, // llvm.hexagon.S2.vzxthw
  23346. 3, // llvm.hexagon.S4.addaddi
  23347. 3, // llvm.hexagon.S4.addi.asl.ri
  23348. 3, // llvm.hexagon.S4.addi.lsr.ri
  23349. 3, // llvm.hexagon.S4.andi.asl.ri
  23350. 3, // llvm.hexagon.S4.andi.lsr.ri
  23351. 3, // llvm.hexagon.S4.clbaddi
  23352. 3, // llvm.hexagon.S4.clbpaddi
  23353. 3, // llvm.hexagon.S4.clbpnorm
  23354. 3, // llvm.hexagon.S4.extract
  23355. 3, // llvm.hexagon.S4.extract.rp
  23356. 3, // llvm.hexagon.S4.extractp
  23357. 3, // llvm.hexagon.S4.extractp.rp
  23358. 3, // llvm.hexagon.S4.lsli
  23359. 3, // llvm.hexagon.S4.ntstbit.i
  23360. 3, // llvm.hexagon.S4.ntstbit.r
  23361. 3, // llvm.hexagon.S4.or.andi
  23362. 3, // llvm.hexagon.S4.or.andix
  23363. 3, // llvm.hexagon.S4.or.ori
  23364. 3, // llvm.hexagon.S4.ori.asl.ri
  23365. 3, // llvm.hexagon.S4.ori.lsr.ri
  23366. 3, // llvm.hexagon.S4.parity
  23367. 3, // llvm.hexagon.S4.subaddi
  23368. 3, // llvm.hexagon.S4.subi.asl.ri
  23369. 3, // llvm.hexagon.S4.subi.lsr.ri
  23370. 3, // llvm.hexagon.S4.vrcrotate
  23371. 3, // llvm.hexagon.S4.vrcrotate.acc
  23372. 3, // llvm.hexagon.S4.vxaddsubh
  23373. 3, // llvm.hexagon.S4.vxaddsubhr
  23374. 3, // llvm.hexagon.S4.vxaddsubw
  23375. 3, // llvm.hexagon.S4.vxsubaddh
  23376. 3, // llvm.hexagon.S4.vxsubaddhr
  23377. 3, // llvm.hexagon.S4.vxsubaddw
  23378. 3, // llvm.hexagon.S5.asrhub.rnd.sat.goodsyntax
  23379. 3, // llvm.hexagon.S5.asrhub.sat
  23380. 3, // llvm.hexagon.S5.popcountp
  23381. 3, // llvm.hexagon.S5.vasrhrnd.goodsyntax
  23382. 3, // llvm.hexagon.SI.to.SXTHI.asrh
  23383. 2, // llvm.hexagon.circ.ldd
  23384. 6, // llvm.init.trampoline
  23385. 7, // llvm.invariant.end
  23386. 8, // llvm.invariant.start
  23387. 8, // llvm.lifetime.end
  23388. 8, // llvm.lifetime.start
  23389. 1, // llvm.log
  23390. 1, // llvm.log10
  23391. 1, // llvm.log2
  23392. 4, // llvm.longjmp
  23393. 9, // llvm.memcpy
  23394. 9, // llvm.memmove
  23395. 6, // llvm.memset
  23396. 2, // llvm.mips.absq.s.ph
  23397. 2, // llvm.mips.absq.s.qb
  23398. 2, // llvm.mips.absq.s.w
  23399. 2, // llvm.mips.addq.ph
  23400. 2, // llvm.mips.addq.s.ph
  23401. 2, // llvm.mips.addq.s.w
  23402. 3, // llvm.mips.addqh.ph
  23403. 3, // llvm.mips.addqh.r.ph
  23404. 3, // llvm.mips.addqh.r.w
  23405. 3, // llvm.mips.addqh.w
  23406. 2, // llvm.mips.addsc
  23407. 2, // llvm.mips.addu.ph
  23408. 2, // llvm.mips.addu.qb
  23409. 2, // llvm.mips.addu.s.ph
  23410. 2, // llvm.mips.addu.s.qb
  23411. 3, // llvm.mips.adduh.qb
  23412. 3, // llvm.mips.adduh.r.qb
  23413. 2, // llvm.mips.addwc
  23414. 3, // llvm.mips.append
  23415. 3, // llvm.mips.balign
  23416. 3, // llvm.mips.bitrev
  23417. 1, // llvm.mips.bposge32
  23418. 2, // llvm.mips.cmp.eq.ph
  23419. 2, // llvm.mips.cmp.le.ph
  23420. 2, // llvm.mips.cmp.lt.ph
  23421. 2, // llvm.mips.cmpgdu.eq.qb
  23422. 2, // llvm.mips.cmpgdu.le.qb
  23423. 2, // llvm.mips.cmpgdu.lt.qb
  23424. 2, // llvm.mips.cmpgu.eq.qb
  23425. 2, // llvm.mips.cmpgu.le.qb
  23426. 2, // llvm.mips.cmpgu.lt.qb
  23427. 2, // llvm.mips.cmpu.eq.qb
  23428. 2, // llvm.mips.cmpu.le.qb
  23429. 2, // llvm.mips.cmpu.lt.qb
  23430. 3, // llvm.mips.dpa.w.ph
  23431. 2, // llvm.mips.dpaq.s.w.ph
  23432. 2, // llvm.mips.dpaq.sa.l.w
  23433. 2, // llvm.mips.dpaqx.s.w.ph
  23434. 2, // llvm.mips.dpaqx.sa.w.ph
  23435. 3, // llvm.mips.dpau.h.qbl
  23436. 3, // llvm.mips.dpau.h.qbr
  23437. 3, // llvm.mips.dpax.w.ph
  23438. 3, // llvm.mips.dps.w.ph
  23439. 2, // llvm.mips.dpsq.s.w.ph
  23440. 2, // llvm.mips.dpsq.sa.l.w
  23441. 2, // llvm.mips.dpsqx.s.w.ph
  23442. 2, // llvm.mips.dpsqx.sa.w.ph
  23443. 3, // llvm.mips.dpsu.h.qbl
  23444. 3, // llvm.mips.dpsu.h.qbr
  23445. 3, // llvm.mips.dpsx.w.ph
  23446. 2, // llvm.mips.extp
  23447. 2, // llvm.mips.extpdp
  23448. 2, // llvm.mips.extr.r.w
  23449. 2, // llvm.mips.extr.rs.w
  23450. 2, // llvm.mips.extr.s.h
  23451. 2, // llvm.mips.extr.w
  23452. 1, // llvm.mips.insv
  23453. 1, // llvm.mips.lbux
  23454. 1, // llvm.mips.lhx
  23455. 1, // llvm.mips.lwx
  23456. 3, // llvm.mips.madd
  23457. 3, // llvm.mips.maddu
  23458. 2, // llvm.mips.maq.s.w.phl
  23459. 2, // llvm.mips.maq.s.w.phr
  23460. 2, // llvm.mips.maq.sa.w.phl
  23461. 2, // llvm.mips.maq.sa.w.phr
  23462. 3, // llvm.mips.modsub
  23463. 3, // llvm.mips.msub
  23464. 3, // llvm.mips.msubu
  23465. 2, // llvm.mips.mthlip
  23466. 2, // llvm.mips.mul.ph
  23467. 2, // llvm.mips.mul.s.ph
  23468. 2, // llvm.mips.muleq.s.w.phl
  23469. 2, // llvm.mips.muleq.s.w.phr
  23470. 2, // llvm.mips.muleu.s.ph.qbl
  23471. 2, // llvm.mips.muleu.s.ph.qbr
  23472. 2, // llvm.mips.mulq.rs.ph
  23473. 2, // llvm.mips.mulq.rs.w
  23474. 2, // llvm.mips.mulq.s.ph
  23475. 2, // llvm.mips.mulq.s.w
  23476. 3, // llvm.mips.mulsa.w.ph
  23477. 2, // llvm.mips.mulsaq.s.w.ph
  23478. 3, // llvm.mips.mult
  23479. 3, // llvm.mips.multu
  23480. 3, // llvm.mips.packrl.ph
  23481. 1, // llvm.mips.pick.ph
  23482. 1, // llvm.mips.pick.qb
  23483. 3, // llvm.mips.preceq.w.phl
  23484. 3, // llvm.mips.preceq.w.phr
  23485. 3, // llvm.mips.precequ.ph.qbl
  23486. 3, // llvm.mips.precequ.ph.qbla
  23487. 3, // llvm.mips.precequ.ph.qbr
  23488. 3, // llvm.mips.precequ.ph.qbra
  23489. 3, // llvm.mips.preceu.ph.qbl
  23490. 3, // llvm.mips.preceu.ph.qbla
  23491. 3, // llvm.mips.preceu.ph.qbr
  23492. 3, // llvm.mips.preceu.ph.qbra
  23493. 2, // llvm.mips.precr.qb.ph
  23494. 3, // llvm.mips.precr.sra.ph.w
  23495. 3, // llvm.mips.precr.sra.r.ph.w
  23496. 3, // llvm.mips.precrq.ph.w
  23497. 3, // llvm.mips.precrq.qb.ph
  23498. 2, // llvm.mips.precrq.rs.ph.w
  23499. 2, // llvm.mips.precrqu.s.qb.ph
  23500. 3, // llvm.mips.prepend
  23501. 3, // llvm.mips.raddu.w.qb
  23502. 1, // llvm.mips.rddsp
  23503. 3, // llvm.mips.repl.ph
  23504. 3, // llvm.mips.repl.qb
  23505. 3, // llvm.mips.shilo
  23506. 2, // llvm.mips.shll.ph
  23507. 2, // llvm.mips.shll.qb
  23508. 2, // llvm.mips.shll.s.ph
  23509. 2, // llvm.mips.shll.s.w
  23510. 3, // llvm.mips.shra.ph
  23511. 3, // llvm.mips.shra.qb
  23512. 3, // llvm.mips.shra.r.ph
  23513. 3, // llvm.mips.shra.r.qb
  23514. 3, // llvm.mips.shra.r.w
  23515. 3, // llvm.mips.shrl.ph
  23516. 3, // llvm.mips.shrl.qb
  23517. 2, // llvm.mips.subq.ph
  23518. 2, // llvm.mips.subq.s.ph
  23519. 2, // llvm.mips.subq.s.w
  23520. 3, // llvm.mips.subqh.ph
  23521. 3, // llvm.mips.subqh.r.ph
  23522. 3, // llvm.mips.subqh.r.w
  23523. 3, // llvm.mips.subqh.w
  23524. 2, // llvm.mips.subu.ph
  23525. 2, // llvm.mips.subu.qb
  23526. 2, // llvm.mips.subu.s.ph
  23527. 2, // llvm.mips.subu.s.qb
  23528. 3, // llvm.mips.subuh.qb
  23529. 3, // llvm.mips.subuh.r.qb
  23530. 2, // llvm.mips.wrdsp
  23531. 1, // llvm.nearbyint
  23532. 3, // llvm.nvvm.abs.i
  23533. 3, // llvm.nvvm.abs.ll
  23534. 3, // llvm.nvvm.add.rm.d
  23535. 3, // llvm.nvvm.add.rm.f
  23536. 3, // llvm.nvvm.add.rm.ftz.f
  23537. 3, // llvm.nvvm.add.rn.d
  23538. 3, // llvm.nvvm.add.rn.f
  23539. 3, // llvm.nvvm.add.rn.ftz.f
  23540. 3, // llvm.nvvm.add.rp.d
  23541. 3, // llvm.nvvm.add.rp.f
  23542. 3, // llvm.nvvm.add.rp.ftz.f
  23543. 3, // llvm.nvvm.add.rz.d
  23544. 3, // llvm.nvvm.add.rz.f
  23545. 3, // llvm.nvvm.add.rz.ftz.f
  23546. 6, // llvm.nvvm.atomic.load.add.f32
  23547. 6, // llvm.nvvm.atomic.load.dec.32
  23548. 6, // llvm.nvvm.atomic.load.inc.32
  23549. 2, // llvm.nvvm.barrier0
  23550. 2, // llvm.nvvm.barrier0.and
  23551. 2, // llvm.nvvm.barrier0.or
  23552. 2, // llvm.nvvm.barrier0.popc
  23553. 3, // llvm.nvvm.bitcast.d2ll
  23554. 3, // llvm.nvvm.bitcast.f2i
  23555. 3, // llvm.nvvm.bitcast.i2f
  23556. 3, // llvm.nvvm.bitcast.ll2d
  23557. 3, // llvm.nvvm.brev32
  23558. 3, // llvm.nvvm.brev64
  23559. 3, // llvm.nvvm.ceil.d
  23560. 3, // llvm.nvvm.ceil.f
  23561. 3, // llvm.nvvm.ceil.ftz.f
  23562. 3, // llvm.nvvm.clz.i
  23563. 3, // llvm.nvvm.clz.ll
  23564. 2, // llvm.nvvm.compiler.error
  23565. 2, // llvm.nvvm.compiler.warn
  23566. 3, // llvm.nvvm.cos.approx.f
  23567. 3, // llvm.nvvm.cos.approx.ftz.f
  23568. 3, // llvm.nvvm.d2f.rm
  23569. 3, // llvm.nvvm.d2f.rm.ftz
  23570. 3, // llvm.nvvm.d2f.rn
  23571. 3, // llvm.nvvm.d2f.rn.ftz
  23572. 3, // llvm.nvvm.d2f.rp
  23573. 3, // llvm.nvvm.d2f.rp.ftz
  23574. 3, // llvm.nvvm.d2f.rz
  23575. 3, // llvm.nvvm.d2f.rz.ftz
  23576. 3, // llvm.nvvm.d2i.hi
  23577. 3, // llvm.nvvm.d2i.lo
  23578. 3, // llvm.nvvm.d2i.rm
  23579. 3, // llvm.nvvm.d2i.rn
  23580. 3, // llvm.nvvm.d2i.rp
  23581. 3, // llvm.nvvm.d2i.rz
  23582. 3, // llvm.nvvm.d2ll.rm
  23583. 3, // llvm.nvvm.d2ll.rn
  23584. 3, // llvm.nvvm.d2ll.rp
  23585. 3, // llvm.nvvm.d2ll.rz
  23586. 3, // llvm.nvvm.d2ui.rm
  23587. 3, // llvm.nvvm.d2ui.rn
  23588. 3, // llvm.nvvm.d2ui.rp
  23589. 3, // llvm.nvvm.d2ui.rz
  23590. 3, // llvm.nvvm.d2ull.rm
  23591. 3, // llvm.nvvm.d2ull.rn
  23592. 3, // llvm.nvvm.d2ull.rp
  23593. 3, // llvm.nvvm.d2ull.rz
  23594. 3, // llvm.nvvm.div.approx.f
  23595. 3, // llvm.nvvm.div.approx.ftz.f
  23596. 3, // llvm.nvvm.div.rm.d
  23597. 3, // llvm.nvvm.div.rm.f
  23598. 3, // llvm.nvvm.div.rm.ftz.f
  23599. 3, // llvm.nvvm.div.rn.d
  23600. 3, // llvm.nvvm.div.rn.f
  23601. 3, // llvm.nvvm.div.rn.ftz.f
  23602. 3, // llvm.nvvm.div.rp.d
  23603. 3, // llvm.nvvm.div.rp.f
  23604. 3, // llvm.nvvm.div.rp.ftz.f
  23605. 3, // llvm.nvvm.div.rz.d
  23606. 3, // llvm.nvvm.div.rz.f
  23607. 3, // llvm.nvvm.div.rz.ftz.f
  23608. 3, // llvm.nvvm.ex2.approx.d
  23609. 3, // llvm.nvvm.ex2.approx.f
  23610. 3, // llvm.nvvm.ex2.approx.ftz.f
  23611. 3, // llvm.nvvm.f2h.rn
  23612. 3, // llvm.nvvm.f2h.rn.ftz
  23613. 3, // llvm.nvvm.f2i.rm
  23614. 3, // llvm.nvvm.f2i.rm.ftz
  23615. 3, // llvm.nvvm.f2i.rn
  23616. 3, // llvm.nvvm.f2i.rn.ftz
  23617. 3, // llvm.nvvm.f2i.rp
  23618. 3, // llvm.nvvm.f2i.rp.ftz
  23619. 3, // llvm.nvvm.f2i.rz
  23620. 3, // llvm.nvvm.f2i.rz.ftz
  23621. 3, // llvm.nvvm.f2ll.rm
  23622. 3, // llvm.nvvm.f2ll.rm.ftz
  23623. 3, // llvm.nvvm.f2ll.rn
  23624. 3, // llvm.nvvm.f2ll.rn.ftz
  23625. 3, // llvm.nvvm.f2ll.rp
  23626. 3, // llvm.nvvm.f2ll.rp.ftz
  23627. 3, // llvm.nvvm.f2ll.rz
  23628. 3, // llvm.nvvm.f2ll.rz.ftz
  23629. 3, // llvm.nvvm.f2ui.rm
  23630. 3, // llvm.nvvm.f2ui.rm.ftz
  23631. 3, // llvm.nvvm.f2ui.rn
  23632. 3, // llvm.nvvm.f2ui.rn.ftz
  23633. 3, // llvm.nvvm.f2ui.rp
  23634. 3, // llvm.nvvm.f2ui.rp.ftz
  23635. 3, // llvm.nvvm.f2ui.rz
  23636. 3, // llvm.nvvm.f2ui.rz.ftz
  23637. 3, // llvm.nvvm.f2ull.rm
  23638. 3, // llvm.nvvm.f2ull.rm.ftz
  23639. 3, // llvm.nvvm.f2ull.rn
  23640. 3, // llvm.nvvm.f2ull.rn.ftz
  23641. 3, // llvm.nvvm.f2ull.rp
  23642. 3, // llvm.nvvm.f2ull.rp.ftz
  23643. 3, // llvm.nvvm.f2ull.rz
  23644. 3, // llvm.nvvm.f2ull.rz.ftz
  23645. 3, // llvm.nvvm.fabs.d
  23646. 3, // llvm.nvvm.fabs.f
  23647. 3, // llvm.nvvm.fabs.ftz.f
  23648. 3, // llvm.nvvm.floor.d
  23649. 3, // llvm.nvvm.floor.f
  23650. 3, // llvm.nvvm.floor.ftz.f
  23651. 3, // llvm.nvvm.fma.rm.d
  23652. 3, // llvm.nvvm.fma.rm.f
  23653. 3, // llvm.nvvm.fma.rm.ftz.f
  23654. 3, // llvm.nvvm.fma.rn.d
  23655. 3, // llvm.nvvm.fma.rn.f
  23656. 3, // llvm.nvvm.fma.rn.ftz.f
  23657. 3, // llvm.nvvm.fma.rp.d
  23658. 3, // llvm.nvvm.fma.rp.f
  23659. 3, // llvm.nvvm.fma.rp.ftz.f
  23660. 3, // llvm.nvvm.fma.rz.d
  23661. 3, // llvm.nvvm.fma.rz.f
  23662. 3, // llvm.nvvm.fma.rz.ftz.f
  23663. 3, // llvm.nvvm.fmax.d
  23664. 3, // llvm.nvvm.fmax.f
  23665. 3, // llvm.nvvm.fmax.ftz.f
  23666. 3, // llvm.nvvm.fmin.d
  23667. 3, // llvm.nvvm.fmin.f
  23668. 3, // llvm.nvvm.fmin.ftz.f
  23669. 3, // llvm.nvvm.h2f
  23670. 3, // llvm.nvvm.i2d.rm
  23671. 3, // llvm.nvvm.i2d.rn
  23672. 3, // llvm.nvvm.i2d.rp
  23673. 3, // llvm.nvvm.i2d.rz
  23674. 3, // llvm.nvvm.i2f.rm
  23675. 3, // llvm.nvvm.i2f.rn
  23676. 3, // llvm.nvvm.i2f.rp
  23677. 3, // llvm.nvvm.i2f.rz
  23678. 10, // llvm.nvvm.ldg.global.f
  23679. 10, // llvm.nvvm.ldg.global.i
  23680. 10, // llvm.nvvm.ldg.global.p
  23681. 10, // llvm.nvvm.ldu.global.f
  23682. 10, // llvm.nvvm.ldu.global.i
  23683. 10, // llvm.nvvm.ldu.global.p
  23684. 3, // llvm.nvvm.lg2.approx.d
  23685. 3, // llvm.nvvm.lg2.approx.f
  23686. 3, // llvm.nvvm.lg2.approx.ftz.f
  23687. 3, // llvm.nvvm.ll2d.rm
  23688. 3, // llvm.nvvm.ll2d.rn
  23689. 3, // llvm.nvvm.ll2d.rp
  23690. 3, // llvm.nvvm.ll2d.rz
  23691. 3, // llvm.nvvm.ll2f.rm
  23692. 3, // llvm.nvvm.ll2f.rn
  23693. 3, // llvm.nvvm.ll2f.rp
  23694. 3, // llvm.nvvm.ll2f.rz
  23695. 3, // llvm.nvvm.lohi.i2d
  23696. 3, // llvm.nvvm.max.i
  23697. 3, // llvm.nvvm.max.ll
  23698. 3, // llvm.nvvm.max.ui
  23699. 3, // llvm.nvvm.max.ull
  23700. 2, // llvm.nvvm.membar.cta
  23701. 2, // llvm.nvvm.membar.gl
  23702. 2, // llvm.nvvm.membar.sys
  23703. 3, // llvm.nvvm.min.i
  23704. 3, // llvm.nvvm.min.ll
  23705. 3, // llvm.nvvm.min.ui
  23706. 3, // llvm.nvvm.min.ull
  23707. 3, // llvm.nvvm.move.double
  23708. 3, // llvm.nvvm.move.float
  23709. 3, // llvm.nvvm.move.i16
  23710. 3, // llvm.nvvm.move.i32
  23711. 3, // llvm.nvvm.move.i64
  23712. 3, // llvm.nvvm.move.i8
  23713. 11, // llvm.nvvm.move.ptr
  23714. 3, // llvm.nvvm.mul24.i
  23715. 3, // llvm.nvvm.mul24.ui
  23716. 3, // llvm.nvvm.mul.rm.d
  23717. 3, // llvm.nvvm.mul.rm.f
  23718. 3, // llvm.nvvm.mul.rm.ftz.f
  23719. 3, // llvm.nvvm.mul.rn.d
  23720. 3, // llvm.nvvm.mul.rn.f
  23721. 3, // llvm.nvvm.mul.rn.ftz.f
  23722. 3, // llvm.nvvm.mul.rp.d
  23723. 3, // llvm.nvvm.mul.rp.f
  23724. 3, // llvm.nvvm.mul.rp.ftz.f
  23725. 3, // llvm.nvvm.mul.rz.d
  23726. 3, // llvm.nvvm.mul.rz.f
  23727. 3, // llvm.nvvm.mul.rz.ftz.f
  23728. 3, // llvm.nvvm.mulhi.i
  23729. 3, // llvm.nvvm.mulhi.ll
  23730. 3, // llvm.nvvm.mulhi.ui
  23731. 3, // llvm.nvvm.mulhi.ull
  23732. 3, // llvm.nvvm.popc.i
  23733. 3, // llvm.nvvm.popc.ll
  23734. 3, // llvm.nvvm.prmt
  23735. 3, // llvm.nvvm.ptr.constant.to.gen
  23736. 3, // llvm.nvvm.ptr.gen.to.constant
  23737. 3, // llvm.nvvm.ptr.gen.to.global
  23738. 3, // llvm.nvvm.ptr.gen.to.local
  23739. 3, // llvm.nvvm.ptr.gen.to.param
  23740. 3, // llvm.nvvm.ptr.gen.to.shared
  23741. 3, // llvm.nvvm.ptr.global.to.gen
  23742. 3, // llvm.nvvm.ptr.local.to.gen
  23743. 3, // llvm.nvvm.ptr.shared.to.gen
  23744. 3, // llvm.nvvm.rcp.approx.ftz.d
  23745. 3, // llvm.nvvm.rcp.rm.d
  23746. 3, // llvm.nvvm.rcp.rm.f
  23747. 3, // llvm.nvvm.rcp.rm.ftz.f
  23748. 3, // llvm.nvvm.rcp.rn.d
  23749. 3, // llvm.nvvm.rcp.rn.f
  23750. 3, // llvm.nvvm.rcp.rn.ftz.f
  23751. 3, // llvm.nvvm.rcp.rp.d
  23752. 3, // llvm.nvvm.rcp.rp.f
  23753. 3, // llvm.nvvm.rcp.rp.ftz.f
  23754. 3, // llvm.nvvm.rcp.rz.d
  23755. 3, // llvm.nvvm.rcp.rz.f
  23756. 3, // llvm.nvvm.rcp.rz.ftz.f
  23757. 3, // llvm.nvvm.read.ptx.sreg.ctaid.x
  23758. 3, // llvm.nvvm.read.ptx.sreg.ctaid.y
  23759. 3, // llvm.nvvm.read.ptx.sreg.ctaid.z
  23760. 3, // llvm.nvvm.read.ptx.sreg.nctaid.x
  23761. 3, // llvm.nvvm.read.ptx.sreg.nctaid.y
  23762. 3, // llvm.nvvm.read.ptx.sreg.nctaid.z
  23763. 3, // llvm.nvvm.read.ptx.sreg.ntid.x
  23764. 3, // llvm.nvvm.read.ptx.sreg.ntid.y
  23765. 3, // llvm.nvvm.read.ptx.sreg.ntid.z
  23766. 3, // llvm.nvvm.read.ptx.sreg.tid.x
  23767. 3, // llvm.nvvm.read.ptx.sreg.tid.y
  23768. 3, // llvm.nvvm.read.ptx.sreg.tid.z
  23769. 3, // llvm.nvvm.read.ptx.sreg.warpsize
  23770. 3, // llvm.nvvm.round.d
  23771. 3, // llvm.nvvm.round.f
  23772. 3, // llvm.nvvm.round.ftz.f
  23773. 3, // llvm.nvvm.rsqrt.approx.d
  23774. 3, // llvm.nvvm.rsqrt.approx.f
  23775. 3, // llvm.nvvm.rsqrt.approx.ftz.f
  23776. 3, // llvm.nvvm.sad.i
  23777. 3, // llvm.nvvm.sad.ui
  23778. 3, // llvm.nvvm.saturate.d
  23779. 3, // llvm.nvvm.saturate.f
  23780. 3, // llvm.nvvm.saturate.ftz.f
  23781. 3, // llvm.nvvm.sin.approx.f
  23782. 3, // llvm.nvvm.sin.approx.ftz.f
  23783. 3, // llvm.nvvm.sqrt.approx.f
  23784. 3, // llvm.nvvm.sqrt.approx.ftz.f
  23785. 3, // llvm.nvvm.sqrt.rm.d
  23786. 3, // llvm.nvvm.sqrt.rm.f
  23787. 3, // llvm.nvvm.sqrt.rm.ftz.f
  23788. 3, // llvm.nvvm.sqrt.rn.d
  23789. 3, // llvm.nvvm.sqrt.rn.f
  23790. 3, // llvm.nvvm.sqrt.rn.ftz.f
  23791. 3, // llvm.nvvm.sqrt.rp.d
  23792. 3, // llvm.nvvm.sqrt.rp.f
  23793. 3, // llvm.nvvm.sqrt.rp.ftz.f
  23794. 3, // llvm.nvvm.sqrt.rz.d
  23795. 3, // llvm.nvvm.sqrt.rz.f
  23796. 3, // llvm.nvvm.sqrt.rz.ftz.f
  23797. 3, // llvm.nvvm.trunc.d
  23798. 3, // llvm.nvvm.trunc.f
  23799. 3, // llvm.nvvm.trunc.ftz.f
  23800. 3, // llvm.nvvm.ui2d.rm
  23801. 3, // llvm.nvvm.ui2d.rn
  23802. 3, // llvm.nvvm.ui2d.rp
  23803. 3, // llvm.nvvm.ui2d.rz
  23804. 3, // llvm.nvvm.ui2f.rm
  23805. 3, // llvm.nvvm.ui2f.rn
  23806. 3, // llvm.nvvm.ui2f.rp
  23807. 3, // llvm.nvvm.ui2f.rz
  23808. 3, // llvm.nvvm.ull2d.rm
  23809. 3, // llvm.nvvm.ull2d.rn
  23810. 3, // llvm.nvvm.ull2d.rp
  23811. 3, // llvm.nvvm.ull2d.rz
  23812. 3, // llvm.nvvm.ull2f.rm
  23813. 3, // llvm.nvvm.ull2f.rn
  23814. 3, // llvm.nvvm.ull2f.rp
  23815. 3, // llvm.nvvm.ull2f.rz
  23816. 3, // llvm.objectsize
  23817. 2, // llvm.pcmarker
  23818. 1, // llvm.pow
  23819. 1, // llvm.powi
  23820. 2, // llvm.ppc.altivec.dss
  23821. 2, // llvm.ppc.altivec.dssall
  23822. 2, // llvm.ppc.altivec.dst
  23823. 2, // llvm.ppc.altivec.dstst
  23824. 2, // llvm.ppc.altivec.dststt
  23825. 2, // llvm.ppc.altivec.dstt
  23826. 1, // llvm.ppc.altivec.lvebx
  23827. 1, // llvm.ppc.altivec.lvehx
  23828. 1, // llvm.ppc.altivec.lvewx
  23829. 3, // llvm.ppc.altivec.lvsl
  23830. 3, // llvm.ppc.altivec.lvsr
  23831. 1, // llvm.ppc.altivec.lvx
  23832. 1, // llvm.ppc.altivec.lvxl
  23833. 1, // llvm.ppc.altivec.mfvscr
  23834. 2, // llvm.ppc.altivec.mtvscr
  23835. 2, // llvm.ppc.altivec.stvebx
  23836. 2, // llvm.ppc.altivec.stvehx
  23837. 2, // llvm.ppc.altivec.stvewx
  23838. 2, // llvm.ppc.altivec.stvx
  23839. 2, // llvm.ppc.altivec.stvxl
  23840. 3, // llvm.ppc.altivec.vaddcuw
  23841. 3, // llvm.ppc.altivec.vaddsbs
  23842. 3, // llvm.ppc.altivec.vaddshs
  23843. 3, // llvm.ppc.altivec.vaddsws
  23844. 3, // llvm.ppc.altivec.vaddubs
  23845. 3, // llvm.ppc.altivec.vadduhs
  23846. 3, // llvm.ppc.altivec.vadduws
  23847. 3, // llvm.ppc.altivec.vavgsb
  23848. 3, // llvm.ppc.altivec.vavgsh
  23849. 3, // llvm.ppc.altivec.vavgsw
  23850. 3, // llvm.ppc.altivec.vavgub
  23851. 3, // llvm.ppc.altivec.vavguh
  23852. 3, // llvm.ppc.altivec.vavguw
  23853. 3, // llvm.ppc.altivec.vcfsx
  23854. 3, // llvm.ppc.altivec.vcfux
  23855. 3, // llvm.ppc.altivec.vcmpbfp
  23856. 3, // llvm.ppc.altivec.vcmpbfp.p
  23857. 3, // llvm.ppc.altivec.vcmpeqfp
  23858. 3, // llvm.ppc.altivec.vcmpeqfp.p
  23859. 3, // llvm.ppc.altivec.vcmpequb
  23860. 3, // llvm.ppc.altivec.vcmpequb.p
  23861. 3, // llvm.ppc.altivec.vcmpequh
  23862. 3, // llvm.ppc.altivec.vcmpequh.p
  23863. 3, // llvm.ppc.altivec.vcmpequw
  23864. 3, // llvm.ppc.altivec.vcmpequw.p
  23865. 3, // llvm.ppc.altivec.vcmpgefp
  23866. 3, // llvm.ppc.altivec.vcmpgefp.p
  23867. 3, // llvm.ppc.altivec.vcmpgtfp
  23868. 3, // llvm.ppc.altivec.vcmpgtfp.p
  23869. 3, // llvm.ppc.altivec.vcmpgtsb
  23870. 3, // llvm.ppc.altivec.vcmpgtsb.p
  23871. 3, // llvm.ppc.altivec.vcmpgtsh
  23872. 3, // llvm.ppc.altivec.vcmpgtsh.p
  23873. 3, // llvm.ppc.altivec.vcmpgtsw
  23874. 3, // llvm.ppc.altivec.vcmpgtsw.p
  23875. 3, // llvm.ppc.altivec.vcmpgtub
  23876. 3, // llvm.ppc.altivec.vcmpgtub.p
  23877. 3, // llvm.ppc.altivec.vcmpgtuh
  23878. 3, // llvm.ppc.altivec.vcmpgtuh.p
  23879. 3, // llvm.ppc.altivec.vcmpgtuw
  23880. 3, // llvm.ppc.altivec.vcmpgtuw.p
  23881. 3, // llvm.ppc.altivec.vctsxs
  23882. 3, // llvm.ppc.altivec.vctuxs
  23883. 3, // llvm.ppc.altivec.vexptefp
  23884. 3, // llvm.ppc.altivec.vlogefp
  23885. 3, // llvm.ppc.altivec.vmaddfp
  23886. 3, // llvm.ppc.altivec.vmaxfp
  23887. 3, // llvm.ppc.altivec.vmaxsb
  23888. 3, // llvm.ppc.altivec.vmaxsh
  23889. 3, // llvm.ppc.altivec.vmaxsw
  23890. 3, // llvm.ppc.altivec.vmaxub
  23891. 3, // llvm.ppc.altivec.vmaxuh
  23892. 3, // llvm.ppc.altivec.vmaxuw
  23893. 3, // llvm.ppc.altivec.vmhaddshs
  23894. 3, // llvm.ppc.altivec.vmhraddshs
  23895. 3, // llvm.ppc.altivec.vminfp
  23896. 3, // llvm.ppc.altivec.vminsb
  23897. 3, // llvm.ppc.altivec.vminsh
  23898. 3, // llvm.ppc.altivec.vminsw
  23899. 3, // llvm.ppc.altivec.vminub
  23900. 3, // llvm.ppc.altivec.vminuh
  23901. 3, // llvm.ppc.altivec.vminuw
  23902. 3, // llvm.ppc.altivec.vmladduhm
  23903. 3, // llvm.ppc.altivec.vmsummbm
  23904. 3, // llvm.ppc.altivec.vmsumshm
  23905. 3, // llvm.ppc.altivec.vmsumshs
  23906. 3, // llvm.ppc.altivec.vmsumubm
  23907. 3, // llvm.ppc.altivec.vmsumuhm
  23908. 3, // llvm.ppc.altivec.vmsumuhs
  23909. 3, // llvm.ppc.altivec.vmulesb
  23910. 3, // llvm.ppc.altivec.vmulesh
  23911. 3, // llvm.ppc.altivec.vmuleub
  23912. 3, // llvm.ppc.altivec.vmuleuh
  23913. 3, // llvm.ppc.altivec.vmulosb
  23914. 3, // llvm.ppc.altivec.vmulosh
  23915. 3, // llvm.ppc.altivec.vmuloub
  23916. 3, // llvm.ppc.altivec.vmulouh
  23917. 3, // llvm.ppc.altivec.vnmsubfp
  23918. 3, // llvm.ppc.altivec.vperm
  23919. 3, // llvm.ppc.altivec.vpkpx
  23920. 3, // llvm.ppc.altivec.vpkshss
  23921. 3, // llvm.ppc.altivec.vpkshus
  23922. 3, // llvm.ppc.altivec.vpkswss
  23923. 3, // llvm.ppc.altivec.vpkswus
  23924. 3, // llvm.ppc.altivec.vpkuhus
  23925. 3, // llvm.ppc.altivec.vpkuwus
  23926. 3, // llvm.ppc.altivec.vrefp
  23927. 3, // llvm.ppc.altivec.vrfim
  23928. 3, // llvm.ppc.altivec.vrfin
  23929. 3, // llvm.ppc.altivec.vrfip
  23930. 3, // llvm.ppc.altivec.vrfiz
  23931. 3, // llvm.ppc.altivec.vrlb
  23932. 3, // llvm.ppc.altivec.vrlh
  23933. 3, // llvm.ppc.altivec.vrlw
  23934. 3, // llvm.ppc.altivec.vrsqrtefp
  23935. 3, // llvm.ppc.altivec.vsel
  23936. 3, // llvm.ppc.altivec.vsl
  23937. 3, // llvm.ppc.altivec.vslb
  23938. 3, // llvm.ppc.altivec.vslh
  23939. 3, // llvm.ppc.altivec.vslo
  23940. 3, // llvm.ppc.altivec.vslw
  23941. 3, // llvm.ppc.altivec.vsr
  23942. 3, // llvm.ppc.altivec.vsrab
  23943. 3, // llvm.ppc.altivec.vsrah
  23944. 3, // llvm.ppc.altivec.vsraw
  23945. 3, // llvm.ppc.altivec.vsrb
  23946. 3, // llvm.ppc.altivec.vsrh
  23947. 3, // llvm.ppc.altivec.vsro
  23948. 3, // llvm.ppc.altivec.vsrw
  23949. 3, // llvm.ppc.altivec.vsubcuw
  23950. 3, // llvm.ppc.altivec.vsubsbs
  23951. 3, // llvm.ppc.altivec.vsubshs
  23952. 3, // llvm.ppc.altivec.vsubsws
  23953. 3, // llvm.ppc.altivec.vsububs
  23954. 3, // llvm.ppc.altivec.vsubuhs
  23955. 3, // llvm.ppc.altivec.vsubuws
  23956. 3, // llvm.ppc.altivec.vsum2sws
  23957. 3, // llvm.ppc.altivec.vsum4sbs
  23958. 3, // llvm.ppc.altivec.vsum4shs
  23959. 3, // llvm.ppc.altivec.vsum4ubs
  23960. 3, // llvm.ppc.altivec.vsumsws
  23961. 3, // llvm.ppc.altivec.vupkhpx
  23962. 3, // llvm.ppc.altivec.vupkhsb
  23963. 3, // llvm.ppc.altivec.vupkhsh
  23964. 3, // llvm.ppc.altivec.vupklpx
  23965. 3, // llvm.ppc.altivec.vupklsb
  23966. 3, // llvm.ppc.altivec.vupklsh
  23967. 2, // llvm.ppc.dcba
  23968. 2, // llvm.ppc.dcbf
  23969. 2, // llvm.ppc.dcbi
  23970. 2, // llvm.ppc.dcbst
  23971. 6, // llvm.ppc.dcbt
  23972. 2, // llvm.ppc.dcbtst
  23973. 2, // llvm.ppc.dcbz
  23974. 2, // llvm.ppc.dcbzl
  23975. 2, // llvm.ppc.sync
  23976. 6, // llvm.prefetch
  23977. 2, // llvm.ptr.annotation
  23978. 2, // llvm.ptx.bar.sync
  23979. 3, // llvm.ptx.read.clock
  23980. 3, // llvm.ptx.read.clock64
  23981. 3, // llvm.ptx.read.ctaid.w
  23982. 3, // llvm.ptx.read.ctaid.x
  23983. 3, // llvm.ptx.read.ctaid.y
  23984. 3, // llvm.ptx.read.ctaid.z
  23985. 3, // llvm.ptx.read.gridid
  23986. 3, // llvm.ptx.read.laneid
  23987. 3, // llvm.ptx.read.lanemask.eq
  23988. 3, // llvm.ptx.read.lanemask.ge
  23989. 3, // llvm.ptx.read.lanemask.gt
  23990. 3, // llvm.ptx.read.lanemask.le
  23991. 3, // llvm.ptx.read.lanemask.lt
  23992. 3, // llvm.ptx.read.nctaid.w
  23993. 3, // llvm.ptx.read.nctaid.x
  23994. 3, // llvm.ptx.read.nctaid.y
  23995. 3, // llvm.ptx.read.nctaid.z
  23996. 3, // llvm.ptx.read.nsmid
  23997. 3, // llvm.ptx.read.ntid.w
  23998. 3, // llvm.ptx.read.ntid.x
  23999. 3, // llvm.ptx.read.ntid.y
  24000. 3, // llvm.ptx.read.ntid.z
  24001. 3, // llvm.ptx.read.nwarpid
  24002. 3, // llvm.ptx.read.pm0
  24003. 3, // llvm.ptx.read.pm1
  24004. 3, // llvm.ptx.read.pm2
  24005. 3, // llvm.ptx.read.pm3
  24006. 3, // llvm.ptx.read.smid
  24007. 3, // llvm.ptx.read.tid.w
  24008. 3, // llvm.ptx.read.tid.x
  24009. 3, // llvm.ptx.read.tid.y
  24010. 3, // llvm.ptx.read.tid.z
  24011. 3, // llvm.ptx.read.warpid
  24012. 3, // llvm.r600.read.global.size.x
  24013. 3, // llvm.r600.read.global.size.y
  24014. 3, // llvm.r600.read.global.size.z
  24015. 3, // llvm.r600.read.local.size.x
  24016. 3, // llvm.r600.read.local.size.y
  24017. 3, // llvm.r600.read.local.size.z
  24018. 3, // llvm.r600.read.ngroups.x
  24019. 3, // llvm.r600.read.ngroups.y
  24020. 3, // llvm.r600.read.ngroups.z
  24021. 3, // llvm.r600.read.tgid.x
  24022. 3, // llvm.r600.read.tgid.y
  24023. 3, // llvm.r600.read.tgid.z
  24024. 3, // llvm.r600.read.tidig.x
  24025. 3, // llvm.r600.read.tidig.y
  24026. 3, // llvm.r600.read.tidig.z
  24027. 2, // llvm.readcyclecounter
  24028. 3, // llvm.returnaddress
  24029. 1, // llvm.rint
  24030. 3, // llvm.sadd.with.overflow
  24031. 2, // llvm.setjmp
  24032. 4, // llvm.siglongjmp
  24033. 2, // llvm.sigsetjmp
  24034. 1, // llvm.sin
  24035. 3, // llvm.smul.with.overflow
  24036. 1, // llvm.sqrt
  24037. 3, // llvm.ssub.with.overflow
  24038. 2, // llvm.stackprotector
  24039. 2, // llvm.stackrestore
  24040. 2, // llvm.stacksave
  24041. 4, // llvm.trap
  24042. 1, // llvm.trunc
  24043. 3, // llvm.uadd.with.overflow
  24044. 3, // llvm.umul.with.overflow
  24045. 3, // llvm.usub.with.overflow
  24046. 2, // llvm.va_copy
  24047. 2, // llvm.va_end
  24048. 2, // llvm.var.annotation
  24049. 2, // llvm.va_start
  24050. 3, // llvm.x86.3dnow.pavgusb
  24051. 3, // llvm.x86.3dnow.pf2id
  24052. 3, // llvm.x86.3dnow.pfacc
  24053. 3, // llvm.x86.3dnow.pfadd
  24054. 3, // llvm.x86.3dnow.pfcmpeq
  24055. 3, // llvm.x86.3dnow.pfcmpge
  24056. 3, // llvm.x86.3dnow.pfcmpgt
  24057. 3, // llvm.x86.3dnow.pfmax
  24058. 3, // llvm.x86.3dnow.pfmin
  24059. 3, // llvm.x86.3dnow.pfmul
  24060. 3, // llvm.x86.3dnow.pfrcp
  24061. 3, // llvm.x86.3dnow.pfrcpit1
  24062. 3, // llvm.x86.3dnow.pfrcpit2
  24063. 3, // llvm.x86.3dnow.pfrsqit1
  24064. 3, // llvm.x86.3dnow.pfrsqrt
  24065. 3, // llvm.x86.3dnow.pfsub
  24066. 3, // llvm.x86.3dnow.pfsubr
  24067. 3, // llvm.x86.3dnow.pi2fd
  24068. 3, // llvm.x86.3dnow.pmulhrw
  24069. 3, // llvm.x86.3dnowa.pf2iw
  24070. 3, // llvm.x86.3dnowa.pfnacc
  24071. 3, // llvm.x86.3dnowa.pfpnacc
  24072. 3, // llvm.x86.3dnowa.pi2fw
  24073. 3, // llvm.x86.3dnowa.pswapd
  24074. 3, // llvm.x86.aesni.aesdec
  24075. 3, // llvm.x86.aesni.aesdeclast
  24076. 3, // llvm.x86.aesni.aesenc
  24077. 3, // llvm.x86.aesni.aesenclast
  24078. 3, // llvm.x86.aesni.aesimc
  24079. 3, // llvm.x86.aesni.aeskeygenassist
  24080. 1, // llvm.x86.avx2.gather.d.d
  24081. 1, // llvm.x86.avx2.gather.d.d.256
  24082. 1, // llvm.x86.avx2.gather.d.pd
  24083. 1, // llvm.x86.avx2.gather.d.pd.256
  24084. 1, // llvm.x86.avx2.gather.d.ps
  24085. 1, // llvm.x86.avx2.gather.d.ps.256
  24086. 1, // llvm.x86.avx2.gather.d.q
  24087. 1, // llvm.x86.avx2.gather.d.q.256
  24088. 1, // llvm.x86.avx2.gather.q.d
  24089. 1, // llvm.x86.avx2.gather.q.d.256
  24090. 1, // llvm.x86.avx2.gather.q.pd
  24091. 1, // llvm.x86.avx2.gather.q.pd.256
  24092. 1, // llvm.x86.avx2.gather.q.ps
  24093. 1, // llvm.x86.avx2.gather.q.ps.256
  24094. 1, // llvm.x86.avx2.gather.q.q
  24095. 1, // llvm.x86.avx2.gather.q.q.256
  24096. 1, // llvm.x86.avx2.maskload.d
  24097. 1, // llvm.x86.avx2.maskload.d.256
  24098. 1, // llvm.x86.avx2.maskload.q
  24099. 1, // llvm.x86.avx2.maskload.q.256
  24100. 2, // llvm.x86.avx2.maskstore.d
  24101. 2, // llvm.x86.avx2.maskstore.d.256
  24102. 2, // llvm.x86.avx2.maskstore.q
  24103. 2, // llvm.x86.avx2.maskstore.q.256
  24104. 1, // llvm.x86.avx2.movntdqa
  24105. 3, // llvm.x86.avx2.mpsadbw
  24106. 3, // llvm.x86.avx2.pabs.b
  24107. 3, // llvm.x86.avx2.pabs.d
  24108. 3, // llvm.x86.avx2.pabs.w
  24109. 3, // llvm.x86.avx2.packssdw
  24110. 3, // llvm.x86.avx2.packsswb
  24111. 3, // llvm.x86.avx2.packusdw
  24112. 3, // llvm.x86.avx2.packuswb
  24113. 3, // llvm.x86.avx2.padds.b
  24114. 3, // llvm.x86.avx2.padds.w
  24115. 3, // llvm.x86.avx2.paddus.b
  24116. 3, // llvm.x86.avx2.paddus.w
  24117. 3, // llvm.x86.avx2.pavg.b
  24118. 3, // llvm.x86.avx2.pavg.w
  24119. 3, // llvm.x86.avx2.pblendd.128
  24120. 3, // llvm.x86.avx2.pblendd.256
  24121. 3, // llvm.x86.avx2.pblendvb
  24122. 3, // llvm.x86.avx2.pblendw
  24123. 3, // llvm.x86.avx2.pbroadcastb.128
  24124. 3, // llvm.x86.avx2.pbroadcastb.256
  24125. 3, // llvm.x86.avx2.pbroadcastd.128
  24126. 3, // llvm.x86.avx2.pbroadcastd.256
  24127. 3, // llvm.x86.avx2.pbroadcastq.128
  24128. 3, // llvm.x86.avx2.pbroadcastq.256
  24129. 3, // llvm.x86.avx2.pbroadcastw.128
  24130. 3, // llvm.x86.avx2.pbroadcastw.256
  24131. 3, // llvm.x86.avx2.permd
  24132. 3, // llvm.x86.avx2.permps
  24133. 3, // llvm.x86.avx2.phadd.d
  24134. 3, // llvm.x86.avx2.phadd.sw
  24135. 3, // llvm.x86.avx2.phadd.w
  24136. 3, // llvm.x86.avx2.phsub.d
  24137. 3, // llvm.x86.avx2.phsub.sw
  24138. 3, // llvm.x86.avx2.phsub.w
  24139. 3, // llvm.x86.avx2.pmadd.ub.sw
  24140. 3, // llvm.x86.avx2.pmadd.wd
  24141. 3, // llvm.x86.avx2.pmaxs.b
  24142. 3, // llvm.x86.avx2.pmaxs.d
  24143. 3, // llvm.x86.avx2.pmaxs.w
  24144. 3, // llvm.x86.avx2.pmaxu.b
  24145. 3, // llvm.x86.avx2.pmaxu.d
  24146. 3, // llvm.x86.avx2.pmaxu.w
  24147. 3, // llvm.x86.avx2.pmins.b
  24148. 3, // llvm.x86.avx2.pmins.d
  24149. 3, // llvm.x86.avx2.pmins.w
  24150. 3, // llvm.x86.avx2.pminu.b
  24151. 3, // llvm.x86.avx2.pminu.d
  24152. 3, // llvm.x86.avx2.pminu.w
  24153. 3, // llvm.x86.avx2.pmovmskb
  24154. 3, // llvm.x86.avx2.pmovsxbd
  24155. 3, // llvm.x86.avx2.pmovsxbq
  24156. 3, // llvm.x86.avx2.pmovsxbw
  24157. 3, // llvm.x86.avx2.pmovsxdq
  24158. 3, // llvm.x86.avx2.pmovsxwd
  24159. 3, // llvm.x86.avx2.pmovsxwq
  24160. 3, // llvm.x86.avx2.pmovzxbd
  24161. 3, // llvm.x86.avx2.pmovzxbq
  24162. 3, // llvm.x86.avx2.pmovzxbw
  24163. 3, // llvm.x86.avx2.pmovzxdq
  24164. 3, // llvm.x86.avx2.pmovzxwd
  24165. 3, // llvm.x86.avx2.pmovzxwq
  24166. 3, // llvm.x86.avx2.pmul.dq
  24167. 3, // llvm.x86.avx2.pmul.hr.sw
  24168. 3, // llvm.x86.avx2.pmulh.w
  24169. 3, // llvm.x86.avx2.pmulhu.w
  24170. 3, // llvm.x86.avx2.pmulu.dq
  24171. 3, // llvm.x86.avx2.psad.bw
  24172. 3, // llvm.x86.avx2.pshuf.b
  24173. 3, // llvm.x86.avx2.psign.b
  24174. 3, // llvm.x86.avx2.psign.d
  24175. 3, // llvm.x86.avx2.psign.w
  24176. 3, // llvm.x86.avx2.psll.d
  24177. 3, // llvm.x86.avx2.psll.dq
  24178. 3, // llvm.x86.avx2.psll.dq.bs
  24179. 3, // llvm.x86.avx2.psll.q
  24180. 3, // llvm.x86.avx2.psll.w
  24181. 3, // llvm.x86.avx2.pslli.d
  24182. 3, // llvm.x86.avx2.pslli.q
  24183. 3, // llvm.x86.avx2.pslli.w
  24184. 3, // llvm.x86.avx2.psllv.d
  24185. 3, // llvm.x86.avx2.psllv.d.256
  24186. 3, // llvm.x86.avx2.psllv.q
  24187. 3, // llvm.x86.avx2.psllv.q.256
  24188. 3, // llvm.x86.avx2.psra.d
  24189. 3, // llvm.x86.avx2.psra.w
  24190. 3, // llvm.x86.avx2.psrai.d
  24191. 3, // llvm.x86.avx2.psrai.w
  24192. 3, // llvm.x86.avx2.psrav.d
  24193. 3, // llvm.x86.avx2.psrav.d.256
  24194. 3, // llvm.x86.avx2.psrl.d
  24195. 3, // llvm.x86.avx2.psrl.dq
  24196. 3, // llvm.x86.avx2.psrl.dq.bs
  24197. 3, // llvm.x86.avx2.psrl.q
  24198. 3, // llvm.x86.avx2.psrl.w
  24199. 3, // llvm.x86.avx2.psrli.d
  24200. 3, // llvm.x86.avx2.psrli.q
  24201. 3, // llvm.x86.avx2.psrli.w
  24202. 3, // llvm.x86.avx2.psrlv.d
  24203. 3, // llvm.x86.avx2.psrlv.d.256
  24204. 3, // llvm.x86.avx2.psrlv.q
  24205. 3, // llvm.x86.avx2.psrlv.q.256
  24206. 3, // llvm.x86.avx2.psubs.b
  24207. 3, // llvm.x86.avx2.psubs.w
  24208. 3, // llvm.x86.avx2.psubus.b
  24209. 3, // llvm.x86.avx2.psubus.w
  24210. 3, // llvm.x86.avx2.vbroadcast.sd.pd.256
  24211. 3, // llvm.x86.avx2.vbroadcast.ss.ps
  24212. 3, // llvm.x86.avx2.vbroadcast.ss.ps.256
  24213. 1, // llvm.x86.avx2.vbroadcasti128
  24214. 3, // llvm.x86.avx2.vextracti128
  24215. 3, // llvm.x86.avx2.vinserti128
  24216. 3, // llvm.x86.avx2.vperm2i128
  24217. 3, // llvm.x86.avx.addsub.pd.256
  24218. 3, // llvm.x86.avx.addsub.ps.256
  24219. 3, // llvm.x86.avx.blend.pd.256
  24220. 3, // llvm.x86.avx.blend.ps.256
  24221. 3, // llvm.x86.avx.blendv.pd.256
  24222. 3, // llvm.x86.avx.blendv.ps.256
  24223. 3, // llvm.x86.avx.cmp.pd.256
  24224. 3, // llvm.x86.avx.cmp.ps.256
  24225. 3, // llvm.x86.avx.cvt.pd2.ps.256
  24226. 3, // llvm.x86.avx.cvt.pd2dq.256
  24227. 3, // llvm.x86.avx.cvt.ps2.pd.256
  24228. 3, // llvm.x86.avx.cvt.ps2dq.256
  24229. 3, // llvm.x86.avx.cvtdq2.pd.256
  24230. 3, // llvm.x86.avx.cvtdq2.ps.256
  24231. 3, // llvm.x86.avx.cvtt.pd2dq.256
  24232. 3, // llvm.x86.avx.cvtt.ps2dq.256
  24233. 3, // llvm.x86.avx.dp.ps.256
  24234. 3, // llvm.x86.avx.hadd.pd.256
  24235. 3, // llvm.x86.avx.hadd.ps.256
  24236. 3, // llvm.x86.avx.hsub.pd.256
  24237. 3, // llvm.x86.avx.hsub.ps.256
  24238. 1, // llvm.x86.avx.ldu.dq.256
  24239. 1, // llvm.x86.avx.maskload.pd
  24240. 1, // llvm.x86.avx.maskload.pd.256
  24241. 1, // llvm.x86.avx.maskload.ps
  24242. 1, // llvm.x86.avx.maskload.ps.256
  24243. 2, // llvm.x86.avx.maskstore.pd
  24244. 2, // llvm.x86.avx.maskstore.pd.256
  24245. 2, // llvm.x86.avx.maskstore.ps
  24246. 2, // llvm.x86.avx.maskstore.ps.256
  24247. 3, // llvm.x86.avx.max.pd.256
  24248. 3, // llvm.x86.avx.max.ps.256
  24249. 3, // llvm.x86.avx.min.pd.256
  24250. 3, // llvm.x86.avx.min.ps.256
  24251. 3, // llvm.x86.avx.movmsk.pd.256
  24252. 3, // llvm.x86.avx.movmsk.ps.256
  24253. 3, // llvm.x86.avx.ptestc.256
  24254. 3, // llvm.x86.avx.ptestnzc.256
  24255. 3, // llvm.x86.avx.ptestz.256
  24256. 3, // llvm.x86.avx.rcp.ps.256
  24257. 3, // llvm.x86.avx.round.pd.256
  24258. 3, // llvm.x86.avx.round.ps.256
  24259. 3, // llvm.x86.avx.rsqrt.ps.256
  24260. 3, // llvm.x86.avx.sqrt.pd.256
  24261. 3, // llvm.x86.avx.sqrt.ps.256
  24262. 2, // llvm.x86.avx.storeu.dq.256
  24263. 2, // llvm.x86.avx.storeu.pd.256
  24264. 2, // llvm.x86.avx.storeu.ps.256
  24265. 1, // llvm.x86.avx.vbroadcast.sd.256
  24266. 1, // llvm.x86.avx.vbroadcast.ss
  24267. 1, // llvm.x86.avx.vbroadcast.ss.256
  24268. 1, // llvm.x86.avx.vbroadcastf128.pd.256
  24269. 1, // llvm.x86.avx.vbroadcastf128.ps.256
  24270. 3, // llvm.x86.avx.vextractf128.pd.256
  24271. 3, // llvm.x86.avx.vextractf128.ps.256
  24272. 3, // llvm.x86.avx.vextractf128.si.256
  24273. 3, // llvm.x86.avx.vinsertf128.pd.256
  24274. 3, // llvm.x86.avx.vinsertf128.ps.256
  24275. 3, // llvm.x86.avx.vinsertf128.si.256
  24276. 3, // llvm.x86.avx.vperm2f128.pd.256
  24277. 3, // llvm.x86.avx.vperm2f128.ps.256
  24278. 3, // llvm.x86.avx.vperm2f128.si.256
  24279. 3, // llvm.x86.avx.vpermilvar.pd
  24280. 3, // llvm.x86.avx.vpermilvar.pd.256
  24281. 3, // llvm.x86.avx.vpermilvar.ps
  24282. 3, // llvm.x86.avx.vpermilvar.ps.256
  24283. 3, // llvm.x86.avx.vtestc.pd
  24284. 3, // llvm.x86.avx.vtestc.pd.256
  24285. 3, // llvm.x86.avx.vtestc.ps
  24286. 3, // llvm.x86.avx.vtestc.ps.256
  24287. 3, // llvm.x86.avx.vtestnzc.pd
  24288. 3, // llvm.x86.avx.vtestnzc.pd.256
  24289. 3, // llvm.x86.avx.vtestnzc.ps
  24290. 3, // llvm.x86.avx.vtestnzc.ps.256
  24291. 3, // llvm.x86.avx.vtestz.pd
  24292. 3, // llvm.x86.avx.vtestz.pd.256
  24293. 3, // llvm.x86.avx.vtestz.ps
  24294. 3, // llvm.x86.avx.vtestz.ps.256
  24295. 2, // llvm.x86.avx.vzeroall
  24296. 2, // llvm.x86.avx.vzeroupper
  24297. 3, // llvm.x86.bmi.bextr.32
  24298. 3, // llvm.x86.bmi.bextr.64
  24299. 3, // llvm.x86.bmi.bzhi.32
  24300. 3, // llvm.x86.bmi.bzhi.64
  24301. 3, // llvm.x86.bmi.pdep.32
  24302. 3, // llvm.x86.bmi.pdep.64
  24303. 3, // llvm.x86.bmi.pext.32
  24304. 3, // llvm.x86.bmi.pext.64
  24305. 3, // llvm.x86.fma.vfmadd.pd
  24306. 3, // llvm.x86.fma.vfmadd.pd.256
  24307. 3, // llvm.x86.fma.vfmadd.ps
  24308. 3, // llvm.x86.fma.vfmadd.ps.256
  24309. 3, // llvm.x86.fma.vfmadd.sd
  24310. 3, // llvm.x86.fma.vfmadd.ss
  24311. 3, // llvm.x86.fma.vfmaddsub.pd
  24312. 3, // llvm.x86.fma.vfmaddsub.pd.256
  24313. 3, // llvm.x86.fma.vfmaddsub.ps
  24314. 3, // llvm.x86.fma.vfmaddsub.ps.256
  24315. 3, // llvm.x86.fma.vfmsub.pd
  24316. 3, // llvm.x86.fma.vfmsub.pd.256
  24317. 3, // llvm.x86.fma.vfmsub.ps
  24318. 3, // llvm.x86.fma.vfmsub.ps.256
  24319. 3, // llvm.x86.fma.vfmsub.sd
  24320. 3, // llvm.x86.fma.vfmsub.ss
  24321. 3, // llvm.x86.fma.vfmsubadd.pd
  24322. 3, // llvm.x86.fma.vfmsubadd.pd.256
  24323. 3, // llvm.x86.fma.vfmsubadd.ps
  24324. 3, // llvm.x86.fma.vfmsubadd.ps.256
  24325. 3, // llvm.x86.fma.vfnmadd.pd
  24326. 3, // llvm.x86.fma.vfnmadd.pd.256
  24327. 3, // llvm.x86.fma.vfnmadd.ps
  24328. 3, // llvm.x86.fma.vfnmadd.ps.256
  24329. 3, // llvm.x86.fma.vfnmadd.sd
  24330. 3, // llvm.x86.fma.vfnmadd.ss
  24331. 3, // llvm.x86.fma.vfnmsub.pd
  24332. 3, // llvm.x86.fma.vfnmsub.pd.256
  24333. 3, // llvm.x86.fma.vfnmsub.ps
  24334. 3, // llvm.x86.fma.vfnmsub.ps.256
  24335. 3, // llvm.x86.fma.vfnmsub.sd
  24336. 3, // llvm.x86.fma.vfnmsub.ss
  24337. 2, // llvm.x86.int
  24338. 2, // llvm.x86.mmx.emms
  24339. 2, // llvm.x86.mmx.femms
  24340. 2, // llvm.x86.mmx.maskmovq
  24341. 2, // llvm.x86.mmx.movnt.dq
  24342. 3, // llvm.x86.mmx.packssdw
  24343. 3, // llvm.x86.mmx.packsswb
  24344. 3, // llvm.x86.mmx.packuswb
  24345. 3, // llvm.x86.mmx.padd.b
  24346. 3, // llvm.x86.mmx.padd.d
  24347. 3, // llvm.x86.mmx.padd.q
  24348. 3, // llvm.x86.mmx.padd.w
  24349. 3, // llvm.x86.mmx.padds.b
  24350. 3, // llvm.x86.mmx.padds.w
  24351. 3, // llvm.x86.mmx.paddus.b
  24352. 3, // llvm.x86.mmx.paddus.w
  24353. 3, // llvm.x86.mmx.palignr.b
  24354. 3, // llvm.x86.mmx.pand
  24355. 3, // llvm.x86.mmx.pandn
  24356. 3, // llvm.x86.mmx.pavg.b
  24357. 3, // llvm.x86.mmx.pavg.w
  24358. 3, // llvm.x86.mmx.pcmpeq.b
  24359. 3, // llvm.x86.mmx.pcmpeq.d
  24360. 3, // llvm.x86.mmx.pcmpeq.w
  24361. 3, // llvm.x86.mmx.pcmpgt.b
  24362. 3, // llvm.x86.mmx.pcmpgt.d
  24363. 3, // llvm.x86.mmx.pcmpgt.w
  24364. 3, // llvm.x86.mmx.pextr.w
  24365. 3, // llvm.x86.mmx.pinsr.w
  24366. 3, // llvm.x86.mmx.pmadd.wd
  24367. 3, // llvm.x86.mmx.pmaxs.w
  24368. 3, // llvm.x86.mmx.pmaxu.b
  24369. 3, // llvm.x86.mmx.pmins.w
  24370. 3, // llvm.x86.mmx.pminu.b
  24371. 3, // llvm.x86.mmx.pmovmskb
  24372. 3, // llvm.x86.mmx.pmulh.w
  24373. 3, // llvm.x86.mmx.pmulhu.w
  24374. 3, // llvm.x86.mmx.pmull.w
  24375. 3, // llvm.x86.mmx.pmulu.dq
  24376. 3, // llvm.x86.mmx.por
  24377. 3, // llvm.x86.mmx.psad.bw
  24378. 3, // llvm.x86.mmx.psll.d
  24379. 3, // llvm.x86.mmx.psll.q
  24380. 3, // llvm.x86.mmx.psll.w
  24381. 3, // llvm.x86.mmx.pslli.d
  24382. 3, // llvm.x86.mmx.pslli.q
  24383. 3, // llvm.x86.mmx.pslli.w
  24384. 3, // llvm.x86.mmx.psra.d
  24385. 3, // llvm.x86.mmx.psra.w
  24386. 3, // llvm.x86.mmx.psrai.d
  24387. 3, // llvm.x86.mmx.psrai.w
  24388. 3, // llvm.x86.mmx.psrl.d
  24389. 3, // llvm.x86.mmx.psrl.q
  24390. 3, // llvm.x86.mmx.psrl.w
  24391. 3, // llvm.x86.mmx.psrli.d
  24392. 3, // llvm.x86.mmx.psrli.q
  24393. 3, // llvm.x86.mmx.psrli.w
  24394. 3, // llvm.x86.mmx.psub.b
  24395. 3, // llvm.x86.mmx.psub.d
  24396. 3, // llvm.x86.mmx.psub.q
  24397. 3, // llvm.x86.mmx.psub.w
  24398. 3, // llvm.x86.mmx.psubs.b
  24399. 3, // llvm.x86.mmx.psubs.w
  24400. 3, // llvm.x86.mmx.psubus.b
  24401. 3, // llvm.x86.mmx.psubus.w
  24402. 3, // llvm.x86.mmx.punpckhbw
  24403. 3, // llvm.x86.mmx.punpckhdq
  24404. 3, // llvm.x86.mmx.punpckhwd
  24405. 3, // llvm.x86.mmx.punpcklbw
  24406. 3, // llvm.x86.mmx.punpckldq
  24407. 3, // llvm.x86.mmx.punpcklwd
  24408. 3, // llvm.x86.mmx.pxor
  24409. 3, // llvm.x86.pclmulqdq
  24410. 2, // llvm.x86.rdfsbase.32
  24411. 2, // llvm.x86.rdfsbase.64
  24412. 2, // llvm.x86.rdgsbase.32
  24413. 2, // llvm.x86.rdgsbase.64
  24414. 2, // llvm.x86.rdrand.16
  24415. 2, // llvm.x86.rdrand.32
  24416. 2, // llvm.x86.rdrand.64
  24417. 2, // llvm.x86.rdseed.16
  24418. 2, // llvm.x86.rdseed.32
  24419. 2, // llvm.x86.rdseed.64
  24420. 3, // llvm.x86.sse2.add.sd
  24421. 2, // llvm.x86.sse2.clflush
  24422. 3, // llvm.x86.sse2.cmp.pd
  24423. 3, // llvm.x86.sse2.cmp.sd
  24424. 3, // llvm.x86.sse2.comieq.sd
  24425. 3, // llvm.x86.sse2.comige.sd
  24426. 3, // llvm.x86.sse2.comigt.sd
  24427. 3, // llvm.x86.sse2.comile.sd
  24428. 3, // llvm.x86.sse2.comilt.sd
  24429. 3, // llvm.x86.sse2.comineq.sd
  24430. 3, // llvm.x86.sse2.cvtdq2pd
  24431. 3, // llvm.x86.sse2.cvtdq2ps
  24432. 3, // llvm.x86.sse2.cvtpd2dq
  24433. 3, // llvm.x86.sse2.cvtpd2ps
  24434. 3, // llvm.x86.sse2.cvtps2dq
  24435. 3, // llvm.x86.sse2.cvtps2pd
  24436. 3, // llvm.x86.sse2.cvtsd2si
  24437. 3, // llvm.x86.sse2.cvtsd2si64
  24438. 3, // llvm.x86.sse2.cvtsd2ss
  24439. 3, // llvm.x86.sse2.cvtsi2sd
  24440. 3, // llvm.x86.sse2.cvtsi642sd
  24441. 3, // llvm.x86.sse2.cvtss2sd
  24442. 3, // llvm.x86.sse2.cvttpd2dq
  24443. 3, // llvm.x86.sse2.cvttps2dq
  24444. 3, // llvm.x86.sse2.cvttsd2si
  24445. 3, // llvm.x86.sse2.cvttsd2si64
  24446. 3, // llvm.x86.sse2.div.sd
  24447. 2, // llvm.x86.sse2.lfence
  24448. 2, // llvm.x86.sse2.maskmov.dqu
  24449. 3, // llvm.x86.sse2.max.pd
  24450. 3, // llvm.x86.sse2.max.sd
  24451. 2, // llvm.x86.sse2.mfence
  24452. 3, // llvm.x86.sse2.min.pd
  24453. 3, // llvm.x86.sse2.min.sd
  24454. 3, // llvm.x86.sse2.movmsk.pd
  24455. 3, // llvm.x86.sse2.mul.sd
  24456. 3, // llvm.x86.sse2.packssdw.128
  24457. 3, // llvm.x86.sse2.packsswb.128
  24458. 3, // llvm.x86.sse2.packuswb.128
  24459. 3, // llvm.x86.sse2.padds.b
  24460. 3, // llvm.x86.sse2.padds.w
  24461. 3, // llvm.x86.sse2.paddus.b
  24462. 3, // llvm.x86.sse2.paddus.w
  24463. 3, // llvm.x86.sse2.pavg.b
  24464. 3, // llvm.x86.sse2.pavg.w
  24465. 3, // llvm.x86.sse2.pmadd.wd
  24466. 3, // llvm.x86.sse2.pmaxs.w
  24467. 3, // llvm.x86.sse2.pmaxu.b
  24468. 3, // llvm.x86.sse2.pmins.w
  24469. 3, // llvm.x86.sse2.pminu.b
  24470. 3, // llvm.x86.sse2.pmovmskb.128
  24471. 3, // llvm.x86.sse2.pmulh.w
  24472. 3, // llvm.x86.sse2.pmulhu.w
  24473. 3, // llvm.x86.sse2.pmulu.dq
  24474. 3, // llvm.x86.sse2.psad.bw
  24475. 3, // llvm.x86.sse2.psll.d
  24476. 3, // llvm.x86.sse2.psll.dq
  24477. 3, // llvm.x86.sse2.psll.dq.bs
  24478. 3, // llvm.x86.sse2.psll.q
  24479. 3, // llvm.x86.sse2.psll.w
  24480. 3, // llvm.x86.sse2.pslli.d
  24481. 3, // llvm.x86.sse2.pslli.q
  24482. 3, // llvm.x86.sse2.pslli.w
  24483. 3, // llvm.x86.sse2.psra.d
  24484. 3, // llvm.x86.sse2.psra.w
  24485. 3, // llvm.x86.sse2.psrai.d
  24486. 3, // llvm.x86.sse2.psrai.w
  24487. 3, // llvm.x86.sse2.psrl.d
  24488. 3, // llvm.x86.sse2.psrl.dq
  24489. 3, // llvm.x86.sse2.psrl.dq.bs
  24490. 3, // llvm.x86.sse2.psrl.q
  24491. 3, // llvm.x86.sse2.psrl.w
  24492. 3, // llvm.x86.sse2.psrli.d
  24493. 3, // llvm.x86.sse2.psrli.q
  24494. 3, // llvm.x86.sse2.psrli.w
  24495. 3, // llvm.x86.sse2.psubs.b
  24496. 3, // llvm.x86.sse2.psubs.w
  24497. 3, // llvm.x86.sse2.psubus.b
  24498. 3, // llvm.x86.sse2.psubus.w
  24499. 3, // llvm.x86.sse2.sqrt.pd
  24500. 3, // llvm.x86.sse2.sqrt.sd
  24501. 2, // llvm.x86.sse2.storel.dq
  24502. 2, // llvm.x86.sse2.storeu.dq
  24503. 2, // llvm.x86.sse2.storeu.pd
  24504. 3, // llvm.x86.sse2.sub.sd
  24505. 3, // llvm.x86.sse2.ucomieq.sd
  24506. 3, // llvm.x86.sse2.ucomige.sd
  24507. 3, // llvm.x86.sse2.ucomigt.sd
  24508. 3, // llvm.x86.sse2.ucomile.sd
  24509. 3, // llvm.x86.sse2.ucomilt.sd
  24510. 3, // llvm.x86.sse2.ucomineq.sd
  24511. 3, // llvm.x86.sse3.addsub.pd
  24512. 3, // llvm.x86.sse3.addsub.ps
  24513. 3, // llvm.x86.sse3.hadd.pd
  24514. 3, // llvm.x86.sse3.hadd.ps
  24515. 3, // llvm.x86.sse3.hsub.pd
  24516. 3, // llvm.x86.sse3.hsub.ps
  24517. 1, // llvm.x86.sse3.ldu.dq
  24518. 2, // llvm.x86.sse3.monitor
  24519. 2, // llvm.x86.sse3.mwait
  24520. 3, // llvm.x86.sse41.blendpd
  24521. 3, // llvm.x86.sse41.blendps
  24522. 3, // llvm.x86.sse41.blendvpd
  24523. 3, // llvm.x86.sse41.blendvps
  24524. 3, // llvm.x86.sse41.dppd
  24525. 3, // llvm.x86.sse41.dpps
  24526. 3, // llvm.x86.sse41.extractps
  24527. 3, // llvm.x86.sse41.insertps
  24528. 1, // llvm.x86.sse41.movntdqa
  24529. 3, // llvm.x86.sse41.mpsadbw
  24530. 3, // llvm.x86.sse41.packusdw
  24531. 3, // llvm.x86.sse41.pblendvb
  24532. 3, // llvm.x86.sse41.pblendw
  24533. 3, // llvm.x86.sse41.pextrb
  24534. 3, // llvm.x86.sse41.pextrd
  24535. 3, // llvm.x86.sse41.pextrq
  24536. 3, // llvm.x86.sse41.phminposuw
  24537. 3, // llvm.x86.sse41.pmaxsb
  24538. 3, // llvm.x86.sse41.pmaxsd
  24539. 3, // llvm.x86.sse41.pmaxud
  24540. 3, // llvm.x86.sse41.pmaxuw
  24541. 3, // llvm.x86.sse41.pminsb
  24542. 3, // llvm.x86.sse41.pminsd
  24543. 3, // llvm.x86.sse41.pminud
  24544. 3, // llvm.x86.sse41.pminuw
  24545. 3, // llvm.x86.sse41.pmovsxbd
  24546. 3, // llvm.x86.sse41.pmovsxbq
  24547. 3, // llvm.x86.sse41.pmovsxbw
  24548. 3, // llvm.x86.sse41.pmovsxdq
  24549. 3, // llvm.x86.sse41.pmovsxwd
  24550. 3, // llvm.x86.sse41.pmovsxwq
  24551. 3, // llvm.x86.sse41.pmovzxbd
  24552. 3, // llvm.x86.sse41.pmovzxbq
  24553. 3, // llvm.x86.sse41.pmovzxbw
  24554. 3, // llvm.x86.sse41.pmovzxdq
  24555. 3, // llvm.x86.sse41.pmovzxwd
  24556. 3, // llvm.x86.sse41.pmovzxwq
  24557. 3, // llvm.x86.sse41.pmuldq
  24558. 3, // llvm.x86.sse41.ptestc
  24559. 3, // llvm.x86.sse41.ptestnzc
  24560. 3, // llvm.x86.sse41.ptestz
  24561. 3, // llvm.x86.sse41.round.pd
  24562. 3, // llvm.x86.sse41.round.ps
  24563. 3, // llvm.x86.sse41.round.sd
  24564. 3, // llvm.x86.sse41.round.ss
  24565. 3, // llvm.x86.sse42.crc32.32.16
  24566. 3, // llvm.x86.sse42.crc32.32.32
  24567. 3, // llvm.x86.sse42.crc32.32.8
  24568. 3, // llvm.x86.sse42.crc32.64.64
  24569. 3, // llvm.x86.sse42.crc32.64.8
  24570. 3, // llvm.x86.sse42.pcmpestri128
  24571. 3, // llvm.x86.sse42.pcmpestria128
  24572. 3, // llvm.x86.sse42.pcmpestric128
  24573. 3, // llvm.x86.sse42.pcmpestrio128
  24574. 3, // llvm.x86.sse42.pcmpestris128
  24575. 3, // llvm.x86.sse42.pcmpestriz128
  24576. 3, // llvm.x86.sse42.pcmpestrm128
  24577. 3, // llvm.x86.sse42.pcmpistri128
  24578. 3, // llvm.x86.sse42.pcmpistria128
  24579. 3, // llvm.x86.sse42.pcmpistric128
  24580. 3, // llvm.x86.sse42.pcmpistrio128
  24581. 3, // llvm.x86.sse42.pcmpistris128
  24582. 3, // llvm.x86.sse42.pcmpistriz128
  24583. 3, // llvm.x86.sse42.pcmpistrm128
  24584. 3, // llvm.x86.sse4a.extrq
  24585. 3, // llvm.x86.sse4a.extrqi
  24586. 3, // llvm.x86.sse4a.insertq
  24587. 3, // llvm.x86.sse4a.insertqi
  24588. 2, // llvm.x86.sse4a.movnt.sd
  24589. 2, // llvm.x86.sse4a.movnt.ss
  24590. 3, // llvm.x86.sse.add.ss
  24591. 3, // llvm.x86.sse.cmp.ps
  24592. 3, // llvm.x86.sse.cmp.ss
  24593. 3, // llvm.x86.sse.comieq.ss
  24594. 3, // llvm.x86.sse.comige.ss
  24595. 3, // llvm.x86.sse.comigt.ss
  24596. 3, // llvm.x86.sse.comile.ss
  24597. 3, // llvm.x86.sse.comilt.ss
  24598. 3, // llvm.x86.sse.comineq.ss
  24599. 3, // llvm.x86.sse.cvtpd2pi
  24600. 3, // llvm.x86.sse.cvtpi2pd
  24601. 3, // llvm.x86.sse.cvtpi2ps
  24602. 3, // llvm.x86.sse.cvtps2pi
  24603. 3, // llvm.x86.sse.cvtsi2ss
  24604. 3, // llvm.x86.sse.cvtsi642ss
  24605. 3, // llvm.x86.sse.cvtss2si
  24606. 3, // llvm.x86.sse.cvtss2si64
  24607. 3, // llvm.x86.sse.cvttpd2pi
  24608. 3, // llvm.x86.sse.cvttps2pi
  24609. 3, // llvm.x86.sse.cvttss2si
  24610. 3, // llvm.x86.sse.cvttss2si64
  24611. 3, // llvm.x86.sse.div.ss
  24612. 2, // llvm.x86.sse.ldmxcsr
  24613. 3, // llvm.x86.sse.max.ps
  24614. 3, // llvm.x86.sse.max.ss
  24615. 3, // llvm.x86.sse.min.ps
  24616. 3, // llvm.x86.sse.min.ss
  24617. 3, // llvm.x86.sse.movmsk.ps
  24618. 3, // llvm.x86.sse.mul.ss
  24619. 3, // llvm.x86.sse.pshuf.w
  24620. 3, // llvm.x86.sse.rcp.ps
  24621. 3, // llvm.x86.sse.rcp.ss
  24622. 3, // llvm.x86.sse.rsqrt.ps
  24623. 3, // llvm.x86.sse.rsqrt.ss
  24624. 2, // llvm.x86.sse.sfence
  24625. 3, // llvm.x86.sse.sqrt.ps
  24626. 3, // llvm.x86.sse.sqrt.ss
  24627. 2, // llvm.x86.sse.stmxcsr
  24628. 2, // llvm.x86.sse.storeu.ps
  24629. 3, // llvm.x86.sse.sub.ss
  24630. 3, // llvm.x86.sse.ucomieq.ss
  24631. 3, // llvm.x86.sse.ucomige.ss
  24632. 3, // llvm.x86.sse.ucomigt.ss
  24633. 3, // llvm.x86.sse.ucomile.ss
  24634. 3, // llvm.x86.sse.ucomilt.ss
  24635. 3, // llvm.x86.sse.ucomineq.ss
  24636. 3, // llvm.x86.ssse3.pabs.b
  24637. 3, // llvm.x86.ssse3.pabs.b.128
  24638. 3, // llvm.x86.ssse3.pabs.d
  24639. 3, // llvm.x86.ssse3.pabs.d.128
  24640. 3, // llvm.x86.ssse3.pabs.w
  24641. 3, // llvm.x86.ssse3.pabs.w.128
  24642. 3, // llvm.x86.ssse3.phadd.d
  24643. 3, // llvm.x86.ssse3.phadd.d.128
  24644. 3, // llvm.x86.ssse3.phadd.sw
  24645. 3, // llvm.x86.ssse3.phadd.sw.128
  24646. 3, // llvm.x86.ssse3.phadd.w
  24647. 3, // llvm.x86.ssse3.phadd.w.128
  24648. 3, // llvm.x86.ssse3.phsub.d
  24649. 3, // llvm.x86.ssse3.phsub.d.128
  24650. 3, // llvm.x86.ssse3.phsub.sw
  24651. 3, // llvm.x86.ssse3.phsub.sw.128
  24652. 3, // llvm.x86.ssse3.phsub.w
  24653. 3, // llvm.x86.ssse3.phsub.w.128
  24654. 3, // llvm.x86.ssse3.pmadd.ub.sw
  24655. 3, // llvm.x86.ssse3.pmadd.ub.sw.128
  24656. 3, // llvm.x86.ssse3.pmul.hr.sw
  24657. 3, // llvm.x86.ssse3.pmul.hr.sw.128
  24658. 3, // llvm.x86.ssse3.pshuf.b
  24659. 3, // llvm.x86.ssse3.pshuf.b.128
  24660. 3, // llvm.x86.ssse3.psign.b
  24661. 3, // llvm.x86.ssse3.psign.b.128
  24662. 3, // llvm.x86.ssse3.psign.d
  24663. 3, // llvm.x86.ssse3.psign.d.128
  24664. 3, // llvm.x86.ssse3.psign.w
  24665. 3, // llvm.x86.ssse3.psign.w.128
  24666. 3, // llvm.x86.vcvtph2ps.128
  24667. 3, // llvm.x86.vcvtph2ps.256
  24668. 3, // llvm.x86.vcvtps2ph.128
  24669. 3, // llvm.x86.vcvtps2ph.256
  24670. 2, // llvm.x86.wrfsbase.32
  24671. 2, // llvm.x86.wrfsbase.64
  24672. 2, // llvm.x86.wrgsbase.32
  24673. 2, // llvm.x86.wrgsbase.64
  24674. 4, // llvm.x86.xabort
  24675. 2, // llvm.x86.xbegin
  24676. 2, // llvm.x86.xend
  24677. 3, // llvm.x86.xop.vfrcz.pd
  24678. 3, // llvm.x86.xop.vfrcz.pd.256
  24679. 3, // llvm.x86.xop.vfrcz.ps
  24680. 3, // llvm.x86.xop.vfrcz.ps.256
  24681. 3, // llvm.x86.xop.vfrcz.sd
  24682. 3, // llvm.x86.xop.vfrcz.ss
  24683. 3, // llvm.x86.xop.vpcmov
  24684. 3, // llvm.x86.xop.vpcmov.256
  24685. 3, // llvm.x86.xop.vpcomb
  24686. 3, // llvm.x86.xop.vpcomd
  24687. 3, // llvm.x86.xop.vpcomq
  24688. 3, // llvm.x86.xop.vpcomub
  24689. 3, // llvm.x86.xop.vpcomud
  24690. 3, // llvm.x86.xop.vpcomuq
  24691. 3, // llvm.x86.xop.vpcomuw
  24692. 3, // llvm.x86.xop.vpcomw
  24693. 3, // llvm.x86.xop.vpermil2pd
  24694. 3, // llvm.x86.xop.vpermil2pd.256
  24695. 3, // llvm.x86.xop.vpermil2ps
  24696. 3, // llvm.x86.xop.vpermil2ps.256
  24697. 3, // llvm.x86.xop.vphaddbd
  24698. 3, // llvm.x86.xop.vphaddbq
  24699. 3, // llvm.x86.xop.vphaddbw
  24700. 3, // llvm.x86.xop.vphadddq
  24701. 3, // llvm.x86.xop.vphaddubd
  24702. 3, // llvm.x86.xop.vphaddubq
  24703. 3, // llvm.x86.xop.vphaddubw
  24704. 3, // llvm.x86.xop.vphaddudq
  24705. 3, // llvm.x86.xop.vphadduwd
  24706. 3, // llvm.x86.xop.vphadduwq
  24707. 3, // llvm.x86.xop.vphaddwd
  24708. 3, // llvm.x86.xop.vphaddwq
  24709. 3, // llvm.x86.xop.vphsubbw
  24710. 3, // llvm.x86.xop.vphsubdq
  24711. 3, // llvm.x86.xop.vphsubwd
  24712. 3, // llvm.x86.xop.vpmacsdd
  24713. 3, // llvm.x86.xop.vpmacsdqh
  24714. 3, // llvm.x86.xop.vpmacsdql
  24715. 3, // llvm.x86.xop.vpmacssdd
  24716. 3, // llvm.x86.xop.vpmacssdqh
  24717. 3, // llvm.x86.xop.vpmacssdql
  24718. 3, // llvm.x86.xop.vpmacsswd
  24719. 3, // llvm.x86.xop.vpmacssww
  24720. 3, // llvm.x86.xop.vpmacswd
  24721. 3, // llvm.x86.xop.vpmacsww
  24722. 3, // llvm.x86.xop.vpmadcsswd
  24723. 3, // llvm.x86.xop.vpmadcswd
  24724. 3, // llvm.x86.xop.vpperm
  24725. 3, // llvm.x86.xop.vprotb
  24726. 3, // llvm.x86.xop.vprotbi
  24727. 3, // llvm.x86.xop.vprotd
  24728. 3, // llvm.x86.xop.vprotdi
  24729. 3, // llvm.x86.xop.vprotq
  24730. 3, // llvm.x86.xop.vprotqi
  24731. 3, // llvm.x86.xop.vprotw
  24732. 3, // llvm.x86.xop.vprotwi
  24733. 3, // llvm.x86.xop.vpshab
  24734. 3, // llvm.x86.xop.vpshad
  24735. 3, // llvm.x86.xop.vpshaq
  24736. 3, // llvm.x86.xop.vpshaw
  24737. 3, // llvm.x86.xop.vpshlb
  24738. 3, // llvm.x86.xop.vpshld
  24739. 3, // llvm.x86.xop.vpshlq
  24740. 3, // llvm.x86.xop.vpshlw
  24741. 2, // llvm.x86.xtest
  24742. 3, // llvm.xcore.bitrev
  24743. 2, // llvm.xcore.checkevent
  24744. 6, // llvm.xcore.chkct
  24745. 2, // llvm.xcore.clre
  24746. 2, // llvm.xcore.clrsr
  24747. 3, // llvm.xcore.crc32
  24748. 3, // llvm.xcore.crc8
  24749. 6, // llvm.xcore.eeu
  24750. 6, // llvm.xcore.endin
  24751. 6, // llvm.xcore.freer
  24752. 2, // llvm.xcore.geted
  24753. 2, // llvm.xcore.getet
  24754. 3, // llvm.xcore.getid
  24755. 2, // llvm.xcore.getps
  24756. 2, // llvm.xcore.getr
  24757. 6, // llvm.xcore.getst
  24758. 6, // llvm.xcore.getts
  24759. 6, // llvm.xcore.in
  24760. 6, // llvm.xcore.inct
  24761. 6, // llvm.xcore.initcp
  24762. 6, // llvm.xcore.initdp
  24763. 6, // llvm.xcore.initlr
  24764. 6, // llvm.xcore.initpc
  24765. 6, // llvm.xcore.initsp
  24766. 6, // llvm.xcore.inshr
  24767. 6, // llvm.xcore.int
  24768. 6, // llvm.xcore.mjoin
  24769. 6, // llvm.xcore.msync
  24770. 6, // llvm.xcore.out
  24771. 6, // llvm.xcore.outct
  24772. 6, // llvm.xcore.outshr
  24773. 6, // llvm.xcore.outt
  24774. 6, // llvm.xcore.peek
  24775. 6, // llvm.xcore.setc
  24776. 9, // llvm.xcore.setclk
  24777. 6, // llvm.xcore.setd
  24778. 6, // llvm.xcore.setev
  24779. 2, // llvm.xcore.setps
  24780. 6, // llvm.xcore.setpsc
  24781. 6, // llvm.xcore.setpt
  24782. 9, // llvm.xcore.setrdy
  24783. 2, // llvm.xcore.setsr
  24784. 6, // llvm.xcore.settw
  24785. 6, // llvm.xcore.setv
  24786. 3, // llvm.xcore.sext
  24787. 2, // llvm.xcore.ssync
  24788. 6, // llvm.xcore.syncr
  24789. 6, // llvm.xcore.testct
  24790. 6, // llvm.xcore.testwct
  24791. 1, // llvm.xcore.waitevent
  24792. 3, // llvm.xcore.zext
  24793. };
  24794. AttributeSet AS[3];
  24795. unsigned NumAttrs = 0;
  24796. if (id != 0) {
  24797. SmallVector<Attribute::AttrKind, 8> AttrVec;
  24798. switch(IntrinsicsToAttributesMap[id - 1]) {
  24799. default: llvm_unreachable("Invalid attribute number");
  24800. case 3:
  24801. AttrVec.clear();
  24802. AttrVec.push_back(Attribute::NoUnwind);
  24803. AttrVec.push_back(Attribute::ReadNone);
  24804. AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24805. NumAttrs = 1;
  24806. break;
  24807. case 11:
  24808. AttrVec.clear();
  24809. AttrVec.push_back(Attribute::NoCapture);
  24810. AS[0] = AttributeSet::get(C, 1, AttrVec);
  24811. AttrVec.clear();
  24812. AttrVec.push_back(Attribute::NoUnwind);
  24813. AttrVec.push_back(Attribute::ReadNone);
  24814. AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24815. NumAttrs = 2;
  24816. break;
  24817. case 1:
  24818. AttrVec.clear();
  24819. AttrVec.push_back(Attribute::NoUnwind);
  24820. AttrVec.push_back(Attribute::ReadOnly);
  24821. AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24822. NumAttrs = 1;
  24823. break;
  24824. case 10:
  24825. AttrVec.clear();
  24826. AttrVec.push_back(Attribute::NoCapture);
  24827. AS[0] = AttributeSet::get(C, 1, AttrVec);
  24828. AttrVec.clear();
  24829. AttrVec.push_back(Attribute::NoUnwind);
  24830. AttrVec.push_back(Attribute::ReadOnly);
  24831. AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24832. NumAttrs = 2;
  24833. break;
  24834. case 2:
  24835. AttrVec.clear();
  24836. AttrVec.push_back(Attribute::NoUnwind);
  24837. AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24838. NumAttrs = 1;
  24839. break;
  24840. case 6:
  24841. AttrVec.clear();
  24842. AttrVec.push_back(Attribute::NoCapture);
  24843. AS[0] = AttributeSet::get(C, 1, AttrVec);
  24844. AttrVec.clear();
  24845. AttrVec.push_back(Attribute::NoUnwind);
  24846. AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24847. NumAttrs = 2;
  24848. break;
  24849. case 9:
  24850. AttrVec.clear();
  24851. AttrVec.push_back(Attribute::NoCapture);
  24852. AS[0] = AttributeSet::get(C, 1, AttrVec);
  24853. AttrVec.clear();
  24854. AttrVec.push_back(Attribute::NoCapture);
  24855. AS[1] = AttributeSet::get(C, 2, AttrVec);
  24856. AttrVec.clear();
  24857. AttrVec.push_back(Attribute::NoUnwind);
  24858. AS[2] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24859. NumAttrs = 3;
  24860. break;
  24861. case 8:
  24862. AttrVec.clear();
  24863. AttrVec.push_back(Attribute::NoCapture);
  24864. AS[0] = AttributeSet::get(C, 2, AttrVec);
  24865. AttrVec.clear();
  24866. AttrVec.push_back(Attribute::NoUnwind);
  24867. AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24868. NumAttrs = 2;
  24869. break;
  24870. case 5:
  24871. AttrVec.clear();
  24872. AttrVec.push_back(Attribute::NoCapture);
  24873. AS[0] = AttributeSet::get(C, 2, AttrVec);
  24874. AttrVec.clear();
  24875. AttrVec.push_back(Attribute::NoCapture);
  24876. AS[1] = AttributeSet::get(C, 3, AttrVec);
  24877. AttrVec.clear();
  24878. AttrVec.push_back(Attribute::NoUnwind);
  24879. AS[2] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24880. NumAttrs = 3;
  24881. break;
  24882. case 7:
  24883. AttrVec.clear();
  24884. AttrVec.push_back(Attribute::NoCapture);
  24885. AS[0] = AttributeSet::get(C, 3, AttrVec);
  24886. AttrVec.clear();
  24887. AttrVec.push_back(Attribute::NoUnwind);
  24888. AS[1] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24889. NumAttrs = 2;
  24890. break;
  24891. case 4:
  24892. AttrVec.clear();
  24893. AttrVec.push_back(Attribute::NoUnwind);
  24894. AttrVec.push_back(Attribute::NoReturn);
  24895. AS[0] = AttributeSet::get(C, AttributeSet::FunctionIndex, AttrVec);
  24896. NumAttrs = 1;
  24897. break;
  24898. }
  24899. }
  24900. return AttributeSet::get(C, ArrayRef<AttributeSet>(AS, NumAttrs));
  24901. }
  24902. #endif // GET_INTRINSIC_ATTRIBUTES
  24903. // Determine intrinsic alias analysis mod/ref behavior.
  24904. #ifdef GET_INTRINSIC_MODREF_BEHAVIOR
  24905. assert(iid <= Intrinsic::xcore_zext && "Unknown intrinsic.");
  24906. static const uint8_t IntrinsicModRefBehavior[] = {
  24907. /* invalid */ UnknownModRefBehavior,
  24908. /* adjust_trampoline */ OnlyReadsArgumentPointees,
  24909. /* annotation */ UnknownModRefBehavior,
  24910. /* arm_cdp */ UnknownModRefBehavior,
  24911. /* arm_cdp2 */ UnknownModRefBehavior,
  24912. /* arm_get_fpscr */ DoesNotAccessMemory,
  24913. /* arm_ldrexd */ OnlyReadsArgumentPointees,
  24914. /* arm_mcr */ UnknownModRefBehavior,
  24915. /* arm_mcr2 */ UnknownModRefBehavior,
  24916. /* arm_mcrr */ UnknownModRefBehavior,
  24917. /* arm_mcrr2 */ UnknownModRefBehavior,
  24918. /* arm_mrc */ UnknownModRefBehavior,
  24919. /* arm_mrc2 */ UnknownModRefBehavior,
  24920. /* arm_neon_vabds */ DoesNotAccessMemory,
  24921. /* arm_neon_vabdu */ DoesNotAccessMemory,
  24922. /* arm_neon_vabs */ DoesNotAccessMemory,
  24923. /* arm_neon_vacged */ DoesNotAccessMemory,
  24924. /* arm_neon_vacgeq */ DoesNotAccessMemory,
  24925. /* arm_neon_vacgtd */ DoesNotAccessMemory,
  24926. /* arm_neon_vacgtq */ DoesNotAccessMemory,
  24927. /* arm_neon_vaddhn */ DoesNotAccessMemory,
  24928. /* arm_neon_vbsl */ DoesNotAccessMemory,
  24929. /* arm_neon_vcls */ DoesNotAccessMemory,
  24930. /* arm_neon_vclz */ DoesNotAccessMemory,
  24931. /* arm_neon_vcnt */ DoesNotAccessMemory,
  24932. /* arm_neon_vcvtfp2fxs */ DoesNotAccessMemory,
  24933. /* arm_neon_vcvtfp2fxu */ DoesNotAccessMemory,
  24934. /* arm_neon_vcvtfp2hf */ DoesNotAccessMemory,
  24935. /* arm_neon_vcvtfxs2fp */ DoesNotAccessMemory,
  24936. /* arm_neon_vcvtfxu2fp */ DoesNotAccessMemory,
  24937. /* arm_neon_vcvthf2fp */ DoesNotAccessMemory,
  24938. /* arm_neon_vhadds */ DoesNotAccessMemory,
  24939. /* arm_neon_vhaddu */ DoesNotAccessMemory,
  24940. /* arm_neon_vhsubs */ DoesNotAccessMemory,
  24941. /* arm_neon_vhsubu */ DoesNotAccessMemory,
  24942. /* arm_neon_vld1 */ OnlyReadsArgumentPointees,
  24943. /* arm_neon_vld2 */ OnlyReadsArgumentPointees,
  24944. /* arm_neon_vld2lane */ OnlyReadsArgumentPointees,
  24945. /* arm_neon_vld3 */ OnlyReadsArgumentPointees,
  24946. /* arm_neon_vld3lane */ OnlyReadsArgumentPointees,
  24947. /* arm_neon_vld4 */ OnlyReadsArgumentPointees,
  24948. /* arm_neon_vld4lane */ OnlyReadsArgumentPointees,
  24949. /* arm_neon_vmaxs */ DoesNotAccessMemory,
  24950. /* arm_neon_vmaxu */ DoesNotAccessMemory,
  24951. /* arm_neon_vmins */ DoesNotAccessMemory,
  24952. /* arm_neon_vminu */ DoesNotAccessMemory,
  24953. /* arm_neon_vmullp */ DoesNotAccessMemory,
  24954. /* arm_neon_vmulls */ DoesNotAccessMemory,
  24955. /* arm_neon_vmullu */ DoesNotAccessMemory,
  24956. /* arm_neon_vmulp */ DoesNotAccessMemory,
  24957. /* arm_neon_vpadals */ DoesNotAccessMemory,
  24958. /* arm_neon_vpadalu */ DoesNotAccessMemory,
  24959. /* arm_neon_vpadd */ DoesNotAccessMemory,
  24960. /* arm_neon_vpaddls */ DoesNotAccessMemory,
  24961. /* arm_neon_vpaddlu */ DoesNotAccessMemory,
  24962. /* arm_neon_vpmaxs */ DoesNotAccessMemory,
  24963. /* arm_neon_vpmaxu */ DoesNotAccessMemory,
  24964. /* arm_neon_vpmins */ DoesNotAccessMemory,
  24965. /* arm_neon_vpminu */ DoesNotAccessMemory,
  24966. /* arm_neon_vqabs */ DoesNotAccessMemory,
  24967. /* arm_neon_vqadds */ DoesNotAccessMemory,
  24968. /* arm_neon_vqaddu */ DoesNotAccessMemory,
  24969. /* arm_neon_vqdmlal */ DoesNotAccessMemory,
  24970. /* arm_neon_vqdmlsl */ DoesNotAccessMemory,
  24971. /* arm_neon_vqdmulh */ DoesNotAccessMemory,
  24972. /* arm_neon_vqdmull */ DoesNotAccessMemory,
  24973. /* arm_neon_vqmovns */ DoesNotAccessMemory,
  24974. /* arm_neon_vqmovnsu */ DoesNotAccessMemory,
  24975. /* arm_neon_vqmovnu */ DoesNotAccessMemory,
  24976. /* arm_neon_vqneg */ DoesNotAccessMemory,
  24977. /* arm_neon_vqrdmulh */ DoesNotAccessMemory,
  24978. /* arm_neon_vqrshiftns */ DoesNotAccessMemory,
  24979. /* arm_neon_vqrshiftnsu */ DoesNotAccessMemory,
  24980. /* arm_neon_vqrshiftnu */ DoesNotAccessMemory,
  24981. /* arm_neon_vqrshifts */ DoesNotAccessMemory,
  24982. /* arm_neon_vqrshiftu */ DoesNotAccessMemory,
  24983. /* arm_neon_vqshiftns */ DoesNotAccessMemory,
  24984. /* arm_neon_vqshiftnsu */ DoesNotAccessMemory,
  24985. /* arm_neon_vqshiftnu */ DoesNotAccessMemory,
  24986. /* arm_neon_vqshifts */ DoesNotAccessMemory,
  24987. /* arm_neon_vqshiftsu */ DoesNotAccessMemory,
  24988. /* arm_neon_vqshiftu */ DoesNotAccessMemory,
  24989. /* arm_neon_vqsubs */ DoesNotAccessMemory,
  24990. /* arm_neon_vqsubu */ DoesNotAccessMemory,
  24991. /* arm_neon_vraddhn */ DoesNotAccessMemory,
  24992. /* arm_neon_vrecpe */ DoesNotAccessMemory,
  24993. /* arm_neon_vrecps */ DoesNotAccessMemory,
  24994. /* arm_neon_vrhadds */ DoesNotAccessMemory,
  24995. /* arm_neon_vrhaddu */ DoesNotAccessMemory,
  24996. /* arm_neon_vrshiftn */ DoesNotAccessMemory,
  24997. /* arm_neon_vrshifts */ DoesNotAccessMemory,
  24998. /* arm_neon_vrshiftu */ DoesNotAccessMemory,
  24999. /* arm_neon_vrsqrte */ DoesNotAccessMemory,
  25000. /* arm_neon_vrsqrts */ DoesNotAccessMemory,
  25001. /* arm_neon_vrsubhn */ DoesNotAccessMemory,
  25002. /* arm_neon_vshiftins */ DoesNotAccessMemory,
  25003. /* arm_neon_vshiftls */ DoesNotAccessMemory,
  25004. /* arm_neon_vshiftlu */ DoesNotAccessMemory,
  25005. /* arm_neon_vshiftn */ DoesNotAccessMemory,
  25006. /* arm_neon_vshifts */ DoesNotAccessMemory,
  25007. /* arm_neon_vshiftu */ DoesNotAccessMemory,
  25008. /* arm_neon_vst1 */ OnlyAccessesArgumentPointees,
  25009. /* arm_neon_vst2 */ OnlyAccessesArgumentPointees,
  25010. /* arm_neon_vst2lane */ OnlyAccessesArgumentPointees,
  25011. /* arm_neon_vst3 */ OnlyAccessesArgumentPointees,
  25012. /* arm_neon_vst3lane */ OnlyAccessesArgumentPointees,
  25013. /* arm_neon_vst4 */ OnlyAccessesArgumentPointees,
  25014. /* arm_neon_vst4lane */ OnlyAccessesArgumentPointees,
  25015. /* arm_neon_vsubhn */ DoesNotAccessMemory,
  25016. /* arm_neon_vtbl1 */ DoesNotAccessMemory,
  25017. /* arm_neon_vtbl2 */ DoesNotAccessMemory,
  25018. /* arm_neon_vtbl3 */ DoesNotAccessMemory,
  25019. /* arm_neon_vtbl4 */ DoesNotAccessMemory,
  25020. /* arm_neon_vtbx1 */ DoesNotAccessMemory,
  25021. /* arm_neon_vtbx2 */ DoesNotAccessMemory,
  25022. /* arm_neon_vtbx3 */ DoesNotAccessMemory,
  25023. /* arm_neon_vtbx4 */ DoesNotAccessMemory,
  25024. /* arm_qadd */ DoesNotAccessMemory,
  25025. /* arm_qsub */ DoesNotAccessMemory,
  25026. /* arm_set_fpscr */ UnknownModRefBehavior,
  25027. /* arm_ssat */ DoesNotAccessMemory,
  25028. /* arm_strexd */ OnlyAccessesArgumentPointees,
  25029. /* arm_thread_pointer */ DoesNotAccessMemory,
  25030. /* arm_usat */ DoesNotAccessMemory,
  25031. /* arm_vcvtr */ DoesNotAccessMemory,
  25032. /* arm_vcvtru */ DoesNotAccessMemory,
  25033. /* bswap */ DoesNotAccessMemory,
  25034. /* ceil */ OnlyReadsMemory,
  25035. /* convert_from_fp16 */ DoesNotAccessMemory,
  25036. /* convert_to_fp16 */ DoesNotAccessMemory,
  25037. /* convertff */ UnknownModRefBehavior,
  25038. /* convertfsi */ UnknownModRefBehavior,
  25039. /* convertfui */ UnknownModRefBehavior,
  25040. /* convertsif */ UnknownModRefBehavior,
  25041. /* convertss */ UnknownModRefBehavior,
  25042. /* convertsu */ UnknownModRefBehavior,
  25043. /* convertuif */ UnknownModRefBehavior,
  25044. /* convertus */ UnknownModRefBehavior,
  25045. /* convertuu */ UnknownModRefBehavior,
  25046. /* cos */ OnlyReadsMemory,
  25047. /* ctlz */ DoesNotAccessMemory,
  25048. /* ctpop */ DoesNotAccessMemory,
  25049. /* cttz */ DoesNotAccessMemory,
  25050. /* cuda_syncthreads */ UnknownModRefBehavior,
  25051. /* dbg_declare */ DoesNotAccessMemory,
  25052. /* dbg_value */ DoesNotAccessMemory,
  25053. /* debugtrap */ UnknownModRefBehavior,
  25054. /* donothing */ DoesNotAccessMemory,
  25055. /* eh_dwarf_cfa */ UnknownModRefBehavior,
  25056. /* eh_return_i32 */ UnknownModRefBehavior,
  25057. /* eh_return_i64 */ UnknownModRefBehavior,
  25058. /* eh_sjlj_callsite */ DoesNotAccessMemory,
  25059. /* eh_sjlj_functioncontext */ UnknownModRefBehavior,
  25060. /* eh_sjlj_longjmp */ UnknownModRefBehavior,
  25061. /* eh_sjlj_lsda */ DoesNotAccessMemory,
  25062. /* eh_sjlj_setjmp */ UnknownModRefBehavior,
  25063. /* eh_typeid_for */ DoesNotAccessMemory,
  25064. /* eh_unwind_init */ UnknownModRefBehavior,
  25065. /* exp */ OnlyReadsMemory,
  25066. /* exp2 */ OnlyReadsMemory,
  25067. /* expect */ DoesNotAccessMemory,
  25068. /* fabs */ OnlyReadsMemory,
  25069. /* floor */ OnlyReadsMemory,
  25070. /* flt_rounds */ UnknownModRefBehavior,
  25071. /* fma */ DoesNotAccessMemory,
  25072. /* fmuladd */ DoesNotAccessMemory,
  25073. /* frameaddress */ DoesNotAccessMemory,
  25074. /* gcread */ OnlyReadsArgumentPointees,
  25075. /* gcroot */ UnknownModRefBehavior,
  25076. /* gcwrite */ OnlyAccessesArgumentPointees,
  25077. /* hexagon_A2_abs */ DoesNotAccessMemory,
  25078. /* hexagon_A2_absp */ DoesNotAccessMemory,
  25079. /* hexagon_A2_abssat */ DoesNotAccessMemory,
  25080. /* hexagon_A2_add */ DoesNotAccessMemory,
  25081. /* hexagon_A2_addh_h16_hh */ DoesNotAccessMemory,
  25082. /* hexagon_A2_addh_h16_hl */ DoesNotAccessMemory,
  25083. /* hexagon_A2_addh_h16_lh */ DoesNotAccessMemory,
  25084. /* hexagon_A2_addh_h16_ll */ DoesNotAccessMemory,
  25085. /* hexagon_A2_addh_h16_sat_hh */ DoesNotAccessMemory,
  25086. /* hexagon_A2_addh_h16_sat_hl */ DoesNotAccessMemory,
  25087. /* hexagon_A2_addh_h16_sat_lh */ DoesNotAccessMemory,
  25088. /* hexagon_A2_addh_h16_sat_ll */ DoesNotAccessMemory,
  25089. /* hexagon_A2_addh_l16_hl */ DoesNotAccessMemory,
  25090. /* hexagon_A2_addh_l16_ll */ DoesNotAccessMemory,
  25091. /* hexagon_A2_addh_l16_sat_hl */ DoesNotAccessMemory,
  25092. /* hexagon_A2_addh_l16_sat_ll */ DoesNotAccessMemory,
  25093. /* hexagon_A2_addi */ DoesNotAccessMemory,
  25094. /* hexagon_A2_addp */ DoesNotAccessMemory,
  25095. /* hexagon_A2_addpsat */ DoesNotAccessMemory,
  25096. /* hexagon_A2_addsat */ DoesNotAccessMemory,
  25097. /* hexagon_A2_addsp */ DoesNotAccessMemory,
  25098. /* hexagon_A2_and */ DoesNotAccessMemory,
  25099. /* hexagon_A2_andir */ DoesNotAccessMemory,
  25100. /* hexagon_A2_andp */ DoesNotAccessMemory,
  25101. /* hexagon_A2_aslh */ DoesNotAccessMemory,
  25102. /* hexagon_A2_asrh */ DoesNotAccessMemory,
  25103. /* hexagon_A2_combine_hh */ DoesNotAccessMemory,
  25104. /* hexagon_A2_combine_hl */ DoesNotAccessMemory,
  25105. /* hexagon_A2_combine_lh */ DoesNotAccessMemory,
  25106. /* hexagon_A2_combine_ll */ DoesNotAccessMemory,
  25107. /* hexagon_A2_combineii */ DoesNotAccessMemory,
  25108. /* hexagon_A2_combinew */ DoesNotAccessMemory,
  25109. /* hexagon_A2_max */ DoesNotAccessMemory,
  25110. /* hexagon_A2_maxp */ DoesNotAccessMemory,
  25111. /* hexagon_A2_maxu */ DoesNotAccessMemory,
  25112. /* hexagon_A2_maxup */ DoesNotAccessMemory,
  25113. /* hexagon_A2_min */ DoesNotAccessMemory,
  25114. /* hexagon_A2_minp */ DoesNotAccessMemory,
  25115. /* hexagon_A2_minu */ DoesNotAccessMemory,
  25116. /* hexagon_A2_minup */ DoesNotAccessMemory,
  25117. /* hexagon_A2_neg */ DoesNotAccessMemory,
  25118. /* hexagon_A2_negp */ DoesNotAccessMemory,
  25119. /* hexagon_A2_negsat */ DoesNotAccessMemory,
  25120. /* hexagon_A2_not */ DoesNotAccessMemory,
  25121. /* hexagon_A2_notp */ DoesNotAccessMemory,
  25122. /* hexagon_A2_or */ DoesNotAccessMemory,
  25123. /* hexagon_A2_orir */ DoesNotAccessMemory,
  25124. /* hexagon_A2_orp */ DoesNotAccessMemory,
  25125. /* hexagon_A2_roundsat */ DoesNotAccessMemory,
  25126. /* hexagon_A2_sat */ DoesNotAccessMemory,
  25127. /* hexagon_A2_satb */ DoesNotAccessMemory,
  25128. /* hexagon_A2_sath */ DoesNotAccessMemory,
  25129. /* hexagon_A2_satub */ DoesNotAccessMemory,
  25130. /* hexagon_A2_satuh */ DoesNotAccessMemory,
  25131. /* hexagon_A2_sub */ DoesNotAccessMemory,
  25132. /* hexagon_A2_subh_h16_hh */ DoesNotAccessMemory,
  25133. /* hexagon_A2_subh_h16_hl */ DoesNotAccessMemory,
  25134. /* hexagon_A2_subh_h16_lh */ DoesNotAccessMemory,
  25135. /* hexagon_A2_subh_h16_ll */ DoesNotAccessMemory,
  25136. /* hexagon_A2_subh_h16_sat_hh */ DoesNotAccessMemory,
  25137. /* hexagon_A2_subh_h16_sat_hl */ DoesNotAccessMemory,
  25138. /* hexagon_A2_subh_h16_sat_lh */ DoesNotAccessMemory,
  25139. /* hexagon_A2_subh_h16_sat_ll */ DoesNotAccessMemory,
  25140. /* hexagon_A2_subh_l16_hl */ DoesNotAccessMemory,
  25141. /* hexagon_A2_subh_l16_ll */ DoesNotAccessMemory,
  25142. /* hexagon_A2_subh_l16_sat_hl */ DoesNotAccessMemory,
  25143. /* hexagon_A2_subh_l16_sat_ll */ DoesNotAccessMemory,
  25144. /* hexagon_A2_subp */ DoesNotAccessMemory,
  25145. /* hexagon_A2_subri */ DoesNotAccessMemory,
  25146. /* hexagon_A2_subsat */ DoesNotAccessMemory,
  25147. /* hexagon_A2_svaddh */ DoesNotAccessMemory,
  25148. /* hexagon_A2_svaddhs */ DoesNotAccessMemory,
  25149. /* hexagon_A2_svadduhs */ DoesNotAccessMemory,
  25150. /* hexagon_A2_svavgh */ DoesNotAccessMemory,
  25151. /* hexagon_A2_svavghs */ DoesNotAccessMemory,
  25152. /* hexagon_A2_svnavgh */ DoesNotAccessMemory,
  25153. /* hexagon_A2_svsubh */ DoesNotAccessMemory,
  25154. /* hexagon_A2_svsubhs */ DoesNotAccessMemory,
  25155. /* hexagon_A2_svsubuhs */ DoesNotAccessMemory,
  25156. /* hexagon_A2_swiz */ DoesNotAccessMemory,
  25157. /* hexagon_A2_sxtb */ DoesNotAccessMemory,
  25158. /* hexagon_A2_sxth */ DoesNotAccessMemory,
  25159. /* hexagon_A2_sxtw */ DoesNotAccessMemory,
  25160. /* hexagon_A2_tfr */ DoesNotAccessMemory,
  25161. /* hexagon_A2_tfrih */ DoesNotAccessMemory,
  25162. /* hexagon_A2_tfril */ DoesNotAccessMemory,
  25163. /* hexagon_A2_tfrp */ DoesNotAccessMemory,
  25164. /* hexagon_A2_tfrpi */ DoesNotAccessMemory,
  25165. /* hexagon_A2_tfrsi */ DoesNotAccessMemory,
  25166. /* hexagon_A2_vabsh */ DoesNotAccessMemory,
  25167. /* hexagon_A2_vabshsat */ DoesNotAccessMemory,
  25168. /* hexagon_A2_vabsw */ DoesNotAccessMemory,
  25169. /* hexagon_A2_vabswsat */ DoesNotAccessMemory,
  25170. /* hexagon_A2_vaddb_map */ DoesNotAccessMemory,
  25171. /* hexagon_A2_vaddh */ DoesNotAccessMemory,
  25172. /* hexagon_A2_vaddhs */ DoesNotAccessMemory,
  25173. /* hexagon_A2_vaddub */ DoesNotAccessMemory,
  25174. /* hexagon_A2_vaddubs */ DoesNotAccessMemory,
  25175. /* hexagon_A2_vadduhs */ DoesNotAccessMemory,
  25176. /* hexagon_A2_vaddw */ DoesNotAccessMemory,
  25177. /* hexagon_A2_vaddws */ DoesNotAccessMemory,
  25178. /* hexagon_A2_vavgh */ DoesNotAccessMemory,
  25179. /* hexagon_A2_vavghcr */ DoesNotAccessMemory,
  25180. /* hexagon_A2_vavghr */ DoesNotAccessMemory,
  25181. /* hexagon_A2_vavgub */ DoesNotAccessMemory,
  25182. /* hexagon_A2_vavgubr */ DoesNotAccessMemory,
  25183. /* hexagon_A2_vavguh */ DoesNotAccessMemory,
  25184. /* hexagon_A2_vavguhr */ DoesNotAccessMemory,
  25185. /* hexagon_A2_vavguw */ DoesNotAccessMemory,
  25186. /* hexagon_A2_vavguwr */ DoesNotAccessMemory,
  25187. /* hexagon_A2_vavgw */ DoesNotAccessMemory,
  25188. /* hexagon_A2_vavgwcr */ DoesNotAccessMemory,
  25189. /* hexagon_A2_vavgwr */ DoesNotAccessMemory,
  25190. /* hexagon_A2_vcmpbeq */ DoesNotAccessMemory,
  25191. /* hexagon_A2_vcmpbgtu */ DoesNotAccessMemory,
  25192. /* hexagon_A2_vcmpheq */ DoesNotAccessMemory,
  25193. /* hexagon_A2_vcmphgt */ DoesNotAccessMemory,
  25194. /* hexagon_A2_vcmphgtu */ DoesNotAccessMemory,
  25195. /* hexagon_A2_vcmpweq */ DoesNotAccessMemory,
  25196. /* hexagon_A2_vcmpwgt */ DoesNotAccessMemory,
  25197. /* hexagon_A2_vcmpwgtu */ DoesNotAccessMemory,
  25198. /* hexagon_A2_vconj */ DoesNotAccessMemory,
  25199. /* hexagon_A2_vmaxb */ DoesNotAccessMemory,
  25200. /* hexagon_A2_vmaxh */ DoesNotAccessMemory,
  25201. /* hexagon_A2_vmaxub */ DoesNotAccessMemory,
  25202. /* hexagon_A2_vmaxuh */ DoesNotAccessMemory,
  25203. /* hexagon_A2_vmaxuw */ DoesNotAccessMemory,
  25204. /* hexagon_A2_vmaxw */ DoesNotAccessMemory,
  25205. /* hexagon_A2_vminb */ DoesNotAccessMemory,
  25206. /* hexagon_A2_vminh */ DoesNotAccessMemory,
  25207. /* hexagon_A2_vminub */ DoesNotAccessMemory,
  25208. /* hexagon_A2_vminuh */ DoesNotAccessMemory,
  25209. /* hexagon_A2_vminuw */ DoesNotAccessMemory,
  25210. /* hexagon_A2_vminw */ DoesNotAccessMemory,
  25211. /* hexagon_A2_vnavgh */ DoesNotAccessMemory,
  25212. /* hexagon_A2_vnavghcr */ DoesNotAccessMemory,
  25213. /* hexagon_A2_vnavghr */ DoesNotAccessMemory,
  25214. /* hexagon_A2_vnavgw */ DoesNotAccessMemory,
  25215. /* hexagon_A2_vnavgwcr */ DoesNotAccessMemory,
  25216. /* hexagon_A2_vnavgwr */ DoesNotAccessMemory,
  25217. /* hexagon_A2_vraddub */ DoesNotAccessMemory,
  25218. /* hexagon_A2_vraddub_acc */ DoesNotAccessMemory,
  25219. /* hexagon_A2_vrsadub */ DoesNotAccessMemory,
  25220. /* hexagon_A2_vrsadub_acc */ DoesNotAccessMemory,
  25221. /* hexagon_A2_vsubb_map */ DoesNotAccessMemory,
  25222. /* hexagon_A2_vsubh */ DoesNotAccessMemory,
  25223. /* hexagon_A2_vsubhs */ DoesNotAccessMemory,
  25224. /* hexagon_A2_vsubub */ DoesNotAccessMemory,
  25225. /* hexagon_A2_vsububs */ DoesNotAccessMemory,
  25226. /* hexagon_A2_vsubuhs */ DoesNotAccessMemory,
  25227. /* hexagon_A2_vsubw */ DoesNotAccessMemory,
  25228. /* hexagon_A2_vsubws */ DoesNotAccessMemory,
  25229. /* hexagon_A2_xor */ DoesNotAccessMemory,
  25230. /* hexagon_A2_xorp */ DoesNotAccessMemory,
  25231. /* hexagon_A2_zxtb */ DoesNotAccessMemory,
  25232. /* hexagon_A2_zxth */ DoesNotAccessMemory,
  25233. /* hexagon_A4_andn */ DoesNotAccessMemory,
  25234. /* hexagon_A4_andnp */ DoesNotAccessMemory,
  25235. /* hexagon_A4_bitsplit */ DoesNotAccessMemory,
  25236. /* hexagon_A4_bitspliti */ DoesNotAccessMemory,
  25237. /* hexagon_A4_boundscheck */ DoesNotAccessMemory,
  25238. /* hexagon_A4_cmpbeq */ DoesNotAccessMemory,
  25239. /* hexagon_A4_cmpbeqi */ DoesNotAccessMemory,
  25240. /* hexagon_A4_cmpbgt */ DoesNotAccessMemory,
  25241. /* hexagon_A4_cmpbgti */ DoesNotAccessMemory,
  25242. /* hexagon_A4_cmpbgtu */ DoesNotAccessMemory,
  25243. /* hexagon_A4_cmpbgtui */ DoesNotAccessMemory,
  25244. /* hexagon_A4_cmpheq */ DoesNotAccessMemory,
  25245. /* hexagon_A4_cmpheqi */ DoesNotAccessMemory,
  25246. /* hexagon_A4_cmphgt */ DoesNotAccessMemory,
  25247. /* hexagon_A4_cmphgti */ DoesNotAccessMemory,
  25248. /* hexagon_A4_cmphgtu */ DoesNotAccessMemory,
  25249. /* hexagon_A4_cmphgtui */ DoesNotAccessMemory,
  25250. /* hexagon_A4_combineir */ DoesNotAccessMemory,
  25251. /* hexagon_A4_combineri */ DoesNotAccessMemory,
  25252. /* hexagon_A4_cround_ri */ DoesNotAccessMemory,
  25253. /* hexagon_A4_cround_rr */ DoesNotAccessMemory,
  25254. /* hexagon_A4_modwrapu */ DoesNotAccessMemory,
  25255. /* hexagon_A4_orn */ DoesNotAccessMemory,
  25256. /* hexagon_A4_ornp */ DoesNotAccessMemory,
  25257. /* hexagon_A4_rcmpeq */ DoesNotAccessMemory,
  25258. /* hexagon_A4_rcmpeqi */ DoesNotAccessMemory,
  25259. /* hexagon_A4_rcmpneq */ DoesNotAccessMemory,
  25260. /* hexagon_A4_rcmpneqi */ DoesNotAccessMemory,
  25261. /* hexagon_A4_round_ri */ DoesNotAccessMemory,
  25262. /* hexagon_A4_round_ri_sat */ DoesNotAccessMemory,
  25263. /* hexagon_A4_round_rr */ DoesNotAccessMemory,
  25264. /* hexagon_A4_round_rr_sat */ DoesNotAccessMemory,
  25265. /* hexagon_A4_tlbmatch */ DoesNotAccessMemory,
  25266. /* hexagon_A4_vcmpbeq_any */ DoesNotAccessMemory,
  25267. /* hexagon_A4_vcmpbeqi */ DoesNotAccessMemory,
  25268. /* hexagon_A4_vcmpbgt */ DoesNotAccessMemory,
  25269. /* hexagon_A4_vcmpbgti */ DoesNotAccessMemory,
  25270. /* hexagon_A4_vcmpbgtui */ DoesNotAccessMemory,
  25271. /* hexagon_A4_vcmpheqi */ DoesNotAccessMemory,
  25272. /* hexagon_A4_vcmphgti */ DoesNotAccessMemory,
  25273. /* hexagon_A4_vcmphgtui */ DoesNotAccessMemory,
  25274. /* hexagon_A4_vcmpweqi */ DoesNotAccessMemory,
  25275. /* hexagon_A4_vcmpwgti */ DoesNotAccessMemory,
  25276. /* hexagon_A4_vcmpwgtui */ DoesNotAccessMemory,
  25277. /* hexagon_A4_vrmaxh */ DoesNotAccessMemory,
  25278. /* hexagon_A4_vrmaxuh */ DoesNotAccessMemory,
  25279. /* hexagon_A4_vrmaxuw */ DoesNotAccessMemory,
  25280. /* hexagon_A4_vrmaxw */ DoesNotAccessMemory,
  25281. /* hexagon_A4_vrminh */ DoesNotAccessMemory,
  25282. /* hexagon_A4_vrminuh */ DoesNotAccessMemory,
  25283. /* hexagon_A4_vrminuw */ DoesNotAccessMemory,
  25284. /* hexagon_A4_vrminw */ DoesNotAccessMemory,
  25285. /* hexagon_A5_vaddhubs */ DoesNotAccessMemory,
  25286. /* hexagon_C2_all8 */ DoesNotAccessMemory,
  25287. /* hexagon_C2_and */ DoesNotAccessMemory,
  25288. /* hexagon_C2_andn */ DoesNotAccessMemory,
  25289. /* hexagon_C2_any8 */ DoesNotAccessMemory,
  25290. /* hexagon_C2_bitsclr */ DoesNotAccessMemory,
  25291. /* hexagon_C2_bitsclri */ DoesNotAccessMemory,
  25292. /* hexagon_C2_bitsset */ DoesNotAccessMemory,
  25293. /* hexagon_C2_cmpeq */ DoesNotAccessMemory,
  25294. /* hexagon_C2_cmpeqi */ DoesNotAccessMemory,
  25295. /* hexagon_C2_cmpeqp */ DoesNotAccessMemory,
  25296. /* hexagon_C2_cmpgei */ DoesNotAccessMemory,
  25297. /* hexagon_C2_cmpgeui */ DoesNotAccessMemory,
  25298. /* hexagon_C2_cmpgt */ DoesNotAccessMemory,
  25299. /* hexagon_C2_cmpgti */ DoesNotAccessMemory,
  25300. /* hexagon_C2_cmpgtp */ DoesNotAccessMemory,
  25301. /* hexagon_C2_cmpgtu */ DoesNotAccessMemory,
  25302. /* hexagon_C2_cmpgtui */ DoesNotAccessMemory,
  25303. /* hexagon_C2_cmpgtup */ DoesNotAccessMemory,
  25304. /* hexagon_C2_cmplt */ DoesNotAccessMemory,
  25305. /* hexagon_C2_cmpltu */ DoesNotAccessMemory,
  25306. /* hexagon_C2_mask */ DoesNotAccessMemory,
  25307. /* hexagon_C2_mux */ DoesNotAccessMemory,
  25308. /* hexagon_C2_muxii */ DoesNotAccessMemory,
  25309. /* hexagon_C2_muxir */ DoesNotAccessMemory,
  25310. /* hexagon_C2_muxri */ DoesNotAccessMemory,
  25311. /* hexagon_C2_not */ DoesNotAccessMemory,
  25312. /* hexagon_C2_or */ DoesNotAccessMemory,
  25313. /* hexagon_C2_orn */ DoesNotAccessMemory,
  25314. /* hexagon_C2_pxfer_map */ DoesNotAccessMemory,
  25315. /* hexagon_C2_tfrpr */ DoesNotAccessMemory,
  25316. /* hexagon_C2_tfrrp */ DoesNotAccessMemory,
  25317. /* hexagon_C2_vitpack */ DoesNotAccessMemory,
  25318. /* hexagon_C2_vmux */ DoesNotAccessMemory,
  25319. /* hexagon_C2_xor */ DoesNotAccessMemory,
  25320. /* hexagon_C4_and_and */ DoesNotAccessMemory,
  25321. /* hexagon_C4_and_andn */ DoesNotAccessMemory,
  25322. /* hexagon_C4_and_or */ DoesNotAccessMemory,
  25323. /* hexagon_C4_and_orn */ DoesNotAccessMemory,
  25324. /* hexagon_C4_cmplte */ DoesNotAccessMemory,
  25325. /* hexagon_C4_cmpltei */ DoesNotAccessMemory,
  25326. /* hexagon_C4_cmplteu */ DoesNotAccessMemory,
  25327. /* hexagon_C4_cmplteui */ DoesNotAccessMemory,
  25328. /* hexagon_C4_cmpneq */ DoesNotAccessMemory,
  25329. /* hexagon_C4_cmpneqi */ DoesNotAccessMemory,
  25330. /* hexagon_C4_fastcorner9 */ DoesNotAccessMemory,
  25331. /* hexagon_C4_fastcorner9_not */ DoesNotAccessMemory,
  25332. /* hexagon_C4_nbitsclr */ DoesNotAccessMemory,
  25333. /* hexagon_C4_nbitsclri */ DoesNotAccessMemory,
  25334. /* hexagon_C4_nbitsset */ DoesNotAccessMemory,
  25335. /* hexagon_C4_or_and */ DoesNotAccessMemory,
  25336. /* hexagon_C4_or_andn */ DoesNotAccessMemory,
  25337. /* hexagon_C4_or_or */ DoesNotAccessMemory,
  25338. /* hexagon_C4_or_orn */ DoesNotAccessMemory,
  25339. /* hexagon_F2_conv_d2df */ DoesNotAccessMemory,
  25340. /* hexagon_F2_conv_d2sf */ DoesNotAccessMemory,
  25341. /* hexagon_F2_conv_df2d */ DoesNotAccessMemory,
  25342. /* hexagon_F2_conv_df2d_chop */ DoesNotAccessMemory,
  25343. /* hexagon_F2_conv_df2sf */ DoesNotAccessMemory,
  25344. /* hexagon_F2_conv_df2ud */ DoesNotAccessMemory,
  25345. /* hexagon_F2_conv_df2ud_chop */ DoesNotAccessMemory,
  25346. /* hexagon_F2_conv_df2uw */ DoesNotAccessMemory,
  25347. /* hexagon_F2_conv_df2uw_chop */ DoesNotAccessMemory,
  25348. /* hexagon_F2_conv_df2w */ DoesNotAccessMemory,
  25349. /* hexagon_F2_conv_df2w_chop */ DoesNotAccessMemory,
  25350. /* hexagon_F2_conv_sf2d */ DoesNotAccessMemory,
  25351. /* hexagon_F2_conv_sf2d_chop */ DoesNotAccessMemory,
  25352. /* hexagon_F2_conv_sf2df */ DoesNotAccessMemory,
  25353. /* hexagon_F2_conv_sf2ud */ DoesNotAccessMemory,
  25354. /* hexagon_F2_conv_sf2ud_chop */ DoesNotAccessMemory,
  25355. /* hexagon_F2_conv_sf2uw */ DoesNotAccessMemory,
  25356. /* hexagon_F2_conv_sf2uw_chop */ DoesNotAccessMemory,
  25357. /* hexagon_F2_conv_sf2w */ DoesNotAccessMemory,
  25358. /* hexagon_F2_conv_sf2w_chop */ DoesNotAccessMemory,
  25359. /* hexagon_F2_conv_ud2df */ DoesNotAccessMemory,
  25360. /* hexagon_F2_conv_ud2sf */ DoesNotAccessMemory,
  25361. /* hexagon_F2_conv_uw2df */ DoesNotAccessMemory,
  25362. /* hexagon_F2_conv_uw2sf */ DoesNotAccessMemory,
  25363. /* hexagon_F2_conv_w2df */ DoesNotAccessMemory,
  25364. /* hexagon_F2_conv_w2sf */ DoesNotAccessMemory,
  25365. /* hexagon_F2_dfadd */ DoesNotAccessMemory,
  25366. /* hexagon_F2_dfclass */ DoesNotAccessMemory,
  25367. /* hexagon_F2_dfcmpeq */ DoesNotAccessMemory,
  25368. /* hexagon_F2_dfcmpge */ DoesNotAccessMemory,
  25369. /* hexagon_F2_dfcmpgt */ DoesNotAccessMemory,
  25370. /* hexagon_F2_dfcmpuo */ DoesNotAccessMemory,
  25371. /* hexagon_F2_dffixupd */ DoesNotAccessMemory,
  25372. /* hexagon_F2_dffixupn */ DoesNotAccessMemory,
  25373. /* hexagon_F2_dffixupr */ DoesNotAccessMemory,
  25374. /* hexagon_F2_dffma */ DoesNotAccessMemory,
  25375. /* hexagon_F2_dffma_lib */ DoesNotAccessMemory,
  25376. /* hexagon_F2_dffma_sc */ DoesNotAccessMemory,
  25377. /* hexagon_F2_dffms */ DoesNotAccessMemory,
  25378. /* hexagon_F2_dffms_lib */ DoesNotAccessMemory,
  25379. /* hexagon_F2_dfimm_n */ DoesNotAccessMemory,
  25380. /* hexagon_F2_dfimm_p */ DoesNotAccessMemory,
  25381. /* hexagon_F2_dfmax */ DoesNotAccessMemory,
  25382. /* hexagon_F2_dfmin */ DoesNotAccessMemory,
  25383. /* hexagon_F2_dfmpy */ DoesNotAccessMemory,
  25384. /* hexagon_F2_dfsub */ DoesNotAccessMemory,
  25385. /* hexagon_F2_sfadd */ DoesNotAccessMemory,
  25386. /* hexagon_F2_sfclass */ DoesNotAccessMemory,
  25387. /* hexagon_F2_sfcmpeq */ DoesNotAccessMemory,
  25388. /* hexagon_F2_sfcmpge */ DoesNotAccessMemory,
  25389. /* hexagon_F2_sfcmpgt */ DoesNotAccessMemory,
  25390. /* hexagon_F2_sfcmpuo */ DoesNotAccessMemory,
  25391. /* hexagon_F2_sffixupd */ DoesNotAccessMemory,
  25392. /* hexagon_F2_sffixupn */ DoesNotAccessMemory,
  25393. /* hexagon_F2_sffixupr */ DoesNotAccessMemory,
  25394. /* hexagon_F2_sffma */ DoesNotAccessMemory,
  25395. /* hexagon_F2_sffma_lib */ DoesNotAccessMemory,
  25396. /* hexagon_F2_sffma_sc */ DoesNotAccessMemory,
  25397. /* hexagon_F2_sffms */ DoesNotAccessMemory,
  25398. /* hexagon_F2_sffms_lib */ DoesNotAccessMemory,
  25399. /* hexagon_F2_sfimm_n */ DoesNotAccessMemory,
  25400. /* hexagon_F2_sfimm_p */ DoesNotAccessMemory,
  25401. /* hexagon_F2_sfmax */ DoesNotAccessMemory,
  25402. /* hexagon_F2_sfmin */ DoesNotAccessMemory,
  25403. /* hexagon_F2_sfmpy */ DoesNotAccessMemory,
  25404. /* hexagon_F2_sfsub */ DoesNotAccessMemory,
  25405. /* hexagon_M2_acci */ DoesNotAccessMemory,
  25406. /* hexagon_M2_accii */ DoesNotAccessMemory,
  25407. /* hexagon_M2_cmaci_s0 */ DoesNotAccessMemory,
  25408. /* hexagon_M2_cmacr_s0 */ DoesNotAccessMemory,
  25409. /* hexagon_M2_cmacs_s0 */ DoesNotAccessMemory,
  25410. /* hexagon_M2_cmacs_s1 */ DoesNotAccessMemory,
  25411. /* hexagon_M2_cmacsc_s0 */ DoesNotAccessMemory,
  25412. /* hexagon_M2_cmacsc_s1 */ DoesNotAccessMemory,
  25413. /* hexagon_M2_cmpyi_s0 */ DoesNotAccessMemory,
  25414. /* hexagon_M2_cmpyr_s0 */ DoesNotAccessMemory,
  25415. /* hexagon_M2_cmpyrs_s0 */ DoesNotAccessMemory,
  25416. /* hexagon_M2_cmpyrs_s1 */ DoesNotAccessMemory,
  25417. /* hexagon_M2_cmpyrsc_s0 */ DoesNotAccessMemory,
  25418. /* hexagon_M2_cmpyrsc_s1 */ DoesNotAccessMemory,
  25419. /* hexagon_M2_cmpys_s0 */ DoesNotAccessMemory,
  25420. /* hexagon_M2_cmpys_s1 */ DoesNotAccessMemory,
  25421. /* hexagon_M2_cmpysc_s0 */ DoesNotAccessMemory,
  25422. /* hexagon_M2_cmpysc_s1 */ DoesNotAccessMemory,
  25423. /* hexagon_M2_cnacs_s0 */ DoesNotAccessMemory,
  25424. /* hexagon_M2_cnacs_s1 */ DoesNotAccessMemory,
  25425. /* hexagon_M2_cnacsc_s0 */ DoesNotAccessMemory,
  25426. /* hexagon_M2_cnacsc_s1 */ DoesNotAccessMemory,
  25427. /* hexagon_M2_dpmpyss_acc_s0 */ DoesNotAccessMemory,
  25428. /* hexagon_M2_dpmpyss_nac_s0 */ DoesNotAccessMemory,
  25429. /* hexagon_M2_dpmpyss_rnd_s0 */ DoesNotAccessMemory,
  25430. /* hexagon_M2_dpmpyss_s0 */ DoesNotAccessMemory,
  25431. /* hexagon_M2_dpmpyuu_acc_s0 */ DoesNotAccessMemory,
  25432. /* hexagon_M2_dpmpyuu_nac_s0 */ DoesNotAccessMemory,
  25433. /* hexagon_M2_dpmpyuu_s0 */ DoesNotAccessMemory,
  25434. /* hexagon_M2_hmmpyh_rs1 */ DoesNotAccessMemory,
  25435. /* hexagon_M2_hmmpyh_s1 */ DoesNotAccessMemory,
  25436. /* hexagon_M2_hmmpyl_rs1 */ DoesNotAccessMemory,
  25437. /* hexagon_M2_hmmpyl_s1 */ DoesNotAccessMemory,
  25438. /* hexagon_M2_maci */ DoesNotAccessMemory,
  25439. /* hexagon_M2_macsin */ DoesNotAccessMemory,
  25440. /* hexagon_M2_macsip */ DoesNotAccessMemory,
  25441. /* hexagon_M2_mmachs_rs0 */ DoesNotAccessMemory,
  25442. /* hexagon_M2_mmachs_rs1 */ DoesNotAccessMemory,
  25443. /* hexagon_M2_mmachs_s0 */ DoesNotAccessMemory,
  25444. /* hexagon_M2_mmachs_s1 */ DoesNotAccessMemory,
  25445. /* hexagon_M2_mmacls_rs0 */ DoesNotAccessMemory,
  25446. /* hexagon_M2_mmacls_rs1 */ DoesNotAccessMemory,
  25447. /* hexagon_M2_mmacls_s0 */ DoesNotAccessMemory,
  25448. /* hexagon_M2_mmacls_s1 */ DoesNotAccessMemory,
  25449. /* hexagon_M2_mmacuhs_rs0 */ DoesNotAccessMemory,
  25450. /* hexagon_M2_mmacuhs_rs1 */ DoesNotAccessMemory,
  25451. /* hexagon_M2_mmacuhs_s0 */ DoesNotAccessMemory,
  25452. /* hexagon_M2_mmacuhs_s1 */ DoesNotAccessMemory,
  25453. /* hexagon_M2_mmaculs_rs0 */ DoesNotAccessMemory,
  25454. /* hexagon_M2_mmaculs_rs1 */ DoesNotAccessMemory,
  25455. /* hexagon_M2_mmaculs_s0 */ DoesNotAccessMemory,
  25456. /* hexagon_M2_mmaculs_s1 */ DoesNotAccessMemory,
  25457. /* hexagon_M2_mmpyh_rs0 */ DoesNotAccessMemory,
  25458. /* hexagon_M2_mmpyh_rs1 */ DoesNotAccessMemory,
  25459. /* hexagon_M2_mmpyh_s0 */ DoesNotAccessMemory,
  25460. /* hexagon_M2_mmpyh_s1 */ DoesNotAccessMemory,
  25461. /* hexagon_M2_mmpyl_rs0 */ DoesNotAccessMemory,
  25462. /* hexagon_M2_mmpyl_rs1 */ DoesNotAccessMemory,
  25463. /* hexagon_M2_mmpyl_s0 */ DoesNotAccessMemory,
  25464. /* hexagon_M2_mmpyl_s1 */ DoesNotAccessMemory,
  25465. /* hexagon_M2_mmpyuh_rs0 */ DoesNotAccessMemory,
  25466. /* hexagon_M2_mmpyuh_rs1 */ DoesNotAccessMemory,
  25467. /* hexagon_M2_mmpyuh_s0 */ DoesNotAccessMemory,
  25468. /* hexagon_M2_mmpyuh_s1 */ DoesNotAccessMemory,
  25469. /* hexagon_M2_mmpyul_rs0 */ DoesNotAccessMemory,
  25470. /* hexagon_M2_mmpyul_rs1 */ DoesNotAccessMemory,
  25471. /* hexagon_M2_mmpyul_s0 */ DoesNotAccessMemory,
  25472. /* hexagon_M2_mmpyul_s1 */ DoesNotAccessMemory,
  25473. /* hexagon_M2_mpy_acc_hh_s0 */ DoesNotAccessMemory,
  25474. /* hexagon_M2_mpy_acc_hh_s1 */ DoesNotAccessMemory,
  25475. /* hexagon_M2_mpy_acc_hl_s0 */ DoesNotAccessMemory,
  25476. /* hexagon_M2_mpy_acc_hl_s1 */ DoesNotAccessMemory,
  25477. /* hexagon_M2_mpy_acc_lh_s0 */ DoesNotAccessMemory,
  25478. /* hexagon_M2_mpy_acc_lh_s1 */ DoesNotAccessMemory,
  25479. /* hexagon_M2_mpy_acc_ll_s0 */ DoesNotAccessMemory,
  25480. /* hexagon_M2_mpy_acc_ll_s1 */ DoesNotAccessMemory,
  25481. /* hexagon_M2_mpy_acc_sat_hh_s0 */ DoesNotAccessMemory,
  25482. /* hexagon_M2_mpy_acc_sat_hh_s1 */ DoesNotAccessMemory,
  25483. /* hexagon_M2_mpy_acc_sat_hl_s0 */ DoesNotAccessMemory,
  25484. /* hexagon_M2_mpy_acc_sat_hl_s1 */ DoesNotAccessMemory,
  25485. /* hexagon_M2_mpy_acc_sat_lh_s0 */ DoesNotAccessMemory,
  25486. /* hexagon_M2_mpy_acc_sat_lh_s1 */ DoesNotAccessMemory,
  25487. /* hexagon_M2_mpy_acc_sat_ll_s0 */ DoesNotAccessMemory,
  25488. /* hexagon_M2_mpy_acc_sat_ll_s1 */ DoesNotAccessMemory,
  25489. /* hexagon_M2_mpy_hh_s0 */ DoesNotAccessMemory,
  25490. /* hexagon_M2_mpy_hh_s1 */ DoesNotAccessMemory,
  25491. /* hexagon_M2_mpy_hl_s0 */ DoesNotAccessMemory,
  25492. /* hexagon_M2_mpy_hl_s1 */ DoesNotAccessMemory,
  25493. /* hexagon_M2_mpy_lh_s0 */ DoesNotAccessMemory,
  25494. /* hexagon_M2_mpy_lh_s1 */ DoesNotAccessMemory,
  25495. /* hexagon_M2_mpy_ll_s0 */ DoesNotAccessMemory,
  25496. /* hexagon_M2_mpy_ll_s1 */ DoesNotAccessMemory,
  25497. /* hexagon_M2_mpy_nac_hh_s0 */ DoesNotAccessMemory,
  25498. /* hexagon_M2_mpy_nac_hh_s1 */ DoesNotAccessMemory,
  25499. /* hexagon_M2_mpy_nac_hl_s0 */ DoesNotAccessMemory,
  25500. /* hexagon_M2_mpy_nac_hl_s1 */ DoesNotAccessMemory,
  25501. /* hexagon_M2_mpy_nac_lh_s0 */ DoesNotAccessMemory,
  25502. /* hexagon_M2_mpy_nac_lh_s1 */ DoesNotAccessMemory,
  25503. /* hexagon_M2_mpy_nac_ll_s0 */ DoesNotAccessMemory,
  25504. /* hexagon_M2_mpy_nac_ll_s1 */ DoesNotAccessMemory,
  25505. /* hexagon_M2_mpy_nac_sat_hh_s0 */ DoesNotAccessMemory,
  25506. /* hexagon_M2_mpy_nac_sat_hh_s1 */ DoesNotAccessMemory,
  25507. /* hexagon_M2_mpy_nac_sat_hl_s0 */ DoesNotAccessMemory,
  25508. /* hexagon_M2_mpy_nac_sat_hl_s1 */ DoesNotAccessMemory,
  25509. /* hexagon_M2_mpy_nac_sat_lh_s0 */ DoesNotAccessMemory,
  25510. /* hexagon_M2_mpy_nac_sat_lh_s1 */ DoesNotAccessMemory,
  25511. /* hexagon_M2_mpy_nac_sat_ll_s0 */ DoesNotAccessMemory,
  25512. /* hexagon_M2_mpy_nac_sat_ll_s1 */ DoesNotAccessMemory,
  25513. /* hexagon_M2_mpy_rnd_hh_s0 */ DoesNotAccessMemory,
  25514. /* hexagon_M2_mpy_rnd_hh_s1 */ DoesNotAccessMemory,
  25515. /* hexagon_M2_mpy_rnd_hl_s0 */ DoesNotAccessMemory,
  25516. /* hexagon_M2_mpy_rnd_hl_s1 */ DoesNotAccessMemory,
  25517. /* hexagon_M2_mpy_rnd_lh_s0 */ DoesNotAccessMemory,
  25518. /* hexagon_M2_mpy_rnd_lh_s1 */ DoesNotAccessMemory,
  25519. /* hexagon_M2_mpy_rnd_ll_s0 */ DoesNotAccessMemory,
  25520. /* hexagon_M2_mpy_rnd_ll_s1 */ DoesNotAccessMemory,
  25521. /* hexagon_M2_mpy_sat_hh_s0 */ DoesNotAccessMemory,
  25522. /* hexagon_M2_mpy_sat_hh_s1 */ DoesNotAccessMemory,
  25523. /* hexagon_M2_mpy_sat_hl_s0 */ DoesNotAccessMemory,
  25524. /* hexagon_M2_mpy_sat_hl_s1 */ DoesNotAccessMemory,
  25525. /* hexagon_M2_mpy_sat_lh_s0 */ DoesNotAccessMemory,
  25526. /* hexagon_M2_mpy_sat_lh_s1 */ DoesNotAccessMemory,
  25527. /* hexagon_M2_mpy_sat_ll_s0 */ DoesNotAccessMemory,
  25528. /* hexagon_M2_mpy_sat_ll_s1 */ DoesNotAccessMemory,
  25529. /* hexagon_M2_mpy_sat_rnd_hh_s0 */ DoesNotAccessMemory,
  25530. /* hexagon_M2_mpy_sat_rnd_hh_s1 */ DoesNotAccessMemory,
  25531. /* hexagon_M2_mpy_sat_rnd_hl_s0 */ DoesNotAccessMemory,
  25532. /* hexagon_M2_mpy_sat_rnd_hl_s1 */ DoesNotAccessMemory,
  25533. /* hexagon_M2_mpy_sat_rnd_lh_s0 */ DoesNotAccessMemory,
  25534. /* hexagon_M2_mpy_sat_rnd_lh_s1 */ DoesNotAccessMemory,
  25535. /* hexagon_M2_mpy_sat_rnd_ll_s0 */ DoesNotAccessMemory,
  25536. /* hexagon_M2_mpy_sat_rnd_ll_s1 */ DoesNotAccessMemory,
  25537. /* hexagon_M2_mpy_up */ DoesNotAccessMemory,
  25538. /* hexagon_M2_mpy_up_s1 */ DoesNotAccessMemory,
  25539. /* hexagon_M2_mpy_up_s1_sat */ DoesNotAccessMemory,
  25540. /* hexagon_M2_mpyd_acc_hh_s0 */ DoesNotAccessMemory,
  25541. /* hexagon_M2_mpyd_acc_hh_s1 */ DoesNotAccessMemory,
  25542. /* hexagon_M2_mpyd_acc_hl_s0 */ DoesNotAccessMemory,
  25543. /* hexagon_M2_mpyd_acc_hl_s1 */ DoesNotAccessMemory,
  25544. /* hexagon_M2_mpyd_acc_lh_s0 */ DoesNotAccessMemory,
  25545. /* hexagon_M2_mpyd_acc_lh_s1 */ DoesNotAccessMemory,
  25546. /* hexagon_M2_mpyd_acc_ll_s0 */ DoesNotAccessMemory,
  25547. /* hexagon_M2_mpyd_acc_ll_s1 */ DoesNotAccessMemory,
  25548. /* hexagon_M2_mpyd_hh_s0 */ DoesNotAccessMemory,
  25549. /* hexagon_M2_mpyd_hh_s1 */ DoesNotAccessMemory,
  25550. /* hexagon_M2_mpyd_hl_s0 */ DoesNotAccessMemory,
  25551. /* hexagon_M2_mpyd_hl_s1 */ DoesNotAccessMemory,
  25552. /* hexagon_M2_mpyd_lh_s0 */ DoesNotAccessMemory,
  25553. /* hexagon_M2_mpyd_lh_s1 */ DoesNotAccessMemory,
  25554. /* hexagon_M2_mpyd_ll_s0 */ DoesNotAccessMemory,
  25555. /* hexagon_M2_mpyd_ll_s1 */ DoesNotAccessMemory,
  25556. /* hexagon_M2_mpyd_nac_hh_s0 */ DoesNotAccessMemory,
  25557. /* hexagon_M2_mpyd_nac_hh_s1 */ DoesNotAccessMemory,
  25558. /* hexagon_M2_mpyd_nac_hl_s0 */ DoesNotAccessMemory,
  25559. /* hexagon_M2_mpyd_nac_hl_s1 */ DoesNotAccessMemory,
  25560. /* hexagon_M2_mpyd_nac_lh_s0 */ DoesNotAccessMemory,
  25561. /* hexagon_M2_mpyd_nac_lh_s1 */ DoesNotAccessMemory,
  25562. /* hexagon_M2_mpyd_nac_ll_s0 */ DoesNotAccessMemory,
  25563. /* hexagon_M2_mpyd_nac_ll_s1 */ DoesNotAccessMemory,
  25564. /* hexagon_M2_mpyd_rnd_hh_s0 */ DoesNotAccessMemory,
  25565. /* hexagon_M2_mpyd_rnd_hh_s1 */ DoesNotAccessMemory,
  25566. /* hexagon_M2_mpyd_rnd_hl_s0 */ DoesNotAccessMemory,
  25567. /* hexagon_M2_mpyd_rnd_hl_s1 */ DoesNotAccessMemory,
  25568. /* hexagon_M2_mpyd_rnd_lh_s0 */ DoesNotAccessMemory,
  25569. /* hexagon_M2_mpyd_rnd_lh_s1 */ DoesNotAccessMemory,
  25570. /* hexagon_M2_mpyd_rnd_ll_s0 */ DoesNotAccessMemory,
  25571. /* hexagon_M2_mpyd_rnd_ll_s1 */ DoesNotAccessMemory,
  25572. /* hexagon_M2_mpyi */ DoesNotAccessMemory,
  25573. /* hexagon_M2_mpysmi */ DoesNotAccessMemory,
  25574. /* hexagon_M2_mpysu_up */ DoesNotAccessMemory,
  25575. /* hexagon_M2_mpyu_acc_hh_s0 */ DoesNotAccessMemory,
  25576. /* hexagon_M2_mpyu_acc_hh_s1 */ DoesNotAccessMemory,
  25577. /* hexagon_M2_mpyu_acc_hl_s0 */ DoesNotAccessMemory,
  25578. /* hexagon_M2_mpyu_acc_hl_s1 */ DoesNotAccessMemory,
  25579. /* hexagon_M2_mpyu_acc_lh_s0 */ DoesNotAccessMemory,
  25580. /* hexagon_M2_mpyu_acc_lh_s1 */ DoesNotAccessMemory,
  25581. /* hexagon_M2_mpyu_acc_ll_s0 */ DoesNotAccessMemory,
  25582. /* hexagon_M2_mpyu_acc_ll_s1 */ DoesNotAccessMemory,
  25583. /* hexagon_M2_mpyu_hh_s0 */ DoesNotAccessMemory,
  25584. /* hexagon_M2_mpyu_hh_s1 */ DoesNotAccessMemory,
  25585. /* hexagon_M2_mpyu_hl_s0 */ DoesNotAccessMemory,
  25586. /* hexagon_M2_mpyu_hl_s1 */ DoesNotAccessMemory,
  25587. /* hexagon_M2_mpyu_lh_s0 */ DoesNotAccessMemory,
  25588. /* hexagon_M2_mpyu_lh_s1 */ DoesNotAccessMemory,
  25589. /* hexagon_M2_mpyu_ll_s0 */ DoesNotAccessMemory,
  25590. /* hexagon_M2_mpyu_ll_s1 */ DoesNotAccessMemory,
  25591. /* hexagon_M2_mpyu_nac_hh_s0 */ DoesNotAccessMemory,
  25592. /* hexagon_M2_mpyu_nac_hh_s1 */ DoesNotAccessMemory,
  25593. /* hexagon_M2_mpyu_nac_hl_s0 */ DoesNotAccessMemory,
  25594. /* hexagon_M2_mpyu_nac_hl_s1 */ DoesNotAccessMemory,
  25595. /* hexagon_M2_mpyu_nac_lh_s0 */ DoesNotAccessMemory,
  25596. /* hexagon_M2_mpyu_nac_lh_s1 */ DoesNotAccessMemory,
  25597. /* hexagon_M2_mpyu_nac_ll_s0 */ DoesNotAccessMemory,
  25598. /* hexagon_M2_mpyu_nac_ll_s1 */ DoesNotAccessMemory,
  25599. /* hexagon_M2_mpyu_up */ DoesNotAccessMemory,
  25600. /* hexagon_M2_mpyud_acc_hh_s0 */ DoesNotAccessMemory,
  25601. /* hexagon_M2_mpyud_acc_hh_s1 */ DoesNotAccessMemory,
  25602. /* hexagon_M2_mpyud_acc_hl_s0 */ DoesNotAccessMemory,
  25603. /* hexagon_M2_mpyud_acc_hl_s1 */ DoesNotAccessMemory,
  25604. /* hexagon_M2_mpyud_acc_lh_s0 */ DoesNotAccessMemory,
  25605. /* hexagon_M2_mpyud_acc_lh_s1 */ DoesNotAccessMemory,
  25606. /* hexagon_M2_mpyud_acc_ll_s0 */ DoesNotAccessMemory,
  25607. /* hexagon_M2_mpyud_acc_ll_s1 */ DoesNotAccessMemory,
  25608. /* hexagon_M2_mpyud_hh_s0 */ DoesNotAccessMemory,
  25609. /* hexagon_M2_mpyud_hh_s1 */ DoesNotAccessMemory,
  25610. /* hexagon_M2_mpyud_hl_s0 */ DoesNotAccessMemory,
  25611. /* hexagon_M2_mpyud_hl_s1 */ DoesNotAccessMemory,
  25612. /* hexagon_M2_mpyud_lh_s0 */ DoesNotAccessMemory,
  25613. /* hexagon_M2_mpyud_lh_s1 */ DoesNotAccessMemory,
  25614. /* hexagon_M2_mpyud_ll_s0 */ DoesNotAccessMemory,
  25615. /* hexagon_M2_mpyud_ll_s1 */ DoesNotAccessMemory,
  25616. /* hexagon_M2_mpyud_nac_hh_s0 */ DoesNotAccessMemory,
  25617. /* hexagon_M2_mpyud_nac_hh_s1 */ DoesNotAccessMemory,
  25618. /* hexagon_M2_mpyud_nac_hl_s0 */ DoesNotAccessMemory,
  25619. /* hexagon_M2_mpyud_nac_hl_s1 */ DoesNotAccessMemory,
  25620. /* hexagon_M2_mpyud_nac_lh_s0 */ DoesNotAccessMemory,
  25621. /* hexagon_M2_mpyud_nac_lh_s1 */ DoesNotAccessMemory,
  25622. /* hexagon_M2_mpyud_nac_ll_s0 */ DoesNotAccessMemory,
  25623. /* hexagon_M2_mpyud_nac_ll_s1 */ DoesNotAccessMemory,
  25624. /* hexagon_M2_mpyui */ DoesNotAccessMemory,
  25625. /* hexagon_M2_nacci */ DoesNotAccessMemory,
  25626. /* hexagon_M2_naccii */ DoesNotAccessMemory,
  25627. /* hexagon_M2_subacc */ DoesNotAccessMemory,
  25628. /* hexagon_M2_vabsdiffh */ DoesNotAccessMemory,
  25629. /* hexagon_M2_vabsdiffw */ DoesNotAccessMemory,
  25630. /* hexagon_M2_vcmac_s0_sat_i */ DoesNotAccessMemory,
  25631. /* hexagon_M2_vcmac_s0_sat_r */ DoesNotAccessMemory,
  25632. /* hexagon_M2_vcmpy_s0_sat_i */ DoesNotAccessMemory,
  25633. /* hexagon_M2_vcmpy_s0_sat_r */ DoesNotAccessMemory,
  25634. /* hexagon_M2_vcmpy_s1_sat_i */ DoesNotAccessMemory,
  25635. /* hexagon_M2_vcmpy_s1_sat_r */ DoesNotAccessMemory,
  25636. /* hexagon_M2_vdmacs_s0 */ DoesNotAccessMemory,
  25637. /* hexagon_M2_vdmacs_s1 */ DoesNotAccessMemory,
  25638. /* hexagon_M2_vdmpyrs_s0 */ DoesNotAccessMemory,
  25639. /* hexagon_M2_vdmpyrs_s1 */ DoesNotAccessMemory,
  25640. /* hexagon_M2_vdmpys_s0 */ DoesNotAccessMemory,
  25641. /* hexagon_M2_vdmpys_s1 */ DoesNotAccessMemory,
  25642. /* hexagon_M2_vmac2 */ DoesNotAccessMemory,
  25643. /* hexagon_M2_vmac2es */ DoesNotAccessMemory,
  25644. /* hexagon_M2_vmac2es_s0 */ DoesNotAccessMemory,
  25645. /* hexagon_M2_vmac2es_s1 */ DoesNotAccessMemory,
  25646. /* hexagon_M2_vmac2s_s0 */ DoesNotAccessMemory,
  25647. /* hexagon_M2_vmac2s_s1 */ DoesNotAccessMemory,
  25648. /* hexagon_M2_vmac2su_s0 */ DoesNotAccessMemory,
  25649. /* hexagon_M2_vmac2su_s1 */ DoesNotAccessMemory,
  25650. /* hexagon_M2_vmpy2es_s0 */ DoesNotAccessMemory,
  25651. /* hexagon_M2_vmpy2es_s1 */ DoesNotAccessMemory,
  25652. /* hexagon_M2_vmpy2s_s0 */ DoesNotAccessMemory,
  25653. /* hexagon_M2_vmpy2s_s0pack */ DoesNotAccessMemory,
  25654. /* hexagon_M2_vmpy2s_s1 */ DoesNotAccessMemory,
  25655. /* hexagon_M2_vmpy2s_s1pack */ DoesNotAccessMemory,
  25656. /* hexagon_M2_vmpy2su_s0 */ DoesNotAccessMemory,
  25657. /* hexagon_M2_vmpy2su_s1 */ DoesNotAccessMemory,
  25658. /* hexagon_M2_vraddh */ DoesNotAccessMemory,
  25659. /* hexagon_M2_vradduh */ DoesNotAccessMemory,
  25660. /* hexagon_M2_vrcmaci_s0 */ DoesNotAccessMemory,
  25661. /* hexagon_M2_vrcmaci_s0c */ DoesNotAccessMemory,
  25662. /* hexagon_M2_vrcmacr_s0 */ DoesNotAccessMemory,
  25663. /* hexagon_M2_vrcmacr_s0c */ DoesNotAccessMemory,
  25664. /* hexagon_M2_vrcmpyi_s0 */ DoesNotAccessMemory,
  25665. /* hexagon_M2_vrcmpyi_s0c */ DoesNotAccessMemory,
  25666. /* hexagon_M2_vrcmpyr_s0 */ DoesNotAccessMemory,
  25667. /* hexagon_M2_vrcmpyr_s0c */ DoesNotAccessMemory,
  25668. /* hexagon_M2_vrcmpys_acc_s1 */ DoesNotAccessMemory,
  25669. /* hexagon_M2_vrcmpys_s1 */ DoesNotAccessMemory,
  25670. /* hexagon_M2_vrcmpys_s1rp */ DoesNotAccessMemory,
  25671. /* hexagon_M2_vrmac_s0 */ DoesNotAccessMemory,
  25672. /* hexagon_M2_vrmpy_s0 */ DoesNotAccessMemory,
  25673. /* hexagon_M2_xor_xacc */ DoesNotAccessMemory,
  25674. /* hexagon_M4_and_and */ DoesNotAccessMemory,
  25675. /* hexagon_M4_and_andn */ DoesNotAccessMemory,
  25676. /* hexagon_M4_and_or */ DoesNotAccessMemory,
  25677. /* hexagon_M4_and_xor */ DoesNotAccessMemory,
  25678. /* hexagon_M4_cmpyi_wh */ DoesNotAccessMemory,
  25679. /* hexagon_M4_cmpyi_whc */ DoesNotAccessMemory,
  25680. /* hexagon_M4_cmpyr_wh */ DoesNotAccessMemory,
  25681. /* hexagon_M4_cmpyr_whc */ DoesNotAccessMemory,
  25682. /* hexagon_M4_mac_up_s1_sat */ DoesNotAccessMemory,
  25683. /* hexagon_M4_mpyri_addi */ DoesNotAccessMemory,
  25684. /* hexagon_M4_mpyri_addr */ DoesNotAccessMemory,
  25685. /* hexagon_M4_mpyri_addr_u2 */ DoesNotAccessMemory,
  25686. /* hexagon_M4_mpyrr_addi */ DoesNotAccessMemory,
  25687. /* hexagon_M4_mpyrr_addr */ DoesNotAccessMemory,
  25688. /* hexagon_M4_nac_up_s1_sat */ DoesNotAccessMemory,
  25689. /* hexagon_M4_or_and */ DoesNotAccessMemory,
  25690. /* hexagon_M4_or_andn */ DoesNotAccessMemory,
  25691. /* hexagon_M4_or_or */ DoesNotAccessMemory,
  25692. /* hexagon_M4_or_xor */ DoesNotAccessMemory,
  25693. /* hexagon_M4_pmpyw */ DoesNotAccessMemory,
  25694. /* hexagon_M4_pmpyw_acc */ DoesNotAccessMemory,
  25695. /* hexagon_M4_vpmpyh */ DoesNotAccessMemory,
  25696. /* hexagon_M4_vpmpyh_acc */ DoesNotAccessMemory,
  25697. /* hexagon_M4_vrmpyeh_acc_s0 */ DoesNotAccessMemory,
  25698. /* hexagon_M4_vrmpyeh_acc_s1 */ DoesNotAccessMemory,
  25699. /* hexagon_M4_vrmpyeh_s0 */ DoesNotAccessMemory,
  25700. /* hexagon_M4_vrmpyeh_s1 */ DoesNotAccessMemory,
  25701. /* hexagon_M4_vrmpyoh_acc_s0 */ DoesNotAccessMemory,
  25702. /* hexagon_M4_vrmpyoh_acc_s1 */ DoesNotAccessMemory,
  25703. /* hexagon_M4_vrmpyoh_s0 */ DoesNotAccessMemory,
  25704. /* hexagon_M4_vrmpyoh_s1 */ DoesNotAccessMemory,
  25705. /* hexagon_M4_xor_and */ DoesNotAccessMemory,
  25706. /* hexagon_M4_xor_andn */ DoesNotAccessMemory,
  25707. /* hexagon_M4_xor_or */ DoesNotAccessMemory,
  25708. /* hexagon_M4_xor_xacc */ DoesNotAccessMemory,
  25709. /* hexagon_M5_vdmacbsu */ DoesNotAccessMemory,
  25710. /* hexagon_M5_vdmpybsu */ DoesNotAccessMemory,
  25711. /* hexagon_M5_vmacbsu */ DoesNotAccessMemory,
  25712. /* hexagon_M5_vmacbuu */ DoesNotAccessMemory,
  25713. /* hexagon_M5_vmpybsu */ DoesNotAccessMemory,
  25714. /* hexagon_M5_vmpybuu */ DoesNotAccessMemory,
  25715. /* hexagon_M5_vrmacbsu */ DoesNotAccessMemory,
  25716. /* hexagon_M5_vrmacbuu */ DoesNotAccessMemory,
  25717. /* hexagon_M5_vrmpybsu */ DoesNotAccessMemory,
  25718. /* hexagon_M5_vrmpybuu */ DoesNotAccessMemory,
  25719. /* hexagon_S2_addasl_rrri */ DoesNotAccessMemory,
  25720. /* hexagon_S2_asl_i_p */ DoesNotAccessMemory,
  25721. /* hexagon_S2_asl_i_p_acc */ DoesNotAccessMemory,
  25722. /* hexagon_S2_asl_i_p_and */ DoesNotAccessMemory,
  25723. /* hexagon_S2_asl_i_p_nac */ DoesNotAccessMemory,
  25724. /* hexagon_S2_asl_i_p_or */ DoesNotAccessMemory,
  25725. /* hexagon_S2_asl_i_p_xacc */ DoesNotAccessMemory,
  25726. /* hexagon_S2_asl_i_r */ DoesNotAccessMemory,
  25727. /* hexagon_S2_asl_i_r_acc */ DoesNotAccessMemory,
  25728. /* hexagon_S2_asl_i_r_and */ DoesNotAccessMemory,
  25729. /* hexagon_S2_asl_i_r_nac */ DoesNotAccessMemory,
  25730. /* hexagon_S2_asl_i_r_or */ DoesNotAccessMemory,
  25731. /* hexagon_S2_asl_i_r_sat */ DoesNotAccessMemory,
  25732. /* hexagon_S2_asl_i_r_xacc */ DoesNotAccessMemory,
  25733. /* hexagon_S2_asl_i_vh */ DoesNotAccessMemory,
  25734. /* hexagon_S2_asl_i_vw */ DoesNotAccessMemory,
  25735. /* hexagon_S2_asl_r_p */ DoesNotAccessMemory,
  25736. /* hexagon_S2_asl_r_p_acc */ DoesNotAccessMemory,
  25737. /* hexagon_S2_asl_r_p_and */ DoesNotAccessMemory,
  25738. /* hexagon_S2_asl_r_p_nac */ DoesNotAccessMemory,
  25739. /* hexagon_S2_asl_r_p_or */ DoesNotAccessMemory,
  25740. /* hexagon_S2_asl_r_p_xor */ DoesNotAccessMemory,
  25741. /* hexagon_S2_asl_r_r */ DoesNotAccessMemory,
  25742. /* hexagon_S2_asl_r_r_acc */ DoesNotAccessMemory,
  25743. /* hexagon_S2_asl_r_r_and */ DoesNotAccessMemory,
  25744. /* hexagon_S2_asl_r_r_nac */ DoesNotAccessMemory,
  25745. /* hexagon_S2_asl_r_r_or */ DoesNotAccessMemory,
  25746. /* hexagon_S2_asl_r_r_sat */ DoesNotAccessMemory,
  25747. /* hexagon_S2_asl_r_vh */ DoesNotAccessMemory,
  25748. /* hexagon_S2_asl_r_vw */ DoesNotAccessMemory,
  25749. /* hexagon_S2_asr_i_p */ DoesNotAccessMemory,
  25750. /* hexagon_S2_asr_i_p_acc */ DoesNotAccessMemory,
  25751. /* hexagon_S2_asr_i_p_and */ DoesNotAccessMemory,
  25752. /* hexagon_S2_asr_i_p_nac */ DoesNotAccessMemory,
  25753. /* hexagon_S2_asr_i_p_or */ DoesNotAccessMemory,
  25754. /* hexagon_S2_asr_i_p_rnd */ DoesNotAccessMemory,
  25755. /* hexagon_S2_asr_i_p_rnd_goodsyntax */ DoesNotAccessMemory,
  25756. /* hexagon_S2_asr_i_r */ DoesNotAccessMemory,
  25757. /* hexagon_S2_asr_i_r_acc */ DoesNotAccessMemory,
  25758. /* hexagon_S2_asr_i_r_and */ DoesNotAccessMemory,
  25759. /* hexagon_S2_asr_i_r_nac */ DoesNotAccessMemory,
  25760. /* hexagon_S2_asr_i_r_or */ DoesNotAccessMemory,
  25761. /* hexagon_S2_asr_i_r_rnd */ DoesNotAccessMemory,
  25762. /* hexagon_S2_asr_i_r_rnd_goodsyntax */ DoesNotAccessMemory,
  25763. /* hexagon_S2_asr_i_svw_trun */ DoesNotAccessMemory,
  25764. /* hexagon_S2_asr_i_vh */ DoesNotAccessMemory,
  25765. /* hexagon_S2_asr_i_vw */ DoesNotAccessMemory,
  25766. /* hexagon_S2_asr_r_p */ DoesNotAccessMemory,
  25767. /* hexagon_S2_asr_r_p_acc */ DoesNotAccessMemory,
  25768. /* hexagon_S2_asr_r_p_and */ DoesNotAccessMemory,
  25769. /* hexagon_S2_asr_r_p_nac */ DoesNotAccessMemory,
  25770. /* hexagon_S2_asr_r_p_or */ DoesNotAccessMemory,
  25771. /* hexagon_S2_asr_r_p_xor */ DoesNotAccessMemory,
  25772. /* hexagon_S2_asr_r_r */ DoesNotAccessMemory,
  25773. /* hexagon_S2_asr_r_r_acc */ DoesNotAccessMemory,
  25774. /* hexagon_S2_asr_r_r_and */ DoesNotAccessMemory,
  25775. /* hexagon_S2_asr_r_r_nac */ DoesNotAccessMemory,
  25776. /* hexagon_S2_asr_r_r_or */ DoesNotAccessMemory,
  25777. /* hexagon_S2_asr_r_r_sat */ DoesNotAccessMemory,
  25778. /* hexagon_S2_asr_r_svw_trun */ DoesNotAccessMemory,
  25779. /* hexagon_S2_asr_r_vh */ DoesNotAccessMemory,
  25780. /* hexagon_S2_asr_r_vw */ DoesNotAccessMemory,
  25781. /* hexagon_S2_brev */ DoesNotAccessMemory,
  25782. /* hexagon_S2_brevp */ DoesNotAccessMemory,
  25783. /* hexagon_S2_cl0 */ DoesNotAccessMemory,
  25784. /* hexagon_S2_cl0p */ DoesNotAccessMemory,
  25785. /* hexagon_S2_cl1 */ DoesNotAccessMemory,
  25786. /* hexagon_S2_cl1p */ DoesNotAccessMemory,
  25787. /* hexagon_S2_clb */ DoesNotAccessMemory,
  25788. /* hexagon_S2_clbnorm */ DoesNotAccessMemory,
  25789. /* hexagon_S2_clbp */ DoesNotAccessMemory,
  25790. /* hexagon_S2_clrbit_i */ DoesNotAccessMemory,
  25791. /* hexagon_S2_clrbit_r */ DoesNotAccessMemory,
  25792. /* hexagon_S2_ct0 */ DoesNotAccessMemory,
  25793. /* hexagon_S2_ct0p */ DoesNotAccessMemory,
  25794. /* hexagon_S2_ct1 */ DoesNotAccessMemory,
  25795. /* hexagon_S2_ct1p */ DoesNotAccessMemory,
  25796. /* hexagon_S2_deinterleave */ DoesNotAccessMemory,
  25797. /* hexagon_S2_extractu */ DoesNotAccessMemory,
  25798. /* hexagon_S2_extractu_rp */ DoesNotAccessMemory,
  25799. /* hexagon_S2_extractup */ DoesNotAccessMemory,
  25800. /* hexagon_S2_extractup_rp */ DoesNotAccessMemory,
  25801. /* hexagon_S2_insert */ DoesNotAccessMemory,
  25802. /* hexagon_S2_insert_rp */ DoesNotAccessMemory,
  25803. /* hexagon_S2_insertp */ DoesNotAccessMemory,
  25804. /* hexagon_S2_insertp_rp */ DoesNotAccessMemory,
  25805. /* hexagon_S2_interleave */ DoesNotAccessMemory,
  25806. /* hexagon_S2_lfsp */ DoesNotAccessMemory,
  25807. /* hexagon_S2_lsl_r_p */ DoesNotAccessMemory,
  25808. /* hexagon_S2_lsl_r_p_acc */ DoesNotAccessMemory,
  25809. /* hexagon_S2_lsl_r_p_and */ DoesNotAccessMemory,
  25810. /* hexagon_S2_lsl_r_p_nac */ DoesNotAccessMemory,
  25811. /* hexagon_S2_lsl_r_p_or */ DoesNotAccessMemory,
  25812. /* hexagon_S2_lsl_r_p_xor */ DoesNotAccessMemory,
  25813. /* hexagon_S2_lsl_r_r */ DoesNotAccessMemory,
  25814. /* hexagon_S2_lsl_r_r_acc */ DoesNotAccessMemory,
  25815. /* hexagon_S2_lsl_r_r_and */ DoesNotAccessMemory,
  25816. /* hexagon_S2_lsl_r_r_nac */ DoesNotAccessMemory,
  25817. /* hexagon_S2_lsl_r_r_or */ DoesNotAccessMemory,
  25818. /* hexagon_S2_lsl_r_vh */ DoesNotAccessMemory,
  25819. /* hexagon_S2_lsl_r_vw */ DoesNotAccessMemory,
  25820. /* hexagon_S2_lsr_i_p */ DoesNotAccessMemory,
  25821. /* hexagon_S2_lsr_i_p_acc */ DoesNotAccessMemory,
  25822. /* hexagon_S2_lsr_i_p_and */ DoesNotAccessMemory,
  25823. /* hexagon_S2_lsr_i_p_nac */ DoesNotAccessMemory,
  25824. /* hexagon_S2_lsr_i_p_or */ DoesNotAccessMemory,
  25825. /* hexagon_S2_lsr_i_p_xacc */ DoesNotAccessMemory,
  25826. /* hexagon_S2_lsr_i_r */ DoesNotAccessMemory,
  25827. /* hexagon_S2_lsr_i_r_acc */ DoesNotAccessMemory,
  25828. /* hexagon_S2_lsr_i_r_and */ DoesNotAccessMemory,
  25829. /* hexagon_S2_lsr_i_r_nac */ DoesNotAccessMemory,
  25830. /* hexagon_S2_lsr_i_r_or */ DoesNotAccessMemory,
  25831. /* hexagon_S2_lsr_i_r_xacc */ DoesNotAccessMemory,
  25832. /* hexagon_S2_lsr_i_vh */ DoesNotAccessMemory,
  25833. /* hexagon_S2_lsr_i_vw */ DoesNotAccessMemory,
  25834. /* hexagon_S2_lsr_r_p */ DoesNotAccessMemory,
  25835. /* hexagon_S2_lsr_r_p_acc */ DoesNotAccessMemory,
  25836. /* hexagon_S2_lsr_r_p_and */ DoesNotAccessMemory,
  25837. /* hexagon_S2_lsr_r_p_nac */ DoesNotAccessMemory,
  25838. /* hexagon_S2_lsr_r_p_or */ DoesNotAccessMemory,
  25839. /* hexagon_S2_lsr_r_p_xor */ DoesNotAccessMemory,
  25840. /* hexagon_S2_lsr_r_r */ DoesNotAccessMemory,
  25841. /* hexagon_S2_lsr_r_r_acc */ DoesNotAccessMemory,
  25842. /* hexagon_S2_lsr_r_r_and */ DoesNotAccessMemory,
  25843. /* hexagon_S2_lsr_r_r_nac */ DoesNotAccessMemory,
  25844. /* hexagon_S2_lsr_r_r_or */ DoesNotAccessMemory,
  25845. /* hexagon_S2_lsr_r_vh */ DoesNotAccessMemory,
  25846. /* hexagon_S2_lsr_r_vw */ DoesNotAccessMemory,
  25847. /* hexagon_S2_packhl */ DoesNotAccessMemory,
  25848. /* hexagon_S2_parityp */ DoesNotAccessMemory,
  25849. /* hexagon_S2_setbit_i */ DoesNotAccessMemory,
  25850. /* hexagon_S2_setbit_r */ DoesNotAccessMemory,
  25851. /* hexagon_S2_shuffeb */ DoesNotAccessMemory,
  25852. /* hexagon_S2_shuffeh */ DoesNotAccessMemory,
  25853. /* hexagon_S2_shuffob */ DoesNotAccessMemory,
  25854. /* hexagon_S2_shuffoh */ DoesNotAccessMemory,
  25855. /* hexagon_S2_svsathb */ DoesNotAccessMemory,
  25856. /* hexagon_S2_svsathub */ DoesNotAccessMemory,
  25857. /* hexagon_S2_tableidxb_goodsyntax */ DoesNotAccessMemory,
  25858. /* hexagon_S2_tableidxd_goodsyntax */ DoesNotAccessMemory,
  25859. /* hexagon_S2_tableidxh_goodsyntax */ DoesNotAccessMemory,
  25860. /* hexagon_S2_tableidxw_goodsyntax */ DoesNotAccessMemory,
  25861. /* hexagon_S2_togglebit_i */ DoesNotAccessMemory,
  25862. /* hexagon_S2_togglebit_r */ DoesNotAccessMemory,
  25863. /* hexagon_S2_tstbit_i */ DoesNotAccessMemory,
  25864. /* hexagon_S2_tstbit_r */ DoesNotAccessMemory,
  25865. /* hexagon_S2_valignib */ DoesNotAccessMemory,
  25866. /* hexagon_S2_valignrb */ DoesNotAccessMemory,
  25867. /* hexagon_S2_vcnegh */ DoesNotAccessMemory,
  25868. /* hexagon_S2_vcrotate */ DoesNotAccessMemory,
  25869. /* hexagon_S2_vrcnegh */ DoesNotAccessMemory,
  25870. /* hexagon_S2_vrndpackwh */ DoesNotAccessMemory,
  25871. /* hexagon_S2_vrndpackwhs */ DoesNotAccessMemory,
  25872. /* hexagon_S2_vsathb */ DoesNotAccessMemory,
  25873. /* hexagon_S2_vsathb_nopack */ DoesNotAccessMemory,
  25874. /* hexagon_S2_vsathub */ DoesNotAccessMemory,
  25875. /* hexagon_S2_vsathub_nopack */ DoesNotAccessMemory,
  25876. /* hexagon_S2_vsatwh */ DoesNotAccessMemory,
  25877. /* hexagon_S2_vsatwh_nopack */ DoesNotAccessMemory,
  25878. /* hexagon_S2_vsatwuh */ DoesNotAccessMemory,
  25879. /* hexagon_S2_vsatwuh_nopack */ DoesNotAccessMemory,
  25880. /* hexagon_S2_vsplatrb */ DoesNotAccessMemory,
  25881. /* hexagon_S2_vsplatrh */ DoesNotAccessMemory,
  25882. /* hexagon_S2_vspliceib */ DoesNotAccessMemory,
  25883. /* hexagon_S2_vsplicerb */ DoesNotAccessMemory,
  25884. /* hexagon_S2_vsxtbh */ DoesNotAccessMemory,
  25885. /* hexagon_S2_vsxthw */ DoesNotAccessMemory,
  25886. /* hexagon_S2_vtrunehb */ DoesNotAccessMemory,
  25887. /* hexagon_S2_vtrunewh */ DoesNotAccessMemory,
  25888. /* hexagon_S2_vtrunohb */ DoesNotAccessMemory,
  25889. /* hexagon_S2_vtrunowh */ DoesNotAccessMemory,
  25890. /* hexagon_S2_vzxtbh */ DoesNotAccessMemory,
  25891. /* hexagon_S2_vzxthw */ DoesNotAccessMemory,
  25892. /* hexagon_S4_addaddi */ DoesNotAccessMemory,
  25893. /* hexagon_S4_addi_asl_ri */ DoesNotAccessMemory,
  25894. /* hexagon_S4_addi_lsr_ri */ DoesNotAccessMemory,
  25895. /* hexagon_S4_andi_asl_ri */ DoesNotAccessMemory,
  25896. /* hexagon_S4_andi_lsr_ri */ DoesNotAccessMemory,
  25897. /* hexagon_S4_clbaddi */ DoesNotAccessMemory,
  25898. /* hexagon_S4_clbpaddi */ DoesNotAccessMemory,
  25899. /* hexagon_S4_clbpnorm */ DoesNotAccessMemory,
  25900. /* hexagon_S4_extract */ DoesNotAccessMemory,
  25901. /* hexagon_S4_extract_rp */ DoesNotAccessMemory,
  25902. /* hexagon_S4_extractp */ DoesNotAccessMemory,
  25903. /* hexagon_S4_extractp_rp */ DoesNotAccessMemory,
  25904. /* hexagon_S4_lsli */ DoesNotAccessMemory,
  25905. /* hexagon_S4_ntstbit_i */ DoesNotAccessMemory,
  25906. /* hexagon_S4_ntstbit_r */ DoesNotAccessMemory,
  25907. /* hexagon_S4_or_andi */ DoesNotAccessMemory,
  25908. /* hexagon_S4_or_andix */ DoesNotAccessMemory,
  25909. /* hexagon_S4_or_ori */ DoesNotAccessMemory,
  25910. /* hexagon_S4_ori_asl_ri */ DoesNotAccessMemory,
  25911. /* hexagon_S4_ori_lsr_ri */ DoesNotAccessMemory,
  25912. /* hexagon_S4_parity */ DoesNotAccessMemory,
  25913. /* hexagon_S4_subaddi */ DoesNotAccessMemory,
  25914. /* hexagon_S4_subi_asl_ri */ DoesNotAccessMemory,
  25915. /* hexagon_S4_subi_lsr_ri */ DoesNotAccessMemory,
  25916. /* hexagon_S4_vrcrotate */ DoesNotAccessMemory,
  25917. /* hexagon_S4_vrcrotate_acc */ DoesNotAccessMemory,
  25918. /* hexagon_S4_vxaddsubh */ DoesNotAccessMemory,
  25919. /* hexagon_S4_vxaddsubhr */ DoesNotAccessMemory,
  25920. /* hexagon_S4_vxaddsubw */ DoesNotAccessMemory,
  25921. /* hexagon_S4_vxsubaddh */ DoesNotAccessMemory,
  25922. /* hexagon_S4_vxsubaddhr */ DoesNotAccessMemory,
  25923. /* hexagon_S4_vxsubaddw */ DoesNotAccessMemory,
  25924. /* hexagon_S5_asrhub_rnd_sat_goodsyntax */ DoesNotAccessMemory,
  25925. /* hexagon_S5_asrhub_sat */ DoesNotAccessMemory,
  25926. /* hexagon_S5_popcountp */ DoesNotAccessMemory,
  25927. /* hexagon_S5_vasrhrnd_goodsyntax */ DoesNotAccessMemory,
  25928. /* hexagon_SI_to_SXTHI_asrh */ DoesNotAccessMemory,
  25929. /* hexagon_circ_ldd */ OnlyAccessesArgumentPointees,
  25930. /* init_trampoline */ OnlyAccessesArgumentPointees,
  25931. /* invariant_end */ OnlyAccessesArgumentPointees,
  25932. /* invariant_start */ OnlyAccessesArgumentPointees,
  25933. /* lifetime_end */ OnlyAccessesArgumentPointees,
  25934. /* lifetime_start */ OnlyAccessesArgumentPointees,
  25935. /* log */ OnlyReadsMemory,
  25936. /* log10 */ OnlyReadsMemory,
  25937. /* log2 */ OnlyReadsMemory,
  25938. /* longjmp */ UnknownModRefBehavior,
  25939. /* memcpy */ OnlyAccessesArgumentPointees,
  25940. /* memmove */ OnlyAccessesArgumentPointees,
  25941. /* memset */ OnlyAccessesArgumentPointees,
  25942. /* mips_absq_s_ph */ UnknownModRefBehavior,
  25943. /* mips_absq_s_qb */ UnknownModRefBehavior,
  25944. /* mips_absq_s_w */ UnknownModRefBehavior,
  25945. /* mips_addq_ph */ UnknownModRefBehavior,
  25946. /* mips_addq_s_ph */ UnknownModRefBehavior,
  25947. /* mips_addq_s_w */ UnknownModRefBehavior,
  25948. /* mips_addqh_ph */ DoesNotAccessMemory,
  25949. /* mips_addqh_r_ph */ DoesNotAccessMemory,
  25950. /* mips_addqh_r_w */ DoesNotAccessMemory,
  25951. /* mips_addqh_w */ DoesNotAccessMemory,
  25952. /* mips_addsc */ UnknownModRefBehavior,
  25953. /* mips_addu_ph */ UnknownModRefBehavior,
  25954. /* mips_addu_qb */ UnknownModRefBehavior,
  25955. /* mips_addu_s_ph */ UnknownModRefBehavior,
  25956. /* mips_addu_s_qb */ UnknownModRefBehavior,
  25957. /* mips_adduh_qb */ DoesNotAccessMemory,
  25958. /* mips_adduh_r_qb */ DoesNotAccessMemory,
  25959. /* mips_addwc */ UnknownModRefBehavior,
  25960. /* mips_append */ DoesNotAccessMemory,
  25961. /* mips_balign */ DoesNotAccessMemory,
  25962. /* mips_bitrev */ DoesNotAccessMemory,
  25963. /* mips_bposge32 */ OnlyReadsMemory,
  25964. /* mips_cmp_eq_ph */ UnknownModRefBehavior,
  25965. /* mips_cmp_le_ph */ UnknownModRefBehavior,
  25966. /* mips_cmp_lt_ph */ UnknownModRefBehavior,
  25967. /* mips_cmpgdu_eq_qb */ UnknownModRefBehavior,
  25968. /* mips_cmpgdu_le_qb */ UnknownModRefBehavior,
  25969. /* mips_cmpgdu_lt_qb */ UnknownModRefBehavior,
  25970. /* mips_cmpgu_eq_qb */ UnknownModRefBehavior,
  25971. /* mips_cmpgu_le_qb */ UnknownModRefBehavior,
  25972. /* mips_cmpgu_lt_qb */ UnknownModRefBehavior,
  25973. /* mips_cmpu_eq_qb */ UnknownModRefBehavior,
  25974. /* mips_cmpu_le_qb */ UnknownModRefBehavior,
  25975. /* mips_cmpu_lt_qb */ UnknownModRefBehavior,
  25976. /* mips_dpa_w_ph */ DoesNotAccessMemory,
  25977. /* mips_dpaq_s_w_ph */ UnknownModRefBehavior,
  25978. /* mips_dpaq_sa_l_w */ UnknownModRefBehavior,
  25979. /* mips_dpaqx_s_w_ph */ UnknownModRefBehavior,
  25980. /* mips_dpaqx_sa_w_ph */ UnknownModRefBehavior,
  25981. /* mips_dpau_h_qbl */ DoesNotAccessMemory,
  25982. /* mips_dpau_h_qbr */ DoesNotAccessMemory,
  25983. /* mips_dpax_w_ph */ DoesNotAccessMemory,
  25984. /* mips_dps_w_ph */ DoesNotAccessMemory,
  25985. /* mips_dpsq_s_w_ph */ UnknownModRefBehavior,
  25986. /* mips_dpsq_sa_l_w */ UnknownModRefBehavior,
  25987. /* mips_dpsqx_s_w_ph */ UnknownModRefBehavior,
  25988. /* mips_dpsqx_sa_w_ph */ UnknownModRefBehavior,
  25989. /* mips_dpsu_h_qbl */ DoesNotAccessMemory,
  25990. /* mips_dpsu_h_qbr */ DoesNotAccessMemory,
  25991. /* mips_dpsx_w_ph */ DoesNotAccessMemory,
  25992. /* mips_extp */ UnknownModRefBehavior,
  25993. /* mips_extpdp */ UnknownModRefBehavior,
  25994. /* mips_extr_r_w */ UnknownModRefBehavior,
  25995. /* mips_extr_rs_w */ UnknownModRefBehavior,
  25996. /* mips_extr_s_h */ UnknownModRefBehavior,
  25997. /* mips_extr_w */ UnknownModRefBehavior,
  25998. /* mips_insv */ OnlyReadsMemory,
  25999. /* mips_lbux */ OnlyReadsArgumentPointees,
  26000. /* mips_lhx */ OnlyReadsArgumentPointees,
  26001. /* mips_lwx */ OnlyReadsArgumentPointees,
  26002. /* mips_madd */ DoesNotAccessMemory,
  26003. /* mips_maddu */ DoesNotAccessMemory,
  26004. /* mips_maq_s_w_phl */ UnknownModRefBehavior,
  26005. /* mips_maq_s_w_phr */ UnknownModRefBehavior,
  26006. /* mips_maq_sa_w_phl */ UnknownModRefBehavior,
  26007. /* mips_maq_sa_w_phr */ UnknownModRefBehavior,
  26008. /* mips_modsub */ DoesNotAccessMemory,
  26009. /* mips_msub */ DoesNotAccessMemory,
  26010. /* mips_msubu */ DoesNotAccessMemory,
  26011. /* mips_mthlip */ UnknownModRefBehavior,
  26012. /* mips_mul_ph */ UnknownModRefBehavior,
  26013. /* mips_mul_s_ph */ UnknownModRefBehavior,
  26014. /* mips_muleq_s_w_phl */ UnknownModRefBehavior,
  26015. /* mips_muleq_s_w_phr */ UnknownModRefBehavior,
  26016. /* mips_muleu_s_ph_qbl */ UnknownModRefBehavior,
  26017. /* mips_muleu_s_ph_qbr */ UnknownModRefBehavior,
  26018. /* mips_mulq_rs_ph */ UnknownModRefBehavior,
  26019. /* mips_mulq_rs_w */ UnknownModRefBehavior,
  26020. /* mips_mulq_s_ph */ UnknownModRefBehavior,
  26021. /* mips_mulq_s_w */ UnknownModRefBehavior,
  26022. /* mips_mulsa_w_ph */ DoesNotAccessMemory,
  26023. /* mips_mulsaq_s_w_ph */ UnknownModRefBehavior,
  26024. /* mips_mult */ DoesNotAccessMemory,
  26025. /* mips_multu */ DoesNotAccessMemory,
  26026. /* mips_packrl_ph */ DoesNotAccessMemory,
  26027. /* mips_pick_ph */ OnlyReadsMemory,
  26028. /* mips_pick_qb */ OnlyReadsMemory,
  26029. /* mips_preceq_w_phl */ DoesNotAccessMemory,
  26030. /* mips_preceq_w_phr */ DoesNotAccessMemory,
  26031. /* mips_precequ_ph_qbl */ DoesNotAccessMemory,
  26032. /* mips_precequ_ph_qbla */ DoesNotAccessMemory,
  26033. /* mips_precequ_ph_qbr */ DoesNotAccessMemory,
  26034. /* mips_precequ_ph_qbra */ DoesNotAccessMemory,
  26035. /* mips_preceu_ph_qbl */ DoesNotAccessMemory,
  26036. /* mips_preceu_ph_qbla */ DoesNotAccessMemory,
  26037. /* mips_preceu_ph_qbr */ DoesNotAccessMemory,
  26038. /* mips_preceu_ph_qbra */ DoesNotAccessMemory,
  26039. /* mips_precr_qb_ph */ UnknownModRefBehavior,
  26040. /* mips_precr_sra_ph_w */ DoesNotAccessMemory,
  26041. /* mips_precr_sra_r_ph_w */ DoesNotAccessMemory,
  26042. /* mips_precrq_ph_w */ DoesNotAccessMemory,
  26043. /* mips_precrq_qb_ph */ DoesNotAccessMemory,
  26044. /* mips_precrq_rs_ph_w */ UnknownModRefBehavior,
  26045. /* mips_precrqu_s_qb_ph */ UnknownModRefBehavior,
  26046. /* mips_prepend */ DoesNotAccessMemory,
  26047. /* mips_raddu_w_qb */ DoesNotAccessMemory,
  26048. /* mips_rddsp */ OnlyReadsMemory,
  26049. /* mips_repl_ph */ DoesNotAccessMemory,
  26050. /* mips_repl_qb */ DoesNotAccessMemory,
  26051. /* mips_shilo */ DoesNotAccessMemory,
  26052. /* mips_shll_ph */ UnknownModRefBehavior,
  26053. /* mips_shll_qb */ UnknownModRefBehavior,
  26054. /* mips_shll_s_ph */ UnknownModRefBehavior,
  26055. /* mips_shll_s_w */ UnknownModRefBehavior,
  26056. /* mips_shra_ph */ DoesNotAccessMemory,
  26057. /* mips_shra_qb */ DoesNotAccessMemory,
  26058. /* mips_shra_r_ph */ DoesNotAccessMemory,
  26059. /* mips_shra_r_qb */ DoesNotAccessMemory,
  26060. /* mips_shra_r_w */ DoesNotAccessMemory,
  26061. /* mips_shrl_ph */ DoesNotAccessMemory,
  26062. /* mips_shrl_qb */ DoesNotAccessMemory,
  26063. /* mips_subq_ph */ UnknownModRefBehavior,
  26064. /* mips_subq_s_ph */ UnknownModRefBehavior,
  26065. /* mips_subq_s_w */ UnknownModRefBehavior,
  26066. /* mips_subqh_ph */ DoesNotAccessMemory,
  26067. /* mips_subqh_r_ph */ DoesNotAccessMemory,
  26068. /* mips_subqh_r_w */ DoesNotAccessMemory,
  26069. /* mips_subqh_w */ DoesNotAccessMemory,
  26070. /* mips_subu_ph */ UnknownModRefBehavior,
  26071. /* mips_subu_qb */ UnknownModRefBehavior,
  26072. /* mips_subu_s_ph */ UnknownModRefBehavior,
  26073. /* mips_subu_s_qb */ UnknownModRefBehavior,
  26074. /* mips_subuh_qb */ DoesNotAccessMemory,
  26075. /* mips_subuh_r_qb */ DoesNotAccessMemory,
  26076. /* mips_wrdsp */ UnknownModRefBehavior,
  26077. /* nearbyint */ OnlyReadsMemory,
  26078. /* nvvm_abs_i */ DoesNotAccessMemory,
  26079. /* nvvm_abs_ll */ DoesNotAccessMemory,
  26080. /* nvvm_add_rm_d */ DoesNotAccessMemory,
  26081. /* nvvm_add_rm_f */ DoesNotAccessMemory,
  26082. /* nvvm_add_rm_ftz_f */ DoesNotAccessMemory,
  26083. /* nvvm_add_rn_d */ DoesNotAccessMemory,
  26084. /* nvvm_add_rn_f */ DoesNotAccessMemory,
  26085. /* nvvm_add_rn_ftz_f */ DoesNotAccessMemory,
  26086. /* nvvm_add_rp_d */ DoesNotAccessMemory,
  26087. /* nvvm_add_rp_f */ DoesNotAccessMemory,
  26088. /* nvvm_add_rp_ftz_f */ DoesNotAccessMemory,
  26089. /* nvvm_add_rz_d */ DoesNotAccessMemory,
  26090. /* nvvm_add_rz_f */ DoesNotAccessMemory,
  26091. /* nvvm_add_rz_ftz_f */ DoesNotAccessMemory,
  26092. /* nvvm_atomic_load_add_f32 */ OnlyAccessesArgumentPointees,
  26093. /* nvvm_atomic_load_dec_32 */ OnlyAccessesArgumentPointees,
  26094. /* nvvm_atomic_load_inc_32 */ OnlyAccessesArgumentPointees,
  26095. /* nvvm_barrier0 */ UnknownModRefBehavior,
  26096. /* nvvm_barrier0_and */ UnknownModRefBehavior,
  26097. /* nvvm_barrier0_or */ UnknownModRefBehavior,
  26098. /* nvvm_barrier0_popc */ UnknownModRefBehavior,
  26099. /* nvvm_bitcast_d2ll */ DoesNotAccessMemory,
  26100. /* nvvm_bitcast_f2i */ DoesNotAccessMemory,
  26101. /* nvvm_bitcast_i2f */ DoesNotAccessMemory,
  26102. /* nvvm_bitcast_ll2d */ DoesNotAccessMemory,
  26103. /* nvvm_brev32 */ DoesNotAccessMemory,
  26104. /* nvvm_brev64 */ DoesNotAccessMemory,
  26105. /* nvvm_ceil_d */ DoesNotAccessMemory,
  26106. /* nvvm_ceil_f */ DoesNotAccessMemory,
  26107. /* nvvm_ceil_ftz_f */ DoesNotAccessMemory,
  26108. /* nvvm_clz_i */ DoesNotAccessMemory,
  26109. /* nvvm_clz_ll */ DoesNotAccessMemory,
  26110. /* nvvm_compiler_error */ UnknownModRefBehavior,
  26111. /* nvvm_compiler_warn */ UnknownModRefBehavior,
  26112. /* nvvm_cos_approx_f */ DoesNotAccessMemory,
  26113. /* nvvm_cos_approx_ftz_f */ DoesNotAccessMemory,
  26114. /* nvvm_d2f_rm */ DoesNotAccessMemory,
  26115. /* nvvm_d2f_rm_ftz */ DoesNotAccessMemory,
  26116. /* nvvm_d2f_rn */ DoesNotAccessMemory,
  26117. /* nvvm_d2f_rn_ftz */ DoesNotAccessMemory,
  26118. /* nvvm_d2f_rp */ DoesNotAccessMemory,
  26119. /* nvvm_d2f_rp_ftz */ DoesNotAccessMemory,
  26120. /* nvvm_d2f_rz */ DoesNotAccessMemory,
  26121. /* nvvm_d2f_rz_ftz */ DoesNotAccessMemory,
  26122. /* nvvm_d2i_hi */ DoesNotAccessMemory,
  26123. /* nvvm_d2i_lo */ DoesNotAccessMemory,
  26124. /* nvvm_d2i_rm */ DoesNotAccessMemory,
  26125. /* nvvm_d2i_rn */ DoesNotAccessMemory,
  26126. /* nvvm_d2i_rp */ DoesNotAccessMemory,
  26127. /* nvvm_d2i_rz */ DoesNotAccessMemory,
  26128. /* nvvm_d2ll_rm */ DoesNotAccessMemory,
  26129. /* nvvm_d2ll_rn */ DoesNotAccessMemory,
  26130. /* nvvm_d2ll_rp */ DoesNotAccessMemory,
  26131. /* nvvm_d2ll_rz */ DoesNotAccessMemory,
  26132. /* nvvm_d2ui_rm */ DoesNotAccessMemory,
  26133. /* nvvm_d2ui_rn */ DoesNotAccessMemory,
  26134. /* nvvm_d2ui_rp */ DoesNotAccessMemory,
  26135. /* nvvm_d2ui_rz */ DoesNotAccessMemory,
  26136. /* nvvm_d2ull_rm */ DoesNotAccessMemory,
  26137. /* nvvm_d2ull_rn */ DoesNotAccessMemory,
  26138. /* nvvm_d2ull_rp */ DoesNotAccessMemory,
  26139. /* nvvm_d2ull_rz */ DoesNotAccessMemory,
  26140. /* nvvm_div_approx_f */ DoesNotAccessMemory,
  26141. /* nvvm_div_approx_ftz_f */ DoesNotAccessMemory,
  26142. /* nvvm_div_rm_d */ DoesNotAccessMemory,
  26143. /* nvvm_div_rm_f */ DoesNotAccessMemory,
  26144. /* nvvm_div_rm_ftz_f */ DoesNotAccessMemory,
  26145. /* nvvm_div_rn_d */ DoesNotAccessMemory,
  26146. /* nvvm_div_rn_f */ DoesNotAccessMemory,
  26147. /* nvvm_div_rn_ftz_f */ DoesNotAccessMemory,
  26148. /* nvvm_div_rp_d */ DoesNotAccessMemory,
  26149. /* nvvm_div_rp_f */ DoesNotAccessMemory,
  26150. /* nvvm_div_rp_ftz_f */ DoesNotAccessMemory,
  26151. /* nvvm_div_rz_d */ DoesNotAccessMemory,
  26152. /* nvvm_div_rz_f */ DoesNotAccessMemory,
  26153. /* nvvm_div_rz_ftz_f */ DoesNotAccessMemory,
  26154. /* nvvm_ex2_approx_d */ DoesNotAccessMemory,
  26155. /* nvvm_ex2_approx_f */ DoesNotAccessMemory,
  26156. /* nvvm_ex2_approx_ftz_f */ DoesNotAccessMemory,
  26157. /* nvvm_f2h_rn */ DoesNotAccessMemory,
  26158. /* nvvm_f2h_rn_ftz */ DoesNotAccessMemory,
  26159. /* nvvm_f2i_rm */ DoesNotAccessMemory,
  26160. /* nvvm_f2i_rm_ftz */ DoesNotAccessMemory,
  26161. /* nvvm_f2i_rn */ DoesNotAccessMemory,
  26162. /* nvvm_f2i_rn_ftz */ DoesNotAccessMemory,
  26163. /* nvvm_f2i_rp */ DoesNotAccessMemory,
  26164. /* nvvm_f2i_rp_ftz */ DoesNotAccessMemory,
  26165. /* nvvm_f2i_rz */ DoesNotAccessMemory,
  26166. /* nvvm_f2i_rz_ftz */ DoesNotAccessMemory,
  26167. /* nvvm_f2ll_rm */ DoesNotAccessMemory,
  26168. /* nvvm_f2ll_rm_ftz */ DoesNotAccessMemory,
  26169. /* nvvm_f2ll_rn */ DoesNotAccessMemory,
  26170. /* nvvm_f2ll_rn_ftz */ DoesNotAccessMemory,
  26171. /* nvvm_f2ll_rp */ DoesNotAccessMemory,
  26172. /* nvvm_f2ll_rp_ftz */ DoesNotAccessMemory,
  26173. /* nvvm_f2ll_rz */ DoesNotAccessMemory,
  26174. /* nvvm_f2ll_rz_ftz */ DoesNotAccessMemory,
  26175. /* nvvm_f2ui_rm */ DoesNotAccessMemory,
  26176. /* nvvm_f2ui_rm_ftz */ DoesNotAccessMemory,
  26177. /* nvvm_f2ui_rn */ DoesNotAccessMemory,
  26178. /* nvvm_f2ui_rn_ftz */ DoesNotAccessMemory,
  26179. /* nvvm_f2ui_rp */ DoesNotAccessMemory,
  26180. /* nvvm_f2ui_rp_ftz */ DoesNotAccessMemory,
  26181. /* nvvm_f2ui_rz */ DoesNotAccessMemory,
  26182. /* nvvm_f2ui_rz_ftz */ DoesNotAccessMemory,
  26183. /* nvvm_f2ull_rm */ DoesNotAccessMemory,
  26184. /* nvvm_f2ull_rm_ftz */ DoesNotAccessMemory,
  26185. /* nvvm_f2ull_rn */ DoesNotAccessMemory,
  26186. /* nvvm_f2ull_rn_ftz */ DoesNotAccessMemory,
  26187. /* nvvm_f2ull_rp */ DoesNotAccessMemory,
  26188. /* nvvm_f2ull_rp_ftz */ DoesNotAccessMemory,
  26189. /* nvvm_f2ull_rz */ DoesNotAccessMemory,
  26190. /* nvvm_f2ull_rz_ftz */ DoesNotAccessMemory,
  26191. /* nvvm_fabs_d */ DoesNotAccessMemory,
  26192. /* nvvm_fabs_f */ DoesNotAccessMemory,
  26193. /* nvvm_fabs_ftz_f */ DoesNotAccessMemory,
  26194. /* nvvm_floor_d */ DoesNotAccessMemory,
  26195. /* nvvm_floor_f */ DoesNotAccessMemory,
  26196. /* nvvm_floor_ftz_f */ DoesNotAccessMemory,
  26197. /* nvvm_fma_rm_d */ DoesNotAccessMemory,
  26198. /* nvvm_fma_rm_f */ DoesNotAccessMemory,
  26199. /* nvvm_fma_rm_ftz_f */ DoesNotAccessMemory,
  26200. /* nvvm_fma_rn_d */ DoesNotAccessMemory,
  26201. /* nvvm_fma_rn_f */ DoesNotAccessMemory,
  26202. /* nvvm_fma_rn_ftz_f */ DoesNotAccessMemory,
  26203. /* nvvm_fma_rp_d */ DoesNotAccessMemory,
  26204. /* nvvm_fma_rp_f */ DoesNotAccessMemory,
  26205. /* nvvm_fma_rp_ftz_f */ DoesNotAccessMemory,
  26206. /* nvvm_fma_rz_d */ DoesNotAccessMemory,
  26207. /* nvvm_fma_rz_f */ DoesNotAccessMemory,
  26208. /* nvvm_fma_rz_ftz_f */ DoesNotAccessMemory,
  26209. /* nvvm_fmax_d */ DoesNotAccessMemory,
  26210. /* nvvm_fmax_f */ DoesNotAccessMemory,
  26211. /* nvvm_fmax_ftz_f */ DoesNotAccessMemory,
  26212. /* nvvm_fmin_d */ DoesNotAccessMemory,
  26213. /* nvvm_fmin_f */ DoesNotAccessMemory,
  26214. /* nvvm_fmin_ftz_f */ DoesNotAccessMemory,
  26215. /* nvvm_h2f */ DoesNotAccessMemory,
  26216. /* nvvm_i2d_rm */ DoesNotAccessMemory,
  26217. /* nvvm_i2d_rn */ DoesNotAccessMemory,
  26218. /* nvvm_i2d_rp */ DoesNotAccessMemory,
  26219. /* nvvm_i2d_rz */ DoesNotAccessMemory,
  26220. /* nvvm_i2f_rm */ DoesNotAccessMemory,
  26221. /* nvvm_i2f_rn */ DoesNotAccessMemory,
  26222. /* nvvm_i2f_rp */ DoesNotAccessMemory,
  26223. /* nvvm_i2f_rz */ DoesNotAccessMemory,
  26224. /* nvvm_ldg_global_f */ OnlyReadsMemory,
  26225. /* nvvm_ldg_global_i */ OnlyReadsMemory,
  26226. /* nvvm_ldg_global_p */ OnlyReadsMemory,
  26227. /* nvvm_ldu_global_f */ OnlyReadsMemory,
  26228. /* nvvm_ldu_global_i */ OnlyReadsMemory,
  26229. /* nvvm_ldu_global_p */ OnlyReadsMemory,
  26230. /* nvvm_lg2_approx_d */ DoesNotAccessMemory,
  26231. /* nvvm_lg2_approx_f */ DoesNotAccessMemory,
  26232. /* nvvm_lg2_approx_ftz_f */ DoesNotAccessMemory,
  26233. /* nvvm_ll2d_rm */ DoesNotAccessMemory,
  26234. /* nvvm_ll2d_rn */ DoesNotAccessMemory,
  26235. /* nvvm_ll2d_rp */ DoesNotAccessMemory,
  26236. /* nvvm_ll2d_rz */ DoesNotAccessMemory,
  26237. /* nvvm_ll2f_rm */ DoesNotAccessMemory,
  26238. /* nvvm_ll2f_rn */ DoesNotAccessMemory,
  26239. /* nvvm_ll2f_rp */ DoesNotAccessMemory,
  26240. /* nvvm_ll2f_rz */ DoesNotAccessMemory,
  26241. /* nvvm_lohi_i2d */ DoesNotAccessMemory,
  26242. /* nvvm_max_i */ DoesNotAccessMemory,
  26243. /* nvvm_max_ll */ DoesNotAccessMemory,
  26244. /* nvvm_max_ui */ DoesNotAccessMemory,
  26245. /* nvvm_max_ull */ DoesNotAccessMemory,
  26246. /* nvvm_membar_cta */ UnknownModRefBehavior,
  26247. /* nvvm_membar_gl */ UnknownModRefBehavior,
  26248. /* nvvm_membar_sys */ UnknownModRefBehavior,
  26249. /* nvvm_min_i */ DoesNotAccessMemory,
  26250. /* nvvm_min_ll */ DoesNotAccessMemory,
  26251. /* nvvm_min_ui */ DoesNotAccessMemory,
  26252. /* nvvm_min_ull */ DoesNotAccessMemory,
  26253. /* nvvm_move_double */ DoesNotAccessMemory,
  26254. /* nvvm_move_float */ DoesNotAccessMemory,
  26255. /* nvvm_move_i16 */ DoesNotAccessMemory,
  26256. /* nvvm_move_i32 */ DoesNotAccessMemory,
  26257. /* nvvm_move_i64 */ DoesNotAccessMemory,
  26258. /* nvvm_move_i8 */ DoesNotAccessMemory,
  26259. /* nvvm_move_ptr */ DoesNotAccessMemory,
  26260. /* nvvm_mul24_i */ DoesNotAccessMemory,
  26261. /* nvvm_mul24_ui */ DoesNotAccessMemory,
  26262. /* nvvm_mul_rm_d */ DoesNotAccessMemory,
  26263. /* nvvm_mul_rm_f */ DoesNotAccessMemory,
  26264. /* nvvm_mul_rm_ftz_f */ DoesNotAccessMemory,
  26265. /* nvvm_mul_rn_d */ DoesNotAccessMemory,
  26266. /* nvvm_mul_rn_f */ DoesNotAccessMemory,
  26267. /* nvvm_mul_rn_ftz_f */ DoesNotAccessMemory,
  26268. /* nvvm_mul_rp_d */ DoesNotAccessMemory,
  26269. /* nvvm_mul_rp_f */ DoesNotAccessMemory,
  26270. /* nvvm_mul_rp_ftz_f */ DoesNotAccessMemory,
  26271. /* nvvm_mul_rz_d */ DoesNotAccessMemory,
  26272. /* nvvm_mul_rz_f */ DoesNotAccessMemory,
  26273. /* nvvm_mul_rz_ftz_f */ DoesNotAccessMemory,
  26274. /* nvvm_mulhi_i */ DoesNotAccessMemory,
  26275. /* nvvm_mulhi_ll */ DoesNotAccessMemory,
  26276. /* nvvm_mulhi_ui */ DoesNotAccessMemory,
  26277. /* nvvm_mulhi_ull */ DoesNotAccessMemory,
  26278. /* nvvm_popc_i */ DoesNotAccessMemory,
  26279. /* nvvm_popc_ll */ DoesNotAccessMemory,
  26280. /* nvvm_prmt */ DoesNotAccessMemory,
  26281. /* nvvm_ptr_constant_to_gen */ DoesNotAccessMemory,
  26282. /* nvvm_ptr_gen_to_constant */ DoesNotAccessMemory,
  26283. /* nvvm_ptr_gen_to_global */ DoesNotAccessMemory,
  26284. /* nvvm_ptr_gen_to_local */ DoesNotAccessMemory,
  26285. /* nvvm_ptr_gen_to_param */ DoesNotAccessMemory,
  26286. /* nvvm_ptr_gen_to_shared */ DoesNotAccessMemory,
  26287. /* nvvm_ptr_global_to_gen */ DoesNotAccessMemory,
  26288. /* nvvm_ptr_local_to_gen */ DoesNotAccessMemory,
  26289. /* nvvm_ptr_shared_to_gen */ DoesNotAccessMemory,
  26290. /* nvvm_rcp_approx_ftz_d */ DoesNotAccessMemory,
  26291. /* nvvm_rcp_rm_d */ DoesNotAccessMemory,
  26292. /* nvvm_rcp_rm_f */ DoesNotAccessMemory,
  26293. /* nvvm_rcp_rm_ftz_f */ DoesNotAccessMemory,
  26294. /* nvvm_rcp_rn_d */ DoesNotAccessMemory,
  26295. /* nvvm_rcp_rn_f */ DoesNotAccessMemory,
  26296. /* nvvm_rcp_rn_ftz_f */ DoesNotAccessMemory,
  26297. /* nvvm_rcp_rp_d */ DoesNotAccessMemory,
  26298. /* nvvm_rcp_rp_f */ DoesNotAccessMemory,
  26299. /* nvvm_rcp_rp_ftz_f */ DoesNotAccessMemory,
  26300. /* nvvm_rcp_rz_d */ DoesNotAccessMemory,
  26301. /* nvvm_rcp_rz_f */ DoesNotAccessMemory,
  26302. /* nvvm_rcp_rz_ftz_f */ DoesNotAccessMemory,
  26303. /* nvvm_read_ptx_sreg_ctaid_x */ DoesNotAccessMemory,
  26304. /* nvvm_read_ptx_sreg_ctaid_y */ DoesNotAccessMemory,
  26305. /* nvvm_read_ptx_sreg_ctaid_z */ DoesNotAccessMemory,
  26306. /* nvvm_read_ptx_sreg_nctaid_x */ DoesNotAccessMemory,
  26307. /* nvvm_read_ptx_sreg_nctaid_y */ DoesNotAccessMemory,
  26308. /* nvvm_read_ptx_sreg_nctaid_z */ DoesNotAccessMemory,
  26309. /* nvvm_read_ptx_sreg_ntid_x */ DoesNotAccessMemory,
  26310. /* nvvm_read_ptx_sreg_ntid_y */ DoesNotAccessMemory,
  26311. /* nvvm_read_ptx_sreg_ntid_z */ DoesNotAccessMemory,
  26312. /* nvvm_read_ptx_sreg_tid_x */ DoesNotAccessMemory,
  26313. /* nvvm_read_ptx_sreg_tid_y */ DoesNotAccessMemory,
  26314. /* nvvm_read_ptx_sreg_tid_z */ DoesNotAccessMemory,
  26315. /* nvvm_read_ptx_sreg_warpsize */ DoesNotAccessMemory,
  26316. /* nvvm_round_d */ DoesNotAccessMemory,
  26317. /* nvvm_round_f */ DoesNotAccessMemory,
  26318. /* nvvm_round_ftz_f */ DoesNotAccessMemory,
  26319. /* nvvm_rsqrt_approx_d */ DoesNotAccessMemory,
  26320. /* nvvm_rsqrt_approx_f */ DoesNotAccessMemory,
  26321. /* nvvm_rsqrt_approx_ftz_f */ DoesNotAccessMemory,
  26322. /* nvvm_sad_i */ DoesNotAccessMemory,
  26323. /* nvvm_sad_ui */ DoesNotAccessMemory,
  26324. /* nvvm_saturate_d */ DoesNotAccessMemory,
  26325. /* nvvm_saturate_f */ DoesNotAccessMemory,
  26326. /* nvvm_saturate_ftz_f */ DoesNotAccessMemory,
  26327. /* nvvm_sin_approx_f */ DoesNotAccessMemory,
  26328. /* nvvm_sin_approx_ftz_f */ DoesNotAccessMemory,
  26329. /* nvvm_sqrt_approx_f */ DoesNotAccessMemory,
  26330. /* nvvm_sqrt_approx_ftz_f */ DoesNotAccessMemory,
  26331. /* nvvm_sqrt_rm_d */ DoesNotAccessMemory,
  26332. /* nvvm_sqrt_rm_f */ DoesNotAccessMemory,
  26333. /* nvvm_sqrt_rm_ftz_f */ DoesNotAccessMemory,
  26334. /* nvvm_sqrt_rn_d */ DoesNotAccessMemory,
  26335. /* nvvm_sqrt_rn_f */ DoesNotAccessMemory,
  26336. /* nvvm_sqrt_rn_ftz_f */ DoesNotAccessMemory,
  26337. /* nvvm_sqrt_rp_d */ DoesNotAccessMemory,
  26338. /* nvvm_sqrt_rp_f */ DoesNotAccessMemory,
  26339. /* nvvm_sqrt_rp_ftz_f */ DoesNotAccessMemory,
  26340. /* nvvm_sqrt_rz_d */ DoesNotAccessMemory,
  26341. /* nvvm_sqrt_rz_f */ DoesNotAccessMemory,
  26342. /* nvvm_sqrt_rz_ftz_f */ DoesNotAccessMemory,
  26343. /* nvvm_trunc_d */ DoesNotAccessMemory,
  26344. /* nvvm_trunc_f */ DoesNotAccessMemory,
  26345. /* nvvm_trunc_ftz_f */ DoesNotAccessMemory,
  26346. /* nvvm_ui2d_rm */ DoesNotAccessMemory,
  26347. /* nvvm_ui2d_rn */ DoesNotAccessMemory,
  26348. /* nvvm_ui2d_rp */ DoesNotAccessMemory,
  26349. /* nvvm_ui2d_rz */ DoesNotAccessMemory,
  26350. /* nvvm_ui2f_rm */ DoesNotAccessMemory,
  26351. /* nvvm_ui2f_rn */ DoesNotAccessMemory,
  26352. /* nvvm_ui2f_rp */ DoesNotAccessMemory,
  26353. /* nvvm_ui2f_rz */ DoesNotAccessMemory,
  26354. /* nvvm_ull2d_rm */ DoesNotAccessMemory,
  26355. /* nvvm_ull2d_rn */ DoesNotAccessMemory,
  26356. /* nvvm_ull2d_rp */ DoesNotAccessMemory,
  26357. /* nvvm_ull2d_rz */ DoesNotAccessMemory,
  26358. /* nvvm_ull2f_rm */ DoesNotAccessMemory,
  26359. /* nvvm_ull2f_rn */ DoesNotAccessMemory,
  26360. /* nvvm_ull2f_rp */ DoesNotAccessMemory,
  26361. /* nvvm_ull2f_rz */ DoesNotAccessMemory,
  26362. /* objectsize */ DoesNotAccessMemory,
  26363. /* pcmarker */ UnknownModRefBehavior,
  26364. /* pow */ OnlyReadsMemory,
  26365. /* powi */ OnlyReadsMemory,
  26366. /* ppc_altivec_dss */ UnknownModRefBehavior,
  26367. /* ppc_altivec_dssall */ UnknownModRefBehavior,
  26368. /* ppc_altivec_dst */ UnknownModRefBehavior,
  26369. /* ppc_altivec_dstst */ UnknownModRefBehavior,
  26370. /* ppc_altivec_dststt */ UnknownModRefBehavior,
  26371. /* ppc_altivec_dstt */ UnknownModRefBehavior,
  26372. /* ppc_altivec_lvebx */ OnlyReadsArgumentPointees,
  26373. /* ppc_altivec_lvehx */ OnlyReadsArgumentPointees,
  26374. /* ppc_altivec_lvewx */ OnlyReadsArgumentPointees,
  26375. /* ppc_altivec_lvsl */ DoesNotAccessMemory,
  26376. /* ppc_altivec_lvsr */ DoesNotAccessMemory,
  26377. /* ppc_altivec_lvx */ OnlyReadsArgumentPointees,
  26378. /* ppc_altivec_lvxl */ OnlyReadsArgumentPointees,
  26379. /* ppc_altivec_mfvscr */ OnlyReadsMemory,
  26380. /* ppc_altivec_mtvscr */ UnknownModRefBehavior,
  26381. /* ppc_altivec_stvebx */ OnlyAccessesArgumentPointees,
  26382. /* ppc_altivec_stvehx */ OnlyAccessesArgumentPointees,
  26383. /* ppc_altivec_stvewx */ OnlyAccessesArgumentPointees,
  26384. /* ppc_altivec_stvx */ OnlyAccessesArgumentPointees,
  26385. /* ppc_altivec_stvxl */ OnlyAccessesArgumentPointees,
  26386. /* ppc_altivec_vaddcuw */ DoesNotAccessMemory,
  26387. /* ppc_altivec_vaddsbs */ DoesNotAccessMemory,
  26388. /* ppc_altivec_vaddshs */ DoesNotAccessMemory,
  26389. /* ppc_altivec_vaddsws */ DoesNotAccessMemory,
  26390. /* ppc_altivec_vaddubs */ DoesNotAccessMemory,
  26391. /* ppc_altivec_vadduhs */ DoesNotAccessMemory,
  26392. /* ppc_altivec_vadduws */ DoesNotAccessMemory,
  26393. /* ppc_altivec_vavgsb */ DoesNotAccessMemory,
  26394. /* ppc_altivec_vavgsh */ DoesNotAccessMemory,
  26395. /* ppc_altivec_vavgsw */ DoesNotAccessMemory,
  26396. /* ppc_altivec_vavgub */ DoesNotAccessMemory,
  26397. /* ppc_altivec_vavguh */ DoesNotAccessMemory,
  26398. /* ppc_altivec_vavguw */ DoesNotAccessMemory,
  26399. /* ppc_altivec_vcfsx */ DoesNotAccessMemory,
  26400. /* ppc_altivec_vcfux */ DoesNotAccessMemory,
  26401. /* ppc_altivec_vcmpbfp */ DoesNotAccessMemory,
  26402. /* ppc_altivec_vcmpbfp_p */ DoesNotAccessMemory,
  26403. /* ppc_altivec_vcmpeqfp */ DoesNotAccessMemory,
  26404. /* ppc_altivec_vcmpeqfp_p */ DoesNotAccessMemory,
  26405. /* ppc_altivec_vcmpequb */ DoesNotAccessMemory,
  26406. /* ppc_altivec_vcmpequb_p */ DoesNotAccessMemory,
  26407. /* ppc_altivec_vcmpequh */ DoesNotAccessMemory,
  26408. /* ppc_altivec_vcmpequh_p */ DoesNotAccessMemory,
  26409. /* ppc_altivec_vcmpequw */ DoesNotAccessMemory,
  26410. /* ppc_altivec_vcmpequw_p */ DoesNotAccessMemory,
  26411. /* ppc_altivec_vcmpgefp */ DoesNotAccessMemory,
  26412. /* ppc_altivec_vcmpgefp_p */ DoesNotAccessMemory,
  26413. /* ppc_altivec_vcmpgtfp */ DoesNotAccessMemory,
  26414. /* ppc_altivec_vcmpgtfp_p */ DoesNotAccessMemory,
  26415. /* ppc_altivec_vcmpgtsb */ DoesNotAccessMemory,
  26416. /* ppc_altivec_vcmpgtsb_p */ DoesNotAccessMemory,
  26417. /* ppc_altivec_vcmpgtsh */ DoesNotAccessMemory,
  26418. /* ppc_altivec_vcmpgtsh_p */ DoesNotAccessMemory,
  26419. /* ppc_altivec_vcmpgtsw */ DoesNotAccessMemory,
  26420. /* ppc_altivec_vcmpgtsw_p */ DoesNotAccessMemory,
  26421. /* ppc_altivec_vcmpgtub */ DoesNotAccessMemory,
  26422. /* ppc_altivec_vcmpgtub_p */ DoesNotAccessMemory,
  26423. /* ppc_altivec_vcmpgtuh */ DoesNotAccessMemory,
  26424. /* ppc_altivec_vcmpgtuh_p */ DoesNotAccessMemory,
  26425. /* ppc_altivec_vcmpgtuw */ DoesNotAccessMemory,
  26426. /* ppc_altivec_vcmpgtuw_p */ DoesNotAccessMemory,
  26427. /* ppc_altivec_vctsxs */ DoesNotAccessMemory,
  26428. /* ppc_altivec_vctuxs */ DoesNotAccessMemory,
  26429. /* ppc_altivec_vexptefp */ DoesNotAccessMemory,
  26430. /* ppc_altivec_vlogefp */ DoesNotAccessMemory,
  26431. /* ppc_altivec_vmaddfp */ DoesNotAccessMemory,
  26432. /* ppc_altivec_vmaxfp */ DoesNotAccessMemory,
  26433. /* ppc_altivec_vmaxsb */ DoesNotAccessMemory,
  26434. /* ppc_altivec_vmaxsh */ DoesNotAccessMemory,
  26435. /* ppc_altivec_vmaxsw */ DoesNotAccessMemory,
  26436. /* ppc_altivec_vmaxub */ DoesNotAccessMemory,
  26437. /* ppc_altivec_vmaxuh */ DoesNotAccessMemory,
  26438. /* ppc_altivec_vmaxuw */ DoesNotAccessMemory,
  26439. /* ppc_altivec_vmhaddshs */ DoesNotAccessMemory,
  26440. /* ppc_altivec_vmhraddshs */ DoesNotAccessMemory,
  26441. /* ppc_altivec_vminfp */ DoesNotAccessMemory,
  26442. /* ppc_altivec_vminsb */ DoesNotAccessMemory,
  26443. /* ppc_altivec_vminsh */ DoesNotAccessMemory,
  26444. /* ppc_altivec_vminsw */ DoesNotAccessMemory,
  26445. /* ppc_altivec_vminub */ DoesNotAccessMemory,
  26446. /* ppc_altivec_vminuh */ DoesNotAccessMemory,
  26447. /* ppc_altivec_vminuw */ DoesNotAccessMemory,
  26448. /* ppc_altivec_vmladduhm */ DoesNotAccessMemory,
  26449. /* ppc_altivec_vmsummbm */ DoesNotAccessMemory,
  26450. /* ppc_altivec_vmsumshm */ DoesNotAccessMemory,
  26451. /* ppc_altivec_vmsumshs */ DoesNotAccessMemory,
  26452. /* ppc_altivec_vmsumubm */ DoesNotAccessMemory,
  26453. /* ppc_altivec_vmsumuhm */ DoesNotAccessMemory,
  26454. /* ppc_altivec_vmsumuhs */ DoesNotAccessMemory,
  26455. /* ppc_altivec_vmulesb */ DoesNotAccessMemory,
  26456. /* ppc_altivec_vmulesh */ DoesNotAccessMemory,
  26457. /* ppc_altivec_vmuleub */ DoesNotAccessMemory,
  26458. /* ppc_altivec_vmuleuh */ DoesNotAccessMemory,
  26459. /* ppc_altivec_vmulosb */ DoesNotAccessMemory,
  26460. /* ppc_altivec_vmulosh */ DoesNotAccessMemory,
  26461. /* ppc_altivec_vmuloub */ DoesNotAccessMemory,
  26462. /* ppc_altivec_vmulouh */ DoesNotAccessMemory,
  26463. /* ppc_altivec_vnmsubfp */ DoesNotAccessMemory,
  26464. /* ppc_altivec_vperm */ DoesNotAccessMemory,
  26465. /* ppc_altivec_vpkpx */ DoesNotAccessMemory,
  26466. /* ppc_altivec_vpkshss */ DoesNotAccessMemory,
  26467. /* ppc_altivec_vpkshus */ DoesNotAccessMemory,
  26468. /* ppc_altivec_vpkswss */ DoesNotAccessMemory,
  26469. /* ppc_altivec_vpkswus */ DoesNotAccessMemory,
  26470. /* ppc_altivec_vpkuhus */ DoesNotAccessMemory,
  26471. /* ppc_altivec_vpkuwus */ DoesNotAccessMemory,
  26472. /* ppc_altivec_vrefp */ DoesNotAccessMemory,
  26473. /* ppc_altivec_vrfim */ DoesNotAccessMemory,
  26474. /* ppc_altivec_vrfin */ DoesNotAccessMemory,
  26475. /* ppc_altivec_vrfip */ DoesNotAccessMemory,
  26476. /* ppc_altivec_vrfiz */ DoesNotAccessMemory,
  26477. /* ppc_altivec_vrlb */ DoesNotAccessMemory,
  26478. /* ppc_altivec_vrlh */ DoesNotAccessMemory,
  26479. /* ppc_altivec_vrlw */ DoesNotAccessMemory,
  26480. /* ppc_altivec_vrsqrtefp */ DoesNotAccessMemory,
  26481. /* ppc_altivec_vsel */ DoesNotAccessMemory,
  26482. /* ppc_altivec_vsl */ DoesNotAccessMemory,
  26483. /* ppc_altivec_vslb */ DoesNotAccessMemory,
  26484. /* ppc_altivec_vslh */ DoesNotAccessMemory,
  26485. /* ppc_altivec_vslo */ DoesNotAccessMemory,
  26486. /* ppc_altivec_vslw */ DoesNotAccessMemory,
  26487. /* ppc_altivec_vsr */ DoesNotAccessMemory,
  26488. /* ppc_altivec_vsrab */ DoesNotAccessMemory,
  26489. /* ppc_altivec_vsrah */ DoesNotAccessMemory,
  26490. /* ppc_altivec_vsraw */ DoesNotAccessMemory,
  26491. /* ppc_altivec_vsrb */ DoesNotAccessMemory,
  26492. /* ppc_altivec_vsrh */ DoesNotAccessMemory,
  26493. /* ppc_altivec_vsro */ DoesNotAccessMemory,
  26494. /* ppc_altivec_vsrw */ DoesNotAccessMemory,
  26495. /* ppc_altivec_vsubcuw */ DoesNotAccessMemory,
  26496. /* ppc_altivec_vsubsbs */ DoesNotAccessMemory,
  26497. /* ppc_altivec_vsubshs */ DoesNotAccessMemory,
  26498. /* ppc_altivec_vsubsws */ DoesNotAccessMemory,
  26499. /* ppc_altivec_vsububs */ DoesNotAccessMemory,
  26500. /* ppc_altivec_vsubuhs */ DoesNotAccessMemory,
  26501. /* ppc_altivec_vsubuws */ DoesNotAccessMemory,
  26502. /* ppc_altivec_vsum2sws */ DoesNotAccessMemory,
  26503. /* ppc_altivec_vsum4sbs */ DoesNotAccessMemory,
  26504. /* ppc_altivec_vsum4shs */ DoesNotAccessMemory,
  26505. /* ppc_altivec_vsum4ubs */ DoesNotAccessMemory,
  26506. /* ppc_altivec_vsumsws */ DoesNotAccessMemory,
  26507. /* ppc_altivec_vupkhpx */ DoesNotAccessMemory,
  26508. /* ppc_altivec_vupkhsb */ DoesNotAccessMemory,
  26509. /* ppc_altivec_vupkhsh */ DoesNotAccessMemory,
  26510. /* ppc_altivec_vupklpx */ DoesNotAccessMemory,
  26511. /* ppc_altivec_vupklsb */ DoesNotAccessMemory,
  26512. /* ppc_altivec_vupklsh */ DoesNotAccessMemory,
  26513. /* ppc_dcba */ UnknownModRefBehavior,
  26514. /* ppc_dcbf */ UnknownModRefBehavior,
  26515. /* ppc_dcbi */ UnknownModRefBehavior,
  26516. /* ppc_dcbst */ UnknownModRefBehavior,
  26517. /* ppc_dcbt */ OnlyAccessesArgumentPointees,
  26518. /* ppc_dcbtst */ UnknownModRefBehavior,
  26519. /* ppc_dcbz */ UnknownModRefBehavior,
  26520. /* ppc_dcbzl */ UnknownModRefBehavior,
  26521. /* ppc_sync */ UnknownModRefBehavior,
  26522. /* prefetch */ OnlyAccessesArgumentPointees,
  26523. /* ptr_annotation */ UnknownModRefBehavior,
  26524. /* ptx_bar_sync */ UnknownModRefBehavior,
  26525. /* ptx_read_clock */ DoesNotAccessMemory,
  26526. /* ptx_read_clock64 */ DoesNotAccessMemory,
  26527. /* ptx_read_ctaid_w */ DoesNotAccessMemory,
  26528. /* ptx_read_ctaid_x */ DoesNotAccessMemory,
  26529. /* ptx_read_ctaid_y */ DoesNotAccessMemory,
  26530. /* ptx_read_ctaid_z */ DoesNotAccessMemory,
  26531. /* ptx_read_gridid */ DoesNotAccessMemory,
  26532. /* ptx_read_laneid */ DoesNotAccessMemory,
  26533. /* ptx_read_lanemask_eq */ DoesNotAccessMemory,
  26534. /* ptx_read_lanemask_ge */ DoesNotAccessMemory,
  26535. /* ptx_read_lanemask_gt */ DoesNotAccessMemory,
  26536. /* ptx_read_lanemask_le */ DoesNotAccessMemory,
  26537. /* ptx_read_lanemask_lt */ DoesNotAccessMemory,
  26538. /* ptx_read_nctaid_w */ DoesNotAccessMemory,
  26539. /* ptx_read_nctaid_x */ DoesNotAccessMemory,
  26540. /* ptx_read_nctaid_y */ DoesNotAccessMemory,
  26541. /* ptx_read_nctaid_z */ DoesNotAccessMemory,
  26542. /* ptx_read_nsmid */ DoesNotAccessMemory,
  26543. /* ptx_read_ntid_w */ DoesNotAccessMemory,
  26544. /* ptx_read_ntid_x */ DoesNotAccessMemory,
  26545. /* ptx_read_ntid_y */ DoesNotAccessMemory,
  26546. /* ptx_read_ntid_z */ DoesNotAccessMemory,
  26547. /* ptx_read_nwarpid */ DoesNotAccessMemory,
  26548. /* ptx_read_pm0 */ DoesNotAccessMemory,
  26549. /* ptx_read_pm1 */ DoesNotAccessMemory,
  26550. /* ptx_read_pm2 */ DoesNotAccessMemory,
  26551. /* ptx_read_pm3 */ DoesNotAccessMemory,
  26552. /* ptx_read_smid */ DoesNotAccessMemory,
  26553. /* ptx_read_tid_w */ DoesNotAccessMemory,
  26554. /* ptx_read_tid_x */ DoesNotAccessMemory,
  26555. /* ptx_read_tid_y */ DoesNotAccessMemory,
  26556. /* ptx_read_tid_z */ DoesNotAccessMemory,
  26557. /* ptx_read_warpid */ DoesNotAccessMemory,
  26558. /* r600_read_global_size_x */ DoesNotAccessMemory,
  26559. /* r600_read_global_size_y */ DoesNotAccessMemory,
  26560. /* r600_read_global_size_z */ DoesNotAccessMemory,
  26561. /* r600_read_local_size_x */ DoesNotAccessMemory,
  26562. /* r600_read_local_size_y */ DoesNotAccessMemory,
  26563. /* r600_read_local_size_z */ DoesNotAccessMemory,
  26564. /* r600_read_ngroups_x */ DoesNotAccessMemory,
  26565. /* r600_read_ngroups_y */ DoesNotAccessMemory,
  26566. /* r600_read_ngroups_z */ DoesNotAccessMemory,
  26567. /* r600_read_tgid_x */ DoesNotAccessMemory,
  26568. /* r600_read_tgid_y */ DoesNotAccessMemory,
  26569. /* r600_read_tgid_z */ DoesNotAccessMemory,
  26570. /* r600_read_tidig_x */ DoesNotAccessMemory,
  26571. /* r600_read_tidig_y */ DoesNotAccessMemory,
  26572. /* r600_read_tidig_z */ DoesNotAccessMemory,
  26573. /* readcyclecounter */ UnknownModRefBehavior,
  26574. /* returnaddress */ DoesNotAccessMemory,
  26575. /* rint */ OnlyReadsMemory,
  26576. /* sadd_with_overflow */ DoesNotAccessMemory,
  26577. /* setjmp */ UnknownModRefBehavior,
  26578. /* siglongjmp */ UnknownModRefBehavior,
  26579. /* sigsetjmp */ UnknownModRefBehavior,
  26580. /* sin */ OnlyReadsMemory,
  26581. /* smul_with_overflow */ DoesNotAccessMemory,
  26582. /* sqrt */ OnlyReadsMemory,
  26583. /* ssub_with_overflow */ DoesNotAccessMemory,
  26584. /* stackprotector */ UnknownModRefBehavior,
  26585. /* stackrestore */ UnknownModRefBehavior,
  26586. /* stacksave */ UnknownModRefBehavior,
  26587. /* trap */ UnknownModRefBehavior,
  26588. /* trunc */ OnlyReadsMemory,
  26589. /* uadd_with_overflow */ DoesNotAccessMemory,
  26590. /* umul_with_overflow */ DoesNotAccessMemory,
  26591. /* usub_with_overflow */ DoesNotAccessMemory,
  26592. /* vacopy */ UnknownModRefBehavior,
  26593. /* vaend */ UnknownModRefBehavior,
  26594. /* var_annotation */ UnknownModRefBehavior,
  26595. /* vastart */ UnknownModRefBehavior,
  26596. /* x86_3dnow_pavgusb */ DoesNotAccessMemory,
  26597. /* x86_3dnow_pf2id */ DoesNotAccessMemory,
  26598. /* x86_3dnow_pfacc */ DoesNotAccessMemory,
  26599. /* x86_3dnow_pfadd */ DoesNotAccessMemory,
  26600. /* x86_3dnow_pfcmpeq */ DoesNotAccessMemory,
  26601. /* x86_3dnow_pfcmpge */ DoesNotAccessMemory,
  26602. /* x86_3dnow_pfcmpgt */ DoesNotAccessMemory,
  26603. /* x86_3dnow_pfmax */ DoesNotAccessMemory,
  26604. /* x86_3dnow_pfmin */ DoesNotAccessMemory,
  26605. /* x86_3dnow_pfmul */ DoesNotAccessMemory,
  26606. /* x86_3dnow_pfrcp */ DoesNotAccessMemory,
  26607. /* x86_3dnow_pfrcpit1 */ DoesNotAccessMemory,
  26608. /* x86_3dnow_pfrcpit2 */ DoesNotAccessMemory,
  26609. /* x86_3dnow_pfrsqit1 */ DoesNotAccessMemory,
  26610. /* x86_3dnow_pfrsqrt */ DoesNotAccessMemory,
  26611. /* x86_3dnow_pfsub */ DoesNotAccessMemory,
  26612. /* x86_3dnow_pfsubr */ DoesNotAccessMemory,
  26613. /* x86_3dnow_pi2fd */ DoesNotAccessMemory,
  26614. /* x86_3dnow_pmulhrw */ DoesNotAccessMemory,
  26615. /* x86_3dnowa_pf2iw */ DoesNotAccessMemory,
  26616. /* x86_3dnowa_pfnacc */ DoesNotAccessMemory,
  26617. /* x86_3dnowa_pfpnacc */ DoesNotAccessMemory,
  26618. /* x86_3dnowa_pi2fw */ DoesNotAccessMemory,
  26619. /* x86_3dnowa_pswapd */ DoesNotAccessMemory,
  26620. /* x86_aesni_aesdec */ DoesNotAccessMemory,
  26621. /* x86_aesni_aesdeclast */ DoesNotAccessMemory,
  26622. /* x86_aesni_aesenc */ DoesNotAccessMemory,
  26623. /* x86_aesni_aesenclast */ DoesNotAccessMemory,
  26624. /* x86_aesni_aesimc */ DoesNotAccessMemory,
  26625. /* x86_aesni_aeskeygenassist */ DoesNotAccessMemory,
  26626. /* x86_avx2_gather_d_d */ OnlyReadsMemory,
  26627. /* x86_avx2_gather_d_d_256 */ OnlyReadsMemory,
  26628. /* x86_avx2_gather_d_pd */ OnlyReadsMemory,
  26629. /* x86_avx2_gather_d_pd_256 */ OnlyReadsMemory,
  26630. /* x86_avx2_gather_d_ps */ OnlyReadsMemory,
  26631. /* x86_avx2_gather_d_ps_256 */ OnlyReadsMemory,
  26632. /* x86_avx2_gather_d_q */ OnlyReadsMemory,
  26633. /* x86_avx2_gather_d_q_256 */ OnlyReadsMemory,
  26634. /* x86_avx2_gather_q_d */ OnlyReadsMemory,
  26635. /* x86_avx2_gather_q_d_256 */ OnlyReadsMemory,
  26636. /* x86_avx2_gather_q_pd */ OnlyReadsMemory,
  26637. /* x86_avx2_gather_q_pd_256 */ OnlyReadsMemory,
  26638. /* x86_avx2_gather_q_ps */ OnlyReadsMemory,
  26639. /* x86_avx2_gather_q_ps_256 */ OnlyReadsMemory,
  26640. /* x86_avx2_gather_q_q */ OnlyReadsMemory,
  26641. /* x86_avx2_gather_q_q_256 */ OnlyReadsMemory,
  26642. /* x86_avx2_maskload_d */ OnlyReadsArgumentPointees,
  26643. /* x86_avx2_maskload_d_256 */ OnlyReadsArgumentPointees,
  26644. /* x86_avx2_maskload_q */ OnlyReadsArgumentPointees,
  26645. /* x86_avx2_maskload_q_256 */ OnlyReadsArgumentPointees,
  26646. /* x86_avx2_maskstore_d */ OnlyAccessesArgumentPointees,
  26647. /* x86_avx2_maskstore_d_256 */ OnlyAccessesArgumentPointees,
  26648. /* x86_avx2_maskstore_q */ OnlyAccessesArgumentPointees,
  26649. /* x86_avx2_maskstore_q_256 */ OnlyAccessesArgumentPointees,
  26650. /* x86_avx2_movntdqa */ OnlyReadsMemory,
  26651. /* x86_avx2_mpsadbw */ DoesNotAccessMemory,
  26652. /* x86_avx2_pabs_b */ DoesNotAccessMemory,
  26653. /* x86_avx2_pabs_d */ DoesNotAccessMemory,
  26654. /* x86_avx2_pabs_w */ DoesNotAccessMemory,
  26655. /* x86_avx2_packssdw */ DoesNotAccessMemory,
  26656. /* x86_avx2_packsswb */ DoesNotAccessMemory,
  26657. /* x86_avx2_packusdw */ DoesNotAccessMemory,
  26658. /* x86_avx2_packuswb */ DoesNotAccessMemory,
  26659. /* x86_avx2_padds_b */ DoesNotAccessMemory,
  26660. /* x86_avx2_padds_w */ DoesNotAccessMemory,
  26661. /* x86_avx2_paddus_b */ DoesNotAccessMemory,
  26662. /* x86_avx2_paddus_w */ DoesNotAccessMemory,
  26663. /* x86_avx2_pavg_b */ DoesNotAccessMemory,
  26664. /* x86_avx2_pavg_w */ DoesNotAccessMemory,
  26665. /* x86_avx2_pblendd_128 */ DoesNotAccessMemory,
  26666. /* x86_avx2_pblendd_256 */ DoesNotAccessMemory,
  26667. /* x86_avx2_pblendvb */ DoesNotAccessMemory,
  26668. /* x86_avx2_pblendw */ DoesNotAccessMemory,
  26669. /* x86_avx2_pbroadcastb_128 */ DoesNotAccessMemory,
  26670. /* x86_avx2_pbroadcastb_256 */ DoesNotAccessMemory,
  26671. /* x86_avx2_pbroadcastd_128 */ DoesNotAccessMemory,
  26672. /* x86_avx2_pbroadcastd_256 */ DoesNotAccessMemory,
  26673. /* x86_avx2_pbroadcastq_128 */ DoesNotAccessMemory,
  26674. /* x86_avx2_pbroadcastq_256 */ DoesNotAccessMemory,
  26675. /* x86_avx2_pbroadcastw_128 */ DoesNotAccessMemory,
  26676. /* x86_avx2_pbroadcastw_256 */ DoesNotAccessMemory,
  26677. /* x86_avx2_permd */ DoesNotAccessMemory,
  26678. /* x86_avx2_permps */ DoesNotAccessMemory,
  26679. /* x86_avx2_phadd_d */ DoesNotAccessMemory,
  26680. /* x86_avx2_phadd_sw */ DoesNotAccessMemory,
  26681. /* x86_avx2_phadd_w */ DoesNotAccessMemory,
  26682. /* x86_avx2_phsub_d */ DoesNotAccessMemory,
  26683. /* x86_avx2_phsub_sw */ DoesNotAccessMemory,
  26684. /* x86_avx2_phsub_w */ DoesNotAccessMemory,
  26685. /* x86_avx2_pmadd_ub_sw */ DoesNotAccessMemory,
  26686. /* x86_avx2_pmadd_wd */ DoesNotAccessMemory,
  26687. /* x86_avx2_pmaxs_b */ DoesNotAccessMemory,
  26688. /* x86_avx2_pmaxs_d */ DoesNotAccessMemory,
  26689. /* x86_avx2_pmaxs_w */ DoesNotAccessMemory,
  26690. /* x86_avx2_pmaxu_b */ DoesNotAccessMemory,
  26691. /* x86_avx2_pmaxu_d */ DoesNotAccessMemory,
  26692. /* x86_avx2_pmaxu_w */ DoesNotAccessMemory,
  26693. /* x86_avx2_pmins_b */ DoesNotAccessMemory,
  26694. /* x86_avx2_pmins_d */ DoesNotAccessMemory,
  26695. /* x86_avx2_pmins_w */ DoesNotAccessMemory,
  26696. /* x86_avx2_pminu_b */ DoesNotAccessMemory,
  26697. /* x86_avx2_pminu_d */ DoesNotAccessMemory,
  26698. /* x86_avx2_pminu_w */ DoesNotAccessMemory,
  26699. /* x86_avx2_pmovmskb */ DoesNotAccessMemory,
  26700. /* x86_avx2_pmovsxbd */ DoesNotAccessMemory,
  26701. /* x86_avx2_pmovsxbq */ DoesNotAccessMemory,
  26702. /* x86_avx2_pmovsxbw */ DoesNotAccessMemory,
  26703. /* x86_avx2_pmovsxdq */ DoesNotAccessMemory,
  26704. /* x86_avx2_pmovsxwd */ DoesNotAccessMemory,
  26705. /* x86_avx2_pmovsxwq */ DoesNotAccessMemory,
  26706. /* x86_avx2_pmovzxbd */ DoesNotAccessMemory,
  26707. /* x86_avx2_pmovzxbq */ DoesNotAccessMemory,
  26708. /* x86_avx2_pmovzxbw */ DoesNotAccessMemory,
  26709. /* x86_avx2_pmovzxdq */ DoesNotAccessMemory,
  26710. /* x86_avx2_pmovzxwd */ DoesNotAccessMemory,
  26711. /* x86_avx2_pmovzxwq */ DoesNotAccessMemory,
  26712. /* x86_avx2_pmul_dq */ DoesNotAccessMemory,
  26713. /* x86_avx2_pmul_hr_sw */ DoesNotAccessMemory,
  26714. /* x86_avx2_pmulh_w */ DoesNotAccessMemory,
  26715. /* x86_avx2_pmulhu_w */ DoesNotAccessMemory,
  26716. /* x86_avx2_pmulu_dq */ DoesNotAccessMemory,
  26717. /* x86_avx2_psad_bw */ DoesNotAccessMemory,
  26718. /* x86_avx2_pshuf_b */ DoesNotAccessMemory,
  26719. /* x86_avx2_psign_b */ DoesNotAccessMemory,
  26720. /* x86_avx2_psign_d */ DoesNotAccessMemory,
  26721. /* x86_avx2_psign_w */ DoesNotAccessMemory,
  26722. /* x86_avx2_psll_d */ DoesNotAccessMemory,
  26723. /* x86_avx2_psll_dq */ DoesNotAccessMemory,
  26724. /* x86_avx2_psll_dq_bs */ DoesNotAccessMemory,
  26725. /* x86_avx2_psll_q */ DoesNotAccessMemory,
  26726. /* x86_avx2_psll_w */ DoesNotAccessMemory,
  26727. /* x86_avx2_pslli_d */ DoesNotAccessMemory,
  26728. /* x86_avx2_pslli_q */ DoesNotAccessMemory,
  26729. /* x86_avx2_pslli_w */ DoesNotAccessMemory,
  26730. /* x86_avx2_psllv_d */ DoesNotAccessMemory,
  26731. /* x86_avx2_psllv_d_256 */ DoesNotAccessMemory,
  26732. /* x86_avx2_psllv_q */ DoesNotAccessMemory,
  26733. /* x86_avx2_psllv_q_256 */ DoesNotAccessMemory,
  26734. /* x86_avx2_psra_d */ DoesNotAccessMemory,
  26735. /* x86_avx2_psra_w */ DoesNotAccessMemory,
  26736. /* x86_avx2_psrai_d */ DoesNotAccessMemory,
  26737. /* x86_avx2_psrai_w */ DoesNotAccessMemory,
  26738. /* x86_avx2_psrav_d */ DoesNotAccessMemory,
  26739. /* x86_avx2_psrav_d_256 */ DoesNotAccessMemory,
  26740. /* x86_avx2_psrl_d */ DoesNotAccessMemory,
  26741. /* x86_avx2_psrl_dq */ DoesNotAccessMemory,
  26742. /* x86_avx2_psrl_dq_bs */ DoesNotAccessMemory,
  26743. /* x86_avx2_psrl_q */ DoesNotAccessMemory,
  26744. /* x86_avx2_psrl_w */ DoesNotAccessMemory,
  26745. /* x86_avx2_psrli_d */ DoesNotAccessMemory,
  26746. /* x86_avx2_psrli_q */ DoesNotAccessMemory,
  26747. /* x86_avx2_psrli_w */ DoesNotAccessMemory,
  26748. /* x86_avx2_psrlv_d */ DoesNotAccessMemory,
  26749. /* x86_avx2_psrlv_d_256 */ DoesNotAccessMemory,
  26750. /* x86_avx2_psrlv_q */ DoesNotAccessMemory,
  26751. /* x86_avx2_psrlv_q_256 */ DoesNotAccessMemory,
  26752. /* x86_avx2_psubs_b */ DoesNotAccessMemory,
  26753. /* x86_avx2_psubs_w */ DoesNotAccessMemory,
  26754. /* x86_avx2_psubus_b */ DoesNotAccessMemory,
  26755. /* x86_avx2_psubus_w */ DoesNotAccessMemory,
  26756. /* x86_avx2_vbroadcast_sd_pd_256 */ DoesNotAccessMemory,
  26757. /* x86_avx2_vbroadcast_ss_ps */ DoesNotAccessMemory,
  26758. /* x86_avx2_vbroadcast_ss_ps_256 */ DoesNotAccessMemory,
  26759. /* x86_avx2_vbroadcasti128 */ OnlyReadsArgumentPointees,
  26760. /* x86_avx2_vextracti128 */ DoesNotAccessMemory,
  26761. /* x86_avx2_vinserti128 */ DoesNotAccessMemory,
  26762. /* x86_avx2_vperm2i128 */ DoesNotAccessMemory,
  26763. /* x86_avx_addsub_pd_256 */ DoesNotAccessMemory,
  26764. /* x86_avx_addsub_ps_256 */ DoesNotAccessMemory,
  26765. /* x86_avx_blend_pd_256 */ DoesNotAccessMemory,
  26766. /* x86_avx_blend_ps_256 */ DoesNotAccessMemory,
  26767. /* x86_avx_blendv_pd_256 */ DoesNotAccessMemory,
  26768. /* x86_avx_blendv_ps_256 */ DoesNotAccessMemory,
  26769. /* x86_avx_cmp_pd_256 */ DoesNotAccessMemory,
  26770. /* x86_avx_cmp_ps_256 */ DoesNotAccessMemory,
  26771. /* x86_avx_cvt_pd2_ps_256 */ DoesNotAccessMemory,
  26772. /* x86_avx_cvt_pd2dq_256 */ DoesNotAccessMemory,
  26773. /* x86_avx_cvt_ps2_pd_256 */ DoesNotAccessMemory,
  26774. /* x86_avx_cvt_ps2dq_256 */ DoesNotAccessMemory,
  26775. /* x86_avx_cvtdq2_pd_256 */ DoesNotAccessMemory,
  26776. /* x86_avx_cvtdq2_ps_256 */ DoesNotAccessMemory,
  26777. /* x86_avx_cvtt_pd2dq_256 */ DoesNotAccessMemory,
  26778. /* x86_avx_cvtt_ps2dq_256 */ DoesNotAccessMemory,
  26779. /* x86_avx_dp_ps_256 */ DoesNotAccessMemory,
  26780. /* x86_avx_hadd_pd_256 */ DoesNotAccessMemory,
  26781. /* x86_avx_hadd_ps_256 */ DoesNotAccessMemory,
  26782. /* x86_avx_hsub_pd_256 */ DoesNotAccessMemory,
  26783. /* x86_avx_hsub_ps_256 */ DoesNotAccessMemory,
  26784. /* x86_avx_ldu_dq_256 */ OnlyReadsMemory,
  26785. /* x86_avx_maskload_pd */ OnlyReadsArgumentPointees,
  26786. /* x86_avx_maskload_pd_256 */ OnlyReadsArgumentPointees,
  26787. /* x86_avx_maskload_ps */ OnlyReadsArgumentPointees,
  26788. /* x86_avx_maskload_ps_256 */ OnlyReadsArgumentPointees,
  26789. /* x86_avx_maskstore_pd */ OnlyAccessesArgumentPointees,
  26790. /* x86_avx_maskstore_pd_256 */ OnlyAccessesArgumentPointees,
  26791. /* x86_avx_maskstore_ps */ OnlyAccessesArgumentPointees,
  26792. /* x86_avx_maskstore_ps_256 */ OnlyAccessesArgumentPointees,
  26793. /* x86_avx_max_pd_256 */ DoesNotAccessMemory,
  26794. /* x86_avx_max_ps_256 */ DoesNotAccessMemory,
  26795. /* x86_avx_min_pd_256 */ DoesNotAccessMemory,
  26796. /* x86_avx_min_ps_256 */ DoesNotAccessMemory,
  26797. /* x86_avx_movmsk_pd_256 */ DoesNotAccessMemory,
  26798. /* x86_avx_movmsk_ps_256 */ DoesNotAccessMemory,
  26799. /* x86_avx_ptestc_256 */ DoesNotAccessMemory,
  26800. /* x86_avx_ptestnzc_256 */ DoesNotAccessMemory,
  26801. /* x86_avx_ptestz_256 */ DoesNotAccessMemory,
  26802. /* x86_avx_rcp_ps_256 */ DoesNotAccessMemory,
  26803. /* x86_avx_round_pd_256 */ DoesNotAccessMemory,
  26804. /* x86_avx_round_ps_256 */ DoesNotAccessMemory,
  26805. /* x86_avx_rsqrt_ps_256 */ DoesNotAccessMemory,
  26806. /* x86_avx_sqrt_pd_256 */ DoesNotAccessMemory,
  26807. /* x86_avx_sqrt_ps_256 */ DoesNotAccessMemory,
  26808. /* x86_avx_storeu_dq_256 */ OnlyAccessesArgumentPointees,
  26809. /* x86_avx_storeu_pd_256 */ OnlyAccessesArgumentPointees,
  26810. /* x86_avx_storeu_ps_256 */ OnlyAccessesArgumentPointees,
  26811. /* x86_avx_vbroadcast_sd_256 */ OnlyReadsArgumentPointees,
  26812. /* x86_avx_vbroadcast_ss */ OnlyReadsArgumentPointees,
  26813. /* x86_avx_vbroadcast_ss_256 */ OnlyReadsArgumentPointees,
  26814. /* x86_avx_vbroadcastf128_pd_256 */ OnlyReadsArgumentPointees,
  26815. /* x86_avx_vbroadcastf128_ps_256 */ OnlyReadsArgumentPointees,
  26816. /* x86_avx_vextractf128_pd_256 */ DoesNotAccessMemory,
  26817. /* x86_avx_vextractf128_ps_256 */ DoesNotAccessMemory,
  26818. /* x86_avx_vextractf128_si_256 */ DoesNotAccessMemory,
  26819. /* x86_avx_vinsertf128_pd_256 */ DoesNotAccessMemory,
  26820. /* x86_avx_vinsertf128_ps_256 */ DoesNotAccessMemory,
  26821. /* x86_avx_vinsertf128_si_256 */ DoesNotAccessMemory,
  26822. /* x86_avx_vperm2f128_pd_256 */ DoesNotAccessMemory,
  26823. /* x86_avx_vperm2f128_ps_256 */ DoesNotAccessMemory,
  26824. /* x86_avx_vperm2f128_si_256 */ DoesNotAccessMemory,
  26825. /* x86_avx_vpermilvar_pd */ DoesNotAccessMemory,
  26826. /* x86_avx_vpermilvar_pd_256 */ DoesNotAccessMemory,
  26827. /* x86_avx_vpermilvar_ps */ DoesNotAccessMemory,
  26828. /* x86_avx_vpermilvar_ps_256 */ DoesNotAccessMemory,
  26829. /* x86_avx_vtestc_pd */ DoesNotAccessMemory,
  26830. /* x86_avx_vtestc_pd_256 */ DoesNotAccessMemory,
  26831. /* x86_avx_vtestc_ps */ DoesNotAccessMemory,
  26832. /* x86_avx_vtestc_ps_256 */ DoesNotAccessMemory,
  26833. /* x86_avx_vtestnzc_pd */ DoesNotAccessMemory,
  26834. /* x86_avx_vtestnzc_pd_256 */ DoesNotAccessMemory,
  26835. /* x86_avx_vtestnzc_ps */ DoesNotAccessMemory,
  26836. /* x86_avx_vtestnzc_ps_256 */ DoesNotAccessMemory,
  26837. /* x86_avx_vtestz_pd */ DoesNotAccessMemory,
  26838. /* x86_avx_vtestz_pd_256 */ DoesNotAccessMemory,
  26839. /* x86_avx_vtestz_ps */ DoesNotAccessMemory,
  26840. /* x86_avx_vtestz_ps_256 */ DoesNotAccessMemory,
  26841. /* x86_avx_vzeroall */ UnknownModRefBehavior,
  26842. /* x86_avx_vzeroupper */ UnknownModRefBehavior,
  26843. /* x86_bmi_bextr_32 */ DoesNotAccessMemory,
  26844. /* x86_bmi_bextr_64 */ DoesNotAccessMemory,
  26845. /* x86_bmi_bzhi_32 */ DoesNotAccessMemory,
  26846. /* x86_bmi_bzhi_64 */ DoesNotAccessMemory,
  26847. /* x86_bmi_pdep_32 */ DoesNotAccessMemory,
  26848. /* x86_bmi_pdep_64 */ DoesNotAccessMemory,
  26849. /* x86_bmi_pext_32 */ DoesNotAccessMemory,
  26850. /* x86_bmi_pext_64 */ DoesNotAccessMemory,
  26851. /* x86_fma_vfmadd_pd */ DoesNotAccessMemory,
  26852. /* x86_fma_vfmadd_pd_256 */ DoesNotAccessMemory,
  26853. /* x86_fma_vfmadd_ps */ DoesNotAccessMemory,
  26854. /* x86_fma_vfmadd_ps_256 */ DoesNotAccessMemory,
  26855. /* x86_fma_vfmadd_sd */ DoesNotAccessMemory,
  26856. /* x86_fma_vfmadd_ss */ DoesNotAccessMemory,
  26857. /* x86_fma_vfmaddsub_pd */ DoesNotAccessMemory,
  26858. /* x86_fma_vfmaddsub_pd_256 */ DoesNotAccessMemory,
  26859. /* x86_fma_vfmaddsub_ps */ DoesNotAccessMemory,
  26860. /* x86_fma_vfmaddsub_ps_256 */ DoesNotAccessMemory,
  26861. /* x86_fma_vfmsub_pd */ DoesNotAccessMemory,
  26862. /* x86_fma_vfmsub_pd_256 */ DoesNotAccessMemory,
  26863. /* x86_fma_vfmsub_ps */ DoesNotAccessMemory,
  26864. /* x86_fma_vfmsub_ps_256 */ DoesNotAccessMemory,
  26865. /* x86_fma_vfmsub_sd */ DoesNotAccessMemory,
  26866. /* x86_fma_vfmsub_ss */ DoesNotAccessMemory,
  26867. /* x86_fma_vfmsubadd_pd */ DoesNotAccessMemory,
  26868. /* x86_fma_vfmsubadd_pd_256 */ DoesNotAccessMemory,
  26869. /* x86_fma_vfmsubadd_ps */ DoesNotAccessMemory,
  26870. /* x86_fma_vfmsubadd_ps_256 */ DoesNotAccessMemory,
  26871. /* x86_fma_vfnmadd_pd */ DoesNotAccessMemory,
  26872. /* x86_fma_vfnmadd_pd_256 */ DoesNotAccessMemory,
  26873. /* x86_fma_vfnmadd_ps */ DoesNotAccessMemory,
  26874. /* x86_fma_vfnmadd_ps_256 */ DoesNotAccessMemory,
  26875. /* x86_fma_vfnmadd_sd */ DoesNotAccessMemory,
  26876. /* x86_fma_vfnmadd_ss */ DoesNotAccessMemory,
  26877. /* x86_fma_vfnmsub_pd */ DoesNotAccessMemory,
  26878. /* x86_fma_vfnmsub_pd_256 */ DoesNotAccessMemory,
  26879. /* x86_fma_vfnmsub_ps */ DoesNotAccessMemory,
  26880. /* x86_fma_vfnmsub_ps_256 */ DoesNotAccessMemory,
  26881. /* x86_fma_vfnmsub_sd */ DoesNotAccessMemory,
  26882. /* x86_fma_vfnmsub_ss */ DoesNotAccessMemory,
  26883. /* x86_int */ UnknownModRefBehavior,
  26884. /* x86_mmx_emms */ UnknownModRefBehavior,
  26885. /* x86_mmx_femms */ UnknownModRefBehavior,
  26886. /* x86_mmx_maskmovq */ UnknownModRefBehavior,
  26887. /* x86_mmx_movnt_dq */ UnknownModRefBehavior,
  26888. /* x86_mmx_packssdw */ DoesNotAccessMemory,
  26889. /* x86_mmx_packsswb */ DoesNotAccessMemory,
  26890. /* x86_mmx_packuswb */ DoesNotAccessMemory,
  26891. /* x86_mmx_padd_b */ DoesNotAccessMemory,
  26892. /* x86_mmx_padd_d */ DoesNotAccessMemory,
  26893. /* x86_mmx_padd_q */ DoesNotAccessMemory,
  26894. /* x86_mmx_padd_w */ DoesNotAccessMemory,
  26895. /* x86_mmx_padds_b */ DoesNotAccessMemory,
  26896. /* x86_mmx_padds_w */ DoesNotAccessMemory,
  26897. /* x86_mmx_paddus_b */ DoesNotAccessMemory,
  26898. /* x86_mmx_paddus_w */ DoesNotAccessMemory,
  26899. /* x86_mmx_palignr_b */ DoesNotAccessMemory,
  26900. /* x86_mmx_pand */ DoesNotAccessMemory,
  26901. /* x86_mmx_pandn */ DoesNotAccessMemory,
  26902. /* x86_mmx_pavg_b */ DoesNotAccessMemory,
  26903. /* x86_mmx_pavg_w */ DoesNotAccessMemory,
  26904. /* x86_mmx_pcmpeq_b */ DoesNotAccessMemory,
  26905. /* x86_mmx_pcmpeq_d */ DoesNotAccessMemory,
  26906. /* x86_mmx_pcmpeq_w */ DoesNotAccessMemory,
  26907. /* x86_mmx_pcmpgt_b */ DoesNotAccessMemory,
  26908. /* x86_mmx_pcmpgt_d */ DoesNotAccessMemory,
  26909. /* x86_mmx_pcmpgt_w */ DoesNotAccessMemory,
  26910. /* x86_mmx_pextr_w */ DoesNotAccessMemory,
  26911. /* x86_mmx_pinsr_w */ DoesNotAccessMemory,
  26912. /* x86_mmx_pmadd_wd */ DoesNotAccessMemory,
  26913. /* x86_mmx_pmaxs_w */ DoesNotAccessMemory,
  26914. /* x86_mmx_pmaxu_b */ DoesNotAccessMemory,
  26915. /* x86_mmx_pmins_w */ DoesNotAccessMemory,
  26916. /* x86_mmx_pminu_b */ DoesNotAccessMemory,
  26917. /* x86_mmx_pmovmskb */ DoesNotAccessMemory,
  26918. /* x86_mmx_pmulh_w */ DoesNotAccessMemory,
  26919. /* x86_mmx_pmulhu_w */ DoesNotAccessMemory,
  26920. /* x86_mmx_pmull_w */ DoesNotAccessMemory,
  26921. /* x86_mmx_pmulu_dq */ DoesNotAccessMemory,
  26922. /* x86_mmx_por */ DoesNotAccessMemory,
  26923. /* x86_mmx_psad_bw */ DoesNotAccessMemory,
  26924. /* x86_mmx_psll_d */ DoesNotAccessMemory,
  26925. /* x86_mmx_psll_q */ DoesNotAccessMemory,
  26926. /* x86_mmx_psll_w */ DoesNotAccessMemory,
  26927. /* x86_mmx_pslli_d */ DoesNotAccessMemory,
  26928. /* x86_mmx_pslli_q */ DoesNotAccessMemory,
  26929. /* x86_mmx_pslli_w */ DoesNotAccessMemory,
  26930. /* x86_mmx_psra_d */ DoesNotAccessMemory,
  26931. /* x86_mmx_psra_w */ DoesNotAccessMemory,
  26932. /* x86_mmx_psrai_d */ DoesNotAccessMemory,
  26933. /* x86_mmx_psrai_w */ DoesNotAccessMemory,
  26934. /* x86_mmx_psrl_d */ DoesNotAccessMemory,
  26935. /* x86_mmx_psrl_q */ DoesNotAccessMemory,
  26936. /* x86_mmx_psrl_w */ DoesNotAccessMemory,
  26937. /* x86_mmx_psrli_d */ DoesNotAccessMemory,
  26938. /* x86_mmx_psrli_q */ DoesNotAccessMemory,
  26939. /* x86_mmx_psrli_w */ DoesNotAccessMemory,
  26940. /* x86_mmx_psub_b */ DoesNotAccessMemory,
  26941. /* x86_mmx_psub_d */ DoesNotAccessMemory,
  26942. /* x86_mmx_psub_q */ DoesNotAccessMemory,
  26943. /* x86_mmx_psub_w */ DoesNotAccessMemory,
  26944. /* x86_mmx_psubs_b */ DoesNotAccessMemory,
  26945. /* x86_mmx_psubs_w */ DoesNotAccessMemory,
  26946. /* x86_mmx_psubus_b */ DoesNotAccessMemory,
  26947. /* x86_mmx_psubus_w */ DoesNotAccessMemory,
  26948. /* x86_mmx_punpckhbw */ DoesNotAccessMemory,
  26949. /* x86_mmx_punpckhdq */ DoesNotAccessMemory,
  26950. /* x86_mmx_punpckhwd */ DoesNotAccessMemory,
  26951. /* x86_mmx_punpcklbw */ DoesNotAccessMemory,
  26952. /* x86_mmx_punpckldq */ DoesNotAccessMemory,
  26953. /* x86_mmx_punpcklwd */ DoesNotAccessMemory,
  26954. /* x86_mmx_pxor */ DoesNotAccessMemory,
  26955. /* x86_pclmulqdq */ DoesNotAccessMemory,
  26956. /* x86_rdfsbase_32 */ UnknownModRefBehavior,
  26957. /* x86_rdfsbase_64 */ UnknownModRefBehavior,
  26958. /* x86_rdgsbase_32 */ UnknownModRefBehavior,
  26959. /* x86_rdgsbase_64 */ UnknownModRefBehavior,
  26960. /* x86_rdrand_16 */ UnknownModRefBehavior,
  26961. /* x86_rdrand_32 */ UnknownModRefBehavior,
  26962. /* x86_rdrand_64 */ UnknownModRefBehavior,
  26963. /* x86_rdseed_16 */ UnknownModRefBehavior,
  26964. /* x86_rdseed_32 */ UnknownModRefBehavior,
  26965. /* x86_rdseed_64 */ UnknownModRefBehavior,
  26966. /* x86_sse2_add_sd */ DoesNotAccessMemory,
  26967. /* x86_sse2_clflush */ UnknownModRefBehavior,
  26968. /* x86_sse2_cmp_pd */ DoesNotAccessMemory,
  26969. /* x86_sse2_cmp_sd */ DoesNotAccessMemory,
  26970. /* x86_sse2_comieq_sd */ DoesNotAccessMemory,
  26971. /* x86_sse2_comige_sd */ DoesNotAccessMemory,
  26972. /* x86_sse2_comigt_sd */ DoesNotAccessMemory,
  26973. /* x86_sse2_comile_sd */ DoesNotAccessMemory,
  26974. /* x86_sse2_comilt_sd */ DoesNotAccessMemory,
  26975. /* x86_sse2_comineq_sd */ DoesNotAccessMemory,
  26976. /* x86_sse2_cvtdq2pd */ DoesNotAccessMemory,
  26977. /* x86_sse2_cvtdq2ps */ DoesNotAccessMemory,
  26978. /* x86_sse2_cvtpd2dq */ DoesNotAccessMemory,
  26979. /* x86_sse2_cvtpd2ps */ DoesNotAccessMemory,
  26980. /* x86_sse2_cvtps2dq */ DoesNotAccessMemory,
  26981. /* x86_sse2_cvtps2pd */ DoesNotAccessMemory,
  26982. /* x86_sse2_cvtsd2si */ DoesNotAccessMemory,
  26983. /* x86_sse2_cvtsd2si64 */ DoesNotAccessMemory,
  26984. /* x86_sse2_cvtsd2ss */ DoesNotAccessMemory,
  26985. /* x86_sse2_cvtsi2sd */ DoesNotAccessMemory,
  26986. /* x86_sse2_cvtsi642sd */ DoesNotAccessMemory,
  26987. /* x86_sse2_cvtss2sd */ DoesNotAccessMemory,
  26988. /* x86_sse2_cvttpd2dq */ DoesNotAccessMemory,
  26989. /* x86_sse2_cvttps2dq */ DoesNotAccessMemory,
  26990. /* x86_sse2_cvttsd2si */ DoesNotAccessMemory,
  26991. /* x86_sse2_cvttsd2si64 */ DoesNotAccessMemory,
  26992. /* x86_sse2_div_sd */ DoesNotAccessMemory,
  26993. /* x86_sse2_lfence */ UnknownModRefBehavior,
  26994. /* x86_sse2_maskmov_dqu */ UnknownModRefBehavior,
  26995. /* x86_sse2_max_pd */ DoesNotAccessMemory,
  26996. /* x86_sse2_max_sd */ DoesNotAccessMemory,
  26997. /* x86_sse2_mfence */ UnknownModRefBehavior,
  26998. /* x86_sse2_min_pd */ DoesNotAccessMemory,
  26999. /* x86_sse2_min_sd */ DoesNotAccessMemory,
  27000. /* x86_sse2_movmsk_pd */ DoesNotAccessMemory,
  27001. /* x86_sse2_mul_sd */ DoesNotAccessMemory,
  27002. /* x86_sse2_packssdw_128 */ DoesNotAccessMemory,
  27003. /* x86_sse2_packsswb_128 */ DoesNotAccessMemory,
  27004. /* x86_sse2_packuswb_128 */ DoesNotAccessMemory,
  27005. /* x86_sse2_padds_b */ DoesNotAccessMemory,
  27006. /* x86_sse2_padds_w */ DoesNotAccessMemory,
  27007. /* x86_sse2_paddus_b */ DoesNotAccessMemory,
  27008. /* x86_sse2_paddus_w */ DoesNotAccessMemory,
  27009. /* x86_sse2_pavg_b */ DoesNotAccessMemory,
  27010. /* x86_sse2_pavg_w */ DoesNotAccessMemory,
  27011. /* x86_sse2_pmadd_wd */ DoesNotAccessMemory,
  27012. /* x86_sse2_pmaxs_w */ DoesNotAccessMemory,
  27013. /* x86_sse2_pmaxu_b */ DoesNotAccessMemory,
  27014. /* x86_sse2_pmins_w */ DoesNotAccessMemory,
  27015. /* x86_sse2_pminu_b */ DoesNotAccessMemory,
  27016. /* x86_sse2_pmovmskb_128 */ DoesNotAccessMemory,
  27017. /* x86_sse2_pmulh_w */ DoesNotAccessMemory,
  27018. /* x86_sse2_pmulhu_w */ DoesNotAccessMemory,
  27019. /* x86_sse2_pmulu_dq */ DoesNotAccessMemory,
  27020. /* x86_sse2_psad_bw */ DoesNotAccessMemory,
  27021. /* x86_sse2_psll_d */ DoesNotAccessMemory,
  27022. /* x86_sse2_psll_dq */ DoesNotAccessMemory,
  27023. /* x86_sse2_psll_dq_bs */ DoesNotAccessMemory,
  27024. /* x86_sse2_psll_q */ DoesNotAccessMemory,
  27025. /* x86_sse2_psll_w */ DoesNotAccessMemory,
  27026. /* x86_sse2_pslli_d */ DoesNotAccessMemory,
  27027. /* x86_sse2_pslli_q */ DoesNotAccessMemory,
  27028. /* x86_sse2_pslli_w */ DoesNotAccessMemory,
  27029. /* x86_sse2_psra_d */ DoesNotAccessMemory,
  27030. /* x86_sse2_psra_w */ DoesNotAccessMemory,
  27031. /* x86_sse2_psrai_d */ DoesNotAccessMemory,
  27032. /* x86_sse2_psrai_w */ DoesNotAccessMemory,
  27033. /* x86_sse2_psrl_d */ DoesNotAccessMemory,
  27034. /* x86_sse2_psrl_dq */ DoesNotAccessMemory,
  27035. /* x86_sse2_psrl_dq_bs */ DoesNotAccessMemory,
  27036. /* x86_sse2_psrl_q */ DoesNotAccessMemory,
  27037. /* x86_sse2_psrl_w */ DoesNotAccessMemory,
  27038. /* x86_sse2_psrli_d */ DoesNotAccessMemory,
  27039. /* x86_sse2_psrli_q */ DoesNotAccessMemory,
  27040. /* x86_sse2_psrli_w */ DoesNotAccessMemory,
  27041. /* x86_sse2_psubs_b */ DoesNotAccessMemory,
  27042. /* x86_sse2_psubs_w */ DoesNotAccessMemory,
  27043. /* x86_sse2_psubus_b */ DoesNotAccessMemory,
  27044. /* x86_sse2_psubus_w */ DoesNotAccessMemory,
  27045. /* x86_sse2_sqrt_pd */ DoesNotAccessMemory,
  27046. /* x86_sse2_sqrt_sd */ DoesNotAccessMemory,
  27047. /* x86_sse2_storel_dq */ OnlyAccessesArgumentPointees,
  27048. /* x86_sse2_storeu_dq */ OnlyAccessesArgumentPointees,
  27049. /* x86_sse2_storeu_pd */ OnlyAccessesArgumentPointees,
  27050. /* x86_sse2_sub_sd */ DoesNotAccessMemory,
  27051. /* x86_sse2_ucomieq_sd */ DoesNotAccessMemory,
  27052. /* x86_sse2_ucomige_sd */ DoesNotAccessMemory,
  27053. /* x86_sse2_ucomigt_sd */ DoesNotAccessMemory,
  27054. /* x86_sse2_ucomile_sd */ DoesNotAccessMemory,
  27055. /* x86_sse2_ucomilt_sd */ DoesNotAccessMemory,
  27056. /* x86_sse2_ucomineq_sd */ DoesNotAccessMemory,
  27057. /* x86_sse3_addsub_pd */ DoesNotAccessMemory,
  27058. /* x86_sse3_addsub_ps */ DoesNotAccessMemory,
  27059. /* x86_sse3_hadd_pd */ DoesNotAccessMemory,
  27060. /* x86_sse3_hadd_ps */ DoesNotAccessMemory,
  27061. /* x86_sse3_hsub_pd */ DoesNotAccessMemory,
  27062. /* x86_sse3_hsub_ps */ DoesNotAccessMemory,
  27063. /* x86_sse3_ldu_dq */ OnlyReadsMemory,
  27064. /* x86_sse3_monitor */ UnknownModRefBehavior,
  27065. /* x86_sse3_mwait */ UnknownModRefBehavior,
  27066. /* x86_sse41_blendpd */ DoesNotAccessMemory,
  27067. /* x86_sse41_blendps */ DoesNotAccessMemory,
  27068. /* x86_sse41_blendvpd */ DoesNotAccessMemory,
  27069. /* x86_sse41_blendvps */ DoesNotAccessMemory,
  27070. /* x86_sse41_dppd */ DoesNotAccessMemory,
  27071. /* x86_sse41_dpps */ DoesNotAccessMemory,
  27072. /* x86_sse41_extractps */ DoesNotAccessMemory,
  27073. /* x86_sse41_insertps */ DoesNotAccessMemory,
  27074. /* x86_sse41_movntdqa */ OnlyReadsMemory,
  27075. /* x86_sse41_mpsadbw */ DoesNotAccessMemory,
  27076. /* x86_sse41_packusdw */ DoesNotAccessMemory,
  27077. /* x86_sse41_pblendvb */ DoesNotAccessMemory,
  27078. /* x86_sse41_pblendw */ DoesNotAccessMemory,
  27079. /* x86_sse41_pextrb */ DoesNotAccessMemory,
  27080. /* x86_sse41_pextrd */ DoesNotAccessMemory,
  27081. /* x86_sse41_pextrq */ DoesNotAccessMemory,
  27082. /* x86_sse41_phminposuw */ DoesNotAccessMemory,
  27083. /* x86_sse41_pmaxsb */ DoesNotAccessMemory,
  27084. /* x86_sse41_pmaxsd */ DoesNotAccessMemory,
  27085. /* x86_sse41_pmaxud */ DoesNotAccessMemory,
  27086. /* x86_sse41_pmaxuw */ DoesNotAccessMemory,
  27087. /* x86_sse41_pminsb */ DoesNotAccessMemory,
  27088. /* x86_sse41_pminsd */ DoesNotAccessMemory,
  27089. /* x86_sse41_pminud */ DoesNotAccessMemory,
  27090. /* x86_sse41_pminuw */ DoesNotAccessMemory,
  27091. /* x86_sse41_pmovsxbd */ DoesNotAccessMemory,
  27092. /* x86_sse41_pmovsxbq */ DoesNotAccessMemory,
  27093. /* x86_sse41_pmovsxbw */ DoesNotAccessMemory,
  27094. /* x86_sse41_pmovsxdq */ DoesNotAccessMemory,
  27095. /* x86_sse41_pmovsxwd */ DoesNotAccessMemory,
  27096. /* x86_sse41_pmovsxwq */ DoesNotAccessMemory,
  27097. /* x86_sse41_pmovzxbd */ DoesNotAccessMemory,
  27098. /* x86_sse41_pmovzxbq */ DoesNotAccessMemory,
  27099. /* x86_sse41_pmovzxbw */ DoesNotAccessMemory,
  27100. /* x86_sse41_pmovzxdq */ DoesNotAccessMemory,
  27101. /* x86_sse41_pmovzxwd */ DoesNotAccessMemory,
  27102. /* x86_sse41_pmovzxwq */ DoesNotAccessMemory,
  27103. /* x86_sse41_pmuldq */ DoesNotAccessMemory,
  27104. /* x86_sse41_ptestc */ DoesNotAccessMemory,
  27105. /* x86_sse41_ptestnzc */ DoesNotAccessMemory,
  27106. /* x86_sse41_ptestz */ DoesNotAccessMemory,
  27107. /* x86_sse41_round_pd */ DoesNotAccessMemory,
  27108. /* x86_sse41_round_ps */ DoesNotAccessMemory,
  27109. /* x86_sse41_round_sd */ DoesNotAccessMemory,
  27110. /* x86_sse41_round_ss */ DoesNotAccessMemory,
  27111. /* x86_sse42_crc32_32_16 */ DoesNotAccessMemory,
  27112. /* x86_sse42_crc32_32_32 */ DoesNotAccessMemory,
  27113. /* x86_sse42_crc32_32_8 */ DoesNotAccessMemory,
  27114. /* x86_sse42_crc32_64_64 */ DoesNotAccessMemory,
  27115. /* x86_sse42_crc32_64_8 */ DoesNotAccessMemory,
  27116. /* x86_sse42_pcmpestri128 */ DoesNotAccessMemory,
  27117. /* x86_sse42_pcmpestria128 */ DoesNotAccessMemory,
  27118. /* x86_sse42_pcmpestric128 */ DoesNotAccessMemory,
  27119. /* x86_sse42_pcmpestrio128 */ DoesNotAccessMemory,
  27120. /* x86_sse42_pcmpestris128 */ DoesNotAccessMemory,
  27121. /* x86_sse42_pcmpestriz128 */ DoesNotAccessMemory,
  27122. /* x86_sse42_pcmpestrm128 */ DoesNotAccessMemory,
  27123. /* x86_sse42_pcmpistri128 */ DoesNotAccessMemory,
  27124. /* x86_sse42_pcmpistria128 */ DoesNotAccessMemory,
  27125. /* x86_sse42_pcmpistric128 */ DoesNotAccessMemory,
  27126. /* x86_sse42_pcmpistrio128 */ DoesNotAccessMemory,
  27127. /* x86_sse42_pcmpistris128 */ DoesNotAccessMemory,
  27128. /* x86_sse42_pcmpistriz128 */ DoesNotAccessMemory,
  27129. /* x86_sse42_pcmpistrm128 */ DoesNotAccessMemory,
  27130. /* x86_sse4a_extrq */ DoesNotAccessMemory,
  27131. /* x86_sse4a_extrqi */ DoesNotAccessMemory,
  27132. /* x86_sse4a_insertq */ DoesNotAccessMemory,
  27133. /* x86_sse4a_insertqi */ DoesNotAccessMemory,
  27134. /* x86_sse4a_movnt_sd */ UnknownModRefBehavior,
  27135. /* x86_sse4a_movnt_ss */ UnknownModRefBehavior,
  27136. /* x86_sse_add_ss */ DoesNotAccessMemory,
  27137. /* x86_sse_cmp_ps */ DoesNotAccessMemory,
  27138. /* x86_sse_cmp_ss */ DoesNotAccessMemory,
  27139. /* x86_sse_comieq_ss */ DoesNotAccessMemory,
  27140. /* x86_sse_comige_ss */ DoesNotAccessMemory,
  27141. /* x86_sse_comigt_ss */ DoesNotAccessMemory,
  27142. /* x86_sse_comile_ss */ DoesNotAccessMemory,
  27143. /* x86_sse_comilt_ss */ DoesNotAccessMemory,
  27144. /* x86_sse_comineq_ss */ DoesNotAccessMemory,
  27145. /* x86_sse_cvtpd2pi */ DoesNotAccessMemory,
  27146. /* x86_sse_cvtpi2pd */ DoesNotAccessMemory,
  27147. /* x86_sse_cvtpi2ps */ DoesNotAccessMemory,
  27148. /* x86_sse_cvtps2pi */ DoesNotAccessMemory,
  27149. /* x86_sse_cvtsi2ss */ DoesNotAccessMemory,
  27150. /* x86_sse_cvtsi642ss */ DoesNotAccessMemory,
  27151. /* x86_sse_cvtss2si */ DoesNotAccessMemory,
  27152. /* x86_sse_cvtss2si64 */ DoesNotAccessMemory,
  27153. /* x86_sse_cvttpd2pi */ DoesNotAccessMemory,
  27154. /* x86_sse_cvttps2pi */ DoesNotAccessMemory,
  27155. /* x86_sse_cvttss2si */ DoesNotAccessMemory,
  27156. /* x86_sse_cvttss2si64 */ DoesNotAccessMemory,
  27157. /* x86_sse_div_ss */ DoesNotAccessMemory,
  27158. /* x86_sse_ldmxcsr */ UnknownModRefBehavior,
  27159. /* x86_sse_max_ps */ DoesNotAccessMemory,
  27160. /* x86_sse_max_ss */ DoesNotAccessMemory,
  27161. /* x86_sse_min_ps */ DoesNotAccessMemory,
  27162. /* x86_sse_min_ss */ DoesNotAccessMemory,
  27163. /* x86_sse_movmsk_ps */ DoesNotAccessMemory,
  27164. /* x86_sse_mul_ss */ DoesNotAccessMemory,
  27165. /* x86_sse_pshuf_w */ DoesNotAccessMemory,
  27166. /* x86_sse_rcp_ps */ DoesNotAccessMemory,
  27167. /* x86_sse_rcp_ss */ DoesNotAccessMemory,
  27168. /* x86_sse_rsqrt_ps */ DoesNotAccessMemory,
  27169. /* x86_sse_rsqrt_ss */ DoesNotAccessMemory,
  27170. /* x86_sse_sfence */ UnknownModRefBehavior,
  27171. /* x86_sse_sqrt_ps */ DoesNotAccessMemory,
  27172. /* x86_sse_sqrt_ss */ DoesNotAccessMemory,
  27173. /* x86_sse_stmxcsr */ UnknownModRefBehavior,
  27174. /* x86_sse_storeu_ps */ OnlyAccessesArgumentPointees,
  27175. /* x86_sse_sub_ss */ DoesNotAccessMemory,
  27176. /* x86_sse_ucomieq_ss */ DoesNotAccessMemory,
  27177. /* x86_sse_ucomige_ss */ DoesNotAccessMemory,
  27178. /* x86_sse_ucomigt_ss */ DoesNotAccessMemory,
  27179. /* x86_sse_ucomile_ss */ DoesNotAccessMemory,
  27180. /* x86_sse_ucomilt_ss */ DoesNotAccessMemory,
  27181. /* x86_sse_ucomineq_ss */ DoesNotAccessMemory,
  27182. /* x86_ssse3_pabs_b */ DoesNotAccessMemory,
  27183. /* x86_ssse3_pabs_b_128 */ DoesNotAccessMemory,
  27184. /* x86_ssse3_pabs_d */ DoesNotAccessMemory,
  27185. /* x86_ssse3_pabs_d_128 */ DoesNotAccessMemory,
  27186. /* x86_ssse3_pabs_w */ DoesNotAccessMemory,
  27187. /* x86_ssse3_pabs_w_128 */ DoesNotAccessMemory,
  27188. /* x86_ssse3_phadd_d */ DoesNotAccessMemory,
  27189. /* x86_ssse3_phadd_d_128 */ DoesNotAccessMemory,
  27190. /* x86_ssse3_phadd_sw */ DoesNotAccessMemory,
  27191. /* x86_ssse3_phadd_sw_128 */ DoesNotAccessMemory,
  27192. /* x86_ssse3_phadd_w */ DoesNotAccessMemory,
  27193. /* x86_ssse3_phadd_w_128 */ DoesNotAccessMemory,
  27194. /* x86_ssse3_phsub_d */ DoesNotAccessMemory,
  27195. /* x86_ssse3_phsub_d_128 */ DoesNotAccessMemory,
  27196. /* x86_ssse3_phsub_sw */ DoesNotAccessMemory,
  27197. /* x86_ssse3_phsub_sw_128 */ DoesNotAccessMemory,
  27198. /* x86_ssse3_phsub_w */ DoesNotAccessMemory,
  27199. /* x86_ssse3_phsub_w_128 */ DoesNotAccessMemory,
  27200. /* x86_ssse3_pmadd_ub_sw */ DoesNotAccessMemory,
  27201. /* x86_ssse3_pmadd_ub_sw_128 */ DoesNotAccessMemory,
  27202. /* x86_ssse3_pmul_hr_sw */ DoesNotAccessMemory,
  27203. /* x86_ssse3_pmul_hr_sw_128 */ DoesNotAccessMemory,
  27204. /* x86_ssse3_pshuf_b */ DoesNotAccessMemory,
  27205. /* x86_ssse3_pshuf_b_128 */ DoesNotAccessMemory,
  27206. /* x86_ssse3_psign_b */ DoesNotAccessMemory,
  27207. /* x86_ssse3_psign_b_128 */ DoesNotAccessMemory,
  27208. /* x86_ssse3_psign_d */ DoesNotAccessMemory,
  27209. /* x86_ssse3_psign_d_128 */ DoesNotAccessMemory,
  27210. /* x86_ssse3_psign_w */ DoesNotAccessMemory,
  27211. /* x86_ssse3_psign_w_128 */ DoesNotAccessMemory,
  27212. /* x86_vcvtph2ps_128 */ DoesNotAccessMemory,
  27213. /* x86_vcvtph2ps_256 */ DoesNotAccessMemory,
  27214. /* x86_vcvtps2ph_128 */ DoesNotAccessMemory,
  27215. /* x86_vcvtps2ph_256 */ DoesNotAccessMemory,
  27216. /* x86_wrfsbase_32 */ UnknownModRefBehavior,
  27217. /* x86_wrfsbase_64 */ UnknownModRefBehavior,
  27218. /* x86_wrgsbase_32 */ UnknownModRefBehavior,
  27219. /* x86_wrgsbase_64 */ UnknownModRefBehavior,
  27220. /* x86_xabort */ UnknownModRefBehavior,
  27221. /* x86_xbegin */ UnknownModRefBehavior,
  27222. /* x86_xend */ UnknownModRefBehavior,
  27223. /* x86_xop_vfrcz_pd */ DoesNotAccessMemory,
  27224. /* x86_xop_vfrcz_pd_256 */ DoesNotAccessMemory,
  27225. /* x86_xop_vfrcz_ps */ DoesNotAccessMemory,
  27226. /* x86_xop_vfrcz_ps_256 */ DoesNotAccessMemory,
  27227. /* x86_xop_vfrcz_sd */ DoesNotAccessMemory,
  27228. /* x86_xop_vfrcz_ss */ DoesNotAccessMemory,
  27229. /* x86_xop_vpcmov */ DoesNotAccessMemory,
  27230. /* x86_xop_vpcmov_256 */ DoesNotAccessMemory,
  27231. /* x86_xop_vpcomb */ DoesNotAccessMemory,
  27232. /* x86_xop_vpcomd */ DoesNotAccessMemory,
  27233. /* x86_xop_vpcomq */ DoesNotAccessMemory,
  27234. /* x86_xop_vpcomub */ DoesNotAccessMemory,
  27235. /* x86_xop_vpcomud */ DoesNotAccessMemory,
  27236. /* x86_xop_vpcomuq */ DoesNotAccessMemory,
  27237. /* x86_xop_vpcomuw */ DoesNotAccessMemory,
  27238. /* x86_xop_vpcomw */ DoesNotAccessMemory,
  27239. /* x86_xop_vpermil2pd */ DoesNotAccessMemory,
  27240. /* x86_xop_vpermil2pd_256 */ DoesNotAccessMemory,
  27241. /* x86_xop_vpermil2ps */ DoesNotAccessMemory,
  27242. /* x86_xop_vpermil2ps_256 */ DoesNotAccessMemory,
  27243. /* x86_xop_vphaddbd */ DoesNotAccessMemory,
  27244. /* x86_xop_vphaddbq */ DoesNotAccessMemory,
  27245. /* x86_xop_vphaddbw */ DoesNotAccessMemory,
  27246. /* x86_xop_vphadddq */ DoesNotAccessMemory,
  27247. /* x86_xop_vphaddubd */ DoesNotAccessMemory,
  27248. /* x86_xop_vphaddubq */ DoesNotAccessMemory,
  27249. /* x86_xop_vphaddubw */ DoesNotAccessMemory,
  27250. /* x86_xop_vphaddudq */ DoesNotAccessMemory,
  27251. /* x86_xop_vphadduwd */ DoesNotAccessMemory,
  27252. /* x86_xop_vphadduwq */ DoesNotAccessMemory,
  27253. /* x86_xop_vphaddwd */ DoesNotAccessMemory,
  27254. /* x86_xop_vphaddwq */ DoesNotAccessMemory,
  27255. /* x86_xop_vphsubbw */ DoesNotAccessMemory,
  27256. /* x86_xop_vphsubdq */ DoesNotAccessMemory,
  27257. /* x86_xop_vphsubwd */ DoesNotAccessMemory,
  27258. /* x86_xop_vpmacsdd */ DoesNotAccessMemory,
  27259. /* x86_xop_vpmacsdqh */ DoesNotAccessMemory,
  27260. /* x86_xop_vpmacsdql */ DoesNotAccessMemory,
  27261. /* x86_xop_vpmacssdd */ DoesNotAccessMemory,
  27262. /* x86_xop_vpmacssdqh */ DoesNotAccessMemory,
  27263. /* x86_xop_vpmacssdql */ DoesNotAccessMemory,
  27264. /* x86_xop_vpmacsswd */ DoesNotAccessMemory,
  27265. /* x86_xop_vpmacssww */ DoesNotAccessMemory,
  27266. /* x86_xop_vpmacswd */ DoesNotAccessMemory,
  27267. /* x86_xop_vpmacsww */ DoesNotAccessMemory,
  27268. /* x86_xop_vpmadcsswd */ DoesNotAccessMemory,
  27269. /* x86_xop_vpmadcswd */ DoesNotAccessMemory,
  27270. /* x86_xop_vpperm */ DoesNotAccessMemory,
  27271. /* x86_xop_vprotb */ DoesNotAccessMemory,
  27272. /* x86_xop_vprotbi */ DoesNotAccessMemory,
  27273. /* x86_xop_vprotd */ DoesNotAccessMemory,
  27274. /* x86_xop_vprotdi */ DoesNotAccessMemory,
  27275. /* x86_xop_vprotq */ DoesNotAccessMemory,
  27276. /* x86_xop_vprotqi */ DoesNotAccessMemory,
  27277. /* x86_xop_vprotw */ DoesNotAccessMemory,
  27278. /* x86_xop_vprotwi */ DoesNotAccessMemory,
  27279. /* x86_xop_vpshab */ DoesNotAccessMemory,
  27280. /* x86_xop_vpshad */ DoesNotAccessMemory,
  27281. /* x86_xop_vpshaq */ DoesNotAccessMemory,
  27282. /* x86_xop_vpshaw */ DoesNotAccessMemory,
  27283. /* x86_xop_vpshlb */ DoesNotAccessMemory,
  27284. /* x86_xop_vpshld */ DoesNotAccessMemory,
  27285. /* x86_xop_vpshlq */ DoesNotAccessMemory,
  27286. /* x86_xop_vpshlw */ DoesNotAccessMemory,
  27287. /* x86_xtest */ UnknownModRefBehavior,
  27288. /* xcore_bitrev */ DoesNotAccessMemory,
  27289. /* xcore_checkevent */ UnknownModRefBehavior,
  27290. /* xcore_chkct */ UnknownModRefBehavior,
  27291. /* xcore_clre */ UnknownModRefBehavior,
  27292. /* xcore_clrsr */ UnknownModRefBehavior,
  27293. /* xcore_crc32 */ DoesNotAccessMemory,
  27294. /* xcore_crc8 */ DoesNotAccessMemory,
  27295. /* xcore_eeu */ UnknownModRefBehavior,
  27296. /* xcore_endin */ UnknownModRefBehavior,
  27297. /* xcore_freer */ UnknownModRefBehavior,
  27298. /* xcore_geted */ UnknownModRefBehavior,
  27299. /* xcore_getet */ UnknownModRefBehavior,
  27300. /* xcore_getid */ DoesNotAccessMemory,
  27301. /* xcore_getps */ UnknownModRefBehavior,
  27302. /* xcore_getr */ UnknownModRefBehavior,
  27303. /* xcore_getst */ UnknownModRefBehavior,
  27304. /* xcore_getts */ UnknownModRefBehavior,
  27305. /* xcore_in */ UnknownModRefBehavior,
  27306. /* xcore_inct */ UnknownModRefBehavior,
  27307. /* xcore_initcp */ UnknownModRefBehavior,
  27308. /* xcore_initdp */ UnknownModRefBehavior,
  27309. /* xcore_initlr */ UnknownModRefBehavior,
  27310. /* xcore_initpc */ UnknownModRefBehavior,
  27311. /* xcore_initsp */ UnknownModRefBehavior,
  27312. /* xcore_inshr */ UnknownModRefBehavior,
  27313. /* xcore_int */ UnknownModRefBehavior,
  27314. /* xcore_mjoin */ UnknownModRefBehavior,
  27315. /* xcore_msync */ UnknownModRefBehavior,
  27316. /* xcore_out */ UnknownModRefBehavior,
  27317. /* xcore_outct */ UnknownModRefBehavior,
  27318. /* xcore_outshr */ UnknownModRefBehavior,
  27319. /* xcore_outt */ UnknownModRefBehavior,
  27320. /* xcore_peek */ UnknownModRefBehavior,
  27321. /* xcore_setc */ UnknownModRefBehavior,
  27322. /* xcore_setclk */ UnknownModRefBehavior,
  27323. /* xcore_setd */ UnknownModRefBehavior,
  27324. /* xcore_setev */ UnknownModRefBehavior,
  27325. /* xcore_setps */ UnknownModRefBehavior,
  27326. /* xcore_setpsc */ UnknownModRefBehavior,
  27327. /* xcore_setpt */ UnknownModRefBehavior,
  27328. /* xcore_setrdy */ UnknownModRefBehavior,
  27329. /* xcore_setsr */ UnknownModRefBehavior,
  27330. /* xcore_settw */ UnknownModRefBehavior,
  27331. /* xcore_setv */ UnknownModRefBehavior,
  27332. /* xcore_sext */ DoesNotAccessMemory,
  27333. /* xcore_ssync */ UnknownModRefBehavior,
  27334. /* xcore_syncr */ UnknownModRefBehavior,
  27335. /* xcore_testct */ UnknownModRefBehavior,
  27336. /* xcore_testwct */ UnknownModRefBehavior,
  27337. /* xcore_waitevent */ OnlyReadsMemory,
  27338. /* xcore_zext */ DoesNotAccessMemory,
  27339. };
  27340. return static_cast<ModRefBehavior>(IntrinsicModRefBehavior[iid]);
  27341. #endif // GET_INTRINSIC_MODREF_BEHAVIOR
  27342. // Get the LLVM intrinsic that corresponds to a GCC builtin.
  27343. // This is used by the C front-end. The GCC builtin name is passed
  27344. // in as BuiltinName, and a target prefix (e.g. 'ppc') is passed
  27345. // in as TargetPrefix. The result is assigned to 'IntrinsicID'.
  27346. #ifdef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN
  27347. Intrinsic::ID Intrinsic::getIntrinsicForGCCBuiltin(const char *TargetPrefixStr, const char *BuiltinNameStr) {
  27348. StringRef BuiltinName(BuiltinNameStr);
  27349. StringRef TargetPrefix(TargetPrefixStr);
  27350. /* Target Independent Builtins */ {
  27351. switch (BuiltinName.size()) {
  27352. default: break;
  27353. case 10: // 1 string to match.
  27354. if (memcmp(BuiltinName.data()+0, "__nvvm_h2f", 10))
  27355. break;
  27356. return Intrinsic::nvvm_h2f; // "__nvvm_h2f"
  27357. case 11: // 2 strings to match.
  27358. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  27359. break;
  27360. switch (BuiltinName[7]) {
  27361. default: break;
  27362. case 'b': // 1 string to match.
  27363. if (memcmp(BuiltinName.data()+8, "ar0", 3))
  27364. break;
  27365. return Intrinsic::nvvm_barrier0; // "__nvvm_bar0"
  27366. case 'p': // 1 string to match.
  27367. if (memcmp(BuiltinName.data()+8, "rmt", 3))
  27368. break;
  27369. return Intrinsic::nvvm_prmt; // "__nvvm_prmt"
  27370. }
  27371. break;
  27372. case 12: // 5 strings to match.
  27373. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  27374. break;
  27375. switch (BuiltinName[7]) {
  27376. default: break;
  27377. case 'a': // 1 string to match.
  27378. if (memcmp(BuiltinName.data()+8, "bs_i", 4))
  27379. break;
  27380. return Intrinsic::nvvm_abs_i; // "__nvvm_abs_i"
  27381. case 'c': // 1 string to match.
  27382. if (memcmp(BuiltinName.data()+8, "lz_i", 4))
  27383. break;
  27384. return Intrinsic::nvvm_clz_i; // "__nvvm_clz_i"
  27385. case 'm': // 2 strings to match.
  27386. switch (BuiltinName[8]) {
  27387. default: break;
  27388. case 'a': // 1 string to match.
  27389. if (memcmp(BuiltinName.data()+9, "x_i", 3))
  27390. break;
  27391. return Intrinsic::nvvm_max_i; // "__nvvm_max_i"
  27392. case 'i': // 1 string to match.
  27393. if (memcmp(BuiltinName.data()+9, "n_i", 3))
  27394. break;
  27395. return Intrinsic::nvvm_min_i; // "__nvvm_min_i"
  27396. }
  27397. break;
  27398. case 's': // 1 string to match.
  27399. if (memcmp(BuiltinName.data()+8, "ad_i", 4))
  27400. break;
  27401. return Intrinsic::nvvm_sad_i; // "__nvvm_sad_i"
  27402. }
  27403. break;
  27404. case 13: // 42 strings to match.
  27405. if (memcmp(BuiltinName.data()+0, "__", 2))
  27406. break;
  27407. switch (BuiltinName[2]) {
  27408. default: break;
  27409. case 'n': // 41 strings to match.
  27410. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  27411. break;
  27412. switch (BuiltinName[7]) {
  27413. default: break;
  27414. case 'a': // 1 string to match.
  27415. if (memcmp(BuiltinName.data()+8, "bs_ll", 5))
  27416. break;
  27417. return Intrinsic::nvvm_abs_ll; // "__nvvm_abs_ll"
  27418. case 'b': // 2 strings to match.
  27419. if (memcmp(BuiltinName.data()+8, "rev", 3))
  27420. break;
  27421. switch (BuiltinName[11]) {
  27422. default: break;
  27423. case '3': // 1 string to match.
  27424. if (BuiltinName[12] != '2')
  27425. break;
  27426. return Intrinsic::nvvm_brev32; // "__nvvm_brev32"
  27427. case '6': // 1 string to match.
  27428. if (BuiltinName[12] != '4')
  27429. break;
  27430. return Intrinsic::nvvm_brev64; // "__nvvm_brev64"
  27431. }
  27432. break;
  27433. case 'c': // 3 strings to match.
  27434. switch (BuiltinName[8]) {
  27435. default: break;
  27436. case 'e': // 2 strings to match.
  27437. if (memcmp(BuiltinName.data()+9, "il_", 3))
  27438. break;
  27439. switch (BuiltinName[12]) {
  27440. default: break;
  27441. case 'd': // 1 string to match.
  27442. return Intrinsic::nvvm_ceil_d; // "__nvvm_ceil_d"
  27443. case 'f': // 1 string to match.
  27444. return Intrinsic::nvvm_ceil_f; // "__nvvm_ceil_f"
  27445. }
  27446. break;
  27447. case 'l': // 1 string to match.
  27448. if (memcmp(BuiltinName.data()+9, "z_ll", 4))
  27449. break;
  27450. return Intrinsic::nvvm_clz_ll; // "__nvvm_clz_ll"
  27451. }
  27452. break;
  27453. case 'd': // 10 strings to match.
  27454. if (BuiltinName[8] != '2')
  27455. break;
  27456. switch (BuiltinName[9]) {
  27457. default: break;
  27458. case 'f': // 4 strings to match.
  27459. if (memcmp(BuiltinName.data()+10, "_r", 2))
  27460. break;
  27461. switch (BuiltinName[12]) {
  27462. default: break;
  27463. case 'm': // 1 string to match.
  27464. return Intrinsic::nvvm_d2f_rm; // "__nvvm_d2f_rm"
  27465. case 'n': // 1 string to match.
  27466. return Intrinsic::nvvm_d2f_rn; // "__nvvm_d2f_rn"
  27467. case 'p': // 1 string to match.
  27468. return Intrinsic::nvvm_d2f_rp; // "__nvvm_d2f_rp"
  27469. case 'z': // 1 string to match.
  27470. return Intrinsic::nvvm_d2f_rz; // "__nvvm_d2f_rz"
  27471. }
  27472. break;
  27473. case 'i': // 6 strings to match.
  27474. if (BuiltinName[10] != '_')
  27475. break;
  27476. switch (BuiltinName[11]) {
  27477. default: break;
  27478. case 'h': // 1 string to match.
  27479. if (BuiltinName[12] != 'i')
  27480. break;
  27481. return Intrinsic::nvvm_d2i_hi; // "__nvvm_d2i_hi"
  27482. case 'l': // 1 string to match.
  27483. if (BuiltinName[12] != 'o')
  27484. break;
  27485. return Intrinsic::nvvm_d2i_lo; // "__nvvm_d2i_lo"
  27486. case 'r': // 4 strings to match.
  27487. switch (BuiltinName[12]) {
  27488. default: break;
  27489. case 'm': // 1 string to match.
  27490. return Intrinsic::nvvm_d2i_rm; // "__nvvm_d2i_rm"
  27491. case 'n': // 1 string to match.
  27492. return Intrinsic::nvvm_d2i_rn; // "__nvvm_d2i_rn"
  27493. case 'p': // 1 string to match.
  27494. return Intrinsic::nvvm_d2i_rp; // "__nvvm_d2i_rp"
  27495. case 'z': // 1 string to match.
  27496. return Intrinsic::nvvm_d2i_rz; // "__nvvm_d2i_rz"
  27497. }
  27498. break;
  27499. }
  27500. break;
  27501. }
  27502. break;
  27503. case 'f': // 11 strings to match.
  27504. switch (BuiltinName[8]) {
  27505. default: break;
  27506. case '2': // 5 strings to match.
  27507. switch (BuiltinName[9]) {
  27508. default: break;
  27509. case 'h': // 1 string to match.
  27510. if (memcmp(BuiltinName.data()+10, "_rn", 3))
  27511. break;
  27512. return Intrinsic::nvvm_f2h_rn; // "__nvvm_f2h_rn"
  27513. case 'i': // 4 strings to match.
  27514. if (memcmp(BuiltinName.data()+10, "_r", 2))
  27515. break;
  27516. switch (BuiltinName[12]) {
  27517. default: break;
  27518. case 'm': // 1 string to match.
  27519. return Intrinsic::nvvm_f2i_rm; // "__nvvm_f2i_rm"
  27520. case 'n': // 1 string to match.
  27521. return Intrinsic::nvvm_f2i_rn; // "__nvvm_f2i_rn"
  27522. case 'p': // 1 string to match.
  27523. return Intrinsic::nvvm_f2i_rp; // "__nvvm_f2i_rp"
  27524. case 'z': // 1 string to match.
  27525. return Intrinsic::nvvm_f2i_rz; // "__nvvm_f2i_rz"
  27526. }
  27527. break;
  27528. }
  27529. break;
  27530. case 'a': // 2 strings to match.
  27531. if (memcmp(BuiltinName.data()+9, "bs_", 3))
  27532. break;
  27533. switch (BuiltinName[12]) {
  27534. default: break;
  27535. case 'd': // 1 string to match.
  27536. return Intrinsic::nvvm_fabs_d; // "__nvvm_fabs_d"
  27537. case 'f': // 1 string to match.
  27538. return Intrinsic::nvvm_fabs_f; // "__nvvm_fabs_f"
  27539. }
  27540. break;
  27541. case 'm': // 4 strings to match.
  27542. switch (BuiltinName[9]) {
  27543. default: break;
  27544. case 'a': // 2 strings to match.
  27545. if (memcmp(BuiltinName.data()+10, "x_", 2))
  27546. break;
  27547. switch (BuiltinName[12]) {
  27548. default: break;
  27549. case 'd': // 1 string to match.
  27550. return Intrinsic::nvvm_fmax_d; // "__nvvm_fmax_d"
  27551. case 'f': // 1 string to match.
  27552. return Intrinsic::nvvm_fmax_f; // "__nvvm_fmax_f"
  27553. }
  27554. break;
  27555. case 'i': // 2 strings to match.
  27556. if (memcmp(BuiltinName.data()+10, "n_", 2))
  27557. break;
  27558. switch (BuiltinName[12]) {
  27559. default: break;
  27560. case 'd': // 1 string to match.
  27561. return Intrinsic::nvvm_fmin_d; // "__nvvm_fmin_d"
  27562. case 'f': // 1 string to match.
  27563. return Intrinsic::nvvm_fmin_f; // "__nvvm_fmin_f"
  27564. }
  27565. break;
  27566. }
  27567. break;
  27568. }
  27569. break;
  27570. case 'i': // 8 strings to match.
  27571. if (BuiltinName[8] != '2')
  27572. break;
  27573. switch (BuiltinName[9]) {
  27574. default: break;
  27575. case 'd': // 4 strings to match.
  27576. if (memcmp(BuiltinName.data()+10, "_r", 2))
  27577. break;
  27578. switch (BuiltinName[12]) {
  27579. default: break;
  27580. case 'm': // 1 string to match.
  27581. return Intrinsic::nvvm_i2d_rm; // "__nvvm_i2d_rm"
  27582. case 'n': // 1 string to match.
  27583. return Intrinsic::nvvm_i2d_rn; // "__nvvm_i2d_rn"
  27584. case 'p': // 1 string to match.
  27585. return Intrinsic::nvvm_i2d_rp; // "__nvvm_i2d_rp"
  27586. case 'z': // 1 string to match.
  27587. return Intrinsic::nvvm_i2d_rz; // "__nvvm_i2d_rz"
  27588. }
  27589. break;
  27590. case 'f': // 4 strings to match.
  27591. if (memcmp(BuiltinName.data()+10, "_r", 2))
  27592. break;
  27593. switch (BuiltinName[12]) {
  27594. default: break;
  27595. case 'm': // 1 string to match.
  27596. return Intrinsic::nvvm_i2f_rm; // "__nvvm_i2f_rm"
  27597. case 'n': // 1 string to match.
  27598. return Intrinsic::nvvm_i2f_rn; // "__nvvm_i2f_rn"
  27599. case 'p': // 1 string to match.
  27600. return Intrinsic::nvvm_i2f_rp; // "__nvvm_i2f_rp"
  27601. case 'z': // 1 string to match.
  27602. return Intrinsic::nvvm_i2f_rz; // "__nvvm_i2f_rz"
  27603. }
  27604. break;
  27605. }
  27606. break;
  27607. case 'm': // 4 strings to match.
  27608. switch (BuiltinName[8]) {
  27609. default: break;
  27610. case 'a': // 2 strings to match.
  27611. if (memcmp(BuiltinName.data()+9, "x_", 2))
  27612. break;
  27613. switch (BuiltinName[11]) {
  27614. default: break;
  27615. case 'l': // 1 string to match.
  27616. if (BuiltinName[12] != 'l')
  27617. break;
  27618. return Intrinsic::nvvm_max_ll; // "__nvvm_max_ll"
  27619. case 'u': // 1 string to match.
  27620. if (BuiltinName[12] != 'i')
  27621. break;
  27622. return Intrinsic::nvvm_max_ui; // "__nvvm_max_ui"
  27623. }
  27624. break;
  27625. case 'i': // 2 strings to match.
  27626. if (memcmp(BuiltinName.data()+9, "n_", 2))
  27627. break;
  27628. switch (BuiltinName[11]) {
  27629. default: break;
  27630. case 'l': // 1 string to match.
  27631. if (BuiltinName[12] != 'l')
  27632. break;
  27633. return Intrinsic::nvvm_min_ll; // "__nvvm_min_ll"
  27634. case 'u': // 1 string to match.
  27635. if (BuiltinName[12] != 'i')
  27636. break;
  27637. return Intrinsic::nvvm_min_ui; // "__nvvm_min_ui"
  27638. }
  27639. break;
  27640. }
  27641. break;
  27642. case 'p': // 1 string to match.
  27643. if (memcmp(BuiltinName.data()+8, "opc_i", 5))
  27644. break;
  27645. return Intrinsic::nvvm_popc_i; // "__nvvm_popc_i"
  27646. case 's': // 1 string to match.
  27647. if (memcmp(BuiltinName.data()+8, "ad_ui", 5))
  27648. break;
  27649. return Intrinsic::nvvm_sad_ui; // "__nvvm_sad_ui"
  27650. }
  27651. break;
  27652. case 's': // 1 string to match.
  27653. if (memcmp(BuiltinName.data()+3, "yncthreads", 10))
  27654. break;
  27655. return Intrinsic::cuda_syncthreads; // "__syncthreads"
  27656. }
  27657. break;
  27658. case 14: // 47 strings to match.
  27659. if (memcmp(BuiltinName.data()+0, "__", 2))
  27660. break;
  27661. switch (BuiltinName[2]) {
  27662. default: break;
  27663. case 'b': // 1 string to match.
  27664. if (memcmp(BuiltinName.data()+3, "uiltin_trap", 11))
  27665. break;
  27666. return Intrinsic::trap; // "__builtin_trap"
  27667. case 'g': // 2 strings to match.
  27668. if (memcmp(BuiltinName.data()+3, "nu_", 3))
  27669. break;
  27670. switch (BuiltinName[6]) {
  27671. default: break;
  27672. case 'f': // 1 string to match.
  27673. if (memcmp(BuiltinName.data()+7, "2h_ieee", 7))
  27674. break;
  27675. return Intrinsic::convert_to_fp16; // "__gnu_f2h_ieee"
  27676. case 'h': // 1 string to match.
  27677. if (memcmp(BuiltinName.data()+7, "2f_ieee", 7))
  27678. break;
  27679. return Intrinsic::convert_from_fp16; // "__gnu_h2f_ieee"
  27680. }
  27681. break;
  27682. case 'n': // 44 strings to match.
  27683. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  27684. break;
  27685. switch (BuiltinName[7]) {
  27686. default: break;
  27687. case 'b': // 1 string to match.
  27688. if (memcmp(BuiltinName.data()+8, "ar0_or", 6))
  27689. break;
  27690. return Intrinsic::nvvm_barrier0_or; // "__nvvm_bar0_or"
  27691. case 'd': // 8 strings to match.
  27692. if (BuiltinName[8] != '2')
  27693. break;
  27694. switch (BuiltinName[9]) {
  27695. default: break;
  27696. case 'l': // 4 strings to match.
  27697. if (memcmp(BuiltinName.data()+10, "l_r", 3))
  27698. break;
  27699. switch (BuiltinName[13]) {
  27700. default: break;
  27701. case 'm': // 1 string to match.
  27702. return Intrinsic::nvvm_d2ll_rm; // "__nvvm_d2ll_rm"
  27703. case 'n': // 1 string to match.
  27704. return Intrinsic::nvvm_d2ll_rn; // "__nvvm_d2ll_rn"
  27705. case 'p': // 1 string to match.
  27706. return Intrinsic::nvvm_d2ll_rp; // "__nvvm_d2ll_rp"
  27707. case 'z': // 1 string to match.
  27708. return Intrinsic::nvvm_d2ll_rz; // "__nvvm_d2ll_rz"
  27709. }
  27710. break;
  27711. case 'u': // 4 strings to match.
  27712. if (memcmp(BuiltinName.data()+10, "i_r", 3))
  27713. break;
  27714. switch (BuiltinName[13]) {
  27715. default: break;
  27716. case 'm': // 1 string to match.
  27717. return Intrinsic::nvvm_d2ui_rm; // "__nvvm_d2ui_rm"
  27718. case 'n': // 1 string to match.
  27719. return Intrinsic::nvvm_d2ui_rn; // "__nvvm_d2ui_rn"
  27720. case 'p': // 1 string to match.
  27721. return Intrinsic::nvvm_d2ui_rp; // "__nvvm_d2ui_rp"
  27722. case 'z': // 1 string to match.
  27723. return Intrinsic::nvvm_d2ui_rz; // "__nvvm_d2ui_rz"
  27724. }
  27725. break;
  27726. }
  27727. break;
  27728. case 'f': // 10 strings to match.
  27729. switch (BuiltinName[8]) {
  27730. default: break;
  27731. case '2': // 8 strings to match.
  27732. switch (BuiltinName[9]) {
  27733. default: break;
  27734. case 'l': // 4 strings to match.
  27735. if (memcmp(BuiltinName.data()+10, "l_r", 3))
  27736. break;
  27737. switch (BuiltinName[13]) {
  27738. default: break;
  27739. case 'm': // 1 string to match.
  27740. return Intrinsic::nvvm_f2ll_rm; // "__nvvm_f2ll_rm"
  27741. case 'n': // 1 string to match.
  27742. return Intrinsic::nvvm_f2ll_rn; // "__nvvm_f2ll_rn"
  27743. case 'p': // 1 string to match.
  27744. return Intrinsic::nvvm_f2ll_rp; // "__nvvm_f2ll_rp"
  27745. case 'z': // 1 string to match.
  27746. return Intrinsic::nvvm_f2ll_rz; // "__nvvm_f2ll_rz"
  27747. }
  27748. break;
  27749. case 'u': // 4 strings to match.
  27750. if (memcmp(BuiltinName.data()+10, "i_r", 3))
  27751. break;
  27752. switch (BuiltinName[13]) {
  27753. default: break;
  27754. case 'm': // 1 string to match.
  27755. return Intrinsic::nvvm_f2ui_rm; // "__nvvm_f2ui_rm"
  27756. case 'n': // 1 string to match.
  27757. return Intrinsic::nvvm_f2ui_rn; // "__nvvm_f2ui_rn"
  27758. case 'p': // 1 string to match.
  27759. return Intrinsic::nvvm_f2ui_rp; // "__nvvm_f2ui_rp"
  27760. case 'z': // 1 string to match.
  27761. return Intrinsic::nvvm_f2ui_rz; // "__nvvm_f2ui_rz"
  27762. }
  27763. break;
  27764. }
  27765. break;
  27766. case 'l': // 2 strings to match.
  27767. if (memcmp(BuiltinName.data()+9, "oor_", 4))
  27768. break;
  27769. switch (BuiltinName[13]) {
  27770. default: break;
  27771. case 'd': // 1 string to match.
  27772. return Intrinsic::nvvm_floor_d; // "__nvvm_floor_d"
  27773. case 'f': // 1 string to match.
  27774. return Intrinsic::nvvm_floor_f; // "__nvvm_floor_f"
  27775. }
  27776. break;
  27777. }
  27778. break;
  27779. case 'l': // 8 strings to match.
  27780. if (memcmp(BuiltinName.data()+8, "l2", 2))
  27781. break;
  27782. switch (BuiltinName[10]) {
  27783. default: break;
  27784. case 'd': // 4 strings to match.
  27785. if (memcmp(BuiltinName.data()+11, "_r", 2))
  27786. break;
  27787. switch (BuiltinName[13]) {
  27788. default: break;
  27789. case 'm': // 1 string to match.
  27790. return Intrinsic::nvvm_ll2d_rm; // "__nvvm_ll2d_rm"
  27791. case 'n': // 1 string to match.
  27792. return Intrinsic::nvvm_ll2d_rn; // "__nvvm_ll2d_rn"
  27793. case 'p': // 1 string to match.
  27794. return Intrinsic::nvvm_ll2d_rp; // "__nvvm_ll2d_rp"
  27795. case 'z': // 1 string to match.
  27796. return Intrinsic::nvvm_ll2d_rz; // "__nvvm_ll2d_rz"
  27797. }
  27798. break;
  27799. case 'f': // 4 strings to match.
  27800. if (memcmp(BuiltinName.data()+11, "_r", 2))
  27801. break;
  27802. switch (BuiltinName[13]) {
  27803. default: break;
  27804. case 'm': // 1 string to match.
  27805. return Intrinsic::nvvm_ll2f_rm; // "__nvvm_ll2f_rm"
  27806. case 'n': // 1 string to match.
  27807. return Intrinsic::nvvm_ll2f_rn; // "__nvvm_ll2f_rn"
  27808. case 'p': // 1 string to match.
  27809. return Intrinsic::nvvm_ll2f_rp; // "__nvvm_ll2f_rp"
  27810. case 'z': // 1 string to match.
  27811. return Intrinsic::nvvm_ll2f_rz; // "__nvvm_ll2f_rz"
  27812. }
  27813. break;
  27814. }
  27815. break;
  27816. case 'm': // 4 strings to match.
  27817. switch (BuiltinName[8]) {
  27818. default: break;
  27819. case 'a': // 1 string to match.
  27820. if (memcmp(BuiltinName.data()+9, "x_ull", 5))
  27821. break;
  27822. return Intrinsic::nvvm_max_ull; // "__nvvm_max_ull"
  27823. case 'i': // 1 string to match.
  27824. if (memcmp(BuiltinName.data()+9, "n_ull", 5))
  27825. break;
  27826. return Intrinsic::nvvm_min_ull; // "__nvvm_min_ull"
  27827. case 'u': // 2 strings to match.
  27828. if (BuiltinName[9] != 'l')
  27829. break;
  27830. switch (BuiltinName[10]) {
  27831. default: break;
  27832. case '2': // 1 string to match.
  27833. if (memcmp(BuiltinName.data()+11, "4_i", 3))
  27834. break;
  27835. return Intrinsic::nvvm_mul24_i; // "__nvvm_mul24_i"
  27836. case 'h': // 1 string to match.
  27837. if (memcmp(BuiltinName.data()+11, "i_i", 3))
  27838. break;
  27839. return Intrinsic::nvvm_mulhi_i; // "__nvvm_mulhi_i"
  27840. }
  27841. break;
  27842. }
  27843. break;
  27844. case 'p': // 1 string to match.
  27845. if (memcmp(BuiltinName.data()+8, "opc_ll", 6))
  27846. break;
  27847. return Intrinsic::nvvm_popc_ll; // "__nvvm_popc_ll"
  27848. case 'r': // 2 strings to match.
  27849. if (memcmp(BuiltinName.data()+8, "ound_", 5))
  27850. break;
  27851. switch (BuiltinName[13]) {
  27852. default: break;
  27853. case 'd': // 1 string to match.
  27854. return Intrinsic::nvvm_round_d; // "__nvvm_round_d"
  27855. case 'f': // 1 string to match.
  27856. return Intrinsic::nvvm_round_f; // "__nvvm_round_f"
  27857. }
  27858. break;
  27859. case 't': // 2 strings to match.
  27860. if (memcmp(BuiltinName.data()+8, "runc_", 5))
  27861. break;
  27862. switch (BuiltinName[13]) {
  27863. default: break;
  27864. case 'd': // 1 string to match.
  27865. return Intrinsic::nvvm_trunc_d; // "__nvvm_trunc_d"
  27866. case 'f': // 1 string to match.
  27867. return Intrinsic::nvvm_trunc_f; // "__nvvm_trunc_f"
  27868. }
  27869. break;
  27870. case 'u': // 8 strings to match.
  27871. if (memcmp(BuiltinName.data()+8, "i2", 2))
  27872. break;
  27873. switch (BuiltinName[10]) {
  27874. default: break;
  27875. case 'd': // 4 strings to match.
  27876. if (memcmp(BuiltinName.data()+11, "_r", 2))
  27877. break;
  27878. switch (BuiltinName[13]) {
  27879. default: break;
  27880. case 'm': // 1 string to match.
  27881. return Intrinsic::nvvm_ui2d_rm; // "__nvvm_ui2d_rm"
  27882. case 'n': // 1 string to match.
  27883. return Intrinsic::nvvm_ui2d_rn; // "__nvvm_ui2d_rn"
  27884. case 'p': // 1 string to match.
  27885. return Intrinsic::nvvm_ui2d_rp; // "__nvvm_ui2d_rp"
  27886. case 'z': // 1 string to match.
  27887. return Intrinsic::nvvm_ui2d_rz; // "__nvvm_ui2d_rz"
  27888. }
  27889. break;
  27890. case 'f': // 4 strings to match.
  27891. if (memcmp(BuiltinName.data()+11, "_r", 2))
  27892. break;
  27893. switch (BuiltinName[13]) {
  27894. default: break;
  27895. case 'm': // 1 string to match.
  27896. return Intrinsic::nvvm_ui2f_rm; // "__nvvm_ui2f_rm"
  27897. case 'n': // 1 string to match.
  27898. return Intrinsic::nvvm_ui2f_rn; // "__nvvm_ui2f_rn"
  27899. case 'p': // 1 string to match.
  27900. return Intrinsic::nvvm_ui2f_rp; // "__nvvm_ui2f_rp"
  27901. case 'z': // 1 string to match.
  27902. return Intrinsic::nvvm_ui2f_rz; // "__nvvm_ui2f_rz"
  27903. }
  27904. break;
  27905. }
  27906. break;
  27907. }
  27908. break;
  27909. }
  27910. break;
  27911. case 15: // 61 strings to match.
  27912. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  27913. break;
  27914. switch (BuiltinName[7]) {
  27915. default: break;
  27916. case 'a': // 8 strings to match.
  27917. if (memcmp(BuiltinName.data()+8, "dd_r", 4))
  27918. break;
  27919. switch (BuiltinName[12]) {
  27920. default: break;
  27921. case 'm': // 2 strings to match.
  27922. if (BuiltinName[13] != '_')
  27923. break;
  27924. switch (BuiltinName[14]) {
  27925. default: break;
  27926. case 'd': // 1 string to match.
  27927. return Intrinsic::nvvm_add_rm_d; // "__nvvm_add_rm_d"
  27928. case 'f': // 1 string to match.
  27929. return Intrinsic::nvvm_add_rm_f; // "__nvvm_add_rm_f"
  27930. }
  27931. break;
  27932. case 'n': // 2 strings to match.
  27933. if (BuiltinName[13] != '_')
  27934. break;
  27935. switch (BuiltinName[14]) {
  27936. default: break;
  27937. case 'd': // 1 string to match.
  27938. return Intrinsic::nvvm_add_rn_d; // "__nvvm_add_rn_d"
  27939. case 'f': // 1 string to match.
  27940. return Intrinsic::nvvm_add_rn_f; // "__nvvm_add_rn_f"
  27941. }
  27942. break;
  27943. case 'p': // 2 strings to match.
  27944. if (BuiltinName[13] != '_')
  27945. break;
  27946. switch (BuiltinName[14]) {
  27947. default: break;
  27948. case 'd': // 1 string to match.
  27949. return Intrinsic::nvvm_add_rp_d; // "__nvvm_add_rp_d"
  27950. case 'f': // 1 string to match.
  27951. return Intrinsic::nvvm_add_rp_f; // "__nvvm_add_rp_f"
  27952. }
  27953. break;
  27954. case 'z': // 2 strings to match.
  27955. if (BuiltinName[13] != '_')
  27956. break;
  27957. switch (BuiltinName[14]) {
  27958. default: break;
  27959. case 'd': // 1 string to match.
  27960. return Intrinsic::nvvm_add_rz_d; // "__nvvm_add_rz_d"
  27961. case 'f': // 1 string to match.
  27962. return Intrinsic::nvvm_add_rz_f; // "__nvvm_add_rz_f"
  27963. }
  27964. break;
  27965. }
  27966. break;
  27967. case 'b': // 1 string to match.
  27968. if (memcmp(BuiltinName.data()+8, "ar0_and", 7))
  27969. break;
  27970. return Intrinsic::nvvm_barrier0_and; // "__nvvm_bar0_and"
  27971. case 'd': // 12 strings to match.
  27972. switch (BuiltinName[8]) {
  27973. default: break;
  27974. case '2': // 4 strings to match.
  27975. if (memcmp(BuiltinName.data()+9, "ull_r", 5))
  27976. break;
  27977. switch (BuiltinName[14]) {
  27978. default: break;
  27979. case 'm': // 1 string to match.
  27980. return Intrinsic::nvvm_d2ull_rm; // "__nvvm_d2ull_rm"
  27981. case 'n': // 1 string to match.
  27982. return Intrinsic::nvvm_d2ull_rn; // "__nvvm_d2ull_rn"
  27983. case 'p': // 1 string to match.
  27984. return Intrinsic::nvvm_d2ull_rp; // "__nvvm_d2ull_rp"
  27985. case 'z': // 1 string to match.
  27986. return Intrinsic::nvvm_d2ull_rz; // "__nvvm_d2ull_rz"
  27987. }
  27988. break;
  27989. case 'i': // 8 strings to match.
  27990. if (memcmp(BuiltinName.data()+9, "v_r", 3))
  27991. break;
  27992. switch (BuiltinName[12]) {
  27993. default: break;
  27994. case 'm': // 2 strings to match.
  27995. if (BuiltinName[13] != '_')
  27996. break;
  27997. switch (BuiltinName[14]) {
  27998. default: break;
  27999. case 'd': // 1 string to match.
  28000. return Intrinsic::nvvm_div_rm_d; // "__nvvm_div_rm_d"
  28001. case 'f': // 1 string to match.
  28002. return Intrinsic::nvvm_div_rm_f; // "__nvvm_div_rm_f"
  28003. }
  28004. break;
  28005. case 'n': // 2 strings to match.
  28006. if (BuiltinName[13] != '_')
  28007. break;
  28008. switch (BuiltinName[14]) {
  28009. default: break;
  28010. case 'd': // 1 string to match.
  28011. return Intrinsic::nvvm_div_rn_d; // "__nvvm_div_rn_d"
  28012. case 'f': // 1 string to match.
  28013. return Intrinsic::nvvm_div_rn_f; // "__nvvm_div_rn_f"
  28014. }
  28015. break;
  28016. case 'p': // 2 strings to match.
  28017. if (BuiltinName[13] != '_')
  28018. break;
  28019. switch (BuiltinName[14]) {
  28020. default: break;
  28021. case 'd': // 1 string to match.
  28022. return Intrinsic::nvvm_div_rp_d; // "__nvvm_div_rp_d"
  28023. case 'f': // 1 string to match.
  28024. return Intrinsic::nvvm_div_rp_f; // "__nvvm_div_rp_f"
  28025. }
  28026. break;
  28027. case 'z': // 2 strings to match.
  28028. if (BuiltinName[13] != '_')
  28029. break;
  28030. switch (BuiltinName[14]) {
  28031. default: break;
  28032. case 'd': // 1 string to match.
  28033. return Intrinsic::nvvm_div_rz_d; // "__nvvm_div_rz_d"
  28034. case 'f': // 1 string to match.
  28035. return Intrinsic::nvvm_div_rz_f; // "__nvvm_div_rz_f"
  28036. }
  28037. break;
  28038. }
  28039. break;
  28040. }
  28041. break;
  28042. case 'f': // 12 strings to match.
  28043. switch (BuiltinName[8]) {
  28044. default: break;
  28045. case '2': // 4 strings to match.
  28046. if (memcmp(BuiltinName.data()+9, "ull_r", 5))
  28047. break;
  28048. switch (BuiltinName[14]) {
  28049. default: break;
  28050. case 'm': // 1 string to match.
  28051. return Intrinsic::nvvm_f2ull_rm; // "__nvvm_f2ull_rm"
  28052. case 'n': // 1 string to match.
  28053. return Intrinsic::nvvm_f2ull_rn; // "__nvvm_f2ull_rn"
  28054. case 'p': // 1 string to match.
  28055. return Intrinsic::nvvm_f2ull_rp; // "__nvvm_f2ull_rp"
  28056. case 'z': // 1 string to match.
  28057. return Intrinsic::nvvm_f2ull_rz; // "__nvvm_f2ull_rz"
  28058. }
  28059. break;
  28060. case 'm': // 8 strings to match.
  28061. if (memcmp(BuiltinName.data()+9, "a_r", 3))
  28062. break;
  28063. switch (BuiltinName[12]) {
  28064. default: break;
  28065. case 'm': // 2 strings to match.
  28066. if (BuiltinName[13] != '_')
  28067. break;
  28068. switch (BuiltinName[14]) {
  28069. default: break;
  28070. case 'd': // 1 string to match.
  28071. return Intrinsic::nvvm_fma_rm_d; // "__nvvm_fma_rm_d"
  28072. case 'f': // 1 string to match.
  28073. return Intrinsic::nvvm_fma_rm_f; // "__nvvm_fma_rm_f"
  28074. }
  28075. break;
  28076. case 'n': // 2 strings to match.
  28077. if (BuiltinName[13] != '_')
  28078. break;
  28079. switch (BuiltinName[14]) {
  28080. default: break;
  28081. case 'd': // 1 string to match.
  28082. return Intrinsic::nvvm_fma_rn_d; // "__nvvm_fma_rn_d"
  28083. case 'f': // 1 string to match.
  28084. return Intrinsic::nvvm_fma_rn_f; // "__nvvm_fma_rn_f"
  28085. }
  28086. break;
  28087. case 'p': // 2 strings to match.
  28088. if (BuiltinName[13] != '_')
  28089. break;
  28090. switch (BuiltinName[14]) {
  28091. default: break;
  28092. case 'd': // 1 string to match.
  28093. return Intrinsic::nvvm_fma_rp_d; // "__nvvm_fma_rp_d"
  28094. case 'f': // 1 string to match.
  28095. return Intrinsic::nvvm_fma_rp_f; // "__nvvm_fma_rp_f"
  28096. }
  28097. break;
  28098. case 'z': // 2 strings to match.
  28099. if (BuiltinName[13] != '_')
  28100. break;
  28101. switch (BuiltinName[14]) {
  28102. default: break;
  28103. case 'd': // 1 string to match.
  28104. return Intrinsic::nvvm_fma_rz_d; // "__nvvm_fma_rz_d"
  28105. case 'f': // 1 string to match.
  28106. return Intrinsic::nvvm_fma_rz_f; // "__nvvm_fma_rz_f"
  28107. }
  28108. break;
  28109. }
  28110. break;
  28111. }
  28112. break;
  28113. case 'l': // 1 string to match.
  28114. if (memcmp(BuiltinName.data()+8, "ohi_i2d", 7))
  28115. break;
  28116. return Intrinsic::nvvm_lohi_i2d; // "__nvvm_lohi_i2d"
  28117. case 'm': // 11 strings to match.
  28118. if (memcmp(BuiltinName.data()+8, "ul", 2))
  28119. break;
  28120. switch (BuiltinName[10]) {
  28121. default: break;
  28122. case '2': // 1 string to match.
  28123. if (memcmp(BuiltinName.data()+11, "4_ui", 4))
  28124. break;
  28125. return Intrinsic::nvvm_mul24_ui; // "__nvvm_mul24_ui"
  28126. case '_': // 8 strings to match.
  28127. if (BuiltinName[11] != 'r')
  28128. break;
  28129. switch (BuiltinName[12]) {
  28130. default: break;
  28131. case 'm': // 2 strings to match.
  28132. if (BuiltinName[13] != '_')
  28133. break;
  28134. switch (BuiltinName[14]) {
  28135. default: break;
  28136. case 'd': // 1 string to match.
  28137. return Intrinsic::nvvm_mul_rm_d; // "__nvvm_mul_rm_d"
  28138. case 'f': // 1 string to match.
  28139. return Intrinsic::nvvm_mul_rm_f; // "__nvvm_mul_rm_f"
  28140. }
  28141. break;
  28142. case 'n': // 2 strings to match.
  28143. if (BuiltinName[13] != '_')
  28144. break;
  28145. switch (BuiltinName[14]) {
  28146. default: break;
  28147. case 'd': // 1 string to match.
  28148. return Intrinsic::nvvm_mul_rn_d; // "__nvvm_mul_rn_d"
  28149. case 'f': // 1 string to match.
  28150. return Intrinsic::nvvm_mul_rn_f; // "__nvvm_mul_rn_f"
  28151. }
  28152. break;
  28153. case 'p': // 2 strings to match.
  28154. if (BuiltinName[13] != '_')
  28155. break;
  28156. switch (BuiltinName[14]) {
  28157. default: break;
  28158. case 'd': // 1 string to match.
  28159. return Intrinsic::nvvm_mul_rp_d; // "__nvvm_mul_rp_d"
  28160. case 'f': // 1 string to match.
  28161. return Intrinsic::nvvm_mul_rp_f; // "__nvvm_mul_rp_f"
  28162. }
  28163. break;
  28164. case 'z': // 2 strings to match.
  28165. if (BuiltinName[13] != '_')
  28166. break;
  28167. switch (BuiltinName[14]) {
  28168. default: break;
  28169. case 'd': // 1 string to match.
  28170. return Intrinsic::nvvm_mul_rz_d; // "__nvvm_mul_rz_d"
  28171. case 'f': // 1 string to match.
  28172. return Intrinsic::nvvm_mul_rz_f; // "__nvvm_mul_rz_f"
  28173. }
  28174. break;
  28175. }
  28176. break;
  28177. case 'h': // 2 strings to match.
  28178. if (memcmp(BuiltinName.data()+11, "i_", 2))
  28179. break;
  28180. switch (BuiltinName[13]) {
  28181. default: break;
  28182. case 'l': // 1 string to match.
  28183. if (BuiltinName[14] != 'l')
  28184. break;
  28185. return Intrinsic::nvvm_mulhi_ll; // "__nvvm_mulhi_ll"
  28186. case 'u': // 1 string to match.
  28187. if (BuiltinName[14] != 'i')
  28188. break;
  28189. return Intrinsic::nvvm_mulhi_ui; // "__nvvm_mulhi_ui"
  28190. }
  28191. break;
  28192. }
  28193. break;
  28194. case 'r': // 8 strings to match.
  28195. if (memcmp(BuiltinName.data()+8, "cp_r", 4))
  28196. break;
  28197. switch (BuiltinName[12]) {
  28198. default: break;
  28199. case 'm': // 2 strings to match.
  28200. if (BuiltinName[13] != '_')
  28201. break;
  28202. switch (BuiltinName[14]) {
  28203. default: break;
  28204. case 'd': // 1 string to match.
  28205. return Intrinsic::nvvm_rcp_rm_d; // "__nvvm_rcp_rm_d"
  28206. case 'f': // 1 string to match.
  28207. return Intrinsic::nvvm_rcp_rm_f; // "__nvvm_rcp_rm_f"
  28208. }
  28209. break;
  28210. case 'n': // 2 strings to match.
  28211. if (BuiltinName[13] != '_')
  28212. break;
  28213. switch (BuiltinName[14]) {
  28214. default: break;
  28215. case 'd': // 1 string to match.
  28216. return Intrinsic::nvvm_rcp_rn_d; // "__nvvm_rcp_rn_d"
  28217. case 'f': // 1 string to match.
  28218. return Intrinsic::nvvm_rcp_rn_f; // "__nvvm_rcp_rn_f"
  28219. }
  28220. break;
  28221. case 'p': // 2 strings to match.
  28222. if (BuiltinName[13] != '_')
  28223. break;
  28224. switch (BuiltinName[14]) {
  28225. default: break;
  28226. case 'd': // 1 string to match.
  28227. return Intrinsic::nvvm_rcp_rp_d; // "__nvvm_rcp_rp_d"
  28228. case 'f': // 1 string to match.
  28229. return Intrinsic::nvvm_rcp_rp_f; // "__nvvm_rcp_rp_f"
  28230. }
  28231. break;
  28232. case 'z': // 2 strings to match.
  28233. if (BuiltinName[13] != '_')
  28234. break;
  28235. switch (BuiltinName[14]) {
  28236. default: break;
  28237. case 'd': // 1 string to match.
  28238. return Intrinsic::nvvm_rcp_rz_d; // "__nvvm_rcp_rz_d"
  28239. case 'f': // 1 string to match.
  28240. return Intrinsic::nvvm_rcp_rz_f; // "__nvvm_rcp_rz_f"
  28241. }
  28242. break;
  28243. }
  28244. break;
  28245. case 'u': // 8 strings to match.
  28246. if (memcmp(BuiltinName.data()+8, "ll2", 3))
  28247. break;
  28248. switch (BuiltinName[11]) {
  28249. default: break;
  28250. case 'd': // 4 strings to match.
  28251. if (memcmp(BuiltinName.data()+12, "_r", 2))
  28252. break;
  28253. switch (BuiltinName[14]) {
  28254. default: break;
  28255. case 'm': // 1 string to match.
  28256. return Intrinsic::nvvm_ull2d_rm; // "__nvvm_ull2d_rm"
  28257. case 'n': // 1 string to match.
  28258. return Intrinsic::nvvm_ull2d_rn; // "__nvvm_ull2d_rn"
  28259. case 'p': // 1 string to match.
  28260. return Intrinsic::nvvm_ull2d_rp; // "__nvvm_ull2d_rp"
  28261. case 'z': // 1 string to match.
  28262. return Intrinsic::nvvm_ull2d_rz; // "__nvvm_ull2d_rz"
  28263. }
  28264. break;
  28265. case 'f': // 4 strings to match.
  28266. if (memcmp(BuiltinName.data()+12, "_r", 2))
  28267. break;
  28268. switch (BuiltinName[14]) {
  28269. default: break;
  28270. case 'm': // 1 string to match.
  28271. return Intrinsic::nvvm_ull2f_rm; // "__nvvm_ull2f_rm"
  28272. case 'n': // 1 string to match.
  28273. return Intrinsic::nvvm_ull2f_rn; // "__nvvm_ull2f_rn"
  28274. case 'p': // 1 string to match.
  28275. return Intrinsic::nvvm_ull2f_rp; // "__nvvm_ull2f_rp"
  28276. case 'z': // 1 string to match.
  28277. return Intrinsic::nvvm_ull2f_rz; // "__nvvm_ull2f_rz"
  28278. }
  28279. break;
  28280. }
  28281. break;
  28282. }
  28283. break;
  28284. case 16: // 11 strings to match.
  28285. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  28286. break;
  28287. switch (BuiltinName[7]) {
  28288. default: break;
  28289. case 'b': // 1 string to match.
  28290. if (memcmp(BuiltinName.data()+8, "ar0_popc", 8))
  28291. break;
  28292. return Intrinsic::nvvm_barrier0_popc; // "__nvvm_bar0_popc"
  28293. case 'm': // 2 strings to match.
  28294. switch (BuiltinName[8]) {
  28295. default: break;
  28296. case 'e': // 1 string to match.
  28297. if (memcmp(BuiltinName.data()+9, "mbar_gl", 7))
  28298. break;
  28299. return Intrinsic::nvvm_membar_gl; // "__nvvm_membar_gl"
  28300. case 'u': // 1 string to match.
  28301. if (memcmp(BuiltinName.data()+9, "lhi_ull", 7))
  28302. break;
  28303. return Intrinsic::nvvm_mulhi_ull; // "__nvvm_mulhi_ull"
  28304. }
  28305. break;
  28306. case 's': // 8 strings to match.
  28307. if (memcmp(BuiltinName.data()+8, "qrt_r", 5))
  28308. break;
  28309. switch (BuiltinName[13]) {
  28310. default: break;
  28311. case 'm': // 2 strings to match.
  28312. if (BuiltinName[14] != '_')
  28313. break;
  28314. switch (BuiltinName[15]) {
  28315. default: break;
  28316. case 'd': // 1 string to match.
  28317. return Intrinsic::nvvm_sqrt_rm_d; // "__nvvm_sqrt_rm_d"
  28318. case 'f': // 1 string to match.
  28319. return Intrinsic::nvvm_sqrt_rm_f; // "__nvvm_sqrt_rm_f"
  28320. }
  28321. break;
  28322. case 'n': // 2 strings to match.
  28323. if (BuiltinName[14] != '_')
  28324. break;
  28325. switch (BuiltinName[15]) {
  28326. default: break;
  28327. case 'd': // 1 string to match.
  28328. return Intrinsic::nvvm_sqrt_rn_d; // "__nvvm_sqrt_rn_d"
  28329. case 'f': // 1 string to match.
  28330. return Intrinsic::nvvm_sqrt_rn_f; // "__nvvm_sqrt_rn_f"
  28331. }
  28332. break;
  28333. case 'p': // 2 strings to match.
  28334. if (BuiltinName[14] != '_')
  28335. break;
  28336. switch (BuiltinName[15]) {
  28337. default: break;
  28338. case 'd': // 1 string to match.
  28339. return Intrinsic::nvvm_sqrt_rp_d; // "__nvvm_sqrt_rp_d"
  28340. case 'f': // 1 string to match.
  28341. return Intrinsic::nvvm_sqrt_rp_f; // "__nvvm_sqrt_rp_f"
  28342. }
  28343. break;
  28344. case 'z': // 2 strings to match.
  28345. if (BuiltinName[14] != '_')
  28346. break;
  28347. switch (BuiltinName[15]) {
  28348. default: break;
  28349. case 'd': // 1 string to match.
  28350. return Intrinsic::nvvm_sqrt_rz_d; // "__nvvm_sqrt_rz_d"
  28351. case 'f': // 1 string to match.
  28352. return Intrinsic::nvvm_sqrt_rz_f; // "__nvvm_sqrt_rz_f"
  28353. }
  28354. break;
  28355. }
  28356. break;
  28357. }
  28358. break;
  28359. case 17: // 17 strings to match.
  28360. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  28361. break;
  28362. switch (BuiltinName[7]) {
  28363. default: break;
  28364. case 'c': // 1 string to match.
  28365. if (memcmp(BuiltinName.data()+8, "eil_ftz_f", 9))
  28366. break;
  28367. return Intrinsic::nvvm_ceil_ftz_f; // "__nvvm_ceil_ftz_f"
  28368. case 'd': // 4 strings to match.
  28369. if (memcmp(BuiltinName.data()+8, "2f_r", 4))
  28370. break;
  28371. switch (BuiltinName[12]) {
  28372. default: break;
  28373. case 'm': // 1 string to match.
  28374. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28375. break;
  28376. return Intrinsic::nvvm_d2f_rm_ftz; // "__nvvm_d2f_rm_ftz"
  28377. case 'n': // 1 string to match.
  28378. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28379. break;
  28380. return Intrinsic::nvvm_d2f_rn_ftz; // "__nvvm_d2f_rn_ftz"
  28381. case 'p': // 1 string to match.
  28382. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28383. break;
  28384. return Intrinsic::nvvm_d2f_rp_ftz; // "__nvvm_d2f_rp_ftz"
  28385. case 'z': // 1 string to match.
  28386. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28387. break;
  28388. return Intrinsic::nvvm_d2f_rz_ftz; // "__nvvm_d2f_rz_ftz"
  28389. }
  28390. break;
  28391. case 'f': // 8 strings to match.
  28392. switch (BuiltinName[8]) {
  28393. default: break;
  28394. case '2': // 5 strings to match.
  28395. switch (BuiltinName[9]) {
  28396. default: break;
  28397. case 'h': // 1 string to match.
  28398. if (memcmp(BuiltinName.data()+10, "_rn_ftz", 7))
  28399. break;
  28400. return Intrinsic::nvvm_f2h_rn_ftz; // "__nvvm_f2h_rn_ftz"
  28401. case 'i': // 4 strings to match.
  28402. if (memcmp(BuiltinName.data()+10, "_r", 2))
  28403. break;
  28404. switch (BuiltinName[12]) {
  28405. default: break;
  28406. case 'm': // 1 string to match.
  28407. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28408. break;
  28409. return Intrinsic::nvvm_f2i_rm_ftz; // "__nvvm_f2i_rm_ftz"
  28410. case 'n': // 1 string to match.
  28411. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28412. break;
  28413. return Intrinsic::nvvm_f2i_rn_ftz; // "__nvvm_f2i_rn_ftz"
  28414. case 'p': // 1 string to match.
  28415. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28416. break;
  28417. return Intrinsic::nvvm_f2i_rp_ftz; // "__nvvm_f2i_rp_ftz"
  28418. case 'z': // 1 string to match.
  28419. if (memcmp(BuiltinName.data()+13, "_ftz", 4))
  28420. break;
  28421. return Intrinsic::nvvm_f2i_rz_ftz; // "__nvvm_f2i_rz_ftz"
  28422. }
  28423. break;
  28424. }
  28425. break;
  28426. case 'a': // 1 string to match.
  28427. if (memcmp(BuiltinName.data()+9, "bs_ftz_f", 8))
  28428. break;
  28429. return Intrinsic::nvvm_fabs_ftz_f; // "__nvvm_fabs_ftz_f"
  28430. case 'm': // 2 strings to match.
  28431. switch (BuiltinName[9]) {
  28432. default: break;
  28433. case 'a': // 1 string to match.
  28434. if (memcmp(BuiltinName.data()+10, "x_ftz_f", 7))
  28435. break;
  28436. return Intrinsic::nvvm_fmax_ftz_f; // "__nvvm_fmax_ftz_f"
  28437. case 'i': // 1 string to match.
  28438. if (memcmp(BuiltinName.data()+10, "n_ftz_f", 7))
  28439. break;
  28440. return Intrinsic::nvvm_fmin_ftz_f; // "__nvvm_fmin_ftz_f"
  28441. }
  28442. break;
  28443. }
  28444. break;
  28445. case 'm': // 2 strings to match.
  28446. if (memcmp(BuiltinName.data()+8, "embar_", 6))
  28447. break;
  28448. switch (BuiltinName[14]) {
  28449. default: break;
  28450. case 'c': // 1 string to match.
  28451. if (memcmp(BuiltinName.data()+15, "ta", 2))
  28452. break;
  28453. return Intrinsic::nvvm_membar_cta; // "__nvvm_membar_cta"
  28454. case 's': // 1 string to match.
  28455. if (memcmp(BuiltinName.data()+15, "ys", 2))
  28456. break;
  28457. return Intrinsic::nvvm_membar_sys; // "__nvvm_membar_sys"
  28458. }
  28459. break;
  28460. case 's': // 2 strings to match.
  28461. if (memcmp(BuiltinName.data()+8, "aturate_", 8))
  28462. break;
  28463. switch (BuiltinName[16]) {
  28464. default: break;
  28465. case 'd': // 1 string to match.
  28466. return Intrinsic::nvvm_saturate_d; // "__nvvm_saturate_d"
  28467. case 'f': // 1 string to match.
  28468. return Intrinsic::nvvm_saturate_f; // "__nvvm_saturate_f"
  28469. }
  28470. break;
  28471. }
  28472. break;
  28473. case 18: // 13 strings to match.
  28474. if (memcmp(BuiltinName.data()+0, "__nvvm_", 7))
  28475. break;
  28476. switch (BuiltinName[7]) {
  28477. default: break;
  28478. case 'b': // 2 strings to match.
  28479. if (memcmp(BuiltinName.data()+8, "itcast_", 7))
  28480. break;
  28481. switch (BuiltinName[15]) {
  28482. default: break;
  28483. case 'f': // 1 string to match.
  28484. if (memcmp(BuiltinName.data()+16, "2i", 2))
  28485. break;
  28486. return Intrinsic::nvvm_bitcast_f2i; // "__nvvm_bitcast_f2i"
  28487. case 'i': // 1 string to match.
  28488. if (memcmp(BuiltinName.data()+16, "2f", 2))
  28489. break;
  28490. return Intrinsic::nvvm_bitcast_i2f; // "__nvvm_bitcast_i2f"
  28491. }
  28492. break;
  28493. case 'f': // 9 strings to match.
  28494. switch (BuiltinName[8]) {
  28495. default: break;
  28496. case '2': // 8 strings to match.
  28497. switch (BuiltinName[9]) {
  28498. default: break;
  28499. case 'l': // 4 strings to match.
  28500. if (memcmp(BuiltinName.data()+10, "l_r", 3))
  28501. break;
  28502. switch (BuiltinName[13]) {
  28503. default: break;
  28504. case 'm': // 1 string to match.
  28505. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28506. break;
  28507. return Intrinsic::nvvm_f2ll_rm_ftz; // "__nvvm_f2ll_rm_ftz"
  28508. case 'n': // 1 string to match.
  28509. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28510. break;
  28511. return Intrinsic::nvvm_f2ll_rn_ftz; // "__nvvm_f2ll_rn_ftz"
  28512. case 'p': // 1 string to match.
  28513. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28514. break;
  28515. return Intrinsic::nvvm_f2ll_rp_ftz; // "__nvvm_f2ll_rp_ftz"
  28516. case 'z': // 1 string to match.
  28517. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28518. break;
  28519. return Intrinsic::nvvm_f2ll_rz_ftz; // "__nvvm_f2ll_rz_ftz"
  28520. }
  28521. break;
  28522. case 'u': // 4 strings to match.
  28523. if (memcmp(BuiltinName.data()+10, "i_r", 3))
  28524. break;
  28525. switch (BuiltinName[13]) {
  28526. default: break;
  28527. case 'm': // 1 string to match.
  28528. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28529. break;
  28530. return Intrinsic::nvvm_f2ui_rm_ftz; // "__nvvm_f2ui_rm_ftz"
  28531. case 'n': // 1 string to match.
  28532. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28533. break;
  28534. return Intrinsic::nvvm_f2ui_rn_ftz; // "__nvvm_f2ui_rn_ftz"
  28535. case 'p': // 1 string to match.
  28536. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28537. break;
  28538. return Intrinsic::nvvm_f2ui_rp_ftz; // "__nvvm_f2ui_rp_ftz"
  28539. case 'z': // 1 string to match.
  28540. if (memcmp(BuiltinName.data()+14, "_ftz", 4))
  28541. break;
  28542. return Intrinsic::nvvm_f2ui_rz_ftz; // "__nvvm_f2ui_rz_ftz"
  28543. }
  28544. break;
  28545. }
  28546. break;
  28547. case 'l': // 1 string to match.
  28548. if (memcmp(BuiltinName.data()+9, "oor_ftz_f", 9))
  28549. break;
  28550. return Intrinsic::nvvm_floor_ftz_f; // "__nvvm_floor_ftz_f"
  28551. }
  28552. break;
  28553. case 'r': // 1 string to match.
  28554. if (memcmp(BuiltinName.data()+8, "ound_ftz_f", 10))
  28555. break;
  28556. return Intrinsic::nvvm_round_ftz_f; // "__nvvm_round_ftz_f"
  28557. case 't': // 1 string to match.
  28558. if (memcmp(BuiltinName.data()+8, "runc_ftz_f", 10))
  28559. break;
  28560. return Intrinsic::nvvm_trunc_ftz_f; // "__nvvm_trunc_ftz_f"
  28561. }
  28562. break;
  28563. case 19: // 34 strings to match.
  28564. if (memcmp(BuiltinName.data()+0, "__", 2))
  28565. break;
  28566. switch (BuiltinName[2]) {
  28567. default: break;
  28568. case 'b': // 1 string to match.
  28569. if (memcmp(BuiltinName.data()+3, "uiltin_debugtrap", 16))
  28570. break;
  28571. return Intrinsic::debugtrap; // "__builtin_debugtrap"
  28572. case 'n': // 33 strings to match.
  28573. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  28574. break;
  28575. switch (BuiltinName[7]) {
  28576. default: break;
  28577. case 'a': // 4 strings to match.
  28578. if (memcmp(BuiltinName.data()+8, "dd_r", 4))
  28579. break;
  28580. switch (BuiltinName[12]) {
  28581. default: break;
  28582. case 'm': // 1 string to match.
  28583. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28584. break;
  28585. return Intrinsic::nvvm_add_rm_ftz_f; // "__nvvm_add_rm_ftz_f"
  28586. case 'n': // 1 string to match.
  28587. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28588. break;
  28589. return Intrinsic::nvvm_add_rn_ftz_f; // "__nvvm_add_rn_ftz_f"
  28590. case 'p': // 1 string to match.
  28591. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28592. break;
  28593. return Intrinsic::nvvm_add_rp_ftz_f; // "__nvvm_add_rp_ftz_f"
  28594. case 'z': // 1 string to match.
  28595. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28596. break;
  28597. return Intrinsic::nvvm_add_rz_ftz_f; // "__nvvm_add_rz_ftz_f"
  28598. }
  28599. break;
  28600. case 'b': // 2 strings to match.
  28601. if (memcmp(BuiltinName.data()+8, "itcast_", 7))
  28602. break;
  28603. switch (BuiltinName[15]) {
  28604. default: break;
  28605. case 'd': // 1 string to match.
  28606. if (memcmp(BuiltinName.data()+16, "2ll", 3))
  28607. break;
  28608. return Intrinsic::nvvm_bitcast_d2ll; // "__nvvm_bitcast_d2ll"
  28609. case 'l': // 1 string to match.
  28610. if (memcmp(BuiltinName.data()+16, "l2d", 3))
  28611. break;
  28612. return Intrinsic::nvvm_bitcast_ll2d; // "__nvvm_bitcast_ll2d"
  28613. }
  28614. break;
  28615. case 'c': // 1 string to match.
  28616. if (memcmp(BuiltinName.data()+8, "os_approx_f", 11))
  28617. break;
  28618. return Intrinsic::nvvm_cos_approx_f; // "__nvvm_cos_approx_f"
  28619. case 'd': // 5 strings to match.
  28620. if (memcmp(BuiltinName.data()+8, "iv_", 3))
  28621. break;
  28622. switch (BuiltinName[11]) {
  28623. default: break;
  28624. case 'a': // 1 string to match.
  28625. if (memcmp(BuiltinName.data()+12, "pprox_f", 7))
  28626. break;
  28627. return Intrinsic::nvvm_div_approx_f; // "__nvvm_div_approx_f"
  28628. case 'r': // 4 strings to match.
  28629. switch (BuiltinName[12]) {
  28630. default: break;
  28631. case 'm': // 1 string to match.
  28632. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28633. break;
  28634. return Intrinsic::nvvm_div_rm_ftz_f; // "__nvvm_div_rm_ftz_f"
  28635. case 'n': // 1 string to match.
  28636. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28637. break;
  28638. return Intrinsic::nvvm_div_rn_ftz_f; // "__nvvm_div_rn_ftz_f"
  28639. case 'p': // 1 string to match.
  28640. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28641. break;
  28642. return Intrinsic::nvvm_div_rp_ftz_f; // "__nvvm_div_rp_ftz_f"
  28643. case 'z': // 1 string to match.
  28644. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28645. break;
  28646. return Intrinsic::nvvm_div_rz_ftz_f; // "__nvvm_div_rz_ftz_f"
  28647. }
  28648. break;
  28649. }
  28650. break;
  28651. case 'e': // 2 strings to match.
  28652. if (memcmp(BuiltinName.data()+8, "x2_approx_", 10))
  28653. break;
  28654. switch (BuiltinName[18]) {
  28655. default: break;
  28656. case 'd': // 1 string to match.
  28657. return Intrinsic::nvvm_ex2_approx_d; // "__nvvm_ex2_approx_d"
  28658. case 'f': // 1 string to match.
  28659. return Intrinsic::nvvm_ex2_approx_f; // "__nvvm_ex2_approx_f"
  28660. }
  28661. break;
  28662. case 'f': // 8 strings to match.
  28663. switch (BuiltinName[8]) {
  28664. default: break;
  28665. case '2': // 4 strings to match.
  28666. if (memcmp(BuiltinName.data()+9, "ull_r", 5))
  28667. break;
  28668. switch (BuiltinName[14]) {
  28669. default: break;
  28670. case 'm': // 1 string to match.
  28671. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  28672. break;
  28673. return Intrinsic::nvvm_f2ull_rm_ftz; // "__nvvm_f2ull_rm_ftz"
  28674. case 'n': // 1 string to match.
  28675. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  28676. break;
  28677. return Intrinsic::nvvm_f2ull_rn_ftz; // "__nvvm_f2ull_rn_ftz"
  28678. case 'p': // 1 string to match.
  28679. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  28680. break;
  28681. return Intrinsic::nvvm_f2ull_rp_ftz; // "__nvvm_f2ull_rp_ftz"
  28682. case 'z': // 1 string to match.
  28683. if (memcmp(BuiltinName.data()+15, "_ftz", 4))
  28684. break;
  28685. return Intrinsic::nvvm_f2ull_rz_ftz; // "__nvvm_f2ull_rz_ftz"
  28686. }
  28687. break;
  28688. case 'm': // 4 strings to match.
  28689. if (memcmp(BuiltinName.data()+9, "a_r", 3))
  28690. break;
  28691. switch (BuiltinName[12]) {
  28692. default: break;
  28693. case 'm': // 1 string to match.
  28694. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28695. break;
  28696. return Intrinsic::nvvm_fma_rm_ftz_f; // "__nvvm_fma_rm_ftz_f"
  28697. case 'n': // 1 string to match.
  28698. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28699. break;
  28700. return Intrinsic::nvvm_fma_rn_ftz_f; // "__nvvm_fma_rn_ftz_f"
  28701. case 'p': // 1 string to match.
  28702. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28703. break;
  28704. return Intrinsic::nvvm_fma_rp_ftz_f; // "__nvvm_fma_rp_ftz_f"
  28705. case 'z': // 1 string to match.
  28706. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28707. break;
  28708. return Intrinsic::nvvm_fma_rz_ftz_f; // "__nvvm_fma_rz_ftz_f"
  28709. }
  28710. break;
  28711. }
  28712. break;
  28713. case 'l': // 2 strings to match.
  28714. if (memcmp(BuiltinName.data()+8, "g2_approx_", 10))
  28715. break;
  28716. switch (BuiltinName[18]) {
  28717. default: break;
  28718. case 'd': // 1 string to match.
  28719. return Intrinsic::nvvm_lg2_approx_d; // "__nvvm_lg2_approx_d"
  28720. case 'f': // 1 string to match.
  28721. return Intrinsic::nvvm_lg2_approx_f; // "__nvvm_lg2_approx_f"
  28722. }
  28723. break;
  28724. case 'm': // 4 strings to match.
  28725. if (memcmp(BuiltinName.data()+8, "ul_r", 4))
  28726. break;
  28727. switch (BuiltinName[12]) {
  28728. default: break;
  28729. case 'm': // 1 string to match.
  28730. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28731. break;
  28732. return Intrinsic::nvvm_mul_rm_ftz_f; // "__nvvm_mul_rm_ftz_f"
  28733. case 'n': // 1 string to match.
  28734. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28735. break;
  28736. return Intrinsic::nvvm_mul_rn_ftz_f; // "__nvvm_mul_rn_ftz_f"
  28737. case 'p': // 1 string to match.
  28738. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28739. break;
  28740. return Intrinsic::nvvm_mul_rp_ftz_f; // "__nvvm_mul_rp_ftz_f"
  28741. case 'z': // 1 string to match.
  28742. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28743. break;
  28744. return Intrinsic::nvvm_mul_rz_ftz_f; // "__nvvm_mul_rz_ftz_f"
  28745. }
  28746. break;
  28747. case 'r': // 4 strings to match.
  28748. if (memcmp(BuiltinName.data()+8, "cp_r", 4))
  28749. break;
  28750. switch (BuiltinName[12]) {
  28751. default: break;
  28752. case 'm': // 1 string to match.
  28753. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28754. break;
  28755. return Intrinsic::nvvm_rcp_rm_ftz_f; // "__nvvm_rcp_rm_ftz_f"
  28756. case 'n': // 1 string to match.
  28757. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28758. break;
  28759. return Intrinsic::nvvm_rcp_rn_ftz_f; // "__nvvm_rcp_rn_ftz_f"
  28760. case 'p': // 1 string to match.
  28761. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28762. break;
  28763. return Intrinsic::nvvm_rcp_rp_ftz_f; // "__nvvm_rcp_rp_ftz_f"
  28764. case 'z': // 1 string to match.
  28765. if (memcmp(BuiltinName.data()+13, "_ftz_f", 6))
  28766. break;
  28767. return Intrinsic::nvvm_rcp_rz_ftz_f; // "__nvvm_rcp_rz_ftz_f"
  28768. }
  28769. break;
  28770. case 's': // 1 string to match.
  28771. if (memcmp(BuiltinName.data()+8, "in_approx_f", 11))
  28772. break;
  28773. return Intrinsic::nvvm_sin_approx_f; // "__nvvm_sin_approx_f"
  28774. }
  28775. break;
  28776. }
  28777. break;
  28778. case 20: // 7 strings to match.
  28779. if (memcmp(BuiltinName.data()+0, "__", 2))
  28780. break;
  28781. switch (BuiltinName[2]) {
  28782. default: break;
  28783. case 'b': // 2 strings to match.
  28784. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  28785. break;
  28786. switch (BuiltinName[10]) {
  28787. default: break;
  28788. case 'f': // 1 string to match.
  28789. if (memcmp(BuiltinName.data()+11, "lt_rounds", 9))
  28790. break;
  28791. return Intrinsic::flt_rounds; // "__builtin_flt_rounds"
  28792. case 's': // 1 string to match.
  28793. if (memcmp(BuiltinName.data()+11, "tack_save", 9))
  28794. break;
  28795. return Intrinsic::stacksave; // "__builtin_stack_save"
  28796. }
  28797. break;
  28798. case 'n': // 5 strings to match.
  28799. if (memcmp(BuiltinName.data()+3, "vvm_sqrt_", 9))
  28800. break;
  28801. switch (BuiltinName[12]) {
  28802. default: break;
  28803. case 'a': // 1 string to match.
  28804. if (memcmp(BuiltinName.data()+13, "pprox_f", 7))
  28805. break;
  28806. return Intrinsic::nvvm_sqrt_approx_f; // "__nvvm_sqrt_approx_f"
  28807. case 'r': // 4 strings to match.
  28808. switch (BuiltinName[13]) {
  28809. default: break;
  28810. case 'm': // 1 string to match.
  28811. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  28812. break;
  28813. return Intrinsic::nvvm_sqrt_rm_ftz_f; // "__nvvm_sqrt_rm_ftz_f"
  28814. case 'n': // 1 string to match.
  28815. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  28816. break;
  28817. return Intrinsic::nvvm_sqrt_rn_ftz_f; // "__nvvm_sqrt_rn_ftz_f"
  28818. case 'p': // 1 string to match.
  28819. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  28820. break;
  28821. return Intrinsic::nvvm_sqrt_rp_ftz_f; // "__nvvm_sqrt_rp_ftz_f"
  28822. case 'z': // 1 string to match.
  28823. if (memcmp(BuiltinName.data()+14, "_ftz_f", 6))
  28824. break;
  28825. return Intrinsic::nvvm_sqrt_rz_ftz_f; // "__nvvm_sqrt_rz_ftz_f"
  28826. }
  28827. break;
  28828. }
  28829. break;
  28830. }
  28831. break;
  28832. case 21: // 23 strings to match.
  28833. if (memcmp(BuiltinName.data()+0, "__", 2))
  28834. break;
  28835. switch (BuiltinName[2]) {
  28836. default: break;
  28837. case 'b': // 20 strings to match.
  28838. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  28839. break;
  28840. switch (BuiltinName[10]) {
  28841. default: break;
  28842. case 'i': // 18 strings to match.
  28843. if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
  28844. break;
  28845. switch (BuiltinName[17]) {
  28846. default: break;
  28847. case 'c': // 5 strings to match.
  28848. switch (BuiltinName[18]) {
  28849. default: break;
  28850. case 'm': // 1 string to match.
  28851. if (memcmp(BuiltinName.data()+19, "ov", 2))
  28852. break;
  28853. return Intrinsic::x86_xop_vpcmov; // "__builtin_ia32_vpcmov"
  28854. case 'o': // 4 strings to match.
  28855. if (BuiltinName[19] != 'm')
  28856. break;
  28857. switch (BuiltinName[20]) {
  28858. default: break;
  28859. case 'b': // 1 string to match.
  28860. return Intrinsic::x86_xop_vpcomb; // "__builtin_ia32_vpcomb"
  28861. case 'd': // 1 string to match.
  28862. return Intrinsic::x86_xop_vpcomd; // "__builtin_ia32_vpcomd"
  28863. case 'q': // 1 string to match.
  28864. return Intrinsic::x86_xop_vpcomq; // "__builtin_ia32_vpcomq"
  28865. case 'w': // 1 string to match.
  28866. return Intrinsic::x86_xop_vpcomw; // "__builtin_ia32_vpcomw"
  28867. }
  28868. break;
  28869. }
  28870. break;
  28871. case 'p': // 1 string to match.
  28872. if (memcmp(BuiltinName.data()+18, "erm", 3))
  28873. break;
  28874. return Intrinsic::x86_xop_vpperm; // "__builtin_ia32_vpperm"
  28875. case 'r': // 4 strings to match.
  28876. if (memcmp(BuiltinName.data()+18, "ot", 2))
  28877. break;
  28878. switch (BuiltinName[20]) {
  28879. default: break;
  28880. case 'b': // 1 string to match.
  28881. return Intrinsic::x86_xop_vprotb; // "__builtin_ia32_vprotb"
  28882. case 'd': // 1 string to match.
  28883. return Intrinsic::x86_xop_vprotd; // "__builtin_ia32_vprotd"
  28884. case 'q': // 1 string to match.
  28885. return Intrinsic::x86_xop_vprotq; // "__builtin_ia32_vprotq"
  28886. case 'w': // 1 string to match.
  28887. return Intrinsic::x86_xop_vprotw; // "__builtin_ia32_vprotw"
  28888. }
  28889. break;
  28890. case 's': // 8 strings to match.
  28891. if (BuiltinName[18] != 'h')
  28892. break;
  28893. switch (BuiltinName[19]) {
  28894. default: break;
  28895. case 'a': // 4 strings to match.
  28896. switch (BuiltinName[20]) {
  28897. default: break;
  28898. case 'b': // 1 string to match.
  28899. return Intrinsic::x86_xop_vpshab; // "__builtin_ia32_vpshab"
  28900. case 'd': // 1 string to match.
  28901. return Intrinsic::x86_xop_vpshad; // "__builtin_ia32_vpshad"
  28902. case 'q': // 1 string to match.
  28903. return Intrinsic::x86_xop_vpshaq; // "__builtin_ia32_vpshaq"
  28904. case 'w': // 1 string to match.
  28905. return Intrinsic::x86_xop_vpshaw; // "__builtin_ia32_vpshaw"
  28906. }
  28907. break;
  28908. case 'l': // 4 strings to match.
  28909. switch (BuiltinName[20]) {
  28910. default: break;
  28911. case 'b': // 1 string to match.
  28912. return Intrinsic::x86_xop_vpshlb; // "__builtin_ia32_vpshlb"
  28913. case 'd': // 1 string to match.
  28914. return Intrinsic::x86_xop_vpshld; // "__builtin_ia32_vpshld"
  28915. case 'q': // 1 string to match.
  28916. return Intrinsic::x86_xop_vpshlq; // "__builtin_ia32_vpshlq"
  28917. case 'w': // 1 string to match.
  28918. return Intrinsic::x86_xop_vpshlw; // "__builtin_ia32_vpshlw"
  28919. }
  28920. break;
  28921. }
  28922. break;
  28923. }
  28924. break;
  28925. case 'o': // 1 string to match.
  28926. if (memcmp(BuiltinName.data()+11, "bject_size", 10))
  28927. break;
  28928. return Intrinsic::objectsize; // "__builtin_object_size"
  28929. case 'u': // 1 string to match.
  28930. if (memcmp(BuiltinName.data()+11, "nwind_init", 10))
  28931. break;
  28932. return Intrinsic::eh_unwind_init; // "__builtin_unwind_init"
  28933. }
  28934. break;
  28935. case 'n': // 3 strings to match.
  28936. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  28937. break;
  28938. switch (BuiltinName[7]) {
  28939. default: break;
  28940. case 'r': // 2 strings to match.
  28941. if (memcmp(BuiltinName.data()+8, "sqrt_approx_", 12))
  28942. break;
  28943. switch (BuiltinName[20]) {
  28944. default: break;
  28945. case 'd': // 1 string to match.
  28946. return Intrinsic::nvvm_rsqrt_approx_d; // "__nvvm_rsqrt_approx_d"
  28947. case 'f': // 1 string to match.
  28948. return Intrinsic::nvvm_rsqrt_approx_f; // "__nvvm_rsqrt_approx_f"
  28949. }
  28950. break;
  28951. case 's': // 1 string to match.
  28952. if (memcmp(BuiltinName.data()+8, "aturate_ftz_f", 13))
  28953. break;
  28954. return Intrinsic::nvvm_saturate_ftz_f; // "__nvvm_saturate_ftz_f"
  28955. }
  28956. break;
  28957. }
  28958. break;
  28959. case 22: // 17 strings to match.
  28960. if (memcmp(BuiltinName.data()+0, "__builtin_", 10))
  28961. break;
  28962. switch (BuiltinName[10]) {
  28963. default: break;
  28964. case 'i': // 12 strings to match.
  28965. if (memcmp(BuiltinName.data()+11, "a32_v", 5))
  28966. break;
  28967. switch (BuiltinName[16]) {
  28968. default: break;
  28969. case 'f': // 4 strings to match.
  28970. if (memcmp(BuiltinName.data()+17, "rcz", 3))
  28971. break;
  28972. switch (BuiltinName[20]) {
  28973. default: break;
  28974. case 'p': // 2 strings to match.
  28975. switch (BuiltinName[21]) {
  28976. default: break;
  28977. case 'd': // 1 string to match.
  28978. return Intrinsic::x86_xop_vfrcz_pd; // "__builtin_ia32_vfrczpd"
  28979. case 's': // 1 string to match.
  28980. return Intrinsic::x86_xop_vfrcz_ps; // "__builtin_ia32_vfrczps"
  28981. }
  28982. break;
  28983. case 's': // 2 strings to match.
  28984. switch (BuiltinName[21]) {
  28985. default: break;
  28986. case 'd': // 1 string to match.
  28987. return Intrinsic::x86_xop_vfrcz_sd; // "__builtin_ia32_vfrczsd"
  28988. case 's': // 1 string to match.
  28989. return Intrinsic::x86_xop_vfrcz_ss; // "__builtin_ia32_vfrczss"
  28990. }
  28991. break;
  28992. }
  28993. break;
  28994. case 'p': // 8 strings to match.
  28995. switch (BuiltinName[17]) {
  28996. default: break;
  28997. case 'c': // 4 strings to match.
  28998. if (memcmp(BuiltinName.data()+18, "omu", 3))
  28999. break;
  29000. switch (BuiltinName[21]) {
  29001. default: break;
  29002. case 'b': // 1 string to match.
  29003. return Intrinsic::x86_xop_vpcomub; // "__builtin_ia32_vpcomub"
  29004. case 'd': // 1 string to match.
  29005. return Intrinsic::x86_xop_vpcomud; // "__builtin_ia32_vpcomud"
  29006. case 'q': // 1 string to match.
  29007. return Intrinsic::x86_xop_vpcomuq; // "__builtin_ia32_vpcomuq"
  29008. case 'w': // 1 string to match.
  29009. return Intrinsic::x86_xop_vpcomuw; // "__builtin_ia32_vpcomuw"
  29010. }
  29011. break;
  29012. case 'r': // 4 strings to match.
  29013. if (memcmp(BuiltinName.data()+18, "ot", 2))
  29014. break;
  29015. switch (BuiltinName[20]) {
  29016. default: break;
  29017. case 'b': // 1 string to match.
  29018. if (BuiltinName[21] != 'i')
  29019. break;
  29020. return Intrinsic::x86_xop_vprotbi; // "__builtin_ia32_vprotbi"
  29021. case 'd': // 1 string to match.
  29022. if (BuiltinName[21] != 'i')
  29023. break;
  29024. return Intrinsic::x86_xop_vprotdi; // "__builtin_ia32_vprotdi"
  29025. case 'q': // 1 string to match.
  29026. if (BuiltinName[21] != 'i')
  29027. break;
  29028. return Intrinsic::x86_xop_vprotqi; // "__builtin_ia32_vprotqi"
  29029. case 'w': // 1 string to match.
  29030. if (BuiltinName[21] != 'i')
  29031. break;
  29032. return Intrinsic::x86_xop_vprotwi; // "__builtin_ia32_vprotwi"
  29033. }
  29034. break;
  29035. }
  29036. break;
  29037. }
  29038. break;
  29039. case 'p': // 5 strings to match.
  29040. if (memcmp(BuiltinName.data()+11, "tx_", 3))
  29041. break;
  29042. switch (BuiltinName[14]) {
  29043. default: break;
  29044. case 'b': // 1 string to match.
  29045. if (memcmp(BuiltinName.data()+15, "ar_sync", 7))
  29046. break;
  29047. return Intrinsic::ptx_bar_sync; // "__builtin_ptx_bar_sync"
  29048. case 'r': // 4 strings to match.
  29049. if (memcmp(BuiltinName.data()+15, "ead_pm", 6))
  29050. break;
  29051. switch (BuiltinName[21]) {
  29052. default: break;
  29053. case '0': // 1 string to match.
  29054. return Intrinsic::ptx_read_pm0; // "__builtin_ptx_read_pm0"
  29055. case '1': // 1 string to match.
  29056. return Intrinsic::ptx_read_pm1; // "__builtin_ptx_read_pm1"
  29057. case '2': // 1 string to match.
  29058. return Intrinsic::ptx_read_pm2; // "__builtin_ptx_read_pm2"
  29059. case '3': // 1 string to match.
  29060. return Intrinsic::ptx_read_pm3; // "__builtin_ptx_read_pm3"
  29061. }
  29062. break;
  29063. }
  29064. break;
  29065. }
  29066. break;
  29067. case 23: // 20 strings to match.
  29068. if (memcmp(BuiltinName.data()+0, "__", 2))
  29069. break;
  29070. switch (BuiltinName[2]) {
  29071. default: break;
  29072. case 'b': // 14 strings to match.
  29073. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29074. break;
  29075. switch (BuiltinName[10]) {
  29076. default: break;
  29077. case 'i': // 12 strings to match.
  29078. if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
  29079. break;
  29080. switch (BuiltinName[17]) {
  29081. default: break;
  29082. case 'h': // 9 strings to match.
  29083. switch (BuiltinName[18]) {
  29084. default: break;
  29085. case 'a': // 6 strings to match.
  29086. if (memcmp(BuiltinName.data()+19, "dd", 2))
  29087. break;
  29088. switch (BuiltinName[21]) {
  29089. default: break;
  29090. case 'b': // 3 strings to match.
  29091. switch (BuiltinName[22]) {
  29092. default: break;
  29093. case 'd': // 1 string to match.
  29094. return Intrinsic::x86_xop_vphaddbd; // "__builtin_ia32_vphaddbd"
  29095. case 'q': // 1 string to match.
  29096. return Intrinsic::x86_xop_vphaddbq; // "__builtin_ia32_vphaddbq"
  29097. case 'w': // 1 string to match.
  29098. return Intrinsic::x86_xop_vphaddbw; // "__builtin_ia32_vphaddbw"
  29099. }
  29100. break;
  29101. case 'd': // 1 string to match.
  29102. if (BuiltinName[22] != 'q')
  29103. break;
  29104. return Intrinsic::x86_xop_vphadddq; // "__builtin_ia32_vphadddq"
  29105. case 'w': // 2 strings to match.
  29106. switch (BuiltinName[22]) {
  29107. default: break;
  29108. case 'd': // 1 string to match.
  29109. return Intrinsic::x86_xop_vphaddwd; // "__builtin_ia32_vphaddwd"
  29110. case 'q': // 1 string to match.
  29111. return Intrinsic::x86_xop_vphaddwq; // "__builtin_ia32_vphaddwq"
  29112. }
  29113. break;
  29114. }
  29115. break;
  29116. case 's': // 3 strings to match.
  29117. if (memcmp(BuiltinName.data()+19, "ub", 2))
  29118. break;
  29119. switch (BuiltinName[21]) {
  29120. default: break;
  29121. case 'b': // 1 string to match.
  29122. if (BuiltinName[22] != 'w')
  29123. break;
  29124. return Intrinsic::x86_xop_vphsubbw; // "__builtin_ia32_vphsubbw"
  29125. case 'd': // 1 string to match.
  29126. if (BuiltinName[22] != 'q')
  29127. break;
  29128. return Intrinsic::x86_xop_vphsubdq; // "__builtin_ia32_vphsubdq"
  29129. case 'w': // 1 string to match.
  29130. if (BuiltinName[22] != 'd')
  29131. break;
  29132. return Intrinsic::x86_xop_vphsubwd; // "__builtin_ia32_vphsubwd"
  29133. }
  29134. break;
  29135. }
  29136. break;
  29137. case 'm': // 3 strings to match.
  29138. if (memcmp(BuiltinName.data()+18, "acs", 3))
  29139. break;
  29140. switch (BuiltinName[21]) {
  29141. default: break;
  29142. case 'd': // 1 string to match.
  29143. if (BuiltinName[22] != 'd')
  29144. break;
  29145. return Intrinsic::x86_xop_vpmacsdd; // "__builtin_ia32_vpmacsdd"
  29146. case 'w': // 2 strings to match.
  29147. switch (BuiltinName[22]) {
  29148. default: break;
  29149. case 'd': // 1 string to match.
  29150. return Intrinsic::x86_xop_vpmacswd; // "__builtin_ia32_vpmacswd"
  29151. case 'w': // 1 string to match.
  29152. return Intrinsic::x86_xop_vpmacsww; // "__builtin_ia32_vpmacsww"
  29153. }
  29154. break;
  29155. }
  29156. break;
  29157. }
  29158. break;
  29159. case 'p': // 1 string to match.
  29160. if (memcmp(BuiltinName.data()+11, "tx_read_smid", 12))
  29161. break;
  29162. return Intrinsic::ptx_read_smid; // "__builtin_ptx_read_smid"
  29163. case 's': // 1 string to match.
  29164. if (memcmp(BuiltinName.data()+11, "tack_restore", 12))
  29165. break;
  29166. return Intrinsic::stackrestore; // "__builtin_stack_restore"
  29167. }
  29168. break;
  29169. case 'n': // 6 strings to match.
  29170. if (memcmp(BuiltinName.data()+3, "vvm_", 4))
  29171. break;
  29172. switch (BuiltinName[7]) {
  29173. default: break;
  29174. case 'c': // 1 string to match.
  29175. if (memcmp(BuiltinName.data()+8, "os_approx_ftz_f", 15))
  29176. break;
  29177. return Intrinsic::nvvm_cos_approx_ftz_f; // "__nvvm_cos_approx_ftz_f"
  29178. case 'd': // 1 string to match.
  29179. if (memcmp(BuiltinName.data()+8, "iv_approx_ftz_f", 15))
  29180. break;
  29181. return Intrinsic::nvvm_div_approx_ftz_f; // "__nvvm_div_approx_ftz_f"
  29182. case 'e': // 1 string to match.
  29183. if (memcmp(BuiltinName.data()+8, "x2_approx_ftz_f", 15))
  29184. break;
  29185. return Intrinsic::nvvm_ex2_approx_ftz_f; // "__nvvm_ex2_approx_ftz_f"
  29186. case 'l': // 1 string to match.
  29187. if (memcmp(BuiltinName.data()+8, "g2_approx_ftz_f", 15))
  29188. break;
  29189. return Intrinsic::nvvm_lg2_approx_ftz_f; // "__nvvm_lg2_approx_ftz_f"
  29190. case 'r': // 1 string to match.
  29191. if (memcmp(BuiltinName.data()+8, "cp_approx_ftz_d", 15))
  29192. break;
  29193. return Intrinsic::nvvm_rcp_approx_ftz_d; // "__nvvm_rcp_approx_ftz_d"
  29194. case 's': // 1 string to match.
  29195. if (memcmp(BuiltinName.data()+8, "in_approx_ftz_f", 15))
  29196. break;
  29197. return Intrinsic::nvvm_sin_approx_ftz_f; // "__nvvm_sin_approx_ftz_f"
  29198. }
  29199. break;
  29200. }
  29201. break;
  29202. case 24: // 19 strings to match.
  29203. if (memcmp(BuiltinName.data()+0, "__", 2))
  29204. break;
  29205. switch (BuiltinName[2]) {
  29206. default: break;
  29207. case 'b': // 18 strings to match.
  29208. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29209. break;
  29210. switch (BuiltinName[10]) {
  29211. default: break;
  29212. case 'i': // 12 strings to match.
  29213. if (memcmp(BuiltinName.data()+11, "a32_vp", 6))
  29214. break;
  29215. switch (BuiltinName[17]) {
  29216. default: break;
  29217. case 'h': // 6 strings to match.
  29218. if (memcmp(BuiltinName.data()+18, "addu", 4))
  29219. break;
  29220. switch (BuiltinName[22]) {
  29221. default: break;
  29222. case 'b': // 3 strings to match.
  29223. switch (BuiltinName[23]) {
  29224. default: break;
  29225. case 'd': // 1 string to match.
  29226. return Intrinsic::x86_xop_vphaddubd; // "__builtin_ia32_vphaddubd"
  29227. case 'q': // 1 string to match.
  29228. return Intrinsic::x86_xop_vphaddubq; // "__builtin_ia32_vphaddubq"
  29229. case 'w': // 1 string to match.
  29230. return Intrinsic::x86_xop_vphaddubw; // "__builtin_ia32_vphaddubw"
  29231. }
  29232. break;
  29233. case 'd': // 1 string to match.
  29234. if (BuiltinName[23] != 'q')
  29235. break;
  29236. return Intrinsic::x86_xop_vphaddudq; // "__builtin_ia32_vphaddudq"
  29237. case 'w': // 2 strings to match.
  29238. switch (BuiltinName[23]) {
  29239. default: break;
  29240. case 'd': // 1 string to match.
  29241. return Intrinsic::x86_xop_vphadduwd; // "__builtin_ia32_vphadduwd"
  29242. case 'q': // 1 string to match.
  29243. return Intrinsic::x86_xop_vphadduwq; // "__builtin_ia32_vphadduwq"
  29244. }
  29245. break;
  29246. }
  29247. break;
  29248. case 'm': // 6 strings to match.
  29249. if (BuiltinName[18] != 'a')
  29250. break;
  29251. switch (BuiltinName[19]) {
  29252. default: break;
  29253. case 'c': // 5 strings to match.
  29254. if (BuiltinName[20] != 's')
  29255. break;
  29256. switch (BuiltinName[21]) {
  29257. default: break;
  29258. case 'd': // 2 strings to match.
  29259. if (BuiltinName[22] != 'q')
  29260. break;
  29261. switch (BuiltinName[23]) {
  29262. default: break;
  29263. case 'h': // 1 string to match.
  29264. return Intrinsic::x86_xop_vpmacsdqh; // "__builtin_ia32_vpmacsdqh"
  29265. case 'l': // 1 string to match.
  29266. return Intrinsic::x86_xop_vpmacsdql; // "__builtin_ia32_vpmacsdql"
  29267. }
  29268. break;
  29269. case 's': // 3 strings to match.
  29270. switch (BuiltinName[22]) {
  29271. default: break;
  29272. case 'd': // 1 string to match.
  29273. if (BuiltinName[23] != 'd')
  29274. break;
  29275. return Intrinsic::x86_xop_vpmacssdd; // "__builtin_ia32_vpmacssdd"
  29276. case 'w': // 2 strings to match.
  29277. switch (BuiltinName[23]) {
  29278. default: break;
  29279. case 'd': // 1 string to match.
  29280. return Intrinsic::x86_xop_vpmacsswd; // "__builtin_ia32_vpmacsswd"
  29281. case 'w': // 1 string to match.
  29282. return Intrinsic::x86_xop_vpmacssww; // "__builtin_ia32_vpmacssww"
  29283. }
  29284. break;
  29285. }
  29286. break;
  29287. }
  29288. break;
  29289. case 'd': // 1 string to match.
  29290. if (memcmp(BuiltinName.data()+20, "cswd", 4))
  29291. break;
  29292. return Intrinsic::x86_xop_vpmadcswd; // "__builtin_ia32_vpmadcswd"
  29293. }
  29294. break;
  29295. }
  29296. break;
  29297. case 'p': // 6 strings to match.
  29298. if (memcmp(BuiltinName.data()+11, "tx_read_", 8))
  29299. break;
  29300. switch (BuiltinName[19]) {
  29301. default: break;
  29302. case 'c': // 1 string to match.
  29303. if (memcmp(BuiltinName.data()+20, "lock", 4))
  29304. break;
  29305. return Intrinsic::ptx_read_clock; // "__builtin_ptx_read_clock"
  29306. case 'n': // 1 string to match.
  29307. if (memcmp(BuiltinName.data()+20, "smid", 4))
  29308. break;
  29309. return Intrinsic::ptx_read_nsmid; // "__builtin_ptx_read_nsmid"
  29310. case 't': // 4 strings to match.
  29311. if (memcmp(BuiltinName.data()+20, "id_", 3))
  29312. break;
  29313. switch (BuiltinName[23]) {
  29314. default: break;
  29315. case 'w': // 1 string to match.
  29316. return Intrinsic::ptx_read_tid_w; // "__builtin_ptx_read_tid_w"
  29317. case 'x': // 1 string to match.
  29318. return Intrinsic::ptx_read_tid_x; // "__builtin_ptx_read_tid_x"
  29319. case 'y': // 1 string to match.
  29320. return Intrinsic::ptx_read_tid_y; // "__builtin_ptx_read_tid_y"
  29321. case 'z': // 1 string to match.
  29322. return Intrinsic::ptx_read_tid_z; // "__builtin_ptx_read_tid_z"
  29323. }
  29324. break;
  29325. }
  29326. break;
  29327. }
  29328. break;
  29329. case 'n': // 1 string to match.
  29330. if (memcmp(BuiltinName.data()+3, "vvm_sqrt_approx_ftz_f", 21))
  29331. break;
  29332. return Intrinsic::nvvm_sqrt_approx_ftz_f; // "__nvvm_sqrt_approx_ftz_f"
  29333. }
  29334. break;
  29335. case 25: // 17 strings to match.
  29336. if (memcmp(BuiltinName.data()+0, "__", 2))
  29337. break;
  29338. switch (BuiltinName[2]) {
  29339. default: break;
  29340. case 'b': // 16 strings to match.
  29341. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29342. break;
  29343. switch (BuiltinName[10]) {
  29344. default: break;
  29345. case 'i': // 9 strings to match.
  29346. switch (BuiltinName[11]) {
  29347. default: break;
  29348. case 'a': // 8 strings to match.
  29349. if (memcmp(BuiltinName.data()+12, "32_v", 4))
  29350. break;
  29351. switch (BuiltinName[16]) {
  29352. default: break;
  29353. case 'f': // 2 strings to match.
  29354. if (memcmp(BuiltinName.data()+17, "rczp", 4))
  29355. break;
  29356. switch (BuiltinName[21]) {
  29357. default: break;
  29358. case 'd': // 1 string to match.
  29359. if (memcmp(BuiltinName.data()+22, "256", 3))
  29360. break;
  29361. return Intrinsic::x86_xop_vfrcz_pd_256; // "__builtin_ia32_vfrczpd256"
  29362. case 's': // 1 string to match.
  29363. if (memcmp(BuiltinName.data()+22, "256", 3))
  29364. break;
  29365. return Intrinsic::x86_xop_vfrcz_ps_256; // "__builtin_ia32_vfrczps256"
  29366. }
  29367. break;
  29368. case 'p': // 6 strings to match.
  29369. switch (BuiltinName[17]) {
  29370. default: break;
  29371. case 'c': // 1 string to match.
  29372. if (memcmp(BuiltinName.data()+18, "mov_256", 7))
  29373. break;
  29374. return Intrinsic::x86_xop_vpcmov_256; // "__builtin_ia32_vpcmov_256"
  29375. case 'e': // 2 strings to match.
  29376. if (memcmp(BuiltinName.data()+18, "rmil2p", 6))
  29377. break;
  29378. switch (BuiltinName[24]) {
  29379. default: break;
  29380. case 'd': // 1 string to match.
  29381. return Intrinsic::x86_xop_vpermil2pd; // "__builtin_ia32_vpermil2pd"
  29382. case 's': // 1 string to match.
  29383. return Intrinsic::x86_xop_vpermil2ps; // "__builtin_ia32_vpermil2ps"
  29384. }
  29385. break;
  29386. case 'm': // 3 strings to match.
  29387. if (BuiltinName[18] != 'a')
  29388. break;
  29389. switch (BuiltinName[19]) {
  29390. default: break;
  29391. case 'c': // 2 strings to match.
  29392. if (memcmp(BuiltinName.data()+20, "ssdq", 4))
  29393. break;
  29394. switch (BuiltinName[24]) {
  29395. default: break;
  29396. case 'h': // 1 string to match.
  29397. return Intrinsic::x86_xop_vpmacssdqh; // "__builtin_ia32_vpmacssdqh"
  29398. case 'l': // 1 string to match.
  29399. return Intrinsic::x86_xop_vpmacssdql; // "__builtin_ia32_vpmacssdql"
  29400. }
  29401. break;
  29402. case 'd': // 1 string to match.
  29403. if (memcmp(BuiltinName.data()+20, "csswd", 5))
  29404. break;
  29405. return Intrinsic::x86_xop_vpmadcsswd; // "__builtin_ia32_vpmadcsswd"
  29406. }
  29407. break;
  29408. }
  29409. break;
  29410. }
  29411. break;
  29412. case 'n': // 1 string to match.
  29413. if (memcmp(BuiltinName.data()+12, "it_trampoline", 13))
  29414. break;
  29415. return Intrinsic::init_trampoline; // "__builtin_init_trampoline"
  29416. }
  29417. break;
  29418. case 'p': // 7 strings to match.
  29419. if (memcmp(BuiltinName.data()+11, "tx_read_", 8))
  29420. break;
  29421. switch (BuiltinName[19]) {
  29422. default: break;
  29423. case 'g': // 1 string to match.
  29424. if (memcmp(BuiltinName.data()+20, "ridid", 5))
  29425. break;
  29426. return Intrinsic::ptx_read_gridid; // "__builtin_ptx_read_gridid"
  29427. case 'l': // 1 string to match.
  29428. if (memcmp(BuiltinName.data()+20, "aneid", 5))
  29429. break;
  29430. return Intrinsic::ptx_read_laneid; // "__builtin_ptx_read_laneid"
  29431. case 'n': // 4 strings to match.
  29432. if (memcmp(BuiltinName.data()+20, "tid_", 4))
  29433. break;
  29434. switch (BuiltinName[24]) {
  29435. default: break;
  29436. case 'w': // 1 string to match.
  29437. return Intrinsic::ptx_read_ntid_w; // "__builtin_ptx_read_ntid_w"
  29438. case 'x': // 1 string to match.
  29439. return Intrinsic::ptx_read_ntid_x; // "__builtin_ptx_read_ntid_x"
  29440. case 'y': // 1 string to match.
  29441. return Intrinsic::ptx_read_ntid_y; // "__builtin_ptx_read_ntid_y"
  29442. case 'z': // 1 string to match.
  29443. return Intrinsic::ptx_read_ntid_z; // "__builtin_ptx_read_ntid_z"
  29444. }
  29445. break;
  29446. case 'w': // 1 string to match.
  29447. if (memcmp(BuiltinName.data()+20, "arpid", 5))
  29448. break;
  29449. return Intrinsic::ptx_read_warpid; // "__builtin_ptx_read_warpid"
  29450. }
  29451. break;
  29452. }
  29453. break;
  29454. case 'n': // 1 string to match.
  29455. if (memcmp(BuiltinName.data()+3, "vvm_rsqrt_approx_ftz_f", 22))
  29456. break;
  29457. return Intrinsic::nvvm_rsqrt_approx_ftz_f; // "__nvvm_rsqrt_approx_ftz_f"
  29458. }
  29459. break;
  29460. case 26: // 9 strings to match.
  29461. if (memcmp(BuiltinName.data()+0, "__", 2))
  29462. break;
  29463. switch (BuiltinName[2]) {
  29464. default: break;
  29465. case 'b': // 6 strings to match.
  29466. if (memcmp(BuiltinName.data()+3, "uiltin_ptx_read_", 16))
  29467. break;
  29468. switch (BuiltinName[19]) {
  29469. default: break;
  29470. case 'c': // 5 strings to match.
  29471. switch (BuiltinName[20]) {
  29472. default: break;
  29473. case 'l': // 1 string to match.
  29474. if (memcmp(BuiltinName.data()+21, "ock64", 5))
  29475. break;
  29476. return Intrinsic::ptx_read_clock64; // "__builtin_ptx_read_clock64"
  29477. case 't': // 4 strings to match.
  29478. if (memcmp(BuiltinName.data()+21, "aid_", 4))
  29479. break;
  29480. switch (BuiltinName[25]) {
  29481. default: break;
  29482. case 'w': // 1 string to match.
  29483. return Intrinsic::ptx_read_ctaid_w; // "__builtin_ptx_read_ctaid_w"
  29484. case 'x': // 1 string to match.
  29485. return Intrinsic::ptx_read_ctaid_x; // "__builtin_ptx_read_ctaid_x"
  29486. case 'y': // 1 string to match.
  29487. return Intrinsic::ptx_read_ctaid_y; // "__builtin_ptx_read_ctaid_y"
  29488. case 'z': // 1 string to match.
  29489. return Intrinsic::ptx_read_ctaid_z; // "__builtin_ptx_read_ctaid_z"
  29490. }
  29491. break;
  29492. }
  29493. break;
  29494. case 'n': // 1 string to match.
  29495. if (memcmp(BuiltinName.data()+20, "warpid", 6))
  29496. break;
  29497. return Intrinsic::ptx_read_nwarpid; // "__builtin_ptx_read_nwarpid"
  29498. }
  29499. break;
  29500. case 'n': // 3 strings to match.
  29501. if (memcmp(BuiltinName.data()+3, "vvm_read_ptx_sreg_tid_", 22))
  29502. break;
  29503. switch (BuiltinName[25]) {
  29504. default: break;
  29505. case 'x': // 1 string to match.
  29506. return Intrinsic::nvvm_read_ptx_sreg_tid_x; // "__nvvm_read_ptx_sreg_tid_x"
  29507. case 'y': // 1 string to match.
  29508. return Intrinsic::nvvm_read_ptx_sreg_tid_y; // "__nvvm_read_ptx_sreg_tid_y"
  29509. case 'z': // 1 string to match.
  29510. return Intrinsic::nvvm_read_ptx_sreg_tid_z; // "__nvvm_read_ptx_sreg_tid_z"
  29511. }
  29512. break;
  29513. }
  29514. break;
  29515. case 27: // 8 strings to match.
  29516. if (memcmp(BuiltinName.data()+0, "__", 2))
  29517. break;
  29518. switch (BuiltinName[2]) {
  29519. default: break;
  29520. case 'b': // 5 strings to match.
  29521. if (memcmp(BuiltinName.data()+3, "uiltin_", 7))
  29522. break;
  29523. switch (BuiltinName[10]) {
  29524. default: break;
  29525. case 'a': // 1 string to match.
  29526. if (memcmp(BuiltinName.data()+11, "djust_trampoline", 16))
  29527. break;
  29528. return Intrinsic::adjust_trampoline; // "__builtin_adjust_trampoline"
  29529. case 'p': // 4 strings to match.
  29530. if (memcmp(BuiltinName.data()+11, "tx_read_nctaid_", 15))
  29531. break;
  29532. switch (BuiltinName[26]) {
  29533. default: break;
  29534. case 'w': // 1 string to match.
  29535. return Intrinsic::ptx_read_nctaid_w; // "__builtin_ptx_read_nctaid_w"
  29536. case 'x': // 1 string to match.
  29537. return Intrinsic::ptx_read_nctaid_x; // "__builtin_ptx_read_nctaid_x"
  29538. case 'y': // 1 string to match.
  29539. return Intrinsic::ptx_read_nctaid_y; // "__builtin_ptx_read_nctaid_y"
  29540. case 'z': // 1 string to match.
  29541. return Intrinsic::ptx_read_nctaid_z; // "__builtin_ptx_read_nctaid_z"
  29542. }
  29543. break;
  29544. }
  29545. break;
  29546. case 'n': // 3 strings to match.
  29547. if (memcmp(BuiltinName.data()+3, "vvm_read_ptx_sreg_ntid_", 23))
  29548. break;
  29549. switch (BuiltinName[26]) {
  29550. default: break;
  29551. case 'x': // 1 string to match.
  29552. return Intrinsic::nvvm_read_ptx_sreg_ntid_x; // "__nvvm_read_ptx_sreg_ntid_x"
  29553. case 'y': // 1 string to match.
  29554. return Intrinsic::nvvm_read_ptx_sreg_ntid_y; // "__nvvm_read_ptx_sreg_ntid_y"
  29555. case 'z': // 1 string to match.
  29556. return Intrinsic::nvvm_read_ptx_sreg_ntid_z; // "__nvvm_read_ptx_sreg_ntid_z"
  29557. }
  29558. break;
  29559. }
  29560. break;
  29561. case 28: // 5 strings to match.
  29562. if (memcmp(BuiltinName.data()+0, "__", 2))
  29563. break;
  29564. switch (BuiltinName[2]) {
  29565. default: break;
  29566. case 'b': // 2 strings to match.
  29567. if (memcmp(BuiltinName.data()+3, "uiltin_ia32_vpermil2p", 21))
  29568. break;
  29569. switch (BuiltinName[24]) {
  29570. default: break;
  29571. case 'd': // 1 string to match.
  29572. if (memcmp(BuiltinName.data()+25, "256", 3))
  29573. break;
  29574. return Intrinsic::x86_xop_vpermil2pd_256; // "__builtin_ia32_vpermil2pd256"
  29575. case 's': // 1 string to match.
  29576. if (memcmp(BuiltinName.data()+25, "256", 3))
  29577. break;
  29578. return Intrinsic::x86_xop_vpermil2ps_256; // "__builtin_ia32_vpermil2ps256"
  29579. }
  29580. break;
  29581. case 'n': // 3 strings to match.
  29582. if (memcmp(BuiltinName.data()+3, "vvm_read_ptx_sreg_ctaid_", 24))
  29583. break;
  29584. switch (BuiltinName[27]) {
  29585. default: break;
  29586. case 'x': // 1 string to match.
  29587. return Intrinsic::nvvm_read_ptx_sreg_ctaid_x; // "__nvvm_read_ptx_sreg_ctaid_x"
  29588. case 'y': // 1 string to match.
  29589. return Intrinsic::nvvm_read_ptx_sreg_ctaid_y; // "__nvvm_read_ptx_sreg_ctaid_y"
  29590. case 'z': // 1 string to match.
  29591. return Intrinsic::nvvm_read_ptx_sreg_ctaid_z; // "__nvvm_read_ptx_sreg_ctaid_z"
  29592. }
  29593. break;
  29594. }
  29595. break;
  29596. case 29: // 4 strings to match.
  29597. if (memcmp(BuiltinName.data()+0, "__nvvm_read_ptx_sreg_", 21))
  29598. break;
  29599. switch (BuiltinName[21]) {
  29600. default: break;
  29601. case 'n': // 3 strings to match.
  29602. if (memcmp(BuiltinName.data()+22, "ctaid_", 6))
  29603. break;
  29604. switch (BuiltinName[28]) {
  29605. default: break;
  29606. case 'x': // 1 string to match.
  29607. return Intrinsic::nvvm_read_ptx_sreg_nctaid_x; // "__nvvm_read_ptx_sreg_nctaid_x"
  29608. case 'y': // 1 string to match.
  29609. return Intrinsic::nvvm_read_ptx_sreg_nctaid_y; // "__nvvm_read_ptx_sreg_nctaid_y"
  29610. case 'z': // 1 string to match.
  29611. return Intrinsic::nvvm_read_ptx_sreg_nctaid_z; // "__nvvm_read_ptx_sreg_nctaid_z"
  29612. }
  29613. break;
  29614. case 'w': // 1 string to match.
  29615. if (memcmp(BuiltinName.data()+22, "arpsize", 7))
  29616. break;
  29617. return Intrinsic::nvvm_read_ptx_sreg_warpsize; // "__nvvm_read_ptx_sreg_warpsize"
  29618. }
  29619. break;
  29620. case 30: // 5 strings to match.
  29621. if (memcmp(BuiltinName.data()+0, "__builtin_ptx_read_lanemask_", 28))
  29622. break;
  29623. switch (BuiltinName[28]) {
  29624. default: break;
  29625. case 'e': // 1 string to match.
  29626. if (BuiltinName[29] != 'q')
  29627. break;
  29628. return Intrinsic::ptx_read_lanemask_eq; // "__builtin_ptx_read_lanemask_eq"
  29629. case 'g': // 2 strings to match.
  29630. switch (BuiltinName[29]) {
  29631. default: break;
  29632. case 'e': // 1 string to match.
  29633. return Intrinsic::ptx_read_lanemask_ge; // "__builtin_ptx_read_lanemask_ge"
  29634. case 't': // 1 string to match.
  29635. return Intrinsic::ptx_read_lanemask_gt; // "__builtin_ptx_read_lanemask_gt"
  29636. }
  29637. break;
  29638. case 'l': // 2 strings to match.
  29639. switch (BuiltinName[29]) {
  29640. default: break;
  29641. case 'e': // 1 string to match.
  29642. return Intrinsic::ptx_read_lanemask_le; // "__builtin_ptx_read_lanemask_le"
  29643. case 't': // 1 string to match.
  29644. return Intrinsic::ptx_read_lanemask_lt; // "__builtin_ptx_read_lanemask_lt"
  29645. }
  29646. break;
  29647. }
  29648. break;
  29649. }
  29650. }
  29651. if (TargetPrefix == "arm") {
  29652. switch (BuiltinName.size()) {
  29653. default: break;
  29654. case 17: // 3 strings to match.
  29655. if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
  29656. break;
  29657. switch (BuiltinName[14]) {
  29658. default: break;
  29659. case 'c': // 1 string to match.
  29660. if (memcmp(BuiltinName.data()+15, "dp", 2))
  29661. break;
  29662. return Intrinsic::arm_cdp; // "__builtin_arm_cdp"
  29663. case 'm': // 2 strings to match.
  29664. switch (BuiltinName[15]) {
  29665. default: break;
  29666. case 'c': // 1 string to match.
  29667. if (BuiltinName[16] != 'r')
  29668. break;
  29669. return Intrinsic::arm_mcr; // "__builtin_arm_mcr"
  29670. case 'r': // 1 string to match.
  29671. if (BuiltinName[16] != 'c')
  29672. break;
  29673. return Intrinsic::arm_mrc; // "__builtin_arm_mrc"
  29674. }
  29675. break;
  29676. }
  29677. break;
  29678. case 18: // 8 strings to match.
  29679. if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
  29680. break;
  29681. switch (BuiltinName[14]) {
  29682. default: break;
  29683. case 'c': // 1 string to match.
  29684. if (memcmp(BuiltinName.data()+15, "dp2", 3))
  29685. break;
  29686. return Intrinsic::arm_cdp2; // "__builtin_arm_cdp2"
  29687. case 'm': // 3 strings to match.
  29688. switch (BuiltinName[15]) {
  29689. default: break;
  29690. case 'c': // 2 strings to match.
  29691. if (BuiltinName[16] != 'r')
  29692. break;
  29693. switch (BuiltinName[17]) {
  29694. default: break;
  29695. case '2': // 1 string to match.
  29696. return Intrinsic::arm_mcr2; // "__builtin_arm_mcr2"
  29697. case 'r': // 1 string to match.
  29698. return Intrinsic::arm_mcrr; // "__builtin_arm_mcrr"
  29699. }
  29700. break;
  29701. case 'r': // 1 string to match.
  29702. if (memcmp(BuiltinName.data()+16, "c2", 2))
  29703. break;
  29704. return Intrinsic::arm_mrc2; // "__builtin_arm_mrc2"
  29705. }
  29706. break;
  29707. case 'q': // 2 strings to match.
  29708. switch (BuiltinName[15]) {
  29709. default: break;
  29710. case 'a': // 1 string to match.
  29711. if (memcmp(BuiltinName.data()+16, "dd", 2))
  29712. break;
  29713. return Intrinsic::arm_qadd; // "__builtin_arm_qadd"
  29714. case 's': // 1 string to match.
  29715. if (memcmp(BuiltinName.data()+16, "ub", 2))
  29716. break;
  29717. return Intrinsic::arm_qsub; // "__builtin_arm_qsub"
  29718. }
  29719. break;
  29720. case 's': // 1 string to match.
  29721. if (memcmp(BuiltinName.data()+15, "sat", 3))
  29722. break;
  29723. return Intrinsic::arm_ssat; // "__builtin_arm_ssat"
  29724. case 'u': // 1 string to match.
  29725. if (memcmp(BuiltinName.data()+15, "sat", 3))
  29726. break;
  29727. return Intrinsic::arm_usat; // "__builtin_arm_usat"
  29728. }
  29729. break;
  29730. case 19: // 1 string to match.
  29731. if (memcmp(BuiltinName.data()+0, "__builtin_arm_mcrr2", 19))
  29732. break;
  29733. return Intrinsic::arm_mcrr2; // "__builtin_arm_mcrr2"
  29734. case 23: // 2 strings to match.
  29735. if (memcmp(BuiltinName.data()+0, "__builtin_arm_", 14))
  29736. break;
  29737. switch (BuiltinName[14]) {
  29738. default: break;
  29739. case 'g': // 1 string to match.
  29740. if (memcmp(BuiltinName.data()+15, "et_fpscr", 8))
  29741. break;
  29742. return Intrinsic::arm_get_fpscr; // "__builtin_arm_get_fpscr"
  29743. case 's': // 1 string to match.
  29744. if (memcmp(BuiltinName.data()+15, "et_fpscr", 8))
  29745. break;
  29746. return Intrinsic::arm_set_fpscr; // "__builtin_arm_set_fpscr"
  29747. }
  29748. break;
  29749. case 24: // 1 string to match.
  29750. if (memcmp(BuiltinName.data()+0, "__builtin_thread_pointer", 24))
  29751. break;
  29752. return Intrinsic::arm_thread_pointer; // "__builtin_thread_pointer"
  29753. }
  29754. }
  29755. if (TargetPrefix == "hexagon") {
  29756. switch (BuiltinName.size()) {
  29757. default: break;
  29758. case 18: // 1 string to match.
  29759. if (memcmp(BuiltinName.data()+0, "__builtin_circ_ldd", 18))
  29760. break;
  29761. return Intrinsic::hexagon_circ_ldd; // "__builtin_circ_ldd"
  29762. case 23: // 2 strings to match.
  29763. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  29764. break;
  29765. switch (BuiltinName[18]) {
  29766. default: break;
  29767. case 'A': // 1 string to match.
  29768. if (memcmp(BuiltinName.data()+19, "2_or", 4))
  29769. break;
  29770. return Intrinsic::hexagon_A2_or; // "__builtin_HEXAGON_A2_or"
  29771. case 'C': // 1 string to match.
  29772. if (memcmp(BuiltinName.data()+19, "2_or", 4))
  29773. break;
  29774. return Intrinsic::hexagon_C2_or; // "__builtin_HEXAGON_C2_or"
  29775. }
  29776. break;
  29777. case 24: // 23 strings to match.
  29778. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  29779. break;
  29780. switch (BuiltinName[18]) {
  29781. default: break;
  29782. case 'A': // 13 strings to match.
  29783. switch (BuiltinName[19]) {
  29784. default: break;
  29785. case '2': // 12 strings to match.
  29786. if (BuiltinName[20] != '_')
  29787. break;
  29788. switch (BuiltinName[21]) {
  29789. default: break;
  29790. case 'a': // 3 strings to match.
  29791. switch (BuiltinName[22]) {
  29792. default: break;
  29793. case 'b': // 1 string to match.
  29794. if (BuiltinName[23] != 's')
  29795. break;
  29796. return Intrinsic::hexagon_A2_abs; // "__builtin_HEXAGON_A2_abs"
  29797. case 'd': // 1 string to match.
  29798. if (BuiltinName[23] != 'd')
  29799. break;
  29800. return Intrinsic::hexagon_A2_add; // "__builtin_HEXAGON_A2_add"
  29801. case 'n': // 1 string to match.
  29802. if (BuiltinName[23] != 'd')
  29803. break;
  29804. return Intrinsic::hexagon_A2_and; // "__builtin_HEXAGON_A2_and"
  29805. }
  29806. break;
  29807. case 'm': // 2 strings to match.
  29808. switch (BuiltinName[22]) {
  29809. default: break;
  29810. case 'a': // 1 string to match.
  29811. if (BuiltinName[23] != 'x')
  29812. break;
  29813. return Intrinsic::hexagon_A2_max; // "__builtin_HEXAGON_A2_max"
  29814. case 'i': // 1 string to match.
  29815. if (BuiltinName[23] != 'n')
  29816. break;
  29817. return Intrinsic::hexagon_A2_min; // "__builtin_HEXAGON_A2_min"
  29818. }
  29819. break;
  29820. case 'n': // 2 strings to match.
  29821. switch (BuiltinName[22]) {
  29822. default: break;
  29823. case 'e': // 1 string to match.
  29824. if (BuiltinName[23] != 'g')
  29825. break;
  29826. return Intrinsic::hexagon_A2_neg; // "__builtin_HEXAGON_A2_neg"
  29827. case 'o': // 1 string to match.
  29828. if (BuiltinName[23] != 't')
  29829. break;
  29830. return Intrinsic::hexagon_A2_not; // "__builtin_HEXAGON_A2_not"
  29831. }
  29832. break;
  29833. case 'o': // 1 string to match.
  29834. if (memcmp(BuiltinName.data()+22, "rp", 2))
  29835. break;
  29836. return Intrinsic::hexagon_A2_orp; // "__builtin_HEXAGON_A2_orp"
  29837. case 's': // 2 strings to match.
  29838. switch (BuiltinName[22]) {
  29839. default: break;
  29840. case 'a': // 1 string to match.
  29841. if (BuiltinName[23] != 't')
  29842. break;
  29843. return Intrinsic::hexagon_A2_sat; // "__builtin_HEXAGON_A2_sat"
  29844. case 'u': // 1 string to match.
  29845. if (BuiltinName[23] != 'b')
  29846. break;
  29847. return Intrinsic::hexagon_A2_sub; // "__builtin_HEXAGON_A2_sub"
  29848. }
  29849. break;
  29850. case 't': // 1 string to match.
  29851. if (memcmp(BuiltinName.data()+22, "fr", 2))
  29852. break;
  29853. return Intrinsic::hexagon_A2_tfr; // "__builtin_HEXAGON_A2_tfr"
  29854. case 'x': // 1 string to match.
  29855. if (memcmp(BuiltinName.data()+22, "or", 2))
  29856. break;
  29857. return Intrinsic::hexagon_A2_xor; // "__builtin_HEXAGON_A2_xor"
  29858. }
  29859. break;
  29860. case '4': // 1 string to match.
  29861. if (memcmp(BuiltinName.data()+20, "_orn", 4))
  29862. break;
  29863. return Intrinsic::hexagon_A4_orn; // "__builtin_HEXAGON_A4_orn"
  29864. }
  29865. break;
  29866. case 'C': // 5 strings to match.
  29867. if (memcmp(BuiltinName.data()+19, "2_", 2))
  29868. break;
  29869. switch (BuiltinName[21]) {
  29870. default: break;
  29871. case 'a': // 1 string to match.
  29872. if (memcmp(BuiltinName.data()+22, "nd", 2))
  29873. break;
  29874. return Intrinsic::hexagon_C2_and; // "__builtin_HEXAGON_C2_and"
  29875. case 'm': // 1 string to match.
  29876. if (memcmp(BuiltinName.data()+22, "ux", 2))
  29877. break;
  29878. return Intrinsic::hexagon_C2_mux; // "__builtin_HEXAGON_C2_mux"
  29879. case 'n': // 1 string to match.
  29880. if (memcmp(BuiltinName.data()+22, "ot", 2))
  29881. break;
  29882. return Intrinsic::hexagon_C2_not; // "__builtin_HEXAGON_C2_not"
  29883. case 'o': // 1 string to match.
  29884. if (memcmp(BuiltinName.data()+22, "rn", 2))
  29885. break;
  29886. return Intrinsic::hexagon_C2_orn; // "__builtin_HEXAGON_C2_orn"
  29887. case 'x': // 1 string to match.
  29888. if (memcmp(BuiltinName.data()+22, "or", 2))
  29889. break;
  29890. return Intrinsic::hexagon_C2_xor; // "__builtin_HEXAGON_C2_xor"
  29891. }
  29892. break;
  29893. case 'S': // 5 strings to match.
  29894. if (memcmp(BuiltinName.data()+19, "2_c", 3))
  29895. break;
  29896. switch (BuiltinName[22]) {
  29897. default: break;
  29898. case 'l': // 3 strings to match.
  29899. switch (BuiltinName[23]) {
  29900. default: break;
  29901. case '0': // 1 string to match.
  29902. return Intrinsic::hexagon_S2_cl0; // "__builtin_HEXAGON_S2_cl0"
  29903. case '1': // 1 string to match.
  29904. return Intrinsic::hexagon_S2_cl1; // "__builtin_HEXAGON_S2_cl1"
  29905. case 'b': // 1 string to match.
  29906. return Intrinsic::hexagon_S2_clb; // "__builtin_HEXAGON_S2_clb"
  29907. }
  29908. break;
  29909. case 't': // 2 strings to match.
  29910. switch (BuiltinName[23]) {
  29911. default: break;
  29912. case '0': // 1 string to match.
  29913. return Intrinsic::hexagon_S2_ct0; // "__builtin_HEXAGON_S2_ct0"
  29914. case '1': // 1 string to match.
  29915. return Intrinsic::hexagon_S2_ct1; // "__builtin_HEXAGON_S2_ct1"
  29916. }
  29917. break;
  29918. }
  29919. break;
  29920. }
  29921. break;
  29922. case 25: // 42 strings to match.
  29923. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  29924. break;
  29925. switch (BuiltinName[18]) {
  29926. default: break;
  29927. case 'A': // 26 strings to match.
  29928. switch (BuiltinName[19]) {
  29929. default: break;
  29930. case '2': // 24 strings to match.
  29931. if (BuiltinName[20] != '_')
  29932. break;
  29933. switch (BuiltinName[21]) {
  29934. default: break;
  29935. case 'a': // 6 strings to match.
  29936. switch (BuiltinName[22]) {
  29937. default: break;
  29938. case 'b': // 1 string to match.
  29939. if (memcmp(BuiltinName.data()+23, "sp", 2))
  29940. break;
  29941. return Intrinsic::hexagon_A2_absp; // "__builtin_HEXAGON_A2_absp"
  29942. case 'd': // 2 strings to match.
  29943. if (BuiltinName[23] != 'd')
  29944. break;
  29945. switch (BuiltinName[24]) {
  29946. default: break;
  29947. case 'i': // 1 string to match.
  29948. return Intrinsic::hexagon_A2_addi; // "__builtin_HEXAGON_A2_addi"
  29949. case 'p': // 1 string to match.
  29950. return Intrinsic::hexagon_A2_addp; // "__builtin_HEXAGON_A2_addp"
  29951. }
  29952. break;
  29953. case 'n': // 1 string to match.
  29954. if (memcmp(BuiltinName.data()+23, "dp", 2))
  29955. break;
  29956. return Intrinsic::hexagon_A2_andp; // "__builtin_HEXAGON_A2_andp"
  29957. case 's': // 2 strings to match.
  29958. switch (BuiltinName[23]) {
  29959. default: break;
  29960. case 'l': // 1 string to match.
  29961. if (BuiltinName[24] != 'h')
  29962. break;
  29963. return Intrinsic::hexagon_A2_aslh; // "__builtin_HEXAGON_A2_aslh"
  29964. case 'r': // 1 string to match.
  29965. if (BuiltinName[24] != 'h')
  29966. break;
  29967. return Intrinsic::hexagon_A2_asrh; // "__builtin_HEXAGON_A2_asrh"
  29968. }
  29969. break;
  29970. }
  29971. break;
  29972. case 'm': // 4 strings to match.
  29973. switch (BuiltinName[22]) {
  29974. default: break;
  29975. case 'a': // 2 strings to match.
  29976. if (BuiltinName[23] != 'x')
  29977. break;
  29978. switch (BuiltinName[24]) {
  29979. default: break;
  29980. case 'p': // 1 string to match.
  29981. return Intrinsic::hexagon_A2_maxp; // "__builtin_HEXAGON_A2_maxp"
  29982. case 'u': // 1 string to match.
  29983. return Intrinsic::hexagon_A2_maxu; // "__builtin_HEXAGON_A2_maxu"
  29984. }
  29985. break;
  29986. case 'i': // 2 strings to match.
  29987. if (BuiltinName[23] != 'n')
  29988. break;
  29989. switch (BuiltinName[24]) {
  29990. default: break;
  29991. case 'p': // 1 string to match.
  29992. return Intrinsic::hexagon_A2_minp; // "__builtin_HEXAGON_A2_minp"
  29993. case 'u': // 1 string to match.
  29994. return Intrinsic::hexagon_A2_minu; // "__builtin_HEXAGON_A2_minu"
  29995. }
  29996. break;
  29997. }
  29998. break;
  29999. case 'n': // 2 strings to match.
  30000. switch (BuiltinName[22]) {
  30001. default: break;
  30002. case 'e': // 1 string to match.
  30003. if (memcmp(BuiltinName.data()+23, "gp", 2))
  30004. break;
  30005. return Intrinsic::hexagon_A2_negp; // "__builtin_HEXAGON_A2_negp"
  30006. case 'o': // 1 string to match.
  30007. if (memcmp(BuiltinName.data()+23, "tp", 2))
  30008. break;
  30009. return Intrinsic::hexagon_A2_notp; // "__builtin_HEXAGON_A2_notp"
  30010. }
  30011. break;
  30012. case 'o': // 1 string to match.
  30013. if (memcmp(BuiltinName.data()+22, "rir", 3))
  30014. break;
  30015. return Intrinsic::hexagon_A2_orir; // "__builtin_HEXAGON_A2_orir"
  30016. case 's': // 7 strings to match.
  30017. switch (BuiltinName[22]) {
  30018. default: break;
  30019. case 'a': // 2 strings to match.
  30020. if (BuiltinName[23] != 't')
  30021. break;
  30022. switch (BuiltinName[24]) {
  30023. default: break;
  30024. case 'b': // 1 string to match.
  30025. return Intrinsic::hexagon_A2_satb; // "__builtin_HEXAGON_A2_satb"
  30026. case 'h': // 1 string to match.
  30027. return Intrinsic::hexagon_A2_sath; // "__builtin_HEXAGON_A2_sath"
  30028. }
  30029. break;
  30030. case 'u': // 1 string to match.
  30031. if (memcmp(BuiltinName.data()+23, "bp", 2))
  30032. break;
  30033. return Intrinsic::hexagon_A2_subp; // "__builtin_HEXAGON_A2_subp"
  30034. case 'w': // 1 string to match.
  30035. if (memcmp(BuiltinName.data()+23, "iz", 2))
  30036. break;
  30037. return Intrinsic::hexagon_A2_swiz; // "__builtin_HEXAGON_A2_swiz"
  30038. case 'x': // 3 strings to match.
  30039. if (BuiltinName[23] != 't')
  30040. break;
  30041. switch (BuiltinName[24]) {
  30042. default: break;
  30043. case 'b': // 1 string to match.
  30044. return Intrinsic::hexagon_A2_sxtb; // "__builtin_HEXAGON_A2_sxtb"
  30045. case 'h': // 1 string to match.
  30046. return Intrinsic::hexagon_A2_sxth; // "__builtin_HEXAGON_A2_sxth"
  30047. case 'w': // 1 string to match.
  30048. return Intrinsic::hexagon_A2_sxtw; // "__builtin_HEXAGON_A2_sxtw"
  30049. }
  30050. break;
  30051. }
  30052. break;
  30053. case 't': // 1 string to match.
  30054. if (memcmp(BuiltinName.data()+22, "frp", 3))
  30055. break;
  30056. return Intrinsic::hexagon_A2_tfrp; // "__builtin_HEXAGON_A2_tfrp"
  30057. case 'x': // 1 string to match.
  30058. if (memcmp(BuiltinName.data()+22, "orp", 3))
  30059. break;
  30060. return Intrinsic::hexagon_A2_xorp; // "__builtin_HEXAGON_A2_xorp"
  30061. case 'z': // 2 strings to match.
  30062. if (memcmp(BuiltinName.data()+22, "xt", 2))
  30063. break;
  30064. switch (BuiltinName[24]) {
  30065. default: break;
  30066. case 'b': // 1 string to match.
  30067. return Intrinsic::hexagon_A2_zxtb; // "__builtin_HEXAGON_A2_zxtb"
  30068. case 'h': // 1 string to match.
  30069. return Intrinsic::hexagon_A2_zxth; // "__builtin_HEXAGON_A2_zxth"
  30070. }
  30071. break;
  30072. }
  30073. break;
  30074. case '4': // 2 strings to match.
  30075. if (BuiltinName[20] != '_')
  30076. break;
  30077. switch (BuiltinName[21]) {
  30078. default: break;
  30079. case 'a': // 1 string to match.
  30080. if (memcmp(BuiltinName.data()+22, "ndn", 3))
  30081. break;
  30082. return Intrinsic::hexagon_A4_andn; // "__builtin_HEXAGON_A4_andn"
  30083. case 'o': // 1 string to match.
  30084. if (memcmp(BuiltinName.data()+22, "rnp", 3))
  30085. break;
  30086. return Intrinsic::hexagon_A4_ornp; // "__builtin_HEXAGON_A4_ornp"
  30087. }
  30088. break;
  30089. }
  30090. break;
  30091. case 'C': // 5 strings to match.
  30092. if (memcmp(BuiltinName.data()+19, "2_", 2))
  30093. break;
  30094. switch (BuiltinName[21]) {
  30095. default: break;
  30096. case 'a': // 3 strings to match.
  30097. switch (BuiltinName[22]) {
  30098. default: break;
  30099. case 'l': // 1 string to match.
  30100. if (memcmp(BuiltinName.data()+23, "l8", 2))
  30101. break;
  30102. return Intrinsic::hexagon_C2_all8; // "__builtin_HEXAGON_C2_all8"
  30103. case 'n': // 2 strings to match.
  30104. switch (BuiltinName[23]) {
  30105. default: break;
  30106. case 'd': // 1 string to match.
  30107. if (BuiltinName[24] != 'n')
  30108. break;
  30109. return Intrinsic::hexagon_C2_andn; // "__builtin_HEXAGON_C2_andn"
  30110. case 'y': // 1 string to match.
  30111. if (BuiltinName[24] != '8')
  30112. break;
  30113. return Intrinsic::hexagon_C2_any8; // "__builtin_HEXAGON_C2_any8"
  30114. }
  30115. break;
  30116. }
  30117. break;
  30118. case 'm': // 1 string to match.
  30119. if (memcmp(BuiltinName.data()+22, "ask", 3))
  30120. break;
  30121. return Intrinsic::hexagon_C2_mask; // "__builtin_HEXAGON_C2_mask"
  30122. case 'v': // 1 string to match.
  30123. if (memcmp(BuiltinName.data()+22, "mux", 3))
  30124. break;
  30125. return Intrinsic::hexagon_C2_vmux; // "__builtin_HEXAGON_C2_vmux"
  30126. }
  30127. break;
  30128. case 'M': // 3 strings to match.
  30129. if (memcmp(BuiltinName.data()+19, "2_", 2))
  30130. break;
  30131. switch (BuiltinName[21]) {
  30132. default: break;
  30133. case 'a': // 1 string to match.
  30134. if (memcmp(BuiltinName.data()+22, "cci", 3))
  30135. break;
  30136. return Intrinsic::hexagon_M2_acci; // "__builtin_HEXAGON_M2_acci"
  30137. case 'm': // 2 strings to match.
  30138. switch (BuiltinName[22]) {
  30139. default: break;
  30140. case 'a': // 1 string to match.
  30141. if (memcmp(BuiltinName.data()+23, "ci", 2))
  30142. break;
  30143. return Intrinsic::hexagon_M2_maci; // "__builtin_HEXAGON_M2_maci"
  30144. case 'p': // 1 string to match.
  30145. if (memcmp(BuiltinName.data()+23, "yi", 2))
  30146. break;
  30147. return Intrinsic::hexagon_M2_mpyi; // "__builtin_HEXAGON_M2_mpyi"
  30148. }
  30149. break;
  30150. }
  30151. break;
  30152. case 'S': // 8 strings to match.
  30153. switch (BuiltinName[19]) {
  30154. default: break;
  30155. case '2': // 7 strings to match.
  30156. if (BuiltinName[20] != '_')
  30157. break;
  30158. switch (BuiltinName[21]) {
  30159. default: break;
  30160. case 'b': // 1 string to match.
  30161. if (memcmp(BuiltinName.data()+22, "rev", 3))
  30162. break;
  30163. return Intrinsic::hexagon_S2_brev; // "__builtin_HEXAGON_S2_brev"
  30164. case 'c': // 5 strings to match.
  30165. switch (BuiltinName[22]) {
  30166. default: break;
  30167. case 'l': // 3 strings to match.
  30168. switch (BuiltinName[23]) {
  30169. default: break;
  30170. case '0': // 1 string to match.
  30171. if (BuiltinName[24] != 'p')
  30172. break;
  30173. return Intrinsic::hexagon_S2_cl0p; // "__builtin_HEXAGON_S2_cl0p"
  30174. case '1': // 1 string to match.
  30175. if (BuiltinName[24] != 'p')
  30176. break;
  30177. return Intrinsic::hexagon_S2_cl1p; // "__builtin_HEXAGON_S2_cl1p"
  30178. case 'b': // 1 string to match.
  30179. if (BuiltinName[24] != 'p')
  30180. break;
  30181. return Intrinsic::hexagon_S2_clbp; // "__builtin_HEXAGON_S2_clbp"
  30182. }
  30183. break;
  30184. case 't': // 2 strings to match.
  30185. switch (BuiltinName[23]) {
  30186. default: break;
  30187. case '0': // 1 string to match.
  30188. if (BuiltinName[24] != 'p')
  30189. break;
  30190. return Intrinsic::hexagon_S2_ct0p; // "__builtin_HEXAGON_S2_ct0p"
  30191. case '1': // 1 string to match.
  30192. if (BuiltinName[24] != 'p')
  30193. break;
  30194. return Intrinsic::hexagon_S2_ct1p; // "__builtin_HEXAGON_S2_ct1p"
  30195. }
  30196. break;
  30197. }
  30198. break;
  30199. case 'l': // 1 string to match.
  30200. if (memcmp(BuiltinName.data()+22, "fsp", 3))
  30201. break;
  30202. return Intrinsic::hexagon_S2_lfsp; // "__builtin_HEXAGON_S2_lfsp"
  30203. }
  30204. break;
  30205. case '4': // 1 string to match.
  30206. if (memcmp(BuiltinName.data()+20, "_lsli", 5))
  30207. break;
  30208. return Intrinsic::hexagon_S4_lsli; // "__builtin_HEXAGON_S4_lsli"
  30209. }
  30210. break;
  30211. }
  30212. break;
  30213. case 26: // 58 strings to match.
  30214. if (memcmp(BuiltinName.data()+0, "__builtin_", 10))
  30215. break;
  30216. switch (BuiltinName[10]) {
  30217. default: break;
  30218. case 'H': // 57 strings to match.
  30219. if (memcmp(BuiltinName.data()+11, "EXAGON_", 7))
  30220. break;
  30221. switch (BuiltinName[18]) {
  30222. default: break;
  30223. case 'A': // 27 strings to match.
  30224. switch (BuiltinName[19]) {
  30225. default: break;
  30226. case '2': // 26 strings to match.
  30227. if (BuiltinName[20] != '_')
  30228. break;
  30229. switch (BuiltinName[21]) {
  30230. default: break;
  30231. case 'a': // 2 strings to match.
  30232. switch (BuiltinName[22]) {
  30233. default: break;
  30234. case 'd': // 1 string to match.
  30235. if (memcmp(BuiltinName.data()+23, "dsp", 3))
  30236. break;
  30237. return Intrinsic::hexagon_A2_addsp; // "__builtin_HEXAGON_A2_addsp"
  30238. case 'n': // 1 string to match.
  30239. if (memcmp(BuiltinName.data()+23, "dir", 3))
  30240. break;
  30241. return Intrinsic::hexagon_A2_andir; // "__builtin_HEXAGON_A2_andir"
  30242. }
  30243. break;
  30244. case 'm': // 2 strings to match.
  30245. switch (BuiltinName[22]) {
  30246. default: break;
  30247. case 'a': // 1 string to match.
  30248. if (memcmp(BuiltinName.data()+23, "xup", 3))
  30249. break;
  30250. return Intrinsic::hexagon_A2_maxup; // "__builtin_HEXAGON_A2_maxup"
  30251. case 'i': // 1 string to match.
  30252. if (memcmp(BuiltinName.data()+23, "nup", 3))
  30253. break;
  30254. return Intrinsic::hexagon_A2_minup; // "__builtin_HEXAGON_A2_minup"
  30255. }
  30256. break;
  30257. case 's': // 3 strings to match.
  30258. switch (BuiltinName[22]) {
  30259. default: break;
  30260. case 'a': // 2 strings to match.
  30261. if (memcmp(BuiltinName.data()+23, "tu", 2))
  30262. break;
  30263. switch (BuiltinName[25]) {
  30264. default: break;
  30265. case 'b': // 1 string to match.
  30266. return Intrinsic::hexagon_A2_satub; // "__builtin_HEXAGON_A2_satub"
  30267. case 'h': // 1 string to match.
  30268. return Intrinsic::hexagon_A2_satuh; // "__builtin_HEXAGON_A2_satuh"
  30269. }
  30270. break;
  30271. case 'u': // 1 string to match.
  30272. if (memcmp(BuiltinName.data()+23, "bri", 3))
  30273. break;
  30274. return Intrinsic::hexagon_A2_subri; // "__builtin_HEXAGON_A2_subri"
  30275. }
  30276. break;
  30277. case 't': // 4 strings to match.
  30278. if (memcmp(BuiltinName.data()+22, "fr", 2))
  30279. break;
  30280. switch (BuiltinName[24]) {
  30281. default: break;
  30282. case 'i': // 2 strings to match.
  30283. switch (BuiltinName[25]) {
  30284. default: break;
  30285. case 'h': // 1 string to match.
  30286. return Intrinsic::hexagon_A2_tfrih; // "__builtin_HEXAGON_A2_tfrih"
  30287. case 'l': // 1 string to match.
  30288. return Intrinsic::hexagon_A2_tfril; // "__builtin_HEXAGON_A2_tfril"
  30289. }
  30290. break;
  30291. case 'p': // 1 string to match.
  30292. if (BuiltinName[25] != 'i')
  30293. break;
  30294. return Intrinsic::hexagon_A2_tfrpi; // "__builtin_HEXAGON_A2_tfrpi"
  30295. case 's': // 1 string to match.
  30296. if (BuiltinName[25] != 'i')
  30297. break;
  30298. return Intrinsic::hexagon_A2_tfrsi; // "__builtin_HEXAGON_A2_tfrsi"
  30299. }
  30300. break;
  30301. case 'v': // 15 strings to match.
  30302. switch (BuiltinName[22]) {
  30303. default: break;
  30304. case 'a': // 6 strings to match.
  30305. switch (BuiltinName[23]) {
  30306. default: break;
  30307. case 'b': // 2 strings to match.
  30308. if (BuiltinName[24] != 's')
  30309. break;
  30310. switch (BuiltinName[25]) {
  30311. default: break;
  30312. case 'h': // 1 string to match.
  30313. return Intrinsic::hexagon_A2_vabsh; // "__builtin_HEXAGON_A2_vabsh"
  30314. case 'w': // 1 string to match.
  30315. return Intrinsic::hexagon_A2_vabsw; // "__builtin_HEXAGON_A2_vabsw"
  30316. }
  30317. break;
  30318. case 'd': // 2 strings to match.
  30319. if (BuiltinName[24] != 'd')
  30320. break;
  30321. switch (BuiltinName[25]) {
  30322. default: break;
  30323. case 'h': // 1 string to match.
  30324. return Intrinsic::hexagon_A2_vaddh; // "__builtin_HEXAGON_A2_vaddh"
  30325. case 'w': // 1 string to match.
  30326. return Intrinsic::hexagon_A2_vaddw; // "__builtin_HEXAGON_A2_vaddw"
  30327. }
  30328. break;
  30329. case 'v': // 2 strings to match.
  30330. if (BuiltinName[24] != 'g')
  30331. break;
  30332. switch (BuiltinName[25]) {
  30333. default: break;
  30334. case 'h': // 1 string to match.
  30335. return Intrinsic::hexagon_A2_vavgh; // "__builtin_HEXAGON_A2_vavgh"
  30336. case 'w': // 1 string to match.
  30337. return Intrinsic::hexagon_A2_vavgw; // "__builtin_HEXAGON_A2_vavgw"
  30338. }
  30339. break;
  30340. }
  30341. break;
  30342. case 'c': // 1 string to match.
  30343. if (memcmp(BuiltinName.data()+23, "onj", 3))
  30344. break;
  30345. return Intrinsic::hexagon_A2_vconj; // "__builtin_HEXAGON_A2_vconj"
  30346. case 'm': // 6 strings to match.
  30347. switch (BuiltinName[23]) {
  30348. default: break;
  30349. case 'a': // 3 strings to match.
  30350. if (BuiltinName[24] != 'x')
  30351. break;
  30352. switch (BuiltinName[25]) {
  30353. default: break;
  30354. case 'b': // 1 string to match.
  30355. return Intrinsic::hexagon_A2_vmaxb; // "__builtin_HEXAGON_A2_vmaxb"
  30356. case 'h': // 1 string to match.
  30357. return Intrinsic::hexagon_A2_vmaxh; // "__builtin_HEXAGON_A2_vmaxh"
  30358. case 'w': // 1 string to match.
  30359. return Intrinsic::hexagon_A2_vmaxw; // "__builtin_HEXAGON_A2_vmaxw"
  30360. }
  30361. break;
  30362. case 'i': // 3 strings to match.
  30363. if (BuiltinName[24] != 'n')
  30364. break;
  30365. switch (BuiltinName[25]) {
  30366. default: break;
  30367. case 'b': // 1 string to match.
  30368. return Intrinsic::hexagon_A2_vminb; // "__builtin_HEXAGON_A2_vminb"
  30369. case 'h': // 1 string to match.
  30370. return Intrinsic::hexagon_A2_vminh; // "__builtin_HEXAGON_A2_vminh"
  30371. case 'w': // 1 string to match.
  30372. return Intrinsic::hexagon_A2_vminw; // "__builtin_HEXAGON_A2_vminw"
  30373. }
  30374. break;
  30375. }
  30376. break;
  30377. case 's': // 2 strings to match.
  30378. if (memcmp(BuiltinName.data()+23, "ub", 2))
  30379. break;
  30380. switch (BuiltinName[25]) {
  30381. default: break;
  30382. case 'h': // 1 string to match.
  30383. return Intrinsic::hexagon_A2_vsubh; // "__builtin_HEXAGON_A2_vsubh"
  30384. case 'w': // 1 string to match.
  30385. return Intrinsic::hexagon_A2_vsubw; // "__builtin_HEXAGON_A2_vsubw"
  30386. }
  30387. break;
  30388. }
  30389. break;
  30390. }
  30391. break;
  30392. case '4': // 1 string to match.
  30393. if (memcmp(BuiltinName.data()+20, "_andnp", 6))
  30394. break;
  30395. return Intrinsic::hexagon_A4_andnp; // "__builtin_HEXAGON_A4_andnp"
  30396. }
  30397. break;
  30398. case 'C': // 9 strings to match.
  30399. switch (BuiltinName[19]) {
  30400. default: break;
  30401. case '2': // 8 strings to match.
  30402. if (BuiltinName[20] != '_')
  30403. break;
  30404. switch (BuiltinName[21]) {
  30405. default: break;
  30406. case 'c': // 3 strings to match.
  30407. if (memcmp(BuiltinName.data()+22, "mp", 2))
  30408. break;
  30409. switch (BuiltinName[24]) {
  30410. default: break;
  30411. case 'e': // 1 string to match.
  30412. if (BuiltinName[25] != 'q')
  30413. break;
  30414. return Intrinsic::hexagon_C2_cmpeq; // "__builtin_HEXAGON_C2_cmpeq"
  30415. case 'g': // 1 string to match.
  30416. if (BuiltinName[25] != 't')
  30417. break;
  30418. return Intrinsic::hexagon_C2_cmpgt; // "__builtin_HEXAGON_C2_cmpgt"
  30419. case 'l': // 1 string to match.
  30420. if (BuiltinName[25] != 't')
  30421. break;
  30422. return Intrinsic::hexagon_C2_cmplt; // "__builtin_HEXAGON_C2_cmplt"
  30423. }
  30424. break;
  30425. case 'm': // 3 strings to match.
  30426. if (memcmp(BuiltinName.data()+22, "ux", 2))
  30427. break;
  30428. switch (BuiltinName[24]) {
  30429. default: break;
  30430. case 'i': // 2 strings to match.
  30431. switch (BuiltinName[25]) {
  30432. default: break;
  30433. case 'i': // 1 string to match.
  30434. return Intrinsic::hexagon_C2_muxii; // "__builtin_HEXAGON_C2_muxii"
  30435. case 'r': // 1 string to match.
  30436. return Intrinsic::hexagon_C2_muxir; // "__builtin_HEXAGON_C2_muxir"
  30437. }
  30438. break;
  30439. case 'r': // 1 string to match.
  30440. if (BuiltinName[25] != 'i')
  30441. break;
  30442. return Intrinsic::hexagon_C2_muxri; // "__builtin_HEXAGON_C2_muxri"
  30443. }
  30444. break;
  30445. case 't': // 2 strings to match.
  30446. if (memcmp(BuiltinName.data()+22, "fr", 2))
  30447. break;
  30448. switch (BuiltinName[24]) {
  30449. default: break;
  30450. case 'p': // 1 string to match.
  30451. if (BuiltinName[25] != 'r')
  30452. break;
  30453. return Intrinsic::hexagon_C2_tfrpr; // "__builtin_HEXAGON_C2_tfrpr"
  30454. case 'r': // 1 string to match.
  30455. if (BuiltinName[25] != 'p')
  30456. break;
  30457. return Intrinsic::hexagon_C2_tfrrp; // "__builtin_HEXAGON_C2_tfrrp"
  30458. }
  30459. break;
  30460. }
  30461. break;
  30462. case '4': // 1 string to match.
  30463. if (memcmp(BuiltinName.data()+20, "_or_or", 6))
  30464. break;
  30465. return Intrinsic::hexagon_C4_or_or; // "__builtin_HEXAGON_C4_or_or"
  30466. }
  30467. break;
  30468. case 'F': // 14 strings to match.
  30469. if (memcmp(BuiltinName.data()+19, "2_", 2))
  30470. break;
  30471. switch (BuiltinName[21]) {
  30472. default: break;
  30473. case 'd': // 7 strings to match.
  30474. if (BuiltinName[22] != 'f')
  30475. break;
  30476. switch (BuiltinName[23]) {
  30477. default: break;
  30478. case 'a': // 1 string to match.
  30479. if (memcmp(BuiltinName.data()+24, "dd", 2))
  30480. break;
  30481. return Intrinsic::hexagon_F2_dfadd; // "__builtin_HEXAGON_F2_dfadd"
  30482. case 'f': // 2 strings to match.
  30483. if (BuiltinName[24] != 'm')
  30484. break;
  30485. switch (BuiltinName[25]) {
  30486. default: break;
  30487. case 'a': // 1 string to match.
  30488. return Intrinsic::hexagon_F2_dffma; // "__builtin_HEXAGON_F2_dffma"
  30489. case 's': // 1 string to match.
  30490. return Intrinsic::hexagon_F2_dffms; // "__builtin_HEXAGON_F2_dffms"
  30491. }
  30492. break;
  30493. case 'm': // 3 strings to match.
  30494. switch (BuiltinName[24]) {
  30495. default: break;
  30496. case 'a': // 1 string to match.
  30497. if (BuiltinName[25] != 'x')
  30498. break;
  30499. return Intrinsic::hexagon_F2_dfmax; // "__builtin_HEXAGON_F2_dfmax"
  30500. case 'i': // 1 string to match.
  30501. if (BuiltinName[25] != 'n')
  30502. break;
  30503. return Intrinsic::hexagon_F2_dfmin; // "__builtin_HEXAGON_F2_dfmin"
  30504. case 'p': // 1 string to match.
  30505. if (BuiltinName[25] != 'y')
  30506. break;
  30507. return Intrinsic::hexagon_F2_dfmpy; // "__builtin_HEXAGON_F2_dfmpy"
  30508. }
  30509. break;
  30510. case 's': // 1 string to match.
  30511. if (memcmp(BuiltinName.data()+24, "ub", 2))
  30512. break;
  30513. return Intrinsic::hexagon_F2_dfsub; // "__builtin_HEXAGON_F2_dfsub"
  30514. }
  30515. break;
  30516. case 's': // 7 strings to match.
  30517. if (BuiltinName[22] != 'f')
  30518. break;
  30519. switch (BuiltinName[23]) {
  30520. default: break;
  30521. case 'a': // 1 string to match.
  30522. if (memcmp(BuiltinName.data()+24, "dd", 2))
  30523. break;
  30524. return Intrinsic::hexagon_F2_sfadd; // "__builtin_HEXAGON_F2_sfadd"
  30525. case 'f': // 2 strings to match.
  30526. if (BuiltinName[24] != 'm')
  30527. break;
  30528. switch (BuiltinName[25]) {
  30529. default: break;
  30530. case 'a': // 1 string to match.
  30531. return Intrinsic::hexagon_F2_sffma; // "__builtin_HEXAGON_F2_sffma"
  30532. case 's': // 1 string to match.
  30533. return Intrinsic::hexagon_F2_sffms; // "__builtin_HEXAGON_F2_sffms"
  30534. }
  30535. break;
  30536. case 'm': // 3 strings to match.
  30537. switch (BuiltinName[24]) {
  30538. default: break;
  30539. case 'a': // 1 string to match.
  30540. if (BuiltinName[25] != 'x')
  30541. break;
  30542. return Intrinsic::hexagon_F2_sfmax; // "__builtin_HEXAGON_F2_sfmax"
  30543. case 'i': // 1 string to match.
  30544. if (BuiltinName[25] != 'n')
  30545. break;
  30546. return Intrinsic::hexagon_F2_sfmin; // "__builtin_HEXAGON_F2_sfmin"
  30547. case 'p': // 1 string to match.
  30548. if (BuiltinName[25] != 'y')
  30549. break;
  30550. return Intrinsic::hexagon_F2_sfmpy; // "__builtin_HEXAGON_F2_sfmpy"
  30551. }
  30552. break;
  30553. case 's': // 1 string to match.
  30554. if (memcmp(BuiltinName.data()+24, "ub", 2))
  30555. break;
  30556. return Intrinsic::hexagon_F2_sfsub; // "__builtin_HEXAGON_F2_sfsub"
  30557. }
  30558. break;
  30559. }
  30560. break;
  30561. case 'M': // 6 strings to match.
  30562. switch (BuiltinName[19]) {
  30563. default: break;
  30564. case '2': // 4 strings to match.
  30565. if (BuiltinName[20] != '_')
  30566. break;
  30567. switch (BuiltinName[21]) {
  30568. default: break;
  30569. case 'a': // 1 string to match.
  30570. if (memcmp(BuiltinName.data()+22, "ccii", 4))
  30571. break;
  30572. return Intrinsic::hexagon_M2_accii; // "__builtin_HEXAGON_M2_accii"
  30573. case 'm': // 1 string to match.
  30574. if (memcmp(BuiltinName.data()+22, "pyui", 4))
  30575. break;
  30576. return Intrinsic::hexagon_M2_mpyui; // "__builtin_HEXAGON_M2_mpyui"
  30577. case 'n': // 1 string to match.
  30578. if (memcmp(BuiltinName.data()+22, "acci", 4))
  30579. break;
  30580. return Intrinsic::hexagon_M2_nacci; // "__builtin_HEXAGON_M2_nacci"
  30581. case 'v': // 1 string to match.
  30582. if (memcmp(BuiltinName.data()+22, "mac2", 4))
  30583. break;
  30584. return Intrinsic::hexagon_M2_vmac2; // "__builtin_HEXAGON_M2_vmac2"
  30585. }
  30586. break;
  30587. case '4': // 2 strings to match.
  30588. if (BuiltinName[20] != '_')
  30589. break;
  30590. switch (BuiltinName[21]) {
  30591. default: break;
  30592. case 'o': // 1 string to match.
  30593. if (memcmp(BuiltinName.data()+22, "r_or", 4))
  30594. break;
  30595. return Intrinsic::hexagon_M4_or_or; // "__builtin_HEXAGON_M4_or_or"
  30596. case 'p': // 1 string to match.
  30597. if (memcmp(BuiltinName.data()+22, "mpyw", 4))
  30598. break;
  30599. return Intrinsic::hexagon_M4_pmpyw; // "__builtin_HEXAGON_M4_pmpyw"
  30600. }
  30601. break;
  30602. }
  30603. break;
  30604. case 'S': // 1 string to match.
  30605. if (memcmp(BuiltinName.data()+19, "2_brevp", 7))
  30606. break;
  30607. return Intrinsic::hexagon_S2_brevp; // "__builtin_HEXAGON_S2_brevp"
  30608. }
  30609. break;
  30610. case 'S': // 1 string to match.
  30611. if (memcmp(BuiltinName.data()+11, "I_to_SXTHI_asrh", 15))
  30612. break;
  30613. return Intrinsic::hexagon_SI_to_SXTHI_asrh; // "__builtin_SI_to_SXTHI_asrh"
  30614. }
  30615. break;
  30616. case 27: // 70 strings to match.
  30617. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  30618. break;
  30619. switch (BuiltinName[18]) {
  30620. default: break;
  30621. case 'A': // 35 strings to match.
  30622. switch (BuiltinName[19]) {
  30623. default: break;
  30624. case '2': // 26 strings to match.
  30625. if (BuiltinName[20] != '_')
  30626. break;
  30627. switch (BuiltinName[21]) {
  30628. default: break;
  30629. case 'a': // 2 strings to match.
  30630. switch (BuiltinName[22]) {
  30631. default: break;
  30632. case 'b': // 1 string to match.
  30633. if (memcmp(BuiltinName.data()+23, "ssat", 4))
  30634. break;
  30635. return Intrinsic::hexagon_A2_abssat; // "__builtin_HEXAGON_A2_abssat"
  30636. case 'd': // 1 string to match.
  30637. if (memcmp(BuiltinName.data()+23, "dsat", 4))
  30638. break;
  30639. return Intrinsic::hexagon_A2_addsat; // "__builtin_HEXAGON_A2_addsat"
  30640. }
  30641. break;
  30642. case 'n': // 1 string to match.
  30643. if (memcmp(BuiltinName.data()+22, "egsat", 5))
  30644. break;
  30645. return Intrinsic::hexagon_A2_negsat; // "__builtin_HEXAGON_A2_negsat"
  30646. case 's': // 4 strings to match.
  30647. switch (BuiltinName[22]) {
  30648. default: break;
  30649. case 'u': // 1 string to match.
  30650. if (memcmp(BuiltinName.data()+23, "bsat", 4))
  30651. break;
  30652. return Intrinsic::hexagon_A2_subsat; // "__builtin_HEXAGON_A2_subsat"
  30653. case 'v': // 3 strings to match.
  30654. switch (BuiltinName[23]) {
  30655. default: break;
  30656. case 'a': // 2 strings to match.
  30657. switch (BuiltinName[24]) {
  30658. default: break;
  30659. case 'd': // 1 string to match.
  30660. if (memcmp(BuiltinName.data()+25, "dh", 2))
  30661. break;
  30662. return Intrinsic::hexagon_A2_svaddh; // "__builtin_HEXAGON_A2_svaddh"
  30663. case 'v': // 1 string to match.
  30664. if (memcmp(BuiltinName.data()+25, "gh", 2))
  30665. break;
  30666. return Intrinsic::hexagon_A2_svavgh; // "__builtin_HEXAGON_A2_svavgh"
  30667. }
  30668. break;
  30669. case 's': // 1 string to match.
  30670. if (memcmp(BuiltinName.data()+24, "ubh", 3))
  30671. break;
  30672. return Intrinsic::hexagon_A2_svsubh; // "__builtin_HEXAGON_A2_svsubh"
  30673. }
  30674. break;
  30675. }
  30676. break;
  30677. case 'v': // 19 strings to match.
  30678. switch (BuiltinName[22]) {
  30679. default: break;
  30680. case 'a': // 8 strings to match.
  30681. switch (BuiltinName[23]) {
  30682. default: break;
  30683. case 'd': // 3 strings to match.
  30684. if (BuiltinName[24] != 'd')
  30685. break;
  30686. switch (BuiltinName[25]) {
  30687. default: break;
  30688. case 'h': // 1 string to match.
  30689. if (BuiltinName[26] != 's')
  30690. break;
  30691. return Intrinsic::hexagon_A2_vaddhs; // "__builtin_HEXAGON_A2_vaddhs"
  30692. case 'u': // 1 string to match.
  30693. if (BuiltinName[26] != 'b')
  30694. break;
  30695. return Intrinsic::hexagon_A2_vaddub; // "__builtin_HEXAGON_A2_vaddub"
  30696. case 'w': // 1 string to match.
  30697. if (BuiltinName[26] != 's')
  30698. break;
  30699. return Intrinsic::hexagon_A2_vaddws; // "__builtin_HEXAGON_A2_vaddws"
  30700. }
  30701. break;
  30702. case 'v': // 5 strings to match.
  30703. if (BuiltinName[24] != 'g')
  30704. break;
  30705. switch (BuiltinName[25]) {
  30706. default: break;
  30707. case 'h': // 1 string to match.
  30708. if (BuiltinName[26] != 'r')
  30709. break;
  30710. return Intrinsic::hexagon_A2_vavghr; // "__builtin_HEXAGON_A2_vavghr"
  30711. case 'u': // 3 strings to match.
  30712. switch (BuiltinName[26]) {
  30713. default: break;
  30714. case 'b': // 1 string to match.
  30715. return Intrinsic::hexagon_A2_vavgub; // "__builtin_HEXAGON_A2_vavgub"
  30716. case 'h': // 1 string to match.
  30717. return Intrinsic::hexagon_A2_vavguh; // "__builtin_HEXAGON_A2_vavguh"
  30718. case 'w': // 1 string to match.
  30719. return Intrinsic::hexagon_A2_vavguw; // "__builtin_HEXAGON_A2_vavguw"
  30720. }
  30721. break;
  30722. case 'w': // 1 string to match.
  30723. if (BuiltinName[26] != 'r')
  30724. break;
  30725. return Intrinsic::hexagon_A2_vavgwr; // "__builtin_HEXAGON_A2_vavgwr"
  30726. }
  30727. break;
  30728. }
  30729. break;
  30730. case 'm': // 6 strings to match.
  30731. switch (BuiltinName[23]) {
  30732. default: break;
  30733. case 'a': // 3 strings to match.
  30734. if (memcmp(BuiltinName.data()+24, "xu", 2))
  30735. break;
  30736. switch (BuiltinName[26]) {
  30737. default: break;
  30738. case 'b': // 1 string to match.
  30739. return Intrinsic::hexagon_A2_vmaxub; // "__builtin_HEXAGON_A2_vmaxub"
  30740. case 'h': // 1 string to match.
  30741. return Intrinsic::hexagon_A2_vmaxuh; // "__builtin_HEXAGON_A2_vmaxuh"
  30742. case 'w': // 1 string to match.
  30743. return Intrinsic::hexagon_A2_vmaxuw; // "__builtin_HEXAGON_A2_vmaxuw"
  30744. }
  30745. break;
  30746. case 'i': // 3 strings to match.
  30747. if (memcmp(BuiltinName.data()+24, "nu", 2))
  30748. break;
  30749. switch (BuiltinName[26]) {
  30750. default: break;
  30751. case 'b': // 1 string to match.
  30752. return Intrinsic::hexagon_A2_vminub; // "__builtin_HEXAGON_A2_vminub"
  30753. case 'h': // 1 string to match.
  30754. return Intrinsic::hexagon_A2_vminuh; // "__builtin_HEXAGON_A2_vminuh"
  30755. case 'w': // 1 string to match.
  30756. return Intrinsic::hexagon_A2_vminuw; // "__builtin_HEXAGON_A2_vminuw"
  30757. }
  30758. break;
  30759. }
  30760. break;
  30761. case 'n': // 2 strings to match.
  30762. if (memcmp(BuiltinName.data()+23, "avg", 3))
  30763. break;
  30764. switch (BuiltinName[26]) {
  30765. default: break;
  30766. case 'h': // 1 string to match.
  30767. return Intrinsic::hexagon_A2_vnavgh; // "__builtin_HEXAGON_A2_vnavgh"
  30768. case 'w': // 1 string to match.
  30769. return Intrinsic::hexagon_A2_vnavgw; // "__builtin_HEXAGON_A2_vnavgw"
  30770. }
  30771. break;
  30772. case 's': // 3 strings to match.
  30773. if (memcmp(BuiltinName.data()+23, "ub", 2))
  30774. break;
  30775. switch (BuiltinName[25]) {
  30776. default: break;
  30777. case 'h': // 1 string to match.
  30778. if (BuiltinName[26] != 's')
  30779. break;
  30780. return Intrinsic::hexagon_A2_vsubhs; // "__builtin_HEXAGON_A2_vsubhs"
  30781. case 'u': // 1 string to match.
  30782. if (BuiltinName[26] != 'b')
  30783. break;
  30784. return Intrinsic::hexagon_A2_vsubub; // "__builtin_HEXAGON_A2_vsubub"
  30785. case 'w': // 1 string to match.
  30786. if (BuiltinName[26] != 's')
  30787. break;
  30788. return Intrinsic::hexagon_A2_vsubws; // "__builtin_HEXAGON_A2_vsubws"
  30789. }
  30790. break;
  30791. }
  30792. break;
  30793. }
  30794. break;
  30795. case '4': // 9 strings to match.
  30796. if (BuiltinName[20] != '_')
  30797. break;
  30798. switch (BuiltinName[21]) {
  30799. default: break;
  30800. case 'c': // 4 strings to match.
  30801. if (memcmp(BuiltinName.data()+22, "mp", 2))
  30802. break;
  30803. switch (BuiltinName[24]) {
  30804. default: break;
  30805. case 'b': // 2 strings to match.
  30806. switch (BuiltinName[25]) {
  30807. default: break;
  30808. case 'e': // 1 string to match.
  30809. if (BuiltinName[26] != 'q')
  30810. break;
  30811. return Intrinsic::hexagon_A4_cmpbeq; // "__builtin_HEXAGON_A4_cmpbeq"
  30812. case 'g': // 1 string to match.
  30813. if (BuiltinName[26] != 't')
  30814. break;
  30815. return Intrinsic::hexagon_A4_cmpbgt; // "__builtin_HEXAGON_A4_cmpbgt"
  30816. }
  30817. break;
  30818. case 'h': // 2 strings to match.
  30819. switch (BuiltinName[25]) {
  30820. default: break;
  30821. case 'e': // 1 string to match.
  30822. if (BuiltinName[26] != 'q')
  30823. break;
  30824. return Intrinsic::hexagon_A4_cmpheq; // "__builtin_HEXAGON_A4_cmpheq"
  30825. case 'g': // 1 string to match.
  30826. if (BuiltinName[26] != 't')
  30827. break;
  30828. return Intrinsic::hexagon_A4_cmphgt; // "__builtin_HEXAGON_A4_cmphgt"
  30829. }
  30830. break;
  30831. }
  30832. break;
  30833. case 'r': // 1 string to match.
  30834. if (memcmp(BuiltinName.data()+22, "cmpeq", 5))
  30835. break;
  30836. return Intrinsic::hexagon_A4_rcmpeq; // "__builtin_HEXAGON_A4_rcmpeq"
  30837. case 'v': // 4 strings to match.
  30838. if (memcmp(BuiltinName.data()+22, "rm", 2))
  30839. break;
  30840. switch (BuiltinName[24]) {
  30841. default: break;
  30842. case 'a': // 2 strings to match.
  30843. if (BuiltinName[25] != 'x')
  30844. break;
  30845. switch (BuiltinName[26]) {
  30846. default: break;
  30847. case 'h': // 1 string to match.
  30848. return Intrinsic::hexagon_A4_vrmaxh; // "__builtin_HEXAGON_A4_vrmaxh"
  30849. case 'w': // 1 string to match.
  30850. return Intrinsic::hexagon_A4_vrmaxw; // "__builtin_HEXAGON_A4_vrmaxw"
  30851. }
  30852. break;
  30853. case 'i': // 2 strings to match.
  30854. if (BuiltinName[25] != 'n')
  30855. break;
  30856. switch (BuiltinName[26]) {
  30857. default: break;
  30858. case 'h': // 1 string to match.
  30859. return Intrinsic::hexagon_A4_vrminh; // "__builtin_HEXAGON_A4_vrminh"
  30860. case 'w': // 1 string to match.
  30861. return Intrinsic::hexagon_A4_vrminw; // "__builtin_HEXAGON_A4_vrminw"
  30862. }
  30863. break;
  30864. }
  30865. break;
  30866. }
  30867. break;
  30868. }
  30869. break;
  30870. case 'C': // 12 strings to match.
  30871. switch (BuiltinName[19]) {
  30872. default: break;
  30873. case '2': // 7 strings to match.
  30874. if (memcmp(BuiltinName.data()+20, "_cmp", 4))
  30875. break;
  30876. switch (BuiltinName[24]) {
  30877. default: break;
  30878. case 'e': // 2 strings to match.
  30879. if (BuiltinName[25] != 'q')
  30880. break;
  30881. switch (BuiltinName[26]) {
  30882. default: break;
  30883. case 'i': // 1 string to match.
  30884. return Intrinsic::hexagon_C2_cmpeqi; // "__builtin_HEXAGON_C2_cmpeqi"
  30885. case 'p': // 1 string to match.
  30886. return Intrinsic::hexagon_C2_cmpeqp; // "__builtin_HEXAGON_C2_cmpeqp"
  30887. }
  30888. break;
  30889. case 'g': // 4 strings to match.
  30890. switch (BuiltinName[25]) {
  30891. default: break;
  30892. case 'e': // 1 string to match.
  30893. if (BuiltinName[26] != 'i')
  30894. break;
  30895. return Intrinsic::hexagon_C2_cmpgei; // "__builtin_HEXAGON_C2_cmpgei"
  30896. case 't': // 3 strings to match.
  30897. switch (BuiltinName[26]) {
  30898. default: break;
  30899. case 'i': // 1 string to match.
  30900. return Intrinsic::hexagon_C2_cmpgti; // "__builtin_HEXAGON_C2_cmpgti"
  30901. case 'p': // 1 string to match.
  30902. return Intrinsic::hexagon_C2_cmpgtp; // "__builtin_HEXAGON_C2_cmpgtp"
  30903. case 'u': // 1 string to match.
  30904. return Intrinsic::hexagon_C2_cmpgtu; // "__builtin_HEXAGON_C2_cmpgtu"
  30905. }
  30906. break;
  30907. }
  30908. break;
  30909. case 'l': // 1 string to match.
  30910. if (memcmp(BuiltinName.data()+25, "tu", 2))
  30911. break;
  30912. return Intrinsic::hexagon_C2_cmpltu; // "__builtin_HEXAGON_C2_cmpltu"
  30913. }
  30914. break;
  30915. case '4': // 5 strings to match.
  30916. if (BuiltinName[20] != '_')
  30917. break;
  30918. switch (BuiltinName[21]) {
  30919. default: break;
  30920. case 'a': // 1 string to match.
  30921. if (memcmp(BuiltinName.data()+22, "nd_or", 5))
  30922. break;
  30923. return Intrinsic::hexagon_C4_and_or; // "__builtin_HEXAGON_C4_and_or"
  30924. case 'c': // 2 strings to match.
  30925. if (memcmp(BuiltinName.data()+22, "mp", 2))
  30926. break;
  30927. switch (BuiltinName[24]) {
  30928. default: break;
  30929. case 'l': // 1 string to match.
  30930. if (memcmp(BuiltinName.data()+25, "te", 2))
  30931. break;
  30932. return Intrinsic::hexagon_C4_cmplte; // "__builtin_HEXAGON_C4_cmplte"
  30933. case 'n': // 1 string to match.
  30934. if (memcmp(BuiltinName.data()+25, "eq", 2))
  30935. break;
  30936. return Intrinsic::hexagon_C4_cmpneq; // "__builtin_HEXAGON_C4_cmpneq"
  30937. }
  30938. break;
  30939. case 'o': // 2 strings to match.
  30940. if (memcmp(BuiltinName.data()+22, "r_", 2))
  30941. break;
  30942. switch (BuiltinName[24]) {
  30943. default: break;
  30944. case 'a': // 1 string to match.
  30945. if (memcmp(BuiltinName.data()+25, "nd", 2))
  30946. break;
  30947. return Intrinsic::hexagon_C4_or_and; // "__builtin_HEXAGON_C4_or_and"
  30948. case 'o': // 1 string to match.
  30949. if (memcmp(BuiltinName.data()+25, "rn", 2))
  30950. break;
  30951. return Intrinsic::hexagon_C4_or_orn; // "__builtin_HEXAGON_C4_or_orn"
  30952. }
  30953. break;
  30954. }
  30955. break;
  30956. }
  30957. break;
  30958. case 'M': // 12 strings to match.
  30959. switch (BuiltinName[19]) {
  30960. default: break;
  30961. case '2': // 7 strings to match.
  30962. if (BuiltinName[20] != '_')
  30963. break;
  30964. switch (BuiltinName[21]) {
  30965. default: break;
  30966. case 'm': // 4 strings to match.
  30967. switch (BuiltinName[22]) {
  30968. default: break;
  30969. case 'a': // 2 strings to match.
  30970. if (memcmp(BuiltinName.data()+23, "csi", 3))
  30971. break;
  30972. switch (BuiltinName[26]) {
  30973. default: break;
  30974. case 'n': // 1 string to match.
  30975. return Intrinsic::hexagon_M2_macsin; // "__builtin_HEXAGON_M2_macsin"
  30976. case 'p': // 1 string to match.
  30977. return Intrinsic::hexagon_M2_macsip; // "__builtin_HEXAGON_M2_macsip"
  30978. }
  30979. break;
  30980. case 'p': // 2 strings to match.
  30981. if (BuiltinName[23] != 'y')
  30982. break;
  30983. switch (BuiltinName[24]) {
  30984. default: break;
  30985. case '_': // 1 string to match.
  30986. if (memcmp(BuiltinName.data()+25, "up", 2))
  30987. break;
  30988. return Intrinsic::hexagon_M2_mpy_up; // "__builtin_HEXAGON_M2_mpy_up"
  30989. case 's': // 1 string to match.
  30990. if (memcmp(BuiltinName.data()+25, "mi", 2))
  30991. break;
  30992. return Intrinsic::hexagon_M2_mpysmi; // "__builtin_HEXAGON_M2_mpysmi"
  30993. }
  30994. break;
  30995. }
  30996. break;
  30997. case 'n': // 1 string to match.
  30998. if (memcmp(BuiltinName.data()+22, "accii", 5))
  30999. break;
  31000. return Intrinsic::hexagon_M2_naccii; // "__builtin_HEXAGON_M2_naccii"
  31001. case 's': // 1 string to match.
  31002. if (memcmp(BuiltinName.data()+22, "ubacc", 5))
  31003. break;
  31004. return Intrinsic::hexagon_M2_subacc; // "__builtin_HEXAGON_M2_subacc"
  31005. case 'v': // 1 string to match.
  31006. if (memcmp(BuiltinName.data()+22, "raddh", 5))
  31007. break;
  31008. return Intrinsic::hexagon_M2_vraddh; // "__builtin_HEXAGON_M2_vraddh"
  31009. }
  31010. break;
  31011. case '4': // 5 strings to match.
  31012. if (BuiltinName[20] != '_')
  31013. break;
  31014. switch (BuiltinName[21]) {
  31015. default: break;
  31016. case 'a': // 1 string to match.
  31017. if (memcmp(BuiltinName.data()+22, "nd_or", 5))
  31018. break;
  31019. return Intrinsic::hexagon_M4_and_or; // "__builtin_HEXAGON_M4_and_or"
  31020. case 'o': // 2 strings to match.
  31021. if (memcmp(BuiltinName.data()+22, "r_", 2))
  31022. break;
  31023. switch (BuiltinName[24]) {
  31024. default: break;
  31025. case 'a': // 1 string to match.
  31026. if (memcmp(BuiltinName.data()+25, "nd", 2))
  31027. break;
  31028. return Intrinsic::hexagon_M4_or_and; // "__builtin_HEXAGON_M4_or_and"
  31029. case 'x': // 1 string to match.
  31030. if (memcmp(BuiltinName.data()+25, "or", 2))
  31031. break;
  31032. return Intrinsic::hexagon_M4_or_xor; // "__builtin_HEXAGON_M4_or_xor"
  31033. }
  31034. break;
  31035. case 'v': // 1 string to match.
  31036. if (memcmp(BuiltinName.data()+22, "pmpyh", 5))
  31037. break;
  31038. return Intrinsic::hexagon_M4_vpmpyh; // "__builtin_HEXAGON_M4_vpmpyh"
  31039. case 'x': // 1 string to match.
  31040. if (memcmp(BuiltinName.data()+22, "or_or", 5))
  31041. break;
  31042. return Intrinsic::hexagon_M4_xor_or; // "__builtin_HEXAGON_M4_xor_or"
  31043. }
  31044. break;
  31045. }
  31046. break;
  31047. case 'S': // 11 strings to match.
  31048. switch (BuiltinName[19]) {
  31049. default: break;
  31050. case '2': // 9 strings to match.
  31051. if (BuiltinName[20] != '_')
  31052. break;
  31053. switch (BuiltinName[21]) {
  31054. default: break;
  31055. case 'i': // 1 string to match.
  31056. if (memcmp(BuiltinName.data()+22, "nsert", 5))
  31057. break;
  31058. return Intrinsic::hexagon_S2_insert; // "__builtin_HEXAGON_S2_insert"
  31059. case 'p': // 1 string to match.
  31060. if (memcmp(BuiltinName.data()+22, "ackhl", 5))
  31061. break;
  31062. return Intrinsic::hexagon_S2_packhl; // "__builtin_HEXAGON_S2_packhl"
  31063. case 'v': // 7 strings to match.
  31064. switch (BuiltinName[22]) {
  31065. default: break;
  31066. case 'c': // 1 string to match.
  31067. if (memcmp(BuiltinName.data()+23, "negh", 4))
  31068. break;
  31069. return Intrinsic::hexagon_S2_vcnegh; // "__builtin_HEXAGON_S2_vcnegh"
  31070. case 's': // 4 strings to match.
  31071. switch (BuiltinName[23]) {
  31072. default: break;
  31073. case 'a': // 2 strings to match.
  31074. if (BuiltinName[24] != 't')
  31075. break;
  31076. switch (BuiltinName[25]) {
  31077. default: break;
  31078. case 'h': // 1 string to match.
  31079. if (BuiltinName[26] != 'b')
  31080. break;
  31081. return Intrinsic::hexagon_S2_vsathb; // "__builtin_HEXAGON_S2_vsathb"
  31082. case 'w': // 1 string to match.
  31083. if (BuiltinName[26] != 'h')
  31084. break;
  31085. return Intrinsic::hexagon_S2_vsatwh; // "__builtin_HEXAGON_S2_vsatwh"
  31086. }
  31087. break;
  31088. case 'x': // 2 strings to match.
  31089. if (BuiltinName[24] != 't')
  31090. break;
  31091. switch (BuiltinName[25]) {
  31092. default: break;
  31093. case 'b': // 1 string to match.
  31094. if (BuiltinName[26] != 'h')
  31095. break;
  31096. return Intrinsic::hexagon_S2_vsxtbh; // "__builtin_HEXAGON_S2_vsxtbh"
  31097. case 'h': // 1 string to match.
  31098. if (BuiltinName[26] != 'w')
  31099. break;
  31100. return Intrinsic::hexagon_S2_vsxthw; // "__builtin_HEXAGON_S2_vsxthw"
  31101. }
  31102. break;
  31103. }
  31104. break;
  31105. case 'z': // 2 strings to match.
  31106. if (memcmp(BuiltinName.data()+23, "xt", 2))
  31107. break;
  31108. switch (BuiltinName[25]) {
  31109. default: break;
  31110. case 'b': // 1 string to match.
  31111. if (BuiltinName[26] != 'h')
  31112. break;
  31113. return Intrinsic::hexagon_S2_vzxtbh; // "__builtin_HEXAGON_S2_vzxtbh"
  31114. case 'h': // 1 string to match.
  31115. if (BuiltinName[26] != 'w')
  31116. break;
  31117. return Intrinsic::hexagon_S2_vzxthw; // "__builtin_HEXAGON_S2_vzxthw"
  31118. }
  31119. break;
  31120. }
  31121. break;
  31122. }
  31123. break;
  31124. case '4': // 2 strings to match.
  31125. if (BuiltinName[20] != '_')
  31126. break;
  31127. switch (BuiltinName[21]) {
  31128. default: break;
  31129. case 'o': // 1 string to match.
  31130. if (memcmp(BuiltinName.data()+22, "r_ori", 5))
  31131. break;
  31132. return Intrinsic::hexagon_S4_or_ori; // "__builtin_HEXAGON_S4_or_ori"
  31133. case 'p': // 1 string to match.
  31134. if (memcmp(BuiltinName.data()+22, "arity", 5))
  31135. break;
  31136. return Intrinsic::hexagon_S4_parity; // "__builtin_HEXAGON_S4_parity"
  31137. }
  31138. break;
  31139. }
  31140. break;
  31141. }
  31142. break;
  31143. case 28: // 103 strings to match.
  31144. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  31145. break;
  31146. switch (BuiltinName[18]) {
  31147. default: break;
  31148. case 'A': // 36 strings to match.
  31149. switch (BuiltinName[19]) {
  31150. default: break;
  31151. case '2': // 23 strings to match.
  31152. if (BuiltinName[20] != '_')
  31153. break;
  31154. switch (BuiltinName[21]) {
  31155. default: break;
  31156. case 'a': // 1 string to match.
  31157. if (memcmp(BuiltinName.data()+22, "ddpsat", 6))
  31158. break;
  31159. return Intrinsic::hexagon_A2_addpsat; // "__builtin_HEXAGON_A2_addpsat"
  31160. case 's': // 4 strings to match.
  31161. if (BuiltinName[22] != 'v')
  31162. break;
  31163. switch (BuiltinName[23]) {
  31164. default: break;
  31165. case 'a': // 2 strings to match.
  31166. switch (BuiltinName[24]) {
  31167. default: break;
  31168. case 'd': // 1 string to match.
  31169. if (memcmp(BuiltinName.data()+25, "dhs", 3))
  31170. break;
  31171. return Intrinsic::hexagon_A2_svaddhs; // "__builtin_HEXAGON_A2_svaddhs"
  31172. case 'v': // 1 string to match.
  31173. if (memcmp(BuiltinName.data()+25, "ghs", 3))
  31174. break;
  31175. return Intrinsic::hexagon_A2_svavghs; // "__builtin_HEXAGON_A2_svavghs"
  31176. }
  31177. break;
  31178. case 'n': // 1 string to match.
  31179. if (memcmp(BuiltinName.data()+24, "avgh", 4))
  31180. break;
  31181. return Intrinsic::hexagon_A2_svnavgh; // "__builtin_HEXAGON_A2_svnavgh"
  31182. case 's': // 1 string to match.
  31183. if (memcmp(BuiltinName.data()+24, "ubhs", 4))
  31184. break;
  31185. return Intrinsic::hexagon_A2_svsubhs; // "__builtin_HEXAGON_A2_svsubhs"
  31186. }
  31187. break;
  31188. case 'v': // 18 strings to match.
  31189. switch (BuiltinName[22]) {
  31190. default: break;
  31191. case 'a': // 7 strings to match.
  31192. switch (BuiltinName[23]) {
  31193. default: break;
  31194. case 'd': // 2 strings to match.
  31195. if (memcmp(BuiltinName.data()+24, "du", 2))
  31196. break;
  31197. switch (BuiltinName[26]) {
  31198. default: break;
  31199. case 'b': // 1 string to match.
  31200. if (BuiltinName[27] != 's')
  31201. break;
  31202. return Intrinsic::hexagon_A2_vaddubs; // "__builtin_HEXAGON_A2_vaddubs"
  31203. case 'h': // 1 string to match.
  31204. if (BuiltinName[27] != 's')
  31205. break;
  31206. return Intrinsic::hexagon_A2_vadduhs; // "__builtin_HEXAGON_A2_vadduhs"
  31207. }
  31208. break;
  31209. case 'v': // 5 strings to match.
  31210. if (BuiltinName[24] != 'g')
  31211. break;
  31212. switch (BuiltinName[25]) {
  31213. default: break;
  31214. case 'h': // 1 string to match.
  31215. if (memcmp(BuiltinName.data()+26, "cr", 2))
  31216. break;
  31217. return Intrinsic::hexagon_A2_vavghcr; // "__builtin_HEXAGON_A2_vavghcr"
  31218. case 'u': // 3 strings to match.
  31219. switch (BuiltinName[26]) {
  31220. default: break;
  31221. case 'b': // 1 string to match.
  31222. if (BuiltinName[27] != 'r')
  31223. break;
  31224. return Intrinsic::hexagon_A2_vavgubr; // "__builtin_HEXAGON_A2_vavgubr"
  31225. case 'h': // 1 string to match.
  31226. if (BuiltinName[27] != 'r')
  31227. break;
  31228. return Intrinsic::hexagon_A2_vavguhr; // "__builtin_HEXAGON_A2_vavguhr"
  31229. case 'w': // 1 string to match.
  31230. if (BuiltinName[27] != 'r')
  31231. break;
  31232. return Intrinsic::hexagon_A2_vavguwr; // "__builtin_HEXAGON_A2_vavguwr"
  31233. }
  31234. break;
  31235. case 'w': // 1 string to match.
  31236. if (memcmp(BuiltinName.data()+26, "cr", 2))
  31237. break;
  31238. return Intrinsic::hexagon_A2_vavgwcr; // "__builtin_HEXAGON_A2_vavgwcr"
  31239. }
  31240. break;
  31241. }
  31242. break;
  31243. case 'c': // 5 strings to match.
  31244. if (memcmp(BuiltinName.data()+23, "mp", 2))
  31245. break;
  31246. switch (BuiltinName[25]) {
  31247. default: break;
  31248. case 'b': // 1 string to match.
  31249. if (memcmp(BuiltinName.data()+26, "eq", 2))
  31250. break;
  31251. return Intrinsic::hexagon_A2_vcmpbeq; // "__builtin_HEXAGON_A2_vcmpbeq"
  31252. case 'h': // 2 strings to match.
  31253. switch (BuiltinName[26]) {
  31254. default: break;
  31255. case 'e': // 1 string to match.
  31256. if (BuiltinName[27] != 'q')
  31257. break;
  31258. return Intrinsic::hexagon_A2_vcmpheq; // "__builtin_HEXAGON_A2_vcmpheq"
  31259. case 'g': // 1 string to match.
  31260. if (BuiltinName[27] != 't')
  31261. break;
  31262. return Intrinsic::hexagon_A2_vcmphgt; // "__builtin_HEXAGON_A2_vcmphgt"
  31263. }
  31264. break;
  31265. case 'w': // 2 strings to match.
  31266. switch (BuiltinName[26]) {
  31267. default: break;
  31268. case 'e': // 1 string to match.
  31269. if (BuiltinName[27] != 'q')
  31270. break;
  31271. return Intrinsic::hexagon_A2_vcmpweq; // "__builtin_HEXAGON_A2_vcmpweq"
  31272. case 'g': // 1 string to match.
  31273. if (BuiltinName[27] != 't')
  31274. break;
  31275. return Intrinsic::hexagon_A2_vcmpwgt; // "__builtin_HEXAGON_A2_vcmpwgt"
  31276. }
  31277. break;
  31278. }
  31279. break;
  31280. case 'n': // 2 strings to match.
  31281. if (memcmp(BuiltinName.data()+23, "avg", 3))
  31282. break;
  31283. switch (BuiltinName[26]) {
  31284. default: break;
  31285. case 'h': // 1 string to match.
  31286. if (BuiltinName[27] != 'r')
  31287. break;
  31288. return Intrinsic::hexagon_A2_vnavghr; // "__builtin_HEXAGON_A2_vnavghr"
  31289. case 'w': // 1 string to match.
  31290. if (BuiltinName[27] != 'r')
  31291. break;
  31292. return Intrinsic::hexagon_A2_vnavgwr; // "__builtin_HEXAGON_A2_vnavgwr"
  31293. }
  31294. break;
  31295. case 'r': // 2 strings to match.
  31296. switch (BuiltinName[23]) {
  31297. default: break;
  31298. case 'a': // 1 string to match.
  31299. if (memcmp(BuiltinName.data()+24, "ddub", 4))
  31300. break;
  31301. return Intrinsic::hexagon_A2_vraddub; // "__builtin_HEXAGON_A2_vraddub"
  31302. case 's': // 1 string to match.
  31303. if (memcmp(BuiltinName.data()+24, "adub", 4))
  31304. break;
  31305. return Intrinsic::hexagon_A2_vrsadub; // "__builtin_HEXAGON_A2_vrsadub"
  31306. }
  31307. break;
  31308. case 's': // 2 strings to match.
  31309. if (memcmp(BuiltinName.data()+23, "ubu", 3))
  31310. break;
  31311. switch (BuiltinName[26]) {
  31312. default: break;
  31313. case 'b': // 1 string to match.
  31314. if (BuiltinName[27] != 's')
  31315. break;
  31316. return Intrinsic::hexagon_A2_vsububs; // "__builtin_HEXAGON_A2_vsububs"
  31317. case 'h': // 1 string to match.
  31318. if (BuiltinName[27] != 's')
  31319. break;
  31320. return Intrinsic::hexagon_A2_vsubuhs; // "__builtin_HEXAGON_A2_vsubuhs"
  31321. }
  31322. break;
  31323. }
  31324. break;
  31325. }
  31326. break;
  31327. case '4': // 13 strings to match.
  31328. if (BuiltinName[20] != '_')
  31329. break;
  31330. switch (BuiltinName[21]) {
  31331. default: break;
  31332. case 'c': // 6 strings to match.
  31333. if (memcmp(BuiltinName.data()+22, "mp", 2))
  31334. break;
  31335. switch (BuiltinName[24]) {
  31336. default: break;
  31337. case 'b': // 3 strings to match.
  31338. switch (BuiltinName[25]) {
  31339. default: break;
  31340. case 'e': // 1 string to match.
  31341. if (memcmp(BuiltinName.data()+26, "qi", 2))
  31342. break;
  31343. return Intrinsic::hexagon_A4_cmpbeqi; // "__builtin_HEXAGON_A4_cmpbeqi"
  31344. case 'g': // 2 strings to match.
  31345. if (BuiltinName[26] != 't')
  31346. break;
  31347. switch (BuiltinName[27]) {
  31348. default: break;
  31349. case 'i': // 1 string to match.
  31350. return Intrinsic::hexagon_A4_cmpbgti; // "__builtin_HEXAGON_A4_cmpbgti"
  31351. case 'u': // 1 string to match.
  31352. return Intrinsic::hexagon_A4_cmpbgtu; // "__builtin_HEXAGON_A4_cmpbgtu"
  31353. }
  31354. break;
  31355. }
  31356. break;
  31357. case 'h': // 3 strings to match.
  31358. switch (BuiltinName[25]) {
  31359. default: break;
  31360. case 'e': // 1 string to match.
  31361. if (memcmp(BuiltinName.data()+26, "qi", 2))
  31362. break;
  31363. return Intrinsic::hexagon_A4_cmpheqi; // "__builtin_HEXAGON_A4_cmpheqi"
  31364. case 'g': // 2 strings to match.
  31365. if (BuiltinName[26] != 't')
  31366. break;
  31367. switch (BuiltinName[27]) {
  31368. default: break;
  31369. case 'i': // 1 string to match.
  31370. return Intrinsic::hexagon_A4_cmphgti; // "__builtin_HEXAGON_A4_cmphgti"
  31371. case 'u': // 1 string to match.
  31372. return Intrinsic::hexagon_A4_cmphgtu; // "__builtin_HEXAGON_A4_cmphgtu"
  31373. }
  31374. break;
  31375. }
  31376. break;
  31377. }
  31378. break;
  31379. case 'r': // 2 strings to match.
  31380. if (memcmp(BuiltinName.data()+22, "cmp", 3))
  31381. break;
  31382. switch (BuiltinName[25]) {
  31383. default: break;
  31384. case 'e': // 1 string to match.
  31385. if (memcmp(BuiltinName.data()+26, "qi", 2))
  31386. break;
  31387. return Intrinsic::hexagon_A4_rcmpeqi; // "__builtin_HEXAGON_A4_rcmpeqi"
  31388. case 'n': // 1 string to match.
  31389. if (memcmp(BuiltinName.data()+26, "eq", 2))
  31390. break;
  31391. return Intrinsic::hexagon_A4_rcmpneq; // "__builtin_HEXAGON_A4_rcmpneq"
  31392. }
  31393. break;
  31394. case 'v': // 5 strings to match.
  31395. switch (BuiltinName[22]) {
  31396. default: break;
  31397. case 'c': // 1 string to match.
  31398. if (memcmp(BuiltinName.data()+23, "mpbgt", 5))
  31399. break;
  31400. return Intrinsic::hexagon_A4_vcmpbgt; // "__builtin_HEXAGON_A4_vcmpbgt"
  31401. case 'r': // 4 strings to match.
  31402. if (BuiltinName[23] != 'm')
  31403. break;
  31404. switch (BuiltinName[24]) {
  31405. default: break;
  31406. case 'a': // 2 strings to match.
  31407. if (memcmp(BuiltinName.data()+25, "xu", 2))
  31408. break;
  31409. switch (BuiltinName[27]) {
  31410. default: break;
  31411. case 'h': // 1 string to match.
  31412. return Intrinsic::hexagon_A4_vrmaxuh; // "__builtin_HEXAGON_A4_vrmaxuh"
  31413. case 'w': // 1 string to match.
  31414. return Intrinsic::hexagon_A4_vrmaxuw; // "__builtin_HEXAGON_A4_vrmaxuw"
  31415. }
  31416. break;
  31417. case 'i': // 2 strings to match.
  31418. if (memcmp(BuiltinName.data()+25, "nu", 2))
  31419. break;
  31420. switch (BuiltinName[27]) {
  31421. default: break;
  31422. case 'h': // 1 string to match.
  31423. return Intrinsic::hexagon_A4_vrminuh; // "__builtin_HEXAGON_A4_vrminuh"
  31424. case 'w': // 1 string to match.
  31425. return Intrinsic::hexagon_A4_vrminuw; // "__builtin_HEXAGON_A4_vrminuw"
  31426. }
  31427. break;
  31428. }
  31429. break;
  31430. }
  31431. break;
  31432. }
  31433. break;
  31434. }
  31435. break;
  31436. case 'C': // 12 strings to match.
  31437. switch (BuiltinName[19]) {
  31438. default: break;
  31439. case '2': // 6 strings to match.
  31440. if (BuiltinName[20] != '_')
  31441. break;
  31442. switch (BuiltinName[21]) {
  31443. default: break;
  31444. case 'b': // 2 strings to match.
  31445. if (memcmp(BuiltinName.data()+22, "its", 3))
  31446. break;
  31447. switch (BuiltinName[25]) {
  31448. default: break;
  31449. case 'c': // 1 string to match.
  31450. if (memcmp(BuiltinName.data()+26, "lr", 2))
  31451. break;
  31452. return Intrinsic::hexagon_C2_bitsclr; // "__builtin_HEXAGON_C2_bitsclr"
  31453. case 's': // 1 string to match.
  31454. if (memcmp(BuiltinName.data()+26, "et", 2))
  31455. break;
  31456. return Intrinsic::hexagon_C2_bitsset; // "__builtin_HEXAGON_C2_bitsset"
  31457. }
  31458. break;
  31459. case 'c': // 3 strings to match.
  31460. if (memcmp(BuiltinName.data()+22, "mpg", 3))
  31461. break;
  31462. switch (BuiltinName[25]) {
  31463. default: break;
  31464. case 'e': // 1 string to match.
  31465. if (memcmp(BuiltinName.data()+26, "ui", 2))
  31466. break;
  31467. return Intrinsic::hexagon_C2_cmpgeui; // "__builtin_HEXAGON_C2_cmpgeui"
  31468. case 't': // 2 strings to match.
  31469. if (BuiltinName[26] != 'u')
  31470. break;
  31471. switch (BuiltinName[27]) {
  31472. default: break;
  31473. case 'i': // 1 string to match.
  31474. return Intrinsic::hexagon_C2_cmpgtui; // "__builtin_HEXAGON_C2_cmpgtui"
  31475. case 'p': // 1 string to match.
  31476. return Intrinsic::hexagon_C2_cmpgtup; // "__builtin_HEXAGON_C2_cmpgtup"
  31477. }
  31478. break;
  31479. }
  31480. break;
  31481. case 'v': // 1 string to match.
  31482. if (memcmp(BuiltinName.data()+22, "itpack", 6))
  31483. break;
  31484. return Intrinsic::hexagon_C2_vitpack; // "__builtin_HEXAGON_C2_vitpack"
  31485. }
  31486. break;
  31487. case '4': // 6 strings to match.
  31488. if (BuiltinName[20] != '_')
  31489. break;
  31490. switch (BuiltinName[21]) {
  31491. default: break;
  31492. case 'a': // 2 strings to match.
  31493. if (memcmp(BuiltinName.data()+22, "nd_", 3))
  31494. break;
  31495. switch (BuiltinName[25]) {
  31496. default: break;
  31497. case 'a': // 1 string to match.
  31498. if (memcmp(BuiltinName.data()+26, "nd", 2))
  31499. break;
  31500. return Intrinsic::hexagon_C4_and_and; // "__builtin_HEXAGON_C4_and_and"
  31501. case 'o': // 1 string to match.
  31502. if (memcmp(BuiltinName.data()+26, "rn", 2))
  31503. break;
  31504. return Intrinsic::hexagon_C4_and_orn; // "__builtin_HEXAGON_C4_and_orn"
  31505. }
  31506. break;
  31507. case 'c': // 3 strings to match.
  31508. if (memcmp(BuiltinName.data()+22, "mp", 2))
  31509. break;
  31510. switch (BuiltinName[24]) {
  31511. default: break;
  31512. case 'l': // 2 strings to match.
  31513. if (memcmp(BuiltinName.data()+25, "te", 2))
  31514. break;
  31515. switch (BuiltinName[27]) {
  31516. default: break;
  31517. case 'i': // 1 string to match.
  31518. return Intrinsic::hexagon_C4_cmpltei; // "__builtin_HEXAGON_C4_cmpltei"
  31519. case 'u': // 1 string to match.
  31520. return Intrinsic::hexagon_C4_cmplteu; // "__builtin_HEXAGON_C4_cmplteu"
  31521. }
  31522. break;
  31523. case 'n': // 1 string to match.
  31524. if (memcmp(BuiltinName.data()+25, "eqi", 3))
  31525. break;
  31526. return Intrinsic::hexagon_C4_cmpneqi; // "__builtin_HEXAGON_C4_cmpneqi"
  31527. }
  31528. break;
  31529. case 'o': // 1 string to match.
  31530. if (memcmp(BuiltinName.data()+22, "r_andn", 6))
  31531. break;
  31532. return Intrinsic::hexagon_C4_or_andn; // "__builtin_HEXAGON_C4_or_andn"
  31533. }
  31534. break;
  31535. }
  31536. break;
  31537. case 'F': // 14 strings to match.
  31538. if (memcmp(BuiltinName.data()+19, "2_", 2))
  31539. break;
  31540. switch (BuiltinName[21]) {
  31541. default: break;
  31542. case 'd': // 7 strings to match.
  31543. if (BuiltinName[22] != 'f')
  31544. break;
  31545. switch (BuiltinName[23]) {
  31546. default: break;
  31547. case 'c': // 5 strings to match.
  31548. switch (BuiltinName[24]) {
  31549. default: break;
  31550. case 'l': // 1 string to match.
  31551. if (memcmp(BuiltinName.data()+25, "ass", 3))
  31552. break;
  31553. return Intrinsic::hexagon_F2_dfclass; // "__builtin_HEXAGON_F2_dfclass"
  31554. case 'm': // 4 strings to match.
  31555. if (BuiltinName[25] != 'p')
  31556. break;
  31557. switch (BuiltinName[26]) {
  31558. default: break;
  31559. case 'e': // 1 string to match.
  31560. if (BuiltinName[27] != 'q')
  31561. break;
  31562. return Intrinsic::hexagon_F2_dfcmpeq; // "__builtin_HEXAGON_F2_dfcmpeq"
  31563. case 'g': // 2 strings to match.
  31564. switch (BuiltinName[27]) {
  31565. default: break;
  31566. case 'e': // 1 string to match.
  31567. return Intrinsic::hexagon_F2_dfcmpge; // "__builtin_HEXAGON_F2_dfcmpge"
  31568. case 't': // 1 string to match.
  31569. return Intrinsic::hexagon_F2_dfcmpgt; // "__builtin_HEXAGON_F2_dfcmpgt"
  31570. }
  31571. break;
  31572. case 'u': // 1 string to match.
  31573. if (BuiltinName[27] != 'o')
  31574. break;
  31575. return Intrinsic::hexagon_F2_dfcmpuo; // "__builtin_HEXAGON_F2_dfcmpuo"
  31576. }
  31577. break;
  31578. }
  31579. break;
  31580. case 'i': // 2 strings to match.
  31581. if (memcmp(BuiltinName.data()+24, "mm_", 3))
  31582. break;
  31583. switch (BuiltinName[27]) {
  31584. default: break;
  31585. case 'n': // 1 string to match.
  31586. return Intrinsic::hexagon_F2_dfimm_n; // "__builtin_HEXAGON_F2_dfimm_n"
  31587. case 'p': // 1 string to match.
  31588. return Intrinsic::hexagon_F2_dfimm_p; // "__builtin_HEXAGON_F2_dfimm_p"
  31589. }
  31590. break;
  31591. }
  31592. break;
  31593. case 's': // 7 strings to match.
  31594. if (BuiltinName[22] != 'f')
  31595. break;
  31596. switch (BuiltinName[23]) {
  31597. default: break;
  31598. case 'c': // 5 strings to match.
  31599. switch (BuiltinName[24]) {
  31600. default: break;
  31601. case 'l': // 1 string to match.
  31602. if (memcmp(BuiltinName.data()+25, "ass", 3))
  31603. break;
  31604. return Intrinsic::hexagon_F2_sfclass; // "__builtin_HEXAGON_F2_sfclass"
  31605. case 'm': // 4 strings to match.
  31606. if (BuiltinName[25] != 'p')
  31607. break;
  31608. switch (BuiltinName[26]) {
  31609. default: break;
  31610. case 'e': // 1 string to match.
  31611. if (BuiltinName[27] != 'q')
  31612. break;
  31613. return Intrinsic::hexagon_F2_sfcmpeq; // "__builtin_HEXAGON_F2_sfcmpeq"
  31614. case 'g': // 2 strings to match.
  31615. switch (BuiltinName[27]) {
  31616. default: break;
  31617. case 'e': // 1 string to match.
  31618. return Intrinsic::hexagon_F2_sfcmpge; // "__builtin_HEXAGON_F2_sfcmpge"
  31619. case 't': // 1 string to match.
  31620. return Intrinsic::hexagon_F2_sfcmpgt; // "__builtin_HEXAGON_F2_sfcmpgt"
  31621. }
  31622. break;
  31623. case 'u': // 1 string to match.
  31624. if (BuiltinName[27] != 'o')
  31625. break;
  31626. return Intrinsic::hexagon_F2_sfcmpuo; // "__builtin_HEXAGON_F2_sfcmpuo"
  31627. }
  31628. break;
  31629. }
  31630. break;
  31631. case 'i': // 2 strings to match.
  31632. if (memcmp(BuiltinName.data()+24, "mm_", 3))
  31633. break;
  31634. switch (BuiltinName[27]) {
  31635. default: break;
  31636. case 'n': // 1 string to match.
  31637. return Intrinsic::hexagon_F2_sfimm_n; // "__builtin_HEXAGON_F2_sfimm_n"
  31638. case 'p': // 1 string to match.
  31639. return Intrinsic::hexagon_F2_sfimm_p; // "__builtin_HEXAGON_F2_sfimm_p"
  31640. }
  31641. break;
  31642. }
  31643. break;
  31644. }
  31645. break;
  31646. case 'M': // 11 strings to match.
  31647. switch (BuiltinName[19]) {
  31648. default: break;
  31649. case '2': // 3 strings to match.
  31650. if (BuiltinName[20] != '_')
  31651. break;
  31652. switch (BuiltinName[21]) {
  31653. default: break;
  31654. case 'm': // 1 string to match.
  31655. if (memcmp(BuiltinName.data()+22, "pyu_up", 6))
  31656. break;
  31657. return Intrinsic::hexagon_M2_mpyu_up; // "__builtin_HEXAGON_M2_mpyu_up"
  31658. case 'v': // 2 strings to match.
  31659. switch (BuiltinName[22]) {
  31660. default: break;
  31661. case 'm': // 1 string to match.
  31662. if (memcmp(BuiltinName.data()+23, "ac2es", 5))
  31663. break;
  31664. return Intrinsic::hexagon_M2_vmac2es; // "__builtin_HEXAGON_M2_vmac2es"
  31665. case 'r': // 1 string to match.
  31666. if (memcmp(BuiltinName.data()+23, "adduh", 5))
  31667. break;
  31668. return Intrinsic::hexagon_M2_vradduh; // "__builtin_HEXAGON_M2_vradduh"
  31669. }
  31670. break;
  31671. }
  31672. break;
  31673. case '4': // 4 strings to match.
  31674. if (BuiltinName[20] != '_')
  31675. break;
  31676. switch (BuiltinName[21]) {
  31677. default: break;
  31678. case 'a': // 2 strings to match.
  31679. if (memcmp(BuiltinName.data()+22, "nd_", 3))
  31680. break;
  31681. switch (BuiltinName[25]) {
  31682. default: break;
  31683. case 'a': // 1 string to match.
  31684. if (memcmp(BuiltinName.data()+26, "nd", 2))
  31685. break;
  31686. return Intrinsic::hexagon_M4_and_and; // "__builtin_HEXAGON_M4_and_and"
  31687. case 'x': // 1 string to match.
  31688. if (memcmp(BuiltinName.data()+26, "or", 2))
  31689. break;
  31690. return Intrinsic::hexagon_M4_and_xor; // "__builtin_HEXAGON_M4_and_xor"
  31691. }
  31692. break;
  31693. case 'o': // 1 string to match.
  31694. if (memcmp(BuiltinName.data()+22, "r_andn", 6))
  31695. break;
  31696. return Intrinsic::hexagon_M4_or_andn; // "__builtin_HEXAGON_M4_or_andn"
  31697. case 'x': // 1 string to match.
  31698. if (memcmp(BuiltinName.data()+22, "or_and", 6))
  31699. break;
  31700. return Intrinsic::hexagon_M4_xor_and; // "__builtin_HEXAGON_M4_xor_and"
  31701. }
  31702. break;
  31703. case '5': // 4 strings to match.
  31704. if (memcmp(BuiltinName.data()+20, "_vm", 3))
  31705. break;
  31706. switch (BuiltinName[23]) {
  31707. default: break;
  31708. case 'a': // 2 strings to match.
  31709. if (memcmp(BuiltinName.data()+24, "cb", 2))
  31710. break;
  31711. switch (BuiltinName[26]) {
  31712. default: break;
  31713. case 's': // 1 string to match.
  31714. if (BuiltinName[27] != 'u')
  31715. break;
  31716. return Intrinsic::hexagon_M5_vmacbsu; // "__builtin_HEXAGON_M5_vmacbsu"
  31717. case 'u': // 1 string to match.
  31718. if (BuiltinName[27] != 'u')
  31719. break;
  31720. return Intrinsic::hexagon_M5_vmacbuu; // "__builtin_HEXAGON_M5_vmacbuu"
  31721. }
  31722. break;
  31723. case 'p': // 2 strings to match.
  31724. if (memcmp(BuiltinName.data()+24, "yb", 2))
  31725. break;
  31726. switch (BuiltinName[26]) {
  31727. default: break;
  31728. case 's': // 1 string to match.
  31729. if (BuiltinName[27] != 'u')
  31730. break;
  31731. return Intrinsic::hexagon_M5_vmpybsu; // "__builtin_HEXAGON_M5_vmpybsu"
  31732. case 'u': // 1 string to match.
  31733. if (BuiltinName[27] != 'u')
  31734. break;
  31735. return Intrinsic::hexagon_M5_vmpybuu; // "__builtin_HEXAGON_M5_vmpybuu"
  31736. }
  31737. break;
  31738. }
  31739. break;
  31740. }
  31741. break;
  31742. case 'S': // 30 strings to match.
  31743. switch (BuiltinName[19]) {
  31744. default: break;
  31745. case '2': // 25 strings to match.
  31746. if (BuiltinName[20] != '_')
  31747. break;
  31748. switch (BuiltinName[21]) {
  31749. default: break;
  31750. case 'a': // 8 strings to match.
  31751. if (BuiltinName[22] != 's')
  31752. break;
  31753. switch (BuiltinName[23]) {
  31754. default: break;
  31755. case 'l': // 4 strings to match.
  31756. if (BuiltinName[24] != '_')
  31757. break;
  31758. switch (BuiltinName[25]) {
  31759. default: break;
  31760. case 'i': // 2 strings to match.
  31761. if (BuiltinName[26] != '_')
  31762. break;
  31763. switch (BuiltinName[27]) {
  31764. default: break;
  31765. case 'p': // 1 string to match.
  31766. return Intrinsic::hexagon_S2_asl_i_p; // "__builtin_HEXAGON_S2_asl_i_p"
  31767. case 'r': // 1 string to match.
  31768. return Intrinsic::hexagon_S2_asl_i_r; // "__builtin_HEXAGON_S2_asl_i_r"
  31769. }
  31770. break;
  31771. case 'r': // 2 strings to match.
  31772. if (BuiltinName[26] != '_')
  31773. break;
  31774. switch (BuiltinName[27]) {
  31775. default: break;
  31776. case 'p': // 1 string to match.
  31777. return Intrinsic::hexagon_S2_asl_r_p; // "__builtin_HEXAGON_S2_asl_r_p"
  31778. case 'r': // 1 string to match.
  31779. return Intrinsic::hexagon_S2_asl_r_r; // "__builtin_HEXAGON_S2_asl_r_r"
  31780. }
  31781. break;
  31782. }
  31783. break;
  31784. case 'r': // 4 strings to match.
  31785. if (BuiltinName[24] != '_')
  31786. break;
  31787. switch (BuiltinName[25]) {
  31788. default: break;
  31789. case 'i': // 2 strings to match.
  31790. if (BuiltinName[26] != '_')
  31791. break;
  31792. switch (BuiltinName[27]) {
  31793. default: break;
  31794. case 'p': // 1 string to match.
  31795. return Intrinsic::hexagon_S2_asr_i_p; // "__builtin_HEXAGON_S2_asr_i_p"
  31796. case 'r': // 1 string to match.
  31797. return Intrinsic::hexagon_S2_asr_i_r; // "__builtin_HEXAGON_S2_asr_i_r"
  31798. }
  31799. break;
  31800. case 'r': // 2 strings to match.
  31801. if (BuiltinName[26] != '_')
  31802. break;
  31803. switch (BuiltinName[27]) {
  31804. default: break;
  31805. case 'p': // 1 string to match.
  31806. return Intrinsic::hexagon_S2_asr_r_p; // "__builtin_HEXAGON_S2_asr_r_p"
  31807. case 'r': // 1 string to match.
  31808. return Intrinsic::hexagon_S2_asr_r_r; // "__builtin_HEXAGON_S2_asr_r_r"
  31809. }
  31810. break;
  31811. }
  31812. break;
  31813. }
  31814. break;
  31815. case 'c': // 1 string to match.
  31816. if (memcmp(BuiltinName.data()+22, "lbnorm", 6))
  31817. break;
  31818. return Intrinsic::hexagon_S2_clbnorm; // "__builtin_HEXAGON_S2_clbnorm"
  31819. case 'i': // 1 string to match.
  31820. if (memcmp(BuiltinName.data()+22, "nsertp", 6))
  31821. break;
  31822. return Intrinsic::hexagon_S2_insertp; // "__builtin_HEXAGON_S2_insertp"
  31823. case 'l': // 6 strings to match.
  31824. if (BuiltinName[22] != 's')
  31825. break;
  31826. switch (BuiltinName[23]) {
  31827. default: break;
  31828. case 'l': // 2 strings to match.
  31829. if (memcmp(BuiltinName.data()+24, "_r_", 3))
  31830. break;
  31831. switch (BuiltinName[27]) {
  31832. default: break;
  31833. case 'p': // 1 string to match.
  31834. return Intrinsic::hexagon_S2_lsl_r_p; // "__builtin_HEXAGON_S2_lsl_r_p"
  31835. case 'r': // 1 string to match.
  31836. return Intrinsic::hexagon_S2_lsl_r_r; // "__builtin_HEXAGON_S2_lsl_r_r"
  31837. }
  31838. break;
  31839. case 'r': // 4 strings to match.
  31840. if (BuiltinName[24] != '_')
  31841. break;
  31842. switch (BuiltinName[25]) {
  31843. default: break;
  31844. case 'i': // 2 strings to match.
  31845. if (BuiltinName[26] != '_')
  31846. break;
  31847. switch (BuiltinName[27]) {
  31848. default: break;
  31849. case 'p': // 1 string to match.
  31850. return Intrinsic::hexagon_S2_lsr_i_p; // "__builtin_HEXAGON_S2_lsr_i_p"
  31851. case 'r': // 1 string to match.
  31852. return Intrinsic::hexagon_S2_lsr_i_r; // "__builtin_HEXAGON_S2_lsr_i_r"
  31853. }
  31854. break;
  31855. case 'r': // 2 strings to match.
  31856. if (BuiltinName[26] != '_')
  31857. break;
  31858. switch (BuiltinName[27]) {
  31859. default: break;
  31860. case 'p': // 1 string to match.
  31861. return Intrinsic::hexagon_S2_lsr_r_p; // "__builtin_HEXAGON_S2_lsr_r_p"
  31862. case 'r': // 1 string to match.
  31863. return Intrinsic::hexagon_S2_lsr_r_r; // "__builtin_HEXAGON_S2_lsr_r_r"
  31864. }
  31865. break;
  31866. }
  31867. break;
  31868. }
  31869. break;
  31870. case 'p': // 1 string to match.
  31871. if (memcmp(BuiltinName.data()+22, "arityp", 6))
  31872. break;
  31873. return Intrinsic::hexagon_S2_parityp; // "__builtin_HEXAGON_S2_parityp"
  31874. case 's': // 5 strings to match.
  31875. switch (BuiltinName[22]) {
  31876. default: break;
  31877. case 'h': // 4 strings to match.
  31878. if (memcmp(BuiltinName.data()+23, "uff", 3))
  31879. break;
  31880. switch (BuiltinName[26]) {
  31881. default: break;
  31882. case 'e': // 2 strings to match.
  31883. switch (BuiltinName[27]) {
  31884. default: break;
  31885. case 'b': // 1 string to match.
  31886. return Intrinsic::hexagon_S2_shuffeb; // "__builtin_HEXAGON_S2_shuffeb"
  31887. case 'h': // 1 string to match.
  31888. return Intrinsic::hexagon_S2_shuffeh; // "__builtin_HEXAGON_S2_shuffeh"
  31889. }
  31890. break;
  31891. case 'o': // 2 strings to match.
  31892. switch (BuiltinName[27]) {
  31893. default: break;
  31894. case 'b': // 1 string to match.
  31895. return Intrinsic::hexagon_S2_shuffob; // "__builtin_HEXAGON_S2_shuffob"
  31896. case 'h': // 1 string to match.
  31897. return Intrinsic::hexagon_S2_shuffoh; // "__builtin_HEXAGON_S2_shuffoh"
  31898. }
  31899. break;
  31900. }
  31901. break;
  31902. case 'v': // 1 string to match.
  31903. if (memcmp(BuiltinName.data()+23, "sathb", 5))
  31904. break;
  31905. return Intrinsic::hexagon_S2_svsathb; // "__builtin_HEXAGON_S2_svsathb"
  31906. }
  31907. break;
  31908. case 'v': // 3 strings to match.
  31909. switch (BuiltinName[22]) {
  31910. default: break;
  31911. case 'r': // 1 string to match.
  31912. if (memcmp(BuiltinName.data()+23, "cnegh", 5))
  31913. break;
  31914. return Intrinsic::hexagon_S2_vrcnegh; // "__builtin_HEXAGON_S2_vrcnegh"
  31915. case 's': // 2 strings to match.
  31916. if (memcmp(BuiltinName.data()+23, "at", 2))
  31917. break;
  31918. switch (BuiltinName[25]) {
  31919. default: break;
  31920. case 'h': // 1 string to match.
  31921. if (memcmp(BuiltinName.data()+26, "ub", 2))
  31922. break;
  31923. return Intrinsic::hexagon_S2_vsathub; // "__builtin_HEXAGON_S2_vsathub"
  31924. case 'w': // 1 string to match.
  31925. if (memcmp(BuiltinName.data()+26, "uh", 2))
  31926. break;
  31927. return Intrinsic::hexagon_S2_vsatwuh; // "__builtin_HEXAGON_S2_vsatwuh"
  31928. }
  31929. break;
  31930. }
  31931. break;
  31932. }
  31933. break;
  31934. case '4': // 5 strings to match.
  31935. if (BuiltinName[20] != '_')
  31936. break;
  31937. switch (BuiltinName[21]) {
  31938. default: break;
  31939. case 'a': // 1 string to match.
  31940. if (memcmp(BuiltinName.data()+22, "ddaddi", 6))
  31941. break;
  31942. return Intrinsic::hexagon_S4_addaddi; // "__builtin_HEXAGON_S4_addaddi"
  31943. case 'c': // 1 string to match.
  31944. if (memcmp(BuiltinName.data()+22, "lbaddi", 6))
  31945. break;
  31946. return Intrinsic::hexagon_S4_clbaddi; // "__builtin_HEXAGON_S4_clbaddi"
  31947. case 'e': // 1 string to match.
  31948. if (memcmp(BuiltinName.data()+22, "xtract", 6))
  31949. break;
  31950. return Intrinsic::hexagon_S4_extract; // "__builtin_HEXAGON_S4_extract"
  31951. case 'o': // 1 string to match.
  31952. if (memcmp(BuiltinName.data()+22, "r_andi", 6))
  31953. break;
  31954. return Intrinsic::hexagon_S4_or_andi; // "__builtin_HEXAGON_S4_or_andi"
  31955. case 's': // 1 string to match.
  31956. if (memcmp(BuiltinName.data()+22, "ubaddi", 6))
  31957. break;
  31958. return Intrinsic::hexagon_S4_subaddi; // "__builtin_HEXAGON_S4_subaddi"
  31959. }
  31960. break;
  31961. }
  31962. break;
  31963. }
  31964. break;
  31965. case 29: // 103 strings to match.
  31966. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  31967. break;
  31968. switch (BuiltinName[18]) {
  31969. default: break;
  31970. case 'A': // 26 strings to match.
  31971. switch (BuiltinName[19]) {
  31972. default: break;
  31973. case '2': // 11 strings to match.
  31974. if (BuiltinName[20] != '_')
  31975. break;
  31976. switch (BuiltinName[21]) {
  31977. default: break;
  31978. case 'c': // 1 string to match.
  31979. if (memcmp(BuiltinName.data()+22, "ombinew", 7))
  31980. break;
  31981. return Intrinsic::hexagon_A2_combinew; // "__builtin_HEXAGON_A2_combinew"
  31982. case 'r': // 1 string to match.
  31983. if (memcmp(BuiltinName.data()+22, "oundsat", 7))
  31984. break;
  31985. return Intrinsic::hexagon_A2_roundsat; // "__builtin_HEXAGON_A2_roundsat"
  31986. case 's': // 2 strings to match.
  31987. if (BuiltinName[22] != 'v')
  31988. break;
  31989. switch (BuiltinName[23]) {
  31990. default: break;
  31991. case 'a': // 1 string to match.
  31992. if (memcmp(BuiltinName.data()+24, "dduhs", 5))
  31993. break;
  31994. return Intrinsic::hexagon_A2_svadduhs; // "__builtin_HEXAGON_A2_svadduhs"
  31995. case 's': // 1 string to match.
  31996. if (memcmp(BuiltinName.data()+24, "ubuhs", 5))
  31997. break;
  31998. return Intrinsic::hexagon_A2_svsubuhs; // "__builtin_HEXAGON_A2_svsubuhs"
  31999. }
  32000. break;
  32001. case 'v': // 7 strings to match.
  32002. switch (BuiltinName[22]) {
  32003. default: break;
  32004. case 'a': // 2 strings to match.
  32005. if (memcmp(BuiltinName.data()+23, "bs", 2))
  32006. break;
  32007. switch (BuiltinName[25]) {
  32008. default: break;
  32009. case 'h': // 1 string to match.
  32010. if (memcmp(BuiltinName.data()+26, "sat", 3))
  32011. break;
  32012. return Intrinsic::hexagon_A2_vabshsat; // "__builtin_HEXAGON_A2_vabshsat"
  32013. case 'w': // 1 string to match.
  32014. if (memcmp(BuiltinName.data()+26, "sat", 3))
  32015. break;
  32016. return Intrinsic::hexagon_A2_vabswsat; // "__builtin_HEXAGON_A2_vabswsat"
  32017. }
  32018. break;
  32019. case 'c': // 3 strings to match.
  32020. if (memcmp(BuiltinName.data()+23, "mp", 2))
  32021. break;
  32022. switch (BuiltinName[25]) {
  32023. default: break;
  32024. case 'b': // 1 string to match.
  32025. if (memcmp(BuiltinName.data()+26, "gtu", 3))
  32026. break;
  32027. return Intrinsic::hexagon_A2_vcmpbgtu; // "__builtin_HEXAGON_A2_vcmpbgtu"
  32028. case 'h': // 1 string to match.
  32029. if (memcmp(BuiltinName.data()+26, "gtu", 3))
  32030. break;
  32031. return Intrinsic::hexagon_A2_vcmphgtu; // "__builtin_HEXAGON_A2_vcmphgtu"
  32032. case 'w': // 1 string to match.
  32033. if (memcmp(BuiltinName.data()+26, "gtu", 3))
  32034. break;
  32035. return Intrinsic::hexagon_A2_vcmpwgtu; // "__builtin_HEXAGON_A2_vcmpwgtu"
  32036. }
  32037. break;
  32038. case 'n': // 2 strings to match.
  32039. if (memcmp(BuiltinName.data()+23, "avg", 3))
  32040. break;
  32041. switch (BuiltinName[26]) {
  32042. default: break;
  32043. case 'h': // 1 string to match.
  32044. if (memcmp(BuiltinName.data()+27, "cr", 2))
  32045. break;
  32046. return Intrinsic::hexagon_A2_vnavghcr; // "__builtin_HEXAGON_A2_vnavghcr"
  32047. case 'w': // 1 string to match.
  32048. if (memcmp(BuiltinName.data()+27, "cr", 2))
  32049. break;
  32050. return Intrinsic::hexagon_A2_vnavgwcr; // "__builtin_HEXAGON_A2_vnavgwcr"
  32051. }
  32052. break;
  32053. }
  32054. break;
  32055. }
  32056. break;
  32057. case '4': // 14 strings to match.
  32058. if (BuiltinName[20] != '_')
  32059. break;
  32060. switch (BuiltinName[21]) {
  32061. default: break;
  32062. case 'b': // 1 string to match.
  32063. if (memcmp(BuiltinName.data()+22, "itsplit", 7))
  32064. break;
  32065. return Intrinsic::hexagon_A4_bitsplit; // "__builtin_HEXAGON_A4_bitsplit"
  32066. case 'c': // 2 strings to match.
  32067. if (memcmp(BuiltinName.data()+22, "mp", 2))
  32068. break;
  32069. switch (BuiltinName[24]) {
  32070. default: break;
  32071. case 'b': // 1 string to match.
  32072. if (memcmp(BuiltinName.data()+25, "gtui", 4))
  32073. break;
  32074. return Intrinsic::hexagon_A4_cmpbgtui; // "__builtin_HEXAGON_A4_cmpbgtui"
  32075. case 'h': // 1 string to match.
  32076. if (memcmp(BuiltinName.data()+25, "gtui", 4))
  32077. break;
  32078. return Intrinsic::hexagon_A4_cmphgtui; // "__builtin_HEXAGON_A4_cmphgtui"
  32079. }
  32080. break;
  32081. case 'm': // 1 string to match.
  32082. if (memcmp(BuiltinName.data()+22, "odwrapu", 7))
  32083. break;
  32084. return Intrinsic::hexagon_A4_modwrapu; // "__builtin_HEXAGON_A4_modwrapu"
  32085. case 'r': // 3 strings to match.
  32086. switch (BuiltinName[22]) {
  32087. default: break;
  32088. case 'c': // 1 string to match.
  32089. if (memcmp(BuiltinName.data()+23, "mpneqi", 6))
  32090. break;
  32091. return Intrinsic::hexagon_A4_rcmpneqi; // "__builtin_HEXAGON_A4_rcmpneqi"
  32092. case 'o': // 2 strings to match.
  32093. if (memcmp(BuiltinName.data()+23, "und_r", 5))
  32094. break;
  32095. switch (BuiltinName[28]) {
  32096. default: break;
  32097. case 'i': // 1 string to match.
  32098. return Intrinsic::hexagon_A4_round_ri; // "__builtin_HEXAGON_A4_round_ri"
  32099. case 'r': // 1 string to match.
  32100. return Intrinsic::hexagon_A4_round_rr; // "__builtin_HEXAGON_A4_round_rr"
  32101. }
  32102. break;
  32103. }
  32104. break;
  32105. case 't': // 1 string to match.
  32106. if (memcmp(BuiltinName.data()+22, "lbmatch", 7))
  32107. break;
  32108. return Intrinsic::hexagon_A4_tlbmatch; // "__builtin_HEXAGON_A4_tlbmatch"
  32109. case 'v': // 6 strings to match.
  32110. if (memcmp(BuiltinName.data()+22, "cmp", 3))
  32111. break;
  32112. switch (BuiltinName[25]) {
  32113. default: break;
  32114. case 'b': // 2 strings to match.
  32115. switch (BuiltinName[26]) {
  32116. default: break;
  32117. case 'e': // 1 string to match.
  32118. if (memcmp(BuiltinName.data()+27, "qi", 2))
  32119. break;
  32120. return Intrinsic::hexagon_A4_vcmpbeqi; // "__builtin_HEXAGON_A4_vcmpbeqi"
  32121. case 'g': // 1 string to match.
  32122. if (memcmp(BuiltinName.data()+27, "ti", 2))
  32123. break;
  32124. return Intrinsic::hexagon_A4_vcmpbgti; // "__builtin_HEXAGON_A4_vcmpbgti"
  32125. }
  32126. break;
  32127. case 'h': // 2 strings to match.
  32128. switch (BuiltinName[26]) {
  32129. default: break;
  32130. case 'e': // 1 string to match.
  32131. if (memcmp(BuiltinName.data()+27, "qi", 2))
  32132. break;
  32133. return Intrinsic::hexagon_A4_vcmpheqi; // "__builtin_HEXAGON_A4_vcmpheqi"
  32134. case 'g': // 1 string to match.
  32135. if (memcmp(BuiltinName.data()+27, "ti", 2))
  32136. break;
  32137. return Intrinsic::hexagon_A4_vcmphgti; // "__builtin_HEXAGON_A4_vcmphgti"
  32138. }
  32139. break;
  32140. case 'w': // 2 strings to match.
  32141. switch (BuiltinName[26]) {
  32142. default: break;
  32143. case 'e': // 1 string to match.
  32144. if (memcmp(BuiltinName.data()+27, "qi", 2))
  32145. break;
  32146. return Intrinsic::hexagon_A4_vcmpweqi; // "__builtin_HEXAGON_A4_vcmpweqi"
  32147. case 'g': // 1 string to match.
  32148. if (memcmp(BuiltinName.data()+27, "ti", 2))
  32149. break;
  32150. return Intrinsic::hexagon_A4_vcmpwgti; // "__builtin_HEXAGON_A4_vcmpwgti"
  32151. }
  32152. break;
  32153. }
  32154. break;
  32155. }
  32156. break;
  32157. case '5': // 1 string to match.
  32158. if (memcmp(BuiltinName.data()+20, "_vaddhubs", 9))
  32159. break;
  32160. return Intrinsic::hexagon_A5_vaddhubs; // "__builtin_HEXAGON_A5_vaddhubs"
  32161. }
  32162. break;
  32163. case 'C': // 5 strings to match.
  32164. switch (BuiltinName[19]) {
  32165. default: break;
  32166. case '2': // 1 string to match.
  32167. if (memcmp(BuiltinName.data()+20, "_bitsclri", 9))
  32168. break;
  32169. return Intrinsic::hexagon_C2_bitsclri; // "__builtin_HEXAGON_C2_bitsclri"
  32170. case '4': // 4 strings to match.
  32171. if (BuiltinName[20] != '_')
  32172. break;
  32173. switch (BuiltinName[21]) {
  32174. default: break;
  32175. case 'a': // 1 string to match.
  32176. if (memcmp(BuiltinName.data()+22, "nd_andn", 7))
  32177. break;
  32178. return Intrinsic::hexagon_C4_and_andn; // "__builtin_HEXAGON_C4_and_andn"
  32179. case 'c': // 1 string to match.
  32180. if (memcmp(BuiltinName.data()+22, "mplteui", 7))
  32181. break;
  32182. return Intrinsic::hexagon_C4_cmplteui; // "__builtin_HEXAGON_C4_cmplteui"
  32183. case 'n': // 2 strings to match.
  32184. if (memcmp(BuiltinName.data()+22, "bits", 4))
  32185. break;
  32186. switch (BuiltinName[26]) {
  32187. default: break;
  32188. case 'c': // 1 string to match.
  32189. if (memcmp(BuiltinName.data()+27, "lr", 2))
  32190. break;
  32191. return Intrinsic::hexagon_C4_nbitsclr; // "__builtin_HEXAGON_C4_nbitsclr"
  32192. case 's': // 1 string to match.
  32193. if (memcmp(BuiltinName.data()+27, "et", 2))
  32194. break;
  32195. return Intrinsic::hexagon_C4_nbitsset; // "__builtin_HEXAGON_C4_nbitsset"
  32196. }
  32197. break;
  32198. }
  32199. break;
  32200. }
  32201. break;
  32202. case 'F': // 8 strings to match.
  32203. if (memcmp(BuiltinName.data()+19, "2_", 2))
  32204. break;
  32205. switch (BuiltinName[21]) {
  32206. default: break;
  32207. case 'd': // 4 strings to match.
  32208. if (memcmp(BuiltinName.data()+22, "ff", 2))
  32209. break;
  32210. switch (BuiltinName[24]) {
  32211. default: break;
  32212. case 'i': // 3 strings to match.
  32213. if (memcmp(BuiltinName.data()+25, "xup", 3))
  32214. break;
  32215. switch (BuiltinName[28]) {
  32216. default: break;
  32217. case 'd': // 1 string to match.
  32218. return Intrinsic::hexagon_F2_dffixupd; // "__builtin_HEXAGON_F2_dffixupd"
  32219. case 'n': // 1 string to match.
  32220. return Intrinsic::hexagon_F2_dffixupn; // "__builtin_HEXAGON_F2_dffixupn"
  32221. case 'r': // 1 string to match.
  32222. return Intrinsic::hexagon_F2_dffixupr; // "__builtin_HEXAGON_F2_dffixupr"
  32223. }
  32224. break;
  32225. case 'm': // 1 string to match.
  32226. if (memcmp(BuiltinName.data()+25, "a_sc", 4))
  32227. break;
  32228. return Intrinsic::hexagon_F2_dffma_sc; // "__builtin_HEXAGON_F2_dffma_sc"
  32229. }
  32230. break;
  32231. case 's': // 4 strings to match.
  32232. if (memcmp(BuiltinName.data()+22, "ff", 2))
  32233. break;
  32234. switch (BuiltinName[24]) {
  32235. default: break;
  32236. case 'i': // 3 strings to match.
  32237. if (memcmp(BuiltinName.data()+25, "xup", 3))
  32238. break;
  32239. switch (BuiltinName[28]) {
  32240. default: break;
  32241. case 'd': // 1 string to match.
  32242. return Intrinsic::hexagon_F2_sffixupd; // "__builtin_HEXAGON_F2_sffixupd"
  32243. case 'n': // 1 string to match.
  32244. return Intrinsic::hexagon_F2_sffixupn; // "__builtin_HEXAGON_F2_sffixupn"
  32245. case 'r': // 1 string to match.
  32246. return Intrinsic::hexagon_F2_sffixupr; // "__builtin_HEXAGON_F2_sffixupr"
  32247. }
  32248. break;
  32249. case 'm': // 1 string to match.
  32250. if (memcmp(BuiltinName.data()+25, "a_sc", 4))
  32251. break;
  32252. return Intrinsic::hexagon_F2_sffma_sc; // "__builtin_HEXAGON_F2_sffma_sc"
  32253. }
  32254. break;
  32255. }
  32256. break;
  32257. case 'M': // 29 strings to match.
  32258. switch (BuiltinName[19]) {
  32259. default: break;
  32260. case '2': // 18 strings to match.
  32261. if (BuiltinName[20] != '_')
  32262. break;
  32263. switch (BuiltinName[21]) {
  32264. default: break;
  32265. case 'c': // 10 strings to match.
  32266. switch (BuiltinName[22]) {
  32267. default: break;
  32268. case 'm': // 8 strings to match.
  32269. switch (BuiltinName[23]) {
  32270. default: break;
  32271. case 'a': // 4 strings to match.
  32272. if (BuiltinName[24] != 'c')
  32273. break;
  32274. switch (BuiltinName[25]) {
  32275. default: break;
  32276. case 'i': // 1 string to match.
  32277. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32278. break;
  32279. return Intrinsic::hexagon_M2_cmaci_s0; // "__builtin_HEXAGON_M2_cmaci_s0"
  32280. case 'r': // 1 string to match.
  32281. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32282. break;
  32283. return Intrinsic::hexagon_M2_cmacr_s0; // "__builtin_HEXAGON_M2_cmacr_s0"
  32284. case 's': // 2 strings to match.
  32285. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32286. break;
  32287. switch (BuiltinName[28]) {
  32288. default: break;
  32289. case '0': // 1 string to match.
  32290. return Intrinsic::hexagon_M2_cmacs_s0; // "__builtin_HEXAGON_M2_cmacs_s0"
  32291. case '1': // 1 string to match.
  32292. return Intrinsic::hexagon_M2_cmacs_s1; // "__builtin_HEXAGON_M2_cmacs_s1"
  32293. }
  32294. break;
  32295. }
  32296. break;
  32297. case 'p': // 4 strings to match.
  32298. if (BuiltinName[24] != 'y')
  32299. break;
  32300. switch (BuiltinName[25]) {
  32301. default: break;
  32302. case 'i': // 1 string to match.
  32303. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32304. break;
  32305. return Intrinsic::hexagon_M2_cmpyi_s0; // "__builtin_HEXAGON_M2_cmpyi_s0"
  32306. case 'r': // 1 string to match.
  32307. if (memcmp(BuiltinName.data()+26, "_s0", 3))
  32308. break;
  32309. return Intrinsic::hexagon_M2_cmpyr_s0; // "__builtin_HEXAGON_M2_cmpyr_s0"
  32310. case 's': // 2 strings to match.
  32311. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32312. break;
  32313. switch (BuiltinName[28]) {
  32314. default: break;
  32315. case '0': // 1 string to match.
  32316. return Intrinsic::hexagon_M2_cmpys_s0; // "__builtin_HEXAGON_M2_cmpys_s0"
  32317. case '1': // 1 string to match.
  32318. return Intrinsic::hexagon_M2_cmpys_s1; // "__builtin_HEXAGON_M2_cmpys_s1"
  32319. }
  32320. break;
  32321. }
  32322. break;
  32323. }
  32324. break;
  32325. case 'n': // 2 strings to match.
  32326. if (memcmp(BuiltinName.data()+23, "acs_s", 5))
  32327. break;
  32328. switch (BuiltinName[28]) {
  32329. default: break;
  32330. case '0': // 1 string to match.
  32331. return Intrinsic::hexagon_M2_cnacs_s0; // "__builtin_HEXAGON_M2_cnacs_s0"
  32332. case '1': // 1 string to match.
  32333. return Intrinsic::hexagon_M2_cnacs_s1; // "__builtin_HEXAGON_M2_cnacs_s1"
  32334. }
  32335. break;
  32336. }
  32337. break;
  32338. case 'm': // 5 strings to match.
  32339. switch (BuiltinName[22]) {
  32340. default: break;
  32341. case 'm': // 4 strings to match.
  32342. if (memcmp(BuiltinName.data()+23, "py", 2))
  32343. break;
  32344. switch (BuiltinName[25]) {
  32345. default: break;
  32346. case 'h': // 2 strings to match.
  32347. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32348. break;
  32349. switch (BuiltinName[28]) {
  32350. default: break;
  32351. case '0': // 1 string to match.
  32352. return Intrinsic::hexagon_M2_mmpyh_s0; // "__builtin_HEXAGON_M2_mmpyh_s0"
  32353. case '1': // 1 string to match.
  32354. return Intrinsic::hexagon_M2_mmpyh_s1; // "__builtin_HEXAGON_M2_mmpyh_s1"
  32355. }
  32356. break;
  32357. case 'l': // 2 strings to match.
  32358. if (memcmp(BuiltinName.data()+26, "_s", 2))
  32359. break;
  32360. switch (BuiltinName[28]) {
  32361. default: break;
  32362. case '0': // 1 string to match.
  32363. return Intrinsic::hexagon_M2_mmpyl_s0; // "__builtin_HEXAGON_M2_mmpyl_s0"
  32364. case '1': // 1 string to match.
  32365. return Intrinsic::hexagon_M2_mmpyl_s1; // "__builtin_HEXAGON_M2_mmpyl_s1"
  32366. }
  32367. break;
  32368. }
  32369. break;
  32370. case 'p': // 1 string to match.
  32371. if (memcmp(BuiltinName.data()+23, "ysu_up", 6))
  32372. break;
  32373. return Intrinsic::hexagon_M2_mpysu_up; // "__builtin_HEXAGON_M2_mpysu_up"
  32374. }
  32375. break;
  32376. case 'v': // 2 strings to match.
  32377. if (memcmp(BuiltinName.data()+22, "rm", 2))
  32378. break;
  32379. switch (BuiltinName[24]) {
  32380. default: break;
  32381. case 'a': // 1 string to match.
  32382. if (memcmp(BuiltinName.data()+25, "c_s0", 4))
  32383. break;
  32384. return Intrinsic::hexagon_M2_vrmac_s0; // "__builtin_HEXAGON_M2_vrmac_s0"
  32385. case 'p': // 1 string to match.
  32386. if (memcmp(BuiltinName.data()+25, "y_s0", 4))
  32387. break;
  32388. return Intrinsic::hexagon_M2_vrmpy_s0; // "__builtin_HEXAGON_M2_vrmpy_s0"
  32389. }
  32390. break;
  32391. case 'x': // 1 string to match.
  32392. if (memcmp(BuiltinName.data()+22, "or_xacc", 7))
  32393. break;
  32394. return Intrinsic::hexagon_M2_xor_xacc; // "__builtin_HEXAGON_M2_xor_xacc"
  32395. }
  32396. break;
  32397. case '4': // 5 strings to match.
  32398. if (BuiltinName[20] != '_')
  32399. break;
  32400. switch (BuiltinName[21]) {
  32401. default: break;
  32402. case 'a': // 1 string to match.
  32403. if (memcmp(BuiltinName.data()+22, "nd_andn", 7))
  32404. break;
  32405. return Intrinsic::hexagon_M4_and_andn; // "__builtin_HEXAGON_M4_and_andn"
  32406. case 'c': // 2 strings to match.
  32407. if (memcmp(BuiltinName.data()+22, "mpy", 3))
  32408. break;
  32409. switch (BuiltinName[25]) {
  32410. default: break;
  32411. case 'i': // 1 string to match.
  32412. if (memcmp(BuiltinName.data()+26, "_wh", 3))
  32413. break;
  32414. return Intrinsic::hexagon_M4_cmpyi_wh; // "__builtin_HEXAGON_M4_cmpyi_wh"
  32415. case 'r': // 1 string to match.
  32416. if (memcmp(BuiltinName.data()+26, "_wh", 3))
  32417. break;
  32418. return Intrinsic::hexagon_M4_cmpyr_wh; // "__builtin_HEXAGON_M4_cmpyr_wh"
  32419. }
  32420. break;
  32421. case 'x': // 2 strings to match.
  32422. if (memcmp(BuiltinName.data()+22, "or_", 3))
  32423. break;
  32424. switch (BuiltinName[25]) {
  32425. default: break;
  32426. case 'a': // 1 string to match.
  32427. if (memcmp(BuiltinName.data()+26, "ndn", 3))
  32428. break;
  32429. return Intrinsic::hexagon_M4_xor_andn; // "__builtin_HEXAGON_M4_xor_andn"
  32430. case 'x': // 1 string to match.
  32431. if (memcmp(BuiltinName.data()+26, "acc", 3))
  32432. break;
  32433. return Intrinsic::hexagon_M4_xor_xacc; // "__builtin_HEXAGON_M4_xor_xacc"
  32434. }
  32435. break;
  32436. }
  32437. break;
  32438. case '5': // 6 strings to match.
  32439. if (memcmp(BuiltinName.data()+20, "_v", 2))
  32440. break;
  32441. switch (BuiltinName[22]) {
  32442. default: break;
  32443. case 'd': // 2 strings to match.
  32444. if (BuiltinName[23] != 'm')
  32445. break;
  32446. switch (BuiltinName[24]) {
  32447. default: break;
  32448. case 'a': // 1 string to match.
  32449. if (memcmp(BuiltinName.data()+25, "cbsu", 4))
  32450. break;
  32451. return Intrinsic::hexagon_M5_vdmacbsu; // "__builtin_HEXAGON_M5_vdmacbsu"
  32452. case 'p': // 1 string to match.
  32453. if (memcmp(BuiltinName.data()+25, "ybsu", 4))
  32454. break;
  32455. return Intrinsic::hexagon_M5_vdmpybsu; // "__builtin_HEXAGON_M5_vdmpybsu"
  32456. }
  32457. break;
  32458. case 'r': // 4 strings to match.
  32459. if (BuiltinName[23] != 'm')
  32460. break;
  32461. switch (BuiltinName[24]) {
  32462. default: break;
  32463. case 'a': // 2 strings to match.
  32464. if (memcmp(BuiltinName.data()+25, "cb", 2))
  32465. break;
  32466. switch (BuiltinName[27]) {
  32467. default: break;
  32468. case 's': // 1 string to match.
  32469. if (BuiltinName[28] != 'u')
  32470. break;
  32471. return Intrinsic::hexagon_M5_vrmacbsu; // "__builtin_HEXAGON_M5_vrmacbsu"
  32472. case 'u': // 1 string to match.
  32473. if (BuiltinName[28] != 'u')
  32474. break;
  32475. return Intrinsic::hexagon_M5_vrmacbuu; // "__builtin_HEXAGON_M5_vrmacbuu"
  32476. }
  32477. break;
  32478. case 'p': // 2 strings to match.
  32479. if (memcmp(BuiltinName.data()+25, "yb", 2))
  32480. break;
  32481. switch (BuiltinName[27]) {
  32482. default: break;
  32483. case 's': // 1 string to match.
  32484. if (BuiltinName[28] != 'u')
  32485. break;
  32486. return Intrinsic::hexagon_M5_vrmpybsu; // "__builtin_HEXAGON_M5_vrmpybsu"
  32487. case 'u': // 1 string to match.
  32488. if (BuiltinName[28] != 'u')
  32489. break;
  32490. return Intrinsic::hexagon_M5_vrmpybuu; // "__builtin_HEXAGON_M5_vrmpybuu"
  32491. }
  32492. break;
  32493. }
  32494. break;
  32495. }
  32496. break;
  32497. }
  32498. break;
  32499. case 'S': // 35 strings to match.
  32500. switch (BuiltinName[19]) {
  32501. default: break;
  32502. case '2': // 31 strings to match.
  32503. if (BuiltinName[20] != '_')
  32504. break;
  32505. switch (BuiltinName[21]) {
  32506. default: break;
  32507. case 'a': // 8 strings to match.
  32508. if (BuiltinName[22] != 's')
  32509. break;
  32510. switch (BuiltinName[23]) {
  32511. default: break;
  32512. case 'l': // 4 strings to match.
  32513. if (BuiltinName[24] != '_')
  32514. break;
  32515. switch (BuiltinName[25]) {
  32516. default: break;
  32517. case 'i': // 2 strings to match.
  32518. if (memcmp(BuiltinName.data()+26, "_v", 2))
  32519. break;
  32520. switch (BuiltinName[28]) {
  32521. default: break;
  32522. case 'h': // 1 string to match.
  32523. return Intrinsic::hexagon_S2_asl_i_vh; // "__builtin_HEXAGON_S2_asl_i_vh"
  32524. case 'w': // 1 string to match.
  32525. return Intrinsic::hexagon_S2_asl_i_vw; // "__builtin_HEXAGON_S2_asl_i_vw"
  32526. }
  32527. break;
  32528. case 'r': // 2 strings to match.
  32529. if (memcmp(BuiltinName.data()+26, "_v", 2))
  32530. break;
  32531. switch (BuiltinName[28]) {
  32532. default: break;
  32533. case 'h': // 1 string to match.
  32534. return Intrinsic::hexagon_S2_asl_r_vh; // "__builtin_HEXAGON_S2_asl_r_vh"
  32535. case 'w': // 1 string to match.
  32536. return Intrinsic::hexagon_S2_asl_r_vw; // "__builtin_HEXAGON_S2_asl_r_vw"
  32537. }
  32538. break;
  32539. }
  32540. break;
  32541. case 'r': // 4 strings to match.
  32542. if (BuiltinName[24] != '_')
  32543. break;
  32544. switch (BuiltinName[25]) {
  32545. default: break;
  32546. case 'i': // 2 strings to match.
  32547. if (memcmp(BuiltinName.data()+26, "_v", 2))
  32548. break;
  32549. switch (BuiltinName[28]) {
  32550. default: break;
  32551. case 'h': // 1 string to match.
  32552. return Intrinsic::hexagon_S2_asr_i_vh; // "__builtin_HEXAGON_S2_asr_i_vh"
  32553. case 'w': // 1 string to match.
  32554. return Intrinsic::hexagon_S2_asr_i_vw; // "__builtin_HEXAGON_S2_asr_i_vw"
  32555. }
  32556. break;
  32557. case 'r': // 2 strings to match.
  32558. if (memcmp(BuiltinName.data()+26, "_v", 2))
  32559. break;
  32560. switch (BuiltinName[28]) {
  32561. default: break;
  32562. case 'h': // 1 string to match.
  32563. return Intrinsic::hexagon_S2_asr_r_vh; // "__builtin_HEXAGON_S2_asr_r_vh"
  32564. case 'w': // 1 string to match.
  32565. return Intrinsic::hexagon_S2_asr_r_vw; // "__builtin_HEXAGON_S2_asr_r_vw"
  32566. }
  32567. break;
  32568. }
  32569. break;
  32570. }
  32571. break;
  32572. case 'c': // 2 strings to match.
  32573. if (memcmp(BuiltinName.data()+22, "lrbit_", 6))
  32574. break;
  32575. switch (BuiltinName[28]) {
  32576. default: break;
  32577. case 'i': // 1 string to match.
  32578. return Intrinsic::hexagon_S2_clrbit_i; // "__builtin_HEXAGON_S2_clrbit_i"
  32579. case 'r': // 1 string to match.
  32580. return Intrinsic::hexagon_S2_clrbit_r; // "__builtin_HEXAGON_S2_clrbit_r"
  32581. }
  32582. break;
  32583. case 'e': // 1 string to match.
  32584. if (memcmp(BuiltinName.data()+22, "xtractu", 7))
  32585. break;
  32586. return Intrinsic::hexagon_S2_extractu; // "__builtin_HEXAGON_S2_extractu"
  32587. case 'l': // 6 strings to match.
  32588. if (BuiltinName[22] != 's')
  32589. break;
  32590. switch (BuiltinName[23]) {
  32591. default: break;
  32592. case 'l': // 2 strings to match.
  32593. if (memcmp(BuiltinName.data()+24, "_r_v", 4))
  32594. break;
  32595. switch (BuiltinName[28]) {
  32596. default: break;
  32597. case 'h': // 1 string to match.
  32598. return Intrinsic::hexagon_S2_lsl_r_vh; // "__builtin_HEXAGON_S2_lsl_r_vh"
  32599. case 'w': // 1 string to match.
  32600. return Intrinsic::hexagon_S2_lsl_r_vw; // "__builtin_HEXAGON_S2_lsl_r_vw"
  32601. }
  32602. break;
  32603. case 'r': // 4 strings to match.
  32604. if (BuiltinName[24] != '_')
  32605. break;
  32606. switch (BuiltinName[25]) {
  32607. default: break;
  32608. case 'i': // 2 strings to match.
  32609. if (memcmp(BuiltinName.data()+26, "_v", 2))
  32610. break;
  32611. switch (BuiltinName[28]) {
  32612. default: break;
  32613. case 'h': // 1 string to match.
  32614. return Intrinsic::hexagon_S2_lsr_i_vh; // "__builtin_HEXAGON_S2_lsr_i_vh"
  32615. case 'w': // 1 string to match.
  32616. return Intrinsic::hexagon_S2_lsr_i_vw; // "__builtin_HEXAGON_S2_lsr_i_vw"
  32617. }
  32618. break;
  32619. case 'r': // 2 strings to match.
  32620. if (memcmp(BuiltinName.data()+26, "_v", 2))
  32621. break;
  32622. switch (BuiltinName[28]) {
  32623. default: break;
  32624. case 'h': // 1 string to match.
  32625. return Intrinsic::hexagon_S2_lsr_r_vh; // "__builtin_HEXAGON_S2_lsr_r_vh"
  32626. case 'w': // 1 string to match.
  32627. return Intrinsic::hexagon_S2_lsr_r_vw; // "__builtin_HEXAGON_S2_lsr_r_vw"
  32628. }
  32629. break;
  32630. }
  32631. break;
  32632. }
  32633. break;
  32634. case 's': // 3 strings to match.
  32635. switch (BuiltinName[22]) {
  32636. default: break;
  32637. case 'e': // 2 strings to match.
  32638. if (memcmp(BuiltinName.data()+23, "tbit_", 5))
  32639. break;
  32640. switch (BuiltinName[28]) {
  32641. default: break;
  32642. case 'i': // 1 string to match.
  32643. return Intrinsic::hexagon_S2_setbit_i; // "__builtin_HEXAGON_S2_setbit_i"
  32644. case 'r': // 1 string to match.
  32645. return Intrinsic::hexagon_S2_setbit_r; // "__builtin_HEXAGON_S2_setbit_r"
  32646. }
  32647. break;
  32648. case 'v': // 1 string to match.
  32649. if (memcmp(BuiltinName.data()+23, "sathub", 6))
  32650. break;
  32651. return Intrinsic::hexagon_S2_svsathub; // "__builtin_HEXAGON_S2_svsathub"
  32652. }
  32653. break;
  32654. case 't': // 2 strings to match.
  32655. if (memcmp(BuiltinName.data()+22, "stbit_", 6))
  32656. break;
  32657. switch (BuiltinName[28]) {
  32658. default: break;
  32659. case 'i': // 1 string to match.
  32660. return Intrinsic::hexagon_S2_tstbit_i; // "__builtin_HEXAGON_S2_tstbit_i"
  32661. case 'r': // 1 string to match.
  32662. return Intrinsic::hexagon_S2_tstbit_r; // "__builtin_HEXAGON_S2_tstbit_r"
  32663. }
  32664. break;
  32665. case 'v': // 9 strings to match.
  32666. switch (BuiltinName[22]) {
  32667. default: break;
  32668. case 'a': // 2 strings to match.
  32669. if (memcmp(BuiltinName.data()+23, "lign", 4))
  32670. break;
  32671. switch (BuiltinName[27]) {
  32672. default: break;
  32673. case 'i': // 1 string to match.
  32674. if (BuiltinName[28] != 'b')
  32675. break;
  32676. return Intrinsic::hexagon_S2_valignib; // "__builtin_HEXAGON_S2_valignib"
  32677. case 'r': // 1 string to match.
  32678. if (BuiltinName[28] != 'b')
  32679. break;
  32680. return Intrinsic::hexagon_S2_valignrb; // "__builtin_HEXAGON_S2_valignrb"
  32681. }
  32682. break;
  32683. case 'c': // 1 string to match.
  32684. if (memcmp(BuiltinName.data()+23, "rotate", 6))
  32685. break;
  32686. return Intrinsic::hexagon_S2_vcrotate; // "__builtin_HEXAGON_S2_vcrotate"
  32687. case 's': // 2 strings to match.
  32688. if (memcmp(BuiltinName.data()+23, "platr", 5))
  32689. break;
  32690. switch (BuiltinName[28]) {
  32691. default: break;
  32692. case 'b': // 1 string to match.
  32693. return Intrinsic::hexagon_S2_vsplatrb; // "__builtin_HEXAGON_S2_vsplatrb"
  32694. case 'h': // 1 string to match.
  32695. return Intrinsic::hexagon_S2_vsplatrh; // "__builtin_HEXAGON_S2_vsplatrh"
  32696. }
  32697. break;
  32698. case 't': // 4 strings to match.
  32699. if (memcmp(BuiltinName.data()+23, "run", 3))
  32700. break;
  32701. switch (BuiltinName[26]) {
  32702. default: break;
  32703. case 'e': // 2 strings to match.
  32704. switch (BuiltinName[27]) {
  32705. default: break;
  32706. case 'h': // 1 string to match.
  32707. if (BuiltinName[28] != 'b')
  32708. break;
  32709. return Intrinsic::hexagon_S2_vtrunehb; // "__builtin_HEXAGON_S2_vtrunehb"
  32710. case 'w': // 1 string to match.
  32711. if (BuiltinName[28] != 'h')
  32712. break;
  32713. return Intrinsic::hexagon_S2_vtrunewh; // "__builtin_HEXAGON_S2_vtrunewh"
  32714. }
  32715. break;
  32716. case 'o': // 2 strings to match.
  32717. switch (BuiltinName[27]) {
  32718. default: break;
  32719. case 'h': // 1 string to match.
  32720. if (BuiltinName[28] != 'b')
  32721. break;
  32722. return Intrinsic::hexagon_S2_vtrunohb; // "__builtin_HEXAGON_S2_vtrunohb"
  32723. case 'w': // 1 string to match.
  32724. if (BuiltinName[28] != 'h')
  32725. break;
  32726. return Intrinsic::hexagon_S2_vtrunowh; // "__builtin_HEXAGON_S2_vtrunowh"
  32727. }
  32728. break;
  32729. }
  32730. break;
  32731. }
  32732. break;
  32733. }
  32734. break;
  32735. case '4': // 4 strings to match.
  32736. if (BuiltinName[20] != '_')
  32737. break;
  32738. switch (BuiltinName[21]) {
  32739. default: break;
  32740. case 'c': // 2 strings to match.
  32741. if (memcmp(BuiltinName.data()+22, "lbp", 3))
  32742. break;
  32743. switch (BuiltinName[25]) {
  32744. default: break;
  32745. case 'a': // 1 string to match.
  32746. if (memcmp(BuiltinName.data()+26, "ddi", 3))
  32747. break;
  32748. return Intrinsic::hexagon_S4_clbpaddi; // "__builtin_HEXAGON_S4_clbpaddi"
  32749. case 'n': // 1 string to match.
  32750. if (memcmp(BuiltinName.data()+26, "orm", 3))
  32751. break;
  32752. return Intrinsic::hexagon_S4_clbpnorm; // "__builtin_HEXAGON_S4_clbpnorm"
  32753. }
  32754. break;
  32755. case 'e': // 1 string to match.
  32756. if (memcmp(BuiltinName.data()+22, "xtractp", 7))
  32757. break;
  32758. return Intrinsic::hexagon_S4_extractp; // "__builtin_HEXAGON_S4_extractp"
  32759. case 'o': // 1 string to match.
  32760. if (memcmp(BuiltinName.data()+22, "r_andix", 7))
  32761. break;
  32762. return Intrinsic::hexagon_S4_or_andix; // "__builtin_HEXAGON_S4_or_andix"
  32763. }
  32764. break;
  32765. }
  32766. break;
  32767. }
  32768. break;
  32769. case 30: // 81 strings to match.
  32770. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  32771. break;
  32772. switch (BuiltinName[18]) {
  32773. default: break;
  32774. case 'A': // 11 strings to match.
  32775. switch (BuiltinName[19]) {
  32776. default: break;
  32777. case '2': // 3 strings to match.
  32778. if (BuiltinName[20] != '_')
  32779. break;
  32780. switch (BuiltinName[21]) {
  32781. default: break;
  32782. case 'c': // 1 string to match.
  32783. if (memcmp(BuiltinName.data()+22, "ombineii", 8))
  32784. break;
  32785. return Intrinsic::hexagon_A2_combineii; // "__builtin_HEXAGON_A2_combineii"
  32786. case 'v': // 2 strings to match.
  32787. switch (BuiltinName[22]) {
  32788. default: break;
  32789. case 'a': // 1 string to match.
  32790. if (memcmp(BuiltinName.data()+23, "ddb_map", 7))
  32791. break;
  32792. return Intrinsic::hexagon_A2_vaddb_map; // "__builtin_HEXAGON_A2_vaddb_map"
  32793. case 's': // 1 string to match.
  32794. if (memcmp(BuiltinName.data()+23, "ubb_map", 7))
  32795. break;
  32796. return Intrinsic::hexagon_A2_vsubb_map; // "__builtin_HEXAGON_A2_vsubb_map"
  32797. }
  32798. break;
  32799. }
  32800. break;
  32801. case '4': // 8 strings to match.
  32802. if (BuiltinName[20] != '_')
  32803. break;
  32804. switch (BuiltinName[21]) {
  32805. default: break;
  32806. case 'b': // 1 string to match.
  32807. if (memcmp(BuiltinName.data()+22, "itspliti", 8))
  32808. break;
  32809. return Intrinsic::hexagon_A4_bitspliti; // "__builtin_HEXAGON_A4_bitspliti"
  32810. case 'c': // 4 strings to match.
  32811. switch (BuiltinName[22]) {
  32812. default: break;
  32813. case 'o': // 2 strings to match.
  32814. if (memcmp(BuiltinName.data()+23, "mbine", 5))
  32815. break;
  32816. switch (BuiltinName[28]) {
  32817. default: break;
  32818. case 'i': // 1 string to match.
  32819. if (BuiltinName[29] != 'r')
  32820. break;
  32821. return Intrinsic::hexagon_A4_combineir; // "__builtin_HEXAGON_A4_combineir"
  32822. case 'r': // 1 string to match.
  32823. if (BuiltinName[29] != 'i')
  32824. break;
  32825. return Intrinsic::hexagon_A4_combineri; // "__builtin_HEXAGON_A4_combineri"
  32826. }
  32827. break;
  32828. case 'r': // 2 strings to match.
  32829. if (memcmp(BuiltinName.data()+23, "ound_r", 6))
  32830. break;
  32831. switch (BuiltinName[29]) {
  32832. default: break;
  32833. case 'i': // 1 string to match.
  32834. return Intrinsic::hexagon_A4_cround_ri; // "__builtin_HEXAGON_A4_cround_ri"
  32835. case 'r': // 1 string to match.
  32836. return Intrinsic::hexagon_A4_cround_rr; // "__builtin_HEXAGON_A4_cround_rr"
  32837. }
  32838. break;
  32839. }
  32840. break;
  32841. case 'v': // 3 strings to match.
  32842. if (memcmp(BuiltinName.data()+22, "cmp", 3))
  32843. break;
  32844. switch (BuiltinName[25]) {
  32845. default: break;
  32846. case 'b': // 1 string to match.
  32847. if (memcmp(BuiltinName.data()+26, "gtui", 4))
  32848. break;
  32849. return Intrinsic::hexagon_A4_vcmpbgtui; // "__builtin_HEXAGON_A4_vcmpbgtui"
  32850. case 'h': // 1 string to match.
  32851. if (memcmp(BuiltinName.data()+26, "gtui", 4))
  32852. break;
  32853. return Intrinsic::hexagon_A4_vcmphgtui; // "__builtin_HEXAGON_A4_vcmphgtui"
  32854. case 'w': // 1 string to match.
  32855. if (memcmp(BuiltinName.data()+26, "gtui", 4))
  32856. break;
  32857. return Intrinsic::hexagon_A4_vcmpwgtui; // "__builtin_HEXAGON_A4_vcmpwgtui"
  32858. }
  32859. break;
  32860. }
  32861. break;
  32862. }
  32863. break;
  32864. case 'C': // 2 strings to match.
  32865. switch (BuiltinName[19]) {
  32866. default: break;
  32867. case '2': // 1 string to match.
  32868. if (memcmp(BuiltinName.data()+20, "_pxfer_map", 10))
  32869. break;
  32870. return Intrinsic::hexagon_C2_pxfer_map; // "__builtin_HEXAGON_C2_pxfer_map"
  32871. case '4': // 1 string to match.
  32872. if (memcmp(BuiltinName.data()+20, "_nbitsclri", 10))
  32873. break;
  32874. return Intrinsic::hexagon_C4_nbitsclri; // "__builtin_HEXAGON_C4_nbitsclri"
  32875. }
  32876. break;
  32877. case 'F': // 12 strings to match.
  32878. if (memcmp(BuiltinName.data()+19, "2_", 2))
  32879. break;
  32880. switch (BuiltinName[21]) {
  32881. default: break;
  32882. case 'c': // 8 strings to match.
  32883. if (memcmp(BuiltinName.data()+22, "onv_", 4))
  32884. break;
  32885. switch (BuiltinName[26]) {
  32886. default: break;
  32887. case 'd': // 4 strings to match.
  32888. switch (BuiltinName[27]) {
  32889. default: break;
  32890. case '2': // 2 strings to match.
  32891. switch (BuiltinName[28]) {
  32892. default: break;
  32893. case 'd': // 1 string to match.
  32894. if (BuiltinName[29] != 'f')
  32895. break;
  32896. return Intrinsic::hexagon_F2_conv_d2df; // "__builtin_HEXAGON_F2_conv_d2df"
  32897. case 's': // 1 string to match.
  32898. if (BuiltinName[29] != 'f')
  32899. break;
  32900. return Intrinsic::hexagon_F2_conv_d2sf; // "__builtin_HEXAGON_F2_conv_d2sf"
  32901. }
  32902. break;
  32903. case 'f': // 2 strings to match.
  32904. if (BuiltinName[28] != '2')
  32905. break;
  32906. switch (BuiltinName[29]) {
  32907. default: break;
  32908. case 'd': // 1 string to match.
  32909. return Intrinsic::hexagon_F2_conv_df2d; // "__builtin_HEXAGON_F2_conv_df2d"
  32910. case 'w': // 1 string to match.
  32911. return Intrinsic::hexagon_F2_conv_df2w; // "__builtin_HEXAGON_F2_conv_df2w"
  32912. }
  32913. break;
  32914. }
  32915. break;
  32916. case 's': // 2 strings to match.
  32917. if (memcmp(BuiltinName.data()+27, "f2", 2))
  32918. break;
  32919. switch (BuiltinName[29]) {
  32920. default: break;
  32921. case 'd': // 1 string to match.
  32922. return Intrinsic::hexagon_F2_conv_sf2d; // "__builtin_HEXAGON_F2_conv_sf2d"
  32923. case 'w': // 1 string to match.
  32924. return Intrinsic::hexagon_F2_conv_sf2w; // "__builtin_HEXAGON_F2_conv_sf2w"
  32925. }
  32926. break;
  32927. case 'w': // 2 strings to match.
  32928. if (BuiltinName[27] != '2')
  32929. break;
  32930. switch (BuiltinName[28]) {
  32931. default: break;
  32932. case 'd': // 1 string to match.
  32933. if (BuiltinName[29] != 'f')
  32934. break;
  32935. return Intrinsic::hexagon_F2_conv_w2df; // "__builtin_HEXAGON_F2_conv_w2df"
  32936. case 's': // 1 string to match.
  32937. if (BuiltinName[29] != 'f')
  32938. break;
  32939. return Intrinsic::hexagon_F2_conv_w2sf; // "__builtin_HEXAGON_F2_conv_w2sf"
  32940. }
  32941. break;
  32942. }
  32943. break;
  32944. case 'd': // 2 strings to match.
  32945. if (memcmp(BuiltinName.data()+22, "ffm", 3))
  32946. break;
  32947. switch (BuiltinName[25]) {
  32948. default: break;
  32949. case 'a': // 1 string to match.
  32950. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  32951. break;
  32952. return Intrinsic::hexagon_F2_dffma_lib; // "__builtin_HEXAGON_F2_dffma_lib"
  32953. case 's': // 1 string to match.
  32954. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  32955. break;
  32956. return Intrinsic::hexagon_F2_dffms_lib; // "__builtin_HEXAGON_F2_dffms_lib"
  32957. }
  32958. break;
  32959. case 's': // 2 strings to match.
  32960. if (memcmp(BuiltinName.data()+22, "ffm", 3))
  32961. break;
  32962. switch (BuiltinName[25]) {
  32963. default: break;
  32964. case 'a': // 1 string to match.
  32965. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  32966. break;
  32967. return Intrinsic::hexagon_F2_sffma_lib; // "__builtin_HEXAGON_F2_sffma_lib"
  32968. case 's': // 1 string to match.
  32969. if (memcmp(BuiltinName.data()+26, "_lib", 4))
  32970. break;
  32971. return Intrinsic::hexagon_F2_sffms_lib; // "__builtin_HEXAGON_F2_sffms_lib"
  32972. }
  32973. break;
  32974. }
  32975. break;
  32976. case 'M': // 44 strings to match.
  32977. switch (BuiltinName[19]) {
  32978. default: break;
  32979. case '2': // 41 strings to match.
  32980. if (BuiltinName[20] != '_')
  32981. break;
  32982. switch (BuiltinName[21]) {
  32983. default: break;
  32984. case 'c': // 8 strings to match.
  32985. switch (BuiltinName[22]) {
  32986. default: break;
  32987. case 'm': // 6 strings to match.
  32988. switch (BuiltinName[23]) {
  32989. default: break;
  32990. case 'a': // 2 strings to match.
  32991. if (memcmp(BuiltinName.data()+24, "csc_s", 5))
  32992. break;
  32993. switch (BuiltinName[29]) {
  32994. default: break;
  32995. case '0': // 1 string to match.
  32996. return Intrinsic::hexagon_M2_cmacsc_s0; // "__builtin_HEXAGON_M2_cmacsc_s0"
  32997. case '1': // 1 string to match.
  32998. return Intrinsic::hexagon_M2_cmacsc_s1; // "__builtin_HEXAGON_M2_cmacsc_s1"
  32999. }
  33000. break;
  33001. case 'p': // 4 strings to match.
  33002. if (BuiltinName[24] != 'y')
  33003. break;
  33004. switch (BuiltinName[25]) {
  33005. default: break;
  33006. case 'r': // 2 strings to match.
  33007. if (memcmp(BuiltinName.data()+26, "s_s", 3))
  33008. break;
  33009. switch (BuiltinName[29]) {
  33010. default: break;
  33011. case '0': // 1 string to match.
  33012. return Intrinsic::hexagon_M2_cmpyrs_s0; // "__builtin_HEXAGON_M2_cmpyrs_s0"
  33013. case '1': // 1 string to match.
  33014. return Intrinsic::hexagon_M2_cmpyrs_s1; // "__builtin_HEXAGON_M2_cmpyrs_s1"
  33015. }
  33016. break;
  33017. case 's': // 2 strings to match.
  33018. if (memcmp(BuiltinName.data()+26, "c_s", 3))
  33019. break;
  33020. switch (BuiltinName[29]) {
  33021. default: break;
  33022. case '0': // 1 string to match.
  33023. return Intrinsic::hexagon_M2_cmpysc_s0; // "__builtin_HEXAGON_M2_cmpysc_s0"
  33024. case '1': // 1 string to match.
  33025. return Intrinsic::hexagon_M2_cmpysc_s1; // "__builtin_HEXAGON_M2_cmpysc_s1"
  33026. }
  33027. break;
  33028. }
  33029. break;
  33030. }
  33031. break;
  33032. case 'n': // 2 strings to match.
  33033. if (memcmp(BuiltinName.data()+23, "acsc_s", 6))
  33034. break;
  33035. switch (BuiltinName[29]) {
  33036. default: break;
  33037. case '0': // 1 string to match.
  33038. return Intrinsic::hexagon_M2_cnacsc_s0; // "__builtin_HEXAGON_M2_cnacsc_s0"
  33039. case '1': // 1 string to match.
  33040. return Intrinsic::hexagon_M2_cnacsc_s1; // "__builtin_HEXAGON_M2_cnacsc_s1"
  33041. }
  33042. break;
  33043. }
  33044. break;
  33045. case 'h': // 2 strings to match.
  33046. if (memcmp(BuiltinName.data()+22, "mmpy", 4))
  33047. break;
  33048. switch (BuiltinName[26]) {
  33049. default: break;
  33050. case 'h': // 1 string to match.
  33051. if (memcmp(BuiltinName.data()+27, "_s1", 3))
  33052. break;
  33053. return Intrinsic::hexagon_M2_hmmpyh_s1; // "__builtin_HEXAGON_M2_hmmpyh_s1"
  33054. case 'l': // 1 string to match.
  33055. if (memcmp(BuiltinName.data()+27, "_s1", 3))
  33056. break;
  33057. return Intrinsic::hexagon_M2_hmmpyl_s1; // "__builtin_HEXAGON_M2_hmmpyl_s1"
  33058. }
  33059. break;
  33060. case 'm': // 21 strings to match.
  33061. switch (BuiltinName[22]) {
  33062. default: break;
  33063. case 'm': // 12 strings to match.
  33064. switch (BuiltinName[23]) {
  33065. default: break;
  33066. case 'a': // 4 strings to match.
  33067. if (BuiltinName[24] != 'c')
  33068. break;
  33069. switch (BuiltinName[25]) {
  33070. default: break;
  33071. case 'h': // 2 strings to match.
  33072. if (memcmp(BuiltinName.data()+26, "s_s", 3))
  33073. break;
  33074. switch (BuiltinName[29]) {
  33075. default: break;
  33076. case '0': // 1 string to match.
  33077. return Intrinsic::hexagon_M2_mmachs_s0; // "__builtin_HEXAGON_M2_mmachs_s0"
  33078. case '1': // 1 string to match.
  33079. return Intrinsic::hexagon_M2_mmachs_s1; // "__builtin_HEXAGON_M2_mmachs_s1"
  33080. }
  33081. break;
  33082. case 'l': // 2 strings to match.
  33083. if (memcmp(BuiltinName.data()+26, "s_s", 3))
  33084. break;
  33085. switch (BuiltinName[29]) {
  33086. default: break;
  33087. case '0': // 1 string to match.
  33088. return Intrinsic::hexagon_M2_mmacls_s0; // "__builtin_HEXAGON_M2_mmacls_s0"
  33089. case '1': // 1 string to match.
  33090. return Intrinsic::hexagon_M2_mmacls_s1; // "__builtin_HEXAGON_M2_mmacls_s1"
  33091. }
  33092. break;
  33093. }
  33094. break;
  33095. case 'p': // 8 strings to match.
  33096. if (BuiltinName[24] != 'y')
  33097. break;
  33098. switch (BuiltinName[25]) {
  33099. default: break;
  33100. case 'h': // 2 strings to match.
  33101. if (memcmp(BuiltinName.data()+26, "_rs", 3))
  33102. break;
  33103. switch (BuiltinName[29]) {
  33104. default: break;
  33105. case '0': // 1 string to match.
  33106. return Intrinsic::hexagon_M2_mmpyh_rs0; // "__builtin_HEXAGON_M2_mmpyh_rs0"
  33107. case '1': // 1 string to match.
  33108. return Intrinsic::hexagon_M2_mmpyh_rs1; // "__builtin_HEXAGON_M2_mmpyh_rs1"
  33109. }
  33110. break;
  33111. case 'l': // 2 strings to match.
  33112. if (memcmp(BuiltinName.data()+26, "_rs", 3))
  33113. break;
  33114. switch (BuiltinName[29]) {
  33115. default: break;
  33116. case '0': // 1 string to match.
  33117. return Intrinsic::hexagon_M2_mmpyl_rs0; // "__builtin_HEXAGON_M2_mmpyl_rs0"
  33118. case '1': // 1 string to match.
  33119. return Intrinsic::hexagon_M2_mmpyl_rs1; // "__builtin_HEXAGON_M2_mmpyl_rs1"
  33120. }
  33121. break;
  33122. case 'u': // 4 strings to match.
  33123. switch (BuiltinName[26]) {
  33124. default: break;
  33125. case 'h': // 2 strings to match.
  33126. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33127. break;
  33128. switch (BuiltinName[29]) {
  33129. default: break;
  33130. case '0': // 1 string to match.
  33131. return Intrinsic::hexagon_M2_mmpyuh_s0; // "__builtin_HEXAGON_M2_mmpyuh_s0"
  33132. case '1': // 1 string to match.
  33133. return Intrinsic::hexagon_M2_mmpyuh_s1; // "__builtin_HEXAGON_M2_mmpyuh_s1"
  33134. }
  33135. break;
  33136. case 'l': // 2 strings to match.
  33137. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33138. break;
  33139. switch (BuiltinName[29]) {
  33140. default: break;
  33141. case '0': // 1 string to match.
  33142. return Intrinsic::hexagon_M2_mmpyul_s0; // "__builtin_HEXAGON_M2_mmpyul_s0"
  33143. case '1': // 1 string to match.
  33144. return Intrinsic::hexagon_M2_mmpyul_s1; // "__builtin_HEXAGON_M2_mmpyul_s1"
  33145. }
  33146. break;
  33147. }
  33148. break;
  33149. }
  33150. break;
  33151. }
  33152. break;
  33153. case 'p': // 9 strings to match.
  33154. if (memcmp(BuiltinName.data()+23, "y_", 2))
  33155. break;
  33156. switch (BuiltinName[25]) {
  33157. default: break;
  33158. case 'h': // 4 strings to match.
  33159. switch (BuiltinName[26]) {
  33160. default: break;
  33161. case 'h': // 2 strings to match.
  33162. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33163. break;
  33164. switch (BuiltinName[29]) {
  33165. default: break;
  33166. case '0': // 1 string to match.
  33167. return Intrinsic::hexagon_M2_mpy_hh_s0; // "__builtin_HEXAGON_M2_mpy_hh_s0"
  33168. case '1': // 1 string to match.
  33169. return Intrinsic::hexagon_M2_mpy_hh_s1; // "__builtin_HEXAGON_M2_mpy_hh_s1"
  33170. }
  33171. break;
  33172. case 'l': // 2 strings to match.
  33173. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33174. break;
  33175. switch (BuiltinName[29]) {
  33176. default: break;
  33177. case '0': // 1 string to match.
  33178. return Intrinsic::hexagon_M2_mpy_hl_s0; // "__builtin_HEXAGON_M2_mpy_hl_s0"
  33179. case '1': // 1 string to match.
  33180. return Intrinsic::hexagon_M2_mpy_hl_s1; // "__builtin_HEXAGON_M2_mpy_hl_s1"
  33181. }
  33182. break;
  33183. }
  33184. break;
  33185. case 'l': // 4 strings to match.
  33186. switch (BuiltinName[26]) {
  33187. default: break;
  33188. case 'h': // 2 strings to match.
  33189. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33190. break;
  33191. switch (BuiltinName[29]) {
  33192. default: break;
  33193. case '0': // 1 string to match.
  33194. return Intrinsic::hexagon_M2_mpy_lh_s0; // "__builtin_HEXAGON_M2_mpy_lh_s0"
  33195. case '1': // 1 string to match.
  33196. return Intrinsic::hexagon_M2_mpy_lh_s1; // "__builtin_HEXAGON_M2_mpy_lh_s1"
  33197. }
  33198. break;
  33199. case 'l': // 2 strings to match.
  33200. if (memcmp(BuiltinName.data()+27, "_s", 2))
  33201. break;
  33202. switch (BuiltinName[29]) {
  33203. default: break;
  33204. case '0': // 1 string to match.
  33205. return Intrinsic::hexagon_M2_mpy_ll_s0; // "__builtin_HEXAGON_M2_mpy_ll_s0"
  33206. case '1': // 1 string to match.
  33207. return Intrinsic::hexagon_M2_mpy_ll_s1; // "__builtin_HEXAGON_M2_mpy_ll_s1"
  33208. }
  33209. break;
  33210. }
  33211. break;
  33212. case 'u': // 1 string to match.
  33213. if (memcmp(BuiltinName.data()+26, "p_s1", 4))
  33214. break;
  33215. return Intrinsic::hexagon_M2_mpy_up_s1; // "__builtin_HEXAGON_M2_mpy_up_s1"
  33216. }
  33217. break;
  33218. }
  33219. break;
  33220. case 'v': // 10 strings to match.
  33221. switch (BuiltinName[22]) {
  33222. default: break;
  33223. case 'a': // 2 strings to match.
  33224. if (memcmp(BuiltinName.data()+23, "bsdiff", 6))
  33225. break;
  33226. switch (BuiltinName[29]) {
  33227. default: break;
  33228. case 'h': // 1 string to match.
  33229. return Intrinsic::hexagon_M2_vabsdiffh; // "__builtin_HEXAGON_M2_vabsdiffh"
  33230. case 'w': // 1 string to match.
  33231. return Intrinsic::hexagon_M2_vabsdiffw; // "__builtin_HEXAGON_M2_vabsdiffw"
  33232. }
  33233. break;
  33234. case 'd': // 4 strings to match.
  33235. if (BuiltinName[23] != 'm')
  33236. break;
  33237. switch (BuiltinName[24]) {
  33238. default: break;
  33239. case 'a': // 2 strings to match.
  33240. if (memcmp(BuiltinName.data()+25, "cs_s", 4))
  33241. break;
  33242. switch (BuiltinName[29]) {
  33243. default: break;
  33244. case '0': // 1 string to match.
  33245. return Intrinsic::hexagon_M2_vdmacs_s0; // "__builtin_HEXAGON_M2_vdmacs_s0"
  33246. case '1': // 1 string to match.
  33247. return Intrinsic::hexagon_M2_vdmacs_s1; // "__builtin_HEXAGON_M2_vdmacs_s1"
  33248. }
  33249. break;
  33250. case 'p': // 2 strings to match.
  33251. if (memcmp(BuiltinName.data()+25, "ys_s", 4))
  33252. break;
  33253. switch (BuiltinName[29]) {
  33254. default: break;
  33255. case '0': // 1 string to match.
  33256. return Intrinsic::hexagon_M2_vdmpys_s0; // "__builtin_HEXAGON_M2_vdmpys_s0"
  33257. case '1': // 1 string to match.
  33258. return Intrinsic::hexagon_M2_vdmpys_s1; // "__builtin_HEXAGON_M2_vdmpys_s1"
  33259. }
  33260. break;
  33261. }
  33262. break;
  33263. case 'm': // 4 strings to match.
  33264. switch (BuiltinName[23]) {
  33265. default: break;
  33266. case 'a': // 2 strings to match.
  33267. if (memcmp(BuiltinName.data()+24, "c2s_s", 5))
  33268. break;
  33269. switch (BuiltinName[29]) {
  33270. default: break;
  33271. case '0': // 1 string to match.
  33272. return Intrinsic::hexagon_M2_vmac2s_s0; // "__builtin_HEXAGON_M2_vmac2s_s0"
  33273. case '1': // 1 string to match.
  33274. return Intrinsic::hexagon_M2_vmac2s_s1; // "__builtin_HEXAGON_M2_vmac2s_s1"
  33275. }
  33276. break;
  33277. case 'p': // 2 strings to match.
  33278. if (memcmp(BuiltinName.data()+24, "y2s_s", 5))
  33279. break;
  33280. switch (BuiltinName[29]) {
  33281. default: break;
  33282. case '0': // 1 string to match.
  33283. return Intrinsic::hexagon_M2_vmpy2s_s0; // "__builtin_HEXAGON_M2_vmpy2s_s0"
  33284. case '1': // 1 string to match.
  33285. return Intrinsic::hexagon_M2_vmpy2s_s1; // "__builtin_HEXAGON_M2_vmpy2s_s1"
  33286. }
  33287. break;
  33288. }
  33289. break;
  33290. }
  33291. break;
  33292. }
  33293. break;
  33294. case '4': // 3 strings to match.
  33295. if (BuiltinName[20] != '_')
  33296. break;
  33297. switch (BuiltinName[21]) {
  33298. default: break;
  33299. case 'c': // 2 strings to match.
  33300. if (memcmp(BuiltinName.data()+22, "mpy", 3))
  33301. break;
  33302. switch (BuiltinName[25]) {
  33303. default: break;
  33304. case 'i': // 1 string to match.
  33305. if (memcmp(BuiltinName.data()+26, "_whc", 4))
  33306. break;
  33307. return Intrinsic::hexagon_M4_cmpyi_whc; // "__builtin_HEXAGON_M4_cmpyi_whc"
  33308. case 'r': // 1 string to match.
  33309. if (memcmp(BuiltinName.data()+26, "_whc", 4))
  33310. break;
  33311. return Intrinsic::hexagon_M4_cmpyr_whc; // "__builtin_HEXAGON_M4_cmpyr_whc"
  33312. }
  33313. break;
  33314. case 'p': // 1 string to match.
  33315. if (memcmp(BuiltinName.data()+22, "mpyw_acc", 8))
  33316. break;
  33317. return Intrinsic::hexagon_M4_pmpyw_acc; // "__builtin_HEXAGON_M4_pmpyw_acc"
  33318. }
  33319. break;
  33320. }
  33321. break;
  33322. case 'S': // 12 strings to match.
  33323. switch (BuiltinName[19]) {
  33324. default: break;
  33325. case '2': // 4 strings to match.
  33326. if (BuiltinName[20] != '_')
  33327. break;
  33328. switch (BuiltinName[21]) {
  33329. default: break;
  33330. case 'e': // 1 string to match.
  33331. if (memcmp(BuiltinName.data()+22, "xtractup", 8))
  33332. break;
  33333. return Intrinsic::hexagon_S2_extractup; // "__builtin_HEXAGON_S2_extractup"
  33334. case 'i': // 1 string to match.
  33335. if (memcmp(BuiltinName.data()+22, "nsert_rp", 8))
  33336. break;
  33337. return Intrinsic::hexagon_S2_insert_rp; // "__builtin_HEXAGON_S2_insert_rp"
  33338. case 'v': // 2 strings to match.
  33339. if (memcmp(BuiltinName.data()+22, "splice", 6))
  33340. break;
  33341. switch (BuiltinName[28]) {
  33342. default: break;
  33343. case 'i': // 1 string to match.
  33344. if (BuiltinName[29] != 'b')
  33345. break;
  33346. return Intrinsic::hexagon_S2_vspliceib; // "__builtin_HEXAGON_S2_vspliceib"
  33347. case 'r': // 1 string to match.
  33348. if (BuiltinName[29] != 'b')
  33349. break;
  33350. return Intrinsic::hexagon_S2_vsplicerb; // "__builtin_HEXAGON_S2_vsplicerb"
  33351. }
  33352. break;
  33353. }
  33354. break;
  33355. case '4': // 7 strings to match.
  33356. if (BuiltinName[20] != '_')
  33357. break;
  33358. switch (BuiltinName[21]) {
  33359. default: break;
  33360. case 'n': // 2 strings to match.
  33361. if (memcmp(BuiltinName.data()+22, "tstbit_", 7))
  33362. break;
  33363. switch (BuiltinName[29]) {
  33364. default: break;
  33365. case 'i': // 1 string to match.
  33366. return Intrinsic::hexagon_S4_ntstbit_i; // "__builtin_HEXAGON_S4_ntstbit_i"
  33367. case 'r': // 1 string to match.
  33368. return Intrinsic::hexagon_S4_ntstbit_r; // "__builtin_HEXAGON_S4_ntstbit_r"
  33369. }
  33370. break;
  33371. case 'v': // 5 strings to match.
  33372. switch (BuiltinName[22]) {
  33373. default: break;
  33374. case 'r': // 1 string to match.
  33375. if (memcmp(BuiltinName.data()+23, "crotate", 7))
  33376. break;
  33377. return Intrinsic::hexagon_S4_vrcrotate; // "__builtin_HEXAGON_S4_vrcrotate"
  33378. case 'x': // 4 strings to match.
  33379. switch (BuiltinName[23]) {
  33380. default: break;
  33381. case 'a': // 2 strings to match.
  33382. if (memcmp(BuiltinName.data()+24, "ddsub", 5))
  33383. break;
  33384. switch (BuiltinName[29]) {
  33385. default: break;
  33386. case 'h': // 1 string to match.
  33387. return Intrinsic::hexagon_S4_vxaddsubh; // "__builtin_HEXAGON_S4_vxaddsubh"
  33388. case 'w': // 1 string to match.
  33389. return Intrinsic::hexagon_S4_vxaddsubw; // "__builtin_HEXAGON_S4_vxaddsubw"
  33390. }
  33391. break;
  33392. case 's': // 2 strings to match.
  33393. if (memcmp(BuiltinName.data()+24, "ubadd", 5))
  33394. break;
  33395. switch (BuiltinName[29]) {
  33396. default: break;
  33397. case 'h': // 1 string to match.
  33398. return Intrinsic::hexagon_S4_vxsubaddh; // "__builtin_HEXAGON_S4_vxsubaddh"
  33399. case 'w': // 1 string to match.
  33400. return Intrinsic::hexagon_S4_vxsubaddw; // "__builtin_HEXAGON_S4_vxsubaddw"
  33401. }
  33402. break;
  33403. }
  33404. break;
  33405. }
  33406. break;
  33407. }
  33408. break;
  33409. case '5': // 1 string to match.
  33410. if (memcmp(BuiltinName.data()+20, "_popcountp", 10))
  33411. break;
  33412. return Intrinsic::hexagon_S5_popcountp; // "__builtin_HEXAGON_S5_popcountp"
  33413. }
  33414. break;
  33415. }
  33416. break;
  33417. case 31: // 95 strings to match.
  33418. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  33419. break;
  33420. switch (BuiltinName[18]) {
  33421. default: break;
  33422. case 'A': // 4 strings to match.
  33423. if (memcmp(BuiltinName.data()+19, "2_combine_", 10))
  33424. break;
  33425. switch (BuiltinName[29]) {
  33426. default: break;
  33427. case 'h': // 2 strings to match.
  33428. switch (BuiltinName[30]) {
  33429. default: break;
  33430. case 'h': // 1 string to match.
  33431. return Intrinsic::hexagon_A2_combine_hh; // "__builtin_HEXAGON_A2_combine_hh"
  33432. case 'l': // 1 string to match.
  33433. return Intrinsic::hexagon_A2_combine_hl; // "__builtin_HEXAGON_A2_combine_hl"
  33434. }
  33435. break;
  33436. case 'l': // 2 strings to match.
  33437. switch (BuiltinName[30]) {
  33438. default: break;
  33439. case 'h': // 1 string to match.
  33440. return Intrinsic::hexagon_A2_combine_lh; // "__builtin_HEXAGON_A2_combine_lh"
  33441. case 'l': // 1 string to match.
  33442. return Intrinsic::hexagon_A2_combine_ll; // "__builtin_HEXAGON_A2_combine_ll"
  33443. }
  33444. break;
  33445. }
  33446. break;
  33447. case 'F': // 10 strings to match.
  33448. if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
  33449. break;
  33450. switch (BuiltinName[26]) {
  33451. default: break;
  33452. case 'd': // 3 strings to match.
  33453. if (memcmp(BuiltinName.data()+27, "f2", 2))
  33454. break;
  33455. switch (BuiltinName[29]) {
  33456. default: break;
  33457. case 's': // 1 string to match.
  33458. if (BuiltinName[30] != 'f')
  33459. break;
  33460. return Intrinsic::hexagon_F2_conv_df2sf; // "__builtin_HEXAGON_F2_conv_df2sf"
  33461. case 'u': // 2 strings to match.
  33462. switch (BuiltinName[30]) {
  33463. default: break;
  33464. case 'd': // 1 string to match.
  33465. return Intrinsic::hexagon_F2_conv_df2ud; // "__builtin_HEXAGON_F2_conv_df2ud"
  33466. case 'w': // 1 string to match.
  33467. return Intrinsic::hexagon_F2_conv_df2uw; // "__builtin_HEXAGON_F2_conv_df2uw"
  33468. }
  33469. break;
  33470. }
  33471. break;
  33472. case 's': // 3 strings to match.
  33473. if (memcmp(BuiltinName.data()+27, "f2", 2))
  33474. break;
  33475. switch (BuiltinName[29]) {
  33476. default: break;
  33477. case 'd': // 1 string to match.
  33478. if (BuiltinName[30] != 'f')
  33479. break;
  33480. return Intrinsic::hexagon_F2_conv_sf2df; // "__builtin_HEXAGON_F2_conv_sf2df"
  33481. case 'u': // 2 strings to match.
  33482. switch (BuiltinName[30]) {
  33483. default: break;
  33484. case 'd': // 1 string to match.
  33485. return Intrinsic::hexagon_F2_conv_sf2ud; // "__builtin_HEXAGON_F2_conv_sf2ud"
  33486. case 'w': // 1 string to match.
  33487. return Intrinsic::hexagon_F2_conv_sf2uw; // "__builtin_HEXAGON_F2_conv_sf2uw"
  33488. }
  33489. break;
  33490. }
  33491. break;
  33492. case 'u': // 4 strings to match.
  33493. switch (BuiltinName[27]) {
  33494. default: break;
  33495. case 'd': // 2 strings to match.
  33496. if (BuiltinName[28] != '2')
  33497. break;
  33498. switch (BuiltinName[29]) {
  33499. default: break;
  33500. case 'd': // 1 string to match.
  33501. if (BuiltinName[30] != 'f')
  33502. break;
  33503. return Intrinsic::hexagon_F2_conv_ud2df; // "__builtin_HEXAGON_F2_conv_ud2df"
  33504. case 's': // 1 string to match.
  33505. if (BuiltinName[30] != 'f')
  33506. break;
  33507. return Intrinsic::hexagon_F2_conv_ud2sf; // "__builtin_HEXAGON_F2_conv_ud2sf"
  33508. }
  33509. break;
  33510. case 'w': // 2 strings to match.
  33511. if (BuiltinName[28] != '2')
  33512. break;
  33513. switch (BuiltinName[29]) {
  33514. default: break;
  33515. case 'd': // 1 string to match.
  33516. if (BuiltinName[30] != 'f')
  33517. break;
  33518. return Intrinsic::hexagon_F2_conv_uw2df; // "__builtin_HEXAGON_F2_conv_uw2df"
  33519. case 's': // 1 string to match.
  33520. if (BuiltinName[30] != 'f')
  33521. break;
  33522. return Intrinsic::hexagon_F2_conv_uw2sf; // "__builtin_HEXAGON_F2_conv_uw2sf"
  33523. }
  33524. break;
  33525. }
  33526. break;
  33527. }
  33528. break;
  33529. case 'M': // 58 strings to match.
  33530. switch (BuiltinName[19]) {
  33531. default: break;
  33532. case '2': // 49 strings to match.
  33533. if (BuiltinName[20] != '_')
  33534. break;
  33535. switch (BuiltinName[21]) {
  33536. default: break;
  33537. case 'c': // 2 strings to match.
  33538. if (memcmp(BuiltinName.data()+22, "mpyrsc_s", 8))
  33539. break;
  33540. switch (BuiltinName[30]) {
  33541. default: break;
  33542. case '0': // 1 string to match.
  33543. return Intrinsic::hexagon_M2_cmpyrsc_s0; // "__builtin_HEXAGON_M2_cmpyrsc_s0"
  33544. case '1': // 1 string to match.
  33545. return Intrinsic::hexagon_M2_cmpyrsc_s1; // "__builtin_HEXAGON_M2_cmpyrsc_s1"
  33546. }
  33547. break;
  33548. case 'd': // 2 strings to match.
  33549. if (memcmp(BuiltinName.data()+22, "pmpy", 4))
  33550. break;
  33551. switch (BuiltinName[26]) {
  33552. default: break;
  33553. case 's': // 1 string to match.
  33554. if (memcmp(BuiltinName.data()+27, "s_s0", 4))
  33555. break;
  33556. return Intrinsic::hexagon_M2_dpmpyss_s0; // "__builtin_HEXAGON_M2_dpmpyss_s0"
  33557. case 'u': // 1 string to match.
  33558. if (memcmp(BuiltinName.data()+27, "u_s0", 4))
  33559. break;
  33560. return Intrinsic::hexagon_M2_dpmpyuu_s0; // "__builtin_HEXAGON_M2_dpmpyuu_s0"
  33561. }
  33562. break;
  33563. case 'h': // 2 strings to match.
  33564. if (memcmp(BuiltinName.data()+22, "mmpy", 4))
  33565. break;
  33566. switch (BuiltinName[26]) {
  33567. default: break;
  33568. case 'h': // 1 string to match.
  33569. if (memcmp(BuiltinName.data()+27, "_rs1", 4))
  33570. break;
  33571. return Intrinsic::hexagon_M2_hmmpyh_rs1; // "__builtin_HEXAGON_M2_hmmpyh_rs1"
  33572. case 'l': // 1 string to match.
  33573. if (memcmp(BuiltinName.data()+27, "_rs1", 4))
  33574. break;
  33575. return Intrinsic::hexagon_M2_hmmpyl_rs1; // "__builtin_HEXAGON_M2_hmmpyl_rs1"
  33576. }
  33577. break;
  33578. case 'm': // 28 strings to match.
  33579. switch (BuiltinName[22]) {
  33580. default: break;
  33581. case 'm': // 12 strings to match.
  33582. switch (BuiltinName[23]) {
  33583. default: break;
  33584. case 'a': // 8 strings to match.
  33585. if (BuiltinName[24] != 'c')
  33586. break;
  33587. switch (BuiltinName[25]) {
  33588. default: break;
  33589. case 'h': // 2 strings to match.
  33590. if (memcmp(BuiltinName.data()+26, "s_rs", 4))
  33591. break;
  33592. switch (BuiltinName[30]) {
  33593. default: break;
  33594. case '0': // 1 string to match.
  33595. return Intrinsic::hexagon_M2_mmachs_rs0; // "__builtin_HEXAGON_M2_mmachs_rs0"
  33596. case '1': // 1 string to match.
  33597. return Intrinsic::hexagon_M2_mmachs_rs1; // "__builtin_HEXAGON_M2_mmachs_rs1"
  33598. }
  33599. break;
  33600. case 'l': // 2 strings to match.
  33601. if (memcmp(BuiltinName.data()+26, "s_rs", 4))
  33602. break;
  33603. switch (BuiltinName[30]) {
  33604. default: break;
  33605. case '0': // 1 string to match.
  33606. return Intrinsic::hexagon_M2_mmacls_rs0; // "__builtin_HEXAGON_M2_mmacls_rs0"
  33607. case '1': // 1 string to match.
  33608. return Intrinsic::hexagon_M2_mmacls_rs1; // "__builtin_HEXAGON_M2_mmacls_rs1"
  33609. }
  33610. break;
  33611. case 'u': // 4 strings to match.
  33612. switch (BuiltinName[26]) {
  33613. default: break;
  33614. case 'h': // 2 strings to match.
  33615. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  33616. break;
  33617. switch (BuiltinName[30]) {
  33618. default: break;
  33619. case '0': // 1 string to match.
  33620. return Intrinsic::hexagon_M2_mmacuhs_s0; // "__builtin_HEXAGON_M2_mmacuhs_s0"
  33621. case '1': // 1 string to match.
  33622. return Intrinsic::hexagon_M2_mmacuhs_s1; // "__builtin_HEXAGON_M2_mmacuhs_s1"
  33623. }
  33624. break;
  33625. case 'l': // 2 strings to match.
  33626. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  33627. break;
  33628. switch (BuiltinName[30]) {
  33629. default: break;
  33630. case '0': // 1 string to match.
  33631. return Intrinsic::hexagon_M2_mmaculs_s0; // "__builtin_HEXAGON_M2_mmaculs_s0"
  33632. case '1': // 1 string to match.
  33633. return Intrinsic::hexagon_M2_mmaculs_s1; // "__builtin_HEXAGON_M2_mmaculs_s1"
  33634. }
  33635. break;
  33636. }
  33637. break;
  33638. }
  33639. break;
  33640. case 'p': // 4 strings to match.
  33641. if (memcmp(BuiltinName.data()+24, "yu", 2))
  33642. break;
  33643. switch (BuiltinName[26]) {
  33644. default: break;
  33645. case 'h': // 2 strings to match.
  33646. if (memcmp(BuiltinName.data()+27, "_rs", 3))
  33647. break;
  33648. switch (BuiltinName[30]) {
  33649. default: break;
  33650. case '0': // 1 string to match.
  33651. return Intrinsic::hexagon_M2_mmpyuh_rs0; // "__builtin_HEXAGON_M2_mmpyuh_rs0"
  33652. case '1': // 1 string to match.
  33653. return Intrinsic::hexagon_M2_mmpyuh_rs1; // "__builtin_HEXAGON_M2_mmpyuh_rs1"
  33654. }
  33655. break;
  33656. case 'l': // 2 strings to match.
  33657. if (memcmp(BuiltinName.data()+27, "_rs", 3))
  33658. break;
  33659. switch (BuiltinName[30]) {
  33660. default: break;
  33661. case '0': // 1 string to match.
  33662. return Intrinsic::hexagon_M2_mmpyul_rs0; // "__builtin_HEXAGON_M2_mmpyul_rs0"
  33663. case '1': // 1 string to match.
  33664. return Intrinsic::hexagon_M2_mmpyul_rs1; // "__builtin_HEXAGON_M2_mmpyul_rs1"
  33665. }
  33666. break;
  33667. }
  33668. break;
  33669. }
  33670. break;
  33671. case 'p': // 16 strings to match.
  33672. if (BuiltinName[23] != 'y')
  33673. break;
  33674. switch (BuiltinName[24]) {
  33675. default: break;
  33676. case 'd': // 8 strings to match.
  33677. if (BuiltinName[25] != '_')
  33678. break;
  33679. switch (BuiltinName[26]) {
  33680. default: break;
  33681. case 'h': // 4 strings to match.
  33682. switch (BuiltinName[27]) {
  33683. default: break;
  33684. case 'h': // 2 strings to match.
  33685. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33686. break;
  33687. switch (BuiltinName[30]) {
  33688. default: break;
  33689. case '0': // 1 string to match.
  33690. return Intrinsic::hexagon_M2_mpyd_hh_s0; // "__builtin_HEXAGON_M2_mpyd_hh_s0"
  33691. case '1': // 1 string to match.
  33692. return Intrinsic::hexagon_M2_mpyd_hh_s1; // "__builtin_HEXAGON_M2_mpyd_hh_s1"
  33693. }
  33694. break;
  33695. case 'l': // 2 strings to match.
  33696. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33697. break;
  33698. switch (BuiltinName[30]) {
  33699. default: break;
  33700. case '0': // 1 string to match.
  33701. return Intrinsic::hexagon_M2_mpyd_hl_s0; // "__builtin_HEXAGON_M2_mpyd_hl_s0"
  33702. case '1': // 1 string to match.
  33703. return Intrinsic::hexagon_M2_mpyd_hl_s1; // "__builtin_HEXAGON_M2_mpyd_hl_s1"
  33704. }
  33705. break;
  33706. }
  33707. break;
  33708. case 'l': // 4 strings to match.
  33709. switch (BuiltinName[27]) {
  33710. default: break;
  33711. case 'h': // 2 strings to match.
  33712. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33713. break;
  33714. switch (BuiltinName[30]) {
  33715. default: break;
  33716. case '0': // 1 string to match.
  33717. return Intrinsic::hexagon_M2_mpyd_lh_s0; // "__builtin_HEXAGON_M2_mpyd_lh_s0"
  33718. case '1': // 1 string to match.
  33719. return Intrinsic::hexagon_M2_mpyd_lh_s1; // "__builtin_HEXAGON_M2_mpyd_lh_s1"
  33720. }
  33721. break;
  33722. case 'l': // 2 strings to match.
  33723. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33724. break;
  33725. switch (BuiltinName[30]) {
  33726. default: break;
  33727. case '0': // 1 string to match.
  33728. return Intrinsic::hexagon_M2_mpyd_ll_s0; // "__builtin_HEXAGON_M2_mpyd_ll_s0"
  33729. case '1': // 1 string to match.
  33730. return Intrinsic::hexagon_M2_mpyd_ll_s1; // "__builtin_HEXAGON_M2_mpyd_ll_s1"
  33731. }
  33732. break;
  33733. }
  33734. break;
  33735. }
  33736. break;
  33737. case 'u': // 8 strings to match.
  33738. if (BuiltinName[25] != '_')
  33739. break;
  33740. switch (BuiltinName[26]) {
  33741. default: break;
  33742. case 'h': // 4 strings to match.
  33743. switch (BuiltinName[27]) {
  33744. default: break;
  33745. case 'h': // 2 strings to match.
  33746. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33747. break;
  33748. switch (BuiltinName[30]) {
  33749. default: break;
  33750. case '0': // 1 string to match.
  33751. return Intrinsic::hexagon_M2_mpyu_hh_s0; // "__builtin_HEXAGON_M2_mpyu_hh_s0"
  33752. case '1': // 1 string to match.
  33753. return Intrinsic::hexagon_M2_mpyu_hh_s1; // "__builtin_HEXAGON_M2_mpyu_hh_s1"
  33754. }
  33755. break;
  33756. case 'l': // 2 strings to match.
  33757. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33758. break;
  33759. switch (BuiltinName[30]) {
  33760. default: break;
  33761. case '0': // 1 string to match.
  33762. return Intrinsic::hexagon_M2_mpyu_hl_s0; // "__builtin_HEXAGON_M2_mpyu_hl_s0"
  33763. case '1': // 1 string to match.
  33764. return Intrinsic::hexagon_M2_mpyu_hl_s1; // "__builtin_HEXAGON_M2_mpyu_hl_s1"
  33765. }
  33766. break;
  33767. }
  33768. break;
  33769. case 'l': // 4 strings to match.
  33770. switch (BuiltinName[27]) {
  33771. default: break;
  33772. case 'h': // 2 strings to match.
  33773. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33774. break;
  33775. switch (BuiltinName[30]) {
  33776. default: break;
  33777. case '0': // 1 string to match.
  33778. return Intrinsic::hexagon_M2_mpyu_lh_s0; // "__builtin_HEXAGON_M2_mpyu_lh_s0"
  33779. case '1': // 1 string to match.
  33780. return Intrinsic::hexagon_M2_mpyu_lh_s1; // "__builtin_HEXAGON_M2_mpyu_lh_s1"
  33781. }
  33782. break;
  33783. case 'l': // 2 strings to match.
  33784. if (memcmp(BuiltinName.data()+28, "_s", 2))
  33785. break;
  33786. switch (BuiltinName[30]) {
  33787. default: break;
  33788. case '0': // 1 string to match.
  33789. return Intrinsic::hexagon_M2_mpyu_ll_s0; // "__builtin_HEXAGON_M2_mpyu_ll_s0"
  33790. case '1': // 1 string to match.
  33791. return Intrinsic::hexagon_M2_mpyu_ll_s1; // "__builtin_HEXAGON_M2_mpyu_ll_s1"
  33792. }
  33793. break;
  33794. }
  33795. break;
  33796. }
  33797. break;
  33798. }
  33799. break;
  33800. }
  33801. break;
  33802. case 'v': // 15 strings to match.
  33803. switch (BuiltinName[22]) {
  33804. default: break;
  33805. case 'd': // 2 strings to match.
  33806. if (memcmp(BuiltinName.data()+23, "mpyrs_s", 7))
  33807. break;
  33808. switch (BuiltinName[30]) {
  33809. default: break;
  33810. case '0': // 1 string to match.
  33811. return Intrinsic::hexagon_M2_vdmpyrs_s0; // "__builtin_HEXAGON_M2_vdmpyrs_s0"
  33812. case '1': // 1 string to match.
  33813. return Intrinsic::hexagon_M2_vdmpyrs_s1; // "__builtin_HEXAGON_M2_vdmpyrs_s1"
  33814. }
  33815. break;
  33816. case 'm': // 8 strings to match.
  33817. switch (BuiltinName[23]) {
  33818. default: break;
  33819. case 'a': // 4 strings to match.
  33820. if (memcmp(BuiltinName.data()+24, "c2", 2))
  33821. break;
  33822. switch (BuiltinName[26]) {
  33823. default: break;
  33824. case 'e': // 2 strings to match.
  33825. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  33826. break;
  33827. switch (BuiltinName[30]) {
  33828. default: break;
  33829. case '0': // 1 string to match.
  33830. return Intrinsic::hexagon_M2_vmac2es_s0; // "__builtin_HEXAGON_M2_vmac2es_s0"
  33831. case '1': // 1 string to match.
  33832. return Intrinsic::hexagon_M2_vmac2es_s1; // "__builtin_HEXAGON_M2_vmac2es_s1"
  33833. }
  33834. break;
  33835. case 's': // 2 strings to match.
  33836. if (memcmp(BuiltinName.data()+27, "u_s", 3))
  33837. break;
  33838. switch (BuiltinName[30]) {
  33839. default: break;
  33840. case '0': // 1 string to match.
  33841. return Intrinsic::hexagon_M2_vmac2su_s0; // "__builtin_HEXAGON_M2_vmac2su_s0"
  33842. case '1': // 1 string to match.
  33843. return Intrinsic::hexagon_M2_vmac2su_s1; // "__builtin_HEXAGON_M2_vmac2su_s1"
  33844. }
  33845. break;
  33846. }
  33847. break;
  33848. case 'p': // 4 strings to match.
  33849. if (memcmp(BuiltinName.data()+24, "y2", 2))
  33850. break;
  33851. switch (BuiltinName[26]) {
  33852. default: break;
  33853. case 'e': // 2 strings to match.
  33854. if (memcmp(BuiltinName.data()+27, "s_s", 3))
  33855. break;
  33856. switch (BuiltinName[30]) {
  33857. default: break;
  33858. case '0': // 1 string to match.
  33859. return Intrinsic::hexagon_M2_vmpy2es_s0; // "__builtin_HEXAGON_M2_vmpy2es_s0"
  33860. case '1': // 1 string to match.
  33861. return Intrinsic::hexagon_M2_vmpy2es_s1; // "__builtin_HEXAGON_M2_vmpy2es_s1"
  33862. }
  33863. break;
  33864. case 's': // 2 strings to match.
  33865. if (memcmp(BuiltinName.data()+27, "u_s", 3))
  33866. break;
  33867. switch (BuiltinName[30]) {
  33868. default: break;
  33869. case '0': // 1 string to match.
  33870. return Intrinsic::hexagon_M2_vmpy2su_s0; // "__builtin_HEXAGON_M2_vmpy2su_s0"
  33871. case '1': // 1 string to match.
  33872. return Intrinsic::hexagon_M2_vmpy2su_s1; // "__builtin_HEXAGON_M2_vmpy2su_s1"
  33873. }
  33874. break;
  33875. }
  33876. break;
  33877. }
  33878. break;
  33879. case 'r': // 5 strings to match.
  33880. if (memcmp(BuiltinName.data()+23, "cm", 2))
  33881. break;
  33882. switch (BuiltinName[25]) {
  33883. default: break;
  33884. case 'a': // 2 strings to match.
  33885. if (BuiltinName[26] != 'c')
  33886. break;
  33887. switch (BuiltinName[27]) {
  33888. default: break;
  33889. case 'i': // 1 string to match.
  33890. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  33891. break;
  33892. return Intrinsic::hexagon_M2_vrcmaci_s0; // "__builtin_HEXAGON_M2_vrcmaci_s0"
  33893. case 'r': // 1 string to match.
  33894. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  33895. break;
  33896. return Intrinsic::hexagon_M2_vrcmacr_s0; // "__builtin_HEXAGON_M2_vrcmacr_s0"
  33897. }
  33898. break;
  33899. case 'p': // 3 strings to match.
  33900. if (BuiltinName[26] != 'y')
  33901. break;
  33902. switch (BuiltinName[27]) {
  33903. default: break;
  33904. case 'i': // 1 string to match.
  33905. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  33906. break;
  33907. return Intrinsic::hexagon_M2_vrcmpyi_s0; // "__builtin_HEXAGON_M2_vrcmpyi_s0"
  33908. case 'r': // 1 string to match.
  33909. if (memcmp(BuiltinName.data()+28, "_s0", 3))
  33910. break;
  33911. return Intrinsic::hexagon_M2_vrcmpyr_s0; // "__builtin_HEXAGON_M2_vrcmpyr_s0"
  33912. case 's': // 1 string to match.
  33913. if (memcmp(BuiltinName.data()+28, "_s1", 3))
  33914. break;
  33915. return Intrinsic::hexagon_M2_vrcmpys_s1; // "__builtin_HEXAGON_M2_vrcmpys_s1"
  33916. }
  33917. break;
  33918. }
  33919. break;
  33920. }
  33921. break;
  33922. }
  33923. break;
  33924. case '4': // 9 strings to match.
  33925. if (BuiltinName[20] != '_')
  33926. break;
  33927. switch (BuiltinName[21]) {
  33928. default: break;
  33929. case 'm': // 4 strings to match.
  33930. if (memcmp(BuiltinName.data()+22, "pyr", 3))
  33931. break;
  33932. switch (BuiltinName[25]) {
  33933. default: break;
  33934. case 'i': // 2 strings to match.
  33935. if (memcmp(BuiltinName.data()+26, "_add", 4))
  33936. break;
  33937. switch (BuiltinName[30]) {
  33938. default: break;
  33939. case 'i': // 1 string to match.
  33940. return Intrinsic::hexagon_M4_mpyri_addi; // "__builtin_HEXAGON_M4_mpyri_addi"
  33941. case 'r': // 1 string to match.
  33942. return Intrinsic::hexagon_M4_mpyri_addr; // "__builtin_HEXAGON_M4_mpyri_addr"
  33943. }
  33944. break;
  33945. case 'r': // 2 strings to match.
  33946. if (memcmp(BuiltinName.data()+26, "_add", 4))
  33947. break;
  33948. switch (BuiltinName[30]) {
  33949. default: break;
  33950. case 'i': // 1 string to match.
  33951. return Intrinsic::hexagon_M4_mpyrr_addi; // "__builtin_HEXAGON_M4_mpyrr_addi"
  33952. case 'r': // 1 string to match.
  33953. return Intrinsic::hexagon_M4_mpyrr_addr; // "__builtin_HEXAGON_M4_mpyrr_addr"
  33954. }
  33955. break;
  33956. }
  33957. break;
  33958. case 'v': // 5 strings to match.
  33959. switch (BuiltinName[22]) {
  33960. default: break;
  33961. case 'p': // 1 string to match.
  33962. if (memcmp(BuiltinName.data()+23, "mpyh_acc", 8))
  33963. break;
  33964. return Intrinsic::hexagon_M4_vpmpyh_acc; // "__builtin_HEXAGON_M4_vpmpyh_acc"
  33965. case 'r': // 4 strings to match.
  33966. if (memcmp(BuiltinName.data()+23, "mpy", 3))
  33967. break;
  33968. switch (BuiltinName[26]) {
  33969. default: break;
  33970. case 'e': // 2 strings to match.
  33971. if (memcmp(BuiltinName.data()+27, "h_s", 3))
  33972. break;
  33973. switch (BuiltinName[30]) {
  33974. default: break;
  33975. case '0': // 1 string to match.
  33976. return Intrinsic::hexagon_M4_vrmpyeh_s0; // "__builtin_HEXAGON_M4_vrmpyeh_s0"
  33977. case '1': // 1 string to match.
  33978. return Intrinsic::hexagon_M4_vrmpyeh_s1; // "__builtin_HEXAGON_M4_vrmpyeh_s1"
  33979. }
  33980. break;
  33981. case 'o': // 2 strings to match.
  33982. if (memcmp(BuiltinName.data()+27, "h_s", 3))
  33983. break;
  33984. switch (BuiltinName[30]) {
  33985. default: break;
  33986. case '0': // 1 string to match.
  33987. return Intrinsic::hexagon_M4_vrmpyoh_s0; // "__builtin_HEXAGON_M4_vrmpyoh_s0"
  33988. case '1': // 1 string to match.
  33989. return Intrinsic::hexagon_M4_vrmpyoh_s1; // "__builtin_HEXAGON_M4_vrmpyoh_s1"
  33990. }
  33991. break;
  33992. }
  33993. break;
  33994. }
  33995. break;
  33996. }
  33997. break;
  33998. }
  33999. break;
  34000. case 'S': // 23 strings to match.
  34001. switch (BuiltinName[19]) {
  34002. default: break;
  34003. case '2': // 17 strings to match.
  34004. if (BuiltinName[20] != '_')
  34005. break;
  34006. switch (BuiltinName[21]) {
  34007. default: break;
  34008. case 'a': // 8 strings to match.
  34009. if (BuiltinName[22] != 's')
  34010. break;
  34011. switch (BuiltinName[23]) {
  34012. default: break;
  34013. case 'l': // 4 strings to match.
  34014. if (BuiltinName[24] != '_')
  34015. break;
  34016. switch (BuiltinName[25]) {
  34017. default: break;
  34018. case 'i': // 2 strings to match.
  34019. if (BuiltinName[26] != '_')
  34020. break;
  34021. switch (BuiltinName[27]) {
  34022. default: break;
  34023. case 'p': // 1 string to match.
  34024. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34025. break;
  34026. return Intrinsic::hexagon_S2_asl_i_p_or; // "__builtin_HEXAGON_S2_asl_i_p_or"
  34027. case 'r': // 1 string to match.
  34028. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34029. break;
  34030. return Intrinsic::hexagon_S2_asl_i_r_or; // "__builtin_HEXAGON_S2_asl_i_r_or"
  34031. }
  34032. break;
  34033. case 'r': // 2 strings to match.
  34034. if (BuiltinName[26] != '_')
  34035. break;
  34036. switch (BuiltinName[27]) {
  34037. default: break;
  34038. case 'p': // 1 string to match.
  34039. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34040. break;
  34041. return Intrinsic::hexagon_S2_asl_r_p_or; // "__builtin_HEXAGON_S2_asl_r_p_or"
  34042. case 'r': // 1 string to match.
  34043. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34044. break;
  34045. return Intrinsic::hexagon_S2_asl_r_r_or; // "__builtin_HEXAGON_S2_asl_r_r_or"
  34046. }
  34047. break;
  34048. }
  34049. break;
  34050. case 'r': // 4 strings to match.
  34051. if (BuiltinName[24] != '_')
  34052. break;
  34053. switch (BuiltinName[25]) {
  34054. default: break;
  34055. case 'i': // 2 strings to match.
  34056. if (BuiltinName[26] != '_')
  34057. break;
  34058. switch (BuiltinName[27]) {
  34059. default: break;
  34060. case 'p': // 1 string to match.
  34061. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34062. break;
  34063. return Intrinsic::hexagon_S2_asr_i_p_or; // "__builtin_HEXAGON_S2_asr_i_p_or"
  34064. case 'r': // 1 string to match.
  34065. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34066. break;
  34067. return Intrinsic::hexagon_S2_asr_i_r_or; // "__builtin_HEXAGON_S2_asr_i_r_or"
  34068. }
  34069. break;
  34070. case 'r': // 2 strings to match.
  34071. if (BuiltinName[26] != '_')
  34072. break;
  34073. switch (BuiltinName[27]) {
  34074. default: break;
  34075. case 'p': // 1 string to match.
  34076. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34077. break;
  34078. return Intrinsic::hexagon_S2_asr_r_p_or; // "__builtin_HEXAGON_S2_asr_r_p_or"
  34079. case 'r': // 1 string to match.
  34080. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34081. break;
  34082. return Intrinsic::hexagon_S2_asr_r_r_or; // "__builtin_HEXAGON_S2_asr_r_r_or"
  34083. }
  34084. break;
  34085. }
  34086. break;
  34087. }
  34088. break;
  34089. case 'i': // 2 strings to match.
  34090. if (BuiltinName[22] != 'n')
  34091. break;
  34092. switch (BuiltinName[23]) {
  34093. default: break;
  34094. case 's': // 1 string to match.
  34095. if (memcmp(BuiltinName.data()+24, "ertp_rp", 7))
  34096. break;
  34097. return Intrinsic::hexagon_S2_insertp_rp; // "__builtin_HEXAGON_S2_insertp_rp"
  34098. case 't': // 1 string to match.
  34099. if (memcmp(BuiltinName.data()+24, "erleave", 7))
  34100. break;
  34101. return Intrinsic::hexagon_S2_interleave; // "__builtin_HEXAGON_S2_interleave"
  34102. }
  34103. break;
  34104. case 'l': // 6 strings to match.
  34105. if (BuiltinName[22] != 's')
  34106. break;
  34107. switch (BuiltinName[23]) {
  34108. default: break;
  34109. case 'l': // 2 strings to match.
  34110. if (memcmp(BuiltinName.data()+24, "_r_", 3))
  34111. break;
  34112. switch (BuiltinName[27]) {
  34113. default: break;
  34114. case 'p': // 1 string to match.
  34115. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34116. break;
  34117. return Intrinsic::hexagon_S2_lsl_r_p_or; // "__builtin_HEXAGON_S2_lsl_r_p_or"
  34118. case 'r': // 1 string to match.
  34119. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34120. break;
  34121. return Intrinsic::hexagon_S2_lsl_r_r_or; // "__builtin_HEXAGON_S2_lsl_r_r_or"
  34122. }
  34123. break;
  34124. case 'r': // 4 strings to match.
  34125. if (BuiltinName[24] != '_')
  34126. break;
  34127. switch (BuiltinName[25]) {
  34128. default: break;
  34129. case 'i': // 2 strings to match.
  34130. if (BuiltinName[26] != '_')
  34131. break;
  34132. switch (BuiltinName[27]) {
  34133. default: break;
  34134. case 'p': // 1 string to match.
  34135. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34136. break;
  34137. return Intrinsic::hexagon_S2_lsr_i_p_or; // "__builtin_HEXAGON_S2_lsr_i_p_or"
  34138. case 'r': // 1 string to match.
  34139. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34140. break;
  34141. return Intrinsic::hexagon_S2_lsr_i_r_or; // "__builtin_HEXAGON_S2_lsr_i_r_or"
  34142. }
  34143. break;
  34144. case 'r': // 2 strings to match.
  34145. if (BuiltinName[26] != '_')
  34146. break;
  34147. switch (BuiltinName[27]) {
  34148. default: break;
  34149. case 'p': // 1 string to match.
  34150. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34151. break;
  34152. return Intrinsic::hexagon_S2_lsr_r_p_or; // "__builtin_HEXAGON_S2_lsr_r_p_or"
  34153. case 'r': // 1 string to match.
  34154. if (memcmp(BuiltinName.data()+28, "_or", 3))
  34155. break;
  34156. return Intrinsic::hexagon_S2_lsr_r_r_or; // "__builtin_HEXAGON_S2_lsr_r_r_or"
  34157. }
  34158. break;
  34159. }
  34160. break;
  34161. }
  34162. break;
  34163. case 'v': // 1 string to match.
  34164. if (memcmp(BuiltinName.data()+22, "rndpackwh", 9))
  34165. break;
  34166. return Intrinsic::hexagon_S2_vrndpackwh; // "__builtin_HEXAGON_S2_vrndpackwh"
  34167. }
  34168. break;
  34169. case '4': // 5 strings to match.
  34170. if (BuiltinName[20] != '_')
  34171. break;
  34172. switch (BuiltinName[21]) {
  34173. default: break;
  34174. case 'e': // 1 string to match.
  34175. if (memcmp(BuiltinName.data()+22, "xtract_rp", 9))
  34176. break;
  34177. return Intrinsic::hexagon_S4_extract_rp; // "__builtin_HEXAGON_S4_extract_rp"
  34178. case 'o': // 2 strings to match.
  34179. if (memcmp(BuiltinName.data()+22, "ri_", 3))
  34180. break;
  34181. switch (BuiltinName[25]) {
  34182. default: break;
  34183. case 'a': // 1 string to match.
  34184. if (memcmp(BuiltinName.data()+26, "sl_ri", 5))
  34185. break;
  34186. return Intrinsic::hexagon_S4_ori_asl_ri; // "__builtin_HEXAGON_S4_ori_asl_ri"
  34187. case 'l': // 1 string to match.
  34188. if (memcmp(BuiltinName.data()+26, "sr_ri", 5))
  34189. break;
  34190. return Intrinsic::hexagon_S4_ori_lsr_ri; // "__builtin_HEXAGON_S4_ori_lsr_ri"
  34191. }
  34192. break;
  34193. case 'v': // 2 strings to match.
  34194. if (BuiltinName[22] != 'x')
  34195. break;
  34196. switch (BuiltinName[23]) {
  34197. default: break;
  34198. case 'a': // 1 string to match.
  34199. if (memcmp(BuiltinName.data()+24, "ddsubhr", 7))
  34200. break;
  34201. return Intrinsic::hexagon_S4_vxaddsubhr; // "__builtin_HEXAGON_S4_vxaddsubhr"
  34202. case 's': // 1 string to match.
  34203. if (memcmp(BuiltinName.data()+24, "ubaddhr", 7))
  34204. break;
  34205. return Intrinsic::hexagon_S4_vxsubaddhr; // "__builtin_HEXAGON_S4_vxsubaddhr"
  34206. }
  34207. break;
  34208. }
  34209. break;
  34210. case '5': // 1 string to match.
  34211. if (memcmp(BuiltinName.data()+20, "_asrhub_sat", 11))
  34212. break;
  34213. return Intrinsic::hexagon_S5_asrhub_sat; // "__builtin_HEXAGON_S5_asrhub_sat"
  34214. }
  34215. break;
  34216. }
  34217. break;
  34218. case 32: // 96 strings to match.
  34219. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  34220. break;
  34221. switch (BuiltinName[18]) {
  34222. default: break;
  34223. case 'A': // 16 strings to match.
  34224. switch (BuiltinName[19]) {
  34225. default: break;
  34226. case '2': // 14 strings to match.
  34227. if (BuiltinName[20] != '_')
  34228. break;
  34229. switch (BuiltinName[21]) {
  34230. default: break;
  34231. case 'a': // 6 strings to match.
  34232. if (memcmp(BuiltinName.data()+22, "ddh_", 4))
  34233. break;
  34234. switch (BuiltinName[26]) {
  34235. default: break;
  34236. case 'h': // 4 strings to match.
  34237. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34238. break;
  34239. switch (BuiltinName[30]) {
  34240. default: break;
  34241. case 'h': // 2 strings to match.
  34242. switch (BuiltinName[31]) {
  34243. default: break;
  34244. case 'h': // 1 string to match.
  34245. return Intrinsic::hexagon_A2_addh_h16_hh; // "__builtin_HEXAGON_A2_addh_h16_hh"
  34246. case 'l': // 1 string to match.
  34247. return Intrinsic::hexagon_A2_addh_h16_hl; // "__builtin_HEXAGON_A2_addh_h16_hl"
  34248. }
  34249. break;
  34250. case 'l': // 2 strings to match.
  34251. switch (BuiltinName[31]) {
  34252. default: break;
  34253. case 'h': // 1 string to match.
  34254. return Intrinsic::hexagon_A2_addh_h16_lh; // "__builtin_HEXAGON_A2_addh_h16_lh"
  34255. case 'l': // 1 string to match.
  34256. return Intrinsic::hexagon_A2_addh_h16_ll; // "__builtin_HEXAGON_A2_addh_h16_ll"
  34257. }
  34258. break;
  34259. }
  34260. break;
  34261. case 'l': // 2 strings to match.
  34262. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34263. break;
  34264. switch (BuiltinName[30]) {
  34265. default: break;
  34266. case 'h': // 1 string to match.
  34267. if (BuiltinName[31] != 'l')
  34268. break;
  34269. return Intrinsic::hexagon_A2_addh_l16_hl; // "__builtin_HEXAGON_A2_addh_l16_hl"
  34270. case 'l': // 1 string to match.
  34271. if (BuiltinName[31] != 'l')
  34272. break;
  34273. return Intrinsic::hexagon_A2_addh_l16_ll; // "__builtin_HEXAGON_A2_addh_l16_ll"
  34274. }
  34275. break;
  34276. }
  34277. break;
  34278. case 's': // 6 strings to match.
  34279. if (memcmp(BuiltinName.data()+22, "ubh_", 4))
  34280. break;
  34281. switch (BuiltinName[26]) {
  34282. default: break;
  34283. case 'h': // 4 strings to match.
  34284. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34285. break;
  34286. switch (BuiltinName[30]) {
  34287. default: break;
  34288. case 'h': // 2 strings to match.
  34289. switch (BuiltinName[31]) {
  34290. default: break;
  34291. case 'h': // 1 string to match.
  34292. return Intrinsic::hexagon_A2_subh_h16_hh; // "__builtin_HEXAGON_A2_subh_h16_hh"
  34293. case 'l': // 1 string to match.
  34294. return Intrinsic::hexagon_A2_subh_h16_hl; // "__builtin_HEXAGON_A2_subh_h16_hl"
  34295. }
  34296. break;
  34297. case 'l': // 2 strings to match.
  34298. switch (BuiltinName[31]) {
  34299. default: break;
  34300. case 'h': // 1 string to match.
  34301. return Intrinsic::hexagon_A2_subh_h16_lh; // "__builtin_HEXAGON_A2_subh_h16_lh"
  34302. case 'l': // 1 string to match.
  34303. return Intrinsic::hexagon_A2_subh_h16_ll; // "__builtin_HEXAGON_A2_subh_h16_ll"
  34304. }
  34305. break;
  34306. }
  34307. break;
  34308. case 'l': // 2 strings to match.
  34309. if (memcmp(BuiltinName.data()+27, "16_", 3))
  34310. break;
  34311. switch (BuiltinName[30]) {
  34312. default: break;
  34313. case 'h': // 1 string to match.
  34314. if (BuiltinName[31] != 'l')
  34315. break;
  34316. return Intrinsic::hexagon_A2_subh_l16_hl; // "__builtin_HEXAGON_A2_subh_l16_hl"
  34317. case 'l': // 1 string to match.
  34318. if (BuiltinName[31] != 'l')
  34319. break;
  34320. return Intrinsic::hexagon_A2_subh_l16_ll; // "__builtin_HEXAGON_A2_subh_l16_ll"
  34321. }
  34322. break;
  34323. }
  34324. break;
  34325. case 'v': // 2 strings to match.
  34326. if (BuiltinName[22] != 'r')
  34327. break;
  34328. switch (BuiltinName[23]) {
  34329. default: break;
  34330. case 'a': // 1 string to match.
  34331. if (memcmp(BuiltinName.data()+24, "ddub_acc", 8))
  34332. break;
  34333. return Intrinsic::hexagon_A2_vraddub_acc; // "__builtin_HEXAGON_A2_vraddub_acc"
  34334. case 's': // 1 string to match.
  34335. if (memcmp(BuiltinName.data()+24, "adub_acc", 8))
  34336. break;
  34337. return Intrinsic::hexagon_A2_vrsadub_acc; // "__builtin_HEXAGON_A2_vrsadub_acc"
  34338. }
  34339. break;
  34340. }
  34341. break;
  34342. case '4': // 2 strings to match.
  34343. if (BuiltinName[20] != '_')
  34344. break;
  34345. switch (BuiltinName[21]) {
  34346. default: break;
  34347. case 'b': // 1 string to match.
  34348. if (memcmp(BuiltinName.data()+22, "oundscheck", 10))
  34349. break;
  34350. return Intrinsic::hexagon_A4_boundscheck; // "__builtin_HEXAGON_A4_boundscheck"
  34351. case 'v': // 1 string to match.
  34352. if (memcmp(BuiltinName.data()+22, "cmpbeq_any", 10))
  34353. break;
  34354. return Intrinsic::hexagon_A4_vcmpbeq_any; // "__builtin_HEXAGON_A4_vcmpbeq_any"
  34355. }
  34356. break;
  34357. }
  34358. break;
  34359. case 'C': // 1 string to match.
  34360. if (memcmp(BuiltinName.data()+19, "4_fastcorner9", 13))
  34361. break;
  34362. return Intrinsic::hexagon_C4_fastcorner9; // "__builtin_HEXAGON_C4_fastcorner9"
  34363. case 'M': // 16 strings to match.
  34364. if (memcmp(BuiltinName.data()+19, "2_", 2))
  34365. break;
  34366. switch (BuiltinName[21]) {
  34367. default: break;
  34368. case 'm': // 12 strings to match.
  34369. switch (BuiltinName[22]) {
  34370. default: break;
  34371. case 'm': // 4 strings to match.
  34372. if (memcmp(BuiltinName.data()+23, "acu", 3))
  34373. break;
  34374. switch (BuiltinName[26]) {
  34375. default: break;
  34376. case 'h': // 2 strings to match.
  34377. if (memcmp(BuiltinName.data()+27, "s_rs", 4))
  34378. break;
  34379. switch (BuiltinName[31]) {
  34380. default: break;
  34381. case '0': // 1 string to match.
  34382. return Intrinsic::hexagon_M2_mmacuhs_rs0; // "__builtin_HEXAGON_M2_mmacuhs_rs0"
  34383. case '1': // 1 string to match.
  34384. return Intrinsic::hexagon_M2_mmacuhs_rs1; // "__builtin_HEXAGON_M2_mmacuhs_rs1"
  34385. }
  34386. break;
  34387. case 'l': // 2 strings to match.
  34388. if (memcmp(BuiltinName.data()+27, "s_rs", 4))
  34389. break;
  34390. switch (BuiltinName[31]) {
  34391. default: break;
  34392. case '0': // 1 string to match.
  34393. return Intrinsic::hexagon_M2_mmaculs_rs0; // "__builtin_HEXAGON_M2_mmaculs_rs0"
  34394. case '1': // 1 string to match.
  34395. return Intrinsic::hexagon_M2_mmaculs_rs1; // "__builtin_HEXAGON_M2_mmaculs_rs1"
  34396. }
  34397. break;
  34398. }
  34399. break;
  34400. case 'p': // 8 strings to match.
  34401. if (memcmp(BuiltinName.data()+23, "yud_", 4))
  34402. break;
  34403. switch (BuiltinName[27]) {
  34404. default: break;
  34405. case 'h': // 4 strings to match.
  34406. switch (BuiltinName[28]) {
  34407. default: break;
  34408. case 'h': // 2 strings to match.
  34409. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34410. break;
  34411. switch (BuiltinName[31]) {
  34412. default: break;
  34413. case '0': // 1 string to match.
  34414. return Intrinsic::hexagon_M2_mpyud_hh_s0; // "__builtin_HEXAGON_M2_mpyud_hh_s0"
  34415. case '1': // 1 string to match.
  34416. return Intrinsic::hexagon_M2_mpyud_hh_s1; // "__builtin_HEXAGON_M2_mpyud_hh_s1"
  34417. }
  34418. break;
  34419. case 'l': // 2 strings to match.
  34420. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34421. break;
  34422. switch (BuiltinName[31]) {
  34423. default: break;
  34424. case '0': // 1 string to match.
  34425. return Intrinsic::hexagon_M2_mpyud_hl_s0; // "__builtin_HEXAGON_M2_mpyud_hl_s0"
  34426. case '1': // 1 string to match.
  34427. return Intrinsic::hexagon_M2_mpyud_hl_s1; // "__builtin_HEXAGON_M2_mpyud_hl_s1"
  34428. }
  34429. break;
  34430. }
  34431. break;
  34432. case 'l': // 4 strings to match.
  34433. switch (BuiltinName[28]) {
  34434. default: break;
  34435. case 'h': // 2 strings to match.
  34436. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34437. break;
  34438. switch (BuiltinName[31]) {
  34439. default: break;
  34440. case '0': // 1 string to match.
  34441. return Intrinsic::hexagon_M2_mpyud_lh_s0; // "__builtin_HEXAGON_M2_mpyud_lh_s0"
  34442. case '1': // 1 string to match.
  34443. return Intrinsic::hexagon_M2_mpyud_lh_s1; // "__builtin_HEXAGON_M2_mpyud_lh_s1"
  34444. }
  34445. break;
  34446. case 'l': // 2 strings to match.
  34447. if (memcmp(BuiltinName.data()+29, "_s", 2))
  34448. break;
  34449. switch (BuiltinName[31]) {
  34450. default: break;
  34451. case '0': // 1 string to match.
  34452. return Intrinsic::hexagon_M2_mpyud_ll_s0; // "__builtin_HEXAGON_M2_mpyud_ll_s0"
  34453. case '1': // 1 string to match.
  34454. return Intrinsic::hexagon_M2_mpyud_ll_s1; // "__builtin_HEXAGON_M2_mpyud_ll_s1"
  34455. }
  34456. break;
  34457. }
  34458. break;
  34459. }
  34460. break;
  34461. }
  34462. break;
  34463. case 'v': // 4 strings to match.
  34464. if (memcmp(BuiltinName.data()+22, "rcm", 3))
  34465. break;
  34466. switch (BuiltinName[25]) {
  34467. default: break;
  34468. case 'a': // 2 strings to match.
  34469. if (BuiltinName[26] != 'c')
  34470. break;
  34471. switch (BuiltinName[27]) {
  34472. default: break;
  34473. case 'i': // 1 string to match.
  34474. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  34475. break;
  34476. return Intrinsic::hexagon_M2_vrcmaci_s0c; // "__builtin_HEXAGON_M2_vrcmaci_s0c"
  34477. case 'r': // 1 string to match.
  34478. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  34479. break;
  34480. return Intrinsic::hexagon_M2_vrcmacr_s0c; // "__builtin_HEXAGON_M2_vrcmacr_s0c"
  34481. }
  34482. break;
  34483. case 'p': // 2 strings to match.
  34484. if (BuiltinName[26] != 'y')
  34485. break;
  34486. switch (BuiltinName[27]) {
  34487. default: break;
  34488. case 'i': // 1 string to match.
  34489. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  34490. break;
  34491. return Intrinsic::hexagon_M2_vrcmpyi_s0c; // "__builtin_HEXAGON_M2_vrcmpyi_s0c"
  34492. case 'r': // 1 string to match.
  34493. if (memcmp(BuiltinName.data()+28, "_s0c", 4))
  34494. break;
  34495. return Intrinsic::hexagon_M2_vrcmpyr_s0c; // "__builtin_HEXAGON_M2_vrcmpyr_s0c"
  34496. }
  34497. break;
  34498. }
  34499. break;
  34500. }
  34501. break;
  34502. case 'S': // 63 strings to match.
  34503. switch (BuiltinName[19]) {
  34504. default: break;
  34505. case '2': // 56 strings to match.
  34506. if (BuiltinName[20] != '_')
  34507. break;
  34508. switch (BuiltinName[21]) {
  34509. default: break;
  34510. case 'a': // 32 strings to match.
  34511. switch (BuiltinName[22]) {
  34512. default: break;
  34513. case 'd': // 1 string to match.
  34514. if (memcmp(BuiltinName.data()+23, "dasl_rrri", 9))
  34515. break;
  34516. return Intrinsic::hexagon_S2_addasl_rrri; // "__builtin_HEXAGON_S2_addasl_rrri"
  34517. case 's': // 31 strings to match.
  34518. switch (BuiltinName[23]) {
  34519. default: break;
  34520. case 'l': // 15 strings to match.
  34521. if (BuiltinName[24] != '_')
  34522. break;
  34523. switch (BuiltinName[25]) {
  34524. default: break;
  34525. case 'i': // 7 strings to match.
  34526. if (BuiltinName[26] != '_')
  34527. break;
  34528. switch (BuiltinName[27]) {
  34529. default: break;
  34530. case 'p': // 3 strings to match.
  34531. if (BuiltinName[28] != '_')
  34532. break;
  34533. switch (BuiltinName[29]) {
  34534. default: break;
  34535. case 'a': // 2 strings to match.
  34536. switch (BuiltinName[30]) {
  34537. default: break;
  34538. case 'c': // 1 string to match.
  34539. if (BuiltinName[31] != 'c')
  34540. break;
  34541. return Intrinsic::hexagon_S2_asl_i_p_acc; // "__builtin_HEXAGON_S2_asl_i_p_acc"
  34542. case 'n': // 1 string to match.
  34543. if (BuiltinName[31] != 'd')
  34544. break;
  34545. return Intrinsic::hexagon_S2_asl_i_p_and; // "__builtin_HEXAGON_S2_asl_i_p_and"
  34546. }
  34547. break;
  34548. case 'n': // 1 string to match.
  34549. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34550. break;
  34551. return Intrinsic::hexagon_S2_asl_i_p_nac; // "__builtin_HEXAGON_S2_asl_i_p_nac"
  34552. }
  34553. break;
  34554. case 'r': // 4 strings to match.
  34555. if (BuiltinName[28] != '_')
  34556. break;
  34557. switch (BuiltinName[29]) {
  34558. default: break;
  34559. case 'a': // 2 strings to match.
  34560. switch (BuiltinName[30]) {
  34561. default: break;
  34562. case 'c': // 1 string to match.
  34563. if (BuiltinName[31] != 'c')
  34564. break;
  34565. return Intrinsic::hexagon_S2_asl_i_r_acc; // "__builtin_HEXAGON_S2_asl_i_r_acc"
  34566. case 'n': // 1 string to match.
  34567. if (BuiltinName[31] != 'd')
  34568. break;
  34569. return Intrinsic::hexagon_S2_asl_i_r_and; // "__builtin_HEXAGON_S2_asl_i_r_and"
  34570. }
  34571. break;
  34572. case 'n': // 1 string to match.
  34573. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34574. break;
  34575. return Intrinsic::hexagon_S2_asl_i_r_nac; // "__builtin_HEXAGON_S2_asl_i_r_nac"
  34576. case 's': // 1 string to match.
  34577. if (memcmp(BuiltinName.data()+30, "at", 2))
  34578. break;
  34579. return Intrinsic::hexagon_S2_asl_i_r_sat; // "__builtin_HEXAGON_S2_asl_i_r_sat"
  34580. }
  34581. break;
  34582. }
  34583. break;
  34584. case 'r': // 8 strings to match.
  34585. if (BuiltinName[26] != '_')
  34586. break;
  34587. switch (BuiltinName[27]) {
  34588. default: break;
  34589. case 'p': // 4 strings to match.
  34590. if (BuiltinName[28] != '_')
  34591. break;
  34592. switch (BuiltinName[29]) {
  34593. default: break;
  34594. case 'a': // 2 strings to match.
  34595. switch (BuiltinName[30]) {
  34596. default: break;
  34597. case 'c': // 1 string to match.
  34598. if (BuiltinName[31] != 'c')
  34599. break;
  34600. return Intrinsic::hexagon_S2_asl_r_p_acc; // "__builtin_HEXAGON_S2_asl_r_p_acc"
  34601. case 'n': // 1 string to match.
  34602. if (BuiltinName[31] != 'd')
  34603. break;
  34604. return Intrinsic::hexagon_S2_asl_r_p_and; // "__builtin_HEXAGON_S2_asl_r_p_and"
  34605. }
  34606. break;
  34607. case 'n': // 1 string to match.
  34608. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34609. break;
  34610. return Intrinsic::hexagon_S2_asl_r_p_nac; // "__builtin_HEXAGON_S2_asl_r_p_nac"
  34611. case 'x': // 1 string to match.
  34612. if (memcmp(BuiltinName.data()+30, "or", 2))
  34613. break;
  34614. return Intrinsic::hexagon_S2_asl_r_p_xor; // "__builtin_HEXAGON_S2_asl_r_p_xor"
  34615. }
  34616. break;
  34617. case 'r': // 4 strings to match.
  34618. if (BuiltinName[28] != '_')
  34619. break;
  34620. switch (BuiltinName[29]) {
  34621. default: break;
  34622. case 'a': // 2 strings to match.
  34623. switch (BuiltinName[30]) {
  34624. default: break;
  34625. case 'c': // 1 string to match.
  34626. if (BuiltinName[31] != 'c')
  34627. break;
  34628. return Intrinsic::hexagon_S2_asl_r_r_acc; // "__builtin_HEXAGON_S2_asl_r_r_acc"
  34629. case 'n': // 1 string to match.
  34630. if (BuiltinName[31] != 'd')
  34631. break;
  34632. return Intrinsic::hexagon_S2_asl_r_r_and; // "__builtin_HEXAGON_S2_asl_r_r_and"
  34633. }
  34634. break;
  34635. case 'n': // 1 string to match.
  34636. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34637. break;
  34638. return Intrinsic::hexagon_S2_asl_r_r_nac; // "__builtin_HEXAGON_S2_asl_r_r_nac"
  34639. case 's': // 1 string to match.
  34640. if (memcmp(BuiltinName.data()+30, "at", 2))
  34641. break;
  34642. return Intrinsic::hexagon_S2_asl_r_r_sat; // "__builtin_HEXAGON_S2_asl_r_r_sat"
  34643. }
  34644. break;
  34645. }
  34646. break;
  34647. }
  34648. break;
  34649. case 'r': // 16 strings to match.
  34650. if (BuiltinName[24] != '_')
  34651. break;
  34652. switch (BuiltinName[25]) {
  34653. default: break;
  34654. case 'i': // 8 strings to match.
  34655. if (BuiltinName[26] != '_')
  34656. break;
  34657. switch (BuiltinName[27]) {
  34658. default: break;
  34659. case 'p': // 4 strings to match.
  34660. if (BuiltinName[28] != '_')
  34661. break;
  34662. switch (BuiltinName[29]) {
  34663. default: break;
  34664. case 'a': // 2 strings to match.
  34665. switch (BuiltinName[30]) {
  34666. default: break;
  34667. case 'c': // 1 string to match.
  34668. if (BuiltinName[31] != 'c')
  34669. break;
  34670. return Intrinsic::hexagon_S2_asr_i_p_acc; // "__builtin_HEXAGON_S2_asr_i_p_acc"
  34671. case 'n': // 1 string to match.
  34672. if (BuiltinName[31] != 'd')
  34673. break;
  34674. return Intrinsic::hexagon_S2_asr_i_p_and; // "__builtin_HEXAGON_S2_asr_i_p_and"
  34675. }
  34676. break;
  34677. case 'n': // 1 string to match.
  34678. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34679. break;
  34680. return Intrinsic::hexagon_S2_asr_i_p_nac; // "__builtin_HEXAGON_S2_asr_i_p_nac"
  34681. case 'r': // 1 string to match.
  34682. if (memcmp(BuiltinName.data()+30, "nd", 2))
  34683. break;
  34684. return Intrinsic::hexagon_S2_asr_i_p_rnd; // "__builtin_HEXAGON_S2_asr_i_p_rnd"
  34685. }
  34686. break;
  34687. case 'r': // 4 strings to match.
  34688. if (BuiltinName[28] != '_')
  34689. break;
  34690. switch (BuiltinName[29]) {
  34691. default: break;
  34692. case 'a': // 2 strings to match.
  34693. switch (BuiltinName[30]) {
  34694. default: break;
  34695. case 'c': // 1 string to match.
  34696. if (BuiltinName[31] != 'c')
  34697. break;
  34698. return Intrinsic::hexagon_S2_asr_i_r_acc; // "__builtin_HEXAGON_S2_asr_i_r_acc"
  34699. case 'n': // 1 string to match.
  34700. if (BuiltinName[31] != 'd')
  34701. break;
  34702. return Intrinsic::hexagon_S2_asr_i_r_and; // "__builtin_HEXAGON_S2_asr_i_r_and"
  34703. }
  34704. break;
  34705. case 'n': // 1 string to match.
  34706. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34707. break;
  34708. return Intrinsic::hexagon_S2_asr_i_r_nac; // "__builtin_HEXAGON_S2_asr_i_r_nac"
  34709. case 'r': // 1 string to match.
  34710. if (memcmp(BuiltinName.data()+30, "nd", 2))
  34711. break;
  34712. return Intrinsic::hexagon_S2_asr_i_r_rnd; // "__builtin_HEXAGON_S2_asr_i_r_rnd"
  34713. }
  34714. break;
  34715. }
  34716. break;
  34717. case 'r': // 8 strings to match.
  34718. if (BuiltinName[26] != '_')
  34719. break;
  34720. switch (BuiltinName[27]) {
  34721. default: break;
  34722. case 'p': // 4 strings to match.
  34723. if (BuiltinName[28] != '_')
  34724. break;
  34725. switch (BuiltinName[29]) {
  34726. default: break;
  34727. case 'a': // 2 strings to match.
  34728. switch (BuiltinName[30]) {
  34729. default: break;
  34730. case 'c': // 1 string to match.
  34731. if (BuiltinName[31] != 'c')
  34732. break;
  34733. return Intrinsic::hexagon_S2_asr_r_p_acc; // "__builtin_HEXAGON_S2_asr_r_p_acc"
  34734. case 'n': // 1 string to match.
  34735. if (BuiltinName[31] != 'd')
  34736. break;
  34737. return Intrinsic::hexagon_S2_asr_r_p_and; // "__builtin_HEXAGON_S2_asr_r_p_and"
  34738. }
  34739. break;
  34740. case 'n': // 1 string to match.
  34741. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34742. break;
  34743. return Intrinsic::hexagon_S2_asr_r_p_nac; // "__builtin_HEXAGON_S2_asr_r_p_nac"
  34744. case 'x': // 1 string to match.
  34745. if (memcmp(BuiltinName.data()+30, "or", 2))
  34746. break;
  34747. return Intrinsic::hexagon_S2_asr_r_p_xor; // "__builtin_HEXAGON_S2_asr_r_p_xor"
  34748. }
  34749. break;
  34750. case 'r': // 4 strings to match.
  34751. if (BuiltinName[28] != '_')
  34752. break;
  34753. switch (BuiltinName[29]) {
  34754. default: break;
  34755. case 'a': // 2 strings to match.
  34756. switch (BuiltinName[30]) {
  34757. default: break;
  34758. case 'c': // 1 string to match.
  34759. if (BuiltinName[31] != 'c')
  34760. break;
  34761. return Intrinsic::hexagon_S2_asr_r_r_acc; // "__builtin_HEXAGON_S2_asr_r_r_acc"
  34762. case 'n': // 1 string to match.
  34763. if (BuiltinName[31] != 'd')
  34764. break;
  34765. return Intrinsic::hexagon_S2_asr_r_r_and; // "__builtin_HEXAGON_S2_asr_r_r_and"
  34766. }
  34767. break;
  34768. case 'n': // 1 string to match.
  34769. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34770. break;
  34771. return Intrinsic::hexagon_S2_asr_r_r_nac; // "__builtin_HEXAGON_S2_asr_r_r_nac"
  34772. case 's': // 1 string to match.
  34773. if (memcmp(BuiltinName.data()+30, "at", 2))
  34774. break;
  34775. return Intrinsic::hexagon_S2_asr_r_r_sat; // "__builtin_HEXAGON_S2_asr_r_r_sat"
  34776. }
  34777. break;
  34778. }
  34779. break;
  34780. }
  34781. break;
  34782. }
  34783. break;
  34784. }
  34785. break;
  34786. case 'e': // 1 string to match.
  34787. if (memcmp(BuiltinName.data()+22, "xtractu_rp", 10))
  34788. break;
  34789. return Intrinsic::hexagon_S2_extractu_rp; // "__builtin_HEXAGON_S2_extractu_rp"
  34790. case 'l': // 20 strings to match.
  34791. if (BuiltinName[22] != 's')
  34792. break;
  34793. switch (BuiltinName[23]) {
  34794. default: break;
  34795. case 'l': // 7 strings to match.
  34796. if (memcmp(BuiltinName.data()+24, "_r_", 3))
  34797. break;
  34798. switch (BuiltinName[27]) {
  34799. default: break;
  34800. case 'p': // 4 strings to match.
  34801. if (BuiltinName[28] != '_')
  34802. break;
  34803. switch (BuiltinName[29]) {
  34804. default: break;
  34805. case 'a': // 2 strings to match.
  34806. switch (BuiltinName[30]) {
  34807. default: break;
  34808. case 'c': // 1 string to match.
  34809. if (BuiltinName[31] != 'c')
  34810. break;
  34811. return Intrinsic::hexagon_S2_lsl_r_p_acc; // "__builtin_HEXAGON_S2_lsl_r_p_acc"
  34812. case 'n': // 1 string to match.
  34813. if (BuiltinName[31] != 'd')
  34814. break;
  34815. return Intrinsic::hexagon_S2_lsl_r_p_and; // "__builtin_HEXAGON_S2_lsl_r_p_and"
  34816. }
  34817. break;
  34818. case 'n': // 1 string to match.
  34819. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34820. break;
  34821. return Intrinsic::hexagon_S2_lsl_r_p_nac; // "__builtin_HEXAGON_S2_lsl_r_p_nac"
  34822. case 'x': // 1 string to match.
  34823. if (memcmp(BuiltinName.data()+30, "or", 2))
  34824. break;
  34825. return Intrinsic::hexagon_S2_lsl_r_p_xor; // "__builtin_HEXAGON_S2_lsl_r_p_xor"
  34826. }
  34827. break;
  34828. case 'r': // 3 strings to match.
  34829. if (BuiltinName[28] != '_')
  34830. break;
  34831. switch (BuiltinName[29]) {
  34832. default: break;
  34833. case 'a': // 2 strings to match.
  34834. switch (BuiltinName[30]) {
  34835. default: break;
  34836. case 'c': // 1 string to match.
  34837. if (BuiltinName[31] != 'c')
  34838. break;
  34839. return Intrinsic::hexagon_S2_lsl_r_r_acc; // "__builtin_HEXAGON_S2_lsl_r_r_acc"
  34840. case 'n': // 1 string to match.
  34841. if (BuiltinName[31] != 'd')
  34842. break;
  34843. return Intrinsic::hexagon_S2_lsl_r_r_and; // "__builtin_HEXAGON_S2_lsl_r_r_and"
  34844. }
  34845. break;
  34846. case 'n': // 1 string to match.
  34847. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34848. break;
  34849. return Intrinsic::hexagon_S2_lsl_r_r_nac; // "__builtin_HEXAGON_S2_lsl_r_r_nac"
  34850. }
  34851. break;
  34852. }
  34853. break;
  34854. case 'r': // 13 strings to match.
  34855. if (BuiltinName[24] != '_')
  34856. break;
  34857. switch (BuiltinName[25]) {
  34858. default: break;
  34859. case 'i': // 6 strings to match.
  34860. if (BuiltinName[26] != '_')
  34861. break;
  34862. switch (BuiltinName[27]) {
  34863. default: break;
  34864. case 'p': // 3 strings to match.
  34865. if (BuiltinName[28] != '_')
  34866. break;
  34867. switch (BuiltinName[29]) {
  34868. default: break;
  34869. case 'a': // 2 strings to match.
  34870. switch (BuiltinName[30]) {
  34871. default: break;
  34872. case 'c': // 1 string to match.
  34873. if (BuiltinName[31] != 'c')
  34874. break;
  34875. return Intrinsic::hexagon_S2_lsr_i_p_acc; // "__builtin_HEXAGON_S2_lsr_i_p_acc"
  34876. case 'n': // 1 string to match.
  34877. if (BuiltinName[31] != 'd')
  34878. break;
  34879. return Intrinsic::hexagon_S2_lsr_i_p_and; // "__builtin_HEXAGON_S2_lsr_i_p_and"
  34880. }
  34881. break;
  34882. case 'n': // 1 string to match.
  34883. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34884. break;
  34885. return Intrinsic::hexagon_S2_lsr_i_p_nac; // "__builtin_HEXAGON_S2_lsr_i_p_nac"
  34886. }
  34887. break;
  34888. case 'r': // 3 strings to match.
  34889. if (BuiltinName[28] != '_')
  34890. break;
  34891. switch (BuiltinName[29]) {
  34892. default: break;
  34893. case 'a': // 2 strings to match.
  34894. switch (BuiltinName[30]) {
  34895. default: break;
  34896. case 'c': // 1 string to match.
  34897. if (BuiltinName[31] != 'c')
  34898. break;
  34899. return Intrinsic::hexagon_S2_lsr_i_r_acc; // "__builtin_HEXAGON_S2_lsr_i_r_acc"
  34900. case 'n': // 1 string to match.
  34901. if (BuiltinName[31] != 'd')
  34902. break;
  34903. return Intrinsic::hexagon_S2_lsr_i_r_and; // "__builtin_HEXAGON_S2_lsr_i_r_and"
  34904. }
  34905. break;
  34906. case 'n': // 1 string to match.
  34907. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34908. break;
  34909. return Intrinsic::hexagon_S2_lsr_i_r_nac; // "__builtin_HEXAGON_S2_lsr_i_r_nac"
  34910. }
  34911. break;
  34912. }
  34913. break;
  34914. case 'r': // 7 strings to match.
  34915. if (BuiltinName[26] != '_')
  34916. break;
  34917. switch (BuiltinName[27]) {
  34918. default: break;
  34919. case 'p': // 4 strings to match.
  34920. if (BuiltinName[28] != '_')
  34921. break;
  34922. switch (BuiltinName[29]) {
  34923. default: break;
  34924. case 'a': // 2 strings to match.
  34925. switch (BuiltinName[30]) {
  34926. default: break;
  34927. case 'c': // 1 string to match.
  34928. if (BuiltinName[31] != 'c')
  34929. break;
  34930. return Intrinsic::hexagon_S2_lsr_r_p_acc; // "__builtin_HEXAGON_S2_lsr_r_p_acc"
  34931. case 'n': // 1 string to match.
  34932. if (BuiltinName[31] != 'd')
  34933. break;
  34934. return Intrinsic::hexagon_S2_lsr_r_p_and; // "__builtin_HEXAGON_S2_lsr_r_p_and"
  34935. }
  34936. break;
  34937. case 'n': // 1 string to match.
  34938. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34939. break;
  34940. return Intrinsic::hexagon_S2_lsr_r_p_nac; // "__builtin_HEXAGON_S2_lsr_r_p_nac"
  34941. case 'x': // 1 string to match.
  34942. if (memcmp(BuiltinName.data()+30, "or", 2))
  34943. break;
  34944. return Intrinsic::hexagon_S2_lsr_r_p_xor; // "__builtin_HEXAGON_S2_lsr_r_p_xor"
  34945. }
  34946. break;
  34947. case 'r': // 3 strings to match.
  34948. if (BuiltinName[28] != '_')
  34949. break;
  34950. switch (BuiltinName[29]) {
  34951. default: break;
  34952. case 'a': // 2 strings to match.
  34953. switch (BuiltinName[30]) {
  34954. default: break;
  34955. case 'c': // 1 string to match.
  34956. if (BuiltinName[31] != 'c')
  34957. break;
  34958. return Intrinsic::hexagon_S2_lsr_r_r_acc; // "__builtin_HEXAGON_S2_lsr_r_r_acc"
  34959. case 'n': // 1 string to match.
  34960. if (BuiltinName[31] != 'd')
  34961. break;
  34962. return Intrinsic::hexagon_S2_lsr_r_r_and; // "__builtin_HEXAGON_S2_lsr_r_r_and"
  34963. }
  34964. break;
  34965. case 'n': // 1 string to match.
  34966. if (memcmp(BuiltinName.data()+30, "ac", 2))
  34967. break;
  34968. return Intrinsic::hexagon_S2_lsr_r_r_nac; // "__builtin_HEXAGON_S2_lsr_r_r_nac"
  34969. }
  34970. break;
  34971. }
  34972. break;
  34973. }
  34974. break;
  34975. }
  34976. break;
  34977. case 't': // 2 strings to match.
  34978. if (memcmp(BuiltinName.data()+22, "ogglebit_", 9))
  34979. break;
  34980. switch (BuiltinName[31]) {
  34981. default: break;
  34982. case 'i': // 1 string to match.
  34983. return Intrinsic::hexagon_S2_togglebit_i; // "__builtin_HEXAGON_S2_togglebit_i"
  34984. case 'r': // 1 string to match.
  34985. return Intrinsic::hexagon_S2_togglebit_r; // "__builtin_HEXAGON_S2_togglebit_r"
  34986. }
  34987. break;
  34988. case 'v': // 1 string to match.
  34989. if (memcmp(BuiltinName.data()+22, "rndpackwhs", 10))
  34990. break;
  34991. return Intrinsic::hexagon_S2_vrndpackwhs; // "__builtin_HEXAGON_S2_vrndpackwhs"
  34992. }
  34993. break;
  34994. case '4': // 7 strings to match.
  34995. if (BuiltinName[20] != '_')
  34996. break;
  34997. switch (BuiltinName[21]) {
  34998. default: break;
  34999. case 'a': // 4 strings to match.
  35000. switch (BuiltinName[22]) {
  35001. default: break;
  35002. case 'd': // 2 strings to match.
  35003. if (memcmp(BuiltinName.data()+23, "di_", 3))
  35004. break;
  35005. switch (BuiltinName[26]) {
  35006. default: break;
  35007. case 'a': // 1 string to match.
  35008. if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
  35009. break;
  35010. return Intrinsic::hexagon_S4_addi_asl_ri; // "__builtin_HEXAGON_S4_addi_asl_ri"
  35011. case 'l': // 1 string to match.
  35012. if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
  35013. break;
  35014. return Intrinsic::hexagon_S4_addi_lsr_ri; // "__builtin_HEXAGON_S4_addi_lsr_ri"
  35015. }
  35016. break;
  35017. case 'n': // 2 strings to match.
  35018. if (memcmp(BuiltinName.data()+23, "di_", 3))
  35019. break;
  35020. switch (BuiltinName[26]) {
  35021. default: break;
  35022. case 'a': // 1 string to match.
  35023. if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
  35024. break;
  35025. return Intrinsic::hexagon_S4_andi_asl_ri; // "__builtin_HEXAGON_S4_andi_asl_ri"
  35026. case 'l': // 1 string to match.
  35027. if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
  35028. break;
  35029. return Intrinsic::hexagon_S4_andi_lsr_ri; // "__builtin_HEXAGON_S4_andi_lsr_ri"
  35030. }
  35031. break;
  35032. }
  35033. break;
  35034. case 'e': // 1 string to match.
  35035. if (memcmp(BuiltinName.data()+22, "xtractp_rp", 10))
  35036. break;
  35037. return Intrinsic::hexagon_S4_extractp_rp; // "__builtin_HEXAGON_S4_extractp_rp"
  35038. case 's': // 2 strings to match.
  35039. if (memcmp(BuiltinName.data()+22, "ubi_", 4))
  35040. break;
  35041. switch (BuiltinName[26]) {
  35042. default: break;
  35043. case 'a': // 1 string to match.
  35044. if (memcmp(BuiltinName.data()+27, "sl_ri", 5))
  35045. break;
  35046. return Intrinsic::hexagon_S4_subi_asl_ri; // "__builtin_HEXAGON_S4_subi_asl_ri"
  35047. case 'l': // 1 string to match.
  35048. if (memcmp(BuiltinName.data()+27, "sr_ri", 5))
  35049. break;
  35050. return Intrinsic::hexagon_S4_subi_lsr_ri; // "__builtin_HEXAGON_S4_subi_lsr_ri"
  35051. }
  35052. break;
  35053. }
  35054. break;
  35055. }
  35056. break;
  35057. }
  35058. break;
  35059. case 33: // 9 strings to match.
  35060. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  35061. break;
  35062. switch (BuiltinName[18]) {
  35063. default: break;
  35064. case 'A': // 2 strings to match.
  35065. if (memcmp(BuiltinName.data()+19, "4_round_r", 9))
  35066. break;
  35067. switch (BuiltinName[28]) {
  35068. default: break;
  35069. case 'i': // 1 string to match.
  35070. if (memcmp(BuiltinName.data()+29, "_sat", 4))
  35071. break;
  35072. return Intrinsic::hexagon_A4_round_ri_sat; // "__builtin_HEXAGON_A4_round_ri_sat"
  35073. case 'r': // 1 string to match.
  35074. if (memcmp(BuiltinName.data()+29, "_sat", 4))
  35075. break;
  35076. return Intrinsic::hexagon_A4_round_rr_sat; // "__builtin_HEXAGON_A4_round_rr_sat"
  35077. }
  35078. break;
  35079. case 'M': // 1 string to match.
  35080. if (memcmp(BuiltinName.data()+19, "2_vrcmpys_s1rp", 14))
  35081. break;
  35082. return Intrinsic::hexagon_M2_vrcmpys_s1rp; // "__builtin_HEXAGON_M2_vrcmpys_s1rp"
  35083. case 'S': // 6 strings to match.
  35084. if (memcmp(BuiltinName.data()+19, "2_", 2))
  35085. break;
  35086. switch (BuiltinName[21]) {
  35087. default: break;
  35088. case 'a': // 2 strings to match.
  35089. if (memcmp(BuiltinName.data()+22, "sl_i_", 5))
  35090. break;
  35091. switch (BuiltinName[27]) {
  35092. default: break;
  35093. case 'p': // 1 string to match.
  35094. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35095. break;
  35096. return Intrinsic::hexagon_S2_asl_i_p_xacc; // "__builtin_HEXAGON_S2_asl_i_p_xacc"
  35097. case 'r': // 1 string to match.
  35098. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35099. break;
  35100. return Intrinsic::hexagon_S2_asl_i_r_xacc; // "__builtin_HEXAGON_S2_asl_i_r_xacc"
  35101. }
  35102. break;
  35103. case 'd': // 1 string to match.
  35104. if (memcmp(BuiltinName.data()+22, "einterleave", 11))
  35105. break;
  35106. return Intrinsic::hexagon_S2_deinterleave; // "__builtin_HEXAGON_S2_deinterleave"
  35107. case 'e': // 1 string to match.
  35108. if (memcmp(BuiltinName.data()+22, "xtractup_rp", 11))
  35109. break;
  35110. return Intrinsic::hexagon_S2_extractup_rp; // "__builtin_HEXAGON_S2_extractup_rp"
  35111. case 'l': // 2 strings to match.
  35112. if (memcmp(BuiltinName.data()+22, "sr_i_", 5))
  35113. break;
  35114. switch (BuiltinName[27]) {
  35115. default: break;
  35116. case 'p': // 1 string to match.
  35117. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35118. break;
  35119. return Intrinsic::hexagon_S2_lsr_i_p_xacc; // "__builtin_HEXAGON_S2_lsr_i_p_xacc"
  35120. case 'r': // 1 string to match.
  35121. if (memcmp(BuiltinName.data()+28, "_xacc", 5))
  35122. break;
  35123. return Intrinsic::hexagon_S2_lsr_i_r_xacc; // "__builtin_HEXAGON_S2_lsr_i_r_xacc"
  35124. }
  35125. break;
  35126. }
  35127. break;
  35128. }
  35129. break;
  35130. case 34: // 41 strings to match.
  35131. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  35132. break;
  35133. switch (BuiltinName[18]) {
  35134. default: break;
  35135. case 'M': // 38 strings to match.
  35136. switch (BuiltinName[19]) {
  35137. default: break;
  35138. case '2': // 35 strings to match.
  35139. if (BuiltinName[20] != '_')
  35140. break;
  35141. switch (BuiltinName[21]) {
  35142. default: break;
  35143. case 'm': // 33 strings to match.
  35144. if (memcmp(BuiltinName.data()+22, "py_", 3))
  35145. break;
  35146. switch (BuiltinName[25]) {
  35147. default: break;
  35148. case 'a': // 8 strings to match.
  35149. if (memcmp(BuiltinName.data()+26, "cc_", 3))
  35150. break;
  35151. switch (BuiltinName[29]) {
  35152. default: break;
  35153. case 'h': // 4 strings to match.
  35154. switch (BuiltinName[30]) {
  35155. default: break;
  35156. case 'h': // 2 strings to match.
  35157. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35158. break;
  35159. switch (BuiltinName[33]) {
  35160. default: break;
  35161. case '0': // 1 string to match.
  35162. return Intrinsic::hexagon_M2_mpy_acc_hh_s0; // "__builtin_HEXAGON_M2_mpy_acc_hh_s0"
  35163. case '1': // 1 string to match.
  35164. return Intrinsic::hexagon_M2_mpy_acc_hh_s1; // "__builtin_HEXAGON_M2_mpy_acc_hh_s1"
  35165. }
  35166. break;
  35167. case 'l': // 2 strings to match.
  35168. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35169. break;
  35170. switch (BuiltinName[33]) {
  35171. default: break;
  35172. case '0': // 1 string to match.
  35173. return Intrinsic::hexagon_M2_mpy_acc_hl_s0; // "__builtin_HEXAGON_M2_mpy_acc_hl_s0"
  35174. case '1': // 1 string to match.
  35175. return Intrinsic::hexagon_M2_mpy_acc_hl_s1; // "__builtin_HEXAGON_M2_mpy_acc_hl_s1"
  35176. }
  35177. break;
  35178. }
  35179. break;
  35180. case 'l': // 4 strings to match.
  35181. switch (BuiltinName[30]) {
  35182. default: break;
  35183. case 'h': // 2 strings to match.
  35184. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35185. break;
  35186. switch (BuiltinName[33]) {
  35187. default: break;
  35188. case '0': // 1 string to match.
  35189. return Intrinsic::hexagon_M2_mpy_acc_lh_s0; // "__builtin_HEXAGON_M2_mpy_acc_lh_s0"
  35190. case '1': // 1 string to match.
  35191. return Intrinsic::hexagon_M2_mpy_acc_lh_s1; // "__builtin_HEXAGON_M2_mpy_acc_lh_s1"
  35192. }
  35193. break;
  35194. case 'l': // 2 strings to match.
  35195. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35196. break;
  35197. switch (BuiltinName[33]) {
  35198. default: break;
  35199. case '0': // 1 string to match.
  35200. return Intrinsic::hexagon_M2_mpy_acc_ll_s0; // "__builtin_HEXAGON_M2_mpy_acc_ll_s0"
  35201. case '1': // 1 string to match.
  35202. return Intrinsic::hexagon_M2_mpy_acc_ll_s1; // "__builtin_HEXAGON_M2_mpy_acc_ll_s1"
  35203. }
  35204. break;
  35205. }
  35206. break;
  35207. }
  35208. break;
  35209. case 'n': // 8 strings to match.
  35210. if (memcmp(BuiltinName.data()+26, "ac_", 3))
  35211. break;
  35212. switch (BuiltinName[29]) {
  35213. default: break;
  35214. case 'h': // 4 strings to match.
  35215. switch (BuiltinName[30]) {
  35216. default: break;
  35217. case 'h': // 2 strings to match.
  35218. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35219. break;
  35220. switch (BuiltinName[33]) {
  35221. default: break;
  35222. case '0': // 1 string to match.
  35223. return Intrinsic::hexagon_M2_mpy_nac_hh_s0; // "__builtin_HEXAGON_M2_mpy_nac_hh_s0"
  35224. case '1': // 1 string to match.
  35225. return Intrinsic::hexagon_M2_mpy_nac_hh_s1; // "__builtin_HEXAGON_M2_mpy_nac_hh_s1"
  35226. }
  35227. break;
  35228. case 'l': // 2 strings to match.
  35229. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35230. break;
  35231. switch (BuiltinName[33]) {
  35232. default: break;
  35233. case '0': // 1 string to match.
  35234. return Intrinsic::hexagon_M2_mpy_nac_hl_s0; // "__builtin_HEXAGON_M2_mpy_nac_hl_s0"
  35235. case '1': // 1 string to match.
  35236. return Intrinsic::hexagon_M2_mpy_nac_hl_s1; // "__builtin_HEXAGON_M2_mpy_nac_hl_s1"
  35237. }
  35238. break;
  35239. }
  35240. break;
  35241. case 'l': // 4 strings to match.
  35242. switch (BuiltinName[30]) {
  35243. default: break;
  35244. case 'h': // 2 strings to match.
  35245. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35246. break;
  35247. switch (BuiltinName[33]) {
  35248. default: break;
  35249. case '0': // 1 string to match.
  35250. return Intrinsic::hexagon_M2_mpy_nac_lh_s0; // "__builtin_HEXAGON_M2_mpy_nac_lh_s0"
  35251. case '1': // 1 string to match.
  35252. return Intrinsic::hexagon_M2_mpy_nac_lh_s1; // "__builtin_HEXAGON_M2_mpy_nac_lh_s1"
  35253. }
  35254. break;
  35255. case 'l': // 2 strings to match.
  35256. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35257. break;
  35258. switch (BuiltinName[33]) {
  35259. default: break;
  35260. case '0': // 1 string to match.
  35261. return Intrinsic::hexagon_M2_mpy_nac_ll_s0; // "__builtin_HEXAGON_M2_mpy_nac_ll_s0"
  35262. case '1': // 1 string to match.
  35263. return Intrinsic::hexagon_M2_mpy_nac_ll_s1; // "__builtin_HEXAGON_M2_mpy_nac_ll_s1"
  35264. }
  35265. break;
  35266. }
  35267. break;
  35268. }
  35269. break;
  35270. case 'r': // 8 strings to match.
  35271. if (memcmp(BuiltinName.data()+26, "nd_", 3))
  35272. break;
  35273. switch (BuiltinName[29]) {
  35274. default: break;
  35275. case 'h': // 4 strings to match.
  35276. switch (BuiltinName[30]) {
  35277. default: break;
  35278. case 'h': // 2 strings to match.
  35279. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35280. break;
  35281. switch (BuiltinName[33]) {
  35282. default: break;
  35283. case '0': // 1 string to match.
  35284. return Intrinsic::hexagon_M2_mpy_rnd_hh_s0; // "__builtin_HEXAGON_M2_mpy_rnd_hh_s0"
  35285. case '1': // 1 string to match.
  35286. return Intrinsic::hexagon_M2_mpy_rnd_hh_s1; // "__builtin_HEXAGON_M2_mpy_rnd_hh_s1"
  35287. }
  35288. break;
  35289. case 'l': // 2 strings to match.
  35290. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35291. break;
  35292. switch (BuiltinName[33]) {
  35293. default: break;
  35294. case '0': // 1 string to match.
  35295. return Intrinsic::hexagon_M2_mpy_rnd_hl_s0; // "__builtin_HEXAGON_M2_mpy_rnd_hl_s0"
  35296. case '1': // 1 string to match.
  35297. return Intrinsic::hexagon_M2_mpy_rnd_hl_s1; // "__builtin_HEXAGON_M2_mpy_rnd_hl_s1"
  35298. }
  35299. break;
  35300. }
  35301. break;
  35302. case 'l': // 4 strings to match.
  35303. switch (BuiltinName[30]) {
  35304. default: break;
  35305. case 'h': // 2 strings to match.
  35306. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35307. break;
  35308. switch (BuiltinName[33]) {
  35309. default: break;
  35310. case '0': // 1 string to match.
  35311. return Intrinsic::hexagon_M2_mpy_rnd_lh_s0; // "__builtin_HEXAGON_M2_mpy_rnd_lh_s0"
  35312. case '1': // 1 string to match.
  35313. return Intrinsic::hexagon_M2_mpy_rnd_lh_s1; // "__builtin_HEXAGON_M2_mpy_rnd_lh_s1"
  35314. }
  35315. break;
  35316. case 'l': // 2 strings to match.
  35317. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35318. break;
  35319. switch (BuiltinName[33]) {
  35320. default: break;
  35321. case '0': // 1 string to match.
  35322. return Intrinsic::hexagon_M2_mpy_rnd_ll_s0; // "__builtin_HEXAGON_M2_mpy_rnd_ll_s0"
  35323. case '1': // 1 string to match.
  35324. return Intrinsic::hexagon_M2_mpy_rnd_ll_s1; // "__builtin_HEXAGON_M2_mpy_rnd_ll_s1"
  35325. }
  35326. break;
  35327. }
  35328. break;
  35329. }
  35330. break;
  35331. case 's': // 8 strings to match.
  35332. if (memcmp(BuiltinName.data()+26, "at_", 3))
  35333. break;
  35334. switch (BuiltinName[29]) {
  35335. default: break;
  35336. case 'h': // 4 strings to match.
  35337. switch (BuiltinName[30]) {
  35338. default: break;
  35339. case 'h': // 2 strings to match.
  35340. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35341. break;
  35342. switch (BuiltinName[33]) {
  35343. default: break;
  35344. case '0': // 1 string to match.
  35345. return Intrinsic::hexagon_M2_mpy_sat_hh_s0; // "__builtin_HEXAGON_M2_mpy_sat_hh_s0"
  35346. case '1': // 1 string to match.
  35347. return Intrinsic::hexagon_M2_mpy_sat_hh_s1; // "__builtin_HEXAGON_M2_mpy_sat_hh_s1"
  35348. }
  35349. break;
  35350. case 'l': // 2 strings to match.
  35351. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35352. break;
  35353. switch (BuiltinName[33]) {
  35354. default: break;
  35355. case '0': // 1 string to match.
  35356. return Intrinsic::hexagon_M2_mpy_sat_hl_s0; // "__builtin_HEXAGON_M2_mpy_sat_hl_s0"
  35357. case '1': // 1 string to match.
  35358. return Intrinsic::hexagon_M2_mpy_sat_hl_s1; // "__builtin_HEXAGON_M2_mpy_sat_hl_s1"
  35359. }
  35360. break;
  35361. }
  35362. break;
  35363. case 'l': // 4 strings to match.
  35364. switch (BuiltinName[30]) {
  35365. default: break;
  35366. case 'h': // 2 strings to match.
  35367. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35368. break;
  35369. switch (BuiltinName[33]) {
  35370. default: break;
  35371. case '0': // 1 string to match.
  35372. return Intrinsic::hexagon_M2_mpy_sat_lh_s0; // "__builtin_HEXAGON_M2_mpy_sat_lh_s0"
  35373. case '1': // 1 string to match.
  35374. return Intrinsic::hexagon_M2_mpy_sat_lh_s1; // "__builtin_HEXAGON_M2_mpy_sat_lh_s1"
  35375. }
  35376. break;
  35377. case 'l': // 2 strings to match.
  35378. if (memcmp(BuiltinName.data()+31, "_s", 2))
  35379. break;
  35380. switch (BuiltinName[33]) {
  35381. default: break;
  35382. case '0': // 1 string to match.
  35383. return Intrinsic::hexagon_M2_mpy_sat_ll_s0; // "__builtin_HEXAGON_M2_mpy_sat_ll_s0"
  35384. case '1': // 1 string to match.
  35385. return Intrinsic::hexagon_M2_mpy_sat_ll_s1; // "__builtin_HEXAGON_M2_mpy_sat_ll_s1"
  35386. }
  35387. break;
  35388. }
  35389. break;
  35390. }
  35391. break;
  35392. case 'u': // 1 string to match.
  35393. if (memcmp(BuiltinName.data()+26, "p_s1_sat", 8))
  35394. break;
  35395. return Intrinsic::hexagon_M2_mpy_up_s1_sat; // "__builtin_HEXAGON_M2_mpy_up_s1_sat"
  35396. }
  35397. break;
  35398. case 'v': // 2 strings to match.
  35399. if (memcmp(BuiltinName.data()+22, "mpy2s_s", 7))
  35400. break;
  35401. switch (BuiltinName[29]) {
  35402. default: break;
  35403. case '0': // 1 string to match.
  35404. if (memcmp(BuiltinName.data()+30, "pack", 4))
  35405. break;
  35406. return Intrinsic::hexagon_M2_vmpy2s_s0pack; // "__builtin_HEXAGON_M2_vmpy2s_s0pack"
  35407. case '1': // 1 string to match.
  35408. if (memcmp(BuiltinName.data()+30, "pack", 4))
  35409. break;
  35410. return Intrinsic::hexagon_M2_vmpy2s_s1pack; // "__builtin_HEXAGON_M2_vmpy2s_s1pack"
  35411. }
  35412. break;
  35413. }
  35414. break;
  35415. case '4': // 3 strings to match.
  35416. if (BuiltinName[20] != '_')
  35417. break;
  35418. switch (BuiltinName[21]) {
  35419. default: break;
  35420. case 'm': // 2 strings to match.
  35421. switch (BuiltinName[22]) {
  35422. default: break;
  35423. case 'a': // 1 string to match.
  35424. if (memcmp(BuiltinName.data()+23, "c_up_s1_sat", 11))
  35425. break;
  35426. return Intrinsic::hexagon_M4_mac_up_s1_sat; // "__builtin_HEXAGON_M4_mac_up_s1_sat"
  35427. case 'p': // 1 string to match.
  35428. if (memcmp(BuiltinName.data()+23, "yri_addr_u2", 11))
  35429. break;
  35430. return Intrinsic::hexagon_M4_mpyri_addr_u2; // "__builtin_HEXAGON_M4_mpyri_addr_u2"
  35431. }
  35432. break;
  35433. case 'n': // 1 string to match.
  35434. if (memcmp(BuiltinName.data()+22, "ac_up_s1_sat", 12))
  35435. break;
  35436. return Intrinsic::hexagon_M4_nac_up_s1_sat; // "__builtin_HEXAGON_M4_nac_up_s1_sat"
  35437. }
  35438. break;
  35439. }
  35440. break;
  35441. case 'S': // 3 strings to match.
  35442. switch (BuiltinName[19]) {
  35443. default: break;
  35444. case '2': // 2 strings to match.
  35445. if (memcmp(BuiltinName.data()+20, "_vsat", 5))
  35446. break;
  35447. switch (BuiltinName[25]) {
  35448. default: break;
  35449. case 'h': // 1 string to match.
  35450. if (memcmp(BuiltinName.data()+26, "b_nopack", 8))
  35451. break;
  35452. return Intrinsic::hexagon_S2_vsathb_nopack; // "__builtin_HEXAGON_S2_vsathb_nopack"
  35453. case 'w': // 1 string to match.
  35454. if (memcmp(BuiltinName.data()+26, "h_nopack", 8))
  35455. break;
  35456. return Intrinsic::hexagon_S2_vsatwh_nopack; // "__builtin_HEXAGON_S2_vsatwh_nopack"
  35457. }
  35458. break;
  35459. case '4': // 1 string to match.
  35460. if (memcmp(BuiltinName.data()+20, "_vrcrotate_acc", 14))
  35461. break;
  35462. return Intrinsic::hexagon_S4_vrcrotate_acc; // "__builtin_HEXAGON_S4_vrcrotate_acc"
  35463. }
  35464. break;
  35465. }
  35466. break;
  35467. case 35: // 64 strings to match.
  35468. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  35469. break;
  35470. switch (BuiltinName[18]) {
  35471. default: break;
  35472. case 'F': // 4 strings to match.
  35473. if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
  35474. break;
  35475. switch (BuiltinName[26]) {
  35476. default: break;
  35477. case 'd': // 2 strings to match.
  35478. if (memcmp(BuiltinName.data()+27, "f2", 2))
  35479. break;
  35480. switch (BuiltinName[29]) {
  35481. default: break;
  35482. case 'd': // 1 string to match.
  35483. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  35484. break;
  35485. return Intrinsic::hexagon_F2_conv_df2d_chop; // "__builtin_HEXAGON_F2_conv_df2d_chop"
  35486. case 'w': // 1 string to match.
  35487. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  35488. break;
  35489. return Intrinsic::hexagon_F2_conv_df2w_chop; // "__builtin_HEXAGON_F2_conv_df2w_chop"
  35490. }
  35491. break;
  35492. case 's': // 2 strings to match.
  35493. if (memcmp(BuiltinName.data()+27, "f2", 2))
  35494. break;
  35495. switch (BuiltinName[29]) {
  35496. default: break;
  35497. case 'd': // 1 string to match.
  35498. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  35499. break;
  35500. return Intrinsic::hexagon_F2_conv_sf2d_chop; // "__builtin_HEXAGON_F2_conv_sf2d_chop"
  35501. case 'w': // 1 string to match.
  35502. if (memcmp(BuiltinName.data()+30, "_chop", 5))
  35503. break;
  35504. return Intrinsic::hexagon_F2_conv_sf2w_chop; // "__builtin_HEXAGON_F2_conv_sf2w_chop"
  35505. }
  35506. break;
  35507. }
  35508. break;
  35509. case 'M': // 56 strings to match.
  35510. switch (BuiltinName[19]) {
  35511. default: break;
  35512. case '2': // 52 strings to match.
  35513. if (BuiltinName[20] != '_')
  35514. break;
  35515. switch (BuiltinName[21]) {
  35516. default: break;
  35517. case 'd': // 5 strings to match.
  35518. if (memcmp(BuiltinName.data()+22, "pmpy", 4))
  35519. break;
  35520. switch (BuiltinName[26]) {
  35521. default: break;
  35522. case 's': // 3 strings to match.
  35523. if (memcmp(BuiltinName.data()+27, "s_", 2))
  35524. break;
  35525. switch (BuiltinName[29]) {
  35526. default: break;
  35527. case 'a': // 1 string to match.
  35528. if (memcmp(BuiltinName.data()+30, "cc_s0", 5))
  35529. break;
  35530. return Intrinsic::hexagon_M2_dpmpyss_acc_s0; // "__builtin_HEXAGON_M2_dpmpyss_acc_s0"
  35531. case 'n': // 1 string to match.
  35532. if (memcmp(BuiltinName.data()+30, "ac_s0", 5))
  35533. break;
  35534. return Intrinsic::hexagon_M2_dpmpyss_nac_s0; // "__builtin_HEXAGON_M2_dpmpyss_nac_s0"
  35535. case 'r': // 1 string to match.
  35536. if (memcmp(BuiltinName.data()+30, "nd_s0", 5))
  35537. break;
  35538. return Intrinsic::hexagon_M2_dpmpyss_rnd_s0; // "__builtin_HEXAGON_M2_dpmpyss_rnd_s0"
  35539. }
  35540. break;
  35541. case 'u': // 2 strings to match.
  35542. if (memcmp(BuiltinName.data()+27, "u_", 2))
  35543. break;
  35544. switch (BuiltinName[29]) {
  35545. default: break;
  35546. case 'a': // 1 string to match.
  35547. if (memcmp(BuiltinName.data()+30, "cc_s0", 5))
  35548. break;
  35549. return Intrinsic::hexagon_M2_dpmpyuu_acc_s0; // "__builtin_HEXAGON_M2_dpmpyuu_acc_s0"
  35550. case 'n': // 1 string to match.
  35551. if (memcmp(BuiltinName.data()+30, "ac_s0", 5))
  35552. break;
  35553. return Intrinsic::hexagon_M2_dpmpyuu_nac_s0; // "__builtin_HEXAGON_M2_dpmpyuu_nac_s0"
  35554. }
  35555. break;
  35556. }
  35557. break;
  35558. case 'm': // 40 strings to match.
  35559. if (memcmp(BuiltinName.data()+22, "py", 2))
  35560. break;
  35561. switch (BuiltinName[24]) {
  35562. default: break;
  35563. case 'd': // 24 strings to match.
  35564. if (BuiltinName[25] != '_')
  35565. break;
  35566. switch (BuiltinName[26]) {
  35567. default: break;
  35568. case 'a': // 8 strings to match.
  35569. if (memcmp(BuiltinName.data()+27, "cc_", 3))
  35570. break;
  35571. switch (BuiltinName[30]) {
  35572. default: break;
  35573. case 'h': // 4 strings to match.
  35574. switch (BuiltinName[31]) {
  35575. default: break;
  35576. case 'h': // 2 strings to match.
  35577. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35578. break;
  35579. switch (BuiltinName[34]) {
  35580. default: break;
  35581. case '0': // 1 string to match.
  35582. return Intrinsic::hexagon_M2_mpyd_acc_hh_s0; // "__builtin_HEXAGON_M2_mpyd_acc_hh_s0"
  35583. case '1': // 1 string to match.
  35584. return Intrinsic::hexagon_M2_mpyd_acc_hh_s1; // "__builtin_HEXAGON_M2_mpyd_acc_hh_s1"
  35585. }
  35586. break;
  35587. case 'l': // 2 strings to match.
  35588. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35589. break;
  35590. switch (BuiltinName[34]) {
  35591. default: break;
  35592. case '0': // 1 string to match.
  35593. return Intrinsic::hexagon_M2_mpyd_acc_hl_s0; // "__builtin_HEXAGON_M2_mpyd_acc_hl_s0"
  35594. case '1': // 1 string to match.
  35595. return Intrinsic::hexagon_M2_mpyd_acc_hl_s1; // "__builtin_HEXAGON_M2_mpyd_acc_hl_s1"
  35596. }
  35597. break;
  35598. }
  35599. break;
  35600. case 'l': // 4 strings to match.
  35601. switch (BuiltinName[31]) {
  35602. default: break;
  35603. case 'h': // 2 strings to match.
  35604. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35605. break;
  35606. switch (BuiltinName[34]) {
  35607. default: break;
  35608. case '0': // 1 string to match.
  35609. return Intrinsic::hexagon_M2_mpyd_acc_lh_s0; // "__builtin_HEXAGON_M2_mpyd_acc_lh_s0"
  35610. case '1': // 1 string to match.
  35611. return Intrinsic::hexagon_M2_mpyd_acc_lh_s1; // "__builtin_HEXAGON_M2_mpyd_acc_lh_s1"
  35612. }
  35613. break;
  35614. case 'l': // 2 strings to match.
  35615. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35616. break;
  35617. switch (BuiltinName[34]) {
  35618. default: break;
  35619. case '0': // 1 string to match.
  35620. return Intrinsic::hexagon_M2_mpyd_acc_ll_s0; // "__builtin_HEXAGON_M2_mpyd_acc_ll_s0"
  35621. case '1': // 1 string to match.
  35622. return Intrinsic::hexagon_M2_mpyd_acc_ll_s1; // "__builtin_HEXAGON_M2_mpyd_acc_ll_s1"
  35623. }
  35624. break;
  35625. }
  35626. break;
  35627. }
  35628. break;
  35629. case 'n': // 8 strings to match.
  35630. if (memcmp(BuiltinName.data()+27, "ac_", 3))
  35631. break;
  35632. switch (BuiltinName[30]) {
  35633. default: break;
  35634. case 'h': // 4 strings to match.
  35635. switch (BuiltinName[31]) {
  35636. default: break;
  35637. case 'h': // 2 strings to match.
  35638. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35639. break;
  35640. switch (BuiltinName[34]) {
  35641. default: break;
  35642. case '0': // 1 string to match.
  35643. return Intrinsic::hexagon_M2_mpyd_nac_hh_s0; // "__builtin_HEXAGON_M2_mpyd_nac_hh_s0"
  35644. case '1': // 1 string to match.
  35645. return Intrinsic::hexagon_M2_mpyd_nac_hh_s1; // "__builtin_HEXAGON_M2_mpyd_nac_hh_s1"
  35646. }
  35647. break;
  35648. case 'l': // 2 strings to match.
  35649. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35650. break;
  35651. switch (BuiltinName[34]) {
  35652. default: break;
  35653. case '0': // 1 string to match.
  35654. return Intrinsic::hexagon_M2_mpyd_nac_hl_s0; // "__builtin_HEXAGON_M2_mpyd_nac_hl_s0"
  35655. case '1': // 1 string to match.
  35656. return Intrinsic::hexagon_M2_mpyd_nac_hl_s1; // "__builtin_HEXAGON_M2_mpyd_nac_hl_s1"
  35657. }
  35658. break;
  35659. }
  35660. break;
  35661. case 'l': // 4 strings to match.
  35662. switch (BuiltinName[31]) {
  35663. default: break;
  35664. case 'h': // 2 strings to match.
  35665. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35666. break;
  35667. switch (BuiltinName[34]) {
  35668. default: break;
  35669. case '0': // 1 string to match.
  35670. return Intrinsic::hexagon_M2_mpyd_nac_lh_s0; // "__builtin_HEXAGON_M2_mpyd_nac_lh_s0"
  35671. case '1': // 1 string to match.
  35672. return Intrinsic::hexagon_M2_mpyd_nac_lh_s1; // "__builtin_HEXAGON_M2_mpyd_nac_lh_s1"
  35673. }
  35674. break;
  35675. case 'l': // 2 strings to match.
  35676. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35677. break;
  35678. switch (BuiltinName[34]) {
  35679. default: break;
  35680. case '0': // 1 string to match.
  35681. return Intrinsic::hexagon_M2_mpyd_nac_ll_s0; // "__builtin_HEXAGON_M2_mpyd_nac_ll_s0"
  35682. case '1': // 1 string to match.
  35683. return Intrinsic::hexagon_M2_mpyd_nac_ll_s1; // "__builtin_HEXAGON_M2_mpyd_nac_ll_s1"
  35684. }
  35685. break;
  35686. }
  35687. break;
  35688. }
  35689. break;
  35690. case 'r': // 8 strings to match.
  35691. if (memcmp(BuiltinName.data()+27, "nd_", 3))
  35692. break;
  35693. switch (BuiltinName[30]) {
  35694. default: break;
  35695. case 'h': // 4 strings to match.
  35696. switch (BuiltinName[31]) {
  35697. default: break;
  35698. case 'h': // 2 strings to match.
  35699. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35700. break;
  35701. switch (BuiltinName[34]) {
  35702. default: break;
  35703. case '0': // 1 string to match.
  35704. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_hh_s0"
  35705. case '1': // 1 string to match.
  35706. return Intrinsic::hexagon_M2_mpyd_rnd_hh_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_hh_s1"
  35707. }
  35708. break;
  35709. case 'l': // 2 strings to match.
  35710. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35711. break;
  35712. switch (BuiltinName[34]) {
  35713. default: break;
  35714. case '0': // 1 string to match.
  35715. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_hl_s0"
  35716. case '1': // 1 string to match.
  35717. return Intrinsic::hexagon_M2_mpyd_rnd_hl_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_hl_s1"
  35718. }
  35719. break;
  35720. }
  35721. break;
  35722. case 'l': // 4 strings to match.
  35723. switch (BuiltinName[31]) {
  35724. default: break;
  35725. case 'h': // 2 strings to match.
  35726. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35727. break;
  35728. switch (BuiltinName[34]) {
  35729. default: break;
  35730. case '0': // 1 string to match.
  35731. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_lh_s0"
  35732. case '1': // 1 string to match.
  35733. return Intrinsic::hexagon_M2_mpyd_rnd_lh_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_lh_s1"
  35734. }
  35735. break;
  35736. case 'l': // 2 strings to match.
  35737. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35738. break;
  35739. switch (BuiltinName[34]) {
  35740. default: break;
  35741. case '0': // 1 string to match.
  35742. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s0; // "__builtin_HEXAGON_M2_mpyd_rnd_ll_s0"
  35743. case '1': // 1 string to match.
  35744. return Intrinsic::hexagon_M2_mpyd_rnd_ll_s1; // "__builtin_HEXAGON_M2_mpyd_rnd_ll_s1"
  35745. }
  35746. break;
  35747. }
  35748. break;
  35749. }
  35750. break;
  35751. }
  35752. break;
  35753. case 'u': // 16 strings to match.
  35754. if (BuiltinName[25] != '_')
  35755. break;
  35756. switch (BuiltinName[26]) {
  35757. default: break;
  35758. case 'a': // 8 strings to match.
  35759. if (memcmp(BuiltinName.data()+27, "cc_", 3))
  35760. break;
  35761. switch (BuiltinName[30]) {
  35762. default: break;
  35763. case 'h': // 4 strings to match.
  35764. switch (BuiltinName[31]) {
  35765. default: break;
  35766. case 'h': // 2 strings to match.
  35767. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35768. break;
  35769. switch (BuiltinName[34]) {
  35770. default: break;
  35771. case '0': // 1 string to match.
  35772. return Intrinsic::hexagon_M2_mpyu_acc_hh_s0; // "__builtin_HEXAGON_M2_mpyu_acc_hh_s0"
  35773. case '1': // 1 string to match.
  35774. return Intrinsic::hexagon_M2_mpyu_acc_hh_s1; // "__builtin_HEXAGON_M2_mpyu_acc_hh_s1"
  35775. }
  35776. break;
  35777. case 'l': // 2 strings to match.
  35778. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35779. break;
  35780. switch (BuiltinName[34]) {
  35781. default: break;
  35782. case '0': // 1 string to match.
  35783. return Intrinsic::hexagon_M2_mpyu_acc_hl_s0; // "__builtin_HEXAGON_M2_mpyu_acc_hl_s0"
  35784. case '1': // 1 string to match.
  35785. return Intrinsic::hexagon_M2_mpyu_acc_hl_s1; // "__builtin_HEXAGON_M2_mpyu_acc_hl_s1"
  35786. }
  35787. break;
  35788. }
  35789. break;
  35790. case 'l': // 4 strings to match.
  35791. switch (BuiltinName[31]) {
  35792. default: break;
  35793. case 'h': // 2 strings to match.
  35794. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35795. break;
  35796. switch (BuiltinName[34]) {
  35797. default: break;
  35798. case '0': // 1 string to match.
  35799. return Intrinsic::hexagon_M2_mpyu_acc_lh_s0; // "__builtin_HEXAGON_M2_mpyu_acc_lh_s0"
  35800. case '1': // 1 string to match.
  35801. return Intrinsic::hexagon_M2_mpyu_acc_lh_s1; // "__builtin_HEXAGON_M2_mpyu_acc_lh_s1"
  35802. }
  35803. break;
  35804. case 'l': // 2 strings to match.
  35805. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35806. break;
  35807. switch (BuiltinName[34]) {
  35808. default: break;
  35809. case '0': // 1 string to match.
  35810. return Intrinsic::hexagon_M2_mpyu_acc_ll_s0; // "__builtin_HEXAGON_M2_mpyu_acc_ll_s0"
  35811. case '1': // 1 string to match.
  35812. return Intrinsic::hexagon_M2_mpyu_acc_ll_s1; // "__builtin_HEXAGON_M2_mpyu_acc_ll_s1"
  35813. }
  35814. break;
  35815. }
  35816. break;
  35817. }
  35818. break;
  35819. case 'n': // 8 strings to match.
  35820. if (memcmp(BuiltinName.data()+27, "ac_", 3))
  35821. break;
  35822. switch (BuiltinName[30]) {
  35823. default: break;
  35824. case 'h': // 4 strings to match.
  35825. switch (BuiltinName[31]) {
  35826. default: break;
  35827. case 'h': // 2 strings to match.
  35828. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35829. break;
  35830. switch (BuiltinName[34]) {
  35831. default: break;
  35832. case '0': // 1 string to match.
  35833. return Intrinsic::hexagon_M2_mpyu_nac_hh_s0; // "__builtin_HEXAGON_M2_mpyu_nac_hh_s0"
  35834. case '1': // 1 string to match.
  35835. return Intrinsic::hexagon_M2_mpyu_nac_hh_s1; // "__builtin_HEXAGON_M2_mpyu_nac_hh_s1"
  35836. }
  35837. break;
  35838. case 'l': // 2 strings to match.
  35839. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35840. break;
  35841. switch (BuiltinName[34]) {
  35842. default: break;
  35843. case '0': // 1 string to match.
  35844. return Intrinsic::hexagon_M2_mpyu_nac_hl_s0; // "__builtin_HEXAGON_M2_mpyu_nac_hl_s0"
  35845. case '1': // 1 string to match.
  35846. return Intrinsic::hexagon_M2_mpyu_nac_hl_s1; // "__builtin_HEXAGON_M2_mpyu_nac_hl_s1"
  35847. }
  35848. break;
  35849. }
  35850. break;
  35851. case 'l': // 4 strings to match.
  35852. switch (BuiltinName[31]) {
  35853. default: break;
  35854. case 'h': // 2 strings to match.
  35855. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35856. break;
  35857. switch (BuiltinName[34]) {
  35858. default: break;
  35859. case '0': // 1 string to match.
  35860. return Intrinsic::hexagon_M2_mpyu_nac_lh_s0; // "__builtin_HEXAGON_M2_mpyu_nac_lh_s0"
  35861. case '1': // 1 string to match.
  35862. return Intrinsic::hexagon_M2_mpyu_nac_lh_s1; // "__builtin_HEXAGON_M2_mpyu_nac_lh_s1"
  35863. }
  35864. break;
  35865. case 'l': // 2 strings to match.
  35866. if (memcmp(BuiltinName.data()+32, "_s", 2))
  35867. break;
  35868. switch (BuiltinName[34]) {
  35869. default: break;
  35870. case '0': // 1 string to match.
  35871. return Intrinsic::hexagon_M2_mpyu_nac_ll_s0; // "__builtin_HEXAGON_M2_mpyu_nac_ll_s0"
  35872. case '1': // 1 string to match.
  35873. return Intrinsic::hexagon_M2_mpyu_nac_ll_s1; // "__builtin_HEXAGON_M2_mpyu_nac_ll_s1"
  35874. }
  35875. break;
  35876. }
  35877. break;
  35878. }
  35879. break;
  35880. }
  35881. break;
  35882. }
  35883. break;
  35884. case 'v': // 7 strings to match.
  35885. switch (BuiltinName[22]) {
  35886. default: break;
  35887. case 'c': // 6 strings to match.
  35888. if (BuiltinName[23] != 'm')
  35889. break;
  35890. switch (BuiltinName[24]) {
  35891. default: break;
  35892. case 'a': // 2 strings to match.
  35893. if (memcmp(BuiltinName.data()+25, "c_s0_sat_", 9))
  35894. break;
  35895. switch (BuiltinName[34]) {
  35896. default: break;
  35897. case 'i': // 1 string to match.
  35898. return Intrinsic::hexagon_M2_vcmac_s0_sat_i; // "__builtin_HEXAGON_M2_vcmac_s0_sat_i"
  35899. case 'r': // 1 string to match.
  35900. return Intrinsic::hexagon_M2_vcmac_s0_sat_r; // "__builtin_HEXAGON_M2_vcmac_s0_sat_r"
  35901. }
  35902. break;
  35903. case 'p': // 4 strings to match.
  35904. if (memcmp(BuiltinName.data()+25, "y_s", 3))
  35905. break;
  35906. switch (BuiltinName[28]) {
  35907. default: break;
  35908. case '0': // 2 strings to match.
  35909. if (memcmp(BuiltinName.data()+29, "_sat_", 5))
  35910. break;
  35911. switch (BuiltinName[34]) {
  35912. default: break;
  35913. case 'i': // 1 string to match.
  35914. return Intrinsic::hexagon_M2_vcmpy_s0_sat_i; // "__builtin_HEXAGON_M2_vcmpy_s0_sat_i"
  35915. case 'r': // 1 string to match.
  35916. return Intrinsic::hexagon_M2_vcmpy_s0_sat_r; // "__builtin_HEXAGON_M2_vcmpy_s0_sat_r"
  35917. }
  35918. break;
  35919. case '1': // 2 strings to match.
  35920. if (memcmp(BuiltinName.data()+29, "_sat_", 5))
  35921. break;
  35922. switch (BuiltinName[34]) {
  35923. default: break;
  35924. case 'i': // 1 string to match.
  35925. return Intrinsic::hexagon_M2_vcmpy_s1_sat_i; // "__builtin_HEXAGON_M2_vcmpy_s1_sat_i"
  35926. case 'r': // 1 string to match.
  35927. return Intrinsic::hexagon_M2_vcmpy_s1_sat_r; // "__builtin_HEXAGON_M2_vcmpy_s1_sat_r"
  35928. }
  35929. break;
  35930. }
  35931. break;
  35932. }
  35933. break;
  35934. case 'r': // 1 string to match.
  35935. if (memcmp(BuiltinName.data()+23, "cmpys_acc_s1", 12))
  35936. break;
  35937. return Intrinsic::hexagon_M2_vrcmpys_acc_s1; // "__builtin_HEXAGON_M2_vrcmpys_acc_s1"
  35938. }
  35939. break;
  35940. }
  35941. break;
  35942. case '4': // 4 strings to match.
  35943. if (memcmp(BuiltinName.data()+20, "_vrmpy", 6))
  35944. break;
  35945. switch (BuiltinName[26]) {
  35946. default: break;
  35947. case 'e': // 2 strings to match.
  35948. if (memcmp(BuiltinName.data()+27, "h_acc_s", 7))
  35949. break;
  35950. switch (BuiltinName[34]) {
  35951. default: break;
  35952. case '0': // 1 string to match.
  35953. return Intrinsic::hexagon_M4_vrmpyeh_acc_s0; // "__builtin_HEXAGON_M4_vrmpyeh_acc_s0"
  35954. case '1': // 1 string to match.
  35955. return Intrinsic::hexagon_M4_vrmpyeh_acc_s1; // "__builtin_HEXAGON_M4_vrmpyeh_acc_s1"
  35956. }
  35957. break;
  35958. case 'o': // 2 strings to match.
  35959. if (memcmp(BuiltinName.data()+27, "h_acc_s", 7))
  35960. break;
  35961. switch (BuiltinName[34]) {
  35962. default: break;
  35963. case '0': // 1 string to match.
  35964. return Intrinsic::hexagon_M4_vrmpyoh_acc_s0; // "__builtin_HEXAGON_M4_vrmpyoh_acc_s0"
  35965. case '1': // 1 string to match.
  35966. return Intrinsic::hexagon_M4_vrmpyoh_acc_s1; // "__builtin_HEXAGON_M4_vrmpyoh_acc_s1"
  35967. }
  35968. break;
  35969. }
  35970. break;
  35971. }
  35972. break;
  35973. case 'S': // 4 strings to match.
  35974. if (memcmp(BuiltinName.data()+19, "2_", 2))
  35975. break;
  35976. switch (BuiltinName[21]) {
  35977. default: break;
  35978. case 'a': // 2 strings to match.
  35979. if (memcmp(BuiltinName.data()+22, "sr_", 3))
  35980. break;
  35981. switch (BuiltinName[25]) {
  35982. default: break;
  35983. case 'i': // 1 string to match.
  35984. if (memcmp(BuiltinName.data()+26, "_svw_trun", 9))
  35985. break;
  35986. return Intrinsic::hexagon_S2_asr_i_svw_trun; // "__builtin_HEXAGON_S2_asr_i_svw_trun"
  35987. case 'r': // 1 string to match.
  35988. if (memcmp(BuiltinName.data()+26, "_svw_trun", 9))
  35989. break;
  35990. return Intrinsic::hexagon_S2_asr_r_svw_trun; // "__builtin_HEXAGON_S2_asr_r_svw_trun"
  35991. }
  35992. break;
  35993. case 'v': // 2 strings to match.
  35994. if (memcmp(BuiltinName.data()+22, "sat", 3))
  35995. break;
  35996. switch (BuiltinName[25]) {
  35997. default: break;
  35998. case 'h': // 1 string to match.
  35999. if (memcmp(BuiltinName.data()+26, "ub_nopack", 9))
  36000. break;
  36001. return Intrinsic::hexagon_S2_vsathub_nopack; // "__builtin_HEXAGON_S2_vsathub_nopack"
  36002. case 'w': // 1 string to match.
  36003. if (memcmp(BuiltinName.data()+26, "uh_nopack", 9))
  36004. break;
  36005. return Intrinsic::hexagon_S2_vsatwuh_nopack; // "__builtin_HEXAGON_S2_vsatwuh_nopack"
  36006. }
  36007. break;
  36008. }
  36009. break;
  36010. }
  36011. break;
  36012. case 36: // 33 strings to match.
  36013. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_", 18))
  36014. break;
  36015. switch (BuiltinName[18]) {
  36016. default: break;
  36017. case 'A': // 12 strings to match.
  36018. if (memcmp(BuiltinName.data()+19, "2_", 2))
  36019. break;
  36020. switch (BuiltinName[21]) {
  36021. default: break;
  36022. case 'a': // 6 strings to match.
  36023. if (memcmp(BuiltinName.data()+22, "ddh_", 4))
  36024. break;
  36025. switch (BuiltinName[26]) {
  36026. default: break;
  36027. case 'h': // 4 strings to match.
  36028. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36029. break;
  36030. switch (BuiltinName[34]) {
  36031. default: break;
  36032. case 'h': // 2 strings to match.
  36033. switch (BuiltinName[35]) {
  36034. default: break;
  36035. case 'h': // 1 string to match.
  36036. return Intrinsic::hexagon_A2_addh_h16_sat_hh; // "__builtin_HEXAGON_A2_addh_h16_sat_hh"
  36037. case 'l': // 1 string to match.
  36038. return Intrinsic::hexagon_A2_addh_h16_sat_hl; // "__builtin_HEXAGON_A2_addh_h16_sat_hl"
  36039. }
  36040. break;
  36041. case 'l': // 2 strings to match.
  36042. switch (BuiltinName[35]) {
  36043. default: break;
  36044. case 'h': // 1 string to match.
  36045. return Intrinsic::hexagon_A2_addh_h16_sat_lh; // "__builtin_HEXAGON_A2_addh_h16_sat_lh"
  36046. case 'l': // 1 string to match.
  36047. return Intrinsic::hexagon_A2_addh_h16_sat_ll; // "__builtin_HEXAGON_A2_addh_h16_sat_ll"
  36048. }
  36049. break;
  36050. }
  36051. break;
  36052. case 'l': // 2 strings to match.
  36053. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36054. break;
  36055. switch (BuiltinName[34]) {
  36056. default: break;
  36057. case 'h': // 1 string to match.
  36058. if (BuiltinName[35] != 'l')
  36059. break;
  36060. return Intrinsic::hexagon_A2_addh_l16_sat_hl; // "__builtin_HEXAGON_A2_addh_l16_sat_hl"
  36061. case 'l': // 1 string to match.
  36062. if (BuiltinName[35] != 'l')
  36063. break;
  36064. return Intrinsic::hexagon_A2_addh_l16_sat_ll; // "__builtin_HEXAGON_A2_addh_l16_sat_ll"
  36065. }
  36066. break;
  36067. }
  36068. break;
  36069. case 's': // 6 strings to match.
  36070. if (memcmp(BuiltinName.data()+22, "ubh_", 4))
  36071. break;
  36072. switch (BuiltinName[26]) {
  36073. default: break;
  36074. case 'h': // 4 strings to match.
  36075. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36076. break;
  36077. switch (BuiltinName[34]) {
  36078. default: break;
  36079. case 'h': // 2 strings to match.
  36080. switch (BuiltinName[35]) {
  36081. default: break;
  36082. case 'h': // 1 string to match.
  36083. return Intrinsic::hexagon_A2_subh_h16_sat_hh; // "__builtin_HEXAGON_A2_subh_h16_sat_hh"
  36084. case 'l': // 1 string to match.
  36085. return Intrinsic::hexagon_A2_subh_h16_sat_hl; // "__builtin_HEXAGON_A2_subh_h16_sat_hl"
  36086. }
  36087. break;
  36088. case 'l': // 2 strings to match.
  36089. switch (BuiltinName[35]) {
  36090. default: break;
  36091. case 'h': // 1 string to match.
  36092. return Intrinsic::hexagon_A2_subh_h16_sat_lh; // "__builtin_HEXAGON_A2_subh_h16_sat_lh"
  36093. case 'l': // 1 string to match.
  36094. return Intrinsic::hexagon_A2_subh_h16_sat_ll; // "__builtin_HEXAGON_A2_subh_h16_sat_ll"
  36095. }
  36096. break;
  36097. }
  36098. break;
  36099. case 'l': // 2 strings to match.
  36100. if (memcmp(BuiltinName.data()+27, "16_sat_", 7))
  36101. break;
  36102. switch (BuiltinName[34]) {
  36103. default: break;
  36104. case 'h': // 1 string to match.
  36105. if (BuiltinName[35] != 'l')
  36106. break;
  36107. return Intrinsic::hexagon_A2_subh_l16_sat_hl; // "__builtin_HEXAGON_A2_subh_l16_sat_hl"
  36108. case 'l': // 1 string to match.
  36109. if (BuiltinName[35] != 'l')
  36110. break;
  36111. return Intrinsic::hexagon_A2_subh_l16_sat_ll; // "__builtin_HEXAGON_A2_subh_l16_sat_ll"
  36112. }
  36113. break;
  36114. }
  36115. break;
  36116. }
  36117. break;
  36118. case 'C': // 1 string to match.
  36119. if (memcmp(BuiltinName.data()+19, "4_fastcorner9_not", 17))
  36120. break;
  36121. return Intrinsic::hexagon_C4_fastcorner9_not; // "__builtin_HEXAGON_C4_fastcorner9_not"
  36122. case 'F': // 4 strings to match.
  36123. if (memcmp(BuiltinName.data()+19, "2_conv_", 7))
  36124. break;
  36125. switch (BuiltinName[26]) {
  36126. default: break;
  36127. case 'd': // 2 strings to match.
  36128. if (memcmp(BuiltinName.data()+27, "f2u", 3))
  36129. break;
  36130. switch (BuiltinName[30]) {
  36131. default: break;
  36132. case 'd': // 1 string to match.
  36133. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36134. break;
  36135. return Intrinsic::hexagon_F2_conv_df2ud_chop; // "__builtin_HEXAGON_F2_conv_df2ud_chop"
  36136. case 'w': // 1 string to match.
  36137. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36138. break;
  36139. return Intrinsic::hexagon_F2_conv_df2uw_chop; // "__builtin_HEXAGON_F2_conv_df2uw_chop"
  36140. }
  36141. break;
  36142. case 's': // 2 strings to match.
  36143. if (memcmp(BuiltinName.data()+27, "f2u", 3))
  36144. break;
  36145. switch (BuiltinName[30]) {
  36146. default: break;
  36147. case 'd': // 1 string to match.
  36148. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36149. break;
  36150. return Intrinsic::hexagon_F2_conv_sf2ud_chop; // "__builtin_HEXAGON_F2_conv_sf2ud_chop"
  36151. case 'w': // 1 string to match.
  36152. if (memcmp(BuiltinName.data()+31, "_chop", 5))
  36153. break;
  36154. return Intrinsic::hexagon_F2_conv_sf2uw_chop; // "__builtin_HEXAGON_F2_conv_sf2uw_chop"
  36155. }
  36156. break;
  36157. }
  36158. break;
  36159. case 'M': // 16 strings to match.
  36160. if (memcmp(BuiltinName.data()+19, "2_mpyud_", 8))
  36161. break;
  36162. switch (BuiltinName[27]) {
  36163. default: break;
  36164. case 'a': // 8 strings to match.
  36165. if (memcmp(BuiltinName.data()+28, "cc_", 3))
  36166. break;
  36167. switch (BuiltinName[31]) {
  36168. default: break;
  36169. case 'h': // 4 strings to match.
  36170. switch (BuiltinName[32]) {
  36171. default: break;
  36172. case 'h': // 2 strings to match.
  36173. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36174. break;
  36175. switch (BuiltinName[35]) {
  36176. default: break;
  36177. case '0': // 1 string to match.
  36178. return Intrinsic::hexagon_M2_mpyud_acc_hh_s0; // "__builtin_HEXAGON_M2_mpyud_acc_hh_s0"
  36179. case '1': // 1 string to match.
  36180. return Intrinsic::hexagon_M2_mpyud_acc_hh_s1; // "__builtin_HEXAGON_M2_mpyud_acc_hh_s1"
  36181. }
  36182. break;
  36183. case 'l': // 2 strings to match.
  36184. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36185. break;
  36186. switch (BuiltinName[35]) {
  36187. default: break;
  36188. case '0': // 1 string to match.
  36189. return Intrinsic::hexagon_M2_mpyud_acc_hl_s0; // "__builtin_HEXAGON_M2_mpyud_acc_hl_s0"
  36190. case '1': // 1 string to match.
  36191. return Intrinsic::hexagon_M2_mpyud_acc_hl_s1; // "__builtin_HEXAGON_M2_mpyud_acc_hl_s1"
  36192. }
  36193. break;
  36194. }
  36195. break;
  36196. case 'l': // 4 strings to match.
  36197. switch (BuiltinName[32]) {
  36198. default: break;
  36199. case 'h': // 2 strings to match.
  36200. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36201. break;
  36202. switch (BuiltinName[35]) {
  36203. default: break;
  36204. case '0': // 1 string to match.
  36205. return Intrinsic::hexagon_M2_mpyud_acc_lh_s0; // "__builtin_HEXAGON_M2_mpyud_acc_lh_s0"
  36206. case '1': // 1 string to match.
  36207. return Intrinsic::hexagon_M2_mpyud_acc_lh_s1; // "__builtin_HEXAGON_M2_mpyud_acc_lh_s1"
  36208. }
  36209. break;
  36210. case 'l': // 2 strings to match.
  36211. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36212. break;
  36213. switch (BuiltinName[35]) {
  36214. default: break;
  36215. case '0': // 1 string to match.
  36216. return Intrinsic::hexagon_M2_mpyud_acc_ll_s0; // "__builtin_HEXAGON_M2_mpyud_acc_ll_s0"
  36217. case '1': // 1 string to match.
  36218. return Intrinsic::hexagon_M2_mpyud_acc_ll_s1; // "__builtin_HEXAGON_M2_mpyud_acc_ll_s1"
  36219. }
  36220. break;
  36221. }
  36222. break;
  36223. }
  36224. break;
  36225. case 'n': // 8 strings to match.
  36226. if (memcmp(BuiltinName.data()+28, "ac_", 3))
  36227. break;
  36228. switch (BuiltinName[31]) {
  36229. default: break;
  36230. case 'h': // 4 strings to match.
  36231. switch (BuiltinName[32]) {
  36232. default: break;
  36233. case 'h': // 2 strings to match.
  36234. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36235. break;
  36236. switch (BuiltinName[35]) {
  36237. default: break;
  36238. case '0': // 1 string to match.
  36239. return Intrinsic::hexagon_M2_mpyud_nac_hh_s0; // "__builtin_HEXAGON_M2_mpyud_nac_hh_s0"
  36240. case '1': // 1 string to match.
  36241. return Intrinsic::hexagon_M2_mpyud_nac_hh_s1; // "__builtin_HEXAGON_M2_mpyud_nac_hh_s1"
  36242. }
  36243. break;
  36244. case 'l': // 2 strings to match.
  36245. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36246. break;
  36247. switch (BuiltinName[35]) {
  36248. default: break;
  36249. case '0': // 1 string to match.
  36250. return Intrinsic::hexagon_M2_mpyud_nac_hl_s0; // "__builtin_HEXAGON_M2_mpyud_nac_hl_s0"
  36251. case '1': // 1 string to match.
  36252. return Intrinsic::hexagon_M2_mpyud_nac_hl_s1; // "__builtin_HEXAGON_M2_mpyud_nac_hl_s1"
  36253. }
  36254. break;
  36255. }
  36256. break;
  36257. case 'l': // 4 strings to match.
  36258. switch (BuiltinName[32]) {
  36259. default: break;
  36260. case 'h': // 2 strings to match.
  36261. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36262. break;
  36263. switch (BuiltinName[35]) {
  36264. default: break;
  36265. case '0': // 1 string to match.
  36266. return Intrinsic::hexagon_M2_mpyud_nac_lh_s0; // "__builtin_HEXAGON_M2_mpyud_nac_lh_s0"
  36267. case '1': // 1 string to match.
  36268. return Intrinsic::hexagon_M2_mpyud_nac_lh_s1; // "__builtin_HEXAGON_M2_mpyud_nac_lh_s1"
  36269. }
  36270. break;
  36271. case 'l': // 2 strings to match.
  36272. if (memcmp(BuiltinName.data()+33, "_s", 2))
  36273. break;
  36274. switch (BuiltinName[35]) {
  36275. default: break;
  36276. case '0': // 1 string to match.
  36277. return Intrinsic::hexagon_M2_mpyud_nac_ll_s0; // "__builtin_HEXAGON_M2_mpyud_nac_ll_s0"
  36278. case '1': // 1 string to match.
  36279. return Intrinsic::hexagon_M2_mpyud_nac_ll_s1; // "__builtin_HEXAGON_M2_mpyud_nac_ll_s1"
  36280. }
  36281. break;
  36282. }
  36283. break;
  36284. }
  36285. break;
  36286. }
  36287. break;
  36288. }
  36289. break;
  36290. case 38: // 24 strings to match.
  36291. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_M2_mpy_", 25))
  36292. break;
  36293. switch (BuiltinName[25]) {
  36294. default: break;
  36295. case 'a': // 8 strings to match.
  36296. if (memcmp(BuiltinName.data()+26, "cc_sat_", 7))
  36297. break;
  36298. switch (BuiltinName[33]) {
  36299. default: break;
  36300. case 'h': // 4 strings to match.
  36301. switch (BuiltinName[34]) {
  36302. default: break;
  36303. case 'h': // 2 strings to match.
  36304. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36305. break;
  36306. switch (BuiltinName[37]) {
  36307. default: break;
  36308. case '0': // 1 string to match.
  36309. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_hh_s0"
  36310. case '1': // 1 string to match.
  36311. return Intrinsic::hexagon_M2_mpy_acc_sat_hh_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_hh_s1"
  36312. }
  36313. break;
  36314. case 'l': // 2 strings to match.
  36315. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36316. break;
  36317. switch (BuiltinName[37]) {
  36318. default: break;
  36319. case '0': // 1 string to match.
  36320. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_hl_s0"
  36321. case '1': // 1 string to match.
  36322. return Intrinsic::hexagon_M2_mpy_acc_sat_hl_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_hl_s1"
  36323. }
  36324. break;
  36325. }
  36326. break;
  36327. case 'l': // 4 strings to match.
  36328. switch (BuiltinName[34]) {
  36329. default: break;
  36330. case 'h': // 2 strings to match.
  36331. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36332. break;
  36333. switch (BuiltinName[37]) {
  36334. default: break;
  36335. case '0': // 1 string to match.
  36336. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_lh_s0"
  36337. case '1': // 1 string to match.
  36338. return Intrinsic::hexagon_M2_mpy_acc_sat_lh_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_lh_s1"
  36339. }
  36340. break;
  36341. case 'l': // 2 strings to match.
  36342. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36343. break;
  36344. switch (BuiltinName[37]) {
  36345. default: break;
  36346. case '0': // 1 string to match.
  36347. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s0; // "__builtin_HEXAGON_M2_mpy_acc_sat_ll_s0"
  36348. case '1': // 1 string to match.
  36349. return Intrinsic::hexagon_M2_mpy_acc_sat_ll_s1; // "__builtin_HEXAGON_M2_mpy_acc_sat_ll_s1"
  36350. }
  36351. break;
  36352. }
  36353. break;
  36354. }
  36355. break;
  36356. case 'n': // 8 strings to match.
  36357. if (memcmp(BuiltinName.data()+26, "ac_sat_", 7))
  36358. break;
  36359. switch (BuiltinName[33]) {
  36360. default: break;
  36361. case 'h': // 4 strings to match.
  36362. switch (BuiltinName[34]) {
  36363. default: break;
  36364. case 'h': // 2 strings to match.
  36365. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36366. break;
  36367. switch (BuiltinName[37]) {
  36368. default: break;
  36369. case '0': // 1 string to match.
  36370. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_hh_s0"
  36371. case '1': // 1 string to match.
  36372. return Intrinsic::hexagon_M2_mpy_nac_sat_hh_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_hh_s1"
  36373. }
  36374. break;
  36375. case 'l': // 2 strings to match.
  36376. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36377. break;
  36378. switch (BuiltinName[37]) {
  36379. default: break;
  36380. case '0': // 1 string to match.
  36381. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_hl_s0"
  36382. case '1': // 1 string to match.
  36383. return Intrinsic::hexagon_M2_mpy_nac_sat_hl_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_hl_s1"
  36384. }
  36385. break;
  36386. }
  36387. break;
  36388. case 'l': // 4 strings to match.
  36389. switch (BuiltinName[34]) {
  36390. default: break;
  36391. case 'h': // 2 strings to match.
  36392. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36393. break;
  36394. switch (BuiltinName[37]) {
  36395. default: break;
  36396. case '0': // 1 string to match.
  36397. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_lh_s0"
  36398. case '1': // 1 string to match.
  36399. return Intrinsic::hexagon_M2_mpy_nac_sat_lh_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_lh_s1"
  36400. }
  36401. break;
  36402. case 'l': // 2 strings to match.
  36403. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36404. break;
  36405. switch (BuiltinName[37]) {
  36406. default: break;
  36407. case '0': // 1 string to match.
  36408. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s0; // "__builtin_HEXAGON_M2_mpy_nac_sat_ll_s0"
  36409. case '1': // 1 string to match.
  36410. return Intrinsic::hexagon_M2_mpy_nac_sat_ll_s1; // "__builtin_HEXAGON_M2_mpy_nac_sat_ll_s1"
  36411. }
  36412. break;
  36413. }
  36414. break;
  36415. }
  36416. break;
  36417. case 's': // 8 strings to match.
  36418. if (memcmp(BuiltinName.data()+26, "at_rnd_", 7))
  36419. break;
  36420. switch (BuiltinName[33]) {
  36421. default: break;
  36422. case 'h': // 4 strings to match.
  36423. switch (BuiltinName[34]) {
  36424. default: break;
  36425. case 'h': // 2 strings to match.
  36426. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36427. break;
  36428. switch (BuiltinName[37]) {
  36429. default: break;
  36430. case '0': // 1 string to match.
  36431. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s0"
  36432. case '1': // 1 string to match.
  36433. return Intrinsic::hexagon_M2_mpy_sat_rnd_hh_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hh_s1"
  36434. }
  36435. break;
  36436. case 'l': // 2 strings to match.
  36437. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36438. break;
  36439. switch (BuiltinName[37]) {
  36440. default: break;
  36441. case '0': // 1 string to match.
  36442. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s0"
  36443. case '1': // 1 string to match.
  36444. return Intrinsic::hexagon_M2_mpy_sat_rnd_hl_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_hl_s1"
  36445. }
  36446. break;
  36447. }
  36448. break;
  36449. case 'l': // 4 strings to match.
  36450. switch (BuiltinName[34]) {
  36451. default: break;
  36452. case 'h': // 2 strings to match.
  36453. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36454. break;
  36455. switch (BuiltinName[37]) {
  36456. default: break;
  36457. case '0': // 1 string to match.
  36458. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s0"
  36459. case '1': // 1 string to match.
  36460. return Intrinsic::hexagon_M2_mpy_sat_rnd_lh_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_lh_s1"
  36461. }
  36462. break;
  36463. case 'l': // 2 strings to match.
  36464. if (memcmp(BuiltinName.data()+35, "_s", 2))
  36465. break;
  36466. switch (BuiltinName[37]) {
  36467. default: break;
  36468. case '0': // 1 string to match.
  36469. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s0; // "__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s0"
  36470. case '1': // 1 string to match.
  36471. return Intrinsic::hexagon_M2_mpy_sat_rnd_ll_s1; // "__builtin_HEXAGON_M2_mpy_sat_rnd_ll_s1"
  36472. }
  36473. break;
  36474. }
  36475. break;
  36476. }
  36477. break;
  36478. }
  36479. break;
  36480. case 40: // 1 string to match.
  36481. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S5_vasrhrnd_goodsyntax", 40))
  36482. break;
  36483. return Intrinsic::hexagon_S5_vasrhrnd_goodsyntax; // "__builtin_HEXAGON_S5_vasrhrnd_goodsyntax"
  36484. case 41: // 4 strings to match.
  36485. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S2_tableidx", 29))
  36486. break;
  36487. switch (BuiltinName[29]) {
  36488. default: break;
  36489. case 'b': // 1 string to match.
  36490. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  36491. break;
  36492. return Intrinsic::hexagon_S2_tableidxb_goodsyntax; // "__builtin_HEXAGON_S2_tableidxb_goodsyntax"
  36493. case 'd': // 1 string to match.
  36494. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  36495. break;
  36496. return Intrinsic::hexagon_S2_tableidxd_goodsyntax; // "__builtin_HEXAGON_S2_tableidxd_goodsyntax"
  36497. case 'h': // 1 string to match.
  36498. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  36499. break;
  36500. return Intrinsic::hexagon_S2_tableidxh_goodsyntax; // "__builtin_HEXAGON_S2_tableidxh_goodsyntax"
  36501. case 'w': // 1 string to match.
  36502. if (memcmp(BuiltinName.data()+30, "_goodsyntax", 11))
  36503. break;
  36504. return Intrinsic::hexagon_S2_tableidxw_goodsyntax; // "__builtin_HEXAGON_S2_tableidxw_goodsyntax"
  36505. }
  36506. break;
  36507. case 43: // 2 strings to match.
  36508. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S2_asr_i_", 27))
  36509. break;
  36510. switch (BuiltinName[27]) {
  36511. default: break;
  36512. case 'p': // 1 string to match.
  36513. if (memcmp(BuiltinName.data()+28, "_rnd_goodsyntax", 15))
  36514. break;
  36515. return Intrinsic::hexagon_S2_asr_i_p_rnd_goodsyntax; // "__builtin_HEXAGON_S2_asr_i_p_rnd_goodsyntax"
  36516. case 'r': // 1 string to match.
  36517. if (memcmp(BuiltinName.data()+28, "_rnd_goodsyntax", 15))
  36518. break;
  36519. return Intrinsic::hexagon_S2_asr_i_r_rnd_goodsyntax; // "__builtin_HEXAGON_S2_asr_i_r_rnd_goodsyntax"
  36520. }
  36521. break;
  36522. case 46: // 1 string to match.
  36523. if (memcmp(BuiltinName.data()+0, "__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax", 46))
  36524. break;
  36525. return Intrinsic::hexagon_S5_asrhub_rnd_sat_goodsyntax; // "__builtin_HEXAGON_S5_asrhub_rnd_sat_goodsyntax"
  36526. }
  36527. }
  36528. if (TargetPrefix == "mips") {
  36529. switch (BuiltinName.size()) {
  36530. default: break;
  36531. case 18: // 2 strings to match.
  36532. if (memcmp(BuiltinName.data()+0, "__builtin_mips_l", 16))
  36533. break;
  36534. switch (BuiltinName[16]) {
  36535. default: break;
  36536. case 'h': // 1 string to match.
  36537. if (BuiltinName[17] != 'x')
  36538. break;
  36539. return Intrinsic::mips_lhx; // "__builtin_mips_lhx"
  36540. case 'w': // 1 string to match.
  36541. if (BuiltinName[17] != 'x')
  36542. break;
  36543. return Intrinsic::mips_lwx; // "__builtin_mips_lwx"
  36544. }
  36545. break;
  36546. case 19: // 6 strings to match.
  36547. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  36548. break;
  36549. switch (BuiltinName[15]) {
  36550. default: break;
  36551. case 'e': // 1 string to match.
  36552. if (memcmp(BuiltinName.data()+16, "xtp", 3))
  36553. break;
  36554. return Intrinsic::mips_extp; // "__builtin_mips_extp"
  36555. case 'i': // 1 string to match.
  36556. if (memcmp(BuiltinName.data()+16, "nsv", 3))
  36557. break;
  36558. return Intrinsic::mips_insv; // "__builtin_mips_insv"
  36559. case 'l': // 1 string to match.
  36560. if (memcmp(BuiltinName.data()+16, "bux", 3))
  36561. break;
  36562. return Intrinsic::mips_lbux; // "__builtin_mips_lbux"
  36563. case 'm': // 3 strings to match.
  36564. switch (BuiltinName[16]) {
  36565. default: break;
  36566. case 'a': // 1 string to match.
  36567. if (memcmp(BuiltinName.data()+17, "dd", 2))
  36568. break;
  36569. return Intrinsic::mips_madd; // "__builtin_mips_madd"
  36570. case 's': // 1 string to match.
  36571. if (memcmp(BuiltinName.data()+17, "ub", 2))
  36572. break;
  36573. return Intrinsic::mips_msub; // "__builtin_mips_msub"
  36574. case 'u': // 1 string to match.
  36575. if (memcmp(BuiltinName.data()+17, "lt", 2))
  36576. break;
  36577. return Intrinsic::mips_mult; // "__builtin_mips_mult"
  36578. }
  36579. break;
  36580. }
  36581. break;
  36582. case 20: // 8 strings to match.
  36583. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  36584. break;
  36585. switch (BuiltinName[15]) {
  36586. default: break;
  36587. case 'a': // 2 strings to match.
  36588. if (memcmp(BuiltinName.data()+16, "dd", 2))
  36589. break;
  36590. switch (BuiltinName[18]) {
  36591. default: break;
  36592. case 's': // 1 string to match.
  36593. if (BuiltinName[19] != 'c')
  36594. break;
  36595. return Intrinsic::mips_addsc; // "__builtin_mips_addsc"
  36596. case 'w': // 1 string to match.
  36597. if (BuiltinName[19] != 'c')
  36598. break;
  36599. return Intrinsic::mips_addwc; // "__builtin_mips_addwc"
  36600. }
  36601. break;
  36602. case 'm': // 3 strings to match.
  36603. switch (BuiltinName[16]) {
  36604. default: break;
  36605. case 'a': // 1 string to match.
  36606. if (memcmp(BuiltinName.data()+17, "ddu", 3))
  36607. break;
  36608. return Intrinsic::mips_maddu; // "__builtin_mips_maddu"
  36609. case 's': // 1 string to match.
  36610. if (memcmp(BuiltinName.data()+17, "ubu", 3))
  36611. break;
  36612. return Intrinsic::mips_msubu; // "__builtin_mips_msubu"
  36613. case 'u': // 1 string to match.
  36614. if (memcmp(BuiltinName.data()+17, "ltu", 3))
  36615. break;
  36616. return Intrinsic::mips_multu; // "__builtin_mips_multu"
  36617. }
  36618. break;
  36619. case 'r': // 1 string to match.
  36620. if (memcmp(BuiltinName.data()+16, "ddsp", 4))
  36621. break;
  36622. return Intrinsic::mips_rddsp; // "__builtin_mips_rddsp"
  36623. case 's': // 1 string to match.
  36624. if (memcmp(BuiltinName.data()+16, "hilo", 4))
  36625. break;
  36626. return Intrinsic::mips_shilo; // "__builtin_mips_shilo"
  36627. case 'w': // 1 string to match.
  36628. if (memcmp(BuiltinName.data()+16, "rdsp", 4))
  36629. break;
  36630. return Intrinsic::mips_wrdsp; // "__builtin_mips_wrdsp"
  36631. }
  36632. break;
  36633. case 21: // 8 strings to match.
  36634. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  36635. break;
  36636. switch (BuiltinName[15]) {
  36637. default: break;
  36638. case 'a': // 1 string to match.
  36639. if (memcmp(BuiltinName.data()+16, "ppend", 5))
  36640. break;
  36641. return Intrinsic::mips_append; // "__builtin_mips_append"
  36642. case 'b': // 2 strings to match.
  36643. switch (BuiltinName[16]) {
  36644. default: break;
  36645. case 'a': // 1 string to match.
  36646. if (memcmp(BuiltinName.data()+17, "lign", 4))
  36647. break;
  36648. return Intrinsic::mips_balign; // "__builtin_mips_balign"
  36649. case 'i': // 1 string to match.
  36650. if (memcmp(BuiltinName.data()+17, "trev", 4))
  36651. break;
  36652. return Intrinsic::mips_bitrev; // "__builtin_mips_bitrev"
  36653. }
  36654. break;
  36655. case 'e': // 2 strings to match.
  36656. if (memcmp(BuiltinName.data()+16, "xt", 2))
  36657. break;
  36658. switch (BuiltinName[18]) {
  36659. default: break;
  36660. case 'p': // 1 string to match.
  36661. if (memcmp(BuiltinName.data()+19, "dp", 2))
  36662. break;
  36663. return Intrinsic::mips_extpdp; // "__builtin_mips_extpdp"
  36664. case 'r': // 1 string to match.
  36665. if (memcmp(BuiltinName.data()+19, "_w", 2))
  36666. break;
  36667. return Intrinsic::mips_extr_w; // "__builtin_mips_extr_w"
  36668. }
  36669. break;
  36670. case 'm': // 3 strings to match.
  36671. switch (BuiltinName[16]) {
  36672. default: break;
  36673. case 'o': // 1 string to match.
  36674. if (memcmp(BuiltinName.data()+17, "dsub", 4))
  36675. break;
  36676. return Intrinsic::mips_modsub; // "__builtin_mips_modsub"
  36677. case 't': // 1 string to match.
  36678. if (memcmp(BuiltinName.data()+17, "hlip", 4))
  36679. break;
  36680. return Intrinsic::mips_mthlip; // "__builtin_mips_mthlip"
  36681. case 'u': // 1 string to match.
  36682. if (memcmp(BuiltinName.data()+17, "l_ph", 4))
  36683. break;
  36684. return Intrinsic::mips_mul_ph; // "__builtin_mips_mul_ph"
  36685. }
  36686. break;
  36687. }
  36688. break;
  36689. case 22: // 19 strings to match.
  36690. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  36691. break;
  36692. switch (BuiltinName[15]) {
  36693. default: break;
  36694. case 'a': // 4 strings to match.
  36695. if (memcmp(BuiltinName.data()+16, "dd", 2))
  36696. break;
  36697. switch (BuiltinName[18]) {
  36698. default: break;
  36699. case 'q': // 2 strings to match.
  36700. switch (BuiltinName[19]) {
  36701. default: break;
  36702. case '_': // 1 string to match.
  36703. if (memcmp(BuiltinName.data()+20, "ph", 2))
  36704. break;
  36705. return Intrinsic::mips_addq_ph; // "__builtin_mips_addq_ph"
  36706. case 'h': // 1 string to match.
  36707. if (memcmp(BuiltinName.data()+20, "_w", 2))
  36708. break;
  36709. return Intrinsic::mips_addqh_w; // "__builtin_mips_addqh_w"
  36710. }
  36711. break;
  36712. case 'u': // 2 strings to match.
  36713. if (BuiltinName[19] != '_')
  36714. break;
  36715. switch (BuiltinName[20]) {
  36716. default: break;
  36717. case 'p': // 1 string to match.
  36718. if (BuiltinName[21] != 'h')
  36719. break;
  36720. return Intrinsic::mips_addu_ph; // "__builtin_mips_addu_ph"
  36721. case 'q': // 1 string to match.
  36722. if (BuiltinName[21] != 'b')
  36723. break;
  36724. return Intrinsic::mips_addu_qb; // "__builtin_mips_addu_qb"
  36725. }
  36726. break;
  36727. }
  36728. break;
  36729. case 'p': // 3 strings to match.
  36730. switch (BuiltinName[16]) {
  36731. default: break;
  36732. case 'i': // 2 strings to match.
  36733. if (memcmp(BuiltinName.data()+17, "ck_", 3))
  36734. break;
  36735. switch (BuiltinName[20]) {
  36736. default: break;
  36737. case 'p': // 1 string to match.
  36738. if (BuiltinName[21] != 'h')
  36739. break;
  36740. return Intrinsic::mips_pick_ph; // "__builtin_mips_pick_ph"
  36741. case 'q': // 1 string to match.
  36742. if (BuiltinName[21] != 'b')
  36743. break;
  36744. return Intrinsic::mips_pick_qb; // "__builtin_mips_pick_qb"
  36745. }
  36746. break;
  36747. case 'r': // 1 string to match.
  36748. if (memcmp(BuiltinName.data()+17, "epend", 5))
  36749. break;
  36750. return Intrinsic::mips_prepend; // "__builtin_mips_prepend"
  36751. }
  36752. break;
  36753. case 'r': // 2 strings to match.
  36754. if (memcmp(BuiltinName.data()+16, "epl_", 4))
  36755. break;
  36756. switch (BuiltinName[20]) {
  36757. default: break;
  36758. case 'p': // 1 string to match.
  36759. if (BuiltinName[21] != 'h')
  36760. break;
  36761. return Intrinsic::mips_repl_ph; // "__builtin_mips_repl_ph"
  36762. case 'q': // 1 string to match.
  36763. if (BuiltinName[21] != 'b')
  36764. break;
  36765. return Intrinsic::mips_repl_qb; // "__builtin_mips_repl_qb"
  36766. }
  36767. break;
  36768. case 's': // 10 strings to match.
  36769. switch (BuiltinName[16]) {
  36770. default: break;
  36771. case 'h': // 6 strings to match.
  36772. switch (BuiltinName[17]) {
  36773. default: break;
  36774. case 'l': // 2 strings to match.
  36775. if (memcmp(BuiltinName.data()+18, "l_", 2))
  36776. break;
  36777. switch (BuiltinName[20]) {
  36778. default: break;
  36779. case 'p': // 1 string to match.
  36780. if (BuiltinName[21] != 'h')
  36781. break;
  36782. return Intrinsic::mips_shll_ph; // "__builtin_mips_shll_ph"
  36783. case 'q': // 1 string to match.
  36784. if (BuiltinName[21] != 'b')
  36785. break;
  36786. return Intrinsic::mips_shll_qb; // "__builtin_mips_shll_qb"
  36787. }
  36788. break;
  36789. case 'r': // 4 strings to match.
  36790. switch (BuiltinName[18]) {
  36791. default: break;
  36792. case 'a': // 2 strings to match.
  36793. if (BuiltinName[19] != '_')
  36794. break;
  36795. switch (BuiltinName[20]) {
  36796. default: break;
  36797. case 'p': // 1 string to match.
  36798. if (BuiltinName[21] != 'h')
  36799. break;
  36800. return Intrinsic::mips_shra_ph; // "__builtin_mips_shra_ph"
  36801. case 'q': // 1 string to match.
  36802. if (BuiltinName[21] != 'b')
  36803. break;
  36804. return Intrinsic::mips_shra_qb; // "__builtin_mips_shra_qb"
  36805. }
  36806. break;
  36807. case 'l': // 2 strings to match.
  36808. if (BuiltinName[19] != '_')
  36809. break;
  36810. switch (BuiltinName[20]) {
  36811. default: break;
  36812. case 'p': // 1 string to match.
  36813. if (BuiltinName[21] != 'h')
  36814. break;
  36815. return Intrinsic::mips_shrl_ph; // "__builtin_mips_shrl_ph"
  36816. case 'q': // 1 string to match.
  36817. if (BuiltinName[21] != 'b')
  36818. break;
  36819. return Intrinsic::mips_shrl_qb; // "__builtin_mips_shrl_qb"
  36820. }
  36821. break;
  36822. }
  36823. break;
  36824. }
  36825. break;
  36826. case 'u': // 4 strings to match.
  36827. if (BuiltinName[17] != 'b')
  36828. break;
  36829. switch (BuiltinName[18]) {
  36830. default: break;
  36831. case 'q': // 2 strings to match.
  36832. switch (BuiltinName[19]) {
  36833. default: break;
  36834. case '_': // 1 string to match.
  36835. if (memcmp(BuiltinName.data()+20, "ph", 2))
  36836. break;
  36837. return Intrinsic::mips_subq_ph; // "__builtin_mips_subq_ph"
  36838. case 'h': // 1 string to match.
  36839. if (memcmp(BuiltinName.data()+20, "_w", 2))
  36840. break;
  36841. return Intrinsic::mips_subqh_w; // "__builtin_mips_subqh_w"
  36842. }
  36843. break;
  36844. case 'u': // 2 strings to match.
  36845. if (BuiltinName[19] != '_')
  36846. break;
  36847. switch (BuiltinName[20]) {
  36848. default: break;
  36849. case 'p': // 1 string to match.
  36850. if (BuiltinName[21] != 'h')
  36851. break;
  36852. return Intrinsic::mips_subu_ph; // "__builtin_mips_subu_ph"
  36853. case 'q': // 1 string to match.
  36854. if (BuiltinName[21] != 'b')
  36855. break;
  36856. return Intrinsic::mips_subu_qb; // "__builtin_mips_subu_qb"
  36857. }
  36858. break;
  36859. }
  36860. break;
  36861. }
  36862. break;
  36863. }
  36864. break;
  36865. case 23: // 16 strings to match.
  36866. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  36867. break;
  36868. switch (BuiltinName[15]) {
  36869. default: break;
  36870. case 'a': // 4 strings to match.
  36871. switch (BuiltinName[16]) {
  36872. default: break;
  36873. case 'b': // 1 string to match.
  36874. if (memcmp(BuiltinName.data()+17, "sq_s_w", 6))
  36875. break;
  36876. return Intrinsic::mips_absq_s_w; // "__builtin_mips_absq_s_w"
  36877. case 'd': // 3 strings to match.
  36878. if (BuiltinName[17] != 'd')
  36879. break;
  36880. switch (BuiltinName[18]) {
  36881. default: break;
  36882. case 'q': // 2 strings to match.
  36883. switch (BuiltinName[19]) {
  36884. default: break;
  36885. case '_': // 1 string to match.
  36886. if (memcmp(BuiltinName.data()+20, "s_w", 3))
  36887. break;
  36888. return Intrinsic::mips_addq_s_w; // "__builtin_mips_addq_s_w"
  36889. case 'h': // 1 string to match.
  36890. if (memcmp(BuiltinName.data()+20, "_ph", 3))
  36891. break;
  36892. return Intrinsic::mips_addqh_ph; // "__builtin_mips_addqh_ph"
  36893. }
  36894. break;
  36895. case 'u': // 1 string to match.
  36896. if (memcmp(BuiltinName.data()+19, "h_qb", 4))
  36897. break;
  36898. return Intrinsic::mips_adduh_qb; // "__builtin_mips_adduh_qb"
  36899. }
  36900. break;
  36901. }
  36902. break;
  36903. case 'b': // 1 string to match.
  36904. if (memcmp(BuiltinName.data()+16, "posge32", 7))
  36905. break;
  36906. return Intrinsic::mips_bposge32; // "__builtin_mips_bposge32"
  36907. case 'd': // 2 strings to match.
  36908. if (BuiltinName[16] != 'p')
  36909. break;
  36910. switch (BuiltinName[17]) {
  36911. default: break;
  36912. case 'a': // 1 string to match.
  36913. if (memcmp(BuiltinName.data()+18, "_w_ph", 5))
  36914. break;
  36915. return Intrinsic::mips_dpa_w_ph; // "__builtin_mips_dpa_w_ph"
  36916. case 's': // 1 string to match.
  36917. if (memcmp(BuiltinName.data()+18, "_w_ph", 5))
  36918. break;
  36919. return Intrinsic::mips_dps_w_ph; // "__builtin_mips_dps_w_ph"
  36920. }
  36921. break;
  36922. case 'e': // 2 strings to match.
  36923. if (memcmp(BuiltinName.data()+16, "xtr_", 4))
  36924. break;
  36925. switch (BuiltinName[20]) {
  36926. default: break;
  36927. case 'r': // 1 string to match.
  36928. if (memcmp(BuiltinName.data()+21, "_w", 2))
  36929. break;
  36930. return Intrinsic::mips_extr_r_w; // "__builtin_mips_extr_r_w"
  36931. case 's': // 1 string to match.
  36932. if (memcmp(BuiltinName.data()+21, "_h", 2))
  36933. break;
  36934. return Intrinsic::mips_extr_s_h; // "__builtin_mips_extr_s_h"
  36935. }
  36936. break;
  36937. case 'm': // 2 strings to match.
  36938. if (memcmp(BuiltinName.data()+16, "ul", 2))
  36939. break;
  36940. switch (BuiltinName[18]) {
  36941. default: break;
  36942. case '_': // 1 string to match.
  36943. if (memcmp(BuiltinName.data()+19, "s_ph", 4))
  36944. break;
  36945. return Intrinsic::mips_mul_s_ph; // "__builtin_mips_mul_s_ph"
  36946. case 'q': // 1 string to match.
  36947. if (memcmp(BuiltinName.data()+19, "_s_w", 4))
  36948. break;
  36949. return Intrinsic::mips_mulq_s_w; // "__builtin_mips_mulq_s_w"
  36950. }
  36951. break;
  36952. case 's': // 5 strings to match.
  36953. switch (BuiltinName[16]) {
  36954. default: break;
  36955. case 'h': // 2 strings to match.
  36956. switch (BuiltinName[17]) {
  36957. default: break;
  36958. case 'l': // 1 string to match.
  36959. if (memcmp(BuiltinName.data()+18, "l_s_w", 5))
  36960. break;
  36961. return Intrinsic::mips_shll_s_w; // "__builtin_mips_shll_s_w"
  36962. case 'r': // 1 string to match.
  36963. if (memcmp(BuiltinName.data()+18, "a_r_w", 5))
  36964. break;
  36965. return Intrinsic::mips_shra_r_w; // "__builtin_mips_shra_r_w"
  36966. }
  36967. break;
  36968. case 'u': // 3 strings to match.
  36969. if (BuiltinName[17] != 'b')
  36970. break;
  36971. switch (BuiltinName[18]) {
  36972. default: break;
  36973. case 'q': // 2 strings to match.
  36974. switch (BuiltinName[19]) {
  36975. default: break;
  36976. case '_': // 1 string to match.
  36977. if (memcmp(BuiltinName.data()+20, "s_w", 3))
  36978. break;
  36979. return Intrinsic::mips_subq_s_w; // "__builtin_mips_subq_s_w"
  36980. case 'h': // 1 string to match.
  36981. if (memcmp(BuiltinName.data()+20, "_ph", 3))
  36982. break;
  36983. return Intrinsic::mips_subqh_ph; // "__builtin_mips_subqh_ph"
  36984. }
  36985. break;
  36986. case 'u': // 1 string to match.
  36987. if (memcmp(BuiltinName.data()+19, "h_qb", 4))
  36988. break;
  36989. return Intrinsic::mips_subuh_qb; // "__builtin_mips_subuh_qb"
  36990. }
  36991. break;
  36992. }
  36993. break;
  36994. }
  36995. break;
  36996. case 24: // 22 strings to match.
  36997. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  36998. break;
  36999. switch (BuiltinName[15]) {
  37000. default: break;
  37001. case 'a': // 6 strings to match.
  37002. switch (BuiltinName[16]) {
  37003. default: break;
  37004. case 'b': // 2 strings to match.
  37005. if (memcmp(BuiltinName.data()+17, "sq_s_", 5))
  37006. break;
  37007. switch (BuiltinName[22]) {
  37008. default: break;
  37009. case 'p': // 1 string to match.
  37010. if (BuiltinName[23] != 'h')
  37011. break;
  37012. return Intrinsic::mips_absq_s_ph; // "__builtin_mips_absq_s_ph"
  37013. case 'q': // 1 string to match.
  37014. if (BuiltinName[23] != 'b')
  37015. break;
  37016. return Intrinsic::mips_absq_s_qb; // "__builtin_mips_absq_s_qb"
  37017. }
  37018. break;
  37019. case 'd': // 4 strings to match.
  37020. if (BuiltinName[17] != 'd')
  37021. break;
  37022. switch (BuiltinName[18]) {
  37023. default: break;
  37024. case 'q': // 2 strings to match.
  37025. switch (BuiltinName[19]) {
  37026. default: break;
  37027. case '_': // 1 string to match.
  37028. if (memcmp(BuiltinName.data()+20, "s_ph", 4))
  37029. break;
  37030. return Intrinsic::mips_addq_s_ph; // "__builtin_mips_addq_s_ph"
  37031. case 'h': // 1 string to match.
  37032. if (memcmp(BuiltinName.data()+20, "_r_w", 4))
  37033. break;
  37034. return Intrinsic::mips_addqh_r_w; // "__builtin_mips_addqh_r_w"
  37035. }
  37036. break;
  37037. case 'u': // 2 strings to match.
  37038. if (memcmp(BuiltinName.data()+19, "_s_", 3))
  37039. break;
  37040. switch (BuiltinName[22]) {
  37041. default: break;
  37042. case 'p': // 1 string to match.
  37043. if (BuiltinName[23] != 'h')
  37044. break;
  37045. return Intrinsic::mips_addu_s_ph; // "__builtin_mips_addu_s_ph"
  37046. case 'q': // 1 string to match.
  37047. if (BuiltinName[23] != 'b')
  37048. break;
  37049. return Intrinsic::mips_addu_s_qb; // "__builtin_mips_addu_s_qb"
  37050. }
  37051. break;
  37052. }
  37053. break;
  37054. }
  37055. break;
  37056. case 'c': // 3 strings to match.
  37057. if (memcmp(BuiltinName.data()+16, "mp_", 3))
  37058. break;
  37059. switch (BuiltinName[19]) {
  37060. default: break;
  37061. case 'e': // 1 string to match.
  37062. if (memcmp(BuiltinName.data()+20, "q_ph", 4))
  37063. break;
  37064. return Intrinsic::mips_cmp_eq_ph; // "__builtin_mips_cmp_eq_ph"
  37065. case 'l': // 2 strings to match.
  37066. switch (BuiltinName[20]) {
  37067. default: break;
  37068. case 'e': // 1 string to match.
  37069. if (memcmp(BuiltinName.data()+21, "_ph", 3))
  37070. break;
  37071. return Intrinsic::mips_cmp_le_ph; // "__builtin_mips_cmp_le_ph"
  37072. case 't': // 1 string to match.
  37073. if (memcmp(BuiltinName.data()+21, "_ph", 3))
  37074. break;
  37075. return Intrinsic::mips_cmp_lt_ph; // "__builtin_mips_cmp_lt_ph"
  37076. }
  37077. break;
  37078. }
  37079. break;
  37080. case 'd': // 2 strings to match.
  37081. if (BuiltinName[16] != 'p')
  37082. break;
  37083. switch (BuiltinName[17]) {
  37084. default: break;
  37085. case 'a': // 1 string to match.
  37086. if (memcmp(BuiltinName.data()+18, "x_w_ph", 6))
  37087. break;
  37088. return Intrinsic::mips_dpax_w_ph; // "__builtin_mips_dpax_w_ph"
  37089. case 's': // 1 string to match.
  37090. if (memcmp(BuiltinName.data()+18, "x_w_ph", 6))
  37091. break;
  37092. return Intrinsic::mips_dpsx_w_ph; // "__builtin_mips_dpsx_w_ph"
  37093. }
  37094. break;
  37095. case 'e': // 1 string to match.
  37096. if (memcmp(BuiltinName.data()+16, "xtr_rs_w", 8))
  37097. break;
  37098. return Intrinsic::mips_extr_rs_w; // "__builtin_mips_extr_rs_w"
  37099. case 'm': // 2 strings to match.
  37100. if (memcmp(BuiltinName.data()+16, "ulq_", 4))
  37101. break;
  37102. switch (BuiltinName[20]) {
  37103. default: break;
  37104. case 'r': // 1 string to match.
  37105. if (memcmp(BuiltinName.data()+21, "s_w", 3))
  37106. break;
  37107. return Intrinsic::mips_mulq_rs_w; // "__builtin_mips_mulq_rs_w"
  37108. case 's': // 1 string to match.
  37109. if (memcmp(BuiltinName.data()+21, "_ph", 3))
  37110. break;
  37111. return Intrinsic::mips_mulq_s_ph; // "__builtin_mips_mulq_s_ph"
  37112. }
  37113. break;
  37114. case 'p': // 1 string to match.
  37115. if (memcmp(BuiltinName.data()+16, "ackrl_ph", 8))
  37116. break;
  37117. return Intrinsic::mips_packrl_ph; // "__builtin_mips_packrl_ph"
  37118. case 's': // 7 strings to match.
  37119. switch (BuiltinName[16]) {
  37120. default: break;
  37121. case 'h': // 3 strings to match.
  37122. switch (BuiltinName[17]) {
  37123. default: break;
  37124. case 'l': // 1 string to match.
  37125. if (memcmp(BuiltinName.data()+18, "l_s_ph", 6))
  37126. break;
  37127. return Intrinsic::mips_shll_s_ph; // "__builtin_mips_shll_s_ph"
  37128. case 'r': // 2 strings to match.
  37129. if (memcmp(BuiltinName.data()+18, "a_r_", 4))
  37130. break;
  37131. switch (BuiltinName[22]) {
  37132. default: break;
  37133. case 'p': // 1 string to match.
  37134. if (BuiltinName[23] != 'h')
  37135. break;
  37136. return Intrinsic::mips_shra_r_ph; // "__builtin_mips_shra_r_ph"
  37137. case 'q': // 1 string to match.
  37138. if (BuiltinName[23] != 'b')
  37139. break;
  37140. return Intrinsic::mips_shra_r_qb; // "__builtin_mips_shra_r_qb"
  37141. }
  37142. break;
  37143. }
  37144. break;
  37145. case 'u': // 4 strings to match.
  37146. if (BuiltinName[17] != 'b')
  37147. break;
  37148. switch (BuiltinName[18]) {
  37149. default: break;
  37150. case 'q': // 2 strings to match.
  37151. switch (BuiltinName[19]) {
  37152. default: break;
  37153. case '_': // 1 string to match.
  37154. if (memcmp(BuiltinName.data()+20, "s_ph", 4))
  37155. break;
  37156. return Intrinsic::mips_subq_s_ph; // "__builtin_mips_subq_s_ph"
  37157. case 'h': // 1 string to match.
  37158. if (memcmp(BuiltinName.data()+20, "_r_w", 4))
  37159. break;
  37160. return Intrinsic::mips_subqh_r_w; // "__builtin_mips_subqh_r_w"
  37161. }
  37162. break;
  37163. case 'u': // 2 strings to match.
  37164. if (memcmp(BuiltinName.data()+19, "_s_", 3))
  37165. break;
  37166. switch (BuiltinName[22]) {
  37167. default: break;
  37168. case 'p': // 1 string to match.
  37169. if (BuiltinName[23] != 'h')
  37170. break;
  37171. return Intrinsic::mips_subu_s_ph; // "__builtin_mips_subu_s_ph"
  37172. case 'q': // 1 string to match.
  37173. if (BuiltinName[23] != 'b')
  37174. break;
  37175. return Intrinsic::mips_subu_s_qb; // "__builtin_mips_subu_s_qb"
  37176. }
  37177. break;
  37178. }
  37179. break;
  37180. }
  37181. break;
  37182. }
  37183. break;
  37184. case 25: // 14 strings to match.
  37185. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37186. break;
  37187. switch (BuiltinName[15]) {
  37188. default: break;
  37189. case 'a': // 2 strings to match.
  37190. if (memcmp(BuiltinName.data()+16, "dd", 2))
  37191. break;
  37192. switch (BuiltinName[18]) {
  37193. default: break;
  37194. case 'q': // 1 string to match.
  37195. if (memcmp(BuiltinName.data()+19, "h_r_ph", 6))
  37196. break;
  37197. return Intrinsic::mips_addqh_r_ph; // "__builtin_mips_addqh_r_ph"
  37198. case 'u': // 1 string to match.
  37199. if (memcmp(BuiltinName.data()+19, "h_r_qb", 6))
  37200. break;
  37201. return Intrinsic::mips_adduh_r_qb; // "__builtin_mips_adduh_r_qb"
  37202. }
  37203. break;
  37204. case 'c': // 3 strings to match.
  37205. if (memcmp(BuiltinName.data()+16, "mpu_", 4))
  37206. break;
  37207. switch (BuiltinName[20]) {
  37208. default: break;
  37209. case 'e': // 1 string to match.
  37210. if (memcmp(BuiltinName.data()+21, "q_qb", 4))
  37211. break;
  37212. return Intrinsic::mips_cmpu_eq_qb; // "__builtin_mips_cmpu_eq_qb"
  37213. case 'l': // 2 strings to match.
  37214. switch (BuiltinName[21]) {
  37215. default: break;
  37216. case 'e': // 1 string to match.
  37217. if (memcmp(BuiltinName.data()+22, "_qb", 3))
  37218. break;
  37219. return Intrinsic::mips_cmpu_le_qb; // "__builtin_mips_cmpu_le_qb"
  37220. case 't': // 1 string to match.
  37221. if (memcmp(BuiltinName.data()+22, "_qb", 3))
  37222. break;
  37223. return Intrinsic::mips_cmpu_lt_qb; // "__builtin_mips_cmpu_lt_qb"
  37224. }
  37225. break;
  37226. }
  37227. break;
  37228. case 'd': // 4 strings to match.
  37229. if (BuiltinName[16] != 'p')
  37230. break;
  37231. switch (BuiltinName[17]) {
  37232. default: break;
  37233. case 'a': // 2 strings to match.
  37234. if (memcmp(BuiltinName.data()+18, "u_h_qb", 6))
  37235. break;
  37236. switch (BuiltinName[24]) {
  37237. default: break;
  37238. case 'l': // 1 string to match.
  37239. return Intrinsic::mips_dpau_h_qbl; // "__builtin_mips_dpau_h_qbl"
  37240. case 'r': // 1 string to match.
  37241. return Intrinsic::mips_dpau_h_qbr; // "__builtin_mips_dpau_h_qbr"
  37242. }
  37243. break;
  37244. case 's': // 2 strings to match.
  37245. if (memcmp(BuiltinName.data()+18, "u_h_qb", 6))
  37246. break;
  37247. switch (BuiltinName[24]) {
  37248. default: break;
  37249. case 'l': // 1 string to match.
  37250. return Intrinsic::mips_dpsu_h_qbl; // "__builtin_mips_dpsu_h_qbl"
  37251. case 'r': // 1 string to match.
  37252. return Intrinsic::mips_dpsu_h_qbr; // "__builtin_mips_dpsu_h_qbr"
  37253. }
  37254. break;
  37255. }
  37256. break;
  37257. case 'm': // 2 strings to match.
  37258. if (memcmp(BuiltinName.data()+16, "ul", 2))
  37259. break;
  37260. switch (BuiltinName[18]) {
  37261. default: break;
  37262. case 'q': // 1 string to match.
  37263. if (memcmp(BuiltinName.data()+19, "_rs_ph", 6))
  37264. break;
  37265. return Intrinsic::mips_mulq_rs_ph; // "__builtin_mips_mulq_rs_ph"
  37266. case 's': // 1 string to match.
  37267. if (memcmp(BuiltinName.data()+19, "a_w_ph", 6))
  37268. break;
  37269. return Intrinsic::mips_mulsa_w_ph; // "__builtin_mips_mulsa_w_ph"
  37270. }
  37271. break;
  37272. case 'r': // 1 string to match.
  37273. if (memcmp(BuiltinName.data()+16, "addu_w_qb", 9))
  37274. break;
  37275. return Intrinsic::mips_raddu_w_qb; // "__builtin_mips_raddu_w_qb"
  37276. case 's': // 2 strings to match.
  37277. if (memcmp(BuiltinName.data()+16, "ub", 2))
  37278. break;
  37279. switch (BuiltinName[18]) {
  37280. default: break;
  37281. case 'q': // 1 string to match.
  37282. if (memcmp(BuiltinName.data()+19, "h_r_ph", 6))
  37283. break;
  37284. return Intrinsic::mips_subqh_r_ph; // "__builtin_mips_subqh_r_ph"
  37285. case 'u': // 1 string to match.
  37286. if (memcmp(BuiltinName.data()+19, "h_r_qb", 6))
  37287. break;
  37288. return Intrinsic::mips_subuh_r_qb; // "__builtin_mips_subuh_r_qb"
  37289. }
  37290. break;
  37291. }
  37292. break;
  37293. case 26: // 11 strings to match.
  37294. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37295. break;
  37296. switch (BuiltinName[15]) {
  37297. default: break;
  37298. case 'c': // 3 strings to match.
  37299. if (memcmp(BuiltinName.data()+16, "mpgu_", 5))
  37300. break;
  37301. switch (BuiltinName[21]) {
  37302. default: break;
  37303. case 'e': // 1 string to match.
  37304. if (memcmp(BuiltinName.data()+22, "q_qb", 4))
  37305. break;
  37306. return Intrinsic::mips_cmpgu_eq_qb; // "__builtin_mips_cmpgu_eq_qb"
  37307. case 'l': // 2 strings to match.
  37308. switch (BuiltinName[22]) {
  37309. default: break;
  37310. case 'e': // 1 string to match.
  37311. if (memcmp(BuiltinName.data()+23, "_qb", 3))
  37312. break;
  37313. return Intrinsic::mips_cmpgu_le_qb; // "__builtin_mips_cmpgu_le_qb"
  37314. case 't': // 1 string to match.
  37315. if (memcmp(BuiltinName.data()+23, "_qb", 3))
  37316. break;
  37317. return Intrinsic::mips_cmpgu_lt_qb; // "__builtin_mips_cmpgu_lt_qb"
  37318. }
  37319. break;
  37320. }
  37321. break;
  37322. case 'd': // 4 strings to match.
  37323. if (BuiltinName[16] != 'p')
  37324. break;
  37325. switch (BuiltinName[17]) {
  37326. default: break;
  37327. case 'a': // 2 strings to match.
  37328. if (memcmp(BuiltinName.data()+18, "q_s", 3))
  37329. break;
  37330. switch (BuiltinName[21]) {
  37331. default: break;
  37332. case '_': // 1 string to match.
  37333. if (memcmp(BuiltinName.data()+22, "w_ph", 4))
  37334. break;
  37335. return Intrinsic::mips_dpaq_s_w_ph; // "__builtin_mips_dpaq_s_w_ph"
  37336. case 'a': // 1 string to match.
  37337. if (memcmp(BuiltinName.data()+22, "_l_w", 4))
  37338. break;
  37339. return Intrinsic::mips_dpaq_sa_l_w; // "__builtin_mips_dpaq_sa_l_w"
  37340. }
  37341. break;
  37342. case 's': // 2 strings to match.
  37343. if (memcmp(BuiltinName.data()+18, "q_s", 3))
  37344. break;
  37345. switch (BuiltinName[21]) {
  37346. default: break;
  37347. case '_': // 1 string to match.
  37348. if (memcmp(BuiltinName.data()+22, "w_ph", 4))
  37349. break;
  37350. return Intrinsic::mips_dpsq_s_w_ph; // "__builtin_mips_dpsq_s_w_ph"
  37351. case 'a': // 1 string to match.
  37352. if (memcmp(BuiltinName.data()+22, "_l_w", 4))
  37353. break;
  37354. return Intrinsic::mips_dpsq_sa_l_w; // "__builtin_mips_dpsq_sa_l_w"
  37355. }
  37356. break;
  37357. }
  37358. break;
  37359. case 'm': // 2 strings to match.
  37360. if (memcmp(BuiltinName.data()+16, "aq_s_w_ph", 9))
  37361. break;
  37362. switch (BuiltinName[25]) {
  37363. default: break;
  37364. case 'l': // 1 string to match.
  37365. return Intrinsic::mips_maq_s_w_phl; // "__builtin_mips_maq_s_w_phl"
  37366. case 'r': // 1 string to match.
  37367. return Intrinsic::mips_maq_s_w_phr; // "__builtin_mips_maq_s_w_phr"
  37368. }
  37369. break;
  37370. case 'p': // 2 strings to match.
  37371. if (memcmp(BuiltinName.data()+16, "recr", 4))
  37372. break;
  37373. switch (BuiltinName[20]) {
  37374. default: break;
  37375. case '_': // 1 string to match.
  37376. if (memcmp(BuiltinName.data()+21, "qb_ph", 5))
  37377. break;
  37378. return Intrinsic::mips_precr_qb_ph; // "__builtin_mips_precr_qb_ph"
  37379. case 'q': // 1 string to match.
  37380. if (memcmp(BuiltinName.data()+21, "_ph_w", 5))
  37381. break;
  37382. return Intrinsic::mips_precrq_ph_w; // "__builtin_mips_precrq_ph_w"
  37383. }
  37384. break;
  37385. }
  37386. break;
  37387. case 27: // 10 strings to match.
  37388. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37389. break;
  37390. switch (BuiltinName[15]) {
  37391. default: break;
  37392. case 'c': // 3 strings to match.
  37393. if (memcmp(BuiltinName.data()+16, "mpgdu_", 6))
  37394. break;
  37395. switch (BuiltinName[22]) {
  37396. default: break;
  37397. case 'e': // 1 string to match.
  37398. if (memcmp(BuiltinName.data()+23, "q_qb", 4))
  37399. break;
  37400. return Intrinsic::mips_cmpgdu_eq_qb; // "__builtin_mips_cmpgdu_eq_qb"
  37401. case 'l': // 2 strings to match.
  37402. switch (BuiltinName[23]) {
  37403. default: break;
  37404. case 'e': // 1 string to match.
  37405. if (memcmp(BuiltinName.data()+24, "_qb", 3))
  37406. break;
  37407. return Intrinsic::mips_cmpgdu_le_qb; // "__builtin_mips_cmpgdu_le_qb"
  37408. case 't': // 1 string to match.
  37409. if (memcmp(BuiltinName.data()+24, "_qb", 3))
  37410. break;
  37411. return Intrinsic::mips_cmpgdu_lt_qb; // "__builtin_mips_cmpgdu_lt_qb"
  37412. }
  37413. break;
  37414. }
  37415. break;
  37416. case 'd': // 2 strings to match.
  37417. if (BuiltinName[16] != 'p')
  37418. break;
  37419. switch (BuiltinName[17]) {
  37420. default: break;
  37421. case 'a': // 1 string to match.
  37422. if (memcmp(BuiltinName.data()+18, "qx_s_w_ph", 9))
  37423. break;
  37424. return Intrinsic::mips_dpaqx_s_w_ph; // "__builtin_mips_dpaqx_s_w_ph"
  37425. case 's': // 1 string to match.
  37426. if (memcmp(BuiltinName.data()+18, "qx_s_w_ph", 9))
  37427. break;
  37428. return Intrinsic::mips_dpsqx_s_w_ph; // "__builtin_mips_dpsqx_s_w_ph"
  37429. }
  37430. break;
  37431. case 'm': // 2 strings to match.
  37432. if (memcmp(BuiltinName.data()+16, "aq_sa_w_ph", 10))
  37433. break;
  37434. switch (BuiltinName[26]) {
  37435. default: break;
  37436. case 'l': // 1 string to match.
  37437. return Intrinsic::mips_maq_sa_w_phl; // "__builtin_mips_maq_sa_w_phl"
  37438. case 'r': // 1 string to match.
  37439. return Intrinsic::mips_maq_sa_w_phr; // "__builtin_mips_maq_sa_w_phr"
  37440. }
  37441. break;
  37442. case 'p': // 3 strings to match.
  37443. if (memcmp(BuiltinName.data()+16, "rec", 3))
  37444. break;
  37445. switch (BuiltinName[19]) {
  37446. default: break;
  37447. case 'e': // 2 strings to match.
  37448. if (memcmp(BuiltinName.data()+20, "q_w_ph", 6))
  37449. break;
  37450. switch (BuiltinName[26]) {
  37451. default: break;
  37452. case 'l': // 1 string to match.
  37453. return Intrinsic::mips_preceq_w_phl; // "__builtin_mips_preceq_w_phl"
  37454. case 'r': // 1 string to match.
  37455. return Intrinsic::mips_preceq_w_phr; // "__builtin_mips_preceq_w_phr"
  37456. }
  37457. break;
  37458. case 'r': // 1 string to match.
  37459. if (memcmp(BuiltinName.data()+20, "q_qb_ph", 7))
  37460. break;
  37461. return Intrinsic::mips_precrq_qb_ph; // "__builtin_mips_precrq_qb_ph"
  37462. }
  37463. break;
  37464. }
  37465. break;
  37466. case 28: // 7 strings to match.
  37467. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37468. break;
  37469. switch (BuiltinName[15]) {
  37470. default: break;
  37471. case 'd': // 2 strings to match.
  37472. if (BuiltinName[16] != 'p')
  37473. break;
  37474. switch (BuiltinName[17]) {
  37475. default: break;
  37476. case 'a': // 1 string to match.
  37477. if (memcmp(BuiltinName.data()+18, "qx_sa_w_ph", 10))
  37478. break;
  37479. return Intrinsic::mips_dpaqx_sa_w_ph; // "__builtin_mips_dpaqx_sa_w_ph"
  37480. case 's': // 1 string to match.
  37481. if (memcmp(BuiltinName.data()+18, "qx_sa_w_ph", 10))
  37482. break;
  37483. return Intrinsic::mips_dpsqx_sa_w_ph; // "__builtin_mips_dpsqx_sa_w_ph"
  37484. }
  37485. break;
  37486. case 'm': // 3 strings to match.
  37487. if (memcmp(BuiltinName.data()+16, "ul", 2))
  37488. break;
  37489. switch (BuiltinName[18]) {
  37490. default: break;
  37491. case 'e': // 2 strings to match.
  37492. if (memcmp(BuiltinName.data()+19, "q_s_w_ph", 8))
  37493. break;
  37494. switch (BuiltinName[27]) {
  37495. default: break;
  37496. case 'l': // 1 string to match.
  37497. return Intrinsic::mips_muleq_s_w_phl; // "__builtin_mips_muleq_s_w_phl"
  37498. case 'r': // 1 string to match.
  37499. return Intrinsic::mips_muleq_s_w_phr; // "__builtin_mips_muleq_s_w_phr"
  37500. }
  37501. break;
  37502. case 's': // 1 string to match.
  37503. if (memcmp(BuiltinName.data()+19, "aq_s_w_ph", 9))
  37504. break;
  37505. return Intrinsic::mips_mulsaq_s_w_ph; // "__builtin_mips_mulsaq_s_w_ph"
  37506. }
  37507. break;
  37508. case 'p': // 2 strings to match.
  37509. if (memcmp(BuiltinName.data()+16, "receu_ph_qb", 11))
  37510. break;
  37511. switch (BuiltinName[27]) {
  37512. default: break;
  37513. case 'l': // 1 string to match.
  37514. return Intrinsic::mips_preceu_ph_qbl; // "__builtin_mips_preceu_ph_qbl"
  37515. case 'r': // 1 string to match.
  37516. return Intrinsic::mips_preceu_ph_qbr; // "__builtin_mips_preceu_ph_qbr"
  37517. }
  37518. break;
  37519. }
  37520. break;
  37521. case 29: // 8 strings to match.
  37522. if (memcmp(BuiltinName.data()+0, "__builtin_mips_", 15))
  37523. break;
  37524. switch (BuiltinName[15]) {
  37525. default: break;
  37526. case 'm': // 2 strings to match.
  37527. if (memcmp(BuiltinName.data()+16, "uleu_s_ph_qb", 12))
  37528. break;
  37529. switch (BuiltinName[28]) {
  37530. default: break;
  37531. case 'l': // 1 string to match.
  37532. return Intrinsic::mips_muleu_s_ph_qbl; // "__builtin_mips_muleu_s_ph_qbl"
  37533. case 'r': // 1 string to match.
  37534. return Intrinsic::mips_muleu_s_ph_qbr; // "__builtin_mips_muleu_s_ph_qbr"
  37535. }
  37536. break;
  37537. case 'p': // 6 strings to match.
  37538. if (memcmp(BuiltinName.data()+16, "rec", 3))
  37539. break;
  37540. switch (BuiltinName[19]) {
  37541. default: break;
  37542. case 'e': // 4 strings to match.
  37543. switch (BuiltinName[20]) {
  37544. default: break;
  37545. case 'q': // 2 strings to match.
  37546. if (memcmp(BuiltinName.data()+21, "u_ph_qb", 7))
  37547. break;
  37548. switch (BuiltinName[28]) {
  37549. default: break;
  37550. case 'l': // 1 string to match.
  37551. return Intrinsic::mips_precequ_ph_qbl; // "__builtin_mips_precequ_ph_qbl"
  37552. case 'r': // 1 string to match.
  37553. return Intrinsic::mips_precequ_ph_qbr; // "__builtin_mips_precequ_ph_qbr"
  37554. }
  37555. break;
  37556. case 'u': // 2 strings to match.
  37557. if (memcmp(BuiltinName.data()+21, "_ph_qb", 6))
  37558. break;
  37559. switch (BuiltinName[27]) {
  37560. default: break;
  37561. case 'l': // 1 string to match.
  37562. if (BuiltinName[28] != 'a')
  37563. break;
  37564. return Intrinsic::mips_preceu_ph_qbla; // "__builtin_mips_preceu_ph_qbla"
  37565. case 'r': // 1 string to match.
  37566. if (BuiltinName[28] != 'a')
  37567. break;
  37568. return Intrinsic::mips_preceu_ph_qbra; // "__builtin_mips_preceu_ph_qbra"
  37569. }
  37570. break;
  37571. }
  37572. break;
  37573. case 'r': // 2 strings to match.
  37574. switch (BuiltinName[20]) {
  37575. default: break;
  37576. case '_': // 1 string to match.
  37577. if (memcmp(BuiltinName.data()+21, "sra_ph_w", 8))
  37578. break;
  37579. return Intrinsic::mips_precr_sra_ph_w; // "__builtin_mips_precr_sra_ph_w"
  37580. case 'q': // 1 string to match.
  37581. if (memcmp(BuiltinName.data()+21, "_rs_ph_w", 8))
  37582. break;
  37583. return Intrinsic::mips_precrq_rs_ph_w; // "__builtin_mips_precrq_rs_ph_w"
  37584. }
  37585. break;
  37586. }
  37587. break;
  37588. }
  37589. break;
  37590. case 30: // 3 strings to match.
  37591. if (memcmp(BuiltinName.data()+0, "__builtin_mips_prec", 19))
  37592. break;
  37593. switch (BuiltinName[19]) {
  37594. default: break;
  37595. case 'e': // 2 strings to match.
  37596. if (memcmp(BuiltinName.data()+20, "qu_ph_qb", 8))
  37597. break;
  37598. switch (BuiltinName[28]) {
  37599. default: break;
  37600. case 'l': // 1 string to match.
  37601. if (BuiltinName[29] != 'a')
  37602. break;
  37603. return Intrinsic::mips_precequ_ph_qbla; // "__builtin_mips_precequ_ph_qbla"
  37604. case 'r': // 1 string to match.
  37605. if (BuiltinName[29] != 'a')
  37606. break;
  37607. return Intrinsic::mips_precequ_ph_qbra; // "__builtin_mips_precequ_ph_qbra"
  37608. }
  37609. break;
  37610. case 'r': // 1 string to match.
  37611. if (memcmp(BuiltinName.data()+20, "qu_s_qb_ph", 10))
  37612. break;
  37613. return Intrinsic::mips_precrqu_s_qb_ph; // "__builtin_mips_precrqu_s_qb_ph"
  37614. }
  37615. break;
  37616. case 31: // 1 string to match.
  37617. if (memcmp(BuiltinName.data()+0, "__builtin_mips_precr_sra_r_ph_w", 31))
  37618. break;
  37619. return Intrinsic::mips_precr_sra_r_ph_w; // "__builtin_mips_precr_sra_r_ph_w"
  37620. }
  37621. }
  37622. if (TargetPrefix == "ppc") {
  37623. switch (BuiltinName.size()) {
  37624. default: break;
  37625. case 21: // 4 strings to match.
  37626. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  37627. break;
  37628. switch (BuiltinName[18]) {
  37629. default: break;
  37630. case 'd': // 2 strings to match.
  37631. if (BuiltinName[19] != 's')
  37632. break;
  37633. switch (BuiltinName[20]) {
  37634. default: break;
  37635. case 's': // 1 string to match.
  37636. return Intrinsic::ppc_altivec_dss; // "__builtin_altivec_dss"
  37637. case 't': // 1 string to match.
  37638. return Intrinsic::ppc_altivec_dst; // "__builtin_altivec_dst"
  37639. }
  37640. break;
  37641. case 'v': // 2 strings to match.
  37642. if (BuiltinName[19] != 's')
  37643. break;
  37644. switch (BuiltinName[20]) {
  37645. default: break;
  37646. case 'l': // 1 string to match.
  37647. return Intrinsic::ppc_altivec_vsl; // "__builtin_altivec_vsl"
  37648. case 'r': // 1 string to match.
  37649. return Intrinsic::ppc_altivec_vsr; // "__builtin_altivec_vsr"
  37650. }
  37651. break;
  37652. }
  37653. break;
  37654. case 22: // 12 strings to match.
  37655. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  37656. break;
  37657. switch (BuiltinName[18]) {
  37658. default: break;
  37659. case 'd': // 1 string to match.
  37660. if (memcmp(BuiltinName.data()+19, "stt", 3))
  37661. break;
  37662. return Intrinsic::ppc_altivec_dstt; // "__builtin_altivec_dstt"
  37663. case 'v': // 11 strings to match.
  37664. switch (BuiltinName[19]) {
  37665. default: break;
  37666. case 'r': // 3 strings to match.
  37667. if (BuiltinName[20] != 'l')
  37668. break;
  37669. switch (BuiltinName[21]) {
  37670. default: break;
  37671. case 'b': // 1 string to match.
  37672. return Intrinsic::ppc_altivec_vrlb; // "__builtin_altivec_vrlb"
  37673. case 'h': // 1 string to match.
  37674. return Intrinsic::ppc_altivec_vrlh; // "__builtin_altivec_vrlh"
  37675. case 'w': // 1 string to match.
  37676. return Intrinsic::ppc_altivec_vrlw; // "__builtin_altivec_vrlw"
  37677. }
  37678. break;
  37679. case 's': // 8 strings to match.
  37680. switch (BuiltinName[20]) {
  37681. default: break;
  37682. case 'l': // 4 strings to match.
  37683. switch (BuiltinName[21]) {
  37684. default: break;
  37685. case 'b': // 1 string to match.
  37686. return Intrinsic::ppc_altivec_vslb; // "__builtin_altivec_vslb"
  37687. case 'h': // 1 string to match.
  37688. return Intrinsic::ppc_altivec_vslh; // "__builtin_altivec_vslh"
  37689. case 'o': // 1 string to match.
  37690. return Intrinsic::ppc_altivec_vslo; // "__builtin_altivec_vslo"
  37691. case 'w': // 1 string to match.
  37692. return Intrinsic::ppc_altivec_vslw; // "__builtin_altivec_vslw"
  37693. }
  37694. break;
  37695. case 'r': // 4 strings to match.
  37696. switch (BuiltinName[21]) {
  37697. default: break;
  37698. case 'b': // 1 string to match.
  37699. return Intrinsic::ppc_altivec_vsrb; // "__builtin_altivec_vsrb"
  37700. case 'h': // 1 string to match.
  37701. return Intrinsic::ppc_altivec_vsrh; // "__builtin_altivec_vsrh"
  37702. case 'o': // 1 string to match.
  37703. return Intrinsic::ppc_altivec_vsro; // "__builtin_altivec_vsro"
  37704. case 'w': // 1 string to match.
  37705. return Intrinsic::ppc_altivec_vsrw; // "__builtin_altivec_vsrw"
  37706. }
  37707. break;
  37708. }
  37709. break;
  37710. }
  37711. break;
  37712. }
  37713. break;
  37714. case 23: // 12 strings to match.
  37715. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  37716. break;
  37717. switch (BuiltinName[18]) {
  37718. default: break;
  37719. case 'd': // 1 string to match.
  37720. if (memcmp(BuiltinName.data()+19, "stst", 4))
  37721. break;
  37722. return Intrinsic::ppc_altivec_dstst; // "__builtin_altivec_dstst"
  37723. case 'v': // 11 strings to match.
  37724. switch (BuiltinName[19]) {
  37725. default: break;
  37726. case 'c': // 2 strings to match.
  37727. if (BuiltinName[20] != 'f')
  37728. break;
  37729. switch (BuiltinName[21]) {
  37730. default: break;
  37731. case 's': // 1 string to match.
  37732. if (BuiltinName[22] != 'x')
  37733. break;
  37734. return Intrinsic::ppc_altivec_vcfsx; // "__builtin_altivec_vcfsx"
  37735. case 'u': // 1 string to match.
  37736. if (BuiltinName[22] != 'x')
  37737. break;
  37738. return Intrinsic::ppc_altivec_vcfux; // "__builtin_altivec_vcfux"
  37739. }
  37740. break;
  37741. case 'p': // 1 string to match.
  37742. if (memcmp(BuiltinName.data()+20, "kpx", 3))
  37743. break;
  37744. return Intrinsic::ppc_altivec_vpkpx; // "__builtin_altivec_vpkpx"
  37745. case 'r': // 5 strings to match.
  37746. switch (BuiltinName[20]) {
  37747. default: break;
  37748. case 'e': // 1 string to match.
  37749. if (memcmp(BuiltinName.data()+21, "fp", 2))
  37750. break;
  37751. return Intrinsic::ppc_altivec_vrefp; // "__builtin_altivec_vrefp"
  37752. case 'f': // 4 strings to match.
  37753. if (BuiltinName[21] != 'i')
  37754. break;
  37755. switch (BuiltinName[22]) {
  37756. default: break;
  37757. case 'm': // 1 string to match.
  37758. return Intrinsic::ppc_altivec_vrfim; // "__builtin_altivec_vrfim"
  37759. case 'n': // 1 string to match.
  37760. return Intrinsic::ppc_altivec_vrfin; // "__builtin_altivec_vrfin"
  37761. case 'p': // 1 string to match.
  37762. return Intrinsic::ppc_altivec_vrfip; // "__builtin_altivec_vrfip"
  37763. case 'z': // 1 string to match.
  37764. return Intrinsic::ppc_altivec_vrfiz; // "__builtin_altivec_vrfiz"
  37765. }
  37766. break;
  37767. }
  37768. break;
  37769. case 's': // 3 strings to match.
  37770. if (memcmp(BuiltinName.data()+20, "ra", 2))
  37771. break;
  37772. switch (BuiltinName[22]) {
  37773. default: break;
  37774. case 'b': // 1 string to match.
  37775. return Intrinsic::ppc_altivec_vsrab; // "__builtin_altivec_vsrab"
  37776. case 'h': // 1 string to match.
  37777. return Intrinsic::ppc_altivec_vsrah; // "__builtin_altivec_vsrah"
  37778. case 'w': // 1 string to match.
  37779. return Intrinsic::ppc_altivec_vsraw; // "__builtin_altivec_vsraw"
  37780. }
  37781. break;
  37782. }
  37783. break;
  37784. }
  37785. break;
  37786. case 24: // 26 strings to match.
  37787. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_", 18))
  37788. break;
  37789. switch (BuiltinName[18]) {
  37790. default: break;
  37791. case 'd': // 2 strings to match.
  37792. if (BuiltinName[19] != 's')
  37793. break;
  37794. switch (BuiltinName[20]) {
  37795. default: break;
  37796. case 's': // 1 string to match.
  37797. if (memcmp(BuiltinName.data()+21, "all", 3))
  37798. break;
  37799. return Intrinsic::ppc_altivec_dssall; // "__builtin_altivec_dssall"
  37800. case 't': // 1 string to match.
  37801. if (memcmp(BuiltinName.data()+21, "stt", 3))
  37802. break;
  37803. return Intrinsic::ppc_altivec_dststt; // "__builtin_altivec_dststt"
  37804. }
  37805. break;
  37806. case 'm': // 2 strings to match.
  37807. switch (BuiltinName[19]) {
  37808. default: break;
  37809. case 'f': // 1 string to match.
  37810. if (memcmp(BuiltinName.data()+20, "vscr", 4))
  37811. break;
  37812. return Intrinsic::ppc_altivec_mfvscr; // "__builtin_altivec_mfvscr"
  37813. case 't': // 1 string to match.
  37814. if (memcmp(BuiltinName.data()+20, "vscr", 4))
  37815. break;
  37816. return Intrinsic::ppc_altivec_mtvscr; // "__builtin_altivec_mtvscr"
  37817. }
  37818. break;
  37819. case 'v': // 22 strings to match.
  37820. switch (BuiltinName[19]) {
  37821. default: break;
  37822. case 'a': // 6 strings to match.
  37823. if (memcmp(BuiltinName.data()+20, "vg", 2))
  37824. break;
  37825. switch (BuiltinName[22]) {
  37826. default: break;
  37827. case 's': // 3 strings to match.
  37828. switch (BuiltinName[23]) {
  37829. default: break;
  37830. case 'b': // 1 string to match.
  37831. return Intrinsic::ppc_altivec_vavgsb; // "__builtin_altivec_vavgsb"
  37832. case 'h': // 1 string to match.
  37833. return Intrinsic::ppc_altivec_vavgsh; // "__builtin_altivec_vavgsh"
  37834. case 'w': // 1 string to match.
  37835. return Intrinsic::ppc_altivec_vavgsw; // "__builtin_altivec_vavgsw"
  37836. }
  37837. break;
  37838. case 'u': // 3 strings to match.
  37839. switch (BuiltinName[23]) {
  37840. default: break;
  37841. case 'b': // 1 string to match.
  37842. return Intrinsic::ppc_altivec_vavgub; // "__builtin_altivec_vavgub"
  37843. case 'h': // 1 string to match.
  37844. return Intrinsic::ppc_altivec_vavguh; // "__builtin_altivec_vavguh"
  37845. case 'w': // 1 string to match.
  37846. return Intrinsic::ppc_altivec_vavguw; // "__builtin_altivec_vavguw"
  37847. }
  37848. break;
  37849. }
  37850. break;
  37851. case 'c': // 2 strings to match.
  37852. if (BuiltinName[20] != 't')
  37853. break;
  37854. switch (BuiltinName[21]) {
  37855. default: break;
  37856. case 's': // 1 string to match.
  37857. if (memcmp(BuiltinName.data()+22, "xs", 2))
  37858. break;
  37859. return Intrinsic::ppc_altivec_vctsxs; // "__builtin_altivec_vctsxs"
  37860. case 'u': // 1 string to match.
  37861. if (memcmp(BuiltinName.data()+22, "xs", 2))
  37862. break;
  37863. return Intrinsic::ppc_altivec_vctuxs; // "__builtin_altivec_vctuxs"
  37864. }
  37865. break;
  37866. case 'm': // 14 strings to match.
  37867. switch (BuiltinName[20]) {
  37868. default: break;
  37869. case 'a': // 7 strings to match.
  37870. if (BuiltinName[21] != 'x')
  37871. break;
  37872. switch (BuiltinName[22]) {
  37873. default: break;
  37874. case 'f': // 1 string to match.
  37875. if (BuiltinName[23] != 'p')
  37876. break;
  37877. return Intrinsic::ppc_altivec_vmaxfp; // "__builtin_altivec_vmaxfp"
  37878. case 's': // 3 strings to match.
  37879. switch (BuiltinName[23]) {
  37880. default: break;
  37881. case 'b': // 1 string to match.
  37882. return Intrinsic::ppc_altivec_vmaxsb; // "__builtin_altivec_vmaxsb"
  37883. case 'h': // 1 string to match.
  37884. return Intrinsic::ppc_altivec_vmaxsh; // "__builtin_altivec_vmaxsh"
  37885. case 'w': // 1 string to match.
  37886. return Intrinsic::ppc_altivec_vmaxsw; // "__builtin_altivec_vmaxsw"
  37887. }
  37888. break;
  37889. case 'u': // 3 strings to match.
  37890. switch (BuiltinName[23]) {
  37891. default: break;
  37892. case 'b': // 1 string to match.
  37893. return Intrinsic::ppc_altivec_vmaxub; // "__builtin_altivec_vmaxub"
  37894. case 'h': // 1 string to match.
  37895. return Intrinsic::ppc_altivec_vmaxuh; // "__builtin_altivec_vmaxuh"
  37896. case 'w': // 1 string to match.
  37897. return Intrinsic::ppc_altivec_vmaxuw; // "__builtin_altivec_vmaxuw"
  37898. }
  37899. break;
  37900. }
  37901. break;
  37902. case 'i': // 7 strings to match.
  37903. if (BuiltinName[21] != 'n')
  37904. break;
  37905. switch (BuiltinName[22]) {
  37906. default: break;
  37907. case 'f': // 1 string to match.
  37908. if (BuiltinName[23] != 'p')
  37909. break;
  37910. return Intrinsic::ppc_altivec_vminfp; // "__builtin_altivec_vminfp"
  37911. case 's': // 3 strings to match.
  37912. switch (BuiltinName[23]) {
  37913. default: break;
  37914. case 'b': // 1 string to match.
  37915. return Intrinsic::ppc_altivec_vminsb; // "__builtin_altivec_vminsb"
  37916. case 'h': // 1 string to match.
  37917. return Intrinsic::ppc_altivec_vminsh; // "__builtin_altivec_vminsh"
  37918. case 'w': // 1 string to match.
  37919. return Intrinsic::ppc_altivec_vminsw; // "__builtin_altivec_vminsw"
  37920. }
  37921. break;
  37922. case 'u': // 3 strings to match.
  37923. switch (BuiltinName[23]) {
  37924. default: break;
  37925. case 'b': // 1 string to match.
  37926. return Intrinsic::ppc_altivec_vminub; // "__builtin_altivec_vminub"
  37927. case 'h': // 1 string to match.
  37928. return Intrinsic::ppc_altivec_vminuh; // "__builtin_altivec_vminuh"
  37929. case 'w': // 1 string to match.
  37930. return Intrinsic::ppc_altivec_vminuw; // "__builtin_altivec_vminuw"
  37931. }
  37932. break;
  37933. }
  37934. break;
  37935. }
  37936. break;
  37937. }
  37938. break;
  37939. }
  37940. break;
  37941. case 25: // 38 strings to match.
  37942. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  37943. break;
  37944. switch (BuiltinName[19]) {
  37945. default: break;
  37946. case 'a': // 7 strings to match.
  37947. if (memcmp(BuiltinName.data()+20, "dd", 2))
  37948. break;
  37949. switch (BuiltinName[22]) {
  37950. default: break;
  37951. case 'c': // 1 string to match.
  37952. if (memcmp(BuiltinName.data()+23, "uw", 2))
  37953. break;
  37954. return Intrinsic::ppc_altivec_vaddcuw; // "__builtin_altivec_vaddcuw"
  37955. case 's': // 3 strings to match.
  37956. switch (BuiltinName[23]) {
  37957. default: break;
  37958. case 'b': // 1 string to match.
  37959. if (BuiltinName[24] != 's')
  37960. break;
  37961. return Intrinsic::ppc_altivec_vaddsbs; // "__builtin_altivec_vaddsbs"
  37962. case 'h': // 1 string to match.
  37963. if (BuiltinName[24] != 's')
  37964. break;
  37965. return Intrinsic::ppc_altivec_vaddshs; // "__builtin_altivec_vaddshs"
  37966. case 'w': // 1 string to match.
  37967. if (BuiltinName[24] != 's')
  37968. break;
  37969. return Intrinsic::ppc_altivec_vaddsws; // "__builtin_altivec_vaddsws"
  37970. }
  37971. break;
  37972. case 'u': // 3 strings to match.
  37973. switch (BuiltinName[23]) {
  37974. default: break;
  37975. case 'b': // 1 string to match.
  37976. if (BuiltinName[24] != 's')
  37977. break;
  37978. return Intrinsic::ppc_altivec_vaddubs; // "__builtin_altivec_vaddubs"
  37979. case 'h': // 1 string to match.
  37980. if (BuiltinName[24] != 's')
  37981. break;
  37982. return Intrinsic::ppc_altivec_vadduhs; // "__builtin_altivec_vadduhs"
  37983. case 'w': // 1 string to match.
  37984. if (BuiltinName[24] != 's')
  37985. break;
  37986. return Intrinsic::ppc_altivec_vadduws; // "__builtin_altivec_vadduws"
  37987. }
  37988. break;
  37989. }
  37990. break;
  37991. case 'c': // 1 string to match.
  37992. if (memcmp(BuiltinName.data()+20, "mpbfp", 5))
  37993. break;
  37994. return Intrinsic::ppc_altivec_vcmpbfp; // "__builtin_altivec_vcmpbfp"
  37995. case 'l': // 1 string to match.
  37996. if (memcmp(BuiltinName.data()+20, "ogefp", 5))
  37997. break;
  37998. return Intrinsic::ppc_altivec_vlogefp; // "__builtin_altivec_vlogefp"
  37999. case 'm': // 9 strings to match.
  38000. switch (BuiltinName[20]) {
  38001. default: break;
  38002. case 'a': // 1 string to match.
  38003. if (memcmp(BuiltinName.data()+21, "ddfp", 4))
  38004. break;
  38005. return Intrinsic::ppc_altivec_vmaddfp; // "__builtin_altivec_vmaddfp"
  38006. case 'u': // 8 strings to match.
  38007. if (BuiltinName[21] != 'l')
  38008. break;
  38009. switch (BuiltinName[22]) {
  38010. default: break;
  38011. case 'e': // 4 strings to match.
  38012. switch (BuiltinName[23]) {
  38013. default: break;
  38014. case 's': // 2 strings to match.
  38015. switch (BuiltinName[24]) {
  38016. default: break;
  38017. case 'b': // 1 string to match.
  38018. return Intrinsic::ppc_altivec_vmulesb; // "__builtin_altivec_vmulesb"
  38019. case 'h': // 1 string to match.
  38020. return Intrinsic::ppc_altivec_vmulesh; // "__builtin_altivec_vmulesh"
  38021. }
  38022. break;
  38023. case 'u': // 2 strings to match.
  38024. switch (BuiltinName[24]) {
  38025. default: break;
  38026. case 'b': // 1 string to match.
  38027. return Intrinsic::ppc_altivec_vmuleub; // "__builtin_altivec_vmuleub"
  38028. case 'h': // 1 string to match.
  38029. return Intrinsic::ppc_altivec_vmuleuh; // "__builtin_altivec_vmuleuh"
  38030. }
  38031. break;
  38032. }
  38033. break;
  38034. case 'o': // 4 strings to match.
  38035. switch (BuiltinName[23]) {
  38036. default: break;
  38037. case 's': // 2 strings to match.
  38038. switch (BuiltinName[24]) {
  38039. default: break;
  38040. case 'b': // 1 string to match.
  38041. return Intrinsic::ppc_altivec_vmulosb; // "__builtin_altivec_vmulosb"
  38042. case 'h': // 1 string to match.
  38043. return Intrinsic::ppc_altivec_vmulosh; // "__builtin_altivec_vmulosh"
  38044. }
  38045. break;
  38046. case 'u': // 2 strings to match.
  38047. switch (BuiltinName[24]) {
  38048. default: break;
  38049. case 'b': // 1 string to match.
  38050. return Intrinsic::ppc_altivec_vmuloub; // "__builtin_altivec_vmuloub"
  38051. case 'h': // 1 string to match.
  38052. return Intrinsic::ppc_altivec_vmulouh; // "__builtin_altivec_vmulouh"
  38053. }
  38054. break;
  38055. }
  38056. break;
  38057. }
  38058. break;
  38059. }
  38060. break;
  38061. case 'p': // 6 strings to match.
  38062. if (BuiltinName[20] != 'k')
  38063. break;
  38064. switch (BuiltinName[21]) {
  38065. default: break;
  38066. case 's': // 4 strings to match.
  38067. switch (BuiltinName[22]) {
  38068. default: break;
  38069. case 'h': // 2 strings to match.
  38070. switch (BuiltinName[23]) {
  38071. default: break;
  38072. case 's': // 1 string to match.
  38073. if (BuiltinName[24] != 's')
  38074. break;
  38075. return Intrinsic::ppc_altivec_vpkshss; // "__builtin_altivec_vpkshss"
  38076. case 'u': // 1 string to match.
  38077. if (BuiltinName[24] != 's')
  38078. break;
  38079. return Intrinsic::ppc_altivec_vpkshus; // "__builtin_altivec_vpkshus"
  38080. }
  38081. break;
  38082. case 'w': // 2 strings to match.
  38083. switch (BuiltinName[23]) {
  38084. default: break;
  38085. case 's': // 1 string to match.
  38086. if (BuiltinName[24] != 's')
  38087. break;
  38088. return Intrinsic::ppc_altivec_vpkswss; // "__builtin_altivec_vpkswss"
  38089. case 'u': // 1 string to match.
  38090. if (BuiltinName[24] != 's')
  38091. break;
  38092. return Intrinsic::ppc_altivec_vpkswus; // "__builtin_altivec_vpkswus"
  38093. }
  38094. break;
  38095. }
  38096. break;
  38097. case 'u': // 2 strings to match.
  38098. switch (BuiltinName[22]) {
  38099. default: break;
  38100. case 'h': // 1 string to match.
  38101. if (memcmp(BuiltinName.data()+23, "us", 2))
  38102. break;
  38103. return Intrinsic::ppc_altivec_vpkuhus; // "__builtin_altivec_vpkuhus"
  38104. case 'w': // 1 string to match.
  38105. if (memcmp(BuiltinName.data()+23, "us", 2))
  38106. break;
  38107. return Intrinsic::ppc_altivec_vpkuwus; // "__builtin_altivec_vpkuwus"
  38108. }
  38109. break;
  38110. }
  38111. break;
  38112. case 's': // 8 strings to match.
  38113. if (BuiltinName[20] != 'u')
  38114. break;
  38115. switch (BuiltinName[21]) {
  38116. default: break;
  38117. case 'b': // 7 strings to match.
  38118. switch (BuiltinName[22]) {
  38119. default: break;
  38120. case 'c': // 1 string to match.
  38121. if (memcmp(BuiltinName.data()+23, "uw", 2))
  38122. break;
  38123. return Intrinsic::ppc_altivec_vsubcuw; // "__builtin_altivec_vsubcuw"
  38124. case 's': // 3 strings to match.
  38125. switch (BuiltinName[23]) {
  38126. default: break;
  38127. case 'b': // 1 string to match.
  38128. if (BuiltinName[24] != 's')
  38129. break;
  38130. return Intrinsic::ppc_altivec_vsubsbs; // "__builtin_altivec_vsubsbs"
  38131. case 'h': // 1 string to match.
  38132. if (BuiltinName[24] != 's')
  38133. break;
  38134. return Intrinsic::ppc_altivec_vsubshs; // "__builtin_altivec_vsubshs"
  38135. case 'w': // 1 string to match.
  38136. if (BuiltinName[24] != 's')
  38137. break;
  38138. return Intrinsic::ppc_altivec_vsubsws; // "__builtin_altivec_vsubsws"
  38139. }
  38140. break;
  38141. case 'u': // 3 strings to match.
  38142. switch (BuiltinName[23]) {
  38143. default: break;
  38144. case 'b': // 1 string to match.
  38145. if (BuiltinName[24] != 's')
  38146. break;
  38147. return Intrinsic::ppc_altivec_vsububs; // "__builtin_altivec_vsububs"
  38148. case 'h': // 1 string to match.
  38149. if (BuiltinName[24] != 's')
  38150. break;
  38151. return Intrinsic::ppc_altivec_vsubuhs; // "__builtin_altivec_vsubuhs"
  38152. case 'w': // 1 string to match.
  38153. if (BuiltinName[24] != 's')
  38154. break;
  38155. return Intrinsic::ppc_altivec_vsubuws; // "__builtin_altivec_vsubuws"
  38156. }
  38157. break;
  38158. }
  38159. break;
  38160. case 'm': // 1 string to match.
  38161. if (memcmp(BuiltinName.data()+22, "sws", 3))
  38162. break;
  38163. return Intrinsic::ppc_altivec_vsumsws; // "__builtin_altivec_vsumsws"
  38164. }
  38165. break;
  38166. case 'u': // 6 strings to match.
  38167. if (memcmp(BuiltinName.data()+20, "pk", 2))
  38168. break;
  38169. switch (BuiltinName[22]) {
  38170. default: break;
  38171. case 'h': // 3 strings to match.
  38172. switch (BuiltinName[23]) {
  38173. default: break;
  38174. case 'p': // 1 string to match.
  38175. if (BuiltinName[24] != 'x')
  38176. break;
  38177. return Intrinsic::ppc_altivec_vupkhpx; // "__builtin_altivec_vupkhpx"
  38178. case 's': // 2 strings to match.
  38179. switch (BuiltinName[24]) {
  38180. default: break;
  38181. case 'b': // 1 string to match.
  38182. return Intrinsic::ppc_altivec_vupkhsb; // "__builtin_altivec_vupkhsb"
  38183. case 'h': // 1 string to match.
  38184. return Intrinsic::ppc_altivec_vupkhsh; // "__builtin_altivec_vupkhsh"
  38185. }
  38186. break;
  38187. }
  38188. break;
  38189. case 'l': // 3 strings to match.
  38190. switch (BuiltinName[23]) {
  38191. default: break;
  38192. case 'p': // 1 string to match.
  38193. if (BuiltinName[24] != 'x')
  38194. break;
  38195. return Intrinsic::ppc_altivec_vupklpx; // "__builtin_altivec_vupklpx"
  38196. case 's': // 2 strings to match.
  38197. switch (BuiltinName[24]) {
  38198. default: break;
  38199. case 'b': // 1 string to match.
  38200. return Intrinsic::ppc_altivec_vupklsb; // "__builtin_altivec_vupklsb"
  38201. case 'h': // 1 string to match.
  38202. return Intrinsic::ppc_altivec_vupklsh; // "__builtin_altivec_vupklsh"
  38203. }
  38204. break;
  38205. }
  38206. break;
  38207. }
  38208. break;
  38209. }
  38210. break;
  38211. case 26: // 25 strings to match.
  38212. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38213. break;
  38214. switch (BuiltinName[19]) {
  38215. default: break;
  38216. case 'c': // 12 strings to match.
  38217. if (memcmp(BuiltinName.data()+20, "mp", 2))
  38218. break;
  38219. switch (BuiltinName[22]) {
  38220. default: break;
  38221. case 'e': // 4 strings to match.
  38222. if (BuiltinName[23] != 'q')
  38223. break;
  38224. switch (BuiltinName[24]) {
  38225. default: break;
  38226. case 'f': // 1 string to match.
  38227. if (BuiltinName[25] != 'p')
  38228. break;
  38229. return Intrinsic::ppc_altivec_vcmpeqfp; // "__builtin_altivec_vcmpeqfp"
  38230. case 'u': // 3 strings to match.
  38231. switch (BuiltinName[25]) {
  38232. default: break;
  38233. case 'b': // 1 string to match.
  38234. return Intrinsic::ppc_altivec_vcmpequb; // "__builtin_altivec_vcmpequb"
  38235. case 'h': // 1 string to match.
  38236. return Intrinsic::ppc_altivec_vcmpequh; // "__builtin_altivec_vcmpequh"
  38237. case 'w': // 1 string to match.
  38238. return Intrinsic::ppc_altivec_vcmpequw; // "__builtin_altivec_vcmpequw"
  38239. }
  38240. break;
  38241. }
  38242. break;
  38243. case 'g': // 8 strings to match.
  38244. switch (BuiltinName[23]) {
  38245. default: break;
  38246. case 'e': // 1 string to match.
  38247. if (memcmp(BuiltinName.data()+24, "fp", 2))
  38248. break;
  38249. return Intrinsic::ppc_altivec_vcmpgefp; // "__builtin_altivec_vcmpgefp"
  38250. case 't': // 7 strings to match.
  38251. switch (BuiltinName[24]) {
  38252. default: break;
  38253. case 'f': // 1 string to match.
  38254. if (BuiltinName[25] != 'p')
  38255. break;
  38256. return Intrinsic::ppc_altivec_vcmpgtfp; // "__builtin_altivec_vcmpgtfp"
  38257. case 's': // 3 strings to match.
  38258. switch (BuiltinName[25]) {
  38259. default: break;
  38260. case 'b': // 1 string to match.
  38261. return Intrinsic::ppc_altivec_vcmpgtsb; // "__builtin_altivec_vcmpgtsb"
  38262. case 'h': // 1 string to match.
  38263. return Intrinsic::ppc_altivec_vcmpgtsh; // "__builtin_altivec_vcmpgtsh"
  38264. case 'w': // 1 string to match.
  38265. return Intrinsic::ppc_altivec_vcmpgtsw; // "__builtin_altivec_vcmpgtsw"
  38266. }
  38267. break;
  38268. case 'u': // 3 strings to match.
  38269. switch (BuiltinName[25]) {
  38270. default: break;
  38271. case 'b': // 1 string to match.
  38272. return Intrinsic::ppc_altivec_vcmpgtub; // "__builtin_altivec_vcmpgtub"
  38273. case 'h': // 1 string to match.
  38274. return Intrinsic::ppc_altivec_vcmpgtuh; // "__builtin_altivec_vcmpgtuh"
  38275. case 'w': // 1 string to match.
  38276. return Intrinsic::ppc_altivec_vcmpgtuw; // "__builtin_altivec_vcmpgtuw"
  38277. }
  38278. break;
  38279. }
  38280. break;
  38281. }
  38282. break;
  38283. }
  38284. break;
  38285. case 'e': // 1 string to match.
  38286. if (memcmp(BuiltinName.data()+20, "xptefp", 6))
  38287. break;
  38288. return Intrinsic::ppc_altivec_vexptefp; // "__builtin_altivec_vexptefp"
  38289. case 'm': // 6 strings to match.
  38290. if (memcmp(BuiltinName.data()+20, "sum", 3))
  38291. break;
  38292. switch (BuiltinName[23]) {
  38293. default: break;
  38294. case 'm': // 1 string to match.
  38295. if (memcmp(BuiltinName.data()+24, "bm", 2))
  38296. break;
  38297. return Intrinsic::ppc_altivec_vmsummbm; // "__builtin_altivec_vmsummbm"
  38298. case 's': // 2 strings to match.
  38299. if (BuiltinName[24] != 'h')
  38300. break;
  38301. switch (BuiltinName[25]) {
  38302. default: break;
  38303. case 'm': // 1 string to match.
  38304. return Intrinsic::ppc_altivec_vmsumshm; // "__builtin_altivec_vmsumshm"
  38305. case 's': // 1 string to match.
  38306. return Intrinsic::ppc_altivec_vmsumshs; // "__builtin_altivec_vmsumshs"
  38307. }
  38308. break;
  38309. case 'u': // 3 strings to match.
  38310. switch (BuiltinName[24]) {
  38311. default: break;
  38312. case 'b': // 1 string to match.
  38313. if (BuiltinName[25] != 'm')
  38314. break;
  38315. return Intrinsic::ppc_altivec_vmsumubm; // "__builtin_altivec_vmsumubm"
  38316. case 'h': // 2 strings to match.
  38317. switch (BuiltinName[25]) {
  38318. default: break;
  38319. case 'm': // 1 string to match.
  38320. return Intrinsic::ppc_altivec_vmsumuhm; // "__builtin_altivec_vmsumuhm"
  38321. case 's': // 1 string to match.
  38322. return Intrinsic::ppc_altivec_vmsumuhs; // "__builtin_altivec_vmsumuhs"
  38323. }
  38324. break;
  38325. }
  38326. break;
  38327. }
  38328. break;
  38329. case 'n': // 1 string to match.
  38330. if (memcmp(BuiltinName.data()+20, "msubfp", 6))
  38331. break;
  38332. return Intrinsic::ppc_altivec_vnmsubfp; // "__builtin_altivec_vnmsubfp"
  38333. case 's': // 5 strings to match.
  38334. switch (BuiltinName[20]) {
  38335. default: break;
  38336. case 'e': // 1 string to match.
  38337. if (memcmp(BuiltinName.data()+21, "l_4si", 5))
  38338. break;
  38339. return Intrinsic::ppc_altivec_vsel; // "__builtin_altivec_vsel_4si"
  38340. case 'u': // 4 strings to match.
  38341. if (BuiltinName[21] != 'm')
  38342. break;
  38343. switch (BuiltinName[22]) {
  38344. default: break;
  38345. case '2': // 1 string to match.
  38346. if (memcmp(BuiltinName.data()+23, "sws", 3))
  38347. break;
  38348. return Intrinsic::ppc_altivec_vsum2sws; // "__builtin_altivec_vsum2sws"
  38349. case '4': // 3 strings to match.
  38350. switch (BuiltinName[23]) {
  38351. default: break;
  38352. case 's': // 2 strings to match.
  38353. switch (BuiltinName[24]) {
  38354. default: break;
  38355. case 'b': // 1 string to match.
  38356. if (BuiltinName[25] != 's')
  38357. break;
  38358. return Intrinsic::ppc_altivec_vsum4sbs; // "__builtin_altivec_vsum4sbs"
  38359. case 'h': // 1 string to match.
  38360. if (BuiltinName[25] != 's')
  38361. break;
  38362. return Intrinsic::ppc_altivec_vsum4shs; // "__builtin_altivec_vsum4shs"
  38363. }
  38364. break;
  38365. case 'u': // 1 string to match.
  38366. if (memcmp(BuiltinName.data()+24, "bs", 2))
  38367. break;
  38368. return Intrinsic::ppc_altivec_vsum4ubs; // "__builtin_altivec_vsum4ubs"
  38369. }
  38370. break;
  38371. }
  38372. break;
  38373. }
  38374. break;
  38375. }
  38376. break;
  38377. case 27: // 5 strings to match.
  38378. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38379. break;
  38380. switch (BuiltinName[19]) {
  38381. default: break;
  38382. case 'c': // 1 string to match.
  38383. if (memcmp(BuiltinName.data()+20, "mpbfp_p", 7))
  38384. break;
  38385. return Intrinsic::ppc_altivec_vcmpbfp_p; // "__builtin_altivec_vcmpbfp_p"
  38386. case 'm': // 2 strings to match.
  38387. switch (BuiltinName[20]) {
  38388. default: break;
  38389. case 'h': // 1 string to match.
  38390. if (memcmp(BuiltinName.data()+21, "addshs", 6))
  38391. break;
  38392. return Intrinsic::ppc_altivec_vmhaddshs; // "__builtin_altivec_vmhaddshs"
  38393. case 'l': // 1 string to match.
  38394. if (memcmp(BuiltinName.data()+21, "adduhm", 6))
  38395. break;
  38396. return Intrinsic::ppc_altivec_vmladduhm; // "__builtin_altivec_vmladduhm"
  38397. }
  38398. break;
  38399. case 'p': // 1 string to match.
  38400. if (memcmp(BuiltinName.data()+20, "erm_4si", 7))
  38401. break;
  38402. return Intrinsic::ppc_altivec_vperm; // "__builtin_altivec_vperm_4si"
  38403. case 'r': // 1 string to match.
  38404. if (memcmp(BuiltinName.data()+20, "sqrtefp", 7))
  38405. break;
  38406. return Intrinsic::ppc_altivec_vrsqrtefp; // "__builtin_altivec_vrsqrtefp"
  38407. }
  38408. break;
  38409. case 28: // 13 strings to match.
  38410. if (memcmp(BuiltinName.data()+0, "__builtin_altivec_v", 19))
  38411. break;
  38412. switch (BuiltinName[19]) {
  38413. default: break;
  38414. case 'c': // 12 strings to match.
  38415. if (memcmp(BuiltinName.data()+20, "mp", 2))
  38416. break;
  38417. switch (BuiltinName[22]) {
  38418. default: break;
  38419. case 'e': // 4 strings to match.
  38420. if (BuiltinName[23] != 'q')
  38421. break;
  38422. switch (BuiltinName[24]) {
  38423. default: break;
  38424. case 'f': // 1 string to match.
  38425. if (memcmp(BuiltinName.data()+25, "p_p", 3))
  38426. break;
  38427. return Intrinsic::ppc_altivec_vcmpeqfp_p; // "__builtin_altivec_vcmpeqfp_p"
  38428. case 'u': // 3 strings to match.
  38429. switch (BuiltinName[25]) {
  38430. default: break;
  38431. case 'b': // 1 string to match.
  38432. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38433. break;
  38434. return Intrinsic::ppc_altivec_vcmpequb_p; // "__builtin_altivec_vcmpequb_p"
  38435. case 'h': // 1 string to match.
  38436. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38437. break;
  38438. return Intrinsic::ppc_altivec_vcmpequh_p; // "__builtin_altivec_vcmpequh_p"
  38439. case 'w': // 1 string to match.
  38440. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38441. break;
  38442. return Intrinsic::ppc_altivec_vcmpequw_p; // "__builtin_altivec_vcmpequw_p"
  38443. }
  38444. break;
  38445. }
  38446. break;
  38447. case 'g': // 8 strings to match.
  38448. switch (BuiltinName[23]) {
  38449. default: break;
  38450. case 'e': // 1 string to match.
  38451. if (memcmp(BuiltinName.data()+24, "fp_p", 4))
  38452. break;
  38453. return Intrinsic::ppc_altivec_vcmpgefp_p; // "__builtin_altivec_vcmpgefp_p"
  38454. case 't': // 7 strings to match.
  38455. switch (BuiltinName[24]) {
  38456. default: break;
  38457. case 'f': // 1 string to match.
  38458. if (memcmp(BuiltinName.data()+25, "p_p", 3))
  38459. break;
  38460. return Intrinsic::ppc_altivec_vcmpgtfp_p; // "__builtin_altivec_vcmpgtfp_p"
  38461. case 's': // 3 strings to match.
  38462. switch (BuiltinName[25]) {
  38463. default: break;
  38464. case 'b': // 1 string to match.
  38465. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38466. break;
  38467. return Intrinsic::ppc_altivec_vcmpgtsb_p; // "__builtin_altivec_vcmpgtsb_p"
  38468. case 'h': // 1 string to match.
  38469. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38470. break;
  38471. return Intrinsic::ppc_altivec_vcmpgtsh_p; // "__builtin_altivec_vcmpgtsh_p"
  38472. case 'w': // 1 string to match.
  38473. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38474. break;
  38475. return Intrinsic::ppc_altivec_vcmpgtsw_p; // "__builtin_altivec_vcmpgtsw_p"
  38476. }
  38477. break;
  38478. case 'u': // 3 strings to match.
  38479. switch (BuiltinName[25]) {
  38480. default: break;
  38481. case 'b': // 1 string to match.
  38482. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38483. break;
  38484. return Intrinsic::ppc_altivec_vcmpgtub_p; // "__builtin_altivec_vcmpgtub_p"
  38485. case 'h': // 1 string to match.
  38486. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38487. break;
  38488. return Intrinsic::ppc_altivec_vcmpgtuh_p; // "__builtin_altivec_vcmpgtuh_p"
  38489. case 'w': // 1 string to match.
  38490. if (memcmp(BuiltinName.data()+26, "_p", 2))
  38491. break;
  38492. return Intrinsic::ppc_altivec_vcmpgtuw_p; // "__builtin_altivec_vcmpgtuw_p"
  38493. }
  38494. break;
  38495. }
  38496. break;
  38497. }
  38498. break;
  38499. }
  38500. break;
  38501. case 'm': // 1 string to match.
  38502. if (memcmp(BuiltinName.data()+20, "hraddshs", 8))
  38503. break;
  38504. return Intrinsic::ppc_altivec_vmhraddshs; // "__builtin_altivec_vmhraddshs"
  38505. }
  38506. break;
  38507. }
  38508. }
  38509. if (TargetPrefix == "r600") {
  38510. switch (BuiltinName.size()) {
  38511. default: break;
  38512. case 26: // 3 strings to match.
  38513. if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_tgid_", 25))
  38514. break;
  38515. switch (BuiltinName[25]) {
  38516. default: break;
  38517. case 'x': // 1 string to match.
  38518. return Intrinsic::r600_read_tgid_x; // "__builtin_r600_read_tgid_x"
  38519. case 'y': // 1 string to match.
  38520. return Intrinsic::r600_read_tgid_y; // "__builtin_r600_read_tgid_y"
  38521. case 'z': // 1 string to match.
  38522. return Intrinsic::r600_read_tgid_z; // "__builtin_r600_read_tgid_z"
  38523. }
  38524. break;
  38525. case 27: // 3 strings to match.
  38526. if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_tidig_", 26))
  38527. break;
  38528. switch (BuiltinName[26]) {
  38529. default: break;
  38530. case 'x': // 1 string to match.
  38531. return Intrinsic::r600_read_tidig_x; // "__builtin_r600_read_tidig_x"
  38532. case 'y': // 1 string to match.
  38533. return Intrinsic::r600_read_tidig_y; // "__builtin_r600_read_tidig_y"
  38534. case 'z': // 1 string to match.
  38535. return Intrinsic::r600_read_tidig_z; // "__builtin_r600_read_tidig_z"
  38536. }
  38537. break;
  38538. case 29: // 3 strings to match.
  38539. if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_ngroups_", 28))
  38540. break;
  38541. switch (BuiltinName[28]) {
  38542. default: break;
  38543. case 'x': // 1 string to match.
  38544. return Intrinsic::r600_read_ngroups_x; // "__builtin_r600_read_ngroups_x"
  38545. case 'y': // 1 string to match.
  38546. return Intrinsic::r600_read_ngroups_y; // "__builtin_r600_read_ngroups_y"
  38547. case 'z': // 1 string to match.
  38548. return Intrinsic::r600_read_ngroups_z; // "__builtin_r600_read_ngroups_z"
  38549. }
  38550. break;
  38551. case 32: // 3 strings to match.
  38552. if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_local_size_", 31))
  38553. break;
  38554. switch (BuiltinName[31]) {
  38555. default: break;
  38556. case 'x': // 1 string to match.
  38557. return Intrinsic::r600_read_local_size_x; // "__builtin_r600_read_local_size_x"
  38558. case 'y': // 1 string to match.
  38559. return Intrinsic::r600_read_local_size_y; // "__builtin_r600_read_local_size_y"
  38560. case 'z': // 1 string to match.
  38561. return Intrinsic::r600_read_local_size_z; // "__builtin_r600_read_local_size_z"
  38562. }
  38563. break;
  38564. case 33: // 3 strings to match.
  38565. if (memcmp(BuiltinName.data()+0, "__builtin_r600_read_global_size_", 32))
  38566. break;
  38567. switch (BuiltinName[32]) {
  38568. default: break;
  38569. case 'x': // 1 string to match.
  38570. return Intrinsic::r600_read_global_size_x; // "__builtin_r600_read_global_size_x"
  38571. case 'y': // 1 string to match.
  38572. return Intrinsic::r600_read_global_size_y; // "__builtin_r600_read_global_size_y"
  38573. case 'z': // 1 string to match.
  38574. return Intrinsic::r600_read_global_size_z; // "__builtin_r600_read_global_size_z"
  38575. }
  38576. break;
  38577. }
  38578. }
  38579. if (TargetPrefix == "x86") {
  38580. switch (BuiltinName.size()) {
  38581. default: break;
  38582. case 18: // 1 string to match.
  38583. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_por", 18))
  38584. break;
  38585. return Intrinsic::x86_mmx_por; // "__builtin_ia32_por"
  38586. case 19: // 6 strings to match.
  38587. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  38588. break;
  38589. switch (BuiltinName[15]) {
  38590. default: break;
  38591. case 'd': // 2 strings to match.
  38592. if (memcmp(BuiltinName.data()+16, "pp", 2))
  38593. break;
  38594. switch (BuiltinName[18]) {
  38595. default: break;
  38596. case 'd': // 1 string to match.
  38597. return Intrinsic::x86_sse41_dppd; // "__builtin_ia32_dppd"
  38598. case 's': // 1 string to match.
  38599. return Intrinsic::x86_sse41_dpps; // "__builtin_ia32_dpps"
  38600. }
  38601. break;
  38602. case 'e': // 1 string to match.
  38603. if (memcmp(BuiltinName.data()+16, "mms", 3))
  38604. break;
  38605. return Intrinsic::x86_mmx_emms; // "__builtin_ia32_emms"
  38606. case 'p': // 2 strings to match.
  38607. switch (BuiltinName[16]) {
  38608. default: break;
  38609. case 'a': // 1 string to match.
  38610. if (memcmp(BuiltinName.data()+17, "nd", 2))
  38611. break;
  38612. return Intrinsic::x86_mmx_pand; // "__builtin_ia32_pand"
  38613. case 'x': // 1 string to match.
  38614. if (memcmp(BuiltinName.data()+17, "or", 2))
  38615. break;
  38616. return Intrinsic::x86_mmx_pxor; // "__builtin_ia32_pxor"
  38617. }
  38618. break;
  38619. case 'x': // 1 string to match.
  38620. if (memcmp(BuiltinName.data()+16, "end", 3))
  38621. break;
  38622. return Intrinsic::x86_xend; // "__builtin_ia32_xend"
  38623. }
  38624. break;
  38625. case 20: // 60 strings to match.
  38626. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  38627. break;
  38628. switch (BuiltinName[15]) {
  38629. default: break;
  38630. case 'a': // 2 strings to match.
  38631. if (memcmp(BuiltinName.data()+16, "dds", 3))
  38632. break;
  38633. switch (BuiltinName[19]) {
  38634. default: break;
  38635. case 'd': // 1 string to match.
  38636. return Intrinsic::x86_sse2_add_sd; // "__builtin_ia32_addsd"
  38637. case 's': // 1 string to match.
  38638. return Intrinsic::x86_sse_add_ss; // "__builtin_ia32_addss"
  38639. }
  38640. break;
  38641. case 'c': // 4 strings to match.
  38642. if (memcmp(BuiltinName.data()+16, "mp", 2))
  38643. break;
  38644. switch (BuiltinName[18]) {
  38645. default: break;
  38646. case 'p': // 2 strings to match.
  38647. switch (BuiltinName[19]) {
  38648. default: break;
  38649. case 'd': // 1 string to match.
  38650. return Intrinsic::x86_sse2_cmp_pd; // "__builtin_ia32_cmppd"
  38651. case 's': // 1 string to match.
  38652. return Intrinsic::x86_sse_cmp_ps; // "__builtin_ia32_cmpps"
  38653. }
  38654. break;
  38655. case 's': // 2 strings to match.
  38656. switch (BuiltinName[19]) {
  38657. default: break;
  38658. case 'd': // 1 string to match.
  38659. return Intrinsic::x86_sse2_cmp_sd; // "__builtin_ia32_cmpsd"
  38660. case 's': // 1 string to match.
  38661. return Intrinsic::x86_sse_cmp_ss; // "__builtin_ia32_cmpss"
  38662. }
  38663. break;
  38664. }
  38665. break;
  38666. case 'd': // 2 strings to match.
  38667. if (memcmp(BuiltinName.data()+16, "ivs", 3))
  38668. break;
  38669. switch (BuiltinName[19]) {
  38670. default: break;
  38671. case 'd': // 1 string to match.
  38672. return Intrinsic::x86_sse2_div_sd; // "__builtin_ia32_divsd"
  38673. case 's': // 1 string to match.
  38674. return Intrinsic::x86_sse_div_ss; // "__builtin_ia32_divss"
  38675. }
  38676. break;
  38677. case 'e': // 1 string to match.
  38678. if (memcmp(BuiltinName.data()+16, "xtrq", 4))
  38679. break;
  38680. return Intrinsic::x86_sse4a_extrq; // "__builtin_ia32_extrq"
  38681. case 'f': // 1 string to match.
  38682. if (memcmp(BuiltinName.data()+16, "emms", 4))
  38683. break;
  38684. return Intrinsic::x86_mmx_femms; // "__builtin_ia32_femms"
  38685. case 'l': // 1 string to match.
  38686. if (memcmp(BuiltinName.data()+16, "ddqu", 4))
  38687. break;
  38688. return Intrinsic::x86_sse3_ldu_dq; // "__builtin_ia32_lddqu"
  38689. case 'm': // 11 strings to match.
  38690. switch (BuiltinName[16]) {
  38691. default: break;
  38692. case 'a': // 4 strings to match.
  38693. if (BuiltinName[17] != 'x')
  38694. break;
  38695. switch (BuiltinName[18]) {
  38696. default: break;
  38697. case 'p': // 2 strings to match.
  38698. switch (BuiltinName[19]) {
  38699. default: break;
  38700. case 'd': // 1 string to match.
  38701. return Intrinsic::x86_sse2_max_pd; // "__builtin_ia32_maxpd"
  38702. case 's': // 1 string to match.
  38703. return Intrinsic::x86_sse_max_ps; // "__builtin_ia32_maxps"
  38704. }
  38705. break;
  38706. case 's': // 2 strings to match.
  38707. switch (BuiltinName[19]) {
  38708. default: break;
  38709. case 'd': // 1 string to match.
  38710. return Intrinsic::x86_sse2_max_sd; // "__builtin_ia32_maxsd"
  38711. case 's': // 1 string to match.
  38712. return Intrinsic::x86_sse_max_ss; // "__builtin_ia32_maxss"
  38713. }
  38714. break;
  38715. }
  38716. break;
  38717. case 'i': // 4 strings to match.
  38718. if (BuiltinName[17] != 'n')
  38719. break;
  38720. switch (BuiltinName[18]) {
  38721. default: break;
  38722. case 'p': // 2 strings to match.
  38723. switch (BuiltinName[19]) {
  38724. default: break;
  38725. case 'd': // 1 string to match.
  38726. return Intrinsic::x86_sse2_min_pd; // "__builtin_ia32_minpd"
  38727. case 's': // 1 string to match.
  38728. return Intrinsic::x86_sse_min_ps; // "__builtin_ia32_minps"
  38729. }
  38730. break;
  38731. case 's': // 2 strings to match.
  38732. switch (BuiltinName[19]) {
  38733. default: break;
  38734. case 'd': // 1 string to match.
  38735. return Intrinsic::x86_sse2_min_sd; // "__builtin_ia32_minsd"
  38736. case 's': // 1 string to match.
  38737. return Intrinsic::x86_sse_min_ss; // "__builtin_ia32_minss"
  38738. }
  38739. break;
  38740. }
  38741. break;
  38742. case 'u': // 2 strings to match.
  38743. if (memcmp(BuiltinName.data()+17, "ls", 2))
  38744. break;
  38745. switch (BuiltinName[19]) {
  38746. default: break;
  38747. case 'd': // 1 string to match.
  38748. return Intrinsic::x86_sse2_mul_sd; // "__builtin_ia32_mulsd"
  38749. case 's': // 1 string to match.
  38750. return Intrinsic::x86_sse_mul_ss; // "__builtin_ia32_mulss"
  38751. }
  38752. break;
  38753. case 'w': // 1 string to match.
  38754. if (memcmp(BuiltinName.data()+17, "ait", 3))
  38755. break;
  38756. return Intrinsic::x86_sse3_mwait; // "__builtin_ia32_mwait"
  38757. }
  38758. break;
  38759. case 'p': // 33 strings to match.
  38760. switch (BuiltinName[16]) {
  38761. default: break;
  38762. case 'a': // 10 strings to match.
  38763. switch (BuiltinName[17]) {
  38764. default: break;
  38765. case 'b': // 3 strings to match.
  38766. if (BuiltinName[18] != 's')
  38767. break;
  38768. switch (BuiltinName[19]) {
  38769. default: break;
  38770. case 'b': // 1 string to match.
  38771. return Intrinsic::x86_ssse3_pabs_b; // "__builtin_ia32_pabsb"
  38772. case 'd': // 1 string to match.
  38773. return Intrinsic::x86_ssse3_pabs_d; // "__builtin_ia32_pabsd"
  38774. case 'w': // 1 string to match.
  38775. return Intrinsic::x86_ssse3_pabs_w; // "__builtin_ia32_pabsw"
  38776. }
  38777. break;
  38778. case 'd': // 4 strings to match.
  38779. if (BuiltinName[18] != 'd')
  38780. break;
  38781. switch (BuiltinName[19]) {
  38782. default: break;
  38783. case 'b': // 1 string to match.
  38784. return Intrinsic::x86_mmx_padd_b; // "__builtin_ia32_paddb"
  38785. case 'd': // 1 string to match.
  38786. return Intrinsic::x86_mmx_padd_d; // "__builtin_ia32_paddd"
  38787. case 'q': // 1 string to match.
  38788. return Intrinsic::x86_mmx_padd_q; // "__builtin_ia32_paddq"
  38789. case 'w': // 1 string to match.
  38790. return Intrinsic::x86_mmx_padd_w; // "__builtin_ia32_paddw"
  38791. }
  38792. break;
  38793. case 'n': // 1 string to match.
  38794. if (memcmp(BuiltinName.data()+18, "dn", 2))
  38795. break;
  38796. return Intrinsic::x86_mmx_pandn; // "__builtin_ia32_pandn"
  38797. case 'v': // 2 strings to match.
  38798. if (BuiltinName[18] != 'g')
  38799. break;
  38800. switch (BuiltinName[19]) {
  38801. default: break;
  38802. case 'b': // 1 string to match.
  38803. return Intrinsic::x86_mmx_pavg_b; // "__builtin_ia32_pavgb"
  38804. case 'w': // 1 string to match.
  38805. return Intrinsic::x86_mmx_pavg_w; // "__builtin_ia32_pavgw"
  38806. }
  38807. break;
  38808. }
  38809. break;
  38810. case 'f': // 9 strings to match.
  38811. switch (BuiltinName[17]) {
  38812. default: break;
  38813. case '2': // 2 strings to match.
  38814. if (BuiltinName[18] != 'i')
  38815. break;
  38816. switch (BuiltinName[19]) {
  38817. default: break;
  38818. case 'd': // 1 string to match.
  38819. return Intrinsic::x86_3dnow_pf2id; // "__builtin_ia32_pf2id"
  38820. case 'w': // 1 string to match.
  38821. return Intrinsic::x86_3dnowa_pf2iw; // "__builtin_ia32_pf2iw"
  38822. }
  38823. break;
  38824. case 'a': // 2 strings to match.
  38825. switch (BuiltinName[18]) {
  38826. default: break;
  38827. case 'c': // 1 string to match.
  38828. if (BuiltinName[19] != 'c')
  38829. break;
  38830. return Intrinsic::x86_3dnow_pfacc; // "__builtin_ia32_pfacc"
  38831. case 'd': // 1 string to match.
  38832. if (BuiltinName[19] != 'd')
  38833. break;
  38834. return Intrinsic::x86_3dnow_pfadd; // "__builtin_ia32_pfadd"
  38835. }
  38836. break;
  38837. case 'm': // 3 strings to match.
  38838. switch (BuiltinName[18]) {
  38839. default: break;
  38840. case 'a': // 1 string to match.
  38841. if (BuiltinName[19] != 'x')
  38842. break;
  38843. return Intrinsic::x86_3dnow_pfmax; // "__builtin_ia32_pfmax"
  38844. case 'i': // 1 string to match.
  38845. if (BuiltinName[19] != 'n')
  38846. break;
  38847. return Intrinsic::x86_3dnow_pfmin; // "__builtin_ia32_pfmin"
  38848. case 'u': // 1 string to match.
  38849. if (BuiltinName[19] != 'l')
  38850. break;
  38851. return Intrinsic::x86_3dnow_pfmul; // "__builtin_ia32_pfmul"
  38852. }
  38853. break;
  38854. case 'r': // 1 string to match.
  38855. if (memcmp(BuiltinName.data()+18, "cp", 2))
  38856. break;
  38857. return Intrinsic::x86_3dnow_pfrcp; // "__builtin_ia32_pfrcp"
  38858. case 's': // 1 string to match.
  38859. if (memcmp(BuiltinName.data()+18, "ub", 2))
  38860. break;
  38861. return Intrinsic::x86_3dnow_pfsub; // "__builtin_ia32_pfsub"
  38862. }
  38863. break;
  38864. case 'i': // 2 strings to match.
  38865. if (memcmp(BuiltinName.data()+17, "2f", 2))
  38866. break;
  38867. switch (BuiltinName[19]) {
  38868. default: break;
  38869. case 'd': // 1 string to match.
  38870. return Intrinsic::x86_3dnow_pi2fd; // "__builtin_ia32_pi2fd"
  38871. case 'w': // 1 string to match.
  38872. return Intrinsic::x86_3dnowa_pi2fw; // "__builtin_ia32_pi2fw"
  38873. }
  38874. break;
  38875. case 's': // 12 strings to match.
  38876. switch (BuiltinName[17]) {
  38877. default: break;
  38878. case 'l': // 3 strings to match.
  38879. if (BuiltinName[18] != 'l')
  38880. break;
  38881. switch (BuiltinName[19]) {
  38882. default: break;
  38883. case 'd': // 1 string to match.
  38884. return Intrinsic::x86_mmx_psll_d; // "__builtin_ia32_pslld"
  38885. case 'q': // 1 string to match.
  38886. return Intrinsic::x86_mmx_psll_q; // "__builtin_ia32_psllq"
  38887. case 'w': // 1 string to match.
  38888. return Intrinsic::x86_mmx_psll_w; // "__builtin_ia32_psllw"
  38889. }
  38890. break;
  38891. case 'r': // 5 strings to match.
  38892. switch (BuiltinName[18]) {
  38893. default: break;
  38894. case 'a': // 2 strings to match.
  38895. switch (BuiltinName[19]) {
  38896. default: break;
  38897. case 'd': // 1 string to match.
  38898. return Intrinsic::x86_mmx_psra_d; // "__builtin_ia32_psrad"
  38899. case 'w': // 1 string to match.
  38900. return Intrinsic::x86_mmx_psra_w; // "__builtin_ia32_psraw"
  38901. }
  38902. break;
  38903. case 'l': // 3 strings to match.
  38904. switch (BuiltinName[19]) {
  38905. default: break;
  38906. case 'd': // 1 string to match.
  38907. return Intrinsic::x86_mmx_psrl_d; // "__builtin_ia32_psrld"
  38908. case 'q': // 1 string to match.
  38909. return Intrinsic::x86_mmx_psrl_q; // "__builtin_ia32_psrlq"
  38910. case 'w': // 1 string to match.
  38911. return Intrinsic::x86_mmx_psrl_w; // "__builtin_ia32_psrlw"
  38912. }
  38913. break;
  38914. }
  38915. break;
  38916. case 'u': // 4 strings to match.
  38917. if (BuiltinName[18] != 'b')
  38918. break;
  38919. switch (BuiltinName[19]) {
  38920. default: break;
  38921. case 'b': // 1 string to match.
  38922. return Intrinsic::x86_mmx_psub_b; // "__builtin_ia32_psubb"
  38923. case 'd': // 1 string to match.
  38924. return Intrinsic::x86_mmx_psub_d; // "__builtin_ia32_psubd"
  38925. case 'q': // 1 string to match.
  38926. return Intrinsic::x86_mmx_psub_q; // "__builtin_ia32_psubq"
  38927. case 'w': // 1 string to match.
  38928. return Intrinsic::x86_mmx_psub_w; // "__builtin_ia32_psubw"
  38929. }
  38930. break;
  38931. }
  38932. break;
  38933. }
  38934. break;
  38935. case 'r': // 2 strings to match.
  38936. if (memcmp(BuiltinName.data()+16, "cp", 2))
  38937. break;
  38938. switch (BuiltinName[18]) {
  38939. default: break;
  38940. case 'p': // 1 string to match.
  38941. if (BuiltinName[19] != 's')
  38942. break;
  38943. return Intrinsic::x86_sse_rcp_ps; // "__builtin_ia32_rcpps"
  38944. case 's': // 1 string to match.
  38945. if (BuiltinName[19] != 's')
  38946. break;
  38947. return Intrinsic::x86_sse_rcp_ss; // "__builtin_ia32_rcpss"
  38948. }
  38949. break;
  38950. case 's': // 2 strings to match.
  38951. if (memcmp(BuiltinName.data()+16, "ubs", 3))
  38952. break;
  38953. switch (BuiltinName[19]) {
  38954. default: break;
  38955. case 'd': // 1 string to match.
  38956. return Intrinsic::x86_sse2_sub_sd; // "__builtin_ia32_subsd"
  38957. case 's': // 1 string to match.
  38958. return Intrinsic::x86_sse_sub_ss; // "__builtin_ia32_subss"
  38959. }
  38960. break;
  38961. case 'x': // 1 string to match.
  38962. if (memcmp(BuiltinName.data()+16, "test", 4))
  38963. break;
  38964. return Intrinsic::x86_xtest; // "__builtin_ia32_xtest"
  38965. }
  38966. break;
  38967. case 21: // 50 strings to match.
  38968. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  38969. break;
  38970. switch (BuiltinName[15]) {
  38971. default: break;
  38972. case 'c': // 5 strings to match.
  38973. if (memcmp(BuiltinName.data()+16, "omi", 3))
  38974. break;
  38975. switch (BuiltinName[19]) {
  38976. default: break;
  38977. case 'e': // 1 string to match.
  38978. if (BuiltinName[20] != 'q')
  38979. break;
  38980. return Intrinsic::x86_sse_comieq_ss; // "__builtin_ia32_comieq"
  38981. case 'g': // 2 strings to match.
  38982. switch (BuiltinName[20]) {
  38983. default: break;
  38984. case 'e': // 1 string to match.
  38985. return Intrinsic::x86_sse_comige_ss; // "__builtin_ia32_comige"
  38986. case 't': // 1 string to match.
  38987. return Intrinsic::x86_sse_comigt_ss; // "__builtin_ia32_comigt"
  38988. }
  38989. break;
  38990. case 'l': // 2 strings to match.
  38991. switch (BuiltinName[20]) {
  38992. default: break;
  38993. case 'e': // 1 string to match.
  38994. return Intrinsic::x86_sse_comile_ss; // "__builtin_ia32_comile"
  38995. case 't': // 1 string to match.
  38996. return Intrinsic::x86_sse_comilt_ss; // "__builtin_ia32_comilt"
  38997. }
  38998. break;
  38999. }
  39000. break;
  39001. case 'e': // 1 string to match.
  39002. if (memcmp(BuiltinName.data()+16, "xtrqi", 5))
  39003. break;
  39004. return Intrinsic::x86_sse4a_extrqi; // "__builtin_ia32_extrqi"
  39005. case 'h': // 4 strings to match.
  39006. switch (BuiltinName[16]) {
  39007. default: break;
  39008. case 'a': // 2 strings to match.
  39009. if (memcmp(BuiltinName.data()+17, "ddp", 3))
  39010. break;
  39011. switch (BuiltinName[20]) {
  39012. default: break;
  39013. case 'd': // 1 string to match.
  39014. return Intrinsic::x86_sse3_hadd_pd; // "__builtin_ia32_haddpd"
  39015. case 's': // 1 string to match.
  39016. return Intrinsic::x86_sse3_hadd_ps; // "__builtin_ia32_haddps"
  39017. }
  39018. break;
  39019. case 's': // 2 strings to match.
  39020. if (memcmp(BuiltinName.data()+17, "ubp", 3))
  39021. break;
  39022. switch (BuiltinName[20]) {
  39023. default: break;
  39024. case 'd': // 1 string to match.
  39025. return Intrinsic::x86_sse3_hsub_pd; // "__builtin_ia32_hsubpd"
  39026. case 's': // 1 string to match.
  39027. return Intrinsic::x86_sse3_hsub_ps; // "__builtin_ia32_hsubps"
  39028. }
  39029. break;
  39030. }
  39031. break;
  39032. case 'l': // 1 string to match.
  39033. if (memcmp(BuiltinName.data()+16, "fence", 5))
  39034. break;
  39035. return Intrinsic::x86_sse2_lfence; // "__builtin_ia32_lfence"
  39036. case 'm': // 2 strings to match.
  39037. switch (BuiltinName[16]) {
  39038. default: break;
  39039. case 'f': // 1 string to match.
  39040. if (memcmp(BuiltinName.data()+17, "ence", 4))
  39041. break;
  39042. return Intrinsic::x86_sse2_mfence; // "__builtin_ia32_mfence"
  39043. case 'o': // 1 string to match.
  39044. if (memcmp(BuiltinName.data()+17, "vntq", 4))
  39045. break;
  39046. return Intrinsic::x86_mmx_movnt_dq; // "__builtin_ia32_movntq"
  39047. }
  39048. break;
  39049. case 'p': // 30 strings to match.
  39050. switch (BuiltinName[16]) {
  39051. default: break;
  39052. case 'a': // 2 strings to match.
  39053. if (memcmp(BuiltinName.data()+17, "dds", 3))
  39054. break;
  39055. switch (BuiltinName[20]) {
  39056. default: break;
  39057. case 'b': // 1 string to match.
  39058. return Intrinsic::x86_mmx_padds_b; // "__builtin_ia32_paddsb"
  39059. case 'w': // 1 string to match.
  39060. return Intrinsic::x86_mmx_padds_w; // "__builtin_ia32_paddsw"
  39061. }
  39062. break;
  39063. case 'f': // 2 strings to match.
  39064. switch (BuiltinName[17]) {
  39065. default: break;
  39066. case 'n': // 1 string to match.
  39067. if (memcmp(BuiltinName.data()+18, "acc", 3))
  39068. break;
  39069. return Intrinsic::x86_3dnowa_pfnacc; // "__builtin_ia32_pfnacc"
  39070. case 's': // 1 string to match.
  39071. if (memcmp(BuiltinName.data()+18, "ubr", 3))
  39072. break;
  39073. return Intrinsic::x86_3dnow_pfsubr; // "__builtin_ia32_pfsubr"
  39074. }
  39075. break;
  39076. case 'h': // 4 strings to match.
  39077. switch (BuiltinName[17]) {
  39078. default: break;
  39079. case 'a': // 2 strings to match.
  39080. if (memcmp(BuiltinName.data()+18, "dd", 2))
  39081. break;
  39082. switch (BuiltinName[20]) {
  39083. default: break;
  39084. case 'd': // 1 string to match.
  39085. return Intrinsic::x86_ssse3_phadd_d; // "__builtin_ia32_phaddd"
  39086. case 'w': // 1 string to match.
  39087. return Intrinsic::x86_ssse3_phadd_w; // "__builtin_ia32_phaddw"
  39088. }
  39089. break;
  39090. case 's': // 2 strings to match.
  39091. if (memcmp(BuiltinName.data()+18, "ub", 2))
  39092. break;
  39093. switch (BuiltinName[20]) {
  39094. default: break;
  39095. case 'd': // 1 string to match.
  39096. return Intrinsic::x86_ssse3_phsub_d; // "__builtin_ia32_phsubd"
  39097. case 'w': // 1 string to match.
  39098. return Intrinsic::x86_ssse3_phsub_w; // "__builtin_ia32_phsubw"
  39099. }
  39100. break;
  39101. }
  39102. break;
  39103. case 'm': // 6 strings to match.
  39104. switch (BuiltinName[17]) {
  39105. default: break;
  39106. case 'a': // 2 strings to match.
  39107. if (BuiltinName[18] != 'x')
  39108. break;
  39109. switch (BuiltinName[19]) {
  39110. default: break;
  39111. case 's': // 1 string to match.
  39112. if (BuiltinName[20] != 'w')
  39113. break;
  39114. return Intrinsic::x86_mmx_pmaxs_w; // "__builtin_ia32_pmaxsw"
  39115. case 'u': // 1 string to match.
  39116. if (BuiltinName[20] != 'b')
  39117. break;
  39118. return Intrinsic::x86_mmx_pmaxu_b; // "__builtin_ia32_pmaxub"
  39119. }
  39120. break;
  39121. case 'i': // 2 strings to match.
  39122. if (BuiltinName[18] != 'n')
  39123. break;
  39124. switch (BuiltinName[19]) {
  39125. default: break;
  39126. case 's': // 1 string to match.
  39127. if (BuiltinName[20] != 'w')
  39128. break;
  39129. return Intrinsic::x86_mmx_pmins_w; // "__builtin_ia32_pminsw"
  39130. case 'u': // 1 string to match.
  39131. if (BuiltinName[20] != 'b')
  39132. break;
  39133. return Intrinsic::x86_mmx_pminu_b; // "__builtin_ia32_pminub"
  39134. }
  39135. break;
  39136. case 'u': // 2 strings to match.
  39137. if (BuiltinName[18] != 'l')
  39138. break;
  39139. switch (BuiltinName[19]) {
  39140. default: break;
  39141. case 'h': // 1 string to match.
  39142. if (BuiltinName[20] != 'w')
  39143. break;
  39144. return Intrinsic::x86_mmx_pmulh_w; // "__builtin_ia32_pmulhw"
  39145. case 'l': // 1 string to match.
  39146. if (BuiltinName[20] != 'w')
  39147. break;
  39148. return Intrinsic::x86_mmx_pmull_w; // "__builtin_ia32_pmullw"
  39149. }
  39150. break;
  39151. }
  39152. break;
  39153. case 's': // 16 strings to match.
  39154. switch (BuiltinName[17]) {
  39155. default: break;
  39156. case 'a': // 1 string to match.
  39157. if (memcmp(BuiltinName.data()+18, "dbw", 3))
  39158. break;
  39159. return Intrinsic::x86_mmx_psad_bw; // "__builtin_ia32_psadbw"
  39160. case 'h': // 2 strings to match.
  39161. if (memcmp(BuiltinName.data()+18, "uf", 2))
  39162. break;
  39163. switch (BuiltinName[20]) {
  39164. default: break;
  39165. case 'b': // 1 string to match.
  39166. return Intrinsic::x86_ssse3_pshuf_b; // "__builtin_ia32_pshufb"
  39167. case 'w': // 1 string to match.
  39168. return Intrinsic::x86_sse_pshuf_w; // "__builtin_ia32_pshufw"
  39169. }
  39170. break;
  39171. case 'i': // 3 strings to match.
  39172. if (memcmp(BuiltinName.data()+18, "gn", 2))
  39173. break;
  39174. switch (BuiltinName[20]) {
  39175. default: break;
  39176. case 'b': // 1 string to match.
  39177. return Intrinsic::x86_ssse3_psign_b; // "__builtin_ia32_psignb"
  39178. case 'd': // 1 string to match.
  39179. return Intrinsic::x86_ssse3_psign_d; // "__builtin_ia32_psignd"
  39180. case 'w': // 1 string to match.
  39181. return Intrinsic::x86_ssse3_psign_w; // "__builtin_ia32_psignw"
  39182. }
  39183. break;
  39184. case 'l': // 3 strings to match.
  39185. if (BuiltinName[18] != 'l')
  39186. break;
  39187. switch (BuiltinName[19]) {
  39188. default: break;
  39189. case 'd': // 1 string to match.
  39190. if (BuiltinName[20] != 'i')
  39191. break;
  39192. return Intrinsic::x86_mmx_pslli_d; // "__builtin_ia32_pslldi"
  39193. case 'q': // 1 string to match.
  39194. if (BuiltinName[20] != 'i')
  39195. break;
  39196. return Intrinsic::x86_mmx_pslli_q; // "__builtin_ia32_psllqi"
  39197. case 'w': // 1 string to match.
  39198. if (BuiltinName[20] != 'i')
  39199. break;
  39200. return Intrinsic::x86_mmx_pslli_w; // "__builtin_ia32_psllwi"
  39201. }
  39202. break;
  39203. case 'r': // 5 strings to match.
  39204. switch (BuiltinName[18]) {
  39205. default: break;
  39206. case 'a': // 2 strings to match.
  39207. switch (BuiltinName[19]) {
  39208. default: break;
  39209. case 'd': // 1 string to match.
  39210. if (BuiltinName[20] != 'i')
  39211. break;
  39212. return Intrinsic::x86_mmx_psrai_d; // "__builtin_ia32_psradi"
  39213. case 'w': // 1 string to match.
  39214. if (BuiltinName[20] != 'i')
  39215. break;
  39216. return Intrinsic::x86_mmx_psrai_w; // "__builtin_ia32_psrawi"
  39217. }
  39218. break;
  39219. case 'l': // 3 strings to match.
  39220. switch (BuiltinName[19]) {
  39221. default: break;
  39222. case 'd': // 1 string to match.
  39223. if (BuiltinName[20] != 'i')
  39224. break;
  39225. return Intrinsic::x86_mmx_psrli_d; // "__builtin_ia32_psrldi"
  39226. case 'q': // 1 string to match.
  39227. if (BuiltinName[20] != 'i')
  39228. break;
  39229. return Intrinsic::x86_mmx_psrli_q; // "__builtin_ia32_psrlqi"
  39230. case 'w': // 1 string to match.
  39231. if (BuiltinName[20] != 'i')
  39232. break;
  39233. return Intrinsic::x86_mmx_psrli_w; // "__builtin_ia32_psrlwi"
  39234. }
  39235. break;
  39236. }
  39237. break;
  39238. case 'u': // 2 strings to match.
  39239. if (memcmp(BuiltinName.data()+18, "bs", 2))
  39240. break;
  39241. switch (BuiltinName[20]) {
  39242. default: break;
  39243. case 'b': // 1 string to match.
  39244. return Intrinsic::x86_mmx_psubs_b; // "__builtin_ia32_psubsb"
  39245. case 'w': // 1 string to match.
  39246. return Intrinsic::x86_mmx_psubs_w; // "__builtin_ia32_psubsw"
  39247. }
  39248. break;
  39249. }
  39250. break;
  39251. }
  39252. break;
  39253. case 's': // 5 strings to match.
  39254. switch (BuiltinName[16]) {
  39255. default: break;
  39256. case 'f': // 1 string to match.
  39257. if (memcmp(BuiltinName.data()+17, "ence", 4))
  39258. break;
  39259. return Intrinsic::x86_sse_sfence; // "__builtin_ia32_sfence"
  39260. case 'q': // 4 strings to match.
  39261. if (memcmp(BuiltinName.data()+17, "rt", 2))
  39262. break;
  39263. switch (BuiltinName[19]) {
  39264. default: break;
  39265. case 'p': // 2 strings to match.
  39266. switch (BuiltinName[20]) {
  39267. default: break;
  39268. case 'd': // 1 string to match.
  39269. return Intrinsic::x86_sse2_sqrt_pd; // "__builtin_ia32_sqrtpd"
  39270. case 's': // 1 string to match.
  39271. return Intrinsic::x86_sse_sqrt_ps; // "__builtin_ia32_sqrtps"
  39272. }
  39273. break;
  39274. case 's': // 2 strings to match.
  39275. switch (BuiltinName[20]) {
  39276. default: break;
  39277. case 'd': // 1 string to match.
  39278. return Intrinsic::x86_sse2_sqrt_sd; // "__builtin_ia32_sqrtsd"
  39279. case 's': // 1 string to match.
  39280. return Intrinsic::x86_sse_sqrt_ss; // "__builtin_ia32_sqrtss"
  39281. }
  39282. break;
  39283. }
  39284. break;
  39285. }
  39286. break;
  39287. case 'x': // 2 strings to match.
  39288. switch (BuiltinName[16]) {
  39289. default: break;
  39290. case 'a': // 1 string to match.
  39291. if (memcmp(BuiltinName.data()+17, "bort", 4))
  39292. break;
  39293. return Intrinsic::x86_xabort; // "__builtin_ia32_xabort"
  39294. case 'b': // 1 string to match.
  39295. if (memcmp(BuiltinName.data()+17, "egin", 4))
  39296. break;
  39297. return Intrinsic::x86_xbegin; // "__builtin_ia32_xbegin"
  39298. }
  39299. break;
  39300. }
  39301. break;
  39302. case 22: // 53 strings to match.
  39303. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  39304. break;
  39305. switch (BuiltinName[15]) {
  39306. default: break;
  39307. case 'b': // 4 strings to match.
  39308. switch (BuiltinName[16]) {
  39309. default: break;
  39310. case 'l': // 2 strings to match.
  39311. if (memcmp(BuiltinName.data()+17, "endp", 4))
  39312. break;
  39313. switch (BuiltinName[21]) {
  39314. default: break;
  39315. case 'd': // 1 string to match.
  39316. return Intrinsic::x86_sse41_blendpd; // "__builtin_ia32_blendpd"
  39317. case 's': // 1 string to match.
  39318. return Intrinsic::x86_sse41_blendps; // "__builtin_ia32_blendps"
  39319. }
  39320. break;
  39321. case 'z': // 2 strings to match.
  39322. if (memcmp(BuiltinName.data()+17, "hi_", 3))
  39323. break;
  39324. switch (BuiltinName[20]) {
  39325. default: break;
  39326. case 'd': // 1 string to match.
  39327. if (BuiltinName[21] != 'i')
  39328. break;
  39329. return Intrinsic::x86_bmi_bzhi_64; // "__builtin_ia32_bzhi_di"
  39330. case 's': // 1 string to match.
  39331. if (BuiltinName[21] != 'i')
  39332. break;
  39333. return Intrinsic::x86_bmi_bzhi_32; // "__builtin_ia32_bzhi_si"
  39334. }
  39335. break;
  39336. }
  39337. break;
  39338. case 'c': // 6 strings to match.
  39339. switch (BuiltinName[16]) {
  39340. default: break;
  39341. case 'l': // 1 string to match.
  39342. if (memcmp(BuiltinName.data()+17, "flush", 5))
  39343. break;
  39344. return Intrinsic::x86_sse2_clflush; // "__builtin_ia32_clflush"
  39345. case 'o': // 1 string to match.
  39346. if (memcmp(BuiltinName.data()+17, "mineq", 5))
  39347. break;
  39348. return Intrinsic::x86_sse_comineq_ss; // "__builtin_ia32_comineq"
  39349. case 'r': // 4 strings to match.
  39350. if (memcmp(BuiltinName.data()+17, "c32", 3))
  39351. break;
  39352. switch (BuiltinName[20]) {
  39353. default: break;
  39354. case 'd': // 1 string to match.
  39355. if (BuiltinName[21] != 'i')
  39356. break;
  39357. return Intrinsic::x86_sse42_crc32_64_64; // "__builtin_ia32_crc32di"
  39358. case 'h': // 1 string to match.
  39359. if (BuiltinName[21] != 'i')
  39360. break;
  39361. return Intrinsic::x86_sse42_crc32_32_16; // "__builtin_ia32_crc32hi"
  39362. case 'q': // 1 string to match.
  39363. if (BuiltinName[21] != 'i')
  39364. break;
  39365. return Intrinsic::x86_sse42_crc32_32_8; // "__builtin_ia32_crc32qi"
  39366. case 's': // 1 string to match.
  39367. if (BuiltinName[21] != 'i')
  39368. break;
  39369. return Intrinsic::x86_sse42_crc32_32_32; // "__builtin_ia32_crc32si"
  39370. }
  39371. break;
  39372. }
  39373. break;
  39374. case 'd': // 1 string to match.
  39375. if (memcmp(BuiltinName.data()+16, "pps256", 6))
  39376. break;
  39377. return Intrinsic::x86_avx_dp_ps_256; // "__builtin_ia32_dpps256"
  39378. case 'i': // 1 string to match.
  39379. if (memcmp(BuiltinName.data()+16, "nsertq", 6))
  39380. break;
  39381. return Intrinsic::x86_sse4a_insertq; // "__builtin_ia32_insertq"
  39382. case 'm': // 3 strings to match.
  39383. if (BuiltinName[16] != 'o')
  39384. break;
  39385. switch (BuiltinName[17]) {
  39386. default: break;
  39387. case 'n': // 1 string to match.
  39388. if (memcmp(BuiltinName.data()+18, "itor", 4))
  39389. break;
  39390. return Intrinsic::x86_sse3_monitor; // "__builtin_ia32_monitor"
  39391. case 'v': // 2 strings to match.
  39392. if (memcmp(BuiltinName.data()+18, "nts", 3))
  39393. break;
  39394. switch (BuiltinName[21]) {
  39395. default: break;
  39396. case 'd': // 1 string to match.
  39397. return Intrinsic::x86_sse4a_movnt_sd; // "__builtin_ia32_movntsd"
  39398. case 's': // 1 string to match.
  39399. return Intrinsic::x86_sse4a_movnt_ss; // "__builtin_ia32_movntss"
  39400. }
  39401. break;
  39402. }
  39403. break;
  39404. case 'p': // 27 strings to match.
  39405. switch (BuiltinName[16]) {
  39406. default: break;
  39407. case 'a': // 4 strings to match.
  39408. switch (BuiltinName[17]) {
  39409. default: break;
  39410. case 'd': // 2 strings to match.
  39411. if (memcmp(BuiltinName.data()+18, "dus", 3))
  39412. break;
  39413. switch (BuiltinName[21]) {
  39414. default: break;
  39415. case 'b': // 1 string to match.
  39416. return Intrinsic::x86_mmx_paddus_b; // "__builtin_ia32_paddusb"
  39417. case 'w': // 1 string to match.
  39418. return Intrinsic::x86_mmx_paddus_w; // "__builtin_ia32_paddusw"
  39419. }
  39420. break;
  39421. case 'l': // 1 string to match.
  39422. if (memcmp(BuiltinName.data()+18, "ignr", 4))
  39423. break;
  39424. return Intrinsic::x86_mmx_palignr_b; // "__builtin_ia32_palignr"
  39425. case 'v': // 1 string to match.
  39426. if (memcmp(BuiltinName.data()+18, "gusb", 4))
  39427. break;
  39428. return Intrinsic::x86_3dnow_pavgusb; // "__builtin_ia32_pavgusb"
  39429. }
  39430. break;
  39431. case 'c': // 6 strings to match.
  39432. if (memcmp(BuiltinName.data()+17, "mp", 2))
  39433. break;
  39434. switch (BuiltinName[19]) {
  39435. default: break;
  39436. case 'e': // 3 strings to match.
  39437. if (BuiltinName[20] != 'q')
  39438. break;
  39439. switch (BuiltinName[21]) {
  39440. default: break;
  39441. case 'b': // 1 string to match.
  39442. return Intrinsic::x86_mmx_pcmpeq_b; // "__builtin_ia32_pcmpeqb"
  39443. case 'd': // 1 string to match.
  39444. return Intrinsic::x86_mmx_pcmpeq_d; // "__builtin_ia32_pcmpeqd"
  39445. case 'w': // 1 string to match.
  39446. return Intrinsic::x86_mmx_pcmpeq_w; // "__builtin_ia32_pcmpeqw"
  39447. }
  39448. break;
  39449. case 'g': // 3 strings to match.
  39450. if (BuiltinName[20] != 't')
  39451. break;
  39452. switch (BuiltinName[21]) {
  39453. default: break;
  39454. case 'b': // 1 string to match.
  39455. return Intrinsic::x86_mmx_pcmpgt_b; // "__builtin_ia32_pcmpgtb"
  39456. case 'd': // 1 string to match.
  39457. return Intrinsic::x86_mmx_pcmpgt_d; // "__builtin_ia32_pcmpgtd"
  39458. case 'w': // 1 string to match.
  39459. return Intrinsic::x86_mmx_pcmpgt_w; // "__builtin_ia32_pcmpgtw"
  39460. }
  39461. break;
  39462. }
  39463. break;
  39464. case 'd': // 2 strings to match.
  39465. if (memcmp(BuiltinName.data()+17, "ep_", 3))
  39466. break;
  39467. switch (BuiltinName[20]) {
  39468. default: break;
  39469. case 'd': // 1 string to match.
  39470. if (BuiltinName[21] != 'i')
  39471. break;
  39472. return Intrinsic::x86_bmi_pdep_64; // "__builtin_ia32_pdep_di"
  39473. case 's': // 1 string to match.
  39474. if (BuiltinName[21] != 'i')
  39475. break;
  39476. return Intrinsic::x86_bmi_pdep_32; // "__builtin_ia32_pdep_si"
  39477. }
  39478. break;
  39479. case 'e': // 2 strings to match.
  39480. if (memcmp(BuiltinName.data()+17, "xt_", 3))
  39481. break;
  39482. switch (BuiltinName[20]) {
  39483. default: break;
  39484. case 'd': // 1 string to match.
  39485. if (BuiltinName[21] != 'i')
  39486. break;
  39487. return Intrinsic::x86_bmi_pext_64; // "__builtin_ia32_pext_di"
  39488. case 's': // 1 string to match.
  39489. if (BuiltinName[21] != 'i')
  39490. break;
  39491. return Intrinsic::x86_bmi_pext_32; // "__builtin_ia32_pext_si"
  39492. }
  39493. break;
  39494. case 'f': // 5 strings to match.
  39495. switch (BuiltinName[17]) {
  39496. default: break;
  39497. case 'c': // 3 strings to match.
  39498. if (memcmp(BuiltinName.data()+18, "mp", 2))
  39499. break;
  39500. switch (BuiltinName[20]) {
  39501. default: break;
  39502. case 'e': // 1 string to match.
  39503. if (BuiltinName[21] != 'q')
  39504. break;
  39505. return Intrinsic::x86_3dnow_pfcmpeq; // "__builtin_ia32_pfcmpeq"
  39506. case 'g': // 2 strings to match.
  39507. switch (BuiltinName[21]) {
  39508. default: break;
  39509. case 'e': // 1 string to match.
  39510. return Intrinsic::x86_3dnow_pfcmpge; // "__builtin_ia32_pfcmpge"
  39511. case 't': // 1 string to match.
  39512. return Intrinsic::x86_3dnow_pfcmpgt; // "__builtin_ia32_pfcmpgt"
  39513. }
  39514. break;
  39515. }
  39516. break;
  39517. case 'p': // 1 string to match.
  39518. if (memcmp(BuiltinName.data()+18, "nacc", 4))
  39519. break;
  39520. return Intrinsic::x86_3dnowa_pfpnacc; // "__builtin_ia32_pfpnacc"
  39521. case 'r': // 1 string to match.
  39522. if (memcmp(BuiltinName.data()+18, "sqrt", 4))
  39523. break;
  39524. return Intrinsic::x86_3dnow_pfrsqrt; // "__builtin_ia32_pfrsqrt"
  39525. }
  39526. break;
  39527. case 'h': // 2 strings to match.
  39528. switch (BuiltinName[17]) {
  39529. default: break;
  39530. case 'a': // 1 string to match.
  39531. if (memcmp(BuiltinName.data()+18, "ddsw", 4))
  39532. break;
  39533. return Intrinsic::x86_ssse3_phadd_sw; // "__builtin_ia32_phaddsw"
  39534. case 's': // 1 string to match.
  39535. if (memcmp(BuiltinName.data()+18, "ubsw", 4))
  39536. break;
  39537. return Intrinsic::x86_ssse3_phsub_sw; // "__builtin_ia32_phsubsw"
  39538. }
  39539. break;
  39540. case 'm': // 4 strings to match.
  39541. switch (BuiltinName[17]) {
  39542. default: break;
  39543. case 'a': // 1 string to match.
  39544. if (memcmp(BuiltinName.data()+18, "ddwd", 4))
  39545. break;
  39546. return Intrinsic::x86_mmx_pmadd_wd; // "__builtin_ia32_pmaddwd"
  39547. case 'u': // 3 strings to match.
  39548. if (BuiltinName[18] != 'l')
  39549. break;
  39550. switch (BuiltinName[19]) {
  39551. default: break;
  39552. case 'h': // 2 strings to match.
  39553. switch (BuiltinName[20]) {
  39554. default: break;
  39555. case 'r': // 1 string to match.
  39556. if (BuiltinName[21] != 'w')
  39557. break;
  39558. return Intrinsic::x86_3dnow_pmulhrw; // "__builtin_ia32_pmulhrw"
  39559. case 'u': // 1 string to match.
  39560. if (BuiltinName[21] != 'w')
  39561. break;
  39562. return Intrinsic::x86_mmx_pmulhu_w; // "__builtin_ia32_pmulhuw"
  39563. }
  39564. break;
  39565. case 'u': // 1 string to match.
  39566. if (memcmp(BuiltinName.data()+20, "dq", 2))
  39567. break;
  39568. return Intrinsic::x86_mmx_pmulu_dq; // "__builtin_ia32_pmuludq"
  39569. }
  39570. break;
  39571. }
  39572. break;
  39573. case 's': // 2 strings to match.
  39574. if (memcmp(BuiltinName.data()+17, "ubus", 4))
  39575. break;
  39576. switch (BuiltinName[21]) {
  39577. default: break;
  39578. case 'b': // 1 string to match.
  39579. return Intrinsic::x86_mmx_psubus_b; // "__builtin_ia32_psubusb"
  39580. case 'w': // 1 string to match.
  39581. return Intrinsic::x86_mmx_psubus_w; // "__builtin_ia32_psubusw"
  39582. }
  39583. break;
  39584. }
  39585. break;
  39586. case 'r': // 6 strings to match.
  39587. switch (BuiltinName[16]) {
  39588. default: break;
  39589. case 'o': // 4 strings to match.
  39590. if (memcmp(BuiltinName.data()+17, "und", 3))
  39591. break;
  39592. switch (BuiltinName[20]) {
  39593. default: break;
  39594. case 'p': // 2 strings to match.
  39595. switch (BuiltinName[21]) {
  39596. default: break;
  39597. case 'd': // 1 string to match.
  39598. return Intrinsic::x86_sse41_round_pd; // "__builtin_ia32_roundpd"
  39599. case 's': // 1 string to match.
  39600. return Intrinsic::x86_sse41_round_ps; // "__builtin_ia32_roundps"
  39601. }
  39602. break;
  39603. case 's': // 2 strings to match.
  39604. switch (BuiltinName[21]) {
  39605. default: break;
  39606. case 'd': // 1 string to match.
  39607. return Intrinsic::x86_sse41_round_sd; // "__builtin_ia32_roundsd"
  39608. case 's': // 1 string to match.
  39609. return Intrinsic::x86_sse41_round_ss; // "__builtin_ia32_roundss"
  39610. }
  39611. break;
  39612. }
  39613. break;
  39614. case 's': // 2 strings to match.
  39615. if (memcmp(BuiltinName.data()+17, "qrt", 3))
  39616. break;
  39617. switch (BuiltinName[20]) {
  39618. default: break;
  39619. case 'p': // 1 string to match.
  39620. if (BuiltinName[21] != 's')
  39621. break;
  39622. return Intrinsic::x86_sse_rsqrt_ps; // "__builtin_ia32_rsqrtps"
  39623. case 's': // 1 string to match.
  39624. if (BuiltinName[21] != 's')
  39625. break;
  39626. return Intrinsic::x86_sse_rsqrt_ss; // "__builtin_ia32_rsqrtss"
  39627. }
  39628. break;
  39629. }
  39630. break;
  39631. case 'u': // 5 strings to match.
  39632. if (memcmp(BuiltinName.data()+16, "comi", 4))
  39633. break;
  39634. switch (BuiltinName[20]) {
  39635. default: break;
  39636. case 'e': // 1 string to match.
  39637. if (BuiltinName[21] != 'q')
  39638. break;
  39639. return Intrinsic::x86_sse_ucomieq_ss; // "__builtin_ia32_ucomieq"
  39640. case 'g': // 2 strings to match.
  39641. switch (BuiltinName[21]) {
  39642. default: break;
  39643. case 'e': // 1 string to match.
  39644. return Intrinsic::x86_sse_ucomige_ss; // "__builtin_ia32_ucomige"
  39645. case 't': // 1 string to match.
  39646. return Intrinsic::x86_sse_ucomigt_ss; // "__builtin_ia32_ucomigt"
  39647. }
  39648. break;
  39649. case 'l': // 2 strings to match.
  39650. switch (BuiltinName[21]) {
  39651. default: break;
  39652. case 'e': // 1 string to match.
  39653. return Intrinsic::x86_sse_ucomile_ss; // "__builtin_ia32_ucomile"
  39654. case 't': // 1 string to match.
  39655. return Intrinsic::x86_sse_ucomilt_ss; // "__builtin_ia32_ucomilt"
  39656. }
  39657. break;
  39658. }
  39659. break;
  39660. }
  39661. break;
  39662. case 23: // 99 strings to match.
  39663. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  39664. break;
  39665. switch (BuiltinName[15]) {
  39666. default: break;
  39667. case 'a': // 2 strings to match.
  39668. if (memcmp(BuiltinName.data()+16, "ddsubp", 6))
  39669. break;
  39670. switch (BuiltinName[22]) {
  39671. default: break;
  39672. case 'd': // 1 string to match.
  39673. return Intrinsic::x86_sse3_addsub_pd; // "__builtin_ia32_addsubpd"
  39674. case 's': // 1 string to match.
  39675. return Intrinsic::x86_sse3_addsub_ps; // "__builtin_ia32_addsubps"
  39676. }
  39677. break;
  39678. case 'b': // 2 strings to match.
  39679. if (memcmp(BuiltinName.data()+16, "lendvp", 6))
  39680. break;
  39681. switch (BuiltinName[22]) {
  39682. default: break;
  39683. case 'd': // 1 string to match.
  39684. return Intrinsic::x86_sse41_blendvpd; // "__builtin_ia32_blendvpd"
  39685. case 's': // 1 string to match.
  39686. return Intrinsic::x86_sse41_blendvps; // "__builtin_ia32_blendvps"
  39687. }
  39688. break;
  39689. case 'c': // 23 strings to match.
  39690. switch (BuiltinName[16]) {
  39691. default: break;
  39692. case 'm': // 2 strings to match.
  39693. if (memcmp(BuiltinName.data()+17, "pp", 2))
  39694. break;
  39695. switch (BuiltinName[19]) {
  39696. default: break;
  39697. case 'd': // 1 string to match.
  39698. if (memcmp(BuiltinName.data()+20, "256", 3))
  39699. break;
  39700. return Intrinsic::x86_avx_cmp_pd_256; // "__builtin_ia32_cmppd256"
  39701. case 's': // 1 string to match.
  39702. if (memcmp(BuiltinName.data()+20, "256", 3))
  39703. break;
  39704. return Intrinsic::x86_avx_cmp_ps_256; // "__builtin_ia32_cmpps256"
  39705. }
  39706. break;
  39707. case 'o': // 5 strings to match.
  39708. if (memcmp(BuiltinName.data()+17, "misd", 4))
  39709. break;
  39710. switch (BuiltinName[21]) {
  39711. default: break;
  39712. case 'e': // 1 string to match.
  39713. if (BuiltinName[22] != 'q')
  39714. break;
  39715. return Intrinsic::x86_sse2_comieq_sd; // "__builtin_ia32_comisdeq"
  39716. case 'g': // 2 strings to match.
  39717. switch (BuiltinName[22]) {
  39718. default: break;
  39719. case 'e': // 1 string to match.
  39720. return Intrinsic::x86_sse2_comige_sd; // "__builtin_ia32_comisdge"
  39721. case 't': // 1 string to match.
  39722. return Intrinsic::x86_sse2_comigt_sd; // "__builtin_ia32_comisdgt"
  39723. }
  39724. break;
  39725. case 'l': // 2 strings to match.
  39726. switch (BuiltinName[22]) {
  39727. default: break;
  39728. case 'e': // 1 string to match.
  39729. return Intrinsic::x86_sse2_comile_sd; // "__builtin_ia32_comisdle"
  39730. case 't': // 1 string to match.
  39731. return Intrinsic::x86_sse2_comilt_sd; // "__builtin_ia32_comisdlt"
  39732. }
  39733. break;
  39734. }
  39735. break;
  39736. case 'v': // 16 strings to match.
  39737. if (BuiltinName[17] != 't')
  39738. break;
  39739. switch (BuiltinName[18]) {
  39740. default: break;
  39741. case 'd': // 2 strings to match.
  39742. if (memcmp(BuiltinName.data()+19, "q2p", 3))
  39743. break;
  39744. switch (BuiltinName[22]) {
  39745. default: break;
  39746. case 'd': // 1 string to match.
  39747. return Intrinsic::x86_sse2_cvtdq2pd; // "__builtin_ia32_cvtdq2pd"
  39748. case 's': // 1 string to match.
  39749. return Intrinsic::x86_sse2_cvtdq2ps; // "__builtin_ia32_cvtdq2ps"
  39750. }
  39751. break;
  39752. case 'p': // 8 strings to match.
  39753. switch (BuiltinName[19]) {
  39754. default: break;
  39755. case 'd': // 3 strings to match.
  39756. if (BuiltinName[20] != '2')
  39757. break;
  39758. switch (BuiltinName[21]) {
  39759. default: break;
  39760. case 'd': // 1 string to match.
  39761. if (BuiltinName[22] != 'q')
  39762. break;
  39763. return Intrinsic::x86_sse2_cvtpd2dq; // "__builtin_ia32_cvtpd2dq"
  39764. case 'p': // 2 strings to match.
  39765. switch (BuiltinName[22]) {
  39766. default: break;
  39767. case 'i': // 1 string to match.
  39768. return Intrinsic::x86_sse_cvtpd2pi; // "__builtin_ia32_cvtpd2pi"
  39769. case 's': // 1 string to match.
  39770. return Intrinsic::x86_sse2_cvtpd2ps; // "__builtin_ia32_cvtpd2ps"
  39771. }
  39772. break;
  39773. }
  39774. break;
  39775. case 'i': // 2 strings to match.
  39776. if (memcmp(BuiltinName.data()+20, "2p", 2))
  39777. break;
  39778. switch (BuiltinName[22]) {
  39779. default: break;
  39780. case 'd': // 1 string to match.
  39781. return Intrinsic::x86_sse_cvtpi2pd; // "__builtin_ia32_cvtpi2pd"
  39782. case 's': // 1 string to match.
  39783. return Intrinsic::x86_sse_cvtpi2ps; // "__builtin_ia32_cvtpi2ps"
  39784. }
  39785. break;
  39786. case 's': // 3 strings to match.
  39787. if (BuiltinName[20] != '2')
  39788. break;
  39789. switch (BuiltinName[21]) {
  39790. default: break;
  39791. case 'd': // 1 string to match.
  39792. if (BuiltinName[22] != 'q')
  39793. break;
  39794. return Intrinsic::x86_sse2_cvtps2dq; // "__builtin_ia32_cvtps2dq"
  39795. case 'p': // 2 strings to match.
  39796. switch (BuiltinName[22]) {
  39797. default: break;
  39798. case 'd': // 1 string to match.
  39799. return Intrinsic::x86_sse2_cvtps2pd; // "__builtin_ia32_cvtps2pd"
  39800. case 'i': // 1 string to match.
  39801. return Intrinsic::x86_sse_cvtps2pi; // "__builtin_ia32_cvtps2pi"
  39802. }
  39803. break;
  39804. }
  39805. break;
  39806. }
  39807. break;
  39808. case 's': // 6 strings to match.
  39809. switch (BuiltinName[19]) {
  39810. default: break;
  39811. case 'd': // 2 strings to match.
  39812. if (memcmp(BuiltinName.data()+20, "2s", 2))
  39813. break;
  39814. switch (BuiltinName[22]) {
  39815. default: break;
  39816. case 'i': // 1 string to match.
  39817. return Intrinsic::x86_sse2_cvtsd2si; // "__builtin_ia32_cvtsd2si"
  39818. case 's': // 1 string to match.
  39819. return Intrinsic::x86_sse2_cvtsd2ss; // "__builtin_ia32_cvtsd2ss"
  39820. }
  39821. break;
  39822. case 'i': // 2 strings to match.
  39823. if (memcmp(BuiltinName.data()+20, "2s", 2))
  39824. break;
  39825. switch (BuiltinName[22]) {
  39826. default: break;
  39827. case 'd': // 1 string to match.
  39828. return Intrinsic::x86_sse2_cvtsi2sd; // "__builtin_ia32_cvtsi2sd"
  39829. case 's': // 1 string to match.
  39830. return Intrinsic::x86_sse_cvtsi2ss; // "__builtin_ia32_cvtsi2ss"
  39831. }
  39832. break;
  39833. case 's': // 2 strings to match.
  39834. if (memcmp(BuiltinName.data()+20, "2s", 2))
  39835. break;
  39836. switch (BuiltinName[22]) {
  39837. default: break;
  39838. case 'd': // 1 string to match.
  39839. return Intrinsic::x86_sse2_cvtss2sd; // "__builtin_ia32_cvtss2sd"
  39840. case 'i': // 1 string to match.
  39841. return Intrinsic::x86_sse_cvtss2si; // "__builtin_ia32_cvtss2si"
  39842. }
  39843. break;
  39844. }
  39845. break;
  39846. }
  39847. break;
  39848. }
  39849. break;
  39850. case 'i': // 1 string to match.
  39851. if (memcmp(BuiltinName.data()+16, "nsertqi", 7))
  39852. break;
  39853. return Intrinsic::x86_sse4a_insertqi; // "__builtin_ia32_insertqi"
  39854. case 'l': // 1 string to match.
  39855. if (memcmp(BuiltinName.data()+16, "ddqu256", 7))
  39856. break;
  39857. return Intrinsic::x86_avx_ldu_dq_256; // "__builtin_ia32_lddqu256"
  39858. case 'm': // 8 strings to match.
  39859. switch (BuiltinName[16]) {
  39860. default: break;
  39861. case 'a': // 3 strings to match.
  39862. switch (BuiltinName[17]) {
  39863. default: break;
  39864. case 's': // 1 string to match.
  39865. if (memcmp(BuiltinName.data()+18, "kmovq", 5))
  39866. break;
  39867. return Intrinsic::x86_mmx_maskmovq; // "__builtin_ia32_maskmovq"
  39868. case 'x': // 2 strings to match.
  39869. if (BuiltinName[18] != 'p')
  39870. break;
  39871. switch (BuiltinName[19]) {
  39872. default: break;
  39873. case 'd': // 1 string to match.
  39874. if (memcmp(BuiltinName.data()+20, "256", 3))
  39875. break;
  39876. return Intrinsic::x86_avx_max_pd_256; // "__builtin_ia32_maxpd256"
  39877. case 's': // 1 string to match.
  39878. if (memcmp(BuiltinName.data()+20, "256", 3))
  39879. break;
  39880. return Intrinsic::x86_avx_max_ps_256; // "__builtin_ia32_maxps256"
  39881. }
  39882. break;
  39883. }
  39884. break;
  39885. case 'i': // 2 strings to match.
  39886. if (memcmp(BuiltinName.data()+17, "np", 2))
  39887. break;
  39888. switch (BuiltinName[19]) {
  39889. default: break;
  39890. case 'd': // 1 string to match.
  39891. if (memcmp(BuiltinName.data()+20, "256", 3))
  39892. break;
  39893. return Intrinsic::x86_avx_min_pd_256; // "__builtin_ia32_minpd256"
  39894. case 's': // 1 string to match.
  39895. if (memcmp(BuiltinName.data()+20, "256", 3))
  39896. break;
  39897. return Intrinsic::x86_avx_min_ps_256; // "__builtin_ia32_minps256"
  39898. }
  39899. break;
  39900. case 'o': // 3 strings to match.
  39901. if (BuiltinName[17] != 'v')
  39902. break;
  39903. switch (BuiltinName[18]) {
  39904. default: break;
  39905. case 'm': // 2 strings to match.
  39906. if (memcmp(BuiltinName.data()+19, "skp", 3))
  39907. break;
  39908. switch (BuiltinName[22]) {
  39909. default: break;
  39910. case 'd': // 1 string to match.
  39911. return Intrinsic::x86_sse2_movmsk_pd; // "__builtin_ia32_movmskpd"
  39912. case 's': // 1 string to match.
  39913. return Intrinsic::x86_sse_movmsk_ps; // "__builtin_ia32_movmskps"
  39914. }
  39915. break;
  39916. case 'n': // 1 string to match.
  39917. if (memcmp(BuiltinName.data()+19, "tdqa", 4))
  39918. break;
  39919. return Intrinsic::x86_sse41_movntdqa; // "__builtin_ia32_movntdqa"
  39920. }
  39921. break;
  39922. }
  39923. break;
  39924. case 'p': // 44 strings to match.
  39925. switch (BuiltinName[16]) {
  39926. default: break;
  39927. case 'a': // 13 strings to match.
  39928. switch (BuiltinName[17]) {
  39929. default: break;
  39930. case 'b': // 6 strings to match.
  39931. if (BuiltinName[18] != 's')
  39932. break;
  39933. switch (BuiltinName[19]) {
  39934. default: break;
  39935. case 'b': // 2 strings to match.
  39936. switch (BuiltinName[20]) {
  39937. default: break;
  39938. case '1': // 1 string to match.
  39939. if (memcmp(BuiltinName.data()+21, "28", 2))
  39940. break;
  39941. return Intrinsic::x86_ssse3_pabs_b_128; // "__builtin_ia32_pabsb128"
  39942. case '2': // 1 string to match.
  39943. if (memcmp(BuiltinName.data()+21, "56", 2))
  39944. break;
  39945. return Intrinsic::x86_avx2_pabs_b; // "__builtin_ia32_pabsb256"
  39946. }
  39947. break;
  39948. case 'd': // 2 strings to match.
  39949. switch (BuiltinName[20]) {
  39950. default: break;
  39951. case '1': // 1 string to match.
  39952. if (memcmp(BuiltinName.data()+21, "28", 2))
  39953. break;
  39954. return Intrinsic::x86_ssse3_pabs_d_128; // "__builtin_ia32_pabsd128"
  39955. case '2': // 1 string to match.
  39956. if (memcmp(BuiltinName.data()+21, "56", 2))
  39957. break;
  39958. return Intrinsic::x86_avx2_pabs_d; // "__builtin_ia32_pabsd256"
  39959. }
  39960. break;
  39961. case 'w': // 2 strings to match.
  39962. switch (BuiltinName[20]) {
  39963. default: break;
  39964. case '1': // 1 string to match.
  39965. if (memcmp(BuiltinName.data()+21, "28", 2))
  39966. break;
  39967. return Intrinsic::x86_ssse3_pabs_w_128; // "__builtin_ia32_pabsw128"
  39968. case '2': // 1 string to match.
  39969. if (memcmp(BuiltinName.data()+21, "56", 2))
  39970. break;
  39971. return Intrinsic::x86_avx2_pabs_w; // "__builtin_ia32_pabsw256"
  39972. }
  39973. break;
  39974. }
  39975. break;
  39976. case 'c': // 3 strings to match.
  39977. if (BuiltinName[18] != 'k')
  39978. break;
  39979. switch (BuiltinName[19]) {
  39980. default: break;
  39981. case 's': // 2 strings to match.
  39982. if (BuiltinName[20] != 's')
  39983. break;
  39984. switch (BuiltinName[21]) {
  39985. default: break;
  39986. case 'd': // 1 string to match.
  39987. if (BuiltinName[22] != 'w')
  39988. break;
  39989. return Intrinsic::x86_mmx_packssdw; // "__builtin_ia32_packssdw"
  39990. case 'w': // 1 string to match.
  39991. if (BuiltinName[22] != 'b')
  39992. break;
  39993. return Intrinsic::x86_mmx_packsswb; // "__builtin_ia32_packsswb"
  39994. }
  39995. break;
  39996. case 'u': // 1 string to match.
  39997. if (memcmp(BuiltinName.data()+20, "swb", 3))
  39998. break;
  39999. return Intrinsic::x86_mmx_packuswb; // "__builtin_ia32_packuswb"
  40000. }
  40001. break;
  40002. case 'v': // 4 strings to match.
  40003. if (BuiltinName[18] != 'g')
  40004. break;
  40005. switch (BuiltinName[19]) {
  40006. default: break;
  40007. case 'b': // 2 strings to match.
  40008. switch (BuiltinName[20]) {
  40009. default: break;
  40010. case '1': // 1 string to match.
  40011. if (memcmp(BuiltinName.data()+21, "28", 2))
  40012. break;
  40013. return Intrinsic::x86_sse2_pavg_b; // "__builtin_ia32_pavgb128"
  40014. case '2': // 1 string to match.
  40015. if (memcmp(BuiltinName.data()+21, "56", 2))
  40016. break;
  40017. return Intrinsic::x86_avx2_pavg_b; // "__builtin_ia32_pavgb256"
  40018. }
  40019. break;
  40020. case 'w': // 2 strings to match.
  40021. switch (BuiltinName[20]) {
  40022. default: break;
  40023. case '1': // 1 string to match.
  40024. if (memcmp(BuiltinName.data()+21, "28", 2))
  40025. break;
  40026. return Intrinsic::x86_sse2_pavg_w; // "__builtin_ia32_pavgw128"
  40027. case '2': // 1 string to match.
  40028. if (memcmp(BuiltinName.data()+21, "56", 2))
  40029. break;
  40030. return Intrinsic::x86_avx2_pavg_w; // "__builtin_ia32_pavgw256"
  40031. }
  40032. break;
  40033. }
  40034. break;
  40035. }
  40036. break;
  40037. case 'f': // 3 strings to match.
  40038. if (BuiltinName[17] != 'r')
  40039. break;
  40040. switch (BuiltinName[18]) {
  40041. default: break;
  40042. case 'c': // 2 strings to match.
  40043. if (memcmp(BuiltinName.data()+19, "pit", 3))
  40044. break;
  40045. switch (BuiltinName[22]) {
  40046. default: break;
  40047. case '1': // 1 string to match.
  40048. return Intrinsic::x86_3dnow_pfrcpit1; // "__builtin_ia32_pfrcpit1"
  40049. case '2': // 1 string to match.
  40050. return Intrinsic::x86_3dnow_pfrcpit2; // "__builtin_ia32_pfrcpit2"
  40051. }
  40052. break;
  40053. case 's': // 1 string to match.
  40054. if (memcmp(BuiltinName.data()+19, "qit1", 4))
  40055. break;
  40056. return Intrinsic::x86_3dnow_pfrsqit1; // "__builtin_ia32_pfrsqit1"
  40057. }
  40058. break;
  40059. case 'm': // 2 strings to match.
  40060. switch (BuiltinName[17]) {
  40061. default: break;
  40062. case 'o': // 1 string to match.
  40063. if (memcmp(BuiltinName.data()+18, "vmskb", 5))
  40064. break;
  40065. return Intrinsic::x86_mmx_pmovmskb; // "__builtin_ia32_pmovmskb"
  40066. case 'u': // 1 string to match.
  40067. if (memcmp(BuiltinName.data()+18, "lhrsw", 5))
  40068. break;
  40069. return Intrinsic::x86_ssse3_pmul_hr_sw; // "__builtin_ia32_pmulhrsw"
  40070. }
  40071. break;
  40072. case 's': // 26 strings to match.
  40073. switch (BuiltinName[17]) {
  40074. default: break;
  40075. case 'l': // 10 strings to match.
  40076. if (BuiltinName[18] != 'l')
  40077. break;
  40078. switch (BuiltinName[19]) {
  40079. default: break;
  40080. case 'd': // 2 strings to match.
  40081. switch (BuiltinName[20]) {
  40082. default: break;
  40083. case '1': // 1 string to match.
  40084. if (memcmp(BuiltinName.data()+21, "28", 2))
  40085. break;
  40086. return Intrinsic::x86_sse2_psll_d; // "__builtin_ia32_pslld128"
  40087. case '2': // 1 string to match.
  40088. if (memcmp(BuiltinName.data()+21, "56", 2))
  40089. break;
  40090. return Intrinsic::x86_avx2_psll_d; // "__builtin_ia32_pslld256"
  40091. }
  40092. break;
  40093. case 'q': // 2 strings to match.
  40094. switch (BuiltinName[20]) {
  40095. default: break;
  40096. case '1': // 1 string to match.
  40097. if (memcmp(BuiltinName.data()+21, "28", 2))
  40098. break;
  40099. return Intrinsic::x86_sse2_psll_q; // "__builtin_ia32_psllq128"
  40100. case '2': // 1 string to match.
  40101. if (memcmp(BuiltinName.data()+21, "56", 2))
  40102. break;
  40103. return Intrinsic::x86_avx2_psll_q; // "__builtin_ia32_psllq256"
  40104. }
  40105. break;
  40106. case 'v': // 4 strings to match.
  40107. switch (BuiltinName[20]) {
  40108. default: break;
  40109. case '2': // 1 string to match.
  40110. if (memcmp(BuiltinName.data()+21, "di", 2))
  40111. break;
  40112. return Intrinsic::x86_avx2_psllv_q; // "__builtin_ia32_psllv2di"
  40113. case '4': // 2 strings to match.
  40114. switch (BuiltinName[21]) {
  40115. default: break;
  40116. case 'd': // 1 string to match.
  40117. if (BuiltinName[22] != 'i')
  40118. break;
  40119. return Intrinsic::x86_avx2_psllv_q_256; // "__builtin_ia32_psllv4di"
  40120. case 's': // 1 string to match.
  40121. if (BuiltinName[22] != 'i')
  40122. break;
  40123. return Intrinsic::x86_avx2_psllv_d; // "__builtin_ia32_psllv4si"
  40124. }
  40125. break;
  40126. case '8': // 1 string to match.
  40127. if (memcmp(BuiltinName.data()+21, "si", 2))
  40128. break;
  40129. return Intrinsic::x86_avx2_psllv_d_256; // "__builtin_ia32_psllv8si"
  40130. }
  40131. break;
  40132. case 'w': // 2 strings to match.
  40133. switch (BuiltinName[20]) {
  40134. default: break;
  40135. case '1': // 1 string to match.
  40136. if (memcmp(BuiltinName.data()+21, "28", 2))
  40137. break;
  40138. return Intrinsic::x86_sse2_psll_w; // "__builtin_ia32_psllw128"
  40139. case '2': // 1 string to match.
  40140. if (memcmp(BuiltinName.data()+21, "56", 2))
  40141. break;
  40142. return Intrinsic::x86_avx2_psll_w; // "__builtin_ia32_psllw256"
  40143. }
  40144. break;
  40145. }
  40146. break;
  40147. case 'r': // 16 strings to match.
  40148. switch (BuiltinName[18]) {
  40149. default: break;
  40150. case 'a': // 6 strings to match.
  40151. switch (BuiltinName[19]) {
  40152. default: break;
  40153. case 'd': // 2 strings to match.
  40154. switch (BuiltinName[20]) {
  40155. default: break;
  40156. case '1': // 1 string to match.
  40157. if (memcmp(BuiltinName.data()+21, "28", 2))
  40158. break;
  40159. return Intrinsic::x86_sse2_psra_d; // "__builtin_ia32_psrad128"
  40160. case '2': // 1 string to match.
  40161. if (memcmp(BuiltinName.data()+21, "56", 2))
  40162. break;
  40163. return Intrinsic::x86_avx2_psra_d; // "__builtin_ia32_psrad256"
  40164. }
  40165. break;
  40166. case 'v': // 2 strings to match.
  40167. switch (BuiltinName[20]) {
  40168. default: break;
  40169. case '4': // 1 string to match.
  40170. if (memcmp(BuiltinName.data()+21, "si", 2))
  40171. break;
  40172. return Intrinsic::x86_avx2_psrav_d; // "__builtin_ia32_psrav4si"
  40173. case '8': // 1 string to match.
  40174. if (memcmp(BuiltinName.data()+21, "si", 2))
  40175. break;
  40176. return Intrinsic::x86_avx2_psrav_d_256; // "__builtin_ia32_psrav8si"
  40177. }
  40178. break;
  40179. case 'w': // 2 strings to match.
  40180. switch (BuiltinName[20]) {
  40181. default: break;
  40182. case '1': // 1 string to match.
  40183. if (memcmp(BuiltinName.data()+21, "28", 2))
  40184. break;
  40185. return Intrinsic::x86_sse2_psra_w; // "__builtin_ia32_psraw128"
  40186. case '2': // 1 string to match.
  40187. if (memcmp(BuiltinName.data()+21, "56", 2))
  40188. break;
  40189. return Intrinsic::x86_avx2_psra_w; // "__builtin_ia32_psraw256"
  40190. }
  40191. break;
  40192. }
  40193. break;
  40194. case 'l': // 10 strings to match.
  40195. switch (BuiltinName[19]) {
  40196. default: break;
  40197. case 'd': // 2 strings to match.
  40198. switch (BuiltinName[20]) {
  40199. default: break;
  40200. case '1': // 1 string to match.
  40201. if (memcmp(BuiltinName.data()+21, "28", 2))
  40202. break;
  40203. return Intrinsic::x86_sse2_psrl_d; // "__builtin_ia32_psrld128"
  40204. case '2': // 1 string to match.
  40205. if (memcmp(BuiltinName.data()+21, "56", 2))
  40206. break;
  40207. return Intrinsic::x86_avx2_psrl_d; // "__builtin_ia32_psrld256"
  40208. }
  40209. break;
  40210. case 'q': // 2 strings to match.
  40211. switch (BuiltinName[20]) {
  40212. default: break;
  40213. case '1': // 1 string to match.
  40214. if (memcmp(BuiltinName.data()+21, "28", 2))
  40215. break;
  40216. return Intrinsic::x86_sse2_psrl_q; // "__builtin_ia32_psrlq128"
  40217. case '2': // 1 string to match.
  40218. if (memcmp(BuiltinName.data()+21, "56", 2))
  40219. break;
  40220. return Intrinsic::x86_avx2_psrl_q; // "__builtin_ia32_psrlq256"
  40221. }
  40222. break;
  40223. case 'v': // 4 strings to match.
  40224. switch (BuiltinName[20]) {
  40225. default: break;
  40226. case '2': // 1 string to match.
  40227. if (memcmp(BuiltinName.data()+21, "di", 2))
  40228. break;
  40229. return Intrinsic::x86_avx2_psrlv_q; // "__builtin_ia32_psrlv2di"
  40230. case '4': // 2 strings to match.
  40231. switch (BuiltinName[21]) {
  40232. default: break;
  40233. case 'd': // 1 string to match.
  40234. if (BuiltinName[22] != 'i')
  40235. break;
  40236. return Intrinsic::x86_avx2_psrlv_q_256; // "__builtin_ia32_psrlv4di"
  40237. case 's': // 1 string to match.
  40238. if (BuiltinName[22] != 'i')
  40239. break;
  40240. return Intrinsic::x86_avx2_psrlv_d; // "__builtin_ia32_psrlv4si"
  40241. }
  40242. break;
  40243. case '8': // 1 string to match.
  40244. if (memcmp(BuiltinName.data()+21, "si", 2))
  40245. break;
  40246. return Intrinsic::x86_avx2_psrlv_d_256; // "__builtin_ia32_psrlv8si"
  40247. }
  40248. break;
  40249. case 'w': // 2 strings to match.
  40250. switch (BuiltinName[20]) {
  40251. default: break;
  40252. case '1': // 1 string to match.
  40253. if (memcmp(BuiltinName.data()+21, "28", 2))
  40254. break;
  40255. return Intrinsic::x86_sse2_psrl_w; // "__builtin_ia32_psrlw128"
  40256. case '2': // 1 string to match.
  40257. if (memcmp(BuiltinName.data()+21, "56", 2))
  40258. break;
  40259. return Intrinsic::x86_avx2_psrl_w; // "__builtin_ia32_psrlw256"
  40260. }
  40261. break;
  40262. }
  40263. break;
  40264. }
  40265. break;
  40266. }
  40267. break;
  40268. }
  40269. break;
  40270. case 'r': // 1 string to match.
  40271. if (memcmp(BuiltinName.data()+16, "cpps256", 7))
  40272. break;
  40273. return Intrinsic::x86_avx_rcp_ps_256; // "__builtin_ia32_rcpps256"
  40274. case 's': // 3 strings to match.
  40275. if (memcmp(BuiltinName.data()+16, "tore", 4))
  40276. break;
  40277. switch (BuiltinName[20]) {
  40278. default: break;
  40279. case 'd': // 1 string to match.
  40280. if (memcmp(BuiltinName.data()+21, "qu", 2))
  40281. break;
  40282. return Intrinsic::x86_sse2_storeu_dq; // "__builtin_ia32_storedqu"
  40283. case 'u': // 2 strings to match.
  40284. if (BuiltinName[21] != 'p')
  40285. break;
  40286. switch (BuiltinName[22]) {
  40287. default: break;
  40288. case 'd': // 1 string to match.
  40289. return Intrinsic::x86_sse2_storeu_pd; // "__builtin_ia32_storeupd"
  40290. case 's': // 1 string to match.
  40291. return Intrinsic::x86_sse_storeu_ps; // "__builtin_ia32_storeups"
  40292. }
  40293. break;
  40294. }
  40295. break;
  40296. case 'u': // 1 string to match.
  40297. if (memcmp(BuiltinName.data()+16, "comineq", 7))
  40298. break;
  40299. return Intrinsic::x86_sse_ucomineq_ss; // "__builtin_ia32_ucomineq"
  40300. case 'v': // 13 strings to match.
  40301. switch (BuiltinName[16]) {
  40302. default: break;
  40303. case 'f': // 8 strings to match.
  40304. if (BuiltinName[17] != 'm')
  40305. break;
  40306. switch (BuiltinName[18]) {
  40307. default: break;
  40308. case 'a': // 4 strings to match.
  40309. if (memcmp(BuiltinName.data()+19, "dd", 2))
  40310. break;
  40311. switch (BuiltinName[21]) {
  40312. default: break;
  40313. case 'p': // 2 strings to match.
  40314. switch (BuiltinName[22]) {
  40315. default: break;
  40316. case 'd': // 1 string to match.
  40317. return Intrinsic::x86_fma_vfmadd_pd; // "__builtin_ia32_vfmaddpd"
  40318. case 's': // 1 string to match.
  40319. return Intrinsic::x86_fma_vfmadd_ps; // "__builtin_ia32_vfmaddps"
  40320. }
  40321. break;
  40322. case 's': // 2 strings to match.
  40323. switch (BuiltinName[22]) {
  40324. default: break;
  40325. case 'd': // 1 string to match.
  40326. return Intrinsic::x86_fma_vfmadd_sd; // "__builtin_ia32_vfmaddsd"
  40327. case 's': // 1 string to match.
  40328. return Intrinsic::x86_fma_vfmadd_ss; // "__builtin_ia32_vfmaddss"
  40329. }
  40330. break;
  40331. }
  40332. break;
  40333. case 's': // 4 strings to match.
  40334. if (memcmp(BuiltinName.data()+19, "ub", 2))
  40335. break;
  40336. switch (BuiltinName[21]) {
  40337. default: break;
  40338. case 'p': // 2 strings to match.
  40339. switch (BuiltinName[22]) {
  40340. default: break;
  40341. case 'd': // 1 string to match.
  40342. return Intrinsic::x86_fma_vfmsub_pd; // "__builtin_ia32_vfmsubpd"
  40343. case 's': // 1 string to match.
  40344. return Intrinsic::x86_fma_vfmsub_ps; // "__builtin_ia32_vfmsubps"
  40345. }
  40346. break;
  40347. case 's': // 2 strings to match.
  40348. switch (BuiltinName[22]) {
  40349. default: break;
  40350. case 'd': // 1 string to match.
  40351. return Intrinsic::x86_fma_vfmsub_sd; // "__builtin_ia32_vfmsubsd"
  40352. case 's': // 1 string to match.
  40353. return Intrinsic::x86_fma_vfmsub_ss; // "__builtin_ia32_vfmsubss"
  40354. }
  40355. break;
  40356. }
  40357. break;
  40358. }
  40359. break;
  40360. case 't': // 4 strings to match.
  40361. if (memcmp(BuiltinName.data()+17, "est", 3))
  40362. break;
  40363. switch (BuiltinName[20]) {
  40364. default: break;
  40365. case 'c': // 2 strings to match.
  40366. if (BuiltinName[21] != 'p')
  40367. break;
  40368. switch (BuiltinName[22]) {
  40369. default: break;
  40370. case 'd': // 1 string to match.
  40371. return Intrinsic::x86_avx_vtestc_pd; // "__builtin_ia32_vtestcpd"
  40372. case 's': // 1 string to match.
  40373. return Intrinsic::x86_avx_vtestc_ps; // "__builtin_ia32_vtestcps"
  40374. }
  40375. break;
  40376. case 'z': // 2 strings to match.
  40377. if (BuiltinName[21] != 'p')
  40378. break;
  40379. switch (BuiltinName[22]) {
  40380. default: break;
  40381. case 'd': // 1 string to match.
  40382. return Intrinsic::x86_avx_vtestz_pd; // "__builtin_ia32_vtestzpd"
  40383. case 's': // 1 string to match.
  40384. return Intrinsic::x86_avx_vtestz_ps; // "__builtin_ia32_vtestzps"
  40385. }
  40386. break;
  40387. }
  40388. break;
  40389. case 'z': // 1 string to match.
  40390. if (memcmp(BuiltinName.data()+17, "eroall", 6))
  40391. break;
  40392. return Intrinsic::x86_avx_vzeroall; // "__builtin_ia32_vzeroall"
  40393. }
  40394. break;
  40395. }
  40396. break;
  40397. case 24: // 121 strings to match.
  40398. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  40399. break;
  40400. switch (BuiltinName[15]) {
  40401. default: break;
  40402. case 'a': // 3 strings to match.
  40403. if (memcmp(BuiltinName.data()+16, "es", 2))
  40404. break;
  40405. switch (BuiltinName[18]) {
  40406. default: break;
  40407. case 'd': // 1 string to match.
  40408. if (memcmp(BuiltinName.data()+19, "ec128", 5))
  40409. break;
  40410. return Intrinsic::x86_aesni_aesdec; // "__builtin_ia32_aesdec128"
  40411. case 'e': // 1 string to match.
  40412. if (memcmp(BuiltinName.data()+19, "nc128", 5))
  40413. break;
  40414. return Intrinsic::x86_aesni_aesenc; // "__builtin_ia32_aesenc128"
  40415. case 'i': // 1 string to match.
  40416. if (memcmp(BuiltinName.data()+19, "mc128", 5))
  40417. break;
  40418. return Intrinsic::x86_aesni_aesimc; // "__builtin_ia32_aesimc128"
  40419. }
  40420. break;
  40421. case 'b': // 2 strings to match.
  40422. if (memcmp(BuiltinName.data()+16, "extr_u", 6))
  40423. break;
  40424. switch (BuiltinName[22]) {
  40425. default: break;
  40426. case '3': // 1 string to match.
  40427. if (BuiltinName[23] != '2')
  40428. break;
  40429. return Intrinsic::x86_bmi_bextr_32; // "__builtin_ia32_bextr_u32"
  40430. case '6': // 1 string to match.
  40431. if (BuiltinName[23] != '4')
  40432. break;
  40433. return Intrinsic::x86_bmi_bextr_64; // "__builtin_ia32_bextr_u64"
  40434. }
  40435. break;
  40436. case 'c': // 7 strings to match.
  40437. switch (BuiltinName[16]) {
  40438. default: break;
  40439. case 'o': // 1 string to match.
  40440. if (memcmp(BuiltinName.data()+17, "misdneq", 7))
  40441. break;
  40442. return Intrinsic::x86_sse2_comineq_sd; // "__builtin_ia32_comisdneq"
  40443. case 'v': // 6 strings to match.
  40444. if (memcmp(BuiltinName.data()+17, "tt", 2))
  40445. break;
  40446. switch (BuiltinName[19]) {
  40447. default: break;
  40448. case 'p': // 4 strings to match.
  40449. switch (BuiltinName[20]) {
  40450. default: break;
  40451. case 'd': // 2 strings to match.
  40452. if (BuiltinName[21] != '2')
  40453. break;
  40454. switch (BuiltinName[22]) {
  40455. default: break;
  40456. case 'd': // 1 string to match.
  40457. if (BuiltinName[23] != 'q')
  40458. break;
  40459. return Intrinsic::x86_sse2_cvttpd2dq; // "__builtin_ia32_cvttpd2dq"
  40460. case 'p': // 1 string to match.
  40461. if (BuiltinName[23] != 'i')
  40462. break;
  40463. return Intrinsic::x86_sse_cvttpd2pi; // "__builtin_ia32_cvttpd2pi"
  40464. }
  40465. break;
  40466. case 's': // 2 strings to match.
  40467. if (BuiltinName[21] != '2')
  40468. break;
  40469. switch (BuiltinName[22]) {
  40470. default: break;
  40471. case 'd': // 1 string to match.
  40472. if (BuiltinName[23] != 'q')
  40473. break;
  40474. return Intrinsic::x86_sse2_cvttps2dq; // "__builtin_ia32_cvttps2dq"
  40475. case 'p': // 1 string to match.
  40476. if (BuiltinName[23] != 'i')
  40477. break;
  40478. return Intrinsic::x86_sse_cvttps2pi; // "__builtin_ia32_cvttps2pi"
  40479. }
  40480. break;
  40481. }
  40482. break;
  40483. case 's': // 2 strings to match.
  40484. switch (BuiltinName[20]) {
  40485. default: break;
  40486. case 'd': // 1 string to match.
  40487. if (memcmp(BuiltinName.data()+21, "2si", 3))
  40488. break;
  40489. return Intrinsic::x86_sse2_cvttsd2si; // "__builtin_ia32_cvttsd2si"
  40490. case 's': // 1 string to match.
  40491. if (memcmp(BuiltinName.data()+21, "2si", 3))
  40492. break;
  40493. return Intrinsic::x86_sse_cvttss2si; // "__builtin_ia32_cvttss2si"
  40494. }
  40495. break;
  40496. }
  40497. break;
  40498. }
  40499. break;
  40500. case 'g': // 4 strings to match.
  40501. if (memcmp(BuiltinName.data()+16, "ather", 5))
  40502. break;
  40503. switch (BuiltinName[21]) {
  40504. default: break;
  40505. case 'd': // 2 strings to match.
  40506. if (BuiltinName[22] != '_')
  40507. break;
  40508. switch (BuiltinName[23]) {
  40509. default: break;
  40510. case 'd': // 1 string to match.
  40511. return Intrinsic::x86_avx2_gather_d_d; // "__builtin_ia32_gatherd_d"
  40512. case 'q': // 1 string to match.
  40513. return Intrinsic::x86_avx2_gather_d_q; // "__builtin_ia32_gatherd_q"
  40514. }
  40515. break;
  40516. case 'q': // 2 strings to match.
  40517. if (BuiltinName[22] != '_')
  40518. break;
  40519. switch (BuiltinName[23]) {
  40520. default: break;
  40521. case 'd': // 1 string to match.
  40522. return Intrinsic::x86_avx2_gather_q_d; // "__builtin_ia32_gatherq_d"
  40523. case 'q': // 1 string to match.
  40524. return Intrinsic::x86_avx2_gather_q_q; // "__builtin_ia32_gatherq_q"
  40525. }
  40526. break;
  40527. }
  40528. break;
  40529. case 'h': // 4 strings to match.
  40530. switch (BuiltinName[16]) {
  40531. default: break;
  40532. case 'a': // 2 strings to match.
  40533. if (memcmp(BuiltinName.data()+17, "ddp", 3))
  40534. break;
  40535. switch (BuiltinName[20]) {
  40536. default: break;
  40537. case 'd': // 1 string to match.
  40538. if (memcmp(BuiltinName.data()+21, "256", 3))
  40539. break;
  40540. return Intrinsic::x86_avx_hadd_pd_256; // "__builtin_ia32_haddpd256"
  40541. case 's': // 1 string to match.
  40542. if (memcmp(BuiltinName.data()+21, "256", 3))
  40543. break;
  40544. return Intrinsic::x86_avx_hadd_ps_256; // "__builtin_ia32_haddps256"
  40545. }
  40546. break;
  40547. case 's': // 2 strings to match.
  40548. if (memcmp(BuiltinName.data()+17, "ubp", 3))
  40549. break;
  40550. switch (BuiltinName[20]) {
  40551. default: break;
  40552. case 'd': // 1 string to match.
  40553. if (memcmp(BuiltinName.data()+21, "256", 3))
  40554. break;
  40555. return Intrinsic::x86_avx_hsub_pd_256; // "__builtin_ia32_hsubpd256"
  40556. case 's': // 1 string to match.
  40557. if (memcmp(BuiltinName.data()+21, "256", 3))
  40558. break;
  40559. return Intrinsic::x86_avx_hsub_ps_256; // "__builtin_ia32_hsubps256"
  40560. }
  40561. break;
  40562. }
  40563. break;
  40564. case 'm': // 2 strings to match.
  40565. if (memcmp(BuiltinName.data()+16, "askload", 7))
  40566. break;
  40567. switch (BuiltinName[23]) {
  40568. default: break;
  40569. case 'd': // 1 string to match.
  40570. return Intrinsic::x86_avx2_maskload_d; // "__builtin_ia32_maskloadd"
  40571. case 'q': // 1 string to match.
  40572. return Intrinsic::x86_avx2_maskload_q; // "__builtin_ia32_maskloadq"
  40573. }
  40574. break;
  40575. case 'p': // 82 strings to match.
  40576. switch (BuiltinName[16]) {
  40577. default: break;
  40578. case 'a': // 4 strings to match.
  40579. if (memcmp(BuiltinName.data()+17, "dds", 3))
  40580. break;
  40581. switch (BuiltinName[20]) {
  40582. default: break;
  40583. case 'b': // 2 strings to match.
  40584. switch (BuiltinName[21]) {
  40585. default: break;
  40586. case '1': // 1 string to match.
  40587. if (memcmp(BuiltinName.data()+22, "28", 2))
  40588. break;
  40589. return Intrinsic::x86_sse2_padds_b; // "__builtin_ia32_paddsb128"
  40590. case '2': // 1 string to match.
  40591. if (memcmp(BuiltinName.data()+22, "56", 2))
  40592. break;
  40593. return Intrinsic::x86_avx2_padds_b; // "__builtin_ia32_paddsb256"
  40594. }
  40595. break;
  40596. case 'w': // 2 strings to match.
  40597. switch (BuiltinName[21]) {
  40598. default: break;
  40599. case '1': // 1 string to match.
  40600. if (memcmp(BuiltinName.data()+22, "28", 2))
  40601. break;
  40602. return Intrinsic::x86_sse2_padds_w; // "__builtin_ia32_paddsw128"
  40603. case '2': // 1 string to match.
  40604. if (memcmp(BuiltinName.data()+22, "56", 2))
  40605. break;
  40606. return Intrinsic::x86_avx2_padds_w; // "__builtin_ia32_paddsw256"
  40607. }
  40608. break;
  40609. }
  40610. break;
  40611. case 'e': // 1 string to match.
  40612. if (memcmp(BuiltinName.data()+17, "rmti256", 7))
  40613. break;
  40614. return Intrinsic::x86_avx2_vperm2i128; // "__builtin_ia32_permti256"
  40615. case 'h': // 8 strings to match.
  40616. switch (BuiltinName[17]) {
  40617. default: break;
  40618. case 'a': // 4 strings to match.
  40619. if (memcmp(BuiltinName.data()+18, "dd", 2))
  40620. break;
  40621. switch (BuiltinName[20]) {
  40622. default: break;
  40623. case 'd': // 2 strings to match.
  40624. switch (BuiltinName[21]) {
  40625. default: break;
  40626. case '1': // 1 string to match.
  40627. if (memcmp(BuiltinName.data()+22, "28", 2))
  40628. break;
  40629. return Intrinsic::x86_ssse3_phadd_d_128; // "__builtin_ia32_phaddd128"
  40630. case '2': // 1 string to match.
  40631. if (memcmp(BuiltinName.data()+22, "56", 2))
  40632. break;
  40633. return Intrinsic::x86_avx2_phadd_d; // "__builtin_ia32_phaddd256"
  40634. }
  40635. break;
  40636. case 'w': // 2 strings to match.
  40637. switch (BuiltinName[21]) {
  40638. default: break;
  40639. case '1': // 1 string to match.
  40640. if (memcmp(BuiltinName.data()+22, "28", 2))
  40641. break;
  40642. return Intrinsic::x86_ssse3_phadd_w_128; // "__builtin_ia32_phaddw128"
  40643. case '2': // 1 string to match.
  40644. if (memcmp(BuiltinName.data()+22, "56", 2))
  40645. break;
  40646. return Intrinsic::x86_avx2_phadd_w; // "__builtin_ia32_phaddw256"
  40647. }
  40648. break;
  40649. }
  40650. break;
  40651. case 's': // 4 strings to match.
  40652. if (memcmp(BuiltinName.data()+18, "ub", 2))
  40653. break;
  40654. switch (BuiltinName[20]) {
  40655. default: break;
  40656. case 'd': // 2 strings to match.
  40657. switch (BuiltinName[21]) {
  40658. default: break;
  40659. case '1': // 1 string to match.
  40660. if (memcmp(BuiltinName.data()+22, "28", 2))
  40661. break;
  40662. return Intrinsic::x86_ssse3_phsub_d_128; // "__builtin_ia32_phsubd128"
  40663. case '2': // 1 string to match.
  40664. if (memcmp(BuiltinName.data()+22, "56", 2))
  40665. break;
  40666. return Intrinsic::x86_avx2_phsub_d; // "__builtin_ia32_phsubd256"
  40667. }
  40668. break;
  40669. case 'w': // 2 strings to match.
  40670. switch (BuiltinName[21]) {
  40671. default: break;
  40672. case '1': // 1 string to match.
  40673. if (memcmp(BuiltinName.data()+22, "28", 2))
  40674. break;
  40675. return Intrinsic::x86_ssse3_phsub_w_128; // "__builtin_ia32_phsubw128"
  40676. case '2': // 1 string to match.
  40677. if (memcmp(BuiltinName.data()+22, "56", 2))
  40678. break;
  40679. return Intrinsic::x86_avx2_phsub_w; // "__builtin_ia32_phsubw256"
  40680. }
  40681. break;
  40682. }
  40683. break;
  40684. }
  40685. break;
  40686. case 'm': // 29 strings to match.
  40687. switch (BuiltinName[17]) {
  40688. default: break;
  40689. case 'a': // 13 strings to match.
  40690. switch (BuiltinName[18]) {
  40691. default: break;
  40692. case 'd': // 1 string to match.
  40693. if (memcmp(BuiltinName.data()+19, "dubsw", 5))
  40694. break;
  40695. return Intrinsic::x86_ssse3_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw"
  40696. case 'x': // 12 strings to match.
  40697. switch (BuiltinName[19]) {
  40698. default: break;
  40699. case 's': // 6 strings to match.
  40700. switch (BuiltinName[20]) {
  40701. default: break;
  40702. case 'b': // 2 strings to match.
  40703. switch (BuiltinName[21]) {
  40704. default: break;
  40705. case '1': // 1 string to match.
  40706. if (memcmp(BuiltinName.data()+22, "28", 2))
  40707. break;
  40708. return Intrinsic::x86_sse41_pmaxsb; // "__builtin_ia32_pmaxsb128"
  40709. case '2': // 1 string to match.
  40710. if (memcmp(BuiltinName.data()+22, "56", 2))
  40711. break;
  40712. return Intrinsic::x86_avx2_pmaxs_b; // "__builtin_ia32_pmaxsb256"
  40713. }
  40714. break;
  40715. case 'd': // 2 strings to match.
  40716. switch (BuiltinName[21]) {
  40717. default: break;
  40718. case '1': // 1 string to match.
  40719. if (memcmp(BuiltinName.data()+22, "28", 2))
  40720. break;
  40721. return Intrinsic::x86_sse41_pmaxsd; // "__builtin_ia32_pmaxsd128"
  40722. case '2': // 1 string to match.
  40723. if (memcmp(BuiltinName.data()+22, "56", 2))
  40724. break;
  40725. return Intrinsic::x86_avx2_pmaxs_d; // "__builtin_ia32_pmaxsd256"
  40726. }
  40727. break;
  40728. case 'w': // 2 strings to match.
  40729. switch (BuiltinName[21]) {
  40730. default: break;
  40731. case '1': // 1 string to match.
  40732. if (memcmp(BuiltinName.data()+22, "28", 2))
  40733. break;
  40734. return Intrinsic::x86_sse2_pmaxs_w; // "__builtin_ia32_pmaxsw128"
  40735. case '2': // 1 string to match.
  40736. if (memcmp(BuiltinName.data()+22, "56", 2))
  40737. break;
  40738. return Intrinsic::x86_avx2_pmaxs_w; // "__builtin_ia32_pmaxsw256"
  40739. }
  40740. break;
  40741. }
  40742. break;
  40743. case 'u': // 6 strings to match.
  40744. switch (BuiltinName[20]) {
  40745. default: break;
  40746. case 'b': // 2 strings to match.
  40747. switch (BuiltinName[21]) {
  40748. default: break;
  40749. case '1': // 1 string to match.
  40750. if (memcmp(BuiltinName.data()+22, "28", 2))
  40751. break;
  40752. return Intrinsic::x86_sse2_pmaxu_b; // "__builtin_ia32_pmaxub128"
  40753. case '2': // 1 string to match.
  40754. if (memcmp(BuiltinName.data()+22, "56", 2))
  40755. break;
  40756. return Intrinsic::x86_avx2_pmaxu_b; // "__builtin_ia32_pmaxub256"
  40757. }
  40758. break;
  40759. case 'd': // 2 strings to match.
  40760. switch (BuiltinName[21]) {
  40761. default: break;
  40762. case '1': // 1 string to match.
  40763. if (memcmp(BuiltinName.data()+22, "28", 2))
  40764. break;
  40765. return Intrinsic::x86_sse41_pmaxud; // "__builtin_ia32_pmaxud128"
  40766. case '2': // 1 string to match.
  40767. if (memcmp(BuiltinName.data()+22, "56", 2))
  40768. break;
  40769. return Intrinsic::x86_avx2_pmaxu_d; // "__builtin_ia32_pmaxud256"
  40770. }
  40771. break;
  40772. case 'w': // 2 strings to match.
  40773. switch (BuiltinName[21]) {
  40774. default: break;
  40775. case '1': // 1 string to match.
  40776. if (memcmp(BuiltinName.data()+22, "28", 2))
  40777. break;
  40778. return Intrinsic::x86_sse41_pmaxuw; // "__builtin_ia32_pmaxuw128"
  40779. case '2': // 1 string to match.
  40780. if (memcmp(BuiltinName.data()+22, "56", 2))
  40781. break;
  40782. return Intrinsic::x86_avx2_pmaxu_w; // "__builtin_ia32_pmaxuw256"
  40783. }
  40784. break;
  40785. }
  40786. break;
  40787. }
  40788. break;
  40789. }
  40790. break;
  40791. case 'i': // 12 strings to match.
  40792. if (BuiltinName[18] != 'n')
  40793. break;
  40794. switch (BuiltinName[19]) {
  40795. default: break;
  40796. case 's': // 6 strings to match.
  40797. switch (BuiltinName[20]) {
  40798. default: break;
  40799. case 'b': // 2 strings to match.
  40800. switch (BuiltinName[21]) {
  40801. default: break;
  40802. case '1': // 1 string to match.
  40803. if (memcmp(BuiltinName.data()+22, "28", 2))
  40804. break;
  40805. return Intrinsic::x86_sse41_pminsb; // "__builtin_ia32_pminsb128"
  40806. case '2': // 1 string to match.
  40807. if (memcmp(BuiltinName.data()+22, "56", 2))
  40808. break;
  40809. return Intrinsic::x86_avx2_pmins_b; // "__builtin_ia32_pminsb256"
  40810. }
  40811. break;
  40812. case 'd': // 2 strings to match.
  40813. switch (BuiltinName[21]) {
  40814. default: break;
  40815. case '1': // 1 string to match.
  40816. if (memcmp(BuiltinName.data()+22, "28", 2))
  40817. break;
  40818. return Intrinsic::x86_sse41_pminsd; // "__builtin_ia32_pminsd128"
  40819. case '2': // 1 string to match.
  40820. if (memcmp(BuiltinName.data()+22, "56", 2))
  40821. break;
  40822. return Intrinsic::x86_avx2_pmins_d; // "__builtin_ia32_pminsd256"
  40823. }
  40824. break;
  40825. case 'w': // 2 strings to match.
  40826. switch (BuiltinName[21]) {
  40827. default: break;
  40828. case '1': // 1 string to match.
  40829. if (memcmp(BuiltinName.data()+22, "28", 2))
  40830. break;
  40831. return Intrinsic::x86_sse2_pmins_w; // "__builtin_ia32_pminsw128"
  40832. case '2': // 1 string to match.
  40833. if (memcmp(BuiltinName.data()+22, "56", 2))
  40834. break;
  40835. return Intrinsic::x86_avx2_pmins_w; // "__builtin_ia32_pminsw256"
  40836. }
  40837. break;
  40838. }
  40839. break;
  40840. case 'u': // 6 strings to match.
  40841. switch (BuiltinName[20]) {
  40842. default: break;
  40843. case 'b': // 2 strings to match.
  40844. switch (BuiltinName[21]) {
  40845. default: break;
  40846. case '1': // 1 string to match.
  40847. if (memcmp(BuiltinName.data()+22, "28", 2))
  40848. break;
  40849. return Intrinsic::x86_sse2_pminu_b; // "__builtin_ia32_pminub128"
  40850. case '2': // 1 string to match.
  40851. if (memcmp(BuiltinName.data()+22, "56", 2))
  40852. break;
  40853. return Intrinsic::x86_avx2_pminu_b; // "__builtin_ia32_pminub256"
  40854. }
  40855. break;
  40856. case 'd': // 2 strings to match.
  40857. switch (BuiltinName[21]) {
  40858. default: break;
  40859. case '1': // 1 string to match.
  40860. if (memcmp(BuiltinName.data()+22, "28", 2))
  40861. break;
  40862. return Intrinsic::x86_sse41_pminud; // "__builtin_ia32_pminud128"
  40863. case '2': // 1 string to match.
  40864. if (memcmp(BuiltinName.data()+22, "56", 2))
  40865. break;
  40866. return Intrinsic::x86_avx2_pminu_d; // "__builtin_ia32_pminud256"
  40867. }
  40868. break;
  40869. case 'w': // 2 strings to match.
  40870. switch (BuiltinName[21]) {
  40871. default: break;
  40872. case '1': // 1 string to match.
  40873. if (memcmp(BuiltinName.data()+22, "28", 2))
  40874. break;
  40875. return Intrinsic::x86_sse41_pminuw; // "__builtin_ia32_pminuw128"
  40876. case '2': // 1 string to match.
  40877. if (memcmp(BuiltinName.data()+22, "56", 2))
  40878. break;
  40879. return Intrinsic::x86_avx2_pminu_w; // "__builtin_ia32_pminuw256"
  40880. }
  40881. break;
  40882. }
  40883. break;
  40884. }
  40885. break;
  40886. case 'u': // 4 strings to match.
  40887. if (BuiltinName[18] != 'l')
  40888. break;
  40889. switch (BuiltinName[19]) {
  40890. default: break;
  40891. case 'd': // 2 strings to match.
  40892. if (BuiltinName[20] != 'q')
  40893. break;
  40894. switch (BuiltinName[21]) {
  40895. default: break;
  40896. case '1': // 1 string to match.
  40897. if (memcmp(BuiltinName.data()+22, "28", 2))
  40898. break;
  40899. return Intrinsic::x86_sse41_pmuldq; // "__builtin_ia32_pmuldq128"
  40900. case '2': // 1 string to match.
  40901. if (memcmp(BuiltinName.data()+22, "56", 2))
  40902. break;
  40903. return Intrinsic::x86_avx2_pmul_dq; // "__builtin_ia32_pmuldq256"
  40904. }
  40905. break;
  40906. case 'h': // 2 strings to match.
  40907. if (BuiltinName[20] != 'w')
  40908. break;
  40909. switch (BuiltinName[21]) {
  40910. default: break;
  40911. case '1': // 1 string to match.
  40912. if (memcmp(BuiltinName.data()+22, "28", 2))
  40913. break;
  40914. return Intrinsic::x86_sse2_pmulh_w; // "__builtin_ia32_pmulhw128"
  40915. case '2': // 1 string to match.
  40916. if (memcmp(BuiltinName.data()+22, "56", 2))
  40917. break;
  40918. return Intrinsic::x86_avx2_pmulh_w; // "__builtin_ia32_pmulhw256"
  40919. }
  40920. break;
  40921. }
  40922. break;
  40923. }
  40924. break;
  40925. case 's': // 30 strings to match.
  40926. switch (BuiltinName[17]) {
  40927. default: break;
  40928. case 'a': // 2 strings to match.
  40929. if (memcmp(BuiltinName.data()+18, "dbw", 3))
  40930. break;
  40931. switch (BuiltinName[21]) {
  40932. default: break;
  40933. case '1': // 1 string to match.
  40934. if (memcmp(BuiltinName.data()+22, "28", 2))
  40935. break;
  40936. return Intrinsic::x86_sse2_psad_bw; // "__builtin_ia32_psadbw128"
  40937. case '2': // 1 string to match.
  40938. if (memcmp(BuiltinName.data()+22, "56", 2))
  40939. break;
  40940. return Intrinsic::x86_avx2_psad_bw; // "__builtin_ia32_psadbw256"
  40941. }
  40942. break;
  40943. case 'h': // 2 strings to match.
  40944. if (memcmp(BuiltinName.data()+18, "ufb", 3))
  40945. break;
  40946. switch (BuiltinName[21]) {
  40947. default: break;
  40948. case '1': // 1 string to match.
  40949. if (memcmp(BuiltinName.data()+22, "28", 2))
  40950. break;
  40951. return Intrinsic::x86_ssse3_pshuf_b_128; // "__builtin_ia32_pshufb128"
  40952. case '2': // 1 string to match.
  40953. if (memcmp(BuiltinName.data()+22, "56", 2))
  40954. break;
  40955. return Intrinsic::x86_avx2_pshuf_b; // "__builtin_ia32_pshufb256"
  40956. }
  40957. break;
  40958. case 'i': // 6 strings to match.
  40959. if (memcmp(BuiltinName.data()+18, "gn", 2))
  40960. break;
  40961. switch (BuiltinName[20]) {
  40962. default: break;
  40963. case 'b': // 2 strings to match.
  40964. switch (BuiltinName[21]) {
  40965. default: break;
  40966. case '1': // 1 string to match.
  40967. if (memcmp(BuiltinName.data()+22, "28", 2))
  40968. break;
  40969. return Intrinsic::x86_ssse3_psign_b_128; // "__builtin_ia32_psignb128"
  40970. case '2': // 1 string to match.
  40971. if (memcmp(BuiltinName.data()+22, "56", 2))
  40972. break;
  40973. return Intrinsic::x86_avx2_psign_b; // "__builtin_ia32_psignb256"
  40974. }
  40975. break;
  40976. case 'd': // 2 strings to match.
  40977. switch (BuiltinName[21]) {
  40978. default: break;
  40979. case '1': // 1 string to match.
  40980. if (memcmp(BuiltinName.data()+22, "28", 2))
  40981. break;
  40982. return Intrinsic::x86_ssse3_psign_d_128; // "__builtin_ia32_psignd128"
  40983. case '2': // 1 string to match.
  40984. if (memcmp(BuiltinName.data()+22, "56", 2))
  40985. break;
  40986. return Intrinsic::x86_avx2_psign_d; // "__builtin_ia32_psignd256"
  40987. }
  40988. break;
  40989. case 'w': // 2 strings to match.
  40990. switch (BuiltinName[21]) {
  40991. default: break;
  40992. case '1': // 1 string to match.
  40993. if (memcmp(BuiltinName.data()+22, "28", 2))
  40994. break;
  40995. return Intrinsic::x86_ssse3_psign_w_128; // "__builtin_ia32_psignw128"
  40996. case '2': // 1 string to match.
  40997. if (memcmp(BuiltinName.data()+22, "56", 2))
  40998. break;
  40999. return Intrinsic::x86_avx2_psign_w; // "__builtin_ia32_psignw256"
  41000. }
  41001. break;
  41002. }
  41003. break;
  41004. case 'l': // 6 strings to match.
  41005. if (BuiltinName[18] != 'l')
  41006. break;
  41007. switch (BuiltinName[19]) {
  41008. default: break;
  41009. case 'd': // 2 strings to match.
  41010. if (BuiltinName[20] != 'i')
  41011. break;
  41012. switch (BuiltinName[21]) {
  41013. default: break;
  41014. case '1': // 1 string to match.
  41015. if (memcmp(BuiltinName.data()+22, "28", 2))
  41016. break;
  41017. return Intrinsic::x86_sse2_pslli_d; // "__builtin_ia32_pslldi128"
  41018. case '2': // 1 string to match.
  41019. if (memcmp(BuiltinName.data()+22, "56", 2))
  41020. break;
  41021. return Intrinsic::x86_avx2_pslli_d; // "__builtin_ia32_pslldi256"
  41022. }
  41023. break;
  41024. case 'q': // 2 strings to match.
  41025. if (BuiltinName[20] != 'i')
  41026. break;
  41027. switch (BuiltinName[21]) {
  41028. default: break;
  41029. case '1': // 1 string to match.
  41030. if (memcmp(BuiltinName.data()+22, "28", 2))
  41031. break;
  41032. return Intrinsic::x86_sse2_pslli_q; // "__builtin_ia32_psllqi128"
  41033. case '2': // 1 string to match.
  41034. if (memcmp(BuiltinName.data()+22, "56", 2))
  41035. break;
  41036. return Intrinsic::x86_avx2_pslli_q; // "__builtin_ia32_psllqi256"
  41037. }
  41038. break;
  41039. case 'w': // 2 strings to match.
  41040. if (BuiltinName[20] != 'i')
  41041. break;
  41042. switch (BuiltinName[21]) {
  41043. default: break;
  41044. case '1': // 1 string to match.
  41045. if (memcmp(BuiltinName.data()+22, "28", 2))
  41046. break;
  41047. return Intrinsic::x86_sse2_pslli_w; // "__builtin_ia32_psllwi128"
  41048. case '2': // 1 string to match.
  41049. if (memcmp(BuiltinName.data()+22, "56", 2))
  41050. break;
  41051. return Intrinsic::x86_avx2_pslli_w; // "__builtin_ia32_psllwi256"
  41052. }
  41053. break;
  41054. }
  41055. break;
  41056. case 'r': // 10 strings to match.
  41057. switch (BuiltinName[18]) {
  41058. default: break;
  41059. case 'a': // 4 strings to match.
  41060. switch (BuiltinName[19]) {
  41061. default: break;
  41062. case 'd': // 2 strings to match.
  41063. if (BuiltinName[20] != 'i')
  41064. break;
  41065. switch (BuiltinName[21]) {
  41066. default: break;
  41067. case '1': // 1 string to match.
  41068. if (memcmp(BuiltinName.data()+22, "28", 2))
  41069. break;
  41070. return Intrinsic::x86_sse2_psrai_d; // "__builtin_ia32_psradi128"
  41071. case '2': // 1 string to match.
  41072. if (memcmp(BuiltinName.data()+22, "56", 2))
  41073. break;
  41074. return Intrinsic::x86_avx2_psrai_d; // "__builtin_ia32_psradi256"
  41075. }
  41076. break;
  41077. case 'w': // 2 strings to match.
  41078. if (BuiltinName[20] != 'i')
  41079. break;
  41080. switch (BuiltinName[21]) {
  41081. default: break;
  41082. case '1': // 1 string to match.
  41083. if (memcmp(BuiltinName.data()+22, "28", 2))
  41084. break;
  41085. return Intrinsic::x86_sse2_psrai_w; // "__builtin_ia32_psrawi128"
  41086. case '2': // 1 string to match.
  41087. if (memcmp(BuiltinName.data()+22, "56", 2))
  41088. break;
  41089. return Intrinsic::x86_avx2_psrai_w; // "__builtin_ia32_psrawi256"
  41090. }
  41091. break;
  41092. }
  41093. break;
  41094. case 'l': // 6 strings to match.
  41095. switch (BuiltinName[19]) {
  41096. default: break;
  41097. case 'd': // 2 strings to match.
  41098. if (BuiltinName[20] != 'i')
  41099. break;
  41100. switch (BuiltinName[21]) {
  41101. default: break;
  41102. case '1': // 1 string to match.
  41103. if (memcmp(BuiltinName.data()+22, "28", 2))
  41104. break;
  41105. return Intrinsic::x86_sse2_psrli_d; // "__builtin_ia32_psrldi128"
  41106. case '2': // 1 string to match.
  41107. if (memcmp(BuiltinName.data()+22, "56", 2))
  41108. break;
  41109. return Intrinsic::x86_avx2_psrli_d; // "__builtin_ia32_psrldi256"
  41110. }
  41111. break;
  41112. case 'q': // 2 strings to match.
  41113. if (BuiltinName[20] != 'i')
  41114. break;
  41115. switch (BuiltinName[21]) {
  41116. default: break;
  41117. case '1': // 1 string to match.
  41118. if (memcmp(BuiltinName.data()+22, "28", 2))
  41119. break;
  41120. return Intrinsic::x86_sse2_psrli_q; // "__builtin_ia32_psrlqi128"
  41121. case '2': // 1 string to match.
  41122. if (memcmp(BuiltinName.data()+22, "56", 2))
  41123. break;
  41124. return Intrinsic::x86_avx2_psrli_q; // "__builtin_ia32_psrlqi256"
  41125. }
  41126. break;
  41127. case 'w': // 2 strings to match.
  41128. if (BuiltinName[20] != 'i')
  41129. break;
  41130. switch (BuiltinName[21]) {
  41131. default: break;
  41132. case '1': // 1 string to match.
  41133. if (memcmp(BuiltinName.data()+22, "28", 2))
  41134. break;
  41135. return Intrinsic::x86_sse2_psrli_w; // "__builtin_ia32_psrlwi128"
  41136. case '2': // 1 string to match.
  41137. if (memcmp(BuiltinName.data()+22, "56", 2))
  41138. break;
  41139. return Intrinsic::x86_avx2_psrli_w; // "__builtin_ia32_psrlwi256"
  41140. }
  41141. break;
  41142. }
  41143. break;
  41144. }
  41145. break;
  41146. case 'u': // 4 strings to match.
  41147. if (memcmp(BuiltinName.data()+18, "bs", 2))
  41148. break;
  41149. switch (BuiltinName[20]) {
  41150. default: break;
  41151. case 'b': // 2 strings to match.
  41152. switch (BuiltinName[21]) {
  41153. default: break;
  41154. case '1': // 1 string to match.
  41155. if (memcmp(BuiltinName.data()+22, "28", 2))
  41156. break;
  41157. return Intrinsic::x86_sse2_psubs_b; // "__builtin_ia32_psubsb128"
  41158. case '2': // 1 string to match.
  41159. if (memcmp(BuiltinName.data()+22, "56", 2))
  41160. break;
  41161. return Intrinsic::x86_avx2_psubs_b; // "__builtin_ia32_psubsb256"
  41162. }
  41163. break;
  41164. case 'w': // 2 strings to match.
  41165. switch (BuiltinName[21]) {
  41166. default: break;
  41167. case '1': // 1 string to match.
  41168. if (memcmp(BuiltinName.data()+22, "28", 2))
  41169. break;
  41170. return Intrinsic::x86_sse2_psubs_w; // "__builtin_ia32_psubsw128"
  41171. case '2': // 1 string to match.
  41172. if (memcmp(BuiltinName.data()+22, "56", 2))
  41173. break;
  41174. return Intrinsic::x86_avx2_psubs_w; // "__builtin_ia32_psubsw256"
  41175. }
  41176. break;
  41177. }
  41178. break;
  41179. }
  41180. break;
  41181. case 't': // 4 strings to match.
  41182. if (memcmp(BuiltinName.data()+17, "est", 3))
  41183. break;
  41184. switch (BuiltinName[20]) {
  41185. default: break;
  41186. case 'c': // 2 strings to match.
  41187. switch (BuiltinName[21]) {
  41188. default: break;
  41189. case '1': // 1 string to match.
  41190. if (memcmp(BuiltinName.data()+22, "28", 2))
  41191. break;
  41192. return Intrinsic::x86_sse41_ptestc; // "__builtin_ia32_ptestc128"
  41193. case '2': // 1 string to match.
  41194. if (memcmp(BuiltinName.data()+22, "56", 2))
  41195. break;
  41196. return Intrinsic::x86_avx_ptestc_256; // "__builtin_ia32_ptestc256"
  41197. }
  41198. break;
  41199. case 'z': // 2 strings to match.
  41200. switch (BuiltinName[21]) {
  41201. default: break;
  41202. case '1': // 1 string to match.
  41203. if (memcmp(BuiltinName.data()+22, "28", 2))
  41204. break;
  41205. return Intrinsic::x86_sse41_ptestz; // "__builtin_ia32_ptestz128"
  41206. case '2': // 1 string to match.
  41207. if (memcmp(BuiltinName.data()+22, "56", 2))
  41208. break;
  41209. return Intrinsic::x86_avx_ptestz_256; // "__builtin_ia32_ptestz256"
  41210. }
  41211. break;
  41212. }
  41213. break;
  41214. case 'u': // 6 strings to match.
  41215. if (memcmp(BuiltinName.data()+17, "npck", 4))
  41216. break;
  41217. switch (BuiltinName[21]) {
  41218. default: break;
  41219. case 'h': // 3 strings to match.
  41220. switch (BuiltinName[22]) {
  41221. default: break;
  41222. case 'b': // 1 string to match.
  41223. if (BuiltinName[23] != 'w')
  41224. break;
  41225. return Intrinsic::x86_mmx_punpckhbw; // "__builtin_ia32_punpckhbw"
  41226. case 'd': // 1 string to match.
  41227. if (BuiltinName[23] != 'q')
  41228. break;
  41229. return Intrinsic::x86_mmx_punpckhdq; // "__builtin_ia32_punpckhdq"
  41230. case 'w': // 1 string to match.
  41231. if (BuiltinName[23] != 'd')
  41232. break;
  41233. return Intrinsic::x86_mmx_punpckhwd; // "__builtin_ia32_punpckhwd"
  41234. }
  41235. break;
  41236. case 'l': // 3 strings to match.
  41237. switch (BuiltinName[22]) {
  41238. default: break;
  41239. case 'b': // 1 string to match.
  41240. if (BuiltinName[23] != 'w')
  41241. break;
  41242. return Intrinsic::x86_mmx_punpcklbw; // "__builtin_ia32_punpcklbw"
  41243. case 'd': // 1 string to match.
  41244. if (BuiltinName[23] != 'q')
  41245. break;
  41246. return Intrinsic::x86_mmx_punpckldq; // "__builtin_ia32_punpckldq"
  41247. case 'w': // 1 string to match.
  41248. if (BuiltinName[23] != 'd')
  41249. break;
  41250. return Intrinsic::x86_mmx_punpcklwd; // "__builtin_ia32_punpcklwd"
  41251. }
  41252. break;
  41253. }
  41254. break;
  41255. }
  41256. break;
  41257. case 's': // 2 strings to match.
  41258. if (memcmp(BuiltinName.data()+16, "qrtp", 4))
  41259. break;
  41260. switch (BuiltinName[20]) {
  41261. default: break;
  41262. case 'd': // 1 string to match.
  41263. if (memcmp(BuiltinName.data()+21, "256", 3))
  41264. break;
  41265. return Intrinsic::x86_avx_sqrt_pd_256; // "__builtin_ia32_sqrtpd256"
  41266. case 's': // 1 string to match.
  41267. if (memcmp(BuiltinName.data()+21, "256", 3))
  41268. break;
  41269. return Intrinsic::x86_avx_sqrt_ps_256; // "__builtin_ia32_sqrtps256"
  41270. }
  41271. break;
  41272. case 'u': // 5 strings to match.
  41273. if (memcmp(BuiltinName.data()+16, "comisd", 6))
  41274. break;
  41275. switch (BuiltinName[22]) {
  41276. default: break;
  41277. case 'e': // 1 string to match.
  41278. if (BuiltinName[23] != 'q')
  41279. break;
  41280. return Intrinsic::x86_sse2_ucomieq_sd; // "__builtin_ia32_ucomisdeq"
  41281. case 'g': // 2 strings to match.
  41282. switch (BuiltinName[23]) {
  41283. default: break;
  41284. case 'e': // 1 string to match.
  41285. return Intrinsic::x86_sse2_ucomige_sd; // "__builtin_ia32_ucomisdge"
  41286. case 't': // 1 string to match.
  41287. return Intrinsic::x86_sse2_ucomigt_sd; // "__builtin_ia32_ucomisdgt"
  41288. }
  41289. break;
  41290. case 'l': // 2 strings to match.
  41291. switch (BuiltinName[23]) {
  41292. default: break;
  41293. case 'e': // 1 string to match.
  41294. return Intrinsic::x86_sse2_ucomile_sd; // "__builtin_ia32_ucomisdle"
  41295. case 't': // 1 string to match.
  41296. return Intrinsic::x86_sse2_ucomilt_sd; // "__builtin_ia32_ucomisdlt"
  41297. }
  41298. break;
  41299. }
  41300. break;
  41301. case 'v': // 10 strings to match.
  41302. switch (BuiltinName[16]) {
  41303. default: break;
  41304. case 'c': // 2 strings to match.
  41305. if (memcmp(BuiltinName.data()+17, "vtp", 3))
  41306. break;
  41307. switch (BuiltinName[20]) {
  41308. default: break;
  41309. case 'h': // 1 string to match.
  41310. if (memcmp(BuiltinName.data()+21, "2ps", 3))
  41311. break;
  41312. return Intrinsic::x86_vcvtph2ps_128; // "__builtin_ia32_vcvtph2ps"
  41313. case 's': // 1 string to match.
  41314. if (memcmp(BuiltinName.data()+21, "2ph", 3))
  41315. break;
  41316. return Intrinsic::x86_vcvtps2ph_128; // "__builtin_ia32_vcvtps2ph"
  41317. }
  41318. break;
  41319. case 'f': // 8 strings to match.
  41320. if (memcmp(BuiltinName.data()+17, "nm", 2))
  41321. break;
  41322. switch (BuiltinName[19]) {
  41323. default: break;
  41324. case 'a': // 4 strings to match.
  41325. if (memcmp(BuiltinName.data()+20, "dd", 2))
  41326. break;
  41327. switch (BuiltinName[22]) {
  41328. default: break;
  41329. case 'p': // 2 strings to match.
  41330. switch (BuiltinName[23]) {
  41331. default: break;
  41332. case 'd': // 1 string to match.
  41333. return Intrinsic::x86_fma_vfnmadd_pd; // "__builtin_ia32_vfnmaddpd"
  41334. case 's': // 1 string to match.
  41335. return Intrinsic::x86_fma_vfnmadd_ps; // "__builtin_ia32_vfnmaddps"
  41336. }
  41337. break;
  41338. case 's': // 2 strings to match.
  41339. switch (BuiltinName[23]) {
  41340. default: break;
  41341. case 'd': // 1 string to match.
  41342. return Intrinsic::x86_fma_vfnmadd_sd; // "__builtin_ia32_vfnmaddsd"
  41343. case 's': // 1 string to match.
  41344. return Intrinsic::x86_fma_vfnmadd_ss; // "__builtin_ia32_vfnmaddss"
  41345. }
  41346. break;
  41347. }
  41348. break;
  41349. case 's': // 4 strings to match.
  41350. if (memcmp(BuiltinName.data()+20, "ub", 2))
  41351. break;
  41352. switch (BuiltinName[22]) {
  41353. default: break;
  41354. case 'p': // 2 strings to match.
  41355. switch (BuiltinName[23]) {
  41356. default: break;
  41357. case 'd': // 1 string to match.
  41358. return Intrinsic::x86_fma_vfnmsub_pd; // "__builtin_ia32_vfnmsubpd"
  41359. case 's': // 1 string to match.
  41360. return Intrinsic::x86_fma_vfnmsub_ps; // "__builtin_ia32_vfnmsubps"
  41361. }
  41362. break;
  41363. case 's': // 2 strings to match.
  41364. switch (BuiltinName[23]) {
  41365. default: break;
  41366. case 'd': // 1 string to match.
  41367. return Intrinsic::x86_fma_vfnmsub_sd; // "__builtin_ia32_vfnmsubsd"
  41368. case 's': // 1 string to match.
  41369. return Intrinsic::x86_fma_vfnmsub_ss; // "__builtin_ia32_vfnmsubss"
  41370. }
  41371. break;
  41372. }
  41373. break;
  41374. }
  41375. break;
  41376. }
  41377. break;
  41378. }
  41379. break;
  41380. case 25: // 59 strings to match.
  41381. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  41382. break;
  41383. switch (BuiltinName[15]) {
  41384. default: break;
  41385. case 'b': // 2 strings to match.
  41386. if (memcmp(BuiltinName.data()+16, "lendp", 5))
  41387. break;
  41388. switch (BuiltinName[21]) {
  41389. default: break;
  41390. case 'd': // 1 string to match.
  41391. if (memcmp(BuiltinName.data()+22, "256", 3))
  41392. break;
  41393. return Intrinsic::x86_avx_blend_pd_256; // "__builtin_ia32_blendpd256"
  41394. case 's': // 1 string to match.
  41395. if (memcmp(BuiltinName.data()+22, "256", 3))
  41396. break;
  41397. return Intrinsic::x86_avx_blend_ps_256; // "__builtin_ia32_blendps256"
  41398. }
  41399. break;
  41400. case 'c': // 4 strings to match.
  41401. if (memcmp(BuiltinName.data()+16, "vts", 3))
  41402. break;
  41403. switch (BuiltinName[19]) {
  41404. default: break;
  41405. case 'd': // 1 string to match.
  41406. if (memcmp(BuiltinName.data()+20, "2si64", 5))
  41407. break;
  41408. return Intrinsic::x86_sse2_cvtsd2si64; // "__builtin_ia32_cvtsd2si64"
  41409. case 'i': // 2 strings to match.
  41410. if (memcmp(BuiltinName.data()+20, "642s", 4))
  41411. break;
  41412. switch (BuiltinName[24]) {
  41413. default: break;
  41414. case 'd': // 1 string to match.
  41415. return Intrinsic::x86_sse2_cvtsi642sd; // "__builtin_ia32_cvtsi642sd"
  41416. case 's': // 1 string to match.
  41417. return Intrinsic::x86_sse_cvtsi642ss; // "__builtin_ia32_cvtsi642ss"
  41418. }
  41419. break;
  41420. case 's': // 1 string to match.
  41421. if (memcmp(BuiltinName.data()+20, "2si64", 5))
  41422. break;
  41423. return Intrinsic::x86_sse_cvtss2si64; // "__builtin_ia32_cvtss2si64"
  41424. }
  41425. break;
  41426. case 'g': // 4 strings to match.
  41427. if (memcmp(BuiltinName.data()+16, "ather", 5))
  41428. break;
  41429. switch (BuiltinName[21]) {
  41430. default: break;
  41431. case 'd': // 2 strings to match.
  41432. if (memcmp(BuiltinName.data()+22, "_p", 2))
  41433. break;
  41434. switch (BuiltinName[24]) {
  41435. default: break;
  41436. case 'd': // 1 string to match.
  41437. return Intrinsic::x86_avx2_gather_d_pd; // "__builtin_ia32_gatherd_pd"
  41438. case 's': // 1 string to match.
  41439. return Intrinsic::x86_avx2_gather_d_ps; // "__builtin_ia32_gatherd_ps"
  41440. }
  41441. break;
  41442. case 'q': // 2 strings to match.
  41443. if (memcmp(BuiltinName.data()+22, "_p", 2))
  41444. break;
  41445. switch (BuiltinName[24]) {
  41446. default: break;
  41447. case 'd': // 1 string to match.
  41448. return Intrinsic::x86_avx2_gather_q_pd; // "__builtin_ia32_gatherq_pd"
  41449. case 's': // 1 string to match.
  41450. return Intrinsic::x86_avx2_gather_q_ps; // "__builtin_ia32_gatherq_ps"
  41451. }
  41452. break;
  41453. }
  41454. break;
  41455. case 'm': // 7 strings to match.
  41456. switch (BuiltinName[16]) {
  41457. default: break;
  41458. case 'a': // 5 strings to match.
  41459. if (memcmp(BuiltinName.data()+17, "sk", 2))
  41460. break;
  41461. switch (BuiltinName[19]) {
  41462. default: break;
  41463. case 'l': // 2 strings to match.
  41464. if (memcmp(BuiltinName.data()+20, "oadp", 4))
  41465. break;
  41466. switch (BuiltinName[24]) {
  41467. default: break;
  41468. case 'd': // 1 string to match.
  41469. return Intrinsic::x86_avx_maskload_pd; // "__builtin_ia32_maskloadpd"
  41470. case 's': // 1 string to match.
  41471. return Intrinsic::x86_avx_maskload_ps; // "__builtin_ia32_maskloadps"
  41472. }
  41473. break;
  41474. case 'm': // 1 string to match.
  41475. if (memcmp(BuiltinName.data()+20, "ovdqu", 5))
  41476. break;
  41477. return Intrinsic::x86_sse2_maskmov_dqu; // "__builtin_ia32_maskmovdqu"
  41478. case 's': // 2 strings to match.
  41479. if (memcmp(BuiltinName.data()+20, "tore", 4))
  41480. break;
  41481. switch (BuiltinName[24]) {
  41482. default: break;
  41483. case 'd': // 1 string to match.
  41484. return Intrinsic::x86_avx2_maskstore_d; // "__builtin_ia32_maskstored"
  41485. case 'q': // 1 string to match.
  41486. return Intrinsic::x86_avx2_maskstore_q; // "__builtin_ia32_maskstoreq"
  41487. }
  41488. break;
  41489. }
  41490. break;
  41491. case 'p': // 2 strings to match.
  41492. if (memcmp(BuiltinName.data()+17, "sadbw", 5))
  41493. break;
  41494. switch (BuiltinName[22]) {
  41495. default: break;
  41496. case '1': // 1 string to match.
  41497. if (memcmp(BuiltinName.data()+23, "28", 2))
  41498. break;
  41499. return Intrinsic::x86_sse41_mpsadbw; // "__builtin_ia32_mpsadbw128"
  41500. case '2': // 1 string to match.
  41501. if (memcmp(BuiltinName.data()+23, "56", 2))
  41502. break;
  41503. return Intrinsic::x86_avx2_mpsadbw; // "__builtin_ia32_mpsadbw256"
  41504. }
  41505. break;
  41506. }
  41507. break;
  41508. case 'p': // 26 strings to match.
  41509. switch (BuiltinName[16]) {
  41510. default: break;
  41511. case 'a': // 4 strings to match.
  41512. if (memcmp(BuiltinName.data()+17, "ddus", 4))
  41513. break;
  41514. switch (BuiltinName[21]) {
  41515. default: break;
  41516. case 'b': // 2 strings to match.
  41517. switch (BuiltinName[22]) {
  41518. default: break;
  41519. case '1': // 1 string to match.
  41520. if (memcmp(BuiltinName.data()+23, "28", 2))
  41521. break;
  41522. return Intrinsic::x86_sse2_paddus_b; // "__builtin_ia32_paddusb128"
  41523. case '2': // 1 string to match.
  41524. if (memcmp(BuiltinName.data()+23, "56", 2))
  41525. break;
  41526. return Intrinsic::x86_avx2_paddus_b; // "__builtin_ia32_paddusb256"
  41527. }
  41528. break;
  41529. case 'w': // 2 strings to match.
  41530. switch (BuiltinName[22]) {
  41531. default: break;
  41532. case '1': // 1 string to match.
  41533. if (memcmp(BuiltinName.data()+23, "28", 2))
  41534. break;
  41535. return Intrinsic::x86_sse2_paddus_w; // "__builtin_ia32_paddusw128"
  41536. case '2': // 1 string to match.
  41537. if (memcmp(BuiltinName.data()+23, "56", 2))
  41538. break;
  41539. return Intrinsic::x86_avx2_paddus_w; // "__builtin_ia32_paddusw256"
  41540. }
  41541. break;
  41542. }
  41543. break;
  41544. case 'b': // 4 strings to match.
  41545. if (memcmp(BuiltinName.data()+17, "lend", 4))
  41546. break;
  41547. switch (BuiltinName[21]) {
  41548. default: break;
  41549. case 'd': // 2 strings to match.
  41550. switch (BuiltinName[22]) {
  41551. default: break;
  41552. case '1': // 1 string to match.
  41553. if (memcmp(BuiltinName.data()+23, "28", 2))
  41554. break;
  41555. return Intrinsic::x86_avx2_pblendd_128; // "__builtin_ia32_pblendd128"
  41556. case '2': // 1 string to match.
  41557. if (memcmp(BuiltinName.data()+23, "56", 2))
  41558. break;
  41559. return Intrinsic::x86_avx2_pblendd_256; // "__builtin_ia32_pblendd256"
  41560. }
  41561. break;
  41562. case 'w': // 2 strings to match.
  41563. switch (BuiltinName[22]) {
  41564. default: break;
  41565. case '1': // 1 string to match.
  41566. if (memcmp(BuiltinName.data()+23, "28", 2))
  41567. break;
  41568. return Intrinsic::x86_sse41_pblendw; // "__builtin_ia32_pblendw128"
  41569. case '2': // 1 string to match.
  41570. if (memcmp(BuiltinName.data()+23, "56", 2))
  41571. break;
  41572. return Intrinsic::x86_avx2_pblendw; // "__builtin_ia32_pblendw256"
  41573. }
  41574. break;
  41575. }
  41576. break;
  41577. case 'h': // 4 strings to match.
  41578. switch (BuiltinName[17]) {
  41579. default: break;
  41580. case 'a': // 2 strings to match.
  41581. if (memcmp(BuiltinName.data()+18, "ddsw", 4))
  41582. break;
  41583. switch (BuiltinName[22]) {
  41584. default: break;
  41585. case '1': // 1 string to match.
  41586. if (memcmp(BuiltinName.data()+23, "28", 2))
  41587. break;
  41588. return Intrinsic::x86_ssse3_phadd_sw_128; // "__builtin_ia32_phaddsw128"
  41589. case '2': // 1 string to match.
  41590. if (memcmp(BuiltinName.data()+23, "56", 2))
  41591. break;
  41592. return Intrinsic::x86_avx2_phadd_sw; // "__builtin_ia32_phaddsw256"
  41593. }
  41594. break;
  41595. case 's': // 2 strings to match.
  41596. if (memcmp(BuiltinName.data()+18, "ubsw", 4))
  41597. break;
  41598. switch (BuiltinName[22]) {
  41599. default: break;
  41600. case '1': // 1 string to match.
  41601. if (memcmp(BuiltinName.data()+23, "28", 2))
  41602. break;
  41603. return Intrinsic::x86_ssse3_phsub_sw_128; // "__builtin_ia32_phsubsw128"
  41604. case '2': // 1 string to match.
  41605. if (memcmp(BuiltinName.data()+23, "56", 2))
  41606. break;
  41607. return Intrinsic::x86_avx2_phsub_sw; // "__builtin_ia32_phsubsw256"
  41608. }
  41609. break;
  41610. }
  41611. break;
  41612. case 'm': // 6 strings to match.
  41613. switch (BuiltinName[17]) {
  41614. default: break;
  41615. case 'a': // 2 strings to match.
  41616. if (memcmp(BuiltinName.data()+18, "ddwd", 4))
  41617. break;
  41618. switch (BuiltinName[22]) {
  41619. default: break;
  41620. case '1': // 1 string to match.
  41621. if (memcmp(BuiltinName.data()+23, "28", 2))
  41622. break;
  41623. return Intrinsic::x86_sse2_pmadd_wd; // "__builtin_ia32_pmaddwd128"
  41624. case '2': // 1 string to match.
  41625. if (memcmp(BuiltinName.data()+23, "56", 2))
  41626. break;
  41627. return Intrinsic::x86_avx2_pmadd_wd; // "__builtin_ia32_pmaddwd256"
  41628. }
  41629. break;
  41630. case 'u': // 4 strings to match.
  41631. if (BuiltinName[18] != 'l')
  41632. break;
  41633. switch (BuiltinName[19]) {
  41634. default: break;
  41635. case 'h': // 2 strings to match.
  41636. if (memcmp(BuiltinName.data()+20, "uw", 2))
  41637. break;
  41638. switch (BuiltinName[22]) {
  41639. default: break;
  41640. case '1': // 1 string to match.
  41641. if (memcmp(BuiltinName.data()+23, "28", 2))
  41642. break;
  41643. return Intrinsic::x86_sse2_pmulhu_w; // "__builtin_ia32_pmulhuw128"
  41644. case '2': // 1 string to match.
  41645. if (memcmp(BuiltinName.data()+23, "56", 2))
  41646. break;
  41647. return Intrinsic::x86_avx2_pmulhu_w; // "__builtin_ia32_pmulhuw256"
  41648. }
  41649. break;
  41650. case 'u': // 2 strings to match.
  41651. if (memcmp(BuiltinName.data()+20, "dq", 2))
  41652. break;
  41653. switch (BuiltinName[22]) {
  41654. default: break;
  41655. case '1': // 1 string to match.
  41656. if (memcmp(BuiltinName.data()+23, "28", 2))
  41657. break;
  41658. return Intrinsic::x86_sse2_pmulu_dq; // "__builtin_ia32_pmuludq128"
  41659. case '2': // 1 string to match.
  41660. if (memcmp(BuiltinName.data()+23, "56", 2))
  41661. break;
  41662. return Intrinsic::x86_avx2_pmulu_dq; // "__builtin_ia32_pmuludq256"
  41663. }
  41664. break;
  41665. }
  41666. break;
  41667. }
  41668. break;
  41669. case 's': // 8 strings to match.
  41670. switch (BuiltinName[17]) {
  41671. default: break;
  41672. case 'l': // 2 strings to match.
  41673. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  41674. break;
  41675. switch (BuiltinName[22]) {
  41676. default: break;
  41677. case '1': // 1 string to match.
  41678. if (memcmp(BuiltinName.data()+23, "28", 2))
  41679. break;
  41680. return Intrinsic::x86_sse2_psll_dq; // "__builtin_ia32_pslldqi128"
  41681. case '2': // 1 string to match.
  41682. if (memcmp(BuiltinName.data()+23, "56", 2))
  41683. break;
  41684. return Intrinsic::x86_avx2_psll_dq; // "__builtin_ia32_pslldqi256"
  41685. }
  41686. break;
  41687. case 'r': // 2 strings to match.
  41688. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  41689. break;
  41690. switch (BuiltinName[22]) {
  41691. default: break;
  41692. case '1': // 1 string to match.
  41693. if (memcmp(BuiltinName.data()+23, "28", 2))
  41694. break;
  41695. return Intrinsic::x86_sse2_psrl_dq; // "__builtin_ia32_psrldqi128"
  41696. case '2': // 1 string to match.
  41697. if (memcmp(BuiltinName.data()+23, "56", 2))
  41698. break;
  41699. return Intrinsic::x86_avx2_psrl_dq; // "__builtin_ia32_psrldqi256"
  41700. }
  41701. break;
  41702. case 'u': // 4 strings to match.
  41703. if (memcmp(BuiltinName.data()+18, "bus", 3))
  41704. break;
  41705. switch (BuiltinName[21]) {
  41706. default: break;
  41707. case 'b': // 2 strings to match.
  41708. switch (BuiltinName[22]) {
  41709. default: break;
  41710. case '1': // 1 string to match.
  41711. if (memcmp(BuiltinName.data()+23, "28", 2))
  41712. break;
  41713. return Intrinsic::x86_sse2_psubus_b; // "__builtin_ia32_psubusb128"
  41714. case '2': // 1 string to match.
  41715. if (memcmp(BuiltinName.data()+23, "56", 2))
  41716. break;
  41717. return Intrinsic::x86_avx2_psubus_b; // "__builtin_ia32_psubusb256"
  41718. }
  41719. break;
  41720. case 'w': // 2 strings to match.
  41721. switch (BuiltinName[22]) {
  41722. default: break;
  41723. case '1': // 1 string to match.
  41724. if (memcmp(BuiltinName.data()+23, "28", 2))
  41725. break;
  41726. return Intrinsic::x86_sse2_psubus_w; // "__builtin_ia32_psubusw128"
  41727. case '2': // 1 string to match.
  41728. if (memcmp(BuiltinName.data()+23, "56", 2))
  41729. break;
  41730. return Intrinsic::x86_avx2_psubus_w; // "__builtin_ia32_psubusw256"
  41731. }
  41732. break;
  41733. }
  41734. break;
  41735. }
  41736. break;
  41737. }
  41738. break;
  41739. case 'r': // 7 strings to match.
  41740. switch (BuiltinName[16]) {
  41741. default: break;
  41742. case 'd': // 4 strings to match.
  41743. switch (BuiltinName[17]) {
  41744. default: break;
  41745. case 'f': // 2 strings to match.
  41746. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  41747. break;
  41748. switch (BuiltinName[23]) {
  41749. default: break;
  41750. case '3': // 1 string to match.
  41751. if (BuiltinName[24] != '2')
  41752. break;
  41753. return Intrinsic::x86_rdfsbase_32; // "__builtin_ia32_rdfsbase32"
  41754. case '6': // 1 string to match.
  41755. if (BuiltinName[24] != '4')
  41756. break;
  41757. return Intrinsic::x86_rdfsbase_64; // "__builtin_ia32_rdfsbase64"
  41758. }
  41759. break;
  41760. case 'g': // 2 strings to match.
  41761. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  41762. break;
  41763. switch (BuiltinName[23]) {
  41764. default: break;
  41765. case '3': // 1 string to match.
  41766. if (BuiltinName[24] != '2')
  41767. break;
  41768. return Intrinsic::x86_rdgsbase_32; // "__builtin_ia32_rdgsbase32"
  41769. case '6': // 1 string to match.
  41770. if (BuiltinName[24] != '4')
  41771. break;
  41772. return Intrinsic::x86_rdgsbase_64; // "__builtin_ia32_rdgsbase64"
  41773. }
  41774. break;
  41775. }
  41776. break;
  41777. case 'o': // 2 strings to match.
  41778. if (memcmp(BuiltinName.data()+17, "undp", 4))
  41779. break;
  41780. switch (BuiltinName[21]) {
  41781. default: break;
  41782. case 'd': // 1 string to match.
  41783. if (memcmp(BuiltinName.data()+22, "256", 3))
  41784. break;
  41785. return Intrinsic::x86_avx_round_pd_256; // "__builtin_ia32_roundpd256"
  41786. case 's': // 1 string to match.
  41787. if (memcmp(BuiltinName.data()+22, "256", 3))
  41788. break;
  41789. return Intrinsic::x86_avx_round_ps_256; // "__builtin_ia32_roundps256"
  41790. }
  41791. break;
  41792. case 's': // 1 string to match.
  41793. if (memcmp(BuiltinName.data()+17, "qrtps256", 8))
  41794. break;
  41795. return Intrinsic::x86_avx_rsqrt_ps_256; // "__builtin_ia32_rsqrtps256"
  41796. }
  41797. break;
  41798. case 's': // 1 string to match.
  41799. if (memcmp(BuiltinName.data()+16, "torelv4si", 9))
  41800. break;
  41801. return Intrinsic::x86_sse2_storel_dq; // "__builtin_ia32_storelv4si"
  41802. case 'u': // 1 string to match.
  41803. if (memcmp(BuiltinName.data()+16, "comisdneq", 9))
  41804. break;
  41805. return Intrinsic::x86_sse2_ucomineq_sd; // "__builtin_ia32_ucomisdneq"
  41806. case 'v': // 3 strings to match.
  41807. switch (BuiltinName[16]) {
  41808. default: break;
  41809. case 't': // 2 strings to match.
  41810. if (memcmp(BuiltinName.data()+17, "estnzcp", 7))
  41811. break;
  41812. switch (BuiltinName[24]) {
  41813. default: break;
  41814. case 'd': // 1 string to match.
  41815. return Intrinsic::x86_avx_vtestnzc_pd; // "__builtin_ia32_vtestnzcpd"
  41816. case 's': // 1 string to match.
  41817. return Intrinsic::x86_avx_vtestnzc_ps; // "__builtin_ia32_vtestnzcps"
  41818. }
  41819. break;
  41820. case 'z': // 1 string to match.
  41821. if (memcmp(BuiltinName.data()+17, "eroupper", 8))
  41822. break;
  41823. return Intrinsic::x86_avx_vzeroupper; // "__builtin_ia32_vzeroupper"
  41824. }
  41825. break;
  41826. case 'w': // 4 strings to match.
  41827. if (BuiltinName[16] != 'r')
  41828. break;
  41829. switch (BuiltinName[17]) {
  41830. default: break;
  41831. case 'f': // 2 strings to match.
  41832. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  41833. break;
  41834. switch (BuiltinName[23]) {
  41835. default: break;
  41836. case '3': // 1 string to match.
  41837. if (BuiltinName[24] != '2')
  41838. break;
  41839. return Intrinsic::x86_wrfsbase_32; // "__builtin_ia32_wrfsbase32"
  41840. case '6': // 1 string to match.
  41841. if (BuiltinName[24] != '4')
  41842. break;
  41843. return Intrinsic::x86_wrfsbase_64; // "__builtin_ia32_wrfsbase64"
  41844. }
  41845. break;
  41846. case 'g': // 2 strings to match.
  41847. if (memcmp(BuiltinName.data()+18, "sbase", 5))
  41848. break;
  41849. switch (BuiltinName[23]) {
  41850. default: break;
  41851. case '3': // 1 string to match.
  41852. if (BuiltinName[24] != '2')
  41853. break;
  41854. return Intrinsic::x86_wrgsbase_32; // "__builtin_ia32_wrgsbase32"
  41855. case '6': // 1 string to match.
  41856. if (BuiltinName[24] != '4')
  41857. break;
  41858. return Intrinsic::x86_wrgsbase_64; // "__builtin_ia32_wrgsbase64"
  41859. }
  41860. break;
  41861. }
  41862. break;
  41863. }
  41864. break;
  41865. case 26: // 73 strings to match.
  41866. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  41867. break;
  41868. switch (BuiltinName[15]) {
  41869. default: break;
  41870. case 'a': // 2 strings to match.
  41871. if (memcmp(BuiltinName.data()+16, "ddsubp", 6))
  41872. break;
  41873. switch (BuiltinName[22]) {
  41874. default: break;
  41875. case 'd': // 1 string to match.
  41876. if (memcmp(BuiltinName.data()+23, "256", 3))
  41877. break;
  41878. return Intrinsic::x86_avx_addsub_pd_256; // "__builtin_ia32_addsubpd256"
  41879. case 's': // 1 string to match.
  41880. if (memcmp(BuiltinName.data()+23, "256", 3))
  41881. break;
  41882. return Intrinsic::x86_avx_addsub_ps_256; // "__builtin_ia32_addsubps256"
  41883. }
  41884. break;
  41885. case 'b': // 2 strings to match.
  41886. if (memcmp(BuiltinName.data()+16, "lendvp", 6))
  41887. break;
  41888. switch (BuiltinName[22]) {
  41889. default: break;
  41890. case 'd': // 1 string to match.
  41891. if (memcmp(BuiltinName.data()+23, "256", 3))
  41892. break;
  41893. return Intrinsic::x86_avx_blendv_pd_256; // "__builtin_ia32_blendvpd256"
  41894. case 's': // 1 string to match.
  41895. if (memcmp(BuiltinName.data()+23, "256", 3))
  41896. break;
  41897. return Intrinsic::x86_avx_blendv_ps_256; // "__builtin_ia32_blendvps256"
  41898. }
  41899. break;
  41900. case 'c': // 8 strings to match.
  41901. if (memcmp(BuiltinName.data()+16, "vt", 2))
  41902. break;
  41903. switch (BuiltinName[18]) {
  41904. default: break;
  41905. case 'd': // 2 strings to match.
  41906. if (memcmp(BuiltinName.data()+19, "q2p", 3))
  41907. break;
  41908. switch (BuiltinName[22]) {
  41909. default: break;
  41910. case 'd': // 1 string to match.
  41911. if (memcmp(BuiltinName.data()+23, "256", 3))
  41912. break;
  41913. return Intrinsic::x86_avx_cvtdq2_pd_256; // "__builtin_ia32_cvtdq2pd256"
  41914. case 's': // 1 string to match.
  41915. if (memcmp(BuiltinName.data()+23, "256", 3))
  41916. break;
  41917. return Intrinsic::x86_avx_cvtdq2_ps_256; // "__builtin_ia32_cvtdq2ps256"
  41918. }
  41919. break;
  41920. case 'p': // 4 strings to match.
  41921. switch (BuiltinName[19]) {
  41922. default: break;
  41923. case 'd': // 2 strings to match.
  41924. if (BuiltinName[20] != '2')
  41925. break;
  41926. switch (BuiltinName[21]) {
  41927. default: break;
  41928. case 'd': // 1 string to match.
  41929. if (memcmp(BuiltinName.data()+22, "q256", 4))
  41930. break;
  41931. return Intrinsic::x86_avx_cvt_pd2dq_256; // "__builtin_ia32_cvtpd2dq256"
  41932. case 'p': // 1 string to match.
  41933. if (memcmp(BuiltinName.data()+22, "s256", 4))
  41934. break;
  41935. return Intrinsic::x86_avx_cvt_pd2_ps_256; // "__builtin_ia32_cvtpd2ps256"
  41936. }
  41937. break;
  41938. case 's': // 2 strings to match.
  41939. if (BuiltinName[20] != '2')
  41940. break;
  41941. switch (BuiltinName[21]) {
  41942. default: break;
  41943. case 'd': // 1 string to match.
  41944. if (memcmp(BuiltinName.data()+22, "q256", 4))
  41945. break;
  41946. return Intrinsic::x86_avx_cvt_ps2dq_256; // "__builtin_ia32_cvtps2dq256"
  41947. case 'p': // 1 string to match.
  41948. if (memcmp(BuiltinName.data()+22, "d256", 4))
  41949. break;
  41950. return Intrinsic::x86_avx_cvt_ps2_pd_256; // "__builtin_ia32_cvtps2pd256"
  41951. }
  41952. break;
  41953. }
  41954. break;
  41955. case 't': // 2 strings to match.
  41956. if (BuiltinName[19] != 's')
  41957. break;
  41958. switch (BuiltinName[20]) {
  41959. default: break;
  41960. case 'd': // 1 string to match.
  41961. if (memcmp(BuiltinName.data()+21, "2si64", 5))
  41962. break;
  41963. return Intrinsic::x86_sse2_cvttsd2si64; // "__builtin_ia32_cvttsd2si64"
  41964. case 's': // 1 string to match.
  41965. if (memcmp(BuiltinName.data()+21, "2si64", 5))
  41966. break;
  41967. return Intrinsic::x86_sse_cvttss2si64; // "__builtin_ia32_cvttss2si64"
  41968. }
  41969. break;
  41970. }
  41971. break;
  41972. case 'i': // 1 string to match.
  41973. if (memcmp(BuiltinName.data()+16, "nsertps128", 10))
  41974. break;
  41975. return Intrinsic::x86_sse41_insertps; // "__builtin_ia32_insertps128"
  41976. case 'm': // 5 strings to match.
  41977. switch (BuiltinName[16]) {
  41978. default: break;
  41979. case 'a': // 2 strings to match.
  41980. if (memcmp(BuiltinName.data()+17, "skstorep", 8))
  41981. break;
  41982. switch (BuiltinName[25]) {
  41983. default: break;
  41984. case 'd': // 1 string to match.
  41985. return Intrinsic::x86_avx_maskstore_pd; // "__builtin_ia32_maskstorepd"
  41986. case 's': // 1 string to match.
  41987. return Intrinsic::x86_avx_maskstore_ps; // "__builtin_ia32_maskstoreps"
  41988. }
  41989. break;
  41990. case 'o': // 3 strings to match.
  41991. if (BuiltinName[17] != 'v')
  41992. break;
  41993. switch (BuiltinName[18]) {
  41994. default: break;
  41995. case 'm': // 2 strings to match.
  41996. if (memcmp(BuiltinName.data()+19, "skp", 3))
  41997. break;
  41998. switch (BuiltinName[22]) {
  41999. default: break;
  42000. case 'd': // 1 string to match.
  42001. if (memcmp(BuiltinName.data()+23, "256", 3))
  42002. break;
  42003. return Intrinsic::x86_avx_movmsk_pd_256; // "__builtin_ia32_movmskpd256"
  42004. case 's': // 1 string to match.
  42005. if (memcmp(BuiltinName.data()+23, "256", 3))
  42006. break;
  42007. return Intrinsic::x86_avx_movmsk_ps_256; // "__builtin_ia32_movmskps256"
  42008. }
  42009. break;
  42010. case 'n': // 1 string to match.
  42011. if (memcmp(BuiltinName.data()+19, "tdqa256", 7))
  42012. break;
  42013. return Intrinsic::x86_avx2_movntdqa; // "__builtin_ia32_movntdqa256"
  42014. }
  42015. break;
  42016. }
  42017. break;
  42018. case 'p': // 40 strings to match.
  42019. switch (BuiltinName[16]) {
  42020. default: break;
  42021. case 'a': // 8 strings to match.
  42022. if (memcmp(BuiltinName.data()+17, "ck", 2))
  42023. break;
  42024. switch (BuiltinName[19]) {
  42025. default: break;
  42026. case 's': // 4 strings to match.
  42027. if (BuiltinName[20] != 's')
  42028. break;
  42029. switch (BuiltinName[21]) {
  42030. default: break;
  42031. case 'd': // 2 strings to match.
  42032. if (BuiltinName[22] != 'w')
  42033. break;
  42034. switch (BuiltinName[23]) {
  42035. default: break;
  42036. case '1': // 1 string to match.
  42037. if (memcmp(BuiltinName.data()+24, "28", 2))
  42038. break;
  42039. return Intrinsic::x86_sse2_packssdw_128; // "__builtin_ia32_packssdw128"
  42040. case '2': // 1 string to match.
  42041. if (memcmp(BuiltinName.data()+24, "56", 2))
  42042. break;
  42043. return Intrinsic::x86_avx2_packssdw; // "__builtin_ia32_packssdw256"
  42044. }
  42045. break;
  42046. case 'w': // 2 strings to match.
  42047. if (BuiltinName[22] != 'b')
  42048. break;
  42049. switch (BuiltinName[23]) {
  42050. default: break;
  42051. case '1': // 1 string to match.
  42052. if (memcmp(BuiltinName.data()+24, "28", 2))
  42053. break;
  42054. return Intrinsic::x86_sse2_packsswb_128; // "__builtin_ia32_packsswb128"
  42055. case '2': // 1 string to match.
  42056. if (memcmp(BuiltinName.data()+24, "56", 2))
  42057. break;
  42058. return Intrinsic::x86_avx2_packsswb; // "__builtin_ia32_packsswb256"
  42059. }
  42060. break;
  42061. }
  42062. break;
  42063. case 'u': // 4 strings to match.
  42064. if (BuiltinName[20] != 's')
  42065. break;
  42066. switch (BuiltinName[21]) {
  42067. default: break;
  42068. case 'd': // 2 strings to match.
  42069. if (BuiltinName[22] != 'w')
  42070. break;
  42071. switch (BuiltinName[23]) {
  42072. default: break;
  42073. case '1': // 1 string to match.
  42074. if (memcmp(BuiltinName.data()+24, "28", 2))
  42075. break;
  42076. return Intrinsic::x86_sse41_packusdw; // "__builtin_ia32_packusdw128"
  42077. case '2': // 1 string to match.
  42078. if (memcmp(BuiltinName.data()+24, "56", 2))
  42079. break;
  42080. return Intrinsic::x86_avx2_packusdw; // "__builtin_ia32_packusdw256"
  42081. }
  42082. break;
  42083. case 'w': // 2 strings to match.
  42084. if (BuiltinName[22] != 'b')
  42085. break;
  42086. switch (BuiltinName[23]) {
  42087. default: break;
  42088. case '1': // 1 string to match.
  42089. if (memcmp(BuiltinName.data()+24, "28", 2))
  42090. break;
  42091. return Intrinsic::x86_sse2_packuswb_128; // "__builtin_ia32_packuswb128"
  42092. case '2': // 1 string to match.
  42093. if (memcmp(BuiltinName.data()+24, "56", 2))
  42094. break;
  42095. return Intrinsic::x86_avx2_packuswb; // "__builtin_ia32_packuswb256"
  42096. }
  42097. break;
  42098. }
  42099. break;
  42100. }
  42101. break;
  42102. case 'b': // 2 strings to match.
  42103. if (memcmp(BuiltinName.data()+17, "lendvb", 6))
  42104. break;
  42105. switch (BuiltinName[23]) {
  42106. default: break;
  42107. case '1': // 1 string to match.
  42108. if (memcmp(BuiltinName.data()+24, "28", 2))
  42109. break;
  42110. return Intrinsic::x86_sse41_pblendvb; // "__builtin_ia32_pblendvb128"
  42111. case '2': // 1 string to match.
  42112. if (memcmp(BuiltinName.data()+24, "56", 2))
  42113. break;
  42114. return Intrinsic::x86_avx2_pblendvb; // "__builtin_ia32_pblendvb256"
  42115. }
  42116. break;
  42117. case 'm': // 28 strings to match.
  42118. switch (BuiltinName[17]) {
  42119. default: break;
  42120. case 'o': // 26 strings to match.
  42121. if (BuiltinName[18] != 'v')
  42122. break;
  42123. switch (BuiltinName[19]) {
  42124. default: break;
  42125. case 'm': // 2 strings to match.
  42126. if (memcmp(BuiltinName.data()+20, "skb", 3))
  42127. break;
  42128. switch (BuiltinName[23]) {
  42129. default: break;
  42130. case '1': // 1 string to match.
  42131. if (memcmp(BuiltinName.data()+24, "28", 2))
  42132. break;
  42133. return Intrinsic::x86_sse2_pmovmskb_128; // "__builtin_ia32_pmovmskb128"
  42134. case '2': // 1 string to match.
  42135. if (memcmp(BuiltinName.data()+24, "56", 2))
  42136. break;
  42137. return Intrinsic::x86_avx2_pmovmskb; // "__builtin_ia32_pmovmskb256"
  42138. }
  42139. break;
  42140. case 's': // 12 strings to match.
  42141. if (BuiltinName[20] != 'x')
  42142. break;
  42143. switch (BuiltinName[21]) {
  42144. default: break;
  42145. case 'b': // 6 strings to match.
  42146. switch (BuiltinName[22]) {
  42147. default: break;
  42148. case 'd': // 2 strings to match.
  42149. switch (BuiltinName[23]) {
  42150. default: break;
  42151. case '1': // 1 string to match.
  42152. if (memcmp(BuiltinName.data()+24, "28", 2))
  42153. break;
  42154. return Intrinsic::x86_sse41_pmovsxbd; // "__builtin_ia32_pmovsxbd128"
  42155. case '2': // 1 string to match.
  42156. if (memcmp(BuiltinName.data()+24, "56", 2))
  42157. break;
  42158. return Intrinsic::x86_avx2_pmovsxbd; // "__builtin_ia32_pmovsxbd256"
  42159. }
  42160. break;
  42161. case 'q': // 2 strings to match.
  42162. switch (BuiltinName[23]) {
  42163. default: break;
  42164. case '1': // 1 string to match.
  42165. if (memcmp(BuiltinName.data()+24, "28", 2))
  42166. break;
  42167. return Intrinsic::x86_sse41_pmovsxbq; // "__builtin_ia32_pmovsxbq128"
  42168. case '2': // 1 string to match.
  42169. if (memcmp(BuiltinName.data()+24, "56", 2))
  42170. break;
  42171. return Intrinsic::x86_avx2_pmovsxbq; // "__builtin_ia32_pmovsxbq256"
  42172. }
  42173. break;
  42174. case 'w': // 2 strings to match.
  42175. switch (BuiltinName[23]) {
  42176. default: break;
  42177. case '1': // 1 string to match.
  42178. if (memcmp(BuiltinName.data()+24, "28", 2))
  42179. break;
  42180. return Intrinsic::x86_sse41_pmovsxbw; // "__builtin_ia32_pmovsxbw128"
  42181. case '2': // 1 string to match.
  42182. if (memcmp(BuiltinName.data()+24, "56", 2))
  42183. break;
  42184. return Intrinsic::x86_avx2_pmovsxbw; // "__builtin_ia32_pmovsxbw256"
  42185. }
  42186. break;
  42187. }
  42188. break;
  42189. case 'd': // 2 strings to match.
  42190. if (BuiltinName[22] != 'q')
  42191. break;
  42192. switch (BuiltinName[23]) {
  42193. default: break;
  42194. case '1': // 1 string to match.
  42195. if (memcmp(BuiltinName.data()+24, "28", 2))
  42196. break;
  42197. return Intrinsic::x86_sse41_pmovsxdq; // "__builtin_ia32_pmovsxdq128"
  42198. case '2': // 1 string to match.
  42199. if (memcmp(BuiltinName.data()+24, "56", 2))
  42200. break;
  42201. return Intrinsic::x86_avx2_pmovsxdq; // "__builtin_ia32_pmovsxdq256"
  42202. }
  42203. break;
  42204. case 'w': // 4 strings to match.
  42205. switch (BuiltinName[22]) {
  42206. default: break;
  42207. case 'd': // 2 strings to match.
  42208. switch (BuiltinName[23]) {
  42209. default: break;
  42210. case '1': // 1 string to match.
  42211. if (memcmp(BuiltinName.data()+24, "28", 2))
  42212. break;
  42213. return Intrinsic::x86_sse41_pmovsxwd; // "__builtin_ia32_pmovsxwd128"
  42214. case '2': // 1 string to match.
  42215. if (memcmp(BuiltinName.data()+24, "56", 2))
  42216. break;
  42217. return Intrinsic::x86_avx2_pmovsxwd; // "__builtin_ia32_pmovsxwd256"
  42218. }
  42219. break;
  42220. case 'q': // 2 strings to match.
  42221. switch (BuiltinName[23]) {
  42222. default: break;
  42223. case '1': // 1 string to match.
  42224. if (memcmp(BuiltinName.data()+24, "28", 2))
  42225. break;
  42226. return Intrinsic::x86_sse41_pmovsxwq; // "__builtin_ia32_pmovsxwq128"
  42227. case '2': // 1 string to match.
  42228. if (memcmp(BuiltinName.data()+24, "56", 2))
  42229. break;
  42230. return Intrinsic::x86_avx2_pmovsxwq; // "__builtin_ia32_pmovsxwq256"
  42231. }
  42232. break;
  42233. }
  42234. break;
  42235. }
  42236. break;
  42237. case 'z': // 12 strings to match.
  42238. if (BuiltinName[20] != 'x')
  42239. break;
  42240. switch (BuiltinName[21]) {
  42241. default: break;
  42242. case 'b': // 6 strings to match.
  42243. switch (BuiltinName[22]) {
  42244. default: break;
  42245. case 'd': // 2 strings to match.
  42246. switch (BuiltinName[23]) {
  42247. default: break;
  42248. case '1': // 1 string to match.
  42249. if (memcmp(BuiltinName.data()+24, "28", 2))
  42250. break;
  42251. return Intrinsic::x86_sse41_pmovzxbd; // "__builtin_ia32_pmovzxbd128"
  42252. case '2': // 1 string to match.
  42253. if (memcmp(BuiltinName.data()+24, "56", 2))
  42254. break;
  42255. return Intrinsic::x86_avx2_pmovzxbd; // "__builtin_ia32_pmovzxbd256"
  42256. }
  42257. break;
  42258. case 'q': // 2 strings to match.
  42259. switch (BuiltinName[23]) {
  42260. default: break;
  42261. case '1': // 1 string to match.
  42262. if (memcmp(BuiltinName.data()+24, "28", 2))
  42263. break;
  42264. return Intrinsic::x86_sse41_pmovzxbq; // "__builtin_ia32_pmovzxbq128"
  42265. case '2': // 1 string to match.
  42266. if (memcmp(BuiltinName.data()+24, "56", 2))
  42267. break;
  42268. return Intrinsic::x86_avx2_pmovzxbq; // "__builtin_ia32_pmovzxbq256"
  42269. }
  42270. break;
  42271. case 'w': // 2 strings to match.
  42272. switch (BuiltinName[23]) {
  42273. default: break;
  42274. case '1': // 1 string to match.
  42275. if (memcmp(BuiltinName.data()+24, "28", 2))
  42276. break;
  42277. return Intrinsic::x86_sse41_pmovzxbw; // "__builtin_ia32_pmovzxbw128"
  42278. case '2': // 1 string to match.
  42279. if (memcmp(BuiltinName.data()+24, "56", 2))
  42280. break;
  42281. return Intrinsic::x86_avx2_pmovzxbw; // "__builtin_ia32_pmovzxbw256"
  42282. }
  42283. break;
  42284. }
  42285. break;
  42286. case 'd': // 2 strings to match.
  42287. if (BuiltinName[22] != 'q')
  42288. break;
  42289. switch (BuiltinName[23]) {
  42290. default: break;
  42291. case '1': // 1 string to match.
  42292. if (memcmp(BuiltinName.data()+24, "28", 2))
  42293. break;
  42294. return Intrinsic::x86_sse41_pmovzxdq; // "__builtin_ia32_pmovzxdq128"
  42295. case '2': // 1 string to match.
  42296. if (memcmp(BuiltinName.data()+24, "56", 2))
  42297. break;
  42298. return Intrinsic::x86_avx2_pmovzxdq; // "__builtin_ia32_pmovzxdq256"
  42299. }
  42300. break;
  42301. case 'w': // 4 strings to match.
  42302. switch (BuiltinName[22]) {
  42303. default: break;
  42304. case 'd': // 2 strings to match.
  42305. switch (BuiltinName[23]) {
  42306. default: break;
  42307. case '1': // 1 string to match.
  42308. if (memcmp(BuiltinName.data()+24, "28", 2))
  42309. break;
  42310. return Intrinsic::x86_sse41_pmovzxwd; // "__builtin_ia32_pmovzxwd128"
  42311. case '2': // 1 string to match.
  42312. if (memcmp(BuiltinName.data()+24, "56", 2))
  42313. break;
  42314. return Intrinsic::x86_avx2_pmovzxwd; // "__builtin_ia32_pmovzxwd256"
  42315. }
  42316. break;
  42317. case 'q': // 2 strings to match.
  42318. switch (BuiltinName[23]) {
  42319. default: break;
  42320. case '1': // 1 string to match.
  42321. if (memcmp(BuiltinName.data()+24, "28", 2))
  42322. break;
  42323. return Intrinsic::x86_sse41_pmovzxwq; // "__builtin_ia32_pmovzxwq128"
  42324. case '2': // 1 string to match.
  42325. if (memcmp(BuiltinName.data()+24, "56", 2))
  42326. break;
  42327. return Intrinsic::x86_avx2_pmovzxwq; // "__builtin_ia32_pmovzxwq256"
  42328. }
  42329. break;
  42330. }
  42331. break;
  42332. }
  42333. break;
  42334. }
  42335. break;
  42336. case 'u': // 2 strings to match.
  42337. if (memcmp(BuiltinName.data()+18, "lhrsw", 5))
  42338. break;
  42339. switch (BuiltinName[23]) {
  42340. default: break;
  42341. case '1': // 1 string to match.
  42342. if (memcmp(BuiltinName.data()+24, "28", 2))
  42343. break;
  42344. return Intrinsic::x86_ssse3_pmul_hr_sw_128; // "__builtin_ia32_pmulhrsw128"
  42345. case '2': // 1 string to match.
  42346. if (memcmp(BuiltinName.data()+24, "56", 2))
  42347. break;
  42348. return Intrinsic::x86_avx2_pmul_hr_sw; // "__builtin_ia32_pmulhrsw256"
  42349. }
  42350. break;
  42351. }
  42352. break;
  42353. case 't': // 2 strings to match.
  42354. if (memcmp(BuiltinName.data()+17, "estnzc", 6))
  42355. break;
  42356. switch (BuiltinName[23]) {
  42357. default: break;
  42358. case '1': // 1 string to match.
  42359. if (memcmp(BuiltinName.data()+24, "28", 2))
  42360. break;
  42361. return Intrinsic::x86_sse41_ptestnzc; // "__builtin_ia32_ptestnzc128"
  42362. case '2': // 1 string to match.
  42363. if (memcmp(BuiltinName.data()+24, "56", 2))
  42364. break;
  42365. return Intrinsic::x86_avx_ptestnzc_256; // "__builtin_ia32_ptestnzc256"
  42366. }
  42367. break;
  42368. }
  42369. break;
  42370. case 's': // 3 strings to match.
  42371. if (memcmp(BuiltinName.data()+16, "tore", 4))
  42372. break;
  42373. switch (BuiltinName[20]) {
  42374. default: break;
  42375. case 'd': // 1 string to match.
  42376. if (memcmp(BuiltinName.data()+21, "qu256", 5))
  42377. break;
  42378. return Intrinsic::x86_avx_storeu_dq_256; // "__builtin_ia32_storedqu256"
  42379. case 'u': // 2 strings to match.
  42380. if (BuiltinName[21] != 'p')
  42381. break;
  42382. switch (BuiltinName[22]) {
  42383. default: break;
  42384. case 'd': // 1 string to match.
  42385. if (memcmp(BuiltinName.data()+23, "256", 3))
  42386. break;
  42387. return Intrinsic::x86_avx_storeu_pd_256; // "__builtin_ia32_storeupd256"
  42388. case 's': // 1 string to match.
  42389. if (memcmp(BuiltinName.data()+23, "256", 3))
  42390. break;
  42391. return Intrinsic::x86_avx_storeu_ps_256; // "__builtin_ia32_storeups256"
  42392. }
  42393. break;
  42394. }
  42395. break;
  42396. case 'v': // 12 strings to match.
  42397. switch (BuiltinName[16]) {
  42398. default: break;
  42399. case 'f': // 8 strings to match.
  42400. if (BuiltinName[17] != 'm')
  42401. break;
  42402. switch (BuiltinName[18]) {
  42403. default: break;
  42404. case 'a': // 4 strings to match.
  42405. if (memcmp(BuiltinName.data()+19, "dd", 2))
  42406. break;
  42407. switch (BuiltinName[21]) {
  42408. default: break;
  42409. case 'p': // 2 strings to match.
  42410. switch (BuiltinName[22]) {
  42411. default: break;
  42412. case 'd': // 1 string to match.
  42413. if (memcmp(BuiltinName.data()+23, "256", 3))
  42414. break;
  42415. return Intrinsic::x86_fma_vfmadd_pd_256; // "__builtin_ia32_vfmaddpd256"
  42416. case 's': // 1 string to match.
  42417. if (memcmp(BuiltinName.data()+23, "256", 3))
  42418. break;
  42419. return Intrinsic::x86_fma_vfmadd_ps_256; // "__builtin_ia32_vfmaddps256"
  42420. }
  42421. break;
  42422. case 's': // 2 strings to match.
  42423. if (memcmp(BuiltinName.data()+22, "ubp", 3))
  42424. break;
  42425. switch (BuiltinName[25]) {
  42426. default: break;
  42427. case 'd': // 1 string to match.
  42428. return Intrinsic::x86_fma_vfmaddsub_pd; // "__builtin_ia32_vfmaddsubpd"
  42429. case 's': // 1 string to match.
  42430. return Intrinsic::x86_fma_vfmaddsub_ps; // "__builtin_ia32_vfmaddsubps"
  42431. }
  42432. break;
  42433. }
  42434. break;
  42435. case 's': // 4 strings to match.
  42436. if (memcmp(BuiltinName.data()+19, "ub", 2))
  42437. break;
  42438. switch (BuiltinName[21]) {
  42439. default: break;
  42440. case 'a': // 2 strings to match.
  42441. if (memcmp(BuiltinName.data()+22, "ddp", 3))
  42442. break;
  42443. switch (BuiltinName[25]) {
  42444. default: break;
  42445. case 'd': // 1 string to match.
  42446. return Intrinsic::x86_fma_vfmsubadd_pd; // "__builtin_ia32_vfmsubaddpd"
  42447. case 's': // 1 string to match.
  42448. return Intrinsic::x86_fma_vfmsubadd_ps; // "__builtin_ia32_vfmsubaddps"
  42449. }
  42450. break;
  42451. case 'p': // 2 strings to match.
  42452. switch (BuiltinName[22]) {
  42453. default: break;
  42454. case 'd': // 1 string to match.
  42455. if (memcmp(BuiltinName.data()+23, "256", 3))
  42456. break;
  42457. return Intrinsic::x86_fma_vfmsub_pd_256; // "__builtin_ia32_vfmsubpd256"
  42458. case 's': // 1 string to match.
  42459. if (memcmp(BuiltinName.data()+23, "256", 3))
  42460. break;
  42461. return Intrinsic::x86_fma_vfmsub_ps_256; // "__builtin_ia32_vfmsubps256"
  42462. }
  42463. break;
  42464. }
  42465. break;
  42466. }
  42467. break;
  42468. case 't': // 4 strings to match.
  42469. if (memcmp(BuiltinName.data()+17, "est", 3))
  42470. break;
  42471. switch (BuiltinName[20]) {
  42472. default: break;
  42473. case 'c': // 2 strings to match.
  42474. if (BuiltinName[21] != 'p')
  42475. break;
  42476. switch (BuiltinName[22]) {
  42477. default: break;
  42478. case 'd': // 1 string to match.
  42479. if (memcmp(BuiltinName.data()+23, "256", 3))
  42480. break;
  42481. return Intrinsic::x86_avx_vtestc_pd_256; // "__builtin_ia32_vtestcpd256"
  42482. case 's': // 1 string to match.
  42483. if (memcmp(BuiltinName.data()+23, "256", 3))
  42484. break;
  42485. return Intrinsic::x86_avx_vtestc_ps_256; // "__builtin_ia32_vtestcps256"
  42486. }
  42487. break;
  42488. case 'z': // 2 strings to match.
  42489. if (BuiltinName[21] != 'p')
  42490. break;
  42491. switch (BuiltinName[22]) {
  42492. default: break;
  42493. case 'd': // 1 string to match.
  42494. if (memcmp(BuiltinName.data()+23, "256", 3))
  42495. break;
  42496. return Intrinsic::x86_avx_vtestz_pd_256; // "__builtin_ia32_vtestzpd256"
  42497. case 's': // 1 string to match.
  42498. if (memcmp(BuiltinName.data()+23, "256", 3))
  42499. break;
  42500. return Intrinsic::x86_avx_vtestz_ps_256; // "__builtin_ia32_vtestzps256"
  42501. }
  42502. break;
  42503. }
  42504. break;
  42505. }
  42506. break;
  42507. }
  42508. break;
  42509. case 27: // 29 strings to match.
  42510. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  42511. break;
  42512. switch (BuiltinName[15]) {
  42513. default: break;
  42514. case 'c': // 2 strings to match.
  42515. if (memcmp(BuiltinName.data()+16, "vttp", 4))
  42516. break;
  42517. switch (BuiltinName[20]) {
  42518. default: break;
  42519. case 'd': // 1 string to match.
  42520. if (memcmp(BuiltinName.data()+21, "2dq256", 6))
  42521. break;
  42522. return Intrinsic::x86_avx_cvtt_pd2dq_256; // "__builtin_ia32_cvttpd2dq256"
  42523. case 's': // 1 string to match.
  42524. if (memcmp(BuiltinName.data()+21, "2dq256", 6))
  42525. break;
  42526. return Intrinsic::x86_avx_cvtt_ps2dq_256; // "__builtin_ia32_cvttps2dq256"
  42527. }
  42528. break;
  42529. case 'e': // 1 string to match.
  42530. if (memcmp(BuiltinName.data()+16, "xtractps128", 11))
  42531. break;
  42532. return Intrinsic::x86_sse41_extractps; // "__builtin_ia32_extractps128"
  42533. case 'g': // 4 strings to match.
  42534. if (memcmp(BuiltinName.data()+16, "ather", 5))
  42535. break;
  42536. switch (BuiltinName[21]) {
  42537. default: break;
  42538. case 'd': // 2 strings to match.
  42539. if (BuiltinName[22] != '_')
  42540. break;
  42541. switch (BuiltinName[23]) {
  42542. default: break;
  42543. case 'd': // 1 string to match.
  42544. if (memcmp(BuiltinName.data()+24, "256", 3))
  42545. break;
  42546. return Intrinsic::x86_avx2_gather_d_d_256; // "__builtin_ia32_gatherd_d256"
  42547. case 'q': // 1 string to match.
  42548. if (memcmp(BuiltinName.data()+24, "256", 3))
  42549. break;
  42550. return Intrinsic::x86_avx2_gather_d_q_256; // "__builtin_ia32_gatherd_q256"
  42551. }
  42552. break;
  42553. case 'q': // 2 strings to match.
  42554. if (BuiltinName[22] != '_')
  42555. break;
  42556. switch (BuiltinName[23]) {
  42557. default: break;
  42558. case 'd': // 1 string to match.
  42559. if (memcmp(BuiltinName.data()+24, "256", 3))
  42560. break;
  42561. return Intrinsic::x86_avx2_gather_q_d_256; // "__builtin_ia32_gatherq_d256"
  42562. case 'q': // 1 string to match.
  42563. if (memcmp(BuiltinName.data()+24, "256", 3))
  42564. break;
  42565. return Intrinsic::x86_avx2_gather_q_q_256; // "__builtin_ia32_gatherq_q256"
  42566. }
  42567. break;
  42568. }
  42569. break;
  42570. case 'm': // 2 strings to match.
  42571. if (memcmp(BuiltinName.data()+16, "askload", 7))
  42572. break;
  42573. switch (BuiltinName[23]) {
  42574. default: break;
  42575. case 'd': // 1 string to match.
  42576. if (memcmp(BuiltinName.data()+24, "256", 3))
  42577. break;
  42578. return Intrinsic::x86_avx2_maskload_d_256; // "__builtin_ia32_maskloadd256"
  42579. case 'q': // 1 string to match.
  42580. if (memcmp(BuiltinName.data()+24, "256", 3))
  42581. break;
  42582. return Intrinsic::x86_avx2_maskload_q_256; // "__builtin_ia32_maskloadq256"
  42583. }
  42584. break;
  42585. case 'p': // 9 strings to match.
  42586. switch (BuiltinName[16]) {
  42587. default: break;
  42588. case 'c': // 5 strings to match.
  42589. switch (BuiltinName[17]) {
  42590. default: break;
  42591. case 'l': // 1 string to match.
  42592. if (memcmp(BuiltinName.data()+18, "mulqdq128", 9))
  42593. break;
  42594. return Intrinsic::x86_pclmulqdq; // "__builtin_ia32_pclmulqdq128"
  42595. case 'm': // 4 strings to match.
  42596. if (BuiltinName[18] != 'p')
  42597. break;
  42598. switch (BuiltinName[19]) {
  42599. default: break;
  42600. case 'e': // 2 strings to match.
  42601. if (memcmp(BuiltinName.data()+20, "str", 3))
  42602. break;
  42603. switch (BuiltinName[23]) {
  42604. default: break;
  42605. case 'i': // 1 string to match.
  42606. if (memcmp(BuiltinName.data()+24, "128", 3))
  42607. break;
  42608. return Intrinsic::x86_sse42_pcmpestri128; // "__builtin_ia32_pcmpestri128"
  42609. case 'm': // 1 string to match.
  42610. if (memcmp(BuiltinName.data()+24, "128", 3))
  42611. break;
  42612. return Intrinsic::x86_sse42_pcmpestrm128; // "__builtin_ia32_pcmpestrm128"
  42613. }
  42614. break;
  42615. case 'i': // 2 strings to match.
  42616. if (memcmp(BuiltinName.data()+20, "str", 3))
  42617. break;
  42618. switch (BuiltinName[23]) {
  42619. default: break;
  42620. case 'i': // 1 string to match.
  42621. if (memcmp(BuiltinName.data()+24, "128", 3))
  42622. break;
  42623. return Intrinsic::x86_sse42_pcmpistri128; // "__builtin_ia32_pcmpistri128"
  42624. case 'm': // 1 string to match.
  42625. if (memcmp(BuiltinName.data()+24, "128", 3))
  42626. break;
  42627. return Intrinsic::x86_sse42_pcmpistrm128; // "__builtin_ia32_pcmpistrm128"
  42628. }
  42629. break;
  42630. }
  42631. break;
  42632. }
  42633. break;
  42634. case 'e': // 2 strings to match.
  42635. if (memcmp(BuiltinName.data()+17, "rmvars", 6))
  42636. break;
  42637. switch (BuiltinName[23]) {
  42638. default: break;
  42639. case 'f': // 1 string to match.
  42640. if (memcmp(BuiltinName.data()+24, "256", 3))
  42641. break;
  42642. return Intrinsic::x86_avx2_permps; // "__builtin_ia32_permvarsf256"
  42643. case 'i': // 1 string to match.
  42644. if (memcmp(BuiltinName.data()+24, "256", 3))
  42645. break;
  42646. return Intrinsic::x86_avx2_permd; // "__builtin_ia32_permvarsi256"
  42647. }
  42648. break;
  42649. case 'm': // 2 strings to match.
  42650. if (memcmp(BuiltinName.data()+17, "addubsw", 7))
  42651. break;
  42652. switch (BuiltinName[24]) {
  42653. default: break;
  42654. case '1': // 1 string to match.
  42655. if (memcmp(BuiltinName.data()+25, "28", 2))
  42656. break;
  42657. return Intrinsic::x86_ssse3_pmadd_ub_sw_128; // "__builtin_ia32_pmaddubsw128"
  42658. case '2': // 1 string to match.
  42659. if (memcmp(BuiltinName.data()+25, "56", 2))
  42660. break;
  42661. return Intrinsic::x86_avx2_pmadd_ub_sw; // "__builtin_ia32_pmaddubsw256"
  42662. }
  42663. break;
  42664. }
  42665. break;
  42666. case 'v': // 11 strings to match.
  42667. switch (BuiltinName[16]) {
  42668. default: break;
  42669. case 'b': // 1 string to match.
  42670. if (memcmp(BuiltinName.data()+17, "roadcastss", 10))
  42671. break;
  42672. return Intrinsic::x86_avx_vbroadcast_ss; // "__builtin_ia32_vbroadcastss"
  42673. case 'c': // 2 strings to match.
  42674. if (memcmp(BuiltinName.data()+17, "vtp", 3))
  42675. break;
  42676. switch (BuiltinName[20]) {
  42677. default: break;
  42678. case 'h': // 1 string to match.
  42679. if (memcmp(BuiltinName.data()+21, "2ps256", 6))
  42680. break;
  42681. return Intrinsic::x86_vcvtph2ps_256; // "__builtin_ia32_vcvtph2ps256"
  42682. case 's': // 1 string to match.
  42683. if (memcmp(BuiltinName.data()+21, "2ph256", 6))
  42684. break;
  42685. return Intrinsic::x86_vcvtps2ph_256; // "__builtin_ia32_vcvtps2ph256"
  42686. }
  42687. break;
  42688. case 'e': // 2 strings to match.
  42689. if (memcmp(BuiltinName.data()+17, "c_", 2))
  42690. break;
  42691. switch (BuiltinName[19]) {
  42692. default: break;
  42693. case 'e': // 1 string to match.
  42694. if (memcmp(BuiltinName.data()+20, "xt_v4hi", 7))
  42695. break;
  42696. return Intrinsic::x86_mmx_pextr_w; // "__builtin_ia32_vec_ext_v4hi"
  42697. case 's': // 1 string to match.
  42698. if (memcmp(BuiltinName.data()+20, "et_v4hi", 7))
  42699. break;
  42700. return Intrinsic::x86_mmx_pinsr_w; // "__builtin_ia32_vec_set_v4hi"
  42701. }
  42702. break;
  42703. case 'f': // 4 strings to match.
  42704. if (memcmp(BuiltinName.data()+17, "nm", 2))
  42705. break;
  42706. switch (BuiltinName[19]) {
  42707. default: break;
  42708. case 'a': // 2 strings to match.
  42709. if (memcmp(BuiltinName.data()+20, "ddp", 3))
  42710. break;
  42711. switch (BuiltinName[23]) {
  42712. default: break;
  42713. case 'd': // 1 string to match.
  42714. if (memcmp(BuiltinName.data()+24, "256", 3))
  42715. break;
  42716. return Intrinsic::x86_fma_vfnmadd_pd_256; // "__builtin_ia32_vfnmaddpd256"
  42717. case 's': // 1 string to match.
  42718. if (memcmp(BuiltinName.data()+24, "256", 3))
  42719. break;
  42720. return Intrinsic::x86_fma_vfnmadd_ps_256; // "__builtin_ia32_vfnmaddps256"
  42721. }
  42722. break;
  42723. case 's': // 2 strings to match.
  42724. if (memcmp(BuiltinName.data()+20, "ubp", 3))
  42725. break;
  42726. switch (BuiltinName[23]) {
  42727. default: break;
  42728. case 'd': // 1 string to match.
  42729. if (memcmp(BuiltinName.data()+24, "256", 3))
  42730. break;
  42731. return Intrinsic::x86_fma_vfnmsub_pd_256; // "__builtin_ia32_vfnmsubpd256"
  42732. case 's': // 1 string to match.
  42733. if (memcmp(BuiltinName.data()+24, "256", 3))
  42734. break;
  42735. return Intrinsic::x86_fma_vfnmsub_ps_256; // "__builtin_ia32_vfnmsubps256"
  42736. }
  42737. break;
  42738. }
  42739. break;
  42740. case 'p': // 2 strings to match.
  42741. if (memcmp(BuiltinName.data()+17, "ermilvarp", 9))
  42742. break;
  42743. switch (BuiltinName[26]) {
  42744. default: break;
  42745. case 'd': // 1 string to match.
  42746. return Intrinsic::x86_avx_vpermilvar_pd; // "__builtin_ia32_vpermilvarpd"
  42747. case 's': // 1 string to match.
  42748. return Intrinsic::x86_avx_vpermilvar_ps; // "__builtin_ia32_vpermilvarps"
  42749. }
  42750. break;
  42751. }
  42752. break;
  42753. }
  42754. break;
  42755. case 28: // 24 strings to match.
  42756. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  42757. break;
  42758. switch (BuiltinName[15]) {
  42759. default: break;
  42760. case 'a': // 2 strings to match.
  42761. if (memcmp(BuiltinName.data()+16, "es", 2))
  42762. break;
  42763. switch (BuiltinName[18]) {
  42764. default: break;
  42765. case 'd': // 1 string to match.
  42766. if (memcmp(BuiltinName.data()+19, "eclast128", 9))
  42767. break;
  42768. return Intrinsic::x86_aesni_aesdeclast; // "__builtin_ia32_aesdeclast128"
  42769. case 'e': // 1 string to match.
  42770. if (memcmp(BuiltinName.data()+19, "nclast128", 9))
  42771. break;
  42772. return Intrinsic::x86_aesni_aesenclast; // "__builtin_ia32_aesenclast128"
  42773. }
  42774. break;
  42775. case 'g': // 4 strings to match.
  42776. if (memcmp(BuiltinName.data()+16, "ather", 5))
  42777. break;
  42778. switch (BuiltinName[21]) {
  42779. default: break;
  42780. case 'd': // 2 strings to match.
  42781. if (memcmp(BuiltinName.data()+22, "_p", 2))
  42782. break;
  42783. switch (BuiltinName[24]) {
  42784. default: break;
  42785. case 'd': // 1 string to match.
  42786. if (memcmp(BuiltinName.data()+25, "256", 3))
  42787. break;
  42788. return Intrinsic::x86_avx2_gather_d_pd_256; // "__builtin_ia32_gatherd_pd256"
  42789. case 's': // 1 string to match.
  42790. if (memcmp(BuiltinName.data()+25, "256", 3))
  42791. break;
  42792. return Intrinsic::x86_avx2_gather_d_ps_256; // "__builtin_ia32_gatherd_ps256"
  42793. }
  42794. break;
  42795. case 'q': // 2 strings to match.
  42796. if (memcmp(BuiltinName.data()+22, "_p", 2))
  42797. break;
  42798. switch (BuiltinName[24]) {
  42799. default: break;
  42800. case 'd': // 1 string to match.
  42801. if (memcmp(BuiltinName.data()+25, "256", 3))
  42802. break;
  42803. return Intrinsic::x86_avx2_gather_q_pd_256; // "__builtin_ia32_gatherq_pd256"
  42804. case 's': // 1 string to match.
  42805. if (memcmp(BuiltinName.data()+25, "256", 3))
  42806. break;
  42807. return Intrinsic::x86_avx2_gather_q_ps_256; // "__builtin_ia32_gatherq_ps256"
  42808. }
  42809. break;
  42810. }
  42811. break;
  42812. case 'i': // 1 string to match.
  42813. if (memcmp(BuiltinName.data()+16, "nsert128i256", 12))
  42814. break;
  42815. return Intrinsic::x86_avx2_vinserti128; // "__builtin_ia32_insert128i256"
  42816. case 'm': // 4 strings to match.
  42817. if (memcmp(BuiltinName.data()+16, "ask", 3))
  42818. break;
  42819. switch (BuiltinName[19]) {
  42820. default: break;
  42821. case 'l': // 2 strings to match.
  42822. if (memcmp(BuiltinName.data()+20, "oadp", 4))
  42823. break;
  42824. switch (BuiltinName[24]) {
  42825. default: break;
  42826. case 'd': // 1 string to match.
  42827. if (memcmp(BuiltinName.data()+25, "256", 3))
  42828. break;
  42829. return Intrinsic::x86_avx_maskload_pd_256; // "__builtin_ia32_maskloadpd256"
  42830. case 's': // 1 string to match.
  42831. if (memcmp(BuiltinName.data()+25, "256", 3))
  42832. break;
  42833. return Intrinsic::x86_avx_maskload_ps_256; // "__builtin_ia32_maskloadps256"
  42834. }
  42835. break;
  42836. case 's': // 2 strings to match.
  42837. if (memcmp(BuiltinName.data()+20, "tore", 4))
  42838. break;
  42839. switch (BuiltinName[24]) {
  42840. default: break;
  42841. case 'd': // 1 string to match.
  42842. if (memcmp(BuiltinName.data()+25, "256", 3))
  42843. break;
  42844. return Intrinsic::x86_avx2_maskstore_d_256; // "__builtin_ia32_maskstored256"
  42845. case 'q': // 1 string to match.
  42846. if (memcmp(BuiltinName.data()+25, "256", 3))
  42847. break;
  42848. return Intrinsic::x86_avx2_maskstore_q_256; // "__builtin_ia32_maskstoreq256"
  42849. }
  42850. break;
  42851. }
  42852. break;
  42853. case 'p': // 11 strings to match.
  42854. switch (BuiltinName[16]) {
  42855. default: break;
  42856. case 'c': // 10 strings to match.
  42857. if (memcmp(BuiltinName.data()+17, "mp", 2))
  42858. break;
  42859. switch (BuiltinName[19]) {
  42860. default: break;
  42861. case 'e': // 5 strings to match.
  42862. if (memcmp(BuiltinName.data()+20, "stri", 4))
  42863. break;
  42864. switch (BuiltinName[24]) {
  42865. default: break;
  42866. case 'a': // 1 string to match.
  42867. if (memcmp(BuiltinName.data()+25, "128", 3))
  42868. break;
  42869. return Intrinsic::x86_sse42_pcmpestria128; // "__builtin_ia32_pcmpestria128"
  42870. case 'c': // 1 string to match.
  42871. if (memcmp(BuiltinName.data()+25, "128", 3))
  42872. break;
  42873. return Intrinsic::x86_sse42_pcmpestric128; // "__builtin_ia32_pcmpestric128"
  42874. case 'o': // 1 string to match.
  42875. if (memcmp(BuiltinName.data()+25, "128", 3))
  42876. break;
  42877. return Intrinsic::x86_sse42_pcmpestrio128; // "__builtin_ia32_pcmpestrio128"
  42878. case 's': // 1 string to match.
  42879. if (memcmp(BuiltinName.data()+25, "128", 3))
  42880. break;
  42881. return Intrinsic::x86_sse42_pcmpestris128; // "__builtin_ia32_pcmpestris128"
  42882. case 'z': // 1 string to match.
  42883. if (memcmp(BuiltinName.data()+25, "128", 3))
  42884. break;
  42885. return Intrinsic::x86_sse42_pcmpestriz128; // "__builtin_ia32_pcmpestriz128"
  42886. }
  42887. break;
  42888. case 'i': // 5 strings to match.
  42889. if (memcmp(BuiltinName.data()+20, "stri", 4))
  42890. break;
  42891. switch (BuiltinName[24]) {
  42892. default: break;
  42893. case 'a': // 1 string to match.
  42894. if (memcmp(BuiltinName.data()+25, "128", 3))
  42895. break;
  42896. return Intrinsic::x86_sse42_pcmpistria128; // "__builtin_ia32_pcmpistria128"
  42897. case 'c': // 1 string to match.
  42898. if (memcmp(BuiltinName.data()+25, "128", 3))
  42899. break;
  42900. return Intrinsic::x86_sse42_pcmpistric128; // "__builtin_ia32_pcmpistric128"
  42901. case 'o': // 1 string to match.
  42902. if (memcmp(BuiltinName.data()+25, "128", 3))
  42903. break;
  42904. return Intrinsic::x86_sse42_pcmpistrio128; // "__builtin_ia32_pcmpistrio128"
  42905. case 's': // 1 string to match.
  42906. if (memcmp(BuiltinName.data()+25, "128", 3))
  42907. break;
  42908. return Intrinsic::x86_sse42_pcmpistris128; // "__builtin_ia32_pcmpistris128"
  42909. case 'z': // 1 string to match.
  42910. if (memcmp(BuiltinName.data()+25, "128", 3))
  42911. break;
  42912. return Intrinsic::x86_sse42_pcmpistriz128; // "__builtin_ia32_pcmpistriz128"
  42913. }
  42914. break;
  42915. }
  42916. break;
  42917. case 'h': // 1 string to match.
  42918. if (memcmp(BuiltinName.data()+17, "minposuw128", 11))
  42919. break;
  42920. return Intrinsic::x86_sse41_phminposuw; // "__builtin_ia32_phminposuw128"
  42921. }
  42922. break;
  42923. case 'v': // 2 strings to match.
  42924. if (memcmp(BuiltinName.data()+16, "testnzcp", 8))
  42925. break;
  42926. switch (BuiltinName[24]) {
  42927. default: break;
  42928. case 'd': // 1 string to match.
  42929. if (memcmp(BuiltinName.data()+25, "256", 3))
  42930. break;
  42931. return Intrinsic::x86_avx_vtestnzc_pd_256; // "__builtin_ia32_vtestnzcpd256"
  42932. case 's': // 1 string to match.
  42933. if (memcmp(BuiltinName.data()+25, "256", 3))
  42934. break;
  42935. return Intrinsic::x86_avx_vtestnzc_ps_256; // "__builtin_ia32_vtestnzcps256"
  42936. }
  42937. break;
  42938. }
  42939. break;
  42940. case 29: // 15 strings to match.
  42941. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  42942. break;
  42943. switch (BuiltinName[15]) {
  42944. default: break;
  42945. case 'e': // 1 string to match.
  42946. if (memcmp(BuiltinName.data()+16, "xtract128i256", 13))
  42947. break;
  42948. return Intrinsic::x86_avx2_vextracti128; // "__builtin_ia32_extract128i256"
  42949. case 'm': // 2 strings to match.
  42950. if (memcmp(BuiltinName.data()+16, "askstorep", 9))
  42951. break;
  42952. switch (BuiltinName[25]) {
  42953. default: break;
  42954. case 'd': // 1 string to match.
  42955. if (memcmp(BuiltinName.data()+26, "256", 3))
  42956. break;
  42957. return Intrinsic::x86_avx_maskstore_pd_256; // "__builtin_ia32_maskstorepd256"
  42958. case 's': // 1 string to match.
  42959. if (memcmp(BuiltinName.data()+26, "256", 3))
  42960. break;
  42961. return Intrinsic::x86_avx_maskstore_ps_256; // "__builtin_ia32_maskstoreps256"
  42962. }
  42963. break;
  42964. case 'p': // 8 strings to match.
  42965. if (memcmp(BuiltinName.data()+16, "broadcast", 9))
  42966. break;
  42967. switch (BuiltinName[25]) {
  42968. default: break;
  42969. case 'b': // 2 strings to match.
  42970. switch (BuiltinName[26]) {
  42971. default: break;
  42972. case '1': // 1 string to match.
  42973. if (memcmp(BuiltinName.data()+27, "28", 2))
  42974. break;
  42975. return Intrinsic::x86_avx2_pbroadcastb_128; // "__builtin_ia32_pbroadcastb128"
  42976. case '2': // 1 string to match.
  42977. if (memcmp(BuiltinName.data()+27, "56", 2))
  42978. break;
  42979. return Intrinsic::x86_avx2_pbroadcastb_256; // "__builtin_ia32_pbroadcastb256"
  42980. }
  42981. break;
  42982. case 'd': // 2 strings to match.
  42983. switch (BuiltinName[26]) {
  42984. default: break;
  42985. case '1': // 1 string to match.
  42986. if (memcmp(BuiltinName.data()+27, "28", 2))
  42987. break;
  42988. return Intrinsic::x86_avx2_pbroadcastd_128; // "__builtin_ia32_pbroadcastd128"
  42989. case '2': // 1 string to match.
  42990. if (memcmp(BuiltinName.data()+27, "56", 2))
  42991. break;
  42992. return Intrinsic::x86_avx2_pbroadcastd_256; // "__builtin_ia32_pbroadcastd256"
  42993. }
  42994. break;
  42995. case 'q': // 2 strings to match.
  42996. switch (BuiltinName[26]) {
  42997. default: break;
  42998. case '1': // 1 string to match.
  42999. if (memcmp(BuiltinName.data()+27, "28", 2))
  43000. break;
  43001. return Intrinsic::x86_avx2_pbroadcastq_128; // "__builtin_ia32_pbroadcastq128"
  43002. case '2': // 1 string to match.
  43003. if (memcmp(BuiltinName.data()+27, "56", 2))
  43004. break;
  43005. return Intrinsic::x86_avx2_pbroadcastq_256; // "__builtin_ia32_pbroadcastq256"
  43006. }
  43007. break;
  43008. case 'w': // 2 strings to match.
  43009. switch (BuiltinName[26]) {
  43010. default: break;
  43011. case '1': // 1 string to match.
  43012. if (memcmp(BuiltinName.data()+27, "28", 2))
  43013. break;
  43014. return Intrinsic::x86_avx2_pbroadcastw_128; // "__builtin_ia32_pbroadcastw128"
  43015. case '2': // 1 string to match.
  43016. if (memcmp(BuiltinName.data()+27, "56", 2))
  43017. break;
  43018. return Intrinsic::x86_avx2_pbroadcastw_256; // "__builtin_ia32_pbroadcastw256"
  43019. }
  43020. break;
  43021. }
  43022. break;
  43023. case 'v': // 4 strings to match.
  43024. if (memcmp(BuiltinName.data()+16, "fm", 2))
  43025. break;
  43026. switch (BuiltinName[18]) {
  43027. default: break;
  43028. case 'a': // 2 strings to match.
  43029. if (memcmp(BuiltinName.data()+19, "ddsubp", 6))
  43030. break;
  43031. switch (BuiltinName[25]) {
  43032. default: break;
  43033. case 'd': // 1 string to match.
  43034. if (memcmp(BuiltinName.data()+26, "256", 3))
  43035. break;
  43036. return Intrinsic::x86_fma_vfmaddsub_pd_256; // "__builtin_ia32_vfmaddsubpd256"
  43037. case 's': // 1 string to match.
  43038. if (memcmp(BuiltinName.data()+26, "256", 3))
  43039. break;
  43040. return Intrinsic::x86_fma_vfmaddsub_ps_256; // "__builtin_ia32_vfmaddsubps256"
  43041. }
  43042. break;
  43043. case 's': // 2 strings to match.
  43044. if (memcmp(BuiltinName.data()+19, "ubaddp", 6))
  43045. break;
  43046. switch (BuiltinName[25]) {
  43047. default: break;
  43048. case 'd': // 1 string to match.
  43049. if (memcmp(BuiltinName.data()+26, "256", 3))
  43050. break;
  43051. return Intrinsic::x86_fma_vfmsubadd_pd_256; // "__builtin_ia32_vfmsubaddpd256"
  43052. case 's': // 1 string to match.
  43053. if (memcmp(BuiltinName.data()+26, "256", 3))
  43054. break;
  43055. return Intrinsic::x86_fma_vfmsubadd_ps_256; // "__builtin_ia32_vfmsubaddps256"
  43056. }
  43057. break;
  43058. }
  43059. break;
  43060. }
  43061. break;
  43062. case 30: // 6 strings to match.
  43063. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_v", 16))
  43064. break;
  43065. switch (BuiltinName[16]) {
  43066. default: break;
  43067. case 'b': // 4 strings to match.
  43068. if (memcmp(BuiltinName.data()+17, "roadcasts", 9))
  43069. break;
  43070. switch (BuiltinName[26]) {
  43071. default: break;
  43072. case 'd': // 1 string to match.
  43073. if (memcmp(BuiltinName.data()+27, "256", 3))
  43074. break;
  43075. return Intrinsic::x86_avx_vbroadcast_sd_256; // "__builtin_ia32_vbroadcastsd256"
  43076. case 'i': // 1 string to match.
  43077. if (memcmp(BuiltinName.data()+27, "256", 3))
  43078. break;
  43079. return Intrinsic::x86_avx2_vbroadcasti128; // "__builtin_ia32_vbroadcastsi256"
  43080. case 's': // 2 strings to match.
  43081. switch (BuiltinName[27]) {
  43082. default: break;
  43083. case '2': // 1 string to match.
  43084. if (memcmp(BuiltinName.data()+28, "56", 2))
  43085. break;
  43086. return Intrinsic::x86_avx_vbroadcast_ss_256; // "__builtin_ia32_vbroadcastss256"
  43087. case '_': // 1 string to match.
  43088. if (memcmp(BuiltinName.data()+28, "ps", 2))
  43089. break;
  43090. return Intrinsic::x86_avx2_vbroadcast_ss_ps; // "__builtin_ia32_vbroadcastss_ps"
  43091. }
  43092. break;
  43093. }
  43094. break;
  43095. case 'p': // 2 strings to match.
  43096. if (memcmp(BuiltinName.data()+17, "ermilvarp", 9))
  43097. break;
  43098. switch (BuiltinName[26]) {
  43099. default: break;
  43100. case 'd': // 1 string to match.
  43101. if (memcmp(BuiltinName.data()+27, "256", 3))
  43102. break;
  43103. return Intrinsic::x86_avx_vpermilvar_pd_256; // "__builtin_ia32_vpermilvarpd256"
  43104. case 's': // 1 string to match.
  43105. if (memcmp(BuiltinName.data()+27, "256", 3))
  43106. break;
  43107. return Intrinsic::x86_avx_vpermilvar_ps_256; // "__builtin_ia32_vpermilvarps256"
  43108. }
  43109. break;
  43110. }
  43111. break;
  43112. case 31: // 3 strings to match.
  43113. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_vperm2f128_", 26))
  43114. break;
  43115. switch (BuiltinName[26]) {
  43116. default: break;
  43117. case 'p': // 2 strings to match.
  43118. switch (BuiltinName[27]) {
  43119. default: break;
  43120. case 'd': // 1 string to match.
  43121. if (memcmp(BuiltinName.data()+28, "256", 3))
  43122. break;
  43123. return Intrinsic::x86_avx_vperm2f128_pd_256; // "__builtin_ia32_vperm2f128_pd256"
  43124. case 's': // 1 string to match.
  43125. if (memcmp(BuiltinName.data()+28, "256", 3))
  43126. break;
  43127. return Intrinsic::x86_avx_vperm2f128_ps_256; // "__builtin_ia32_vperm2f128_ps256"
  43128. }
  43129. break;
  43130. case 's': // 1 string to match.
  43131. if (memcmp(BuiltinName.data()+27, "i256", 4))
  43132. break;
  43133. return Intrinsic::x86_avx_vperm2f128_si_256; // "__builtin_ia32_vperm2f128_si256"
  43134. }
  43135. break;
  43136. case 32: // 3 strings to match.
  43137. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_vinsertf128_", 27))
  43138. break;
  43139. switch (BuiltinName[27]) {
  43140. default: break;
  43141. case 'p': // 2 strings to match.
  43142. switch (BuiltinName[28]) {
  43143. default: break;
  43144. case 'd': // 1 string to match.
  43145. if (memcmp(BuiltinName.data()+29, "256", 3))
  43146. break;
  43147. return Intrinsic::x86_avx_vinsertf128_pd_256; // "__builtin_ia32_vinsertf128_pd256"
  43148. case 's': // 1 string to match.
  43149. if (memcmp(BuiltinName.data()+29, "256", 3))
  43150. break;
  43151. return Intrinsic::x86_avx_vinsertf128_ps_256; // "__builtin_ia32_vinsertf128_ps256"
  43152. }
  43153. break;
  43154. case 's': // 1 string to match.
  43155. if (memcmp(BuiltinName.data()+28, "i256", 4))
  43156. break;
  43157. return Intrinsic::x86_avx_vinsertf128_si_256; // "__builtin_ia32_vinsertf128_si256"
  43158. }
  43159. break;
  43160. case 33: // 6 strings to match.
  43161. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  43162. break;
  43163. switch (BuiltinName[15]) {
  43164. default: break;
  43165. case 'a': // 1 string to match.
  43166. if (memcmp(BuiltinName.data()+16, "eskeygenassist128", 17))
  43167. break;
  43168. return Intrinsic::x86_aesni_aeskeygenassist; // "__builtin_ia32_aeskeygenassist128"
  43169. case 'v': // 5 strings to match.
  43170. switch (BuiltinName[16]) {
  43171. default: break;
  43172. case 'b': // 2 strings to match.
  43173. if (memcmp(BuiltinName.data()+17, "roadcasts", 9))
  43174. break;
  43175. switch (BuiltinName[26]) {
  43176. default: break;
  43177. case 'd': // 1 string to match.
  43178. if (memcmp(BuiltinName.data()+27, "_pd256", 6))
  43179. break;
  43180. return Intrinsic::x86_avx2_vbroadcast_sd_pd_256; // "__builtin_ia32_vbroadcastsd_pd256"
  43181. case 's': // 1 string to match.
  43182. if (memcmp(BuiltinName.data()+27, "_ps256", 6))
  43183. break;
  43184. return Intrinsic::x86_avx2_vbroadcast_ss_ps_256; // "__builtin_ia32_vbroadcastss_ps256"
  43185. }
  43186. break;
  43187. case 'e': // 3 strings to match.
  43188. if (memcmp(BuiltinName.data()+17, "xtractf128_", 11))
  43189. break;
  43190. switch (BuiltinName[28]) {
  43191. default: break;
  43192. case 'p': // 2 strings to match.
  43193. switch (BuiltinName[29]) {
  43194. default: break;
  43195. case 'd': // 1 string to match.
  43196. if (memcmp(BuiltinName.data()+30, "256", 3))
  43197. break;
  43198. return Intrinsic::x86_avx_vextractf128_pd_256; // "__builtin_ia32_vextractf128_pd256"
  43199. case 's': // 1 string to match.
  43200. if (memcmp(BuiltinName.data()+30, "256", 3))
  43201. break;
  43202. return Intrinsic::x86_avx_vextractf128_ps_256; // "__builtin_ia32_vextractf128_ps256"
  43203. }
  43204. break;
  43205. case 's': // 1 string to match.
  43206. if (memcmp(BuiltinName.data()+29, "i256", 4))
  43207. break;
  43208. return Intrinsic::x86_avx_vextractf128_si_256; // "__builtin_ia32_vextractf128_si256"
  43209. }
  43210. break;
  43211. }
  43212. break;
  43213. }
  43214. break;
  43215. case 35: // 6 strings to match.
  43216. if (memcmp(BuiltinName.data()+0, "__builtin_ia32_", 15))
  43217. break;
  43218. switch (BuiltinName[15]) {
  43219. default: break;
  43220. case 'p': // 4 strings to match.
  43221. if (BuiltinName[16] != 's')
  43222. break;
  43223. switch (BuiltinName[17]) {
  43224. default: break;
  43225. case 'l': // 2 strings to match.
  43226. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  43227. break;
  43228. switch (BuiltinName[22]) {
  43229. default: break;
  43230. case '1': // 1 string to match.
  43231. if (memcmp(BuiltinName.data()+23, "28_byteshift", 12))
  43232. break;
  43233. return Intrinsic::x86_sse2_psll_dq_bs; // "__builtin_ia32_pslldqi128_byteshift"
  43234. case '2': // 1 string to match.
  43235. if (memcmp(BuiltinName.data()+23, "56_byteshift", 12))
  43236. break;
  43237. return Intrinsic::x86_avx2_psll_dq_bs; // "__builtin_ia32_pslldqi256_byteshift"
  43238. }
  43239. break;
  43240. case 'r': // 2 strings to match.
  43241. if (memcmp(BuiltinName.data()+18, "ldqi", 4))
  43242. break;
  43243. switch (BuiltinName[22]) {
  43244. default: break;
  43245. case '1': // 1 string to match.
  43246. if (memcmp(BuiltinName.data()+23, "28_byteshift", 12))
  43247. break;
  43248. return Intrinsic::x86_sse2_psrl_dq_bs; // "__builtin_ia32_psrldqi128_byteshift"
  43249. case '2': // 1 string to match.
  43250. if (memcmp(BuiltinName.data()+23, "56_byteshift", 12))
  43251. break;
  43252. return Intrinsic::x86_avx2_psrl_dq_bs; // "__builtin_ia32_psrldqi256_byteshift"
  43253. }
  43254. break;
  43255. }
  43256. break;
  43257. case 'v': // 2 strings to match.
  43258. if (memcmp(BuiltinName.data()+16, "broadcastf128_p", 15))
  43259. break;
  43260. switch (BuiltinName[31]) {
  43261. default: break;
  43262. case 'd': // 1 string to match.
  43263. if (memcmp(BuiltinName.data()+32, "256", 3))
  43264. break;
  43265. return Intrinsic::x86_avx_vbroadcastf128_pd_256; // "__builtin_ia32_vbroadcastf128_pd256"
  43266. case 's': // 1 string to match.
  43267. if (memcmp(BuiltinName.data()+32, "256", 3))
  43268. break;
  43269. return Intrinsic::x86_avx_vbroadcastf128_ps_256; // "__builtin_ia32_vbroadcastf128_ps256"
  43270. }
  43271. break;
  43272. }
  43273. break;
  43274. }
  43275. }
  43276. return Intrinsic::not_intrinsic;
  43277. }
  43278. #endif
  43279. #if defined(_MSC_VER) && defined(setjmp_undefined_for_msvc)
  43280. // let's return it to _setjmp state
  43281. # pragma pop_macro("setjmp")
  43282. # undef setjmp_undefined_for_msvc
  43283. #endif