Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Side by Side Diff: tests_lit/llvm2ice_tests/return_immediates.ll

Issue 1387963002: Make sure that all globals are internal, except for "start" functions. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix new tests. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; Simple test that returns various immediates. For fixed-width instruction 1 ; Simple test that returns various immediates. For fixed-width instruction
2 ; sets, some immediates are more complicated than others. 2 ; sets, some immediates are more complicated than others.
3 ; For x86-32, it shouldn't be a problem. 3 ; For x86-32, it shouldn't be a problem.
4 4
5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
6 ; RUN: -allow-externally-defined-symbols | FileCheck %s
6 7
7 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) 8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
8 ; once enough infrastructure is in. Also, switch to --filetype=obj 9 ; once enough infrastructure is in. Also, switch to --filetype=obj
9 ; when possible. 10 ; when possible.
10 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 11 ; RUN: %if --need=target_ARM32 --need=allow_dump \
11 ; RUN: --command %p2i --filetype=asm --assemble \ 12 ; RUN: --command %p2i --filetype=asm --assemble \
12 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 13 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
13 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 14 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
14 ; RUN: --command FileCheck --check-prefix ARM32 %s 15 ; RUN: --command FileCheck --check-prefix ARM32 %s
15 16
16 ; Test 8-bits of all ones rotated right by various amounts (even vs odd). 17 ; Test 8-bits of all ones rotated right by various amounts (even vs odd).
17 ; ARM has a shifter that allows encoding 8-bits rotated right by even amounts. 18 ; ARM has a shifter that allows encoding 8-bits rotated right by even amounts.
18 ; The first few "rotate right" test cases are expressed as shift-left. 19 ; The first few "rotate right" test cases are expressed as shift-left.
19 20
20 define i32 @ret_8bits_shift_left0() { 21 define internal i32 @ret_8bits_shift_left0() {
21 ret i32 255 22 ret i32 255
22 } 23 }
23 ; CHECK-LABEL: ret_8bits_shift_left0 24 ; CHECK-LABEL: ret_8bits_shift_left0
24 ; CHECK-NEXT: mov eax,0xff 25 ; CHECK-NEXT: mov eax,0xff
25 ; ARM32-LABEL: ret_8bits_shift_left0 26 ; ARM32-LABEL: ret_8bits_shift_left0
26 ; ARM32-NEXT: mov r0, #255 27 ; ARM32-NEXT: mov r0, #255
27 28
28 define i32 @ret_8bits_shift_left1() { 29 define internal i32 @ret_8bits_shift_left1() {
29 ret i32 510 30 ret i32 510
30 } 31 }
31 ; CHECK-LABEL: ret_8bits_shift_left1 32 ; CHECK-LABEL: ret_8bits_shift_left1
32 ; CHECK-NEXT: mov eax,0x1fe 33 ; CHECK-NEXT: mov eax,0x1fe
33 ; ARM32-LABEL: ret_8bits_shift_left1 34 ; ARM32-LABEL: ret_8bits_shift_left1
34 ; ARM32-NEXT: movw r0, #510 35 ; ARM32-NEXT: movw r0, #510
35 36
36 define i32 @ret_8bits_shift_left2() { 37 define internal i32 @ret_8bits_shift_left2() {
37 ret i32 1020 38 ret i32 1020
38 } 39 }
39 ; CHECK-LABEL: ret_8bits_shift_left2 40 ; CHECK-LABEL: ret_8bits_shift_left2
40 ; CHECK-NEXT: mov eax,0x3fc 41 ; CHECK-NEXT: mov eax,0x3fc
41 ; ARM32-LABEL: ret_8bits_shift_left2 42 ; ARM32-LABEL: ret_8bits_shift_left2
42 ; ARM32-NEXT: mov r0, #1020 43 ; ARM32-NEXT: mov r0, #1020
43 44
44 define i32 @ret_8bits_shift_left4() { 45 define internal i32 @ret_8bits_shift_left4() {
45 ret i32 4080 46 ret i32 4080
46 } 47 }
47 ; CHECK-LABEL: ret_8bits_shift_left4 48 ; CHECK-LABEL: ret_8bits_shift_left4
48 ; CHECK-NEXT: mov eax,0xff0 49 ; CHECK-NEXT: mov eax,0xff0
49 ; ARM32-LABEL: ret_8bits_shift_left4 50 ; ARM32-LABEL: ret_8bits_shift_left4
50 ; ARM32-NEXT: mov r0, #4080 51 ; ARM32-NEXT: mov r0, #4080
51 52
52 define i32 @ret_8bits_shift_left14() { 53 define internal i32 @ret_8bits_shift_left14() {
53 ret i32 4177920 54 ret i32 4177920
54 } 55 }
55 ; CHECK-LABEL: ret_8bits_shift_left14 56 ; CHECK-LABEL: ret_8bits_shift_left14
56 ; CHECK-NEXT: mov eax,0x3fc000 57 ; CHECK-NEXT: mov eax,0x3fc000
57 ; ARM32-LABEL: ret_8bits_shift_left14 58 ; ARM32-LABEL: ret_8bits_shift_left14
58 ; ARM32-NEXT: mov r0, #4177920 59 ; ARM32-NEXT: mov r0, #4177920
59 60
60 define i32 @ret_8bits_shift_left15() { 61 define internal i32 @ret_8bits_shift_left15() {
61 ret i32 8355840 62 ret i32 8355840
62 } 63 }
63 ; CHECK-LABEL: ret_8bits_shift_left15 64 ; CHECK-LABEL: ret_8bits_shift_left15
64 ; CHECK-NEXT: mov eax,0x7f8000 65 ; CHECK-NEXT: mov eax,0x7f8000
65 ; ARM32-LABEL: ret_8bits_shift_left15 66 ; ARM32-LABEL: ret_8bits_shift_left15
66 ; ARM32-NEXT: movw r0, #32768 67 ; ARM32-NEXT: movw r0, #32768
67 ; ARM32-NEXT: movt r0, #127 68 ; ARM32-NEXT: movt r0, #127
68 69
69 ; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits. 70 ; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits.
70 71
71 define i32 @ret_8bits_shift_left24() { 72 define internal i32 @ret_8bits_shift_left24() {
72 ret i32 4278190080 73 ret i32 4278190080
73 } 74 }
74 ; CHECK-LABEL: ret_8bits_shift_left24 75 ; CHECK-LABEL: ret_8bits_shift_left24
75 ; CHECK-NEXT: mov eax,0xff000000 76 ; CHECK-NEXT: mov eax,0xff000000
76 ; ARM32-LABEL: ret_8bits_shift_left24 77 ; ARM32-LABEL: ret_8bits_shift_left24
77 ; ARM32-NEXT: mov r0, #-16777216 78 ; ARM32-NEXT: mov r0, #-16777216
78 ; ARM32-NEXT: bx lr 79 ; ARM32-NEXT: bx lr
79 80
80 ; The next few cases wrap around and actually demonstrate the rotation. 81 ; The next few cases wrap around and actually demonstrate the rotation.
81 82
82 define i32 @ret_8bits_ror7() { 83 define internal i32 @ret_8bits_ror7() {
83 ret i32 4261412865 84 ret i32 4261412865
84 } 85 }
85 ; CHECK-LABEL: ret_8bits_ror7 86 ; CHECK-LABEL: ret_8bits_ror7
86 ; CHECK-NEXT: mov eax,0xfe000001 87 ; CHECK-NEXT: mov eax,0xfe000001
87 ; ARM32-LABEL: ret_8bits_ror7 88 ; ARM32-LABEL: ret_8bits_ror7
88 ; ARM32-NEXT: movw r0, #1 89 ; ARM32-NEXT: movw r0, #1
89 ; ARM32-NEXT: movt r0, #65024 90 ; ARM32-NEXT: movt r0, #65024
90 91
91 define i32 @ret_8bits_ror6() { 92 define internal i32 @ret_8bits_ror6() {
92 ret i32 4227858435 93 ret i32 4227858435
93 } 94 }
94 ; CHECK-LABEL: ret_8bits_ror6 95 ; CHECK-LABEL: ret_8bits_ror6
95 ; CHECK-NEXT: mov eax,0xfc000003 96 ; CHECK-NEXT: mov eax,0xfc000003
96 ; ARM32-LABEL: ret_8bits_ror6 97 ; ARM32-LABEL: ret_8bits_ror6
97 ; ARM32-NEXT: mov r0, #-67108861 98 ; ARM32-NEXT: mov r0, #-67108861
98 ; ARM32-NEXT: bx lr 99 ; ARM32-NEXT: bx lr
99 100
100 define i32 @ret_8bits_ror5() { 101 define internal i32 @ret_8bits_ror5() {
101 ret i32 4160749575 102 ret i32 4160749575
102 } 103 }
103 ; CHECK-LABEL: ret_8bits_ror5 104 ; CHECK-LABEL: ret_8bits_ror5
104 ; CHECK-NEXT: mov eax,0xf8000007 105 ; CHECK-NEXT: mov eax,0xf8000007
105 ; ARM32-LABEL: ret_8bits_ror5 106 ; ARM32-LABEL: ret_8bits_ror5
106 ; ARM32-NEXT: movw r0, #7 107 ; ARM32-NEXT: movw r0, #7
107 ; ARM32-NEXT: movt r0, #63488 108 ; ARM32-NEXT: movt r0, #63488
108 109
109 define i32 @ret_8bits_ror4() { 110 define internal i32 @ret_8bits_ror4() {
110 ret i32 4026531855 111 ret i32 4026531855
111 } 112 }
112 ; CHECK-LABEL: ret_8bits_ror4 113 ; CHECK-LABEL: ret_8bits_ror4
113 ; CHECK-NEXT: mov eax,0xf000000f 114 ; CHECK-NEXT: mov eax,0xf000000f
114 ; ARM32-LABEL: ret_8bits_ror4 115 ; ARM32-LABEL: ret_8bits_ror4
115 ; ARM32-NEXT: mov r0, #-268435441 116 ; ARM32-NEXT: mov r0, #-268435441
116 ; ARM32-NEXT: bx lr 117 ; ARM32-NEXT: bx lr
117 118
118 define i32 @ret_8bits_ror3() { 119 define internal i32 @ret_8bits_ror3() {
119 ret i32 3758096415 120 ret i32 3758096415
120 } 121 }
121 ; CHECK-LABEL: ret_8bits_ror3 122 ; CHECK-LABEL: ret_8bits_ror3
122 ; CHECK-NEXT: mov eax,0xe000001f 123 ; CHECK-NEXT: mov eax,0xe000001f
123 ; ARM32-LABEL: ret_8bits_ror3 124 ; ARM32-LABEL: ret_8bits_ror3
124 ; ARM32-NEXT: movw r0, #31 125 ; ARM32-NEXT: movw r0, #31
125 ; ARM32-NEXT: movt r0, #57344 126 ; ARM32-NEXT: movt r0, #57344
126 127
127 define i32 @ret_8bits_ror2() { 128 define internal i32 @ret_8bits_ror2() {
128 ret i32 3221225535 129 ret i32 3221225535
129 } 130 }
130 ; CHECK-LABEL: ret_8bits_ror2 131 ; CHECK-LABEL: ret_8bits_ror2
131 ; CHECK-NEXT: mov eax,0xc000003f 132 ; CHECK-NEXT: mov eax,0xc000003f
132 ; ARM32-LABEL: ret_8bits_ror2 133 ; ARM32-LABEL: ret_8bits_ror2
133 ; ARM32-NEXT: mov r0, #-1073741761 134 ; ARM32-NEXT: mov r0, #-1073741761
134 ; ARM32-NEXT: bx lr 135 ; ARM32-NEXT: bx lr
135 136
136 define i32 @ret_8bits_ror1() { 137 define internal i32 @ret_8bits_ror1() {
137 ret i32 2147483775 138 ret i32 2147483775
138 } 139 }
139 ; CHECK-LABEL: ret_8bits_ror1 140 ; CHECK-LABEL: ret_8bits_ror1
140 ; CHECK-NEXT: mov eax,0x8000007f 141 ; CHECK-NEXT: mov eax,0x8000007f
141 ; ARM32-LABEL: ret_8bits_ror1 142 ; ARM32-LABEL: ret_8bits_ror1
142 ; ARM32-NEXT: movw r0, #127 143 ; ARM32-NEXT: movw r0, #127
143 ; ARM32-NEXT: movt r0, #32768 144 ; ARM32-NEXT: movt r0, #32768
144 145
145 ; Some architectures can handle 16-bits at a time efficiently, 146 ; Some architectures can handle 16-bits at a time efficiently,
146 ; so also test those. 147 ; so also test those.
147 148
148 define i32 @ret_16bits_lower() { 149 define internal i32 @ret_16bits_lower() {
149 ret i32 65535 150 ret i32 65535
150 } 151 }
151 ; CHECK-LABEL: ret_16bits_lower 152 ; CHECK-LABEL: ret_16bits_lower
152 ; CHECK-NEXT: mov eax,0xffff 153 ; CHECK-NEXT: mov eax,0xffff
153 ; ARM32-LABEL: ret_16bits_lower 154 ; ARM32-LABEL: ret_16bits_lower
154 ; ARM32-NEXT: movw r0, #65535 155 ; ARM32-NEXT: movw r0, #65535
155 ; ARM32-NEXT: bx lr 156 ; ARM32-NEXT: bx lr
156 157
157 define i32 @ret_17bits_lower() { 158 define internal i32 @ret_17bits_lower() {
158 ret i32 131071 159 ret i32 131071
159 } 160 }
160 ; CHECK-LABEL: ret_17bits_lower 161 ; CHECK-LABEL: ret_17bits_lower
161 ; CHECK-NEXT: mov eax,0x1ffff 162 ; CHECK-NEXT: mov eax,0x1ffff
162 ; ARM32-LABEL: ret_17bits_lower 163 ; ARM32-LABEL: ret_17bits_lower
163 ; ARM32-NEXT: movw r0, #65535 164 ; ARM32-NEXT: movw r0, #65535
164 ; ARM32-NEXT: movt r0, #1 165 ; ARM32-NEXT: movt r0, #1
165 166
166 define i32 @ret_16bits_upper() { 167 define internal i32 @ret_16bits_upper() {
167 ret i32 4294901760 168 ret i32 4294901760
168 } 169 }
169 ; CHECK-LABEL: ret_16bits_upper 170 ; CHECK-LABEL: ret_16bits_upper
170 ; CHECK-NEXT: mov eax,0xffff0000 171 ; CHECK-NEXT: mov eax,0xffff0000
171 ; ARM32-LABEL: ret_16bits_upper 172 ; ARM32-LABEL: ret_16bits_upper
172 ; ARM32-NEXT: movw r0, #0 173 ; ARM32-NEXT: movw r0, #0
173 ; ARM32-NEXT: movt r0, #65535 174 ; ARM32-NEXT: movt r0, #65535
174 175
175 ; Some 32-bit immediates can be inverted, and moved in a single instruction. 176 ; Some 32-bit immediates can be inverted, and moved in a single instruction.
176 177
177 define i32 @ret_8bits_inverted_shift_left0() { 178 define internal i32 @ret_8bits_inverted_shift_left0() {
178 ret i32 4294967040 179 ret i32 4294967040
179 } 180 }
180 ; CHECK-LABEL: ret_8bits_inverted_shift_left0 181 ; CHECK-LABEL: ret_8bits_inverted_shift_left0
181 ; CHECK-NEXT: mov eax,0xffffff00 182 ; CHECK-NEXT: mov eax,0xffffff00
182 ; ARM32-LABEL: ret_8bits_inverted_shift_left0 183 ; ARM32-LABEL: ret_8bits_inverted_shift_left0
183 ; ARM32-NEXT: mvn r0, #255 184 ; ARM32-NEXT: mvn r0, #255
184 ; ARM32-NEXT: bx lr 185 ; ARM32-NEXT: bx lr
185 186
186 define i32 @ret_8bits_inverted_shift_left24() { 187 define internal i32 @ret_8bits_inverted_shift_left24() {
187 ret i32 16777215 188 ret i32 16777215
188 } 189 }
189 ; CHECK-LABEL: ret_8bits_inverted_shift_left24 190 ; CHECK-LABEL: ret_8bits_inverted_shift_left24
190 ; CHECK-NEXT: mov eax,0xffffff 191 ; CHECK-NEXT: mov eax,0xffffff
191 ; ARM32-LABEL: ret_8bits_inverted_shift_left24 192 ; ARM32-LABEL: ret_8bits_inverted_shift_left24
192 ; ARM32-NEXT: mvn r0, #-16777216 193 ; ARM32-NEXT: mvn r0, #-16777216
193 ; ARM32-NEXT: bx lr 194 ; ARM32-NEXT: bx lr
194 195
195 define i32 @ret_8bits_inverted_ror2() { 196 define internal i32 @ret_8bits_inverted_ror2() {
196 ret i32 1073741760 197 ret i32 1073741760
197 } 198 }
198 ; CHECK-LABEL: ret_8bits_inverted_ror2 199 ; CHECK-LABEL: ret_8bits_inverted_ror2
199 ; CHECK-NEXT: mov eax,0x3fffffc0 200 ; CHECK-NEXT: mov eax,0x3fffffc0
200 ; ARM32-LABEL: ret_8bits_inverted_ror2 201 ; ARM32-LABEL: ret_8bits_inverted_ror2
201 ; ARM32-NEXT: mvn r0, #-1073741761 202 ; ARM32-NEXT: mvn r0, #-1073741761
202 ; ARM32-NEXT: bx lr 203 ; ARM32-NEXT: bx lr
203 204
204 define i32 @ret_8bits_inverted_ror6() { 205 define internal i32 @ret_8bits_inverted_ror6() {
205 ret i32 67108860 206 ret i32 67108860
206 } 207 }
207 ; CHECK-LABEL: ret_8bits_inverted_ror6 208 ; CHECK-LABEL: ret_8bits_inverted_ror6
208 ; CHECK-NEXT: mov eax,0x3fffffc 209 ; CHECK-NEXT: mov eax,0x3fffffc
209 ; ARM32-LABEL: ret_8bits_inverted_ror6 210 ; ARM32-LABEL: ret_8bits_inverted_ror6
210 ; ARM32-NEXT: mvn r0, #-67108861 211 ; ARM32-NEXT: mvn r0, #-67108861
211 ; ARM32-NEXT: bx lr 212 ; ARM32-NEXT: bx lr
212 213
213 define i32 @ret_8bits_inverted_ror7() { 214 define internal i32 @ret_8bits_inverted_ror7() {
214 ret i32 33554430 215 ret i32 33554430
215 } 216 }
216 ; CHECK-LABEL: ret_8bits_inverted_ror7 217 ; CHECK-LABEL: ret_8bits_inverted_ror7
217 ; CHECK-NEXT: mov eax,0x1fffffe 218 ; CHECK-NEXT: mov eax,0x1fffffe
218 ; ARM32-LABEL: ret_8bits_inverted_ror7 219 ; ARM32-LABEL: ret_8bits_inverted_ror7
219 ; ARM32-NEXT: movw r0, #65534 220 ; ARM32-NEXT: movw r0, #65534
220 ; ARM32-NEXT: movt r0, #511 221 ; ARM32-NEXT: movt r0, #511
221 222
222 ; 64-bit immediates. 223 ; 64-bit immediates.
223 224
224 define i64 @ret_64bits_shift_left0() { 225 define internal i64 @ret_64bits_shift_left0() {
225 ret i64 1095216660735 226 ret i64 1095216660735
226 } 227 }
227 ; CHECK-LABEL: ret_64bits_shift_left0 228 ; CHECK-LABEL: ret_64bits_shift_left0
228 ; CHECK-NEXT: mov eax,0xff 229 ; CHECK-NEXT: mov eax,0xff
229 ; CHECK-NEXT: mov edx,0xff 230 ; CHECK-NEXT: mov edx,0xff
230 ; ARM32-LABEL: ret_64bits_shift_left0 231 ; ARM32-LABEL: ret_64bits_shift_left0
231 ; ARM32-NEXT: movw r0, #255 232 ; ARM32-NEXT: movw r0, #255
232 ; ARM32-NEXT: movw r1, #255 233 ; ARM32-NEXT: movw r1, #255
233 234
234 ; A relocatable constant is assumed to require 32-bits along with 235 ; A relocatable constant is assumed to require 32-bits along with
235 ; relocation directives. 236 ; relocation directives.
236 237
237 declare void @_start() 238 declare void @_start()
238 239
239 define i32 @ret_addr() { 240 define internal i32 @ret_addr() {
240 %ptr = ptrtoint void ()* @_start to i32 241 %ptr = ptrtoint void ()* @_start to i32
241 ret i32 %ptr 242 ret i32 %ptr
242 } 243 }
243 ; CHECK-LABEL: ret_addr 244 ; CHECK-LABEL: ret_addr
244 ; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start 245 ; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start
245 ; ARM32-LABEL: ret_addr 246 ; ARM32-LABEL: ret_addr
246 ; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start 247 ; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start
247 ; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS _start 248 ; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS _start
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/reorder-pooled-constants.ll ('k') | tests_lit/llvm2ice_tests/returns_twice_no_coalesce.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698