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

Side by Side Diff: tests_lit/assembler/mips32/encoding_intrinsics.ll

Issue 2368343003: Subzero, MIPS32: Intrinsic call Bswap for i16, i32 and i64 (Closed)
Patch Set: Addressing review comments Created 4 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 ; Test encoding of MIPS32 instructions used in intrinsic calls 1 ; Test encoding of MIPS32 instructions used in intrinsic calls
2 2
3 ; REQUIRES: allow_dump 3 ; REQUIRES: allow_dump
4 4
5 ; Compile using standalone assembler. 5 ; Compile using standalone assembler.
6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \ 6 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --args -O2 \
7 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \ 7 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \
8 ; RUN: | FileCheck %s --check-prefix=ASM 8 ; RUN: | FileCheck %s --check-prefix=ASM
9 9
10 ; Show bytes in assembled standalone code. 10 ; Show bytes in assembled standalone code.
11 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \ 11 ; RUN: %p2i --filetype=asm -i %s --target=mips32 --assemble --disassemble \
12 ; RUN: --args -O2 --allow-externally-defined-symbols --skip-unimplemented \ 12 ; RUN: --args -O2 --allow-externally-defined-symbols --skip-unimplemented \
13 ; RUN: | FileCheck %s --check-prefix=DIS 13 ; RUN: | FileCheck %s --check-prefix=DIS
14 14
15 ; Compile using integrated assembler. 15 ; Compile using integrated assembler.
16 ; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \ 16 ; RUN: %p2i --filetype=iasm -i %s --target=mips32 --args -O2 \
17 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \ 17 ; RUN: --allow-externally-defined-symbols --skip-unimplemented \
18 ; RUN: | FileCheck %s --check-prefix=IASM 18 ; RUN: | FileCheck %s --check-prefix=IASM
19 19
20 ; Show bytes in assembled integrated code. 20 ; Show bytes in assembled integrated code.
21 ; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \ 21 ; RUN: %p2i --filetype=iasm -i %s --target=mips32 --assemble --disassemble \
22 ; RUN: --args -O2 --allow-externally-defined-symbols --skip-unimplemented \ 22 ; RUN: --args -O2 --allow-externally-defined-symbols --skip-unimplemented \
23 ; RUN: | FileCheck %s --check-prefix=DIS 23 ; RUN: | FileCheck %s --check-prefix=DIS
24 24
25 declare i16 @llvm.bswap.i16(i16)
26 declare i32 @llvm.bswap.i32(i32)
27 declare i64 @llvm.bswap.i64(i64)
25 declare i32 @llvm.ctlz.i32(i32, i1) 28 declare i32 @llvm.ctlz.i32(i32, i1)
26 declare i64 @llvm.ctlz.i64(i64, i1) 29 declare i64 @llvm.ctlz.i64(i64, i1)
27 declare i32 @llvm.cttz.i32(i32, i1) 30 declare i32 @llvm.cttz.i32(i32, i1)
28 declare i64 @llvm.cttz.i64(i64, i1) 31 declare i64 @llvm.cttz.i64(i64, i1)
29 declare void @llvm.trap() 32 declare void @llvm.trap()
30 33
34 define internal i32 @encBswap16(i32 %x) {
35 entry:
36 %x_trunc = trunc i32 %x to i16
37 %r = call i16 @llvm.bswap.i16(i16 %x_trunc)
38 %r_zext = zext i16 %r to i32
39 ret i32 %r_zext
40 }
41
42 ; ASM-LABEL: encBswap16
43 ; ASM-NEXT: .LencBswap16$entry:
44 ; ASM-NEXT: sll $v0, $a0, 8
45 ; ASM-NEXT: lui $v1, 255
46 ; ASM-NEXT: and $v0, $v0, $v1
47 ; ASM-NEXT: sll $a0, $a0, 24
48 ; ASM-NEXT: or $v0, $a0, $v0
49 ; ASM-NEXT: srl $v0, $v0, 16
50 ; ASM-NEXT: andi $v0, $v0, 65535
51 ; ASM-NEXT: jr $ra
52
53 ; DIS-LABEL: {{.*}} <encBswap16>:
54 ; DIS-NEXT: {{.*}} 00041200 sll v0,a0,0x8
55 ; DIS-NEXT: {{.*}} 3c0300ff lui v1,0xff
56 ; DIS-NEXT: {{.*}} 00431024 and v0,v0,v1
57 ; DIS-NEXT: {{.*}} 00042600 sll a0,a0,0x18
58 ; DIS-NEXT: {{.*}} 00821025 or v0,a0,v0
59 ; DIS-NEXT: {{.*}} 00021402 srl v0,v0,0x10
60 ; DIS-NEXT: {{.*}} 3042ffff andi v0,v0,0xffff
61 ; DIS-NEXT: {{.*}} 03e00008 jr ra
62
63 ; IASM-LABEL: encBswap16
64 ; IASM-NEXT: .LencBswap16$entry:
65 ; IASM-NEXT: .byte 0x0
66 ; IASM-NEXT: .byte 0x12
67 ; IASM-NEXT: .byte 0x4
68 ; IASM-NEXT: .byte 0x0
69 ; IASM-NEXT: .byte 0xff
70 ; IASM-NEXT: .byte 0x0
71 ; IASM-NEXT: .byte 0x3
72 ; IASM-NEXT: .byte 0x3c
73 ; IASM-NEXT: .byte 0x24
74 ; IASM-NEXT: .byte 0x10
75 ; IASM-NEXT: .byte 0x43
76 ; IASM-NEXT: .byte 0x0
77 ; IASM-NEXT: .byte 0x0
78 ; IASM-NEXT: .byte 0x26
79 ; IASM-NEXT: .byte 0x4
80 ; IASM-NEXT: .byte 0x0
81 ; IASM-NEXT: .byte 0x25
82 ; IASM-NEXT: .byte 0x10
83 ; IASM-NEXT: .byte 0x82
84 ; IASM-NEXT: .byte 0x0
85 ; IASM-NEXT: .byte 0x2
86 ; IASM-NEXT: .byte 0x14
87 ; IASM-NEXT: .byte 0x2
88 ; IASM-NEXT: .byte 0x0
89 ; IASM-NEXT: .byte 0xff
90 ; IASM-NEXT: .byte 0xff
91 ; IASM-NEXT: .byte 0x42
92 ; IASM-NEXT: .byte 0x30
93 ; IASM-NEXT: .byte 0x8
94 ; IASM-NEXT: .byte 0x0
95 ; IASM-NEXT: .byte 0xe0
96 ; IASM-NEXT: .byte 0x3
97
98 define internal i32 @encBswap32(i32 %x) {
99 entry:
100 %r = call i32 @llvm.bswap.i32(i32 %x)
101 ret i32 %r
102 }
103
104 ; ASM-LABEL: encBswap32
105 ; ASM-NEXT: .LencBswap32$entry:
106 ; ASM-NEXT: srl $v0, $a0, 24
107 ; ASM-NEXT: srl $v1, $a0, 8
108 ; ASM-NEXT: andi $v1, $v1, 65280
109 ; ASM-NEXT: or $v0, $v1, $v0
110 ; ASM-NEXT: sll $v1, $a0, 8
111 ; ASM-NEXT: lui $a1, 255
112 ; ASM-NEXT: and $v1, $v1, $a1
113 ; ASM-NEXT: sll $a0, $a0, 24
114 ; ASM-NEXT: or $v1, $a0, $v1
115 ; ASM-NEXT: or $v1, $v1, $v0
116 ; ASM-NEXT: move $v0, $v1
117 ; ASM-NEXT: jr $ra
118
119 ; DIS-LABEL: {{.*}} <encBswap32>:
120 ; DIS-NEXT: {{.*}} 00041602 srl v0,a0,0x18
121 ; DIS-NEXT: {{.*}} 00041a02 srl v1,a0,0x8
122 ; DIS-NEXT: {{.*}} 3063ff00 andi v1,v1,0xff00
123 ; DIS-NEXT: {{.*}} 00621025 or v0,v1,v0
124 ; DIS-NEXT: {{.*}} 00041a00 sll v1,a0,0x8
125 ; DIS-NEXT: {{.*}} 3c0500ff lui a1,0xff
126 ; DIS-NEXT: {{.*}} 00651824 and v1,v1,a1
127 ; DIS-NEXT: {{.*}} 00042600 sll a0,a0,0x18
128 ; DIS-NEXT: {{.*}} 00831825 or v1,a0,v1
129 ; DIS-NEXT: {{.*}} 00621825 or v1,v1,v0
130 ; DIS-NEXT: {{.*}} 00601021 move v0,v1
131 ; DIS-NEXT: {{.*}} 03e00008 jr ra
132
133 ; IASM-LABEL: encBswap32
134 ; IASM-NEXT: .LencBswap32$entry:
135 ; IASM-NEXT: .byte 0x2
136 ; IASM-NEXT: .byte 0x16
137 ; IASM-NEXT: .byte 0x4
138 ; IASM-NEXT: .byte 0x0
139 ; IASM-NEXT: .byte 0x2
140 ; IASM-NEXT: .byte 0x1a
141 ; IASM-NEXT: .byte 0x4
142 ; IASM-NEXT: .byte 0x0
143 ; IASM-NEXT: .byte 0x0
144 ; IASM-NEXT: .byte 0xff
145 ; IASM-NEXT: .byte 0x63
146 ; IASM-NEXT: .byte 0x30
147 ; IASM-NEXT: .byte 0x25
148 ; IASM-NEXT: .byte 0x10
149 ; IASM-NEXT: .byte 0x62
150 ; IASM-NEXT: .byte 0x0
151 ; IASM-NEXT: .byte 0x0
152 ; IASM-NEXT: .byte 0x1a
153 ; IASM-NEXT: .byte 0x4
154 ; IASM-NEXT: .byte 0x0
155 ; IASM-NEXT: .byte 0xff
156 ; IASM-NEXT: .byte 0x0
157 ; IASM-NEXT: .byte 0x5
158 ; IASM-NEXT: .byte 0x3c
159 ; IASM-NEXT: .byte 0x24
160 ; IASM-NEXT: .byte 0x18
161 ; IASM-NEXT: .byte 0x65
162 ; IASM-NEXT: .byte 0x0
163 ; IASM-NEXT: .byte 0x0
164 ; IASM-NEXT: .byte 0x26
165 ; IASM-NEXT: .byte 0x4
166 ; IASM-NEXT: .byte 0x0
167 ; IASM-NEXT: .byte 0x25
168 ; IASM-NEXT: .byte 0x18
169 ; IASM-NEXT: .byte 0x83
170 ; IASM-NEXT: .byte 0x0
171 ; IASM-NEXT: .byte 0x25
172 ; IASM-NEXT: .byte 0x18
173 ; IASM-NEXT: .byte 0x62
174 ; IASM-NEXT: .byte 0x0
175 ; IASM-NEXT: .byte 0x21
176 ; IASM-NEXT: .byte 0x10
177 ; IASM-NEXT: .byte 0x60
178 ; IASM-NEXT: .byte 0x0
179 ; IASM-NEXT: .byte 0x8
180 ; IASM-NEXT: .byte 0x0
181 ; IASM-NEXT: .byte 0xe0
182 ; IASM-NEXT: .byte 0x3
183
184 define internal i64 @encBswap64(i64 %x) {
185 entry:
186 %r = call i64 @llvm.bswap.i64(i64 %x)
187 ret i64 %r
188 }
189
190 ; ASM-LABEL: encBswap64
191 ; ASM-NEXT: .LencBswap64$entry:
192 ; ASM-NEXT: sll $v0, $a1, 8
193 ; ASM-NEXT: srl $v1, $a1, 24
194 ; ASM-NEXT: srl $a2, $a1, 8
195 ; ASM-NEXT: andi $a2, $a2, 65280
196 ; ASM-NEXT: lui $a3, 255
197 ; ASM-NEXT: or $a2, $a2, $v1
198 ; ASM-NEXT: and $v0, $v0, $a3
199 ; ASM-NEXT: sll $a1, $a1, 24
200 ; ASM-NEXT: or $a1, $a1, $v0
201 ; ASM-NEXT: srl $v0, $a0, 24
202 ; ASM-NEXT: srl $v1, $a0, 8
203 ; ASM-NEXT: andi $v1, $v1, 65280
204 ; ASM-NEXT: or $a1, $a1, $a2
205 ; ASM-NEXT: or $v1, $v1, $v0
206 ; ASM-NEXT: sll $v0, $a0, 8
207 ; ASM-NEXT: and $v0, $v0, $a3
208 ; ASM-NEXT: sll $a0, $a0, 24
209 ; ASM-NEXT: or $a0, $a0, $v0
210 ; ASM-NEXT: or $a0, $a0, $v1
211 ; ASM-NEXT: move $v0, $a1
212 ; ASM-NEXT: move $v1, $a0
213 ; ASM-NEXT: jr $ra
214
215 ; DIS-LABEL: {{.*}} <encBswap64>:
216 ; DIS-NEXT: {{.*}} 00051200 sll v0,a1,0x8
217 ; DIS-NEXT: {{.*}} 00051e02 srl v1,a1,0x18
218 ; DIS-NEXT: {{.*}} 00053202 srl a2,a1,0x8
219 ; DIS-NEXT: {{.*}} 30c6ff00 andi a2,a2,0xff00
220 ; DIS-NEXT: {{.*}} 3c0700ff lui a3,0xff
221 ; DIS-NEXT: {{.*}} 00c33025 or a2,a2,v1
222 ; DIS-NEXT: {{.*}} 00471024 and v0,v0,a3
223 ; DIS-NEXT: {{.*}} 00052e00 sll a1,a1,0x18
224 ; DIS-NEXT: {{.*}} 00a22825 or a1,a1,v0
225 ; DIS-NEXT: {{.*}} 00041602 srl v0,a0,0x18
226 ; DIS-NEXT: {{.*}} 00041a02 srl v1,a0,0x8
227 ; DIS-NEXT: {{.*}} 3063ff00 andi v1,v1,0xff00
228 ; DIS-NEXT: {{.*}} 00a62825 or a1,a1,a2
229 ; DIS-NEXT: {{.*}} 00621825 or v1,v1,v0
230 ; DIS-NEXT: {{.*}} 00041200 sll v0,a0,0x8
231 ; DIS-NEXT: {{.*}} 00471024 and v0,v0,a3
232 ; DIS-NEXT: {{.*}} 00042600 sll a0,a0,0x18
233 ; DIS-NEXT: {{.*}} 00822025 or a0,a0,v0
234 ; DIS-NEXT: {{.*}} 00832025 or a0,a0,v1
235 ; DIS-NEXT: {{.*}} 00a01021 move v0,a1
236 ; DIS-NEXT: {{.*}} 00801821 move v1,a0
237 ; DIS-NEXT: {{.*}} 03e00008 jr ra
238
239
240 ; IASM-LABEL: encBswap64
241 ; IASM-NEXT: .LencBswap64$entry:
242 ; IASM-NEXT: .byte 0x0
243 ; IASM-NEXT: .byte 0x12
244 ; IASM-NEXT: .byte 0x5
245 ; IASM-NEXT: .byte 0x0
246 ; IASM-NEXT: .byte 0x2
247 ; IASM-NEXT: .byte 0x1e
248 ; IASM-NEXT: .byte 0x5
249 ; IASM-NEXT: .byte 0x0
250 ; IASM-NEXT: .byte 0x2
251 ; IASM-NEXT: .byte 0x32
252 ; IASM-NEXT: .byte 0x5
253 ; IASM-NEXT: .byte 0x0
254 ; IASM-NEXT: .byte 0x0
255 ; IASM-NEXT: .byte 0xff
256 ; IASM-NEXT: .byte 0xc6
257 ; IASM-NEXT: .byte 0x30
258 ; IASM-NEXT: .byte 0xff
259 ; IASM-NEXT: .byte 0x0
260 ; IASM-NEXT: .byte 0x7
261 ; IASM-NEXT: .byte 0x3c
262 ; IASM-NEXT: .byte 0x25
263 ; IASM-NEXT: .byte 0x30
264 ; IASM-NEXT: .byte 0xc3
265 ; IASM-NEXT: .byte 0x0
266 ; IASM-NEXT: .byte 0x24
267 ; IASM-NEXT: .byte 0x10
268 ; IASM-NEXT: .byte 0x47
269 ; IASM-NEXT: .byte 0x0
270 ; IASM-NEXT: .byte 0x0
271 ; IASM-NEXT: .byte 0x2e
272 ; IASM-NEXT: .byte 0x5
273 ; IASM-NEXT: .byte 0x0
274 ; IASM-NEXT: .byte 0x25
275 ; IASM-NEXT: .byte 0x28
276 ; IASM-NEXT: .byte 0xa2
277 ; IASM-NEXT: .byte 0x0
278 ; IASM-NEXT: .byte 0x2
279 ; IASM-NEXT: .byte 0x16
280 ; IASM-NEXT: .byte 0x4
281 ; IASM-NEXT: .byte 0x0
282 ; IASM-NEXT: .byte 0x2
283 ; IASM-NEXT: .byte 0x1a
284 ; IASM-NEXT: .byte 0x4
285 ; IASM-NEXT: .byte 0x0
286 ; IASM-NEXT: .byte 0x0
287 ; IASM-NEXT: .byte 0xff
288 ; IASM-NEXT: .byte 0x63
289 ; IASM-NEXT: .byte 0x30
290 ; IASM-NEXT: .byte 0x25
291 ; IASM-NEXT: .byte 0x28
292 ; IASM-NEXT: .byte 0xa6
293 ; IASM-NEXT: .byte 0x0
294 ; IASM-NEXT: .byte 0x25
295 ; IASM-NEXT: .byte 0x18
296 ; IASM-NEXT: .byte 0x62
297 ; IASM-NEXT: .byte 0x0
298 ; IASM-NEXT: .byte 0x0
299 ; IASM-NEXT: .byte 0x12
300 ; IASM-NEXT: .byte 0x4
301 ; IASM-NEXT: .byte 0x0
302 ; IASM-NEXT: .byte 0x24
303 ; IASM-NEXT: .byte 0x10
304 ; IASM-NEXT: .byte 0x47
305 ; IASM-NEXT: .byte 0x0
306 ; IASM-NEXT: .byte 0x0
307 ; IASM-NEXT: .byte 0x26
308 ; IASM-NEXT: .byte 0x4
309 ; IASM-NEXT: .byte 0x0
310 ; IASM-NEXT: .byte 0x25
311 ; IASM-NEXT: .byte 0x20
312 ; IASM-NEXT: .byte 0x82
313 ; IASM-NEXT: .byte 0x0
314 ; IASM-NEXT: .byte 0x25
315 ; IASM-NEXT: .byte 0x20
316 ; IASM-NEXT: .byte 0x83
317 ; IASM-NEXT: .byte 0x0
318 ; IASM-NEXT: .byte 0x21
319 ; IASM-NEXT: .byte 0x10
320 ; IASM-NEXT: .byte 0xa0
321 ; IASM-NEXT: .byte 0x0
322 ; IASM-NEXT: .byte 0x21
323 ; IASM-NEXT: .byte 0x18
324 ; IASM-NEXT: .byte 0x80
325 ; IASM-NEXT: .byte 0x0
326 ; IASM-NEXT: .byte 0x8
327 ; IASM-NEXT: .byte 0x0
328 ; IASM-NEXT: .byte 0xe0
329 ; IASM-NEXT: .byte 0x3
330
331 define internal i64 @encBswap64Undef() {
332 entry:
333 %r = call i64 @llvm.bswap.i64(i64 undef)
334 ret i64 %r
335 }
336
337 ; ASM-LABEL: encBswap64Undef
338 ; ASM-NEXT: .LencBswap64Undef$entry:
339 ; ASM-NEXT: # $zero = def.pseudo
340 ; ASM-NEXT: addiu $v0, $zero, 0
341 ; ASM-NEXT: # $zero = def.pseudo
342 ; ASM-NEXT: addiu $v1, $zero, 0
343 ; ASM-NEXT: sll $a0, $v1, 8
344 ; ASM-NEXT: srl $a1, $v1, 24
345 ; ASM-NEXT: srl $a2, $v1, 8
346 ; ASM-NEXT: andi $a2, $a2, 65280
347 ; ASM-NEXT: lui $a3, 255
348 ; ASM-NEXT: or $a2, $a2, $a1
349 ; ASM-NEXT: and $a0, $a0, $a3
350 ; ASM-NEXT: sll $v1, $v1, 24
351 ; ASM-NEXT: or $v1, $v1, $a0
352 ; ASM-NEXT: srl $a0, $v0, 24
353 ; ASM-NEXT: srl $a1, $v0, 8
354 ; ASM-NEXT: andi $a1, $a1, 65280
355 ; ASM-NEXT: or $v1, $v1, $a2
356 ; ASM-NEXT: or $a1, $a1, $a0
357 ; ASM-NEXT: sll $a0, $v0, 8
358 ; ASM-NEXT: and $a0, $a0, $a3
359 ; ASM-NEXT: sll $v0, $v0, 24
360 ; ASM-NEXT: or $v0, $v0, $a0
361 ; ASM-NEXT: or $v0, $v0, $a1
362 ; ASM-NEXT: move $a0, $v0
363 ; ASM-NEXT: move $v0, $v1
364 ; ASM-NEXT: move $v1, $a0
365 ; ASM-NEXT: jr $ra
366
367 ; DIS-LABEL: {{.*}} <encBswap64Undef>:
368 ; DIS-NEXT: {{.*}} 24020000 li v0,0
369 ; DIS-NEXT: {{.*}} 24030000 li v1,0
370 ; DIS-NEXT: {{.*}} 00032200 sll a0,v1,0x8
371 ; DIS-NEXT: {{.*}} 00032e02 srl a1,v1,0x18
372 ; DIS-NEXT: {{.*}} 00033202 srl a2,v1,0x8
373 ; DIS-NEXT: {{.*}} 30c6ff00 andi a2,a2,0xff00
374 ; DIS-NEXT: {{.*}} 3c0700ff lui a3,0xff
375 ; DIS-NEXT: {{.*}} 00c53025 or a2,a2,a1
376 ; DIS-NEXT: {{.*}} 00872024 and a0,a0,a3
377 ; DIS-NEXT: {{.*}} 00031e00 sll v1,v1,0x18
378 ; DIS-NEXT: {{.*}} 00641825 or v1,v1,a0
379 ; DIS-NEXT: {{.*}} 00022602 srl a0,v0,0x18
380 ; DIS-NEXT: {{.*}} 00022a02 srl a1,v0,0x8
381 ; DIS-NEXT: {{.*}} 30a5ff00 andi a1,a1,0xff00
382 ; DIS-NEXT: {{.*}} 00661825 or v1,v1,a2
383 ; DIS-NEXT: {{.*}} 00a42825 or a1,a1,a0
384 ; DIS-NEXT: {{.*}} 00022200 sll a0,v0,0x8
385 ; DIS-NEXT: {{.*}} 00872024 and a0,a0,a3
386 ; DIS-NEXT: {{.*}} 00021600 sll v0,v0,0x18
387 ; DIS-NEXT: {{.*}} 00441025 or v0,v0,a0
388 ; DIS-NEXT: {{.*}} 00451025 or v0,v0,a1
389 ; DIS-NEXT: {{.*}} 00402021 move a0,v0
390 ; DIS-NEXT: {{.*}} 00601021 move v0,v1
391 ; DIS-NEXT: {{.*}} 00801821 move v1,a0
392 ; DIS-NEXT: {{.*}} 03e00008 jr ra
393
394 ; IASM-LABEL: encBswap64Undef
395 ; IASM-NEXT: .LencBswap64Undef$entry:
396 ; IASM-NEXT: .byte 0x0
397 ; IASM-NEXT: .byte 0x0
398 ; IASM-NEXT: .byte 0x2
399 ; IASM-NEXT: .byte 0x24
400 ; IASM-NEXT: .byte 0x0
401 ; IASM-NEXT: .byte 0x0
402 ; IASM-NEXT: .byte 0x3
403 ; IASM-NEXT: .byte 0x24
404 ; IASM-NEXT: .byte 0x0
405 ; IASM-NEXT: .byte 0x22
406 ; IASM-NEXT: .byte 0x3
407 ; IASM-NEXT: .byte 0x0
408 ; IASM-NEXT: .byte 0x2
409 ; IASM-NEXT: .byte 0x2e
410 ; IASM-NEXT: .byte 0x3
411 ; IASM-NEXT: .byte 0x0
412 ; IASM-NEXT: .byte 0x2
413 ; IASM-NEXT: .byte 0x32
414 ; IASM-NEXT: .byte 0x3
415 ; IASM-NEXT: .byte 0x0
416 ; IASM-NEXT: .byte 0x0
417 ; IASM-NEXT: .byte 0xff
418 ; IASM-NEXT: .byte 0xc6
419 ; IASM-NEXT: .byte 0x30
420 ; IASM-NEXT: .byte 0xff
421 ; IASM-NEXT: .byte 0x0
422 ; IASM-NEXT: .byte 0x7
423 ; IASM-NEXT: .byte 0x3c
424 ; IASM-NEXT: .byte 0x25
425 ; IASM-NEXT: .byte 0x30
426 ; IASM-NEXT: .byte 0xc5
427 ; IASM-NEXT: .byte 0x0
428 ; IASM-NEXT: .byte 0x24
429 ; IASM-NEXT: .byte 0x20
430 ; IASM-NEXT: .byte 0x87
431 ; IASM-NEXT: .byte 0x0
432 ; IASM-NEXT: .byte 0x0
433 ; IASM-NEXT: .byte 0x1e
434 ; IASM-NEXT: .byte 0x3
435 ; IASM-NEXT: .byte 0x0
436 ; IASM-NEXT: .byte 0x25
437 ; IASM-NEXT: .byte 0x18
438 ; IASM-NEXT: .byte 0x64
439 ; IASM-NEXT: .byte 0x0
440 ; IASM-NEXT: .byte 0x2
441 ; IASM-NEXT: .byte 0x26
442 ; IASM-NEXT: .byte 0x2
443 ; IASM-NEXT: .byte 0x0
444 ; IASM-NEXT: .byte 0x2
445 ; IASM-NEXT: .byte 0x2a
446 ; IASM-NEXT: .byte 0x2
447 ; IASM-NEXT: .byte 0x0
448 ; IASM-NEXT: .byte 0x0
449 ; IASM-NEXT: .byte 0xff
450 ; IASM-NEXT: .byte 0xa5
451 ; IASM-NEXT: .byte 0x30
452 ; IASM-NEXT: .byte 0x25
453 ; IASM-NEXT: .byte 0x18
454 ; IASM-NEXT: .byte 0x66
455 ; IASM-NEXT: .byte 0x0
456 ; IASM-NEXT: .byte 0x25
457 ; IASM-NEXT: .byte 0x28
458 ; IASM-NEXT: .byte 0xa4
459 ; IASM-NEXT: .byte 0x0
460 ; IASM-NEXT: .byte 0x0
461 ; IASM-NEXT: .byte 0x22
462 ; IASM-NEXT: .byte 0x2
463 ; IASM-NEXT: .byte 0x0
464 ; IASM-NEXT: .byte 0x24
465 ; IASM-NEXT: .byte 0x20
466 ; IASM-NEXT: .byte 0x87
467 ; IASM-NEXT: .byte 0x0
468 ; IASM-NEXT: .byte 0x0
469 ; IASM-NEXT: .byte 0x16
470 ; IASM-NEXT: .byte 0x2
471 ; IASM-NEXT: .byte 0x0
472 ; IASM-NEXT: .byte 0x25
473 ; IASM-NEXT: .byte 0x10
474 ; IASM-NEXT: .byte 0x44
475 ; IASM-NEXT: .byte 0x0
476 ; IASM-NEXT: .byte 0x25
477 ; IASM-NEXT: .byte 0x10
478 ; IASM-NEXT: .byte 0x45
479 ; IASM-NEXT: .byte 0x0
480 ; IASM-NEXT: .byte 0x21
481 ; IASM-NEXT: .byte 0x20
482 ; IASM-NEXT: .byte 0x40
483 ; IASM-NEXT: .byte 0x0
484 ; IASM-NEXT: .byte 0x21
485 ; IASM-NEXT: .byte 0x10
486 ; IASM-NEXT: .byte 0x60
487 ; IASM-NEXT: .byte 0x0
488 ; IASM-NEXT: .byte 0x21
489 ; IASM-NEXT: .byte 0x18
490 ; IASM-NEXT: .byte 0x80
491 ; IASM-NEXT: .byte 0x0
492 ; IASM-NEXT: .byte 0x8
493 ; IASM-NEXT: .byte 0x0
494 ; IASM-NEXT: .byte 0xe0
495 ; IASM-NEXT: .byte 0x3
496
31 define internal i32 @encCtlz32(i32 %x) { 497 define internal i32 @encCtlz32(i32 %x) {
32 entry: 498 entry:
33 %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false) 499 %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
34 ret i32 %r 500 ret i32 %r
35 } 501 }
36 502
37 ; ASM-LABEL: encCtlz32 503 ; ASM-LABEL: encCtlz32
38 ; ASM-NEXT: .LencCtlz32$entry: 504 ; ASM-NEXT: .LencCtlz32$entry:
39 ; ASM-NEXT: clz $a0, $a0 505 ; ASM-NEXT: clz $a0, $a0
40 ; ASM-NEXT: move $v0, $a0 506 ; ASM-NEXT: move $v0, $a0
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 1075
610 ; DIS-LABEL: {{.*}} <encTrap>: 1076 ; DIS-LABEL: {{.*}} <encTrap>:
611 ; DIS-NEXT: {{.*}} 00000034 teq zero,zero 1077 ; DIS-NEXT: {{.*}} 00000034 teq zero,zero
612 1078
613 ; IASM-LABEL: encTrap: 1079 ; IASM-LABEL: encTrap:
614 ; IASM-NEXT: .LencTrap$__0: 1080 ; IASM-NEXT: .LencTrap$__0:
615 ; IASM-NEXT: .byte 0x34 1081 ; IASM-NEXT: .byte 0x34
616 ; IASM-NEXT: .byte 0x0 1082 ; IASM-NEXT: .byte 0x0
617 ; IASM-NEXT: .byte 0x0 1083 ; IASM-NEXT: .byte 0x0
618 ; IASM-NEXT: .byte 0x0 1084 ; IASM-NEXT: .byte 0x0
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698