py: In inline asm, vldr and vstr offsets now in bytes not words.
As per ARM convention.
This commit is contained in:
parent
165734522e
commit
d6201fc4b7
@ -473,7 +473,7 @@ STATIC void emit_inline_thumb_op(emit_inline_asm_t *emit, qstr op, mp_uint_t n_a
|
|||||||
if (get_arg_addr(emit, op_str, pn_args[1], &pn_base, &pn_offset)) {
|
if (get_arg_addr(emit, op_str, pn_args[1], &pn_base, &pn_offset)) {
|
||||||
mp_uint_t rlo_base = get_arg_reg(emit, op_str, pn_base, 7);
|
mp_uint_t rlo_base = get_arg_reg(emit, op_str, pn_base, 7);
|
||||||
mp_uint_t i8;
|
mp_uint_t i8;
|
||||||
i8 = get_arg_i(emit, op_str, pn_offset, 0xff);
|
i8 = get_arg_i(emit, op_str, pn_offset, 0x3fc) >> 2;
|
||||||
asm_thumb_op32(emit->as,
|
asm_thumb_op32(emit->as,
|
||||||
op_code_hi | rlo_base | ((vd & 1) << 6),
|
op_code_hi | rlo_base | ((vd & 1) << 6),
|
||||||
0x0a00 | ((vd & 0x1e) << 11) | i8);
|
0x0a00 | ((vd & 0x1e) << 11) | i8);
|
||||||
|
@ -2,9 +2,9 @@ import array
|
|||||||
@micropython.asm_thumb # test vldr, vstr
|
@micropython.asm_thumb # test vldr, vstr
|
||||||
def arrayadd(r0):
|
def arrayadd(r0):
|
||||||
vldr(s0, [r0, 0])
|
vldr(s0, [r0, 0])
|
||||||
vldr(s1, [r0, 1])
|
vldr(s1, [r0, 4])
|
||||||
vadd(s2, s0, s1)
|
vadd(s2, s0, s1)
|
||||||
vstr(s2, [r0, 2])
|
vstr(s2, [r0, 8])
|
||||||
|
|
||||||
z = array.array("f", [2, 4, 10])
|
z = array.array("f", [2, 4, 10])
|
||||||
arrayadd(z)
|
arrayadd(z)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user