Advertisement
Guest User

arm_test.asm

a guest
Apr 17th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. code64
  2. processor cpu64_v8 +cpu64_fp +CPU64_SIMD
  3. format binary as 'img'
  4.  
  5. org $0000
  6.  
  7. ; N64 MIPS 4300 CPU Scalar Instructions (CPU):
  8. ;-------------------------------
  9. ; ARM64 CPU        | MIPS64 CPU
  10. ;-------------------------------
  11. nop                ; nop
  12. smc $EEDD          ; syscall $FEEDD
  13. brk $EEDD          ; break $FEEDD
  14. nop                ; sync
  15.  
  16. lsl w0,w30,1       ; sll r1,ra,1
  17. lsr w0,w30,1       ; srl r1,ra,1
  18. asr w0,w30,1       ; sra r1,ra,1
  19.  
  20. lslv w0,w30,w1     ; sllv r1,ra,r2
  21. lsrv w0,w30,w1     ; srlv r1,ra,r2
  22. asrv w0,w30,w1     ; srav r1,ra,r2
  23.  
  24. nop                ; mfhi r1 ** Previous MUL/DIV Instruction Encodes lo/hi **
  25. nop                ; mthi r1 ** Check **
  26. nop                ; mflo r1 ** Previous MUL/DIV Instruction Encodes lo/hi **
  27. nop                ; mtlo r1 ** Check **
  28.  
  29. lslv x0,x30,x1     ; dsllv r1,ra,r2
  30. lsrv x0,x30,x1     ; dsrlv r1,ra,r2
  31. asrv x0,x30,x1     ; dsrav r1,ra,r2
  32.  
  33. lsl x0,x30,1       ; dsll r1,ra,1
  34. lsr x0,x30,1       ; dsrl r1,ra,1
  35. asr x0,x30,1       ; dsra r1,ra,1
  36. lsl x0,x30,33      ; dsll32 r1,ra,1
  37. lsr x0,x30,33      ; dsrl32 r1,ra,1
  38. asr x0,x30,33      ; dsra32 r1,ra,1
  39.  
  40. madd w0,w0,w30,wzr ; mult r1,ra
  41. madd w0,w0,w30,wzr ; multu r1,ra ** Check **
  42. sdiv w0,w0,w30     ; div r1,ra
  43. udiv w0,w0,w30     ; divu r1,ra
  44. madd x0,x0,x30,xzr ; dmult r1,ra
  45. madd x0,x0,x30,xzr ; dmultu r1,ra ** Check **
  46. sdiv x0,x0,x30     ; ddiv r1,ra
  47. udiv x0,x0,x30     ; ddivu r1,ra
  48.  
  49. add w0,w30,w1      ; add r1,ra,r2
  50. add w0,w30,w1      ; addu r1,ra,r2 ** Check **
  51. sub w0,w30,w1      ; sub r1,ra,r2
  52. sub w0,w30,w1      ; subu r1,ra,r2 ** Check **
  53. and w0,w30,w1      ; and r1,ra,r2
  54. orr w0,w30,w1      ; or r1,ra,r2
  55. eor w0,w30,w1      ; xor r1,ra,r2
  56. orn w0,w30,w1      ; nor r1,ra,r2
  57.  
  58. nop                ; slt r1,ra,r2 ** Check **
  59. nop                ; sltu r1,ra,r2 ** Check **
  60. add x0,x30,x1      ; dadd r1,ra,r2
  61. add x0,x30,x1      ; daddu r1,ra,r2 ** Check **
  62. sub x0,x30,x1      ; dsub r1,ra,r2
  63. sub x0,x30,x1      ; dsubu r1,ra,r2 ** Check **
  64.  
  65. nop                ; tge r1,ra,$3FF ** Trap Exception **
  66. nop                ; tge r1,$3FF
  67. nop                ; tgeu r1,ra,$3FF
  68. nop                ; tgeu r1,$3FF
  69. nop                ; tlt r1,ra,$3FF
  70. nop                ; tlt r1,$3FF
  71. nop                ; tltu r1,ra,$3FF
  72. nop                ; tltu r1,$3FF
  73. nop                ; teq r1,ra,$3FF
  74. nop                ; teq r1,$3FF
  75. nop                ; tne r1,ra,$3FF
  76. BLTZ:
  77. nop                ; tne r1,$3FF
  78.  
  79. BGEZ:              ; ** Branch **
  80. b.lt BLTZ          ; bltz r1,BLTZ
  81. BLTZL:
  82. b.ge BGEZ          ; bgez r1,BGEZ
  83. BGEZL:
  84. b.lt BLTZL         ; bltzl r1,BLTZL
  85. BLTZAL:
  86. b.ge BGEZL         ; bgezl r1,BGEZL
  87. BGEZAL:
  88. b.lt BLTZAL        ; bltzal r1,BLTZAL
  89. BLTZALL:
  90. b.ge BGEZAL        ; bgezal r1,BGEZAL
  91. BGEZALL:
  92. b.lt BLTZALL       ; bltzall r1,BLTZALL
  93. BLEZ:
  94. b.ge BGEZALL       ; bgezall r1,BGEZALL
  95. BGTZ:
  96. b.le BLEZ          ; blez r1,BLEZ
  97. BLEZL:
  98. b.gt BGTZ          ; bgtz r1,BGTZ
  99. BGTZL:
  100. b.le BLEZL         ; blezl r1,BLEZL
  101. BEQTEST:
  102. b.gt BGTZL         ; bgtzl r1,BGTZL
  103.  
  104. BNETEST:
  105. cbz w0,BEQTEST     ; beq r1,r1,BEQTEST
  106. BEQL:
  107. cbnz w0,BNETEST    ; bne r1,r1,BNETEST
  108. BNEL:
  109. cbz w0,BEQL        ; beql r1,r1,BEQL
  110. cbnz w0,BNEL       ; bnel r1,r1,BNEL
  111.  
  112. J:                 ; ** Jump **
  113. b J                ; j J
  114. JAL:
  115. bl JAL             ; jal JAL
  116.  
  117. br x0              ; jr r1
  118. blr x0             ; jalr r1
  119. blr x0             ; jalr ra,r1 ** Check **
  120.  
  121. nop                ; tgei r1,$FFEE ** Trap Exception **
  122. nop                ; tgeiu r1,$FFEE
  123. nop                ; tlti r1,$FFEE
  124. nop                ; tltiu r1,$FFEE
  125. nop                ; teqi r1,$FFEE
  126. nop                ; tnei r1,$FFEE
  127.  
  128. add w0,w30,-18     ; addi r1,ra,$FFEE
  129. add w0,w30,-18     ; addiu r1,ra,$FFEE ** Check **
  130. nop                ; slti r1,ra,$FFEE ** Check **
  131. nop                ; sltiu r1,ra,$FFEE ** Check **
  132. and w0,w30,$FFE    ; andi r1,ra,$FFEE ** Check **
  133. orr w0,w30,$FFE    ; ori r1,ra,$FFEE ** Check **
  134. eor w0,w30,$FFE    ; xori r1,ra,$FFEE ** Check **
  135.  
  136. add x0,x30,-18     ; daddi r1,ra,$FFEE
  137. BC0F:
  138. add x0,x30,-18     ; daddiu r1,ra,$FFEE ** Check **
  139.  
  140. ; N64 MIPS 4300 CPU Branch On Coprocessor Instructions (COPz):
  141. ;----------------------------
  142. ; ARM64 COP     | MIPS64 COP
  143. ;----------------------------
  144. ;BC1F:
  145. ;               ; bc0f BC0F
  146. ;BC0T:
  147. ;               ; bc1f BC1F
  148. ;BC1T:
  149. ;               ; bc0t BC0T
  150. ;BC0FL:
  151. ;               ; bc1t BC1T
  152. ;BC1FL:
  153. ;               ; bc0fl BC0FL
  154. ;BC0TL:
  155. ;               ; bc1fl BC1FL
  156. ;BC1TL:
  157. ;               ; bc0tl BC0TL
  158. ;               ; bc1tl BC1TL
  159.  
  160. ; ARM64 CPU Scalar Load Instructions (CPU):
  161. ;---------------------------------
  162. ; ARM64 CPU          | MIPS64 CPU
  163. ;---------------------------------
  164. movk w0,$FFEE,lsl 16 ; lui r1,$FFEE
  165. ;                    ; ldl r1,$FFEE(ra)
  166. ;                    ; ldr r1,$FFEE(ra)
  167. ldrsb w0,[x30-18]    ; lb r1,$FFEE(ra)
  168. ldrsh w0,[x30-18]    ; lh r1,$FFEE(ra)
  169. ;                    ; lwl r1,$FFEE(ra)
  170. ldr w0,[x30-18]      ; lw r1,$FFEE(ra)
  171. ldrb w0,[x30-18]     ; lbu r1,$FFEE(ra)
  172. ldrh w0,[x30-18]     ; lhu r1,$FFEE(ra)
  173. ;                    ; lwr r1,$FFEE(ra)
  174. ;                    ; lwu r1,$FFEE(ra)
  175. ;                    ; ll r1,$FFEE(ra)
  176. ;                    ; lwc1 f1,$FFEE(ra)
  177. ;                    ; lld r1,$FFEE(ra)
  178. ;                    ; ldc1 f1,$FFEE(ra)
  179. ldr x0,[x30-18]      ; ld r1,$FFEE(ra)
  180.  
  181. ; ARM64 CPU Scalar Store Instructions (CPU):
  182. ;-----------------------------
  183. ; ARM64 CPU      | MIPS64 CPU
  184. ;-----------------------------
  185. strb w0,[x30-18] ; sb r1,$FFEE(ra)
  186. strh w0,[x30-18] ; sh r1,$FFEE(ra)
  187. ;                ; swl r1,$FFEE(ra)
  188. str w0,[x30-18]  ; sw r1,$FFEE(ra)
  189. ;                ; sdl r1,$FFEE(ra)
  190. ;                ; sdr r1,$FFEE(ra)
  191. ;                ; swr r1,$FFEE(ra)
  192. ;                ; sc r1,$FFEE(ra)
  193. ;                ; swc1 f1,$FFEE(ra)
  194. ;                ; scd r1,$FFEE(ra)
  195. ;                ; sdc1 f1,$FFEE(ra)
  196. str x0,[x30-18]  ; sd r1,$FFEE(ra)
  197.  
  198. ;                ; cache r1,$FFEE(ra)
  199.  
  200. ; ARM64 Control Instructions (COP0):
  201. ;-----------------------------
  202. ; ARM64 COP      | MIPS64 COP
  203. ;-----------------------------
  204. ;                ; mfc0 r1,ra
  205. ;                ; dmfc0 r1,ra
  206. ;                ; mtc0 r1,ra
  207. ;                ; dmtc0 r1,ra
  208.  
  209. ; ARM64 Control Instructions (COP1):
  210. ;-----------------------------
  211. ; ARM64 COP      | MIPS64 COP
  212. ;-----------------------------
  213. ;                ; mfc1 r1,f31
  214. ;                ; dmfc1 r1,f31
  215. ;                ; cfc1 r1,f31
  216. ;                ; mtc1 r1,f31
  217. ;                ; dmtc1 r1,f31
  218. ;                ; ctc1 r1,f31
  219.  
  220. ;                ; tlbr
  221. ;                ; tlbwi
  222. ;                ; tlbwr
  223. ;                ; tlbp
  224. ;                ; rfe
  225. ;                ; eret
  226.  
  227. ;                ; cop0 $1FFEEDD
  228. ;                ; cop1 $1FFEEDD
  229.  
  230. ; ARM64 Floating Point Unit (FPU) Instructions:
  231. ;---------------------------
  232. ; ARM64 FPU    | MIPS64 FPU
  233. ;---------------------------
  234. fadd s1,s31,s2 ; add.s f1,f31,f2
  235. fadd d1,d31,d2 ; add.d f1,f31,f2
  236. fsub s1,s31,s2 ; sub.s f1,f31,f2
  237. fsub d1,d31,d2 ; sub.d f1,f31,f2
  238. fmul s1,s31,s2 ; mul.s f1,f31,f2
  239. fmul d1,d31,d2 ; mul.d f1,f31,f2
  240. fdiv s1,s31,s2 ; div.s f1,f31,f2
  241. fdiv d1,d31,d2 ; div.d f1,f31,f2
  242.  
  243. fsqrt s1,s31   ; sqrt.s f1,f31
  244. fsqrt d1,d31   ; sqrt.d f1,f31
  245. fabs s1,s31    ; abs.s f1,f31
  246. fabs d1,d31    ; abs.d f1,f31
  247. fmov s1,s31    ; mov.s f1,f31
  248. fmov d1,d31    ; mov.d f1,f31
  249. fneg s1,s31    ; neg.s f1,f31
  250. fneg d1,d31    ; neg.d f1,f31
  251. ;              ; round.l.s f1,f31
  252. ;              ; round.l.d f1,f31
  253. ;              ; trunc.l.s f1,f31
  254. ;              ; trunc.l.d f1,f31
  255. ;              ; ceil.l.s f1,f31
  256. ;              ; ceil.l.d f1,f31
  257. ;              ; floor.l.s f1,f31
  258. ;              ; floor.l.d f1,f31
  259. ;              ; round.w.s f1,f31
  260. ;              ; round.w.d f1,f31
  261. ;              ; trunc.w.s f1,f31
  262. ;              ; trunc.w.d f1,f31
  263. ;              ; ceil.w.s f1,f31
  264. ;              ; ceil.w.d f1,f31
  265. ;              ; floor.w.s f1,f31
  266. ;              ; floor.w.d f1,f31
  267. fcvt d1,s31    ; cvt.s.d f1,f31
  268. fcvtzs w1,s31  ; cvt.s.w f1,f31
  269. fcvtzs x1,s31  ; cvt.s.l f1,f31
  270. fcvt s1,d31    ; cvt.d.s f1,f31
  271. fcvtzs w1,d31  ; cvt.d.w f1,f31
  272. fcvtzs x1,d31  ; cvt.d.l f1,f31
  273. scvtf s1,w30   ; cvt.w.s f1,f31
  274. scvtf d1,w30   ; cvt.w.d f1,f31
  275. scvtf s1,x30   ; cvt.l.s f1,f31
  276. scvtf d1,x30   ; cvt.l.d f1,f31
  277.  
  278. ;              ; c.f.s f1,f31
  279. ;              ; c.f.d f1,f31
  280. ;              ; c.un.s f1,f31
  281. ;              ; c.un.d f1,f31
  282. ;              ; c.eq.s f1,f31
  283. ;              ; c.eq.d f1,f31
  284. ;              ; c.ueq.s f1,f31
  285. ;              ; c.ueq.d f1,f31
  286. ;              ; c.olt.s f1,f31
  287. ;              ; c.olt.d f1,f31
  288. ;              ; c.ult.s f1,f31
  289. ;              ; c.ult.d f1,f31
  290. ;              ; c.ole.s f1,f31
  291. ;              ; c.ole.d f1,f31
  292. ;              ; c.ule.s f1,f31
  293. ;              ; c.ule.d f1,f31
  294. ;              ; c.sf.s f1,f31
  295. ;              ; c.sf.d f1,f31
  296. ;              ; c.ngle.s f1,f31
  297. ;              ; c.ngle.d f1,f31
  298. ;              ; c.seq.s f1,f31
  299. ;              ; c.seq.d f1,f31
  300. ;              ; c.ngl.s f1,f31
  301. ;              ; c.ngl.d f1,f31
  302. ;              ; c.lt.s f1,f31
  303. ;              ; c.lt.d f1,f31
  304. ;              ; c.nge.s f1,f31
  305. ;              ; c.nge.d f1,f31
  306. ;              ; c.le.s f1,f31
  307. ;              ; c.le.d f1,f31
  308. ;              ; c.ngt.s f1,f31
  309. ;              ; c.ngt.d f1,f31
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement