forked from OSchip/llvm-project
[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
This commit is contained in:
parent
abac6023bb
commit
5b3dd2a490
|
@ -479,6 +479,12 @@ bool M68kAsmParser::parseRegisterName(unsigned &RegNo, SMLoc Loc,
|
|||
StringRef RegisterName) {
|
||||
auto RegisterNameLower = RegisterName.lower();
|
||||
|
||||
// CCR register
|
||||
if (RegisterNameLower == "ccr") {
|
||||
RegNo = M68k::CCR;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Parse simple general-purpose registers.
|
||||
if (RegisterNameLower.size() == 2) {
|
||||
static unsigned RegistersByIndex[] = {
|
||||
|
@ -501,13 +507,6 @@ bool M68kAsmParser::parseRegisterName(unsigned &RegNo, SMLoc Loc,
|
|||
break;
|
||||
}
|
||||
|
||||
case 'c':
|
||||
if (RegisterNameLower[1] == 'c' && RegisterNameLower[2] == 'r') {
|
||||
RegNo = M68k::CCR;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 's':
|
||||
if (RegisterNameLower[1] == 'p') {
|
||||
RegNo = M68k::SP;
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
# RUN: llc %s -mtriple=m68k -start-after=prologepilog -O0 -filetype=obj -o - \
|
||||
# RUN: | extract-section .text \
|
||||
# RUN: | FileCheck %s -check-prefixes=MOV16CD,MOV16DC
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# MxMoveToCCR and MxMoveFromCCR load/store condition flag register
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
--- # To CCR
|
||||
# ---------------------------------------+-----------+-----------
|
||||
# F E D C B A 9 8 7 6 | 5 4 3 | 2 1 0
|
||||
# ---------------------------------------+-----------+-----------
|
||||
# 0 1 0 0 0 1 0 0 1 1 | MODE | REG
|
||||
# ---------------------------------------+-----------+-----------
|
||||
# MOV16CD: 0 1 0 0 0 1 0 0 . 1 1 0 0 0 0 0 1
|
||||
name: MxMoveToCCR
|
||||
body: |
|
||||
bb.0:
|
||||
$ccr = MOV16cd $wd1, implicit-def $ccr
|
||||
|
||||
...
|
||||
--- # From CCR
|
||||
# ---------------------------------------+-----------+-----------
|
||||
# F E D C B A 9 8 7 6 | 5 4 3 | 2 1 0
|
||||
# ---------------------------------------+-----------+-----------
|
||||
# 0 1 0 0 0 0 1 0 1 1 | MODE | REG
|
||||
# ---------------------------------------+-----------+-----------
|
||||
# MOV16DC-SAME: 0 1 0 0 0 0 1 0 . 1 1 0 0 0 0 0 1
|
||||
name: MxMoveFromCCR
|
||||
body: |
|
||||
bb.0:
|
||||
$wd1 = MOV16dc $ccr, implicit $ccr
|
||||
|
||||
...
|
|
@ -0,0 +1,16 @@
|
|||
; RUN: llvm-mc -triple=m68k -show-encoding %s | FileCheck %s
|
||||
.text
|
||||
.globl MxMoveToCCR
|
||||
; CHECK-LABEL: MxMoveToCCR:
|
||||
MxMoveToCCR:
|
||||
; CHECK: move.w %d1, %ccr
|
||||
; CHECK-SAME: encoding: [0x44,0xc1]
|
||||
move.w %d1, %ccr
|
||||
|
||||
.globl MxMoveFromCCR
|
||||
; CHECK-LABEL: MxMoveFromCCR:
|
||||
MxMoveFromCCR:
|
||||
; CHECK: move.w %ccr, %d1
|
||||
; CHECK-SAME: encoding: [0x42,0xc1]
|
||||
move.w %ccr, %d1
|
||||
|
Loading…
Reference in New Issue