note 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. /* load instructions */
  2. LDSB MOVB x, R
  3. LDSBA MOVB x, R, asi
  4. LDSH MOVH x, R
  5. LDSHA MOVH x, R, asi
  6. LDUB MOVBU x, R
  7. LDUBA MOVBU x, R, asi
  8. LDUH MOVHU x, R
  9. LDUHA MOVHU x, R, asi
  10. LD MOVW x, R
  11. LDA MOVW x, R, asi
  12. LDD MOVD x, R
  13. LDDA MOVD x, R, asi
  14. note: x is (R+R) or offset(R)
  15. note: MOVD is a bad name, means double word
  16. /* load floating */
  17. LDF MOVF x, FR
  18. LDDF MOVD x, FR
  19. LDFSR MOVW x, FPSR
  20. note: MOVF maybe is MOVW
  21. /* load coprocessor */
  22. LDC MOVW x, CR
  23. LDDC MOVD x, CR
  24. LDCSR MOVW x, CPSR
  25. /* store */
  26. STB MOVB R, x
  27. STBA MOVB R, x, asi
  28. STH MOVH R, x
  29. STHA MOVH R, x, asi
  30. ST MOVW R, x
  31. STA MOVW R, x, asi
  32. STD MOVD R, x
  33. STDA MOVD R, x, asi
  34. /* store floating *
  35. STF MOVF FR, x
  36. STDF MOVD FR, x
  37. STFSR MOVW FPSR, x
  38. STDFQ MOVD FPQ, x
  39. note: STDFQ gok
  40. /* store coprocessor */
  41. STC MOVW CR, x
  42. STDC MOVD CR, x
  43. STCSR MOVW CPSR, x
  44. STDCQ MOVD CPQ, x
  45. /* atomic load/store */
  46. LDSTUB TAS x
  47. LDSTUBA TAS x, asi
  48. /* swap */
  49. SWAP SWAP R, x
  50. SWAPA SWAP R, x, asi
  51. /* calc */
  52. ADD ADDW y,R, R
  53. ADDcc ADDWT y,R, R
  54. ADDX ADDC y,R, R
  55. ADDXcc ADDCT y,R, R
  56. TADDcc
  57. TADDccTV
  58. SUB
  59. SUBcc
  60. SUBX
  61. SUBXcc
  62. TSUBcc
  63. TSUBccTV
  64. MULScc
  65. AND
  66. ANDcc
  67. ANDN
  68. ANDNcc
  69. OR
  70. ORcc
  71. ORN
  72. ORNcc
  73. XOR
  74. XORcc
  75. XNOR
  76. XNORcc
  77. SLL
  78. SRL
  79. SRA
  80. note: y is R or $simm13
  81. /* sethi */
  82. SETHI MOVW $c, R /* high 22 bits */
  83. /* save/restore (same as add) */
  84. SAVE SAVE y,R, R
  85. RESTORE RESTORE y,R, R
  86. /* branch on cc */
  87. BA
  88. BN
  89. BNE
  90. BE
  91. BG
  92. BLE
  93. BGE
  94. BL
  95. BGU
  96. BLEU
  97. BCC
  98. BCS
  99. BPOS
  100. BNEG
  101. BVC
  102. BVS
  103. note: annul bit?
  104. /* branch on fcc */
  105. FBA
  106. FBN
  107. FBU
  108. FBG
  109. FBUG
  110. FBL
  111. FBUL
  112. FBLG
  113. FBNE
  114. FBE
  115. FBUE
  116. FBGE
  117. FBUGE
  118. FBLE
  119. FBULE
  120. FBO
  121. note: annul bit?
  122. /* branch on coprocecssor cc */
  123. CBA
  124. CBN
  125. CB3
  126. CB2
  127. CB23
  128. CB1
  129. CB13
  130. CB12
  131. CB123
  132. CB0
  133. CB03
  134. CB02
  135. CB023
  136. CB01
  137. CB013
  138. CB012
  139. note: annul bit?
  140. /* call */
  141. CALL
  142. JAL x, R
  143. /* return from trap */
  144. RETT x
  145. /* trap on integer cc */
  146. TA
  147. TN
  148. TNE
  149. TE
  150. TG
  151. TLE
  152. TGE
  153. TL
  154. TGU
  155. TLEU
  156. TCC
  157. TCS
  158. TPOS
  159. TNEG
  160. TVC
  161. TVS
  162. /* read state register */
  163. RDY MOVW Y, R
  164. RDPSR MOVW PSR, R
  165. RDWIM MOVW WIM, R
  166. RDTBR MOVW TBR, R
  167. /* write state register */
  168. WRY MOVW R, Y
  169. WRPSR MOVW R, PSR
  170. WRWIM MOVW R, WIM
  171. WRTBR MOVW R, TBR
  172. /* unimplemented */
  173. UNIMP $C22
  174. /* instruction cache flush */
  175. IFLUSH x
  176. /* floating op */
  177. FiTOs
  178. FiTOd
  179. FiTOx
  180. FsTOi
  181. FdTOi
  182. FxTOi
  183. FsTOd
  184. FsTOx
  185. FdTOs
  186. FdTOx
  187. FxTOs
  188. FxTOd
  189. FMOVs
  190. FNEGs
  191. FABSs
  192. FSQRTs
  193. FSQRTd
  194. FSQRTx
  195. FADDs
  196. FADDd
  197. FADDx
  198. FSUBs
  199. FSUBd
  200. FSUBx
  201. FMULs
  202. FMULd
  203. FMULx
  204. FDIVs
  205. FDIVd
  206. FDIVx
  207. FCMPs
  208. FCMPd
  209. FCMPx
  210. FCMPEs
  211. FCMPEd
  212. FCMPEx
  213. /* coprocessor op */
  214. CPop1
  215. CPop2