summaryrefslogtreecommitdiff
path: root/sim/testsuite/bpf/mov.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bpf/mov.s')
-rw-r--r--sim/testsuite/bpf/mov.s54
1 files changed, 54 insertions, 0 deletions
diff --git a/sim/testsuite/bpf/mov.s b/sim/testsuite/bpf/mov.s
new file mode 100644
index 00000000000..6665450468c
--- /dev/null
+++ b/sim/testsuite/bpf/mov.s
@@ -0,0 +1,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, 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