AsmJsBuiltInNames.h 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft Corporation and contributors. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. // Default all macros to nothing
  6. #ifndef ASMJS_MATH_FUNC_NAMES
  7. #define ASMJS_MATH_FUNC_NAMES(name, propertyName)
  8. #endif
  9. #ifndef ASMJS_MATH_CONST_NAMES
  10. #define ASMJS_MATH_CONST_NAMES(name, propertyName)
  11. #endif
  12. #ifndef ASMJS_ARRAY_NAMES
  13. #define ASMJS_ARRAY_NAMES(name, propertyName)
  14. #endif
  15. // ASMJS_SIMD_NAMES includes all constructors and operations
  16. #ifdef ASMJS_SIMD_NAMES
  17. #define ASMJS_SIMD_C_NAMES(name, propertyName, libName, entryPoint) ASMJS_SIMD_NAMES(name, propertyName, libName, entryPoint)
  18. #define ASMJS_SIMD_O_NAMES(name, propertyName, libName, entryPoint) ASMJS_SIMD_NAMES(name, propertyName, libName, entryPoint)
  19. #else
  20. #define ASMJS_SIMD_NAMES(name, propertyName, libName, entryPoint)
  21. #ifndef ASMJS_SIMD_C_NAMES
  22. #define ASMJS_SIMD_C_NAMES(name, propertyName, libName, entryPoint)
  23. #endif
  24. #ifndef ASMJS_SIMD_O_NAMES
  25. #define ASMJS_SIMD_O_NAMES(name, propertyName, libName, entryPoint)
  26. #endif
  27. #endif
  28. #ifndef ASMJS_SIMD_MARKERS
  29. #define ASMJS_SIMD_MARKERS(name)
  30. #endif
  31. ASMJS_MATH_FUNC_NAMES(sin, sin)
  32. ASMJS_MATH_FUNC_NAMES(cos, cos)
  33. ASMJS_MATH_FUNC_NAMES(tan, tan)
  34. ASMJS_MATH_FUNC_NAMES(asin, asin)
  35. ASMJS_MATH_FUNC_NAMES(acos, acos)
  36. ASMJS_MATH_FUNC_NAMES(atan, atan)
  37. ASMJS_MATH_FUNC_NAMES(ceil, ceil)
  38. ASMJS_MATH_FUNC_NAMES(floor, floor)
  39. ASMJS_MATH_FUNC_NAMES(exp, exp)
  40. ASMJS_MATH_FUNC_NAMES(log, log)
  41. ASMJS_MATH_FUNC_NAMES(pow, pow)
  42. ASMJS_MATH_FUNC_NAMES(sqrt, sqrt)
  43. ASMJS_MATH_FUNC_NAMES(abs, abs)
  44. ASMJS_MATH_FUNC_NAMES(atan2, atan2)
  45. ASMJS_MATH_FUNC_NAMES(imul, imul)
  46. ASMJS_MATH_FUNC_NAMES(fround, fround)
  47. ASMJS_MATH_FUNC_NAMES(min, min)
  48. ASMJS_MATH_FUNC_NAMES(max, max)
  49. ASMJS_MATH_FUNC_NAMES(clz32, clz32)
  50. ASMJS_MATH_CONST_NAMES(e, E)
  51. ASMJS_MATH_CONST_NAMES(ln10, LN10)
  52. ASMJS_MATH_CONST_NAMES(ln2, LN2)
  53. ASMJS_MATH_CONST_NAMES(log2e, LOG2E)
  54. ASMJS_MATH_CONST_NAMES(log10e, LOG10E)
  55. ASMJS_MATH_CONST_NAMES(pi, PI)
  56. ASMJS_MATH_CONST_NAMES(sqrt1_2, SQRT1_2)
  57. ASMJS_MATH_CONST_NAMES(sqrt2, SQRT2)
  58. ASMJS_MATH_CONST_NAMES(infinity, Infinity)
  59. ASMJS_MATH_CONST_NAMES(nan, NaN)
  60. ASMJS_ARRAY_NAMES(Uint8Array, Uint8Array)
  61. ASMJS_ARRAY_NAMES(Int8Array, Int8Array)
  62. ASMJS_ARRAY_NAMES(Uint16Array, Uint16Array)
  63. ASMJS_ARRAY_NAMES(Int16Array, Int16Array)
  64. ASMJS_ARRAY_NAMES(Uint32Array, Uint32Array)
  65. ASMJS_ARRAY_NAMES(Int32Array, Int32Array)
  66. ASMJS_ARRAY_NAMES(Float32Array, Float32Array)
  67. ASMJS_ARRAY_NAMES(Float64Array, Float64Array)
  68. ASMJS_ARRAY_NAMES(byteLength, byteLength)
  69. // Int32x4
  70. ASMJS_SIMD_MARKERS(Int32x4_Start) // just a marker
  71. // built-in ID propertyId Type............EntryPoint
  72. ASMJS_SIMD_C_NAMES(Int32x4, Int32x4, Int32x4, Int32x4 )
  73. ASMJS_SIMD_O_NAMES(int32x4_check, check, Int32x4, Check )
  74. ASMJS_SIMD_O_NAMES(int32x4_splat, splat, Int32x4, Splat )
  75. ASMJS_SIMD_O_NAMES(int32x4_fromFloat64x2, fromFloat64x2, Int32x4, FromFloat64x2 )
  76. ASMJS_SIMD_O_NAMES(int32x4_fromFloat64x2Bits, fromFloat64x2Bits, Int32x4, FromFloat64x2Bits )
  77. ASMJS_SIMD_O_NAMES(int32x4_fromFloat32x4, fromFloat32x4, Int32x4, FromFloat32x4 )
  78. ASMJS_SIMD_O_NAMES(int32x4_fromFloat32x4Bits, fromFloat32x4Bits, Int32x4, FromFloat32x4Bits )
  79. ASMJS_SIMD_O_NAMES(int32x4_fromInt16x8Bits, fromInt16x8Bits, Int32x4, FromInt16x8Bits )
  80. ASMJS_SIMD_O_NAMES(int32x4_fromInt8x16Bits, fromInt8x16Bits, Int32x4, FromInt8x16Bits )
  81. ASMJS_SIMD_O_NAMES(int32x4_fromUint32x4Bits, fromUint32x4Bits, Int32x4, FromUint32x4Bits )
  82. ASMJS_SIMD_O_NAMES(int32x4_fromUint16x8Bits, fromUint16x8Bits, Int32x4, FromUint16x8Bits )
  83. ASMJS_SIMD_O_NAMES(int32x4_fromUint8x16Bits, fromUint8x16Bits, Int32x4, FromUint8x16Bits )
  84. ASMJS_SIMD_O_NAMES(int32x4_neg, neg, Int32x4, Neg )
  85. ASMJS_SIMD_O_NAMES(int32x4_add, add, Int32x4, Add )
  86. ASMJS_SIMD_O_NAMES(int32x4_sub, sub, Int32x4, Sub )
  87. ASMJS_SIMD_O_NAMES(int32x4_mul, mul, Int32x4, Mul )
  88. ASMJS_SIMD_O_NAMES(int32x4_extractLane, extractLane, Int32x4, ExtractLane )
  89. ASMJS_SIMD_O_NAMES(int32x4_replaceLane, replaceLane, Int32x4, ReplaceLane )
  90. ASMJS_SIMD_O_NAMES(int32x4_swizzle, swizzle, Int32x4, Swizzle )
  91. ASMJS_SIMD_O_NAMES(int32x4_shuffle, shuffle, Int32x4, Shuffle )
  92. ASMJS_SIMD_O_NAMES(int32x4_lessThan, lessThan, Int32x4, LessThan )
  93. ASMJS_SIMD_O_NAMES(int32x4_lessThanOrEqual, lessThanOrEqual, Int32x4, LessThanOrEqual )
  94. ASMJS_SIMD_O_NAMES(int32x4_equal, equal, Int32x4, Equal )
  95. ASMJS_SIMD_O_NAMES(int32x4_notEqual, notEqual, Int32x4, NotEqual )
  96. ASMJS_SIMD_O_NAMES(int32x4_greaterThan, greaterThan, Int32x4, GreaterThan )
  97. ASMJS_SIMD_O_NAMES(int32x4_greaterThanOrEqual, greaterThanOrEqual, Int32x4, GreaterThanOrEqual)
  98. ASMJS_SIMD_O_NAMES(int32x4_select, select, Int32x4, Select )
  99. ASMJS_SIMD_O_NAMES(int32x4_and, and_, Int32x4, And )
  100. ASMJS_SIMD_O_NAMES(int32x4_or, or_, Int32x4, Or )
  101. ASMJS_SIMD_O_NAMES(int32x4_xor, xor_, Int32x4, Xor )
  102. ASMJS_SIMD_O_NAMES(int32x4_not, not_, Int32x4, Not )
  103. ASMJS_SIMD_O_NAMES(int32x4_shiftLeftByScalar, shiftLeftByScalar, Int32x4, ShiftLeftByScalar )
  104. ASMJS_SIMD_O_NAMES(int32x4_shiftRightByScalar, shiftRightByScalar, Int32x4, ShiftRightByScalar)
  105. // keep load/store contiguous
  106. ASMJS_SIMD_O_NAMES(int32x4_load, load, Int32x4, Load )
  107. ASMJS_SIMD_O_NAMES(int32x4_load1, load1, Int32x4, Load1 )
  108. ASMJS_SIMD_O_NAMES(int32x4_load2, load2, Int32x4, Load2 )
  109. ASMJS_SIMD_O_NAMES(int32x4_load3, load3, Int32x4, Load3 )
  110. ASMJS_SIMD_O_NAMES(int32x4_store, store, Int32x4, Store )
  111. ASMJS_SIMD_O_NAMES(int32x4_store1, store1, Int32x4, Store1)
  112. ASMJS_SIMD_O_NAMES(int32x4_store2, store2, Int32x4, Store2)
  113. ASMJS_SIMD_O_NAMES(int32x4_store3, store3, Int32x4, Store3)
  114. ASMJS_SIMD_MARKERS(Int32x4_End) // just a marker
  115. ASMJS_SIMD_MARKERS(Bool32x4_Start) // just a marker
  116. ASMJS_SIMD_C_NAMES(Bool32x4, Bool32x4, Bool32x4, Bool32x4)
  117. ASMJS_SIMD_O_NAMES(bool32x4_check, check, Bool32x4, Check )
  118. ASMJS_SIMD_O_NAMES(bool32x4_splat, splat, Bool32x4, Splat )
  119. ASMJS_SIMD_O_NAMES(bool32x4_extractLane, extractLane, Bool32x4, ExtractLane)
  120. ASMJS_SIMD_O_NAMES(bool32x4_replaceLane, replaceLane, Bool32x4, ReplaceLane)
  121. ASMJS_SIMD_O_NAMES(bool32x4_and, and_, Bool32x4, And )
  122. ASMJS_SIMD_O_NAMES(bool32x4_or, or_, Bool32x4, Or )
  123. ASMJS_SIMD_O_NAMES(bool32x4_xor, xor_, Bool32x4, Xor )
  124. ASMJS_SIMD_O_NAMES(bool32x4_not, not_, Bool32x4, Not )
  125. ASMJS_SIMD_O_NAMES(bool32x4_anyTrue, anyTrue, Bool32x4, AnyTrue )
  126. ASMJS_SIMD_O_NAMES(bool32x4_allTrue, allTrue, Bool32x4, AllTrue )
  127. ASMJS_SIMD_MARKERS(Bool32x4_End) // just a marker
  128. ASMJS_SIMD_MARKERS(Bool16x8_Start) // just a marker
  129. ASMJS_SIMD_C_NAMES(Bool16x8, Bool16x8, Bool16x8, Bool16x8)
  130. ASMJS_SIMD_O_NAMES(bool16x8_check, check, Bool16x8, Check )
  131. ASMJS_SIMD_O_NAMES(bool16x8_splat, splat, Bool16x8, Splat )
  132. ASMJS_SIMD_O_NAMES(bool16x8_extractLane, extractLane, Bool16x8, ExtractLane)
  133. ASMJS_SIMD_O_NAMES(bool16x8_replaceLane, replaceLane, Bool16x8, ReplaceLane)
  134. ASMJS_SIMD_O_NAMES(bool16x8_and, and_, Bool16x8, And )
  135. ASMJS_SIMD_O_NAMES(bool16x8_or, or_, Bool16x8, Or )
  136. ASMJS_SIMD_O_NAMES(bool16x8_xor, xor_, Bool16x8, Xor )
  137. ASMJS_SIMD_O_NAMES(bool16x8_not, not_, Bool16x8, Not )
  138. ASMJS_SIMD_O_NAMES(bool16x8_anyTrue, anyTrue, Bool16x8, AnyTrue )
  139. ASMJS_SIMD_O_NAMES(bool16x8_allTrue, allTrue, Bool16x8, AllTrue )
  140. ASMJS_SIMD_MARKERS(Bool16x8_End) // just a marker
  141. ASMJS_SIMD_MARKERS(Bool8x16_Start) // just a marker
  142. ASMJS_SIMD_C_NAMES(Bool8x16, Bool8x16, Bool8x16, Bool8x16)
  143. ASMJS_SIMD_O_NAMES(bool8x16_check, check, Bool8x16, Check )
  144. ASMJS_SIMD_O_NAMES(bool8x16_splat, splat, Bool8x16, Splat )
  145. ASMJS_SIMD_O_NAMES(bool8x16_extractLane, extractLane, Bool8x16, ExtractLane)
  146. ASMJS_SIMD_O_NAMES(bool8x16_replaceLane, replaceLane, Bool8x16, ReplaceLane)
  147. ASMJS_SIMD_O_NAMES(bool8x16_and, and_, Bool8x16, And )
  148. ASMJS_SIMD_O_NAMES(bool8x16_or, or_, Bool8x16, Or )
  149. ASMJS_SIMD_O_NAMES(bool8x16_xor, xor_, Bool8x16, Xor )
  150. ASMJS_SIMD_O_NAMES(bool8x16_not, not_, Bool8x16, Not )
  151. ASMJS_SIMD_O_NAMES(bool8x16_anyTrue, anyTrue, Bool8x16, AnyTrue )
  152. ASMJS_SIMD_O_NAMES(bool8x16_allTrue, allTrue, Bool8x16, AllTrue )
  153. ASMJS_SIMD_MARKERS(Bool8x16_End) // just a marker
  154. // Float32x4
  155. ASMJS_SIMD_MARKERS(Float32x4_Start) // just a marker
  156. ASMJS_SIMD_C_NAMES(Float32x4, Float32x4, Float32x4, Float32x4 )
  157. ASMJS_SIMD_O_NAMES(float32x4_check, check, Float32x4, Check )
  158. ASMJS_SIMD_O_NAMES(float32x4_splat, splat, Float32x4, Splat )
  159. ASMJS_SIMD_O_NAMES(float32x4_fromFloat64x2, fromFloat64x2, Float32x4, FromFloat64x2 )
  160. ASMJS_SIMD_O_NAMES(float32x4_fromFloat64x2Bits, fromFloat64x2Bits, Float32x4, FromFloat64x2Bits )
  161. ASMJS_SIMD_O_NAMES(float32x4_fromInt32x4, fromInt32x4, Float32x4, FromInt32x4 )
  162. ASMJS_SIMD_O_NAMES(float32x4_fromInt32x4Bits, fromInt32x4Bits, Float32x4, FromInt32x4Bits )
  163. ASMJS_SIMD_O_NAMES(float32x4_fromUint32x4, fromUint32x4, Float32x4, FromUint32x4 )
  164. ASMJS_SIMD_O_NAMES(float32x4_fromInt16x8Bits, fromInt16x8Bits, Float32x4, FromInt16x8Bits )
  165. ASMJS_SIMD_O_NAMES(float32x4_fromInt8x16Bits, fromInt8x16Bits, Float32x4, FromInt8x16Bits )
  166. ASMJS_SIMD_O_NAMES(float32x4_fromUint32x4Bits, fromUint32x4Bits, Float32x4, FromUint32x4Bits )
  167. ASMJS_SIMD_O_NAMES(float32x4_fromUint16x8Bits, fromUint16x8Bits, Float32x4, FromUint16x8Bits )
  168. ASMJS_SIMD_O_NAMES(float32x4_fromUint8x16Bits, fromUint8x16Bits, Float32x4, FromUint8x16Bits )
  169. ASMJS_SIMD_O_NAMES(float32x4_abs, abs, Float32x4, Abs )
  170. ASMJS_SIMD_O_NAMES(float32x4_neg, neg, Float32x4, Neg )
  171. ASMJS_SIMD_O_NAMES(float32x4_add, add, Float32x4, Add )
  172. ASMJS_SIMD_O_NAMES(float32x4_sub, sub, Float32x4, Sub )
  173. ASMJS_SIMD_O_NAMES(float32x4_mul, mul, Float32x4, Mul )
  174. ASMJS_SIMD_O_NAMES(float32x4_div, div, Float32x4, Div )
  175. ASMJS_SIMD_O_NAMES(float32x4_min, min, Float32x4, Min )
  176. ASMJS_SIMD_O_NAMES(float32x4_max, max, Float32x4, Max )
  177. ASMJS_SIMD_O_NAMES(float32x4_reciprocal, reciprocalApproximation, Float32x4, Reciprocal )
  178. ASMJS_SIMD_O_NAMES(float32x4_reciprocalSqrt, reciprocalSqrtApproximation, Float32x4, ReciprocalSqrt )
  179. ASMJS_SIMD_O_NAMES(float32x4_sqrt, sqrt, Float32x4, Sqrt )
  180. ASMJS_SIMD_O_NAMES(float32x4_swizzle, swizzle, Float32x4, Swizzle )
  181. ASMJS_SIMD_O_NAMES(float32x4_shuffle, shuffle, Float32x4, Shuffle )
  182. ASMJS_SIMD_O_NAMES(float32x4_extractLane, extractLane, Float32x4, ExtractLane )
  183. ASMJS_SIMD_O_NAMES(float32x4_replaceLane, replaceLane, Float32x4, ReplaceLane )
  184. ASMJS_SIMD_O_NAMES(float32x4_lessThan, lessThan, Float32x4, LessThan )
  185. ASMJS_SIMD_O_NAMES(float32x4_lessThanOrEqual, lessThanOrEqual, Float32x4, LessThanOrEqual )
  186. ASMJS_SIMD_O_NAMES(float32x4_equal, equal, Float32x4, Equal )
  187. ASMJS_SIMD_O_NAMES(float32x4_notEqual, notEqual, Float32x4, NotEqual )
  188. ASMJS_SIMD_O_NAMES(float32x4_greaterThan, greaterThan, Float32x4, GreaterThan )
  189. ASMJS_SIMD_O_NAMES(float32x4_greaterThanOrEqual, greaterThanOrEqual, Float32x4, GreaterThanOrEqual )
  190. ASMJS_SIMD_O_NAMES(float32x4_select, select, Float32x4, Select )
  191. // keep load/store contiguous
  192. ASMJS_SIMD_O_NAMES(float32x4_load, load, Float32x4, Load )
  193. ASMJS_SIMD_O_NAMES(float32x4_load1, load1, Float32x4, Load1 )
  194. ASMJS_SIMD_O_NAMES(float32x4_load2, load2, Float32x4, Load2 )
  195. ASMJS_SIMD_O_NAMES(float32x4_load3, load3, Float32x4, Load3 )
  196. ASMJS_SIMD_O_NAMES(float32x4_store, store, Float32x4, Store )
  197. ASMJS_SIMD_O_NAMES(float32x4_store1, store1, Float32x4, Store1 )
  198. ASMJS_SIMD_O_NAMES(float32x4_store2, store2, Float32x4, Store2 )
  199. ASMJS_SIMD_O_NAMES(float32x4_store3, store3, Float32x4, Store3 )
  200. ASMJS_SIMD_MARKERS(Float32x4_End) // just a marker
  201. // Float64x2
  202. // Disabled for now
  203. ASMJS_SIMD_MARKERS(Float64x2_Start) // just a marker
  204. ASMJS_SIMD_C_NAMES(Float64x2, Float64x2, Float64x2, Float64x2 )
  205. ASMJS_SIMD_O_NAMES(float64x2_check, check, Float64x2, Check )
  206. ASMJS_SIMD_O_NAMES(float64x2_splat, splat, Float64x2, Splat )
  207. ASMJS_SIMD_O_NAMES(float64x2_fromFloat32x4, fromFloat32x4, Float64x2, FromFloat32x4 )
  208. ASMJS_SIMD_O_NAMES(float64x2_fromFloat32x4Bits, fromFloat32x4Bits, Float64x2, FromFloat32x4Bits )
  209. ASMJS_SIMD_O_NAMES(float64x2_fromInt32x4, fromInt32x4, Float64x2, FromInt32x4 )
  210. ASMJS_SIMD_O_NAMES(float64x2_fromInt32x4Bits, fromInt32x4Bits, Float64x2, FromInt32x4Bits )
  211. ASMJS_SIMD_O_NAMES(float64x2_abs, abs, Float64x2, Abs )
  212. ASMJS_SIMD_O_NAMES(float64x2_neg, neg, Float64x2, Neg )
  213. ASMJS_SIMD_O_NAMES(float64x2_add, add, Float64x2, Add )
  214. ASMJS_SIMD_O_NAMES(float64x2_sub, sub, Float64x2, Sub )
  215. ASMJS_SIMD_O_NAMES(float64x2_mul, mul, Float64x2, Mul )
  216. ASMJS_SIMD_O_NAMES(float64x2_div, div, Float64x2, Div )
  217. ASMJS_SIMD_O_NAMES(float64x2_min, min, Float64x2, Min )
  218. ASMJS_SIMD_O_NAMES(float64x2_max, max, Float64x2, Max )
  219. ASMJS_SIMD_O_NAMES(float64x2_reciprocal, reciprocalApproximation, Float64x2, Reciprocal )
  220. ASMJS_SIMD_O_NAMES(float64x2_reciprocalSqrt, reciprocalSqrtApproximation, Float64x2, ReciprocalSqrt )
  221. ASMJS_SIMD_O_NAMES(float64x2_sqrt, sqrt, Float64x2, Sqrt )
  222. ASMJS_SIMD_O_NAMES(float64x2_swizzle, swizzle, Float64x2, Swizzle )
  223. ASMJS_SIMD_O_NAMES(float64x2_shuffle, shuffle, Float64x2, Shuffle )
  224. ASMJS_SIMD_O_NAMES(float64x2_lessThan, lessThan, Float64x2, LessThan )
  225. ASMJS_SIMD_O_NAMES(float64x2_lessThanOrEqual, lessThanOrEqual, Float64x2, LessThanOrEqual )
  226. ASMJS_SIMD_O_NAMES(float64x2_equal, equal, Float64x2, Equal )
  227. ASMJS_SIMD_O_NAMES(float64x2_notEqual, notEqual, Float64x2, NotEqual )
  228. ASMJS_SIMD_O_NAMES(float64x2_greaterThan, greaterThan, Float64x2, GreaterThan )
  229. ASMJS_SIMD_O_NAMES(float64x2_greaterThanOrEqual, greaterThanOrEqual, Float64x2, GreaterThanOrEqual )
  230. ASMJS_SIMD_O_NAMES(float64x2_select, select, Float64x2, Select )
  231. // keep load/store contiguous
  232. ASMJS_SIMD_O_NAMES(float64x2_load, load, Float64x2, Load )
  233. ASMJS_SIMD_O_NAMES(float64x2_load1, load1, Float64x2, Load1 )
  234. ASMJS_SIMD_O_NAMES(float64x2_store, store, Float64x2, Store )
  235. ASMJS_SIMD_O_NAMES(float64x2_store1, store1, Float64x2, Store1 )
  236. ASMJS_SIMD_MARKERS(Float64x2_End) // just a marker
  237. ASMJS_SIMD_MARKERS(Int16x8_Start) // just a marker
  238. ASMJS_SIMD_C_NAMES(Int16x8 ,Int16x8 , Int16x8 ,Int16x8 )
  239. ASMJS_SIMD_O_NAMES(int16x8_check ,check , Int16x8 ,Check )
  240. ASMJS_SIMD_O_NAMES(int16x8_extractLane ,extractLane , Int16x8 ,ExtractLane )
  241. ASMJS_SIMD_O_NAMES(int16x8_swizzle ,swizzle , Int16x8 ,Swizzle )
  242. ASMJS_SIMD_O_NAMES(int16x8_shuffle ,shuffle , Int16x8 ,Shuffle )
  243. ASMJS_SIMD_O_NAMES(int16x8_splat ,splat , Int16x8 ,Splat )
  244. ASMJS_SIMD_O_NAMES(int16x8_replaceLane ,replaceLane , Int16x8 ,ReplaceLane )
  245. ASMJS_SIMD_O_NAMES(int16x8_and ,and_ , Int16x8 ,And )
  246. ASMJS_SIMD_O_NAMES(int16x8_or ,or_ , Int16x8 ,Or )
  247. ASMJS_SIMD_O_NAMES(int16x8_xor ,xor_ , Int16x8 ,Xor )
  248. ASMJS_SIMD_O_NAMES(int16x8_not ,not_ , Int16x8 ,Not )
  249. ASMJS_SIMD_O_NAMES(int16x8_add ,add , Int16x8 ,Add )
  250. ASMJS_SIMD_O_NAMES(int16x8_sub ,sub , Int16x8 ,Sub )
  251. ASMJS_SIMD_O_NAMES(int16x8_mul ,mul , Int16x8 ,Mul )
  252. ASMJS_SIMD_O_NAMES(int16x8_neg ,neg , Int16x8 ,Neg )
  253. ASMJS_SIMD_O_NAMES(int16x8_shiftLeftByScalar ,shiftLeftByScalar , Int16x8 ,ShiftLeftByScalar )
  254. ASMJS_SIMD_O_NAMES(int16x8_shiftRightByScalar,shiftRightByScalar , Int16x8 ,ShiftRightByScalar)
  255. ASMJS_SIMD_O_NAMES(int16x8_lessThan ,lessThan , Int16x8 ,LessThan )
  256. ASMJS_SIMD_O_NAMES(int16x8_lessThanOrEqual ,lessThanOrEqual , Int16x8 ,LessThanOrEqual )
  257. ASMJS_SIMD_O_NAMES(int16x8_equal ,equal , Int16x8 ,Equal )
  258. ASMJS_SIMD_O_NAMES(int16x8_notEqual ,notEqual , Int16x8 ,NotEqual )
  259. ASMJS_SIMD_O_NAMES(int16x8_greaterThan ,greaterThan , Int16x8 ,GreaterThan )
  260. ASMJS_SIMD_O_NAMES(int16x8_greaterThanOrEqual,greaterThanOrEqual , Int16x8 ,GreaterThanOrEqual)
  261. ASMJS_SIMD_O_NAMES(int16x8_select ,select , Int16x8 ,Select )
  262. ASMJS_SIMD_O_NAMES(int16x8_addSaturate ,addSaturate , Int16x8 ,AddSaturate )
  263. ASMJS_SIMD_O_NAMES(int16x8_subSaturate ,subSaturate , Int16x8 ,SubSaturate )
  264. ASMJS_SIMD_O_NAMES(int16x8_load ,load , Int16x8 ,Load )
  265. ASMJS_SIMD_O_NAMES(int16x8_store ,store , Int16x8 ,Store )
  266. ASMJS_SIMD_O_NAMES(int16x8_fromFloat32x4Bits ,fromFloat32x4Bits , Int16x8 ,FromFloat32x4Bits )
  267. ASMJS_SIMD_O_NAMES(int16x8_fromInt32x4Bits ,fromInt32x4Bits , Int16x8 ,FromInt32x4Bits )
  268. ASMJS_SIMD_O_NAMES(int16x8_fromInt8x16Bits ,fromInt8x16Bits , Int16x8 ,FromInt8x16Bits )
  269. ASMJS_SIMD_O_NAMES(int16x8_fromUint32x4Bits ,fromUint32x4Bits , Int16x8 ,FromUint32x4Bits )
  270. ASMJS_SIMD_O_NAMES(int16x8_fromUint16x8Bits ,fromUint16x8Bits , Int16x8 ,FromUint16x8Bits )
  271. ASMJS_SIMD_O_NAMES(int16x8_fromUint8x16Bits ,fromUint8x16Bits , Int16x8 ,FromUint8x16Bits )
  272. // Int16x8 built-in IDs go here
  273. ASMJS_SIMD_MARKERS(Int16x8_End) // just a marker
  274. ASMJS_SIMD_MARKERS(Int8x16_Start) // just a marker
  275. ASMJS_SIMD_C_NAMES(Int8x16 ,Int8x16 , Int8x16 ,Int8x16 )
  276. ASMJS_SIMD_O_NAMES(int8x16_check ,check , Int8x16 ,Check )
  277. ASMJS_SIMD_O_NAMES(int8x16_extractLane ,extractLane , Int8x16 ,ExtractLane )
  278. ASMJS_SIMD_O_NAMES(int8x16_swizzle ,swizzle , Int8x16 ,Swizzle )
  279. ASMJS_SIMD_O_NAMES(int8x16_shuffle ,shuffle , Int8x16 ,Shuffle )
  280. ASMJS_SIMD_O_NAMES(int8x16_splat ,splat , Int8x16 ,Splat )
  281. ASMJS_SIMD_O_NAMES(int8x16_replaceLane ,replaceLane , Int8x16 ,ReplaceLane )
  282. ASMJS_SIMD_O_NAMES(int8x16_and ,and_ , Int8x16 ,And )
  283. ASMJS_SIMD_O_NAMES(int8x16_or ,or_ , Int8x16 ,Or )
  284. ASMJS_SIMD_O_NAMES(int8x16_xor ,xor_ , Int8x16 ,Xor )
  285. ASMJS_SIMD_O_NAMES(int8x16_not ,not_ , Int8x16 ,Not )
  286. ASMJS_SIMD_O_NAMES(int8x16_add ,add , Int8x16 ,Add )
  287. ASMJS_SIMD_O_NAMES(int8x16_sub ,sub , Int8x16 ,Sub )
  288. ASMJS_SIMD_O_NAMES(int8x16_mul ,mul , Int8x16 ,Mul )
  289. ASMJS_SIMD_O_NAMES(int8x16_neg ,neg , Int8x16 ,Neg )
  290. ASMJS_SIMD_O_NAMES(int8x16_shiftLeftByScalar ,shiftLeftByScalar , Int8x16 ,ShiftLeftByScalar )
  291. ASMJS_SIMD_O_NAMES(int8x16_shiftRightByScalar,shiftRightByScalar , Int8x16 ,ShiftRightByScalar)
  292. ASMJS_SIMD_O_NAMES(int8x16_lessThan ,lessThan , Int8x16 ,LessThan )
  293. ASMJS_SIMD_O_NAMES(int8x16_lessThanOrEqual ,lessThanOrEqual , Int8x16 ,LessThanOrEqual )
  294. ASMJS_SIMD_O_NAMES(int8x16_equal ,equal , Int8x16 ,Equal )
  295. ASMJS_SIMD_O_NAMES(int8x16_notEqual ,notEqual , Int8x16 ,NotEqual )
  296. ASMJS_SIMD_O_NAMES(int8x16_greaterThan ,greaterThan , Int8x16 ,GreaterThan )
  297. ASMJS_SIMD_O_NAMES(int8x16_greaterThanOrEqual,greaterThanOrEqual , Int8x16 ,GreaterThanOrEqual)
  298. ASMJS_SIMD_O_NAMES(int8x16_select ,select , Int8x16 ,Select )
  299. ASMJS_SIMD_O_NAMES(int8x16_addSaturate ,addSaturate , Int8x16 ,AddSaturate )
  300. ASMJS_SIMD_O_NAMES(int8x16_subSaturate ,subSaturate , Int8x16 ,SubSaturate )
  301. ASMJS_SIMD_O_NAMES(int8x16_load ,load , Int8x16 ,Load )
  302. ASMJS_SIMD_O_NAMES(int8x16_store ,store , Int8x16 ,Store )
  303. ASMJS_SIMD_O_NAMES(int8x16_fromFloat32x4Bits ,fromFloat32x4Bits , Int8x16 ,FromFloat32x4Bits )
  304. ASMJS_SIMD_O_NAMES(int8x16_fromInt32x4Bits ,fromInt32x4Bits , Int8x16 ,FromInt32x4Bits )
  305. ASMJS_SIMD_O_NAMES(int8x16_fromInt16x8Bits ,fromInt16x8Bits , Int8x16 ,FromInt16x8Bits )
  306. ASMJS_SIMD_O_NAMES(int8x16_fromUint32x4Bits ,fromUint32x4Bits , Int8x16 ,FromUint32x4Bits )
  307. ASMJS_SIMD_O_NAMES(int8x16_fromUint16x8Bits ,fromUint16x8Bits , Int8x16 ,FromUint16x8Bits )
  308. ASMJS_SIMD_O_NAMES(int8x16_fromUint8x16Bits ,fromUint8x16Bits , Int8x16 ,FromUint8x16Bits )
  309. ASMJS_SIMD_MARKERS(Int8x16_End) // just a marker
  310. ASMJS_SIMD_MARKERS(Uint32x4_Start) // just a marker
  311. ASMJS_SIMD_C_NAMES(Uint32x4 , Uint32x4 , Uint32x4 ,Uint32x4 )
  312. ASMJS_SIMD_O_NAMES(uint32x4_check , check , Uint32x4 ,Check )
  313. ASMJS_SIMD_O_NAMES(uint32x4_extractLane , extractLane , Uint32x4 ,ExtractLane )
  314. ASMJS_SIMD_O_NAMES(uint32x4_swizzle , swizzle , Uint32x4 ,Swizzle )
  315. ASMJS_SIMD_O_NAMES(uint32x4_shuffle , shuffle , Uint32x4 ,Shuffle )
  316. ASMJS_SIMD_O_NAMES(uint32x4_splat , splat , Uint32x4 ,Splat )
  317. ASMJS_SIMD_O_NAMES(uint32x4_replaceLane , replaceLane , Uint32x4 ,ReplaceLane )
  318. ASMJS_SIMD_O_NAMES(uint32x4_and , and_ , Uint32x4 ,And )
  319. ASMJS_SIMD_O_NAMES(uint32x4_or , or_ , Uint32x4 ,Or )
  320. ASMJS_SIMD_O_NAMES(uint32x4_xor , xor_ , Uint32x4 ,Xor )
  321. ASMJS_SIMD_O_NAMES(uint32x4_not , not_ , Uint32x4 ,Not )
  322. ASMJS_SIMD_O_NAMES(uint32x4_neg , neg , Uint32x4 ,Neg )
  323. ASMJS_SIMD_O_NAMES(uint32x4_add , add , Uint32x4 ,Add )
  324. ASMJS_SIMD_O_NAMES(uint32x4_sub , sub , Uint32x4 ,Sub )
  325. ASMJS_SIMD_O_NAMES(uint32x4_mul , mul , Uint32x4 ,Mul )
  326. ASMJS_SIMD_O_NAMES(uint32x4_shiftLeftByScalar , shiftLeftByScalar , Uint32x4 ,ShiftLeftByScalar )
  327. ASMJS_SIMD_O_NAMES(uint32x4_shiftRightByScalar, shiftRightByScalar , Uint32x4 ,ShiftRightByScalar)
  328. ASMJS_SIMD_O_NAMES(uint32x4_lessThan , lessThan , Uint32x4 ,LessThan )
  329. ASMJS_SIMD_O_NAMES(uint32x4_lessThanOrEqual , lessThanOrEqual , Uint32x4 ,LessThanOrEqual )
  330. ASMJS_SIMD_O_NAMES(uint32x4_equal , equal , Uint32x4 ,Equal )
  331. ASMJS_SIMD_O_NAMES(uint32x4_notEqual , notEqual , Uint32x4 ,NotEqual )
  332. ASMJS_SIMD_O_NAMES(uint32x4_greaterThan , greaterThan , Uint32x4 ,GreaterThan )
  333. ASMJS_SIMD_O_NAMES(uint32x4_greaterThanOrEqual, greaterThanOrEqual , Uint32x4 ,GreaterThanOrEqual)
  334. ASMJS_SIMD_O_NAMES(uint32x4_select , select , Uint32x4 ,Select )
  335. ASMJS_SIMD_O_NAMES(uint32x4_load , load , Uint32x4 ,Load )
  336. ASMJS_SIMD_O_NAMES(uint32x4_load1 , load1 , Uint32x4 ,Load1 )
  337. ASMJS_SIMD_O_NAMES(uint32x4_load2 , load2 , Uint32x4 ,Load2 )
  338. ASMJS_SIMD_O_NAMES(uint32x4_load3 , load3 , Uint32x4 ,Load3 )
  339. ASMJS_SIMD_O_NAMES(uint32x4_store , store , Uint32x4 ,Store )
  340. ASMJS_SIMD_O_NAMES(uint32x4_store1 , store1 , Uint32x4 ,Store1 )
  341. ASMJS_SIMD_O_NAMES(uint32x4_store2 , store2 , Uint32x4 ,Store2 )
  342. ASMJS_SIMD_O_NAMES(uint32x4_store3 , store3 , Uint32x4 ,Store3 )
  343. ASMJS_SIMD_O_NAMES(uint32x4_fromFloat32x4 , fromFloat32x4 , Uint32x4 ,FromFloat32x4 )
  344. ASMJS_SIMD_O_NAMES(uint32x4_fromFloat32x4Bits , fromFloat32x4Bits , Uint32x4 ,FromFloat32x4Bits )
  345. ASMJS_SIMD_O_NAMES(uint32x4_fromInt32x4Bits , fromInt32x4Bits , Uint32x4 ,FromInt32x4Bits )
  346. ASMJS_SIMD_O_NAMES(uint32x4_fromInt16x8Bits , fromInt16x8Bits , Uint32x4 ,FromInt16x8Bits )
  347. ASMJS_SIMD_O_NAMES(uint32x4_fromInt8x16Bits , fromInt8x16Bits , Uint32x4 ,FromInt8x16Bits )
  348. ASMJS_SIMD_O_NAMES(uint32x4_fromUint16x8Bits , fromUint16x8Bits , Uint32x4 ,FromUint16x8Bits )
  349. ASMJS_SIMD_O_NAMES(uint32x4_fromUint8x16Bits , fromUint8x16Bits , Uint32x4 ,FromUint8x16Bits )
  350. // Uint32x4 built-in IDs go here
  351. ASMJS_SIMD_MARKERS(Uint32x4_End) // just a marker
  352. ASMJS_SIMD_MARKERS(Uint16x8_Start) // just a marker
  353. ASMJS_SIMD_C_NAMES(Uint16x8 , Uint16x8 , Uint16x8 ,Uint16x8 )
  354. ASMJS_SIMD_O_NAMES(uint16x8_check , check , Uint16x8 ,Check )
  355. ASMJS_SIMD_O_NAMES(uint16x8_extractLane , extractLane , Uint16x8 ,ExtractLane )
  356. ASMJS_SIMD_O_NAMES(uint16x8_swizzle , swizzle , Uint16x8 ,Swizzle )
  357. ASMJS_SIMD_O_NAMES(uint16x8_shuffle , shuffle , Uint16x8 ,Shuffle )
  358. ASMJS_SIMD_O_NAMES(uint16x8_splat , splat , Uint16x8 ,Splat )
  359. ASMJS_SIMD_O_NAMES(uint16x8_replaceLane , replaceLane , Uint16x8 ,ReplaceLane )
  360. ASMJS_SIMD_O_NAMES(uint16x8_and , and_ , Uint16x8 ,And )
  361. ASMJS_SIMD_O_NAMES(uint16x8_or , or_ , Uint16x8 ,Or )
  362. ASMJS_SIMD_O_NAMES(uint16x8_xor , xor_ , Uint16x8 ,Xor )
  363. ASMJS_SIMD_O_NAMES(uint16x8_not , not_ , Uint16x8 ,Not )
  364. ASMJS_SIMD_O_NAMES(uint16x8_neg , neg , Uint16x8 ,Neg )
  365. ASMJS_SIMD_O_NAMES(uint16x8_add , add , Uint16x8 ,Add )
  366. ASMJS_SIMD_O_NAMES(uint16x8_sub , sub , Uint16x8 ,Sub )
  367. ASMJS_SIMD_O_NAMES(uint16x8_mul , mul , Uint16x8 ,Mul )
  368. ASMJS_SIMD_O_NAMES(uint16x8_shiftLeftByScalar , shiftLeftByScalar , Uint16x8 ,ShiftLeftByScalar )
  369. ASMJS_SIMD_O_NAMES(uint16x8_shiftRightByScalar , shiftRightByScalar , Uint16x8 ,ShiftRightByScalar)
  370. ASMJS_SIMD_O_NAMES(uint16x8_lessThan , lessThan , Uint16x8 ,LessThan )
  371. ASMJS_SIMD_O_NAMES(uint16x8_lessThanOrEqual , lessThanOrEqual , Uint16x8 ,LessThanOrEqual )
  372. ASMJS_SIMD_O_NAMES(uint16x8_equal , equal , Uint16x8 ,Equal )
  373. ASMJS_SIMD_O_NAMES(uint16x8_notEqual , notEqual , Uint16x8 ,NotEqual )
  374. ASMJS_SIMD_O_NAMES(uint16x8_greaterThan , greaterThan , Uint16x8 ,GreaterThan )
  375. ASMJS_SIMD_O_NAMES(uint16x8_greaterThanOrEqual , greaterThanOrEqual , Uint16x8 ,GreaterThanOrEqual)
  376. ASMJS_SIMD_O_NAMES(uint16x8_select , select , Uint16x8 ,Select )
  377. ASMJS_SIMD_O_NAMES(uint16x8_addSaturate , addSaturate , Uint16x8 ,AddSaturate )
  378. ASMJS_SIMD_O_NAMES(uint16x8_subSaturate , subSaturate , Uint16x8 ,SubSaturate )
  379. ASMJS_SIMD_O_NAMES(uint16x8_load , load , Uint16x8 ,Load )
  380. ASMJS_SIMD_O_NAMES(uint16x8_store , store , Uint16x8 ,Store )
  381. ASMJS_SIMD_O_NAMES(uint16x8_fromFloat32x4Bits , fromFloat32x4Bits , Uint16x8 ,FromFloat32x4Bits )
  382. ASMJS_SIMD_O_NAMES(uint16x8_fromInt32x4Bits , fromInt32x4Bits , Uint16x8 ,FromInt32x4Bits )
  383. ASMJS_SIMD_O_NAMES(uint16x8_fromInt16x8Bits , fromInt16x8Bits , Uint16x8 ,FromInt16x8Bits )
  384. ASMJS_SIMD_O_NAMES(uint16x8_fromInt8x16Bits , fromInt8x16Bits , Uint16x8 ,FromInt8x16Bits )
  385. ASMJS_SIMD_O_NAMES(uint16x8_fromUint32x4Bits , fromUint32x4Bits , Uint16x8 ,FromUint32x4Bits )
  386. ASMJS_SIMD_O_NAMES(uint16x8_fromUint8x16Bits , fromUint8x16Bits , Uint16x8 ,FromUint8x16Bits )
  387. // Uint16x8 built-in IDs go here
  388. ASMJS_SIMD_MARKERS(Uint16x8_End) // just a marker
  389. ASMJS_SIMD_MARKERS(Uint8x16_Start) // just a marker
  390. ASMJS_SIMD_C_NAMES(Uint8x16 , Uint8x16 , Uint8x16 , Uint8x16 )
  391. ASMJS_SIMD_O_NAMES(uint8x16_check , check , Uint8x16 , Check )
  392. ASMJS_SIMD_O_NAMES(uint8x16_extractLane , extractLane , Uint8x16 , ExtractLane )
  393. ASMJS_SIMD_O_NAMES(uint8x16_swizzle , swizzle , Uint8x16 , Swizzle )
  394. ASMJS_SIMD_O_NAMES(uint8x16_shuffle , shuffle , Uint8x16 , Shuffle )
  395. ASMJS_SIMD_O_NAMES(uint8x16_splat , splat , Uint8x16 , Splat )
  396. ASMJS_SIMD_O_NAMES(uint8x16_replaceLane , replaceLane , Uint8x16 , ReplaceLane )
  397. ASMJS_SIMD_O_NAMES(uint8x16_and , and_ , Uint8x16 , And )
  398. ASMJS_SIMD_O_NAMES(uint8x16_or , or_ , Uint8x16 , Or )
  399. ASMJS_SIMD_O_NAMES(uint8x16_xor , xor_ , Uint8x16 , Xor )
  400. ASMJS_SIMD_O_NAMES(uint8x16_not , not_ , Uint8x16 , Not )
  401. ASMJS_SIMD_O_NAMES(uint8x16_neg , neg , Uint8x16 , Neg )
  402. ASMJS_SIMD_O_NAMES(uint8x16_add , add , Uint8x16 , Add )
  403. ASMJS_SIMD_O_NAMES(uint8x16_sub , sub , Uint8x16 , Sub )
  404. ASMJS_SIMD_O_NAMES(uint8x16_mul , mul , Uint8x16 , Mul )
  405. ASMJS_SIMD_O_NAMES(uint8x16_shiftLeftByScalar , shiftLeftByScalar , Uint8x16 , ShiftLeftByScalar )
  406. ASMJS_SIMD_O_NAMES(uint8x16_shiftRightByScalar , shiftRightByScalar , Uint8x16 , ShiftRightByScalar)
  407. ASMJS_SIMD_O_NAMES(uint8x16_lessThan , lessThan , Uint8x16 , LessThan )
  408. ASMJS_SIMD_O_NAMES(uint8x16_lessThanOrEqual , lessThanOrEqual , Uint8x16 , LessThanOrEqual )
  409. ASMJS_SIMD_O_NAMES(uint8x16_equal , equal , Uint8x16 , Equal )
  410. ASMJS_SIMD_O_NAMES(uint8x16_notEqual , notEqual , Uint8x16 , NotEqual )
  411. ASMJS_SIMD_O_NAMES(uint8x16_greaterThan , greaterThan , Uint8x16 , GreaterThan )
  412. ASMJS_SIMD_O_NAMES(uint8x16_greaterThanOrEqual , greaterThanOrEqual , Uint8x16 , GreaterThanOrEqual)
  413. ASMJS_SIMD_O_NAMES(uint8x16_select , select , Uint8x16 , Select )
  414. ASMJS_SIMD_O_NAMES(uint8x16_addSaturate , addSaturate , Uint8x16 , AddSaturate )
  415. ASMJS_SIMD_O_NAMES(uint8x16_subSaturate , subSaturate , Uint8x16 , SubSaturate )
  416. ASMJS_SIMD_O_NAMES(uint8x16_load , load , Uint8x16 , Load )
  417. ASMJS_SIMD_O_NAMES(uint8x16_store , store , Uint8x16 , Store )
  418. ASMJS_SIMD_O_NAMES(uint8x16_fromFloat32x4Bits , fromFloat32x4Bits , Uint8x16 , FromFloat32x4Bits )
  419. ASMJS_SIMD_O_NAMES(uint8x16_fromInt32x4Bits , fromInt32x4Bits , Uint8x16 , FromInt32x4Bits )
  420. ASMJS_SIMD_O_NAMES(uint8x16_fromInt16x8Bits , fromInt16x8Bits , Uint8x16 , FromInt16x8Bits )
  421. ASMJS_SIMD_O_NAMES(uint8x16_fromInt8x16Bits , fromInt8x16Bits , Uint8x16 , FromInt8x16Bits )
  422. ASMJS_SIMD_O_NAMES(uint8x16_fromUint32x4Bits , fromUint32x4Bits , Uint8x16 , FromUint32x4Bits )
  423. ASMJS_SIMD_O_NAMES(uint8x16_fromUint16x8Bits , fromUint16x8Bits , Uint8x16 , FromUint16x8Bits )
  424. // Uint16x8 built-in IDs go here
  425. ASMJS_SIMD_MARKERS(Uint8x16_End) // just a marker
  426. // help the caller to undefine all the macros
  427. #undef ASMJS_MATH_FUNC_NAMES
  428. #undef ASMJS_MATH_CONST_NAMES
  429. #undef ASMJS_ARRAY_NAMES
  430. #undef ASMJS_SIMD_NAMES
  431. #undef ASMJS_SIMD_C_NAMES
  432. #undef ASMJS_SIMD_O_NAMES
  433. #undef ASMJS_SIMD_MARKERS