[Sparc] Add support for parsing branch instructions and conditional moves.
[oota-llvm.git] / test / MC / Sparc / sparc-ctrl-instructions.s
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,0x60,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,0x60,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: ba .BB0      ! encoding: [0x10,0b10AAAAAA,A,A]
35         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
36         ba .BB0
37
38         ! CHECK: bne .BB0     ! encoding: [0x12,0b10AAAAAA,A,A]
39         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
40         bne .BB0
41
42         ! CHECK: be .BB0      ! encoding: [0x02,0b10AAAAAA,A,A]
43         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
44         be .BB0
45
46         ! CHECK: bg .BB0      ! encoding: [0x14,0b10AAAAAA,A,A]
47         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
48         bg .BB0
49
50         ! CHECK: ble .BB0      ! encoding: [0x04,0b10AAAAAA,A,A]
51         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
52         ble .BB0
53
54         ! CHECK: bge .BB0      ! encoding: [0x16,0b10AAAAAA,A,A]
55         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
56         bge .BB0
57
58         ! CHECK: bl .BB0      ! encoding: [0x06,0b10AAAAAA,A,A]
59         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
60         bl .BB0
61
62         ! CHECK: bgu .BB0      ! encoding: [0x18,0b10AAAAAA,A,A]
63         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
64         bgu .BB0
65
66         ! CHECK: bleu .BB0      ! encoding: [0x08,0b10AAAAAA,A,A]
67         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
68         bleu .BB0
69
70         ! CHECK: bcc .BB0      ! encoding: [0x1a,0b10AAAAAA,A,A]
71         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
72         bcc .BB0
73
74         ! CHECK: bcs .BB0      ! encoding: [0x0a,0b10AAAAAA,A,A]
75         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
76         bcs .BB0
77
78         ! CHECK: bpos .BB0      ! encoding: [0x1c,0b10AAAAAA,A,A]
79         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
80         bpos .BB0
81
82         ! CHECK: bneg .BB0      ! encoding: [0x0c,0b10AAAAAA,A,A]
83         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
84         bneg .BB0
85
86         ! CHECK: bvc .BB0      ! encoding: [0x1e,0b10AAAAAA,A,A]
87         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
88         bvc .BB0
89
90         ! CHECK: bvs .BB0      ! encoding: [0x0e,0b10AAAAAA,A,A]
91         ! CHECK-NEXT:         ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
92         bvs .BB0
93
94         ! CHECK:             fbu .BB0                        ! encoding: [0x0f,0b10AAAAAA,A,A]
95         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
96         fbu .BB0
97
98         ! CHECK:             fbg .BB0                        ! encoding: [0x0d,0b10AAAAAA,A,A]
99         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
100         fbg .BB0
101         ! CHECK:             fbug .BB0                       ! encoding: [0x0b,0b10AAAAAA,A,A]
102         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
103         fbug .BB0
104
105         ! CHECK:             fbl .BB0                        ! encoding: [0x09,0b10AAAAAA,A,A]
106         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
107         fbl .BB0
108
109         ! CHECK:             fbul .BB0                       ! encoding: [0x07,0b10AAAAAA,A,A]
110         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
111         fbul .BB0
112
113         ! CHECK:             fblg .BB0                       ! encoding: [0x05,0b10AAAAAA,A,A]
114         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
115         fblg .BB0
116
117         ! CHECK:             fbne .BB0                       ! encoding: [0x03,0b10AAAAAA,A,A]
118         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
119         fbne .BB0
120
121         ! CHECK:             fbe .BB0                        ! encoding: [0x13,0b10AAAAAA,A,A]
122         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
123         fbe .BB0
124
125         ! CHECK:             fbue .BB0                       ! encoding: [0x15,0b10AAAAAA,A,A]
126         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
127         fbue .BB0
128
129         ! CHECK:             fbge .BB0                       ! encoding: [0x17,0b10AAAAAA,A,A]
130         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
131         fbge .BB0
132
133         ! CHECK:             fbuge .BB0                      ! encoding: [0x19,0b10AAAAAA,A,A]
134         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
135         fbuge .BB0
136
137         ! CHECK:             fble .BB0                       ! encoding: [0x1b,0b10AAAAAA,A,A]
138         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
139         fble .BB0
140
141         ! CHECK:             fbule .BB0                      ! encoding: [0x1d,0b10AAAAAA,A,A]
142         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
143         fbule .BB0
144
145         ! CHECK:             fbo .BB0                        ! encoding: [0x1f,0b10AAAAAA,A,A]
146         ! CHECK-NEXT:                                        !   fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
147         fbo .BB0