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