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

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

Issue 2394773004: Subzero, MIPS32: Fix conditional mov instructions (Closed)
Patch Set: Fix typo in test file 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
« src/IceTargetLoweringMIPS32.h ('K') | « src/IceTargetLoweringMIPS32.h ('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 ; 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.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 ; ASM-NEXT: .LencBswap16$entry: 43 ; ASM-NEXT: .LencBswap16$entry:
44 ; ASM-NEXT: sll $v0, $a0, 8 44 ; ASM-NEXT: sll $v0, $a0, 8
45 ; ASM-NEXT: lui $v1, 255 45 ; ASM-NEXT: lui $v1, 255
46 ; ASM-NEXT: and $v0, $v0, $v1 46 ; ASM-NEXT: and $v0, $v0, $v1
47 ; ASM-NEXT: sll $a0, $a0, 24 47 ; ASM-NEXT: sll $a0, $a0, 24
48 ; ASM-NEXT: or $v0, $a0, $v0 48 ; ASM-NEXT: or $v0, $a0, $v0
49 ; ASM-NEXT: srl $v0, $v0, 16 49 ; ASM-NEXT: srl $v0, $v0, 16
50 ; ASM-NEXT: andi $v0, $v0, 65535 50 ; ASM-NEXT: andi $v0, $v0, 65535
51 ; ASM-NEXT: jr $ra 51 ; ASM-NEXT: jr $ra
52 52
53 ; DIS-LABEL: {{.*}} <encBswap16>: 53 ; DIS-LABEL: <encBswap16>:
54 ; DIS-NEXT: {{.*}} 00041200 » sll» v0,a0,0x8 54 ; DIS-NEXT: 00041200 » sll» v0,a0,0x8
55 ; DIS-NEXT: {{.*}} 3c0300ff » lui» v1,0xff 55 ; DIS-NEXT: 3c0300ff » lui» v1,0xff
56 ; DIS-NEXT: {{.*}} 00431024 » and» v0,v0,v1 56 ; DIS-NEXT: 00431024 » and» v0,v0,v1
57 ; DIS-NEXT: {{.*}} 00042600 » sll» a0,a0,0x18 57 ; DIS-NEXT: 00042600 » sll» a0,a0,0x18
58 ; DIS-NEXT: {{.*}} 00821025 » or» v0,a0,v0 58 ; DIS-NEXT: 00821025 » or» v0,a0,v0
59 ; DIS-NEXT: {{.*}} 00021402 » srl» v0,v0,0x10 59 ; DIS-NEXT: 00021402 » srl» v0,v0,0x10
60 ; DIS-NEXT: {{.*}} 3042ffff » andi» v0,v0,0xffff 60 ; DIS-NEXT: 3042ffff » andi» v0,v0,0xffff
61 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 61 ; DIS-NEXT: 03e00008 » jr» ra
62 62
63 ; IASM-LABEL: encBswap16 63 ; IASM-LABEL: encBswap16
64 ; IASM-NEXT: .LencBswap16$entry: 64 ; IASM-NEXT: .LencBswap16$entry:
65 ; IASM-NEXT: .byte 0x0 65 ; IASM-NEXT: .byte 0x0
66 ; IASM-NEXT: .byte 0x12 66 ; IASM-NEXT: .byte 0x12
67 ; IASM-NEXT: .byte 0x4 67 ; IASM-NEXT: .byte 0x4
68 ; IASM-NEXT: .byte 0x0 68 ; IASM-NEXT: .byte 0x0
69 ; IASM-NEXT: .byte 0xff 69 ; IASM-NEXT: .byte 0xff
70 ; IASM-NEXT: .byte 0x0 70 ; IASM-NEXT: .byte 0x0
71 ; IASM-NEXT: .byte 0x3 71 ; IASM-NEXT: .byte 0x3
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 ; ASM-NEXT: or $v0, $v1, $v0 109 ; ASM-NEXT: or $v0, $v1, $v0
110 ; ASM-NEXT: sll $v1, $a0, 8 110 ; ASM-NEXT: sll $v1, $a0, 8
111 ; ASM-NEXT: lui $a1, 255 111 ; ASM-NEXT: lui $a1, 255
112 ; ASM-NEXT: and $v1, $v1, $a1 112 ; ASM-NEXT: and $v1, $v1, $a1
113 ; ASM-NEXT: sll $a0, $a0, 24 113 ; ASM-NEXT: sll $a0, $a0, 24
114 ; ASM-NEXT: or $v1, $a0, $v1 114 ; ASM-NEXT: or $v1, $a0, $v1
115 ; ASM-NEXT: or $v1, $v1, $v0 115 ; ASM-NEXT: or $v1, $v1, $v0
116 ; ASM-NEXT: move $v0, $v1 116 ; ASM-NEXT: move $v0, $v1
117 ; ASM-NEXT: jr $ra 117 ; ASM-NEXT: jr $ra
118 118
119 ; DIS-LABEL: {{.*}} <encBswap32>: 119 ; DIS-LABEL: <encBswap32>:
120 ; DIS-NEXT: {{.*}} 00041602 » srl» v0,a0,0x18 120 ; DIS-NEXT: 00041602 » srl» v0,a0,0x18
121 ; DIS-NEXT: {{.*}} 00041a02 » srl» v1,a0,0x8 121 ; DIS-NEXT: 00041a02 » srl» v1,a0,0x8
122 ; DIS-NEXT: {{.*}} 3063ff00 » andi» v1,v1,0xff00 122 ; DIS-NEXT: 3063ff00 » andi» v1,v1,0xff00
123 ; DIS-NEXT: {{.*}} 00621025 » or» v0,v1,v0 123 ; DIS-NEXT: 00621025 » or» v0,v1,v0
124 ; DIS-NEXT: {{.*}} 00041a00 » sll» v1,a0,0x8 124 ; DIS-NEXT: 00041a00 » sll» v1,a0,0x8
125 ; DIS-NEXT: {{.*}} 3c0500ff » lui» a1,0xff 125 ; DIS-NEXT: 3c0500ff » lui» a1,0xff
126 ; DIS-NEXT: {{.*}} 00651824 » and» v1,v1,a1 126 ; DIS-NEXT: 00651824 » and» v1,v1,a1
127 ; DIS-NEXT: {{.*}} 00042600 » sll» a0,a0,0x18 127 ; DIS-NEXT: 00042600 » sll» a0,a0,0x18
128 ; DIS-NEXT: {{.*}} 00831825 » or» v1,a0,v1 128 ; DIS-NEXT: 00831825 » or» v1,a0,v1
129 ; DIS-NEXT: {{.*}} 00621825 » or» v1,v1,v0 129 ; DIS-NEXT: 00621825 » or» v1,v1,v0
130 ; DIS-NEXT: {{.*}} 00601021 » move» v0,v1 130 ; DIS-NEXT: 00601021 » move» v0,v1
131 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 131 ; DIS-NEXT: 03e00008 » jr» ra
132 132
133 ; IASM-LABEL: encBswap32 133 ; IASM-LABEL: encBswap32
134 ; IASM-NEXT: .LencBswap32$entry: 134 ; IASM-NEXT: .LencBswap32$entry:
135 ; IASM-NEXT: .byte 0x2 135 ; IASM-NEXT: .byte 0x2
136 ; IASM-NEXT: .byte 0x16 136 ; IASM-NEXT: .byte 0x16
137 ; IASM-NEXT: .byte 0x4 137 ; IASM-NEXT: .byte 0x4
138 ; IASM-NEXT: .byte 0x0 138 ; IASM-NEXT: .byte 0x0
139 ; IASM-NEXT: .byte 0x2 139 ; IASM-NEXT: .byte 0x2
140 ; IASM-NEXT: .byte 0x1a 140 ; IASM-NEXT: .byte 0x1a
141 ; IASM-NEXT: .byte 0x4 141 ; IASM-NEXT: .byte 0x4
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 ; ASM-NEXT: or $v1, $v1, $v0 205 ; ASM-NEXT: or $v1, $v1, $v0
206 ; ASM-NEXT: sll $v0, $a0, 8 206 ; ASM-NEXT: sll $v0, $a0, 8
207 ; ASM-NEXT: and $v0, $v0, $a3 207 ; ASM-NEXT: and $v0, $v0, $a3
208 ; ASM-NEXT: sll $a0, $a0, 24 208 ; ASM-NEXT: sll $a0, $a0, 24
209 ; ASM-NEXT: or $a0, $a0, $v0 209 ; ASM-NEXT: or $a0, $a0, $v0
210 ; ASM-NEXT: or $a0, $a0, $v1 210 ; ASM-NEXT: or $a0, $a0, $v1
211 ; ASM-NEXT: move $v0, $a1 211 ; ASM-NEXT: move $v0, $a1
212 ; ASM-NEXT: move $v1, $a0 212 ; ASM-NEXT: move $v1, $a0
213 ; ASM-NEXT: jr $ra 213 ; ASM-NEXT: jr $ra
214 214
215 ; DIS-LABEL: {{.*}} <encBswap64>: 215 ; DIS-LABEL: <encBswap64>:
216 ; DIS-NEXT: {{.*}} 00051200 » sll» v0,a1,0x8 216 ; DIS-NEXT: 00051200 » sll» v0,a1,0x8
217 ; DIS-NEXT: {{.*}} 00051e02 » srl» v1,a1,0x18 217 ; DIS-NEXT: 00051e02 » srl» v1,a1,0x18
218 ; DIS-NEXT: {{.*}} 00053202 » srl» a2,a1,0x8 218 ; DIS-NEXT: 00053202 » srl» a2,a1,0x8
219 ; DIS-NEXT: {{.*}} 30c6ff00 » andi» a2,a2,0xff00 219 ; DIS-NEXT: 30c6ff00 » andi» a2,a2,0xff00
220 ; DIS-NEXT: {{.*}} 3c0700ff » lui» a3,0xff 220 ; DIS-NEXT: 3c0700ff » lui» a3,0xff
221 ; DIS-NEXT: {{.*}} 00c33025 » or» a2,a2,v1 221 ; DIS-NEXT: 00c33025 » or» a2,a2,v1
222 ; DIS-NEXT: {{.*}} 00471024 » and» v0,v0,a3 222 ; DIS-NEXT: 00471024 » and» v0,v0,a3
223 ; DIS-NEXT: {{.*}} 00052e00 » sll» a1,a1,0x18 223 ; DIS-NEXT: 00052e00 » sll» a1,a1,0x18
224 ; DIS-NEXT: {{.*}} 00a22825 » or» a1,a1,v0 224 ; DIS-NEXT: 00a22825 » or» a1,a1,v0
225 ; DIS-NEXT: {{.*}} 00041602 » srl» v0,a0,0x18 225 ; DIS-NEXT: 00041602 » srl» v0,a0,0x18
226 ; DIS-NEXT: {{.*}} 00041a02 » srl» v1,a0,0x8 226 ; DIS-NEXT: 00041a02 » srl» v1,a0,0x8
227 ; DIS-NEXT: {{.*}} 3063ff00 » andi» v1,v1,0xff00 227 ; DIS-NEXT: 3063ff00 » andi» v1,v1,0xff00
228 ; DIS-NEXT: {{.*}} 00a62825 » or» a1,a1,a2 228 ; DIS-NEXT: 00a62825 » or» a1,a1,a2
229 ; DIS-NEXT: {{.*}} 00621825 » or» v1,v1,v0 229 ; DIS-NEXT: 00621825 » or» v1,v1,v0
230 ; DIS-NEXT: {{.*}} 00041200 » sll» v0,a0,0x8 230 ; DIS-NEXT: 00041200 » sll» v0,a0,0x8
231 ; DIS-NEXT: {{.*}} 00471024 » and» v0,v0,a3 231 ; DIS-NEXT: 00471024 » and» v0,v0,a3
232 ; DIS-NEXT: {{.*}} 00042600 » sll» a0,a0,0x18 232 ; DIS-NEXT: 00042600 » sll» a0,a0,0x18
233 ; DIS-NEXT: {{.*}} 00822025 » or» a0,a0,v0 233 ; DIS-NEXT: 00822025 » or» a0,a0,v0
234 ; DIS-NEXT: {{.*}} 00832025 » or» a0,a0,v1 234 ; DIS-NEXT: 00832025 » or» a0,a0,v1
235 ; DIS-NEXT: {{.*}} 00a01021 » move» v0,a1 235 ; DIS-NEXT: 00a01021 » move» v0,a1
236 ; DIS-NEXT: {{.*}} 00801821 » move» v1,a0 236 ; DIS-NEXT: 00801821 » move» v1,a0
237 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 237 ; DIS-NEXT: 03e00008 » jr» ra
238 238
239 239
240 ; IASM-LABEL: encBswap64 240 ; IASM-LABEL: encBswap64
241 ; IASM-NEXT: .LencBswap64$entry: 241 ; IASM-NEXT: .LencBswap64$entry:
242 ; IASM-NEXT: .byte 0x0 242 ; IASM-NEXT: .byte 0x0
243 ; IASM-NEXT: .byte 0x12 243 ; IASM-NEXT: .byte 0x12
244 ; IASM-NEXT: .byte 0x5 244 ; IASM-NEXT: .byte 0x5
245 ; IASM-NEXT: .byte 0x0 245 ; IASM-NEXT: .byte 0x0
246 ; IASM-NEXT: .byte 0x2 246 ; IASM-NEXT: .byte 0x2
247 ; IASM-NEXT: .byte 0x1e 247 ; IASM-NEXT: .byte 0x1e
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 ; ASM-NEXT: sll $a0, $v0, 8 357 ; ASM-NEXT: sll $a0, $v0, 8
358 ; ASM-NEXT: and $a0, $a0, $a3 358 ; ASM-NEXT: and $a0, $a0, $a3
359 ; ASM-NEXT: sll $v0, $v0, 24 359 ; ASM-NEXT: sll $v0, $v0, 24
360 ; ASM-NEXT: or $v0, $v0, $a0 360 ; ASM-NEXT: or $v0, $v0, $a0
361 ; ASM-NEXT: or $v0, $v0, $a1 361 ; ASM-NEXT: or $v0, $v0, $a1
362 ; ASM-NEXT: move $a0, $v0 362 ; ASM-NEXT: move $a0, $v0
363 ; ASM-NEXT: move $v0, $v1 363 ; ASM-NEXT: move $v0, $v1
364 ; ASM-NEXT: move $v1, $a0 364 ; ASM-NEXT: move $v1, $a0
365 ; ASM-NEXT: jr $ra 365 ; ASM-NEXT: jr $ra
366 366
367 ; DIS-LABEL: {{.*}} <encBswap64Undef>: 367 ; DIS-LABEL: <encBswap64Undef>:
368 ; DIS-NEXT: {{.*}} 24020000 » li» v0,0 368 ; DIS-NEXT: 24020000 » li» v0,0
369 ; DIS-NEXT: {{.*}} 24030000 » li» v1,0 369 ; DIS-NEXT: 24030000 » li» v1,0
370 ; DIS-NEXT: {{.*}} 00032200 » sll» a0,v1,0x8 370 ; DIS-NEXT: 00032200 » sll» a0,v1,0x8
371 ; DIS-NEXT: {{.*}} 00032e02 » srl» a1,v1,0x18 371 ; DIS-NEXT: 00032e02 » srl» a1,v1,0x18
372 ; DIS-NEXT: {{.*}} 00033202 » srl» a2,v1,0x8 372 ; DIS-NEXT: 00033202 » srl» a2,v1,0x8
373 ; DIS-NEXT: {{.*}} 30c6ff00 » andi» a2,a2,0xff00 373 ; DIS-NEXT: 30c6ff00 » andi» a2,a2,0xff00
374 ; DIS-NEXT: {{.*}} 3c0700ff » lui» a3,0xff 374 ; DIS-NEXT: 3c0700ff » lui» a3,0xff
375 ; DIS-NEXT: {{.*}} 00c53025 » or» a2,a2,a1 375 ; DIS-NEXT: 00c53025 » or» a2,a2,a1
376 ; DIS-NEXT: {{.*}} 00872024 » and» a0,a0,a3 376 ; DIS-NEXT: 00872024 » and» a0,a0,a3
377 ; DIS-NEXT: {{.*}} 00031e00 » sll» v1,v1,0x18 377 ; DIS-NEXT: 00031e00 » sll» v1,v1,0x18
378 ; DIS-NEXT: {{.*}} 00641825 » or» v1,v1,a0 378 ; DIS-NEXT: 00641825 » or» v1,v1,a0
379 ; DIS-NEXT: {{.*}} 00022602 » srl» a0,v0,0x18 379 ; DIS-NEXT: 00022602 » srl» a0,v0,0x18
380 ; DIS-NEXT: {{.*}} 00022a02 » srl» a1,v0,0x8 380 ; DIS-NEXT: 00022a02 » srl» a1,v0,0x8
381 ; DIS-NEXT: {{.*}} 30a5ff00 » andi» a1,a1,0xff00 381 ; DIS-NEXT: 30a5ff00 » andi» a1,a1,0xff00
382 ; DIS-NEXT: {{.*}} 00661825 » or» v1,v1,a2 382 ; DIS-NEXT: 00661825 » or» v1,v1,a2
383 ; DIS-NEXT: {{.*}} 00a42825 » or» a1,a1,a0 383 ; DIS-NEXT: 00a42825 » or» a1,a1,a0
384 ; DIS-NEXT: {{.*}} 00022200 » sll» a0,v0,0x8 384 ; DIS-NEXT: 00022200 » sll» a0,v0,0x8
385 ; DIS-NEXT: {{.*}} 00872024 » and» a0,a0,a3 385 ; DIS-NEXT: 00872024 » and» a0,a0,a3
386 ; DIS-NEXT: {{.*}} 00021600 » sll» v0,v0,0x18 386 ; DIS-NEXT: 00021600 » sll» v0,v0,0x18
387 ; DIS-NEXT: {{.*}} 00441025 » or» v0,v0,a0 387 ; DIS-NEXT: 00441025 » or» v0,v0,a0
388 ; DIS-NEXT: {{.*}} 00451025 » or» v0,v0,a1 388 ; DIS-NEXT: 00451025 » or» v0,v0,a1
389 ; DIS-NEXT: {{.*}} 00402021 » move» a0,v0 389 ; DIS-NEXT: 00402021 » move» a0,v0
390 ; DIS-NEXT: {{.*}} 00601021 » move» v0,v1 390 ; DIS-NEXT: 00601021 » move» v0,v1
391 ; DIS-NEXT: {{.*}} 00801821 » move» v1,a0 391 ; DIS-NEXT: 00801821 » move» v1,a0
392 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 392 ; DIS-NEXT: 03e00008 » jr» ra
393 393
394 ; IASM-LABEL: encBswap64Undef 394 ; IASM-LABEL: encBswap64Undef
395 ; IASM-NEXT: .LencBswap64Undef$entry: 395 ; IASM-NEXT: .LencBswap64Undef$entry:
396 ; IASM-NEXT: .byte 0x0 396 ; IASM-NEXT: .byte 0x0
397 ; IASM-NEXT: .byte 0x0 397 ; IASM-NEXT: .byte 0x0
398 ; IASM-NEXT: .byte 0x2 398 ; IASM-NEXT: .byte 0x2
399 ; IASM-NEXT: .byte 0x24 399 ; IASM-NEXT: .byte 0x24
400 ; IASM-NEXT: .byte 0x0 400 ; IASM-NEXT: .byte 0x0
401 ; IASM-NEXT: .byte 0x0 401 ; IASM-NEXT: .byte 0x0
402 ; IASM-NEXT: .byte 0x3 402 ; IASM-NEXT: .byte 0x3
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false) 499 %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
500 ret i32 %r 500 ret i32 %r
501 } 501 }
502 502
503 ; ASM-LABEL: encCtlz32 503 ; ASM-LABEL: encCtlz32
504 ; ASM-NEXT: .LencCtlz32$entry: 504 ; ASM-NEXT: .LencCtlz32$entry:
505 ; ASM-NEXT: clz $a0, $a0 505 ; ASM-NEXT: clz $a0, $a0
506 ; ASM-NEXT: move $v0, $a0 506 ; ASM-NEXT: move $v0, $a0
507 ; ASM-NEXT: jr $ra 507 ; ASM-NEXT: jr $ra
508 508
509 ; DIS-LABEL: {{.*}} <encCtlz32>: 509 ; DIS-LABEL: <encCtlz32>:
510 ; DIS-NEXT: {{.*}} 70842020 » clz» a0,a0 510 ; DIS-NEXT: 70842020 » clz» a0,a0
511 ; DIS-NEXT: {{.*}} 00801021 » move» v0,a0 511 ; DIS-NEXT: 00801021 » move» v0,a0
512 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 512 ; DIS-NEXT: 03e00008 » jr» ra
513 513
514 ; IASM-LABEL: encCtlz32 514 ; IASM-LABEL: encCtlz32
515 ; IASM-NEXT: .LencCtlz32$entry: 515 ; IASM-NEXT: .LencCtlz32$entry:
516 ; IASM-NEXT: .byte 0x20 516 ; IASM-NEXT: .byte 0x20
517 ; IASM-NEXT: .byte 0x20 517 ; IASM-NEXT: .byte 0x20
518 ; IASM-NEXT: .byte 0x84 518 ; IASM-NEXT: .byte 0x84
519 ; IASM-NEXT: .byte 0x70 519 ; IASM-NEXT: .byte 0x70
520 ; IASM-NEXT: .byte 0x21 520 ; IASM-NEXT: .byte 0x21
521 ; IASM-NEXT: .byte 0x10 521 ; IASM-NEXT: .byte 0x10
522 ; IASM-NEXT: .byte 0x80 522 ; IASM-NEXT: .byte 0x80
523 ; IASM-NEXT: .byte 0x0 523 ; IASM-NEXT: .byte 0x0
524 ; IASM-NEXT: .byte 0x8 524 ; IASM-NEXT: .byte 0x8
525 ; IASM-NEXT: .byte 0x0 525 ; IASM-NEXT: .byte 0x0
526 ; IASM-NEXT: .byte 0xe0 526 ; IASM-NEXT: .byte 0xe0
527 ; IASM-NEXT: .byte 0x3 527 ; IASM-NEXT: .byte 0x3
528 528
529 define internal i32 @encCtlz32Const() { 529 define internal i32 @encCtlz32Const() {
530 entry: 530 entry:
531 %r = call i32 @llvm.ctlz.i32(i32 123456, i1 false) 531 %r = call i32 @llvm.ctlz.i32(i32 123456, i1 false)
532 ret i32 %r 532 ret i32 %r
533 } 533 }
534 534
535 ; ASM-LABEL: encCtlz32Const 535 ; ASM-LABEL: encCtlz32Const
536 ; ASM-NEXT: .LencCtlz32Const$entry: 536 ; ASM-NEXT: .LencCtlz32Const$entry:
537 ; ASM-NEXT: lui $v0, 1 537 ; ASM-NEXT: lui $v0, 1
538 ; ASM-NEXT: ori $v0, $v0, 57920 538 ; ASM-NEXT: ori $v0, $v0, 57920
539 ; ASM-NEXT: clz $v0, $v0 539 ; ASM-NEXT: clz $v0, $v0
540 ; ASM-NEXT: jr $ra 540 ; ASM-NEXT: jr $ra
541 541
542 ; DIS-LABEL: {{.*}} <encCtlz32Const>: 542 ; DIS-LABEL: <encCtlz32Const>:
543 ; DIS-NEXT: {{.*}} 3c020001 » lui» v0,0x1 543 ; DIS-NEXT: 3c020001 » lui» v0,0x1
544 ; DIS-NEXT: {{.*}} 3442e240 » ori» v0,v0,0xe240 544 ; DIS-NEXT: 3442e240 » ori» v0,v0,0xe240
545 ; DIS-NEXT: {{.*}} 70421020 » clz» v0,v0 545 ; DIS-NEXT: 70421020 » clz» v0,v0
546 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 546 ; DIS-NEXT: 03e00008 » jr» ra
547 547
548 ; IASM-LABEL: encCtlz32Const 548 ; IASM-LABEL: encCtlz32Const
549 ; IASM-NEXT: .LencCtlz32Const$entry: 549 ; IASM-NEXT: .LencCtlz32Const$entry:
550 ; IASM-NEXT: .byte 0x1 550 ; IASM-NEXT: .byte 0x1
551 ; IASM-NEXT: .byte 0x0 551 ; IASM-NEXT: .byte 0x0
552 ; IASM-NEXT: .byte 0x2 552 ; IASM-NEXT: .byte 0x2
553 ; IASM-NEXT: .byte 0x3c 553 ; IASM-NEXT: .byte 0x3c
554 ; IASM-NEXT: .byte 0x40 554 ; IASM-NEXT: .byte 0x40
555 ; IASM-NEXT: .byte 0xe2 555 ; IASM-NEXT: .byte 0xe2
556 ; IASM-NEXT: .byte 0x42 556 ; IASM-NEXT: .byte 0x42
(...skipping 17 matching lines...) Expand all
574 ; ASM-NEXT: .LencCtlz64$entry: 574 ; ASM-NEXT: .LencCtlz64$entry:
575 ; ASM-NEXT: clz $v0, $a1 575 ; ASM-NEXT: clz $v0, $a1
576 ; ASM-NEXT: clz $a0, $a0 576 ; ASM-NEXT: clz $a0, $a0
577 ; ASM-NEXT: addiu $a0, $a0, 32 577 ; ASM-NEXT: addiu $a0, $a0, 32
578 ; ASM-NEXT: movn $a0, $v0, $a1 578 ; ASM-NEXT: movn $a0, $v0, $a1
579 ; ASM-NEXT: addiu $v0, $zero, 0 579 ; ASM-NEXT: addiu $v0, $zero, 0
580 ; ASM-NEXT: move $v1, $v0 580 ; ASM-NEXT: move $v1, $v0
581 ; ASM-NEXT: move $v0, $a0 581 ; ASM-NEXT: move $v0, $a0
582 ; ASM-NEXT: jr $ra 582 ; ASM-NEXT: jr $ra
583 583
584 ; DIS-LABEL: {{.*}} <encCtlz64>: 584 ; DIS-LABEL: <encCtlz64>:
585 ; DIS-NEXT: {{.*}} 70a21020 » clz» v0,a1 585 ; DIS-NEXT: 70a21020 » clz» v0,a1
586 ; DIS-NEXT: {{.*}} 70842020 » clz» a0,a0 586 ; DIS-NEXT: 70842020 » clz» a0,a0
587 ; DIS-NEXT: {{.*}} 24840020 » addiu» a0,a0,32 587 ; DIS-NEXT: 24840020 » addiu» a0,a0,32
588 ; DIS-NEXT: {{.*}} {{.*}}0b » movn» {{.*}} 588 ; DIS-NEXT: 0045200b » movn» a0,v0,a1
589 ; DIS-NEXT: {{.*}} 24020000 » li» v0,0 589 ; DIS-NEXT: 24020000 » li» v0,0
590 ; DIS-NEXT: {{.*}} 00401821 » move» v1,v0 590 ; DIS-NEXT: 00401821 » move» v1,v0
591 ; DIS-NEXT: {{.*}} 00801021 » move» v0,a0 591 ; DIS-NEXT: 00801021 » move» v0,a0
592 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 592 ; DIS-NEXT: 03e00008 » jr» ra
593 593
594 ; IASM-LABEL: encCtlz64 594 ; IASM-LABEL: encCtlz64
595 ; IASM-NEXT: .LencCtlz64$entry: 595 ; IASM-NEXT: .LencCtlz64$entry:
596 ; IASM-NEXT: » .byte 0x20 596 ; IASM-NEXT:» .byte 0x20
597 ; IASM-NEXT: » .byte 0x10 597 ; IASM-NEXT:» .byte 0x10
598 ; IASM-NEXT: » .byte 0xa2 598 ; IASM-NEXT:» .byte 0xa2
599 ; IASM-NEXT: » .byte 0x70 599 ; IASM-NEXT:» .byte 0x70
600 ; IASM-NEXT: » .byte 0x20 600 ; IASM-NEXT:» .byte 0x20
601 ; IASM-NEXT: » .byte 0x20 601 ; IASM-NEXT:» .byte 0x20
602 ; IASM-NEXT: » .byte 0x84 602 ; IASM-NEXT:» .byte 0x84
603 ; IASM-NEXT: » .byte 0x70 603 ; IASM-NEXT:» .byte 0x70
604 ; IASM-NEXT: » .byte 0x20 604 ; IASM-NEXT:» .byte 0x20
605 ; IASM-NEXT: » .byte 0x0 605 ; IASM-NEXT:» .byte 0x0
606 ; IASM-NEXT: » .byte 0x84 606 ; IASM-NEXT:» .byte 0x84
607 ; IASM-NEXT: » .byte 0x24 607 ; IASM-NEXT:» .byte 0x24
608 ; IASM-NEXT: » .byte 0xb 608 ; IASM-NEXT:» .byte 0xb
609 ; IASM-NEXT: » .byte 0x20 609 ; IASM-NEXT:» .byte 0x20
610 ; IASM-NEXT: » .byte 0x82 610 ; IASM-NEXT:» .byte 0x45
611 ; IASM-NEXT: » .byte 0x0 611 ; IASM-NEXT:» .byte 0x0
612 ; IASM-NEXT: » .byte 0x0 612 ; IASM-NEXT:» .byte 0x0
613 ; IASM-NEXT: » .byte 0x0 613 ; IASM-NEXT:» .byte 0x0
614 ; IASM-NEXT: » .byte 0x2 614 ; IASM-NEXT:» .byte 0x2
615 ; IASM-NEXT: » .byte 0x24 615 ; IASM-NEXT:» .byte 0x24
616 ; IASM-NEXT: » .byte 0x21 616 ; IASM-NEXT:» .byte 0x21
617 ; IASM-NEXT: » .byte 0x18 617 ; IASM-NEXT:» .byte 0x18
618 ; IASM-NEXT: » .byte 0x40 618 ; IASM-NEXT:» .byte 0x40
619 ; IASM-NEXT: » .byte 0x0 619 ; IASM-NEXT:» .byte 0x0
620 ; IASM-NEXT: » .byte 0x21 620 ; IASM-NEXT:» .byte 0x21
621 ; IASM-NEXT: » .byte 0x10 621 ; IASM-NEXT:» .byte 0x10
622 ; IASM-NEXT: » .byte 0x80 622 ; IASM-NEXT:» .byte 0x80
623 ; IASM-NEXT: » .byte 0x0 623 ; IASM-NEXT:» .byte 0x0
624 ; IASM-NEXT: » .byte 0x8 624 ; IASM-NEXT:» .byte 0x8
625 ; IASM-NEXT: » .byte 0x0 625 ; IASM-NEXT:» .byte 0x0
626 ; IASM-NEXT: » .byte 0xe0 626 ; IASM-NEXT:» .byte 0xe0
627 ; IASM-NEXT: » .byte 0x3 627 ; IASM-NEXT:» .byte 0x3
628 628
629 define internal i32 @encCtlz64Const(i64 %x) { 629 define internal i32 @encCtlz64Const(i64 %x) {
630 entry: 630 entry:
631 %r = call i64 @llvm.ctlz.i64(i64 123456789012, i1 false) 631 %r = call i64 @llvm.ctlz.i64(i64 123456789012, i1 false)
632 %r2 = trunc i64 %r to i32 632 %r2 = trunc i64 %r to i32
633 ret i32 %r2 633 ret i32 %r2
634 } 634 }
635 635
636 ; ASM-LABEL: encCtlz64Const 636 ; ASM-LABEL: encCtlz64Const
637 ; ASM-NEXT: .LencCtlz64Const$entry: 637 ; ASM-NEXT: .LencCtlz64Const$entry:
638 ; ASM-NEXT: # $zero = def.pseudo 638 ; ASM-NEXT: # $zero = def.pseudo
639 ; ASM-NEXT: addiu $v0, $zero, 28 639 ; ASM-NEXT: addiu $v0, $zero, 28
640 ; ASM-NEXT: lui $v1, 48793 640 ; ASM-NEXT: lui $v1, 48793
641 ; ASM-NEXT: ori $v1, $v1, 6676 641 ; ASM-NEXT: ori $v1, $v1, 6676
642 ; ASM-NEXT: clz $a0, $v0 642 ; ASM-NEXT: clz $a0, $v0
643 ; ASM-NEXT: clz $v1, $v1 643 ; ASM-NEXT: clz $v1, $v1
644 ; ASM-NEXT: addiu $v1, $v1, 32 644 ; ASM-NEXT: addiu $v1, $v1, 32
645 ; ASM-NEXT: movn $v1, $a0, $v0 645 ; ASM-NEXT: movn $v1, $a0, $v0
646 ; ASM-NEXT: move $v0, $v1 646 ; ASM-NEXT: move $v0, $v1
647 ; ASM-NEXT: jr $ra 647 ; ASM-NEXT: jr $ra
648 648
649 ; DIS-LABEL: {{.*}} <encCtlz64Const>: 649 ; DIS-LABEL: <encCtlz64Const>:
650 ; DIS-NEXT: {{.*}} 2402001c » li» v0,28 650 ; DIS-NEXT: 2402001c » li» v0,28
651 ; DIS-NEXT: {{.*}} 3c03be99 » lui» v1,0xbe99 651 ; DIS-NEXT: 3c03be99 » lui» v1,0xbe99
652 ; DIS-NEXT: {{.*}} 34631a14 » ori» v1,v1,0x1a14 652 ; DIS-NEXT: 34631a14 » ori» v1,v1,0x1a14
653 ; DIS-NEXT: {{.*}} 70442020 » clz» a0,v0 653 ; DIS-NEXT: 70442020 » clz» a0,v0
654 ; DIS-NEXT: {{.*}} 70631820 » clz» v1,v1 654 ; DIS-NEXT: 70631820 » clz» v1,v1
655 ; DIS-NEXT: {{.*}} 24630020 » addiu» v1,v1,32 655 ; DIS-NEXT: 24630020 » addiu» v1,v1,32
656 ; DIS-NEXT: {{.*}} {{.*}}0b » movn» {{.*}} 656 ; DIS-NEXT: 0082180b » movn» v1,a0,v0
657 ; DIS-NEXT: {{.*}} 00601021 » move» v0,v1 657 ; DIS-NEXT: 00601021 » move» v0,v1
658 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 658 ; DIS-NEXT: 03e00008 » jr» ra
659 659
660 ; IASM-LABEL: encCtlz64Const 660 ; IASM-LABEL: encCtlz64Const
661 ; IASM-NEXT: .LencCtlz64Const$entry: 661 ; IASM-NEXT: .LencCtlz64Const$entry:
662 ; IASM-NEXT: » .byte 0x1c 662 ; IASM-NEXT:» .byte 0x1c
663 ; IASM-NEXT: » .byte 0x0 663 ; IASM-NEXT:» .byte 0x0
664 ; IASM-NEXT: » .byte 0x2 664 ; IASM-NEXT:» .byte 0x2
665 ; IASM-NEXT: » .byte 0x24 665 ; IASM-NEXT:» .byte 0x24
666 ; IASM-NEXT: » .byte 0x99 666 ; IASM-NEXT:» .byte 0x99
667 ; IASM-NEXT: » .byte 0xbe 667 ; IASM-NEXT:» .byte 0xbe
668 ; IASM-NEXT: » .byte 0x3 668 ; IASM-NEXT:» .byte 0x3
669 ; IASM-NEXT: » .byte 0x3c 669 ; IASM-NEXT:» .byte 0x3c
670 ; IASM-NEXT: » .byte 0x14 670 ; IASM-NEXT:» .byte 0x14
671 ; IASM-NEXT: » .byte 0x1a 671 ; IASM-NEXT:» .byte 0x1a
672 ; IASM-NEXT: » .byte 0x63 672 ; IASM-NEXT:» .byte 0x63
673 ; IASM-NEXT: » .byte 0x34 673 ; IASM-NEXT:» .byte 0x34
674 ; IASM-NEXT: » .byte 0x20 674 ; IASM-NEXT:» .byte 0x20
675 ; IASM-NEXT: » .byte 0x20 675 ; IASM-NEXT:» .byte 0x20
676 ; IASM-NEXT: » .byte 0x44 676 ; IASM-NEXT:» .byte 0x44
677 ; IASM-NEXT: » .byte 0x70 677 ; IASM-NEXT:» .byte 0x70
678 ; IASM-NEXT: » .byte 0x20 678 ; IASM-NEXT:» .byte 0x20
679 ; IASM-NEXT: » .byte 0x18 679 ; IASM-NEXT:» .byte 0x18
680 ; IASM-NEXT: » .byte 0x63 680 ; IASM-NEXT:» .byte 0x63
681 ; IASM-NEXT: » .byte 0x70 681 ; IASM-NEXT:» .byte 0x70
682 ; IASM-NEXT: » .byte 0x20 682 ; IASM-NEXT:» .byte 0x20
683 ; IASM-NEXT: » .byte 0x0 683 ; IASM-NEXT:» .byte 0x0
684 ; IASM-NEXT: » .byte 0x63 684 ; IASM-NEXT:» .byte 0x63
685 ; IASM-NEXT: » .byte 0x24 685 ; IASM-NEXT:» .byte 0x24
686 ; IASM-NEXT: » .byte 0xb 686 ; IASM-NEXT:» .byte 0xb
687 ; IASM-NEXT: » .byte 0x18 687 ; IASM-NEXT:» .byte 0x18
688 ; IASM-NEXT: » .byte 0x64 688 ; IASM-NEXT:» .byte 0x82
689 ; IASM-NEXT: » .byte 0x0 689 ; IASM-NEXT:» .byte 0x0
690 ; IASM-NEXT: » .byte 0x21 690 ; IASM-NEXT:» .byte 0x21
691 ; IASM-NEXT: » .byte 0x10 691 ; IASM-NEXT:» .byte 0x10
692 ; IASM-NEXT: » .byte 0x60 692 ; IASM-NEXT:» .byte 0x60
693 ; IASM-NEXT: » .byte 0x0 693 ; IASM-NEXT:» .byte 0x0
694 ; IASM-NEXT: » .byte 0x8 694 ; IASM-NEXT:» .byte 0x8
695 ; IASM-NEXT: » .byte 0x0 695 ; IASM-NEXT:» .byte 0x0
696 ; IASM-NEXT: » .byte 0xe0 696 ; IASM-NEXT:» .byte 0xe0
697 ; IASM-NEXT: » .byte 0x3 697 ; IASM-NEXT:» .byte 0x3
698 698
699 define internal i32 @encCttz32(i32 %x) { 699 define internal i32 @encCttz32(i32 %x) {
700 entry: 700 entry:
701 %r = call i32 @llvm.cttz.i32(i32 %x, i1 false) 701 %r = call i32 @llvm.cttz.i32(i32 %x, i1 false)
702 ret i32 %r 702 ret i32 %r
703 } 703 }
704 704
705 ; ASM-LABEL: encCttz32 705 ; ASM-LABEL: encCttz32
706 ; ASM-NEXT: .LencCttz32$entry: 706 ; ASM-NEXT: .LencCttz32$entry:
707 ; ASM-NEXT: addiu $v0, $a0, -1 707 ; ASM-NEXT: addiu $v0, $a0, -1
708 ; ASM-NEXT: nor $a0, $a0, $zero 708 ; ASM-NEXT: nor $a0, $a0, $zero
709 ; ASM-NEXT: and $a0, $a0, $v0 709 ; ASM-NEXT: and $a0, $a0, $v0
710 ; ASM-NEXT: clz $a0, $a0 710 ; ASM-NEXT: clz $a0, $a0
711 ; ASM-NEXT: addiu $v0, $zero, 32 711 ; ASM-NEXT: addiu $v0, $zero, 32
712 ; ASM-NEXT: subu $v0, $v0, $a0 712 ; ASM-NEXT: subu $v0, $v0, $a0
713 ; ASM-NEXT: jr $ra 713 ; ASM-NEXT: jr $ra
714 714
715 ; DIS-LABEL: {{.*}} <encCttz32>: 715 ; DIS-LABEL: <encCttz32>:
716 ; DIS-NEXT: {{.*}} 2482ffff » addiu» v0,a0,-1 716 ; DIS-NEXT: 2482ffff » addiu» v0,a0,-1
717 ; DIS-NEXT: {{.*}} 00802027 » nor» a0,a0,zero 717 ; DIS-NEXT: 00802027 » nor» a0,a0,zero
718 ; DIS-NEXT: {{.*}} 00822024 » and» a0,a0,v0 718 ; DIS-NEXT: 00822024 » and» a0,a0,v0
719 ; DIS-NEXT: {{.*}} 70842020 » clz» a0,a0 719 ; DIS-NEXT: 70842020 » clz» a0,a0
720 ; DIS-NEXT: {{.*}} 24020020 » li» v0,32 720 ; DIS-NEXT: 24020020 » li» v0,32
721 ; DIS-NEXT: {{.*}} 00441023 » subu» v0,v0,a0 721 ; DIS-NEXT: 00441023 » subu» v0,v0,a0
722 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 722 ; DIS-NEXT: 03e00008 » jr» ra
723 723
724 ; IASM-LABEL: encCttz32 724 ; IASM-LABEL: encCttz32
725 ; IASM-NEXT: .LencCttz32$entry: 725 ; IASM-NEXT: .LencCttz32$entry:
726 ; IASM-NEXT: .byte 0xff 726 ; IASM-NEXT: .byte 0xff
727 ; IASM-NEXT: .byte 0xff 727 ; IASM-NEXT: .byte 0xff
728 ; IASM-NEXT: .byte 0x82 728 ; IASM-NEXT: .byte 0x82
729 ; IASM-NEXT: .byte 0x24 729 ; IASM-NEXT: .byte 0x24
730 ; IASM-NEXT: .byte 0x27 730 ; IASM-NEXT: .byte 0x27
731 ; IASM-NEXT: .byte 0x20 731 ; IASM-NEXT: .byte 0x20
732 ; IASM-NEXT: .byte 0x80 732 ; IASM-NEXT: .byte 0x80
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 ; ASM-NEXT: ori $v0, $v0, 57920 764 ; ASM-NEXT: ori $v0, $v0, 57920
765 ; ASM-NEXT: addiu $v1, $v0, -1 765 ; ASM-NEXT: addiu $v1, $v0, -1
766 ; ASM-NEXT: nor $v0, $v0, $zero 766 ; ASM-NEXT: nor $v0, $v0, $zero
767 ; ASM-NEXT: and $v0, $v0, $v1 767 ; ASM-NEXT: and $v0, $v0, $v1
768 ; ASM-NEXT: clz $v0, $v0 768 ; ASM-NEXT: clz $v0, $v0
769 ; ASM-NEXT: addiu $v1, $zero, 32 769 ; ASM-NEXT: addiu $v1, $zero, 32
770 ; ASM-NEXT: subu $v1, $v1, $v0 770 ; ASM-NEXT: subu $v1, $v1, $v0
771 ; ASM-NEXT: move $v0, $v1 771 ; ASM-NEXT: move $v0, $v1
772 ; ASM-NEXT: jr $ra 772 ; ASM-NEXT: jr $ra
773 773
774 ; DIS-LABEL: {{.*}} <encCttz32Const>: 774 ; DIS-LABEL: <encCttz32Const>:
775 ; DIS-NEXT: {{.*}} 3c020001 » lui» v0,0x1 775 ; DIS-NEXT: 3c020001 » lui» v0,0x1
776 ; DIS-NEXT: {{.*}} ori»v0,v0,0xe240 776 ; DIS-NEXT: 3442e240 » ori» v0,v0,0xe240
777 ; DIS-NEXT: {{.*}} addiu» v1,v0,-1 777 ; DIS-NEXT: 2443ffff » addiu» v1,v0,-1
778 ; DIS-NEXT: {{.*}} nor»v0,v0,zero 778 ; DIS-NEXT: 00401027 » nor» v0,v0,zero
779 ; DIS-NEXT: {{.*}} and»v0,v0,v1 779 ; DIS-NEXT: 00431024 » and» v0,v0,v1
780 ; DIS-NEXT: {{.*}} clz»v0,v0 780 ; DIS-NEXT: 70421020 » clz» v0,v0
781 ; DIS-NEXT: {{.*}} li» v1,32 781 ; DIS-NEXT: 24030020 » li» v1,32
782 ; DIS-NEXT: {{.*}} subu» v1,v1,v0 782 ; DIS-NEXT: 00621823 » subu» v1,v1,v0
783 ; DIS-NEXT: {{.*}} move» v0,v1 783 ; DIS-NEXT: 00601021 » move» v0,v1
784 ; DIS-NEXT: {{.*}} jr» ra 784 ; DIS-NEXT: 03e00008 » jr» ra
785 785
786 ; IASM-LABEL: encCttz32Const: 786 ; IASM-LABEL: encCttz32Const:
787 ; IASM-NEXT: .LencCttz32Const$entry: 787 ; IASM-NEXT: .LencCttz32Const$entry:
788 ; IASM-NEXT: .byte 0x1 788 ; IASM-NEXT: .byte 0x1
789 ; IASM-NEXT: .byte 0x0 789 ; IASM-NEXT: .byte 0x0
790 ; IASM-NEXT: .byte 0x2 790 ; IASM-NEXT: .byte 0x2
791 ; IASM-NEXT: .byte 0x3c 791 ; IASM-NEXT: .byte 0x3c
792 ; IASM-NEXT: .byte 0x40 792 ; IASM-NEXT: .byte 0x40
793 ; IASM-NEXT: .byte 0xe2 793 ; IASM-NEXT: .byte 0xe2
794 ; IASM-NEXT: .byte 0x42 794 ; IASM-NEXT: .byte 0x42
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 ; ASM-NEXT: addiu $v1, $a0, -1 843 ; ASM-NEXT: addiu $v1, $a0, -1
844 ; ASM-NEXT: nor $a1, $a0, $zero 844 ; ASM-NEXT: nor $a1, $a0, $zero
845 ; ASM-NEXT: and $a1, $a1, $v1 845 ; ASM-NEXT: and $a1, $a1, $v1
846 ; ASM-NEXT: clz $a1, $a1 846 ; ASM-NEXT: clz $a1, $a1
847 ; ASM-NEXT: addiu $v1, $zero, 32 847 ; ASM-NEXT: addiu $v1, $zero, 32
848 ; ASM-NEXT: subu $v1, $v1, $a1 848 ; ASM-NEXT: subu $v1, $v1, $a1
849 ; ASM-NEXT: movn $v0, $v1, $a0 849 ; ASM-NEXT: movn $v0, $v1, $a0
850 ; ASM-NEXT: addiu $v1, $zero, 0 850 ; ASM-NEXT: addiu $v1, $zero, 0
851 ; ASM-NEXT: jr $ra 851 ; ASM-NEXT: jr $ra
852 852
853 ; DIS-LABEL: {{.*}} <encCttz64>: 853 ; DIS-LABEL: <encCttz64>:
854 ; DIS-NEXT: {{.*}} 24a2ffff » addiu» v0,a1,-1 854 ; DIS-NEXT: 24a2ffff »addiu» v0,a1,-1
855 ; DIS-NEXT: {{.*}} 00a02827 » nor» a1,a1,zero 855 ; DIS-NEXT: 00a02827 »nor» a1,a1,zero
856 ; DIS-NEXT: {{.*}} 00a22824 » and» a1,a1,v0 856 ; DIS-NEXT: 00a22824 »and» a1,a1,v0
857 ; DIS-NEXT: {{.*}} 70a52820 » clz» a1,a1 857 ; DIS-NEXT: 70a52820 »clz» a1,a1
858 ; DIS-NEXT: {{.*}} 24020040 » li» v0,64 858 ; DIS-NEXT: 24020040 »li» v0,64
859 ; DIS-NEXT: {{.*}} 00451023 » subu» v0,v0,a1 859 ; DIS-NEXT: 00451023 »subu» v0,v0,a1
860 ; DIS-NEXT: {{.*}} 2483ffff » addiu» v1,a0,-1 860 ; DIS-NEXT: 2483ffff »addiu» v1,a0,-1
861 ; DIS-NEXT: {{.*}} 00802827 » nor» a1,a0,zero 861 ; DIS-NEXT: 00802827 »nor» a1,a0,zero
862 ; DIS-NEXT: {{.*}} 00a32824 » and» a1,a1,v1 862 ; DIS-NEXT: 00a32824 »and» a1,a1,v1
863 ; DIS-NEXT: {{.*}} 70a52820 » clz» a1,a1 863 ; DIS-NEXT: 70a52820 »clz» a1,a1
864 ; DIS-NEXT: {{.*}} 24030020 » li» v1,32 864 ; DIS-NEXT: 24030020 »li» v1,32
865 ; DIS-NEXT: {{.*}} 00651823 » subu» v1,v1,a1 865 ; DIS-NEXT: 00651823 »subu» v1,v1,a1
866 ; DIS-NEXT: {{.*}} {{.*}}0b » movn» {{.*}} 866 ; DIS-NEXT: 0064100b »movn» v0,v1,a0
867 ; DIS-NEXT: {{.*}} 24030000 » li» v1,0 867 ; DIS-NEXT: 24030000 »li» v1,0
868 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 868 ; DIS-NEXT: 03e00008 »jr» ra
869 ; DIS-NEXT: 00000000 »nop
869 870
870 ; IASM-LABEL: encCttz64: 871 ; IASM-LABEL: encCttz64:
871 ; IASM-NEXT: .LencCttz64$entry: 872 ; IASM-NEXT: .LencCttz64$entry:
872 ; IASM-NEXT: .byte 0xff 873 ; IASM-NEXT: .byte 0xff
873 ; IASM-NEXT: .byte 0xff 874 ; IASM-NEXT: .byte 0xff
874 ; IASM-NEXT: .byte 0xa2 875 ; IASM-NEXT: .byte 0xa2
875 ; IASM-NEXT: .byte 0x24 876 ; IASM-NEXT: .byte 0x24
876 ; IASM-NEXT: .byte 0x27 877 ; IASM-NEXT: .byte 0x27
877 ; IASM-NEXT: .byte 0x28 878 ; IASM-NEXT: .byte 0x28
878 ; IASM-NEXT: .byte 0xa0 879 ; IASM-NEXT: .byte 0xa0
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 ; IASM-NEXT: .byte 0x20 913 ; IASM-NEXT: .byte 0x20
913 ; IASM-NEXT: .byte 0x0 914 ; IASM-NEXT: .byte 0x0
914 ; IASM-NEXT: .byte 0x3 915 ; IASM-NEXT: .byte 0x3
915 ; IASM-NEXT: .byte 0x24 916 ; IASM-NEXT: .byte 0x24
916 ; IASM-NEXT: .byte 0x23 917 ; IASM-NEXT: .byte 0x23
917 ; IASM-NEXT: .byte 0x18 918 ; IASM-NEXT: .byte 0x18
918 ; IASM-NEXT: .byte 0x65 919 ; IASM-NEXT: .byte 0x65
919 ; IASM-NEXT: .byte 0x0 920 ; IASM-NEXT: .byte 0x0
920 ; IASM-NEXT: .byte 0xb 921 ; IASM-NEXT: .byte 0xb
921 ; IASM-NEXT: .byte 0x10 922 ; IASM-NEXT: .byte 0x10
922 ; IASM-NEXT: » .byte 0x43 923 ; IASM-NEXT: » .byte 0x64
923 ; IASM-NEXT: .byte 0x0 924 ; IASM-NEXT: .byte 0x0
924 ; IASM-NEXT: .byte 0x0 925 ; IASM-NEXT: .byte 0x0
925 ; IASM-NEXT: .byte 0x0 926 ; IASM-NEXT: .byte 0x0
926 ; IASM-NEXT: .byte 0x3 927 ; IASM-NEXT: .byte 0x3
927 ; IASM-NEXT: .byte 0x24 928 ; IASM-NEXT: .byte 0x24
928 ; IASM-NEXT: .byte 0x8 929 ; IASM-NEXT: .byte 0x8
929 ; IASM-NEXT: .byte 0x0 930 ; IASM-NEXT: .byte 0x0
930 ; IASM-NEXT: .byte 0xe0 931 ; IASM-NEXT: .byte 0xe0
931 ; IASM-NEXT: .byte 0x3 932 ; IASM-NEXT: .byte 0x3
932 933
(...skipping 20 matching lines...) Expand all
953 ; ASM-NEXT: and $a1, $a1, $v0 954 ; ASM-NEXT: and $a1, $a1, $v0
954 ; ASM-NEXT: clz $a1, $a1 955 ; ASM-NEXT: clz $a1, $a1
955 ; ASM-NEXT: addiu $v0, $zero, 32 956 ; ASM-NEXT: addiu $v0, $zero, 32
956 ; ASM-NEXT: subu $v0, $v0, $a1 957 ; ASM-NEXT: subu $v0, $v0, $a1
957 ; ASM-NEXT: movn $a0, $v0, $v1 958 ; ASM-NEXT: movn $a0, $v0, $v1
958 ; ASM-NEXT: addiu $v0, $zero, 0 959 ; ASM-NEXT: addiu $v0, $zero, 0
959 ; ASM-NEXT: move $v1, $v0 960 ; ASM-NEXT: move $v1, $v0
960 ; ASM-NEXT: move $v0, $a0 961 ; ASM-NEXT: move $v0, $a0
961 ; ASM-NEXT: jr $ra 962 ; ASM-NEXT: jr $ra
962 963
963 ; DIS-LABEL: {{.*}} <encCttz64Const>: 964 ; DIS-LABEL: <encCttz64Const>:
964 ; DIS-NEXT: {{.*}} 2402001c » li» v0,28 965 ; DIS-NEXT: 2402001c » li» v0,28
965 ; DIS-NEXT: {{.*}} 3c03be99 » lui» v1,0xbe99 966 ; DIS-NEXT: 3c03be99 » lui» v1,0xbe99
966 ; DIS-NEXT: {{.*}} 34631a14 » ori» v1,v1,0x1a14 967 ; DIS-NEXT: 34631a14 » ori» v1,v1,0x1a14
967 ; DIS-NEXT: {{.*}} 2444ffff » addiu» a0,v0,-1 968 ; DIS-NEXT: 2444ffff » addiu» a0,v0,-1
968 ; DIS-NEXT: {{.*}} 00401027 » nor» v0,v0,zero 969 ; DIS-NEXT: 00401027 » nor» v0,v0,zero
969 ; DIS-NEXT: {{.*}} 00441024 » and» v0,v0,a0 970 ; DIS-NEXT: 00441024 » and» v0,v0,a0
970 ; DIS-NEXT: {{.*}} 70421020 » clz» v0,v0 971 ; DIS-NEXT: 70421020 » clz» v0,v0
971 ; DIS-NEXT: {{.*}} 24040040 » li» a0,64 972 ; DIS-NEXT: 24040040 » li» a0,64
972 ; DIS-NEXT: {{.*}} 00822023 » subu» a0,a0,v0 973 ; DIS-NEXT: 00822023 » subu» a0,a0,v0
973 ; DIS-NEXT: {{.*}} 2462ffff » addiu» v0,v1,-1 974 ; DIS-NEXT: 2462ffff » addiu» v0,v1,-1
974 ; DIS-NEXT: {{.*}} 00602827 » nor» a1,v1,zero 975 ; DIS-NEXT: 00602827 » nor» a1,v1,zero
975 ; DIS-NEXT: {{.*}} 00a22824 » and» a1,a1,v0 976 ; DIS-NEXT: 00a22824 » and» a1,a1,v0
976 ; DIS-NEXT: {{.*}} 70a52820 » clz» a1,a1 977 ; DIS-NEXT: 70a52820 » clz» a1,a1
977 ; DIS-NEXT: {{.*}} 24020020 » li» v0,32 978 ; DIS-NEXT: 24020020 » li» v0,32
978 ; DIS-NEXT: {{.*}} 00451023 » subu» v0,v0,a1 979 ; DIS-NEXT: 00451023 » subu» v0,v0,a1
979 ; DIS-NEXT: {{.*}} {{.*}}0b » movn» {{.*}} 980 ; DIS-NEXT: 0043200b » movn» a0,v0,v1
980 ; DIS-NEXT: {{.*}} 24{{.*}} » li» {{.*}},0 981 ; DIS-NEXT: 24020000 » li» v0,0
981 ; DIS-NEXT: {{.*}} {{.*}}21 » move» v1,{{.*}} 982 ; DIS-NEXT: 00401821 » move» v1,v0
982 ; DIS-NEXT: {{.*}} {{.*}}21 » move» v0,{{.*}} 983 ; DIS-NEXT: 00801021 » move» v0,a0
983 ; DIS-NEXT: {{.*}} 03e00008 » jr» ra 984 ; DIS-NEXT: 03e00008 » jr» ra
984 985
985 ; IASM-LABEL: encCttz64Const: 986 ; IASM-LABEL: encCttz64Const:
986 ; IASM-NEXT: .LencCttz64Const$entry: 987 ; IASM-NEXT: .LencCttz64Const$entry:
987 ; IASM-NEXT: .byte 0x1c 988 ; IASM-NEXT: .byte 0x1c
988 ; IASM-NEXT: .byte 0x0 989 ; IASM-NEXT: .byte 0x0
989 ; IASM-NEXT: .byte 0x2 990 ; IASM-NEXT: .byte 0x2
990 ; IASM-NEXT: .byte 0x24 991 ; IASM-NEXT: .byte 0x24
991 ; IASM-NEXT: .byte 0x99 992 ; IASM-NEXT: .byte 0x99
992 ; IASM-NEXT: .byte 0xbe 993 ; IASM-NEXT: .byte 0xbe
993 ; IASM-NEXT: .byte 0x3 994 ; IASM-NEXT: .byte 0x3
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 ; IASM-NEXT: .byte 0x20 1040 ; IASM-NEXT: .byte 0x20
1040 ; IASM-NEXT: .byte 0x0 1041 ; IASM-NEXT: .byte 0x0
1041 ; IASM-NEXT: .byte 0x2 1042 ; IASM-NEXT: .byte 0x2
1042 ; IASM-NEXT: .byte 0x24 1043 ; IASM-NEXT: .byte 0x24
1043 ; IASM-NEXT: .byte 0x23 1044 ; IASM-NEXT: .byte 0x23
1044 ; IASM-NEXT: .byte 0x10 1045 ; IASM-NEXT: .byte 0x10
1045 ; IASM-NEXT: .byte 0x45 1046 ; IASM-NEXT: .byte 0x45
1046 ; IASM-NEXT: .byte 0x0 1047 ; IASM-NEXT: .byte 0x0
1047 ; IASM-NEXT: .byte 0xb 1048 ; IASM-NEXT: .byte 0xb
1048 ; IASM-NEXT: .byte 0x20 1049 ; IASM-NEXT: .byte 0x20
1049 ; IASM-NEXT: » .byte 0x82 1050 ; IASM-NEXT: » .byte 0x43
1050 ; IASM-NEXT: .byte 0x0 1051 ; IASM-NEXT: .byte 0x0
1051 ; IASM-NEXT: .byte 0x0 1052 ; IASM-NEXT: .byte 0x0
1052 ; IASM-NEXT: .byte 0x0 1053 ; IASM-NEXT: .byte 0x0
1053 ; IASM-NEXT: .byte 0x2 1054 ; IASM-NEXT: .byte 0x2
1054 ; IASM-NEXT: .byte 0x24 1055 ; IASM-NEXT: .byte 0x24
1055 ; IASM-NEXT: .byte 0x21 1056 ; IASM-NEXT: .byte 0x21
1056 ; IASM-NEXT: .byte 0x18 1057 ; IASM-NEXT: .byte 0x18
1057 ; IASM-NEXT: .byte 0x40 1058 ; IASM-NEXT: .byte 0x40
1058 ; IASM-NEXT: .byte 0x0 1059 ; IASM-NEXT: .byte 0x0
1059 ; IASM-NEXT: .byte 0x21 1060 ; IASM-NEXT: .byte 0x21
1060 ; IASM-NEXT: .byte 0x10 1061 ; IASM-NEXT: .byte 0x10
1061 ; IASM-NEXT: .byte 0x80 1062 ; IASM-NEXT: .byte 0x80
1062 ; IASM-NEXT: .byte 0x0 1063 ; IASM-NEXT: .byte 0x0
1063 ; IASM-NEXT: .byte 0x8 1064 ; IASM-NEXT: .byte 0x8
1064 ; IASM-NEXT: .byte 0x0 1065 ; IASM-NEXT: .byte 0x0
1065 ; IASM-NEXT: .byte 0xe0 1066 ; IASM-NEXT: .byte 0xe0
1066 ; IASM-NEXT: .byte 0x3 1067 ; IASM-NEXT: .byte 0x3
1067 1068
1068 define internal void @encTrap() { 1069 define internal void @encTrap() {
1069 unreachable 1070 unreachable
1070 } 1071 }
1071 1072
1072 ; ASM-LABEL: encTrap 1073 ; ASM-LABEL: encTrap
1073 ; ASM-NEXT: .LencTrap$__0: 1074 ; ASM-NEXT: .LencTrap$__0:
1074 ; ASM-NEXT: teq $zero, $zero, 0 1075 ; ASM-NEXT: teq $zero, $zero, 0
1075 1076
1076 ; DIS-LABEL: {{.*}} <encTrap>: 1077 ; DIS-LABEL: <encTrap>:
1077 ; DIS-NEXT: {{.*}} 00000034 » teq» zero,zero 1078 ; DIS-NEXT: 00000034 » teq» zero,zero
1078 1079
1079 ; IASM-LABEL: encTrap: 1080 ; IASM-LABEL: encTrap:
1080 ; IASM-NEXT: .LencTrap$__0: 1081 ; IASM-NEXT: .LencTrap$__0:
1081 ; IASM-NEXT: .byte 0x34 1082 ; IASM-NEXT: .byte 0x34
1082 ; IASM-NEXT: .byte 0x0 1083 ; IASM-NEXT: .byte 0x0
1083 ; IASM-NEXT: .byte 0x0 1084 ; IASM-NEXT: .byte 0x0
1084 ; IASM-NEXT: .byte 0x0 1085 ; IASM-NEXT: .byte 0x0
OLDNEW
« src/IceTargetLoweringMIPS32.h ('K') | « src/IceTargetLoweringMIPS32.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698