diff options
| author | Tom Stellard <thomas.stellard@amd.com> | 2016-04-11 20:38:40 +0000 |
|---|---|---|
| committer | Tom Stellard <thomas.stellard@amd.com> | 2016-04-11 20:38:40 +0000 |
| commit | 0ffdf65eaa05209655601a1059232da6605162a3 (patch) | |
| tree | c77dae944b84d6510c92656425433bdc8d183182 | |
| parent | 729c8e9793b887e5da77d74488172ddc7b3ca855 (diff) | |
| download | bcm5719-llvm-0ffdf65eaa05209655601a1059232da6605162a3.tar.gz bcm5719-llvm-0ffdf65eaa05209655601a1059232da6605162a3.zip | |
Revert "AMDGPU/SI: Do not generate s_waitcnt after ds_permute/ds_bpermute"
This reverts commit r263720.
Just confirmed that s_waitcnt is required after ds_permute/ds_bpermute.
llvm-svn: 265992
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstrInfo.td | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.bpermute.ll | 25 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.permute.ll | 29 |
3 files changed, 5 insertions, 51 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td index 8958d6cbb33..0d800ce7f5f 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td @@ -2580,7 +2580,7 @@ multiclass DS_1A1D_PERMUTE <bits<8> op, string opName, RegisterClass rc, dag ins = (ins VGPR_32:$addr, rc:$data0), string asm = opName#" $vdst, $addr, $data0"> { - let LGKM_CNT = 0, mayLoad = 0, mayStore = 0, isConvergent = 1 in { + let mayLoad = 0, mayStore = 0, isConvergent = 1 in { def "" : DS_Pseudo <opName, outs, ins, [(set (i32 rc:$vdst), (node (i32 VGPR_32:$addr), (i32 rc:$data0)))]>; diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.bpermute.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.bpermute.ll index d9c87b13604..fa12ee2fe92 100644 --- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.bpermute.ll +++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.bpermute.ll @@ -4,34 +4,11 @@ declare i32 @llvm.amdgcn.ds.bpermute(i32, i32) #0 ; FUNC-LABEL: {{^}}ds_bpermute: ; CHECK: ds_bpermute_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} +; CHECK: s_waitcnt lgkmcnt define void @ds_bpermute(i32 addrspace(1)* %out, i32 %index, i32 %src) nounwind { %bpermute = call i32 @llvm.amdgcn.ds.bpermute(i32 %index, i32 %src) #0 store i32 %bpermute, i32 addrspace(1)* %out, align 4 ret void } -; FUNC-LABEL: {{^}}bpermute_no_waitcnt_test: -; CHECK: s_cbranch_scc1 -; CHECK: ds_bpermute_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} -; CHECK-NOT: s_waitcnt -define void @bpermute_no_waitcnt_test(i32 addrspace(1)* %out, i32 %cond) { -entry: - - %tmp = icmp eq i32 %cond, 0 - br i1 %tmp, label %if, label %else - -if: ; preds = %entry - - %bpermute = call i32 @llvm.amdgcn.ds.bpermute(i32 0, i32 0) #0 - br label %endif - -else: ; preds = %entry - br label %endif - -endif: - %val = phi i32 [ %bpermute, %if ], [0, %else] ; preds = %else, %if - store i32 %val, i32 addrspace(1)* %out, align 4 - ret void -} - attributes #0 = { nounwind readnone convergent } diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.permute.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.permute.ll index 2f774abd1c6..f0ee48ff448 100644 --- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.permute.ll +++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ds.permute.ll @@ -4,34 +4,11 @@ declare i32 @llvm.amdgcn.ds.permute(i32, i32) #0 ; FUNC-LABEL: {{^}}ds_permute: ; CHECK: ds_permute_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} +; CHECK: s_waitcnt lgkmcnt define void @ds_permute(i32 addrspace(1)* %out, i32 %index, i32 %src) nounwind { - %permute = call i32 @llvm.amdgcn.ds.permute(i32 %index, i32 %src) #0 - store i32 %permute, i32 addrspace(1)* %out, align 4 + %bpermute = call i32 @llvm.amdgcn.ds.permute(i32 %index, i32 %src) #0 + store i32 %bpermute, i32 addrspace(1)* %out, align 4 ret void } -; FUNC-LABEL: {{^}}permute_no_waitcnt_test: -; CHECK: s_cbranch_scc1 -; CHECK: ds_permute_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} -; CHECK-NOT: s_waitcnt -define void @permute_no_waitcnt_test(i32 addrspace(1)* %out, i32 %cond) { -entry: - - %tmp = icmp eq i32 %cond, 0 - br i1 %tmp, label %if, label %else - -if: ; preds = %entry - %permute = call i32 @llvm.amdgcn.ds.permute(i32 0, i32 0) #0 - br label %endif - -else: ; preds = %entry - br label %endif - -endif: - %val = phi i32 [ %permute, %if ], [0, %else] ; preds = %else, %if - store i32 %val, i32 addrspace(1)* %out, align 4 - ret void -} - - attributes #0 = { nounwind readnone convergent } |

