1; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji -verify-machineinstrs < %s | FileCheck %s
2
3declare i32 @llvm.amdgcn.ds.permute(i32, i32) #0
4
5; FUNC-LABEL: {{^}}ds_permute:
6; CHECK: ds_permute_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}}
7define void @ds_permute(i32 addrspace(1)* %out, i32 %index, i32 %src) nounwind {
8  %permute = call i32 @llvm.amdgcn.ds.permute(i32 %index, i32 %src) #0
9  store i32 %permute, i32 addrspace(1)* %out, align 4
10  ret void
11}
12
13; FUNC-LABEL: {{^}}permute_no_waitcnt_test:
14; CHECK: s_cbranch_scc1
15; CHECK: ds_permute_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}}
16; CHECK-NOT: s_waitcnt
17define void @permute_no_waitcnt_test(i32 addrspace(1)* %out, i32 %cond) {
18entry:
19
20  %tmp = icmp eq i32 %cond, 0
21  br i1 %tmp, label %if, label %else
22
23if:                                               ; preds = %entry
24  %permute = call i32 @llvm.amdgcn.ds.permute(i32 0, i32 0) #0
25  br label %endif
26
27else:                                             ; preds = %entry
28  br label %endif
29
30endif:
31  %val = phi i32 [ %permute, %if ], [0, %else]      ; preds = %else, %if
32  store i32 %val, i32 addrspace(1)* %out, align 4
33  ret void
34}
35
36
37attributes #0 = { nounwind readnone convergent }
38