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