[llvm] r370665 - [AMDGPU][MC][GFX10] Corrected constant bus checks to exclude null
Dmitry Preobrazhensky via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 2 07:19:52 PDT 2019
Author: dpreobra
Date: Mon Sep 2 07:19:52 2019
New Revision: 370665
URL: http://llvm.org/viewvc/llvm-project?rev=370665&view=rev
Log:
[AMDGPU][MC][GFX10] Corrected constant bus checks to exclude null
See AMD SWDEV-157286
Reviewers: atamazov, arsenm
Differential Revision: https://reviews.llvm.org/D65229
Modified:
llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
llvm/trunk/test/MC/AMDGPU/gfx10-constant-bus.s
Modified: llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp?rev=370665&r1=370664&r2=370665&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp Mon Sep 2 07:19:52 2019
@@ -2657,7 +2657,6 @@ unsigned AMDGPUAsmParser::findImplicitSG
case AMDGPU::VCC_LO:
case AMDGPU::VCC_HI:
case AMDGPU::M0:
- case AMDGPU::SGPR_NULL:
return Reg;
default:
break;
@@ -2731,9 +2730,13 @@ bool AMDGPUAsmParser::usesConstantBus(co
const MCOperand &MO = Inst.getOperand(OpIdx);
if (MO.isImm()) {
return !isInlineConstant(Inst, OpIdx);
+ } else if (MO.isReg()) {
+ auto Reg = MO.getReg();
+ const MCRegisterInfo *TRI = getContext().getRegisterInfo();
+ return isSGPR(mc2PseudoReg(Reg), TRI) && Reg != SGPR_NULL;
+ } else {
+ return true;
}
- return !MO.isReg() ||
- isSGPR(mc2PseudoReg(MO.getReg()), getContext().getRegisterInfo());
}
bool AMDGPUAsmParser::validateConstantBusLimitations(const MCInst &Inst) {
Modified: llvm/trunk/test/MC/AMDGPU/gfx10-constant-bus.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AMDGPU/gfx10-constant-bus.s?rev=370665&r1=370664&r2=370665&view=diff
==============================================================================
--- llvm/trunk/test/MC/AMDGPU/gfx10-constant-bus.s (original)
+++ llvm/trunk/test/MC/AMDGPU/gfx10-constant-bus.s Mon Sep 2 07:19:52 2019
@@ -55,3 +55,9 @@ v_mad_u64_u32 v[5:6], s12, v1, 0x1234567
v_mad_u64_u32 v[5:6], s12, s1, 0x12345678, 0x12345678
// GFX10-ERR: error: invalid operand (violates constant bus restrictions)
+
+//-----------------------------------------------------------------------------------------
+// null is free
+
+v_bfe_u32 v5, s1, s2, null
+// GFX10: v_bfe_u32 v5, s1, s2, null ; encoding: [0x05,0x00,0x48,0xd5,0x01,0x04,0xf4,0x01]
More information about the llvm-commits
mailing list