1# RUN: llvm-mc %s -triple=mipsel -show-encoding -show-inst -mattr=micromips \
2# RUN: -mcpu=mips32r2 | FileCheck -check-prefix=CHECK-EL %s
3# RUN: llvm-mc %s -triple=mips -show-encoding -show-inst -mattr=micromips \
4# RUN: -mcpu=mips32r2 | FileCheck -check-prefix=CHECK-EB %s
5# Check that the assembler can handle the documented syntax
6# for fpu instructions
7#------------------------------------------------------------------------------
8# FPU Instructions
9#------------------------------------------------------------------------------
10# Little endian
11#------------------------------------------------------------------------------
12# CHECK-EL: add.s      $f4, $f6, $f8    # encoding: [0x06,0x55,0x30,0x20]
13# CHECK-EL: add.d      $f4, $f6, $f8    # encoding: [0x06,0x55,0x30,0x21]
14# CHECK-EL: div.s      $f4, $f6, $f8    # encoding: [0x06,0x55,0xf0,0x20]
15# CHECK-EL: div.d      $f4, $f6, $f8    # encoding: [0x06,0x55,0xf0,0x21]
16# CHECK-EL: mul.s      $f4, $f6, $f8    # encoding: [0x06,0x55,0xb0,0x20]
17# CHECK-EL: mul.d      $f4, $f6, $f8    # encoding: [0x06,0x55,0xb0,0x21]
18# CHECK-EL: sub.s      $f4, $f6, $f8    # encoding: [0x06,0x55,0x70,0x20]
19# CHECK-EL: sub.d      $f4, $f6, $f8    # encoding: [0x06,0x55,0x70,0x21]
20# CHECK-EL: lwc1       $f2, 4($6)       # encoding: [0x46,0x9c,0x04,0x00]
21# CHECK-EL: ldc1       $f2, 4($6)       # encoding: [0x46,0xbc,0x04,0x00]
22# CHECK-EL: swc1       $f2, 4($6)       # encoding: [0x46,0x98,0x04,0x00]
23# CHECK-EL: sdc1       $f2, 4($6)       # encoding: [0x46,0xb8,0x04,0x00]
24# CHECK-EL: bc1f       1332             # encoding: [0x80,0x43,0x9a,0x02]
25# CHECK-EL: nop                         # encoding: [0x00,0x00,0x00,0x00]
26# CHECK-EL: bc1t       1332             # encoding: [0xa0,0x43,0x9a,0x02]
27# CHECK-EL: nop                         # encoding: [0x00,0x00,0x00,0x00]
28# CHECK-EL: ceil.w.s   $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x1b]
29# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} CEIL_W_S_MM
30# CHECK-EL: ceil.w.d   $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x5b]
31# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} CEIL_W_MM
32# CHECK-EL: cvt.w.s    $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x09]
33# CHECK-EL: cvt.w.d    $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x49]
34# CHECK-EL: floor.w.s  $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x0b]
35# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} FLOOR_W_S_MM
36# CHECK-EL: floor.w.d  $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x4b]
37# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} FLOOR_W_MM
38# CHECK-EL: round.w.s  $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x3b]
39# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} ROUND_W_S_MM
40# CHECK-EL: round.w.d  $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x7b]
41# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} ROUND_W_MM
42# CHECK-EL: sqrt.s     $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x0a]
43# CHECK-EL: sqrt.d     $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x4a]
44# CHECK-EL: trunc.w.s  $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x2b]
45# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} TRUNC_W_S_MM
46# CHECK-EL: trunc.w.d  $f6, $f8         # encoding: [0xc8,0x54,0x3b,0x6b]
47# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} TRUNC_W_MM
48# CHECK-EL: abs.s      $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x03]
49# CHECK-EL: abs.d      $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x23]
50# CHECK-EL: mov.s      $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x00]
51# CHECK-EL: mov.d      $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x20]
52# CHECK-EL: neg.s      $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x0b]
53# CHECK-EL: neg.d      $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x2b]
54# CHECK-EL: cvt.d.s    $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x13]
55# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} CVT_D32_S_MM
56# CHECK-EL: cvt.d.w    $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x33]
57# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} CVT_D32_W_MM
58# CHECK-EL: cvt.s.d    $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x1b]
59# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} CVT_S_D32_MM
60# CHECK-EL: cvt.s.w    $f6, $f8         # encoding: [0xc8,0x54,0x7b,0x3b]
61# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} CVT_S_W_MM
62# CHECK-EL: cfc1    $6, $0              # encoding: [0xc0,0x54,0x3b,0x10]
63# CHECK-EL: ctc1    $6, $0              # encoding: [0xc0,0x54,0x3b,0x18]
64# CHECK-EL: mfc1    $6, $f8             # encoding: [0xc8,0x54,0x3b,0x20]
65# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MFC1_MM
66# CHECK-EL: mtc1    $6, $f8             # encoding: [0xc8,0x54,0x3b,0x28]
67# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MTC1_MM
68# CHECK-EL: mfhc1   $6, $f8             # encoding: [0xc8,0x54,0x3b,0x30]
69# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MFHC1_D32_MM
70# CHECK-EL: mthc1   $6, $f8             # encoding: [0xc8,0x54,0x3b,0x38]
71# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MTHC1_D32_MM
72# CHECK-EL: movz.s  $f4, $f6, $7        # encoding: [0xe6,0x54,0x78,0x20]
73# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVZ_I_S_MM
74# CHECK-EL: movz.d  $f4, $f6, $7        # encoding: [0xe6,0x54,0x78,0x21]
75# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVZ_I_D32_MM
76# CHECK-EL: movn.s  $f4, $f6, $7        # encoding: [0xe6,0x54,0x38,0x20]
77# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVN_I_S_MM
78# CHECK-EL: movn.d  $f4, $f6, $7        # encoding: [0xe6,0x54,0x38,0x21]
79# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVN_I_D32_MM
80# CHECK-EL: movt.s  $f4, $f6, $fcc0     # encoding: [0x86,0x54,0x60,0x00]
81# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVT_S_MM
82# CHECK-EL: movt.d  $f4, $f6, $fcc0     # encoding: [0x86,0x54,0x60,0x02]
83# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVT_D32_MM
84# CHECK-EL: movf.s  $f4, $f6, $fcc0     # encoding: [0x86,0x54,0x20,0x00]
85# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVF_S_MM
86# CHECK-EL: movf.d  $f4, $f6, $fcc0     # encoding: [0x86,0x54,0x20,0x02]
87# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} MOVF_D32_MM
88# CHECK-EL: madd.s  $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x01,0x11]
89# CHECK-EL: madd.d  $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x09,0x11]
90# CHECK-EL: msub.s  $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x21,0x11]
91# CHECK-EL: msub.d  $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x29,0x11]
92# CHECK-EL: nmadd.s $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x02,0x11]
93# CHECK-EL: nmadd.d $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x0a,0x11]
94# CHECK-EL: nmsub.s $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x22,0x11]
95# CHECK-EL: nmsub.d $f2, $f4, $f6, $f8  # encoding: [0x06,0x55,0x2a,0x11]
96# CHECK-EL: c.f.s $f6, $f7              # encoding: [0xe6,0x54,0x3c,0x00]
97# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_F_S_MM
98# CHECK-EL: c.un.s  $f6, $f7            # encoding: [0xe6,0x54,0x7c,0x00]
99# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_UN_S_MM
100# CHECK-EL: c.eq.s  $f6, $f7            # encoding: [0xe6,0x54,0xbc,0x00]
101# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_EQ_S_MM
102# CHECK-EL: c.olt.s $f6, $f7            # encoding: [0xe6,0x54,0x3c,0x01]
103# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_OLT_S_MM
104# CHECK-EL: c.ult.s $f6, $f7            # encoding: [0xe6,0x54,0x7c,0x01]
105# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_ULT_S_MM
106# CHECK-EL: c.ole.s $f6, $f7            # encoding: [0xe6,0x54,0xbc,0x01]
107# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_OLE_S_MM
108# CHECK-EL: c.ule.s $f6, $f7            # encoding: [0xe6,0x54,0xfc,0x01]
109# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_ULE_S_MM
110# CHECK-EL: c.sf.s  $f6, $f7            # encoding: [0xe6,0x54,0x3c,0x02]
111# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_SF_S_MM
112# CHECK-EL: c.ngle.s  $f6, $f7          # encoding: [0xe6,0x54,0x7c,0x02]
113# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGLE_S_MM
114# CHECK-EL: c.seq.s $f6, $f7            # encoding: [0xe6,0x54,0xbc,0x02]
115# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_SEQ_S_MM
116# CHECK-EL: c.ngl.s $f6, $f7            # encoding: [0xe6,0x54,0xfc,0x02]
117# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGL_S_MM
118# CHECK-EL: c.lt.s  $f6, $f7            # encoding: [0xe6,0x54,0x3c,0x03]
119# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_LT_S_MM
120# CHECK-EL: c.nge.s $f6, $f7            # encoding: [0xe6,0x54,0x7c,0x03]
121# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGE_S_MM
122# CHECK-EL: c.le.s  $f6, $f7            # encoding: [0xe6,0x54,0xbc,0x03]
123# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_LE_S_MM
124# CHECK-EL: c.ngt.s $f6, $f7            # encoding: [0xe6,0x54,0xfc,0x03]
125# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGT_S_MM
126# CHECK-EL: c.sf.d  $f30, $f0           # encoding: [0x1e,0x54,0x3c,0x06]
127# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_SF_D32_MM
128# CHECK-EL: c.f.d $f12, $f14            # encoding: [0xcc,0x55,0x3c,0x04]
129# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_F_D32_MM
130# CHECK-EL: c.un.d  $f12, $f14          # encoding: [0xcc,0x55,0x7c,0x04]
131# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_UN_D32_MM
132# CHECK-EL: c.eq.d  $f12, $f14          # encoding: [0xcc,0x55,0xbc,0x04]
133# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_EQ_D32_MM
134# CHECK-EL: c.ueq.d $f12, $f14          # encoding: [0xcc,0x55,0xfc,0x04]
135# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_UEQ_D32_MM
136# CHECK-EL: c.olt.d $f12, $f14          # encoding: [0xcc,0x55,0x3c,0x05]
137# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_OLT_D32_MM
138# CHECK-EL: c.ult.d $f12, $f14          # encoding: [0xcc,0x55,0x7c,0x05]
139# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_ULT_D32_MM
140# CHECK-EL: c.ole.d $f12, $f14          # encoding: [0xcc,0x55,0xbc,0x05]
141# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_OLE_D32_MM
142# CHECK-EL: c.ule.d $f12, $f14          # encoding: [0xcc,0x55,0xfc,0x05]
143# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_ULE_D32_MM
144# CHECK-EL: c.sf.d  $f12, $f14          # encoding: [0xcc,0x55,0x3c,0x06]
145# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_SF_D32_MM
146# CHECK-EL: c.ngle.d  $f12, $f14        # encoding: [0xcc,0x55,0x7c,0x06]
147# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGLE_D32_MM
148# CHECK-EL: c.seq.d $f12, $f14          # encoding: [0xcc,0x55,0xbc,0x06]
149# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_SEQ_D32_MM
150# CHECK-EL: c.ngl.d $f12, $f14          # encoding: [0xcc,0x55,0xfc,0x06]
151# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGL_D32_MM
152# CHECK-EL: c.lt.d  $f12, $f14          # encoding: [0xcc,0x55,0x3c,0x07]
153# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_LT_D32_MM
154# CHECK-EL: c.nge.d $f12, $f14          # encoding: [0xcc,0x55,0x7c,0x07]
155# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGE_D32_MM
156# CHECK-EL: c.le.d  $f12, $f14          # encoding: [0xcc,0x55,0xbc,0x07]
157# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_LE_D32_MM
158# CHECK-EL: c.ngt.d $f12, $f14          # encoding: [0xcc,0x55,0xfc,0x07]
159# CHECK-EL-NEXT:                        # <MCInst #{{[0-9]+}} C_NGT_D32_MM
160#------------------------------------------------------------------------------
161# Big endian
162#------------------------------------------------------------------------------
163# CHECK-EB: add.s $f4, $f6, $f8         # encoding: [0x55,0x06,0x20,0x30]
164# CHECK-EB: add.d $f4, $f6, $f8         # encoding: [0x55,0x06,0x21,0x30]
165# CHECK-EB: div.s $f4, $f6, $f8         # encoding: [0x55,0x06,0x20,0xf0]
166# CHECK-EB: div.d $f4, $f6, $f8         # encoding: [0x55,0x06,0x21,0xf0]
167# CHECK-EB: mul.s $f4, $f6, $f8         # encoding: [0x55,0x06,0x20,0xb0]
168# CHECK-EB: mul.d $f4, $f6, $f8         # encoding: [0x55,0x06,0x21,0xb0]
169# CHECK-EB: sub.s $f4, $f6, $f8         # encoding: [0x55,0x06,0x20,0x70]
170# CHECK-EB: sub.d $f4, $f6, $f8         # encoding: [0x55,0x06,0x21,0x70]
171# CHECK-EB: lwc1  $f2, 4($6)            # encoding: [0x9c,0x46,0x00,0x04]
172# CHECK-EB: ldc1  $f2, 4($6)            # encoding: [0xbc,0x46,0x00,0x04]
173# CHECK-EB: swc1  $f2, 4($6)            # encoding: [0x98,0x46,0x00,0x04]
174# CHECK-EB: sdc1  $f2, 4($6)            # encoding: [0xb8,0x46,0x00,0x04]
175# CHECK-EB: bc1f  1332                  # encoding: [0x43,0x80,0x02,0x9a]
176# CHECK-EB: nop                         # encoding: [0x00,0x00,0x00,0x00]
177# CHECK-EB: bc1t  1332                  # encoding: [0x43,0xa0,0x02,0x9a]
178# CHECK-EB: nop                         # encoding: [0x00,0x00,0x00,0x00]
179# CHECK-EB: ceil.w.s  $f6, $f8          # encoding: [0x54,0xc8,0x1b,0x3b]
180# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} CEIL_W_S_MM
181# CHECK-EB: ceil.w.d  $f6, $f8          # encoding: [0x54,0xc8,0x5b,0x3b]
182# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} CEIL_W_MM
183# CHECK-EB: cvt.w.s   $f6, $f8          # encoding: [0x54,0xc8,0x09,0x3b]
184# CHECK-EB: cvt.w.d   $f6, $f8          # encoding: [0x54,0xc8,0x49,0x3b]
185# CHECK-EB: floor.w.s $f6, $f8          # encoding: [0x54,0xc8,0x0b,0x3b]
186# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} FLOOR_W_S_MM
187# CHECK-EB: floor.w.d $f6, $f8          # encoding: [0x54,0xc8,0x4b,0x3b]
188# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} FLOOR_W_MM
189# CHECK-EB: round.w.s $f6, $f8          # encoding: [0x54,0xc8,0x3b,0x3b]
190# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} ROUND_W_S_MM
191# CHECK-EB: round.w.d $f6, $f8          # encoding: [0x54,0xc8,0x7b,0x3b]
192# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} ROUND_W_MM
193# CHECK-EB: sqrt.s    $f6, $f8          # encoding: [0x54,0xc8,0x0a,0x3b]
194# CHECK-EB: sqrt.d    $f6, $f8          # encoding: [0x54,0xc8,0x4a,0x3b]
195# CHECK-EB: trunc.w.s $f6, $f8          # encoding: [0x54,0xc8,0x2b,0x3b]
196# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} TRUNC_W_S_MM
197# CHECK-EB: trunc.w.d $f6, $f8          # encoding: [0x54,0xc8,0x6b,0x3b]
198# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} TRUNC_W_MM
199# CHECK-EB: abs.s $f6, $f8              # encoding: [0x54,0xc8,0x03,0x7b]
200# CHECK-EB: abs.d $f6, $f8              # encoding: [0x54,0xc8,0x23,0x7b]
201# CHECK-EB: mov.s $f6, $f8              # encoding: [0x54,0xc8,0x00,0x7b]
202# CHECK-EB: mov.d $f6, $f8              # encoding: [0x54,0xc8,0x20,0x7b]
203# CHECK-EB: neg.s $f6, $f8              # encoding: [0x54,0xc8,0x0b,0x7b]
204# CHECK-EB: neg.d $f6, $f8              # encoding: [0x54,0xc8,0x2b,0x7b]
205# CHECK-EB: cvt.d.s $f6, $f8            # encoding: [0x54,0xc8,0x13,0x7b]
206# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} CVT_D32_S_MM
207# CHECK-EB: cvt.d.w $f6, $f8            # encoding: [0x54,0xc8,0x33,0x7b]
208# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} CVT_D32_W_MM
209# CHECK-EB: cvt.s.d $f6, $f8            # encoding: [0x54,0xc8,0x1b,0x7b]
210# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} CVT_S_D32_MM
211# CHECK-EB: cvt.s.w $f6, $f8            # encoding: [0x54,0xc8,0x3b,0x7b]
212# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} CVT_S_W_MM
213# CHECK-EB: cfc1    $6, $0              # encoding: [0x54,0xc0,0x10,0x3b]
214# CHECK-EB: ctc1    $6, $0              # encoding: [0x54,0xc0,0x18,0x3b]
215# CHECK-EB: mfc1    $6, $f8             # encoding: [0x54,0xc8,0x20,0x3b]
216# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MFC1_MM
217# CHECK-EB: mtc1    $6, $f8             # encoding: [0x54,0xc8,0x28,0x3b]
218# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MTC1_MM
219# CHECK-EB: mfhc1   $6, $f8             # encoding: [0x54,0xc8,0x30,0x3b]
220# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MFHC1_D32_MM
221# CHECK-EB: mthc1   $6, $f8             # encoding: [0x54,0xc8,0x38,0x3b]
222# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MTHC1_D32_MM
223# CHECK-EB: movz.s  $f4, $f6, $7        # encoding: [0x54,0xe6,0x20,0x78]
224# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVZ_I_S_MM
225# CHECK-EB: movz.d  $f4, $f6, $7        # encoding: [0x54,0xe6,0x21,0x78]
226# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVZ_I_D32_MM
227# CHECK-EB: movn.s  $f4, $f6, $7        # encoding: [0x54,0xe6,0x20,0x38]
228# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVN_I_S_MM
229# CHECK-EB: movn.d  $f4, $f6, $7        # encoding: [0x54,0xe6,0x21,0x38]
230# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVN_I_D32_MM
231# CHECK-EB: movt.s  $f4, $f6, $fcc0     # encoding: [0x54,0x86,0x00,0x60]
232# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVT_S_MM
233# CHECK-EB: movt.d  $f4, $f6, $fcc0     # encoding: [0x54,0x86,0x02,0x60]
234# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVT_D32_MM
235# CHECK-EB: movf.s  $f4, $f6, $fcc0     # encoding: [0x54,0x86,0x00,0x20]
236# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVF_S_MM
237# CHECK-EB: movf.d  $f4, $f6, $fcc0     # encoding: [0x54,0x86,0x02,0x20]
238# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MOVF_D32_MM
239# CHECK-EB: madd.s  $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x01]
240# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MADD_S_MM
241# CHECK-EB: madd.d  $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x09]
242# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MADD_D32_MM
243# CHECK-EB: msub.s  $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x21]
244# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MSUB_S_MM
245# CHECK-EB: msub.d  $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x29]
246# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} MSUB_D32_MM
247# CHECK-EB: nmadd.s $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x02]
248# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} NMADD_S_MM
249# CHECK-EB: nmadd.d $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x0a]
250# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} NMADD_D32_MM
251# CHECK-EB: nmsub.s $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x22]
252# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} NMSUB_S_MM
253# CHECK-EB: nmsub.d $f2, $f4, $f6, $f8  # encoding: [0x55,0x06,0x11,0x2a]
254# CHECK-EB: c.f.s $f6, $f7              # encoding: [0x54,0xe6,0x00,0x3c]
255# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_F_S_MM
256# CHECK-EB: c.un.s  $f6, $f7            # encoding: [0x54,0xe6,0x00,0x7c]
257# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_UN_S_MM
258# CHECK-EB: c.eq.s  $f6, $f7            # encoding: [0x54,0xe6,0x00,0xbc]
259# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_EQ_S_MM
260# CHECK-EB: c.olt.s $f6, $f7            # encoding: [0x54,0xe6,0x01,0x3c]
261# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_OLT_S_MM
262# CHECK-EB: c.ult.s $f6, $f7            # encoding: [0x54,0xe6,0x01,0x7c]
263# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_ULT_S_MM
264# CHECK-EB: c.ole.s $f6, $f7            # encoding: [0x54,0xe6,0x01,0xbc]
265# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_OLE_S_MM
266# CHECK-EB: c.ule.s $f6, $f7            # encoding: [0x54,0xe6,0x01,0xfc]
267# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_ULE_S_MM
268# CHECK-EB: c.sf.s  $f6, $f7            # encoding: [0x54,0xe6,0x02,0x3c]
269# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_SF_S_MM
270# CHECK-EB: c.ngle.s  $f6, $f7          # encoding: [0x54,0xe6,0x02,0x7c]
271# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGLE_S_MM
272# CHECK-EB: c.seq.s $f6, $f7            # encoding: [0x54,0xe6,0x02,0xbc]
273# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_SEQ_S_MM
274# CHECK-EB: c.ngl.s $f6, $f7            # encoding: [0x54,0xe6,0x02,0xfc]
275# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGL_S_MM
276# CHECK-EB: c.lt.s  $f6, $f7            # encoding: [0x54,0xe6,0x03,0x3c]
277# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_LT_S_MM
278# CHECK-EB: c.nge.s $f6, $f7            # encoding: [0x54,0xe6,0x03,0x7c]
279# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGE_S_MM
280# CHECK-EB: c.le.s  $f6, $f7            # encoding: [0x54,0xe6,0x03,0xbc]
281# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_LE_S_MM
282# CHECK-EB: c.ngt.s $f6, $f7            # encoding: [0x54,0xe6,0x03,0xfc]
283# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGT_S_MM
284# CHECK-EB: c.sf.d  $f30, $f0           # encoding: [0x54,0x1e,0x06,0x3c]
285# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_SF_D32_MM
286# CHECK-EB: c.f.d $f12, $f14            # encoding: [0x55,0xcc,0x04,0x3c]
287# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_F_D32_MM
288# CHECK-EB: c.un.d  $f12, $f14          # encoding: [0x55,0xcc,0x04,0x7c]
289# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_UN_D32_MM
290# CHECK-EB: c.eq.d  $f12, $f14          # encoding: [0x55,0xcc,0x04,0xbc]
291# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_EQ_D32_MM
292# CHECK-EB: c.ueq.d $f12, $f14          # encoding: [0x55,0xcc,0x04,0xfc]
293# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_UEQ_D32_MM
294# CHECK-EB: c.olt.d $f12, $f14          # encoding: [0x55,0xcc,0x05,0x3c]
295# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_OLT_D32_MM
296# CHECK-EB: c.ult.d $f12, $f14          # encoding: [0x55,0xcc,0x05,0x7c]
297# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_ULT_D32_MM
298# CHECK-EB: c.ole.d $f12, $f14          # encoding: [0x55,0xcc,0x05,0xbc]
299# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_OLE_D32_MM
300# CHECK-EB: c.ule.d $f12, $f14          # encoding: [0x55,0xcc,0x05,0xfc]
301# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_ULE_D32_MM
302# CHECK-EB: c.sf.d  $f12, $f14          # encoding: [0x55,0xcc,0x06,0x3c]
303# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_SF_D32_MM
304# CHECK-EB: c.ngle.d  $f12, $f14        # encoding: [0x55,0xcc,0x06,0x7c]
305# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGLE_D32_MM
306# CHECK-EB: c.seq.d $f12, $f14          # encoding: [0x55,0xcc,0x06,0xbc]
307# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_SEQ_D32_MM
308# CHECK-EB: c.ngl.d $f12, $f14          # encoding: [0x55,0xcc,0x06,0xfc]
309# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGL_D32_MM
310# CHECK-EB: c.lt.d  $f12, $f14          # encoding: [0x55,0xcc,0x07,0x3c]
311# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_LT_D32_MM
312# CHECK-EB: c.nge.d $f12, $f14          # encoding: [0x55,0xcc,0x07,0x7c]
313# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGE_D32_MM
314# CHECK-EB: c.le.d  $f12, $f14          # encoding: [0x55,0xcc,0x07,0xbc]
315# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_LE_D32_MM
316# CHECK-EB: c.ngt.d $f12, $f14          # encoding: [0x55,0xcc,0x07,0xfc]
317# CHECK-EB-NEXT:                        # <MCInst #{{[0-9]+}} C_NGT_D32_MM
318
319    add.s      $f4, $f6, $f8
320    add.d      $f4, $f6, $f8
321    div.s      $f4, $f6, $f8
322    div.d      $f4, $f6, $f8
323    mul.s      $f4, $f6, $f8
324    mul.d      $f4, $f6, $f8
325    sub.s      $f4, $f6, $f8
326    sub.d      $f4, $f6, $f8
327    lwc1       $f2, 4($6)
328    ldc1       $f2, 4($6)
329    swc1       $f2, 4($6)
330    sdc1       $f2, 4($6)
331    bc1f       1332
332    bc1t       1332
333    ceil.w.s   $f6, $f8
334    ceil.w.d   $f6, $f8
335    cvt.w.s    $f6, $f8
336    cvt.w.d    $f6, $f8
337    floor.w.s  $f6, $f8
338    floor.w.d  $f6, $f8
339    round.w.s  $f6, $f8
340    round.w.d  $f6, $f8
341    sqrt.s     $f6, $f8
342    sqrt.d     $f6, $f8
343    trunc.w.s  $f6, $f8
344    trunc.w.d  $f6, $f8
345    abs.s      $f6, $f8
346    abs.d      $f6, $f8
347    mov.s      $f6, $f8
348    mov.d      $f6, $f8
349    neg.s      $f6, $f8
350    neg.d      $f6, $f8
351    cvt.d.s    $f6, $f8
352    cvt.d.w    $f6, $f8
353    cvt.s.d    $f6, $f8
354    cvt.s.w    $f6, $f8
355    cfc1       $6, $0
356    ctc1       $6, $0
357    mfc1       $6, $f8
358    mtc1       $6, $f8
359    mfhc1      $6, $f8
360    mthc1      $6, $f8
361    movz.s     $f4, $f6, $7
362    movz.d     $f4, $f6, $7
363    movn.s     $f4, $f6, $7
364    movn.d     $f4, $f6, $7
365    movt.s     $f4, $f6, $fcc0
366    movt.d     $f4, $f6, $fcc0
367    movf.s     $f4, $f6, $fcc0
368    movf.d     $f4, $f6, $fcc0
369    madd.s     $f2, $f4, $f6, $f8
370    madd.d     $f2, $f4, $f6, $f8
371    msub.s     $f2, $f4, $f6, $f8
372    msub.d     $f2, $f4, $f6, $f8
373    nmadd.s    $f2, $f4, $f6, $f8
374    nmadd.d    $f2, $f4, $f6, $f8
375    nmsub.s    $f2, $f4, $f6, $f8
376    nmsub.d    $f2, $f4, $f6, $f8
377    c.f.s $f6, $f7
378    c.un.s   $f6, $f7
379    c.eq.s   $f6, $f7
380    c.olt.s  $f6, $f7
381    c.ult.s  $f6, $f7
382    c.ole.s  $f6, $f7
383    c.ule.s  $f6, $f7
384    c.sf.s   $f6, $f7
385    c.ngle.s $f6, $f7
386    c.seq.s  $f6, $f7
387    c.ngl.s  $f6, $f7
388    c.lt.s   $f6, $f7
389    c.nge.s  $f6, $f7
390    c.le.s   $f6, $f7
391    c.ngt.s  $f6, $f7
392    c.sf.d   $f30, $f0
393    c.f.d    $f12, $f14
394    c.un.d   $f12, $f14
395    c.eq.d   $f12, $f14
396    c.ueq.d  $f12, $f14
397    c.olt.d  $f12, $f14
398    c.ult.d  $f12, $f14
399    c.ole.d  $f12, $f14
400    c.ule.d  $f12, $f14
401    c.sf.d   $f12, $f14
402    c.ngle.d $f12, $f14
403    c.seq.d  $f12, $f14
404    c.ngl.d  $f12, $f14
405    c.lt.d   $f12, $f14
406    c.nge.d  $f12, $f14
407    c.le.d   $f12, $f14
408    c.ngt.d  $f12, $f14
409