Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 0e72980

Browse files
committed
[AMDGPU][MC] Corrected v_madak/madmk to avoid printing "_e32" in disassembler output
See bug 32927: https://bugs.llvm.org//show_bug.cgi?id=32927 Reviewers: vpykhtin, artem.tamazov, arsenm Differential Revision: https://reviews.llvm.org/D32913 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302648 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 200b7a0 commit 0e72980

File tree

7 files changed

+35
-29
lines changed

7 files changed

+35
-29
lines changed

lib/Target/AMDGPU/VOP2Instructions.td

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,11 @@ multiclass VOP2eInst <string opName,
164164
class VOP_MADAK <ValueType vt> : VOPProfile <[vt, vt, vt, vt]> {
165165
field Operand ImmOpType = !if(!eq(vt.Size, 32), f32kimm, f16kimm);
166166
field dag Ins32 = (ins VCSrc_f32:$src0, VGPR_32:$src1, ImmOpType:$imm);
167-
field string Asm32 = "$vdst, $src0, $src1, $imm";
168167
field bit HasExt = 0;
168+
169+
// Hack to stop printing _e64
170+
let DstRC = RegisterOperand<VGPR_32>;
171+
field string Asm32 = " $vdst, $src0, $src1, $imm";
169172
}
170173

171174
def VOP_MADAK_F16 : VOP_MADAK <f16>;
@@ -174,8 +177,11 @@ def VOP_MADAK_F32 : VOP_MADAK <f32>;
174177
class VOP_MADMK <ValueType vt> : VOPProfile <[vt, vt, vt, vt]> {
175178
field Operand ImmOpType = !if(!eq(vt.Size, 32), f32kimm, f16kimm);
176179
field dag Ins32 = (ins VCSrc_f32:$src0, ImmOpType:$imm, VGPR_32:$src1);
177-
field string Asm32 = "$vdst, $src0, $imm, $src1";
178180
field bit HasExt = 0;
181+
182+
// Hack to stop printing _e64
183+
let DstRC = RegisterOperand<VGPR_32>;
184+
field string Asm32 = " $vdst, $src0, $imm, $src1";
179185
}
180186

