Skip to content

Commit 2ea4605

Browse files
committed
AMDGPU/GlobalISel: Add some more tests for add3 folding
These currently fail to form add3 due to the pointer type, but they should be handle.
1 parent 26ebc51 commit 2ea4605

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-pattern-add3.mir

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,90 @@ body: |
130130
S_ENDPGM 0, implicit %4, implicit %3
131131
...
132132

133+
---
134+
135+
name: add_p3_vgpr_vgpr_vgpr
136+
legalized: true
137+
regBankSelected: true
138+
tracksRegLiveness: true
139+
140+
body: |
141+
bb.0:
142+
liveins: $vgpr0, $vgpr1, $vgpr2
143+
144+
; GFX8-LABEL: name: add_p3_vgpr_vgpr_vgpr
145+
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
146+
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
147+
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
148+
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
149+
; GFX8: %3:vgpr_32, dead %6:sreg_64_xexec = V_ADD_I32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
150+
; GFX8: %4:vgpr_32, dead %5:sreg_64_xexec = V_ADD_I32_e64 %3, [[COPY2]], 0, implicit $exec
151+
; GFX8: S_ENDPGM 0, implicit %4
152+
; GFX9-LABEL: name: add_p3_vgpr_vgpr_vgpr
153+
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
154+
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
155+
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
156+
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
157+
; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
158+
; GFX9: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_ADD_U32_e64_]], [[COPY2]], 0, implicit $exec
159+
; GFX9: S_ENDPGM 0, implicit [[V_ADD_U32_e64_1]]
160+
; GFX10-LABEL: name: add_p3_vgpr_vgpr_vgpr
161+
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
162+
; GFX10: $vcc_hi = IMPLICIT_DEF
163+
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
164+
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
165+
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
166+
; GFX10: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
167+
; GFX10: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_ADD_U32_e64_]], [[COPY2]], 0, implicit $exec
168+
; GFX10: S_ENDPGM 0, implicit [[V_ADD_U32_e64_1]]
169+
%0:vgpr(p3) = COPY $vgpr0
170+
%1:vgpr(s32) = COPY $vgpr1
171+
%2:vgpr(s32) = COPY $vgpr2
172+
%3:vgpr(p3) = G_PTR_ADD %0, %1
173+
%4:vgpr(p3) = G_PTR_ADD %3, %2
174+
S_ENDPGM 0, implicit %4
175+
...
176+
177+
---
178+
179+
name: add_p5_vgpr_vgpr_vgpr
180+
legalized: true
181+
regBankSelected: true
182+
tracksRegLiveness: true
183+
184+
body: |
185+
bb.0:
186+
liveins: $vgpr0, $vgpr1, $vgpr2
187+
188+
; GFX8-LABEL: name: add_p5_vgpr_vgpr_vgpr
189+
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
190+
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
191+
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
192+
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
193+
; GFX8: %3:vgpr_32, dead %6:sreg_64_xexec = V_ADD_I32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
194+
; GFX8: %4:vgpr_32, dead %5:sreg_64_xexec = V_ADD_I32_e64 %3, [[COPY2]], 0, implicit $exec
195+
; GFX8: S_ENDPGM 0, implicit %4
196+
; GFX9-LABEL: name: add_p5_vgpr_vgpr_vgpr
197+
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
198+
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
199+
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
200+
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
201+
; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
202+
; GFX9: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_ADD_U32_e64_]], [[COPY2]], 0, implicit $exec
203+
; GFX9: S_ENDPGM 0, implicit [[V_ADD_U32_e64_1]]
204+
; GFX10-LABEL: name: add_p5_vgpr_vgpr_vgpr
205+
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
206+
; GFX10: $vcc_hi = IMPLICIT_DEF
207+
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
208+
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
209+
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
210+
; GFX10: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[COPY1]], 0, implicit $exec
211+
; GFX10: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_ADD_U32_e64_]], [[COPY2]], 0, implicit $exec
212+
; GFX10: S_ENDPGM 0, implicit [[V_ADD_U32_e64_1]]
213+
%0:vgpr(p5) = COPY $vgpr0
214+
%1:vgpr(s32) = COPY $vgpr1
215+
%2:vgpr(s32) = COPY $vgpr2
216+
%3:vgpr(p5) = G_PTR_ADD %0, %1
217+
%4:vgpr(p5) = G_PTR_ADD %3, %2
218+
S_ENDPGM 0, implicit %4
219+
...

0 commit comments

Comments
 (0)