You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 2, 2018. It is now read-only.
The LLVM AsmParser does not take into account tokens such as + on operands as being a part of the instruction itself.
For example, this is the definition for ST P+, Rr:
// ST P+, Rr// Stores the value of Rr into the location addressed by pointer P.// Post increments P.
let Constraints = "$ptrreg = $base_wb,@earlyclobber $base_wb" in
def STPtrPiRr : FSTLDPtrPiReg<0b1,
(outs LDSTPtrReg:$base_wb),
(ins LDSTPtrReg:$ptrreg, GPR8:$reg, i8imm:$offs),
"st\t$ptrreg +, $reg",
[(set i16:$base_wb,
(post_store GPR8:$reg, i16:$ptrreg, imm:$offs))]>;
We put the + suffix on the first operand, but LLVM does not handle it correctly.
Instead, when parsing operands, we hit an "unexpected token" error.
We either need to patch the AsmParser to handle non-variable tokens like these as part of the instruction definition (and hopefully upstream!).
Either that or we could hack AVRAsmParser by manually handling all of the cases where this applies, and then passing control to the tablegen'd instruction parsing routines if this doesn't apply.
STD P+q, Rd is another offending example -- the + should be a part of instruction matching, but it isn't handled correctly.
The text was updated successfully, but these errors were encountered:
The LLVM AsmParser does not take into account tokens such as
+
on operands as being a part of the instruction itself.For example, this is the definition for
ST P+, Rr
:We put the
+
suffix on the first operand, but LLVM does not handle it correctly.Instead, when parsing operands, we hit an "unexpected token" error.
We either need to patch the
AsmParser
to handle non-variable tokens like these as part of the instruction definition (and hopefully upstream!).Either that or we could hack AVRAsmParser by manually handling all of the cases where this applies, and then passing control to the tablegen'd instruction parsing routines if this doesn't apply.
STD P+q, Rd
is another offending example -- the+
should be a part of instruction matching, but it isn't handled correctly.The text was updated successfully, but these errors were encountered: