1
- ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
1
; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
3
2
4
3
; NOTE: llvm.amdgcn.wwm is deprecated, use llvm.amdgcn.strict.wwm instead.
5
4
6
5
; GCN-LABEL: wwm:
7
6
define amdgpu_hs void @wwm (i32 inreg %arg , ptr addrspace (8 ) inreg %buffer ) {
8
- ; GCN-LABEL: wwm:
9
- ; GCN: ; %bb.0: ; %entry
10
- ; GCN-NEXT: s_mov_b32 s7, s4
11
- ; GCN-NEXT: s_mov_b32 s6, s3
12
- ; GCN-NEXT: s_mov_b32 s5, s2
13
- ; GCN-NEXT: s_mov_b32 s4, s1
14
- ; GCN-NEXT: s_mov_b32 s1, 1
15
- ; GCN-NEXT: v_mov_b32_e32 v0, 4
16
- ; GCN-NEXT: s_not_b64 exec, exec
17
- ; GCN-NEXT: v_mov_b32_e32 v0, 1
18
- ; GCN-NEXT: s_not_b64 exec, exec
19
- ; GCN-NEXT: s_or_saveexec_b64 s[2:3], -1
20
- ; GCN-NEXT: v_lshlrev_b32_e32 v0, 2, v0
21
- ; GCN-NEXT: s_mov_b64 exec, s[2:3]
22
- ; GCN-NEXT: s_cmp_lg_u32 s0, 0
23
- ; GCN-NEXT: v_mov_b32_e32 v1, v0
24
- ; GCN-NEXT: s_cbranch_scc0 .LBB0_2
25
- ; GCN-NEXT: ; %bb.1: ; %bb42
26
- ; GCN-NEXT: s_mov_b32 s1, 0
27
- ; GCN-NEXT: .LBB0_2: ; %bb602
28
- ; GCN-NEXT: v_cmp_ne_u32_e32 vcc, s1, v1
29
- ; GCN-NEXT: s_cbranch_vccnz .LBB0_4
30
- ; GCN-NEXT: ; %bb.3: ; %bb49
31
- ; GCN-NEXT: v_mov_b32_e32 v1, 1.0
32
- ; GCN-NEXT: tbuffer_store_format_x v1, off, s[4:7], 1 format:[BUF_DATA_FORMAT_32,BUF_NUM_FORMAT_FLOAT] offset:4 glc
33
- ; GCN-NEXT: .LBB0_4: ; %bb54
34
- ; GCN-NEXT: s_endpgm
35
7
entry:
36
8
br label %work
37
9
@@ -51,10 +23,16 @@ bb54:
51
23
ret void
52
24
53
25
work:
26
+ ; GCN: s_not_b64 exec, exec
27
+ ; GCN: v_mov_b32_e32 v[[tmp1189:[0-9]+]], 1
28
+ ; GCN: s_not_b64 exec, exec
54
29
%tmp1189 = tail call i32 @llvm.amdgcn.set.inactive.i32 (i32 4 , i32 1 )
55
30
31
+ ; GCN: s_or_saveexec_b64 s[[[LO:[0-9]+]]:[[HI:[0-9]+]]], -1
32
+ ; GCN: v_lshlrev_b32_e32 v[[tmp1191:[0-9]+]], 2, v[[tmp1189]]
56
33
%tmp1191 = mul i32 %tmp1189 , 4
57
34
35
+ ; GCN: s_mov_b64 exec, s[[[LO]]:[[HI]]]
58
36
%tmp1196 = tail call i32 @llvm.amdgcn.wwm.i32 (i32 %tmp1191 )
59
37
60
38
%tmp34 = icmp eq i32 %arg , 0
63
41
64
42
; GCN-LABEL: strict_wwm:
65
43
define amdgpu_hs void @strict_wwm (i32 inreg %arg , ptr addrspace (8 ) inreg %buffer ) {
66
- ; GCN-LABEL: strict_wwm:
67
- ; GCN: ; %bb.0: ; %entry
68
- ; GCN-NEXT: s_mov_b32 s7, s4
69
- ; GCN-NEXT: s_mov_b32 s6, s3
70
- ; GCN-NEXT: s_mov_b32 s5, s2
71
- ; GCN-NEXT: s_mov_b32 s4, s1
72
- ; GCN-NEXT: s_mov_b32 s1, 1
73
- ; GCN-NEXT: v_mov_b32_e32 v0, 4
74
- ; GCN-NEXT: s_not_b64 exec, exec
75
- ; GCN-NEXT: v_mov_b32_e32 v0, 1
76
- ; GCN-NEXT: s_not_b64 exec, exec
77
- ; GCN-NEXT: s_or_saveexec_b64 s[2:3], -1
78
- ; GCN-NEXT: v_lshlrev_b32_e32 v0, 2, v0
79
- ; GCN-NEXT: s_mov_b64 exec, s[2:3]
80
- ; GCN-NEXT: s_cmp_lg_u32 s0, 0
81
- ; GCN-NEXT: v_mov_b32_e32 v1, v0
82
- ; GCN-NEXT: s_cbranch_scc0 .LBB1_2
83
- ; GCN-NEXT: ; %bb.1: ; %bb42
84
- ; GCN-NEXT: s_mov_b32 s1, 0
85
- ; GCN-NEXT: .LBB1_2: ; %bb602
86
- ; GCN-NEXT: v_cmp_ne_u32_e32 vcc, s1, v1
87
- ; GCN-NEXT: s_cbranch_vccnz .LBB1_4
88
- ; GCN-NEXT: ; %bb.3: ; %bb49
89
- ; GCN-NEXT: v_mov_b32_e32 v1, 1.0
90
- ; GCN-NEXT: tbuffer_store_format_x v1, off, s[4:7], 1 format:[BUF_DATA_FORMAT_32,BUF_NUM_FORMAT_FLOAT] offset:4 glc
91
- ; GCN-NEXT: .LBB1_4: ; %bb54
92
- ; GCN-NEXT: s_endpgm
93
44
entry:
94
45
br label %work
95
46
@@ -109,10 +60,16 @@ bb54:
109
60
ret void
110
61
111
62
work:
63
+ ; GCN: s_not_b64 exec, exec
64
+ ; GCN: v_mov_b32_e32 v[[tmp1189:[0-9]+]], 1
65
+ ; GCN: s_not_b64 exec, exec
112
66
%tmp1189 = tail call i32 @llvm.amdgcn.set.inactive.i32 (i32 4 , i32 1 )
113
67
68
+ ; GCN: s_or_saveexec_b64 s[[[LO:[0-9]+]]:[[HI:[0-9]+]]], -1
69
+ ; GCN: v_lshlrev_b32_e32 v[[tmp1191:[0-9]+]], 2, v[[tmp1189]]
114
70
%tmp1191 = mul i32 %tmp1189 , 4
115
71
72
+ ; GCN: s_mov_b64 exec, s[[[LO]]:[[HI]]]
116
73
%tmp1196 = tail call i32 @llvm.amdgcn.strict.wwm.i32 (i32 %tmp1191 )
117
74
118
75
%tmp34 = icmp eq i32 %arg , 0
0 commit comments