Skip to content

Commit 85f663f

Browse files
committed
[M68k] Fix MOVEM pre-decrement register mask in AsmParser
When MOVEM uses a pre-decrement addressing mode, the register mask bits must be reversed compared to other modes. This adds a support for that case in AsmParser. (MOVEM pre-decrement has not yet been implemented in ISel.)
1 parent 7469aae commit 85f663f

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

llvm/lib/Target/M68k/AsmParser/M68kAsmParser.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -953,6 +953,14 @@ ParseStatus M68kAsmParser::parseRegOrMoveMask(OperandVector &Operands) {
953953
break;
954954
}
955955

956+
// MOVEM pre-decrement requires register mask bits to be reversed.
957+
if (Parser.getTok().is(AsmToken::Comma)) {
958+
Parser.Lex();
959+
if (Parser.getTok().is(AsmToken::Minus)) {
960+
MemOp.RegMask = APInt(16, MemOp.RegMask).reverseBits().getZExtValue();
961+
}
962+
}
963+
956964
Operands.push_back(
957965
M68kOperand::createMemOp(MemOp, Start, getLexer().getLoc()));
958966
return ParseStatus::Success;

0 commit comments

Comments
 (0)