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

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

Issue 1416493002: Implements simple returns and call args for Mips. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Corrections to patch set 3 per stichnot review 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
« no previous file with comments | « tests_lit/llvm2ice_tests/int-arg.ll ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 \ 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
6 ; RUN: -allow-externally-defined-symbols | FileCheck %s 6 ; RUN: -allow-externally-defined-symbols | FileCheck %s
7 7
8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) 8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
9 ; once enough infrastructure is in. Also, switch to --filetype=obj 9 ; once enough infrastructure is in. Also, switch to --filetype=obj
10 ; when possible. 10 ; when possible.
11 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 11 ; RUN: %if --need=target_ARM32 --need=allow_dump \
12 ; RUN: --command %p2i --filetype=asm --assemble \ 12 ; RUN: --command %p2i --filetype=asm --assemble \
13 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 13 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
14 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 14 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
15 ; RUN: --command FileCheck --check-prefix ARM32 %s 15 ; RUN: --command FileCheck --check-prefix ARM32 %s
16 16
17 ; TODO(rkotler): Stop skipping unimplemented parts (via --skip-unimplemented)
18 ; once enough infrastructure is in. Also, switch to --filetype=obj
19 ; when possible.
20 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
21 ; RUN: --command %p2i --filetype=asm --assemble \
22 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \
23 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \
24 ; RUN: --command FileCheck --check-prefix MIPS32 %s
25
17 ; Test 8-bits of all ones rotated right by various amounts (even vs odd). 26 ; Test 8-bits of all ones rotated right by various amounts (even vs odd).
18 ; ARM has a shifter that allows encoding 8-bits rotated right by even amounts. 27 ; ARM has a shifter that allows encoding 8-bits rotated right by even amounts.
19 ; The first few "rotate right" test cases are expressed as shift-left. 28 ; The first few "rotate right" test cases are expressed as shift-left.
20 29
21 define internal i32 @ret_8bits_shift_left0() { 30 define internal i32 @ret_8bits_shift_left0() {
22 ret i32 255 31 ret i32 255
23 } 32 }
24 ; CHECK-LABEL: ret_8bits_shift_left0 33 ; CHECK-LABEL: ret_8bits_shift_left0
25 ; CHECK-NEXT: mov eax,0xff 34 ; CHECK-NEXT: mov eax,0xff
26 ; ARM32-LABEL: ret_8bits_shift_left0 35 ; ARM32-LABEL: ret_8bits_shift_left0
27 ; ARM32-NEXT: mov r0, #255 36 ; ARM32-NEXT: mov r0, #255
37 ; MIPS32-LABEL: ret_8bits_shift_left0
38 ; MIPS32-NEXT: li v0,255
28 39
29 define internal i32 @ret_8bits_shift_left1() { 40 define internal i32 @ret_8bits_shift_left1() {
30 ret i32 510 41 ret i32 510
31 } 42 }
32 ; CHECK-LABEL: ret_8bits_shift_left1 43 ; CHECK-LABEL: ret_8bits_shift_left1
33 ; CHECK-NEXT: mov eax,0x1fe 44 ; CHECK-NEXT: mov eax,0x1fe
34 ; ARM32-LABEL: ret_8bits_shift_left1 45 ; ARM32-LABEL: ret_8bits_shift_left1
35 ; ARM32-NEXT: movw r0, #510 46 ; ARM32-NEXT: movw r0, #510
47 ; MIPS32-LABEL: ret_8bits_shift_left1
48 ; MIPS32-NEXT: li v0,510
36 49
37 define internal i32 @ret_8bits_shift_left2() { 50 define internal i32 @ret_8bits_shift_left2() {
38 ret i32 1020 51 ret i32 1020
39 } 52 }
40 ; CHECK-LABEL: ret_8bits_shift_left2 53 ; CHECK-LABEL: ret_8bits_shift_left2
41 ; CHECK-NEXT: mov eax,0x3fc 54 ; CHECK-NEXT: mov eax,0x3fc
42 ; ARM32-LABEL: ret_8bits_shift_left2 55 ; ARM32-LABEL: ret_8bits_shift_left2
43 ; ARM32-NEXT: mov r0, #1020 56 ; ARM32-NEXT: mov r0, #1020
57 ; MIPS32-LABEL: ret_8bits_shift_left2
58 ; MIPS32-NEXT: li v0,1020
44 59
45 define internal i32 @ret_8bits_shift_left4() { 60 define internal i32 @ret_8bits_shift_left4() {
46 ret i32 4080 61 ret i32 4080
47 } 62 }
48 ; CHECK-LABEL: ret_8bits_shift_left4 63 ; CHECK-LABEL: ret_8bits_shift_left4
49 ; CHECK-NEXT: mov eax,0xff0 64 ; CHECK-NEXT: mov eax,0xff0
50 ; ARM32-LABEL: ret_8bits_shift_left4 65 ; ARM32-LABEL: ret_8bits_shift_left4
51 ; ARM32-NEXT: mov r0, #4080 66 ; ARM32-NEXT: mov r0, #4080
67 ; MIPS32-LABEL: ret_8bits_shift_left4
68 ; MIPS32-NEXT: li v0,4080
52 69
53 define internal i32 @ret_8bits_shift_left14() { 70 define internal i32 @ret_8bits_shift_left14() {
54 ret i32 4177920 71 ret i32 4177920
55 } 72 }
56 ; CHECK-LABEL: ret_8bits_shift_left14 73 ; CHECK-LABEL: ret_8bits_shift_left14
57 ; CHECK-NEXT: mov eax,0x3fc000 74 ; CHECK-NEXT: mov eax,0x3fc000
58 ; ARM32-LABEL: ret_8bits_shift_left14 75 ; ARM32-LABEL: ret_8bits_shift_left14
59 ; ARM32-NEXT: mov r0, #4177920 76 ; ARM32-NEXT: mov r0, #4177920
77 ; MIPS32-LABEL: ret_8bits_shift_left14
78 ; MIPS32-NEXT: lui v0,0x3f
79 ; MIPS32-NEXT: ori v0,v0,0xc000
60 80
61 define internal i32 @ret_8bits_shift_left15() { 81 define internal i32 @ret_8bits_shift_left15() {
62 ret i32 8355840 82 ret i32 8355840
63 } 83 }
64 ; CHECK-LABEL: ret_8bits_shift_left15 84 ; CHECK-LABEL: ret_8bits_shift_left15
65 ; CHECK-NEXT: mov eax,0x7f8000 85 ; CHECK-NEXT: mov eax,0x7f8000
66 ; ARM32-LABEL: ret_8bits_shift_left15 86 ; ARM32-LABEL: ret_8bits_shift_left15
67 ; ARM32-NEXT: movw r0, #32768 87 ; ARM32-NEXT: movw r0, #32768
68 ; ARM32-NEXT: movt r0, #127 88 ; ARM32-NEXT: movt r0, #127
89 ; MIPS32-LABEL: ret_8bits_shift_left15
90 ; MIPS32-NEXT: lui v0,0x7f
91 ; MIPS32-NEXT: ori v0,v0,0x8000
69 92
70 ; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits. 93 ; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits.
71 94
72 define internal i32 @ret_8bits_shift_left24() { 95 define internal i32 @ret_8bits_shift_left24() {
73 ret i32 4278190080 96 ret i32 4278190080
74 } 97 }
75 ; CHECK-LABEL: ret_8bits_shift_left24 98 ; CHECK-LABEL: ret_8bits_shift_left24
76 ; CHECK-NEXT: mov eax,0xff000000 99 ; CHECK-NEXT: mov eax,0xff000000
77 ; ARM32-LABEL: ret_8bits_shift_left24 100 ; ARM32-LABEL: ret_8bits_shift_left24
78 ; ARM32-NEXT: mov r0, #-16777216 101 ; ARM32-NEXT: mov r0, #-16777216
79 ; ARM32-NEXT: bx lr 102 ; ARM32-NEXT: bx lr
103 ; MIPS32-LABEL: ret_8bits_shift_left24
104 ; MIPS32-NEXT: lui v0,0xff00
105 ; MIPS32-NEXT: ori v0,v0,0x0
80 106
81 ; The next few cases wrap around and actually demonstrate the rotation. 107 ; The next few cases wrap around and actually demonstrate the rotation.
82 108
83 define internal i32 @ret_8bits_ror7() { 109 define internal i32 @ret_8bits_ror7() {
84 ret i32 4261412865 110 ret i32 4261412865
85 } 111 }
86 ; CHECK-LABEL: ret_8bits_ror7 112 ; CHECK-LABEL: ret_8bits_ror7
87 ; CHECK-NEXT: mov eax,0xfe000001 113 ; CHECK-NEXT: mov eax,0xfe000001
88 ; ARM32-LABEL: ret_8bits_ror7 114 ; ARM32-LABEL: ret_8bits_ror7
89 ; ARM32-NEXT: movw r0, #1 115 ; ARM32-NEXT: movw r0, #1
90 ; ARM32-NEXT: movt r0, #65024 116 ; ARM32-NEXT: movt r0, #65024
117 ; MIPS32-LABEL: ret_8bits_ror7
118 ; MIPS32-NEXT: lui v0,0xfe00
119 ; MIPS32-NEXT: ori v0,v0,0x1
91 120
92 define internal i32 @ret_8bits_ror6() { 121 define internal i32 @ret_8bits_ror6() {
93 ret i32 4227858435 122 ret i32 4227858435
94 } 123 }
95 ; CHECK-LABEL: ret_8bits_ror6 124 ; CHECK-LABEL: ret_8bits_ror6
96 ; CHECK-NEXT: mov eax,0xfc000003 125 ; CHECK-NEXT: mov eax,0xfc000003
97 ; ARM32-LABEL: ret_8bits_ror6 126 ; ARM32-LABEL: ret_8bits_ror6
98 ; ARM32-NEXT: mov r0, #-67108861 127 ; ARM32-NEXT: mov r0, #-67108861
99 ; ARM32-NEXT: bx lr 128 ; ARM32-NEXT: bx lr
129 ; MIPS32-LABEL: ret_8bits_ror6
130 ; MIPS32-NEXT: lui v0,0xfc00
131 ; MIPS32-NEXT: ori v0,v0,0x3
100 132
101 define internal i32 @ret_8bits_ror5() { 133 define internal i32 @ret_8bits_ror5() {
102 ret i32 4160749575 134 ret i32 4160749575
103 } 135 }
104 ; CHECK-LABEL: ret_8bits_ror5 136 ; CHECK-LABEL: ret_8bits_ror5
105 ; CHECK-NEXT: mov eax,0xf8000007 137 ; CHECK-NEXT: mov eax,0xf8000007
106 ; ARM32-LABEL: ret_8bits_ror5 138 ; ARM32-LABEL: ret_8bits_ror5
107 ; ARM32-NEXT: movw r0, #7 139 ; ARM32-NEXT: movw r0, #7
108 ; ARM32-NEXT: movt r0, #63488 140 ; ARM32-NEXT: movt r0, #63488
141 ; MIPS32-LABEL: ret_8bits_ror5
142 ; MIPS32-NEXT: lui v0,0xf800
143 ; MIPS32-NEXT: ori v0,v0,0x7
109 144
110 define internal i32 @ret_8bits_ror4() { 145 define internal i32 @ret_8bits_ror4() {
111 ret i32 4026531855 146 ret i32 4026531855
112 } 147 }
113 ; CHECK-LABEL: ret_8bits_ror4 148 ; CHECK-LABEL: ret_8bits_ror4
114 ; CHECK-NEXT: mov eax,0xf000000f 149 ; CHECK-NEXT: mov eax,0xf000000f
115 ; ARM32-LABEL: ret_8bits_ror4 150 ; ARM32-LABEL: ret_8bits_ror4
116 ; ARM32-NEXT: mov r0, #-268435441 151 ; ARM32-NEXT: mov r0, #-268435441
117 ; ARM32-NEXT: bx lr 152 ; ARM32-NEXT: bx lr
153 ; MIPS32-LABEL: ret_8bits_ror4
154 ; MIPS32-NEXT: lui v0,0xf000
155 ; MIPS32-NEXT: ori v0,v0,0xf
118 156
119 define internal i32 @ret_8bits_ror3() { 157 define internal i32 @ret_8bits_ror3() {
120 ret i32 3758096415 158 ret i32 3758096415
121 } 159 }
122 ; CHECK-LABEL: ret_8bits_ror3 160 ; CHECK-LABEL: ret_8bits_ror3
123 ; CHECK-NEXT: mov eax,0xe000001f 161 ; CHECK-NEXT: mov eax,0xe000001f
124 ; ARM32-LABEL: ret_8bits_ror3 162 ; ARM32-LABEL: ret_8bits_ror3
125 ; ARM32-NEXT: movw r0, #31 163 ; ARM32-NEXT: movw r0, #31
126 ; ARM32-NEXT: movt r0, #57344 164 ; ARM32-NEXT: movt r0, #57344
165 ; MIPS32-LABEL: ret_8bits_ror3
166 ; MIPS32-NEXT: lui v0,0xe000
167 ; MIPS32-NEXT: ori v0,v0,0x1f
168
127 169
128 define internal i32 @ret_8bits_ror2() { 170 define internal i32 @ret_8bits_ror2() {
129 ret i32 3221225535 171 ret i32 3221225535
130 } 172 }
131 ; CHECK-LABEL: ret_8bits_ror2 173 ; CHECK-LABEL: ret_8bits_ror2
132 ; CHECK-NEXT: mov eax,0xc000003f 174 ; CHECK-NEXT: mov eax,0xc000003f
133 ; ARM32-LABEL: ret_8bits_ror2 175 ; ARM32-LABEL: ret_8bits_ror2
134 ; ARM32-NEXT: mov r0, #-1073741761 176 ; ARM32-NEXT: mov r0, #-1073741761
135 ; ARM32-NEXT: bx lr 177 ; ARM32-NEXT: bx lr
178 ; MIPS32-LABEL: ret_8bits_ror2
179 ; MIPS32-NEXT: lui v0,0xc000
180 ; MIPS32-NEXT: ori v0,v0,0x3f
136 181
137 define internal i32 @ret_8bits_ror1() { 182 define internal i32 @ret_8bits_ror1() {
138 ret i32 2147483775 183 ret i32 2147483775
139 } 184 }
140 ; CHECK-LABEL: ret_8bits_ror1 185 ; CHECK-LABEL: ret_8bits_ror1
141 ; CHECK-NEXT: mov eax,0x8000007f 186 ; CHECK-NEXT: mov eax,0x8000007f
142 ; ARM32-LABEL: ret_8bits_ror1 187 ; ARM32-LABEL: ret_8bits_ror1
143 ; ARM32-NEXT: movw r0, #127 188 ; ARM32-NEXT: movw r0, #127
144 ; ARM32-NEXT: movt r0, #32768 189 ; ARM32-NEXT: movt r0, #32768
190 ; MIPS32-LABEL: ret_8bits_ror1
191 ; MIPS32-NEXT: lui v0,0x8000
192 ; MIPS32-NEXT: ori v0,v0,0x7f
145 193
146 ; Some architectures can handle 16-bits at a time efficiently, 194 ; Some architectures can handle 16-bits at a time efficiently,
147 ; so also test those. 195 ; so also test those.
148 196
149 define internal i32 @ret_16bits_lower() { 197 define internal i32 @ret_16bits_lower() {
150 ret i32 65535 198 ret i32 65535
151 } 199 }
152 ; CHECK-LABEL: ret_16bits_lower 200 ; CHECK-LABEL: ret_16bits_lower
153 ; CHECK-NEXT: mov eax,0xffff 201 ; CHECK-NEXT: mov eax,0xffff
154 ; ARM32-LABEL: ret_16bits_lower 202 ; ARM32-LABEL: ret_16bits_lower
155 ; ARM32-NEXT: movw r0, #65535 203 ; ARM32-NEXT: movw r0, #65535
156 ; ARM32-NEXT: bx lr 204 ; ARM32-NEXT: bx lr
205 ; MIPS32-LABEL: ret_16bits_lower
206 ; MIPS32-NEXT: lui v0,0x0
207 ; MIPS32-NEXT: ori v0,v0,0xffff
157 208
158 define internal i32 @ret_17bits_lower() { 209 define internal i32 @ret_17bits_lower() {
159 ret i32 131071 210 ret i32 131071
160 } 211 }
161 ; CHECK-LABEL: ret_17bits_lower 212 ; CHECK-LABEL: ret_17bits_lower
162 ; CHECK-NEXT: mov eax,0x1ffff 213 ; CHECK-NEXT: mov eax,0x1ffff
163 ; ARM32-LABEL: ret_17bits_lower 214 ; ARM32-LABEL: ret_17bits_lower
164 ; ARM32-NEXT: movw r0, #65535 215 ; ARM32-NEXT: movw r0, #65535
165 ; ARM32-NEXT: movt r0, #1 216 ; ARM32-NEXT: movt r0, #1
217 ; MIPS32-LABEL: ret_17bits_lower
218 ; MIPS32-NEXT: lui v0,0x1
219 ; MIPS32-NEXT: ori v0,v0,0xffff
220
166 221
167 define internal i32 @ret_16bits_upper() { 222 define internal i32 @ret_16bits_upper() {
168 ret i32 4294901760 223 ret i32 4294901760
169 } 224 }
170 ; CHECK-LABEL: ret_16bits_upper 225 ; CHECK-LABEL: ret_16bits_upper
171 ; CHECK-NEXT: mov eax,0xffff0000 226 ; CHECK-NEXT: mov eax,0xffff0000
172 ; ARM32-LABEL: ret_16bits_upper 227 ; ARM32-LABEL: ret_16bits_upper
173 ; ARM32-NEXT: movw r0, #0 228 ; ARM32-NEXT: movw r0, #0
174 ; ARM32-NEXT: movt r0, #65535 229 ; ARM32-NEXT: movt r0, #65535
230 ; MIPS32-LABEL: ret_16bits_upper
231 ; MIPS32-NEXT: lui v0,0xffff
232 ; MIPS32-NEXT: ori v0,v0,0x0
233
175 234
176 ; Some 32-bit immediates can be inverted, and moved in a single instruction. 235 ; Some 32-bit immediates can be inverted, and moved in a single instruction.
177 236
178 define internal i32 @ret_8bits_inverted_shift_left0() { 237 define internal i32 @ret_8bits_inverted_shift_left0() {
179 ret i32 4294967040 238 ret i32 4294967040
180 } 239 }
181 ; CHECK-LABEL: ret_8bits_inverted_shift_left0 240 ; CHECK-LABEL: ret_8bits_inverted_shift_left0
182 ; CHECK-NEXT: mov eax,0xffffff00 241 ; CHECK-NEXT: mov eax,0xffffff00
183 ; ARM32-LABEL: ret_8bits_inverted_shift_left0 242 ; ARM32-LABEL: ret_8bits_inverted_shift_left0
184 ; ARM32-NEXT: mvn r0, #255 243 ; ARM32-NEXT: mvn r0, #255
185 ; ARM32-NEXT: bx lr 244 ; ARM32-NEXT: bx lr
245 ; MIPS32-LABEL: ret_8bits_inverted_shift_left0
246 ; MIPS32-NEXT: li v0,-256
186 247
187 define internal i32 @ret_8bits_inverted_shift_left24() { 248 define internal i32 @ret_8bits_inverted_shift_left24() {
188 ret i32 16777215 249 ret i32 16777215
189 } 250 }
190 ; CHECK-LABEL: ret_8bits_inverted_shift_left24 251 ; CHECK-LABEL: ret_8bits_inverted_shift_left24
191 ; CHECK-NEXT: mov eax,0xffffff 252 ; CHECK-NEXT: mov eax,0xffffff
192 ; ARM32-LABEL: ret_8bits_inverted_shift_left24 253 ; ARM32-LABEL: ret_8bits_inverted_shift_left24
193 ; ARM32-NEXT: mvn r0, #-16777216 254 ; ARM32-NEXT: mvn r0, #-16777216
194 ; ARM32-NEXT: bx lr 255 ; ARM32-NEXT: bx lr
256 ; MIPS32-LABEL: ret_8bits_inverted_shift_left24
257 ; MIPS32-NEXT: lui v0,0xff
258 ; MIPS32-NEXT: ori v0,v0,0xffff
195 259
196 define internal i32 @ret_8bits_inverted_ror2() { 260 define internal i32 @ret_8bits_inverted_ror2() {
197 ret i32 1073741760 261 ret i32 1073741760
198 } 262 }
199 ; CHECK-LABEL: ret_8bits_inverted_ror2 263 ; CHECK-LABEL: ret_8bits_inverted_ror2
200 ; CHECK-NEXT: mov eax,0x3fffffc0 264 ; CHECK-NEXT: mov eax,0x3fffffc0
201 ; ARM32-LABEL: ret_8bits_inverted_ror2 265 ; ARM32-LABEL: ret_8bits_inverted_ror2
202 ; ARM32-NEXT: mvn r0, #-1073741761 266 ; ARM32-NEXT: mvn r0, #-1073741761
203 ; ARM32-NEXT: bx lr 267 ; ARM32-NEXT: bx lr
268 ; MIPS32-LABEL: ret_8bits_inverted_ror2
269 ; MIPS32-NEXT: lui v0,0x3fff
270 ; MIPS32-NEXT: ori v0,v0,0xffc0
204 271
205 define internal i32 @ret_8bits_inverted_ror6() { 272 define internal i32 @ret_8bits_inverted_ror6() {
206 ret i32 67108860 273 ret i32 67108860
207 } 274 }
208 ; CHECK-LABEL: ret_8bits_inverted_ror6 275 ; CHECK-LABEL: ret_8bits_inverted_ror6
209 ; CHECK-NEXT: mov eax,0x3fffffc 276 ; CHECK-NEXT: mov eax,0x3fffffc
210 ; ARM32-LABEL: ret_8bits_inverted_ror6 277 ; ARM32-LABEL: ret_8bits_inverted_ror6
211 ; ARM32-NEXT: mvn r0, #-67108861 278 ; ARM32-NEXT: mvn r0, #-67108861
212 ; ARM32-NEXT: bx lr 279 ; ARM32-NEXT: bx lr
280 ; MIPS32-LABEL: ret_8bits_inverted_ror6
281 ; MIPS32-NEXT: lui v0,0x3ff
282 ; MIPS32-NEXT: ori v0,v0,0xfffc
283
213 284
214 define internal i32 @ret_8bits_inverted_ror7() { 285 define internal i32 @ret_8bits_inverted_ror7() {
215 ret i32 33554430 286 ret i32 33554430
216 } 287 }
217 ; CHECK-LABEL: ret_8bits_inverted_ror7 288 ; CHECK-LABEL: ret_8bits_inverted_ror7
218 ; CHECK-NEXT: mov eax,0x1fffffe 289 ; CHECK-NEXT: mov eax,0x1fffffe
219 ; ARM32-LABEL: ret_8bits_inverted_ror7 290 ; ARM32-LABEL: ret_8bits_inverted_ror7
220 ; ARM32-NEXT: movw r0, #65534 291 ; ARM32-NEXT: movw r0, #65534
221 ; ARM32-NEXT: movt r0, #511 292 ; ARM32-NEXT: movt r0, #511
293 ; MIPS32-LABEL: ret_8bits_inverted_ror7
294 ; MIPS32-NEXT: lui v0,0x1ff
295 ; MIPS32-NEXT: ori v0,v0,0xfffe
222 296
223 ; 64-bit immediates. 297 ; 64-bit immediates.
224 298
225 define internal i64 @ret_64bits_shift_left0() { 299 define internal i64 @ret_64bits_shift_left0() {
226 ret i64 1095216660735 300 ret i64 1095216660735
227 } 301 }
228 ; CHECK-LABEL: ret_64bits_shift_left0 302 ; CHECK-LABEL: ret_64bits_shift_left0
229 ; CHECK-NEXT: mov eax,0xff 303 ; CHECK-NEXT: mov eax,0xff
230 ; CHECK-NEXT: mov edx,0xff 304 ; CHECK-NEXT: mov edx,0xff
231 ; ARM32-LABEL: ret_64bits_shift_left0 305 ; ARM32-LABEL: ret_64bits_shift_left0
232 ; ARM32-NEXT: movw r0, #255 306 ; ARM32-NEXT: movw r0, #255
233 ; ARM32-NEXT: movw r1, #255 307 ; ARM32-NEXT: movw r1, #255
308 ; MIPS32-LABEL: ret_64bits_shift_left0
309 ; MIPS32-NEXT: li v0,255
310 ; MIPS32-NEXT: li v1,255
311
234 312
235 ; A relocatable constant is assumed to require 32-bits along with 313 ; A relocatable constant is assumed to require 32-bits along with
236 ; relocation directives. 314 ; relocation directives.
237 315
238 declare void @_start() 316 declare void @_start()
239 317
240 define internal i32 @ret_addr() { 318 define internal i32 @ret_addr() {
241 %ptr = ptrtoint void ()* @_start to i32 319 %ptr = ptrtoint void ()* @_start to i32
242 ret i32 %ptr 320 ret i32 %ptr
243 } 321 }
244 ; CHECK-LABEL: ret_addr 322 ; CHECK-LABEL: ret_addr
245 ; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start 323 ; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start
246 ; ARM32-LABEL: ret_addr 324 ; ARM32-LABEL: ret_addr
247 ; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start 325 ; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start
248 ; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS _start 326 ; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS _start
327 ; TODO(RKotler) emitting proper li but in disassembly
328 ; it shows up only in the relocation records. Should emit
329 ; without the macro but we still need to add GOT implementation
330 ; to finish this case
331 ;
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/int-arg.ll ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698