Commit | Line | Data |
---|---|---|
b05fe5cf ZW |
1 | @ We do not bother testing simple cases, e.g. immediates where |
2 | @ registers belong, trailing junk at end of line. | |
3 | .text | |
4 | x: | |
5 | @ pc not allowed | |
6 | bfc pc,#0,#1 | |
7 | bfi pc,r0,#0,#1 | |
8 | movw pc,#0 | |
9 | movt pc,#0 | |
10 | ||
11 | @ bitfield range limits | |
12 | bfc r0,#0,#0 | |
13 | bfc r0,#32,#0 | |
14 | bfc r0,#0,#33 | |
15 | bfc r0,#33,#1 | |
16 | bfc r0,#32,#1 | |
17 | bfc r0,#28,#10 | |
18 | ||
19 | bfi r0,r1,#0,#0 | |
20 | bfi r0,r1,#32,#0 | |
21 | bfi r0,r1,#0,#33 | |
22 | bfi r0,r1,#33,#1 | |
23 | bfi r0,r1,#32,#1 | |
24 | bfi r0,r1,#28,#10 | |
25 | ||
26 | sbfx r0,r1,#0,#0 | |
27 | sbfx r0,r1,#32,#0 | |
28 | sbfx r0,r1,#0,#33 | |
29 | sbfx r0,r1,#33,#1 | |
30 | sbfx r0,r1,#32,#1 | |
31 | sbfx r0,r1,#28,#10 | |
32 | ||
33 | ubfx r0,r1,#0,#0 | |
34 | ubfx r0,r1,#32,#0 | |
35 | ubfx r0,r1,#0,#33 | |
36 | ubfx r0,r1,#33,#1 | |
37 | ubfx r0,r1,#32,#1 | |
38 | ubfx r0,r1,#28,#10 | |
39 | ||
40 | @ bfi accepts only #0 in Rm position | |
41 | bfi r0,#1,#2,#3 | |
42 | ||
43 | @ mov16 range limits | |
44 | movt r0,#65537 | |
45 | movw r0,#65537 | |
46 | movt r0,#-1 | |
47 | movw r0,#-1 | |
48 | ||
49 | @ ldsttv4 Rd == Rn (warning) | |
50 | ldrht r0,[r0] | |
51 | ldrsbt r0,[r0] | |
52 | ldrsht r0,[r0] | |
53 | strht r0,[r0] | |
01cfc07f NC |
54 | |
55 | @ Bug reported by user. GAS used to issue an error message | |
56 | @ "r15 not allowed here" for these two instructions because | |
57 | @ it thought that the "r2" operand was a PC-relative branch | |
58 | @ to a label called "r2". | |
59 | ldrex r0, r2 | |
60 | strex r1, r0, r2 | |
61 |