debugger/shader: fix address register for reverted arithmetic op

This commit is contained in:
wwylele 2017-07-20 22:58:38 +03:00
parent 98cd5164c5
commit 8375fd2aba

View file

@ -183,23 +183,13 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con
print_input(output, src1, swizzle.negate_src1, print_input(output, src1, swizzle.negate_src1,
SelectorToString(swizzle.src1_selector)); SelectorToString(swizzle.src1_selector));
AlignToColumn(kInputOperandColumnWidth); AlignToColumn(kInputOperandColumnWidth);
if (src_is_inverted) { print_input(output, src2, swizzle.negate_src2,
print_input(output, src2, swizzle.negate_src2, SelectorToString(swizzle.src2_selector), true,
SelectorToString(swizzle.src2_selector)); src_is_inverted ? "" : instr.mad.AddressRegisterName());
} else {
print_input(output, src2, swizzle.negate_src2,
SelectorToString(swizzle.src2_selector), true,
instr.mad.AddressRegisterName());
}
AlignToColumn(kInputOperandColumnWidth); AlignToColumn(kInputOperandColumnWidth);
if (src_is_inverted) { print_input(output, src3, swizzle.negate_src3,
print_input(output, src3, swizzle.negate_src3, SelectorToString(swizzle.src3_selector), true,
SelectorToString(swizzle.src3_selector), true, src_is_inverted ? instr.mad.AddressRegisterName() : "");
instr.mad.AddressRegisterName());
} else {
print_input(output, src3, swizzle.negate_src3,
SelectorToString(swizzle.src3_selector));
}
AlignToColumn(kInputOperandColumnWidth); AlignToColumn(kInputOperandColumnWidth);
break; break;
} }
@ -222,16 +212,15 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con
SourceRegister src1 = instr.common.GetSrc1(src_is_inverted); SourceRegister src1 = instr.common.GetSrc1(src_is_inverted);
print_input(output, src1, swizzle.negate_src1, print_input(output, src1, swizzle.negate_src1,
swizzle.SelectorToString(false), true, swizzle.SelectorToString(false), true,
instr.common.AddressRegisterName()); src_is_inverted ? "" : instr.common.AddressRegisterName());
AlignToColumn(kInputOperandColumnWidth); AlignToColumn(kInputOperandColumnWidth);
} }
// TODO: In some cases, the Address Register is used as an index for SRC2
// instead of SRC1
if (opcode_info.subtype & OpCode::Info::Src2) { if (opcode_info.subtype & OpCode::Info::Src2) {
SourceRegister src2 = instr.common.GetSrc2(src_is_inverted); SourceRegister src2 = instr.common.GetSrc2(src_is_inverted);
print_input(output, src2, swizzle.negate_src2, print_input(output, src2, swizzle.negate_src2,
swizzle.SelectorToString(true)); swizzle.SelectorToString(true), true,
src_is_inverted ? instr.common.AddressRegisterName() : "");
AlignToColumn(kInputOperandColumnWidth); AlignToColumn(kInputOperandColumnWidth);
} }
break; break;