Add AArch64 as an experimental target.
[oota-llvm.git] / test / CodeGen / AArch64 / logical_shifted_reg.s
1         .file   "/home/timnor01/a64-trunk/llvm/test/CodeGen/AArch64/logical_shifted_reg.ll"
2         .text
3         .globl  logical_32bit
4         .type   logical_32bit,@function
5 logical_32bit:                          // @logical_32bit
6         .cfi_startproc
7 // BB#0:
8         adrp    x0, var1_32
9         ldr     w1, [x0, #:lo12:var1_32]
10         adrp    x0, var2_32
11         ldr     w2, [x0, #:lo12:var2_32]
12         and     w3, w1, w2
13         adrp    x0, var1_32
14         str     w3, [x0, #:lo12:var1_32]
15         bic     w3, w1, w2
16         adrp    x0, var1_32
17         str     w3, [x0, #:lo12:var1_32]
18         orr     w3, w1, w2
19         adrp    x0, var1_32
20         str     w3, [x0, #:lo12:var1_32]
21         orn     w3, w1, w2
22         adrp    x0, var1_32
23         str     w3, [x0, #:lo12:var1_32]
24         eor     w3, w1, w2
25         adrp    x0, var1_32
26         str     w3, [x0, #:lo12:var1_32]
27         eon     w3, w2, w1
28         adrp    x0, var1_32
29         str     w3, [x0, #:lo12:var1_32]
30         and     w3, w1, w2, lsl #31
31         adrp    x0, var1_32
32         str     w3, [x0, #:lo12:var1_32]
33         bic     w3, w1, w2, lsl #31
34         adrp    x0, var1_32
35         str     w3, [x0, #:lo12:var1_32]
36         orr     w3, w1, w2, lsl #31
37         adrp    x0, var1_32
38         str     w3, [x0, #:lo12:var1_32]
39         orn     w3, w1, w2, lsl #31
40         adrp    x0, var1_32
41         str     w3, [x0, #:lo12:var1_32]
42         eor     w3, w1, w2, lsl #31
43         adrp    x0, var1_32
44         str     w3, [x0, #:lo12:var1_32]
45         eon     w3, w1, w2, lsl #31
46         adrp    x0, var1_32
47         str     w3, [x0, #:lo12:var1_32]
48         bic     w3, w1, w2, asr #10
49         adrp    x0, var1_32
50         str     w3, [x0, #:lo12:var1_32]
51         eor     w3, w1, w2, asr #10
52         adrp    x0, var1_32
53         str     w3, [x0, #:lo12:var1_32]
54         orn     w3, w1, w2, lsr #1
55         adrp    x0, var1_32
56         str     w3, [x0, #:lo12:var1_32]
57         eor     w3, w1, w2, lsr #1
58         adrp    x0, var1_32
59         str     w3, [x0, #:lo12:var1_32]
60         eon     w3, w1, w2, ror #20
61         adrp    x0, var1_32
62         str     w3, [x0, #:lo12:var1_32]
63         and     w1, w1, w2, ror #20
64         adrp    x0, var1_32
65         str     w1, [x0, #:lo12:var1_32]
66         ret
67 .Ltmp0:
68         .size   logical_32bit, .Ltmp0-logical_32bit
69         .cfi_endproc
70
71         .globl  logical_64bit
72         .type   logical_64bit,@function
73 logical_64bit:                          // @logical_64bit
74         .cfi_startproc
75 // BB#0:
76         adrp    x0, var1_64
77         ldr     x0, [x0, #:lo12:var1_64]
78         adrp    x1, var2_64
79         ldr     x1, [x1, #:lo12:var2_64]
80         and     x2, x0, x1
81         adrp    x3, var1_64
82         str     x2, [x3, #:lo12:var1_64]
83         bic     x2, x0, x1
84         adrp    x3, var1_64
85         str     x2, [x3, #:lo12:var1_64]
86         orr     x2, x0, x1
87         adrp    x3, var1_64
88         str     x2, [x3, #:lo12:var1_64]
89         orn     x2, x0, x1
90         adrp    x3, var1_64
91         str     x2, [x3, #:lo12:var1_64]
92         eor     x2, x0, x1
93         adrp    x3, var1_64
94         str     x2, [x3, #:lo12:var1_64]
95         eon     x2, x1, x0
96         adrp    x3, var1_64
97         str     x2, [x3, #:lo12:var1_64]
98         and     x2, x0, x1, lsl #63
99         adrp    x3, var1_64
100         str     x2, [x3, #:lo12:var1_64]
101         bic     x2, x0, x1, lsl #63
102         adrp    x3, var1_64
103         str     x2, [x3, #:lo12:var1_64]
104         orr     x2, x0, x1, lsl #63
105         adrp    x3, var1_64
106         str     x2, [x3, #:lo12:var1_64]
107         orn     x2, x0, x1, lsl #63
108         adrp    x3, var1_64
109         str     x2, [x3, #:lo12:var1_64]
110         eor     x2, x0, x1, lsl #63
111         adrp    x3, var1_64
112         str     x2, [x3, #:lo12:var1_64]
113         eon     x2, x0, x1, lsl #63
114         adrp    x3, var1_64
115         str     x2, [x3, #:lo12:var1_64]
116         bic     x2, x0, x1, asr #10
117         adrp    x3, var1_64
118         str     x2, [x3, #:lo12:var1_64]
119         eor     x2, x0, x1, asr #10
120         adrp    x3, var1_64
121         str     x2, [x3, #:lo12:var1_64]
122         orn     x2, x0, x1, lsr #1
123         adrp    x3, var1_64
124         str     x2, [x3, #:lo12:var1_64]
125         eor     x2, x0, x1, lsr #1
126         adrp    x3, var1_64
127         str     x2, [x3, #:lo12:var1_64]
128         eon     x2, x0, x1, ror #20
129         adrp    x3, var1_64
130         str     x2, [x3, #:lo12:var1_64]
131         and     x0, x0, x1, ror #20
132         adrp    x1, var1_64
133         str     x0, [x1, #:lo12:var1_64]
134         ret
135 .Ltmp1:
136         .size   logical_64bit, .Ltmp1-logical_64bit
137         .cfi_endproc
138
139         .globl  flag_setting
140         .type   flag_setting,@function
141 flag_setting:                           // @flag_setting
142         .cfi_startproc
143 // BB#0:
144         sub     sp, sp, #16
145         adrp    x0, var1_64
146         ldr     x0, [x0, #:lo12:var1_64]
147         adrp    x1, var2_64
148         ldr     x1, [x1, #:lo12:var2_64]
149         tst     x0, x1
150         str     x0, [sp, #8]            // 8-byte Folded Spill
151         str     x1, [sp]                // 8-byte Folded Spill
152         b.gt .LBB2_4
153         b       .LBB2_1
154 .LBB2_1:                                // %test2
155         ldr     x0, [sp, #8]            // 8-byte Folded Reload
156         ldr     x1, [sp]                // 8-byte Folded Reload
157         tst     x0, x1, lsl #63
158         b.lt .LBB2_4
159         b       .LBB2_2
160 .LBB2_2:                                // %test3
161         ldr     x0, [sp, #8]            // 8-byte Folded Reload
162         ldr     x1, [sp]                // 8-byte Folded Reload
163         tst     x0, x1, asr #12
164         b.gt .LBB2_4
165         b       .LBB2_3
166 .LBB2_3:                                // %other_exit
167         adrp    x0, var1_64
168         ldr     x1, [sp, #8]            // 8-byte Folded Reload
169         str     x1, [x0, #:lo12:var1_64]
170         add     sp, sp, #16
171         ret
172 .LBB2_4:                                // %ret
173         add     sp, sp, #16
174         ret
175 .Ltmp2:
176         .size   flag_setting, .Ltmp2-flag_setting
177         .cfi_endproc
178
179         .type   var1_32,@object         // @var1_32
180         .bss
181         .globl  var1_32
182         .align  2
183 var1_32:
184         .word   0                       // 0x0
185         .size   var1_32, 4
186
187         .type   var2_32,@object         // @var2_32
188         .globl  var2_32
189         .align  2
190 var2_32:
191         .word   0                       // 0x0
192         .size   var2_32, 4
193
194         .type   var1_64,@object         // @var1_64
195         .globl  var1_64
196         .align  3
197 var1_64:
198         .xword  0                       // 0x0
199         .size   var1_64, 8
200
201         .type   var2_64,@object         // @var2_64
202         .globl  var2_64
203         .align  3
204 var2_64:
205         .xword  0                       // 0x0
206         .size   var2_64, 8
207
208