1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# mach: bpf
# output: pass\nexit 0 (0x0)\n
/* mov.s
Tests for mov and mov32 instructions */
.include "testutils.inc"
.text
.global main
.type main, @function
main:
/* some basic sanity checks */
mov32 %r1, 5
fail_ne %r1, 5
mov32 %r2, %r1
fail_ne %r2, 5
mov %r2, %r1
fail_ne %r2, 5
mov %r1, -666
fail_ne %r1, -666
/* should NOT sign extend */
mov32 %r1, -1
fail_ne %r1, 0x00000000ffffffff
/* should sign extend */
mov %r2, -1
fail_ne %r2, 0xffffffffffffffff
mov %r3, -2147483648 /* 0x80000000 */
/* should NOT sign extend */
mov32 %r4, %r3
fail_ne %r4, 0x0000000080000000
/* should sign extend */
mov %r5, %r3
fail_ne %r5, 0xffffffff80000000
mov32 %r1, -2147483648
mov32 %r1, %r1
fail_ne32 %r1, -2147483648
/* casting shenanigans */
mov %r1, %r1
fail_ne %r1, +2147483648
mov32 %r2, -1
mov %r2, %r2
fail_ne %r2, +4294967295
pass
|