blob: 8b79667c1db25faef633d68408db8c3e42cba2e0 [file] [log] [blame]
Tim Renouf4be70ba2018-08-23 17:28:33 +00001# RUN: llc -march=amdgcn -mcpu=gfx803 -run-pass simple-register-coalescing -verify-machineinstrs -o - %s | FileCheck --check-prefix=GCN %s
2#
3# This test gave "Use not jointly dominated by defs" when
4# removePartialRedundancy attempted to prune and then re-extend a subrange.
5#
6# GCN: {{^body}}
7
8---
9name: _amdgpu_ps_main
10tracksRegLiveness: true
11body: |
12 bb.0:
13 successors: %bb.1, %bb.2
14
15 %21:vgpr_32 = V_TRUNC_F32_e32 undef %22:vgpr_32, implicit $exec
16 %23:vgpr_32 = V_CVT_U32_F32_e32 killed %21, implicit $exec
17 %108:vgpr_32 = V_LSHRREV_B32_e32 4, killed %23, implicit $exec
18 undef %109.sub1:vreg_128 = COPY %108
19 %28:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %29:sreg_128, 3044, 0 :: (dereferenceable invariant load 4)
20 S_CMP_EQ_U32 killed %28, 0, implicit-def $scc
21 S_CBRANCH_SCC0 %bb.2, implicit killed $scc
22
23 bb.1:
24 %138:vreg_128 = COPY killed %109
25 S_BRANCH %bb.9
26
27 bb.2:
28 successors: %bb.3, %bb.4
29
30 S_CBRANCH_SCC0 %bb.4, implicit undef $scc
31
32 bb.3:
33 %136:vreg_128 = COPY killed %109
34 S_BRANCH %bb.5
35
36 bb.4:
37 %136:vreg_128 = COPY killed %109
38
39 bb.5:
40 successors: %bb.6, %bb.8
41
42 %110:vreg_128 = COPY killed %136
43 dead %32:sreg_32_xm0 = S_MOV_B32 0
44 %111:vreg_128 = COPY %110
45 %111.sub3:vreg_128 = COPY undef %32
46 S_CBRANCH_SCC1 %bb.8, implicit undef $scc
47 S_BRANCH %bb.6
48
49 bb.6:
50 %36:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %37:sreg_128, 2708, 0 :: (dereferenceable invariant load 4)
51 %39:vgpr_32 = nnan arcp contract reassoc V_MAD_F32 0, killed %110.sub1, 0, target-flags(amdgpu-gotprel32-lo) 0, 0, 0, 0, 0, implicit $exec
52 %40:vgpr_32 = V_MAD_F32 0, %111.sub1, 0, target-flags(amdgpu-gotprel32-lo) 0, 0, 0, 0, 0, implicit $exec
53 %41:vgpr_32 = V_MUL_F32_e64 0, 0, 0, killed %40, 1, 0, implicit $exec
54 %43:vgpr_32 = V_MUL_F32_e32 0, %39, implicit $exec
55 %44:vgpr_32 = COPY killed %43
56 %44:vgpr_32 = V_MAC_F32_e32 0, killed %41, %44, implicit $exec
57 %47:vgpr_32 = V_MOV_B32_e32 2143289344, implicit $exec
58 %46:vgpr_32 = COPY killed %47
59 %46:vgpr_32 = V_MAC_F32_e32 0, killed %39, %46, implicit $exec
60 undef %115.sub0:vreg_128 = COPY %46
61 %115.sub1:vreg_128 = COPY killed %46
62 %115.sub2:vreg_128 = COPY killed %44
63 %50:sreg_64_xexec = V_CMP_NE_U32_e64 0, killed %36, implicit $exec
64 dead %118:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
65 %137:vreg_128 = IMPLICIT_DEF
66
67 bb.7:
68 successors: %bb.7, %bb.8
69
70 %119:vreg_128 = COPY killed %137
71 %121:vreg_128 = COPY killed %119
72 %121.sub3:vreg_128 = COPY undef %32
73 %56:vgpr_32 = V_ADD_F32_e32 %115.sub2, %121.sub2, implicit $exec
74 %59:vgpr_32 = V_ADD_F32_e32 %115.sub1, %121.sub1, implicit $exec
75 %62:vgpr_32 = V_ADD_F32_e32 %115.sub0, killed %121.sub0, implicit $exec
76 undef %117.sub0:vreg_128 = COPY killed %62
77 %117.sub1:vreg_128 = COPY killed %59
78 %117.sub2:vreg_128 = COPY killed %56
79 %64:sreg_64 = S_AND_B64 $exec, %50, implicit-def dead $scc
80 $vcc = COPY killed %64
81 %137:vreg_128 = COPY killed %117
82 S_CBRANCH_VCCNZ %bb.7, implicit killed $vcc
83 S_BRANCH %bb.8
84
85 bb.8:
86 dead %66:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %67:sreg_128, 2704, 0 :: (dereferenceable invariant load 4)
87 %138:vreg_128 = COPY killed %111
88
89 bb.9:
90 %113:vreg_128 = COPY killed %138
91 S_CBRANCH_SCC1 %bb.18, implicit undef $scc
92 S_BRANCH %bb.10
93
94 bb.10:
95 S_CBRANCH_SCC1 %bb.12, implicit undef $scc
96 S_BRANCH %bb.11
97
98 bb.11:
99
100 bb.12:
101 successors: %bb.13, %bb.18
102
103 S_CBRANCH_SCC1 %bb.18, implicit undef $scc
104 S_BRANCH %bb.13
105
106 bb.13:
107 successors: %bb.14, %bb.17
108
109 S_CBRANCH_SCC1 %bb.17, implicit undef $scc
110 S_BRANCH %bb.14
111
112 bb.14:
113 S_CBRANCH_SCC1 %bb.16, implicit undef $scc
114 S_BRANCH %bb.15
115
116 bb.15:
117
118 bb.16:
119
120 bb.17:
121
122 bb.18:
123 S_CBRANCH_SCC1 %bb.26, implicit undef $scc
124 S_BRANCH %bb.19
125
126 bb.19:
127 S_CBRANCH_SCC1 %bb.26, implicit undef $scc
128 S_BRANCH %bb.20
129
130 bb.20:
131 S_CBRANCH_SCC1 %bb.25, implicit undef $scc
132 S_BRANCH %bb.21
133
134 bb.21:
135 successors: %bb.22, %bb.24
136
137 S_CBRANCH_SCC1 %bb.24, implicit undef $scc
138 S_BRANCH %bb.22
139
140 bb.22:
141 successors: %bb.23, %bb.24
142
143 S_CBRANCH_SCC1 %bb.24, implicit undef $scc
144 S_BRANCH %bb.23
145
146 bb.23:
147
148 bb.24:
149
150 bb.25:
151
152 bb.26:
153 S_CBRANCH_SCC1 %bb.33, implicit undef $scc
154 S_BRANCH %bb.27
155
156 bb.27:
157 S_CBRANCH_SCC1 %bb.33, implicit undef $scc
158 S_BRANCH %bb.28
159
160 bb.28:
161 dead %77:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
162 %78:vgpr_32 = nnan arcp contract reassoc V_MAD_F32 0, killed %113.sub1, 0, target-flags(amdgpu-gotprel32-lo) 0, 0, 1065353216, 0, 0, implicit $exec
163 dead %80:sreg_32_xm0 = S_MOV_B32 0
164 dead %82:vgpr_32 = V_MUL_F32_e32 killed %78, %78, implicit $exec
165 dead %126:vgpr_32 = V_MOV_B32_e32 2143289344, implicit $exec
166 dead %125:vreg_128 = IMPLICIT_DEF
167 dead %91:sreg_32_xm0 = S_MOV_B32 2143289344
168 %96:sreg_64 = S_AND_B64 $exec, 0, implicit-def dead $scc
169 %139:vreg_128 = IMPLICIT_DEF
170
171 bb.29:
172 successors: %bb.30, %bb.31
173
174 dead %127:vreg_128 = COPY killed %139
175 S_CBRANCH_SCC0 %bb.31, implicit undef $scc
176
177 bb.30:
178 S_BRANCH %bb.32
179
180 bb.31:
181 successors: %bb.32, %bb.34
182
183 $vcc = COPY %96
184 S_CBRANCH_VCCNZ %bb.34, implicit killed $vcc
185 S_BRANCH %bb.32
186
187 bb.32:
188 dead %130:vreg_128 = IMPLICIT_DEF
189 dead %128:vreg_128 = COPY undef %130
190 %139:vreg_128 = IMPLICIT_DEF
191 S_BRANCH %bb.29
192
193 bb.33:
194 S_ENDPGM
195
196 bb.34:
197 S_ENDPGM
198
199...