| 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 |