asm_macros.inc 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. // Copyright (C) 2012 Zeex
  2. //
  3. // Permission is hereby granted, free of charge, to any person obtaining a
  4. // copy of this software and associated documentation files (the "Software"),
  5. // to deal in the Software without restriction, including without limitation
  6. // the rights to use, copy, modify, merge, publish, distribute, sublicense,
  7. // and/or sell copies of the Software, and to permit persons to whom the
  8. // Software is furnished to do so, subject to the following conditions:
  9. //
  10. // The above copyright notice and this permission notice shall be included in
  11. // all copies or substantial portions of the Software.
  12. //
  13. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  14. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  18. // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  19. // DEALINGS IN THE SOFTWARE.
  20. #if defined ASM_MACROS_INC
  21. #endinput
  22. #endif
  23. #define ASM_MACROS_INC
  24. // Only detect ONE space, so you don't need a trailing space on opcodes with no
  25. // parameters. Add a space on the end here incase there wasn't one already.
  26. #define @emit%0\32;%1\10;%3 (asm_emit_haslabel:asm_emit_notlabel:asm_emit_(ctx,%1));
  27. // Detect labels (for jump targets).
  28. #define asm_emit_haslabel:asm_emit_notlabel:asm_emit_(ctx,%1:) AsmEmitLabelStringize AsmEmitLabel:(ctx,%1)
  29. #define asm_emit_notlabel:asm_emit_(ctx,%1) asm_emit_(ctx,%1 )
  30. // Detect jumps to labels, instead of the labels themselves.
  31. #define AsmEmitLabelStringize%0:(ctx,%1\32;%2) asm_emit_%1Label(ctx,%2)
  32. #define AsmEmitLabel:(ctx,%2) (ctx,#%2)
  33. // NOW detect the second space and use it to extract the opcode name.
  34. #define asm_emit_(ctx,%1\32;%2) asm_emit_%1(ctx,%2)
  35. // Finally, detect zero parameters.
  36. #define ctx,) ctx)
  37. // All lower case.
  38. #define asm_emit_add AsmEmitAdd
  39. #define asm_emit_add_c AsmEmitAddC
  40. #define asm_emit_addr_alt AsmEmitAddrAlt
  41. #define asm_emit_addr_pri AsmEmitAddrPri
  42. #define asm_emit_align_alt AsmEmitAlignAlt
  43. #define asm_emit_align_pri AsmEmitAlignPri
  44. #define asm_emit_and AsmEmitAnd
  45. #define asm_emit_bounds AsmEmitBounds
  46. #define asm_emit_break AsmEmitBreak
  47. #define asm_emit_call AsmEmitCall
  48. #define asm_emit_cmps AsmEmitCmps
  49. #define asm_emit_const_alt AsmEmitConstAlt
  50. #define asm_emit_const_pri AsmEmitConstPri
  51. #define asm_emit_dec AsmEmitDec
  52. #define asm_emit_dec_alt AsmEmitDecAlt
  53. #define asm_emit_dec_i AsmEmitDecI
  54. #define asm_emit_dec_pri AsmEmitDecPri
  55. #define asm_emit_dec_s AsmEmitDecS
  56. #define asm_emit_eq AsmEmitEq
  57. #define asm_emit_eq_c_alt AsmEmitEqCAlt
  58. #define asm_emit_eq_c_pri AsmEmitEqCPri
  59. #define asm_emit_fill AsmEmitFill
  60. #define asm_emit_geq AsmEmitGeq
  61. #define asm_emit_grtr AsmEmitGrtr
  62. #define asm_emit_halt AsmEmitHalt
  63. #define asm_emit_heap AsmEmitHeap
  64. #define asm_emit_idxaddr AsmEmitIdxaddr
  65. #define asm_emit_idxaddr_b AsmEmitIdxaddrB
  66. #define asm_emit_inc AsmEmitInc
  67. #define asm_emit_inc_alt AsmEmitIncAlt
  68. #define asm_emit_inc_i AsmEmitIncI
  69. #define asm_emit_inc_pri AsmEmitIncPri
  70. #define asm_emit_inc_s AsmEmitIncS
  71. #define asm_emit_invert AsmEmitInvert
  72. #define asm_emit_jeq AsmEmitJeq
  73. #define asm_emit_jeq_rel AsmEmitJeqRel
  74. #define asm_emit_jgeq AsmEmitJgeq
  75. #define asm_emit_jgeq_rel AsmEmitJgeqRel
  76. #define asm_emit_jgrtr AsmEmitJgrtr
  77. #define asm_emit_jgrtr_rel AsmEmitJgrtrRel
  78. #define asm_emit_jleq AsmEmitJleq
  79. #define asm_emit_jleq_rel AsmEmitJleqRel
  80. #define asm_emit_jless AsmEmitJless
  81. #define asm_emit_jless_rel AsmEmitJlessRel
  82. #define asm_emit_jneq AsmEmitJneq
  83. #define asm_emit_jneq_rel AsmEmitJneqRel
  84. #define asm_emit_jnz AsmEmitJnz
  85. #define asm_emit_jnz_rel AsmEmitJnzRel
  86. #define asm_emit_jsgeq AsmEmitJsgeq
  87. #define asm_emit_jsgeq_rel AsmEmitJsgeqRel
  88. #define asm_emit_jsgrtr AsmEmitJsgrtr
  89. #define asm_emit_jsgrtr_rel AsmEmitJsgrtrRel
  90. #define asm_emit_jsleq AsmEmitJsleq
  91. #define asm_emit_jsleq_rel AsmEmitJsleqRel
  92. #define asm_emit_jsless AsmEmitJsless
  93. #define asm_emit_jsless_rel AsmEmitJslessRel
  94. #define asm_emit_jump AsmEmitJump
  95. #define asm_emit_jump_rel AsmEmitJumpRel
  96. #define asm_emit_jzer AsmEmitJzer
  97. #define asm_emit_jzer_rel AsmEmitJzerRel
  98. #define asm_emit_lctrl AsmEmitLctrl
  99. #define asm_emit_leq AsmEmitLeq
  100. #define asm_emit_less AsmEmitLess
  101. #define asm_emit_lidx AsmEmitLidx
  102. #define asm_emit_lidx_b AsmEmitLidxB
  103. #define asm_emit_load_alt AsmEmitLoadAlt
  104. #define asm_emit_load_i AsmEmitLoadI
  105. #define asm_emit_load_pri AsmEmitLoadPri
  106. #define asm_emit_load_s_alt AsmEmitLoadSAlt
  107. #define asm_emit_load_s_pri AsmEmitLoadSPri
  108. #define asm_emit_lodb_i AsmEmitLodbI
  109. #define asm_emit_lref_alt AsmEmitLrefAlt
  110. #define asm_emit_lref_pri AsmEmitLrefPri
  111. #define asm_emit_lref_s_alt AsmEmitLrefSAlt
  112. #define asm_emit_lref_s_pri AsmEmitLrefSPri
  113. #define asm_emit_move_alt AsmEmitMoveAlt
  114. #define asm_emit_move_pri AsmEmitMovePri
  115. #define asm_emit_movs AsmEmitMovs
  116. #define asm_emit_neg AsmEmitNeg
  117. #define asm_emit_neq AsmEmitNeq
  118. #define asm_emit_nop AsmEmitNop
  119. #define asm_emit_not AsmEmitNot
  120. #define asm_emit_or AsmEmitOr
  121. #define asm_emit_pop_alt AsmEmitPopAlt
  122. #define asm_emit_pop_pri AsmEmitPopPri
  123. #define asm_emit_proc AsmEmitProc
  124. #define asm_emit_push AsmEmitPush
  125. #define asm_emit_push_adr AsmEmitPushAdr
  126. #define asm_emit_push_alt AsmEmitPushAlt
  127. #define asm_emit_push_c AsmEmitPushC
  128. #define asm_emit_push_pri AsmEmitPushPri
  129. #define asm_emit_push_s AsmEmitPushS
  130. #define asm_emit_ret AsmEmitRet
  131. #define asm_emit_retn AsmEmitRetn
  132. #define asm_emit_sctrl AsmEmitSctrl
  133. #define asm_emit_sdiv AsmEmitSdiv
  134. #define asm_emit_sdiv_alt AsmEmitSdivAlt
  135. #define asm_emit_sgeq AsmEmitSgeq
  136. #define asm_emit_sgrtr AsmEmitSgrtr
  137. #define asm_emit_shl AsmEmitShl
  138. #define asm_emit_shl_c_alt AsmEmitShlCAlt
  139. #define asm_emit_shl_c_pri AsmEmitShlCPri
  140. #define asm_emit_shr AsmEmitShr
  141. #define asm_emit_shr_c_alt AsmEmitShrCAlt
  142. #define asm_emit_shr_c_pri AsmEmitShrCPri
  143. #define asm_emit_sign_alt AsmEmitSignAlt
  144. #define asm_emit_sign_pri AsmEmitSignPri
  145. #define asm_emit_sleq AsmEmitSleq
  146. #define asm_emit_sless AsmEmitSless
  147. #define asm_emit_smul AsmEmitSmul
  148. #define asm_emit_smul_c AsmEmitSmulC
  149. #define asm_emit_sref_alt AsmEmitSrefAlt
  150. #define asm_emit_sref_pri AsmEmitSrefPri
  151. #define asm_emit_sref_s_alt AsmEmitSrefSAlt
  152. #define asm_emit_sref_s_pri AsmEmitSrefSPri
  153. #define asm_emit_sshr AsmEmitSshr
  154. #define asm_emit_stack AsmEmitStack
  155. #define asm_emit_stor_alt AsmEmitStorAlt
  156. #define asm_emit_stor_i AsmEmitStorI
  157. #define asm_emit_stor_pri AsmEmitStorPri
  158. #define asm_emit_stor_s_alt AsmEmitStorSAlt
  159. #define asm_emit_stor_s_pri AsmEmitStorSPri
  160. #define asm_emit_strb_i AsmEmitStrbI
  161. #define asm_emit_sub AsmEmitSub
  162. #define asm_emit_sub_alt AsmEmitSubAlt
  163. #define asm_emit_swap_alt AsmEmitSwapAlt
  164. #define asm_emit_swap_pri AsmEmitSwapPri
  165. #define asm_emit_sysreq_c AsmEmitSysreqC
  166. #define asm_emit_sysreq_d AsmEmitSysreqD
  167. #define asm_emit_udiv AsmEmitUdiv
  168. #define asm_emit_udiv_alt AsmEmitUdivAlt
  169. #define asm_emit_umul AsmEmitUmul
  170. #define asm_emit_xchg AsmEmitXchg
  171. #define asm_emit_xor AsmEmitXor
  172. #define asm_emit_zero AsmEmitZero
  173. #define asm_emit_zero_alt AsmEmitZeroAlt
  174. #define asm_emit_zero_pri AsmEmitZeroPri
  175. #define asm_emit_zero_s AsmEmitZeroS
  176. // Custom.
  177. #define asm_emit_sysreq AsmEmitSysreq
  178. #define asm_emit_pop_args AsmEmitPopArgs
  179. #define asm_emit_push_arg AsmEmitPushArg
  180. #define asm_emit_push_num_args AsmEmitPushNumArgs
  181. // All UPPER case.
  182. #define asm_emit_ADD AsmEmitAdd
  183. #define asm_emit_AND AsmEmitAnd
  184. #define asm_emit_BOUNDS AsmEmitBounds
  185. #define asm_emit_BREAK AsmEmitBreak
  186. #define asm_emit_CALL AsmEmitCall
  187. #define asm_emit_CMPS AsmEmitCmps
  188. #define asm_emit_DEC AsmEmitDec
  189. #define asm_emit_EQ AsmEmitEq
  190. #define asm_emit_FILL AsmEmitFill
  191. #define asm_emit_GEQ AsmEmitGeq
  192. #define asm_emit_GRTR AsmEmitGrtr
  193. #define asm_emit_HALT AsmEmitHalt
  194. #define asm_emit_HEAP AsmEmitHeap
  195. #define asm_emit_IDXADDR AsmEmitIdxaddr
  196. #define asm_emit_INC AsmEmitInc
  197. #define asm_emit_INVERT AsmEmitInvert
  198. #define asm_emit_JEQ AsmEmitJeq
  199. #define asm_emit_JGEQ AsmEmitJgeq
  200. #define asm_emit_JGRTR AsmEmitJgrtr
  201. #define asm_emit_JLEQ AsmEmitJleq
  202. #define asm_emit_JLESS AsmEmitJless
  203. #define asm_emit_JNEQ AsmEmitJneq
  204. #define asm_emit_JNZ AsmEmitJnz
  205. #define asm_emit_JSGEQ AsmEmitJsgeq
  206. #define asm_emit_JSGRTR AsmEmitJsgrtr
  207. #define asm_emit_JSLEQ AsmEmitJsleq
  208. #define asm_emit_JSLESS AsmEmitJsless
  209. #define asm_emit_JUMP AsmEmitJump
  210. #define asm_emit_JZER AsmEmitJzer
  211. #define asm_emit_LCTRL AsmEmitLctrl
  212. #define asm_emit_LEQ AsmEmitLeq
  213. #define asm_emit_LESS AsmEmitLess
  214. #define asm_emit_LIDX AsmEmitLidx
  215. #define asm_emit_MOVS AsmEmitMovs
  216. #define asm_emit_NEG AsmEmitNeg
  217. #define asm_emit_NEQ AsmEmitNeq
  218. #define asm_emit_NOP AsmEmitNop
  219. #define asm_emit_NOT AsmEmitNot
  220. #define asm_emit_OR AsmEmitOr
  221. #define asm_emit_PROC AsmEmitProc
  222. #define asm_emit_PUSH AsmEmitPush
  223. #define asm_emit_RET AsmEmitRet
  224. #define asm_emit_RETN AsmEmitRetn
  225. #define asm_emit_SCTRL AsmEmitSctrl
  226. #define asm_emit_SDIV AsmEmitSdiv
  227. #define asm_emit_SGEQ AsmEmitSgeq
  228. #define asm_emit_SGRTR AsmEmitSgrtr
  229. #define asm_emit_SHL AsmEmitShl
  230. #define asm_emit_SHR AsmEmitShr
  231. #define asm_emit_SLEQ AsmEmitSleq
  232. #define asm_emit_SLESS AsmEmitSless
  233. #define asm_emit_SMUL AsmEmitSmul
  234. #define asm_emit_SSHR AsmEmitSshr
  235. #define asm_emit_STACK AsmEmitStack
  236. #define asm_emit_SUB AsmEmitSub
  237. #define asm_emit_UDIV AsmEmitUdiv
  238. #define asm_emit_UMUL AsmEmitUmul
  239. #define asm_emit_XCHG AsmEmitXchg
  240. #define asm_emit_XOR AsmEmitXor
  241. #define asm_emit_ZERO AsmEmitZero
  242. #define asm_emit_SYSREQ AsmEmitSysreq
  243. // All mixed case.
  244. #define asm_emit_Add AsmEmitAdd
  245. #define asm_emit_And AsmEmitAnd
  246. #define asm_emit_Bounds AsmEmitBounds
  247. #define asm_emit_Break AsmEmitBreak
  248. #define asm_emit_Call AsmEmitCall
  249. #define asm_emit_Cmps AsmEmitCmps
  250. #define asm_emit_Dec AsmEmitDec
  251. #define asm_emit_Eq AsmEmitEq
  252. #define asm_emit_Fill AsmEmitFill
  253. #define asm_emit_Geq AsmEmitGeq
  254. #define asm_emit_Grtr AsmEmitGrtr
  255. #define asm_emit_Halt AsmEmitHalt
  256. #define asm_emit_Heap AsmEmitHeap
  257. #define asm_emit_Idxaddr AsmEmitIdxaddr
  258. #define asm_emit_Inc AsmEmitInc
  259. #define asm_emit_Invert AsmEmitInvert
  260. #define asm_emit_Jeq AsmEmitJeq
  261. #define asm_emit_Jgeq AsmEmitJgeq
  262. #define asm_emit_Jgrtr AsmEmitJgrtr
  263. #define asm_emit_Jleq AsmEmitJleq
  264. #define asm_emit_Jless AsmEmitJless
  265. #define asm_emit_Jneq AsmEmitJneq
  266. #define asm_emit_Jnz AsmEmitJnz
  267. #define asm_emit_Jsgeq AsmEmitJsgeq
  268. #define asm_emit_Jsgrtr AsmEmitJsgrtr
  269. #define asm_emit_Jsleq AsmEmitJsleq
  270. #define asm_emit_Jsless AsmEmitJsless
  271. #define asm_emit_Jump AsmEmitJump
  272. #define asm_emit_Jzer AsmEmitJzer
  273. #define asm_emit_Lctrl AsmEmitLctrl
  274. #define asm_emit_Leq AsmEmitLeq
  275. #define asm_emit_Less AsmEmitLess
  276. #define asm_emit_Lidx AsmEmitLidx
  277. #define asm_emit_Movs AsmEmitMovs
  278. #define asm_emit_Neg AsmEmitNeg
  279. #define asm_emit_Neq AsmEmitNeq
  280. #define asm_emit_Nop AsmEmitNop
  281. #define asm_emit_Not AsmEmitNot
  282. #define asm_emit_Or AsmEmitOr
  283. #define asm_emit_Proc AsmEmitProc
  284. #define asm_emit_Push AsmEmitPush
  285. #define asm_emit_Ret AsmEmitRet
  286. #define asm_emit_Retn AsmEmitRetn
  287. #define asm_emit_Sctrl AsmEmitSctrl
  288. #define asm_emit_Sdiv AsmEmitSdiv
  289. #define asm_emit_Sgeq AsmEmitSgeq
  290. #define asm_emit_Sgrtr AsmEmitSgrtr
  291. #define asm_emit_Shl AsmEmitShl
  292. #define asm_emit_Shr AsmEmitShr
  293. #define asm_emit_Sleq AsmEmitSleq
  294. #define asm_emit_Sless AsmEmitSless
  295. #define asm_emit_Smul AsmEmitSmul
  296. #define asm_emit_Sshr AsmEmitSshr
  297. #define asm_emit_Stack AsmEmitStack
  298. #define asm_emit_Sub AsmEmitSub
  299. #define asm_emit_Udiv AsmEmitUdiv
  300. #define asm_emit_Umul AsmEmitUmul
  301. #define asm_emit_Xchg AsmEmitXchg
  302. #define asm_emit_Xor AsmEmitXor
  303. #define asm_emit_Zero AsmEmitZero
  304. #define asm_emit_Sysreq AsmEmitSysreq
  305. // Now detect all the "." variants.
  306. #define AsmEmitAdd.%0(%1) AsmEmitAdd%0(%1)
  307. #define AsmEmitAddc AsmEmitAddC
  308. #define AsmEmitAddr.%0(%1) AsmEmitAddr%0(%1)
  309. #define AsmEmitAddrpri AsmEmitAddrPri
  310. #define AsmEmitAddrPRI AsmEmitAddrPri
  311. #define AsmEmitAddralt AsmEmitAddrAlt
  312. #define AsmEmitAddrALT AsmEmitAddrAlt
  313. #define AsmEmitAlign.%0(%1) AsmEmitAlign%0(%1)
  314. #define AsmEmitAlignpri AsmEmitAlignPri
  315. #define AsmEmitAlignPRI AsmEmitAlignPri
  316. #define AsmEmitAlignalt AsmEmitAlignaAlt
  317. #define AsmEmitAlignALT AsmEmitAlignaAlt
  318. #define AsmEmitCall.%0(%1) AsmEmitCall%0(%1)
  319. #define AsmEmitCallabs AsmEmitCallAbs
  320. #define AsmEmitConst.%0(%1) AsmEmitConst%0(%1)
  321. #define AsmEmitConstpri AsmEmitConstPri
  322. #define AsmEmitConstPRI AsmEmitConstPri
  323. #define AsmEmitConstalt AsmEmitConstAlt
  324. #define AsmEmitConstALT AsmEmitConstAlt
  325. #define AsmEmitDec.%0(%1) AsmEmitDec%0(%1)
  326. #define AsmEmitDecpri AsmEmitDecPri
  327. #define AsmEmitDecPRI AsmEmitDecPri
  328. #define AsmEmitDecalt AsmEmitDecAlt
  329. #define AsmEmitDecALT AsmEmitDecAlt
  330. #define AsmEmitDeci AsmEmitDecI
  331. #define AsmEmitDecs AsmEmitDecS
  332. #define AsmEmitEq.%0(%1) AsmEmitEq%0(%1)
  333. #define AsmEmitEqc AsmEmitEqC
  334. #define AsmEmitEqC.%0(%1) AsmEmitEqC%0(%1)
  335. #define AsmEmitEqCpri AsmEmitEqCPri
  336. #define AsmEmitEqCPRI AsmEmitEqCPri
  337. #define AsmEmitEqCalt AsmEmitEqCAlt
  338. #define AsmEmitEqCALT AsmEmitEqCAlt
  339. #define AsmEmitIdxaddr.%0(%1) AsmEmitIdxaddr%0(%1)
  340. #define AsmEmitIdxaddrb AsmEmitIdxaddrB
  341. #define AsmEmitInc.%0(%1) AsmEmitInc%0(%1)
  342. #define AsmEmitIncpri AsmEmitIncPri
  343. #define AsmEmitIncPRI AsmEmitIncPri
  344. #define AsmEmitIncalt AsmEmitIncAlt
  345. #define AsmEmitIncALT AsmEmitIncAlt
  346. #define AsmEmitInci AsmEmitIncI
  347. #define AsmEmitIncs AsmEmitIncS
  348. #define AsmEmitJeq.%0(%1) AsmEmitJeq%0(%1)
  349. #define AsmEmitJgeq.%0(%1) AsmEmitJgeq%0(%1)
  350. #define AsmEmitJgrtr.%0(%1) AsmEmitJgrtr%0(%1)
  351. #define AsmEmitJleq.%0(%1) AsmEmitJleq%0(%1)
  352. #define AsmEmitJless.%0(%1) AsmEmitJless%0(%1)
  353. #define AsmEmitJneq.%0(%1) AsmEmitJneq%0(%1)
  354. #define AsmEmitJnz.%0(%1) AsmEmitJnz%0(%1)
  355. #define AsmEmitJsgeq.%0(%1) AsmEmitJsgeq%0(%1)
  356. #define AsmEmitJsgrtr.%0(%1) AsmEmitJsgrtr%0(%1)
  357. #define AsmEmitJsleq.%0(%1) AsmEmitJsleq%0(%1)
  358. #define AsmEmitJsless.%0(%1) AsmEmitJsless%0(%1)
  359. #define AsmEmitJump.%0(%1) AsmEmitJump%0(%1)
  360. #define AsmEmitJzer.%0(%1) AsmEmitJzer%0(%1)
  361. #define AsmEmitJeqrel AsmEmitJeqRel
  362. #define AsmEmitJgeqrel AsmEmitJgeqRel
  363. #define AsmEmitJgrtrrel AsmEmitJgrtrRel
  364. #define AsmEmitJleqrel AsmEmitJleqRel
  365. #define AsmEmitJlessrel AsmEmitJlessRel
  366. #define AsmEmitJneqrel AsmEmitJneqRel
  367. #define AsmEmitJnzrel AsmEmitJnzRel
  368. #define AsmEmitJsgeqrel AsmEmitJsgeqRel
  369. #define AsmEmitJsgrtrrel AsmEmitJsgrtrRel
  370. #define AsmEmitJsleqrel AsmEmitJsleqRel
  371. #define AsmEmitJslessrel AsmEmitJslessRel
  372. #define AsmEmitJumprel AsmEmitJumpRel
  373. #define AsmEmitJzerrel AsmEmitJzerRel
  374. #define AsmEmitJeqREL AsmEmitJeqRel
  375. #define AsmEmitJgeqREL AsmEmitJgeqRel
  376. #define AsmEmitJgrtrREL AsmEmitJgrtrRel
  377. #define AsmEmitJleqREL AsmEmitJleqRel
  378. #define AsmEmitJlessREL AsmEmitJlessRel
  379. #define AsmEmitJneqREL AsmEmitJneqRel
  380. #define AsmEmitJnzREL AsmEmitJnzRel
  381. #define AsmEmitJsgeqREL AsmEmitJsgeqRel
  382. #define AsmEmitJsgrtrREL AsmEmitJsgrtrRel
  383. #define AsmEmitJsleqREL AsmEmitJsleqRel
  384. #define AsmEmitJslessREL AsmEmitJslessRel
  385. #define AsmEmitJumpREL AsmEmitJumpRel
  386. #define AsmEmitJzerREL AsmEmitJzerRel
  387. #define AsmEmitLidx.%0(%1) AsmEmitLidx%0(%1)
  388. #define AsmEmitLidxb AsmEmitLidxB
  389. #define AsmEmitLoad.%0(%1) AsmEmitLoad%0(%1)
  390. #define AsmEmitLoadpri AsmEmitLoadPri
  391. #define AsmEmitLoadPRI AsmEmitLoadPri
  392. #define AsmEmitLoadalt AsmEmitLoadAlt
  393. #define AsmEmitLoadALT AsmEmitLoadAlt
  394. #define AsmEmitLoads AsmEmitLoadS
  395. #define AsmEmitLoadS.%0(%1) AsmEmitLoadS%0(%1)
  396. #define AsmEmitLoadSpri AsmEmitLoadSPri
  397. #define AsmEmitLoadSPRI AsmEmitLoadSPri
  398. #define AsmEmitLoadSalt AsmEmitLoadSAlt
  399. #define AsmEmitLoadSALT AsmEmitLoadSAlt
  400. #define AsmEmitLodb.%0(%1) AsmEmitLodb%0(%1)
  401. #define AsmEmitLodbi AsmEmitLodbI
  402. #define AsmEmitLoadi AsmEmitLoadI
  403. #define AsmEmitLref.%0(%1) AsmEmitLref%0(%1)
  404. #define AsmEmitLrefpri AsmEmitLrefPri
  405. #define AsmEmitLrefPRI AsmEmitLrefPri
  406. #define AsmEmitLrefalt AsmEmitLrefAlt
  407. #define AsmEmitLrefALT AsmEmitLrefAlt
  408. #define AsmEmitLrefs AsmEmitLrefS
  409. #define AsmEmitLrefS.%0(%1) AsmEmitLrefS%0(%1)
  410. #define AsmEmitLrefSpri AsmEmitLrefSPri
  411. #define AsmEmitLrefSPRI AsmEmitLrefSPri
  412. #define AsmEmitLrefSalt AsmEmitLrefSAlt
  413. #define AsmEmitLrefSALT AsmEmitLrefSAlt
  414. #define AsmEmitMove.%0(%1) AsmEmitMove%0(%1)
  415. #define AsmEmitMovepri AsmEmitMovePri
  416. #define AsmEmitMovePRI AsmEmitMovePri
  417. #define AsmEmitMovealt AsmEmitMoveAlt
  418. #define AsmEmitMoveALT AsmEmitMoveAlt
  419. #define AsmEmitPop.%0(%1) AsmEmitPop%0(%1)
  420. #define AsmEmitPoppri AsmEmitPopPri
  421. #define AsmEmitPopPRI AsmEmitPopPri
  422. #define AsmEmitPopalt AsmEmitPopAlt
  423. #define AsmEmitPopALT AsmEmitPopAlt
  424. #define AsmEmitPush.%0(%1) AsmEmitPush%0(%1)
  425. #define AsmEmitPushpri AsmEmitPushPri
  426. #define AsmEmitPushPRI AsmEmitPushPri
  427. #define AsmEmitPushalt AsmEmitPushAlt
  428. #define AsmEmitPushALT AsmEmitPushAlt
  429. #define AsmEmitPushadr AsmEmitPushAdr
  430. #define AsmEmitPushADR AsmEmitPushAdr
  431. #define AsmEmitPushc AsmEmitPushC
  432. #define AsmEmitPushs AsmEmitPushS
  433. #define AsmEmitSdiv.%0(%1) AsmEmitSdiv%0(%1)
  434. #define AsmEmitSdivalt AsmEmitSdivAlt
  435. #define AsmEmitSdivALT AsmEmitSdivAlt
  436. #define AsmEmitShl.%0(%1) AsmEmitShl%0(%1)
  437. #define AsmEmitShlc AsmEmitShlC
  438. #define AsmEmitShlC.%0(%1) AsmEmitShlC%0(%1)
  439. #define AsmEmitShlCpri AsmEmitShlCPri
  440. #define AsmEmitShlCPRI AsmEmitShlCPri
  441. #define AsmEmitShlCalt AsmEmitShlCAlt
  442. #define AsmEmitShlCALT AsmEmitShlCAlt
  443. #define AsmEmitShr.%0(%1) AsmEmitShr%0(%1)
  444. #define AsmEmitShrc AsmEmitShrC
  445. #define AsmEmitShrC.%0(%1) AsmEmitShrC%0(%1)
  446. #define AsmEmitShrCpri AsmEmitShrCPri
  447. #define AsmEmitShrCPRI AsmEmitShrCPri
  448. #define AsmEmitShrCalt AsmEmitShrCAlt
  449. #define AsmEmitShrCALT AsmEmitShrCAlt
  450. #define AsmEmitSign.%0(%1) AsmEmitSign%0(%1)
  451. #define AsmEmitSignpri AsmEmitSignPri
  452. #define AsmEmitSignPRI AsmEmitSignPri
  453. #define AsmEmitSignalt AsmEmitSignAlt
  454. #define AsmEmitSignALT AsmEmitSignAlt
  455. #define AsmEmitSmul.%0(%1) AsmEmitSmul%0(%1)
  456. #define AsmEmitSmulc AsmEmitSmulC
  457. #define AsmEmitSref.%0(%1) AsmEmitSref%0(%1)
  458. #define AsmEmitSrefpri AsmEmitSrefPri
  459. #define AsmEmitSrefPRI AsmEmitSrefPri
  460. #define AsmEmitSrefalt AsmEmitSrefAlt
  461. #define AsmEmitSrefALT AsmEmitSrefAlt
  462. #define AsmEmitSrefs AsmEmitSrefS
  463. #define AsmEmitSrefS.%0(%1) AsmEmitSrefS%0(%1)
  464. #define AsmEmitSrefSpri AsmEmitSrefSPri
  465. #define AsmEmitSrefSPRI AsmEmitSrefSPri
  466. #define AsmEmitSrefSalt AsmEmitSrefSAlt
  467. #define AsmEmitSrefSALT AsmEmitSrefSAlt
  468. #define AsmEmitStor.%0(%1) AsmEmitStor%0(%1)
  469. #define AsmEmitStorpri AsmEmitStorPri
  470. #define AsmEmitStorPRI AsmEmitStorPri
  471. #define AsmEmitStoralt AsmEmitStorAlt
  472. #define AsmEmitStorALT AsmEmitStorAlt
  473. #define AsmEmitStori AsmEmitStorI
  474. #define AsmEmitStors AsmEmitStorS
  475. #define AsmEmitStorS.%0(%1) AsmEmitStorS%0(%1)
  476. #define AsmEmitStorSpri AsmEmitStorSPri
  477. #define AsmEmitStorSPRI AsmEmitStorSPri
  478. #define AsmEmitStorSalt AsmEmitStorSAlt
  479. #define AsmEmitStorSALT AsmEmitStorSAlt
  480. #define AsmEmitStrb.%0(%1) AsmEmitStrb%0(%1)
  481. #define AsmEmitStrbi AsmEmitStrbI
  482. #define AsmEmitSub.%0(%1) AsmEmitSub%0(%1)
  483. #define AsmEmitSubalt AsmEmitSubAlt
  484. #define AsmEmitSubALT AsmEmitSubAlt
  485. #define AsmEmitSwap.%0(%1) AsmEmitSwap%0(%1)
  486. #define AsmEmitSwappri AsmEmitSwapPri
  487. #define AsmEmitSwapPRI AsmEmitSwapPri
  488. #define AsmEmitSwapalt AsmEmitSwapAlt
  489. #define AsmEmitSwapALT AsmEmitSwapAlt
  490. #define AsmEmitSysreq.%0(%1) AsmEmitSysreq%0(%1)
  491. #define AsmEmitSysreqc AsmEmitSysreqC
  492. #define AsmEmitSysreqd AsmEmitSysreqD
  493. #define AsmEmitSysreqpri AsmEmitSysreqPri
  494. #define AsmEmitSysreqPRI AsmEmitSysreqPri
  495. #define AsmEmitUdiv.%0(%1) AsmEmitUdiv%0(%1)
  496. #define AsmEmitUdivalt AsmEmitUdivAlt
  497. #define AsmEmitUdivALT AsmEmitUdivAlt
  498. #define AsmEmitZero.%0(%1) AsmEmitZero%0(%1)
  499. #define AsmEmitZeropri AsmEmitZeroPri
  500. #define AsmEmitZeroPRI AsmEmitZeroPri
  501. #define AsmEmitZeroalt AsmEmitZeroAlt
  502. #define AsmEmitZeroALT AsmEmitZeroAlt
  503. #define AsmEmitZeros AsmEmitZeroS
  504. // Custom.
  505. #define AsmEmitPopargs AsmEmitPopArgs
  506. #define AsmEmitPopARGS AsmEmitPopArgs
  507. #define AsmEmitPusharg AsmEmitPushArg
  508. #define AsmEmitPushARG AsmEmitPushArg
  509. #define AsmEmitPushnum AsmEmitPushNum
  510. #define AsmEmitPushNUM AsmEmitPushNum
  511. #define AsmEmitPushNum.%0(%1) AsmEmitPushNum%0(%1)
  512. #define AsmEmitPushNumargs AsmEmitPushNumArgs
  513. #define AsmEmitPushNumARGS AsmEmitPushNumArgs
  514. // Certain OpCodes don't exist, but are the start of others - detect them here.
  515. // Lower-case.
  516. #define asm_emit_addr AsmEmitAddr
  517. #define asm_emit_align AsmEmitAlign
  518. #define asm_emit_const AsmEmitConst
  519. #define asm_emit_load AsmEmitLoad
  520. #define asm_emit_lodb AsmEmitLodb
  521. #define asm_emit_lref AsmEmitLref
  522. #define asm_emit_move AsmEmitMove
  523. #define asm_emit_pop AsmEmitPop
  524. #define asm_emit_sign AsmEmitSign
  525. #define asm_emit_stor AsmEmitStor
  526. #define asm_emit_sref AsmEmitSref
  527. #define asm_emit_strb AsmEmitStrb
  528. #define asm_emit_swap AsmEmitSwap
  529. // Mixed-case.
  530. #define asm_emit_Addr AsmEmitAddr
  531. #define asm_emit_Align AsmEmitAlign
  532. #define asm_emit_Const AsmEmitConst
  533. #define asm_emit_Load AsmEmitLoad
  534. #define asm_emit_Lodb AsmEmitLodb
  535. #define asm_emit_Lref AsmEmitLref
  536. #define asm_emit_Move AsmEmitMove
  537. #define asm_emit_Pop AsmEmitPop
  538. #define asm_emit_Sign AsmEmitSign
  539. #define asm_emit_Stor AsmEmitStor
  540. #define asm_emit_Sref AsmEmitSref
  541. #define asm_emit_Strb AsmEmitStrb
  542. #define asm_emit_Swap AsmEmitSwap
  543. // Upper-case.
  544. #define asm_emit_ADDR AsmEmitAddr
  545. #define asm_emit_ALIGN AsmEmitAlign
  546. #define asm_emit_CONST AsmEmitConst
  547. #define asm_emit_LOAD AsmEmitLoad
  548. #define asm_emit_LODB AsmEmitLodb
  549. #define asm_emit_LREF AsmEmitLref
  550. #define asm_emit_MOVE AsmEmitMove
  551. #define asm_emit_POP AsmEmitPop
  552. #define asm_emit_SIGN AsmEmitSign
  553. #define asm_emit_STOR AsmEmitStor
  554. #define asm_emit_SREF AsmEmitSref
  555. #define asm_emit_STRB AsmEmitStrb
  556. #define asm_emit_SWAP AsmEmitSwap
  557. // Jumps to labels.
  558. #define asm_emit_jeqLabel AsmEmitJeqLabel
  559. #define asm_emit_jeq_labelLabel AsmEmitJeqLabel
  560. #define asm_emit_jgeqLabel AsmEmitJgeqLabel
  561. #define asm_emit_jgeq_labelLabel AsmEmitJgeqLabel
  562. #define asm_emit_jgrtrLabel AsmEmitJgrtrLabel
  563. #define asm_emit_jgrtr_labelLabel AsmEmitJgrtrLabel
  564. #define asm_emit_jleqLabel AsmEmitJleqLabel
  565. #define asm_emit_jleq_labelLabel AsmEmitJleqLabel
  566. #define asm_emit_jlessLabel AsmEmitJlessLabel
  567. #define asm_emit_jless_labelLabel AsmEmitJlessLabel
  568. #define asm_emit_jneqLabel AsmEmitJneqLabel
  569. #define asm_emit_jneq_labelLabel AsmEmitJneqLabel
  570. #define asm_emit_jnzLabel AsmEmitJnzLabel
  571. #define asm_emit_jnz_labelLabel AsmEmitJnzLabel
  572. #define asm_emit_jsgeqLabel AsmEmitJsgeqLabel
  573. #define asm_emit_jsgeq_labelLabel AsmEmitJsgeqLabel
  574. #define asm_emit_jsgrtrLabel AsmEmitJsgrtrLabel
  575. #define asm_emit_jsgrtr_labelLabel AsmEmitJsgrtrLabel
  576. #define asm_emit_jsleqLabel AsmEmitJsleqLabel
  577. #define asm_emit_jsleq_labelLabel AsmEmitJsleqLabel
  578. #define asm_emit_jslessLabel AsmEmitJslessLabel
  579. #define asm_emit_jsless_labelLabel AsmEmitJslessLabel
  580. #define asm_emit_jumpLabel AsmEmitJumpLabel
  581. #define asm_emit_jump_labelLabel AsmEmitJumpLabel
  582. #define asm_emit_jzerLabel AsmEmitJzerLabel
  583. #define asm_emit_jzer_labelLabel AsmEmitJzerLabel
  584. #define asm_emit_jeq_label AsmEmitJeqLabel
  585. #define asm_emit_jgeq_label AsmEmitJgeqLabel
  586. #define asm_emit_jgrtr_label AsmEmitJgrtrLabel
  587. #define asm_emit_jleq_label AsmEmitJleqLabel
  588. #define asm_emit_jless_label AsmEmitJlessLabel
  589. #define asm_emit_jneq_label AsmEmitJneqLabel
  590. #define asm_emit_jnz_label AsmEmitJnzLabel
  591. #define asm_emit_jsgeq_label AsmEmitJsgeqLabel
  592. #define asm_emit_jsgrtr_label AsmEmitJsgrtrLabel
  593. #define asm_emit_jsleq_label AsmEmitJsleqLabel
  594. #define asm_emit_jsless_label AsmEmitJslessLabel
  595. #define asm_emit_jump_label AsmEmitJumpLabel
  596. #define asm_emit_jzer_label AsmEmitJzerLabel
  597. #define asm_emit_JEQLabel AsmEmitJeqLabel
  598. #define asm_emit_JGEQLabel AsmEmitJgeqLabel
  599. #define asm_emit_JGRTRLabel AsmEmitJgrtrLabel
  600. #define asm_emit_JLEQLabel AsmEmitJleqLabel
  601. #define asm_emit_JLESSLabel AsmEmitJlessLabel
  602. #define asm_emit_JNEQLabel AsmEmitJneqLabel
  603. #define asm_emit_JNZLabel AsmEmitJnzLabel
  604. #define asm_emit_JSGEQLabel AsmEmitJsgeqLabel
  605. #define asm_emit_JSGRTRLabel AsmEmitJsgrtrLabel
  606. #define asm_emit_JSLEQLabel AsmEmitJsleqLabel
  607. #define asm_emit_JSLESSLabel AsmEmitJslessLabel
  608. #define asm_emit_JUMPLabel AsmEmitJumpLabel
  609. #define asm_emit_JZERLabel AsmEmitJzerLabel
  610. #define asm_emit_JeqLabel AsmEmitJeqLabel
  611. #define asm_emit_JgeqLabel AsmEmitJgeqLabel
  612. #define asm_emit_JgrtrLabel AsmEmitJgrtrLabel
  613. #define asm_emit_JleqLabel AsmEmitJleqLabel
  614. #define asm_emit_JlessLabel AsmEmitJlessLabel
  615. #define asm_emit_JneqLabel AsmEmitJneqLabel
  616. #define asm_emit_JnzLabel AsmEmitJnzLabel
  617. #define asm_emit_JsgeqLabel AsmEmitJsgeqLabel
  618. #define asm_emit_JsgrtrLabel AsmEmitJsgrtrLabel
  619. #define asm_emit_JsleqLabel AsmEmitJsleqLabel
  620. #define asm_emit_JslessLabel AsmEmitJslessLabel
  621. #define asm_emit_JumpLabel AsmEmitJumpLabel
  622. #define asm_emit_JzerLabel AsmEmitJzerLabel
  623. // Only used when they explicitly typed `@emit JUMP.label x`
  624. #define AsmEmitJeqlabel AsmEmitJeqLabel
  625. #define AsmEmitJgeqlabel AsmEmitJgeqLabel
  626. #define AsmEmitJgrtrlabel AsmEmitJgrtrLabel
  627. #define AsmEmitJleqlabel AsmEmitJleqLabel
  628. #define AsmEmitJlesslabel AsmEmitJlessLabel
  629. #define AsmEmitJneqlabel AsmEmitJneqLabel
  630. #define AsmEmitJnzlabel AsmEmitJnzLabel
  631. #define AsmEmitJsgeqlabel AsmEmitJsgeqLabel
  632. #define AsmEmitJsgrtrlabel AsmEmitJsgrtrLabel
  633. #define AsmEmitJsleqlabel AsmEmitJsleqLabel
  634. #define AsmEmitJslesslabel AsmEmitJslessLabel
  635. #define AsmEmitJumplabel AsmEmitJumpLabel
  636. #define AsmEmitJzerlabel AsmEmitJzerLabel
  637. #define AsmEmitJeqLABEL AsmEmitJeqLabel
  638. #define AsmEmitJgeqLABEL AsmEmitJgeqLabel
  639. #define AsmEmitJgrtrLABEL AsmEmitJgrtrLabel
  640. #define AsmEmitJleqLABEL AsmEmitJleqLabel
  641. #define AsmEmitJlessLABEL AsmEmitJlessLabel
  642. #define AsmEmitJneqLABEL AsmEmitJneqLabel
  643. #define AsmEmitJnzLABEL AsmEmitJnzLabel
  644. #define AsmEmitJsgeqLABEL AsmEmitJsgeqLabel
  645. #define AsmEmitJsgrtrLABEL AsmEmitJsgrtrLabel
  646. #define AsmEmitJsleqLABEL AsmEmitJsleqLabel
  647. #define AsmEmitJslessLABEL AsmEmitJslessLabel
  648. #define AsmEmitJumpLABEL AsmEmitJumpLabel
  649. #define AsmEmitJzerLABEL AsmEmitJzerLabel
  650. // This is required as otherwise:
  651. //
  652. // @emit Jump.Label x
  653. //
  654. // Would not generate the `#x` required, while all other versions would.
  655. #define AsmEmitJeqLabel(ctx,%2) AsmEmitJeqLabelStringize(ctx,#%2)
  656. #define AsmEmitJgeqLabel(ctx,%2) AsmEmitJgeqLabelStringize(ctx,#%2)
  657. #define AsmEmitJgrtrLabel(ctx,%2) AsmEmitJgrtrLabelStringize(ctx,#%2)
  658. #define AsmEmitJleqLabel(ctx,%2) AsmEmitJleqLabelStringize(ctx,#%2)
  659. #define AsmEmitJlessLabel(ctx,%2) AsmEmitJlessLabelStringize(ctx,#%2)
  660. #define AsmEmitJneqLabel(ctx,%2) AsmEmitJneqLabelStringize(ctx,#%2)
  661. #define AsmEmitJnzLabel(ctx,%2) AsmEmitJnzLabelStringize(ctx,#%2)
  662. #define AsmEmitJsgeqLabel(ctx,%2) AsmEmitJsgeqLabelStringize(ctx,#%2)
  663. #define AsmEmitJsgrtrLabel(ctx,%2) AsmEmitJsgrtrLabelStringize(ctx,#%2)
  664. #define AsmEmitJsleqLabel(ctx,%2) AsmEmitJsleqLabelStringize(ctx,#%2)
  665. #define AsmEmitJslessLabel(ctx,%2) AsmEmitJslessLabelStringize(ctx,#%2)
  666. #define AsmEmitJumpLabel(ctx,%2) AsmEmitJumpLabelStringize(ctx,#%2)
  667. #define AsmEmitJzerLabel(ctx,%2) AsmEmitJzerLabelStringize(ctx,#%2)
  668. // Only used when they explicitly typed `@emit JUMP.label x:`
  669. #define AsmEmitJeqlabelLabel AsmEmitJeqLabel
  670. #define AsmEmitJgeqlabelLabel AsmEmitJgeqLabel
  671. #define AsmEmitJgrtrlabelLabel AsmEmitJgrtrLabel
  672. #define AsmEmitJleqlabelLabel AsmEmitJleqLabel
  673. #define AsmEmitJlesslabelLabel AsmEmitJlessLabel
  674. #define AsmEmitJneqlabelLabel AsmEmitJneqLabel
  675. #define AsmEmitJnzlabelLabel AsmEmitJnzLabel
  676. #define AsmEmitJsgeqlabelLabel AsmEmitJsgeqLabel
  677. #define AsmEmitJsgrtrlabelLabel AsmEmitJsgrtrLabel
  678. #define AsmEmitJsleqlabelLabel AsmEmitJsleqLabel
  679. #define AsmEmitJslesslabelLabel AsmEmitJslessLabel
  680. #define AsmEmitJumplabelLabel AsmEmitJumpLabel
  681. #define AsmEmitJzerlabelLabel AsmEmitJzerLabel
  682. #define AsmEmitJeqLABELLabel AsmEmitJeqLabel
  683. #define AsmEmitJgeqLABELLabel AsmEmitJgeqLabel
  684. #define AsmEmitJgrtrLABELLabel AsmEmitJgrtrLabel
  685. #define AsmEmitJleqLABELLabel AsmEmitJleqLabel
  686. #define AsmEmitJlessLABELLabel AsmEmitJlessLabel
  687. #define AsmEmitJneqLABELLabel AsmEmitJneqLabel
  688. #define AsmEmitJnzLABELLabel AsmEmitJnzLabel
  689. #define AsmEmitJsgeqLABELLabel AsmEmitJsgeqLabel
  690. #define AsmEmitJsgrtrLABELLabel AsmEmitJsgrtrLabel
  691. #define AsmEmitJsleqLABELLabel AsmEmitJsleqLabel
  692. #define AsmEmitJslessLABELLabel AsmEmitJslessLabel
  693. #define AsmEmitJumpLABELLabel AsmEmitJumpLabel
  694. #define AsmEmitJzerLABELLabel AsmEmitJzerLabel
  695. #define AsmEmitJeqLabelLabel AsmEmitJeqLabel
  696. #define AsmEmitJgeqLabelLabel AsmEmitJgeqLabel
  697. #define AsmEmitJgrtrLabelLabel AsmEmitJgrtrLabel
  698. #define AsmEmitJleqLabelLabel AsmEmitJleqLabel
  699. #define AsmEmitJlessLabelLabel AsmEmitJlessLabel
  700. #define AsmEmitJneqLabelLabel AsmEmitJneqLabel
  701. #define AsmEmitJnzLabelLabel AsmEmitJnzLabel
  702. #define AsmEmitJsgeqLabelLabel AsmEmitJsgeqLabel
  703. #define AsmEmitJsgrtrLabelLabel AsmEmitJsgrtrLabel
  704. #define AsmEmitJsleqLabelLabel AsmEmitJsleqLabel
  705. #define AsmEmitJslessLabelLabel AsmEmitJslessLabel
  706. #define AsmEmitJumpLabelLabel AsmEmitJumpLabel
  707. #define AsmEmitJzerLabelLabel AsmEmitJzerLabel
  708. // CallLabel macros.
  709. #define asm_emit_callLabel AsmEmitCallLabel
  710. #define asm_emit_call_labelLabel AsmEmitCallLabel
  711. #define asm_emit_call_label AsmEmitCallLabel
  712. #define asm_emit_CALLLabel AsmEmitCallLabel
  713. #define asm_emit_CallLabel AsmEmitCallLabel
  714. #define AsmEmitCalllabel AsmEmitCallLabel
  715. #define AsmEmitCallLABEL AsmEmitCallLabel
  716. #define AsmEmitCalllabelLabel AsmEmitCallLabel
  717. #define AsmEmitCallLABELLabel AsmEmitCallLabel
  718. #define AsmEmitCallLabelLabel AsmEmitCallLabel
  719. #define AsmEmitCallLabel(ctx,%2) AsmEmitCallLabelStringize(ctx,#%2)
  720. // Explicit `@emit Label name`
  721. #define asm_emit_labelLabel(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
  722. #define asm_emit_LABELLabel(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
  723. #define asm_emit_LabelLabel(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
  724. #define asm_emit_label(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
  725. #define asm_emit_LABEL(ctx,%2) AsmEmitLabelStringize(ctx,#%2)
  726. #define asm_emit_Label(ctx,%2) AsmEmitLabelStringize(ctx,#%2)