From 75d029b717000ce486af5f607bf04914e21ef2bb Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 20 Mar 2023 14:54:16 -0700 Subject: [PATCH] freedreno/rnn: Fix reg names for regs with variants Fixes reg names with headergen2, so that if we have separate a6xx and a7xx variants for a register we get REG_A6XX_foo and REG_A7XX_foo instead of both being REG_A6XX_foo. Otherwise generated headers for the kernel wouldn't compile. Signed-off-by: Rob Clark Part-of: --- src/freedreno/rnn/rnn.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/freedreno/rnn/rnn.c b/src/freedreno/rnn/rnn.c index d82d2a5..1533d45 100644 --- a/src/freedreno/rnn/rnn.c +++ b/src/freedreno/rnn/rnn.c @@ -1259,8 +1259,18 @@ static void prepdelem(struct rnndb *db, struct rnndelem *elem, char *prefix, str elem->length = 1; elem->name = 0; } - if (elem->name) - elem->fullname = catstr(prefix, elem->name); + if (elem->name) { + if (elem->varinfo.variantsstr && !strstr(elem->varinfo.variantsstr, "-")) { + /* Special hack for headergen2 to deal with variant regs (like a6xx vs + * a7xx).. gen_header.py handles this differently by generating C++ + * template based reg builder to handle variants. But for now we still + * need something that can be used for kernel headers. + */ + elem->fullname = catstr(elem->varinfo.variantsstr, elem->name); + } else { + elem->fullname = catstr(prefix, elem->name); + } + } prepvarinfo (db, elem->fullname?elem->fullname:prefix, &elem->varinfo, parvi); if (elem->varinfo.dead) return; -- 2.7.4