bool isNegHi() const { return isImmTy(ImmTyNegHi); }
bool isHigh() const { return isImmTy(ImmTyHigh); }
- bool isMod() const {
- return isClampSI() || isOModSI();
- }
-
bool isRegOrImm() const {
return isReg() || isImm();
}
((AMDGPUOperand &)*Operands[I++]).addRegOperands(Inst, 1);
}
- if (AMDGPU::hasNamedOperand(Opc, AMDGPU::OpName::src0_modifiers)) {
- // This instruction has src modifiers
- for (unsigned E = Operands.size(); I != E; ++I) {
- AMDGPUOperand &Op = ((AMDGPUOperand &)*Operands[I]);
- if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
- Op.addRegOrImmWithFPInputModsOperands(Inst, 2);
- } else if (Op.isImmModifier()) {
- OptionalIdx[Op.getImmTy()] = I;
- } else if (Op.isRegOrImm()) {
- Op.addRegOrImmOperands(Inst, 1);
- } else {
- llvm_unreachable("unhandled operand type");
- }
- }
- } else {
- // No src modifiers
- for (unsigned E = Operands.size(); I != E; ++I) {
- AMDGPUOperand &Op = ((AMDGPUOperand &)*Operands[I]);
- if (Op.isMod()) {
- OptionalIdx[Op.getImmTy()] = I;
- } else {
- Op.addRegOrImmOperands(Inst, 1);
- }
+ for (unsigned E = Operands.size(); I != E; ++I) {
+ AMDGPUOperand &Op = ((AMDGPUOperand &)*Operands[I]);
+ if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
+ Op.addRegOrImmWithFPInputModsOperands(Inst, 2);
+ } else if (Op.isImmModifier()) {
+ OptionalIdx[Op.getImmTy()] = I;
+ } else if (Op.isRegOrImm()) {
+ Op.addRegOrImmOperands(Inst, 1);
+ } else {
+ llvm_unreachable("unhandled operand type");
}
}
OptionalImmIndexMap OptionalIdx;
unsigned Opc = Inst.getOpcode();
const MCInstrDesc &Desc = MII.get(Inst.getOpcode());
- bool HasModifiers =
- AMDGPU::hasNamedOperand(Opc, AMDGPU::OpName::src0_modifiers);
// MAC instructions are special because they have 'old'
// operand which is not tied to dst (but assumed to be).
// Add the register arguments
if (IsDPP8 && Op.isFI()) {
Fi = Op.getImm();
- } else if (HasModifiers &&
- isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
+ } else if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
Op.addRegOrImmWithFPInputModsOperands(Inst, 2);
} else if (Op.isReg()) {
Op.addRegOperands(Inst, 1);
} else if (Op.isImm() &&
Desc.OpInfo[Inst.getNumOperands()].RegClass != -1) {
- assert(!HasModifiers && "Case should be unreachable with modifiers");
assert(!Op.IsImmKindLiteral() && "Cannot use literal with DPP");
Op.addImmOperands(Inst, 1);
} else if (Op.isImm()) {
void AMDGPUAsmParser::cvtDPP(MCInst &Inst, const OperandVector &Operands, bool IsDPP8) {
OptionalImmIndexMap OptionalIdx;
- unsigned Opc = Inst.getOpcode();
- bool HasModifiers =
- AMDGPU::hasNamedOperand(Opc, AMDGPU::OpName::src0_modifiers);
unsigned I = 1;
const MCInstrDesc &Desc = MII.get(Inst.getOpcode());
for (unsigned J = 0; J < Desc.getNumDefs(); ++J) {
if (IsDPP8) {
if (Op.isDPP8()) {
Op.addImmOperands(Inst, 1);
- } else if (HasModifiers &&
- isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
+ } else if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
Op.addRegWithFPInputModsOperands(Inst, 2);
} else if (Op.isFI()) {
Fi = Op.getImm();
llvm_unreachable("Invalid operand type");
}
} else {
- if (HasModifiers &&
- isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
+ if (isRegOrImmWithInputMods(Desc, Inst.getNumOperands())) {
Op.addRegWithFPInputModsOperands(Inst, 2);
} else if (Op.isReg()) {
Op.addRegOperands(Inst, 1);