[llvm-dev] tablegen dag syntax question

Chris Sears via llvm-dev llvm-dev at lists.llvm.org
Fri Apr 26 16:39:08 PDT 2019

What is the difference between these two fragments (taken from two
different tblgen record dumps)?

  dag OutOperandList = (outs GPR:$rd);
  dag OutOperandList = (outs R2);

The first is from the RISCV backend record dump. There will be a
substitution at some point for $rd. In the second, I'm specifying R2, no
substitution necessary.

If I specify GPR64:R2 or i64:R2 in my Instruction def, rather than just R2,
tblgen complains:

  error: expected variable name in dag literal

If I use R1000 (which isn't defined) I get what I'd expect:

  error: Variable not defined: 'R1000'

There isn't any documentation (that I could find) for this syntax.
Consequently, I'm a little worried that using R2 rather than something:R2
is somehow wrong.

Why does the RISCV dag use GPR:$rd rather than just $rd?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190426/6df2feab/attachment.html>

More information about the llvm-dev mailing list