1# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 -mattr=+msa -arch=mips | FileCheck %s
2#
3# RUN: llvm-mc %s -triple=mipsel-unknown-linux -mcpu=mips32r2 -mattr=+msa -arch=mips -filetype=obj -o - | llvm-objdump -d -triple=mipsel-unknown-linux -mattr=+msa -arch=mips - | FileCheck %s -check-prefix=CHECKOBJDUMP
4#
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]
87
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
170
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
240                ftq.w           $w5, $w5, $w25
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
253