123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- /* load instructions */
- LDSB MOVB x, R
- LDSBA MOVB x, R, asi
- LDSH MOVH x, R
- LDSHA MOVH x, R, asi
- LDUB MOVBU x, R
- LDUBA MOVBU x, R, asi
- LDUH MOVHU x, R
- LDUHA MOVHU x, R, asi
- LD MOVW x, R
- LDA MOVW x, R, asi
- LDD MOVD x, R
- LDDA MOVD x, R, asi
- note: x is (R+R) or offset(R)
- note: MOVD is a bad name, means double word
- /* load floating */
- LDF MOVF x, FR
- LDDF MOVD x, FR
- LDFSR MOVW x, FPSR
- note: MOVF maybe is MOVW
- /* load coprocessor */
- LDC MOVW x, CR
- LDDC MOVD x, CR
- LDCSR MOVW x, CPSR
- /* store */
- STB MOVB R, x
- STBA MOVB R, x, asi
- STH MOVH R, x
- STHA MOVH R, x, asi
- ST MOVW R, x
- STA MOVW R, x, asi
- STD MOVD R, x
- STDA MOVD R, x, asi
- /* store floating *
- STF MOVF FR, x
- STDF MOVD FR, x
- STFSR MOVW FPSR, x
- STDFQ MOVD FPQ, x
- note: STDFQ gok
- /* store coprocessor */
- STC MOVW CR, x
- STDC MOVD CR, x
- STCSR MOVW CPSR, x
- STDCQ MOVD CPQ, x
- /* atomic load/store */
- LDSTUB TAS x
- LDSTUBA TAS x, asi
- /* swap */
- SWAP SWAP R, x
- SWAPA SWAP R, x, asi
- /* calc */
- ADD ADDW y,R, R
- ADDcc ADDWT y,R, R
- ADDX ADDC y,R, R
- ADDXcc ADDCT y,R, R
- TADDcc
- TADDccTV
- SUB
- SUBcc
- SUBX
- SUBXcc
- TSUBcc
- TSUBccTV
- MULScc
- AND
- ANDcc
- ANDN
- ANDNcc
- OR
- ORcc
- ORN
- ORNcc
- XOR
- XORcc
- XNOR
- XNORcc
- SLL
- SRL
- SRA
- note: y is R or $simm13
- /* sethi */
- SETHI MOVW $c, R /* high 22 bits */
- /* save/restore (same as add) */
- SAVE SAVE y,R, R
- RESTORE RESTORE y,R, R
- /* branch on cc */
- BA
- BN
- BNE
- BE
- BG
- BLE
- BGE
- BL
- BGU
- BLEU
- BCC
- BCS
- BPOS
- BNEG
- BVC
- BVS
- note: annul bit?
- /* branch on fcc */
- FBA
- FBN
- FBU
- FBG
- FBUG
- FBL
- FBUL
- FBLG
- FBNE
- FBE
- FBUE
- FBGE
- FBUGE
- FBLE
- FBULE
- FBO
- note: annul bit?
- /* branch on coprocecssor cc */
- CBA
- CBN
- CB3
- CB2
- CB23
- CB1
- CB13
- CB12
- CB123
- CB0
- CB03
- CB02
- CB023
- CB01
- CB013
- CB012
- note: annul bit?
- /* call */
- CALL
- JAL x, R
- /* return from trap */
- RETT x
- /* trap on integer cc */
- TA
- TN
- TNE
- TE
- TG
- TLE
- TGE
- TL
- TGU
- TLEU
- TCC
- TCS
- TPOS
- TNEG
- TVC
- TVS
- /* read state register */
- RDY MOVW Y, R
- RDPSR MOVW PSR, R
- RDWIM MOVW WIM, R
- RDTBR MOVW TBR, R
- /* write state register */
- WRY MOVW R, Y
- WRPSR MOVW R, PSR
- WRWIM MOVW R, WIM
- WRTBR MOVW R, TBR
- /* unimplemented */
- UNIMP $C22
- /* instruction cache flush */
- IFLUSH x
- /* floating op */
- FiTOs
- FiTOd
- FiTOx
- FsTOi
- FdTOi
- FxTOi
- FsTOd
- FsTOx
- FdTOs
- FdTOx
- FxTOs
- FxTOd
- FMOVs
- FNEGs
- FABSs
- FSQRTs
- FSQRTd
- FSQRTx
- FADDs
- FADDd
- FADDx
- FSUBs
- FSUBd
- FSUBx
- FMULs
- FMULd
- FMULx
- FDIVs
- FDIVd
- FDIVx
- FCMPs
- FCMPd
- FCMPx
- FCMPEs
- FCMPEd
- FCMPEx
- /* coprocessor op */
- CPop1
- CPop2
|