1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // Don't include mm_malloc.h, it's system specific. 4*67e74705SXin Li #define __MM_MALLOC_H 5*67e74705SXin Li #include <immintrin.h> 6*67e74705SXin Li test_bit_scan_forward(int a)7*67e74705SXin Liint test_bit_scan_forward(int a) { 8*67e74705SXin Li return _bit_scan_forward(a); 9*67e74705SXin Li // CHECK: @test_bit_scan_forward 10*67e74705SXin Li // CHECK: %[[call:.*]] = call i32 @llvm.cttz.i32( 11*67e74705SXin Li // CHECK: ret i32 %[[call]] 12*67e74705SXin Li } 13*67e74705SXin Li test_bit_scan_reverse(int a)14*67e74705SXin Liint test_bit_scan_reverse(int a) { 15*67e74705SXin Li return _bit_scan_reverse(a); 16*67e74705SXin Li // CHECK: %[[call:.*]] = call i32 @llvm.ctlz.i32( 17*67e74705SXin Li // CHECK: %[[sub:.*]] = sub nsw i32 31, %[[call]] 18*67e74705SXin Li // CHECK: ret i32 %[[sub]] 19*67e74705SXin Li } 20