tbnz.s revision 1.1 1 # mach: aarch64
2
3 # Check the test-bit-and-branch instructions: tbnz, and tbz.
4 # We check the edge condition bit positions: 0, 1<<31, 1<<32, 1<<63.
5
6 .include "testutils.inc"
7
8 start
9 mov x0, #1
10 tbnz x0, #0, .L1
11 fail
12 .L1:
13 tbz x0, #0, .Lfailure
14 mov x0, #0xFFFFFFFFFFFFFFFE
15 tbnz x0, #0, .Lfailure
16 tbz x0, #0, .L2
17 fail
18 .L2:
19
20 mov x0, #0x80000000
21 tbnz x0, #31, .L3
22 fail
23 .L3:
24 tbz x0, #31, .Lfailure
25 mov x0, #0xFFFFFFFF7FFFFFFF
26 tbnz x0, #31, .Lfailure
27 tbz x0, #31, .L4
28 fail
29 .L4:
30
31 mov x0, #0x100000000
32 tbnz x0, #32, .L5
33 fail
34 .L5:
35 tbz x0, #32, .Lfailure
36 mov x0, #0xFFFFFFFEFFFFFFFF
37 tbnz x0, #32, .Lfailure
38 tbz x0, #32, .L6
39 fail
40 .L6:
41
42 mov x0, #0x8000000000000000
43 tbnz x0, #63, .L7
44 fail
45 .L7:
46 tbz x0, #63, .Lfailure
47 mov x0, #0x7FFFFFFFFFFFFFFF
48 tbnz x0, #63, .Lfailure
49 tbz x0, #63, .L8
50 fail
51 .L8:
52
53 pass
54 .Lfailure:
55 fail
56