Skip to content

Commit 3f3bcac

Browse files
authored
[AMDGPU] New alias v_interp_p2_new_f32 (#118968)
This is for compatibility with SP3. Also add basic testing for the new GFX11 VINTERP encoding.
1 parent c74e223 commit 3f3bcac

File tree

4 files changed

+156
-0
lines changed

4 files changed

+156
-0
lines changed

llvm/lib/Target/AMDGPU/VINTERPInstructions.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,6 @@ defm V_INTERP_P10_F16_F32_inreg : VINTERP_Real_t16_and_fake16_gfx11_gfx12<0x002,
238238
defm V_INTERP_P2_F16_F32_inreg : VINTERP_Real_t16_and_fake16_gfx11_gfx12<0x003, "v_interp_p2_f16_f32">;
239239
defm V_INTERP_P10_RTZ_F16_F32_inreg : VINTERP_Real_t16_and_fake16_gfx11_gfx12<0x004, "v_interp_p10_rtz_f16_f32">;
240240
defm V_INTERP_P2_RTZ_F16_F32_inreg : VINTERP_Real_t16_and_fake16_gfx11_gfx12<0x005, "v_interp_p2_rtz_f16_f32">;
241+
242+
let AssemblerPredicate = isGFX11Plus in
243+
def : AMDGPUMnemonicAlias<"v_interp_p2_new_f32", "v_interp_p2_f32">;
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5
2+
// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck --check-prefix=GFX11 %s
3+
4+
v_interp_p10_f32 v0, v1, v2, v3 wait_exp:5
5+
// GFX11: v_interp_p10_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x00,0xcd,0x01,0x05,0x0e,0x04]
6+
7+
v_interp_p10_f32 v0, -v1, v2, v3
8+
// GFX11: v_interp_p10_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x24]
9+
10+
v_interp_p10_f32 v0, v1, -v2, v3
11+
// GFX11: v_interp_p10_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x44]
12+
13+
v_interp_p10_f32 v0, v1, v2, -v3
14+
// GFX11: v_interp_p10_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x84]
15+
16+
v_interp_p2_f32 v0, v1, v2, v3 wait_exp:5
17+
// GFX11: v_interp_p2_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x01,0xcd,0x01,0x05,0x0e,0x04]
18+
19+
v_interp_p2_f32 v0, -v1, v2, v3
20+
// GFX11: v_interp_p2_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x24]
21+
22+
v_interp_p2_f32 v0, v1, -v2, v3
23+
// GFX11: v_interp_p2_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x44]
24+
25+
v_interp_p2_f32 v0, v1, v2, -v3
26+
// GFX11: v_interp_p2_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x84]
27+
28+
v_interp_p10_f16_f32 v0, v1, v2, v3 wait_exp:5
29+
// GFX11: v_interp_p10_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x02,0xcd,0x01,0x05,0x0e,0x04]
30+
31+
v_interp_p10_f16_f32 v0, -v1, v2, v3
32+
// GFX11: v_interp_p10_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x24]
33+
34+
v_interp_p10_f16_f32 v0, v1, -v2, v3
35+
// GFX11: v_interp_p10_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x44]
36+
37+
v_interp_p10_f16_f32 v0, v1, v2, -v3
38+
// GFX11: v_interp_p10_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x84]
39+
40+
v_interp_p2_f16_f32 v0, v1, v2, v3 wait_exp:5
41+
// GFX11: v_interp_p2_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x03,0xcd,0x01,0x05,0x0e,0x04]
42+
43+
v_interp_p2_f16_f32 v0, -v1, v2, v3
44+
// GFX11: v_interp_p2_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x24]
45+
46+
v_interp_p2_f16_f32 v0, v1, -v2, v3
47+
// GFX11: v_interp_p2_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x44]
48+
49+
v_interp_p2_f16_f32 v0, v1, v2, -v3
50+
// GFX11: v_interp_p2_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x84]
51+
52+
v_interp_p10_rtz_f16_f32 v0, v1, v2, v3 wait_exp:5
53+
// GFX11: v_interp_p10_rtz_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x04,0xcd,0x01,0x05,0x0e,0x04]
54+
55+
v_interp_p10_rtz_f16_f32 v0, -v1, v2, v3
56+
// GFX11: v_interp_p10_rtz_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x24]
57+
58+
v_interp_p10_rtz_f16_f32 v0, v1, -v2, v3
59+
// GFX11: v_interp_p10_rtz_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x44]
60+
61+
v_interp_p10_rtz_f16_f32 v0, v1, v2, -v3
62+
// GFX11: v_interp_p10_rtz_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x84]
63+
64+
v_interp_p2_rtz_f16_f32 v0, v1, v2, v3 wait_exp:5
65+
// GFX11: v_interp_p2_rtz_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x05,0xcd,0x01,0x05,0x0e,0x04]
66+
67+
v_interp_p2_rtz_f16_f32 v0, -v1, v2, v3
68+
// GFX11: v_interp_p2_rtz_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x24]
69+
70+
v_interp_p2_rtz_f16_f32 v0, v1, -v2, v3
71+
// GFX11: v_interp_p2_rtz_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x44]
72+
73+
v_interp_p2_rtz_f16_f32 v0, v1, v2, -v3
74+
// GFX11: v_interp_p2_rtz_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x84]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5
2+
// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -show-encoding %s | FileCheck --check-prefix=GFX11 %s
3+
4+
v_interp_p2_new_f32 v0, v1, v2, v3
5+
// GFX11: v_interp_p2_f32 v0, v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x04]
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5
2+
# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefix=GFX11 %s
3+
4+
0x00,0x05,0x00,0xcd,0x01,0x05,0x0e,0x04
5+
# GFX11: v_interp_p10_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x00,0xcd,0x01,0x05,0x0e,0x04]
6+
7+
0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x24
8+
# GFX11: v_interp_p10_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x24]
9+
10+
0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x44
11+
# GFX11: v_interp_p10_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x44]
12+
13+
0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x84
14+
# GFX11: v_interp_p10_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x00,0xcd,0x01,0x05,0x0e,0x84]
15+
16+
0x00,0x05,0x01,0xcd,0x01,0x05,0x0e,0x04
17+
# GFX11: v_interp_p2_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x01,0xcd,0x01,0x05,0x0e,0x04]
18+
19+
0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x24
20+
# GFX11: v_interp_p2_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x24]
21+
22+
0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x44
23+
# GFX11: v_interp_p2_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x44]
24+
25+
0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x84
26+
# GFX11: v_interp_p2_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x01,0xcd,0x01,0x05,0x0e,0x84]
27+
28+
0x00,0x05,0x02,0xcd,0x01,0x05,0x0e,0x04
29+
# GFX11: v_interp_p10_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x02,0xcd,0x01,0x05,0x0e,0x04]
30+
31+
0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x24
32+
# GFX11: v_interp_p10_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x24]
33+
34+
0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x44
35+
# GFX11: v_interp_p10_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x44]
36+
37+
0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x84
38+
# GFX11: v_interp_p10_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x02,0xcd,0x01,0x05,0x0e,0x84]
39+
40+
0x00,0x05,0x03,0xcd,0x01,0x05,0x0e,0x04
41+
# GFX11: v_interp_p2_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x03,0xcd,0x01,0x05,0x0e,0x04]
42+
43+
0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x24
44+
# GFX11: v_interp_p2_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x24]
45+
46+
0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x44
47+
# GFX11: v_interp_p2_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x44]
48+
49+
0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x84
50+
# GFX11: v_interp_p2_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x03,0xcd,0x01,0x05,0x0e,0x84]
51+
52+
0x00,0x05,0x04,0xcd,0x01,0x05,0x0e,0x04
53+
# GFX11: v_interp_p10_rtz_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x04,0xcd,0x01,0x05,0x0e,0x04]
54+
55+
0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x24
56+
# GFX11: v_interp_p10_rtz_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x24]
57+
58+
0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x44
59+
# GFX11: v_interp_p10_rtz_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x44]
60+
61+
0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x84
62+
# GFX11: v_interp_p10_rtz_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x04,0xcd,0x01,0x05,0x0e,0x84]
63+
64+
0x00,0x05,0x05,0xcd,0x01,0x05,0x0e,0x04
65+
# GFX11: v_interp_p2_rtz_f16_f32 v0, v1, v2, v3 wait_exp:5 ; encoding: [0x00,0x05,0x05,0xcd,0x01,0x05,0x0e,0x04]
66+
67+
0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x24
68+
# GFX11: v_interp_p2_rtz_f16_f32 v0, -v1, v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x24]
69+
70+
0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x44
71+
# GFX11: v_interp_p2_rtz_f16_f32 v0, v1, -v2, v3 wait_exp:0 ; encoding: [0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x44]
72+
73+
0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x84
74+
# GFX11: v_interp_p2_rtz_f16_f32 v0, v1, v2, -v3 wait_exp:0 ; encoding: [0x00,0x00,0x05,0xcd,0x01,0x05,0x0e,0x84]

0 commit comments

Comments
 (0)