1 # RUN: llvm-mc %s -show-encoding -mcpu=mips32r2 -mattr=+msa -arch=mips | FileCheck %s
3 # RUN: llvm-mc %s -mcpu=mips32r2 -mattr=+msa -arch=mips -filetype=obj -o - | llvm-objdump -d -mattr=+msa -arch=mips - | FileCheck %s -check-prefix=CHECKOBJDUMP
5 # CHECK: fadd.w $w28, $w19, $w28 # encoding: [0x78,0x1c,0x9f,0x1b]
6 # CHECK: fadd.d $w13, $w2, $w29 # encoding: [0x78,0x3d,0x13,0x5b]
7 # CHECK: fcaf.w $w14, $w11, $w25 # encoding: [0x78,0x19,0x5b,0x9a]
8 # CHECK: fcaf.d $w1, $w1, $w19 # encoding: [0x78,0x33,0x08,0x5a]
9 # CHECK: fceq.w $w1, $w23, $w16 # encoding: [0x78,0x90,0xb8,0x5a]
10 # CHECK: fceq.d $w0, $w8, $w16 # encoding: [0x78,0xb0,0x40,0x1a]
11 # CHECK: fcle.w $w16, $w9, $w24 # encoding: [0x79,0x98,0x4c,0x1a]
12 # CHECK: fcle.d $w27, $w14, $w1 # encoding: [0x79,0xa1,0x76,0xda]
13 # CHECK: fclt.w $w28, $w8, $w8 # encoding: [0x79,0x08,0x47,0x1a]
14 # CHECK: fclt.d $w30, $w25, $w11 # encoding: [0x79,0x2b,0xcf,0x9a]
15 # CHECK: fcne.w $w2, $w18, $w23 # encoding: [0x78,0xd7,0x90,0x9c]
16 # CHECK: fcne.d $w14, $w20, $w15 # encoding: [0x78,0xef,0xa3,0x9c]
17 # CHECK: fcor.w $w10, $w18, $w25 # encoding: [0x78,0x59,0x92,0x9c]
18 # CHECK: fcor.d $w17, $w25, $w11 # encoding: [0x78,0x6b,0xcc,0x5c]
19 # CHECK: fcueq.w $w14, $w2, $w21 # encoding: [0x78,0xd5,0x13,0x9a]
20 # CHECK: fcueq.d $w29, $w3, $w7 # encoding: [0x78,0xe7,0x1f,0x5a]
21 # CHECK: fcule.w $w17, $w5, $w3 # encoding: [0x79,0xc3,0x2c,0x5a]
22 # CHECK: fcule.d $w31, $w1, $w30 # encoding: [0x79,0xfe,0x0f,0xda]
23 # CHECK: fcult.w $w6, $w25, $w9 # encoding: [0x79,0x49,0xc9,0x9a]
24 # CHECK: fcult.d $w27, $w8, $w17 # encoding: [0x79,0x71,0x46,0xda]
25 # CHECK: fcun.w $w4, $w20, $w8 # encoding: [0x78,0x48,0xa1,0x1a]
26 # CHECK: fcun.d $w29, $w11, $w3 # encoding: [0x78,0x63,0x5f,0x5a]
27 # CHECK: fcune.w $w13, $w18, $w19 # encoding: [0x78,0x93,0x93,0x5c]
28 # CHECK: fcune.d $w16, $w26, $w21 # encoding: [0x78,0xb5,0xd4,0x1c]
29 # CHECK: fdiv.w $w13, $w24, $w2 # encoding: [0x78,0xc2,0xc3,0x5b]
30 # CHECK: fdiv.d $w19, $w4, $w25 # encoding: [0x78,0xf9,0x24,0xdb]
31 # CHECK: fexdo.h $w8, $w0, $w16 # encoding: [0x7a,0x10,0x02,0x1b]
32 # CHECK: fexdo.w $w0, $w13, $w27 # encoding: [0x7a,0x3b,0x68,0x1b]
33 # CHECK: fexp2.w $w17, $w0, $w3 # encoding: [0x79,0xc3,0x04,0x5b]
34 # CHECK: fexp2.d $w22, $w0, $w10 # encoding: [0x79,0xea,0x05,0x9b]
35 # CHECK: fmadd.w $w29, $w6, $w23 # encoding: [0x79,0x17,0x37,0x5b]
36 # CHECK: fmadd.d $w11, $w28, $w21 # encoding: [0x79,0x35,0xe2,0xdb]
37 # CHECK: fmax.w $w0, $w23, $w13 # encoding: [0x7b,0x8d,0xb8,0x1b]
38 # CHECK: fmax.d $w26, $w18, $w8 # encoding: [0x7b,0xa8,0x96,0x9b]
39 # CHECK: fmax_a.w $w10, $w16, $w10 # encoding: [0x7b,0xca,0x82,0x9b]
40 # CHECK: fmax_a.d $w30, $w9, $w22 # encoding: [0x7b,0xf6,0x4f,0x9b]
41 # CHECK: fmin.w $w24, $w1, $w30 # encoding: [0x7b,0x1e,0x0e,0x1b]
42 # CHECK: fmin.d $w27, $w27, $w10 # encoding: [0x7b,0x2a,0xde,0xdb]
43 # CHECK: fmin_a.w $w10, $w29, $w20 # encoding: [0x7b,0x54,0xea,0x9b]
44 # CHECK: fmin_a.d $w13, $w30, $w24 # encoding: [0x7b,0x78,0xf3,0x5b]
45 # CHECK: fmsub.w $w17, $w25, $w0 # encoding: [0x79,0x40,0xcc,0x5b]
46 # CHECK: fmsub.d $w8, $w18, $w16 # encoding: [0x79,0x70,0x92,0x1b]
47 # CHECK: fmul.w $w3, $w15, $w15 # encoding: [0x78,0x8f,0x78,0xdb]
48 # CHECK: fmul.d $w9, $w30, $w10 # encoding: [0x78,0xaa,0xf2,0x5b]
49 # CHECK: fsaf.w $w25, $w5, $w10 # encoding: [0x7a,0x0a,0x2e,0x5a]
50 # CHECK: fsaf.d $w25, $w3, $w29 # encoding: [0x7a,0x3d,0x1e,0x5a]
51 # CHECK: fseq.w $w11, $w17, $w13 # encoding: [0x7a,0x8d,0x8a,0xda]
52 # CHECK: fseq.d $w29, $w0, $w31 # encoding: [0x7a,0xbf,0x07,0x5a]
53 # CHECK: fsle.w $w30, $w31, $w31 # encoding: [0x7b,0x9f,0xff,0x9a]
54 # CHECK: fsle.d $w18, $w23, $w24 # encoding: [0x7b,0xb8,0xbc,0x9a]
55 # CHECK: fslt.w $w12, $w5, $w6 # encoding: [0x7b,0x06,0x2b,0x1a]
56 # CHECK: fslt.d $w16, $w26, $w21 # encoding: [0x7b,0x35,0xd4,0x1a]
57 # CHECK: fsne.w $w30, $w1, $w12 # encoding: [0x7a,0xcc,0x0f,0x9c]
58 # CHECK: fsne.d $w14, $w13, $w23 # encoding: [0x7a,0xf7,0x6b,0x9c]
59 # CHECK: fsor.w $w27, $w13, $w27 # encoding: [0x7a,0x5b,0x6e,0xdc]
60 # CHECK: fsor.d $w12, $w24, $w11 # encoding: [0x7a,0x6b,0xc3,0x1c]
61 # CHECK: fsub.w $w31, $w26, $w1 # encoding: [0x78,0x41,0xd7,0xdb]
62 # CHECK: fsub.d $w19, $w17, $w27 # encoding: [0x78,0x7b,0x8c,0xdb]
63 # CHECK: fsueq.w $w16, $w24, $w25 # encoding: [0x7a,0xd9,0xc4,0x1a]
64 # CHECK: fsueq.d $w18, $w14, $w14 # encoding: [0x7a,0xee,0x74,0x9a]
65 # CHECK: fsule.w $w23, $w30, $w13 # encoding: [0x7b,0xcd,0xf5,0xda]
66 # CHECK: fsule.d $w2, $w11, $w26 # encoding: [0x7b,0xfa,0x58,0x9a]
67 # CHECK: fsult.w $w11, $w26, $w22 # encoding: [0x7b,0x56,0xd2,0xda]
68 # CHECK: fsult.d $w6, $w23, $w30 # encoding: [0x7b,0x7e,0xb9,0x9a]
69 # CHECK: fsun.w $w3, $w18, $w28 # encoding: [0x7a,0x5c,0x90,0xda]
70 # CHECK: fsun.d $w18, $w11, $w19 # encoding: [0x7a,0x73,0x5c,0x9a]
71 # CHECK: fsune.w $w16, $w31, $w2 # encoding: [0x7a,0x82,0xfc,0x1c]
72 # CHECK: fsune.d $w3, $w26, $w17 # encoding: [0x7a,0xb1,0xd0,0xdc]
73 # CHECK: ftq.h $w16, $w4, $w24 # encoding: [0x7a,0x98,0x24,0x1b]
74 # CHECK: ftq.w $w5, $w5, $w25 # encoding: [0x7a,0xb9,0x29,0x5b]
75 # CHECK: madd_q.h $w16, $w20, $w10 # encoding: [0x79,0x4a,0xa4,0x1c]
76 # CHECK: madd_q.w $w28, $w2, $w9 # encoding: [0x79,0x69,0x17,0x1c]
77 # CHECK: maddr_q.h $w8, $w18, $w9 # encoding: [0x7b,0x49,0x92,0x1c]
78 # CHECK: maddr_q.w $w29, $w12, $w16 # encoding: [0x7b,0x70,0x67,0x5c]
79 # CHECK: msub_q.h $w24, $w26, $w10 # encoding: [0x79,0x8a,0xd6,0x1c]
80 # CHECK: msub_q.w $w13, $w30, $w28 # encoding: [0x79,0xbc,0xf3,0x5c]
81 # CHECK: msubr_q.h $w12, $w21, $w11 # encoding: [0x7b,0x8b,0xab,0x1c]
82 # CHECK: msubr_q.w $w1, $w14, $w20 # encoding: [0x7b,0xb4,0x70,0x5c]
83 # CHECK: mul_q.h $w6, $w16, $w30 # encoding: [0x79,0x1e,0x81,0x9c]
84 # CHECK: mul_q.w $w16, $w1, $w4 # encoding: [0x79,0x24,0x0c,0x1c]
85 # CHECK: mulr_q.h $w6, $w20, $w19 # encoding: [0x7b,0x13,0xa1,0x9c]
86 # CHECK: mulr_q.w $w27, $w1, $w20 # encoding: [0x7b,0x34,0x0e,0xdc]
88 # CHECKOBJDUMP: fadd.w $w28, $w19, $w28
89 # CHECKOBJDUMP: fadd.d $w13, $w2, $w29
90 # CHECKOBJDUMP: fcaf.w $w14, $w11, $w25
91 # CHECKOBJDUMP: fcaf.d $w1, $w1, $w19
92 # CHECKOBJDUMP: fceq.w $w1, $w23, $w16
93 # CHECKOBJDUMP: fceq.d $w0, $w8, $w16
94 # CHECKOBJDUMP: fcle.w $w16, $w9, $w24
95 # CHECKOBJDUMP: fcle.d $w27, $w14, $w1
96 # CHECKOBJDUMP: fclt.w $w28, $w8, $w8
97 # CHECKOBJDUMP: fclt.d $w30, $w25, $w11
98 # CHECKOBJDUMP: fcne.w $w2, $w18, $w23
99 # CHECKOBJDUMP: fcne.d $w14, $w20, $w15
100 # CHECKOBJDUMP: fcor.w $w10, $w18, $w25
101 # CHECKOBJDUMP: fcor.d $w17, $w25, $w11
102 # CHECKOBJDUMP: fcueq.w $w14, $w2, $w21
103 # CHECKOBJDUMP: fcueq.d $w29, $w3, $w7
104 # CHECKOBJDUMP: fcule.w $w17, $w5, $w3
105 # CHECKOBJDUMP: fcule.d $w31, $w1, $w30
106 # CHECKOBJDUMP: fcult.w $w6, $w25, $w9
107 # CHECKOBJDUMP: fcult.d $w27, $w8, $w17
108 # CHECKOBJDUMP: fcun.w $w4, $w20, $w8
109 # CHECKOBJDUMP: fcun.d $w29, $w11, $w3
110 # CHECKOBJDUMP: fcune.w $w13, $w18, $w19
111 # CHECKOBJDUMP: fcune.d $w16, $w26, $w21
112 # CHECKOBJDUMP: fdiv.w $w13, $w24, $w2
113 # CHECKOBJDUMP: fdiv.d $w19, $w4, $w25
114 # CHECKOBJDUMP: fexdo.h $w8, $w0, $w16
115 # CHECKOBJDUMP: fexdo.w $w0, $w13, $w27
116 # CHECKOBJDUMP: fexp2.w $w17, $w0, $w3
117 # CHECKOBJDUMP: fexp2.d $w22, $w0, $w10
118 # CHECKOBJDUMP: fmadd.w $w29, $w6, $w23
119 # CHECKOBJDUMP: fmadd.d $w11, $w28, $w21
120 # CHECKOBJDUMP: fmax.w $w0, $w23, $w13
121 # CHECKOBJDUMP: fmax.d $w26, $w18, $w8
122 # CHECKOBJDUMP: fmax_a.w $w10, $w16, $w10
123 # CHECKOBJDUMP: fmax_a.d $w30, $w9, $w22
124 # CHECKOBJDUMP: fmin.w $w24, $w1, $w30
125 # CHECKOBJDUMP: fmin.d $w27, $w27, $w10
126 # CHECKOBJDUMP: fmin_a.w $w10, $w29, $w20
127 # CHECKOBJDUMP: fmin_a.d $w13, $w30, $w24
128 # CHECKOBJDUMP: fmsub.w $w17, $w25, $w0
129 # CHECKOBJDUMP: fmsub.d $w8, $w18, $w16
130 # CHECKOBJDUMP: fmul.w $w3, $w15, $w15
131 # CHECKOBJDUMP: fmul.d $w9, $w30, $w10
132 # CHECKOBJDUMP: fsaf.w $w25, $w5, $w10
133 # CHECKOBJDUMP: fsaf.d $w25, $w3, $w29
134 # CHECKOBJDUMP: fseq.w $w11, $w17, $w13
135 # CHECKOBJDUMP: fseq.d $w29, $w0, $w31
136 # CHECKOBJDUMP: fsle.w $w30, $w31, $w31
137 # CHECKOBJDUMP: fsle.d $w18, $w23, $w24
138 # CHECKOBJDUMP: fslt.w $w12, $w5, $w6
139 # CHECKOBJDUMP: fslt.d $w16, $w26, $w21
140 # CHECKOBJDUMP: fsne.w $w30, $w1, $w12
141 # CHECKOBJDUMP: fsne.d $w14, $w13, $w23
142 # CHECKOBJDUMP: fsor.w $w27, $w13, $w27
143 # CHECKOBJDUMP: fsor.d $w12, $w24, $w11
144 # CHECKOBJDUMP: fsub.w $w31, $w26, $w1
145 # CHECKOBJDUMP: fsub.d $w19, $w17, $w27
146 # CHECKOBJDUMP: fsueq.w $w16, $w24, $w25
147 # CHECKOBJDUMP: fsueq.d $w18, $w14, $w14
148 # CHECKOBJDUMP: fsule.w $w23, $w30, $w13
149 # CHECKOBJDUMP: fsule.d $w2, $w11, $w26
150 # CHECKOBJDUMP: fsult.w $w11, $w26, $w22
151 # CHECKOBJDUMP: fsult.d $w6, $w23, $w30
152 # CHECKOBJDUMP: fsun.w $w3, $w18, $w28
153 # CHECKOBJDUMP: fsun.d $w18, $w11, $w19
154 # CHECKOBJDUMP: fsune.w $w16, $w31, $w2
155 # CHECKOBJDUMP: fsune.d $w3, $w26, $w17
156 # CHECKOBJDUMP: ftq.h $w16, $w4, $w24
157 # CHECKOBJDUMP: ftq.w $w5, $w5, $w25
158 # CHECKOBJDUMP: madd_q.h $w16, $w20, $w10
159 # CHECKOBJDUMP: madd_q.w $w28, $w2, $w9
160 # CHECKOBJDUMP: maddr_q.h $w8, $w18, $w9
161 # CHECKOBJDUMP: maddr_q.w $w29, $w12, $w16
162 # CHECKOBJDUMP: msub_q.h $w24, $w26, $w10
163 # CHECKOBJDUMP: msub_q.w $w13, $w30, $w28
164 # CHECKOBJDUMP: msubr_q.h $w12, $w21, $w11
165 # CHECKOBJDUMP: msubr_q.w $w1, $w14, $w20
166 # CHECKOBJDUMP: mul_q.h $w6, $w16, $w30
167 # CHECKOBJDUMP: mul_q.w $w16, $w1, $w4
168 # CHECKOBJDUMP: mulr_q.h $w6, $w20, $w19
169 # CHECKOBJDUMP: mulr_q.w $w27, $w1, $w20
171 fadd.w $w28, $w19, $w28
172 fadd.d $w13, $w2, $w29
173 fcaf.w $w14, $w11, $w25
174 fcaf.d $w1, $w1, $w19
175 fceq.w $w1, $w23, $w16
176 fceq.d $w0, $w8, $w16
177 fcle.w $w16, $w9, $w24
178 fcle.d $w27, $w14, $w1
179 fclt.w $w28, $w8, $w8
180 fclt.d $w30, $w25, $w11
181 fcne.w $w2, $w18, $w23
182 fcne.d $w14, $w20, $w15
183 fcor.w $w10, $w18, $w25
184 fcor.d $w17, $w25, $w11
185 fcueq.w $w14, $w2, $w21
186 fcueq.d $w29, $w3, $w7
187 fcule.w $w17, $w5, $w3
188 fcule.d $w31, $w1, $w30
189 fcult.w $w6, $w25, $w9
190 fcult.d $w27, $w8, $w17
191 fcun.w $w4, $w20, $w8
192 fcun.d $w29, $w11, $w3
193 fcune.w $w13, $w18, $w19
194 fcune.d $w16, $w26, $w21
195 fdiv.w $w13, $w24, $w2
196 fdiv.d $w19, $w4, $w25
197 fexdo.h $w8, $w0, $w16
198 fexdo.w $w0, $w13, $w27
199 fexp2.w $w17, $w0, $w3
200 fexp2.d $w22, $w0, $w10
201 fmadd.w $w29, $w6, $w23
202 fmadd.d $w11, $w28, $w21
203 fmax.w $w0, $w23, $w13
204 fmax.d $w26, $w18, $w8
205 fmax_a.w $w10, $w16, $w10
206 fmax_a.d $w30, $w9, $w22
207 fmin.w $w24, $w1, $w30
208 fmin.d $w27, $w27, $w10
209 fmin_a.w $w10, $w29, $w20
210 fmin_a.d $w13, $w30, $w24
211 fmsub.w $w17, $w25, $w0
212 fmsub.d $w8, $w18, $w16
213 fmul.w $w3, $w15, $w15
214 fmul.d $w9, $w30, $w10
215 fsaf.w $w25, $w5, $w10
216 fsaf.d $w25, $w3, $w29
217 fseq.w $w11, $w17, $w13
218 fseq.d $w29, $w0, $w31
219 fsle.w $w30, $w31, $w31
220 fsle.d $w18, $w23, $w24
221 fslt.w $w12, $w5, $w6
222 fslt.d $w16, $w26, $w21
223 fsne.w $w30, $w1, $w12
224 fsne.d $w14, $w13, $w23
225 fsor.w $w27, $w13, $w27
226 fsor.d $w12, $w24, $w11
227 fsub.w $w31, $w26, $w1
228 fsub.d $w19, $w17, $w27
229 fsueq.w $w16, $w24, $w25
230 fsueq.d $w18, $w14, $w14
231 fsule.w $w23, $w30, $w13
232 fsule.d $w2, $w11, $w26
233 fsult.w $w11, $w26, $w22
234 fsult.d $w6, $w23, $w30
235 fsun.w $w3, $w18, $w28
236 fsun.d $w18, $w11, $w19
237 fsune.w $w16, $w31, $w2
238 fsune.d $w3, $w26, $w17
239 ftq.h $w16, $w4, $w24
241 madd_q.h $w16, $w20, $w10
242 madd_q.w $w28, $w2, $w9
243 maddr_q.h $w8, $w18, $w9
244 maddr_q.w $w29, $w12, $w16
245 msub_q.h $w24, $w26, $w10
246 msub_q.w $w13, $w30, $w28
247 msubr_q.h $w12, $w21, $w11
248 msubr_q.w $w1, $w14, $w20
249 mul_q.h $w6, $w16, $w30
250 mul_q.w $w16, $w1, $w4
251 mulr_q.h $w6, $w20, $w19
252 mulr_q.w $w27, $w1, $w20