strinst.inc 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. {
  2. Copyright (c) 2016 by Karoly Balogh
  3. This include file contains the WebAssembly instruction string table
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15. ****************************************************************************
  16. }
  17. '<none>',
  18. // control flow
  19. 'block', 'loop', 'br', 'br_if', 'br_table', 'if', 'else', 'end' {block},
  20. 'end' {loop}, 'end' {if}, '' {end function},
  21. 'return', 'unreachable',
  22. // basic
  23. 'nop', 'drop', 'i32.const', 'i64.const', 'f32.const', 'f64.const',
  24. 'local.get', 'local.set', 'local.tee', 'global.get', 'global.set',
  25. 'select', 'call', 'call_indirect',
  26. // integer
  27. 'i32.add', 'i64.add', 'i32.sub', 'i64.sub', 'i32.mul', 'i64.mul',
  28. 'i32.div_s', 'i64.div_s', 'i32.div_u', 'i64.div_u', 'i32.rem_s', 'i64.rem_s',
  29. 'i32.rem_u', 'i64.rem_u', 'i32.and', 'i64.and', 'i32.or', 'i64.or',
  30. 'i32.xor', 'i64.xor', 'i32.shl', 'i64.shl', 'i32.shr_s', 'i64.shr_s',
  31. 'i32.shr_u', 'i64.shr_u', 'i32.rotl', 'i64.rotl', 'i32.rotr', 'i64.rotr',
  32. 'i32.clz', 'i64.clz', 'i32.ctz', 'i64.ctz', 'i32.popcnt', 'i64.popcnt',
  33. 'i32.eqz', 'i64.eqz',
  34. // floating point
  35. 'f32.add', 'f64.add', 'f32.sub', 'f64.sub', 'f32.mul', 'f64.mul',
  36. 'f32.div', 'f64.div', 'f32.sqrt', 'f64.sqrt', 'f32.min', 'f64.min',
  37. 'f32.max', 'f64.max', 'f32.ceil', 'f64.ceil', 'f32.floor', 'f64.floor',
  38. 'f32.trunc', 'f64.trunc', 'f32.nearest', 'f64.nearest', 'f32.abs', 'f64.abs',
  39. 'f32.neg', 'f64.neg', 'f32.copysign', 'f64.copysign',
  40. // integer compare
  41. 'i32.eq', 'i64.eq', 'i32.ne', 'i64.ne', 'i32.lt_s', 'i64.lt_s',
  42. 'i32.lt_u', 'i64.lt_u', 'i32.le_s', 'i64.le_s', 'i32.le_u', 'i64.le_u',
  43. 'i32.gt_s', 'i64.gt_s', 'i32.gt_u', 'i64.gt_u', 'i32.ge_s', 'i64.ge_s',
  44. 'i32.ge_u', 'i64.ge_u',
  45. // floating point compare
  46. 'f32.eq', 'f64.eq', 'f32.ne', 'f64.ne', 'f32.lt', 'f64.lt',
  47. 'f32.le', 'f64.le', 'f32.gt', 'f64.gt', 'f32.ge', 'f64.gt',
  48. // conversion
  49. 'i32.wrap/i64', 'i64.extend_s/i32', 'i64.extend_u/i32',
  50. 'i32.extend_s/8','i32.extend_s/16','i64.extend_s/8','i64.extend_s/16','i64.extend_s/32',
  51. 'i32.trunc_s/f32', 'i32.trunc_s/f64', 'i64.trunc_s/f32', 'i64.trunc_s/f64',
  52. 'i32.trunc_u/f32', 'i32.trunc_u/f64', 'i64.trunc_u/f32', 'i64.trunc_u/f64',
  53. 'f32.demote/f64', 'f64.promote/f32',
  54. 'f32.convert_s/i32', 'f32.convert_s/i64', 'f64.convert_s/i32', 'f64.convert_s/i64',
  55. 'f32.convert_u/i32', 'f32.convert_u/i64', 'f64.convert_u/i32', 'f64.convert_u/i64',
  56. 'i32.reinterpret/f32', 'i64.reinterpret/f64', 'f32.reinterpret/i32', 'f64.reinterpret/i64',
  57. // load/store
  58. 'i32.load', 'i64.load', 'f32.load', 'f64.load',
  59. 'i32.store', 'i64.store', 'f32.store', 'f64.store',
  60. 'i32.load8_s', 'i32.load16_s', 'i64.load8_s', 'i64.load16_s', 'i64.load32_s',
  61. 'i32.load8_u', 'i32.load16_u', 'i64.load8_u', 'i64.load16_u', 'i64.load32_u',
  62. 'i32.store8', 'i32.store16', 'i64.store8', 'i64.store16', 'i64.store32',
  63. // additional memory
  64. 'grow_memory', 'current_memory',
  65. // bulk memory operations
  66. 'memory.copy', 'memory.fill', 'memory.init', 'data.drop',
  67. // reference instructions
  68. 'ref.null_func', 'ref.null_extern', 'ref.is_null', 'ref.func',
  69. // table instructions
  70. 'table.get', 'table.set', 'table.size', 'table.grow', 'table.fill', 'table.copy', 'table.init', 'elem.drop',
  71. // saturating truncation instructions
  72. 'i32.trunc_sat_f32_s',
  73. 'i32.trunc_sat_f32_u',
  74. 'i32.trunc_sat_f64_s',
  75. 'i32.trunc_sat_f64_u',
  76. 'i64.trunc_sat_f32_s',
  77. 'i64.trunc_sat_f32_u',
  78. 'i64.trunc_sat_f64_s',
  79. 'i64.trunc_sat_f64_u',
  80. // exceptions
  81. 'try','catch','catch_all','delegate','throw','rethrow','end' {try},
  82. // atomic memory accesses - load/store
  83. 'i32.atomic.load8_u', 'i32.atomic.load16_u', 'i32.atomic.load',
  84. 'i64.atomic.load8_u', 'i64.atomic.load16_u', 'i64.atomic.load32_u',
  85. 'i64.atomic.load', 'i32.atomic.store8', 'i32.atomic.store16',
  86. 'i32.atomic.store', 'i64.atomic.store8', 'i64.atomic.store16',
  87. 'i64.atomic.store32', 'i64.atomic.store',
  88. // atomic memory accesses - read-modify-write
  89. 'i32.atomic.rmw8.add_u', 'i32.atomic.rmw16.add_u', 'i32.atomic.rmw.add',
  90. 'i64.atomic.rmw8.add_u', 'i64.atomic.rmw16.add_u', 'i64.atomic.rmw32.add_u',
  91. 'i64.atomic.rmw.add', 'i32.atomic.rmw8.sub_u', 'i32.atomic.rmw16.sub_u',
  92. 'i32.atomic.rmw.sub', 'i64.atomic.rmw8.sub_u', 'i64.atomic.rmw16.sub_u',
  93. 'i64.atomic.rmw32.sub_u', 'i64.atomic.rmw.sub', 'i32.atomic.rmw8.and_u',
  94. 'i32.atomic.rmw16.and_u', 'i32.atomic.rmw.and', 'i64.atomic.rmw8.and_u',
  95. 'i64.atomic.rmw16.and_u', 'i64.atomic.rmw32.and_u', 'i64.atomic.rmw.and',
  96. 'i32.atomic.rmw8.or_u', 'i32.atomic.rmw16.or_u', 'i32.atomic.rmw.or',
  97. 'i64.atomic.rmw8.or_u', 'i64.atomic.rmw16.or_u', 'i64.atomic.rmw32.or_u',
  98. 'i64.atomic.rmw.or', 'i32.atomic.rmw8.xor_u', 'i32.atomic.rmw16.xor_u',
  99. 'i32.atomic.rmw.xor', 'i64.atomic.rmw8.xor_u', 'i64.atomic.rmw16.xor_u',
  100. 'i64.atomic.rmw32.xor_u', 'i64.atomic.rmw.xor', 'i32.atomic.rmw8.xchg_u',
  101. 'i32.atomic.rmw16.xchg_u', 'i32.atomic.rmw.xchg', 'i64.atomic.rmw8.xchg_u',
  102. 'i64.atomic.rmw16.xchg_u', 'i64.atomic.rmw32.xchg_u', 'i64.atomic.rmw.xchg',
  103. // atomic memory accesses - compare exchange
  104. 'i32.atomic.rmw8.cmpxchg_u', 'i32.atomic.rmw16.cmpxchg_u', 'i32.atomic.rmw.cmpxchg',
  105. 'i64.atomic.rmw8.cmpxchg_u', 'i64.atomic.rmw16.cmpxchg_u', 'i64.atomic.rmw32.cmpxchg_u',
  106. 'i64.atomic.rmw.cmpxchg',
  107. // atomic memory accesses - wait and notify operators
  108. 'memory.atomic.wait32', 'memory.atomic.wait64', 'memory.atomic.notify', 'atomic.fence'