@ We do not bother testing simple cases, e.g. immediates where @ registers belong, trailing junk at end of line. .text x: @ pc not allowed bfc pc,#0,#1 bfi pc,r0,#0,#1 movw pc,#0 movt pc,#0 @ bitfield range limits bfc r0,#0,#0 bfc r0,#32,#0 bfc r0,#0,#33 bfc r0,#33,#1 bfc r0,#32,#1 bfc r0,#28,#10 bfi r0,r1,#0,#0 bfi r0,r1,#32,#0 bfi r0,r1,#0,#33 bfi r0,r1,#33,#1 bfi r0,r1,#32,#1 bfi r0,r1,#28,#10 sbfx r0,r1,#0,#0 sbfx r0,r1,#32,#0 sbfx r0,r1,#0,#33 sbfx r0,r1,#33,#1 sbfx r0,r1,#32,#1 sbfx r0,r1,#28,#10 ubfx r0,r1,#0,#0 ubfx r0,r1,#32,#0 ubfx r0,r1,#0,#33 ubfx r0,r1,#33,#1 ubfx r0,r1,#32,#1 ubfx r0,r1,#28,#10 @ bfi accepts only #0 in Rm position bfi r0,#1,#2,#3 @ mov16 range limits movt r0,#65537 movw r0,#65537 movt r0,#-1 movw r0,#-1 @ ldsttv4 Rd == Rn (warning) ldrht r0,[r0] ldrsbt r0,[r0] ldrsht r0,[r0] strht r0,[r0] @ Bug reported by user. GAS used to issue an error message @ "r15 not allowed here" for these two instructions because @ it thought that the "r2" operand was a PC-relative branch @ to a label called "r2". ldrex r0, r2 strex r1, r0, r2