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