xref: /openbmc/qemu/target/mips/tcg/msa.decode (revision 2d5246f30573c27cee609021850fdd3c56cda1ec)
1f5c6ee0cSPhilippe Mathieu-Daudé# MIPS SIMD Architecture Module instruction set
2f5c6ee0cSPhilippe Mathieu-Daudé#
3f5c6ee0cSPhilippe Mathieu-Daudé# Copyright (C) 2020  Philippe Mathieu-Daudé
4f5c6ee0cSPhilippe Mathieu-Daudé#
5f5c6ee0cSPhilippe Mathieu-Daudé# SPDX-License-Identifier: LGPL-2.1-or-later
6f5c6ee0cSPhilippe Mathieu-Daudé#
7f5c6ee0cSPhilippe Mathieu-Daudé# Reference:
8f5c6ee0cSPhilippe Mathieu-Daudé#       MIPS Architecture for Programmers Volume IV-j
9f5c6ee0cSPhilippe Mathieu-Daudé#       - The MIPS32 SIMD Architecture Module, Revision 1.12
10f5c6ee0cSPhilippe 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)
13f5c6ee0cSPhilippe Mathieu-Daudé
1434fe9fa3SPhilippe Mathieu-Daudé&r                  rs rt rd sa
15f5c6ee0cSPhilippe 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
26*2d5246f3SPhilippe Mathieu-Daudé%3r_df_w            21:1 !function=plus_2
27f5c6ee0cSPhilippe 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
35ff29e5d3SPhilippe Mathieu-Daudé@3rf_h              ...... .... .    wt:5 ws:5 wd:5 ......  &msa_r df=%3r_df_h
36*2d5246f3SPhilippe Mathieu-Daudé@3rf_w              ...... .... .    wt:5 ws:5 wd:5 ......  &msa_r df=%3r_df_w
37b8e74816SPhilippe Mathieu-Daudé@u5                 ...... ... df:2 sa:5  ws:5 wd:5 ......  &msa_i
38b8e74816SPhilippe Mathieu-Daudé@s5                 ...... ... df:2 sa:s5 ws:5 wd:5 ......  &msa_i
39a9e17958SPhilippe Mathieu-Daudé@i8_df              ......     df:2 sa:s8 ws:5 wd:5 ......  &msa_i
407cc351ffSPhilippe Mathieu-Daudé@i8                 ...... ..       sa:s8 ws:5 wd:5 ......  &msa_i df=0
4175094c33SPhilippe Mathieu-Daudé@ldi                ...... ... df:2 sa:s10     wd:5 ......  &msa_ldi
424701d23aSPhilippe Mathieu-Daudé@bit                ...... ... .......    ws:5 wd:5 ......  &msa_bit df=%bit_df m=%bit_m
43f5c6ee0cSPhilippe Mathieu-Daudé
44f5c6ee0cSPhilippe Mathieu-DaudéLSA                 000000 ..... ..... ..... 000 .. 000101  @lsa
45f5c6ee0cSPhilippe Mathieu-DaudéDLSA                000000 ..... ..... ..... 000 .. 010101  @lsa
46f5c6ee0cSPhilippe Mathieu-Daudé
47d61566cfSPhilippe Mathieu-DaudéBZ_V                010001 01011  ..... ................    @bz_v
48d61566cfSPhilippe Mathieu-DaudéBNZ_V               010001 01111  ..... ................    @bz_v
49d61566cfSPhilippe Mathieu-DaudéBZ                  010001 110 .. ..... ................    @bz
50d61566cfSPhilippe Mathieu-DaudéBNZ                 010001 111 .. ..... ................    @bz
51f5c6ee0cSPhilippe Mathieu-Daudé
5275094c33SPhilippe Mathieu-Daudé{
537cc351ffSPhilippe Mathieu-Daudé  ANDI              011110 00 ........ ..... .....  000000  @i8
547cc351ffSPhilippe Mathieu-Daudé  ORI               011110 01 ........ ..... .....  000000  @i8
557cc351ffSPhilippe Mathieu-Daudé  NORI              011110 10 ........ ..... .....  000000  @i8
567cc351ffSPhilippe Mathieu-Daudé  XORI              011110 11 ........ ..... .....  000000  @i8
577cc351ffSPhilippe Mathieu-Daudé  BMNZI             011110 00 ........ ..... .....  000001  @i8
587cc351ffSPhilippe Mathieu-Daudé  BMZI              011110 01 ........ ..... .....  000001  @i8
597cc351ffSPhilippe Mathieu-Daudé  BSELI             011110 10 ........ ..... .....  000001  @i8
60a9e17958SPhilippe Mathieu-Daudé  SHF               011110 .. ........ ..... .....  000010  @i8_df
61a9e17958SPhilippe Mathieu-Daudé
62b8e74816SPhilippe Mathieu-Daudé  ADDVI             011110 000 .. ..... ..... ..... 000110  @u5
63b8e74816SPhilippe Mathieu-Daudé  SUBVI             011110 001 .. ..... ..... ..... 000110  @u5
64b8e74816SPhilippe Mathieu-Daudé  MAXI_S            011110 010 .. ..... ..... ..... 000110  @s5
65b8e74816SPhilippe Mathieu-Daudé  MAXI_U            011110 011 .. ..... ..... ..... 000110  @u5
66b8e74816SPhilippe Mathieu-Daudé  MINI_S            011110 100 .. ..... ..... ..... 000110  @s5
67b8e74816SPhilippe Mathieu-Daudé  MINI_U            011110 101 .. ..... ..... ..... 000110  @u5
68b8e74816SPhilippe Mathieu-Daudé
69b8e74816SPhilippe Mathieu-Daudé  CEQI              011110 000 .. ..... ..... ..... 000111  @s5
70b8e74816SPhilippe Mathieu-Daudé  CLTI_S            011110 010 .. ..... ..... ..... 000111  @s5
71b8e74816SPhilippe Mathieu-Daudé  CLTI_U            011110 011 .. ..... ..... ..... 000111  @u5
72b8e74816SPhilippe Mathieu-Daudé  CLEI_S            011110 100 .. ..... ..... ..... 000111  @s5
73b8e74816SPhilippe Mathieu-Daudé  CLEI_U            011110 101 .. ..... ..... ..... 000111  @u5
74b8e74816SPhilippe Mathieu-Daudé
7575094c33SPhilippe Mathieu-Daudé  LDI               011110 110 .. ..........  ..... 000111  @ldi
7675094c33SPhilippe Mathieu-Daudé
774701d23aSPhilippe Mathieu-Daudé  SLLI              011110 000 ....... ..... .....  001001  @bit
784701d23aSPhilippe Mathieu-Daudé  SRAI              011110 001 ....... ..... .....  001001  @bit
794701d23aSPhilippe Mathieu-Daudé  SRLI              011110 010 ....... ..... .....  001001  @bit
804701d23aSPhilippe Mathieu-Daudé  BCLRI             011110 011 ....... ..... .....  001001  @bit
814701d23aSPhilippe Mathieu-Daudé  BSETI             011110 100 ....... ..... .....  001001  @bit
824701d23aSPhilippe Mathieu-Daudé  BNEGI             011110 101 ....... ..... .....  001001  @bit
834701d23aSPhilippe Mathieu-Daudé  BINSLI            011110 110 ....... ..... .....  001001  @bit
844701d23aSPhilippe Mathieu-Daudé  BINSRI            011110 111 ....... ..... .....  001001  @bit
854701d23aSPhilippe Mathieu-Daudé
864701d23aSPhilippe Mathieu-Daudé  SAT_S             011110 000 ....... ..... .....  001010  @bit
874701d23aSPhilippe Mathieu-Daudé  SAT_U             011110 001 ....... ..... .....  001010  @bit
884701d23aSPhilippe Mathieu-Daudé  SRARI             011110 010 ....... ..... .....  001010  @bit
894701d23aSPhilippe Mathieu-Daudé  SRLRI             011110 011 ....... ..... .....  001010  @bit
904701d23aSPhilippe Mathieu-Daudé
91*2d5246f3SPhilippe Mathieu-Daudé  FCAF              011110 0000 . ..... ..... ..... 011010  @3rf_w
92*2d5246f3SPhilippe Mathieu-Daudé  FCUN              011110 0001 . ..... ..... ..... 011010  @3rf_w
93*2d5246f3SPhilippe Mathieu-Daudé  FCEQ              011110 0010 . ..... ..... ..... 011010  @3rf_w
94*2d5246f3SPhilippe Mathieu-Daudé  FCUEQ             011110 0011 . ..... ..... ..... 011010  @3rf_w
95*2d5246f3SPhilippe Mathieu-Daudé  FCLT              011110 0100 . ..... ..... ..... 011010  @3rf_w
96*2d5246f3SPhilippe Mathieu-Daudé  FCULT             011110 0101 . ..... ..... ..... 011010  @3rf_w
97*2d5246f3SPhilippe Mathieu-Daudé  FCLE              011110 0110 . ..... ..... ..... 011010  @3rf_w
98*2d5246f3SPhilippe Mathieu-Daudé  FCULE             011110 0111 . ..... ..... ..... 011010  @3rf_w
99*2d5246f3SPhilippe Mathieu-Daudé  FSAF              011110 1000 . ..... ..... ..... 011010  @3rf_w
100*2d5246f3SPhilippe Mathieu-Daudé  FSUN              011110 1001 . ..... ..... ..... 011010  @3rf_w
101*2d5246f3SPhilippe Mathieu-Daudé  FSEQ              011110 1010 . ..... ..... ..... 011010  @3rf_w
102*2d5246f3SPhilippe Mathieu-Daudé  FSUEQ             011110 1011 . ..... ..... ..... 011010  @3rf_w
103*2d5246f3SPhilippe Mathieu-Daudé  FSLT              011110 1100 . ..... ..... ..... 011010  @3rf_w
104*2d5246f3SPhilippe Mathieu-Daudé  FSULT             011110 1101 . ..... ..... ..... 011010  @3rf_w
105*2d5246f3SPhilippe Mathieu-Daudé  FSLE              011110 1110 . ..... ..... ..... 011010  @3rf_w
106*2d5246f3SPhilippe Mathieu-Daudé  FSULE             011110 1111 . ..... ..... ..... 011010  @3rf_w
107*2d5246f3SPhilippe Mathieu-Daudé
108*2d5246f3SPhilippe Mathieu-Daudé  FADD              011110 0000 . ..... ..... ..... 011011  @3rf_w
109*2d5246f3SPhilippe Mathieu-Daudé  FSUB              011110 0001 . ..... ..... ..... 011011  @3rf_w
110*2d5246f3SPhilippe Mathieu-Daudé  FMUL              011110 0010 . ..... ..... ..... 011011  @3rf_w
111*2d5246f3SPhilippe Mathieu-Daudé  FDIV              011110 0011 . ..... ..... ..... 011011  @3rf_w
112*2d5246f3SPhilippe Mathieu-Daudé  FMADD             011110 0100 . ..... ..... ..... 011011  @3rf_w
113*2d5246f3SPhilippe Mathieu-Daudé  FMSUB             011110 0101 . ..... ..... ..... 011011  @3rf_w
114*2d5246f3SPhilippe Mathieu-Daudé  FEXP2             011110 0111 . ..... ..... ..... 011011  @3rf_w
115*2d5246f3SPhilippe Mathieu-Daudé  FEXDO             011110 1000 . ..... ..... ..... 011011  @3rf_w
116*2d5246f3SPhilippe Mathieu-Daudé  FTQ               011110 1010 . ..... ..... ..... 011011  @3rf_w
117*2d5246f3SPhilippe Mathieu-Daudé  FMIN              011110 1100 . ..... ..... ..... 011011  @3rf_w
118*2d5246f3SPhilippe Mathieu-Daudé  FMIN_A            011110 1101 . ..... ..... ..... 011011  @3rf_w
119*2d5246f3SPhilippe Mathieu-Daudé  FMAX              011110 1110 . ..... ..... ..... 011011  @3rf_w
120*2d5246f3SPhilippe Mathieu-Daudé  FMAX_A            011110 1111 . ..... ..... ..... 011011  @3rf_w
121*2d5246f3SPhilippe Mathieu-Daudé
122*2d5246f3SPhilippe Mathieu-Daudé  FCOR              011110 0001 . ..... ..... ..... 011100  @3rf_w
123*2d5246f3SPhilippe Mathieu-Daudé  FCUNE             011110 0010 . ..... ..... ..... 011100  @3rf_w
124*2d5246f3SPhilippe Mathieu-Daudé  FCNE              011110 0011 . ..... ..... ..... 011100  @3rf_w
125ff29e5d3SPhilippe Mathieu-Daudé  MUL_Q             011110 0100 . ..... ..... ..... 011100  @3rf_h
126ff29e5d3SPhilippe Mathieu-Daudé  MADD_Q            011110 0101 . ..... ..... ..... 011100  @3rf_h
127ff29e5d3SPhilippe Mathieu-Daudé  MSUB_Q            011110 0110 . ..... ..... ..... 011100  @3rf_h
128*2d5246f3SPhilippe Mathieu-Daudé  FSOR              011110 1001 . ..... ..... ..... 011100  @3rf_w
129*2d5246f3SPhilippe Mathieu-Daudé  FSUNE             011110 1010 . ..... ..... ..... 011100  @3rf_w
130*2d5246f3SPhilippe Mathieu-Daudé  FSNE              011110 1011 . ..... ..... ..... 011100  @3rf_w
131ff29e5d3SPhilippe Mathieu-Daudé  MULR_Q            011110 1100 . ..... ..... ..... 011100  @3rf_h
132ff29e5d3SPhilippe Mathieu-Daudé  MADDR_Q           011110 1101 . ..... ..... ..... 011100  @3rf_h
133ff29e5d3SPhilippe Mathieu-Daudé  MSUBR_Q           011110 1110 . ..... ..... ..... 011100  @3rf_h
134ff29e5d3SPhilippe Mathieu-Daudé
1357acb5c78SPhilippe Mathieu-Daudé  AND_V             011110 00000 ..... ..... .....  011110  @vec
1367acb5c78SPhilippe Mathieu-Daudé  OR_V              011110 00001 ..... ..... .....  011110  @vec
1377acb5c78SPhilippe Mathieu-Daudé  NOR_V             011110 00010 ..... ..... .....  011110  @vec
1387acb5c78SPhilippe Mathieu-Daudé  XOR_V             011110 00011 ..... ..... .....  011110  @vec
1397acb5c78SPhilippe Mathieu-Daudé  BMNZ_V            011110 00100 ..... ..... .....  011110  @vec
1407acb5c78SPhilippe Mathieu-Daudé  BMZ_V             011110 00101 ..... ..... .....  011110  @vec
1417acb5c78SPhilippe Mathieu-Daudé  BSEL_V            011110 00110 ..... ..... .....  011110  @vec
142675bf34aSPhilippe Mathieu-Daudé  FILL              011110 11000000 .. ..... .....  011110  @2r
143adcff99aSPhilippe Mathieu-Daudé  PCNT              011110 11000001 .. ..... .....  011110  @2r
144adcff99aSPhilippe Mathieu-Daudé  NLOC              011110 11000010 .. ..... .....  011110  @2r
145adcff99aSPhilippe Mathieu-Daudé  NLZC              011110 11000011 .. ..... .....  011110  @2r
1465c5b6400SPhilippe Mathieu-Daudé  FCLASS            011110 110010000 . ..... .....  011110  @2rf
1475c5b6400SPhilippe Mathieu-Daudé  FTRUNC_S          011110 110010001 . ..... .....  011110  @2rf
1485c5b6400SPhilippe Mathieu-Daudé  FTRUNC_U          011110 110010010 . ..... .....  011110  @2rf
1495c5b6400SPhilippe Mathieu-Daudé  FSQRT             011110 110010011 . ..... .....  011110  @2rf
1505c5b6400SPhilippe Mathieu-Daudé  FRSQRT            011110 110010100 . ..... .....  011110  @2rf
1515c5b6400SPhilippe Mathieu-Daudé  FRCP              011110 110010101 . ..... .....  011110  @2rf
1525c5b6400SPhilippe Mathieu-Daudé  FRINT             011110 110010110 . ..... .....  011110  @2rf
1535c5b6400SPhilippe Mathieu-Daudé  FLOG2             011110 110010111 . ..... .....  011110  @2rf
1545c5b6400SPhilippe Mathieu-Daudé  FEXUPL            011110 110011000 . ..... .....  011110  @2rf
1555c5b6400SPhilippe Mathieu-Daudé  FEXUPR            011110 110011001 . ..... .....  011110  @2rf
1565c5b6400SPhilippe Mathieu-Daudé  FFQL              011110 110011010 . ..... .....  011110  @2rf
1575c5b6400SPhilippe Mathieu-Daudé  FFQR              011110 110011011 . ..... .....  011110  @2rf
1585c5b6400SPhilippe Mathieu-Daudé  FTINT_S           011110 110011100 . ..... .....  011110  @2rf
1595c5b6400SPhilippe Mathieu-Daudé  FTINT_U           011110 110011101 . ..... .....  011110  @2rf
1605c5b6400SPhilippe Mathieu-Daudé  FFINT_S           011110 110011110 . ..... .....  011110  @2rf
1615c5b6400SPhilippe Mathieu-Daudé  FFINT_U           011110 110011111 . ..... .....  011110  @2rf
1625c5b6400SPhilippe Mathieu-Daudé
163ce121fe2SPhilippe Mathieu-Daudé  LD                011110 .......... ..... .....   1000 .. @ldst
164ce121fe2SPhilippe Mathieu-Daudé  ST                011110 .......... ..... .....   1001 .. @ldst
165ce121fe2SPhilippe Mathieu-Daudé
166f5c6ee0cSPhilippe Mathieu-Daudé  MSA               011110 --------------------------
16775094c33SPhilippe Mathieu-Daudé}
168