summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/AsmParser
diff options
context:
space:
mode:
authorDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>2019-03-27 13:49:52 +0000
committerDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>2019-03-27 13:49:52 +0000
commit40f0162a9a99f2a4882196092eb4d43cf5ef7f12 (patch)
tree23a4677059b13e5caeb3741930f1a578d5cd0166 /llvm/lib/Target/AMDGPU/AsmParser
parent4f3cdc6555cad8d810f811f622ae42af7a069aee (diff)
downloadbcm5719-llvm-40f0162a9a99f2a4882196092eb4d43cf5ef7f12.tar.gz
bcm5719-llvm-40f0162a9a99f2a4882196092eb4d43cf5ef7f12.zip
Revert of 357063 [AMDGPU][MC] Corrected handling of tied src for atomic return MUBUF opcodes
Reason: the change was mistakenly committed before review llvm-svn: 357066
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AsmParser')
-rw-r--r--llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 5bf597a0cbb..086a7d79fe1 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -4911,19 +4911,13 @@ void AMDGPUAsmParser::cvtMubufImpl(MCInst &Inst,
bool HasLdsModifier = false;
OptionalImmIndexMap OptionalIdx;
assert(IsAtomicReturn ? IsAtomic : true);
- unsigned FirstOperandIdx = 1;
- for (unsigned i = FirstOperandIdx, e = Operands.size(); i != e; ++i) {
+ for (unsigned i = 1, e = Operands.size(); i != e; ++i) {
AMDGPUOperand &Op = ((AMDGPUOperand &)*Operands[i]);
// Add the register arguments
if (Op.isReg()) {
Op.addRegOperands(Inst, 1);
- // Insert a tied src for atomic return dst.
- // This cannot be postponed as subsequent calls to
- // addImmOperands rely on correct number of MC operands.
- if (IsAtomicReturn && i == FirstOperandIdx)
- Op.addRegOperands(Inst, 1);
continue;
}
@@ -4961,6 +4955,12 @@ void AMDGPUAsmParser::cvtMubufImpl(MCInst &Inst,
}
}
+ // Copy $vdata_in operand and insert as $vdata for MUBUF_Atomic RTN insns.
+ if (IsAtomicReturn) {
+ MCInst::iterator I = Inst.begin(); // $vdata_in is always at the beginning.
+ Inst.insert(I, *I);
+ }
+
addOptionalImmOperand(Inst, Operands, OptionalIdx, AMDGPUOperand::ImmTyOffset);
if (!IsAtomic) { // glc is hard-coded.
addOptionalImmOperand(Inst, Operands, OptionalIdx, AMDGPUOperand::ImmTyGLC);
OpenPOWER on IntegriCloud