annotate test/CodeGen/AMDGPU/smrd-vccz-bug.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; RUN: llc -march=amdgcn -mcpu=verde -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=VCCZ-BUG %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 ; RUN: llc -march=amdgcn -mcpu=bonaire -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=VCCZ-BUG %s
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
3 ; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=NOVCCZ-BUG %s
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 ; GCN-FUNC: {{^}}vccz_workaround:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 ; GCN: s_load_dword s{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], 0x0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 ; GCN: v_cmp_neq_f32_e64 vcc, s{{[0-9]+}}, 0{{$}}
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
8 ; VCCZ-BUG: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 ; VCCZ-BUG: s_mov_b64 vcc, vcc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 ; NOVCCZ-BUG-NOT: s_mov_b64 vcc, vcc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 ; GCN: s_cbranch_vccnz [[EXIT:[0-9A-Za-z_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 ; GCN: buffer_store_dword
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ; GCN: [[EXIT]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 ; GCN: s_endpgm
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
15 define amdgpu_kernel void @vccz_workaround(i32 addrspace(2)* %in, i32 addrspace(1)* %out, float %cond) {
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 %cnd = fcmp oeq float 0.0, %cond
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 %sgpr = load volatile i32, i32 addrspace(2)* %in
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 br i1 %cnd, label %if, label %endif
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 if:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 store i32 %sgpr, i32 addrspace(1)* %out
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 br label %endif
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 endif:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 ; GCN-FUNC: {{^}}vccz_noworkaround:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 ; GCN: v_cmp_neq_f32_e32 vcc, 0, v{{[0-9]+}}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 ; GCN: s_cbranch_vccnz [[EXIT:[0-9A-Za-z_]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 ; GCN: buffer_store_dword
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 ; GCN: [[EXIT]]:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 ; GCN: s_endpgm
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
35 define amdgpu_kernel void @vccz_noworkaround(float addrspace(1)* %in, float addrspace(1)* %out) {
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 %vgpr = load volatile float, float addrspace(1)* %in
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 %cnd = fcmp oeq float 0.0, %vgpr
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 br i1 %cnd, label %if, label %endif
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 if:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 store float %vgpr, float addrspace(1)* %out
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 br label %endif
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 endif:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 }