Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.21 KB | None | 0 0
  1. #cpudef
  2. {
  3. #bits 8
  4. #labelalign 2
  5.  
  6. #tokendef reg
  7. {
  8. r0 = 0
  9. r1 = 1
  10. r2 = 2
  11. r3 = 3
  12. r4 = 4
  13. r5 = 5
  14. r6 = 6
  15. r7 = 7
  16. r8 = 8
  17. r9 = 9
  18. r10 = 10
  19. r11 = 11
  20. r12 = 12
  21. r13 = 13
  22. sp = 15
  23. h = 14
  24. }
  25. nop -> 16'0x0000
  26.  
  27. mov.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x1 @ 4'0x0
  28. mov.w {dest: reg}, {src: reg} + {value} -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x0 @ value[31:16] @ value[15:0]
  29. mov.w {dest: reg}, {src: reg} - {value} -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x0 @ -value[31:16] @ -value[15:0]
  30. mov.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0xd @ 4'0x0 @ 8'0x00 @ value[7:0]
  31. mov.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x2 @ 4'0x0 @ value[15:0]
  32. mov.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0xb @ 4'0x0 @ value[31:16] @ value[15:0]
  33.  
  34. in {dest: reg}, [{value}] -> 4'0x0 @ dest[3:0] @ 4'0x3 @ 4'0x0 @ value[15:0]
  35. out [{value}], {src: reg} -> src[3:0] @ 4'0x0 @ 4'0x4 @ 4'0x0 @ value[15:0]
  36.  
  37. push {dest: reg} -> 4'0x0 @ dest[3:0] @ 4'0x5 @ 4'0x0
  38. push {value} -> 4'0x0 @ 4'0x0 @ 4'0x6 @ 4'0x0 @ value[31:16] @ value[15:0]
  39. pop {dest: reg} -> 4'0x0 @ dest[3:0] @ 4'0x7 @ 4'0x0
  40.  
  41. ret -> 8'0x00 @ 4'0x8 @ 4'0x0
  42. iret -> 8'0x00 @ 4'0x9 @ 4'0x0
  43.  
  44. swap {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x0
  45. irq {val1}, {val2} -> val1[3:0]@ 3'0x0@val2[0:0] @ 4'0xc @ 4'0x0
  46.  
  47. halt -> 16'0xfff0
  48.  
  49. j {value} -> 8'0x00 @ 4'0x0 @ 4'0x1 @ value[31:16] @ value[15:0]
  50. jz {value} -> 8'0x00 @ 4'0x1 @ 4'0x1 @ value[31:16] @ value[15:0]
  51. jnz {value} -> 8'0x00 @ 4'0x2 @ 4'0x1 @ value[31:16] @ value[15:0]
  52. jc {value} -> 8'0x00 @ 4'0x3 @ 4'0x1 @ value[31:16] @ value[15:0]
  53. jnc {value} -> 8'0x00 @ 4'0x4 @ 4'0x1 @ value[31:16] @ value[15:0]
  54. jo {value} -> 8'0x00 @ 4'0x5 @ 4'0x1 @ value[31:16] @ value[15:0]
  55. jno {value} -> 8'0x00 @ 4'0x6 @ 4'0x1 @ value[31:16] @ value[15:0]
  56. jp {value} -> 8'0x00 @ 4'0x7 @ 4'0x1 @ value[31:16] @ value[15:0]
  57. jge {value} -> 8'0x00 @ 4'0x7 @ 4'0x1 @ value[31:16] @ value[15:0]
  58. jnp {value} -> 8'0x00 @ 4'0x8 @ 4'0x1 @ value[31:16] @ value[15:0]
  59. js {value} -> 8'0x00 @ 4'0x8 @ 4'0x1 @ value[31:16] @ value[15:0]
  60. jg {value} -> 8'0x00 @ 4'0x9 @ 4'0x1 @ value[31:16] @ value[15:0]
  61. jse {value} -> 8'0x00 @ 4'0xa @ 4'0x1 @ value[31:16] @ value[15:0]
  62.  
  63. call {value} -> 8'0x00 @ 4'0x0 @ 4'0x2 @ value[31:16] @ value[15:0]
  64. callz {value} -> 8'0x00 @ 4'0x1 @ 4'0x2 @ value[31:16] @ value[15:0]
  65. callnz {value} -> 8'0x00 @ 4'0x2 @ 4'0x2 @ value[31:16] @ value[15:0]
  66. callc {value} -> 8'0x00 @ 4'0x3 @ 4'0x2 @ value[31:16] @ value[15:0]
  67. callnc {value} -> 8'0x00 @ 4'0x4 @ 4'0x2 @ value[31:16] @ value[15:0]
  68. callo {value} -> 8'0x00 @ 4'0x5 @ 4'0x2 @ value[31:16] @ value[15:0]
  69. callno {value} -> 8'0x00 @ 4'0x6 @ 4'0x2 @ value[31:16] @ value[15:0]
  70. callp {value} -> 8'0x00 @ 4'0x7 @ 4'0x2 @ value[31:16] @ value[15:0]
  71. callge {value} -> 8'0x00 @ 4'0x7 @ 4'0x2 @ value[31:16] @ value[15:0]
  72. callnp {value} -> 8'0x00 @ 4'0x8 @ 4'0x2 @ value[31:16] @ value[15:0]
  73. calls {value} -> 8'0x00 @ 4'0x8 @ 4'0x2 @ value[31:16] @ value[15:0]
  74. callg {value} -> 8'0x00 @ 4'0x9 @ 4'0x2 @ value[31:16] @ value[15:0]
  75. callse {value} -> 8'0x00 @ 4'0xa @ 4'0x2 @ value[31:16] @ value[15:0]
  76.  
  77. ld.b {dest: reg}, [{src: reg}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x3
  78. ld.s {dest: reg}, [{src: reg}] -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0x3
  79. ld.w {dest: reg}, [{src: reg}] -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0xc
  80. ld.b {dest: reg}, [{value}] -> 4'0x0 @ dest[3:0] @ 4'0x4 @ 4'0x3 @ value[31:16] @ value[15:0]
  81. ld.s {dest: reg}, [{value}] -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x3 @ value[31:16] @ value[15:0]
  82. ld.w {dest: reg}, [{value}] -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0xc @ value[31:16] @ value[15:0]
  83. ld.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x3 @ value[31:16] @ value[15:0]
  84. ld.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x3 @ -value[31:16] @ -value[15:0]
  85. ld.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0xc @ value[31:16] @ value[15:0]
  86. ld.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0xc @ -value[31:16] @ -value[15:0]
  87. ld.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x3 @ value[31:16] @ value[15:0]
  88. ld.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x3 @ -value[31:16] @ -value[15:0]
  89.  
  90. st.b [{dest: reg}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x3
  91. st.s [{dest: reg}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x8 @ 4'0x3
  92. st.w [{dest: reg}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x8 @ 4'0xc
  93. st.b [{value}], {src: reg} -> src[3:0] @ 4'0x0 @ 4'0xc @ 4'0x3 @ value[31:16] @ value[15:0]
  94. st.s [{value}], {src: reg} -> src[3:0] @ 4'0x0 @ 4'0x9 @ 4'0x3 @ value[31:16] @ value[15:0]
  95. st.w [{value}], {src: reg} -> src[3:0] @ 4'0x0 @ 4'0x9 @ 4'0xc @ value[31:16] @ value[15:0]
  96. st.s [{dest: reg} + {value}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x3 @ value[31:16] @ value[15:0]
  97. st.s [{dest: reg} - {value}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x3 @ -value[31:16] @ -value[15:0]
  98. st.w [{dest: reg} + {value}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0xc @ value[31:16] @ value[15:0]
  99. st.w [{dest: reg} - {value}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0xc @ -value[31:16] @ -value[15:0]
  100. st.b [{dest: reg} + {value}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x3 @ value[31:16] @ value[15:0]
  101. st.b [{dest: reg} - {value}], {src: reg} -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x3 @ -value[31:16] @ -value[15:0]
  102.  
  103. add.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0x4
  104. add.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x0 @ 4'0xe @ 8'0x00 @ value[7:0]
  105. add.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x4 @ value[15:0]
  106. add.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x0 @ 4'0xd @ value[31:16] @ value[15:0]
  107. add.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x4 @ value[31:16] @ value[15:0]
  108. add.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x4 @ -value[31:16] @ -value[15:0]
  109. add.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x4 @ value[31:16] @ value[15:0]
  110. add.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x4 @ -value[31:16] @ -value[15:0]
  111. add.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x4 @ value[31:16] @ value[15:0]
  112. add.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x4 @ -value[31:16] @ -value[15:0]
  113. uadd.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x4 @ value[31:16] @ value[15:0]
  114. uadd.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x4 @ -value[31:16] @ -value[15:0]
  115. uadd.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x4 @ value[31:16] @ value[15:0]
  116. uadd.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x4 @ -value[31:16] @ -value[15:0]
  117. uadd.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x4 @ value[31:16] @ value[15:0]
  118. uadd.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x4 @ -value[31:16] @ -value[15:0]
  119.  
  120. sub.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x8 @ 4'0x4
  121. sub.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0xe @ 8'0x00 @ value[7:0]
  122. sub.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0x4 @ value[15:0]
  123. sub.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0xd @ value[31:16] @ value[15:0]
  124. sub.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x4 @ value[31:16] @ value[15:0]
  125. sub.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x4 @ -value[31:16] @ -value[15:0]
  126. sub.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x4 @ value[31:16] @ value[15:0]
  127. sub.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x4 @ -value[31:16] @ -value[15:0]
  128. sub.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x4 @ value[31:16] @ value[15:0]
  129. sub.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x4 @ -value[31:16] @ -value[15:0]
  130. usub.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x4 @ value[31:16] @ value[15:0]
  131. usub.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x4 @ -value[31:16] @ -value[15:0]
  132. usub.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x4 @ value[31:16] @ value[15:0]
  133. usub.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x4 @ -value[31:16] @ -value[15:0]
  134. usub.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xf @ 4'0x4 @ value[31:16] @ value[15:0]
  135. usub.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xf @ 4'0x4 @ -value[31:16] @ -value[15:0]
  136.  
  137. and.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0x5
  138. and.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x2 @ 4'0xe @ 8'0x00 @ value[7:0]
  139. and.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x5 @ value[15:0]
  140. and.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x2 @ 4'0xd @ value[31:16] @ value[15:0]
  141. and.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x5 @ value[31:16] @ value[15:0]
  142. and.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x5 @ -value[31:16] @ -value[15:0]
  143. and.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x5 @ value[31:16] @ value[15:0]
  144. and.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x5 @ -value[31:16] @ -value[15:0]
  145. and.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x5 @ value[31:16] @ value[15:0]
  146. and.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x5 @ -value[31:16] @ -value[15:0]
  147. uand {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x5 @ value[31:16] @ value[15:0]
  148. uand {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x5 @ -value[31:16] @ -value[15:0]
  149. uand.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x5 @ value[31:16] @ value[15:0]
  150. uand.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x5 @ -value[31:16] @ -value[15:0]
  151. uand.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x5 @ value[31:16] @ value[15:0]
  152. uand.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x5 @ -value[31:16] @ -value[15:0]
  153.  
  154. or.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x8 @ 4'0x5
  155. or.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x3 @ 4'0xe @ 8'0x00 @ value[7:0]
  156. or.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0x5 @ value[15:0]
  157. or.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x3 @ 4'0xd @ value[31:16] @ value[15:0]
  158. or.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x5 @ value[31:16] @ value[15:0]
  159. or.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x5 @ -value[31:16] @ -value[15:0]
  160. or.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x5 @ value[31:16] @ value[15:0]
  161. or.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x5 @ -value[31:16] @ -value[15:0]
  162. or.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x5 @ value[31:16] @ value[15:0]
  163. or.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x5 @ -value[31:16] @ -value[15:0]
  164. uor.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x5 @ value[31:16] @ value[15:0]
  165. uor.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x5 @ -value[31:16] @ -value[15:0]
  166. uor.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x5 @ value[31:16] @ value[15:0]
  167. uor.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x5 @ -value[31:16] @ -value[15:0]
  168. uor.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xf @ 4'0x5 @ value[31:16] @ value[15:0]
  169. uor.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xf @ 4'0x5 @ -value[31:16] @ -value[15:0]
  170.  
  171. xor.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0x6
  172. xor.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x4 @ 4'0xe @ 8'0x00 @ value[7:0]
  173. xor.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x6 @ value[15:0]
  174. xor.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x4 @ 4'0xd @ value[31:16] @ value[15:0]
  175. xor.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x6 @ value[31:16] @ value[15:0]
  176. xor.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x6 @ -value[31:16] @ -value[15:0]
  177. xor.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x6 @ value[31:16] @ value[15:0]
  178. xor.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x6 @ -value[31:16] @ -value[15:0]
  179. xor.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x6 @ value[31:16] @ value[15:0]
  180. xor.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x6 @ -value[31:16] @ -value[15:0]
  181. uxor {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x6 @ value[31:16] @ value[15:0]
  182. uxor {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x6 @ -value[31:16] @ -value[15:0]
  183. uxor.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x6 @ value[31:16] @ value[15:0]
  184. uxor.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x6 @ -value[31:16] @ -value[15:0]
  185. uxor.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x6 @ value[31:16] @ value[15:0]
  186. uxor.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x6 @ -value[31:16] @ -value[15:0]
  187.  
  188. neg.w {src: reg} -> src[3:0] @ 4'0x0 @ 4'0x8 @ 4'0x6
  189. neg.s [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x6 @ value[31:16] @ value[15:0]
  190. neg.s [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x6 @ -value[31:16] @ -value[15:0]
  191. neg.w [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x6 @ value[31:16] @ value[15:0]
  192. neg.w [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x6 @ -value[31:16] @ -value[15:0]
  193. neg.b [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x6 @ value[31:16] @ value[15:0]
  194. neg.b [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x6 @ -value[31:16] @ -value[15:0]
  195.  
  196. shl.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0x7
  197. shl.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x5 @ 4'0xe @ 8'0x00 @ value[7:0]
  198. shl.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x7 @ value[15:0]
  199. shl.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x5 @ 4'0xd @ value[31:16] @ value[15:0]
  200. shl.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x7 @ value[31:16] @ value[15:0]
  201. shl.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x7 @ -value[31:16] @ -value[15:0]
  202. shl.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x7 @ value[31:16] @ value[15:0]
  203. shl.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x7 @ -value[31:16] @ -value[15:0]
  204. shl.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x7 @ value[31:16] @ value[15:0]
  205. shl.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x7 @ -value[31:16] @ -value[15:0]
  206.  
  207. shr.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x8 @ 4'0x7
  208. shr.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x6 @ 4'0xe @ 8'0x00 @ value[7:0]
  209. shr.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0x7 @ value[15:0]
  210. shr.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x6 @ 4'0xd @ value[31:16] @ value[15:0]
  211. shr.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x7 @ value[31:16] @ value[15:0]
  212. shr.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x7 @ -value[31:16] @ -value[15:0]
  213. shr.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x7 @ value[31:16] @ value[15:0]
  214. shr.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x7 @ -value[31:16] @ -value[15:0]
  215. shr.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x7 @ value[31:16] @ value[15:0]
  216. shr.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x7 @ -value[31:16] @ -value[15:0]
  217.  
  218. mul.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0x8
  219. mul.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x7 @ 4'0xe @ 8'0x00 @ value[7:0]
  220. mul.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x8 @ value[15:0]
  221. mul.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x7 @ 4'0xd @ value[31:16] @ value[15:0]
  222. mul.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x8 @ value[31:16] @ value[15:0]
  223. mul.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0x8 @ -value[31:16] @ -value[15:0]
  224. mul.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x8 @ value[31:16] @ value[15:0]
  225. mul.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0x8 @ -value[31:16] @ -value[15:0]
  226. mul.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x8 @ value[31:16] @ value[15:0]
  227. mul.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0x8 @ -value[31:16] @ -value[15:0]
  228. umul.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x8 @ value[31:16] @ value[15:0]
  229. umul.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0x8 @ -value[31:16] @ -value[15:0]
  230. umul.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x8 @ value[31:16] @ value[15:0]
  231. umul.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0x8 @ -value[31:16] @ -value[15:0]
  232. umul.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x8 @ value[31:16] @ value[15:0]
  233. umul.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0x8 @ -value[31:16] @ -value[15:0]
  234.  
  235. div.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x8 @ 4'0x8
  236. div.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x8 @ 4'0xe @ 8'0x00 @ value[7:0]
  237. div.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0x8 @ value[15:0]
  238. div.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x8 @ 4'0xd @ value[31:16] @ value[15:0]
  239. div.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x8 @ value[31:16] @ value[15:0]
  240. div.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0x8 @ -value[31:16] @ -value[15:0]
  241. div.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x8 @ value[31:16] @ value[15:0]
  242. div.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0x8 @ -value[31:16] @ -value[15:0]
  243. div.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x8 @ value[31:16] @ value[15:0]
  244. div.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0x8 @ -value[31:16] @ -value[15:0]
  245. udiv.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x8 @ value[31:16] @ value[15:0]
  246. udiv.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xe @ 4'0x8 @ -value[31:16] @ -value[15:0]
  247. udiv.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x8 @ value[31:16] @ value[15:0]
  248. udiv.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xd @ 4'0x8 @ -value[31:16] @ -value[15:0]
  249. udiv.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xf @ 4'0x8 @ value[31:16] @ value[15:0]
  250. udiv.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xf @ 4'0x8 @ -value[31:16] @ -value[15:0]
  251.  
  252. inc.w {dest: reg} -> 4'0x0 @ dest[3:0] @ 4'0x0 @ 4'0x9
  253. inc.s [{dest: reg}] -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0x9
  254. inc.s [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0x3 @ 4'0x9 @ value[31:16] @ value[15:0]
  255. inc.s [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0x3 @ 4'0x9 @ -value[31:16] @ -value[15:0]
  256. inc.w [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0x2 @ 4'0x9 @ value[31:16] @ value[15:0]
  257. inc.w [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0x2 @ 4'0x9 @ -value[31:16] @ -value[15:0]
  258. inc.b [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0x4 @ 4'0x9 @ value[31:16] @ value[15:0]
  259. inc.b [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0x4 @ 4'0x9 @ -value[31:16] @ -value[15:0]
  260. uinc.s [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0x6 @ 4'0x9 @ value[31:16] @ value[15:0]
  261. uinc.s [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0x6 @ 4'0x9 @ -value[31:16] @ -value[15:0]
  262. uinc.w [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0x5 @ 4'0x9 @ value[31:16] @ value[15:0]
  263. uinc.w [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0x5 @ 4'0x9 @ -value[31:16] @ -value[15:0]
  264. uinc.b [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0x7 @ 4'0x9 @ value[31:16] @ value[15:0]
  265. uinc.b [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0x7 @ 4'0x9 @ -value[31:16] @ -value[15:0]
  266.  
  267. dec.w {dest: reg} -> 4'0x0 @ dest[3:0] @ 4'0x8 @ 4'0x9
  268. dec.s [{dest: reg}] -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0x9
  269. dec.s [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0xb @ 4'0x9 @ value[31:16] @ value[15:0]
  270. dec.s [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0xb @ 4'0x9 @ -value[31:16] @ -value[15:0]
  271. dec.w [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0xa @ 4'0x9 @ value[31:16] @ value[15:0]
  272. dec.w [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0xa @ 4'0x9 @ -value[31:16] @ -value[15:0]
  273. dec.b [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0xc @ 4'0x9 @ value[31:16] @ value[15:0]
  274. dec.b [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0xc @ 4'0x9 @ -value[31:16] @ -value[15:0]
  275. udec.s [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0xe @ 4'0x9 @ value[31:16] @ value[15:0]
  276. udec.s [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0xe @ 4'0x9 @ -value[31:16] @ -value[15:0]
  277. udec.w [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0xd @ 4'0x9 @ value[31:16] @ value[15:0]
  278. udec.w [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0xd @ 4'0x9 @ -value[31:16] @ -value[15:0]
  279. udec.b [{dest: reg} + {value}] -> 4'0x0 @ dest[3:0] @ 4'0xf @ 4'0x9 @ value[31:16] @ value[15:0]
  280. udec.b [{dest: reg} - {value}] -> 4'0x0 @ dest[3:0] @ 4'0xf @ 4'0x9 @ -value[31:16] @ -value[15:0]
  281.  
  282. cmp.w {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x0 @ 4'0xa
  283. cmp.b {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0xe @ 8'0x00 @ value[7:0]
  284. cmp.s {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x1 @ 4'0xa @ value[15:0]
  285. cmp.w {dest: reg}, {value} -> 4'0x0 @ dest[3:0] @ 4'0x9 @ 4'0xd @ value[31:16] @ value[15:0]
  286. cmp.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0xa @ value[31:16] @ value[15:0]
  287. cmp.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0xa @ -value[31:16] @ -value[15:0]
  288. cmp.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0xa @ value[31:16] @ value[15:0]
  289. cmp.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0xa @ -value[31:16] @ -value[15:0]
  290. cmp.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0xa @ value[31:16] @ value[15:0]
  291. cmp.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0xa @ -value[31:16] @ -value[15:0]
  292. ucmp.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0xa @ value[31:16] @ value[15:0]
  293. ucmp.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x6 @ 4'0xa @ -value[31:16] @ -value[15:0]
  294. ucmp.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0xa @ value[31:16] @ value[15:0]
  295. ucmp.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0xa @ -value[31:16] @ -value[15:0]
  296. ucmp.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0xa @ value[31:16] @ value[15:0]
  297. ucmp.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0x7 @ 4'0xa @ -value[31:16] @ -value[15:0]
  298.  
  299. inv.w {dest: reg} -> 4'0x0 @ dest[3:0] @ 4'0x8 @ 4'0xa
  300. inv.s {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0xa @ value[31:16] @ value[15:0]
  301. inv.s {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xb @ 4'0xa @ -value[31:16] @ -value[15:0]
  302. inv.w {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0xa @ value[31:16] @ value[15:0]
  303. inv.w {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xa @ 4'0xa @ -value[31:16] @ -value[15:0]
  304. inv.b {dest: reg}, [{src: reg} + {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0xa @ value[31:16] @ value[15:0]
  305. inv.b {dest: reg}, [{src: reg} - {value}] -> src[3:0] @ dest[3:0] @ 4'0xc @ 4'0xa @ -value[31:16] @ -value[15:0]
  306.  
  307.  
  308. fadd {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x2 @ 4'0xb
  309. fsub {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x3 @ 4'0xb
  310. fmul {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x4 @ 4'0xb
  311. fdiv {dest: reg}, {src: reg} -> src[3:0] @ dest[3:0] @ 4'0x5 @ 4'0xb
  312.  
  313. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement