[TableGen] Treat reg as isolated in reg$foo (but not in ${foo}reg)
authorJay Foad <jay.foad@amd.com>
Wed, 28 Oct 2020 16:12:21 +0000 (16:12 +0000)
committerJay Foad <jay.foad@amd.com>
Wed, 28 Oct 2020 21:39:39 +0000 (21:39 +0000)
commitb3dac4ee240897194a5167aaae2aabbfba76da85
tree3f019e5ba7c6617bf9efd6c27cd992f3372ae814
parent772aaa602383cf82795572ebcd86b0e660f3579f
[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