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 -i %s --args -O2 -sandbox \ | 4 ; RUN: --target x8632 -i %s --args -O2 -sandbox \ |
5 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 5 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
6 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 6 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
7 ; RUN: --target x8632 -i %s --args -Om1 -sandbox \ | 7 ; RUN: --target x8632 -i %s --args -Om1 -sandbox \ |
8 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 8 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
9 | 9 |
10 ; Do another run w/ O2 and a different check-prefix (otherwise O2 and Om1 | 10 ; Do another run w/ O2 and a different check-prefix (otherwise O2 and Om1 |
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 %r = call i64 @llvm.bswap.i64(i64 %x) | 409 %r = call i64 @llvm.bswap.i64(i64 %x) |
410 ret i64 %r | 410 ret i64 %r |
411 } | 411 } |
412 ; CHECK-LABEL: test_bswap_64 | 412 ; CHECK-LABEL: test_bswap_64 |
413 ; CHECK: bswap e{{.*}} | 413 ; CHECK: bswap e{{.*}} |
414 ; CHECK: bswap e{{.*}} | 414 ; CHECK: bswap e{{.*}} |
415 ; ARM32-LABEL: test_bswap_64 | 415 ; ARM32-LABEL: test_bswap_64 |
416 ; ARM32: rev | 416 ; ARM32: rev |
417 ; ARM32: rev | 417 ; ARM32: rev |
418 | 418 |
| 419 define i64 @test_bswap_64_undef() { |
| 420 entry: |
| 421 %r = call i64 @llvm.bswap.i64(i64 undef) |
| 422 ret i64 %r |
| 423 } |
| 424 ; CHECK-LABEL: test_bswap_64_undef |
| 425 ; CHECK: bswap e{{.*}} |
| 426 ; CHECK: bswap e{{.*}} |
| 427 ; ARM32-LABEL: test_bswap_64 |
| 428 ; ARM32: rev |
| 429 ; ARM32: rev |
| 430 |
419 define i32 @test_ctlz_32(i32 %x) { | 431 define i32 @test_ctlz_32(i32 %x) { |
420 entry: | 432 entry: |
421 %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false) | 433 %r = call i32 @llvm.ctlz.i32(i32 %x, i1 false) |
422 ret i32 %r | 434 ret i32 %r |
423 } | 435 } |
424 ; CHECK-LABEL: test_ctlz_32 | 436 ; CHECK-LABEL: test_ctlz_32 |
425 ; TODO(jvoung): If we detect that LZCNT is supported, then use that | 437 ; TODO(jvoung): If we detect that LZCNT is supported, then use that |
426 ; and avoid the need to do the cmovne and xor stuff to guarantee that | 438 ; and avoid the need to do the cmovne and xor stuff to guarantee that |
427 ; the result is well-defined w/ input == 0. | 439 ; the result is well-defined w/ input == 0. |
428 ; CHECK: bsr [[REG_TMP:e.*]],{{.*}} | 440 ; CHECK: bsr [[REG_TMP:e.*]],{{.*}} |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 ; At least 3 copies of esp, but probably more from having to do the allocas. | 626 ; At least 3 copies of esp, but probably more from having to do the allocas. |
615 ; CHECK: mov {{.*}},esp | 627 ; CHECK: mov {{.*}},esp |
616 ; CHECK: mov {{.*}},esp | 628 ; CHECK: mov {{.*}},esp |
617 ; CHECK: mov {{.*}},esp | 629 ; CHECK: mov {{.*}},esp |
618 ; CHECK: mov esp,{{.*}} | 630 ; CHECK: mov esp,{{.*}} |
619 ; ARM32-LABEL: test_stacksave_multiple | 631 ; ARM32-LABEL: test_stacksave_multiple |
620 ; ARM32: mov {{.*}}, sp | 632 ; ARM32: mov {{.*}}, sp |
621 ; ARM32: mov {{.*}}, sp | 633 ; ARM32: mov {{.*}}, sp |
622 ; ARM32: mov {{.*}}, sp | 634 ; ARM32: mov {{.*}}, sp |
623 ; ARM32: mov sp, {{.*}} | 635 ; ARM32: mov sp, {{.*}} |
OLD | NEW |