OLD | NEW |
1 ; This tests the NaCl intrinsics not related to atomic operations. | 1 ; This tests the NaCl intrinsics not related to atomic operations. |
2 | 2 |
3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 3 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
4 ; RUN: --target x8632 --sandbox -i %s --args -O2 \ | 4 ; RUN: --target x8632 --sandbox -i %s --args -O2 \ |
5 ; RUN: -allow-externally-defined-symbols \ | 5 ; RUN: -allow-externally-defined-symbols \ |
6 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 6 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
7 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 7 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
8 ; RUN: --target x8632 --sandbox -i %s --args -Om1 \ | 8 ; RUN: --target x8632 --sandbox -i %s --args -Om1 \ |
9 ; RUN: -allow-externally-defined-symbols \ | 9 ; RUN: -allow-externally-defined-symbols \ |
10 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 10 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 ; CHECK-LABEL: test_ctlz_32 | 396 ; CHECK-LABEL: test_ctlz_32 |
397 ; TODO(jvoung): If we detect that LZCNT is supported, then use that | 397 ; TODO(jvoung): If we detect that LZCNT is supported, then use that |
398 ; and avoid the need to do the cmovne and xor stuff to guarantee that | 398 ; and avoid the need to do the cmovne and xor stuff to guarantee that |
399 ; the result is well-defined w/ input == 0. | 399 ; the result is well-defined w/ input == 0. |
400 ; CHECK: bsr [[REG_TMP:e.*]],{{.*}} | 400 ; CHECK: bsr [[REG_TMP:e.*]],{{.*}} |
401 ; CHECK: mov [[REG_RES:e.*]],0x3f | 401 ; CHECK: mov [[REG_RES:e.*]],0x3f |
402 ; CHECK: cmovne [[REG_RES]],[[REG_TMP]] | 402 ; CHECK: cmovne [[REG_RES]],[[REG_TMP]] |
403 ; CHECK: xor [[REG_RES]],0x1f | 403 ; CHECK: xor [[REG_RES]],0x1f |
404 ; ARM32-LABEL: test_ctlz_32 | 404 ; ARM32-LABEL: test_ctlz_32 |
405 ; ARM32: clz | 405 ; ARM32: clz |
| 406 ; MIPS32-LABEL: test_ctlz_32 |
| 407 ; MIPS32: clz |
406 | 408 |
407 define internal i32 @test_ctlz_32_const() { | 409 define internal i32 @test_ctlz_32_const() { |
408 entry: | 410 entry: |
409 %r = call i32 @llvm.ctlz.i32(i32 123456, i1 false) | 411 %r = call i32 @llvm.ctlz.i32(i32 123456, i1 false) |
410 ret i32 %r | 412 ret i32 %r |
411 } | 413 } |
412 ; Could potentially constant fold this, but the front-end should have done that. | 414 ; Could potentially constant fold this, but the front-end should have done that. |
413 ; The dest operand must be a register and the source operand must be a register | 415 ; The dest operand must be a register and the source operand must be a register |
414 ; or memory. | 416 ; or memory. |
415 ; CHECK-LABEL: test_ctlz_32_const | 417 ; CHECK-LABEL: test_ctlz_32_const |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 ; CHECK: lea {{.*}},[esp+0x10] | 602 ; CHECK: lea {{.*}},[esp+0x10] |
601 ; CHECK: lea {{.*}},[esp+0x10] | 603 ; CHECK: lea {{.*}},[esp+0x10] |
602 ; CHECK: call | 604 ; CHECK: call |
603 ; CHECK: mov esp,{{.*}} | 605 ; CHECK: mov esp,{{.*}} |
604 ; CHECK: mov esp,ebp | 606 ; CHECK: mov esp,ebp |
605 ; ARM32-LABEL: test_stacksave_multiple | 607 ; ARM32-LABEL: test_stacksave_multiple |
606 ; ARM32: mov {{.*}}, sp | 608 ; ARM32: mov {{.*}}, sp |
607 ; ARM32: mov {{.*}}, sp | 609 ; ARM32: mov {{.*}}, sp |
608 ; ARM32: mov {{.*}}, sp | 610 ; ARM32: mov {{.*}}, sp |
609 ; ARM32: mov sp, {{.*}} | 611 ; ARM32: mov sp, {{.*}} |
OLD | NEW |