target-insns.def 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /* Target instruction definitions.
  2. Copyright (C) 2015-2019 Free Software Foundation, Inc.
  3. This program is free software; you can redistribute it and/or modify it
  4. under the terms of the GNU General Public License as published by the
  5. Free Software Foundation; either version 3, or (at your option) any
  6. later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program; see the file COPYING3. If not see
  13. <http://www.gnu.org/licenses/>. */
  14. /* This file has one entry for each public pattern name that the target
  15. can provide. It is only used if no distinction between operand modes
  16. is necessary. If separate patterns are needed for different modes
  17. (so as to distinguish addition of QImode values from addition of
  18. HImode values, for example) then an optab should be used instead.
  19. Each entry has the form:
  20. DEF_TARGET_INSN (name, prototype)
  21. where NAME is the name of the pattern and PROTOTYPE is its C prototype.
  22. The prototype should use parameter names of the form "x0", "x1", etc.
  23. for the operands that the .md pattern is required to have, followed by
  24. parameter names of the form "optN" for operands that the .md pattern
  25. may choose to ignore. Patterns that never take operands should have
  26. a prototype "(void)".
  27. Pattern names should be documented in md.texi rather than here. */
  28. DEF_TARGET_INSN (allocate_stack, (rtx x0, rtx x1))
  29. DEF_TARGET_INSN (atomic_test_and_set, (rtx x0, rtx x1, rtx x2))
  30. DEF_TARGET_INSN (builtin_longjmp, (rtx x0))
  31. DEF_TARGET_INSN (builtin_setjmp_receiver, (rtx x0))
  32. DEF_TARGET_INSN (builtin_setjmp_setup, (rtx x0))
  33. DEF_TARGET_INSN (canonicalize_funcptr_for_compare, (rtx x0, rtx x1))
  34. DEF_TARGET_INSN (call, (rtx x0, rtx opt1, rtx opt2, rtx opt3))
  35. DEF_TARGET_INSN (call_pop, (rtx x0, rtx opt1, rtx opt2, rtx opt3))
  36. DEF_TARGET_INSN (call_value, (rtx x0, rtx x1, rtx opt2, rtx opt3, rtx opt4))
  37. DEF_TARGET_INSN (call_value_pop, (rtx x0, rtx x1, rtx opt2, rtx opt3,
  38. rtx opt4))
  39. DEF_TARGET_INSN (casesi, (rtx x0, rtx x1, rtx x2, rtx x3, rtx x4))
  40. DEF_TARGET_INSN (check_stack, (rtx x0))
  41. DEF_TARGET_INSN (clear_cache, (rtx x0, rtx x1))
  42. DEF_TARGET_INSN (doloop_begin, (rtx x0, rtx x1))
  43. DEF_TARGET_INSN (doloop_end, (rtx x0, rtx x1))
  44. DEF_TARGET_INSN (eh_return, (rtx x0))
  45. DEF_TARGET_INSN (epilogue, (void))
  46. DEF_TARGET_INSN (exception_receiver, (void))
  47. DEF_TARGET_INSN (extv, (rtx x0, rtx x1, rtx x2, rtx x3))
  48. DEF_TARGET_INSN (extzv, (rtx x0, rtx x1, rtx x2, rtx x3))
  49. DEF_TARGET_INSN (indirect_jump, (rtx x0))
  50. DEF_TARGET_INSN (insv, (rtx x0, rtx x1, rtx x2, rtx x3))
  51. DEF_TARGET_INSN (jump, (rtx x0))
  52. DEF_TARGET_INSN (load_multiple, (rtx x0, rtx x1, rtx x2))
  53. DEF_TARGET_INSN (mem_thread_fence, (rtx x0))
  54. DEF_TARGET_INSN (memory_barrier, (void))
  55. DEF_TARGET_INSN (memory_blockage, (void))
  56. DEF_TARGET_INSN (movstr, (rtx x0, rtx x1, rtx x2))
  57. DEF_TARGET_INSN (nonlocal_goto, (rtx x0, rtx x1, rtx x2, rtx x3))
  58. DEF_TARGET_INSN (nonlocal_goto_receiver, (void))
  59. DEF_TARGET_INSN (oacc_dim_pos, (rtx x0, rtx x1))
  60. DEF_TARGET_INSN (oacc_dim_size, (rtx x0, rtx x1))
  61. DEF_TARGET_INSN (oacc_fork, (rtx x0, rtx x1, rtx x2))
  62. DEF_TARGET_INSN (oacc_join, (rtx x0, rtx x1, rtx x2))
  63. DEF_TARGET_INSN (omp_simt_enter, (rtx x0, rtx x1, rtx x2))
  64. DEF_TARGET_INSN (omp_simt_exit, (rtx x0))
  65. DEF_TARGET_INSN (omp_simt_lane, (rtx x0))
  66. DEF_TARGET_INSN (omp_simt_last_lane, (rtx x0, rtx x1))
  67. DEF_TARGET_INSN (omp_simt_ordered, (rtx x0, rtx x1))
  68. DEF_TARGET_INSN (omp_simt_vote_any, (rtx x0, rtx x1))
  69. DEF_TARGET_INSN (omp_simt_xchg_bfly, (rtx x0, rtx x1, rtx x2))
  70. DEF_TARGET_INSN (omp_simt_xchg_idx, (rtx x0, rtx x1, rtx x2))
  71. DEF_TARGET_INSN (prefetch, (rtx x0, rtx x1, rtx x2))
  72. DEF_TARGET_INSN (probe_stack, (rtx x0))
  73. DEF_TARGET_INSN (probe_stack_address, (rtx x0))
  74. DEF_TARGET_INSN (prologue, (void))
  75. DEF_TARGET_INSN (ptr_extend, (rtx x0, rtx x1))
  76. DEF_TARGET_INSN (reload_load_address, (rtx x0, rtx x1))
  77. DEF_TARGET_INSN (restore_stack_block, (rtx x0, rtx x1))
  78. DEF_TARGET_INSN (restore_stack_function, (rtx x0, rtx x1))
  79. DEF_TARGET_INSN (restore_stack_nonlocal, (rtx x0, rtx x1))
  80. DEF_TARGET_INSN (return, (void))
  81. DEF_TARGET_INSN (save_stack_block, (rtx x0, rtx x1))
  82. DEF_TARGET_INSN (save_stack_function, (rtx x0, rtx x1))
  83. DEF_TARGET_INSN (save_stack_nonlocal, (rtx x0, rtx x1))
  84. DEF_TARGET_INSN (sibcall, (rtx x0, rtx opt1, rtx opt2, rtx opt3))
  85. DEF_TARGET_INSN (sibcall_epilogue, (void))
  86. DEF_TARGET_INSN (sibcall_value, (rtx x0, rtx x1, rtx opt2, rtx opt3,
  87. rtx opt4))
  88. DEF_TARGET_INSN (simple_return, (void))
  89. DEF_TARGET_INSN (split_stack_prologue, (void))
  90. DEF_TARGET_INSN (split_stack_space_check, (rtx x0, rtx x1))
  91. DEF_TARGET_INSN (stack_protect_combined_set, (rtx x0, rtx x1))
  92. DEF_TARGET_INSN (stack_protect_set, (rtx x0, rtx x1))
  93. DEF_TARGET_INSN (stack_protect_combined_test, (rtx x0, rtx x1, rtx x2))
  94. DEF_TARGET_INSN (stack_protect_test, (rtx x0, rtx x1, rtx x2))
  95. DEF_TARGET_INSN (store_multiple, (rtx x0, rtx x1, rtx x2))
  96. DEF_TARGET_INSN (tablejump, (rtx x0, rtx x1))
  97. DEF_TARGET_INSN (trap, (void))
  98. DEF_TARGET_INSN (unique, (void))
  99. DEF_TARGET_INSN (untyped_call, (rtx x0, rtx x1, rtx x2))
  100. DEF_TARGET_INSN (untyped_return, (rtx x0, rtx x1))