summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-01-15 15:20:43 +0000
committerDamien George <damien.p.george@gmail.com>2016-01-27 14:27:10 +0000
commit8f54c08691faa3dd859852d211230fd7d9791abd (patch)
tree5cc82db6ea4d9d6538c6a876a09592a85fca4242 /tests
parent3d42aa07dd6e94942b3721ee42ba5454cd0edf55 (diff)
py/inlineasm: Add ability to specify return type of asm_thumb funcs.
Supported return types are: object, bool, int, uint. For example: @micropython.asm_thumb def foo(r0, r1) -> uint: add(r0, r0, r1)
Diffstat (limited to 'tests')
-rw-r--r--tests/inlineasm/asmrettype.py21
-rw-r--r--tests/inlineasm/asmrettype.py.exp4
2 files changed, 25 insertions, 0 deletions
diff --git a/tests/inlineasm/asmrettype.py b/tests/inlineasm/asmrettype.py
new file mode 100644
index 000000000..f1918696e
--- /dev/null
+++ b/tests/inlineasm/asmrettype.py
@@ -0,0 +1,21 @@
+# test return type of inline asm
+
+@micropython.asm_thumb
+def ret_obj(r0) -> object:
+ pass
+ret_obj(print)(1)
+
+@micropython.asm_thumb
+def ret_bool(r0) -> bool:
+ pass
+print(ret_bool(0), ret_bool(1))
+
+@micropython.asm_thumb
+def ret_int(r0) -> int:
+ lsl(r0, r0, 29)
+print(ret_int(0), hex(ret_int(1)), hex(ret_int(2)), hex(ret_int(4)))
+
+@micropython.asm_thumb
+def ret_uint(r0) -> uint:
+ lsl(r0, r0, 29)
+print(ret_uint(0), hex(ret_uint(1)), hex(ret_uint(2)), hex(ret_uint(4)))
diff --git a/tests/inlineasm/asmrettype.py.exp b/tests/inlineasm/asmrettype.py.exp
new file mode 100644
index 000000000..cbb49d247
--- /dev/null
+++ b/tests/inlineasm/asmrettype.py.exp
@@ -0,0 +1,4 @@
+1
+False True
+0 0x20000000 0x40000000 -0x80000000
+0 0x20000000 0x40000000 0x80000000