optabs.def 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. /* Definitions for operation tables, or "optabs".
  2. Copyright (C) 1987-2019 Free Software Foundation, Inc.
  3. This file is part of GCC.
  4. GCC is free software; you can redistribute it and/or modify it under
  5. the terms of the GNU General Public License as published by the Free
  6. Software Foundation; either version 3, or (at your option) any later
  7. version.
  8. GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  9. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10. FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  11. for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with GCC; see the file COPYING3. If not see
  14. <http://www.gnu.org/licenses/>. */
  15. /* The entries in optabs.def are categorized:
  16. C: A "conversion" optab, which uses two modes; has libcall data.
  17. N: A "normal" optab, which uses one mode; has libcall data.
  18. D: A "direct" optab, which uses one mode; does not have libcall data.
  19. V: An "oVerflow" optab. Like N, but does not record its code in
  20. code_to_optab.
  21. CX, NX, VX: An extra pattern entry for a conversion or normal optab.
  22. These patterns may be present in the MD file with names that contain
  23. the mode(s) used and the name of the operation. This array contains
  24. a list of optabs that need to be initialized. Within each name,
  25. $a and $b are used to match a short mode name (the part of the mode
  26. name not including `mode' and converted to lower-case).
  27. $I means that only full integer modes should be considered for the
  28. next mode, and $F means that only float modes should be considered.
  29. $P means that both full and partial integer modes should be considered.
  30. $Q means that only fixed-point modes should be considered.
  31. The pattern may be NULL if the optab exists only for the libcalls
  32. that we plan to attach to it, and there are no named patterns in
  33. the md files. */
  34. /* The extension libcalls are used for float extension. */
  35. OPTAB_CL(sext_optab, "extend$b$a2", SIGN_EXTEND, "extend", gen_extend_conv_libfunc)
  36. OPTAB_CL(trunc_optab, "trunc$b$a2", TRUNCATE, "trunc", gen_trunc_conv_libfunc)
  37. OPTAB_CL(zext_optab, "zero_extend$b$a2", ZERO_EXTEND, NULL, NULL)
  38. OPTAB_CL(sfix_optab, "fix$F$b$I$a2", FIX, "fix", gen_fp_to_int_conv_libfunc)
  39. OPTAB_CL(ufix_optab, "fixuns$F$b$a2", UNSIGNED_FIX, "fixuns", gen_fp_to_int_conv_libfunc)
  40. OPTAB_CL(sfloat_optab, "float$I$b$F$a2", FLOAT, "float", gen_int_to_fp_conv_libfunc)
  41. OPTAB_CL(ufloat_optab, "floatuns$I$b$F$a2", UNSIGNED_FLOAT, NULL, gen_ufloat_conv_libfunc)
  42. OPTAB_CL(lrint_optab, "lrint$F$b$I$a2", UNKNOWN, "lrint", gen_int_to_fp_nondecimal_conv_libfunc)
  43. OPTAB_CL(lround_optab, "lround$F$b$I$a2", UNKNOWN, "lround", gen_int_to_fp_nondecimal_conv_libfunc)
  44. OPTAB_CL(lfloor_optab, "lfloor$F$b$I$a2", UNKNOWN, "lfloor", gen_int_to_fp_nondecimal_conv_libfunc)
  45. OPTAB_CL(lceil_optab, "lceil$F$b$I$a2", UNKNOWN, "lceil", gen_int_to_fp_nondecimal_conv_libfunc)
  46. /* Conversions for fixed-point modes and other modes. */
  47. OPTAB_CL(fract_optab, "fract$b$a2", FRACT_CONVERT, "fract", gen_fract_conv_libfunc)
  48. OPTAB_CL(fractuns_optab, "fractuns$I$b$Q$a2", UNSIGNED_FRACT_CONVERT, "fractuns", gen_fractuns_conv_libfunc)
  49. OPTAB_CX(fractuns_optab, "fractuns$Q$b$I$a2")
  50. OPTAB_CL(satfract_optab, "satfract$b$Q$a2", SAT_FRACT, "satfract", gen_satfract_conv_libfunc)
  51. OPTAB_CL(satfractuns_optab, "satfractuns$I$b$Q$a2", UNSIGNED_SAT_FRACT, "satfractuns", gen_satfractuns_conv_libfunc)
  52. OPTAB_CD(sfixtrunc_optab, "fix_trunc$F$b$I$a2")
  53. OPTAB_CD(ufixtrunc_optab, "fixuns_trunc$F$b$I$a2")
  54. /* Misc optabs that use two modes; model them as "conversions". */
  55. OPTAB_CD(smul_widen_optab, "mul$b$a3")
  56. OPTAB_CD(umul_widen_optab, "umul$b$a3")
  57. OPTAB_CD(usmul_widen_optab, "usmul$b$a3")
  58. OPTAB_CD(smadd_widen_optab, "madd$b$a4")
  59. OPTAB_CD(umadd_widen_optab, "umadd$b$a4")
  60. OPTAB_CD(ssmadd_widen_optab, "ssmadd$b$a4")
  61. OPTAB_CD(usmadd_widen_optab, "usmadd$b$a4")
  62. OPTAB_CD(smsub_widen_optab, "msub$b$a4")
  63. OPTAB_CD(umsub_widen_optab, "umsub$b$a4")
  64. OPTAB_CD(ssmsub_widen_optab, "ssmsub$b$a4")
  65. OPTAB_CD(usmsub_widen_optab, "usmsub$a$b4")
  66. OPTAB_CD(vec_load_lanes_optab, "vec_load_lanes$a$b")
  67. OPTAB_CD(vec_store_lanes_optab, "vec_store_lanes$a$b")
  68. OPTAB_CD(vec_mask_load_lanes_optab, "vec_mask_load_lanes$a$b")
  69. OPTAB_CD(vec_mask_store_lanes_optab, "vec_mask_store_lanes$a$b")
  70. OPTAB_CD(vcond_optab, "vcond$a$b")
  71. OPTAB_CD(vcondu_optab, "vcondu$a$b")
  72. OPTAB_CD(vcondeq_optab, "vcondeq$a$b")
  73. OPTAB_CD(vcond_mask_optab, "vcond_mask_$a$b")
  74. OPTAB_CD(vec_cmp_optab, "vec_cmp$a$b")
  75. OPTAB_CD(vec_cmpu_optab, "vec_cmpu$a$b")
  76. OPTAB_CD(vec_cmpeq_optab, "vec_cmpeq$a$b")
  77. OPTAB_CD(maskload_optab, "maskload$a$b")
  78. OPTAB_CD(maskstore_optab, "maskstore$a$b")
  79. OPTAB_CD(vec_extract_optab, "vec_extract$a$b")
  80. OPTAB_CD(vec_init_optab, "vec_init$a$b")
  81. OPTAB_CD (while_ult_optab, "while_ult$a$b")
  82. OPTAB_NL(add_optab, "add$P$a3", PLUS, "add", '3', gen_int_fp_fixed_libfunc)
  83. OPTAB_NX(add_optab, "add$F$a3")
  84. OPTAB_NX(add_optab, "add$Q$a3")
  85. OPTAB_VL(addv_optab, "addv$I$a3", PLUS, "add", '3', gen_intv_fp_libfunc)
  86. OPTAB_VX(addv_optab, "add$F$a3")
  87. OPTAB_NL(ssadd_optab, "ssadd$Q$a3", SS_PLUS, "ssadd", '3', gen_signed_fixed_libfunc)
  88. OPTAB_NL(usadd_optab, "usadd$Q$a3", US_PLUS, "usadd", '3', gen_unsigned_fixed_libfunc)
  89. OPTAB_NL(sub_optab, "sub$P$a3", MINUS, "sub", '3', gen_int_fp_fixed_libfunc)
  90. OPTAB_NX(sub_optab, "sub$F$a3")
  91. OPTAB_NX(sub_optab, "sub$Q$a3")
  92. OPTAB_VL(subv_optab, "subv$I$a3", MINUS, "sub", '3', gen_intv_fp_libfunc)
  93. OPTAB_VX(subv_optab, "sub$F$a3")
  94. OPTAB_NL(sssub_optab, "sssub$Q$a3", SS_MINUS, "sssub", '3', gen_signed_fixed_libfunc)
  95. OPTAB_NL(ussub_optab, "ussub$Q$a3", US_MINUS, "ussub", '3', gen_unsigned_fixed_libfunc)
  96. OPTAB_NL(smul_optab, "mul$Q$a3", MULT, "mul", '3', gen_int_fp_fixed_libfunc)
  97. OPTAB_NX(smul_optab, "mul$P$a3")
  98. OPTAB_NX(smul_optab, "mul$F$a3")
  99. OPTAB_VL(smulv_optab, "mulv$I$a3", MULT, "mul", '3', gen_intv_fp_libfunc)
  100. OPTAB_VX(smulv_optab, "mul$F$a3")
  101. OPTAB_NL(ssmul_optab, "ssmul$Q$a3", SS_MULT, "ssmul", '3', gen_signed_fixed_libfunc)
  102. OPTAB_NL(usmul_optab, "usmul$Q$a3", US_MULT, "usmul", '3', gen_unsigned_fixed_libfunc)
  103. OPTAB_NL(sdiv_optab, "div$a3", DIV, "div", '3', gen_int_fp_signed_fixed_libfunc)
  104. OPTAB_VL(sdivv_optab, "divv$I$a3", DIV, "divv", '3', gen_int_libfunc)
  105. OPTAB_VX(sdivv_optab, "div$F$a3")
  106. OPTAB_NL(ssdiv_optab, "ssdiv$Q$a3", SS_DIV, "ssdiv", '3', gen_signed_fixed_libfunc)
  107. OPTAB_NL(udiv_optab, "udiv$I$a3", UDIV, "udiv", '3', gen_int_unsigned_fixed_libfunc)
  108. OPTAB_NX(udiv_optab, "udiv$Q$a3")
  109. OPTAB_NL(usdiv_optab, "usdiv$Q$a3", US_DIV, "usdiv", '3', gen_unsigned_fixed_libfunc)
  110. OPTAB_NC(sdivmod_optab, "divmod$a4", UNKNOWN)
  111. OPTAB_NC(udivmod_optab, "udivmod$a4", UNKNOWN)
  112. OPTAB_NL(smod_optab, "mod$a3", MOD, "mod", '3', gen_int_libfunc)
  113. OPTAB_NL(umod_optab, "umod$a3", UMOD, "umod", '3', gen_int_libfunc)
  114. OPTAB_NL(ftrunc_optab, "ftrunc$F$a2", UNKNOWN, "ftrunc", '2', gen_fp_libfunc)
  115. OPTAB_NL(and_optab, "and$a3", AND, "and", '3', gen_int_libfunc)
  116. OPTAB_NL(ior_optab, "ior$a3", IOR, "ior", '3', gen_int_libfunc)
  117. OPTAB_NL(xor_optab, "xor$a3", XOR, "xor", '3', gen_int_libfunc)
  118. OPTAB_NL(ashl_optab, "ashl$a3", ASHIFT, "ashl", '3', gen_int_fixed_libfunc)
  119. OPTAB_NL(ssashl_optab, "ssashl$Q$a3", SS_ASHIFT, "ssashl", '3', gen_signed_fixed_libfunc)
  120. OPTAB_NL(usashl_optab, "usashl$Q$a3", US_ASHIFT, "usashl", '3', gen_unsigned_fixed_libfunc)
  121. OPTAB_NL(ashr_optab, "ashr$a3", ASHIFTRT, "ashr", '3', gen_int_signed_fixed_libfunc)
  122. OPTAB_NL(lshr_optab, "lshr$a3", LSHIFTRT, "lshr", '3', gen_int_unsigned_fixed_libfunc)
  123. OPTAB_NC(rotl_optab, "rotl$a3", ROTATE)
  124. OPTAB_NC(rotr_optab, "rotr$a3", ROTATERT)
  125. OPTAB_VC(vashl_optab, "vashl$a3", ASHIFT)
  126. OPTAB_VC(vashr_optab, "vashr$a3", ASHIFTRT)
  127. OPTAB_VC(vlshr_optab, "vlshr$a3", LSHIFTRT)
  128. OPTAB_VC(vrotl_optab, "vrotl$a3", ROTATE)
  129. OPTAB_VC(vrotr_optab, "vrotr$a3", ROTATERT)
  130. OPTAB_NL(smin_optab, "smin$a3", SMIN, "min", '3', gen_int_fp_libfunc)
  131. OPTAB_NL(smax_optab, "smax$a3", SMAX, "max", '3', gen_int_fp_libfunc)
  132. OPTAB_NL(umin_optab, "umin$I$a3", UMIN, "umin", '3', gen_int_libfunc)
  133. OPTAB_NL(umax_optab, "umax$I$a3", UMAX, "umax", '3', gen_int_libfunc)
  134. OPTAB_NL(neg_optab, "neg$P$a2", NEG, "neg", '2', gen_int_fp_fixed_libfunc)
  135. OPTAB_NX(neg_optab, "neg$F$a2")
  136. OPTAB_NX(neg_optab, "neg$Q$a2")
  137. OPTAB_VL(negv_optab, "negv$I$a2", NEG, "neg", '2', gen_intv_fp_libfunc)
  138. OPTAB_VX(negv_optab, "neg$F$a2")
  139. OPTAB_NL(ssneg_optab, "ssneg$Q$a2", SS_NEG, "ssneg", '2', gen_signed_fixed_libfunc)
  140. OPTAB_NL(usneg_optab, "usneg$Q$a2", US_NEG, "usneg", '2', gen_unsigned_fixed_libfunc)
  141. OPTAB_NC(abs_optab, "abs$P$a2", ABS)
  142. OPTAB_NX(abs_optab, "abs$F$a2")
  143. OPTAB_VC(absv_optab, "absv$I$a2", ABS)
  144. OPTAB_VX(absv_optab, "abs$F$a2")
  145. OPTAB_NL(one_cmpl_optab, "one_cmpl$a2", NOT, "one_cmpl", '2', gen_int_libfunc)
  146. OPTAB_NC(bswap_optab, "bswap$a2", BSWAP)
  147. OPTAB_NL(ffs_optab, "ffs$a2", FFS, "ffs", '2', gen_int_libfunc)
  148. OPTAB_NL(clz_optab, "clz$a2", CLZ, "clz", '2', gen_int_libfunc)
  149. OPTAB_NL(ctz_optab, "ctz$a2", CTZ, "ctz", '2', gen_int_libfunc)
  150. OPTAB_NL(clrsb_optab, "clrsb$a2", CLRSB, "clrsb", '2', gen_int_libfunc)
  151. OPTAB_NL(popcount_optab, "popcount$a2", POPCOUNT, "popcount", '2', gen_int_libfunc)
  152. OPTAB_NL(parity_optab, "parity$a2", PARITY, "parity", '2', gen_int_libfunc)
  153. /* Comparison libcalls for integers MUST come in pairs, signed/unsigned. */
  154. OPTAB_NL(cmp_optab, NULL, UNKNOWN, "cmp", '2', gen_int_fp_fixed_libfunc)
  155. OPTAB_NL(ucmp_optab, NULL, UNKNOWN, "ucmp", '2', gen_int_libfunc)
  156. /* EQ etc are floating point comparisons. */
  157. OPTAB_NL(eq_optab, NULL, EQ, "eq", '2', gen_fp_libfunc)
  158. OPTAB_NL(ne_optab, NULL, NE, "ne", '2', gen_fp_libfunc)
  159. OPTAB_NL(gt_optab, NULL, GT, "gt", '2', gen_fp_libfunc)
  160. OPTAB_NL(ge_optab, NULL, GE, "ge", '2', gen_fp_libfunc)
  161. OPTAB_NL(lt_optab, NULL, LT, "lt", '2', gen_fp_libfunc)
  162. OPTAB_NL(le_optab, NULL, LE, "le", '2', gen_fp_libfunc)
  163. OPTAB_NL(unord_optab, NULL, UNORDERED, "unord", '2', gen_fp_libfunc)
  164. OPTAB_NL(powi_optab, NULL, UNKNOWN, "powi", '2', gen_fp_libfunc)
  165. /* These are all initialized individually, on a per-host basis. */
  166. OPTAB_NC(sqrt_optab, "sqrt$a2", SQRT)
  167. OPTAB_NC(sync_old_add_optab, "sync_old_add$I$a", UNKNOWN)
  168. OPTAB_NC(sync_old_sub_optab, "sync_old_sub$I$a", UNKNOWN)
  169. OPTAB_NC(sync_old_ior_optab, "sync_old_ior$I$a", UNKNOWN)
  170. OPTAB_NC(sync_old_and_optab, "sync_old_and$I$a", UNKNOWN)
  171. OPTAB_NC(sync_old_xor_optab, "sync_old_xor$I$a", UNKNOWN)
  172. OPTAB_NC(sync_old_nand_optab, "sync_old_nand$I$a", UNKNOWN)
  173. OPTAB_NC(sync_new_add_optab, "sync_new_add$I$a", UNKNOWN)
  174. OPTAB_NC(sync_new_sub_optab, "sync_new_sub$I$a", UNKNOWN)
  175. OPTAB_NC(sync_new_ior_optab, "sync_new_ior$I$a", UNKNOWN)
  176. OPTAB_NC(sync_new_and_optab, "sync_new_and$I$a", UNKNOWN)
  177. OPTAB_NC(sync_new_xor_optab, "sync_new_xor$I$a", UNKNOWN)
  178. OPTAB_NC(sync_new_nand_optab, "sync_new_nand$I$a", UNKNOWN)
  179. OPTAB_NC(sync_compare_and_swap_optab, "sync_compare_and_swap$I$a", UNKNOWN)
  180. OPTAB_NC(sync_lock_test_and_set_optab, "sync_lock_test_and_set$I$a", UNKNOWN)
  181. OPTAB_DC(mov_optab, "mov$a", SET)
  182. OPTAB_DC(movstrict_optab, "movstrict$a", STRICT_LOW_PART)
  183. OPTAB_D (movmisalign_optab, "movmisalign$a")
  184. OPTAB_D (storent_optab, "storent$a")
  185. OPTAB_D (insv_optab, "insv$a")
  186. OPTAB_D (extv_optab, "extv$a")
  187. OPTAB_D (extzv_optab, "extzv$a")
  188. OPTAB_D (insvmisalign_optab, "insvmisalign$a")
  189. OPTAB_D (extvmisalign_optab, "extvmisalign$a")
  190. OPTAB_D (extzvmisalign_optab, "extzvmisalign$a")
  191. OPTAB_D (push_optab, "push$a1")
  192. OPTAB_D (reload_in_optab, "reload_in$a")
  193. OPTAB_D (reload_out_optab, "reload_out$a")
  194. OPTAB_DC(cbranch_optab, "cbranch$a4", COMPARE)
  195. OPTAB_D (addcc_optab, "add$acc")
  196. OPTAB_D (negcc_optab, "neg$acc")
  197. OPTAB_D (notcc_optab, "not$acc")
  198. OPTAB_D (movcc_optab, "mov$acc")
  199. OPTAB_D (cond_add_optab, "cond_add$a")
  200. OPTAB_D (cond_sub_optab, "cond_sub$a")
  201. OPTAB_D (cond_smul_optab, "cond_mul$a")
  202. OPTAB_D (cond_sdiv_optab, "cond_div$a")
  203. OPTAB_D (cond_smod_optab, "cond_mod$a")
  204. OPTAB_D (cond_udiv_optab, "cond_udiv$a")
  205. OPTAB_D (cond_umod_optab, "cond_umod$a")
  206. OPTAB_D (cond_and_optab, "cond_and$a")
  207. OPTAB_D (cond_ior_optab, "cond_ior$a")
  208. OPTAB_D (cond_xor_optab, "cond_xor$a")
  209. OPTAB_D (cond_smin_optab, "cond_smin$a")
  210. OPTAB_D (cond_smax_optab, "cond_smax$a")
  211. OPTAB_D (cond_umin_optab, "cond_umin$a")
  212. OPTAB_D (cond_umax_optab, "cond_umax$a")
  213. OPTAB_D (cond_fma_optab, "cond_fma$a")
  214. OPTAB_D (cond_fms_optab, "cond_fms$a")
  215. OPTAB_D (cond_fnma_optab, "cond_fnma$a")
  216. OPTAB_D (cond_fnms_optab, "cond_fnms$a")
  217. OPTAB_D (cmov_optab, "cmov$a6")
  218. OPTAB_D (cstore_optab, "cstore$a4")
  219. OPTAB_D (ctrap_optab, "ctrap$a4")
  220. OPTAB_D (addv4_optab, "addv$I$a4")
  221. OPTAB_D (subv4_optab, "subv$I$a4")
  222. OPTAB_D (mulv4_optab, "mulv$I$a4")
  223. OPTAB_D (uaddv4_optab, "uaddv$I$a4")
  224. OPTAB_D (usubv4_optab, "usubv$I$a4")
  225. OPTAB_D (umulv4_optab, "umulv$I$a4")
  226. OPTAB_D (negv3_optab, "negv$I$a3")
  227. OPTAB_D (addptr3_optab, "addptr$a3")
  228. OPTAB_D (smul_highpart_optab, "smul$a3_highpart")
  229. OPTAB_D (umul_highpart_optab, "umul$a3_highpart")
  230. OPTAB_D (cmpmem_optab, "cmpmem$a")
  231. OPTAB_D (cmpstr_optab, "cmpstr$a")
  232. OPTAB_D (cmpstrn_optab, "cmpstrn$a")
  233. OPTAB_D (movmem_optab, "movmem$a")
  234. OPTAB_D (setmem_optab, "setmem$a")
  235. OPTAB_D (strlen_optab, "strlen$a")
  236. OPTAB_DC(fma_optab, "fma$a4", FMA)
  237. OPTAB_D (fms_optab, "fms$a4")
  238. OPTAB_D (fnma_optab, "fnma$a4")
  239. OPTAB_D (fnms_optab, "fnms$a4")
  240. OPTAB_D (rint_optab, "rint$a2")
  241. OPTAB_D (round_optab, "round$a2")
  242. OPTAB_D (floor_optab, "floor$a2")
  243. OPTAB_D (ceil_optab, "ceil$a2")
  244. OPTAB_D (btrunc_optab, "btrunc$a2")
  245. OPTAB_D (nearbyint_optab, "nearbyint$a2")
  246. OPTAB_D (acos_optab, "acos$a2")
  247. OPTAB_D (acosh_optab, "acosh$a2")
  248. OPTAB_D (asin_optab, "asin$a2")
  249. OPTAB_D (asinh_optab, "asinh$a2")
  250. OPTAB_D (atan2_optab, "atan2$a3")
  251. OPTAB_D (atan_optab, "atan$a2")
  252. OPTAB_D (atanh_optab, "atanh$a2")
  253. OPTAB_D (copysign_optab, "copysign$F$a3")
  254. OPTAB_D (xorsign_optab, "xorsign$F$a3")
  255. OPTAB_D (cos_optab, "cos$a2")
  256. OPTAB_D (cosh_optab, "cosh$a2")
  257. OPTAB_D (exp10_optab, "exp10$a2")
  258. OPTAB_D (exp2_optab, "exp2$a2")
  259. OPTAB_D (exp_optab, "exp$a2")
  260. OPTAB_D (expm1_optab, "expm1$a2")
  261. OPTAB_D (fmod_optab, "fmod$a3")
  262. OPTAB_D (hypot_optab, "hypot$a3")
  263. OPTAB_D (ilogb_optab, "ilogb$a2")
  264. OPTAB_D (isinf_optab, "isinf$a2")
  265. OPTAB_D (ldexp_optab, "ldexp$a3")
  266. OPTAB_D (log10_optab, "log10$a2")
  267. OPTAB_D (log1p_optab, "log1p$a2")
  268. OPTAB_D (log2_optab, "log2$a2")
  269. OPTAB_D (log_optab, "log$a2")
  270. OPTAB_D (logb_optab, "logb$a2")
  271. OPTAB_D (pow_optab, "pow$a3")
  272. OPTAB_D (remainder_optab, "remainder$a3")
  273. OPTAB_D (rsqrt_optab, "rsqrt$a2")
  274. OPTAB_D (scalb_optab, "scalb$a3")
  275. OPTAB_D (signbit_optab, "signbit$F$a2")
  276. OPTAB_D (significand_optab, "significand$a2")
  277. OPTAB_D (sin_optab, "sin$a2")
  278. OPTAB_D (sincos_optab, "sincos$a3")
  279. OPTAB_D (sinh_optab, "sinh$a2")
  280. OPTAB_D (tan_optab, "tan$a2")
  281. OPTAB_D (tanh_optab, "tanh$a2")
  282. /* C99 implementations of fmax/fmin. */
  283. OPTAB_D (fmax_optab, "fmax$a3")
  284. OPTAB_D (fmin_optab, "fmin$a3")
  285. /* Vector reduction to a scalar. */
  286. OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a")
  287. OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a")
  288. OPTAB_D (reduc_plus_scal_optab, "reduc_plus_scal_$a")
  289. OPTAB_D (reduc_umax_scal_optab, "reduc_umax_scal_$a")
  290. OPTAB_D (reduc_umin_scal_optab, "reduc_umin_scal_$a")
  291. OPTAB_D (reduc_and_scal_optab, "reduc_and_scal_$a")
  292. OPTAB_D (reduc_ior_scal_optab, "reduc_ior_scal_$a")
  293. OPTAB_D (reduc_xor_scal_optab, "reduc_xor_scal_$a")
  294. OPTAB_D (fold_left_plus_optab, "fold_left_plus_$a")
  295. OPTAB_D (extract_last_optab, "extract_last_$a")
  296. OPTAB_D (fold_extract_last_optab, "fold_extract_last_$a")
  297. OPTAB_D (savg_floor_optab, "avg$a3_floor")
  298. OPTAB_D (uavg_floor_optab, "uavg$a3_floor")
  299. OPTAB_D (savg_ceil_optab, "avg$a3_ceil")
  300. OPTAB_D (uavg_ceil_optab, "uavg$a3_ceil")
  301. OPTAB_D (sdot_prod_optab, "sdot_prod$I$a")
  302. OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3")
  303. OPTAB_D (udot_prod_optab, "udot_prod$I$a")
  304. OPTAB_D (usum_widen_optab, "widen_usum$I$a3")
  305. OPTAB_D (usad_optab, "usad$I$a")
  306. OPTAB_D (ssad_optab, "ssad$I$a")
  307. OPTAB_D (vec_pack_sfix_trunc_optab, "vec_pack_sfix_trunc_$a")
  308. OPTAB_D (vec_pack_ssat_optab, "vec_pack_ssat_$a")
  309. OPTAB_D (vec_pack_trunc_optab, "vec_pack_trunc_$a")
  310. OPTAB_D (vec_pack_ufix_trunc_optab, "vec_pack_ufix_trunc_$a")
  311. OPTAB_D (vec_pack_sbool_trunc_optab, "vec_pack_sbool_trunc_$a")
  312. OPTAB_D (vec_pack_usat_optab, "vec_pack_usat_$a")
  313. OPTAB_D (vec_packs_float_optab, "vec_packs_float_$a")
  314. OPTAB_D (vec_packu_float_optab, "vec_packu_float_$a")
  315. OPTAB_D (vec_perm_optab, "vec_perm$a")
  316. OPTAB_D (vec_realign_load_optab, "vec_realign_load_$a")
  317. OPTAB_D (vec_set_optab, "vec_set$a")
  318. OPTAB_D (vec_shr_optab, "vec_shr_$a")
  319. OPTAB_D (vec_unpack_sfix_trunc_hi_optab, "vec_unpack_sfix_trunc_hi_$a")
  320. OPTAB_D (vec_unpack_sfix_trunc_lo_optab, "vec_unpack_sfix_trunc_lo_$a")
  321. OPTAB_D (vec_unpack_ufix_trunc_hi_optab, "vec_unpack_ufix_trunc_hi_$a")
  322. OPTAB_D (vec_unpack_ufix_trunc_lo_optab, "vec_unpack_ufix_trunc_lo_$a")
  323. OPTAB_D (vec_unpacks_float_hi_optab, "vec_unpacks_float_hi_$a")
  324. OPTAB_D (vec_unpacks_float_lo_optab, "vec_unpacks_float_lo_$a")
  325. OPTAB_D (vec_unpacks_hi_optab, "vec_unpacks_hi_$a")
  326. OPTAB_D (vec_unpacks_lo_optab, "vec_unpacks_lo_$a")
  327. OPTAB_D (vec_unpacks_sbool_hi_optab, "vec_unpacks_sbool_hi_$a")
  328. OPTAB_D (vec_unpacks_sbool_lo_optab, "vec_unpacks_sbool_lo_$a")
  329. OPTAB_D (vec_unpacku_float_hi_optab, "vec_unpacku_float_hi_$a")
  330. OPTAB_D (vec_unpacku_float_lo_optab, "vec_unpacku_float_lo_$a")
  331. OPTAB_D (vec_unpacku_hi_optab, "vec_unpacku_hi_$a")
  332. OPTAB_D (vec_unpacku_lo_optab, "vec_unpacku_lo_$a")
  333. OPTAB_D (vec_widen_smult_even_optab, "vec_widen_smult_even_$a")
  334. OPTAB_D (vec_widen_smult_hi_optab, "vec_widen_smult_hi_$a")
  335. OPTAB_D (vec_widen_smult_lo_optab, "vec_widen_smult_lo_$a")
  336. OPTAB_D (vec_widen_smult_odd_optab, "vec_widen_smult_odd_$a")
  337. OPTAB_D (vec_widen_sshiftl_hi_optab, "vec_widen_sshiftl_hi_$a")
  338. OPTAB_D (vec_widen_sshiftl_lo_optab, "vec_widen_sshiftl_lo_$a")
  339. OPTAB_D (vec_widen_umult_even_optab, "vec_widen_umult_even_$a")
  340. OPTAB_D (vec_widen_umult_hi_optab, "vec_widen_umult_hi_$a")
  341. OPTAB_D (vec_widen_umult_lo_optab, "vec_widen_umult_lo_$a")
  342. OPTAB_D (vec_widen_umult_odd_optab, "vec_widen_umult_odd_$a")
  343. OPTAB_D (vec_widen_ushiftl_hi_optab, "vec_widen_ushiftl_hi_$a")
  344. OPTAB_D (vec_widen_ushiftl_lo_optab, "vec_widen_ushiftl_lo_$a")
  345. OPTAB_D (sync_add_optab, "sync_add$I$a")
  346. OPTAB_D (sync_and_optab, "sync_and$I$a")
  347. OPTAB_D (sync_ior_optab, "sync_ior$I$a")
  348. OPTAB_D (sync_lock_release_optab, "sync_lock_release$I$a")
  349. OPTAB_D (sync_nand_optab, "sync_nand$I$a")
  350. OPTAB_D (sync_sub_optab, "sync_sub$I$a")
  351. OPTAB_D (sync_xor_optab, "sync_xor$I$a")
  352. OPTAB_D (atomic_add_fetch_optab, "atomic_add_fetch$I$a")
  353. OPTAB_D (atomic_add_optab, "atomic_add$I$a")
  354. OPTAB_D (atomic_and_fetch_optab, "atomic_and_fetch$I$a")
  355. OPTAB_D (atomic_and_optab, "atomic_and$I$a")
  356. OPTAB_D (atomic_bit_test_and_set_optab, "atomic_bit_test_and_set$I$a")
  357. OPTAB_D (atomic_bit_test_and_complement_optab, "atomic_bit_test_and_complement$I$a")
  358. OPTAB_D (atomic_bit_test_and_reset_optab, "atomic_bit_test_and_reset$I$a")
  359. OPTAB_D (atomic_compare_and_swap_optab, "atomic_compare_and_swap$I$a")
  360. OPTAB_D (atomic_exchange_optab, "atomic_exchange$I$a")
  361. OPTAB_D (atomic_fetch_add_optab, "atomic_fetch_add$I$a")
  362. OPTAB_D (atomic_fetch_and_optab, "atomic_fetch_and$I$a")
  363. OPTAB_D (atomic_fetch_nand_optab, "atomic_fetch_nand$I$a")
  364. OPTAB_D (atomic_fetch_or_optab, "atomic_fetch_or$I$a")
  365. OPTAB_D (atomic_fetch_sub_optab, "atomic_fetch_sub$I$a")
  366. OPTAB_D (atomic_fetch_xor_optab, "atomic_fetch_xor$I$a")
  367. OPTAB_D (atomic_load_optab, "atomic_load$I$a")
  368. OPTAB_D (atomic_nand_fetch_optab, "atomic_nand_fetch$I$a")
  369. OPTAB_D (atomic_nand_optab, "atomic_nand$I$a")
  370. OPTAB_D (atomic_or_fetch_optab, "atomic_or_fetch$I$a")
  371. OPTAB_D (atomic_or_optab, "atomic_or$I$a")
  372. OPTAB_D (atomic_store_optab, "atomic_store$I$a")
  373. OPTAB_D (atomic_sub_fetch_optab, "atomic_sub_fetch$I$a")
  374. OPTAB_D (atomic_sub_optab, "atomic_sub$I$a")
  375. OPTAB_D (atomic_xor_fetch_optab, "atomic_xor_fetch$I$a")
  376. OPTAB_D (atomic_xor_optab, "atomic_xor$I$a")
  377. OPTAB_D (get_thread_pointer_optab, "get_thread_pointer$I$a")
  378. OPTAB_D (set_thread_pointer_optab, "set_thread_pointer$I$a")
  379. OPTAB_D (gather_load_optab, "gather_load$a")
  380. OPTAB_D (mask_gather_load_optab, "mask_gather_load$a")
  381. OPTAB_D (scatter_store_optab, "scatter_store$a")
  382. OPTAB_D (mask_scatter_store_optab, "mask_scatter_store$a")
  383. OPTAB_DC (vec_duplicate_optab, "vec_duplicate$a", VEC_DUPLICATE)
  384. OPTAB_DC (vec_series_optab, "vec_series$a", VEC_SERIES)
  385. OPTAB_D (vec_shl_insert_optab, "vec_shl_insert_$a")