Skip to content

Commit c2282d0

Browse files
mshockwavememfrob
authored andcommitted
[M68k][AsmParser] Fix invalid register name parsing logics
Adjust sanity check in register parsing function to allow register name with more than 2 characters (e.g. ccr). Differential Revision: https://reviews.llvm.org/D101733
1 parent 4cb887c commit c2282d0

File tree

3 files changed

+22
-41
lines changed

3 files changed

+22
-41
lines changed

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,12 @@ bool M68kAsmParser::parseRegisterName(unsigned &RegNo, SMLoc Loc,
479479
StringRef RegisterName) {
480480
auto RegisterNameLower = RegisterName.lower();
481481

482+
// CCR register
483+
if (RegisterNameLower == "ccr") {
484+
RegNo = M68k::CCR;
485+
return true;
486+
}
487+
482488
// Parse simple general-purpose registers.
483489
if (RegisterNameLower.size() == 2) {
484490
static unsigned RegistersByIndex[] = {
@@ -501,13 +507,6 @@ bool M68kAsmParser::parseRegisterName(unsigned &RegNo, SMLoc Loc,
501507
break;
502508
}
503509

504-
case 'c':
505-
if (RegisterNameLower[1] == 'c' && RegisterNameLower[2] == 'r') {
506-
RegNo = M68k::CCR;
507-
return true;
508-
}
509-
break;
510-
511510
case 's':
512511
if (RegisterNameLower[1] == 'p') {
513512
RegNo = M68k::SP;

llvm/test/CodeGen/M68k/Encoding/Data/Classes/MxMoveCCR.mir

Lines changed: 0 additions & 34 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
; RUN: llvm-mc -triple=m68k -show-encoding %s | FileCheck %s
2+
.text
3+
.globl MxMoveToCCR
4+
; CHECK-LABEL: MxMoveToCCR:
5+
MxMoveToCCR:
6+
; CHECK: move.w %d1, %ccr
7+
; CHECK-SAME: encoding: [0x44,0xc1]
8+
move.w %d1, %ccr
9+
10+
.globl MxMoveFromCCR
11+
; CHECK-LABEL: MxMoveFromCCR:
12+
MxMoveFromCCR:
13+
; CHECK: move.w %ccr, %d1
14+
; CHECK-SAME: encoding: [0x42,0xc1]
15+
move.w %ccr, %d1
16+

0 commit comments

Comments
 (0)