Skip to content

Commit b6ecdf0

Browse files
authored
[AMDGPU] Segregate 16-bit fix-sgpr-copies tests. (llvm#69353)
The 16-bit instructions used in them are not available on the generic target. This patches makes them run for GFX11.
1 parent bb82695 commit b6ecdf0

File tree

2 files changed

+58
-58
lines changed

2 files changed

+58
-58
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2+
# RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass=si-fix-sgpr-copies -verify-machineinstrs -o - %s | FileCheck --check-prefix=GCN %s
3+
4+
---
5+
name: cmp_f16
6+
body: |
7+
bb.0.entry:
8+
; GCN-LABEL: name: cmp_f16
9+
; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
10+
; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
11+
; GCN-NEXT: [[V_CVT_F16_U16_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F16_U16_e64 [[DEF]], 0, 0, implicit $mode, implicit $exec
12+
; GCN-NEXT: [[DEF2:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
13+
; GCN-NEXT: [[V_CMP_LT_F16_t16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_LT_F16_t16_e64 0, [[V_CVT_F16_U16_e64_]], 0, [[DEF1]], 0, implicit $mode, implicit $exec
14+
; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed [[V_CMP_LT_F16_t16_e64_]], implicit $exec
15+
%0:vgpr_32 = IMPLICIT_DEF
16+
%1:sreg_32 = IMPLICIT_DEF
17+
%2:vgpr_32 = V_CVT_F16_U16_e64 %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
18+
%3:sreg_32 = COPY %2:vgpr_32
19+
nofpexcept S_CMP_LT_F16 killed %3:sreg_32, %1:sreg_32, implicit-def $scc, implicit $mode
20+
%4:sreg_32_xm0_xexec = COPY $scc
21+
%5:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed %4, implicit $exec
22+
...
23+
24+
# Needs extra shift instruction to select hi 16 bits
25+
---
26+
name: cvt_hi_f32_f16
27+
body: |
28+
bb.0:
29+
; GCN-LABEL: name: cvt_hi_f32_f16
30+
; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
31+
; GCN-NEXT: [[V_CVT_F16_U16_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F16_U16_e64 [[DEF]], 0, 0, implicit $mode, implicit $exec
32+
; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
33+
; GCN-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 16, [[V_CVT_F16_U16_e64_]], implicit $exec
34+
; GCN-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_F16_t16_e64 0, [[V_LSHRREV_B32_e64_]], 0, 0, implicit $mode, implicit $exec
35+
%0:vgpr_32 = IMPLICIT_DEF
36+
%1:vgpr_32 = V_CVT_F16_U16_e64 %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
37+
%2:sreg_32 = COPY %1:vgpr_32
38+
%3:sreg_32 = S_CVT_HI_F32_F16 %2:sreg_32, implicit $mode
39+
...
40+
41+
---
42+
name: fmac_f16
43+
body: |
44+
bb.0:
45+
; GCN-LABEL: name: fmac_f16
46+
; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
47+
; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
48+
; GCN-NEXT: [[DEF2:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
49+
; GCN-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[DEF]], 0, 0, implicit $mode, implicit $exec
50+
; GCN-NEXT: [[DEF3:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
51+
; GCN-NEXT: [[V_FMAC_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_FMAC_F16_t16_e64 0, killed [[DEF1]], 0, [[DEF2]], 0, [[V_CVT_F32_U32_e64_]], 0, 0, 0, implicit $mode, implicit $exec
52+
%0:vgpr_32 = IMPLICIT_DEF
53+
%1:sreg_32 = IMPLICIT_DEF
54+
%2:sreg_32 = IMPLICIT_DEF
55+
%3:vgpr_32 = V_CVT_F32_U32_e64 %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
56+
%4:sreg_32 = COPY %3:vgpr_32
57+
%5:sreg_32 = nofpexcept S_FMAC_F16 killed %1:sreg_32, %2:sreg_32, %4:sreg_32, implicit $mode
58+
...

llvm/test/CodeGen/AMDGPU/fix-sgpr-copies.mir

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -202,44 +202,6 @@ body: |
202202
%5:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed %4, implicit $exec
203203
...
204204

205-
---
206-
name: cmp_f16
207-
body: |
208-
bb.0.entry:
209-
; GCN-LABEL: name: cmp_f16
210-
; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
211-
; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
212-
; GCN-NEXT: [[V_CVT_F16_U16_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F16_U16_e64 [[DEF]], 0, 0, implicit $mode, implicit $exec
213-
; GCN-NEXT: [[DEF2:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
214-
; GCN-NEXT: [[V_CMP_LT_F16_t16_e64_:%[0-9]+]]:sreg_64_xexec = nofpexcept V_CMP_LT_F16_t16_e64 0, [[V_CVT_F16_U16_e64_]], 0, [[DEF1]], 0, implicit $mode, implicit $exec
215-
; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed [[V_CMP_LT_F16_t16_e64_]], implicit $exec
216-
%0:vgpr_32 = IMPLICIT_DEF
217-
%1:sreg_32 = IMPLICIT_DEF
218-
%2:vgpr_32 = V_CVT_F16_U16_e64 %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
219-
%3:sreg_32 = COPY %2:vgpr_32
220-
nofpexcept S_CMP_LT_F16 killed %3:sreg_32, %1:sreg_32, implicit-def $scc, implicit $mode
221-
%4:sreg_64_xexec = COPY $scc
222-
%5:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed %4, implicit $exec
223-
...
224-
225-
# Needs extra shift instruction to select hi 16 bits
226-
---
227-
name: cvt_hi_f32_f16
228-
body: |
229-
bb.0:
230-
231-
; GCN-LABEL: name: cvt_hi_f32_f16
232-
; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
233-
; GCN-NEXT: [[V_CVT_F16_U16_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F16_U16_e64 [[DEF]], 0, 0, implicit $mode, implicit $exec
234-
; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
235-
; GCN-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 16, [[V_CVT_F16_U16_e64_]], implicit $exec
236-
; GCN-NEXT: [[V_CVT_F32_F16_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_F16_t16_e64 0, [[V_LSHRREV_B32_e64_]], 0, 0, implicit $mode, implicit $exec
237-
%0:vgpr_32 = IMPLICIT_DEF
238-
%1:vgpr_32 = V_CVT_F16_U16_e64 %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
239-
%2:sreg_32 = COPY %1:vgpr_32
240-
%3:sreg_32 = S_CVT_HI_F32_F16 %2:sreg_32, implicit $mode
241-
...
242-
243205
# Test to ensure that src2 of fmac is moved to vgpr
244206
---
245207
name: fmac_f32
@@ -260,23 +222,3 @@ body: |
260222
%4:sreg_32 = COPY %3:vgpr_32
261223
%5:sreg_32 = nofpexcept S_FMAC_F32 killed %4:sreg_32, %1:sreg_32, %2:sreg_32, implicit $mode
262224
...
263-
264-
---
265-
name: fmac_f16
266-
body: |
267-
bb.0:
268-
; GCN-LABEL: name: fmac_f16
269-
; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
270-
; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
271-
; GCN-NEXT: [[DEF2:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
272-
; GCN-NEXT: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[DEF]], 0, 0, implicit $mode, implicit $exec
273-
; GCN-NEXT: [[DEF3:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
274-
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[DEF2]]
275-
; GCN-NEXT: %6:vgpr_32 = nofpexcept V_FMAC_F16_t16_e64 0, killed [[DEF1]], 0, [[COPY]], 0, [[V_CVT_F32_U32_e64_]], 0, 0, 0, implicit $mode, implicit $exec
276-
%0:vgpr_32 = IMPLICIT_DEF
277-
%1:sreg_32 = IMPLICIT_DEF
278-
%2:sreg_32 = IMPLICIT_DEF
279-
%3:vgpr_32 = V_CVT_F32_U32_e64 %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
280-
%4:sreg_32 = COPY %3:vgpr_32
281-
%5:sreg_32 = nofpexcept S_FMAC_F16 killed %1:sreg_32, %2:sreg_32, %4:sreg_32, implicit $mode
282-
...

0 commit comments

Comments
 (0)