diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp --- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp +++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp @@ -7175,8 +7175,8 @@ return reportParseError("unexpected token, expected equals sign"); Parser.Lex(); - StringRef Arch; - if (Parser.parseIdentifier(Arch)) + StringRef Arch = getParser().parseStringToEndOfStatement().trim(); + if (Arch.empty()) return reportParseError("expected arch identifier"); StringRef ArchFeatureName = @@ -7197,6 +7197,7 @@ .Case("mips64r5", "mips64r5") .Case("mips64r6", "mips64r6") .Case("octeon", "cnmips") + .Case("octeon+", "cnmipsp") .Case("r4000", "mips3") // This is an implementation of Mips3. .Default(""); diff --git a/llvm/test/MC/Mips/set-arch.s b/llvm/test/MC/Mips/set-arch.s --- a/llvm/test/MC/Mips/set-arch.s +++ b/llvm/test/MC/Mips/set-arch.s @@ -38,6 +38,8 @@ mod $2, $4, $6 .set arch=octeon baddu $9, $6, $7 + .set arch=octeon+ + saa $2, ($5) .set arch=r4000 dadd $2, $2, $2 @@ -65,5 +67,7 @@ # CHECK: mod $2, $4, $6 # CHECK: .set arch=octeon # CHECK: baddu $9, $6, $7 +# CHECK: .set arch=octeon+ +# CHECK: saa $2, ($5) # CHECK: .set arch=r4000 # CHECK: dadd $2, $2, $2