1! RUN: llvm-mc %s -arch=sparc   -show-encoding | FileCheck %s
2! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s
3
4        ! CHECK: call foo     ! encoding: [0b01AAAAAA,A,A,A]
5        ! CHECK:              !   fixup A - offset: 0, value: foo, kind: fixup_sparc_call30
6        call foo
7
8        ! CHECK: call %g1+%i2 ! encoding: [0x9f,0xc0,0x40,0x1a]
9        call %g1 + %i2
10
11        ! CHECK: call %o1+8   ! encoding: [0x9f,0xc2,0x60,0x08]
12        call %o1 + 8
13
14        ! CHECK: call %g1     ! encoding: [0x9f,0xc0,0x40,0x00]
15        call %g1
16
17        ! CHECK: call %g1+%lo(sym)   ! encoding: [0x9f,0xc0,0b011000AA,A]
18        ! CHECK-NEXT:                ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10
19        call %g1+%lo(sym)
20
21        ! CHECK: jmp %g1+%i2  ! encoding: [0x81,0xc0,0x40,0x1a]
22        jmp %g1 + %i2
23
24        ! CHECK: jmp %o1+8    ! encoding: [0x81,0xc2,0x60,0x08]
25        jmp %o1 + 8
26
27        ! CHECK: jmp %g1      ! encoding: [0x81,0xc0,0x40,0x00]
28        jmp %g1
29
30        ! CHECK: jmp %g1+%lo(sym)   ! encoding: [0x81,0xc0,0b011000AA,A]
31        ! CHECK-NEXT:                ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10
32        jmp %g1+%lo(sym)
33
34        ! CHECK: jmpl %g1+%i2, %g2  ! encoding: [0x85,0xc0,0x40,0x1a]
35        jmpl %g1 + %i2, %g2
36
37        ! CHECK: jmpl %o1+8, %g2    ! encoding: [0x85,0xc2,0x60,0x08]
38        jmpl %o1 + 8, %g2
39
40        ! CHECK: jmpl %g1, %g2      ! encoding: [0x85,0xc0,0x40,0x00]
41        jmpl %g1, %g2
42
43        ! CHECK: jmpl %g1+%lo(sym), %g2   ! encoding: [0x85,0xc0,0b011000AA,A]
44        ! CHECK-NEXT:                     ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10
45        jmpl %g1+%lo(sym), %g2
46
47        ! CHECK: ba .BB0      ! encoding: [0x10,0b10AAAAAA,A,A]
48        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
49        ba .BB0
50
51        ! CHECK: bne .BB0     ! encoding: [0x12,0b10AAAAAA,A,A]
52        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
53        bne .BB0
54
55        ! CHECK: bne .BB0     ! encoding: [0x12,0b10AAAAAA,A,A]
56        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
57        bnz .BB0
58
59        ! CHECK: be .BB0      ! encoding: [0x02,0b10AAAAAA,A,A]
60        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
61        be .BB0
62
63        ! CHECK: be .BB0      ! encoding: [0x02,0b10AAAAAA,A,A]
64        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
65        bz .BB0
66
67        ! CHECK: be .BB0      ! encoding: [0x02,0b10AAAAAA,A,A]
68        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
69        beq .BB0
70
71        ! CHECK: bg .BB0      ! encoding: [0x14,0b10AAAAAA,A,A]
72        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
73        bg .BB0
74
75        ! CHECK: ble .BB0      ! encoding: [0x04,0b10AAAAAA,A,A]
76        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
77        ble .BB0
78
79        ! CHECK: bge .BB0      ! encoding: [0x16,0b10AAAAAA,A,A]
80        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
81        bge .BB0
82
83        ! CHECK: bl .BB0      ! encoding: [0x06,0b10AAAAAA,A,A]
84        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
85        bl .BB0
86
87        ! CHECK: bgu .BB0      ! encoding: [0x18,0b10AAAAAA,A,A]
88        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
89        bgu .BB0
90
91        ! CHECK: bleu .BB0      ! encoding: [0x08,0b10AAAAAA,A,A]
92        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
93        bleu .BB0
94
95        ! CHECK: bcc .BB0      ! encoding: [0x1a,0b10AAAAAA,A,A]
96        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
97        bcc .BB0
98
99        ! CHECK: bcc .BB0      ! encoding: [0x1a,0b10AAAAAA,A,A]
100        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
101        bgeu .BB0
102
103        ! CHECK: bcs .BB0      ! encoding: [0x0a,0b10AAAAAA,A,A]
104        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
105        bcs .BB0
106
107        ! CHECK: bcs .BB0      ! encoding: [0x0a,0b10AAAAAA,A,A]
108        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
109        blu .BB0
110
111        ! CHECK: bpos .BB0      ! encoding: [0x1c,0b10AAAAAA,A,A]
112        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
113        bpos .BB0
114
115        ! CHECK: bneg .BB0      ! encoding: [0x0c,0b10AAAAAA,A,A]
116        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
117        bneg .BB0
118
119        ! CHECK: bvc .BB0      ! encoding: [0x1e,0b10AAAAAA,A,A]
120        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
121        bvc .BB0
122
123        ! CHECK: bvs .BB0      ! encoding: [0x0e,0b10AAAAAA,A,A]
124        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
125        bvs .BB0
126
127        ! CHECK:             fbu .BB0                        ! encoding: [0x0f,0b10AAAAAA,A,A]
128        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
129        fbu .BB0
130
131        ! CHECK:             fbg .BB0                        ! encoding: [0x0d,0b10AAAAAA,A,A]
132        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
133        fbg .BB0
134        ! CHECK:             fbug .BB0                       ! encoding: [0x0b,0b10AAAAAA,A,A]
135        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
136        fbug .BB0
137
138        ! CHECK:             fbl .BB0                        ! encoding: [0x09,0b10AAAAAA,A,A]
139        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
140        fbl .BB0
141
142        ! CHECK:             fbul .BB0                       ! encoding: [0x07,0b10AAAAAA,A,A]
143        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
144        fbul .BB0
145
146        ! CHECK:             fblg .BB0                       ! encoding: [0x05,0b10AAAAAA,A,A]
147        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
148        fblg .BB0
149
150        ! CHECK:             fbne .BB0                       ! encoding: [0x03,0b10AAAAAA,A,A]
151        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
152        fbne .BB0
153
154        ! CHECK:             fbne .BB0                       ! encoding: [0x03,0b10AAAAAA,A,A]
155        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
156        fbnz .BB0
157
158        ! CHECK:             fbe .BB0                        ! encoding: [0x13,0b10AAAAAA,A,A]
159        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
160        fbe .BB0
161
162        ! CHECK:             fbe .BB0                        ! encoding: [0x13,0b10AAAAAA,A,A]
163        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
164        fbz .BB0
165
166        ! CHECK:             fbue .BB0                       ! encoding: [0x15,0b10AAAAAA,A,A]
167        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
168        fbue .BB0
169
170        ! CHECK:             fbge .BB0                       ! encoding: [0x17,0b10AAAAAA,A,A]
171        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
172        fbge .BB0
173
174        ! CHECK:             fbuge .BB0                      ! encoding: [0x19,0b10AAAAAA,A,A]
175        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
176        fbuge .BB0
177
178        ! CHECK:             fble .BB0                       ! encoding: [0x1b,0b10AAAAAA,A,A]
179        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
180        fble .BB0
181
182        ! CHECK:             fbule .BB0                      ! encoding: [0x1d,0b10AAAAAA,A,A]
183        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
184        fbule .BB0
185
186        ! CHECK:             fbo .BB0                        ! encoding: [0x1f,0b10AAAAAA,A,A]
187        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
188        fbo .BB0
189
190        ! CHECK: ba,a .BB0    ! encoding: [0x30,0b10AAAAAA,A,A]
191        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
192        ba,a .BB0
193
194        ! CHECK: bne,a .BB0   ! encoding: [0x32,0b10AAAAAA,A,A]
195        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
196        bne,a .BB0
197
198        ! CHECK: be,a .BB0    ! encoding: [0x22,0b10AAAAAA,A,A]
199        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
200        be,a .BB0
201
202        ! CHECK: bg,a .BB0    ! encoding: [0x34,0b10AAAAAA,A,A]
203        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
204        bg,a .BB0
205
206        ! CHECK: ble,a .BB0   ! encoding: [0x24,0b10AAAAAA,A,A]
207        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
208        ble,a .BB0
209
210        ! CHECK: bge,a .BB0   ! encoding: [0x36,0b10AAAAAA,A,A]
211        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
212        bge,a .BB0
213
214        ! CHECK: bl,a .BB0    ! encoding: [0x26,0b10AAAAAA,A,A]
215        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
216        bl,a .BB0
217
218        ! CHECK: bgu,a .BB0   ! encoding: [0x38,0b10AAAAAA,A,A]
219        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
220        bgu,a .BB0
221
222        ! CHECK: bleu,a .BB0  ! encoding: [0x28,0b10AAAAAA,A,A]
223        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
224        bleu,a .BB0
225
226        ! CHECK: bcc,a .BB0   ! encoding: [0x3a,0b10AAAAAA,A,A]
227        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
228        bcc,a .BB0
229
230        ! CHECK: bcs,a .BB0   ! encoding: [0x2a,0b10AAAAAA,A,A]
231        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
232        bcs,a .BB0
233
234        ! CHECK: bpos,a .BB0  ! encoding: [0x3c,0b10AAAAAA,A,A]
235        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
236        bpos,a .BB0
237
238        ! CHECK: bneg,a .BB0  ! encoding: [0x2c,0b10AAAAAA,A,A]
239        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
240        bneg,a .BB0
241
242        ! CHECK: bvc,a .BB0   ! encoding: [0x3e,0b10AAAAAA,A,A]
243        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
244        bvc,a .BB0
245
246        ! CHECK: bvs,a .BB0   ! encoding: [0x2e,0b10AAAAAA,A,A]
247        ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
248        bvs,a .BB0
249
250        ! CHECK:             fbu,a .BB0                      ! encoding: [0x2f,0b10AAAAAA,A,A]
251        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
252        fbu,a .BB0
253
254        ! CHECK:             fbg,a .BB0                      ! encoding: [0x2d,0b10AAAAAA,A,A]
255        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
256        fbg,a .BB0
257        ! CHECK:             fbug,a .BB0                     ! encoding: [0x2b,0b10AAAAAA,A,A]
258        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
259        fbug,a .BB0
260
261        ! CHECK:             fbl,a .BB0                      ! encoding: [0x29,0b10AAAAAA,A,A]
262        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
263        fbl,a .BB0
264
265        ! CHECK:             fbul,a .BB0                     ! encoding: [0x27,0b10AAAAAA,A,A]
266        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
267        fbul,a .BB0
268
269        ! CHECK:             fblg,a .BB0                     ! encoding: [0x25,0b10AAAAAA,A,A]
270        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
271        fblg,a .BB0
272
273        ! CHECK:             fbne,a .BB0                     ! encoding: [0x23,0b10AAAAAA,A,A]
274        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
275        fbne,a .BB0
276
277        ! CHECK:             fbe,a .BB0                      ! encoding: [0x33,0b10AAAAAA,A,A]
278        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
279        fbe,a .BB0
280
281        ! CHECK:             fbue,a .BB0                     ! encoding: [0x35,0b10AAAAAA,A,A]
282        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
283        fbue,a .BB0
284
285        ! CHECK:             fbge,a .BB0                     ! encoding: [0x37,0b10AAAAAA,A,A]
286        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
287        fbge,a .BB0
288
289        ! CHECK:             fbuge,a .BB0                    ! encoding: [0x39,0b10AAAAAA,A,A]
290        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
291        fbuge,a .BB0
292
293        ! CHECK:             fble,a .BB0                     ! encoding: [0x3b,0b10AAAAAA,A,A]
294        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
295        fble,a .BB0
296
297        ! CHECK:             fbule,a .BB0                    ! encoding: [0x3d,0b10AAAAAA,A,A]
298        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
299        fbule,a .BB0
300
301        ! CHECK:             fbo,a .BB0                      ! encoding: [0x3f,0b10AAAAAA,A,A]
302        ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
303        fbo,a .BB0
304
305        ! CHECK:  rett %i7+8   ! encoding: [0x81,0xcf,0xe0,0x08]
306        rett %i7 + 8
307