asm_macros.inc 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  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_(ctx,%1 );
  27. // NOW detect the second space and use it to extract the opcode name.
  28. #define asm_emit_(ctx,%1\32;%2) asm_emit_%1(ctx,%2)
  29. // Finally, detect zero parameters.
  30. #define ctx,) ctx)
  31. // All lower case.
  32. #define asm_emit_add AsmEmitAdd
  33. #define asm_emit_add_c AsmEmitAddC
  34. #define asm_emit_addr_alt AsmEmitAddrAlt
  35. #define asm_emit_addr_pri AsmEmitAddrPri
  36. #define asm_emit_align_alt AsmEmitAlignAlt
  37. #define asm_emit_align_pri AsmEmitAlignPri
  38. #define asm_emit_and AsmEmitAnd
  39. #define asm_emit_bounds AsmEmitBounds
  40. #define asm_emit_break AsmEmitBreak
  41. #define asm_emit_call AsmEmitCall
  42. #define asm_emit_cmps AsmEmitCmps
  43. #define asm_emit_const_alt AsmEmitConstAlt
  44. #define asm_emit_const_pri AsmEmitConstPri
  45. #define asm_emit_dec AsmEmitDec
  46. #define asm_emit_dec_alt AsmEmitDecAlt
  47. #define asm_emit_dec_i AsmEmitDecI
  48. #define asm_emit_dec_pri AsmEmitDecPri
  49. #define asm_emit_dec_s AsmEmitDecS
  50. #define asm_emit_eq AsmEmitEq
  51. #define asm_emit_eq_c_alt AsmEmitEqCAlt
  52. #define asm_emit_eq_c_pri AsmEmitEqCPri
  53. #define asm_emit_fill AsmEmitFill
  54. #define asm_emit_geq AsmEmitGeq
  55. #define asm_emit_grtr AsmEmitGrtr
  56. #define asm_emit_halt AsmEmitHalt
  57. #define asm_emit_heap AsmEmitHeap
  58. #define asm_emit_idxaddr AsmEmitIdxaddr
  59. #define asm_emit_idxaddr_b AsmEmitIdxaddrB
  60. #define asm_emit_inc AsmEmitInc
  61. #define asm_emit_inc_alt AsmEmitIncAlt
  62. #define asm_emit_inc_i AsmEmitIncI
  63. #define asm_emit_inc_pri AsmEmitIncPri
  64. #define asm_emit_inc_s AsmEmitIncS
  65. #define asm_emit_invert AsmEmitInvert
  66. #define asm_emit_jeq AsmEmitJeq
  67. #define asm_emit_jeq_rel AsmEmitJeqRel
  68. #define asm_emit_jgeq AsmEmitJgeq
  69. #define asm_emit_jgeq_rel AsmEmitJgeqRel
  70. #define asm_emit_jgrtr AsmEmitJgrtr
  71. #define asm_emit_jgrtr_rel AsmEmitJgrtrRel
  72. #define asm_emit_jleq AsmEmitJleq
  73. #define asm_emit_jleq_rel AsmEmitJleqRel
  74. #define asm_emit_jless AsmEmitJless
  75. #define asm_emit_jless_rel AsmEmitJlessRel
  76. #define asm_emit_jneq AsmEmitJneq
  77. #define asm_emit_jneq_rel AsmEmitJneqRel
  78. #define asm_emit_jnz AsmEmitJnz
  79. #define asm_emit_jnz_rel AsmEmitJnzRel
  80. #define asm_emit_jsgeq AsmEmitJsgeq
  81. #define asm_emit_jsgeq_rel AsmEmitJsgeqRel
  82. #define asm_emit_jsgrtr AsmEmitJsgrtr
  83. #define asm_emit_jsgrtr_rel AsmEmitJsgrtrRel
  84. #define asm_emit_jsleq AsmEmitJsleq
  85. #define asm_emit_jsleq_rel AsmEmitJsleqRel
  86. #define asm_emit_jsless AsmEmitJsless
  87. #define asm_emit_jsless_rel AsmEmitJslessRel
  88. #define asm_emit_jump AsmEmitJump
  89. #define asm_emit_jump_rel AsmEmitJumpRel
  90. #define asm_emit_jzer AsmEmitJzer
  91. #define asm_emit_jzer_rel AsmEmitJzerRel
  92. #define asm_emit_lctrl AsmEmitLctrl
  93. #define asm_emit_leq AsmEmitLeq
  94. #define asm_emit_less AsmEmitLess
  95. #define asm_emit_lidx AsmEmitLidx
  96. #define asm_emit_lidx_b AsmEmitLidxB
  97. #define asm_emit_load_alt AsmEmitLoadAlt
  98. #define asm_emit_load_i AsmEmitLoadI
  99. #define asm_emit_load_pri AsmEmitLoadPri
  100. #define asm_emit_load_s_alt AsmEmitLoadSAlt
  101. #define asm_emit_load_s_pri AsmEmitLoadSPri
  102. #define asm_emit_lodb_i AsmEmitLodbI
  103. #define asm_emit_lref_alt AsmEmitLrefAlt
  104. #define asm_emit_lref_pri AsmEmitLrefPri
  105. #define asm_emit_lref_s_alt AsmEmitLrefSAlt
  106. #define asm_emit_lref_s_pri AsmEmitLrefSPri
  107. #define asm_emit_move_alt AsmEmitMoveAlt
  108. #define asm_emit_move_pri AsmEmitMovePri
  109. #define asm_emit_movs AsmEmitMovs
  110. #define asm_emit_neg AsmEmitNeg
  111. #define asm_emit_neq AsmEmitNeq
  112. #define asm_emit_nop AsmEmitNop
  113. #define asm_emit_not AsmEmitNot
  114. #define asm_emit_or AsmEmitOr
  115. #define asm_emit_pop_alt AsmEmitPopAlt
  116. #define asm_emit_pop_pri AsmEmitPopPri
  117. #define asm_emit_proc AsmEmitProc
  118. #define asm_emit_push AsmEmitPush
  119. #define asm_emit_push_adr AsmEmitPushAdr
  120. #define asm_emit_push_alt AsmEmitPushAlt
  121. #define asm_emit_push_c AsmEmitPushC
  122. #define asm_emit_push_pri AsmEmitPushPri
  123. #define asm_emit_push_s AsmEmitPushS
  124. #define asm_emit_ret AsmEmitRet
  125. #define asm_emit_retn AsmEmitRetn
  126. #define asm_emit_sctrl AsmEmitSctrl
  127. #define asm_emit_sdiv AsmEmitSdiv
  128. #define asm_emit_sdiv_alt AsmEmitSdivAlt
  129. #define asm_emit_sgeq AsmEmitSgeq
  130. #define asm_emit_sgrtr AsmEmitSgrtr
  131. #define asm_emit_shl AsmEmitShl
  132. #define asm_emit_shl_c_alt AsmEmitShlCAlt
  133. #define asm_emit_shl_c_pri AsmEmitShlCPri
  134. #define asm_emit_shr AsmEmitShr
  135. #define asm_emit_shr_c_alt AsmEmitShrCAlt
  136. #define asm_emit_shr_c_pri AsmEmitShrCPri
  137. #define asm_emit_sign_alt AsmEmitSignAlt
  138. #define asm_emit_sign_pri AsmEmitSignPri
  139. #define asm_emit_sleq AsmEmitSleq
  140. #define asm_emit_sless AsmEmitSless
  141. #define asm_emit_smul AsmEmitSmul
  142. #define asm_emit_smul_c AsmEmitSmulC
  143. #define asm_emit_sref_alt AsmEmitSrefAlt
  144. #define asm_emit_sref_pri AsmEmitSrefPri
  145. #define asm_emit_sref_s_alt AsmEmitSrefSAlt
  146. #define asm_emit_sref_s_pri AsmEmitSrefSPri
  147. #define asm_emit_sshr AsmEmitSshr
  148. #define asm_emit_stack AsmEmitStack
  149. #define asm_emit_stor_alt AsmEmitStorAlt
  150. #define asm_emit_stor_i AsmEmitStorI
  151. #define asm_emit_stor_pri AsmEmitStorPri
  152. #define asm_emit_stor_s_alt AsmEmitStorSAlt
  153. #define asm_emit_stor_s_pri AsmEmitStorSPri
  154. #define asm_emit_strb_i AsmEmitStrbI
  155. #define asm_emit_sub AsmEmitSub
  156. #define asm_emit_sub_alt AsmEmitSubAlt
  157. #define asm_emit_swap_alt AsmEmitSwapAlt
  158. #define asm_emit_swap_pri AsmEmitSwapPri
  159. #define asm_emit_sysreq_c AsmEmitSysreqC
  160. #define asm_emit_sysreq_d AsmEmitSysreqD
  161. #define asm_emit_udiv AsmEmitUdiv
  162. #define asm_emit_udiv_alt AsmEmitUdivAlt
  163. #define asm_emit_umul AsmEmitUmul
  164. #define asm_emit_xchg AsmEmitXchg
  165. #define asm_emit_xor AsmEmitXor
  166. #define asm_emit_zero AsmEmitZero
  167. #define asm_emit_zero_alt AsmEmitZeroAlt
  168. #define asm_emit_zero_pri AsmEmitZeroPri
  169. #define asm_emit_zero_s AsmEmitZeroS
  170. // Custom.
  171. #define asm_emit_sysreq AsmEmitSysreq
  172. #define asm_emit_pop_args AsmEmitPopArgs
  173. #define asm_emit_push_arg AsmEmitPushArg
  174. #define asm_emit_push_num_args AsmEmitPushNumArgs
  175. // All UPPER case.
  176. #define asm_emit_ADD AsmEmitAdd
  177. #define asm_emit_AND AsmEmitAnd
  178. #define asm_emit_BOUNDS AsmEmitBounds
  179. #define asm_emit_BREAK AsmEmitBreak
  180. #define asm_emit_CALL AsmEmitCall
  181. #define asm_emit_CMPS AsmEmitCmps
  182. #define asm_emit_DEC AsmEmitDec
  183. #define asm_emit_EQ AsmEmitEq
  184. #define asm_emit_FILL AsmEmitFill
  185. #define asm_emit_GEQ AsmEmitGeq
  186. #define asm_emit_GRTR AsmEmitGrtr
  187. #define asm_emit_HALT AsmEmitHalt
  188. #define asm_emit_HEAP AsmEmitHeap
  189. #define asm_emit_IDXADDR AsmEmitIdxaddr
  190. #define asm_emit_INC AsmEmitInc
  191. #define asm_emit_INVERT AsmEmitInvert
  192. #define asm_emit_JEQ AsmEmitJeq
  193. #define asm_emit_JGEQ AsmEmitJgeq
  194. #define asm_emit_JGRTR AsmEmitJgrtr
  195. #define asm_emit_JLEQ AsmEmitJleq
  196. #define asm_emit_JLESS AsmEmitJless
  197. #define asm_emit_JNEQ AsmEmitJneq
  198. #define asm_emit_JNZ AsmEmitJnz
  199. #define asm_emit_JSGEQ AsmEmitJsgeq
  200. #define asm_emit_JSGRTR AsmEmitJsgrtr
  201. #define asm_emit_JSLEQ AsmEmitJsleq
  202. #define asm_emit_JSLESS AsmEmitJsless
  203. #define asm_emit_JUMP AsmEmitJump
  204. #define asm_emit_JZER AsmEmitJzer
  205. #define asm_emit_LCTRL AsmEmitLctrl
  206. #define asm_emit_LEQ AsmEmitLeq
  207. #define asm_emit_LESS AsmEmitLess
  208. #define asm_emit_LIDX AsmEmitLidx
  209. #define asm_emit_MOVS AsmEmitMovs
  210. #define asm_emit_NEG AsmEmitNeg
  211. #define asm_emit_NEQ AsmEmitNeq
  212. #define asm_emit_NOP AsmEmitNop
  213. #define asm_emit_NOT AsmEmitNot
  214. #define asm_emit_OR AsmEmitOr
  215. #define asm_emit_PROC AsmEmitProc
  216. #define asm_emit_PUSH AsmEmitPush
  217. #define asm_emit_RET AsmEmitRet
  218. #define asm_emit_RETN AsmEmitRetn
  219. #define asm_emit_SCTRL AsmEmitSctrl
  220. #define asm_emit_SDIV AsmEmitSdiv
  221. #define asm_emit_SGEQ AsmEmitSgeq
  222. #define asm_emit_SGRTR AsmEmitSgrtr
  223. #define asm_emit_SHL AsmEmitShl
  224. #define asm_emit_SHR AsmEmitShr
  225. #define asm_emit_SLEQ AsmEmitSleq
  226. #define asm_emit_SLESS AsmEmitSless
  227. #define asm_emit_SMUL AsmEmitSmul
  228. #define asm_emit_SSHR AsmEmitSshr
  229. #define asm_emit_STACK AsmEmitStack
  230. #define asm_emit_SUB AsmEmitSub
  231. #define asm_emit_UDIV AsmEmitUdiv
  232. #define asm_emit_UMUL AsmEmitUmul
  233. #define asm_emit_XCHG AsmEmitXchg
  234. #define asm_emit_XOR AsmEmitXor
  235. #define asm_emit_ZERO AsmEmitZero
  236. #define asm_emit_SYSREQ AsmEmitSysreq
  237. // All mixed case.
  238. #define asm_emit_Add AsmEmitAdd
  239. #define asm_emit_And AsmEmitAnd
  240. #define asm_emit_Bounds AsmEmitBounds
  241. #define asm_emit_Break AsmEmitBreak
  242. #define asm_emit_Call AsmEmitCall
  243. #define asm_emit_Cmps AsmEmitCmps
  244. #define asm_emit_Dec AsmEmitDec
  245. #define asm_emit_Eq AsmEmitEq
  246. #define asm_emit_Fill AsmEmitFill
  247. #define asm_emit_Geq AsmEmitGeq
  248. #define asm_emit_Grtr AsmEmitGrtr
  249. #define asm_emit_Halt AsmEmitHalt
  250. #define asm_emit_Heap AsmEmitHeap
  251. #define asm_emit_Idxaddr AsmEmitIdxaddr
  252. #define asm_emit_Inc AsmEmitInc
  253. #define asm_emit_Invert AsmEmitInvert
  254. #define asm_emit_Jeq AsmEmitJeq
  255. #define asm_emit_Jgeq AsmEmitJgeq
  256. #define asm_emit_Jgrtr AsmEmitJgrtr
  257. #define asm_emit_Jleq AsmEmitJleq
  258. #define asm_emit_Jless AsmEmitJless
  259. #define asm_emit_Jneq AsmEmitJneq
  260. #define asm_emit_Jnz AsmEmitJnz
  261. #define asm_emit_Jsgeq AsmEmitJsgeq
  262. #define asm_emit_Jsgrtr AsmEmitJsgrtr
  263. #define asm_emit_Jsleq AsmEmitJsleq
  264. #define asm_emit_Jsless AsmEmitJsless
  265. #define asm_emit_Jump AsmEmitJump
  266. #define asm_emit_Jzer AsmEmitJzer
  267. #define asm_emit_Lctrl AsmEmitLctrl
  268. #define asm_emit_Leq AsmEmitLeq
  269. #define asm_emit_Less AsmEmitLess
  270. #define asm_emit_Lidx AsmEmitLidx
  271. #define asm_emit_Movs AsmEmitMovs
  272. #define asm_emit_Neg AsmEmitNeg
  273. #define asm_emit_Neq AsmEmitNeq
  274. #define asm_emit_Nop AsmEmitNop
  275. #define asm_emit_Not AsmEmitNot
  276. #define asm_emit_Or AsmEmitOr
  277. #define asm_emit_Proc AsmEmitProc
  278. #define asm_emit_Push AsmEmitPush
  279. #define asm_emit_Ret AsmEmitRet
  280. #define asm_emit_Retn AsmEmitRetn
  281. #define asm_emit_Sctrl AsmEmitSctrl
  282. #define asm_emit_Sdiv AsmEmitSdiv
  283. #define asm_emit_Sgeq AsmEmitSgeq
  284. #define asm_emit_Sgrtr AsmEmitSgrtr
  285. #define asm_emit_Shl AsmEmitShl
  286. #define asm_emit_Shr AsmEmitShr
  287. #define asm_emit_Sleq AsmEmitSleq
  288. #define asm_emit_Sless AsmEmitSless
  289. #define asm_emit_Smul AsmEmitSmul
  290. #define asm_emit_Sshr AsmEmitSshr
  291. #define asm_emit_Stack AsmEmitStack
  292. #define asm_emit_Sub AsmEmitSub
  293. #define asm_emit_Udiv AsmEmitUdiv
  294. #define asm_emit_Umul AsmEmitUmul
  295. #define asm_emit_Xchg AsmEmitXchg
  296. #define asm_emit_Xor AsmEmitXor
  297. #define asm_emit_Zero AsmEmitZero
  298. #define asm_emit_Sysreq AsmEmitSysreq
  299. // Now detect all the "." variants.
  300. #define AsmEmitAdd.%0(%1) AsmEmitAdd%0(%1)
  301. #define AsmEmitAddc AsmEmitAddC
  302. #define AsmEmitAddr.%0(%1) AsmEmitAddr%0(%1)
  303. #define AsmEmitAddrpri AsmEmitAddrPri
  304. #define AsmEmitAddrPRI AsmEmitAddrPri
  305. #define AsmEmitAddralt AsmEmitAddrAlt
  306. #define AsmEmitAddrALT AsmEmitAddrAlt
  307. #define AsmEmitAlign.%0(%1) AsmEmitAlign%0(%1)
  308. #define AsmEmitAlignpri AsmEmitAlignPri
  309. #define AsmEmitAlignPRI AsmEmitAlignPri
  310. #define AsmEmitAlignalt AsmEmitAlignaAlt
  311. #define AsmEmitAlignALT AsmEmitAlignaAlt
  312. #define AsmEmitConst.%0(%1) AsmEmitConst%0(%1)
  313. #define AsmEmitConstpri AsmEmitConstPri
  314. #define AsmEmitConstPRI AsmEmitConstPri
  315. #define AsmEmitConstalt AsmEmitConstAlt
  316. #define AsmEmitConstALT AsmEmitConstAlt
  317. #define AsmEmitDec.%0(%1) AsmEmitDec%0(%1)
  318. #define AsmEmitDecpri AsmEmitDecPri
  319. #define AsmEmitDecPRI AsmEmitDecPri
  320. #define AsmEmitDecalt AsmEmitDecAlt
  321. #define AsmEmitDecALT AsmEmitDecAlt
  322. #define AsmEmitDeci AsmEmitDecI
  323. #define AsmEmitDecs AsmEmitDecS
  324. #define AsmEmitEq.%0(%1) AsmEmitEq%0(%1)
  325. #define AsmEmitEqc AsmEmitEqC
  326. #define AsmEmitEqC.%0(%1) AsmEmitEqC%0(%1)
  327. #define AsmEmitEqCpri AsmEmitEqCPri
  328. #define AsmEmitEqCPRI AsmEmitEqCPri
  329. #define AsmEmitEqCalt AsmEmitEqCAlt
  330. #define AsmEmitEqCALT AsmEmitEqCAlt
  331. #define AsmEmitIdxaddr.%0(%1) AsmEmitIdxaddr%0(%1)
  332. #define AsmEmitIdxaddrb AsmEmitIdxaddrB
  333. #define AsmEmitInc.%0(%1) AsmEmitInc%0(%1)
  334. #define AsmEmitIncpri AsmEmitIncPri
  335. #define AsmEmitIncPRI AsmEmitIncPri
  336. #define AsmEmitIncalt AsmEmitIncAlt
  337. #define AsmEmitIncALT AsmEmitIncAlt
  338. #define AsmEmitInci AsmEmitIncI
  339. #define AsmEmitIncs AsmEmitIncS
  340. #define AsmEmitJeq.%0(%1) AsmEmitJeq%0(%1)
  341. #define AsmEmitJgeq.%0(%1) AsmEmitJgeq%0(%1)
  342. #define AsmEmitJgrtr.%0(%1) AsmEmitJgrtr%0(%1)
  343. #define AsmEmitJleq.%0(%1) AsmEmitJleq%0(%1)
  344. #define AsmEmitJless.%0(%1) AsmEmitJless%0(%1)
  345. #define AsmEmitJneq.%0(%1) AsmEmitJneq%0(%1)
  346. #define AsmEmitJnz.%0(%1) AsmEmitJnz%0(%1)
  347. #define AsmEmitJsgeq.%0(%1) AsmEmitJsgeq%0(%1)
  348. #define AsmEmitJsgrtr.%0(%1) AsmEmitJsgrtr%0(%1)
  349. #define AsmEmitJsleq.%0(%1) AsmEmitJsleq%0(%1)
  350. #define AsmEmitJsless.%0(%1) AsmEmitJsless%0(%1)
  351. #define AsmEmitJump.%0(%1) AsmEmitJump%0(%1)
  352. #define AsmEmitJzer.%0(%1) AsmEmitJzer%0(%1)
  353. #define AsmEmitJeqrel AsmEmitJeqRel
  354. #define AsmEmitJgeqrel AsmEmitJgeqRel
  355. #define AsmEmitJgrtrrel AsmEmitJgrtrRel
  356. #define AsmEmitJleqrel AsmEmitJleqRel
  357. #define AsmEmitJlessrel AsmEmitJlessRel
  358. #define AsmEmitJneqrel AsmEmitJneqRel
  359. #define AsmEmitJnzrel AsmEmitJnzRel
  360. #define AsmEmitJsgeqrel AsmEmitJsgeqRel
  361. #define AsmEmitJsgrtrrel AsmEmitJsgrtrRel
  362. #define AsmEmitJsleqrel AsmEmitJsleqRel
  363. #define AsmEmitJslessrel AsmEmitJslessRel
  364. #define AsmEmitJumprel AsmEmitJumpRel
  365. #define AsmEmitJzerrel AsmEmitJzerRel
  366. #define AsmEmitJeqREL AsmEmitJeqRel
  367. #define AsmEmitJgeqREL AsmEmitJgeqRel
  368. #define AsmEmitJgrtrREL AsmEmitJgrtrRel
  369. #define AsmEmitJleqREL AsmEmitJleqRel
  370. #define AsmEmitJlessREL AsmEmitJlessRel
  371. #define AsmEmitJneqREL AsmEmitJneqRel
  372. #define AsmEmitJnzREL AsmEmitJnzRel
  373. #define AsmEmitJsgeqREL AsmEmitJsgeqRel
  374. #define AsmEmitJsgrtrREL AsmEmitJsgrtrRel
  375. #define AsmEmitJsleqREL AsmEmitJsleqRel
  376. #define AsmEmitJslessREL AsmEmitJslessRel
  377. #define AsmEmitJumpREL AsmEmitJumpRel
  378. #define AsmEmitJzerREL AsmEmitJzerRel
  379. #define AsmEmitLidx.%0(%1) AsmEmitLidx%0(%1)
  380. #define AsmEmitLidxb AsmEmitLidxB
  381. #define AsmEmitLoad.%0(%1) AsmEmitLoad%0(%1)
  382. #define AsmEmitLoadpri AsmEmitLoadPri
  383. #define AsmEmitLoadPRI AsmEmitLoadPri
  384. #define AsmEmitLoadalt AsmEmitLoadAlt
  385. #define AsmEmitLoadALT AsmEmitLoadAlt
  386. #define AsmEmitLoads AsmEmitLoadS
  387. #define AsmEmitLoadS.%0(%1) AsmEmitLoadS%0(%1)
  388. #define AsmEmitLoadSpri AsmEmitLoadSPri
  389. #define AsmEmitLoadSPRI AsmEmitLoadSPri
  390. #define AsmEmitLoadSalt AsmEmitLoadSAlt
  391. #define AsmEmitLoadSALT AsmEmitLoadSAlt
  392. #define AsmEmitLodb.%0(%1) AsmEmitLodb%0(%1)
  393. #define AsmEmitLodbi AsmEmitLodbI
  394. #define AsmEmitLref.%0(%1) AsmEmitLref%0(%1)
  395. #define AsmEmitLrefpri AsmEmitLrefPri
  396. #define AsmEmitLrefPRI AsmEmitLrefPri
  397. #define AsmEmitLrefalt AsmEmitLrefAlt
  398. #define AsmEmitLrefALT AsmEmitLrefAlt
  399. #define AsmEmitLrefs AsmEmitLrefS
  400. #define AsmEmitLrefS.%0(%1) AsmEmitLrefS%0(%1)
  401. #define AsmEmitLrefSpri AsmEmitLrefSPri
  402. #define AsmEmitLrefSPRI AsmEmitLrefSPri
  403. #define AsmEmitLrefSalt AsmEmitLrefSAlt
  404. #define AsmEmitLrefSALT AsmEmitLrefSAlt
  405. #define AsmEmitMove.%0(%1) AsmEmitMove%0(%1)
  406. #define AsmEmitMovepri AsmEmitMovePri
  407. #define AsmEmitMovePRI AsmEmitMovePri
  408. #define AsmEmitMovealt AsmEmitMoveAlt
  409. #define AsmEmitMoveALT AsmEmitMoveAlt
  410. #define AsmEmitPop.%0(%1) AsmEmitPop%0(%1)
  411. #define AsmEmitPoppri AsmEmitPopPri
  412. #define AsmEmitPopPRI AsmEmitPopPri
  413. #define AsmEmitPopalt AsmEmitPopAlt
  414. #define AsmEmitPopALT AsmEmitPopAlt
  415. #define AsmEmitPush.%0(%1) AsmEmitPush%0(%1)
  416. #define AsmEmitPushpri AsmEmitPushPri
  417. #define AsmEmitPushPRI AsmEmitPushPri
  418. #define AsmEmitPushalt AsmEmitPushAlt
  419. #define AsmEmitPushALT AsmEmitPushAlt
  420. #define AsmEmitPushadr AsmEmitPushAdr
  421. #define AsmEmitPushADR AsmEmitPushAdr
  422. #define AsmEmitPushc AsmEmitPushC
  423. #define AsmEmitPushs AsmEmitPushS
  424. #define AsmEmitSdiv.%0(%1) AsmEmitSdiv%0(%1)
  425. #define AsmEmitSdivalt AsmEmitSdivAlt
  426. #define AsmEmitSdivALT AsmEmitSdivAlt
  427. #define AsmEmitShl.%0(%1) AsmEmitShl%0(%1)
  428. #define AsmEmitShlc AsmEmitShlC
  429. #define AsmEmitShlC.%0(%1) AsmEmitShlC%0(%1)
  430. #define AsmEmitShlCpri AsmEmitShlCPri
  431. #define AsmEmitShlCPRI AsmEmitShlCPri
  432. #define AsmEmitShlCalt AsmEmitShlCAlt
  433. #define AsmEmitShlCALT AsmEmitShlCAlt
  434. #define AsmEmitShr.%0(%1) AsmEmitShr%0(%1)
  435. #define AsmEmitShrc AsmEmitShrC
  436. #define AsmEmitShrC.%0(%1) AsmEmitShrC%0(%1)
  437. #define AsmEmitShrCpri AsmEmitShrCPri
  438. #define AsmEmitShrCPRI AsmEmitShrCPri
  439. #define AsmEmitShrCalt AsmEmitShrCAlt
  440. #define AsmEmitShrCALT AsmEmitShrCAlt
  441. #define AsmEmitSign.%0(%1) AsmEmitSign%0(%1)
  442. #define AsmEmitSignpri AsmEmitSignPri
  443. #define AsmEmitSignPRI AsmEmitSignPri
  444. #define AsmEmitSignalt AsmEmitSignAlt
  445. #define AsmEmitSignALT AsmEmitSignAlt
  446. #define AsmEmitSmul.%0(%1) AsmEmitSmul%0(%1)
  447. #define AsmEmitSmulc AsmEmitSmulC
  448. #define AsmEmitSref.%0(%1) AsmEmitSref%0(%1)
  449. #define AsmEmitSrefpri AsmEmitSrefPri
  450. #define AsmEmitSrefPRI AsmEmitSrefPri
  451. #define AsmEmitSrefalt AsmEmitSrefAlt
  452. #define AsmEmitSrefALT AsmEmitSrefAlt
  453. #define AsmEmitSrefs AsmEmitSrefS
  454. #define AsmEmitSrefS.%0(%1) AsmEmitSrefS%0(%1)
  455. #define AsmEmitSrefSpri AsmEmitSrefSPri
  456. #define AsmEmitSrefSPRI AsmEmitSrefSPri
  457. #define AsmEmitSrefSalt AsmEmitSrefSAlt
  458. #define AsmEmitSrefSALT AsmEmitSrefSAlt
  459. #define AsmEmitStor.%0(%1) AsmEmitStor%0(%1)
  460. #define AsmEmitStorpri AsmEmitStorPri
  461. #define AsmEmitStorPRI AsmEmitStorPri
  462. #define AsmEmitStoralt AsmEmitStorAlt
  463. #define AsmEmitStorALT AsmEmitStorAlt
  464. #define AsmEmitStori AsmEmitStorI
  465. #define AsmEmitStors AsmEmitStorS
  466. #define AsmEmitStorS.%0(%1) AsmEmitStorS%0(%1)
  467. #define AsmEmitStorSpri AsmEmitStorSPri
  468. #define AsmEmitStorSPRI AsmEmitStorSPri
  469. #define AsmEmitStorSalt AsmEmitStorSAlt
  470. #define AsmEmitStorSALT AsmEmitStorSAlt
  471. #define AsmEmitStrb.%0(%1) AsmEmitStrb%0(%1)
  472. #define AsmEmitStrbi AsmEmitStrbI
  473. #define AsmEmitSub.%0(%1) AsmEmitSub%0(%1)
  474. #define AsmEmitSubalt AsmEmitSubAlt
  475. #define AsmEmitSubALT AsmEmitSubAlt
  476. #define AsmEmitSwap.%0(%1) AsmEmitSwap%0(%1)
  477. #define AsmEmitSwappri AsmEmitSwapPri
  478. #define AsmEmitSwapPRI AsmEmitSwapPri
  479. #define AsmEmitSwapalt AsmEmitSwapAlt
  480. #define AsmEmitSwapALT AsmEmitSwapAlt
  481. #define AsmEmitSysreq.%0(%1) AsmEmitSysreq%0(%1)
  482. #define AsmEmitSysreqc AsmEmitSysreqC
  483. #define AsmEmitSysreqd AsmEmitSysreqD
  484. #define AsmEmitUdiv.%0(%1) AsmEmitUdiv%0(%1)
  485. #define AsmEmitUdivalt AsmEmitUdivAlt
  486. #define AsmEmitUdivALT AsmEmitUdivAlt
  487. #define AsmEmitZero.%0(%1) AsmEmitZero%0(%1)
  488. #define AsmEmitZeropri AsmEmitZeroPri
  489. #define AsmEmitZeroPRI AsmEmitZeroPri
  490. #define AsmEmitZeroalt AsmEmitZeroAlt
  491. #define AsmEmitZeroALT AsmEmitZeroAlt
  492. #define AsmEmitZeros AsmEmitZeroS
  493. // Custom.
  494. #define AsmEmitPopargs AsmEmitPopArgs
  495. #define AsmEmitPopARGS AsmEmitPopArgs
  496. #define AsmEmitPusharg AsmEmitPushArg
  497. #define AsmEmitPushARG AsmEmitPushArg
  498. #define AsmEmitPushnum AsmEmitPushNum
  499. #define AsmEmitPushNUM AsmEmitPushNum
  500. #define AsmEmitPushNum.%0(%1) AsmEmitPushNum%0(%1)
  501. #define AsmEmitPushNumargs AsmEmitPushNumArgs
  502. #define AsmEmitPushNumARGS AsmEmitPushNumArgs
  503. // Certain OpCodes don't exist, but are the start of others - detect them here.
  504. // Lower-case.
  505. #define asm_emit_addr AsmEmitAddr
  506. #define asm_emit_align AsmEmitAlign
  507. #define asm_emit_const AsmEmitConst
  508. #define asm_emit_load AsmEmitLoad
  509. #define asm_emit_lodb AsmEmitLodb
  510. #define asm_emit_lref AsmEmitLref
  511. #define asm_emit_move AsmEmitMove
  512. #define asm_emit_pop AsmEmitPop
  513. #define asm_emit_sign AsmEmitSign
  514. #define asm_emit_stor AsmEmitStor
  515. #define asm_emit_sref AsmEmitSref
  516. #define asm_emit_strb AsmEmitStrb
  517. #define asm_emit_swap AsmEmitSwap
  518. // Mixed-case.
  519. #define asm_emit_Addr AsmEmitAddr
  520. #define asm_emit_Align AsmEmitAlign
  521. #define asm_emit_Const AsmEmitConst
  522. #define asm_emit_Load AsmEmitLoad
  523. #define asm_emit_Lodb AsmEmitLodb
  524. #define asm_emit_Lref AsmEmitLref
  525. #define asm_emit_Move AsmEmitMove
  526. #define asm_emit_Pop AsmEmitPop
  527. #define asm_emit_Sign AsmEmitSign
  528. #define asm_emit_Stor AsmEmitStor
  529. #define asm_emit_Sref AsmEmitSref
  530. #define asm_emit_Strb AsmEmitStrb
  531. #define asm_emit_Swap AsmEmitSwap
  532. // Upper-case.
  533. #define asm_emit_ADDR AsmEmitAddr
  534. #define asm_emit_ALIGN AsmEmitAlign
  535. #define asm_emit_CONST AsmEmitConst
  536. #define asm_emit_LOAD AsmEmitLoad
  537. #define asm_emit_LODB AsmEmitLodb
  538. #define asm_emit_LREF AsmEmitLref
  539. #define asm_emit_MOVE AsmEmitMove
  540. #define asm_emit_POP AsmEmitPop
  541. #define asm_emit_SIGN AsmEmitSign
  542. #define asm_emit_STOR AsmEmitStor
  543. #define asm_emit_SREF AsmEmitSref
  544. #define asm_emit_STRB AsmEmitStrb
  545. #define asm_emit_SWAP AsmEmitSwap