Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BSR4K / XG3:
- * Repack of XG2RV Encoding Space to be compatible with RISC-V OP32 Encodings.
- ** Some mostly minor differences will exist.
- * Would exist in a separate operating mode from RV64GC.
- ** XG3RV uses the same encoding space as the RISC-V 'C' extension.
- * XG3RV will require a 32-bit instruction alignment.
- Original XG2/XG2RV Encoding:
- * NMOP-YwYY-nnnn-mmmm ZZZZ-Qnmo-oooo-XXXX (F0/F3/F9)
- * NMJP-YwYY-nnnn-mmmm ZZZZ-Qnmo-oooo-oooo (F1/F2)
- * NABP-YwYY-ZZZn-nnnn iiii-iiii-iiii-iiii (F8)
- * ABC1-111Y-jjjj-jjjj iiii-iiii-iiii-iiii (FE/FF)
- Repack:
- * XXXX-oooooo-mmmmmm-ZZZZ-nnnnnn-QY-YYPw (F0)
- * jiii-iiiiii-mmmmmm-ZZZZ-nnnnnn-QY-YYPw (F1/F2)
- * iiii-iiiiii-iiiiii-aZZZ-nnnnnn-bY-YYPw (F8)
- * iiii-iiiiii-iiiiii-aZZZ-jjjjjj-bY-YYPw (BRA)
- * iiii-iiiiii-iiiiii-jjjj-jjjjab-c1-1Y10 (FE/FF)
- Pw:
- * 00: OP?T (Conditional True)
- * 01: OP?F (Conditional False)
- * 10: OP
- * 11: RV OP32
- Where, YYY:
- 000: F0 (3R ops)
- 001: F1 (LD/ST Disp10)
- 010: F2 (3RI Imm10 Ops)
- 011: F3 (Reserved / User)
- 100: F8 (Imm16 ops)
- 101: F9 (Reserved)
- 110: FE (Jumbo Prefix)
- 111: FF (Jumbo Prefix)
- Exact repacking rules will depend on the encoding block.
- * F1/F2/F8: Will modify repacking such that immed bits are contiguous.
- * F3 and F9 will use same repacking as F0.
- Changes (from BJX2 / XG2):
- * FA/FB, EA/EB/EE/EF: Will be N/E.
- * WEX is N/E.
- * PrWEX is N/E.
- * Will relocate BRA/BSR to the F8 block.
- ** Will be relative to BasePC vs NextPC.
- ** This will be to match RISC-V behavior.
- Registers:
- * R0: ZR (Zero Register)
- * R1: LR (Link Register)
- * R2: SP (Stack Pointer)
- * R3: GP (Global Pointer)
- * R4: TP (Task Pointer)
- * R5..R31: GRPs
- * R32..R63: GRPs (Aliased to F0..F31)
- Can note that Rn notation will specify a single register being used, wheres Xn will specify a 128-bit register pair.
- R0 and R1 will be special if used as the base register of a Load/Store:
- * R0: PC
- * R1: Reserved
- 0000-oooooo-mmmmmm-0000-nnnnnn-Q0-0010
- * F0zz_0zzZ
- ** 0000-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 0000-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 0001-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 0001-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 0010-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 0010-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 0011-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 0011-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 0100-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.B Rn, (Rm, Ro) //SB
- ** 0100-oooooo-mmmmmm-0000-nnnnnn-10-0010 LEA.B (Rm, Ro), Rn
- ** 0101-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.W Rn, (Rm, Ro) //SH
- ** 0101-oooooo-mmmmmm-0000-nnnnnn-10-0010 LEA.W (Rm, Ro), Rn
- ** 0110-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.L Rn, (Rm, Ro) //SW
- ** 0110-oooooo-mmmmmm-0000-nnnnnn-10-0010 LEA.L (Rm, Ro), Rn
- ** 0111-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.Q Rn, (Rm, Ro) //SD
- ** 0111-oooooo-mmmmmm-0000-nnnnnn-10-0010 LEA.Q (Rm, Ro), Rn
- ** 1000-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 1000-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 1001-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 1001-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 1010-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 1010-oooooo-mmmmmm-0000-nnnnnn-10-0010 (N/A)
- ** 1011-oooooo-mmmmmm-0000-nnnnnn-00-0010 (N/A)
- ** 1011-oooooo-mmmmmm-0000-nnnnnn-10-0010 LDTEX (Rm, Ro), Rn
- ** 1100-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.B (Rm, Ro), Rn //LB
- ** 1100-oooooo-mmmmmm-0000-nnnnnn-10-0010 MOVU.B (Rm, Ro), Rn //LBU
- ** 1101-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.W (Rm, Ro), Rn //LH
- ** 1101-oooooo-mmmmmm-0000-nnnnnn-10-0010 MOVU.W (Rm, Ro), Rn //LHU
- ** 1110-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.L (Rm, Ro), Rn //LW
- ** 1110-oooooo-mmmmmm-0000-nnnnnn-10-0010 MOVU.L (Rm, Ro), Rn //LWU
- ** 1111-oooooo-mmmmmm-0000-nnnnnn-00-0010 MOV.Q (Rm, Ro), Rn //LD
- ** 1111-oooooo-mmmmmm-0000-nnnnnn-10-0010 LDTEX2
- * F0zz_1zzZ
- ** 0000-oooooo-mmmmmm-0001-nnnnnn-00-0010 ADD Rm, Ro, Rn
- ** 0000-oooooo-mmmmmm-0001-nnnnnn-10-0010 ADDX Xm, Xo, Xn
- ** 0001-oooooo-mmmmmm-0001-nnnnnn-00-0010 SUB Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0001-nnnnnn-10-0010 SUBX Xm, Xo, Xn
- ** 0010-oooooo-mmmmmm-0001-nnnnnn-00-0010 MULS.L Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0001-nnnnnn-10-0010 MULS.Q Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0001-nnnnnn-00-0010 MULU.L Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0001-nnnnnn-10-0010 MULU.Q Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0001-nnnnnn-00-0010 MIN Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0001-nnnnnn-10-0010 MAX Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0001-nnnnnn-00-0010 AND Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0001-nnnnnn-10-0010 ANDX Xm, Xo, Xn
- ** 0110-oooooo-mmmmmm-0001-nnnnnn-00-0010 OR Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0001-nnnnnn-10-0010 ORX Xm, Xo, Xn
- ** 0111-oooooo-mmmmmm-0001-nnnnnn-00-0010 XOR Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-0001-nnnnnn-10-0010 XORX Xm, Xo, Xn
- * F0zz_2zzz (More 3R Ops)
- ** 0000-oooooo-mmmmmm-0010-nnnnnn-00-0010 PADD.W Rm, Ro, Rn
- ** 0000-oooooo-mmmmmm-0010-nnnnnn-10-0010 PADD.L Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0010-nnnnnn-00-0010 PSUB.W Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0010-nnnnnn-10-0010 PSUB.L Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0010-nnnnnn-00-0010 SHAR.L Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0010-nnnnnn-10-0010 SHAR.Q Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0010-nnnnnn-00-0010 SHLR.L Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0010-nnnnnn-10-0010 SHLR.Q Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0010-nnnnnn-00-0010 PCSELT.W Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0010-nnnnnn-10-0010 PCSELT.L Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0010-nnnnnn-00-0010 PADD.F Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0010-nnnnnn-10-0010 PADDX.F Xm, Xo, Xn
- ** 0110-oooooo-mmmmmm-0010-nnnnnn-00-0010 PSUB.F Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0010-nnnnnn-10-0010 PSUBX.F Xm, Xo, Xn
- ** 0111-oooooo-mmmmmm-0010-nnnnnn-00-0010 PMUL.F Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-0010-nnnnnn-10-0010 PMULX.F Xm, Xo, Xn
- ** 1000-oooooo-mmmmmm-0010-nnnnnn-00-0010 MOVHD Rm, Ro, Rn
- ** 1000-oooooo-mmmmmm-0010-nnnnnn-10-0010 MOVLD Rm, Ro, Rn
- ** 1001-oooooo-mmmmmm-0010-nnnnnn-00-0010 MOVHLD Rm, Ro, Rn
- ** 1001-oooooo-mmmmmm-0010-nnnnnn-10-0010 MOVLHD Rm, Ro, Rn
- ** 1010-oooooo-mmmmmm-0010-nnnnnn-00-0010 PSCHEQ.W Rm, Ro, Rn
- ** 1010-oooooo-mmmmmm-0010-nnnnnn-10-0010 PSCHEQ.B Rm, Ro, Rn
- ** 1011-oooooo-mmmmmm-0010-nnnnnn-00-0010 PSCHNE.W Rm, Ro, Rn
- ** 1011-oooooo-mmmmmm-0010-nnnnnn-10-0010 PSCHNE.B Rm, Ro, Rn
- ** 1100-oooooo-mmmmmm-0010-nnnnnn-00-0010 BLKUTX1 Rm, Ro, Rn
- ** 1100-oooooo-mmmmmm-0010-nnnnnn-10-0010 BLKUTX2 Rm, Ro, Rn
- ** 1101-oooooo-mmmmmm-0010-nnnnnn-00-0010 PADD.H Rm, Ro, Rn
- ** 1101-oooooo-mmmmmm-0010-nnnnnn-10-0010 PADDX.D Xm, Xo, Xn
- ** 1110-oooooo-mmmmmm-0010-nnnnnn-00-0010 PSUB.H Rm, Ro, Rn
- ** 1110-oooooo-mmmmmm-0010-nnnnnn-10-0010 PSUBX.D Xm, Xo, Xn
- ** 1111-oooooo-mmmmmm-0010-nnnnnn-00-0010 PMUL.H Rm, Ro, Rn
- ** 1111-oooooo-mmmmmm-0010-nnnnnn-10-0010 PMULX.D Xm, Xo, Xn
- ** 0001-oooooo-mmmmmm-0011-nnnnnn-00-0010 MOVTT Rm, Ri, Rn
- ** 0001-oooooo-mmmmmm-0011-nnnnnn-10-0010 MOVTT Rm, Imm6u, Rn
- ** 0010-oooooo-mmmmmm-0011-nnnnnn-00-0010 ROTLQ Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0011-nnnnnn-10-0010 SHARX Xm, Ro, Xn
- ** 0011-oooooo-mmmmmm-0011-nnnnnn-00-0010 ROTRQ Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0011-nnnnnn-10-0010 SHLRX Xm, Ro, Xn
- ** 0100-oooooo-mmmmmm-0011-nnnnnn-00-0010 MULHS.Q Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0011-nnnnnn-10-0010 SHADX Xm, Ro, Xn
- ** 0101-oooooo-mmmmmm-0011-nnnnnn-00-0010 MULHU.Q Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0011-nnnnnn-10-0010 SHLDX Xm, Ro, Xn
- ** 0110-oooooo-mmmmmm-0011-nnnnnn-00-0010 ROTL.L Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0011-nnnnnn-10-0010 ROTLX Xm, Ro, Xn
- * F0nm_4eoz
- ** 0000-oooooo-mmmmmm-0100-nnnnnn-00-0010 MOV.X Xn, (Rm, Disp6s)
- ** 0000-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.B (Rm, Disp6s), Rn
- ** 0001-oooooo-mmmmmm-0100-nnnnnn-00-0010 (N/A)
- ** 0001-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.W (Rm, Disp6s), Rn
- ** 0010-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.S Rn, (Rm, Disp6s)
- ** 0010-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.L (Rm, Disp6s), Rn
- ** 0011-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.H Rn, (Rm, Disp6s)
- ** 0011-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.Q (Rm, Disp6s), Rn
- ** 0100-oooooo-mmmmmm-0100-nnnnnn-00-0010 MOV.X Xn, (Rm, Ro)
- ** 0100-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.B (Rm, Ro), Rn
- ** 0101-oooooo-mmmmmm-0100-nnnnnn-00-0010 (N/A)
- ** 0101-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.W (Rm, Ro), Rn
- ** 0110-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.S Rn, (Rm, Ro)
- ** 0110-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.L (Rm, Ro), Rn
- ** 0111-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.H Rn, (Rm, Ro)
- ** 0111-oooooo-mmmmmm-0100-nnnnnn-10-0010 LEAT.Q (Rm, Ro), Rn
- ** 1000-oooooo-mmmmmm-0100-nnnnnn-00-0010 MOV.X (Rm, Disp6s), Xn
- ** 1000-oooooo-mmmmmm-0100-nnnnnn-10-0010 -
- ** 1001-oooooo-mmmmmm-0100-nnnnnn-00-0010 (N/A)
- ** 1001-oooooo-mmmmmm-0100-nnnnnn-10-0010 -
- ** 1010-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.S (Rm, Disp6s), Rn
- ** 1010-oooooo-mmmmmm-0100-nnnnnn-10-0010 PMOV.F8 (Rm, Disp6s), Rn
- ** 1011-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.H (Rm, Disp6s), Rn
- ** 1011-oooooo-mmmmmm-0100-nnnnnn-10-0010 PMOV.2H (Rm, Disp6s), Rn
- ** 1100-oooooo-mmmmmm-0100-nnnnnn-00-0010 MOV.X (Rm, Ro), Xn
- ** 1100-oooooo-mmmmmm-0100-nnnnnn-10-0010 -
- ** 1101-oooooo-mmmmmm-0100-nnnnnn-00-0010 (N/A)
- ** 1101-oooooo-mmmmmm-0100-nnnnnn-10-0010 -
- ** 1110-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.S (Rm, Ro), Rn
- ** 1110-oooooo-mmmmmm-0100-nnnnnn-10-0010 PMOV.F8 (Rm, Ro), Rn
- ** 1111-oooooo-mmmmmm-0100-nnnnnn-00-0010 FMOV.H (Rm, Ro), Rn
- ** 1111-oooooo-mmmmmm-0100-nnnnnn-10-0010 PMOV.2H (Rm, Ro), Rn
- * F0zz_5zzz
- ** 0000-oooooo-mmmmmm-0101-nnnnnn-00-0010 CSELT Rm, Ro, Rn
- ** 0000-oooooo-mmmmmm-0101-nnnnnn-10-0010 (N/A)
- ** 0001-oooooo-mmmmmm-0101-nnnnnn-00-0010 PMULS.W Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0101-nnnnnn-10-0010 PMULU.W Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0101-nnnnnn-00-0010 DMULS.L Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0101-nnnnnn-10-0010 DMULS.Q Rm, Ro, Xn
- ** 0011-oooooo-mmmmmm-0101-nnnnnn-00-0010 DMULU.L Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0101-nnnnnn-10-0010 DMULU.Q Rm, Ro, Xn
- ** 0100-oooooo-mmmmmm-0101-nnnnnn-00-0010 SHAD.L Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0101-nnnnnn-10-0010 SHAD.Q Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0101-nnnnnn-00-0010 SHLD.L Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0101-nnnnnn-10-0010 SHLD.Q Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0101-nnnnnn-00-0010 PMULS.LW Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0101-nnnnnn-10-0010 PMULU.LW Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-0101-nnnnnn-00-0010 PMULS.HW Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-0101-nnnnnn-10-0010 PMULU.HW Rm, Ro, Rn
- ** 1000-oooooo-mmmmmm-0101-nnnnnn-00-0010 FADD Rm, Ro, Rn
- ** 1000-oooooo-mmmmmm-0101-nnnnnn-10-0010 FADDX Xm, Xo, Xn
- ** 1001-oooooo-mmmmmm-0101-nnnnnn-00-0010 FSUB Rm, Ro, Rn
- ** 1001-oooooo-mmmmmm-0101-nnnnnn-10-0010 FSUBX Xm, Xo, Xn
- ** 1010-oooooo-mmmmmm-0101-nnnnnn-00-0010 FMUL Rm, Ro, Rn
- ** 1010-oooooo-mmmmmm-0101-nnnnnn-10-0010 FMULX Xm, Xo, Xn
- ** 1011-oooooo-mmmmmm-0101-nnnnnn-00-0010 FMAC Rm, Ro, Rn
- ** 1011-oooooo-mmmmmm-0101-nnnnnn-10-0010 FMAC.X Xm, Xo, Xn
- ** 1100-oooooo-mmmmmm-0101-nnnnnn-00-0010 ADDS.L Rm, Ro, Rn
- ** 1100-oooooo-mmmmmm-0101-nnnnnn-10-0010 ADDU.L Rm, Ro, Rn
- ** 1101-oooooo-mmmmmm-0101-nnnnnn-00-0010 SUBS.L Rm, Ro, Rn
- ** 1101-oooooo-mmmmmm-0101-nnnnnn-10-0010 SUBU.L Rm, Ro, Rn
- ** 1110-oooooo-mmmmmm-0101-nnnnnn-00-0010 MULS.W Rm, Ro, Rn
- ** 1110-oooooo-mmmmmm-0101-nnnnnn-10-0010 MULS.W Rm, Imm6u, Rn
- ** 1111-oooooo-mmmmmm-0101-nnnnnn-00-0010 MULU.W Rm, Ro, Rn
- ** 1111-oooooo-mmmmmm-0101-nnnnnn-10-0010 MULU.W Rm, Imm6u, Rn
- * F0zz_6zzz
- ** 0000-oooooo-mmmmmm-0110-nnnnnn-00-0010 MACS.L Rm, Ro, Rn
- ** 0000-oooooo-mmmmmm-0110-nnnnnn-10-0010 MACS.L Rm, Imm6u, Rn
- ** 0001-oooooo-mmmmmm-0110-nnnnnn-00-0010 MACU.L Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0110-nnnnnn-10-0010 MACU.L Rm, Imm6u, Rn
- ** 0010-oooooo-mmmmmm-0110-nnnnnn-00-0010 DMACS.L Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0110-nnnnnn-10-0010 DMACS.L Rm, Imm6u, Rn
- ** 0011-oooooo-mmmmmm-0110-nnnnnn-00-0010 DMACU.L Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0110-nnnnnn-10-0010 DMACU.L Rm, Imm6u, Rn
- ** 0100-oooooo-mmmmmm-0110-nnnnnn-00-0010 DIVS.Q Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0110-nnnnnn-10-0010 DIVU.Q Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0110-nnnnnn-00-0010 MODS.Q Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0110-nnnnnn-10-0010 MODU.Q Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0110-nnnnnn-00-0010 FDIV Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0110-nnnnnn-10-0010 FDIVX Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-0110-nnnnnn-00-0010 FDIVA Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-0110-nnnnnn-10-0010 FDIVXA Rm, Ro, Rn
- ** 1000-oooooo-mmmmmm-0110-nnnnnn-00-0010 -
- ** 1000-oooooo-mmmmmm-0110-nnnnnn-10-0010 BLKUTX3H Xm, Ro, Rn
- ** 1001-oooooo-mmmmmm-0110-nnnnnn-00-0010 BLERP Rm, Ro, Rn
- ** 1001-oooooo-mmmmmm-0110-nnnnnn-10-0010 BLKUTX3L Xm, Ro, Rn
- ** 1010-oooooo-mmmmmm-0110-nnnnnn-00-0010 BLINTA Rm, Ro, Rn
- ** 1010-oooooo-mmmmmm-0110-nnnnnn-10-0010 BLINT Xm, Xo, Xn
- ** 1011-oooooo-mmmmmm-0110-nnnnnn-00-0010 BITSEL Rm, Ro, Rn
- ** 1011-oooooo-mmmmmm-0110-nnnnnn-10-0010 BITSELX Xm, Xo, Xn
- ** 1100-oooooo-mmmmmm-0110-nnnnnn-00-0010 BLKUAB1 Rm, Ro, Rn
- ** 1100-oooooo-mmmmmm-0110-nnnnnn-10-0010 BLKUAB2 Rm, Ro, Rn
- ** 1101-oooooo-mmmmmm-0110-nnnnnn-00-0010 FADDG Rm, Ro, Rn
- ** 1101-oooooo-mmmmmm-0110-nnnnnn-10-0010 FADD Rm, Imm6fp, Rn
- ** 1110-oooooo-mmmmmm-0110-nnnnnn-00-0010 FSUBG Rm, Ro, Rn
- ** 1110-oooooo-mmmmmm-0110-nnnnnn-10-0010 FSUB Rm, Imm6fp, Rn
- ** 1111-oooooo-mmmmmm-0110-nnnnnn-00-0010 FMULG Rm, Ro, Rn
- ** 1111-oooooo-mmmmmm-0110-nnnnnn-10-0010 FMUL Rm, Imm6fp, Rn
- * F0zz_7zzz
- ** 0000-oooooo-mmmmmm-0111-nnnnnn-00-0010 FADDA Rm, Ro, Rn
- ** 0000-oooooo-mmmmmm-0111-nnnnnn-10-0010 FMIN Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0111-nnnnnn-00-0010 FSUBA Rm, Ro, Rn
- ** 0001-oooooo-mmmmmm-0111-nnnnnn-10-0010 FMAX Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0111-nnnnnn-00-0010 FMULA Rm, Ro, Rn
- ** 0010-oooooo-mmmmmm-0111-nnnnnn-10-0010 BITNN Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0111-nnnnnn-00-0010 MOVHW Rm, Ro, Rn
- ** 0011-oooooo-mmmmmm-0111-nnnnnn-10-0010 MOVLW Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0111-nnnnnn-00-0010 DIVS.L Rm, Ro, Rn
- ** 0100-oooooo-mmmmmm-0111-nnnnnn-10-0010 DIVU.L Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0111-nnnnnn-00-0010 MODS.L Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-0111-nnnnnn-10-0010 MODU.L Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0111-nnnnnn-00-0010 RGB5CCENC Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-0111-nnnnnn-10-0010 PMUL.F8H Rm, Ro, Rn
- * F0zz_8zzz (XMOV Block; Only valid if XMOV is allowed)
- ** 0000-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.B Rn, (Xm, Disp6s)
- ** 0000-oooooo-mmmmmm-1000-nnnnnn-10-0010 XLEA.B (Xm, Disp6s), Xn
- ** 0001-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.W Rn, (Xm, Disp6s)
- ** 0001-oooooo-mmmmmm-1000-nnnnnn-10-0010 -
- ** 0010-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.L Rn, (Xm, Disp6s)
- ** 0010-oooooo-mmmmmm-1000-nnnnnn-10-0010 -
- ** 0011-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.Q Rn, (Xm, Disp6s)
- ** 0011-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOV.X Xn, (Xm, Disp6s)
- ** 0100-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.B Rn, (Xm, Ro)
- ** 0100-oooooo-mmmmmm-1000-nnnnnn-10-0010 XLEA.B (Xm, Ro), Xn
- ** 0101-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.W Rn, (Xm, Ro)
- ** 0101-oooooo-mmmmmm-1000-nnnnnn-10-0010 CAS.Q Rn, Ro, (Rm)
- ** 0110-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.L Rn, (Xm, Ro)
- ** 0110-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVTT Xm, Ro, Xn
- ** 0111-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.Q Rn, (Xm, Ro)
- ** 0111-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOV.X Xn, (Xm, Ro)
- ** 1000-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.B (Xm, Disp6s), Rn
- ** 1000-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVU.B (Xm, Disp6s), Rn
- ** 1001-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.W (Xm, Disp6s), Rn
- ** 1001-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVU.W (Xm, Disp6s), Rn
- ** 1010-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.L (Xm, Disp6s), Rn
- ** 1010-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVU.L (Xm, Disp6s), Rn
- ** 1011-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.Q (Xm, Disp6s), Rn
- ** 1011-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOV.X (Xm, Disp6s), Xn
- ** 1100-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.B (Xm, Ro), Rn //
- ** 1100-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVU.B (Xm, Ro), Rn //
- ** 1101-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.W (Xm, Ro), Rn //
- ** 1101-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVU.W (Xm, Ro), Rn //
- ** 1110-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.L (Xm, Ro), Rn //
- ** 1110-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOVU.L (Xm, Ro), Rn //
- ** 1111-oooooo-mmmmmm-1000-nnnnnn-00-0010 XMOV.Q (Xm, Ro), Rn //
- ** 1111-oooooo-mmmmmm-1000-nnnnnn-10-0010 XMOV.X (Xm, Ro), Xn //
- * F0nm_9eoZ
- ** 0000-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0000-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPEQ.Q Rm, Imm6s, Rn
- ** 0001-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0001-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPGT.Q Rm, Imm6s, Rn
- ** 0010-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0010-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPNE.Q Rm, Imm6s, Rn
- ** 0011-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0011-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPLT.Q Rm, Imm6s, Rn
- ** 0100-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0100-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPEQ.Q Rm, Ro, Rn
- ** 0101-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0101-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPGT.Q Rm, Ro, Rn
- ** 0110-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0110-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPNE.Q Rm, Ro, Rn
- ** 0111-oooooo-mmmmmm-1001-nnnnnn-00-0010 (N/A)
- ** 0111-oooooo-mmmmmm-1001-nnnnnn-10-0010 CMPGE.Q Rm, Ro, Rn
- If a CMPxx instruction is encoded with Rn=ZR, this will update SR.T based on the result, else it will put the result into Rn.
- * F1nm_Zeii (MOV Disp10s Block)
- ** iiiiiiiiii-mmmmmm-0000-nnnnnn-00-0110 MOV.B Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0000-nnnnnn-10-0110 LEA.B (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-0001-nnnnnn-00-0110 MOV.W Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0001-nnnnnn-10-0110 LEA.W (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-0010-nnnnnn-00-0110 MOV.L Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0010-nnnnnn-10-0110 LEA.L (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-0011-nnnnnn-00-0110 MOV.Q Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0011-nnnnnn-10-0110 LEA.Q (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-0100-nnnnnn-00-0110 FMOV.S Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0100-nnnnnn-10-0110 FMOV.H Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0101-nnnnnn-00-0110 (N/A)
- ** iiiiiiiiii-mmmmmm-0101-nnnnnn-10-0110 MOV.X Rn, (Rm, Disp10s)
- ** iiiiiiiiii-mmmmmm-0110-nnnnnn-00-0110 FMOV.S (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-0110-nnnnnn-10-0110 FMOV.H (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-0111-nnnnnn-00-0110 (N/A)
- ** iiiiiiiiii-mmmmmm-0111-nnnnnn-10-0110 MOV.X (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1000-nnnnnn-00-0110 MOV.B (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1000-nnnnnn-10-0110 MOVU.B (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1001-nnnnnn-00-0110 MOV.W (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1001-nnnnnn-10-0110 MOVU.W (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1010-nnnnnn-00-0110 MOV.L (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1010-nnnnnn-10-0110 MOVU.L (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1011-nnnnnn-00-0110 MOV.Q (Rm, Disp10s), Rn
- ** iiiiiiiiii-mmmmmm-1011-nnnnnn-10-0110 -
- ** F1zz_Czzz
- *** iiiiiiiiii-mmmmmm-1100-nnnnnn-00-0110 ? BTST Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1100-nnnnnn-10-0110 ? BNTST Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1101-nnnnnn-00-0110 ? BGT Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1101-nnnnnn-10-0110 ? BLE Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1110-nnnnnn-00-0110 ? BGTU Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1110-nnnnnn-10-0110 ? BLEU Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1111-nnnnnn-00-0110 ? BEQ Rm, Rn, Disp10s
- *** iiiiiiiiii-mmmmmm-1111-nnnnnn-10-0110 ? BNE Rm, Rn, Disp10s
- For the relative branch cases, these will be modified to be relative to BasePC and use a 4 byte scale (+/- 2K).
- * BTST, Branch if (Rm AND Rn)
- * BNTST, Branch if !(Rm AND Rn)
- * F2nm_Zgjj
- * iiiiiiiiii-mmmmmm-0000-nnnnnn-00-1010 ADD Rm, Imm10u, Rn
- * iiiiiiiiii-mmmmmm-0001-nnnnnn-00-1010 ADD Rm, Imm10n, Rn
- * iiiiiiiiii-mmmmmm-0010-nnnnnn-00-1010 MULS.L Rm, Imm10u, Rn
- * iiiiiiiiii-mmmmmm-0010-nnnnnn-10-1010 MULU.L Rm, Imm10u, Rn
- * iiiiiiiiii-mmmmmm-0011-nnnnnn-00-1010 ADDS.L Rm, Imm10u, Rn
- * iiiiiiiiii-mmmmmm-0011-nnnnnn-10-1010 ADDU.L Rm, Imm10u, Rn
- * iiiiiiiiii-mmmmmm-0100-nnnnnn-00-1010 ADDS.L Rm, Imm10n, Rn
- * iiiiiiiiii-mmmmmm-0100-nnnnnn-10-1010 ADDU.L Rm, Imm10n, Rn
- * iiiiiiiiii-mmmmmm-0101-nnnnnn-00-1010 AND Rm, Imm10us, Rn
- * iiiiiiiiii-mmmmmm-0101-nnnnnn-10-1010 RSUB Rm, Imm10us, Rn
- * iiiiiiiiii-mmmmmm-0110-nnnnnn-00-1010 OR Rm, Imm10u, Rn
- * 00iiiiiiii-mmmmmm-0110-nnnnnn-10-1010 SHAD.X Xm, Imm8s, Xn
- * iiiiiiiiii-mmmmmm-0111-nnnnnn-00-1010 XOR Rm, Imm10u, Rn
- * 00iiiiiiii-mmmmmm-0111-nnnnnn-10-1010 SHLD.X Xm, Imm8s, Xn
- * 00iiiiiiii-mmmmmm-1000-nnnnnn-00-1010 SHAD.L Rm, Imm8s, Rn
- * 00iiiiiiii-mmmmmm-1000-nnnnnn-10-1010 SHAD.Q Rm, Imm8s, Rn
- * 01iiiiiiii-mmmmmm-1000-nnnnnn-00-1010 PSHUF.B Rm, Imm8u, Rn
- * 01iiiiiiii-mmmmmm-1000-nnnnnn-10-1010 PSHUF.W Rm, Imm8u, Rn
- * 00iiiiiiii-mmmmmm-1001-nnnnnn-00-1010 SHLD.L Rm, Imm8s, Rn
- * 00iiiiiiii-mmmmmm-1001-nnnnnn-10-1010 SHLD.Q Rm, Imm8s, Rn
- * 01iiiiiiii-mmmmmm-1001-nnnnnn-00-1010 PCONV Rm, Imm8u, Rn
- * 01iiiiiiii-mmmmmm-1001-nnnnnn-10-1010 PCONVX Rm, Imm8u, Rn
- * F2nz_Aejj (2RI Space)
- * F2nz_Bejj (2RI Space)
- * F2nz_Cfjj
- * F2nz_Dfjj
- * F2nz_Efjj
- * F2nz_Ffjj
- For now, the 2RI encodings are not being carried over.
- Many were functionally redundant in this case, or were optimization cases.
- * F8Zn_iiii
- ** iiii-iiiiii-iiiiii-0000-nnnnnn-01-0010 LDIZ Imm16u, Rn
- ** iiii-iiiiii-iiiiii-0001-nnnnnn-01-0010 LDIN Imm16n, Rn
- ** iiii-iiiiii-iiiiii-0010-nnnnnn-01-0010 ADD Imm16s, Rn
- ** iiii-iiiiii-iiiiii-0011-nnnnnn-01-0010 SHORI Imm16u, Rn
- ** iiii-iiiiii-iiiiii-0100-nnnnnn-01-0010 FLDCH Imm16u, Rn
- ** iiii-iiiiii-iiiiii-0101-nnnnnn-01-0010 LEA.Q (GBR, Disp16u), Rn
- ** iiii-iiiiii-iiiiii-0110-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-0111-jjjjjj-k1-00Pw BRA (PC, Disp23s)
- ** iiii-iiiiii-iiiiii-1000-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1001-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1010-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1011-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1100-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1101-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1110-nnnnnn-01-0010 -
- ** iiii-iiiiii-iiiiii-1111-jjjjjj-k1-00Pw BSR (PC, Disp23s)
- BRA/BSR:
- * i field gives (17: 2)
- * j field gives (23:18)
- * k field gives (33:24), as a sign-extension bit
- The reason for changing the BRA/BSR encoding:
- * The F0 block encoding would be very ugly in the repacked form.
- * In RISC-V terms, BRA will be a "JAL X0, Disp" and BSR "JAL X1, Disp".
- * Branh reach will be +/- 16MB
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement