xref: /qemu/target/mips/tcg/msa.decode (revision f18708a53adc0549526fbeba5d1e892c0c4bf49c)
1c7a9ef75SPhilippe Mathieu-Daudé# MIPS SIMD Architecture Module instruction set
2c7a9ef75SPhilippe Mathieu-Daudé#
3c7a9ef75SPhilippe Mathieu-Daudé# Copyright (C) 2020  Philippe Mathieu-Daudé
4c7a9ef75SPhilippe Mathieu-Daudé#
5c7a9ef75SPhilippe Mathieu-Daudé# SPDX-License-Identifier: LGPL-2.1-or-later
6c7a9ef75SPhilippe Mathieu-Daudé#
7c7a9ef75SPhilippe Mathieu-Daudé# Reference:
8c7a9ef75SPhilippe Mathieu-Daudé#       MIPS Architecture for Programmers Volume IV-j
9f5c6ee0cSPhilippe Mathieu-Daudé#       - The MIPS32 SIMD Architecture Module, Revision 1.12
10c7a9ef75SPhilippe Mathieu-Daudé#         (Document Number: MD00866-2B-MSA32-AFP-01.12)
11f5c6ee0cSPhilippe Mathieu-Daudé#       - The MIPS64 SIMD Architecture Module, Revision 1.12
12f5c6ee0cSPhilippe Mathieu-Daudé#         (Document Number: MD00868-1D-MSA64-AFP-01.12)
13c7a9ef75SPhilippe Mathieu-Daudé
1434fe9fa3SPhilippe Mathieu-Daudé&r                  rs rt rd sa
155f21f30dSPhilippe Mathieu-Daudé
165c5b6400SPhilippe Mathieu-Daudé&msa_r              df  wd ws wt
17d61566cfSPhilippe Mathieu-Daudé&msa_bz             df        wt sa
1875094c33SPhilippe Mathieu-Daudé&msa_ldi            df  wd       sa
19b8e74816SPhilippe Mathieu-Daudé&msa_i              df  wd ws    sa
204701d23aSPhilippe Mathieu-Daudé&msa_bit            df  wd ws       m
214701d23aSPhilippe Mathieu-Daudé
224701d23aSPhilippe Mathieu-Daudé%bit_df             16:7 !function=bit_df
234701d23aSPhilippe Mathieu-Daudé%bit_m              16:7 !function=bit_m
245c5b6400SPhilippe Mathieu-Daudé%2r_df_w            16:1 !function=plus_2
25ff29e5d3SPhilippe Mathieu-Daudé%3r_df_h            21:1 !function=plus_1
262d5246f3SPhilippe Mathieu-Daudé%3r_df_w            21:1 !function=plus_2
27c7a9ef75SPhilippe Mathieu-Daudé
2834fe9fa3SPhilippe Mathieu-Daudé@lsa                ...... rs:5 rt:5 rd:5 ... sa:2 ......   &r
29ce121fe2SPhilippe Mathieu-Daudé@ldst               ...... sa:s10 ws:5 wd:5 .... df:2       &msa_i
30d61566cfSPhilippe Mathieu-Daudé@bz_v               ...... ... ..    wt:5 sa:16             &msa_bz df=3
31d61566cfSPhilippe Mathieu-Daudé@bz                 ...... ...  df:2 wt:5 sa:16             &msa_bz
327acb5c78SPhilippe Mathieu-Daudé@vec                ...... .....     wt:5 ws:5 wd:5 ......  &msa_r df=0
33675bf34aSPhilippe Mathieu-Daudé@2r                 ...... ........  df:2 ws:5 wd:5 ......  &msa_r wt=0
345c5b6400SPhilippe Mathieu-Daudé@2rf                ...... ......... .    ws:5 wd:5 ......  &msa_r wt=0 df=%2r_df_w
3567bedef5SPhilippe Mathieu-Daudé@3r                 ...... ...  df:2 wt:5 ws:5 wd:5 ......  &msa_r
36ff29e5d3SPhilippe Mathieu-Daudé@3rf_h              ...... .... .    wt:5 ws:5 wd:5 ......  &msa_r df=%3r_df_h
372d5246f3SPhilippe Mathieu-Daudé@3rf_w              ...... .... .    wt:5 ws:5 wd:5 ......  &msa_r df=%3r_df_w
38b8e74816SPhilippe Mathieu-Daudé@u5                 ...... ... df:2 sa:5  ws:5 wd:5 ......  &msa_i
39b8e74816SPhilippe Mathieu-Daudé@s5                 ...... ... df:2 sa:s5 ws:5 wd:5 ......  &msa_i
40a9e17958SPhilippe Mathieu-Daudé@i8_df              ......     df:2 sa:s8 ws:5 wd:5 ......  &msa_i
417cc351ffSPhilippe Mathieu-Daudé@i8                 ...... ..       sa:s8 ws:5 wd:5 ......  &msa_i df=0
4275094c33SPhilippe Mathieu-Daudé@ldi                ...... ... df:2 sa:s10     wd:5 ......  &msa_ldi
434701d23aSPhilippe Mathieu-Daudé@bit                ...... ... .......    ws:5 wd:5 ......  &msa_bit df=%bit_df m=%bit_m
44c7a9ef75SPhilippe Mathieu-Daudé
455f21f30dSPhilippe Mathieu-DaudéLSA                 000000 ..... ..... ..... 000 .. 000101  @lsa
46f5c6ee0cSPhilippe Mathieu-DaudéDLSA                000000 ..... ..... ..... 000 .. 010101  @lsa
475f21f30dSPhilippe Mathieu-Daudé
48d61566cfSPhilippe Mathieu-DaudéBZ_V                010001 01011  ..... ................    @bz_v
49d61566cfSPhilippe Mathieu-DaudéBNZ_V               010001 01111  ..... ................    @bz_v
50d61566cfSPhilippe Mathieu-DaudéBZ                  010001 110 .. ..... ................    @bz
51d61566cfSPhilippe Mathieu-DaudéBNZ                 010001 111 .. ..... ................    @bz
52c7a9ef75SPhilippe Mathieu-Daudé
5375094c33SPhilippe Mathieu-Daudé{
547cc351ffSPhilippe Mathieu-Daudé  ANDI              011110 00 ........ ..... .....  000000  @i8
557cc351ffSPhilippe Mathieu-Daudé  ORI               011110 01 ........ ..... .....  000000  @i8
567cc351ffSPhilippe Mathieu-Daudé  NORI              011110 10 ........ ..... .....  000000  @i8
577cc351ffSPhilippe Mathieu-Daudé  XORI              011110 11 ........ ..... .....  000000  @i8
587cc351ffSPhilippe Mathieu-Daudé  BMNZI             011110 00 ........ ..... .....  000001  @i8
597cc351ffSPhilippe Mathieu-Daudé  BMZI              011110 01 ........ ..... .....  000001  @i8
607cc351ffSPhilippe Mathieu-Daudé  BSELI             011110 10 ........ ..... .....  000001  @i8
61a9e17958SPhilippe Mathieu-Daudé  SHF               011110 .. ........ ..... .....  000010  @i8_df
62a9e17958SPhilippe Mathieu-Daudé
63b8e74816SPhilippe Mathieu-Daudé  ADDVI             011110 000 .. ..... ..... ..... 000110  @u5
64b8e74816SPhilippe Mathieu-Daudé  SUBVI             011110 001 .. ..... ..... ..... 000110  @u5
65b8e74816SPhilippe Mathieu-Daudé  MAXI_S            011110 010 .. ..... ..... ..... 000110  @s5
66b8e74816SPhilippe Mathieu-Daudé  MAXI_U            011110 011 .. ..... ..... ..... 000110  @u5
67b8e74816SPhilippe Mathieu-Daudé  MINI_S            011110 100 .. ..... ..... ..... 000110  @s5
68b8e74816SPhilippe Mathieu-Daudé  MINI_U            011110 101 .. ..... ..... ..... 000110  @u5
69b8e74816SPhilippe Mathieu-Daudé
70b8e74816SPhilippe Mathieu-Daudé  CEQI              011110 000 .. ..... ..... ..... 000111  @s5
71b8e74816SPhilippe Mathieu-Daudé  CLTI_S            011110 010 .. ..... ..... ..... 000111  @s5
72b8e74816SPhilippe Mathieu-Daudé  CLTI_U            011110 011 .. ..... ..... ..... 000111  @u5
73b8e74816SPhilippe Mathieu-Daudé  CLEI_S            011110 100 .. ..... ..... ..... 000111  @s5
74b8e74816SPhilippe Mathieu-Daudé  CLEI_U            011110 101 .. ..... ..... ..... 000111  @u5
75b8e74816SPhilippe Mathieu-Daudé
7675094c33SPhilippe Mathieu-Daudé  LDI               011110 110 .. ..........  ..... 000111  @ldi
7775094c33SPhilippe Mathieu-Daudé
784701d23aSPhilippe Mathieu-Daudé  SLLI              011110 000 ....... ..... .....  001001  @bit
794701d23aSPhilippe Mathieu-Daudé  SRAI              011110 001 ....... ..... .....  001001  @bit
804701d23aSPhilippe Mathieu-Daudé  SRLI              011110 010 ....... ..... .....  001001  @bit
814701d23aSPhilippe Mathieu-Daudé  BCLRI             011110 011 ....... ..... .....  001001  @bit
824701d23aSPhilippe Mathieu-Daudé  BSETI             011110 100 ....... ..... .....  001001  @bit
834701d23aSPhilippe Mathieu-Daudé  BNEGI             011110 101 ....... ..... .....  001001  @bit
844701d23aSPhilippe Mathieu-Daudé  BINSLI            011110 110 ....... ..... .....  001001  @bit
854701d23aSPhilippe Mathieu-Daudé  BINSRI            011110 111 ....... ..... .....  001001  @bit
864701d23aSPhilippe Mathieu-Daudé
874701d23aSPhilippe Mathieu-Daudé  SAT_S             011110 000 ....... ..... .....  001010  @bit
884701d23aSPhilippe Mathieu-Daudé  SAT_U             011110 001 ....... ..... .....  001010  @bit
894701d23aSPhilippe Mathieu-Daudé  SRARI             011110 010 ....... ..... .....  001010  @bit
904701d23aSPhilippe Mathieu-Daudé  SRLRI             011110 011 ....... ..... .....  001010  @bit
914701d23aSPhilippe Mathieu-Daudé
92*f18708a5SPhilippe Mathieu-Daudé  DOTP_S            011110 000.. ..... ..... .....  010011  @3r
93*f18708a5SPhilippe Mathieu-Daudé  DOTP_U            011110 001.. ..... ..... .....  010011  @3r
94*f18708a5SPhilippe Mathieu-Daudé  DPADD_S           011110 010.. ..... ..... .....  010011  @3r
95*f18708a5SPhilippe Mathieu-Daudé  DPADD_U           011110 011.. ..... ..... .....  010011  @3r
96*f18708a5SPhilippe Mathieu-Daudé  DPSUB_S           011110 100.. ..... ..... .....  010011  @3r
97*f18708a5SPhilippe Mathieu-Daudé  DPSUB_U           011110 101.. ..... ..... .....  010011  @3r
98*f18708a5SPhilippe Mathieu-Daudé
9967bedef5SPhilippe Mathieu-Daudé  SLD               011110 000 .. ..... ..... ..... 010100  @3r
10067bedef5SPhilippe Mathieu-Daudé  SPLAT             011110 001 .. ..... ..... ..... 010100  @3r
10167bedef5SPhilippe Mathieu-Daudé
10267bedef5SPhilippe Mathieu-Daudé  VSHF              011110 000 .. ..... ..... ..... 010101  @3r
103*f18708a5SPhilippe Mathieu-Daudé  HADD_S            011110 100.. ..... ..... .....  010101  @3r
104*f18708a5SPhilippe Mathieu-Daudé  HADD_U            011110 101.. ..... ..... .....  010101  @3r
105*f18708a5SPhilippe Mathieu-Daudé  HSUB_S            011110 110.. ..... ..... .....  010101  @3r
106*f18708a5SPhilippe Mathieu-Daudé  HSUB_U            011110 111.. ..... ..... .....  010101  @3r
10767bedef5SPhilippe Mathieu-Daudé
1082d5246f3SPhilippe Mathieu-Daudé  FCAF              011110 0000 . ..... ..... ..... 011010  @3rf_w
1092d5246f3SPhilippe Mathieu-Daudé  FCUN              011110 0001 . ..... ..... ..... 011010  @3rf_w
1102d5246f3SPhilippe Mathieu-Daudé  FCEQ              011110 0010 . ..... ..... ..... 011010  @3rf_w
1112d5246f3SPhilippe Mathieu-Daudé  FCUEQ             011110 0011 . ..... ..... ..... 011010  @3rf_w
1122d5246f3SPhilippe Mathieu-Daudé  FCLT              011110 0100 . ..... ..... ..... 011010  @3rf_w
1132d5246f3SPhilippe Mathieu-Daudé  FCULT             011110 0101 . ..... ..... ..... 011010  @3rf_w
1142d5246f3SPhilippe Mathieu-Daudé  FCLE              011110 0110 . ..... ..... ..... 011010  @3rf_w
1152d5246f3SPhilippe Mathieu-Daudé  FCULE             011110 0111 . ..... ..... ..... 011010  @3rf_w
1162d5246f3SPhilippe Mathieu-Daudé  FSAF              011110 1000 . ..... ..... ..... 011010  @3rf_w
1172d5246f3SPhilippe Mathieu-Daudé  FSUN              011110 1001 . ..... ..... ..... 011010  @3rf_w
1182d5246f3SPhilippe Mathieu-Daudé  FSEQ              011110 1010 . ..... ..... ..... 011010  @3rf_w
1192d5246f3SPhilippe Mathieu-Daudé  FSUEQ             011110 1011 . ..... ..... ..... 011010  @3rf_w
1202d5246f3SPhilippe Mathieu-Daudé  FSLT              011110 1100 . ..... ..... ..... 011010  @3rf_w
1212d5246f3SPhilippe Mathieu-Daudé  FSULT             011110 1101 . ..... ..... ..... 011010  @3rf_w
1222d5246f3SPhilippe Mathieu-Daudé  FSLE              011110 1110 . ..... ..... ..... 011010  @3rf_w
1232d5246f3SPhilippe Mathieu-Daudé  FSULE             011110 1111 . ..... ..... ..... 011010  @3rf_w
1242d5246f3SPhilippe Mathieu-Daudé
1252d5246f3SPhilippe Mathieu-Daudé  FADD              011110 0000 . ..... ..... ..... 011011  @3rf_w
1262d5246f3SPhilippe Mathieu-Daudé  FSUB              011110 0001 . ..... ..... ..... 011011  @3rf_w
1272d5246f3SPhilippe Mathieu-Daudé  FMUL              011110 0010 . ..... ..... ..... 011011  @3rf_w
1282d5246f3SPhilippe Mathieu-Daudé  FDIV              011110 0011 . ..... ..... ..... 011011  @3rf_w
1292d5246f3SPhilippe Mathieu-Daudé  FMADD             011110 0100 . ..... ..... ..... 011011  @3rf_w
1302d5246f3SPhilippe Mathieu-Daudé  FMSUB             011110 0101 . ..... ..... ..... 011011  @3rf_w
1312d5246f3SPhilippe Mathieu-Daudé  FEXP2             011110 0111 . ..... ..... ..... 011011  @3rf_w
1322d5246f3SPhilippe Mathieu-Daudé  FEXDO             011110 1000 . ..... ..... ..... 011011  @3rf_w
1332d5246f3SPhilippe Mathieu-Daudé  FTQ               011110 1010 . ..... ..... ..... 011011  @3rf_w
1342d5246f3SPhilippe Mathieu-Daudé  FMIN              011110 1100 . ..... ..... ..... 011011  @3rf_w
1352d5246f3SPhilippe Mathieu-Daudé  FMIN_A            011110 1101 . ..... ..... ..... 011011  @3rf_w
1362d5246f3SPhilippe Mathieu-Daudé  FMAX              011110 1110 . ..... ..... ..... 011011  @3rf_w
1372d5246f3SPhilippe Mathieu-Daudé  FMAX_A            011110 1111 . ..... ..... ..... 011011  @3rf_w
1382d5246f3SPhilippe Mathieu-Daudé
1392d5246f3SPhilippe Mathieu-Daudé  FCOR              011110 0001 . ..... ..... ..... 011100  @3rf_w
1402d5246f3SPhilippe Mathieu-Daudé  FCUNE             011110 0010 . ..... ..... ..... 011100  @3rf_w
1412d5246f3SPhilippe Mathieu-Daudé  FCNE              011110 0011 . ..... ..... ..... 011100  @3rf_w
142ff29e5d3SPhilippe Mathieu-Daudé  MUL_Q             011110 0100 . ..... ..... ..... 011100  @3rf_h
143ff29e5d3SPhilippe Mathieu-Daudé  MADD_Q            011110 0101 . ..... ..... ..... 011100  @3rf_h
144ff29e5d3SPhilippe Mathieu-Daudé  MSUB_Q            011110 0110 . ..... ..... ..... 011100  @3rf_h
1452d5246f3SPhilippe Mathieu-Daudé  FSOR              011110 1001 . ..... ..... ..... 011100  @3rf_w
1462d5246f3SPhilippe Mathieu-Daudé  FSUNE             011110 1010 . ..... ..... ..... 011100  @3rf_w
1472d5246f3SPhilippe Mathieu-Daudé  FSNE              011110 1011 . ..... ..... ..... 011100  @3rf_w
148ff29e5d3SPhilippe Mathieu-Daudé  MULR_Q            011110 1100 . ..... ..... ..... 011100  @3rf_h
149ff29e5d3SPhilippe Mathieu-Daudé  MADDR_Q           011110 1101 . ..... ..... ..... 011100  @3rf_h
150ff29e5d3SPhilippe Mathieu-Daudé  MSUBR_Q           011110 1110 . ..... ..... ..... 011100  @3rf_h
151ff29e5d3SPhilippe Mathieu-Daudé
1527acb5c78SPhilippe Mathieu-Daudé  AND_V             011110 00000 ..... ..... .....  011110  @vec
1537acb5c78SPhilippe Mathieu-Daudé  OR_V              011110 00001 ..... ..... .....  011110  @vec
1547acb5c78SPhilippe Mathieu-Daudé  NOR_V             011110 00010 ..... ..... .....  011110  @vec
1557acb5c78SPhilippe Mathieu-Daudé  XOR_V             011110 00011 ..... ..... .....  011110  @vec
1567acb5c78SPhilippe Mathieu-Daudé  BMNZ_V            011110 00100 ..... ..... .....  011110  @vec
1577acb5c78SPhilippe Mathieu-Daudé  BMZ_V             011110 00101 ..... ..... .....  011110  @vec
1587acb5c78SPhilippe Mathieu-Daudé  BSEL_V            011110 00110 ..... ..... .....  011110  @vec
159675bf34aSPhilippe Mathieu-Daudé  FILL              011110 11000000 .. ..... .....  011110  @2r
160adcff99aSPhilippe Mathieu-Daudé  PCNT              011110 11000001 .. ..... .....  011110  @2r
161adcff99aSPhilippe Mathieu-Daudé  NLOC              011110 11000010 .. ..... .....  011110  @2r
162adcff99aSPhilippe Mathieu-Daudé  NLZC              011110 11000011 .. ..... .....  011110  @2r
1635c5b6400SPhilippe Mathieu-Daudé  FCLASS            011110 110010000 . ..... .....  011110  @2rf
1645c5b6400SPhilippe Mathieu-Daudé  FTRUNC_S          011110 110010001 . ..... .....  011110  @2rf
1655c5b6400SPhilippe Mathieu-Daudé  FTRUNC_U          011110 110010010 . ..... .....  011110  @2rf
1665c5b6400SPhilippe Mathieu-Daudé  FSQRT             011110 110010011 . ..... .....  011110  @2rf
1675c5b6400SPhilippe Mathieu-Daudé  FRSQRT            011110 110010100 . ..... .....  011110  @2rf
1685c5b6400SPhilippe Mathieu-Daudé  FRCP              011110 110010101 . ..... .....  011110  @2rf
1695c5b6400SPhilippe Mathieu-Daudé  FRINT             011110 110010110 . ..... .....  011110  @2rf
1705c5b6400SPhilippe Mathieu-Daudé  FLOG2             011110 110010111 . ..... .....  011110  @2rf
1715c5b6400SPhilippe Mathieu-Daudé  FEXUPL            011110 110011000 . ..... .....  011110  @2rf
1725c5b6400SPhilippe Mathieu-Daudé  FEXUPR            011110 110011001 . ..... .....  011110  @2rf
1735c5b6400SPhilippe Mathieu-Daudé  FFQL              011110 110011010 . ..... .....  011110  @2rf
1745c5b6400SPhilippe Mathieu-Daudé  FFQR              011110 110011011 . ..... .....  011110  @2rf
1755c5b6400SPhilippe Mathieu-Daudé  FTINT_S           011110 110011100 . ..... .....  011110  @2rf
1765c5b6400SPhilippe Mathieu-Daudé  FTINT_U           011110 110011101 . ..... .....  011110  @2rf
1775c5b6400SPhilippe Mathieu-Daudé  FFINT_S           011110 110011110 . ..... .....  011110  @2rf
1785c5b6400SPhilippe Mathieu-Daudé  FFINT_U           011110 110011111 . ..... .....  011110  @2rf
1795c5b6400SPhilippe Mathieu-Daudé
180ce121fe2SPhilippe Mathieu-Daudé  LD                011110 .......... ..... .....   1000 .. @ldst
181ce121fe2SPhilippe Mathieu-Daudé  ST                011110 .......... ..... .....   1001 .. @ldst
182ce121fe2SPhilippe Mathieu-Daudé
183c7a9ef75SPhilippe Mathieu-Daudé  MSA               011110 --------------------------
18475094c33SPhilippe Mathieu-Daudé}
185