aboutsummaryrefslogtreecommitdiff
path: root/target/mips/tcg/msa.decode
blob: afcb868aade47e9470565b70e9541ec0b19b2c0c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# MIPS SIMD Architecture Module instruction set
#
# Copyright (C) 2020  Philippe Mathieu-Daudé
#
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Reference:
#       MIPS Architecture for Programmers Volume IV-j
#       - The MIPS32 SIMD Architecture Module, Revision 1.12
#         (Document Number: MD00866-2B-MSA32-AFP-01.12)
#       - The MIPS64 SIMD Architecture Module, Revision 1.12
#         (Document Number: MD00868-1D-MSA64-AFP-01.12)

&r                  rs rt rd sa

&msa_r              df  wd ws wt
&msa_bz             df        wt sa
&msa_ldi            df  wd       sa
&msa_i              df  wd ws    sa
&msa_bit            df  wd ws       m

%bit_df             16:7 !function=bit_df
%bit_m              16:7 !function=bit_m
%2r_df_w            16:1 !function=plus_2

@lsa                ...... rs:5 rt:5 rd:5 ... sa:2 ......   &r
@ldst               ...... sa:s10 ws:5 wd:5 .... df:2       &msa_i
@bz_v               ...... ... ..    wt:5 sa:16             &msa_bz df=3
@bz                 ...... ...  df:2 wt:5 sa:16             &msa_bz
@vec                ...... .....     wt:5 ws:5 wd:5 ......  &msa_r df=0
@2r                 ...... ........  df:2 ws:5 wd:5 ......  &msa_r wt=0
@2rf                ...... ......... .    ws:5 wd:5 ......  &msa_r wt=0 df=%2r_df_w
@u5                 ...... ... df:2 sa:5  ws:5 wd:5 ......  &msa_i
@s5                 ...... ... df:2 sa:s5 ws:5 wd:5 ......  &msa_i
@i8_df              ......     df:2 sa:s8 ws:5 wd:5 ......  &msa_i
@i8                 ...... ..       sa:s8 ws:5 wd:5 ......  &msa_i df=0
@ldi                ...... ... df:2 sa:s10     wd:5 ......  &msa_ldi
@bit                ...... ... .......    ws:5 wd:5 ......  &msa_bit df=%bit_df m=%bit_m

LSA                 000000 ..... ..... ..... 000 .. 000101  @lsa
DLSA                000000 ..... ..... ..... 000 .. 010101  @lsa

BZ_V                010001 01011  ..... ................    @bz_v
BNZ_V               010001 01111  ..... ................    @bz_v
BZ                  010001 110 .. ..... ................    @bz
BNZ                 010001 111 .. ..... ................    @bz

{
  ANDI              011110 00 ........ ..... .....  000000  @i8
  ORI               011110 01 ........ ..... .....  000000  @i8
  NORI              011110 10 ........ ..... .....  000000  @i8
  XORI              011110 11 ........ ..... .....  000000  @i8
  BMNZI             011110 00 ........ ..... .....  000001  @i8
  BMZI              011110 01 ........ ..... .....  000001  @i8
  BSELI             011110 10 ........ ..... .....  000001  @i8
  SHF               011110 .. ........ ..... .....  000010  @i8_df

  ADDVI             011110 000 .. ..... ..... ..... 000110  @u5
  SUBVI             011110 001 .. ..... ..... ..... 000110  @u5
  MAXI_S            011110 010 .. ..... ..... ..... 000110  @s5
  MAXI_U            011110 011 .. ..... ..... ..... 000110  @u5
  MINI_S            011110 100 .. ..... ..... ..... 000110  @s5
  MINI_U            011110 101 .. ..... ..... ..... 000110  @u5

  CEQI              011110 000 .. ..... ..... ..... 000111  @s5
  CLTI_S            011110 010 .. ..... ..... ..... 000111  @s5
  CLTI_U            011110 011 .. ..... ..... ..... 000111  @u5
  CLEI_S            011110 100 .. ..... ..... ..... 000111  @s5
  CLEI_U            011110 101 .. ..... ..... ..... 000111  @u5

  LDI               011110 110 .. ..........  ..... 000111  @ldi

  SLLI              011110 000 ....... ..... .....  001001  @bit
  SRAI              011110 001 ....... ..... .....  001001  @bit
  SRLI              011110 010 ....... ..... .....  001001  @bit
  BCLRI             011110 011 ....... ..... .....  001001  @bit
  BSETI             011110 100 ....... ..... .....  001001  @bit
  BNEGI             011110 101 ....... ..... .....  001001  @bit
  BINSLI            011110 110 ....... ..... .....  001001  @bit
  BINSRI            011110 111 ....... ..... .....  001001  @bit

  SAT_S             011110 000 ....... ..... .....  001010  @bit
  SAT_U             011110 001 ....... ..... .....  001010  @bit
  SRARI             011110 010 ....... ..... .....  001010  @bit
  SRLRI             011110 011 ....... ..... .....  001010  @bit

  AND_V             011110 00000 ..... ..... .....  011110  @vec
  OR_V              011110 00001 ..... ..... .....  011110  @vec
  NOR_V             011110 00010 ..... ..... .....  011110  @vec
  XOR_V             011110 00011 ..... ..... .....  011110  @vec
  BMNZ_V            011110 00100 ..... ..... .....  011110  @vec
  BMZ_V             011110 00101 ..... ..... .....  011110  @vec
  BSEL_V            011110 00110 ..... ..... .....  011110  @vec
  FILL              011110 11000000 .. ..... .....  011110  @2r
  PCNT              011110 11000001 .. ..... .....  011110  @2r
  NLOC              011110 11000010 .. ..... .....  011110  @2r
  NLZC              011110 11000011 .. ..... .....  011110  @2r
  FCLASS            011110 110010000 . ..... .....  011110  @2rf
  FTRUNC_S          011110 110010001 . ..... .....  011110  @2rf
  FTRUNC_U          011110 110010010 . ..... .....  011110  @2rf
  FSQRT             011110 110010011 . ..... .....  011110  @2rf
  FRSQRT            011110 110010100 . ..... .....  011110  @2rf
  FRCP              011110 110010101 . ..... .....  011110  @2rf
  FRINT             011110 110010110 . ..... .....  011110  @2rf
  FLOG2             011110 110010111 . ..... .....  011110  @2rf
  FEXUPL            011110 110011000 . ..... .....  011110  @2rf
  FEXUPR            011110 110011001 . ..... .....  011110  @2rf
  FFQL              011110 110011010 . ..... .....  011110  @2rf
  FFQR              011110 110011011 . ..... .....  011110  @2rf
  FTINT_S           011110 110011100 . ..... .....  011110  @2rf
  FTINT_U           011110 110011101 . ..... .....  011110  @2rf
  FFINT_S           011110 110011110 . ..... .....  011110  @2rf
  FFINT_U           011110 110011111 . ..... .....  011110  @2rf

  LD                011110 .......... ..... .....   1000 .. @ldst
  ST                011110 .......... ..... .....   1001 .. @ldst

  MSA               011110 --------------------------
}