diff options
author | Michael Zuckerman <Michael.zuckerman@intel.com> | 2016-06-01 12:21:00 +0000 |
---|---|---|
committer | Michael Zuckerman <Michael.zuckerman@intel.com> | 2016-06-01 12:21:00 +0000 |
commit | e54093fcc0a651df14040a61fc8efdd338389afa (patch) | |
tree | 91e412aea314b227db28d417c7d55dc58997786c /clang/test/CodeGen/bitscan-builtins.c | |
parent | 6a894956fccdc5a951ee014eb130c68c94a2f377 (diff) | |
download | bcm5719-llvm-e54093fcc0a651df14040a61fc8efdd338389afa.tar.gz bcm5719-llvm-e54093fcc0a651df14040a61fc8efdd338389afa.zip |
Adding front-end support to several intrinsics (bit scanning, conversion and state reading intrinsics)
Adding LLVM front-end support to two intrinsics dealing with bit scan: _bit_scan_forward and _bit_scan_reverse.
Their functionality is as described in Intel intrinsics guide:
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_bit_scan_forward&expand=371,370
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_bit_scan_reverse&expand=371,370
Furthermore, adding clang front-end support to these conversion intrinsics: _mm256_cvtsd_f64, _mm256_cvtsi256_si32 and _mm256_cvtss_f32.
Finally, adding tests to all of the above, as well as to the state reading intrinsics _rdpmc and _rdtsc.
Their functionality is also specified in the Intel intrinsics guide.
Commit on behalf of Omer Paparo Bivas
llvm-svn: 271387
Diffstat (limited to 'clang/test/CodeGen/bitscan-builtins.c')
-rw-r--r-- | clang/test/CodeGen/bitscan-builtins.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/CodeGen/bitscan-builtins.c b/clang/test/CodeGen/bitscan-builtins.c new file mode 100644 index 00000000000..85a75426342 --- /dev/null +++ b/clang/test/CodeGen/bitscan-builtins.c @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s + +// Don't include mm_malloc.h, it's system specific. +#define __MM_MALLOC_H +#include <immintrin.h> + +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 +} + +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 +} |