Skip to content

Commit 3cd085b

Browse files
arsenmyuxuanchen1997
authored andcommitted
AMDGPU: Fix assembler asserting on expressions in vop3 instructions (#100103)
Summary: Fixes #100075 --------- Co-authored-by: Jay Foad <[email protected]> Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D60251321
1 parent 1927775 commit 3cd085b

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -8649,10 +8649,8 @@ void AMDGPUAsmParser::cvtVOP3(MCInst &Inst, const OperandVector &Operands,
86498649
Op.addRegOrImmWithFPInputModsOperands(Inst, 2);
86508650
} else if (Op.isImmModifier()) {
86518651
OptionalIdx[Op.getImmTy()] = I;
8652-
} else if (Op.isRegOrImm()) {
8653-
Op.addRegOrImmOperands(Inst, 1);
86548652
} else {
8655-
llvm_unreachable("unhandled operand type");
8653+
Op.addRegOrImmOperands(Inst, 1);
86568654
}
86578655
}
86588656

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1010 -show-encoding %s | FileCheck -check-prefix=GFX10 %s
2+
3+
; test vop3 operands
4+
5+
// GFX10: v_mad_u32_u24 v0, g0@abs32@lo, v0, 12 ; encoding: [0x00,0x00,0x43,0xd5,0xff,0x00,0x32,0x02,A,A,A,A]
6+
// GFX10-NEXT: ; fixup A - offset: 8, value: g0@abs32@lo, kind: FK_Data_4
7+
v_mad_u32_u24 v0, g0@abs32@lo, v0, 12
8+
9+
// GFX10: v_mad_u32_u24 v0, v0, g0@abs32@lo, 12 ; encoding: [0x00,0x00,0x43,0xd5,0x00,0xff,0x31,0x02,A,A,A,A]
10+
// GFX10-NEXT: ; fixup A - offset: 8, value: g0@abs32@lo, kind: FK_Data_4
11+
v_mad_u32_u24 v0, v0, g0@abs32@lo, 12
12+
13+
// GFX10: v_mad_u32_u24 v0, v0, 12, g0@abs32@lo ; encoding: [0x00,0x00,0x43,0xd5,0x00,0x19,0xfd,0x03,A,A,A,A]
14+
// GFX10-NEXT: ; fixup A - offset: 8, value: g0@abs32@lo, kind: FK_Data_4
15+
v_mad_u32_u24 v0, v0, 12, g0@abs32@lo
16+
17+
; test vop2 operands
18+
19+
// GFX10: v_add_nc_u32_e32 v0, g0@abs32@lo, v1 ; encoding: [0xff,0x02,0x00,0x4a,A,A,A,A]
20+
// GFX10-NEXT: ; fixup A - offset: 4, value: g0@abs32@lo, kind: FK_Data_4
21+
v_add_nc_u32 v0, g0@abs32@lo, v1
22+
23+
// GFX10: v_add_nc_u32_e64 v0, v1, g0@abs32@lo ; encoding: [0x00,0x00,0x25,0xd5,0x01,0xff,0x01,0x00,A,A,A,A]
24+
// GFX10-NEXT: ; fixup A - offset: 8, value: g0@abs32@lo, kind: FK_Data_4
25+
v_add_nc_u32 v0, v1, g0@abs32@lo
26+
27+
// test vop1 operands
28+
// GFX10: v_not_b32_e32 v0, g0@abs32@lo ; encoding: [0xff,0x6e,0x00,0x7e,A,A,A,A]
29+
// GFX10-NEXT: ; fixup A - offset: 4, value: g0@abs32@lo, kind: FK_Data_4
30+
v_not_b32 v0, g0@abs32@lo
31+

0 commit comments

Comments
 (0)