1
2# RUN: llvm-mc -triple powerpc64-unknown-unknown --show-encoding %s | FileCheck %s
3
4# Floating-point facility
5
6# Floating-point load instructions
7
8# CHECK: lfs 2, 128(4)                   # encoding: [0xc0,0x44,0x00,0x80]
9         lfs 2, 128(4)
10# CHECK: lfsx 2, 3, 4                    # encoding: [0x7c,0x43,0x24,0x2e]
11         lfsx 2, 3, 4
12# CHECK: lfsu 2, 128(4)                  # encoding: [0xc4,0x44,0x00,0x80]
13         lfsu 2, 128(4)
14# CHECK: lfsux 2, 3, 4                   # encoding: [0x7c,0x43,0x24,0x6e]
15         lfsux 2, 3, 4
16# CHECK: lfd 2, 128(4)                   # encoding: [0xc8,0x44,0x00,0x80]
17         lfd 2, 128(4)
18# CHECK: lfdx 2, 3, 4                    # encoding: [0x7c,0x43,0x24,0xae]
19         lfdx 2, 3, 4
20# CHECK: lfdu 2, 128(4)                  # encoding: [0xcc,0x44,0x00,0x80]
21         lfdu 2, 128(4)
22# CHECK: lfdux 2, 3, 4                   # encoding: [0x7c,0x43,0x24,0xee]
23         lfdux 2, 3, 4
24# CHECK: lfiwax 2, 3, 4                  # encoding: [0x7c,0x43,0x26,0xae]
25         lfiwax 2, 3, 4
26# CHECK: lfiwzx 2, 3, 4                  # encoding: [0x7c,0x43,0x26,0xee]
27         lfiwzx 2, 3, 4
28
29# Floating-point store instructions
30
31# CHECK: stfs 2, 128(4)                  # encoding: [0xd0,0x44,0x00,0x80]
32         stfs 2, 128(4)
33# CHECK: stfsx 2, 3, 4                   # encoding: [0x7c,0x43,0x25,0x2e]
34         stfsx 2, 3, 4
35# CHECK: stfsu 2, 128(4)                 # encoding: [0xd4,0x44,0x00,0x80]
36         stfsu 2, 128(4)
37# CHECK: stfsux 2, 3, 4                  # encoding: [0x7c,0x43,0x25,0x6e]
38         stfsux 2, 3, 4
39# CHECK: stfd 2, 128(4)                  # encoding: [0xd8,0x44,0x00,0x80]
40         stfd 2, 128(4)
41# CHECK: stfdx 2, 3, 4                   # encoding: [0x7c,0x43,0x25,0xae]
42         stfdx 2, 3, 4
43# CHECK: stfdu 2, 128(4)                 # encoding: [0xdc,0x44,0x00,0x80]
44         stfdu 2, 128(4)
45# CHECK: stfdux 2, 3, 4                  # encoding: [0x7c,0x43,0x25,0xee]
46         stfdux 2, 3, 4
47# CHECK: stfiwx 2, 3, 4                  # encoding: [0x7c,0x43,0x27,0xae]
48         stfiwx 2, 3, 4
49
50# Floating-point move instructions
51
52# CHECK: fmr 2, 3                        # encoding: [0xfc,0x40,0x18,0x90]
53         fmr 2, 3
54# CHECK: fmr. 2, 3                       # encoding: [0xfc,0x40,0x18,0x91]
55         fmr. 2, 3
56# CHECK: fneg 2, 3                       # encoding: [0xfc,0x40,0x18,0x50]
57         fneg 2, 3
58# CHECK: fneg. 2, 3                      # encoding: [0xfc,0x40,0x18,0x51]
59         fneg. 2, 3
60# CHECK: fabs 2, 3                       # encoding: [0xfc,0x40,0x1a,0x10]
61         fabs 2, 3
62# CHECK: fabs. 2, 3                      # encoding: [0xfc,0x40,0x1a,0x11]
63         fabs. 2, 3
64# CHECK: fnabs 2, 3                      # encoding: [0xfc,0x40,0x19,0x10]
65         fnabs 2, 3
66# CHECK: fnabs. 2, 3                     # encoding: [0xfc,0x40,0x19,0x11]
67         fnabs. 2, 3
68# CHECK: fcpsgn 2, 3, 4                  # encoding: [0xfc,0x43,0x20,0x10]
69         fcpsgn 2, 3, 4
70# CHECK: fcpsgn. 2, 3, 4                 # encoding: [0xfc,0x43,0x20,0x11]
71         fcpsgn. 2, 3, 4
72
73# Floating-point arithmetic instructions
74
75# CHECK: fadd 2, 3, 4                    # encoding: [0xfc,0x43,0x20,0x2a]
76         fadd 2, 3, 4
77# CHECK: fadd. 2, 3, 4                   # encoding: [0xfc,0x43,0x20,0x2b]
78         fadd. 2, 3, 4
79# CHECK: fadds 2, 3, 4                   # encoding: [0xec,0x43,0x20,0x2a]
80         fadds 2, 3, 4
81# CHECK: fadds. 2, 3, 4                  # encoding: [0xec,0x43,0x20,0x2b]
82         fadds. 2, 3, 4
83# CHECK: fsub 2, 3, 4                    # encoding: [0xfc,0x43,0x20,0x28]
84         fsub 2, 3, 4
85# CHECK: fsub. 2, 3, 4                   # encoding: [0xfc,0x43,0x20,0x29]
86         fsub. 2, 3, 4
87# CHECK: fsubs 2, 3, 4                   # encoding: [0xec,0x43,0x20,0x28]
88         fsubs 2, 3, 4
89# CHECK: fsubs. 2, 3, 4                  # encoding: [0xec,0x43,0x20,0x29]
90         fsubs. 2, 3, 4
91
92# CHECK: fmul 2, 3, 4                    # encoding: [0xfc,0x43,0x01,0x32]
93         fmul 2, 3, 4
94# CHECK: fmul. 2, 3, 4                   # encoding: [0xfc,0x43,0x01,0x33]
95         fmul. 2, 3, 4
96# CHECK: fmuls 2, 3, 4                   # encoding: [0xec,0x43,0x01,0x32]
97         fmuls 2, 3, 4
98# CHECK: fmuls. 2, 3, 4                  # encoding: [0xec,0x43,0x01,0x33]
99         fmuls. 2, 3, 4
100# CHECK: fdiv 2, 3, 4                    # encoding: [0xfc,0x43,0x20,0x24]
101         fdiv 2, 3, 4
102# CHECK: fdiv. 2, 3, 4                   # encoding: [0xfc,0x43,0x20,0x25]
103         fdiv. 2, 3, 4
104# CHECK: fdivs 2, 3, 4                   # encoding: [0xec,0x43,0x20,0x24]
105         fdivs 2, 3, 4
106# CHECK: fdivs. 2, 3, 4                  # encoding: [0xec,0x43,0x20,0x25]
107         fdivs. 2, 3, 4
108# CHECK: fsqrt 2, 3                      # encoding: [0xfc,0x40,0x18,0x2c]
109         fsqrt 2, 3
110# CHECK: fsqrt. 2, 3                     # encoding: [0xfc,0x40,0x18,0x2d]
111         fsqrt. 2, 3
112# CHECK: fsqrts 2, 3                     # encoding: [0xec,0x40,0x18,0x2c]
113         fsqrts 2, 3
114# CHECK: fsqrts. 2, 3                    # encoding: [0xec,0x40,0x18,0x2d]
115         fsqrts. 2, 3
116
117# CHECK: fre 2, 3                        # encoding: [0xfc,0x40,0x18,0x30]
118         fre 2, 3
119# CHECK: fre. 2, 3                       # encoding: [0xfc,0x40,0x18,0x31]
120         fre. 2, 3
121# CHECK: fres 2, 3                       # encoding: [0xec,0x40,0x18,0x30]
122         fres 2, 3
123# CHECK: fres. 2, 3                      # encoding: [0xec,0x40,0x18,0x31]
124         fres. 2, 3
125# CHECK: frsqrte 2, 3                    # encoding: [0xfc,0x40,0x18,0x34]
126         frsqrte 2, 3
127# CHECK: frsqrte. 2, 3                   # encoding: [0xfc,0x40,0x18,0x35]
128         frsqrte. 2, 3
129# CHECK: frsqrtes 2, 3                   # encoding: [0xec,0x40,0x18,0x34]
130         frsqrtes 2, 3
131# CHECK: frsqrtes. 2, 3                  # encoding: [0xec,0x40,0x18,0x35]
132         frsqrtes. 2, 3
133# FIXME: ftdiv 2, 3, 4
134# FIXME: ftsqrt 2, 3, 4
135
136# CHECK: fmadd 2, 3, 4, 5                # encoding: [0xfc,0x43,0x29,0x3a]
137         fmadd 2, 3, 4, 5
138# CHECK: fmadd. 2, 3, 4, 5               # encoding: [0xfc,0x43,0x29,0x3b]
139         fmadd. 2, 3, 4, 5
140# CHECK: fmadds 2, 3, 4, 5               # encoding: [0xec,0x43,0x29,0x3a]
141         fmadds 2, 3, 4, 5
142# CHECK: fmadds. 2, 3, 4, 5              # encoding: [0xec,0x43,0x29,0x3b]
143         fmadds. 2, 3, 4, 5
144# CHECK: fmsub 2, 3, 4, 5                # encoding: [0xfc,0x43,0x29,0x38]
145         fmsub 2, 3, 4, 5
146# CHECK: fmsub. 2, 3, 4, 5               # encoding: [0xfc,0x43,0x29,0x39]
147         fmsub. 2, 3, 4, 5
148# CHECK: fmsubs 2, 3, 4, 5               # encoding: [0xec,0x43,0x29,0x38]
149         fmsubs 2, 3, 4, 5
150# CHECK: fmsubs. 2, 3, 4, 5              # encoding: [0xec,0x43,0x29,0x39]
151         fmsubs. 2, 3, 4, 5
152# CHECK: fnmadd 2, 3, 4, 5               # encoding: [0xfc,0x43,0x29,0x3e]
153         fnmadd 2, 3, 4, 5
154# CHECK: fnmadd. 2, 3, 4, 5              # encoding: [0xfc,0x43,0x29,0x3f]
155         fnmadd. 2, 3, 4, 5
156# CHECK: fnmadds 2, 3, 4, 5              # encoding: [0xec,0x43,0x29,0x3e]
157         fnmadds 2, 3, 4, 5
158# CHECK: fnmadds. 2, 3, 4, 5             # encoding: [0xec,0x43,0x29,0x3f]
159         fnmadds. 2, 3, 4, 5
160# CHECK: fnmsub 2, 3, 4, 5               # encoding: [0xfc,0x43,0x29,0x3c]
161         fnmsub 2, 3, 4, 5
162# CHECK: fnmsub. 2, 3, 4, 5              # encoding: [0xfc,0x43,0x29,0x3d]
163         fnmsub. 2, 3, 4, 5
164# CHECK: fnmsubs 2, 3, 4, 5              # encoding: [0xec,0x43,0x29,0x3c]
165         fnmsubs 2, 3, 4, 5
166# CHECK: fnmsubs. 2, 3, 4, 5             # encoding: [0xec,0x43,0x29,0x3d]
167         fnmsubs. 2, 3, 4, 5
168
169# Floating-point rounding and conversion instructions
170
171# CHECK: frsp 2, 3                       # encoding: [0xfc,0x40,0x18,0x18]
172         frsp 2, 3
173# CHECK: frsp. 2, 3                      # encoding: [0xfc,0x40,0x18,0x19]
174         frsp. 2, 3
175
176# CHECK: fctid 2, 3                      # encoding: [0xfc,0x40,0x1e,0x5c]
177         fctid 2, 3
178# CHECK: fctid. 2, 3                     # encoding: [0xfc,0x40,0x1e,0x5d]
179         fctid. 2, 3
180# CHECK: fctidz 2, 3                     # encoding: [0xfc,0x40,0x1e,0x5e]
181         fctidz 2, 3
182# CHECK: fctidz. 2, 3                    # encoding: [0xfc,0x40,0x1e,0x5f]
183         fctidz. 2, 3
184# FIXME: fctidu 2, 3
185# FIXME: fctidu. 2, 3
186# CHECK: fctiduz 2, 3                    # encoding: [0xfc,0x40,0x1f,0x5e]
187         fctiduz 2, 3
188# CHECK: fctiduz. 2, 3                   # encoding: [0xfc,0x40,0x1f,0x5f]
189         fctiduz. 2, 3
190# CHECK: fctiw 2, 3                      # encoding: [0xfc,0x40,0x18,0x1c]
191         fctiw 2, 3
192# CHECK: fctiw. 2, 3                     # encoding: [0xfc,0x40,0x18,0x1d]
193         fctiw. 2, 3
194# CHECK: fctiwz 2, 3                     # encoding: [0xfc,0x40,0x18,0x1e]
195         fctiwz 2, 3
196# CHECK: fctiwz. 2, 3                    # encoding: [0xfc,0x40,0x18,0x1f]
197         fctiwz. 2, 3
198# FIXME: fctiwu 2, 3
199# FIXME: fctiwu. 2, 3
200# CHECK: fctiwuz 2, 3                    # encoding: [0xfc,0x40,0x19,0x1e]
201         fctiwuz 2, 3
202# CHECK: fctiwuz. 2, 3                   # encoding: [0xfc,0x40,0x19,0x1f]
203         fctiwuz. 2, 3
204# CHECK: fcfid 2, 3                      # encoding: [0xfc,0x40,0x1e,0x9c]
205         fcfid 2, 3
206# CHECK: fcfid. 2, 3                     # encoding: [0xfc,0x40,0x1e,0x9d]
207         fcfid. 2, 3
208# CHECK: fcfidu 2, 3                     # encoding: [0xfc,0x40,0x1f,0x9c]
209         fcfidu 2, 3
210# CHECK: fcfidu. 2, 3                    # encoding: [0xfc,0x40,0x1f,0x9d]
211         fcfidu. 2, 3
212# CHECK: fcfids 2, 3                     # encoding: [0xec,0x40,0x1e,0x9c]
213         fcfids 2, 3
214# CHECK: fcfids. 2, 3                    # encoding: [0xec,0x40,0x1e,0x9d]
215         fcfids. 2, 3
216# CHECK: fcfidus 2, 3                    # encoding: [0xec,0x40,0x1f,0x9c]
217         fcfidus 2, 3
218# CHECK: fcfidus. 2, 3                   # encoding: [0xec,0x40,0x1f,0x9d]
219         fcfidus. 2, 3
220# CHECK: frin 2, 3                       # encoding: [0xfc,0x40,0x1b,0x10]
221         frin 2, 3
222# CHECK: frin. 2, 3                      # encoding: [0xfc,0x40,0x1b,0x11]
223         frin. 2, 3
224# CHECK: frip 2, 3                       # encoding: [0xfc,0x40,0x1b,0x90]
225         frip 2, 3
226# CHECK: frip. 2, 3                      # encoding: [0xfc,0x40,0x1b,0x91]
227         frip. 2, 3
228# CHECK: friz 2, 3                       # encoding: [0xfc,0x40,0x1b,0x50]
229         friz 2, 3
230# CHECK: friz. 2, 3                      # encoding: [0xfc,0x40,0x1b,0x51]
231         friz. 2, 3
232# CHECK: frim 2, 3                       # encoding: [0xfc,0x40,0x1b,0xd0]
233         frim 2, 3
234# CHECK: frim. 2, 3                      # encoding: [0xfc,0x40,0x1b,0xd1]
235         frim. 2, 3
236
237# Floating-point compare instructions
238
239# CHECK: fcmpu 2, 3, 4                   # encoding: [0xfd,0x03,0x20,0x00]
240         fcmpu 2, 3, 4
241# FIXME: fcmpo 2, 3, 4
242
243# Floating-point select instruction
244
245# CHECK: fsel 2, 3, 4, 5                 # encoding: [0xfc,0x43,0x29,0x2e]
246         fsel 2, 3, 4, 5
247# CHECK: fsel. 2, 3, 4, 5                # encoding: [0xfc,0x43,0x29,0x2f]
248         fsel. 2, 3, 4, 5
249
250# Floating-point status and control register instructions
251
252# CHECK: mffs 2                          # encoding: [0xfc,0x40,0x04,0x8e]
253         mffs 2
254# FIXME: mffs. 2
255
256# FIXME: mcrfs 2, 3
257
258# FIXME: mtfsfi 2, 3, 1
259# FIXME: mtfsfi. 2, 3, 1
260# FIXME: mtfsf 2, 3, 1, 1
261# FIXME: mtfsf. 2, 3, 1, 1
262
263# CHECK: mtfsb0 31                       # encoding: [0xff,0xe0,0x00,0x8c]
264         mtfsb0 31
265# FIXME: mtfsb0. 31
266# CHECK: mtfsb1 31                       # encoding: [0xff,0xe0,0x00,0x4c]
267         mtfsb1 31
268# FIXME: mtfsb1. 31
269
270