181187
def VOP_MADMK_F16 : VOP_MADMK <f16>;
@@ -298,7 +304,7 @@ def VOP_WRITELANE : VOPProfile<[i32, i32, i32]> {
298304
let SubtargetPredicate = isGCN in {
299305

300306
defm V_CNDMASK_B32 : VOP2eInst <"v_cndmask_b32", VOP2e_I32_I32_I32_I1>;
301-
def V_MADMK_F32 : VOP2_Pseudo <"v_madmk_f32", VOP_MADMK_F32>;
307+
def V_MADMK_F32 : VOP2_Pseudo <"v_madmk_f32", VOP_MADMK_F32, [], "">;
302308

303309
let isCommutable = 1 in {
304310
defm V_ADD_F32 : VOP2Inst <"v_add_f32", VOP_F32_F32_F32, fadd>;
@@ -328,7 +334,7 @@ let Constraints = "$vdst = $src2", DisableEncoding="$src2",
328334
defm V_MAC_F32 : VOP2Inst <"v_mac_f32", VOP_MAC_F32>;
329335
}
330336

331-
def V_MADAK_F32 : VOP2_Pseudo <"v_madak_f32", VOP_MADAK_F32>;
337+
def V_MADAK_F32 : VOP2_Pseudo <"v_madak_f32", VOP_MADAK_F32, [], "">;
332338

333339
// No patterns so that the scalar instructions are always selected.
334340
// The scalar versions will be replaced with vector when needed later.
@@ -383,7 +389,7 @@ defm V_LSHL_B32 : VOP2Inst <"v_lshl_b32", VOP_I32_I32_I32>;
383389

384390
let SubtargetPredicate = isVI in {
385391

386-
def V_MADMK_F16 : VOP2_Pseudo <"v_madmk_f16", VOP_MADMK_F16>;
392+
def V_MADMK_F16 : VOP2_Pseudo <"v_madmk_f16", VOP_MADMK_F16, [], "">;
387393
defm V_LSHLREV_B16 : VOP2Inst <"v_lshlrev_b16", VOP_I16_I16_I16>;
388394
defm V_LSHRREV_B16 : VOP2Inst <"v_lshrrev_b16", VOP_I16_I16_I16>;
389395
defm V_ASHRREV_I16 : VOP2Inst <"v_ashrrev_i16", VOP_I16_I16_I16>;
@@ -394,7 +400,7 @@ defm V_ADD_F16 : VOP2Inst <"v_add_f16", VOP_F16_F16_F16, fadd>;
394400
defm V_SUB_F16 : VOP2Inst <"v_sub_f16", VOP_F16_F16_F16, fsub>;
395401
defm V_SUBREV_F16 : VOP2Inst <"v_subrev_f16", VOP_F16_F16_F16, null_frag, "v_sub_f16">;
396402
defm V_MUL_F16 : VOP2Inst <"v_mul_f16", VOP_F16_F16_F16, fmul>;
397-
def V_MADAK_F16 : VOP2_Pseudo <"v_madak_f16", VOP_MADAK_F16>;
403+
def V_MADAK_F16 : VOP2_Pseudo <"v_madak_f16", VOP_MADAK_F16, [], "">;
398404
defm V_ADD_U16 : VOP2Inst <"v_add_u16", VOP_I16_I16_I16>;
399405
defm V_SUB_U16 : VOP2Inst <"v_sub_u16" , VOP_I16_I16_I16>;
400406
defm V_SUBREV_U16 : VOP2Inst <"v_subrev_u16", VOP_I16_I16_I16, null_frag, "v_sub_u16">;

test/CodeGen/AMDGPU/madak.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ declare float @llvm.fabs.f32(float) nounwind readnone
99
; GCN-LABEL: {{^}}madak_f32:
1010
; GCN: buffer_load_dword [[VA:v[0-9]+]]
1111
; GCN: buffer_load_dword [[VB:v[0-9]+]]
12-
; GCN: v_madak_f32_e32 {{v[0-9]+}}, [[VA]], [[VB]], 0x41200000
12+
; GCN: v_madak_f32 {{v[0-9]+}}, [[VA]], [[VB]], 0x41200000
1313
define amdgpu_kernel void @madak_f32(float addrspace(1)* noalias %out, float addrspace(1)* noalias %in.a, float addrspace(1)* noalias %in.b) nounwind {
1414
%tid = tail call i32 @llvm.amdgcn.workitem.id.x() nounwind readnone
1515
%in.a.gep = getelementptr float, float addrspace(1)* %in.a, i32 %tid
@@ -63,7 +63,7 @@ define amdgpu_kernel void @madak_2_use_f32(float addrspace(1)* noalias %out, flo
6363

6464
; GCN-LABEL: {{^}}madak_m_inline_imm_f32:
6565
; GCN: buffer_load_dword [[VA:v[0-9]+]]
66-
; GCN: v_madak_f32_e32 {{v[0-9]+}}, 4.0, [[VA]], 0x41200000
66+
; GCN: v_madak_f32 {{v[0-9]+}}, 4.0, [[VA]], 0x41200000
6767
define amdgpu_kernel void @madak_m_inline_imm_f32(float addrspace(1)* noalias %out, float addrspace(1)* noalias %in.a) nounwind {
6868
%tid = tail call i32 @llvm.amdgcn.workitem.id.x() nounwind readnone
6969
%in.a.gep = getelementptr float, float addrspace(1)* %in.a, i32 %tid
@@ -198,7 +198,7 @@ define amdgpu_kernel void @no_madak_src1_modifier_f32(float addrspace(1)* noalia
198198
; GCN: s_load_dword [[SGPR0:s[0-9]+]], s{{\[[0-9]+:[0-9]+\]}}, {{0xa|0x28}}
199199
; GCN: v_mov_b32_e32 [[SGPR0_VCOPY:v[0-9]+]], [[SGPR0]]
200200
; GCN: buffer_load_dword [[VGPR:v[0-9]+]]
201-
; GCN: v_madak_f32_e32 [[MADAK:v[0-9]+]], 0.5, [[SGPR0_VCOPY]], 0x42280000
201+
; GCN: v_madak_f32 [[MADAK:v[0-9]+]], 0.5, [[SGPR0_VCOPY]], 0x42280000
202202
; GCN: v_mul_f32_e32 [[MUL:v[0-9]+]], [[VGPR]], [[MADAK]]
203203
; GCN: buffer_store_dword [[MUL]]
204204
define amdgpu_kernel void @madak_constant_bus_violation(i32 %arg1, float %sgpr0, float %sgpr1) #0 {

test/CodeGen/AMDGPU/v_madak_f16.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
; GCN-LABEL: {{^}}madak_f16
55
; GCN: buffer_load_ushort v[[A_F16:[0-9]+]]
66
; GCN: buffer_load_ushort v[[B_F16:[0-9]+]]
7-
; VI: v_madak_f16_e32 v[[R_F16:[0-9]+]], v[[A_F16]], v[[B_F16]], 0x4900{{$}}
7+
; VI: v_madak_f16 v[[R_F16:[0-9]+]], v[[A_F16]], v[[B_F16]], 0x4900{{$}}
88
; VI: buffer_store_short v[[R_F16]]
99
; GCN: s_endpgm
1010
define amdgpu_kernel void @madak_f16(

test/MC/AMDGPU/literal16.s

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,16 +133,16 @@ v_add_f16 v1, 65535, v2
133133

134134
// K-constant
135135
v_madmk_f16 v1, v2, 0x4280, v3
136-
// VI: v_madmk_f16_e32 v1, v2, 0x4280, v3 ; encoding: [0x02,0x07,0x02,0x48,0x80,0x42,0x00,0x00]
136+
// VI: v_madmk_f16 v1, v2, 0x4280, v3 ; encoding: [0x02,0x07,0x02,0x48,0x80,0x42,0x00,0x00]
137137

138138
v_madmk_f16 v1, v2, 1.0, v3
139-
// VI: v_madmk_f16_e32 v1, v2, 0x3c00, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x3c,0x00,0x00]
139+
// VI: v_madmk_f16 v1, v2, 0x3c00, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x3c,0x00,0x00]
140140

141141
v_madmk_f16 v1, v2, 1, v3
142-
// VI: v_madmk_f16_e32 v1, v2, 0x1, v3 ; encoding: [0x02,0x07,0x02,0x48,0x01,0x00,0x00,0x00]
142+
// VI: v_madmk_f16 v1, v2, 0x1, v3 ; encoding: [0x02,0x07,0x02,0x48,0x01,0x00,0x00,0x00]
143143

144144
v_madmk_f16 v1, v2, 64.0, v3
145-
// VI: v_madmk_f16_e32 v1, v2, 0x5400, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x54,0x00,0x00]
145+
// VI: v_madmk_f16 v1, v2, 0x5400, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x54,0x00,0x00]
146146

147147

148148
v_add_f16_e32 v1, 64.0, v2

test/MC/AMDGPU/vop2.s

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,13 @@ v_bfm_b32_e64 v1, v2, v3
250250
// VI: v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c]
251251
v_mac_f32_e32 v1, v2, v3
252252

253-
// SICI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x40,0x00,0x00,0x80,0x42]
254-
// VI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42]
255-
v_madmk_f32_e32 v1, v2, 64.0, v3
253+
// SICI: v_madmk_f32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x40,0x00,0x00,0x80,0x42]
254+
// VI: v_madmk_f32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42]
255+
v_madmk_f32 v1, v2, 64.0, v3
256256

257-
// SICI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x42,0x00,0x00,0x80,0x42]
258-
// VI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42]
259-
v_madak_f32_e32 v1, v2, v3, 64.0
257+
// SICI: v_madak_f32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x42,0x00,0x00,0x80,0x42]
258+
// VI: v_madak_f32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42]
259+
v_madak_f32 v1, v2, v3, 64.0
260260

261261
// SICI: v_bcnt_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x44,0xd2,0x02,0x07,0x02,0x00]
262262
// VI: v_bcnt_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8b,0xd2,0x02,0x07,0x02,0x00]
@@ -430,12 +430,12 @@ v_mac_f16_e32 v1, v2, v3
430430

431431
// NOSICI: error: instruction not supported on this GPU
432432
// NOSICI: v_madmk_f16 v1, v2, 64.0, v3
433-
// VI: v_madmk_f16_e32 v1, v2, 0x5400, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x54,0x00,0x00]
433+
// VI: v_madmk_f16 v1, v2, 0x5400, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x54,0x00,0x00]
434434
v_madmk_f16 v1, v2, 64.0, v3
435435

436436
// NOSICI: error: instruction not supported on this GPU
437437
// NOSICI: v_madak_f16 v1, v2, v3, 64.0
438-
// VI: v_madak_f16_e32 v1, v2, v3, 0x5400 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x54,0x00,0x00]
438+
// VI: v_madak_f16 v1, v2, v3, 0x5400 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x54,0x00,0x00]
439439
v_madak_f16 v1, v2, v3, 64.0
440440

441441
// NOSICI: error: instruction not supported on this GPU

test/MC/Disassembler/AMDGPU/literal16_vi.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@
4444
# VI: v_add_f16_e32 v1, 0, v3 ; encoding: [0x80,0x06,0x02,0x3e]
4545
0xff 0x06 0x02 0x3e 0x00 0x00 0x00 0x00
4646

47-
# VI: v_madmk_f16_e32 v1, v2, 0x41, v3 ; encoding: [0x02,0x07,0x02,0x48,0x41,0x00,0x00,0x00]
47+
# VI: v_madmk_f16 v1, v2, 0x41, v3 ; encoding: [0x02,0x07,0x02,0x48,0x41,0x00,0x00,0x00]
4848
0x02 0x07 0x02 0x48 0x41 0x00 0x00 0x00
4949

50-
# VI: v_madmk_f16_e32 v1, v2, 0x10041, v3 ; encoding: [0x02,0x07,0x02,0x48,0x41,0x00,0x01,0x00]
50+
# VI: v_madmk_f16 v1, v2, 0x10041, v3 ; encoding: [0x02,0x07,0x02,0x48,0x41,0x00,0x01,0x00]
5151
0x02 0x07 0x02 0x48 0x41 0x00 0x01 0x00
5252

53-
# VI: v_madmk_f16_e32 v1, v2, 0x1000041, v3 ; encoding: [0x02,0x07,0x02,0x48,0x41,0x00,0x00,0x01]
53+
# VI: v_madmk_f16 v1, v2, 0x1000041, v3 ; encoding: [0x02,0x07,0x02,0x48,0x41,0x00,0x00,0x01]
5454
0x02 0x07 0x02 0x48 0x41 0x00 0x00 0x01

test/MC/Disassembler/AMDGPU/vop2_vi.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@
7878
# VI: v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c]
7979
0x02 0x07 0x02 0x2c
8080

81-
# VI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42]
81+
# VI: v_madmk_f32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42]
8282
0x02 0x07 0x02 0x2e 0x00 0x00 0x80 0x42
8383

84-
# VI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42]
84+
# VI: v_madak_f32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42]
8585
0x02 0x07 0x02 0x30 0x00 0x00 0x80 0x42
8686

8787
# VI: v_bcnt_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8b,0xd2,0x02,0x07,0x02,0x00]
@@ -207,10 +207,10 @@
207207
# VI: v_mac_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x46]
208208
0x02 0x07 0x02 0x46
209209

210-
# VI: v_madmk_f16_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42]
210+
# VI: v_madmk_f16 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42]
211211
0x02 0x07 0x02 0x48 0x00 0x00 0x80 0x42
212212

213-
# VI: v_madak_f16_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x00,0x80,0x42]
213+
# VI: v_madak_f16 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x00,0x80,0x42]
214214
0x02 0x07 0x02 0x4a 0x00 0x00 0x80 0x42
215215

216216
# VI: v_add_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4c]

0 commit comments

Comments
 (0)