qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

msa.decode (14091B)


      1 # MIPS SIMD Architecture Module instruction set
      2 #
      3 # Copyright (C) 2020  Philippe Mathieu-Daudé
      4 #
      5 # SPDX-License-Identifier: LGPL-2.1-or-later
      6 #
      7 # Reference:
      8 #       MIPS Architecture for Programmers Volume IV-j
      9 #       - The MIPS32 SIMD Architecture Module, Revision 1.12
     10 #         (Document Number: MD00866-2B-MSA32-AFP-01.12)
     11 #       - The MIPS64 SIMD Architecture Module, Revision 1.12
     12 #         (Document Number: MD00868-1D-MSA64-AFP-01.12)
     13 
     14 &r                  rs rt rd sa
     15 
     16 &msa_r              df  wd ws wt
     17 &msa_bz             df        wt sa
     18 &msa_ldi            df  wd       sa
     19 &msa_i              df  wd ws    sa
     20 &msa_bit            df  wd ws       m
     21 &msa_elm_df         df  wd ws       n
     22 &msa_elm                wd ws
     23 
     24 %elm_df             16:6 !function=elm_df
     25 %elm_n              16:6 !function=elm_n
     26 %bit_df             16:7 !function=bit_df
     27 %bit_m              16:7 !function=bit_m
     28 %2r_df_w            16:1 !function=plus_2
     29 %3r_df_h            21:1 !function=plus_1
     30 %3r_df_w            21:1 !function=plus_2
     31 
     32 @lsa                ...... rs:5 rt:5 rd:5 ... sa:2 ......   &r
     33 @ldst               ...... sa:s10 ws:5 wd:5 .... df:2       &msa_i
     34 @bz_v               ...... ... ..    wt:5 sa:16             &msa_bz df=3
     35 @bz                 ...... ...  df:2 wt:5 sa:16             &msa_bz
     36 @elm_df             ...... .... ......    ws:5 wd:5 ......  &msa_elm_df df=%elm_df n=%elm_n
     37 @elm                ...... ..........     ws:5 wd:5 ......  &msa_elm
     38 @vec                ...... .....     wt:5 ws:5 wd:5 ......  &msa_r df=0
     39 @2r                 ...... ........  df:2 ws:5 wd:5 ......  &msa_r wt=0
     40 @2rf                ...... ......... .    ws:5 wd:5 ......  &msa_r wt=0 df=%2r_df_w
     41 @3r                 ...... ...  df:2 wt:5 ws:5 wd:5 ......  &msa_r
     42 @3rf_h              ...... .... .    wt:5 ws:5 wd:5 ......  &msa_r df=%3r_df_h
     43 @3rf_w              ...... .... .    wt:5 ws:5 wd:5 ......  &msa_r df=%3r_df_w
     44 @u5                 ...... ... df:2 sa:5  ws:5 wd:5 ......  &msa_i
     45 @s5                 ...... ... df:2 sa:s5 ws:5 wd:5 ......  &msa_i
     46 @i8_df              ......     df:2 sa:s8 ws:5 wd:5 ......  &msa_i
     47 @i8                 ...... ..       sa:s8 ws:5 wd:5 ......  &msa_i df=0
     48 @ldi                ...... ... df:2 sa:s10     wd:5 ......  &msa_ldi
     49 @bit                ...... ... .......    ws:5 wd:5 ......  &msa_bit df=%bit_df m=%bit_m
     50 
     51 LSA                 000000 ..... ..... ..... 000 .. 000101  @lsa
     52 DLSA                000000 ..... ..... ..... 000 .. 010101  @lsa
     53 
     54 BZ_V                010001 01011  ..... ................    @bz_v
     55 BNZ_V               010001 01111  ..... ................    @bz_v
     56 BZ                  010001 110 .. ..... ................    @bz
     57 BNZ                 010001 111 .. ..... ................    @bz
     58 
     59 ANDI                011110 00 ........ ..... .....  000000  @i8
     60 ORI                 011110 01 ........ ..... .....  000000  @i8
     61 NORI                011110 10 ........ ..... .....  000000  @i8
     62 XORI                011110 11 ........ ..... .....  000000  @i8
     63 BMNZI               011110 00 ........ ..... .....  000001  @i8
     64 BMZI                011110 01 ........ ..... .....  000001  @i8
     65 BSELI               011110 10 ........ ..... .....  000001  @i8
     66 SHF                 011110 .. ........ ..... .....  000010  @i8_df
     67 
     68 ADDVI               011110 000 .. ..... ..... ..... 000110  @u5
     69 SUBVI               011110 001 .. ..... ..... ..... 000110  @u5
     70 MAXI_S              011110 010 .. ..... ..... ..... 000110  @s5
     71 MAXI_U              011110 011 .. ..... ..... ..... 000110  @u5
     72 MINI_S              011110 100 .. ..... ..... ..... 000110  @s5
     73 MINI_U              011110 101 .. ..... ..... ..... 000110  @u5
     74 
     75 CEQI                011110 000 .. ..... ..... ..... 000111  @s5
     76 CLTI_S              011110 010 .. ..... ..... ..... 000111  @s5
     77 CLTI_U              011110 011 .. ..... ..... ..... 000111  @u5
     78 CLEI_S              011110 100 .. ..... ..... ..... 000111  @s5
     79 CLEI_U              011110 101 .. ..... ..... ..... 000111  @u5
     80 
     81 LDI                 011110 110 .. ..........  ..... 000111  @ldi
     82 
     83 SLLI                011110 000 ....... ..... .....  001001  @bit
     84 SRAI                011110 001 ....... ..... .....  001001  @bit
     85 SRLI                011110 010 ....... ..... .....  001001  @bit
     86 BCLRI               011110 011 ....... ..... .....  001001  @bit
     87 BSETI               011110 100 ....... ..... .....  001001  @bit
     88 BNEGI               011110 101 ....... ..... .....  001001  @bit
     89 BINSLI              011110 110 ....... ..... .....  001001  @bit
     90 BINSRI              011110 111 ....... ..... .....  001001  @bit
     91 
     92 SAT_S               011110 000 ....... ..... .....  001010  @bit
     93 SAT_U               011110 001 ....... ..... .....  001010  @bit
     94 SRARI               011110 010 ....... ..... .....  001010  @bit
     95 SRLRI               011110 011 ....... ..... .....  001010  @bit
     96 
     97 SLL                 011110 000.. ..... ..... .....  001101  @3r
     98 SRA                 011110 001.. ..... ..... .....  001101  @3r
     99 SRL                 011110 010.. ..... ..... .....  001101  @3r
    100 BCLR                011110 011.. ..... ..... .....  001101  @3r
    101 BSET                011110 100.. ..... ..... .....  001101  @3r
    102 BNEG                011110 101.. ..... ..... .....  001101  @3r
    103 BINSL               011110 110.. ..... ..... .....  001101  @3r
    104 BINSR               011110 111.. ..... ..... .....  001101  @3r
    105 
    106 ADDV                011110 000.. ..... ..... .....  001110  @3r
    107 SUBV                011110 001.. ..... ..... .....  001110  @3r
    108 MAX_S               011110 010.. ..... ..... .....  001110  @3r
    109 MAX_U               011110 011.. ..... ..... .....  001110  @3r
    110 MIN_S               011110 100.. ..... ..... .....  001110  @3r
    111 MIN_U               011110 101.. ..... ..... .....  001110  @3r
    112 MAX_A               011110 110.. ..... ..... .....  001110  @3r
    113 MIN_A               011110 111.. ..... ..... .....  001110  @3r
    114 
    115 CEQ                 011110 000.. ..... ..... .....  001111  @3r
    116 CLT_S               011110 010.. ..... ..... .....  001111  @3r
    117 CLT_U               011110 011.. ..... ..... .....  001111  @3r
    118 CLE_S               011110 100.. ..... ..... .....  001111  @3r
    119 CLE_U               011110 101.. ..... ..... .....  001111  @3r
    120 
    121 ADD_A               011110 000.. ..... ..... .....  010000  @3r
    122 ADDS_A              011110 001.. ..... ..... .....  010000  @3r
    123 ADDS_S              011110 010.. ..... ..... .....  010000  @3r
    124 ADDS_U              011110 011.. ..... ..... .....  010000  @3r
    125 AVE_S               011110 100.. ..... ..... .....  010000  @3r
    126 AVE_U               011110 101.. ..... ..... .....  010000  @3r
    127 AVER_S              011110 110.. ..... ..... .....  010000  @3r
    128 AVER_U              011110 111.. ..... ..... .....  010000  @3r
    129 
    130 SUBS_S              011110 000.. ..... ..... .....  010001  @3r
    131 SUBS_U              011110 001.. ..... ..... .....  010001  @3r
    132 SUBSUS_U            011110 010.. ..... ..... .....  010001  @3r
    133 SUBSUU_S            011110 011.. ..... ..... .....  010001  @3r
    134 ASUB_S              011110 100.. ..... ..... .....  010001  @3r
    135 ASUB_U              011110 101.. ..... ..... .....  010001  @3r
    136 
    137 MULV                011110 000.. ..... ..... .....  010010  @3r
    138 MADDV               011110 001.. ..... ..... .....  010010  @3r
    139 MSUBV               011110 010.. ..... ..... .....  010010  @3r
    140 DIV_S               011110 100.. ..... ..... .....  010010  @3r
    141 DIV_U               011110 101.. ..... ..... .....  010010  @3r
    142 MOD_S               011110 110.. ..... ..... .....  010010  @3r
    143 MOD_U               011110 111.. ..... ..... .....  010010  @3r
    144 
    145 DOTP_S              011110 000.. ..... ..... .....  010011  @3r
    146 DOTP_U              011110 001.. ..... ..... .....  010011  @3r
    147 DPADD_S             011110 010.. ..... ..... .....  010011  @3r
    148 DPADD_U             011110 011.. ..... ..... .....  010011  @3r
    149 DPSUB_S             011110 100.. ..... ..... .....  010011  @3r
    150 DPSUB_U             011110 101.. ..... ..... .....  010011  @3r
    151 
    152 SLD                 011110 000 .. ..... ..... ..... 010100  @3r
    153 SPLAT               011110 001 .. ..... ..... ..... 010100  @3r
    154 PCKEV               011110 010 .. ..... ..... ..... 010100  @3r
    155 PCKOD               011110 011 .. ..... ..... ..... 010100  @3r
    156 ILVL                011110 100 .. ..... ..... ..... 010100  @3r
    157 ILVR                011110 101 .. ..... ..... ..... 010100  @3r
    158 ILVEV               011110 110 .. ..... ..... ..... 010100  @3r
    159 ILVOD               011110 111 .. ..... ..... ..... 010100  @3r
    160 
    161 VSHF                011110 000 .. ..... ..... ..... 010101  @3r
    162 SRAR                011110 001 .. ..... ..... ..... 010101  @3r
    163 SRLR                011110 010 .. ..... ..... ..... 010101  @3r
    164 HADD_S              011110 100.. ..... ..... .....  010101  @3r
    165 HADD_U              011110 101.. ..... ..... .....  010101  @3r
    166 HSUB_S              011110 110.. ..... ..... .....  010101  @3r
    167 HSUB_U              011110 111.. ..... ..... .....  010101  @3r
    168 
    169 {
    170   CTCMSA            011110 0000111110  ..... .....  011001  @elm
    171   SLDI              011110 0000 ...... ..... .....  011001  @elm_df
    172 }
    173 {
    174   CFCMSA            011110 0001111110  ..... .....  011001  @elm
    175   SPLATI            011110 0001 ...... ..... .....  011001  @elm_df
    176 }
    177 {
    178   MOVE_V            011110 0010111110  ..... .....  011001  @elm
    179   COPY_S            011110 0010 ...... ..... .....  011001  @elm_df
    180 }
    181 COPY_U              011110 0011 ...... ..... .....  011001  @elm_df
    182 INSERT              011110 0100 ...... ..... .....  011001  @elm_df
    183 INSVE               011110 0101 ...... ..... .....  011001  @elm_df
    184 
    185 FCAF                011110 0000 . ..... ..... ..... 011010  @3rf_w
    186 FCUN                011110 0001 . ..... ..... ..... 011010  @3rf_w
    187 FCEQ                011110 0010 . ..... ..... ..... 011010  @3rf_w
    188 FCUEQ               011110 0011 . ..... ..... ..... 011010  @3rf_w
    189 FCLT                011110 0100 . ..... ..... ..... 011010  @3rf_w
    190 FCULT               011110 0101 . ..... ..... ..... 011010  @3rf_w
    191 FCLE                011110 0110 . ..... ..... ..... 011010  @3rf_w
    192 FCULE               011110 0111 . ..... ..... ..... 011010  @3rf_w
    193 FSAF                011110 1000 . ..... ..... ..... 011010  @3rf_w
    194 FSUN                011110 1001 . ..... ..... ..... 011010  @3rf_w
    195 FSEQ                011110 1010 . ..... ..... ..... 011010  @3rf_w
    196 FSUEQ               011110 1011 . ..... ..... ..... 011010  @3rf_w
    197 FSLT                011110 1100 . ..... ..... ..... 011010  @3rf_w
    198 FSULT               011110 1101 . ..... ..... ..... 011010  @3rf_w
    199 FSLE                011110 1110 . ..... ..... ..... 011010  @3rf_w
    200 FSULE               011110 1111 . ..... ..... ..... 011010  @3rf_w
    201 
    202 FADD                011110 0000 . ..... ..... ..... 011011  @3rf_w
    203 FSUB                011110 0001 . ..... ..... ..... 011011  @3rf_w
    204 FMUL                011110 0010 . ..... ..... ..... 011011  @3rf_w
    205 FDIV                011110 0011 . ..... ..... ..... 011011  @3rf_w
    206 FMADD               011110 0100 . ..... ..... ..... 011011  @3rf_w
    207 FMSUB               011110 0101 . ..... ..... ..... 011011  @3rf_w
    208 FEXP2               011110 0111 . ..... ..... ..... 011011  @3rf_w
    209 FEXDO               011110 1000 . ..... ..... ..... 011011  @3rf_w
    210 FTQ                 011110 1010 . ..... ..... ..... 011011  @3rf_w
    211 FMIN                011110 1100 . ..... ..... ..... 011011  @3rf_w
    212 FMIN_A              011110 1101 . ..... ..... ..... 011011  @3rf_w
    213 FMAX                011110 1110 . ..... ..... ..... 011011  @3rf_w
    214 FMAX_A              011110 1111 . ..... ..... ..... 011011  @3rf_w
    215 
    216 FCOR                011110 0001 . ..... ..... ..... 011100  @3rf_w
    217 FCUNE               011110 0010 . ..... ..... ..... 011100  @3rf_w
    218 FCNE                011110 0011 . ..... ..... ..... 011100  @3rf_w
    219 MUL_Q               011110 0100 . ..... ..... ..... 011100  @3rf_h
    220 MADD_Q              011110 0101 . ..... ..... ..... 011100  @3rf_h
    221 MSUB_Q              011110 0110 . ..... ..... ..... 011100  @3rf_h
    222 FSOR                011110 1001 . ..... ..... ..... 011100  @3rf_w
    223 FSUNE               011110 1010 . ..... ..... ..... 011100  @3rf_w
    224 FSNE                011110 1011 . ..... ..... ..... 011100  @3rf_w
    225 MULR_Q              011110 1100 . ..... ..... ..... 011100  @3rf_h
    226 MADDR_Q             011110 1101 . ..... ..... ..... 011100  @3rf_h
    227 MSUBR_Q             011110 1110 . ..... ..... ..... 011100  @3rf_h
    228 
    229 AND_V               011110 00000 ..... ..... .....  011110  @vec
    230 OR_V                011110 00001 ..... ..... .....  011110  @vec
    231 NOR_V               011110 00010 ..... ..... .....  011110  @vec
    232 XOR_V               011110 00011 ..... ..... .....  011110  @vec
    233 BMNZ_V              011110 00100 ..... ..... .....  011110  @vec
    234 BMZ_V               011110 00101 ..... ..... .....  011110  @vec
    235 BSEL_V              011110 00110 ..... ..... .....  011110  @vec
    236 FILL                011110 11000000 .. ..... .....  011110  @2r
    237 PCNT                011110 11000001 .. ..... .....  011110  @2r
    238 NLOC                011110 11000010 .. ..... .....  011110  @2r
    239 NLZC                011110 11000011 .. ..... .....  011110  @2r
    240 FCLASS              011110 110010000 . ..... .....  011110  @2rf
    241 FTRUNC_S            011110 110010001 . ..... .....  011110  @2rf
    242 FTRUNC_U            011110 110010010 . ..... .....  011110  @2rf
    243 FSQRT               011110 110010011 . ..... .....  011110  @2rf
    244 FRSQRT              011110 110010100 . ..... .....  011110  @2rf
    245 FRCP                011110 110010101 . ..... .....  011110  @2rf
    246 FRINT               011110 110010110 . ..... .....  011110  @2rf
    247 FLOG2               011110 110010111 . ..... .....  011110  @2rf
    248 FEXUPL              011110 110011000 . ..... .....  011110  @2rf
    249 FEXUPR              011110 110011001 . ..... .....  011110  @2rf
    250 FFQL                011110 110011010 . ..... .....  011110  @2rf
    251 FFQR                011110 110011011 . ..... .....  011110  @2rf
    252 FTINT_S             011110 110011100 . ..... .....  011110  @2rf
    253 FTINT_U             011110 110011101 . ..... .....  011110  @2rf
    254 FFINT_S             011110 110011110 . ..... .....  011110  @2rf
    255 FFINT_U             011110 110011111 . ..... .....  011110  @2rf
    256 
    257 LD                  011110 .......... ..... .....   1000 .. @ldst
    258 ST                  011110 .......... ..... .....   1001 .. @ldst