diff options
author | = <peter@hinch.me.uk> | 2015-04-14 13:14:57 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-04-19 15:47:05 +0100 |
commit | 5008972fefdd0d8cad214d4c0a2fb3daea0ac3c8 (patch) | |
tree | 3fb510017d83a6862fd6b16834ac96653ef3d8aa /tests/inlineasm/asmfpmuldiv.py | |
parent | d8cbbcaa9d057f210b192bde68fde551972e426c (diff) | |
download | micropython-5008972fefdd0d8cad214d4c0a2fb3daea0ac3c8.tar.gz micropython-5008972fefdd0d8cad214d4c0a2fb3daea0ac3c8.zip |
py/inlinethumb: Support for core floating point instructions.
Adds support for the following Thumb2 VFP instructions, via the option
MICROPY_EMIT_INLINE_THUMB_FLOAT:
vcmp
vsqrt
vneg
vcvt_f32_to_s32
vcvt_s32_to_f32
vmrs
vmov
vldr
vstr
vadd
vsub
vmul
vdiv
Diffstat (limited to 'tests/inlineasm/asmfpmuldiv.py')
-rw-r--r-- | tests/inlineasm/asmfpmuldiv.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/inlineasm/asmfpmuldiv.py b/tests/inlineasm/asmfpmuldiv.py new file mode 100644 index 0000000000..edf9511bcd --- /dev/null +++ b/tests/inlineasm/asmfpmuldiv.py @@ -0,0 +1,15 @@ +@micropython.asm_thumb # r0 = (int)(r0*r1/r2) +def muldiv(r0, r1, r2): + vmov(s0, r0) + vcvt_f32_s32(s0, s0) + vmov(s1, r1) + vcvt_f32_s32(s1, s1) + vmov(s2, r2) + vcvt_f32_s32(s2, s2) + vmul(s7, s0, s1) + vdiv(s8, s7, s2) + vcvt_s32_f32(s31, s8) + vmov(r0, s31) + +print(muldiv(100, 10, 50)) + |