1f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +lzcnt -emit-llvm -o - | FileCheck %s 2f4a2713aSLionel Sambuc 3f4a2713aSLionel Sambuc // Don't include mm_malloc.h, it's system specific. 4f4a2713aSLionel Sambuc #define __MM_MALLOC_H 5f4a2713aSLionel Sambuc 6f4a2713aSLionel Sambuc #include <x86intrin.h> 7f4a2713aSLionel Sambuc test__lzcnt16(unsigned short __X)8f4a2713aSLionel Sambucunsigned short test__lzcnt16(unsigned short __X) 9f4a2713aSLionel Sambuc { 10f4a2713aSLionel Sambuc // CHECK: @llvm.ctlz.i16 11f4a2713aSLionel Sambuc return __lzcnt16(__X); 12f4a2713aSLionel Sambuc } 13f4a2713aSLionel Sambuc test_lzcnt32(unsigned int __X)14f4a2713aSLionel Sambucunsigned int test_lzcnt32(unsigned int __X) 15f4a2713aSLionel Sambuc { 16f4a2713aSLionel Sambuc // CHECK: @llvm.ctlz.i32 17f4a2713aSLionel Sambuc return __lzcnt32(__X); 18f4a2713aSLionel Sambuc } 19f4a2713aSLionel Sambuc test__lzcnt64(unsigned long long __X)20f4a2713aSLionel Sambucunsigned long long test__lzcnt64(unsigned long long __X) 21f4a2713aSLionel Sambuc { 22f4a2713aSLionel Sambuc // CHECK: @llvm.ctlz.i64 23f4a2713aSLionel Sambuc return __lzcnt64(__X); 24f4a2713aSLionel Sambuc } 25*0a6a1f1dSLionel Sambuc test_lzcnt_u32(unsigned int __X)26*0a6a1f1dSLionel Sambucunsigned int test_lzcnt_u32(unsigned int __X) 27*0a6a1f1dSLionel Sambuc { 28*0a6a1f1dSLionel Sambuc // CHECK: @llvm.ctlz.i32 29*0a6a1f1dSLionel Sambuc return _lzcnt_u32(__X); 30*0a6a1f1dSLionel Sambuc } 31*0a6a1f1dSLionel Sambuc test__lzcnt_u64(unsigned long long __X)32*0a6a1f1dSLionel Sambucunsigned long long test__lzcnt_u64(unsigned long long __X) 33*0a6a1f1dSLionel Sambuc { 34*0a6a1f1dSLionel Sambuc // CHECK: @llvm.ctlz.i64 35*0a6a1f1dSLionel Sambuc return _lzcnt_u64(__X); 36*0a6a1f1dSLionel Sambuc } 37