1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

[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:
Min-Yih Hsu 2021-05-02 14:31:38 -07:00
parent 0c665b3e95
commit f050da095d
3 changed files with 22 additions and 41 deletions

View File

@ -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;

View File

@ -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
...

View File

@ -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