From b3dac4ee240897194a5167aaae2aabbfba76da85 Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Wed, 28 Oct 2020 16:12:21 +0000 Subject: [PATCH] [TableGen] Treat reg as isolated in reg$foo (but not in ${foo}reg) D9844 fixed a problem where the ss suffix in the AsmString "cmp${cc}ss" was recognised as the X86 SS register, by only recognising a token as a register name if it is "isolated", i.e. surrounded by separator characters. In the AMDGPU backend there are many operands like $clamp which expand to an optional string " clamp" including the preceding space, so we want to have AsmStrings including sequences like "vcc$clamp" where vcc is a register name. This patch relaxes the rules for an isolated token, to say that it's OK if the token is immediately followed by a '$'. Differential Revision: https://reviews.llvm.org/D90315 --- llvm/utils/TableGen/AsmMatcherEmitter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp index 3f05ab5..ec7f596 100644 --- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp +++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp @@ -1018,7 +1018,7 @@ void MatchableInfo::tokenizeAsmString(const AsmMatcherInfo &Info, case '$': { if (InTok) { - addAsmOperand(String.slice(Prev, i), false); + addAsmOperand(String.slice(Prev, i), IsIsolatedToken); InTok = false; IsIsolatedToken = false; } -- 2.7.4