From 91cfd414c052179ad41755cc7e5085be1a365c2d Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 12 Oct 2014 16:59:29 +0100 Subject: py: Implement native load for viper. Viper can now do: ptr8(buf)[0], which loads a byte from a buffer using machine instructions. --- tests/micropython/viper_ptr16_load.py | 18 ++++++++++++++++++ tests/micropython/viper_ptr16_load.py.exp | 3 +++ tests/micropython/viper_ptr8_load.py | 27 +++++++++++++++++++++++++++ tests/micropython/viper_ptr8_load.py.exp | 4 ++++ 4 files changed, 52 insertions(+) create mode 100644 tests/micropython/viper_ptr16_load.py create mode 100644 tests/micropython/viper_ptr16_load.py.exp create mode 100644 tests/micropython/viper_ptr8_load.py create mode 100644 tests/micropython/viper_ptr8_load.py.exp (limited to 'tests/micropython') diff --git a/tests/micropython/viper_ptr16_load.py b/tests/micropython/viper_ptr16_load.py new file mode 100644 index 000000000..06ce7db15 --- /dev/null +++ b/tests/micropython/viper_ptr16_load.py @@ -0,0 +1,18 @@ +# test loading from ptr16 type +# only works on little endian machines + +@micropython.viper +def get(src:ptr16) -> int: + return src[0] + +@micropython.viper +def memadd(src:ptr16, n:int) -> int: + sum = 0 + for i in range(n): + sum += src[i] + return sum + +b = bytearray(b'1234') +print(b) +print(get(b)) +print(memadd(b, 2)) diff --git a/tests/micropython/viper_ptr16_load.py.exp b/tests/micropython/viper_ptr16_load.py.exp new file mode 100644 index 000000000..68fd9e80c --- /dev/null +++ b/tests/micropython/viper_ptr16_load.py.exp @@ -0,0 +1,3 @@ +bytearray(b'1234') +12849 +26212 diff --git a/tests/micropython/viper_ptr8_load.py b/tests/micropython/viper_ptr8_load.py new file mode 100644 index 000000000..98c163f8e --- /dev/null +++ b/tests/micropython/viper_ptr8_load.py @@ -0,0 +1,27 @@ +# test loading from ptr8 type + +@micropython.viper +def get(src:ptr8) -> int: + return src[0] + +@micropython.viper +def memadd(src:ptr8, n:int) -> int: + sum = 0 + for i in range(n): + sum += src[i] + return sum + +@micropython.viper +def memadd2(src_in) -> int: + src = ptr8(src_in) + n = int(len(src_in)) + sum = 0 + for i in range(n): + sum += src[i] + return sum + +b = bytearray(b'1234') +print(b) +print(get(b)) +print(memadd(b, 4)) +print(memadd2(b)) diff --git a/tests/micropython/viper_ptr8_load.py.exp b/tests/micropython/viper_ptr8_load.py.exp new file mode 100644 index 000000000..aeab88da1 --- /dev/null +++ b/tests/micropython/viper_ptr8_load.py.exp @@ -0,0 +1,4 @@ +bytearray(b'1234') +49 +202 +202 -- cgit v1.2.3