diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-06-13 17:26:16 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-06-13 17:26:16 +0000 |
commit | ad1944c89634e870ab1cae4ba3903d3609702bb2 (patch) | |
tree | 5e90bfe3c58267a0d7591b02dd029b5e03a51a9d /test/CodeGen/bitscan-builtins.c | |
parent | f0c013a48e3039cbb369e7dc8779b95455e3fb7c (diff) |
[immintrin] Reimplement _bit_scan_{forward,reverse}
There is no need to use a target-specific intrinsic to implement
_bit_scan_forward or _bit_scan_reverse, reimplementing them using
generic intrinsics makes it more likely that the middle end will
understand what's going on.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272564 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/bitscan-builtins.c')
-rw-r--r-- | test/CodeGen/bitscan-builtins.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/test/CodeGen/bitscan-builtins.c b/test/CodeGen/bitscan-builtins.c index 85a7542634..451e8f4570 100644 --- a/test/CodeGen/bitscan-builtins.c +++ b/test/CodeGen/bitscan-builtins.c @@ -7,11 +7,13 @@ int test_bit_scan_forward(int a) { return _bit_scan_forward(a); // CHECK: @test_bit_scan_forward -// CHECK: call i32 @llvm.x86.bit.scan.forward +// CHECK: %[[call:.*]] = call i32 @llvm.cttz.i32( +// CHECK: ret i32 %[[call]] } int test_bit_scan_reverse(int a) { return _bit_scan_reverse(a); -// CHECK: @test_bit_scan_reverse -// CHECK: call i32 @llvm.x86.bit.scan.reverse +// CHECK: %[[call:.*]] = call i32 @llvm.ctlz.i32( +// CHECK: %[[sub:.*]] = sub nsw i32 31, %2 +// CHECK: ret i32 %[[sub]] } |