diff --git a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp index eaf0466302994eb..b0ce624a495fd59 100644 --- a/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp +++ b/llvm/lib/Target/Xtensa/AsmParser/XtensaAsmParser.cpp @@ -572,7 +572,7 @@ ParseStatus XtensaAsmParser::parseRegister(OperandVector &Operands, case AsmToken::Integer: if (!SR) return ParseStatus::NoMatch; - RegName = StringRef(std::to_string(getLexer().getTok().getIntVal())); + RegName = getLexer().getTok().getString(); RegNo = MatchRegisterName(RegName); if (RegNo == 0) RegNo = MatchRegisterAltName(RegName); diff --git a/llvm/test/MC/Xtensa/Core/registers.s b/llvm/test/MC/Xtensa/Core/registers.s new file mode 100644 index 000000000000000..bf6499c7abde16c --- /dev/null +++ b/llvm/test/MC/Xtensa/Core/registers.s @@ -0,0 +1,14 @@ +# RUN: llvm-mc %s -triple=xtensa -show-encoding \ +# RUN: | FileCheck -check-prefixes=CHECK,CHECK-INST %s + + +.align 4 +LBL0: + +############################################################# +## Check special registers parsing +############################################################# + +# CHECK-INST: xsr a8, sar +# CHECK: encoding: [0x80,0x03,0x61] +xsr a8, 3