1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-unknown-unknown -march=x86-64 -mattr=+tbm < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_tbm_bextri_u32(i32 %a) nounwind readnone { 4*9880d681SAndroid Build Coastguard Workerentry: 5*9880d681SAndroid Build Coastguard Worker ; CHECK-LABEL: test_x86_tbm_bextri_u32: 6*9880d681SAndroid Build Coastguard Worker ; CHECK-NOT: mov 7*9880d681SAndroid Build Coastguard Worker ; CHECK: bextr $ 8*9880d681SAndroid Build Coastguard Worker %0 = tail call i32 @llvm.x86.tbm.bextri.u32(i32 %a, i32 2814) 9*9880d681SAndroid Build Coastguard Worker ret i32 %0 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.tbm.bextri.u32(i32, i32) nounwind readnone 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_tbm_bextri_u32_m(i32* nocapture %a) nounwind readonly { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker ; CHECK-LABEL: test_x86_tbm_bextri_u32_m: 17*9880d681SAndroid Build Coastguard Worker ; CHECK-NOT: mov 18*9880d681SAndroid Build Coastguard Worker ; CHECK: bextr $ 19*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %a, align 4 20*9880d681SAndroid Build Coastguard Worker %0 = tail call i32 @llvm.x86.tbm.bextri.u32(i32 %tmp1, i32 2814) 21*9880d681SAndroid Build Coastguard Worker ret i32 %0 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_tbm_bextri_u64(i64 %a) nounwind readnone { 25*9880d681SAndroid Build Coastguard Workerentry: 26*9880d681SAndroid Build Coastguard Worker ; CHECK-LABEL: test_x86_tbm_bextri_u64: 27*9880d681SAndroid Build Coastguard Worker ; CHECK-NOT: mov 28*9880d681SAndroid Build Coastguard Worker ; CHECK: bextr $ 29*9880d681SAndroid Build Coastguard Worker %0 = tail call i64 @llvm.x86.tbm.bextri.u64(i64 %a, i64 2814) 30*9880d681SAndroid Build Coastguard Worker ret i64 %0 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.tbm.bextri.u64(i64, i64) nounwind readnone 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_tbm_bextri_u64_m(i64* nocapture %a) nounwind readonly { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker ; CHECK-LABEL: test_x86_tbm_bextri_u64_m: 38*9880d681SAndroid Build Coastguard Worker ; CHECK-NOT: mov 39*9880d681SAndroid Build Coastguard Worker ; CHECK: bextr $ 40*9880d681SAndroid Build Coastguard Worker %tmp1 = load i64, i64* %a, align 8 41*9880d681SAndroid Build Coastguard Worker %0 = tail call i64 @llvm.x86.tbm.bextri.u64(i64 %tmp1, i64 2814) 42*9880d681SAndroid Build Coastguard Worker ret i64 %0 43*9880d681SAndroid Build Coastguard Worker} 44