[Sparc] Add support for parsing branch instructions and conditional moves.
[oota-llvm.git] / test / MC / Sparc / sparc64-ctrl-instructions.s
1 ! RUN: llvm-mc %s -triple=sparc64-unknown-linux-gnu -show-encoding | FileCheck %s
2
3
4         ! CHECK: bne %xcc, .BB0     ! encoding: [0x12,0b01101AAA,A,A]
5         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
6         bne %xcc, .BB0
7
8         ! CHECK: be %xcc, .BB0      ! encoding: [0x02,0b01101AAA,A,A]
9         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
10         be %xcc, .BB0
11
12         ! CHECK: bg %xcc, .BB0      ! encoding: [0x14,0b01101AAA,A,A]
13         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
14         bg %xcc, .BB0
15
16         ! CHECK: ble %xcc, .BB0      ! encoding: [0x04,0b01101AAA,A,A]
17         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
18         ble %xcc, .BB0
19
20         ! CHECK: bge %xcc, .BB0      ! encoding: [0x16,0b01101AAA,A,A]
21         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
22         bge %xcc, .BB0
23
24         ! CHECK: bl %xcc, .BB0      ! encoding: [0x06,0b01101AAA,A,A]
25         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
26         bl %xcc, .BB0
27
28         ! CHECK: bgu %xcc, .BB0      ! encoding: [0x18,0b01101AAA,A,A]
29         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
30         bgu %xcc, .BB0
31
32         ! CHECK: bleu %xcc, .BB0      ! encoding: [0x08,0b01101AAA,A,A]
33         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
34         bleu %xcc, .BB0
35
36         ! CHECK: bcc %xcc, .BB0      ! encoding: [0x1a,0b01101AAA,A,A]
37         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
38         bcc %xcc, .BB0
39
40         ! CHECK: bcs %xcc, .BB0      ! encoding: [0x0a,0b01101AAA,A,A]
41         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
42         bcs %xcc, .BB0
43
44         ! CHECK: bpos %xcc, .BB0      ! encoding: [0x1c,0b01101AAA,A,A]
45         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
46         bpos %xcc, .BB0
47
48         ! CHECK: bneg %xcc, .BB0      ! encoding: [0x0c,0b01101AAA,A,A]
49         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
50         bneg %xcc, .BB0
51
52         ! CHECK: bvc %xcc, .BB0      ! encoding: [0x1e,0b01101AAA,A,A]
53         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
54         bvc %xcc, .BB0
55
56         ! CHECK: bvs %xcc, .BB0      ! encoding: [0x0e,0b01101AAA,A,A]
57         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19
58         bvs %xcc, .BB0
59
60
61         ! CHECK: movne %icc, %g1, %g2            ! encoding: [0x85,0x66,0x40,0x01]
62         ! CHECK: move %icc, %g1, %g2             ! encoding: [0x85,0x64,0x40,0x01]
63         ! CHECK: movg %icc, %g1, %g2             ! encoding: [0x85,0x66,0x80,0x01]
64         ! CHECK: movle %icc, %g1, %g2            ! encoding: [0x85,0x64,0x80,0x01]
65         ! CHECK: movge %icc, %g1, %g2            ! encoding: [0x85,0x66,0xc0,0x01]
66         ! CHECK: movl %icc, %g1, %g2             ! encoding: [0x85,0x64,0xc0,0x01]
67         ! CHECK: movgu %icc, %g1, %g2            ! encoding: [0x85,0x67,0x00,0x01]
68         ! CHECK: movleu %icc, %g1, %g2           ! encoding: [0x85,0x65,0x00,0x01]
69         ! CHECK: movcc %icc, %g1, %g2            ! encoding: [0x85,0x67,0x40,0x01]
70         ! CHECK: movcs %icc, %g1, %g2            ! encoding: [0x85,0x65,0x40,0x01]
71         ! CHECK: movpos %icc, %g1, %g2           ! encoding: [0x85,0x67,0x80,0x01]
72         ! CHECK: movneg %icc, %g1, %g2           ! encoding: [0x85,0x65,0x80,0x01]
73         ! CHECK: movvc %icc, %g1, %g2            ! encoding: [0x85,0x67,0xc0,0x01]
74         ! CHECK: movvs %icc, %g1, %g2            ! encoding: [0x85,0x65,0xc0,0x01]
75         movne  %icc, %g1, %g2
76         move   %icc, %g1, %g2
77         movg   %icc, %g1, %g2
78         movle  %icc, %g1, %g2
79         movge  %icc, %g1, %g2
80         movl   %icc, %g1, %g2
81         movgu  %icc, %g1, %g2
82         movleu %icc, %g1, %g2
83         movcc  %icc, %g1, %g2
84         movcs  %icc, %g1, %g2
85         movpos %icc, %g1, %g2
86         movneg %icc, %g1, %g2
87         movvc  %icc, %g1, %g2
88         movvs  %icc, %g1, %g2
89
90         ! CHECK: movne %xcc, %g1, %g2            ! encoding: [0x85,0x66,0x50,0x01]
91         ! CHECK: move %xcc, %g1, %g2             ! encoding: [0x85,0x64,0x50,0x01]
92         ! CHECK: movg %xcc, %g1, %g2             ! encoding: [0x85,0x66,0x90,0x01]
93         ! CHECK: movle %xcc, %g1, %g2            ! encoding: [0x85,0x64,0x90,0x01]
94         ! CHECK: movge %xcc, %g1, %g2            ! encoding: [0x85,0x66,0xd0,0x01]
95         ! CHECK: movl %xcc, %g1, %g2             ! encoding: [0x85,0x64,0xd0,0x01]
96         ! CHECK: movgu %xcc, %g1, %g2            ! encoding: [0x85,0x67,0x10,0x01]
97         ! CHECK: movleu %xcc, %g1, %g2           ! encoding: [0x85,0x65,0x10,0x01]
98         ! CHECK: movcc %xcc, %g1, %g2            ! encoding: [0x85,0x67,0x50,0x01]
99         ! CHECK: movcs %xcc, %g1, %g2            ! encoding: [0x85,0x65,0x50,0x01]
100         ! CHECK: movpos %xcc, %g1, %g2           ! encoding: [0x85,0x67,0x90,0x01]
101         ! CHECK: movneg %xcc, %g1, %g2           ! encoding: [0x85,0x65,0x90,0x01]
102         ! CHECK: movvc %xcc, %g1, %g2            ! encoding: [0x85,0x67,0xd0,0x01]
103         ! CHECK: movvs %xcc, %g1, %g2            ! encoding: [0x85,0x65,0xd0,0x01]
104         movne  %xcc, %g1, %g2
105         move   %xcc, %g1, %g2
106         movg   %xcc, %g1, %g2
107         movle  %xcc, %g1, %g2
108         movge  %xcc, %g1, %g2
109         movl   %xcc, %g1, %g2
110         movgu  %xcc, %g1, %g2
111         movleu %xcc, %g1, %g2
112         movcc  %xcc, %g1, %g2
113         movcs  %xcc, %g1, %g2
114         movpos %xcc, %g1, %g2
115         movneg %xcc, %g1, %g2
116         movvc  %xcc, %g1, %g2
117         movvs  %xcc, %g1, %g2
118
119         ! CHECK: movu %fcc0, %g1, %g2            ! encoding: [0x85,0x61,0xc0,0x01]
120         ! CHECK: movg %fcc0, %g1, %g2            ! encoding: [0x85,0x61,0x80,0x01]
121         ! CHECK: movug %fcc0, %g1, %g2           ! encoding: [0x85,0x61,0x40,0x01]
122         ! CHECK: movl %fcc0, %g1, %g2            ! encoding: [0x85,0x61,0x00,0x01]
123         ! CHECK: movul %fcc0, %g1, %g2           ! encoding: [0x85,0x60,0xc0,0x01]
124         ! CHECK: movlg %fcc0, %g1, %g2           ! encoding: [0x85,0x60,0x80,0x01]
125         ! CHECK: movne %fcc0, %g1, %g2           ! encoding: [0x85,0x60,0x40,0x01]
126         ! CHECK: move %fcc0, %g1, %g2            ! encoding: [0x85,0x62,0x40,0x01]
127         ! CHECK: movue %fcc0, %g1, %g2           ! encoding: [0x85,0x62,0x80,0x01]
128         ! CHECK: movge %fcc0, %g1, %g2           ! encoding: [0x85,0x62,0xc0,0x01]
129         ! CHECK: movuge %fcc0, %g1, %g2          ! encoding: [0x85,0x63,0x00,0x01]
130         ! CHECK: movle %fcc0, %g1, %g2           ! encoding: [0x85,0x63,0x40,0x01]
131         ! CHECK: movule %fcc0, %g1, %g2          ! encoding: [0x85,0x63,0x80,0x01]
132         ! CHECK: movo %fcc0, %g1, %g2            ! encoding: [0x85,0x63,0xc0,0x01]
133         movu   %fcc0, %g1, %g2
134         movg   %fcc0, %g1, %g2
135         movug  %fcc0, %g1, %g2
136         movl   %fcc0, %g1, %g2
137         movul  %fcc0, %g1, %g2
138         movlg  %fcc0, %g1, %g2
139         movne  %fcc0, %g1, %g2
140         move   %fcc0, %g1, %g2
141         movue  %fcc0, %g1, %g2
142         movge  %fcc0, %g1, %g2
143         movuge %fcc0, %g1, %g2
144         movle  %fcc0, %g1, %g2
145         movule %fcc0, %g1, %g2
146         movo   %fcc0, %g1, %g2
147
148
149         ! CHECK fmovsne %icc, %f1, %f2          ! encoding: [0x85,0xaa,0x60,0x21]
150         ! CHECK fmovse %icc, %f1, %f2           ! encoding: [0x85,0xa8,0x60,0x21]
151         ! CHECK fmovsg %icc, %f1, %f2           ! encoding: [0x85,0xaa,0xa0,0x21]
152         ! CHECK fmovsle %icc, %f1, %f2          ! encoding: [0x85,0xa8,0xa0,0x21]
153         ! CHECK fmovsge %icc, %f1, %f2          ! encoding: [0x85,0xaa,0xe0,0x21]
154         ! CHECK fmovsl %icc, %f1, %f2           ! encoding: [0x85,0xa8,0xe0,0x21]
155         ! CHECK fmovsgu %icc, %f1, %f2          ! encoding: [0x85,0xab,0x20,0x21]
156         ! CHECK fmovsleu %icc, %f1, %f2         ! encoding: [0x85,0xa9,0x20,0x21]
157         ! CHECK fmovscc %icc, %f1, %f2          ! encoding: [0x85,0xab,0x60,0x21]
158         ! CHECK fmovscs %icc, %f1, %f2          ! encoding: [0x85,0xa9,0x60,0x21]
159         ! CHECK fmovspos %icc, %f1, %f2         ! encoding: [0x85,0xab,0xa0,0x21]
160         ! CHECK fmovsneg %icc, %f1, %f2         ! encoding: [0x85,0xa9,0xa0,0x21]
161         ! CHECK fmovsvc %icc, %f1, %f2          ! encoding: [0x85,0xab,0xe0,0x21]
162         ! CHECK fmovsvs %icc, %f1, %f2          ! encoding: [0x85,0xa9,0xe0,0x21]
163         fmovsne  %icc, %f1, %f2
164         fmovse   %icc, %f1, %f2
165         fmovsg   %icc, %f1, %f2
166         fmovsle  %icc, %f1, %f2
167         fmovsge  %icc, %f1, %f2
168         fmovsl   %icc, %f1, %f2
169         fmovsgu  %icc, %f1, %f2
170         fmovsleu %icc, %f1, %f2
171         fmovscc  %icc, %f1, %f2
172         fmovscs  %icc, %f1, %f2
173         fmovspos %icc, %f1, %f2
174         fmovsneg %icc, %f1, %f2
175         fmovsvc  %icc, %f1, %f2
176         fmovsvs  %icc, %f1, %f2
177
178         ! CHECK fmovsne %xcc, %f1, %f2          ! encoding: [0x85,0xaa,0x70,0x21]
179         ! CHECK fmovse %xcc, %f1, %f2           ! encoding: [0x85,0xa8,0x70,0x21]
180         ! CHECK fmovsg %xcc, %f1, %f2           ! encoding: [0x85,0xaa,0xb0,0x21]
181         ! CHECK fmovsle %xcc, %f1, %f2          ! encoding: [0x85,0xa8,0xb0,0x21]
182         ! CHECK fmovsge %xcc, %f1, %f2          ! encoding: [0x85,0xaa,0xf0,0x21]
183         ! CHECK fmovsl %xcc, %f1, %f2           ! encoding: [0x85,0xa8,0xf0,0x21]
184         ! CHECK fmovsgu %xcc, %f1, %f2          ! encoding: [0x85,0xab,0x30,0x21]
185         ! CHECK fmovsleu %xcc, %f1, %f2         ! encoding: [0x85,0xa9,0x30,0x21]
186         ! CHECK fmovscc %xcc, %f1, %f2          ! encoding: [0x85,0xab,0x70,0x21]
187         ! CHECK fmovscs %xcc, %f1, %f2          ! encoding: [0x85,0xa9,0x70,0x21]
188         ! CHECK fmovspos %xcc, %f1, %f2         ! encoding: [0x85,0xab,0xb0,0x21]
189         ! CHECK fmovsneg %xcc, %f1, %f2         ! encoding: [0x85,0xa9,0xb0,0x21]
190         ! CHECK fmovsvc %xcc, %f1, %f2          ! encoding: [0x85,0xab,0xf0,0x21]
191         ! CHECK fmovsvs %xcc, %f1, %f2          ! encoding: [0x85,0xa9,0xf0,0x21]
192         fmovsne  %xcc, %f1, %f2
193         fmovse   %xcc, %f1, %f2
194         fmovsg   %xcc, %f1, %f2
195         fmovsle  %xcc, %f1, %f2
196         fmovsge  %xcc, %f1, %f2
197         fmovsl   %xcc, %f1, %f2
198         fmovsgu  %xcc, %f1, %f2
199         fmovsleu %xcc, %f1, %f2
200         fmovscc  %xcc, %f1, %f2
201         fmovscs  %xcc, %f1, %f2
202         fmovspos %xcc, %f1, %f2
203         fmovsneg %xcc, %f1, %f2
204         fmovsvc  %xcc, %f1, %f2
205         fmovsvs  %xcc, %f1, %f2
206
207         ! CHECK fmovsu %fcc0, %f1, %f2          ! encoding: [0x85,0xa9,0xc0,0x21]
208         ! CHECK fmovsg %fcc0, %f1, %f2          ! encoding: [0x85,0xa9,0x80,0x21]
209         ! CHECK fmovsug %fcc0, %f1, %f2         ! encoding: [0x85,0xa9,0x40,0x21]
210         ! CHECK fmovsl %fcc0, %f1, %f2          ! encoding: [0x85,0xa9,0x00,0x21]
211         ! CHECK fmovsul %fcc0, %f1, %f2         ! encoding: [0x85,0xa8,0xc0,0x21]
212         ! CHECK fmovslg %fcc0, %f1, %f2         ! encoding: [0x85,0xa8,0x80,0x21]
213         ! CHECK fmovsne %fcc0, %f1, %f2         ! encoding: [0x85,0xa8,0x40,0x21]
214         ! CHECK fmovse %fcc0, %f1, %f2          ! encoding: [0x85,0xaa,0x40,0x21]
215         ! CHECK fmovsue %fcc0, %f1, %f2         ! encoding: [0x85,0xaa,0x80,0x21]
216         ! CHECK fmovsge %fcc0, %f1, %f2         ! encoding: [0x85,0xaa,0xc0,0x21]
217         ! CHECK fmovsuge %fcc0, %f1, %f2        ! encoding: [0x85,0xab,0x00,0x21]
218         ! CHECK fmovsle %fcc0, %f1, %f2         ! encoding: [0x85,0xab,0x40,0x21]
219         ! CHECK fmovsule %fcc0, %f1, %f2        ! encoding: [0x85,0xab,0x80,0x21]
220         ! CHECK fmovso %fcc0, %f1, %f2          ! encoding: [0x85,0xab,0xc0,0x21]
221         fmovsu   %fcc0, %f1, %f2
222         fmovsg   %fcc0, %f1, %f2
223         fmovsug  %fcc0, %f1, %f2
224         fmovsl   %fcc0, %f1, %f2
225         fmovsul  %fcc0, %f1, %f2
226         fmovslg  %fcc0, %f1, %f2
227         fmovsne  %fcc0, %f1, %f2
228         fmovse   %fcc0, %f1, %f2
229         fmovsue  %fcc0, %f1, %f2
230         fmovsge  %fcc0, %f1, %f2
231         fmovsuge %fcc0, %f1, %f2
232         fmovsle  %fcc0, %f1, %f2
233         fmovsule %fcc0, %f1, %f2
234         fmovso   %fcc0, %f1, %f2
235