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
The handbook documentation around the brcf and brcfnd says that these instructions use the formats CFLi (immediate operand) and CFLrt (two register operands). However, for inline assembly giving them two registers will throw an error:
<inline asm>:35:16: error: invalid operand for instruction or syntax mismatch
brcfnd $r1, $r10
<inline asm>:36:16: error: invalid operand for instruction or syntax mismatch
brcf $r12, $r12
while giving them only 1 register operand (matching CFLrs format) will compile with no issue and even be accepted by patmos-llvm-objdump as a valid instruction.
So, is the documentation wrong, or is it the implementation?
If the documentation is wrong, is the CFLrt format used by any instructions (no other instructions are in the handbook.)
If the implementation is wrong, what would the semantics of the CFLrt formats be?
The text was updated successfully, but these errors were encountered:
Looking into the compiler's code, I can see that there is a format specified as CFLrt and used by 8 branch types: BRCFR(ND)u, BRCFR(ND), BRCFT(ND)u, BRCFT(ND).
The handbook documentation around the
brcf
andbrcfnd
says that these instructions use the formatsCFLi
(immediate operand) andCFLrt
(two register operands). However, for inline assembly giving them two registers will throw an error:while giving them only 1 register operand (matching
CFLrs
format) will compile with no issue and even be accepted bypatmos-llvm-objdump
as a valid instruction.So, is the documentation wrong, or is it the implementation?
If the documentation is wrong, is the
CFLrt
format used by any instructions (no other instructions are in the handbook.)If the implementation is wrong, what would the semantics of the
CFLrt
formats be?The text was updated successfully, but these errors were encountered: